Big Picture's header speaks the reader's language, and both composites turn round for it
TWO DEFECTS FROM THE UNIVERSAL-PROPS MATRIX, and they are the same defect at two
levels: a component can be perfectly localized and still show English, and a
page can be perfectly translated and still be laid out backwards.
★ THE HEADER HAD NO i18n AT ALL. Every label at the top of Big Picture was an
English literal passed as a PROP — FilterDropdown translates nothing, it renders
what the caller hands it — so Region, Bloc, People Group and Religion sat in
English above an Arabic page. They now read the catalogue, grid namespace first
because this header drives the cap-2 grid and its sibling reads the same keys.
Reset uses controls.reset_all, so its English becomes "Reset all": an existing
entry rather than invented wording, and arguably more accurate, since it clears
the search too.
Its search placeholder and two aria-labels have no usable entry — the nearest,
grid.search, drops "or countries", which this search actually covers — so they
are on the DECIDE card rather than quietly reworded. They are invisible to
check:composite-locale-leaks by design: its criterion is that the catalogue
already holds the string, and it does not.
★ RTL IS A DIRECTION, NOT A TRANSLATION. createAppI18n reflects an RTL locale
onto document.documentElement, which is right for a leaf page it owns and
useless for an element dropped into somebody else's page — the case these
composites exist for. A host asking for Arabic got Arabic WORDS in a
left-to-right layout: readable glyphs in the wrong place, which reads as a
styling quirk rather than the bug it is.
Both composites now set `dir` on their custom-element HOST rather than on the
layout inside it, and that choice is the fix: `dir` takes effect through the
inherited CSS `direction`, and inheritance crosses shadow boundaries, so one
attribute covers the composite's own chrome AND every nested element beneath it
— including the grid half the audit found bare. Only ever SET, never cleared: a
host page that declares its own dir owns that decision.
VERIFIED HEADLESS: three bundles build; setAttribute("dir","rtl") is present in
both composites and controls.reset_all in big-picture; freshness and SRI clean,
nothing else stale; gates:pre 6/6. NEEDS EYES: Big Picture and Simple Research
at ?lang=ar — header labels in Arabic, and the layout actually mirrored.
This commit is contained in:
parent
b5d849f746
commit
08f89f55b3
15 changed files with 133 additions and 70 deletions
|
|
@ -39,6 +39,19 @@ import { ref, reactive, watch, computed, onMounted, getCurrentInstance } from 'v
|
|||
// SHARED search primitives (one source of truth for BOTH cap-2 grid + cap-1 dashboard).
|
||||
import SearchBar from '@map/components/search/SearchBar.vue'
|
||||
import FilterDropdown from '@map/components/search/FilterDropdown.vue'
|
||||
import { tStatic } from '@map/i18n/index.js'
|
||||
|
||||
// ★ THIS HEADER HAD NO i18n AT ALL, and it is the top of Big Picture. Every label below was an
|
||||
// English literal passed as a PROP — FilterDropdown itself translates nothing, it renders what the
|
||||
// caller hands it, so a perfectly localized component showed "Region" on an Arabic page. Read
|
||||
// through tStatic rather than useI18n, for the reason the rest of this tree gives: these components
|
||||
// mount inside custom elements that install no i18n plugin, and an unguarded useI18n() throws on
|
||||
// the way in and takes the whole header with it.
|
||||
//
|
||||
// The grid namespace first, because this header drives the cap-2 grid and its sibling reads the
|
||||
// same keys; dashboard.* second; the English literal last, so a missing key degrades to what
|
||||
// shipped rather than to a key name.
|
||||
const L = (key, en) => tStatic('grid.' + key) || tStatic('dashboard.' + key) || en
|
||||
|
||||
const props = defineProps({
|
||||
// live count of matched groups, pushed back down by the composite for display.
|
||||
|
|
@ -160,22 +173,22 @@ onMounted(loadOptions)
|
|||
<!-- The FOUR SHARED FilterDropdowns (replace the two native <select>s). -->
|
||||
<div class="rh-controls">
|
||||
<FilterDropdown
|
||||
label="Region" name="wagf_region"
|
||||
:label="L('wagf_region', 'Region')" name="wagf_region"
|
||||
:options="options.wagf_region" :value="sel.wagf_region"
|
||||
@filter-change="onFilterChange" @filter-clear="onFilterClear"
|
||||
/>
|
||||
<FilterDropdown
|
||||
label="Bloc" name="wagf_block"
|
||||
:label="L('wagf_block', 'Bloc')" name="wagf_block"
|
||||
:options="options.wagf_block" :value="sel.wagf_block"
|
||||
@filter-change="onFilterChange" @filter-clear="onFilterClear"
|
||||
/>
|
||||
<FilterDropdown
|
||||
label="People Group" name="rop1"
|
||||
:label="L('rop1', 'People Group')" name="rop1"
|
||||
:options="options.rop1" :value="sel.rop1"
|
||||
@filter-change="onFilterChange" @filter-clear="onFilterClear"
|
||||
/>
|
||||
<FilterDropdown
|
||||
label="Religion" name="religion"
|
||||
:label="L('religion', 'Religion')" name="religion"
|
||||
:options="options.religion" :value="sel.religion"
|
||||
@filter-change="onFilterChange" @filter-clear="onFilterClear"
|
||||
/>
|
||||
|
|
@ -185,7 +198,7 @@ onMounted(loadOptions)
|
|||
type="button"
|
||||
aria-label="Reset all filters and search"
|
||||
@click="reset"
|
||||
>Reset</button>
|
||||
>{{ L('reset_all', '') || tStatic('controls.reset_all') || 'Reset' }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
* Same "import the REAL components, no fork" discipline as big-picture: the grid is the exact
|
||||
* people-groups-grid component; the dashboard is the exact research-dashboard component.
|
||||
*/
|
||||
import { reactive, provide, inject, ref, computed, watchEffect } from 'vue'
|
||||
import { reactive, provide, inject, ref, computed, watchEffect, watch, onMounted, getCurrentInstance } from 'vue'
|
||||
import { SUPPORTED_LOCALES, setRuntimeLocale } from '@map/i18n/index.js'
|
||||
import { resolveEmbedBase } from '@map/utils/embedBase.js'
|
||||
import { useSharedMapToken, publishMapToken } from '@map/composables/useSharedMapToken.js'
|
||||
|
|
@ -282,6 +282,31 @@ const hostLang = computed(() => {
|
|||
})
|
||||
watchEffect(() => { if (hostLang.value) setRuntimeLocale(hostLang.value) })
|
||||
|
||||
// ★ RTL IS A DIRECTION, NOT A TRANSLATION, and nothing was setting it here.
|
||||
// createAppI18n reflects an RTL locale onto document.documentElement — right for a leaf page it
|
||||
// owns, useless for an element dropped into somebody else's page, which is the case this composite
|
||||
// exists for. A host that asks for Arabic through profile-config got Arabic WORDS in a
|
||||
// left-to-right layout: readable glyphs in the wrong place, which reads as a styling quirk rather
|
||||
// than the bug it is.
|
||||
//
|
||||
// Set on the custom-element HOST rather than on the layout inside it, deliberately: `dir` takes
|
||||
// effect through the inherited CSS `direction`, and inheritance crosses shadow boundaries — so one
|
||||
// attribute on the host covers this composite's own chrome AND every nested element beneath it,
|
||||
// which is the half the audit found missing. Only ever SET, never cleared: a host page that already
|
||||
// declares its own dir owns that decision.
|
||||
const textDir = computed(() => {
|
||||
const l = hostLang.value || getRuntimeLocale() || detectLocale()
|
||||
return RTL_LOCALES.has(l) ? 'rtl' : 'ltr'
|
||||
})
|
||||
function reflectDir() {
|
||||
try {
|
||||
const host = getCurrentInstance()?.proxy?.$el?.getRootNode?.()?.host
|
||||
if (host && textDir.value === 'rtl') host.setAttribute('dir', 'rtl')
|
||||
} catch (_) { /* no host (SSR/tests) — nothing to reflect */ }
|
||||
}
|
||||
onMounted(reflectDir)
|
||||
watch(textDir, reflectDir)
|
||||
|
||||
// ★ AND PROVIDE IT THE WAY ProfileLoader WOULD. This composite bakes its children in rather than
|
||||
// mounting them through ProfileLoader, and ProfileLoader is the ONLY provider of 'mapboxToken' in
|
||||
// the repo — so DashboardMapPanel's inject('mapboxToken', ref('')) fell through to its empty
|
||||
|
|
|
|||
|
|
@ -127,6 +127,31 @@ const hostLang = computed(() => {
|
|||
})
|
||||
watchEffect(() => { if (hostLang.value) setRuntimeLocale(hostLang.value) })
|
||||
|
||||
// ★ RTL IS A DIRECTION, NOT A TRANSLATION, and nothing was setting it here.
|
||||
// createAppI18n reflects an RTL locale onto document.documentElement — right for a leaf page it
|
||||
// owns, useless for an element dropped into somebody else's page, which is the case this composite
|
||||
// exists for. A host that asks for Arabic through profile-config got Arabic WORDS in a
|
||||
// left-to-right layout: readable glyphs in the wrong place, which reads as a styling quirk rather
|
||||
// than the bug it is.
|
||||
//
|
||||
// Set on the custom-element HOST rather than on the layout inside it, deliberately: `dir` takes
|
||||
// effect through the inherited CSS `direction`, and inheritance crosses shadow boundaries — so one
|
||||
// attribute on the host covers this composite's own chrome AND every nested element beneath it,
|
||||
// which is the half the audit found missing. Only ever SET, never cleared: a host page that already
|
||||
// declares its own dir owns that decision.
|
||||
const textDir = computed(() => {
|
||||
const l = hostLang.value || getRuntimeLocale() || detectLocale()
|
||||
return RTL_LOCALES.has(l) ? 'rtl' : 'ltr'
|
||||
})
|
||||
function reflectDir() {
|
||||
try {
|
||||
const host = getCurrentInstance()?.proxy?.$el?.getRootNode?.()?.host
|
||||
if (host && textDir.value === 'rtl') host.setAttribute('dir', 'rtl')
|
||||
} catch (_) { /* no host (SSR/tests) — nothing to reflect */ }
|
||||
}
|
||||
onMounted(reflectDir)
|
||||
watch(textDir, reflectDir)
|
||||
|
||||
// The absolute url this composite is shared and iframed as. Built here rather than written as a
|
||||
// literal because resolveEmbedBase() walks profileConfig.embedBaseUrl → window.MAP_EMBED_BASE_URL →
|
||||
// the root this bundle derives from its OWN script url, so the link is right on doxa.life, on
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -37,7 +37,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <bp-big-picture> custom element. -->
|
||||
<script src="../../big-picture.js" integrity="sha384-CaUw4BXi2ILBm6z80vT65HC5TSuDBz4pDGLJkTudRnUTQ0+erjMyPI59vIIwqkgo" crossorigin="anonymous"></script>
|
||||
<script src="../../big-picture.js" integrity="sha384-0xFVMAmShJjqR4UFtdLG7gDmcmHCZHl/BaWTmZ93g5ff49tVn1YG8gvZ3rwpIR4h" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <bp-big-picture> custom element. -->
|
||||
<script src="../../big-picture.js" integrity="sha384-CaUw4BXi2ILBm6z80vT65HC5TSuDBz4pDGLJkTudRnUTQ0+erjMyPI59vIIwqkgo" crossorigin="anonymous"></script>
|
||||
<script src="../../big-picture.js" integrity="sha384-0xFVMAmShJjqR4UFtdLG7gDmcmHCZHl/BaWTmZ93g5ff49tVn1YG8gvZ3rwpIR4h" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <bp-big-picture> custom element. -->
|
||||
<script src="../big-picture.js" integrity="sha384-CaUw4BXi2ILBm6z80vT65HC5TSuDBz4pDGLJkTudRnUTQ0+erjMyPI59vIIwqkgo" crossorigin="anonymous"></script>
|
||||
<script src="../big-picture.js" integrity="sha384-0xFVMAmShJjqR4UFtdLG7gDmcmHCZHl/BaWTmZ93g5ff49tVn1YG8gvZ3rwpIR4h" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -40,7 +40,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <dashboard-plus-grid> custom element. -->
|
||||
<script src="../../dashboard-plus-grid.js" integrity="sha384-/E4UhCPqZAn+gwwHuwkLrLgbfrTwGp8x6tgsdDo/pqDHttv0z7Ln7r7wfPYSHSAU" crossorigin="anonymous"></script>
|
||||
<script src="../../dashboard-plus-grid.js" integrity="sha384-XS0fK8cqqG2MV2jFBZ+umEfUozbhowTmX84gIyJhE3pXP1303tA+AsQhCDp+wU10" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <dashboard-plus-grid> custom element. -->
|
||||
<script src="../dashboard-plus-grid.js" integrity="sha384-/E4UhCPqZAn+gwwHuwkLrLgbfrTwGp8x6tgsdDo/pqDHttv0z7Ln7r7wfPYSHSAU" crossorigin="anonymous"></script>
|
||||
<script src="../dashboard-plus-grid.js" integrity="sha384-XS0fK8cqqG2MV2jFBZ+umEfUozbhowTmX84gIyJhE3pXP1303tA+AsQhCDp+wU10" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@
|
|||
"bundle": "big-picture",
|
||||
"scriptUrl": "./big-picture/big-picture.js",
|
||||
"output": "dx-maps/big-picture/big-picture.js",
|
||||
"integrity": "sha384-CaUw4BXi2ILBm6z80vT65HC5TSuDBz4pDGLJkTudRnUTQ0+erjMyPI59vIIwqkgo",
|
||||
"integrity": "sha384-0xFVMAmShJjqR4UFtdLG7gDmcmHCZHl/BaWTmZ93g5ff49tVn1YG8gvZ3rwpIR4h",
|
||||
"elements": [
|
||||
"bp-big-picture",
|
||||
"bp-research-header",
|
||||
|
|
@ -61,7 +61,7 @@
|
|||
"scriptUrl": "./big-picture/big-picture.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./big-picture/big-picture/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./big-picture/big-picture.js\" integrity=\"sha384-CaUw4BXi2ILBm6z80vT65HC5TSuDBz4pDGLJkTudRnUTQ0+erjMyPI59vIIwqkgo\" crossorigin=\"anonymous\"></script>\n<bp-big-picture profile-config='{\"profile\":\"big-picture\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></bp-big-picture>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./big-picture/big-picture.js\" integrity=\"sha384-0xFVMAmShJjqR4UFtdLG7gDmcmHCZHl/BaWTmZ93g5ff49tVn1YG8gvZ3rwpIR4h\" crossorigin=\"anonymous\"></script>\n<bp-big-picture profile-config='{\"profile\":\"big-picture\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></bp-big-picture>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -215,7 +215,7 @@
|
|||
"bundle": "dashboard-plus-grid",
|
||||
"scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js",
|
||||
"output": "dx-maps/dashboard-plus-grid/dashboard-plus-grid.js",
|
||||
"integrity": "sha384-/E4UhCPqZAn+gwwHuwkLrLgbfrTwGp8x6tgsdDo/pqDHttv0z7Ln7r7wfPYSHSAU",
|
||||
"integrity": "sha384-XS0fK8cqqG2MV2jFBZ+umEfUozbhowTmX84gIyJhE3pXP1303tA+AsQhCDp+wU10",
|
||||
"elements": [
|
||||
"dashboard-plus-grid"
|
||||
],
|
||||
|
|
@ -235,7 +235,7 @@
|
|||
"scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./dashboard-plus-grid/dashboard-plus-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<!-- Mapbox engine, fetched early; remove this line if you set \"provider\":\"maplibre\" -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-/E4UhCPqZAn+gwwHuwkLrLgbfrTwGp8x6tgsdDo/pqDHttv0z7Ln7r7wfPYSHSAU\" crossorigin=\"anonymous\"></script>\n<dashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dashboard-plus-grid>"
|
||||
"script": "<!-- Mapbox engine, fetched early; remove this line if you set \"provider\":\"maplibre\" -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-XS0fK8cqqG2MV2jFBZ+umEfUozbhowTmX84gIyJhE3pXP1303tA+AsQhCDp+wU10\" crossorigin=\"anonymous\"></script>\n<dashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dashboard-plus-grid>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -971,7 +971,7 @@
|
|||
"bundle": "research-map-plus-grid",
|
||||
"scriptUrl": "./research-map-plus-grid/research-map-plus-grid.js",
|
||||
"output": "dx-maps/research-map-plus-grid/research-map-plus-grid.js",
|
||||
"integrity": "sha384-62O+v5n8jNn2QTXnNEG6Y5/5lXaSyRL1SQsJWtdfbadVpNG+7EiKrDTRRu915RYF",
|
||||
"integrity": "sha384-2CUBq9yq/4Jk+lNNnpyyhulhen1xrrQd67T+45oqVHsVO6R36aplTZKWgKT1OHL9",
|
||||
"elements": [
|
||||
"research-map-plus-grid"
|
||||
],
|
||||
|
|
@ -991,7 +991,7 @@
|
|||
"scriptUrl": "./research-map-plus-grid/research-map-plus-grid.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe 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></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./research-map-plus-grid/research-map-plus-grid.js\" integrity=\"sha384-62O+v5n8jNn2QTXnNEG6Y5/5lXaSyRL1SQsJWtdfbadVpNG+7EiKrDTRRu915RYF\" crossorigin=\"anonymous\"></script>\n<research-map-plus-grid profile-config='{\"profile\":\"research-map-plus-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></research-map-plus-grid>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./research-map-plus-grid/research-map-plus-grid.js\" integrity=\"sha384-2CUBq9yq/4Jk+lNNnpyyhulhen1xrrQd67T+45oqVHsVO6R36aplTZKWgKT1OHL9\" crossorigin=\"anonymous\"></script>\n<research-map-plus-grid profile-config='{\"profile\":\"research-map-plus-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></research-map-plus-grid>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@
|
|||
"bundle": "big-picture",
|
||||
"scriptUrl": "./big-picture/big-picture.js",
|
||||
"output": "dx-maps/big-picture/big-picture.js",
|
||||
"integrity": "sha384-CaUw4BXi2ILBm6z80vT65HC5TSuDBz4pDGLJkTudRnUTQ0+erjMyPI59vIIwqkgo",
|
||||
"integrity": "sha384-0xFVMAmShJjqR4UFtdLG7gDmcmHCZHl/BaWTmZ93g5ff49tVn1YG8gvZ3rwpIR4h",
|
||||
"elements": [
|
||||
"bp-big-picture",
|
||||
"bp-research-header",
|
||||
|
|
@ -61,7 +61,7 @@
|
|||
"scriptUrl": "./big-picture/big-picture.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./big-picture/big-picture/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./big-picture/big-picture.js\" integrity=\"sha384-CaUw4BXi2ILBm6z80vT65HC5TSuDBz4pDGLJkTudRnUTQ0+erjMyPI59vIIwqkgo\" crossorigin=\"anonymous\"></script>\n<bp-big-picture profile-config='{\"profile\":\"big-picture\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></bp-big-picture>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./big-picture/big-picture.js\" integrity=\"sha384-0xFVMAmShJjqR4UFtdLG7gDmcmHCZHl/BaWTmZ93g5ff49tVn1YG8gvZ3rwpIR4h\" crossorigin=\"anonymous\"></script>\n<bp-big-picture profile-config='{\"profile\":\"big-picture\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></bp-big-picture>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -215,7 +215,7 @@
|
|||
"bundle": "dashboard-plus-grid",
|
||||
"scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js",
|
||||
"output": "dx-maps/dashboard-plus-grid/dashboard-plus-grid.js",
|
||||
"integrity": "sha384-/E4UhCPqZAn+gwwHuwkLrLgbfrTwGp8x6tgsdDo/pqDHttv0z7Ln7r7wfPYSHSAU",
|
||||
"integrity": "sha384-XS0fK8cqqG2MV2jFBZ+umEfUozbhowTmX84gIyJhE3pXP1303tA+AsQhCDp+wU10",
|
||||
"elements": [
|
||||
"dashboard-plus-grid"
|
||||
],
|
||||
|
|
@ -235,7 +235,7 @@
|
|||
"scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./dashboard-plus-grid/dashboard-plus-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<!-- Mapbox engine, fetched early; remove this line if you set \"provider\":\"maplibre\" -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-/E4UhCPqZAn+gwwHuwkLrLgbfrTwGp8x6tgsdDo/pqDHttv0z7Ln7r7wfPYSHSAU\" crossorigin=\"anonymous\"></script>\n<dashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dashboard-plus-grid>"
|
||||
"script": "<!-- Mapbox engine, fetched early; remove this line if you set \"provider\":\"maplibre\" -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-XS0fK8cqqG2MV2jFBZ+umEfUozbhowTmX84gIyJhE3pXP1303tA+AsQhCDp+wU10\" crossorigin=\"anonymous\"></script>\n<dashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dashboard-plus-grid>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -971,7 +971,7 @@
|
|||
"bundle": "research-map-plus-grid",
|
||||
"scriptUrl": "./research-map-plus-grid/research-map-plus-grid.js",
|
||||
"output": "dx-maps/research-map-plus-grid/research-map-plus-grid.js",
|
||||
"integrity": "sha384-62O+v5n8jNn2QTXnNEG6Y5/5lXaSyRL1SQsJWtdfbadVpNG+7EiKrDTRRu915RYF",
|
||||
"integrity": "sha384-2CUBq9yq/4Jk+lNNnpyyhulhen1xrrQd67T+45oqVHsVO6R36aplTZKWgKT1OHL9",
|
||||
"elements": [
|
||||
"research-map-plus-grid"
|
||||
],
|
||||
|
|
@ -991,7 +991,7 @@
|
|||
"scriptUrl": "./research-map-plus-grid/research-map-plus-grid.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe 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></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./research-map-plus-grid/research-map-plus-grid.js\" integrity=\"sha384-62O+v5n8jNn2QTXnNEG6Y5/5lXaSyRL1SQsJWtdfbadVpNG+7EiKrDTRRu915RYF\" crossorigin=\"anonymous\"></script>\n<research-map-plus-grid profile-config='{\"profile\":\"research-map-plus-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></research-map-plus-grid>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./research-map-plus-grid/research-map-plus-grid.js\" integrity=\"sha384-2CUBq9yq/4Jk+lNNnpyyhulhen1xrrQd67T+45oqVHsVO6R36aplTZKWgKT1OHL9\" crossorigin=\"anonymous\"></script>\n<research-map-plus-grid profile-config='{\"profile\":\"research-map-plus-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></research-map-plus-grid>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -37,7 +37,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <research-map-plus-grid> custom element. -->
|
||||
<script src="../../research-map-plus-grid.js" integrity="sha384-62O+v5n8jNn2QTXnNEG6Y5/5lXaSyRL1SQsJWtdfbadVpNG+7EiKrDTRRu915RYF" crossorigin="anonymous"></script>
|
||||
<script src="../../research-map-plus-grid.js" integrity="sha384-2CUBq9yq/4Jk+lNNnpyyhulhen1xrrQd67T+45oqVHsVO6R36aplTZKWgKT1OHL9" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <research-map-plus-grid> custom element. -->
|
||||
<script src="../research-map-plus-grid.js" integrity="sha384-62O+v5n8jNn2QTXnNEG6Y5/5lXaSyRL1SQsJWtdfbadVpNG+7EiKrDTRRu915RYF" crossorigin="anonymous"></script>
|
||||
<script src="../research-map-plus-grid.js" integrity="sha384-2CUBq9yq/4Jk+lNNnpyyhulhen1xrrQd67T+45oqVHsVO6R36aplTZKWgKT1OHL9" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
Loading…
Reference in a new issue