Update from source 1bbfeae07
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 02:43:35 +00:00
parent b253f391c5
commit 61ee4e5752
17 changed files with 194 additions and 61 deletions

View file

@ -711,6 +711,8 @@ provider*" page in front of everything, open only to the groups you allow. Recip
Working from your own laptop alongside the team (zero config, everything local by default):
[documentation/HOWTO-join-the-table.md](./documentation/HOWTO-join-the-table.md). When your agent runs on a
server instead: [documentation/CLOUD-DEVELOPMENT-ENVIRONMENT.md](./documentation/CLOUD-DEVELOPMENT-ENVIRONMENT.md).
All four ways dx-maps ships (laptop, shared cloud dev server, public embeds, a folder in your own site):
[documentation/DEPLOY.md](./documentation/DEPLOY.md).
---

94
documentation/DEPLOY.md Normal file
View file

@ -0,0 +1,94 @@
# Deploying dx-maps — the 4 ways it ships
dx-maps is one repo that runs in four places. Two are for **building** maps (your laptop, a shared
cloud dev server); two are for **showing** them (public embeds, a folder inside your own site). The
building ones run the live source with hot reload; the showing ones serve the **built** folder,
`dx-maps/`, which is checked for private files before it is published.
| # | Where | For | What you run | What you get |
|---|---|---|---|---|
| 1 | **Your laptop** | building, alone or with a team | `bun run dev` | the Plugin Studio at http://localhost:5173 |
| 2 | **A shared cloud dev server** | a team, or an agent on a server | the Docker image in `deployment/cloud/` | the Plugin Studio at `https://<your-host>/`, behind your team's sign-in |
| 3 | **Public embeds** | other sites showing a map | the built `dx-maps/` folder on `/cdn` or any static host | `https://<host>/…/dx-maps/<plugin>/<profile>/index.html` and `…/<plugin>/<plugin>.js` |
| 4 | **Inside your own site** | one site hosting every map | copy `dx-maps/` into the site's `public/` | the maps at `https://<your-site>/<folder>/…` |
---
## 1. Your laptop — `bun run dev`
```bash
git clone --depth 1 https://git.nuxtbase.app/doxa-open/doxa-maps.git
cd doxa-maps
bun install --frozen-lockfile
bun run dev # → http://localhost:5173/ is the Plugin Studio
```
Zero config: no `.env` is needed. Everything is local by default — hot reload of your own edits, a local
PocketBase at `/api/pb`, and Rudder's voice engine once it is set up (Go 1.22+, then
`bash backend/rudder-engine/setup-runtime.sh`). Every setting, with its default,
is in [`.env.example`](../.env.example); an empty value means the default.
- Follow what teammates land on a shared branch: set `DX_SYNC_REMOTE` (a remote name or a repo URL).
- Use the team's shared PocketBase instead of a local one: set `DX_PB_URL`.
Details: [HOWTO-join-the-table.md](./HOWTO-join-the-table.md).
## 2. A shared cloud dev server — Docker or Coolify, with `/data`
One running copy of the Plugin Studio that follows a branch and hot-reloads every push, for a whole team
or for an agent that lives on a server. Nobody edits files on it: changes arrive by pushing.
```bash
docker build -t dx-maps-dev deployment/cloud
docker run -d -p 5173:5173 -v dx-maps-data:/data \
-e REPO_URL=https://<host>/<owner>/<repo>.git -e BRANCH=main dx-maps-dev
```
Or paste `deployment/cloud/Dockerfile` into a container host (Coolify's "Dockerfile" build pack) and give
it a domain.
- **Give it a persistent `/data` volume.** It holds the team PocketBase (dev and prod) and the last
published build. Without one, every restart or redeploy starts empty.
- **Put the sign-in in front** before it is reachable from the internet: the `OIDC_*` settings. Only the
groups you allow get in.
- About **2.5 GB of memory and 2 vCPUs**.
It also serves the **team PocketBase** at `/pb/` and, after an admin triggers a build, the **public
embed folder** at `/cdn/` (way 3).
Details: [deployment/cloud/README.md](../deployment/cloud/README.md) and
[CLOUD-DEVELOPMENT-ENVIRONMENT.md](./CLOUD-DEVELOPMENT-ENVIRONMENT.md).
## 3. Public embeds — `/cdn` or any static host
The built folder, `dx-maps/`, is what other sites embed. Every link inside it is relative, so it works
from any address.
- **From the cloud dev server:** an admin runs a build (`POST /admin/build`; about 2 minutes). It builds
the current commit, removes private files, refuses to publish if any remain, then swaps
`/cdn/dx-maps/` over atomically. `/cdn/` is public (no sign-in) and sends
`Access-Control-Allow-Origin: *`, so both iframes and JS embeds work on other sites.
- **On any static host:** build locally with `BUILD_ALLOW=1 bun run build` and upload `public/dx-maps/`.
For JS embeds on other sites, the host must send `Access-Control-Allow-Origin: *`.
Every page loads its script with an integrity hash, so a tampered or stale script is refused by the
browser. The Plugin Studio's "copy embed" gives you the iframe and the script snippet for each map.
Details, per host (Cloudflare Pages, jsDelivr, any web server) and per embed style:
[README — What the build makes](../README.md#what-the-build-makes--3-outputs) and
[README-SECTION-3-cli-commands.md](./README-SECTION-3-cli-commands.md).
## 4. Inside your own site — the folder in `public/`
Copy the built `dx-maps/` folder into your site's `public/` (renaming it is fine) and your site becomes
the host: no second server and no cross-site setup, because the maps and the page share one origin.
**Live example:** the DX-life branch
[`research-gallery`](https://your-git-host.example/doxa-maps.git-cdn/src/branch/research-gallery)
drops the folder into DX-life's `public/` and fills `/research` with the Research Gallery. Run it with
`bun install && bun run dev`, then open `/research/`.
---
**Which one?** Building maps: **1**, plus **2** if several people or agents work together. Showing maps
on other sites: **3**. Showing them on a site you already run: **4**.

View file

@ -14,7 +14,7 @@ served folder". The licence travels with the asset; the explanation travels with
| `vendor/tabulator/tabulator.min.js` + `.min.css` | olifolkerd/tabulator v6.3.1 | MIT | **No** — the `.js` had only `(c) Oliver Folkerd 2025`; the `.css` had nothing | closed: upstream `LICENSE` now vendored beside it |
| `boundaries/gb-IND-ADM1*.geojson` (4 files) | geoBoundaries gbOpen, boundaryID `IND-ADM1-1811400` | **CC BY 2.5 IN**, licenceSource `github.com/datameet/maps`, year 2011 — fetched verbatim from the geoBoundaries API | **Yes** — `boundaries/ATTRIBUTION` now ships beside the data, plus the existing `.meta.json` sidecar | none (closed 2026-09-28) |
| `boundaries/gb-CHN-ADM1.geojson` | geoBoundaries gbOpen, boundaryID `CHN-ADM1-43563684` | **Public Domain**, licenceSource `commons.wikimedia.org`, year 2019 | recorded in `boundaries/ATTRIBUTION` | none — upstream records no attribution duty |
| `boundaries/world-adm0*.geojson` (2 files, 162 countries) | **geoBoundaries gbOpen, assembled per country** — corrected: its features carry geoBoundaries' own `iso3`/`shapeGroup`/`shapeName` properties, and the plugin's `data/adm0/PROVENANCE.json` names the source and endpoint. NOT Natural Earth, as this register first guessed | **MIXED — up to 162 different upstream licences.** gbOpen passes each country's own licence through | the principle is stated in `boundaries/ATTRIBUTION`; the per-country licences are **not** | **OPEN** — that PROVENANCE.json's `licences` table is EMPTY, so which of the 162 are CC BY is unestablished. Closing it means one API query per country. upg100-plugin's data; routed to them |
| `boundaries/world-adm0*.geojson` (2 files, 162 countries) | geoBoundaries gbOpen, assembled per country (its features carry geoBoundaries' own `iso3`/`shapeGroup`/`shapeName`; corrected — this register first guessed Natural Earth) | **MIXED, and ESTABLISHED per country as of 2026-09-28**: 162 upstream licences. **32** duty-free (28 Public Domain + 4 CC0) · **65** attribution-only · **65 SHARE-ALIKE CLASS** (58 ODbL 1.0 + 7 explicit ShareAlike: AGO GAB GEO GIN MMR NER TUR) | **Yes** — the per-country table (licence + licenseSource + boundaryID + boundarySource, fetched verbatim from the geoBoundaries API, 162 of 162, 0 failures) ships at `plugin-designs/my-upg-100-list/data/adm0/PROVENANCE.json`. `boundaries/ATTRIBUTION` references it by path rather than copying it | **OPEN, legal — not a measurement**: whether a redistributed boundary file is a "Derivative Database" under ODbL is unanswered, and half the duty-bearing countries turn on it. With the agent's data-licensing item |
| `people-groups/*` (3 files, 8 MB) | peoplegroups.org | **not established** | no terms ship | **OPEN, judgment** — redistribution terms unknown |
| `pplr/*` (6 files, 16 MB) | **PPLR ArcGIS Online org** `services2.arcgis.com/S4ydGgujXcif36k3`, aggregating IMB (peoplegroups.org), Joshua Project, the ROP registry, and carrying WCD (World Christian Database) IDs. Built from a local 78 MB extract not present in this repo — evidence from exp-shepherd | **UNRESOLVED.** `aCountry` and `aIMBPeople` publish no `copyrightText`, description or licence (queried `f=json`) | nothing ships | **OPEN, judgment** — redistribution not established. WCD is a proprietary Brill database, so even the IDs need a check |
| `tables/*` (304 files, 36 MB) | derived by `library/scripts/research/fetch-*.mjs` from several upstream APIs | **varies, not established per table** | nothing ships; there is no source or licence doc in `tables/` | **OPEN, judgment** — the largest gap by volume |
@ -34,8 +34,16 @@ served folder". The licence travels with the asset; the explanation travels with
## What is NOT closed, and why it is not mine to close
Four rows above are marked OPEN. Two are simply unverified and someone should look
(`world-adm0` provenance, the `pplr` upstream). Two need a decision rather than a fetch:
★ ONE FACT IN THIS FILE IS ALSO ASSERTED ELSEWHERE, AND THAT IS WHERE IT WILL DRIFT. The world-adm0
licence counts appear both here and in `plugin-designs/my-upg-100-list/data/adm0/PROVENANCE.json`.
**That file is the authority; if the two disagree, it wins.** They have already drifted once: this
register said the licence table was EMPTY on the very commit where it held all 162, because the two
landings crossed and neither author could see the other's tree. A register that still reads
"unestablished" after the work is done is settled-by-omission in reverse — the absence of an update
reads as the absence of the work.
Three rows above are marked OPEN. One is simply unverified and someone should look
(the `pplr` upstream). Two need a decision rather than a fetch:
**people-groups** and the 304 **tables** carry data whose redistribution terms are not established,
and 36 MB of derived tables is the largest exposure by volume. Attaching a licence I have not
confirmed would be worse than the present gap, so those go to the agent.

View file

@ -146,6 +146,10 @@ const SITES = [
// the catalogue default, its duplicate EN map is deleted, and section 9 keeps the ruling's PRECONDITION
// true rather than measured once.
// First site on the {t, te, locale} form: it needs locale for toLocaleString.
// ⚠ null, NOT a fallback. This row came back as 'fallback: (full) =>' in a merge, because the branch it
// merged from predates 0ded1a4e — the commit that carried out the embed-contract ruling here and deleted
// the inline EN map. Taking a SITES array wholesale from another branch re-asserts ITS view of every
// file in it, including the ones you changed; the gate caught it, which is the only reason it is right.
['plugin-designs/all-people-groups/all-people-groups.vue', 'useOptionalI18n', null],
// wave 3c — my-upg-100-list (owner: upg100-plugin). No namespace, since callers pass full keys.
// ⚠ THE THIRD COLUMN IS null, NOT 'humanizeKey(k)', and that is a DEPARTURE from 4c05e589, which

View file

@ -6,7 +6,8 @@
"title": "Gospel x Internet — the board",
"props": {
"profile": "board",
"urlState": "query"
"urlState": "query",
"pinHint": false
}
},
{
@ -15,7 +16,8 @@
"props": {
"profile": "board",
"view": "zero",
"urlState": "query"
"urlState": "query",
"pinHint": false
}
},
{
@ -25,7 +27,8 @@
"profile": "board",
"view": "province",
"panel": "map",
"urlState": "query"
"urlState": "query",
"pinHint": false
}
},
{
@ -34,7 +37,8 @@
"props": {
"profile": "board",
"panel": "tree",
"urlState": "query"
"urlState": "query",
"pinHint": false
}
},
{
@ -43,7 +47,8 @@
"props": {
"profile": "board",
"view": "platforms",
"urlState": "query"
"urlState": "query",
"pinHint": false
}
},
{
@ -52,7 +57,8 @@
"props": {
"profile": "board",
"list": "700",
"urlState": "query"
"urlState": "query",
"pinHint": false
}
}
]

View file

@ -152,6 +152,7 @@ useShadowStyles(
'.gig-sticky{position:sticky;inset-inline-start:0;z-index:1;background:inherit;font-weight:600}' +
'.gig-chk{width:34px;justify-content:center}' +
'.gig-chk input{width:15px;height:15px;margin:0;cursor:pointer;accent-color:#3b463d}' +
'.gig-hit{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;cursor:pointer}' +
'.gig-dot{width:10px;height:10px;border-radius:50%;box-sizing:border-box;border:1.5px solid #fff;box-shadow:0 0 0 1px rgba(0,0,0,.2);flex:none;margin-inline-end:6px}' +
'.gig-sw{width:10px;height:10px;border-radius:2px;flex:none;margin-inline-end:6px;opacity:.85}' +
'.gig-td a{color:#4f6b52}' +
@ -197,7 +198,8 @@ useShadowStyles(
@click="board.openGroup(r.slug)" @keydown="onRowKey($event, r)"
@mouseenter="bus.setHover(r.slug)" @mouseleave="bus.setHover(null)">
<div class="gig-td gig-chk" role="cell" @click.stop>
<input type="checkbox" :checked="isSel(r.slug)" :aria-label="T('gospelInternet.grid.selectRow', 'Select {name}', { name: r.people_group })" @change="bus.toggleSelect(r.slug)" />
<!-- a 24 px hit area around the 15 px box (WCAG 2.5.8 target size; rega RS2) -->
<label class="gig-hit"><input type="checkbox" :checked="isSel(r.slug)" :aria-label="T('gospelInternet.grid.selectRow', 'Select {name}', { name: r.people_group })" @change="bus.toggleSelect(r.slug)" /></label>
</div>
<div v-for="c in visibleCols" :key="c.key" class="gig-td" :class="{ num: c.num, 'gig-sticky': c.sticky }" :style="{ width: c.w + 'px' }" role="cell">
<span v-if="c.dot" class="gig-dot" :style="{ background: DETAIL_FILL[r.access_detail], borderColor: DETAIL_RIM[r.access_detail] }" aria-hidden="true"></span>

View file

@ -11,9 +11,14 @@
* is the point.
*
* FALLS BACK TO THE KEY. A missing string renders the English sentence rather than 'regions.Foo'.
* That matters here: our repo ships 11 locales and DX-life translates 8, so it/ro/zh have no
* regions.json at all and resolve through this fallback (library/i18n README: a missing area file
* is fine, fallbackLocale 'en' handles it).
* ✗ THE REASON GIVEN HERE IS NOW STALE, corrected 2026-09-27. It read: "our repo ships 11 locales and
* DX-life translates 8, so it/ro/zh have no regions.json at all and resolve through this fallback."
* MEASURED: all ELEVEN locales now carry a regions.json, it/ro/zh included. The fallback is still
* right and still load-bearing — a key absent from a catalogue renders its English sentence, which is
* exactly what a reader should see — but it is no longer three whole languages leaning on it.
* COVERAGE, measured the same day: 61 of the 61 keys this plugin actually calls are present in all 11
* locales. The 62nd that a raw source scan reports is t('Region') appearing only inside two COMMENTS,
* which say themselves that DX-life never needed the key (they have no all-regions state).
*
* PLACEMENT: plugin-local on purpose. It is four lines shaped entirely by how THESE pages were
* written, and the repo's rule is to default to the plugin folder and promote to library/ only

View file

@ -604,7 +604,7 @@
"bundle": "gospel-internet",
"scriptUrl": "./gospel-internet/gospel-internet.js",
"output": "dx-maps/gospel-internet/gospel-internet.js",
"integrity": "sha384-rJnN+qmCkokPGSCgbIMnEE/Dj/l8KQi9hEI9bl0aWxpuxtsDQMkZ35tBccFbwVLX",
"integrity": "sha384-oGueXgVn05BKMDaSbY61Gdl/coGTTPu/uMM/BWcYMWCi5Vyr+6N3dk59AKpuDw7i",
"elements": [
"gospel-internet-board"
],
@ -623,7 +623,7 @@
"scriptUrl": "./gospel-internet/gospel-internet.js",
"embed": {
"iframe": "<iframe src=\"./gospel-internet/board/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=\"./gospel-internet/gospel-internet.js\" integrity=\"sha384-rJnN+qmCkokPGSCgbIMnEE/Dj/l8KQi9hEI9bl0aWxpuxtsDQMkZ35tBccFbwVLX\" crossorigin=\"anonymous\"></script>\n<gospel-internet-board profile-config='{\"profile\":\"board\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-internet-board>"
"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=\"./gospel-internet/gospel-internet.js\" integrity=\"sha384-oGueXgVn05BKMDaSbY61Gdl/coGTTPu/uMM/BWcYMWCi5Vyr+6N3dk59AKpuDw7i\" crossorigin=\"anonymous\"></script>\n<gospel-internet-board profile-config='{\"profile\":\"board\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-internet-board>"
},
"instances": [
{
@ -632,7 +632,8 @@
"apiBaseUrl": "",
"props": {
"profile": "board",
"urlState": "query"
"urlState": "query",
"pinHint": false
},
"element": "gospel-internet-board",
"iframeUrl": "./gospel-internet/board/board/index.html",
@ -647,7 +648,8 @@
"props": {
"profile": "board",
"view": "zero",
"urlState": "query"
"urlState": "query",
"pinHint": false
},
"element": "gospel-internet-board",
"iframeUrl": "./gospel-internet/board/zero/index.html",
@ -663,7 +665,8 @@
"profile": "board",
"view": "province",
"panel": "map",
"urlState": "query"
"urlState": "query",
"pinHint": false
},
"element": "gospel-internet-board",
"iframeUrl": "./gospel-internet/board/india-china/index.html",
@ -678,7 +681,8 @@
"props": {
"profile": "board",
"panel": "tree",
"urlState": "query"
"urlState": "query",
"pinHint": false
},
"element": "gospel-internet-board",
"iframeUrl": "./gospel-internet/board/language-tree/index.html",
@ -693,7 +697,8 @@
"props": {
"profile": "board",
"view": "platforms",
"urlState": "query"
"urlState": "query",
"pinHint": false
},
"element": "gospel-internet-board",
"iframeUrl": "./gospel-internet/board/platforms/index.html",
@ -708,7 +713,8 @@
"props": {
"profile": "board",
"list": "700",
"urlState": "query"
"urlState": "query",
"pinHint": false
},
"element": "gospel-internet-board",
"iframeUrl": "./gospel-internet/board/project-700/index.html",

View file

@ -36,7 +36,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <gospel-internet-board> custom element. -->
<script src="../../gospel-internet.js" integrity="sha384-rJnN+qmCkokPGSCgbIMnEE/Dj/l8KQi9hEI9bl0aWxpuxtsDQMkZ35tBccFbwVLX" crossorigin="anonymous"></script>
<script src="../../gospel-internet.js" integrity="sha384-oGueXgVn05BKMDaSbY61Gdl/coGTTPu/uMM/BWcYMWCi5Vyr+6N3dk59AKpuDw7i" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:
@ -52,7 +52,7 @@
(function () {
var slot = document.getElementById('slot');
var status = document.getElementById('status');
var BASE_CONFIG = {"assetsBase":"../../../assets","profile":"board","urlState":"query"};
var BASE_CONFIG = {"assetsBase":"../../../assets","profile":"board","urlState":"query","pinHint":false};
// MapLibre map pages AND shell pages (app-shell / nested-mfe-spa) need NO token:
// the ladder below is skipped entirely and the element mounts immediately.
// (A leaf whose engine is MapLibre at RUNTIME joins them — see PROVIDER below.)

View file

@ -36,7 +36,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <gospel-internet-board> custom element. -->
<script src="../gospel-internet.js" integrity="sha384-rJnN+qmCkokPGSCgbIMnEE/Dj/l8KQi9hEI9bl0aWxpuxtsDQMkZ35tBccFbwVLX" crossorigin="anonymous"></script>
<script src="../gospel-internet.js" integrity="sha384-oGueXgVn05BKMDaSbY61Gdl/coGTTPu/uMM/BWcYMWCi5Vyr+6N3dk59AKpuDw7i" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

View file

@ -36,7 +36,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <gospel-internet-board> custom element. -->
<script src="../../gospel-internet.js" integrity="sha384-rJnN+qmCkokPGSCgbIMnEE/Dj/l8KQi9hEI9bl0aWxpuxtsDQMkZ35tBccFbwVLX" crossorigin="anonymous"></script>
<script src="../../gospel-internet.js" integrity="sha384-oGueXgVn05BKMDaSbY61Gdl/coGTTPu/uMM/BWcYMWCi5Vyr+6N3dk59AKpuDw7i" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:
@ -52,7 +52,7 @@
(function () {
var slot = document.getElementById('slot');
var status = document.getElementById('status');
var BASE_CONFIG = {"assetsBase":"../../../assets","profile":"board","view":"province","panel":"map","urlState":"query"};
var BASE_CONFIG = {"assetsBase":"../../../assets","profile":"board","view":"province","panel":"map","urlState":"query","pinHint":false};
// MapLibre map pages AND shell pages (app-shell / nested-mfe-spa) need NO token:
// the ladder below is skipped entirely and the element mounts immediately.
// (A leaf whose engine is MapLibre at RUNTIME joins them — see PROVIDER below.)

View file

@ -36,7 +36,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <gospel-internet-board> custom element. -->
<script src="../../gospel-internet.js" integrity="sha384-rJnN+qmCkokPGSCgbIMnEE/Dj/l8KQi9hEI9bl0aWxpuxtsDQMkZ35tBccFbwVLX" crossorigin="anonymous"></script>
<script src="../../gospel-internet.js" integrity="sha384-oGueXgVn05BKMDaSbY61Gdl/coGTTPu/uMM/BWcYMWCi5Vyr+6N3dk59AKpuDw7i" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:
@ -52,7 +52,7 @@
(function () {
var slot = document.getElementById('slot');
var status = document.getElementById('status');
var BASE_CONFIG = {"assetsBase":"../../../assets","profile":"board","panel":"tree","urlState":"query"};
var BASE_CONFIG = {"assetsBase":"../../../assets","profile":"board","panel":"tree","urlState":"query","pinHint":false};
// MapLibre map pages AND shell pages (app-shell / nested-mfe-spa) need NO token:
// the ladder below is skipped entirely and the element mounts immediately.
// (A leaf whose engine is MapLibre at RUNTIME joins them — see PROVIDER below.)

View file

@ -36,7 +36,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <gospel-internet-board> custom element. -->
<script src="../../gospel-internet.js" integrity="sha384-rJnN+qmCkokPGSCgbIMnEE/Dj/l8KQi9hEI9bl0aWxpuxtsDQMkZ35tBccFbwVLX" crossorigin="anonymous"></script>
<script src="../../gospel-internet.js" integrity="sha384-oGueXgVn05BKMDaSbY61Gdl/coGTTPu/uMM/BWcYMWCi5Vyr+6N3dk59AKpuDw7i" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:
@ -52,7 +52,7 @@
(function () {
var slot = document.getElementById('slot');
var status = document.getElementById('status');
var BASE_CONFIG = {"assetsBase":"../../../assets","profile":"board","view":"platforms","urlState":"query"};
var BASE_CONFIG = {"assetsBase":"../../../assets","profile":"board","view":"platforms","urlState":"query","pinHint":false};
// MapLibre map pages AND shell pages (app-shell / nested-mfe-spa) need NO token:
// the ladder below is skipped entirely and the element mounts immediately.
// (A leaf whose engine is MapLibre at RUNTIME joins them — see PROVIDER below.)

View file

@ -36,7 +36,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <gospel-internet-board> custom element. -->
<script src="../../gospel-internet.js" integrity="sha384-rJnN+qmCkokPGSCgbIMnEE/Dj/l8KQi9hEI9bl0aWxpuxtsDQMkZ35tBccFbwVLX" crossorigin="anonymous"></script>
<script src="../../gospel-internet.js" integrity="sha384-oGueXgVn05BKMDaSbY61Gdl/coGTTPu/uMM/BWcYMWCi5Vyr+6N3dk59AKpuDw7i" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:
@ -52,7 +52,7 @@
(function () {
var slot = document.getElementById('slot');
var status = document.getElementById('status');
var BASE_CONFIG = {"assetsBase":"../../../assets","profile":"board","list":"700","urlState":"query"};
var BASE_CONFIG = {"assetsBase":"../../../assets","profile":"board","list":"700","urlState":"query","pinHint":false};
// MapLibre map pages AND shell pages (app-shell / nested-mfe-spa) need NO token:
// the ladder below is skipped entirely and the element mounts immediately.
// (A leaf whose engine is MapLibre at RUNTIME joins them — see PROVIDER below.)

View file

@ -36,7 +36,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <gospel-internet-board> custom element. -->
<script src="../../gospel-internet.js" integrity="sha384-rJnN+qmCkokPGSCgbIMnEE/Dj/l8KQi9hEI9bl0aWxpuxtsDQMkZ35tBccFbwVLX" crossorigin="anonymous"></script>
<script src="../../gospel-internet.js" integrity="sha384-oGueXgVn05BKMDaSbY61Gdl/coGTTPu/uMM/BWcYMWCi5Vyr+6N3dk59AKpuDw7i" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:
@ -52,7 +52,7 @@
(function () {
var slot = document.getElementById('slot');
var status = document.getElementById('status');
var BASE_CONFIG = {"assetsBase":"../../../assets","profile":"board","view":"zero","urlState":"query"};
var BASE_CONFIG = {"assetsBase":"../../../assets","profile":"board","view":"zero","urlState":"query","pinHint":false};
// MapLibre map pages AND shell pages (app-shell / nested-mfe-spa) need NO token:
// the ladder below is skipped entirely and the element mounts immediately.
// (A leaf whose engine is MapLibre at RUNTIME joins them — see PROVIDER below.)

File diff suppressed because one or more lines are too long

View file

@ -604,7 +604,7 @@
"bundle": "gospel-internet",
"scriptUrl": "./gospel-internet/gospel-internet.js",
"output": "dx-maps/gospel-internet/gospel-internet.js",
"integrity": "sha384-rJnN+qmCkokPGSCgbIMnEE/Dj/l8KQi9hEI9bl0aWxpuxtsDQMkZ35tBccFbwVLX",
"integrity": "sha384-oGueXgVn05BKMDaSbY61Gdl/coGTTPu/uMM/BWcYMWCi5Vyr+6N3dk59AKpuDw7i",
"elements": [
"gospel-internet-board"
],
@ -623,7 +623,7 @@
"scriptUrl": "./gospel-internet/gospel-internet.js",
"embed": {
"iframe": "<iframe src=\"./gospel-internet/board/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=\"./gospel-internet/gospel-internet.js\" integrity=\"sha384-rJnN+qmCkokPGSCgbIMnEE/Dj/l8KQi9hEI9bl0aWxpuxtsDQMkZ35tBccFbwVLX\" crossorigin=\"anonymous\"></script>\n<gospel-internet-board profile-config='{\"profile\":\"board\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-internet-board>"
"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=\"./gospel-internet/gospel-internet.js\" integrity=\"sha384-oGueXgVn05BKMDaSbY61Gdl/coGTTPu/uMM/BWcYMWCi5Vyr+6N3dk59AKpuDw7i\" crossorigin=\"anonymous\"></script>\n<gospel-internet-board profile-config='{\"profile\":\"board\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-internet-board>"
},
"instances": [
{
@ -632,7 +632,8 @@
"apiBaseUrl": "",
"props": {
"profile": "board",
"urlState": "query"
"urlState": "query",
"pinHint": false
},
"element": "gospel-internet-board",
"iframeUrl": "./gospel-internet/board/board/index.html",
@ -647,7 +648,8 @@
"props": {
"profile": "board",
"view": "zero",
"urlState": "query"
"urlState": "query",
"pinHint": false
},
"element": "gospel-internet-board",
"iframeUrl": "./gospel-internet/board/zero/index.html",
@ -663,7 +665,8 @@
"profile": "board",
"view": "province",
"panel": "map",
"urlState": "query"
"urlState": "query",
"pinHint": false
},
"element": "gospel-internet-board",
"iframeUrl": "./gospel-internet/board/india-china/index.html",
@ -678,7 +681,8 @@
"props": {
"profile": "board",
"panel": "tree",
"urlState": "query"
"urlState": "query",
"pinHint": false
},
"element": "gospel-internet-board",
"iframeUrl": "./gospel-internet/board/language-tree/index.html",
@ -693,7 +697,8 @@
"props": {
"profile": "board",
"view": "platforms",
"urlState": "query"
"urlState": "query",
"pinHint": false
},
"element": "gospel-internet-board",
"iframeUrl": "./gospel-internet/board/platforms/index.html",
@ -708,7 +713,8 @@
"props": {
"profile": "board",
"list": "700",
"urlState": "query"
"urlState": "query",
"pinHint": false
},
"element": "gospel-internet-board",
"iframeUrl": "./gospel-internet/board/project-700/index.html",