Update from source 4f3858eab
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions

This commit is contained in:
Doxa Maps 2026-09-28 10:35:22 +00:00
parent 8ef3664624
commit b103bcea24
7 changed files with 21 additions and 10 deletions

View file

@ -474,8 +474,9 @@ export function useMapFly(options = {}) {
/**
* zoomToLegendRow — uniform "click a legend row, fit the scope it represents."
*
* Reads the full `language-families` source data via map.getSource()._data
* and evaluates the Mapbox filter expression in JS, bypassing the viewport
* Reads the full `language-families` source data through readSourceFeatures()
* (library/maps/pin-selection.js, which knows both engines' source shapes; never
* the engine-private `_data` directly) and evaluates the filter expression in JS, bypassing the viewport
* clip that previously caused off-screen regions to silently no-op. fitBounds
* is bidirectional — it zooms OUT to a wider region just as readily as it
* zooms IN to a tight cluster, so Africa-row and North-India-cluster-row

View file

@ -1553,7 +1553,17 @@ async function openPacket() {
const baseLabel = legendTitle.value || tabLabel(activeTab.value) || 'Doxa Map'
const zone = {
id: String(activeTab.value?.id || 'research-map'),
label: selectedTotal > groups.length ? `${baseLabel} — ${groups.length} of ${selectedTotal}` : baseLabel,
// ★ NO ENGLISH WORD ON A LOCALIZED COVER. I wrote "50 of 214" today and it renders that "of" in
// all eleven locales — my own leak, on the cover of a document whose whole point is that a reader
// in their language can pray from it. The slash needs no translation, and it is not a guess: zh's
// professional translation of legend.progress.short renders exactly this relationship as
// "{covered} / {total}". The word IS available per locale there (ar "من", ru "из", fr "sur"), but that
// key carries "· {pct}%" with it, so reusing it would mean either a wrong suffix or slicing a
// translated string on a separator I cannot guarantee survives translation.
// Wrapped in U+2066/U+2069 isolates, the convention the ar catalogue already uses for numeric
// ranges (five times, e.g. "⁦30–59%⁩"): without them the pair reorders against Arabic text
// beside it and reads as "214 / 50". NUMERALS ARE HELD, so the digits stay as they are.
label: selectedTotal > groups.length ? `${baseLabel} — ⁦${groups.length} / ${selectedTotal}⁩` : baseLabel,
zoneKey: String(activeTab.value?.id || 'research-map'),
}
const prints = usePosterPrints({

View file

@ -380,7 +380,7 @@
"bundle": "doxa-research-map",
"scriptUrl": "./doxa-research-map/doxa-research-map.js",
"output": "dx-maps/doxa-research-map/doxa-research-map.js",
"integrity": "sha384-E2e45noJn39Q9pqcIQTevRPgmCOwyhIa2goY0R17jnlpYxtIEj6ihq8nOHvPHwyC",
"integrity": "sha384-cvw7xLaNAOUF9Oqh5u4tyznnbXTM/nV7jscgy0l6sWu/r9NjPEUV+A/6IHhuI/it",
"elements": [
"doxa-research-map"
],
@ -399,7 +399,7 @@
"scriptUrl": "./doxa-research-map/doxa-research-map.js",
"embed": {
"iframe": "<iframe src=\"./doxa-research-map/research-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<!-- Mapbox engine, fetched early. Keep it only with a real Mapbox token in \"tk\": without one (or with \"provider\":\"maplibre\") the map draws with MapLibre and this line must go -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-research-map/doxa-research-map.js\" integrity=\"sha384-E2e45noJn39Q9pqcIQTevRPgmCOwyhIa2goY0R17jnlpYxtIEj6ihq8nOHvPHwyC\" crossorigin=\"anonymous\"></script>\n<doxa-research-map profile-config='{\"profile\":\"research-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-research-map>"
"script": "<!-- Mapbox engine, fetched early. Keep it only with a real Mapbox token in \"tk\": without one (or with \"provider\":\"maplibre\") the map draws with MapLibre and this line must go -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-research-map/doxa-research-map.js\" integrity=\"sha384-cvw7xLaNAOUF9Oqh5u4tyznnbXTM/nV7jscgy0l6sWu/r9NjPEUV+A/6IHhuI/it\" crossorigin=\"anonymous\"></script>\n<doxa-research-map profile-config='{\"profile\":\"research-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-research-map>"
},
"instances": [
{

File diff suppressed because one or more lines are too long

View file

@ -36,7 +36,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <doxa-research-map> custom element. -->
<script src="../doxa-research-map.js" integrity="sha384-E2e45noJn39Q9pqcIQTevRPgmCOwyhIa2goY0R17jnlpYxtIEj6ihq8nOHvPHwyC" crossorigin="anonymous"></script>
<script src="../doxa-research-map.js" integrity="sha384-cvw7xLaNAOUF9Oqh5u4tyznnbXTM/nV7jscgy0l6sWu/r9NjPEUV+A/6IHhuI/it" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

View file

@ -33,7 +33,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <doxa-research-map> custom element. -->
<script src="../../doxa-research-map.js" integrity="sha384-E2e45noJn39Q9pqcIQTevRPgmCOwyhIa2goY0R17jnlpYxtIEj6ihq8nOHvPHwyC" crossorigin="anonymous"></script>
<script src="../../doxa-research-map.js" integrity="sha384-cvw7xLaNAOUF9Oqh5u4tyznnbXTM/nV7jscgy0l6sWu/r9NjPEUV+A/6IHhuI/it" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

View file

@ -380,7 +380,7 @@
"bundle": "doxa-research-map",
"scriptUrl": "./doxa-research-map/doxa-research-map.js",
"output": "dx-maps/doxa-research-map/doxa-research-map.js",
"integrity": "sha384-E2e45noJn39Q9pqcIQTevRPgmCOwyhIa2goY0R17jnlpYxtIEj6ihq8nOHvPHwyC",
"integrity": "sha384-cvw7xLaNAOUF9Oqh5u4tyznnbXTM/nV7jscgy0l6sWu/r9NjPEUV+A/6IHhuI/it",
"elements": [
"doxa-research-map"
],
@ -399,7 +399,7 @@
"scriptUrl": "./doxa-research-map/doxa-research-map.js",
"embed": {
"iframe": "<iframe src=\"./doxa-research-map/research-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<!-- Mapbox engine, fetched early. Keep it only with a real Mapbox token in \"tk\": without one (or with \"provider\":\"maplibre\") the map draws with MapLibre and this line must go -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-research-map/doxa-research-map.js\" integrity=\"sha384-E2e45noJn39Q9pqcIQTevRPgmCOwyhIa2goY0R17jnlpYxtIEj6ihq8nOHvPHwyC\" crossorigin=\"anonymous\"></script>\n<doxa-research-map profile-config='{\"profile\":\"research-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-research-map>"
"script": "<!-- Mapbox engine, fetched early. Keep it only with a real Mapbox token in \"tk\": without one (or with \"provider\":\"maplibre\") the map draws with MapLibre and this line must go -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-research-map/doxa-research-map.js\" integrity=\"sha384-cvw7xLaNAOUF9Oqh5u4tyznnbXTM/nV7jscgy0l6sWu/r9NjPEUV+A/6IHhuI/it\" crossorigin=\"anonymous\"></script>\n<doxa-research-map profile-config='{\"profile\":\"research-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-research-map>"
},
"instances": [
{