Regions batch: perRow boot, control inset, stats grid, print, two leaks, smaller watermark
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions

Seven changes to two plugins, re-applied onto current main as ONE source patch
rather than rebased, because the rebase conflicted in the generated bundles —
where a conflict is never resolvable by hand, since neither side matches what
either source builds. Source re-applied clean, everything rebuilt from it.

people-groups-grid
  · the saved column count is restored before first paint, not after, so a
    returning reader no longer watches the grid snap from auto to their choice.
    It re-reads if the profile-config key arrives late, and never over a choice
    the reader has since made by hand.
  · the cards-per-row control is inset from the card edge it was sitting level
    with (Driver round 2, #5).
  · the window vocabulary handle is released on unmount, identity-checked so the
    first of two grids on a page cannot strip the second's live handle.

regions-dashboard
  · the four stat cards no longer let Population stretch across a tablet row.
    auto-fit collapsed the empty tracks; auto-fill with the track minimum capped
    at a quarter of the row gives at most four columns and never a stretched
    orphan. Measured at nine widths.
  · the dashboard is printable at all. It had no @media print rule, so the app
    shell's absolute root and inner scroller meant the browser printed one
    screenful; the legend stayed on top of the map; interactive chrome printed.
  · both window globals are released on unmount, not just the remembered one,
    each identity-checked and on its own line.

shared asset
  · the worldmap watermark is 242 KB rather than 311 KB — same 394 paths, same
    drawing, coordinate precision trimmed to what the render resolves.
This commit is contained in:
Doxa Maps 2026-09-28 20:20:50 +00:00
parent d9f8587ac4
commit 182611c94b
22 changed files with 216 additions and 900 deletions

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 304 KiB

After

Width:  |  Height:  |  Size: 236 KiB

View file

@ -39,7 +39,7 @@
* - researchUrl / selectUrl : String props — link bases for the cards.
* - t (i18n labels): via the `t` / profile-config.t object prop (no useI18n).
*/
import { ref, computed, watch, onMounted, getCurrentInstance } from 'vue'
import { ref, computed, watch, onMounted, onUnmounted, getCurrentInstance } from 'vue'
// SHARED search primitives (one source of truth for BOTH cap-2 grid + cap-1 dashboard).
import Fuse from '@map/components/search/fuzzy.js'
import { highlightRanges } from '@map/composables/useTextHighlight.js'
@ -329,15 +329,37 @@ const selectUrl = computed(() => props.selectUrl || cfg.value.selectUrl || ''
const PER_ROW_OPTIONS = ['auto', '1', '2', '3', '4', '5']
const perRowKey = computed(() => `pgg-cards-per-row:${cfg.value.profile || 'default'}`)
const perRow = ref('auto')
onMounted(() => {
// Per PROFILE, not per bundle: two grids on one page are two different lists, and useDashboardLayout
// already paid for that lesson — a shared key made one caller inherit another's saved layout.
/**
* ★ RESTORED AT SETUP, NOT AT MOUNT, AND RE-READ IF THE KEY ARRIVES LATE.
*
* Restoring in onMounted runs AFTER first paint, so a returning reader who chose 2 columns saw the
* auto layout painted and then snap — a shift suffered only by the reader whose preference we were
* trying to honour. sr found that while deciding they could not read this value for lazy-loading,
* which is also why it matters to them: at first paint this was 'auto' for everyone.
*
* But a setup-only read is the opposite bug, and sr caught that too. perRowKey is derived from
* cfg.profile, which comes from the profile-config ATTRIBUTE, and a host can set that after the
* element upgrades — the generated pages do createElement, setAttribute, appendChild in that order.
* So at setup the key may still be 'default', and a setup-only read would restore the wrong
* profile's value and never correct itself. That is the shared-key failure useDashboardLayout
* already paid for once.
*
* So: read now for the first paint, and re-read if the key actually changes — but never over a
* choice the reader has since made by hand. ONE restore path, not two.
*/
let perRowTouched = false
function restorePerRow() {
try {
const saved = localStorage.getItem(perRowKey.value)
if (saved && PER_ROW_OPTIONS.includes(saved)) perRow.value = saved
} catch (_) { /* private mode / blocked storage: the default is correct, not an error */ }
} catch (_) { /* private mode, blocked storage, or no window at all: the default is correct, not an error */ }
}
restorePerRow()
watch(perRowKey, (next, prev) => { if (next !== prev && !perRowTouched) restorePerRow() })
watch(perRow, (v) => {
perRowTouched = true
try { localStorage.setItem(perRowKey.value, v) } catch (_) {}
})
watch(perRow, (v) => { try { localStorage.setItem(perRowKey.value, v) } catch (_) {} })
/** Auto contributes NOTHING, so the stylesheet keeps its own rule. */
const gridStyle = computed(() => (perRow.value === 'auto'
? null
@ -913,6 +935,24 @@ function vocabulary(field) {
return [...seen].sort()
}
/**
* ★ THE WINDOW HANDLE IS RELEASED ON UNMOUNT, AND ONLY IF IT IS STILL OURS.
*
* window.__peopleGroupsGridVocabulary was set on mount and never cleared, so it held a reference
* into this app for as long as the page lived — every unmounted grid stayed reachable. The element
* handle beside it (el.__vocabulary) needs no teardown: it dies with the element that carries it.
*
* The identity check is the part that matters. This grid can appear more than once on a page, and
* the last mount wins the global — so a plain delete on the FIRST grid's unmount would strip the
* SECOND, live, grid's handle and break whatever reads it, with no error. Clearing a shared global
* is only safe while you can prove you are still the one who set it.
*/
onUnmounted(() => {
if (typeof window !== 'undefined' && window.__peopleGroupsGridVocabulary === vocabulary) {
delete window.__peopleGroupsGridVocabulary
}
})
onMounted(() => {
const el = hostEl()
if (el) el.__vocabulary = vocabulary
@ -1195,7 +1235,12 @@ onMounted(() => {
letterbox to a 240x240 square: ~2x the visible area, and the face is no longer cropped to a band. */
.grid.uupgs-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
/* Top-right, above the grid it controls. Logical inline-end so it mirrors under RTL. */
.pgg-gridbar { display: flex; justify-content: flex-end; margin-bottom: 8px; }
/* ★ INSET FROM THE CONTENT EDGE, not just from the viewport. .pgg-root already pads 16px, so the
control was landing exactly level with the rightmost card's edge — technically inside the
padding and still reading as flush, because the eye compares it to the card grid below it
rather than to the plugin's border. The extra inline-end gives it room against that edge.
Logical property, so it is the correct side under RTL without a second rule. */
.pgg-gridbar { display: flex; justify-content: flex-end; margin-bottom: 8px; padding-inline-end: 8px; }
.pgg-perrow { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--mut); }
.pgg-perrow select { font: inherit; color: var(--ink); background: var(--card); border: 1px solid var(--line); border-radius: 6px; padding: 2px 6px; }
.card.uupg__card {

View file

@ -794,6 +794,23 @@ useShadowStyles(
'.rd-scroll > *{ width:calc(90% + 16px); max-width:1200px;' +
' margin-left:auto; margin-right:auto; }' +
'.rd-status{ padding:var(--spacing-xl); text-align:center; color:var(--dx-muted); font-size:var(--font-size-md); }' +
// ── ★ PRINT: LET THE DOCUMENT FLOW ONTO PAGES (Driver test round 2, #2) ──────────────────────
// "The header and footer don't show properly" has a structural cause, not a styling one. This
// page is an app shell: .rd-root is position:absolute inset:0 and .rd-scroll owns the scroll.
// On paper there is no viewport to be absolute INSIDE and no scrollbar to move, so the browser
// prints the one screenful that happens to be laid out and drops everything above and below it.
// Releasing both back into normal flow is what makes the whole dashboard printable at all.
'@media print{' +
' .rd-root{ position:static; inset:auto; height:auto; overflow:visible; }' +
' .rd-scroll{ overflow:visible; height:auto; max-height:none; padding:0; }' +
// Keep a heading with the block it introduces rather than orphaned at a page foot.
' .rd-head, .rd-stats, .rd-mapblock, .rd-section{ break-inside:avoid; }' +
' .rd-h2{ break-after:avoid; }' +
// Controls that only do something under a pointer. The back-to-top arrow is the clearest case:
// on paper it is a circle with an arrow in it and nothing to scroll.
' .rd-chooser, .btt{ display:none !important; }' +
'}' +
'.rd-status.rd-failed{ font-weight:600; }' +
// ── head: RegionDetail.vue:47-51, a .stack--xs (7.5px) block, centred ──
@ -843,7 +860,20 @@ useShadowStyles(
// ── .region-stats: RegionDetail.vue's scoped block. The GRID stays here and the CARD went to the
// library, deliberately: how many stats there are and how they wrap is this page's decision,
// while the look of one stat is the reusable part. See library/components/regions/StatCard.vue.
'.rd-stats{ display:grid; grid-template-columns:repeat(auto-fit, minmax(180px, 1fr));' +
// ★ auto-FILL WITH A CAPPED TRACK MINIMUM. Driver test round 2: the Population card — the LAST
// of four — was centred in a box four times too wide on a tablet. Cause: auto-FIT collapses the
// empty tracks, so at 3 columns the lone card in row 2 stretched across the whole row. Desktop
// fits all four, which is why only desktop looked right.
// auto-fill alone fixes that and breaks desktop: at 1200px it makes SIX tracks for four cards,
// leaving two empty on the right and squeezing the cards to their 180px floor (dx-shepherd).
// So the track minimum is also capped at a quarter of the row: at most four tracks ever, and the
// orphan is never stretched. Measured at 1200/1000/900/800/768/700/600/500/390 — four columns
// down to 800, three to 600, two below, no empty tracks at any of them.
// ⚠ THIS NOW DIFFERS FROM dx-life, deliberately. Theirs is the same auto-fit rule
// (RegionDetail.vue:176) and stretches the same card; the Driver reported it, and dx-shepherd is
// telling him it diverges.
'.rd-stats{ display:grid;' +
' grid-template-columns:repeat(auto-fill, minmax(max(180px, calc((100% - 3 * var(--spacing-md)) / 4)), 1fr));' +
' gap:var(--spacing-md); }' +
'.rd-chart{ padding:var(--spacing-lg) clamp(var(--spacing-md), 4cqw, var(--spacing-xl)); }' +
// RegionDetail wraps the note and the map in a .stack--sm (13.3px). The note is their

View file

@ -715,7 +715,29 @@ function watchResize() {
ro.observe(mapContainer.value)
}
onBeforeUnmount(() => { if (ro) { try { ro.disconnect() } catch (_) {} } if (popup) popup.remove(); try { delete window.__rcmMap } catch (_) {} destroy() })
/**
* ★ RELEASE EVERY GLOBAL THIS COMPONENT SETS, AS A SET — not just the one that came to mind.
*
* Two are published: __rcmMap (the live map instance, which pins the whole app — rega measured
* ~10 MB per mount) and __rcmBounds. Only the first was ever deleted, so every unmounted map left
* its bounds behind; the leak that gets fixed is the one you remember, and the set is what the
* check looks for.
*
* ★ AND BOTH DELETES ARE IDENTITY-CHECKED, for the reason the grid already needed: two of these
* maps can share a page — the regions chooser and a country map — and the second mount overwrites
* the global. An unconditional delete on the FIRST one's unmount would then strip the SECOND,
* still-live map's handle, with no error anywhere. Clearing a shared global is only safe while you
* can still prove you are the one who set it.
*
* One delete per line, deliberately: sr's check reads them as separate statements.
*/
onBeforeUnmount(() => {
if (ro) { try { ro.disconnect() } catch (_) {} }
if (popup) popup.remove()
try { if (typeof window !== 'undefined' && window.__rcmMap === map.value) delete window.__rcmMap } catch (_) {}
try { if (typeof window !== 'undefined' && window.__rcmBounds === props.bounds) delete window.__rcmBounds } catch (_) {}
destroy()
})
watch(() => [props.countryCodes, props.bounds, props.center, props.zoom, props.points, props.colorMode, props.highlightRegion], applySubject, { deep: true })
@ -731,6 +753,27 @@ useShadowStyles(
'touch-action:pan-y;pointer-events:auto;background:transparent}' +
'.map-scroll-edge--left{left:0}' +
'.map-scroll-edge--right{right:0}' +
// ── ★ PRINT: THE LEGEND GOES BESIDE THE MAP, NOT OVER IT (Driver test round 2, #2) ──────────
// This plugin shipped with NO @media print rule at all, which is the single cause behind all
// three of his symptoms: on paper the legend stayed absolutely positioned ON the map, the map
// kept a 780px min-height and a 16/9 ratio that no page can hold, and the interactive chrome
// printed along with it. A page that was never styled for print does not fail loudly; it just
// prints the screen.
//
// .rcm__legend is a SIBLING of .rcm__canvas inside .rcm, so putting it beside the map is a
// matter of letting it back into flow rather than restructuring anything: .rcm becomes a row,
// the canvas takes the remaining width, and the legend takes its natural width.
'@media print{' +
' .rcm{ display:flex; align-items:flex-start; gap:12px; min-height:0; aspect-ratio:auto; height:auto; break-inside:avoid; }' +
' .rcm__canvas{ flex:1 1 auto; height:12cm; }' +
// Static, so it sits in the row instead of floating over the canvas. Capped so a long legend
// cannot squeeze the map it is explaining down to a strip.
' .rcm__legend{ position:static; inset:auto; flex:0 0 auto; max-width:38%; background:none; box-shadow:none; }' +
// Chrome that only means something to a pointer. The scroll strips are invisible on screen and
// would print as two empty 40px columns beside the map.
' .map-scroll-edge, .mapboxgl-ctrl-group, .maplibregl-ctrl-group, .mapboxgl-ctrl-attrib-button, .maplibregl-ctrl-attrib-button{ display:none !important; }' +
'}' +
// ★ THE SCROLL STRIPS WERE SWALLOWING THE MAP CONTROLS (Driver, on Mapbox): zoom in, zoom out
// and fullscreen could not be clicked at all. The strips are 40px wide, full height,
// pointer-events:auto and z-index:2 — and BOTH engines place their control groups in the very

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 304 KiB

After

Width:  |  Height:  |  Size: 236 KiB

File diff suppressed because one or more lines are too long

View file

@ -43,7 +43,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <bp-big-picture> custom element. -->
<script src="../../big-picture.js" integrity="sha384-cxgYiMoVcPRRXImJt2ufLHEBTSJzFGMdiThT+LURZI/WwNUVYaI2tVgcwTPo67oC" crossorigin="anonymous"></script>
<script src="../../big-picture.js" integrity="sha384-RDL00UKQPC2kUEELx1OYgC3TleLPIwSZODMUEFd5n5vPSRnFNEI28fgdrNTM9sNA" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

View file

@ -43,7 +43,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <bp-big-picture> custom element. -->
<script src="../../big-picture.js" integrity="sha384-cxgYiMoVcPRRXImJt2ufLHEBTSJzFGMdiThT+LURZI/WwNUVYaI2tVgcwTPo67oC" crossorigin="anonymous"></script>
<script src="../../big-picture.js" integrity="sha384-RDL00UKQPC2kUEELx1OYgC3TleLPIwSZODMUEFd5n5vPSRnFNEI28fgdrNTM9sNA" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

View file

@ -43,7 +43,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <bp-big-picture> custom element. -->
<script src="../big-picture.js" integrity="sha384-cxgYiMoVcPRRXImJt2ufLHEBTSJzFGMdiThT+LURZI/WwNUVYaI2tVgcwTPo67oC" crossorigin="anonymous"></script>
<script src="../big-picture.js" integrity="sha384-RDL00UKQPC2kUEELx1OYgC3TleLPIwSZODMUEFd5n5vPSRnFNEI28fgdrNTM9sNA" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

File diff suppressed because one or more lines are too long

View file

@ -47,7 +47,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <dashboard-plus-grid> custom element. -->
<script src="../../dashboard-plus-grid.js" integrity="sha384-nBYRma6gYPnn265qKwT1JTo4U3q5x5afciFKxS8y7hMGIVrgdJQJy3b6yGni+Lfw" crossorigin="anonymous"></script>
<script src="../../dashboard-plus-grid.js" integrity="sha384-/YTLq7mqJhfkrsCcZs2MAEyxi1f9zSpgaOlN6hKJZfT+AD9WhByaVrJLEI0WQLr5" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

View file

@ -47,7 +47,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <dashboard-plus-grid> custom element. -->
<script src="../dashboard-plus-grid.js" integrity="sha384-nBYRma6gYPnn265qKwT1JTo4U3q5x5afciFKxS8y7hMGIVrgdJQJy3b6yGni+Lfw" crossorigin="anonymous"></script>
<script src="../dashboard-plus-grid.js" integrity="sha384-/YTLq7mqJhfkrsCcZs2MAEyxi1f9zSpgaOlN6hKJZfT+AD9WhByaVrJLEI0WQLr5" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

View file

@ -40,7 +40,7 @@
"bundle": "big-picture",
"scriptUrl": "./big-picture/big-picture.js",
"output": "dx-maps/big-picture/big-picture.js",
"integrity": "sha384-cxgYiMoVcPRRXImJt2ufLHEBTSJzFGMdiThT+LURZI/WwNUVYaI2tVgcwTPo67oC",
"integrity": "sha384-RDL00UKQPC2kUEELx1OYgC3TleLPIwSZODMUEFd5n5vPSRnFNEI28fgdrNTM9sNA",
"elements": [
"bp-big-picture",
"bp-research-header",
@ -65,7 +65,7 @@
"scriptUrl": "./big-picture/big-picture.js",
"embed": {
"iframe": "<iframe src=\"./big-picture/big-picture/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./big-picture/big-picture.js\" integrity=\"sha384-cxgYiMoVcPRRXImJt2ufLHEBTSJzFGMdiThT+LURZI/WwNUVYaI2tVgcwTPo67oC\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<bp-big-picture profile-config='{\"profile\":\"big-picture\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></bp-big-picture>"
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./big-picture/big-picture.js\" integrity=\"sha384-RDL00UKQPC2kUEELx1OYgC3TleLPIwSZODMUEFd5n5vPSRnFNEI28fgdrNTM9sNA\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<bp-big-picture profile-config='{\"profile\":\"big-picture\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></bp-big-picture>"
},
"instances": [
{
@ -233,7 +233,7 @@
"bundle": "dashboard-plus-grid",
"scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js",
"output": "dx-maps/dashboard-plus-grid/dashboard-plus-grid.js",
"integrity": "sha384-nBYRma6gYPnn265qKwT1JTo4U3q5x5afciFKxS8y7hMGIVrgdJQJy3b6yGni+Lfw",
"integrity": "sha384-/YTLq7mqJhfkrsCcZs2MAEyxi1f9zSpgaOlN6hKJZfT+AD9WhByaVrJLEI0WQLr5",
"elements": [
"dashboard-plus-grid"
],
@ -256,7 +256,7 @@
"scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js",
"embed": {
"iframe": "<iframe src=\"./dashboard-plus-grid/dashboard-plus-grid/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=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-nBYRma6gYPnn265qKwT1JTo4U3q5x5afciFKxS8y7hMGIVrgdJQJy3b6yGni+Lfw\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<dashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dashboard-plus-grid>"
"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=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-/YTLq7mqJhfkrsCcZs2MAEyxi1f9zSpgaOlN6hKJZfT+AD9WhByaVrJLEI0WQLr5\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<dashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dashboard-plus-grid>"
},
"instances": [
{
@ -902,7 +902,7 @@
"bundle": "people-groups-grid",
"scriptUrl": "./people-groups-grid/people-groups-grid.js",
"output": "dx-maps/people-groups-grid/people-groups-grid.js",
"integrity": "sha384-T5ROzZLd8Y7/fzG+28IjE8X2MntL0lG8j25FO1RtEGNxAx94Z0nRgglJziKIIOn+",
"integrity": "sha384-mAWxn1zO4eldnWFVFDdfgQ42rGRmqwtBZTaNPI2rjsHMgFeSOwpQjT7XZt473BZy",
"elements": [
"people-groups-grid"
],
@ -921,7 +921,7 @@
"scriptUrl": "./people-groups-grid/people-groups-grid.js",
"embed": {
"iframe": "<iframe src=\"./people-groups-grid/people-groups-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./people-groups-grid/people-groups-grid.js\" integrity=\"sha384-T5ROzZLd8Y7/fzG+28IjE8X2MntL0lG8j25FO1RtEGNxAx94Z0nRgglJziKIIOn+\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<people-groups-grid profile-config='{\"profile\":\"people-groups-grid\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></people-groups-grid>"
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./people-groups-grid/people-groups-grid.js\" integrity=\"sha384-mAWxn1zO4eldnWFVFDdfgQ42rGRmqwtBZTaNPI2rjsHMgFeSOwpQjT7XZt473BZy\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<people-groups-grid profile-config='{\"profile\":\"people-groups-grid\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></people-groups-grid>"
},
"instances": [
{
@ -1080,7 +1080,7 @@
"bundle": "regions-dashboard",
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
"output": "dx-maps/regions-dashboard/regions-dashboard.js",
"integrity": "sha384-uVOudl26tRNpGAtLu+3FeXljWQzvGmymxuj5Anx3gxsgrQ/AD/EtmsQtasaMOvHg",
"integrity": "sha384-ruxUgkhdb2OQPgfpdNgWuXmHE5UaMs6GzZt+URCPg7SjqSap+pCCsuCqOGNFfqJc",
"elements": [
"regions-dashboard"
],
@ -1103,7 +1103,7 @@
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
"embed": {
"iframe": "<iframe src=\"./regions-dashboard/region-dashboards/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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-uVOudl26tRNpGAtLu+3FeXljWQzvGmymxuj5Anx3gxsgrQ/AD/EtmsQtasaMOvHg\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
"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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-ruxUgkhdb2OQPgfpdNgWuXmHE5UaMs6GzZt+URCPg7SjqSap+pCCsuCqOGNFfqJc\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
}
},
{
@ -1119,7 +1119,7 @@
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
"embed": {
"iframe": "<iframe src=\"./regions-dashboard/regions-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-uVOudl26tRNpGAtLu+3FeXljWQzvGmymxuj5Anx3gxsgrQ/AD/EtmsQtasaMOvHg\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-ruxUgkhdb2OQPgfpdNgWuXmHE5UaMs6GzZt+URCPg7SjqSap+pCCsuCqOGNFfqJc\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
}
},
{
@ -1135,7 +1135,7 @@
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
"embed": {
"iframe": "<iframe src=\"./regions-dashboard/regions-mfe/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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-uVOudl26tRNpGAtLu+3FeXljWQzvGmymxuj5Anx3gxsgrQ/AD/EtmsQtasaMOvHg\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
"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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-ruxUgkhdb2OQPgfpdNgWuXmHE5UaMs6GzZt+URCPg7SjqSap+pCCsuCqOGNFfqJc\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
}
}
]

View file

@ -40,7 +40,7 @@
"bundle": "big-picture",
"scriptUrl": "./big-picture/big-picture.js",
"output": "dx-maps/big-picture/big-picture.js",
"integrity": "sha384-cxgYiMoVcPRRXImJt2ufLHEBTSJzFGMdiThT+LURZI/WwNUVYaI2tVgcwTPo67oC",
"integrity": "sha384-RDL00UKQPC2kUEELx1OYgC3TleLPIwSZODMUEFd5n5vPSRnFNEI28fgdrNTM9sNA",
"elements": [
"bp-big-picture",
"bp-research-header",
@ -65,7 +65,7 @@
"scriptUrl": "./big-picture/big-picture.js",
"embed": {
"iframe": "<iframe src=\"./big-picture/big-picture/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./big-picture/big-picture.js\" integrity=\"sha384-cxgYiMoVcPRRXImJt2ufLHEBTSJzFGMdiThT+LURZI/WwNUVYaI2tVgcwTPo67oC\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<bp-big-picture profile-config='{\"profile\":\"big-picture\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></bp-big-picture>"
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./big-picture/big-picture.js\" integrity=\"sha384-RDL00UKQPC2kUEELx1OYgC3TleLPIwSZODMUEFd5n5vPSRnFNEI28fgdrNTM9sNA\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<bp-big-picture profile-config='{\"profile\":\"big-picture\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></bp-big-picture>"
},
"instances": [
{
@ -233,7 +233,7 @@
"bundle": "dashboard-plus-grid",
"scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js",
"output": "dx-maps/dashboard-plus-grid/dashboard-plus-grid.js",
"integrity": "sha384-nBYRma6gYPnn265qKwT1JTo4U3q5x5afciFKxS8y7hMGIVrgdJQJy3b6yGni+Lfw",
"integrity": "sha384-/YTLq7mqJhfkrsCcZs2MAEyxi1f9zSpgaOlN6hKJZfT+AD9WhByaVrJLEI0WQLr5",
"elements": [
"dashboard-plus-grid"
],
@ -256,7 +256,7 @@
"scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js",
"embed": {
"iframe": "<iframe src=\"./dashboard-plus-grid/dashboard-plus-grid/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=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-nBYRma6gYPnn265qKwT1JTo4U3q5x5afciFKxS8y7hMGIVrgdJQJy3b6yGni+Lfw\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<dashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dashboard-plus-grid>"
"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=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-/YTLq7mqJhfkrsCcZs2MAEyxi1f9zSpgaOlN6hKJZfT+AD9WhByaVrJLEI0WQLr5\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<dashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dashboard-plus-grid>"
},
"instances": [
{
@ -902,7 +902,7 @@
"bundle": "people-groups-grid",
"scriptUrl": "./people-groups-grid/people-groups-grid.js",
"output": "dx-maps/people-groups-grid/people-groups-grid.js",
"integrity": "sha384-T5ROzZLd8Y7/fzG+28IjE8X2MntL0lG8j25FO1RtEGNxAx94Z0nRgglJziKIIOn+",
"integrity": "sha384-mAWxn1zO4eldnWFVFDdfgQ42rGRmqwtBZTaNPI2rjsHMgFeSOwpQjT7XZt473BZy",
"elements": [
"people-groups-grid"
],
@ -921,7 +921,7 @@
"scriptUrl": "./people-groups-grid/people-groups-grid.js",
"embed": {
"iframe": "<iframe src=\"./people-groups-grid/people-groups-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./people-groups-grid/people-groups-grid.js\" integrity=\"sha384-T5ROzZLd8Y7/fzG+28IjE8X2MntL0lG8j25FO1RtEGNxAx94Z0nRgglJziKIIOn+\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<people-groups-grid profile-config='{\"profile\":\"people-groups-grid\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></people-groups-grid>"
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./people-groups-grid/people-groups-grid.js\" integrity=\"sha384-mAWxn1zO4eldnWFVFDdfgQ42rGRmqwtBZTaNPI2rjsHMgFeSOwpQjT7XZt473BZy\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<people-groups-grid profile-config='{\"profile\":\"people-groups-grid\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></people-groups-grid>"
},
"instances": [
{
@ -1080,7 +1080,7 @@
"bundle": "regions-dashboard",
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
"output": "dx-maps/regions-dashboard/regions-dashboard.js",
"integrity": "sha384-uVOudl26tRNpGAtLu+3FeXljWQzvGmymxuj5Anx3gxsgrQ/AD/EtmsQtasaMOvHg",
"integrity": "sha384-ruxUgkhdb2OQPgfpdNgWuXmHE5UaMs6GzZt+URCPg7SjqSap+pCCsuCqOGNFfqJc",
"elements": [
"regions-dashboard"
],
@ -1103,7 +1103,7 @@
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
"embed": {
"iframe": "<iframe src=\"./regions-dashboard/region-dashboards/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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-uVOudl26tRNpGAtLu+3FeXljWQzvGmymxuj5Anx3gxsgrQ/AD/EtmsQtasaMOvHg\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
"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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-ruxUgkhdb2OQPgfpdNgWuXmHE5UaMs6GzZt+URCPg7SjqSap+pCCsuCqOGNFfqJc\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
}
},
{
@ -1119,7 +1119,7 @@
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
"embed": {
"iframe": "<iframe src=\"./regions-dashboard/regions-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-uVOudl26tRNpGAtLu+3FeXljWQzvGmymxuj5Anx3gxsgrQ/AD/EtmsQtasaMOvHg\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-ruxUgkhdb2OQPgfpdNgWuXmHE5UaMs6GzZt+URCPg7SjqSap+pCCsuCqOGNFfqJc\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
}
},
{
@ -1135,7 +1135,7 @@
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
"embed": {
"iframe": "<iframe src=\"./regions-dashboard/regions-mfe/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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-uVOudl26tRNpGAtLu+3FeXljWQzvGmymxuj5Anx3gxsgrQ/AD/EtmsQtasaMOvHg\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
"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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-ruxUgkhdb2OQPgfpdNgWuXmHE5UaMs6GzZt+URCPg7SjqSap+pCCsuCqOGNFfqJc\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
}
}
]

File diff suppressed because one or more lines are too long

View file

@ -32,7 +32,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <people-groups-grid> custom element. -->
<script src="../../people-groups-grid.js" integrity="sha384-T5ROzZLd8Y7/fzG+28IjE8X2MntL0lG8j25FO1RtEGNxAx94Z0nRgglJziKIIOn+" crossorigin="anonymous"></script>
<script src="../../people-groups-grid.js" integrity="sha384-mAWxn1zO4eldnWFVFDdfgQ42rGRmqwtBZTaNPI2rjsHMgFeSOwpQjT7XZt473BZy" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

View file

@ -32,7 +32,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <people-groups-grid> custom element. -->
<script src="../people-groups-grid.js" integrity="sha384-T5ROzZLd8Y7/fzG+28IjE8X2MntL0lG8j25FO1RtEGNxAx94Z0nRgglJziKIIOn+" crossorigin="anonymous"></script>
<script src="../people-groups-grid.js" integrity="sha384-mAWxn1zO4eldnWFVFDdfgQ42rGRmqwtBZTaNPI2rjsHMgFeSOwpQjT7XZt473BZy" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

View file

@ -32,7 +32,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <people-groups-grid> custom element. -->
<script src="../../people-groups-grid.js" integrity="sha384-T5ROzZLd8Y7/fzG+28IjE8X2MntL0lG8j25FO1RtEGNxAx94Z0nRgglJziKIIOn+" crossorigin="anonymous"></script>
<script src="../../people-groups-grid.js" integrity="sha384-mAWxn1zO4eldnWFVFDdfgQ42rGRmqwtBZTaNPI2rjsHMgFeSOwpQjT7XZt473BZy" 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 <regions-dashboard> custom element. -->
<script src="../regions-dashboard.js" integrity="sha384-uVOudl26tRNpGAtLu+3FeXljWQzvGmymxuj5Anx3gxsgrQ/AD/EtmsQtasaMOvHg" crossorigin="anonymous"></script>
<script src="../regions-dashboard.js" integrity="sha384-ruxUgkhdb2OQPgfpdNgWuXmHE5UaMs6GzZt+URCPg7SjqSap+pCCsuCqOGNFfqJc" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

File diff suppressed because one or more lines are too long

View file

@ -32,7 +32,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <regions-dashboard> custom element. -->
<script src="../regions-dashboard.js" integrity="sha384-uVOudl26tRNpGAtLu+3FeXljWQzvGmymxuj5Anx3gxsgrQ/AD/EtmsQtasaMOvHg" crossorigin="anonymous"></script>
<script src="../regions-dashboard.js" integrity="sha384-ruxUgkhdb2OQPgfpdNgWuXmHE5UaMs6GzZt+URCPg7SjqSap+pCCsuCqOGNFfqJc" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

View file

@ -47,7 +47,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <regions-dashboard> custom element. -->
<script src="../regions-dashboard.js" integrity="sha384-uVOudl26tRNpGAtLu+3FeXljWQzvGmymxuj5Anx3gxsgrQ/AD/EtmsQtasaMOvHg" crossorigin="anonymous"></script>
<script src="../regions-dashboard.js" integrity="sha384-ruxUgkhdb2OQPgfpdNgWuXmHE5UaMs6GzZt+URCPg7SjqSap+pCCsuCqOGNFfqJc" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order: