From 5905de8e30655bba6dec224eb36fb7df51dd528f Mon Sep 17 00:00:00 2001 From: doxa-maps-88655c70 <88627970+doxa-maps-88655c70@users.noreply.github.com> Date: Thu, 24 Sep 2026 16:38:52 +0000 Subject: [PATCH 1/4] facet gate: green 1 run in 4, and the variance is the dev server's MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Re-ran the unwired-gate census from last tick. check:facet-changes-map failed with a clean verdict line, which looked like a real finding. It was not — it is flaky: PASS, FAIL, FAIL, FAIL across four consecutive runs, failing with "the map never populated after 90s". Against the BUILT tree it passes: twice in the first check, then three more times through the new script entry. Five for five. The product is fine. A flaky gate is worse than a failing one. It teaches you to re-run until green, which is how a real red later gets dismissed as "just the flake". The cause is the default target. A dev page load pulls 88 unbundled module requests against the built leaf's 3, and Vite compiles them on demand, so with several agents working the same box the wait this gate ALREADY retries three times at 90s can still lose. Raising the timeout is the wrong fix for exactly that reason: it is not one slow moment, it is contention. The dev default is NOT changed. Its header gives a sound reason — the dev surface always reflects current source — and another agent may be relying on it for hand-running uncommitted work. Instead the flakiness, its cause and the deterministic invocation are recorded on the script, and check:facet-changes-map:built makes the built-tree run a command rather than something to remember. Also recorded why this gate is not wave-wired: a step green 1 run in 4 would train everyone to ignore the wave. One dead end worth recording. I tried to reverse-engineer the wait by locating the map instance myself and got "never found" on BOTH surfaces — my selector was wrong, not the product. The gate has working discovery of its own; I stopped probing and used its result, which was already decisive. --- internal/check-facet-changes-map.mjs | 18 ++++++++++++++++++ package.json | 1 + 2 files changed, 19 insertions(+) diff --git a/internal/check-facet-changes-map.mjs b/internal/check-facet-changes-map.mjs index c50bab114..3e68ba1c3 100644 --- a/internal/check-facet-changes-map.mjs +++ b/internal/check-facet-changes-map.mjs @@ -51,6 +51,24 @@ import { chromium } from 'playwright' // Defaults to the DEV server, because this gate drives a live interaction and the dev surface is // the one that always reflects current source. Point BASE_URL/PROBE_PATH at the built tree // (`bun run serve` on 4173) to run it against a built leaf or the cap-5 shell. +// +// ⚠ THE DEV DEFAULT IS FLAKY UNDER LOAD, AND A FLAKY GATE IS WORSE THAN A FAILING ONE — it +// teaches you to re-run until green. MEASURED 2026-09-24 on a box with several agents working: +// dev 5173 -> 1 PASS, 3 FAIL in four consecutive runs ("the map never populated after 90s") +// built 4173 -> PASS, PASS +// The product is fine; the VARIANCE is the dev server's. A dev page load pulls 88 unbundled +// module requests against the built leaf's 3, and Vite compiles them on demand — so the wait +// this gate already retries THREE TIMES at 90s can still lose. Raising the timeout is the wrong +// fix for the same reason: it is not one slow moment, it is contention. +// +// SO: when you need a trustworthy answer rather than a quick one, run it against the BUILT tree: +// BASE_URL=http://127.0.0.1:4173 \ +// PROBE_PATH=/doxa-maps/research-dashboard/research-dashboard/index.html \ +// node internal/check-facet-changes-map.mjs +// The built tree can be stale — that is the trade — but it is DETERMINISTIC, which is what a gate +// needs. The dev default is kept because it is right for hand-running against uncommitted source. +// This is also why the gate is NOT wired into a wave: a wave step that is green 1 run in 4 would +// train everyone to ignore the wave. const BASE = process.env.BASE_URL || 'http://127.0.0.1:5173' const PATH_ = process.env.PROBE_PATH || '/' const TAB = process.env.PROBE_TAB || 'research-dashboard' diff --git a/package.json b/package.json index 2a92f4f43..24f4e9d56 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,7 @@ "check:facet-one-field": "node internal/check-facet-one-field.mjs # ONE AXIS = ONE CONTROL-REACHABLE FACET. Asserts on the PARTITION each facet induces over the rows, NOT on which r. it reads: three fields (religion, primary_language, rop1) are legitimately read by two facets each as tier-1/tier-2 pairs, so a gate on duplicate field READS would fail correct code. Scoped to facets a user can actually select (rail + dropdowns + charts), because a search-only projection sharing a partition is fine until it becomes a control. run check:facet-one-field:self-test for the NEGATIVE test.", "check:facet-one-field:self-test": "node internal/check-facet-one-field.mjs --self-test", "check:facet-changes-map": "node internal/check-facet-changes-map.mjs # a facet selection must CHANGE THE DOTS — and the dots must SAY what they mean. Asserts (1) the rd-bubbles feature set changes by count AND identity, (2) every surviving dot satisfies the selected level, (3) while a prayer filter is active circle-color is a DATA-DRIVEN EXPRESSION reading peoplePraying, not a flat literal. Assertion 3 is the one that matters: the prayer filter ALREADY narrowed 2107->689 correctly while the Driver reported it broken, because every dot painted the same orange. Browser gate (needs `bun run dev` on 5173, or BASE_URL/PROBE_PATH at a served tree), so NOT in build:unlocked. run the `check:facet-changes-map:self-test` script for the NEGATIVE test.", + "check:facet-changes-map:built": "sh -c 'BASE_URL=${BASE_URL:-http://127.0.0.1:4173} PROBE_PATH=${PROBE_PATH:-/doxa-maps/research-dashboard/research-dashboard/index.html} exec node internal/check-facet-changes-map.mjs' # the SAME gate against the BUILT tree instead of the dev server. Measured 2026-09-24: the dev default is 1 PASS / 3 FAIL in four runs on a busy box (88 unbundled module requests vs the built leaf's 3), while the built tree passes deterministically. Use this when you need a trustworthy answer; use the dev default when checking uncommitted source.", "check:facet-changes-map:self-test": "node internal/check-facet-changes-map.mjs --self-test # reverts the fix IN THE LIVE PAGE and requires the gate to FAIL. SELF_TEST_MODE=colour (default, isolates the colour assertion — the reported bug) | props | both | frozen (blocks the source update, isolating the set assertion). All four modes verified caught.", "check:heartbeat": "node internal/check-heartbeat-threshold.mjs # the HEARTBEAT ZONE threshold (the choropleth's top bin) must come from config AND the shipped config must still render today's ramp. Two sides: (B) a configured threshold must MOVE the edge — catches re-hard-coding; (A2) dashboard.config.js's own map.* must still resolve to 5/20/60/150/Infinity — catches the shipped default silently changing. A2 was MISSING at first and heartbeatThreshold:999 shipped past this gate printing 'default ramp unchanged'. A grep for '150' cannot do either job: it false-positives on the legitimate default and false-negatives on a re-hard-coding at 200. run check:heartbeat:self-test for the NEGATIVE tests (3 cases).", "check:heartbeat:self-test": "node internal/check-heartbeat-threshold.mjs --self-test # THREE regression cases, each required to fire ITS OWN assertion: [literal] resolver replaced by the old hard-coded array -> B; [shipped-default] dashboard.config.js heartbeatThreshold changed -> A2; [shipped-mode] heartbeatMode flipped to quantile -> A2. Poisons IN MEMORY, never the file. Testing that the FEATURE works is not testing that the REGRESSION is caught — this gate shipped with only the first and missed the second.", From ee4b7ed4e9e438bd47f9e90d69c2583bd1272d90 Mon Sep 17 00:00:00 2001 From: doxa-maps-88655c70 <88627970+doxa-maps-88655c70@users.noreply.github.com> Date: Thu, 24 Sep 2026 16:44:44 +0000 Subject: [PATCH 2/4] Vendor Figtree in place of Brandon Grotesque, chosen by measurement MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Brandon Grotesque is commercial and must not ship in a public giveaway, so the two rules that named it now ask for Figtree. It is vendored the way the other three families are — woff2 per subset under public/assets/fonts, an OFL licence beside it, registered at document level because @font-face is document-scoped. The choice is measured, not a matter of taste. Their live page really does load Brandon_Grotesque_medium.woff2, and Brandon sets "FULL PROFILE" at 128.00px at 500/19.5312px. Nineteen libre grotesques were measured the same way: Figtree is 126, Nunito Sans 130, Barlow 125, Inter 134, Archivo 135, Poppins 119, Montserrat 148. Figtree is the closest at two pixels. Worth recording because the old scorecard has it backwards: 134.33 is the generic sans fallback, not Brandon. The number to match was 128 all along. --- library/composables/useDocumentFont.js | 10 ++ .../regions-dashboard/region-dashboards.vue | 6 +- .../regions-dashboard/regions-list.vue | 6 +- .../regions-dashboard/src/UupgsList.vue | 11 +- public/assets/fonts/figtree/LICENSE | 100 ++++++++++++++++++ .../fonts/figtree/figtree-500-latin-ext.woff2 | Bin 0 -> 6156 bytes .../fonts/figtree/figtree-500-latin.woff2 | Bin 0 -> 11432 bytes 7 files changed, 129 insertions(+), 4 deletions(-) create mode 100644 public/assets/fonts/figtree/LICENSE create mode 100644 public/assets/fonts/figtree/figtree-500-latin-ext.woff2 create mode 100644 public/assets/fonts/figtree/figtree-500-latin.woff2 diff --git a/library/composables/useDocumentFont.js b/library/composables/useDocumentFont.js index 5a9e22136..86c3e07d2 100644 --- a/library/composables/useDocumentFont.js +++ b/library/composables/useDocumentFont.js @@ -81,6 +81,16 @@ export const BEBAS_NEUE_FACES = [ // Google's own unicode-ranges (css2 v24) so the subset split behaves as it does on their site. const POPPINS_LATIN = 'U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD' const POPPINS_LATIN_EXT = 'U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF' +// FIGTREE — the free stand-in for Brandon Grotesque, which is COMMERCIAL and must not ship in a +// public giveaway (Driver decision 2026-09-24). Chosen by measurement: at 500/19.5312px it renders +// their button text at 126px against Brandon's 128px on live doxa.life, the closest of 19 libre +// grotesques; Inter was +6 and Archivo +7. Weight 500 only — that is the single weight the two +// rules that named Brandon actually use. +export const FIGTREE_FACES = [ + { weight: '500', src: 'fonts/figtree/figtree-500-latin.woff2', unicodeRange: POPPINS_LATIN }, + { weight: '500', src: 'fonts/figtree/figtree-500-latin-ext.woff2', unicodeRange: POPPINS_LATIN_EXT }, +] + export const POPPINS_FACES = [ { weight: '400', src: 'fonts/poppins/poppins-400-latin.woff2', unicodeRange: POPPINS_LATIN }, { weight: '400', src: 'fonts/poppins/poppins-400-latin-ext.woff2', unicodeRange: POPPINS_LATIN_EXT }, diff --git a/plugin-designs/regions-dashboard/region-dashboards.vue b/plugin-designs/regions-dashboard/region-dashboards.vue index 1dcf51650..3e9acb701 100644 --- a/plugin-designs/regions-dashboard/region-dashboards.vue +++ b/plugin-designs/regions-dashboard/region-dashboards.vue @@ -28,7 +28,7 @@ import { useShadowStyles } from '@map/composables/useShadowStyles.js' // house pattern (doxa-simple-map.vue:18, :246, :1346) — an EMBEDDED element must not reach for // document.documentElement.dir, which belongs to the host page. import { RTL_LOCALES } from '@map/i18n/index.js' -import { useDocumentFont, BEBAS_NEUE_FACES, POPPINS_FACES } from '@map/composables/useDocumentFont.js' +import { useDocumentFont, BEBAS_NEUE_FACES, POPPINS_FACES, FIGTREE_FACES } from '@map/composables/useDocumentFont.js' import FilterDropdown from '@map/components/search/FilterDropdown.vue' import UupgsList from './src/UupgsList.vue' // Their strings, via their own English keys (see src/useRegionsI18n.js). The goal sentences, @@ -97,6 +97,10 @@ useDocumentFont('Bebas Neue', BEBAS_NEUE_FACES, assetsBase.value) // computed-style diff, which read 68/68 while our body text was a system fallback 5.5% // wider per glyph. Registered the same way and for the same reason as Bebas. useDocumentFont('Poppins', POPPINS_FACES, assetsBase.value) +// Figtree stands in for Brandon Grotesque, which is commercial and must not ship in a public +// giveaway (Driver, 2026-09-24). @font-face is DOCUMENT-scoped, so it registers here beside +// the other two rather than inside the shadow root that uses it. +useDocumentFont('Figtree', FIGTREE_FACES, assetsBase.value) // ── state ─────────────────────────────────────────────────────────────────── const { t, tf , locale } = useRegionsI18n() diff --git a/plugin-designs/regions-dashboard/regions-list.vue b/plugin-designs/regions-dashboard/regions-list.vue index 617611f1e..b790fd481 100644 --- a/plugin-designs/regions-dashboard/regions-list.vue +++ b/plugin-designs/regions-dashboard/regions-list.vue @@ -38,7 +38,7 @@ import { useRegionsI18n } from './src/useRegionsI18n.js' // document.documentElement.dir, which belongs to the host page. import { RTL_LOCALES } from '@map/i18n/index.js' import { useI18n } from 'vue-i18n' -import { useDocumentFont, BEBAS_NEUE_FACES, POPPINS_FACES } from '@map/composables/useDocumentFont.js' +import { useDocumentFont, BEBAS_NEUE_FACES, POPPINS_FACES, FIGTREE_FACES } from '@map/composables/useDocumentFont.js' import { summarizeRegions, PEOPLE_GROUP_LIST_FIELDS } from '@map/utils/countries-meta.js' // DX-life's spacing/type scales under THEIR token names. Prepended to this // component's shadow CSS so every var() below resolves inside the shadow root. @@ -119,6 +119,10 @@ useDocumentFont('Bebas Neue', BEBAS_NEUE_FACES, assetsBase.value) // computed-style diff, which read 68/68 while our body text was a system fallback 5.5% // wider per glyph. Registered the same way and for the same reason as Bebas. useDocumentFont('Poppins', POPPINS_FACES, assetsBase.value) +// Figtree stands in for Brandon Grotesque, which is commercial and must not ship in a public +// giveaway (Driver, 2026-09-24). @font-face is DOCUMENT-scoped, so it registers here beside +// the other two rather than inside the shadow root that uses it. +useDocumentFont('Figtree', FIGTREE_FACES, assetsBase.value) // ── state ─────────────────────────────────────────────────────────────────── const regions = ref([]) diff --git a/plugin-designs/regions-dashboard/src/UupgsList.vue b/plugin-designs/regions-dashboard/src/UupgsList.vue index d6f6d36a3..c7e5aa1f1 100644 --- a/plugin-designs/regions-dashboard/src/UupgsList.vue +++ b/plugin-designs/regions-dashboard/src/UupgsList.vue @@ -407,7 +407,14 @@ useShadowStyles( ' box-sizing:border-box; padding:10px var(--spacing-2xl); color:#f3f3f1; background:#92b195;' + ' border-radius:100px; border:1px solid transparent; line-height:1; text-decoration:none;' + ' text-transform:uppercase; font-size:var(--font-size-md);' + - ' font-family:"Brandon Grotesque",Poppins,-apple-system,"Segoe UI",sans-serif;' + + // THEIR FAMILY IS "Brandon Grotesque", WHICH IS COMMERCIAL — the one substitution RULE 1 + // allows, and the Driver ruled it must not ship in a public giveaway (2026-09-24). + // Figtree chosen by MEASUREMENT, not by name: on live doxa.life their button renders + // 'FULL PROFILE' at 128.00px in Brandon at 500/19.5312px. Of 19 libre grotesques measured + // the same way, Figtree is 126 (-2.00) — closest — against Inter 134, Archivo 135, + // Poppins 119, Montserrat 148. (The 134.33 in the old scorecard is the GENERIC SANS + // fallback, not Brandon; their page really does load Brandon_Grotesque_medium.woff2.) + ' font-family:Figtree,Poppins,-apple-system,"Segoe UI",sans-serif;' + ' transition:background-color .3s ease, color .3s ease; cursor:pointer; }' + '.uupg__more-button:hover{ background:#2a332a; color:#f3f3f1; }' + // their 576px reflow: the photo and the header stop sharing a row @@ -420,7 +427,7 @@ useShadowStyles( '.ul-more{ margin-inline:auto; margin-top:var(--spacing-2xl); display:block; width:fit-content;' + ' padding:10px var(--spacing-2xl); color:#f3f3f1; background:#92b195; border-radius:100px;' + ' border:1px solid transparent; line-height:1; text-transform:uppercase; font-size:var(--font-size-md);' + - ' font-family:"Brandon Grotesque",Poppins,-apple-system,"Segoe UI",sans-serif; cursor:pointer; }' + + ' font-family:Figtree,Poppins,-apple-system,"Segoe UI",sans-serif; cursor:pointer; }' + '.ul-more:hover{ background:#2a332a; }', 'uupgs-list' ) diff --git a/public/assets/fonts/figtree/LICENSE b/public/assets/fonts/figtree/LICENSE new file mode 100644 index 000000000..de97ffce2 --- /dev/null +++ b/public/assets/fonts/figtree/LICENSE @@ -0,0 +1,100 @@ +Figtree — SIL Open Font License, Version 1.1 +Designer: Erik D. Kennedy. Distributed via Google Fonts. +Vendored as the free stand-in for Brandon Grotesque (commercial), by Driver decision +2026-09-24. Chosen by MEASUREMENT, not by name: at 500/19.5312px Figtree renders +'FULL PROFILE' at 126px against Brandon's 128px on live doxa.life — the closest of 19 +libre grotesques tested. See _probe-glyph-width.mjs. + +Copyright 2022 The Figtree Project Authors (https://github.com/erikdkennedy/figtree) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/public/assets/fonts/figtree/figtree-500-latin-ext.woff2 b/public/assets/fonts/figtree/figtree-500-latin-ext.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..4cf8442045976254c6967813ac3e4c76b47c118e GIT binary patch literal 6156 zcmV+n81v_MPew8T0RR9102mAa5C8xG05_Nb02iqM0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/public/assets/fonts/figtree/figtree-500-latin.woff2 b/public/assets/fonts/figtree/figtree-500-latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..6ab55883217ae501e820fcfaa7d1d383adf2af3f GIT binary patch literal 11432 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 Date: Thu, 24 Sep 2026 16:44:45 +0000 Subject: [PATCH 3/4] Carry the region colours onto the landmasses, in the chooser only MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The pins already paint by region; the polygons underneath were flat brand grey. They now take the same seven hues, so the chooser reads as seven regions at a glance instead of one grey world with coloured dots. The shared expression could not be reused as-is: it matches on a region property that belongs to our own geojson, while the boundary tileset's features carry iso_3166_1_alpha_3 and know nothing about WAGF regions. So this bridges country code to region to the same palette — no second palette, which is what the one-palette gate exists to prevent. Their fill is 0.12, near-invisible, which is right for a single highlighted country; the chooser is ours and carries 0.42 so the colours read. Cloned pages keep 0.12 and the flat fill exactly, asserted both ways. --- .../src/RegionCountryMap.vue | 42 ++++++- public/doxa-maps/assets/fonts/figtree/LICENSE | 100 +++++++++++++++ .../fonts/figtree/figtree-500-latin-ext.woff2 | Bin 0 -> 6156 bytes .../fonts/figtree/figtree-500-latin.woff2 | Bin 0 -> 11432 bytes public/doxa-maps/index.html | 2 +- public/doxa-maps/manifest.json | 8 +- .../region-dashboards/index.html | 2 +- .../regions-dashboard/regions-dashboard.js | 118 +++++++++--------- .../regions-dashboard/regions-list/index.html | 2 +- .../regions-dashboard/regions-mfe/index.html | 2 +- 10 files changed, 207 insertions(+), 69 deletions(-) create mode 100644 public/doxa-maps/assets/fonts/figtree/LICENSE create mode 100644 public/doxa-maps/assets/fonts/figtree/figtree-500-latin-ext.woff2 create mode 100644 public/doxa-maps/assets/fonts/figtree/figtree-500-latin.woff2 diff --git a/plugin-designs/regions-dashboard/src/RegionCountryMap.vue b/plugin-designs/regions-dashboard/src/RegionCountryMap.vue index 65f5c28d4..51a9d09f8 100644 --- a/plugin-designs/regions-dashboard/src/RegionCountryMap.vue +++ b/plugin-designs/regions-dashboard/src/RegionCountryMap.vue @@ -33,7 +33,7 @@ import { useShadowStyles } from '@map/composables/useShadowStyles.js' // The region palette comes from the shared strategy, never from a table in here: // check:one-palette exists because a private palette in a consumer is what once made two // surfaces disagree about what a colour meant. -import { applyColor as regionColorExpression } from '@map/colors/wagf-region.js' +import { applyColor as regionColorExpression, PALETTE as REGION_PALETTE, getColor as regionColorFor } from '@map/colors/wagf-region.js' const emit = defineEmits(['pick-country']) @@ -129,6 +129,34 @@ const { map, isMapReady, initializeMap, destroy } = useMapInstance({ showEdgeBorders: true, }) +// THE REGION COLOURS, CARRIED ONTO THE LANDMASSES (Driver card, 2026-09-24). +// The pins already paint by region via the shared expression (regionColorExpression, below at the +// pin layer). The polygons cannot use that expression directly: it matches on ['get','region'], +// which is a property of OUR geojson, while the boundary tileset's features carry +// `iso_3166_1_alpha_3` and know nothing about WAGF regions. So this builds the bridge — country +// code -> that country's region -> THE SAME PALETTE. No second palette, which is exactly what +// check:one-palette exists to prevent. +// The library's fallback, taken from the library itself: getColor({}) resolves an unknown region +// to DEFAULT_COLOR. That constant is not exported, and adding an export to a file every bundle +// imports is not worth one colour (RULE 2). +const REGION_DEFAULT = regionColorFor({}) +const regionFillExpression = computed(() => { + const byCode = new Map() + for (const p of props.points) { + if (!p || !p.code || !p.region) continue + if (!byCode.has(p.code)) byCode.set(p.code, p.region) + } + if (!byCode.size) return REGION_DEFAULT + const match = ['match', ['get', 'iso_3166_1_alpha_3']] + for (const [code, region] of byCode) match.push(code, REGION_PALETTE[region] || REGION_DEFAULT) + match.push(REGION_DEFAULT) + return match +}) +// Their fill is 0.12 — near-invisible, which is right for a single highlighted country on a +// CLONED page. The chooser is ours and its whole job is to read AS seven regions at a glance, so +// it carries more. The cloned pages keep 0.12 exactly. +const FILL_OPACITY_REGION = 0.42 + const SRC_PINS = 'rcm-people-groups' const SRC_COUNTRIES = 'rcm-country-boundaries' @@ -225,7 +253,10 @@ function addLayers() { m.addLayer({ id: 'rcm-focus-fill', type: 'fill', source: SRC_COUNTRIES, ...srcLayer, filter: countryFilter(), - paint: { 'fill-color': C.brand, 'fill-opacity': 0.12 }, + paint: { + 'fill-color': props.colorMode === 'region' ? regionFillExpression.value : C.brand, + 'fill-opacity': props.colorMode === 'region' ? FILL_OPACITY_REGION : 0.12, + }, }) m.addLayer({ id: 'rcm-focus-outline', type: 'line', source: SRC_COUNTRIES, @@ -321,6 +352,13 @@ function applySubject() { for (const id of ['rcm-focus-fill', 'rcm-focus-outline']) { if (m.getLayer(id)) m.setFilter(id, countryFilter()) } + // The fill follows the mode too, not just the filter: switching between the chooser and a + // cloned page must repaint the landmasses, or the region colours would leak onto their pages. + if (m.getLayer('rcm-focus-fill')) { + const byRegion = props.colorMode === 'region' + m.setPaintProperty('rcm-focus-fill', 'fill-color', byRegion ? regionFillExpression.value : C.brand) + m.setPaintProperty('rcm-focus-fill', 'fill-opacity', byRegion ? FILL_OPACITY_REGION : 0.12) + } // PROJECTION follows the mode, and only the chooser changes it. // Mapbox v3 defaults to the GLOBE below about zoom 6, so a world-view chooser rendered as a // small sphere floating in a 1200x780 frame — most of the surface empty, the regions tiny. diff --git a/public/doxa-maps/assets/fonts/figtree/LICENSE b/public/doxa-maps/assets/fonts/figtree/LICENSE new file mode 100644 index 000000000..de97ffce2 --- /dev/null +++ b/public/doxa-maps/assets/fonts/figtree/LICENSE @@ -0,0 +1,100 @@ +Figtree — SIL Open Font License, Version 1.1 +Designer: Erik D. Kennedy. Distributed via Google Fonts. +Vendored as the free stand-in for Brandon Grotesque (commercial), by Driver decision +2026-09-24. Chosen by MEASUREMENT, not by name: at 500/19.5312px Figtree renders +'FULL PROFILE' at 126px against Brandon's 128px on live doxa.life — the closest of 19 +libre grotesques tested. See _probe-glyph-width.mjs. + +Copyright 2022 The Figtree Project Authors (https://github.com/erikdkennedy/figtree) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/public/doxa-maps/assets/fonts/figtree/figtree-500-latin-ext.woff2 b/public/doxa-maps/assets/fonts/figtree/figtree-500-latin-ext.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..4cf8442045976254c6967813ac3e4c76b47c118e GIT binary patch literal 6156 zcmV+n81v_MPew8T0RR9102mAa5C8xG05_Nb02iqM0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/public/doxa-maps/assets/fonts/figtree/figtree-500-latin.woff2 b/public/doxa-maps/assets/fonts/figtree/figtree-500-latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..6ab55883217ae501e820fcfaa7d1d383adf2af3f GIT binary patch literal 11432 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.FORGE = {"mode":"built","scope":"root","manifestUrl":"./manifest.json","bundle":null,"hrefBase":"./"}; /* file:// contract: manifest inlined at build — no fetch needed to render. */ - window.FORGE.manifest = {"schema":"doxa-maps-manifest@1","generatedFrom":"plugin-designs/*/*.vue","embedBase":".","bundleCount":22,"profileCount":35,"bundles":[{"bundle":"all-people-groups","scriptUrl":"./all-people-groups/all-people-groups.js","output":"doxa-maps/all-people-groups/all-people-groups.js","integrity":"sha384-3kskcN7GLnCNNOrJINJt4n5ERXa0qpwyRNcuVuw4++2KzU0LwGYnLW3aepEu8jDg","elements":["all-people-groups"],"profiles":[{"profile":"all-people-groups","file":"all-people-groups.vue","description":"All 12,379 people groups (peoplegroups.org) in four colors — reached,","element":"all-people-groups","type":"single","isMap":true,"iframeUrl":"./all-people-groups/all-people-groups/index.html","scriptUrl":"./all-people-groups/all-people-groups.js","embed":{"iframe":"\u003ciframe src=\"./all-people-groups/all-people-groups/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./all-people-groups/all-people-groups.js\" integrity=\"sha384-3kskcN7GLnCNNOrJINJt4n5ERXa0qpwyRNcuVuw4++2KzU0LwGYnLW3aepEu8jDg\" crossorigin=\"anonymous\">\u003c/script>\n\u003call-people-groups profile-config='{\"profile\":\"all-people-groups\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/all-people-groups>"},"bundle":"all-people-groups"}]},{"bundle":"big-picture","scriptUrl":"./big-picture/big-picture.js","output":"doxa-maps/big-picture/big-picture.js","integrity":"sha384-3I1mBK8C0GOMsEJyYTyztMqFnvn4EGg3F2KFhYSVie+o2YKplcSFcOxWI4L2+cmr","elements":["bp-big-picture","bp-research-header","people-groups-grid"],"composes":["bp-research-header","people-groups-grid"],"profiles":[{"profile":"big-picture","file":"big-picture.vue","description":"The Cat-4 composite that PAIRS the two real capability elements of the","element":"bp-big-picture","type":"nested-elements-mfe","isMap":false,"iframeUrl":"./big-picture/big-picture/index.html","scriptUrl":"./big-picture/big-picture.js","embed":{"iframe":"\u003ciframe src=\"./big-picture/big-picture/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./big-picture/big-picture.js\" integrity=\"sha384-3I1mBK8C0GOMsEJyYTyztMqFnvn4EGg3F2KFhYSVie+o2YKplcSFcOxWI4L2+cmr\" crossorigin=\"anonymous\">\u003c/script>\n\u003cbp-big-picture profile-config='{\"profile\":\"big-picture\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/bp-big-picture>"},"instances":[{"id":"big-picture","title":"Big Picture — research header ↔ people-groups grid (composite)","apiBaseUrl":"","props":{"profile":"big-picture","provider":"maplibre","instanceId":"bp-big-picture"},"element":"bp-big-picture","iframeUrl":"./big-picture/big-picture/big-picture/index.html","embed":{"iframe":"\u003ciframe src=\"./big-picture/big-picture/big-picture/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"frontier","title":"Big Picture — frontier accent","apiBaseUrl":"","props":{"profile":"big-picture","provider":"maplibre","instanceId":"bp-big-picture-frontier","accent":"#22d3ee","title":"Big Picture — Frontier Focus"},"element":"bp-big-picture","iframeUrl":"./big-picture/big-picture/frontier/index.html","embed":{"iframe":"\u003ciframe src=\"./big-picture/big-picture/frontier/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}],"bundle":"big-picture"}]},{"bundle":"cities-internet","scriptUrl":"./cities-internet/cities-internet.js","output":"doxa-maps/cities-internet/cities-internet.js","integrity":"sha384-b7gkA5+oZ8azx5oSxl4c985U9gcOFyNAh3TfhJd4FSUX4XawU0927HvYSFRTNzpr","elements":["cities-internet-map"],"profiles":[{"profile":"connectivity-list","file":"connectivity-list.vue","description":"Countries where DX people groups live, grouped by region, showing measured internet penetration","element":"cities-internet-map","type":"single","isMap":false,"iframeUrl":"./cities-internet/connectivity-list/index.html","scriptUrl":"./cities-internet/cities-internet.js","embed":{"iframe":"\u003ciframe src=\"./cities-internet/connectivity-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-b7gkA5+oZ8azx5oSxl4c985U9gcOFyNAh3TfhJd4FSUX4XawU0927HvYSFRTNzpr\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccities-internet-map profile-config='{\"profile\":\"connectivity-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/cities-internet-map>"}},{"profile":"connectivity-map","file":"connectivity-map.vue","description":"Every country shaded by measured internet penetration, with its named carriers and dominant","element":"cities-internet-map","type":"single","isMap":true,"iframeUrl":"./cities-internet/connectivity-map/index.html","scriptUrl":"./cities-internet/cities-internet.js","embed":{"iframe":"\u003ciframe src=\"./cities-internet/connectivity-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-b7gkA5+oZ8azx5oSxl4c985U9gcOFyNAh3TfhJd4FSUX4XawU0927HvYSFRTNzpr\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccities-internet-map profile-config='{\"profile\":\"connectivity-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/cities-internet-map>"}},{"profile":"data-tables","file":"data-tables.vue","description":"Four validated research tables, one tab each, with sortable and filterable columns, CSV and JSON","element":"cities-internet-map","type":"single","isMap":false,"iframeUrl":"./cities-internet/data-tables/index.html","scriptUrl":"./cities-internet/cities-internet.js","embed":{"iframe":"\u003ciframe src=\"./cities-internet/data-tables/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-b7gkA5+oZ8azx5oSxl4c985U9gcOFyNAh3TfhJd4FSUX4XawU0927HvYSFRTNzpr\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccities-internet-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/cities-internet-map>"}}]},{"bundle":"country-posters","scriptUrl":"./country-posters/country-posters.js","output":"doxa-maps/country-posters/country-posters.js","integrity":"sha384-+uSJg/LdhuPzecJG34oeevbtghdX7Pqaop+MyNzs4tyqd3/1frmrwQimIJgcv/yo","elements":["country-posters-map"],"composes":["country-posters/country-poster-wall","country-posters/countries-map"],"profiles":[{"profile":"countries-map","file":"countries-map.vue","description":"The researcher's workbench retargeted from people groups to COUNTRIES — region","element":"country-posters-map","type":"single","isMap":true,"iframeUrl":"./country-posters/countries-map/index.html","scriptUrl":"./country-posters/country-posters.js","embed":{"iframe":"\u003ciframe src=\"./country-posters/countries-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./country-posters/country-posters.js\" integrity=\"sha384-+uSJg/LdhuPzecJG34oeevbtghdX7Pqaop+MyNzs4tyqd3/1frmrwQimIJgcv/yo\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccountry-posters-map profile-config='{\"profile\":\"countries-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/country-posters-map>"}},{"profile":"country-poster-wall","file":"country-poster-wall.vue","description":"One printable card per country, grouped into COLLAPSIBLE regional sections so the","element":"country-posters-map","type":"single","isMap":false,"iframeUrl":"./country-posters/country-poster-wall/index.html","scriptUrl":"./country-posters/country-posters.js","embed":{"iframe":"\u003ciframe src=\"./country-posters/country-poster-wall/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./country-posters/country-posters.js\" integrity=\"sha384-+uSJg/LdhuPzecJG34oeevbtghdX7Pqaop+MyNzs4tyqd3/1frmrwQimIJgcv/yo\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccountry-posters-map profile-config='{\"profile\":\"country-poster-wall\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/country-posters-map>"}},{"profile":"country-posters-mfe","file":"country-posters-mfe.vue","description":"Country Posters as ONE two-tab element — the countries map and the printable","element":"country-posters-mfe","type":"nested-elements-mfe","isMap":true,"iframeUrl":"./country-posters/country-posters-mfe/index.html","scriptUrl":"./country-posters/country-posters.js","embed":{"iframe":"\u003ciframe src=\"./country-posters/country-posters-mfe/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./country-posters/country-posters.js\" integrity=\"sha384-+uSJg/LdhuPzecJG34oeevbtghdX7Pqaop+MyNzs4tyqd3/1frmrwQimIJgcv/yo\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccountry-posters-map profile-config='{\"profile\":\"country-posters-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/country-posters-map>"}}]},{"bundle":"dashboard-plus-grid","scriptUrl":"./dashboard-plus-grid/dashboard-plus-grid.js","output":"doxa-maps/dashboard-plus-grid/dashboard-plus-grid.js","integrity":"sha384-VOkoTUw4VURBoPSbk3YnU3Wc/JuN+ywf1eF9D6RHBI2Be/8N8FlY3WX/2CkNk5NS","elements":["dashboard-plus-grid"],"composes":["research-dashboard","people-groups-grid"],"profiles":[{"profile":"dashboard-plus-grid","file":"dashboard-plus-grid.vue","description":"Both children are IMPORTED DIRECTLY (compiled into this ONE bundle — no runtime bundle","element":"dashboard-plus-grid","type":"nested-elements-mfe","isMap":true,"iframeUrl":"./dashboard-plus-grid/dashboard-plus-grid/index.html","scriptUrl":"./dashboard-plus-grid/dashboard-plus-grid.js","embed":{"iframe":"\u003ciframe src=\"./dashboard-plus-grid/dashboard-plus-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-VOkoTUw4VURBoPSbk3YnU3Wc/JuN+ywf1eF9D6RHBI2Be/8N8FlY3WX/2CkNk5NS\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/dashboard-plus-grid>"},"instances":[{"id":"default","title":"default","apiBaseUrl":"","props":{"profile":"dashboard-plus-grid"},"element":"dashboard-plus-grid","iframeUrl":"./dashboard-plus-grid/dashboard-plus-grid/default/index.html","embed":{"iframe":"\u003ciframe src=\"./dashboard-plus-grid/dashboard-plus-grid/default/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"demo-map","scriptUrl":"./demo-map/demo-map.js","output":"doxa-maps/demo-map/demo-map.js","integrity":"sha384-WLB+/GTY8u9CWAKt72vKJroKi26oGzzjlGdA0iA3DSSP9oWHnUb8r6jtjAWSw0ee","elements":["demo-map"],"profiles":[{"profile":"demo-map","file":"demo-map.vue","description":"Simple two-tab demo map. Tab 1 colors pins by religion (shared","element":"demo-map","type":"parameterized","isMap":true,"iframeUrl":"./demo-map/demo-map/index.html","scriptUrl":"./demo-map/demo-map.js","embed":{"iframe":"\u003ciframe src=\"./demo-map/demo-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./demo-map/demo-map.js\" integrity=\"sha384-WLB+/GTY8u9CWAKt72vKJroKi26oGzzjlGdA0iA3DSSP9oWHnUb8r6jtjAWSw0ee\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdemo-map profile-config='{\"profile\":\"demo-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/demo-map>"},"instances":[{"id":"maplibre","title":"Demo map — MapLibre (token-free)","apiBaseUrl":"","props":{"profile":"demo-map","provider":"maplibre","instanceId":"demo-maplibre"},"element":"demo-map","iframeUrl":"./demo-map/demo-map/maplibre/index.html","embed":{"iframe":"\u003ciframe src=\"./demo-map/demo-map/maplibre/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}],"bundle":"demo-map"}]},{"bundle":"doxa-maps-spa","scriptUrl":"./doxa-maps-spa/doxa-maps-spa.js","output":"doxa-maps/doxa-maps-spa/doxa-maps-spa.js","integrity":"sha384-1f+/rBSGo/1jyUmRmGg34CIU/PcGkB7M3jah1DO0ocb5O0zj81wpUemXcz4WAFz8","elements":["doxa-maps-spa"],"composes":["bp-big-picture","doxa-research-map","doxa-simple-map","cities-internet-map","gospel-resources-map","my-upg-100-list-map"],"profiles":[{"profile":"doxa-maps-spa","file":"doxa-maps-spa.vue","description":"The DX-maps app itself: one element whose vertical-tab rail nests every other","element":"doxa-maps-spa","type":"nested-mfe-spa","isMap":false,"iframeUrl":"./doxa-maps-spa/doxa-maps-spa/index.html","scriptUrl":"./doxa-maps-spa/doxa-maps-spa.js","embed":{"iframe":"\u003ciframe src=\"./doxa-maps-spa/doxa-maps-spa/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./doxa-maps-spa/doxa-maps-spa.js\" integrity=\"sha384-1f+/rBSGo/1jyUmRmGg34CIU/PcGkB7M3jah1DO0ocb5O0zj81wpUemXcz4WAFz8\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdoxa-maps-spa profile-config='{\"profile\":\"doxa-maps-spa\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/doxa-maps-spa>"},"instances":[{"id":"app","title":"DX-Maps SPA — Big Picture + every research map (app-shell)","apiBaseUrl":"","props":{"profile":"doxa-maps-spa","provider":"maplibre","instanceId":"doxa-maps-spa-app","title":"DX-Maps"},"element":"doxa-maps-spa","iframeUrl":"./doxa-maps-spa/doxa-maps-spa/app/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-maps-spa/doxa-maps-spa/app/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"doxa-research-map","scriptUrl":"./doxa-research-map/doxa-research-map.js","output":"doxa-maps/doxa-research-map/doxa-research-map.js","integrity":"sha384-LyIs0sqdkyJcj3DESqefXc7jsD96o+H+YVcOIq2kCdwaS+ZeBLqcn//06n1W1blE","elements":["doxa-research-map"],"profiles":[{"profile":"research-map","file":"research-map.vue","description":"The researcher's workbench: every piece a missiologist, demographer or","element":"doxa-research-map","type":"monolithic","isMap":true,"iframeUrl":"./doxa-research-map/research-map/index.html","scriptUrl":"./doxa-research-map/doxa-research-map.js","embed":{"iframe":"\u003ciframe src=\"./doxa-research-map/research-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./doxa-research-map/doxa-research-map.js\" integrity=\"sha384-LyIs0sqdkyJcj3DESqefXc7jsD96o+H+YVcOIq2kCdwaS+ZeBLqcn//06n1W1blE\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdoxa-research-map profile-config='{\"profile\":\"research-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/doxa-research-map>"},"instances":[{"id":"maplibre","title":"Research map — MapLibre (token-free, no search bar)","apiBaseUrl":"","props":{"profile":"research-map","provider":"maplibre","instanceId":"research-map-maplibre"},"element":"doxa-research-map","iframeUrl":"./doxa-research-map/research-map/maplibre/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-research-map/research-map/maplibre/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"doxa-simple-map","scriptUrl":"./doxa-simple-map/doxa-simple-map.js","output":"doxa-maps/doxa-simple-map/doxa-simple-map.js","integrity":"sha384-FtEGLeSRNfBCdmK26IURIxCldSnfKphxRT74XgjftFGzNpvube+ov/EVBFi2gXjo","elements":["doxa-map","doxa-simple-map"],"profiles":[{"profile":"doxa-simple-map","file":"doxa-simple-map.vue","description":"The simple world map, shipped as three presets off ONE prop table —","element":"doxa-map","type":"parameterized","isMap":true,"iframeUrl":"./doxa-simple-map/doxa-simple-map/index.html","scriptUrl":"./doxa-simple-map/doxa-simple-map.js","embed":{"iframe":"\u003ciframe src=\"./doxa-simple-map/doxa-simple-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./doxa-simple-map/doxa-simple-map.js\" integrity=\"sha384-FtEGLeSRNfBCdmK26IURIxCldSnfKphxRT74XgjftFGzNpvube+ov/EVBFi2gXjo\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdoxa-map profile-config='{\"profile\":\"doxa-simple-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/doxa-map>"},"instances":[{"id":"prayer","title":"Prayer Map","apiBaseUrl":"https://pray.doxa.life","props":{"profile":"doxa-simple-map","instanceId":"embed-prayer","dataSource":"pray-tools","tabs":[{"id":"prayer","colorStrategy":"prayer","legend":"prayer","popup":"prayer"}]},"element":"doxa-map","iframeUrl":"./doxa-simple-map/doxa-simple-map/prayer/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-simple-map/doxa-simple-map/prayer/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"engagement","title":"Engagement Map","apiBaseUrl":"https://pray.doxa.life","props":{"profile":"doxa-simple-map","instanceId":"embed-engagement","dataSource":"pray-tools","tabs":[{"id":"engagement","colorStrategy":"engagement","legend":"engagement","popup":"engagement"}]},"element":"doxa-map","iframeUrl":"./doxa-simple-map/doxa-simple-map/engagement/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-simple-map/doxa-simple-map/engagement/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"adoption","title":"Adoption Map","apiBaseUrl":"https://pray.doxa.life","props":{"profile":"doxa-simple-map","instanceId":"embed-adoption","dataSource":"pray-tools","tabs":[{"id":"adoption","colorStrategy":"adoption","legend":"adoption","popup":"adoption"}]},"element":"doxa-map","iframeUrl":"./doxa-simple-map/doxa-simple-map/adoption/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-simple-map/doxa-simple-map/adoption/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"doxa-vision-card","scriptUrl":"./doxa-vision-card/doxa-vision-card.js","output":"doxa-maps/doxa-vision-card/doxa-vision-card.js","integrity":"sha384-2mza3cltN5LQQIrlENG/IVL6Icd9zzcFve3E8R8VWuCdYOGW9uGKFvxcbu6eFfwn","elements":["doxa-vision-card"],"profiles":[{"profile":"doxa-vision-card","file":"doxa-vision-card.vue","description":"The Capability-1 example: ONE folder -> ONE bundle -> ONE element.","element":"doxa-vision-card","type":"parameterized","isMap":false,"iframeUrl":"./doxa-vision-card/doxa-vision-card/index.html","scriptUrl":"./doxa-vision-card/doxa-vision-card.js","embed":{"iframe":"\u003ciframe src=\"./doxa-vision-card/doxa-vision-card/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./doxa-vision-card/doxa-vision-card.js\" integrity=\"sha384-2mza3cltN5LQQIrlENG/IVL6Icd9zzcFve3E8R8VWuCdYOGW9uGKFvxcbu6eFfwn\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdoxa-vision-card profile-config='{\"profile\":\"doxa-vision-card\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/doxa-vision-card>"},"instances":[{"id":"default","title":"Vision card — reach at a glance","apiBaseUrl":"","props":{"profile":"doxa-vision-card","provider":"maplibre","instanceId":"vision-card-default"},"element":"doxa-vision-card","iframeUrl":"./doxa-vision-card/doxa-vision-card/default/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-vision-card/doxa-vision-card/default/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"frontier","title":"Vision card — frontier accent","apiBaseUrl":"","props":{"profile":"doxa-vision-card","provider":"maplibre","instanceId":"vision-card-frontier","accent":"#22d3ee","title":"The last frontier of the gospel.","tagline":"Frontier people groups — where fewer than one in a thousand follow Jesus.","stats":[{"value":"1,910","label":"Frontier groups","note":"under 0.1% believers"},{"value":"2.1B","label":"People","note":"living in frontier settings"},{"value":"0.1%","label":"Christian","note":"or fewer, in each group"}]},"element":"doxa-vision-card","iframeUrl":"./doxa-vision-card/doxa-vision-card/frontier/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-vision-card/doxa-vision-card/frontier/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}],"bundle":"doxa-vision-card"}]},{"bundle":"golden-path-check","scriptUrl":"./golden-path-check/golden-path-check.js","output":"doxa-maps/golden-path-check/golden-path-check.js","integrity":"sha384-1V/sT5SkV0U9yTCK9ELIOFfU1ZIJkInIF6nG3UllJ4dxax3RsEAupSGLJEFK6e14","elements":["golden-path-check"],"profiles":[{"profile":"golden-path-check","file":"golden-path-check.vue","description":"A live self-test of the develop-a-plugin-and-see-it-live path: it reads the built","element":"golden-path-check","type":"single","isMap":false,"iframeUrl":"./golden-path-check/golden-path-check/index.html","scriptUrl":"./golden-path-check/golden-path-check.js","embed":{"iframe":"\u003ciframe src=\"./golden-path-check/golden-path-check/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./golden-path-check/golden-path-check.js\" integrity=\"sha384-1V/sT5SkV0U9yTCK9ELIOFfU1ZIJkInIF6nG3UllJ4dxax3RsEAupSGLJEFK6e14\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgolden-path-check profile-config='{\"profile\":\"golden-path-check\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/golden-path-check>"}}]},{"bundle":"gospel-resources","scriptUrl":"./gospel-resources/gospel-resources.js","output":"doxa-maps/gospel-resources/gospel-resources.js","integrity":"sha384-3KTr1qhgnkpG3VcebvpMExKEBfsMuHLimRhzbv8FBWxHoV+nyVe9vUqI6pcV4gZl","elements":["gospel-resources-map"],"composes":["resources-map","data-tables"],"profiles":[{"profile":"charts","file":"charts.vue","description":"The gap measured by LANGUAGE (ISO 639-3) rather than by people group, because one translation serves every group that speaks it, so counting by group overstates how much work remains.","element":"gospel-resources-map","type":"single","isMap":false,"iframeUrl":"./gospel-resources/charts/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/charts/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-3KTr1qhgnkpG3VcebvpMExKEBfsMuHLimRhzbv8FBWxHoV+nyVe9vUqI6pcV4gZl\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"charts\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}},{"profile":"data-tables","file":"data-tables.vue","description":"Eight tables covering both halves of one question: every gospel resource with its real URL and how much Scripture it is, and the 3,457 people groups where nothing was found with the pools searched recorded per row, plus bridge languages, city bridges, the deaf gap and access against population growth.","element":"gospel-resources-map","type":"single","isMap":false,"iframeUrl":"./gospel-resources/data-tables/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/data-tables/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-3KTr1qhgnkpG3VcebvpMExKEBfsMuHLimRhzbv8FBWxHoV+nyVe9vUqI6pcV4gZl\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}},{"profile":"gospel-dashboard","file":"gospel-dashboard.vue","description":"The gospel map and its tables as one scrolling element: 12,379 people-group pins with the real Scripture, film and Bible-story links for each group's own language, above every resource with its URL and the 3,457 groups where nothing was found, exportable as CSV.","element":"gospel-resources-dashboard","type":"nested-elements-mfe","isMap":true,"iframeUrl":"./gospel-resources/gospel-dashboard/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/gospel-dashboard/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-3KTr1qhgnkpG3VcebvpMExKEBfsMuHLimRhzbv8FBWxHoV+nyVe9vUqI6pcV4gZl\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"gospel-dashboard\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}},{"profile":"resources-list","file":"resources-list.vue","description":"Which people groups have Scripture in their own language and which have none, zero-resource languages first, with every link the verification pass proved and Open Bible Stories labelled as stories rather than as Scripture.","element":"gospel-resources-map","type":"single","isMap":false,"iframeUrl":"./gospel-resources/resources-list/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/resources-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-3KTr1qhgnkpG3VcebvpMExKEBfsMuHLimRhzbv8FBWxHoV+nyVe9vUqI6pcV4gZl\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"resources-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}},{"profile":"resources-map","file":"resources-map.vue","description":"12,379 people-group pins over a country choropleth: tap a pin for the Scripture, audio, film, Bible-story and training links that exist in that group's own language with real URLs, tap a country for every group in it, search by group, language or ISO 639-3 code, and filter to the groups where nothing was found.","element":"gospel-resources-map","type":"single","isMap":true,"iframeUrl":"./gospel-resources/resources-map/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/resources-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-3KTr1qhgnkpG3VcebvpMExKEBfsMuHLimRhzbv8FBWxHoV+nyVe9vUqI6pcV4gZl\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"resources-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}}]},{"bundle":"my-upg-100-list","scriptUrl":"./my-upg-100-list/my-upg-100-list.js","output":"doxa-maps/my-upg-100-list/my-upg-100-list.js","integrity":"sha384-KF3XG9q4VdSvuLQEeK0P1gsKg1cpNOvkLYK5MAIMCUwSsO07z5dI4ffGuc4U6Y+p","elements":["my-upg-100-list-map"],"composes":["my-upg-100-list/upg-100-list","my-upg-100-list/poster-wall"],"profiles":[{"profile":"poster-wall","file":"poster-wall.vue","description":"A wall of printable poster cards, one per 100-list entry, each with a \"Show on map\"","element":"my-upg-100-list-map","type":"single","isMap":false,"iframeUrl":"./my-upg-100-list/poster-wall/index.html","scriptUrl":"./my-upg-100-list/my-upg-100-list.js","embed":{"iframe":"\u003ciframe src=\"./my-upg-100-list/poster-wall/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-KF3XG9q4VdSvuLQEeK0P1gsKg1cpNOvkLYK5MAIMCUwSsO07z5dI4ffGuc4U6Y+p\" crossorigin=\"anonymous\">\u003c/script>\n\u003cmy-upg-100-list-map profile-config='{\"profile\":\"poster-wall\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/my-upg-100-list-map>"}},{"profile":"upg-100-list","file":"upg-100-list.vue","description":"A personal unreached-people-groups list painted as true boundary polygons —","element":"my-upg-100-list-map","type":"single","isMap":true,"iframeUrl":"./my-upg-100-list/upg-100-list/index.html","scriptUrl":"./my-upg-100-list/my-upg-100-list.js","embed":{"iframe":"\u003ciframe src=\"./my-upg-100-list/upg-100-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-KF3XG9q4VdSvuLQEeK0P1gsKg1cpNOvkLYK5MAIMCUwSsO07z5dI4ffGuc4U6Y+p\" crossorigin=\"anonymous\">\u003c/script>\n\u003cmy-upg-100-list-map profile-config='{\"profile\":\"upg-100-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/my-upg-100-list-map>"}},{"profile":"upg-100-mfe","file":"upg-100-mfe.vue","description":"The standalone, shareable and embeddable composite of the my-upg-100-list family — it nests the map","element":"my-upg-100-list-map","type":"nested-elements-mfe","isMap":true,"iframeUrl":"./my-upg-100-list/upg-100-mfe/index.html","scriptUrl":"./my-upg-100-list/my-upg-100-list.js","embed":{"iframe":"\u003ciframe src=\"./my-upg-100-list/upg-100-mfe/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-KF3XG9q4VdSvuLQEeK0P1gsKg1cpNOvkLYK5MAIMCUwSsO07z5dI4ffGuc4U6Y+p\" crossorigin=\"anonymous\">\u003c/script>\n\u003cmy-upg-100-list-map profile-config='{\"profile\":\"upg-100-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/my-upg-100-list-map>"}}]},{"bundle":"people-groups-grid","scriptUrl":"./people-groups-grid/people-groups-grid.js","output":"doxa-maps/people-groups-grid/people-groups-grid.js","integrity":"sha384-8B2T2ckH+v8p2hEnkGruUg4Do5ZFsh31QSxYJYMj4/PN/ccHdgaIyK4dyW2GlUAR","elements":["people-groups-grid"],"profiles":[{"profile":"people-groups-grid","file":"people-groups-grid.vue","description":"The people-groups grid as an owned custom element: card list, search and four","element":"people-groups-grid","type":"parameterized","isMap":false,"iframeUrl":"./people-groups-grid/people-groups-grid/index.html","scriptUrl":"./people-groups-grid/people-groups-grid.js","embed":{"iframe":"\u003ciframe src=\"./people-groups-grid/people-groups-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./people-groups-grid/people-groups-grid.js\" integrity=\"sha384-8B2T2ckH+v8p2hEnkGruUg4Do5ZFsh31QSxYJYMj4/PN/ccHdgaIyK4dyW2GlUAR\" crossorigin=\"anonymous\">\u003c/script>\n\u003cpeople-groups-grid profile-config='{\"profile\":\"people-groups-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/people-groups-grid>"},"instances":[{"id":"people-groups-grid","title":"People Groups Grid — standalone (own search + 4 dropdowns)","apiBaseUrl":"","props":{"profile":"people-groups-grid","provider":"maplibre","instanceId":"people-groups-grid","pray-base-url":"https://pray.doxa.life"},"element":"people-groups-grid","iframeUrl":"./people-groups-grid/people-groups-grid/people-groups-grid/index.html","embed":{"iframe":"\u003ciframe src=\"./people-groups-grid/people-groups-grid/people-groups-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"driven","title":"People Groups Grid — externally driven (controls off, props/events)","apiBaseUrl":"","props":{"profile":"people-groups-grid","provider":"maplibre","instanceId":"people-groups-grid-driven","pray-base-url":"https://pray.doxa.life","show-search":"false","show-filters":"false"},"element":"people-groups-grid","iframeUrl":"./people-groups-grid/people-groups-grid/driven/index.html","embed":{"iframe":"\u003ciframe src=\"./people-groups-grid/people-groups-grid/driven/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"plugin-studio","scriptUrl":"./plugin-studio/plugin-studio.js","output":"doxa-maps/plugin-studio/plugin-studio.js","integrity":"sha384-2RlLFRU2XdjBN7w+FPguj8INgj57JFg4IFT2AmdefGnR9QQLehbiiAffV45LcsFH","elements":["plugin-studio"],"composes":["bp-big-picture","people-groups-grid","doxa-research-map","doxa-simple-map","cities-internet-map","gospel-resources-map","my-upg-100-list-map","doxa-vision-card","all-people-groups","research-dashboard"],"profiles":[{"profile":"plugin-studio","file":"plugin-studio.vue","description":"The developer's viewing surface: a sidebar that is the composability ladder","element":"plugin-studio","type":"nested-mfe-spa","isMap":false,"iframeUrl":"./plugin-studio/plugin-studio/index.html","scriptUrl":"./plugin-studio/plugin-studio.js","embed":{"iframe":"\u003ciframe src=\"./plugin-studio/plugin-studio/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./plugin-studio/plugin-studio.js\" integrity=\"sha384-2RlLFRU2XdjBN7w+FPguj8INgj57JFg4IFT2AmdefGnR9QQLehbiiAffV45LcsFH\" crossorigin=\"anonymous\">\u003c/script>\n\u003cplugin-studio profile-config='{\"profile\":\"plugin-studio\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/plugin-studio>"},"instances":[{"id":"studio","title":"Plugin Studio — every element by capability 5 -> 1 (developer studio)","apiBaseUrl":"","props":{"profile":"plugin-studio","provider":"maplibre","instanceId":"plugin-studio","title":"Plugin Studio"},"element":"plugin-studio","iframeUrl":"./plugin-studio/plugin-studio/studio/index.html","embed":{"iframe":"\u003ciframe src=\"./plugin-studio/plugin-studio/studio/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"prayer-walk-planner","scriptUrl":"./prayer-walk-planner/prayer-walk-planner.js","output":"doxa-maps/prayer-walk-planner/prayer-walk-planner.js","integrity":"sha384-VZxxlIqmR6mKdB1Dx6143LxEyI3POl9ks045yApFu4M4ZlLxsRH3+dCdEMpJb2Vw","elements":["prayer-walk-planner"],"profiles":[{"profile":"prayer-walk-planner","file":"prayer-walk-planner.vue","description":"A simple polygon-drawing tool for planning prayer-walking routes.","element":"prayer-walk-planner","type":"single","isMap":true,"iframeUrl":"./prayer-walk-planner/prayer-walk-planner/index.html","scriptUrl":"./prayer-walk-planner/prayer-walk-planner.js","embed":{"iframe":"\u003ciframe src=\"./prayer-walk-planner/prayer-walk-planner/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./prayer-walk-planner/prayer-walk-planner.js\" integrity=\"sha384-VZxxlIqmR6mKdB1Dx6143LxEyI3POl9ks045yApFu4M4ZlLxsRH3+dCdEMpJb2Vw\" crossorigin=\"anonymous\">\u003c/script>\n\u003cprayer-walk-planner profile-config='{\"profile\":\"prayer-walk-planner\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/prayer-walk-planner>"}}]},{"bundle":"regions-dashboard","scriptUrl":"./regions-dashboard/regions-dashboard.js","output":"doxa-maps/regions-dashboard/regions-dashboard.js","integrity":"sha384-V6UcPxx9/C30jhjP3qxO1v/Ib4nMhu+uPJL0dd0geMrA236NuP9HZchD58RT3DL3","elements":["regions-dashboard"],"composes":["regions-dashboard/regions-list","regions-dashboard/region-dashboards"],"profiles":[{"profile":"region-dashboards","file":"region-dashboards.vue","description":"The dashboard half of the Driver's 2-tab Regions element: given a region (or a","element":"regions-dashboard","type":"single","isMap":true,"iframeUrl":"./regions-dashboard/region-dashboards/index.html","scriptUrl":"./regions-dashboard/regions-dashboard.js","embed":{"iframe":"\u003ciframe src=\"./regions-dashboard/region-dashboards/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-V6UcPxx9/C30jhjP3qxO1v/Ib4nMhu+uPJL0dd0geMrA236NuP9HZchD58RT3DL3\" crossorigin=\"anonymous\">\u003c/script>\n\u003cregions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/regions-dashboard>"}},{"profile":"regions-list","file":"regions-list.vue","description":"A refactor of DX-life's /regions index page (app/pages/regions/index.vue) into","element":"regions-dashboard","type":"single","isMap":true,"iframeUrl":"./regions-dashboard/regions-list/index.html","scriptUrl":"./regions-dashboard/regions-dashboard.js","embed":{"iframe":"\u003ciframe src=\"./regions-dashboard/regions-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-V6UcPxx9/C30jhjP3qxO1v/Ib4nMhu+uPJL0dd0geMrA236NuP9HZchD58RT3DL3\" crossorigin=\"anonymous\">\u003c/script>\n\u003cregions-dashboard profile-config='{\"profile\":\"regions-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/regions-dashboard>"}},{"profile":"regions-mfe","file":"regions-mfe.vue","description":"The composite the Driver asked for: ONE element carrying the SELECT VIEW switcher","element":"regions-dashboard","type":"nested-elements-mfe","isMap":true,"iframeUrl":"./regions-dashboard/regions-mfe/index.html","scriptUrl":"./regions-dashboard/regions-dashboard.js","embed":{"iframe":"\u003ciframe src=\"./regions-dashboard/regions-mfe/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-V6UcPxx9/C30jhjP3qxO1v/Ib4nMhu+uPJL0dd0geMrA236NuP9HZchD58RT3DL3\" crossorigin=\"anonymous\">\u003c/script>\n\u003cregions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/regions-dashboard>"}}]},{"bundle":"research-dashboard","scriptUrl":"./research-dashboard/research-dashboard.js","output":"doxa-maps/research-dashboard/research-dashboard.js","integrity":"sha384-tAUIe2wERKg/ZRvINilfjrgfNYZeix7iSXYTJI1iSvf3eRtafkVt1a8cHIGyyRTF","elements":["research-dashboard-map"],"profiles":[{"profile":"research-dashboard","file":"research-dashboard.vue","description":"Coordinated-Multiple-Views research dashboard for 10/40-window UPGs (live pray.doxa.life): docked facet rail + map-as-hero + linked table/charts, brushing-and-linking over one in-memory store.","element":"research-dashboard-map","type":"monolithic","isMap":true,"iframeUrl":"./research-dashboard/research-dashboard/index.html","scriptUrl":"./research-dashboard/research-dashboard.js","embed":{"iframe":"\u003ciframe src=\"./research-dashboard/research-dashboard/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./research-dashboard/research-dashboard.js\" integrity=\"sha384-tAUIe2wERKg/ZRvINilfjrgfNYZeix7iSXYTJI1iSvf3eRtafkVt1a8cHIGyyRTF\" crossorigin=\"anonymous\">\u003c/script>\n\u003cresearch-dashboard-map profile-config='{\"profile\":\"research-dashboard\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/research-dashboard-map>"},"bundle":"research-dashboard"}]},{"bundle":"research-map-plus-grid","scriptUrl":"./research-map-plus-grid/research-map-plus-grid.js","output":"doxa-maps/research-map-plus-grid/research-map-plus-grid.js","integrity":"sha384-sOkaMV0UFr2uNXfoJpRvaD+gHD6xFlkmpR7MzEwwFdarYdid8aN9Nj1Y8TqQJuFo","elements":["research-map-plus-grid"],"composes":["doxa-research-map","people-groups-grid"],"profiles":[{"profile":"research-map-plus-grid","file":"research-map-plus-grid.vue","description":"The monolithic 7-tab research map (cap-3) on top, the People Groups grid beneath,","element":"research-map-plus-grid","type":"nested-elements-mfe","isMap":false,"iframeUrl":"./research-map-plus-grid/research-map-plus-grid/index.html","scriptUrl":"./research-map-plus-grid/research-map-plus-grid.js","embed":{"iframe":"\u003ciframe src=\"./research-map-plus-grid/research-map-plus-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./research-map-plus-grid/research-map-plus-grid.js\" integrity=\"sha384-sOkaMV0UFr2uNXfoJpRvaD+gHD6xFlkmpR7MzEwwFdarYdid8aN9Nj1Y8TqQJuFo\" crossorigin=\"anonymous\">\u003c/script>\n\u003cresearch-map-plus-grid profile-config='{\"profile\":\"research-map-plus-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/research-map-plus-grid>"},"instances":[{"id":"default","title":"default","apiBaseUrl":"","props":{"profile":"research-map-plus-grid"},"element":"research-map-plus-grid","iframeUrl":"./research-map-plus-grid/research-map-plus-grid/default/index.html","embed":{"iframe":"\u003ciframe src=\"./research-map-plus-grid/research-map-plus-grid/default/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"stack-demo","scriptUrl":"./stack-demo/stack-demo.js","output":"doxa-maps/stack-demo/stack-demo.js","integrity":"sha384-gnwM6s+puf1K60Nl7crQcC2QC+9BxwpkaTx4OepLZ8VUCraZc+aRlWpsb6nj6Gyf","elements":["stack-demo"],"composes":["research-dashboard-map","people-groups-grid"],"profiles":[{"profile":"stack-demo","file":"stack-demo.vue","description":"Groups TWO independent elements TOP-TO-BOTTOM so you can embed the pair on a page and","element":"stack-demo","type":"nested-elements-mfe","isMap":false,"iframeUrl":"./stack-demo/stack-demo/index.html","scriptUrl":"./stack-demo/stack-demo.js","embed":{"iframe":"\u003ciframe src=\"./stack-demo/stack-demo/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./stack-demo/stack-demo.js\" integrity=\"sha384-gnwM6s+puf1K60Nl7crQcC2QC+9BxwpkaTx4OepLZ8VUCraZc+aRlWpsb6nj6Gyf\" crossorigin=\"anonymous\">\u003c/script>\n\u003cstack-demo profile-config='{\"profile\":\"stack-demo\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/stack-demo>"},"instances":[{"id":"pair","title":"pair","apiBaseUrl":"","props":{"profile":"stack-demo"},"element":"stack-demo","iframeUrl":"./stack-demo/stack-demo/pair/index.html","embed":{"iframe":"\u003ciframe src=\"./stack-demo/stack-demo/pair/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"template-bundle","scriptUrl":"./template-bundle/template-bundle.js","output":"doxa-maps/template-bundle/template-bundle.js","integrity":"sha384-Arx3XL5Mhdv0VcU7RX9gwggLBjx3SH4WFltOaoEJ6mW/jw/E6wgGQHIOkFyRtBRd","elements":["template-bundle"],"profiles":[{"profile":"template-map-a","file":"template-map-a.vue","description":"Minimal example profile A — a colored placeholder, no Mapbox or data.","element":"template-bundle","type":"single","isMap":false,"iframeUrl":"./template-bundle/template-map-a/index.html","scriptUrl":"./template-bundle/template-bundle.js","embed":{"iframe":"\u003ciframe src=\"./template-bundle/template-map-a/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./template-bundle/template-bundle.js\" integrity=\"sha384-Arx3XL5Mhdv0VcU7RX9gwggLBjx3SH4WFltOaoEJ6mW/jw/E6wgGQHIOkFyRtBRd\" crossorigin=\"anonymous\">\u003c/script>\n\u003ctemplate-bundle profile-config='{\"profile\":\"template-map-a\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/template-bundle>"},"bundle":"template-bundle"},{"profile":"template-map-b","file":"template-map-b.vue","description":"Minimal example profile B — a second profile in the same bundle.","element":"template-bundle","type":"single","isMap":false,"iframeUrl":"./template-bundle/template-map-b/index.html","scriptUrl":"./template-bundle/template-bundle.js","embed":{"iframe":"\u003ciframe src=\"./template-bundle/template-map-b/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./template-bundle/template-bundle.js\" integrity=\"sha384-Arx3XL5Mhdv0VcU7RX9gwggLBjx3SH4WFltOaoEJ6mW/jw/E6wgGQHIOkFyRtBRd\" crossorigin=\"anonymous\">\u003c/script>\n\u003ctemplate-bundle profile-config='{\"profile\":\"template-map-b\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/template-bundle>"},"bundle":"template-bundle"}]},{"bundle":"upg-neighbor","scriptUrl":"./upg-neighbor/upg-neighbor.js","output":"doxa-maps/upg-neighbor/upg-neighbor.js","integrity":"sha384-JDJr4qoVZuiSi/rvgdzeuUNrzf7vjPdyh/g8dg7X8RHkZk/Y+tYXIQ3gpEzrU07q","elements":["upg-neighbor"],"profiles":[{"profile":"upg-neighbor","file":"upg-neighbor.vue","description":"Rescues the five pre-bundler experimental maps that live inside the legacy","element":"upg-neighbor","type":"parameterized","isMap":false,"iframeUrl":"./upg-neighbor/upg-neighbor/index.html","scriptUrl":"./upg-neighbor/upg-neighbor.js","embed":{"iframe":"\u003ciframe src=\"./upg-neighbor/upg-neighbor/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./upg-neighbor/upg-neighbor.js\" integrity=\"sha384-JDJr4qoVZuiSi/rvgdzeuUNrzf7vjPdyh/g8dg7X8RHkZk/Y+tYXIQ3gpEzrU07q\" crossorigin=\"anonymous\">\u003c/script>\n\u003cupg-neighbor profile-config='{\"profile\":\"upg-neighbor\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/upg-neighbor>"},"instances":[{"id":"send-map","title":"Send Map (legacy)","apiBaseUrl":"","props":{"profile":"upg-neighbor","legacyElement":"send-map","legacyTitle":"Send Map"},"element":"upg-neighbor","iframeUrl":"./upg-neighbor/upg-neighbor/send-map/index.html","embed":{"iframe":"\u003ciframe src=\"./upg-neighbor/upg-neighbor/send-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"upg-neighbors","title":"UPG Neighbors (legacy)","apiBaseUrl":"","props":{"profile":"upg-neighbor","legacyElement":"upg-neighbors","legacyTitle":"UPG Neighbors"},"element":"upg-neighbor","iframeUrl":"./upg-neighbor/upg-neighbor/upg-neighbors/index.html","embed":{"iframe":"\u003ciframe src=\"./upg-neighbor/upg-neighbor/upg-neighbors/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"lang-cluster","title":"Language Clusters (legacy)","apiBaseUrl":"","props":{"profile":"upg-neighbor","legacyElement":"lang-cluster","legacyTitle":"Language Clusters"},"element":"upg-neighbor","iframeUrl":"./upg-neighbor/upg-neighbor/lang-cluster/index.html","embed":{"iframe":"\u003ciframe src=\"./upg-neighbor/upg-neighbor/lang-cluster/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"bloom-cockpit","title":"Bloom Cockpit (legacy)","apiBaseUrl":"","props":{"profile":"upg-neighbor","legacyElement":"bloom-cockpit","legacyTitle":"Bloom Cockpit"},"element":"upg-neighbor","iframeUrl":"./upg-neighbor/upg-neighbor/bloom-cockpit/index.html","embed":{"iframe":"\u003ciframe src=\"./upg-neighbor/upg-neighbor/bloom-cockpit/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"flower-mesh","title":"Flower Mesh (legacy)","apiBaseUrl":"","props":{"profile":"upg-neighbor","legacyElement":"flower-mesh","legacyTitle":"Flower Mesh"},"element":"upg-neighbor","iframeUrl":"./upg-neighbor/upg-neighbor/flower-mesh/index.html","embed":{"iframe":"\u003ciframe src=\"./upg-neighbor/upg-neighbor/flower-mesh/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]}]}; + window.FORGE.manifest = {"schema":"doxa-maps-manifest@1","generatedFrom":"plugin-designs/*/*.vue","embedBase":".","bundleCount":22,"profileCount":35,"bundles":[{"bundle":"all-people-groups","scriptUrl":"./all-people-groups/all-people-groups.js","output":"doxa-maps/all-people-groups/all-people-groups.js","integrity":"sha384-3kskcN7GLnCNNOrJINJt4n5ERXa0qpwyRNcuVuw4++2KzU0LwGYnLW3aepEu8jDg","elements":["all-people-groups"],"profiles":[{"profile":"all-people-groups","file":"all-people-groups.vue","description":"All 12,379 people groups (peoplegroups.org) in four colors — reached,","element":"all-people-groups","type":"single","isMap":true,"iframeUrl":"./all-people-groups/all-people-groups/index.html","scriptUrl":"./all-people-groups/all-people-groups.js","embed":{"iframe":"\u003ciframe src=\"./all-people-groups/all-people-groups/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./all-people-groups/all-people-groups.js\" integrity=\"sha384-3kskcN7GLnCNNOrJINJt4n5ERXa0qpwyRNcuVuw4++2KzU0LwGYnLW3aepEu8jDg\" crossorigin=\"anonymous\">\u003c/script>\n\u003call-people-groups profile-config='{\"profile\":\"all-people-groups\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/all-people-groups>"},"bundle":"all-people-groups"}]},{"bundle":"big-picture","scriptUrl":"./big-picture/big-picture.js","output":"doxa-maps/big-picture/big-picture.js","integrity":"sha384-3I1mBK8C0GOMsEJyYTyztMqFnvn4EGg3F2KFhYSVie+o2YKplcSFcOxWI4L2+cmr","elements":["bp-big-picture","bp-research-header","people-groups-grid"],"composes":["bp-research-header","people-groups-grid"],"profiles":[{"profile":"big-picture","file":"big-picture.vue","description":"The Cat-4 composite that PAIRS the two real capability elements of the","element":"bp-big-picture","type":"nested-elements-mfe","isMap":false,"iframeUrl":"./big-picture/big-picture/index.html","scriptUrl":"./big-picture/big-picture.js","embed":{"iframe":"\u003ciframe src=\"./big-picture/big-picture/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./big-picture/big-picture.js\" integrity=\"sha384-3I1mBK8C0GOMsEJyYTyztMqFnvn4EGg3F2KFhYSVie+o2YKplcSFcOxWI4L2+cmr\" crossorigin=\"anonymous\">\u003c/script>\n\u003cbp-big-picture profile-config='{\"profile\":\"big-picture\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/bp-big-picture>"},"instances":[{"id":"big-picture","title":"Big Picture — research header ↔ people-groups grid (composite)","apiBaseUrl":"","props":{"profile":"big-picture","provider":"maplibre","instanceId":"bp-big-picture"},"element":"bp-big-picture","iframeUrl":"./big-picture/big-picture/big-picture/index.html","embed":{"iframe":"\u003ciframe src=\"./big-picture/big-picture/big-picture/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"frontier","title":"Big Picture — frontier accent","apiBaseUrl":"","props":{"profile":"big-picture","provider":"maplibre","instanceId":"bp-big-picture-frontier","accent":"#22d3ee","title":"Big Picture — Frontier Focus"},"element":"bp-big-picture","iframeUrl":"./big-picture/big-picture/frontier/index.html","embed":{"iframe":"\u003ciframe src=\"./big-picture/big-picture/frontier/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}],"bundle":"big-picture"}]},{"bundle":"cities-internet","scriptUrl":"./cities-internet/cities-internet.js","output":"doxa-maps/cities-internet/cities-internet.js","integrity":"sha384-b7gkA5+oZ8azx5oSxl4c985U9gcOFyNAh3TfhJd4FSUX4XawU0927HvYSFRTNzpr","elements":["cities-internet-map"],"profiles":[{"profile":"connectivity-list","file":"connectivity-list.vue","description":"Countries where DX people groups live, grouped by region, showing measured internet penetration","element":"cities-internet-map","type":"single","isMap":false,"iframeUrl":"./cities-internet/connectivity-list/index.html","scriptUrl":"./cities-internet/cities-internet.js","embed":{"iframe":"\u003ciframe src=\"./cities-internet/connectivity-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-b7gkA5+oZ8azx5oSxl4c985U9gcOFyNAh3TfhJd4FSUX4XawU0927HvYSFRTNzpr\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccities-internet-map profile-config='{\"profile\":\"connectivity-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/cities-internet-map>"}},{"profile":"connectivity-map","file":"connectivity-map.vue","description":"Every country shaded by measured internet penetration, with its named carriers and dominant","element":"cities-internet-map","type":"single","isMap":true,"iframeUrl":"./cities-internet/connectivity-map/index.html","scriptUrl":"./cities-internet/cities-internet.js","embed":{"iframe":"\u003ciframe src=\"./cities-internet/connectivity-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-b7gkA5+oZ8azx5oSxl4c985U9gcOFyNAh3TfhJd4FSUX4XawU0927HvYSFRTNzpr\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccities-internet-map profile-config='{\"profile\":\"connectivity-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/cities-internet-map>"}},{"profile":"data-tables","file":"data-tables.vue","description":"Four validated research tables, one tab each, with sortable and filterable columns, CSV and JSON","element":"cities-internet-map","type":"single","isMap":false,"iframeUrl":"./cities-internet/data-tables/index.html","scriptUrl":"./cities-internet/cities-internet.js","embed":{"iframe":"\u003ciframe src=\"./cities-internet/data-tables/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-b7gkA5+oZ8azx5oSxl4c985U9gcOFyNAh3TfhJd4FSUX4XawU0927HvYSFRTNzpr\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccities-internet-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/cities-internet-map>"}}]},{"bundle":"country-posters","scriptUrl":"./country-posters/country-posters.js","output":"doxa-maps/country-posters/country-posters.js","integrity":"sha384-+uSJg/LdhuPzecJG34oeevbtghdX7Pqaop+MyNzs4tyqd3/1frmrwQimIJgcv/yo","elements":["country-posters-map"],"composes":["country-posters/country-poster-wall","country-posters/countries-map"],"profiles":[{"profile":"countries-map","file":"countries-map.vue","description":"The researcher's workbench retargeted from people groups to COUNTRIES — region","element":"country-posters-map","type":"single","isMap":true,"iframeUrl":"./country-posters/countries-map/index.html","scriptUrl":"./country-posters/country-posters.js","embed":{"iframe":"\u003ciframe src=\"./country-posters/countries-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./country-posters/country-posters.js\" integrity=\"sha384-+uSJg/LdhuPzecJG34oeevbtghdX7Pqaop+MyNzs4tyqd3/1frmrwQimIJgcv/yo\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccountry-posters-map profile-config='{\"profile\":\"countries-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/country-posters-map>"}},{"profile":"country-poster-wall","file":"country-poster-wall.vue","description":"One printable card per country, grouped into COLLAPSIBLE regional sections so the","element":"country-posters-map","type":"single","isMap":false,"iframeUrl":"./country-posters/country-poster-wall/index.html","scriptUrl":"./country-posters/country-posters.js","embed":{"iframe":"\u003ciframe src=\"./country-posters/country-poster-wall/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./country-posters/country-posters.js\" integrity=\"sha384-+uSJg/LdhuPzecJG34oeevbtghdX7Pqaop+MyNzs4tyqd3/1frmrwQimIJgcv/yo\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccountry-posters-map profile-config='{\"profile\":\"country-poster-wall\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/country-posters-map>"}},{"profile":"country-posters-mfe","file":"country-posters-mfe.vue","description":"Country Posters as ONE two-tab element — the countries map and the printable","element":"country-posters-mfe","type":"nested-elements-mfe","isMap":true,"iframeUrl":"./country-posters/country-posters-mfe/index.html","scriptUrl":"./country-posters/country-posters.js","embed":{"iframe":"\u003ciframe src=\"./country-posters/country-posters-mfe/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./country-posters/country-posters.js\" integrity=\"sha384-+uSJg/LdhuPzecJG34oeevbtghdX7Pqaop+MyNzs4tyqd3/1frmrwQimIJgcv/yo\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccountry-posters-map profile-config='{\"profile\":\"country-posters-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/country-posters-map>"}}]},{"bundle":"dashboard-plus-grid","scriptUrl":"./dashboard-plus-grid/dashboard-plus-grid.js","output":"doxa-maps/dashboard-plus-grid/dashboard-plus-grid.js","integrity":"sha384-VOkoTUw4VURBoPSbk3YnU3Wc/JuN+ywf1eF9D6RHBI2Be/8N8FlY3WX/2CkNk5NS","elements":["dashboard-plus-grid"],"composes":["research-dashboard","people-groups-grid"],"profiles":[{"profile":"dashboard-plus-grid","file":"dashboard-plus-grid.vue","description":"Both children are IMPORTED DIRECTLY (compiled into this ONE bundle — no runtime bundle","element":"dashboard-plus-grid","type":"nested-elements-mfe","isMap":true,"iframeUrl":"./dashboard-plus-grid/dashboard-plus-grid/index.html","scriptUrl":"./dashboard-plus-grid/dashboard-plus-grid.js","embed":{"iframe":"\u003ciframe src=\"./dashboard-plus-grid/dashboard-plus-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-VOkoTUw4VURBoPSbk3YnU3Wc/JuN+ywf1eF9D6RHBI2Be/8N8FlY3WX/2CkNk5NS\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/dashboard-plus-grid>"},"instances":[{"id":"default","title":"default","apiBaseUrl":"","props":{"profile":"dashboard-plus-grid"},"element":"dashboard-plus-grid","iframeUrl":"./dashboard-plus-grid/dashboard-plus-grid/default/index.html","embed":{"iframe":"\u003ciframe src=\"./dashboard-plus-grid/dashboard-plus-grid/default/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"demo-map","scriptUrl":"./demo-map/demo-map.js","output":"doxa-maps/demo-map/demo-map.js","integrity":"sha384-WLB+/GTY8u9CWAKt72vKJroKi26oGzzjlGdA0iA3DSSP9oWHnUb8r6jtjAWSw0ee","elements":["demo-map"],"profiles":[{"profile":"demo-map","file":"demo-map.vue","description":"Simple two-tab demo map. Tab 1 colors pins by religion (shared","element":"demo-map","type":"parameterized","isMap":true,"iframeUrl":"./demo-map/demo-map/index.html","scriptUrl":"./demo-map/demo-map.js","embed":{"iframe":"\u003ciframe src=\"./demo-map/demo-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./demo-map/demo-map.js\" integrity=\"sha384-WLB+/GTY8u9CWAKt72vKJroKi26oGzzjlGdA0iA3DSSP9oWHnUb8r6jtjAWSw0ee\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdemo-map profile-config='{\"profile\":\"demo-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/demo-map>"},"instances":[{"id":"maplibre","title":"Demo map — MapLibre (token-free)","apiBaseUrl":"","props":{"profile":"demo-map","provider":"maplibre","instanceId":"demo-maplibre"},"element":"demo-map","iframeUrl":"./demo-map/demo-map/maplibre/index.html","embed":{"iframe":"\u003ciframe src=\"./demo-map/demo-map/maplibre/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}],"bundle":"demo-map"}]},{"bundle":"doxa-maps-spa","scriptUrl":"./doxa-maps-spa/doxa-maps-spa.js","output":"doxa-maps/doxa-maps-spa/doxa-maps-spa.js","integrity":"sha384-1f+/rBSGo/1jyUmRmGg34CIU/PcGkB7M3jah1DO0ocb5O0zj81wpUemXcz4WAFz8","elements":["doxa-maps-spa"],"composes":["bp-big-picture","doxa-research-map","doxa-simple-map","cities-internet-map","gospel-resources-map","my-upg-100-list-map"],"profiles":[{"profile":"doxa-maps-spa","file":"doxa-maps-spa.vue","description":"The DX-maps app itself: one element whose vertical-tab rail nests every other","element":"doxa-maps-spa","type":"nested-mfe-spa","isMap":false,"iframeUrl":"./doxa-maps-spa/doxa-maps-spa/index.html","scriptUrl":"./doxa-maps-spa/doxa-maps-spa.js","embed":{"iframe":"\u003ciframe src=\"./doxa-maps-spa/doxa-maps-spa/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./doxa-maps-spa/doxa-maps-spa.js\" integrity=\"sha384-1f+/rBSGo/1jyUmRmGg34CIU/PcGkB7M3jah1DO0ocb5O0zj81wpUemXcz4WAFz8\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdoxa-maps-spa profile-config='{\"profile\":\"doxa-maps-spa\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/doxa-maps-spa>"},"instances":[{"id":"app","title":"DX-Maps SPA — Big Picture + every research map (app-shell)","apiBaseUrl":"","props":{"profile":"doxa-maps-spa","provider":"maplibre","instanceId":"doxa-maps-spa-app","title":"DX-Maps"},"element":"doxa-maps-spa","iframeUrl":"./doxa-maps-spa/doxa-maps-spa/app/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-maps-spa/doxa-maps-spa/app/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"doxa-research-map","scriptUrl":"./doxa-research-map/doxa-research-map.js","output":"doxa-maps/doxa-research-map/doxa-research-map.js","integrity":"sha384-LyIs0sqdkyJcj3DESqefXc7jsD96o+H+YVcOIq2kCdwaS+ZeBLqcn//06n1W1blE","elements":["doxa-research-map"],"profiles":[{"profile":"research-map","file":"research-map.vue","description":"The researcher's workbench: every piece a missiologist, demographer or","element":"doxa-research-map","type":"monolithic","isMap":true,"iframeUrl":"./doxa-research-map/research-map/index.html","scriptUrl":"./doxa-research-map/doxa-research-map.js","embed":{"iframe":"\u003ciframe src=\"./doxa-research-map/research-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./doxa-research-map/doxa-research-map.js\" integrity=\"sha384-LyIs0sqdkyJcj3DESqefXc7jsD96o+H+YVcOIq2kCdwaS+ZeBLqcn//06n1W1blE\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdoxa-research-map profile-config='{\"profile\":\"research-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/doxa-research-map>"},"instances":[{"id":"maplibre","title":"Research map — MapLibre (token-free, no search bar)","apiBaseUrl":"","props":{"profile":"research-map","provider":"maplibre","instanceId":"research-map-maplibre"},"element":"doxa-research-map","iframeUrl":"./doxa-research-map/research-map/maplibre/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-research-map/research-map/maplibre/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"doxa-simple-map","scriptUrl":"./doxa-simple-map/doxa-simple-map.js","output":"doxa-maps/doxa-simple-map/doxa-simple-map.js","integrity":"sha384-FtEGLeSRNfBCdmK26IURIxCldSnfKphxRT74XgjftFGzNpvube+ov/EVBFi2gXjo","elements":["doxa-map","doxa-simple-map"],"profiles":[{"profile":"doxa-simple-map","file":"doxa-simple-map.vue","description":"The simple world map, shipped as three presets off ONE prop table —","element":"doxa-map","type":"parameterized","isMap":true,"iframeUrl":"./doxa-simple-map/doxa-simple-map/index.html","scriptUrl":"./doxa-simple-map/doxa-simple-map.js","embed":{"iframe":"\u003ciframe src=\"./doxa-simple-map/doxa-simple-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./doxa-simple-map/doxa-simple-map.js\" integrity=\"sha384-FtEGLeSRNfBCdmK26IURIxCldSnfKphxRT74XgjftFGzNpvube+ov/EVBFi2gXjo\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdoxa-map profile-config='{\"profile\":\"doxa-simple-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/doxa-map>"},"instances":[{"id":"prayer","title":"Prayer Map","apiBaseUrl":"https://pray.doxa.life","props":{"profile":"doxa-simple-map","instanceId":"embed-prayer","dataSource":"pray-tools","tabs":[{"id":"prayer","colorStrategy":"prayer","legend":"prayer","popup":"prayer"}]},"element":"doxa-map","iframeUrl":"./doxa-simple-map/doxa-simple-map/prayer/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-simple-map/doxa-simple-map/prayer/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"engagement","title":"Engagement Map","apiBaseUrl":"https://pray.doxa.life","props":{"profile":"doxa-simple-map","instanceId":"embed-engagement","dataSource":"pray-tools","tabs":[{"id":"engagement","colorStrategy":"engagement","legend":"engagement","popup":"engagement"}]},"element":"doxa-map","iframeUrl":"./doxa-simple-map/doxa-simple-map/engagement/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-simple-map/doxa-simple-map/engagement/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"adoption","title":"Adoption Map","apiBaseUrl":"https://pray.doxa.life","props":{"profile":"doxa-simple-map","instanceId":"embed-adoption","dataSource":"pray-tools","tabs":[{"id":"adoption","colorStrategy":"adoption","legend":"adoption","popup":"adoption"}]},"element":"doxa-map","iframeUrl":"./doxa-simple-map/doxa-simple-map/adoption/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-simple-map/doxa-simple-map/adoption/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"doxa-vision-card","scriptUrl":"./doxa-vision-card/doxa-vision-card.js","output":"doxa-maps/doxa-vision-card/doxa-vision-card.js","integrity":"sha384-2mza3cltN5LQQIrlENG/IVL6Icd9zzcFve3E8R8VWuCdYOGW9uGKFvxcbu6eFfwn","elements":["doxa-vision-card"],"profiles":[{"profile":"doxa-vision-card","file":"doxa-vision-card.vue","description":"The Capability-1 example: ONE folder -> ONE bundle -> ONE element.","element":"doxa-vision-card","type":"parameterized","isMap":false,"iframeUrl":"./doxa-vision-card/doxa-vision-card/index.html","scriptUrl":"./doxa-vision-card/doxa-vision-card.js","embed":{"iframe":"\u003ciframe src=\"./doxa-vision-card/doxa-vision-card/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./doxa-vision-card/doxa-vision-card.js\" integrity=\"sha384-2mza3cltN5LQQIrlENG/IVL6Icd9zzcFve3E8R8VWuCdYOGW9uGKFvxcbu6eFfwn\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdoxa-vision-card profile-config='{\"profile\":\"doxa-vision-card\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/doxa-vision-card>"},"instances":[{"id":"default","title":"Vision card — reach at a glance","apiBaseUrl":"","props":{"profile":"doxa-vision-card","provider":"maplibre","instanceId":"vision-card-default"},"element":"doxa-vision-card","iframeUrl":"./doxa-vision-card/doxa-vision-card/default/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-vision-card/doxa-vision-card/default/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"frontier","title":"Vision card — frontier accent","apiBaseUrl":"","props":{"profile":"doxa-vision-card","provider":"maplibre","instanceId":"vision-card-frontier","accent":"#22d3ee","title":"The last frontier of the gospel.","tagline":"Frontier people groups — where fewer than one in a thousand follow Jesus.","stats":[{"value":"1,910","label":"Frontier groups","note":"under 0.1% believers"},{"value":"2.1B","label":"People","note":"living in frontier settings"},{"value":"0.1%","label":"Christian","note":"or fewer, in each group"}]},"element":"doxa-vision-card","iframeUrl":"./doxa-vision-card/doxa-vision-card/frontier/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-vision-card/doxa-vision-card/frontier/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}],"bundle":"doxa-vision-card"}]},{"bundle":"golden-path-check","scriptUrl":"./golden-path-check/golden-path-check.js","output":"doxa-maps/golden-path-check/golden-path-check.js","integrity":"sha384-1V/sT5SkV0U9yTCK9ELIOFfU1ZIJkInIF6nG3UllJ4dxax3RsEAupSGLJEFK6e14","elements":["golden-path-check"],"profiles":[{"profile":"golden-path-check","file":"golden-path-check.vue","description":"A live self-test of the develop-a-plugin-and-see-it-live path: it reads the built","element":"golden-path-check","type":"single","isMap":false,"iframeUrl":"./golden-path-check/golden-path-check/index.html","scriptUrl":"./golden-path-check/golden-path-check.js","embed":{"iframe":"\u003ciframe src=\"./golden-path-check/golden-path-check/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./golden-path-check/golden-path-check.js\" integrity=\"sha384-1V/sT5SkV0U9yTCK9ELIOFfU1ZIJkInIF6nG3UllJ4dxax3RsEAupSGLJEFK6e14\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgolden-path-check profile-config='{\"profile\":\"golden-path-check\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/golden-path-check>"}}]},{"bundle":"gospel-resources","scriptUrl":"./gospel-resources/gospel-resources.js","output":"doxa-maps/gospel-resources/gospel-resources.js","integrity":"sha384-3KTr1qhgnkpG3VcebvpMExKEBfsMuHLimRhzbv8FBWxHoV+nyVe9vUqI6pcV4gZl","elements":["gospel-resources-map"],"composes":["resources-map","data-tables"],"profiles":[{"profile":"charts","file":"charts.vue","description":"The gap measured by LANGUAGE (ISO 639-3) rather than by people group, because one translation serves every group that speaks it, so counting by group overstates how much work remains.","element":"gospel-resources-map","type":"single","isMap":false,"iframeUrl":"./gospel-resources/charts/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/charts/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-3KTr1qhgnkpG3VcebvpMExKEBfsMuHLimRhzbv8FBWxHoV+nyVe9vUqI6pcV4gZl\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"charts\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}},{"profile":"data-tables","file":"data-tables.vue","description":"Eight tables covering both halves of one question: every gospel resource with its real URL and how much Scripture it is, and the 3,457 people groups where nothing was found with the pools searched recorded per row, plus bridge languages, city bridges, the deaf gap and access against population growth.","element":"gospel-resources-map","type":"single","isMap":false,"iframeUrl":"./gospel-resources/data-tables/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/data-tables/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-3KTr1qhgnkpG3VcebvpMExKEBfsMuHLimRhzbv8FBWxHoV+nyVe9vUqI6pcV4gZl\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}},{"profile":"gospel-dashboard","file":"gospel-dashboard.vue","description":"The gospel map and its tables as one scrolling element: 12,379 people-group pins with the real Scripture, film and Bible-story links for each group's own language, above every resource with its URL and the 3,457 groups where nothing was found, exportable as CSV.","element":"gospel-resources-dashboard","type":"nested-elements-mfe","isMap":true,"iframeUrl":"./gospel-resources/gospel-dashboard/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/gospel-dashboard/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-3KTr1qhgnkpG3VcebvpMExKEBfsMuHLimRhzbv8FBWxHoV+nyVe9vUqI6pcV4gZl\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"gospel-dashboard\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}},{"profile":"resources-list","file":"resources-list.vue","description":"Which people groups have Scripture in their own language and which have none, zero-resource languages first, with every link the verification pass proved and Open Bible Stories labelled as stories rather than as Scripture.","element":"gospel-resources-map","type":"single","isMap":false,"iframeUrl":"./gospel-resources/resources-list/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/resources-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-3KTr1qhgnkpG3VcebvpMExKEBfsMuHLimRhzbv8FBWxHoV+nyVe9vUqI6pcV4gZl\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"resources-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}},{"profile":"resources-map","file":"resources-map.vue","description":"12,379 people-group pins over a country choropleth: tap a pin for the Scripture, audio, film, Bible-story and training links that exist in that group's own language with real URLs, tap a country for every group in it, search by group, language or ISO 639-3 code, and filter to the groups where nothing was found.","element":"gospel-resources-map","type":"single","isMap":true,"iframeUrl":"./gospel-resources/resources-map/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/resources-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-3KTr1qhgnkpG3VcebvpMExKEBfsMuHLimRhzbv8FBWxHoV+nyVe9vUqI6pcV4gZl\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"resources-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}}]},{"bundle":"my-upg-100-list","scriptUrl":"./my-upg-100-list/my-upg-100-list.js","output":"doxa-maps/my-upg-100-list/my-upg-100-list.js","integrity":"sha384-KF3XG9q4VdSvuLQEeK0P1gsKg1cpNOvkLYK5MAIMCUwSsO07z5dI4ffGuc4U6Y+p","elements":["my-upg-100-list-map"],"composes":["my-upg-100-list/upg-100-list","my-upg-100-list/poster-wall"],"profiles":[{"profile":"poster-wall","file":"poster-wall.vue","description":"A wall of printable poster cards, one per 100-list entry, each with a \"Show on map\"","element":"my-upg-100-list-map","type":"single","isMap":false,"iframeUrl":"./my-upg-100-list/poster-wall/index.html","scriptUrl":"./my-upg-100-list/my-upg-100-list.js","embed":{"iframe":"\u003ciframe src=\"./my-upg-100-list/poster-wall/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-KF3XG9q4VdSvuLQEeK0P1gsKg1cpNOvkLYK5MAIMCUwSsO07z5dI4ffGuc4U6Y+p\" crossorigin=\"anonymous\">\u003c/script>\n\u003cmy-upg-100-list-map profile-config='{\"profile\":\"poster-wall\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/my-upg-100-list-map>"}},{"profile":"upg-100-list","file":"upg-100-list.vue","description":"A personal unreached-people-groups list painted as true boundary polygons —","element":"my-upg-100-list-map","type":"single","isMap":true,"iframeUrl":"./my-upg-100-list/upg-100-list/index.html","scriptUrl":"./my-upg-100-list/my-upg-100-list.js","embed":{"iframe":"\u003ciframe src=\"./my-upg-100-list/upg-100-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-KF3XG9q4VdSvuLQEeK0P1gsKg1cpNOvkLYK5MAIMCUwSsO07z5dI4ffGuc4U6Y+p\" crossorigin=\"anonymous\">\u003c/script>\n\u003cmy-upg-100-list-map profile-config='{\"profile\":\"upg-100-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/my-upg-100-list-map>"}},{"profile":"upg-100-mfe","file":"upg-100-mfe.vue","description":"The standalone, shareable and embeddable composite of the my-upg-100-list family — it nests the map","element":"my-upg-100-list-map","type":"nested-elements-mfe","isMap":true,"iframeUrl":"./my-upg-100-list/upg-100-mfe/index.html","scriptUrl":"./my-upg-100-list/my-upg-100-list.js","embed":{"iframe":"\u003ciframe src=\"./my-upg-100-list/upg-100-mfe/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-KF3XG9q4VdSvuLQEeK0P1gsKg1cpNOvkLYK5MAIMCUwSsO07z5dI4ffGuc4U6Y+p\" crossorigin=\"anonymous\">\u003c/script>\n\u003cmy-upg-100-list-map profile-config='{\"profile\":\"upg-100-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/my-upg-100-list-map>"}}]},{"bundle":"people-groups-grid","scriptUrl":"./people-groups-grid/people-groups-grid.js","output":"doxa-maps/people-groups-grid/people-groups-grid.js","integrity":"sha384-8B2T2ckH+v8p2hEnkGruUg4Do5ZFsh31QSxYJYMj4/PN/ccHdgaIyK4dyW2GlUAR","elements":["people-groups-grid"],"profiles":[{"profile":"people-groups-grid","file":"people-groups-grid.vue","description":"The people-groups grid as an owned custom element: card list, search and four","element":"people-groups-grid","type":"parameterized","isMap":false,"iframeUrl":"./people-groups-grid/people-groups-grid/index.html","scriptUrl":"./people-groups-grid/people-groups-grid.js","embed":{"iframe":"\u003ciframe src=\"./people-groups-grid/people-groups-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./people-groups-grid/people-groups-grid.js\" integrity=\"sha384-8B2T2ckH+v8p2hEnkGruUg4Do5ZFsh31QSxYJYMj4/PN/ccHdgaIyK4dyW2GlUAR\" crossorigin=\"anonymous\">\u003c/script>\n\u003cpeople-groups-grid profile-config='{\"profile\":\"people-groups-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/people-groups-grid>"},"instances":[{"id":"people-groups-grid","title":"People Groups Grid — standalone (own search + 4 dropdowns)","apiBaseUrl":"","props":{"profile":"people-groups-grid","provider":"maplibre","instanceId":"people-groups-grid","pray-base-url":"https://pray.doxa.life"},"element":"people-groups-grid","iframeUrl":"./people-groups-grid/people-groups-grid/people-groups-grid/index.html","embed":{"iframe":"\u003ciframe src=\"./people-groups-grid/people-groups-grid/people-groups-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"driven","title":"People Groups Grid — externally driven (controls off, props/events)","apiBaseUrl":"","props":{"profile":"people-groups-grid","provider":"maplibre","instanceId":"people-groups-grid-driven","pray-base-url":"https://pray.doxa.life","show-search":"false","show-filters":"false"},"element":"people-groups-grid","iframeUrl":"./people-groups-grid/people-groups-grid/driven/index.html","embed":{"iframe":"\u003ciframe src=\"./people-groups-grid/people-groups-grid/driven/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"plugin-studio","scriptUrl":"./plugin-studio/plugin-studio.js","output":"doxa-maps/plugin-studio/plugin-studio.js","integrity":"sha384-2RlLFRU2XdjBN7w+FPguj8INgj57JFg4IFT2AmdefGnR9QQLehbiiAffV45LcsFH","elements":["plugin-studio"],"composes":["bp-big-picture","people-groups-grid","doxa-research-map","doxa-simple-map","cities-internet-map","gospel-resources-map","my-upg-100-list-map","doxa-vision-card","all-people-groups","research-dashboard"],"profiles":[{"profile":"plugin-studio","file":"plugin-studio.vue","description":"The developer's viewing surface: a sidebar that is the composability ladder","element":"plugin-studio","type":"nested-mfe-spa","isMap":false,"iframeUrl":"./plugin-studio/plugin-studio/index.html","scriptUrl":"./plugin-studio/plugin-studio.js","embed":{"iframe":"\u003ciframe src=\"./plugin-studio/plugin-studio/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./plugin-studio/plugin-studio.js\" integrity=\"sha384-2RlLFRU2XdjBN7w+FPguj8INgj57JFg4IFT2AmdefGnR9QQLehbiiAffV45LcsFH\" crossorigin=\"anonymous\">\u003c/script>\n\u003cplugin-studio profile-config='{\"profile\":\"plugin-studio\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/plugin-studio>"},"instances":[{"id":"studio","title":"Plugin Studio — every element by capability 5 -> 1 (developer studio)","apiBaseUrl":"","props":{"profile":"plugin-studio","provider":"maplibre","instanceId":"plugin-studio","title":"Plugin Studio"},"element":"plugin-studio","iframeUrl":"./plugin-studio/plugin-studio/studio/index.html","embed":{"iframe":"\u003ciframe src=\"./plugin-studio/plugin-studio/studio/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"prayer-walk-planner","scriptUrl":"./prayer-walk-planner/prayer-walk-planner.js","output":"doxa-maps/prayer-walk-planner/prayer-walk-planner.js","integrity":"sha384-VZxxlIqmR6mKdB1Dx6143LxEyI3POl9ks045yApFu4M4ZlLxsRH3+dCdEMpJb2Vw","elements":["prayer-walk-planner"],"profiles":[{"profile":"prayer-walk-planner","file":"prayer-walk-planner.vue","description":"A simple polygon-drawing tool for planning prayer-walking routes.","element":"prayer-walk-planner","type":"single","isMap":true,"iframeUrl":"./prayer-walk-planner/prayer-walk-planner/index.html","scriptUrl":"./prayer-walk-planner/prayer-walk-planner.js","embed":{"iframe":"\u003ciframe src=\"./prayer-walk-planner/prayer-walk-planner/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./prayer-walk-planner/prayer-walk-planner.js\" integrity=\"sha384-VZxxlIqmR6mKdB1Dx6143LxEyI3POl9ks045yApFu4M4ZlLxsRH3+dCdEMpJb2Vw\" crossorigin=\"anonymous\">\u003c/script>\n\u003cprayer-walk-planner profile-config='{\"profile\":\"prayer-walk-planner\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/prayer-walk-planner>"}}]},{"bundle":"regions-dashboard","scriptUrl":"./regions-dashboard/regions-dashboard.js","output":"doxa-maps/regions-dashboard/regions-dashboard.js","integrity":"sha384-jj4JBxH2lbWxtqsuDMdk7yN2IiLQfLFmwLVj8nPk33JRqqSaaz3XOjz3dDxAG+3c","elements":["regions-dashboard"],"composes":["regions-dashboard/regions-list","regions-dashboard/region-dashboards"],"profiles":[{"profile":"region-dashboards","file":"region-dashboards.vue","description":"The dashboard half of the Driver's 2-tab Regions element: given a region (or a","element":"regions-dashboard","type":"single","isMap":true,"iframeUrl":"./regions-dashboard/region-dashboards/index.html","scriptUrl":"./regions-dashboard/regions-dashboard.js","embed":{"iframe":"\u003ciframe src=\"./regions-dashboard/region-dashboards/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-jj4JBxH2lbWxtqsuDMdk7yN2IiLQfLFmwLVj8nPk33JRqqSaaz3XOjz3dDxAG+3c\" crossorigin=\"anonymous\">\u003c/script>\n\u003cregions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/regions-dashboard>"}},{"profile":"regions-list","file":"regions-list.vue","description":"A refactor of DX-life's /regions index page (app/pages/regions/index.vue) into","element":"regions-dashboard","type":"single","isMap":true,"iframeUrl":"./regions-dashboard/regions-list/index.html","scriptUrl":"./regions-dashboard/regions-dashboard.js","embed":{"iframe":"\u003ciframe src=\"./regions-dashboard/regions-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-jj4JBxH2lbWxtqsuDMdk7yN2IiLQfLFmwLVj8nPk33JRqqSaaz3XOjz3dDxAG+3c\" crossorigin=\"anonymous\">\u003c/script>\n\u003cregions-dashboard profile-config='{\"profile\":\"regions-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/regions-dashboard>"}},{"profile":"regions-mfe","file":"regions-mfe.vue","description":"The composite the Driver asked for: ONE element carrying the SELECT VIEW switcher","element":"regions-dashboard","type":"nested-elements-mfe","isMap":true,"iframeUrl":"./regions-dashboard/regions-mfe/index.html","scriptUrl":"./regions-dashboard/regions-dashboard.js","embed":{"iframe":"\u003ciframe src=\"./regions-dashboard/regions-mfe/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-jj4JBxH2lbWxtqsuDMdk7yN2IiLQfLFmwLVj8nPk33JRqqSaaz3XOjz3dDxAG+3c\" crossorigin=\"anonymous\">\u003c/script>\n\u003cregions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/regions-dashboard>"}}]},{"bundle":"research-dashboard","scriptUrl":"./research-dashboard/research-dashboard.js","output":"doxa-maps/research-dashboard/research-dashboard.js","integrity":"sha384-tAUIe2wERKg/ZRvINilfjrgfNYZeix7iSXYTJI1iSvf3eRtafkVt1a8cHIGyyRTF","elements":["research-dashboard-map"],"profiles":[{"profile":"research-dashboard","file":"research-dashboard.vue","description":"Coordinated-Multiple-Views research dashboard for 10/40-window UPGs (live pray.doxa.life): docked facet rail + map-as-hero + linked table/charts, brushing-and-linking over one in-memory store.","element":"research-dashboard-map","type":"monolithic","isMap":true,"iframeUrl":"./research-dashboard/research-dashboard/index.html","scriptUrl":"./research-dashboard/research-dashboard.js","embed":{"iframe":"\u003ciframe src=\"./research-dashboard/research-dashboard/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./research-dashboard/research-dashboard.js\" integrity=\"sha384-tAUIe2wERKg/ZRvINilfjrgfNYZeix7iSXYTJI1iSvf3eRtafkVt1a8cHIGyyRTF\" crossorigin=\"anonymous\">\u003c/script>\n\u003cresearch-dashboard-map profile-config='{\"profile\":\"research-dashboard\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/research-dashboard-map>"},"bundle":"research-dashboard"}]},{"bundle":"research-map-plus-grid","scriptUrl":"./research-map-plus-grid/research-map-plus-grid.js","output":"doxa-maps/research-map-plus-grid/research-map-plus-grid.js","integrity":"sha384-sOkaMV0UFr2uNXfoJpRvaD+gHD6xFlkmpR7MzEwwFdarYdid8aN9Nj1Y8TqQJuFo","elements":["research-map-plus-grid"],"composes":["doxa-research-map","people-groups-grid"],"profiles":[{"profile":"research-map-plus-grid","file":"research-map-plus-grid.vue","description":"The monolithic 7-tab research map (cap-3) on top, the People Groups grid beneath,","element":"research-map-plus-grid","type":"nested-elements-mfe","isMap":false,"iframeUrl":"./research-map-plus-grid/research-map-plus-grid/index.html","scriptUrl":"./research-map-plus-grid/research-map-plus-grid.js","embed":{"iframe":"\u003ciframe src=\"./research-map-plus-grid/research-map-plus-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./research-map-plus-grid/research-map-plus-grid.js\" integrity=\"sha384-sOkaMV0UFr2uNXfoJpRvaD+gHD6xFlkmpR7MzEwwFdarYdid8aN9Nj1Y8TqQJuFo\" crossorigin=\"anonymous\">\u003c/script>\n\u003cresearch-map-plus-grid profile-config='{\"profile\":\"research-map-plus-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/research-map-plus-grid>"},"instances":[{"id":"default","title":"default","apiBaseUrl":"","props":{"profile":"research-map-plus-grid"},"element":"research-map-plus-grid","iframeUrl":"./research-map-plus-grid/research-map-plus-grid/default/index.html","embed":{"iframe":"\u003ciframe src=\"./research-map-plus-grid/research-map-plus-grid/default/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"stack-demo","scriptUrl":"./stack-demo/stack-demo.js","output":"doxa-maps/stack-demo/stack-demo.js","integrity":"sha384-gnwM6s+puf1K60Nl7crQcC2QC+9BxwpkaTx4OepLZ8VUCraZc+aRlWpsb6nj6Gyf","elements":["stack-demo"],"composes":["research-dashboard-map","people-groups-grid"],"profiles":[{"profile":"stack-demo","file":"stack-demo.vue","description":"Groups TWO independent elements TOP-TO-BOTTOM so you can embed the pair on a page and","element":"stack-demo","type":"nested-elements-mfe","isMap":false,"iframeUrl":"./stack-demo/stack-demo/index.html","scriptUrl":"./stack-demo/stack-demo.js","embed":{"iframe":"\u003ciframe src=\"./stack-demo/stack-demo/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./stack-demo/stack-demo.js\" integrity=\"sha384-gnwM6s+puf1K60Nl7crQcC2QC+9BxwpkaTx4OepLZ8VUCraZc+aRlWpsb6nj6Gyf\" crossorigin=\"anonymous\">\u003c/script>\n\u003cstack-demo profile-config='{\"profile\":\"stack-demo\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/stack-demo>"},"instances":[{"id":"pair","title":"pair","apiBaseUrl":"","props":{"profile":"stack-demo"},"element":"stack-demo","iframeUrl":"./stack-demo/stack-demo/pair/index.html","embed":{"iframe":"\u003ciframe src=\"./stack-demo/stack-demo/pair/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"template-bundle","scriptUrl":"./template-bundle/template-bundle.js","output":"doxa-maps/template-bundle/template-bundle.js","integrity":"sha384-Arx3XL5Mhdv0VcU7RX9gwggLBjx3SH4WFltOaoEJ6mW/jw/E6wgGQHIOkFyRtBRd","elements":["template-bundle"],"profiles":[{"profile":"template-map-a","file":"template-map-a.vue","description":"Minimal example profile A — a colored placeholder, no Mapbox or data.","element":"template-bundle","type":"single","isMap":false,"iframeUrl":"./template-bundle/template-map-a/index.html","scriptUrl":"./template-bundle/template-bundle.js","embed":{"iframe":"\u003ciframe src=\"./template-bundle/template-map-a/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./template-bundle/template-bundle.js\" integrity=\"sha384-Arx3XL5Mhdv0VcU7RX9gwggLBjx3SH4WFltOaoEJ6mW/jw/E6wgGQHIOkFyRtBRd\" crossorigin=\"anonymous\">\u003c/script>\n\u003ctemplate-bundle profile-config='{\"profile\":\"template-map-a\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/template-bundle>"},"bundle":"template-bundle"},{"profile":"template-map-b","file":"template-map-b.vue","description":"Minimal example profile B — a second profile in the same bundle.","element":"template-bundle","type":"single","isMap":false,"iframeUrl":"./template-bundle/template-map-b/index.html","scriptUrl":"./template-bundle/template-bundle.js","embed":{"iframe":"\u003ciframe src=\"./template-bundle/template-map-b/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./template-bundle/template-bundle.js\" integrity=\"sha384-Arx3XL5Mhdv0VcU7RX9gwggLBjx3SH4WFltOaoEJ6mW/jw/E6wgGQHIOkFyRtBRd\" crossorigin=\"anonymous\">\u003c/script>\n\u003ctemplate-bundle profile-config='{\"profile\":\"template-map-b\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/template-bundle>"},"bundle":"template-bundle"}]},{"bundle":"upg-neighbor","scriptUrl":"./upg-neighbor/upg-neighbor.js","output":"doxa-maps/upg-neighbor/upg-neighbor.js","integrity":"sha384-JDJr4qoVZuiSi/rvgdzeuUNrzf7vjPdyh/g8dg7X8RHkZk/Y+tYXIQ3gpEzrU07q","elements":["upg-neighbor"],"profiles":[{"profile":"upg-neighbor","file":"upg-neighbor.vue","description":"Rescues the five pre-bundler experimental maps that live inside the legacy","element":"upg-neighbor","type":"parameterized","isMap":false,"iframeUrl":"./upg-neighbor/upg-neighbor/index.html","scriptUrl":"./upg-neighbor/upg-neighbor.js","embed":{"iframe":"\u003ciframe src=\"./upg-neighbor/upg-neighbor/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./upg-neighbor/upg-neighbor.js\" integrity=\"sha384-JDJr4qoVZuiSi/rvgdzeuUNrzf7vjPdyh/g8dg7X8RHkZk/Y+tYXIQ3gpEzrU07q\" crossorigin=\"anonymous\">\u003c/script>\n\u003cupg-neighbor profile-config='{\"profile\":\"upg-neighbor\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/upg-neighbor>"},"instances":[{"id":"send-map","title":"Send Map (legacy)","apiBaseUrl":"","props":{"profile":"upg-neighbor","legacyElement":"send-map","legacyTitle":"Send Map"},"element":"upg-neighbor","iframeUrl":"./upg-neighbor/upg-neighbor/send-map/index.html","embed":{"iframe":"\u003ciframe src=\"./upg-neighbor/upg-neighbor/send-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"upg-neighbors","title":"UPG Neighbors (legacy)","apiBaseUrl":"","props":{"profile":"upg-neighbor","legacyElement":"upg-neighbors","legacyTitle":"UPG Neighbors"},"element":"upg-neighbor","iframeUrl":"./upg-neighbor/upg-neighbor/upg-neighbors/index.html","embed":{"iframe":"\u003ciframe src=\"./upg-neighbor/upg-neighbor/upg-neighbors/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"lang-cluster","title":"Language Clusters (legacy)","apiBaseUrl":"","props":{"profile":"upg-neighbor","legacyElement":"lang-cluster","legacyTitle":"Language Clusters"},"element":"upg-neighbor","iframeUrl":"./upg-neighbor/upg-neighbor/lang-cluster/index.html","embed":{"iframe":"\u003ciframe src=\"./upg-neighbor/upg-neighbor/lang-cluster/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"bloom-cockpit","title":"Bloom Cockpit (legacy)","apiBaseUrl":"","props":{"profile":"upg-neighbor","legacyElement":"bloom-cockpit","legacyTitle":"Bloom Cockpit"},"element":"upg-neighbor","iframeUrl":"./upg-neighbor/upg-neighbor/bloom-cockpit/index.html","embed":{"iframe":"\u003ciframe src=\"./upg-neighbor/upg-neighbor/bloom-cockpit/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"flower-mesh","title":"Flower Mesh (legacy)","apiBaseUrl":"","props":{"profile":"upg-neighbor","legacyElement":"flower-mesh","legacyTitle":"Flower Mesh"},"element":"upg-neighbor","iframeUrl":"./upg-neighbor/upg-neighbor/flower-mesh/index.html","embed":{"iframe":"\u003ciframe src=\"./upg-neighbor/upg-neighbor/flower-mesh/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]}]}; \n\n" + "script": "\n\n" } }, { @@ -908,7 +908,7 @@ "scriptUrl": "./regions-dashboard/regions-dashboard.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" } }, { @@ -922,7 +922,7 @@ "scriptUrl": "./regions-dashboard/regions-dashboard.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" } } ] diff --git a/public/doxa-maps/regions-dashboard/region-dashboards/index.html b/public/doxa-maps/regions-dashboard/region-dashboards/index.html index f7170e11d..f235b41bb 100644 --- a/public/doxa-maps/regions-dashboard/region-dashboards/index.html +++ b/public/doxa-maps/regions-dashboard/region-dashboards/index.html @@ -29,7 +29,7 @@ - + - + - +