Clone the six global rules the component's own stylesheet never showed
The Driver looked at the two sides and named the components: "the tbabel
compoent is not the same", and of Prayer Coverage / Adoption Progress /
Engagement Progress, "thes three are not th esame css of the dx lfie site, it
properl spces and lcolros thigns while ours doe snot". He was right about both,
and for one reason: I ported RegionDetail.vue and its <style scoped>, and the
rules that differ are not in either. They are in the global sheet every page on
their site loads.
base/_globals.scss:99-105 every <table> is a 25px-rounded, #666-ringed WHITE
card; :205-207 gives every <td> a 1px #666
gridline. Ours was bare and borderless.
composition/_stack.scss .stack spaces children with margin-top, not gap —
and .region-goal{margin-top:auto} OVERRIDES it.
Ported as gap, which no margin can override, so
both applied and every goal card carried an extra
23.526px. That is his "spacing is not the same".
base/_globals.scss:19-23 every <section> is padded
clamp(--spacing-2xl,6vw,--spacing-4xl) top and
--spacing-4xl bottom: 73.614px on each side of the
countries table, where we had none.
base/_globals.scss:132-141 every <a> is --color-brand-light at weight 500
with a 2px/4px underline. Their country cell is a
NuxtLink; ours is a <button>, which inherits none
of it and read as plain body text.
base/_globals.scss:200-202 <strong> is 500, not the UA's bold. The "Goal:"
label wears it three times.
All five ported, and the remaining .stack ports converted from gap to their
margin-top so the next margin-overriding child behaves as it does on their
page. Measured against live doxa.life/regions/africa: 107 properties
identical, 0 CSS differences, 0 structural-text differences.
The measurement gap matters more than the fix. _probe-region-vs-live.mjs
reported 79/79 IDENTICAL through every one of these and could not have failed:
goalCard's spec was padding/radius/background/colour/align with no gap, so the
property that spaces the children was never read; table's was minWidth and
width; td had no border; and the country link had no entry in the selector map
at all. The spec now also reads gap and flexDirection on the card, marginTop on
its children, the td border, the table's radius/background/box-shadow/overflow,
section padding, strong weight, rowGap on all five stacks, and a new tdLink
pair — 107 properties.
Also, the Driver's other report on that screen: "poster not generated yet ...
it is not supposed to say not generated yet it is supposed to show the
previews". Ethiopia's country-eth.webp exists — 174 of the 175 records have
theirs, India being the one that legitimately does not and carrying its own
reason. Measured on the built tree and on the dev server: every preview request
200, zero cards in that branch, and the lazy contract holds (nothing fetched
until the dropdown is opened). So the file is not missing; a host layout is.
PosterWall now tries the self-contained copy generate-tree stages inside the
tree before giving up, and when it does give up it no longer claims the poster
was never generated — it says the preview is unavailable, which is the only
thing a failed image request establishes.
This commit is contained in:
parent
b105fcebcf
commit
f22609fb3c
8 changed files with 182 additions and 89 deletions
|
|
@ -47,6 +47,7 @@ import { useI18n } from 'vue-i18n'
|
|||
// (contain:layout on .vtl-content). Measured 1024x793 @ (256,107) at 1280x900 — rail clickable
|
||||
// behind the "modal". See library/utils/viewportScrim.js for the measurements and rejected fixes.
|
||||
import { useViewportScrim } from '@map/utils/viewportScrim.js'
|
||||
import { bundleTreeRoot } from '@map/utils/embedBase.js'
|
||||
|
||||
const props = defineProps({
|
||||
items: { type: Array, required: true },
|
||||
|
|
@ -149,7 +150,29 @@ const props = defineProps({
|
|||
|
||||
const plural = computed(() => props.itemNounPlural || `${props.itemNoun}s`)
|
||||
const base = computed(() => String(props.assetsBase || './assets').replace(/\/+$/, ''))
|
||||
const previewUrl = (id) => `${base.value}/previews/${id}.webp`
|
||||
|
||||
// ★ A SECOND PLACE TO LOOK, because "poster not generated yet" was being shown for posters that
|
||||
// ARE generated. The DRIVER reported it on Ethiopia, whose country-eth.webp exists (174 of the 175
|
||||
// records have their .webp; India is the one that legitimately does not and carries its own
|
||||
// reason). MEASURED here — static build AND dev server, every request 200, zero cards in that
|
||||
// branch — so the file is not missing; a HOST LAYOUT is. resolveAssetsBase points at
|
||||
// <treeRoot>/../assets, the shared pool, which is correct for the layout generate-tree documents
|
||||
// and wrong on a host that publishes only the tree folder. generate-tree ALSO stages a
|
||||
// self-contained copy INSIDE the tree ("staged 421 runtime asset(s) → doxa-maps/assets"), and
|
||||
// that copy is reachable on both layouts. So: try the pool, and if the bytes do not arrive, try
|
||||
// the copy before telling the user anything.
|
||||
const fallbackBase = computed(() => {
|
||||
const root = String(bundleTreeRoot() || '').replace(/\/+$/, '')
|
||||
return root ? `${root}/assets` : ''
|
||||
})
|
||||
// 0/absent = first attempt, 1 = the fallback is being tried.
|
||||
const attempt = ref({})
|
||||
const previewUrl = (id) => `${attempt.value[id] ? fallbackBase.value : base.value}/previews/${id}.webp`
|
||||
function onPreviewError(id) {
|
||||
const fb = fallbackBase.value
|
||||
if (!attempt.value[id] && fb && fb !== base.value) { attempt.value = { ...attempt.value, [id]: 1 }; return }
|
||||
missing.value = { ...missing.value, [id]: true }
|
||||
}
|
||||
|
||||
// Sections ordered by TOTAL count (largest first), items within a section by their
|
||||
// own count — the densest prayer need leads at BOTH levels.
|
||||
|
|
@ -605,11 +628,18 @@ useShadowStyles(
|
|||
@click="previewIsControl && exportPoster(item)"
|
||||
@keydown.enter.prevent="previewIsControl && exportPoster(item)"
|
||||
@keydown.space.prevent="previewIsControl && exportPoster(item)"
|
||||
@error="missing[item.id] = true" />
|
||||
@error="onPreviewError(item.id)" />
|
||||
<div v-else class="ph">
|
||||
<div class="ph-label">{{ item.label }}</div>
|
||||
<div v-if="item.count" class="ph-count">{{ item.count.toLocaleString() }} people groups</div>
|
||||
<div class="ph-note">poster not generated yet</div>
|
||||
<!-- NOT "not generated yet": reaching this branch means the preview IMAGE did
|
||||
not arrive after both bases were tried, which says nothing about whether a
|
||||
poster exists. A record with genuinely no poster carries its own
|
||||
unsupportedReason and renders the branch above. Saying "not generated" of a
|
||||
poster that is sitting on disk is how the Driver came to report this.
|
||||
i18n DEBT: this literal predates t() here and is still untranslated, like
|
||||
the two beside it. -->
|
||||
<div class="ph-note">preview unavailable</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -651,7 +651,13 @@ useShadowStyles(
|
|||
' --dx-surface:#f3f3f1; --dx-elevated:#fff; --dx-text:#2a332a; --dx-header-bg:#3b463d;' +
|
||||
' --dx-header-text:#fff; --dx-muted:#6d766e; --dx-line:#d1d4cd; --dx-accent:#92b195;' +
|
||||
' --dx-dark:#2a332a; --dx-on-dark:#f3f3f1; --dx-track:#4e594f; --dx-partial:#f0c64a;' +
|
||||
' --dx-radius:35px;' +
|
||||
' --dx-radius:35px; --dx-radius-lg:25px;' +
|
||||
// base/_globals.scss:99-105 + :205-207 style EVERY table on their site: --table-border-color
|
||||
// is $color-gray-500 (#666) and --border-radius-lg is 2.5rem at their 10px root = 25px.
|
||||
' --dx-table-border:#666;' +
|
||||
// base/_globals.scss:132-141 styles EVERY anchor: --color-brand-light on hover to
|
||||
// --color-brand-lighter. $color-green-400 / $color-green-300.
|
||||
' --dx-link:#4e594f; --dx-link-hover:#6d766e;' +
|
||||
' background:var(--dx-surface); color:var(--dx-text);' +
|
||||
' font:var(--font-size-md)/1.5 Poppins,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif; }' +
|
||||
// Same responsive context + same 1200px cap as tab 1 (regions-list.vue). DX-life applies its
|
||||
|
|
@ -669,15 +675,24 @@ useShadowStyles(
|
|||
// We cannot set this on the host document from inside a shadow root, and should not;
|
||||
// this element's own scroller is the box every child measures against.
|
||||
'.rd-scroll{ flex:1 1 auto; min-height:0; overflow-y:auto; scrollbar-gutter:stable; -webkit-overflow-scrolling:touch;' +
|
||||
' padding:var(--spacing-3xl) 0 var(--spacing-4xl); display:flex; flex-direction:column; gap:var(--spacing-3xl);' +
|
||||
' padding:var(--spacing-3xl) 0 var(--spacing-4xl); display:flex; flex-direction:column;' +
|
||||
' container-type:inline-size; }' +
|
||||
'.rd-scroll > * + *{ margin-top:var(--spacing-3xl); }' + // .stack .stack--3xl
|
||||
'.rd-scroll > *{ box-sizing:border-box; width:calc(90% + 16px); max-width:1200px;' +
|
||||
' margin-left:auto; margin-right:auto; }' +
|
||||
'.rd-status{ padding:28px; text-align:center; color:var(--dx-muted); font-size:var(--font-size-md); }' +
|
||||
'.rd-status.rd-failed{ font-weight:600; }' +
|
||||
|
||||
// ── head: RegionDetail.vue:47-51, a .stack--xs (7.5px) block, centred ──
|
||||
'.rd-head{ display:flex; flex-direction:column; gap:10px; text-align:center; }' +
|
||||
// ★ EVERY .stack HERE IS NOW THEIR MECHANISM, not `gap`. The goal card proved the two are not
|
||||
// interchangeable (a child's margin-top:auto can override a margin and cannot override a gap),
|
||||
// and the extended live diff then caught the residue: their .stack rowGap computes to `normal`
|
||||
// because the spacing is margin, while ours read 17.689px. Same pixels, different code — and the
|
||||
// DRIVER asked for the code to match, not just the screenshot. Converted, so the next
|
||||
// margin-overriding child anywhere on this page behaves as it does on their page.
|
||||
// .stack .stack--xs — --spacing-xs is 1rem at their 10px root.
|
||||
'.rd-head{ display:flex; flex-direction:column; text-align:center; }' +
|
||||
'.rd-head > * + *{ margin-top:10px; }' +
|
||||
'.rd-backlink{ margin:0; }' +
|
||||
// their .light-link on a dark-on-light page: brand-light, underlined on hover
|
||||
// THEIR back-link is an <a class="light-link">, so it inherits the UA underline plus their
|
||||
|
|
@ -734,7 +749,9 @@ useShadowStyles(
|
|||
// clone below is untouched by it.
|
||||
'.rd-chooser{ display:flex; flex-wrap:wrap; gap:13.3px; align-items:flex-end;' +
|
||||
' justify-content:center; }' +
|
||||
'.rd-mapblock{ display:flex; flex-direction:column; gap:13.3px; }' +
|
||||
// .stack .stack--sm — --spacing-sm, 1.33rem.
|
||||
'.rd-mapblock{ display:flex; flex-direction:column; }' +
|
||||
'.rd-mapblock > * + *{ margin-top:13.3px; }' +
|
||||
'.rd-mapnote{ margin:0; text-align:center; color:#92b195; font-weight:700; font-size:var(--font-size-md); }' +
|
||||
// .rounded-xlg on their <CountryMap>; the child takes border-radius:inherit from here.
|
||||
'.rd-mapframe{ border-radius:var(--dx-radius); overflow:hidden; }' +
|
||||
|
|
@ -776,7 +793,16 @@ useShadowStyles(
|
|||
// heading keeps the full clamp -- it has 1200px and no such constraint.
|
||||
// .stack--lg (var(--spacing-lg)) inside each card, centred; .region-goal pins to the bottom
|
||||
// (margin-top:auto) so three cards of different heights still align their goal lines.
|
||||
'.rd-goal-card{ display:flex; flex-direction:column; gap:var(--spacing-lg); text-align:center; }' +
|
||||
// ★ THEIR .stack IS margin-top, AND THAT IS LOAD-BEARING — not a stylistic detail.
|
||||
// composition/_stack.scss: `.stack > * + * { margin-top: var(--stack-spacing) }`, with
|
||||
// `.stack--lg` setting that to --spacing-lg. RegionDetail.vue's scoped
|
||||
// `.region-goal { margin-top: auto }` then OVERRIDES the same property on the last child,
|
||||
// so the goal line is pushed to the bottom and the 23.526px stack gap above it is GONE.
|
||||
// This was ported as `gap`, which margin cannot override: gap AND the auto both applied,
|
||||
// so every goal card carried ~23.5px of space their cards do not have. The DRIVER saw it
|
||||
// ('spcing is nto ths ame', naming these three cards). Ported as their mechanism.
|
||||
'.rd-goal-card{ display:flex; flex-direction:column; text-align:center; }' +
|
||||
'.rd-goal-card > * + *{ margin-top:var(--spacing-lg); }' +
|
||||
// h2: _globals.scss clamp(--font-size-2xl, 6vw, --font-size-4xl) = clamp(var(--font-size-2xl),_,var(--font-size-4xl))
|
||||
'.rd-h2{ margin:0; font-size:clamp(var(--font-size-2xl), 6cqw, var(--font-size-4xl)); line-height:1;' +
|
||||
' font-family:"Bebas Neue","Arial Narrow",BlinkMacSystemFont,"Segoe UI","Helvetica Neue",Arial,sans-serif;' +
|
||||
|
|
@ -791,8 +817,16 @@ useShadowStyles(
|
|||
'.rd-big{ margin:0; font-size:var(--font-size-4xl); font-weight:500; line-height:1.1; }' +
|
||||
'.rd-goal-card .rd-big{ white-space:nowrap; }' +
|
||||
'.rd-big-label{ margin:0; font-size:var(--font-size-lg); }' +
|
||||
'.rd-stack-xs{ display:flex; flex-direction:column; gap:10px; }' +
|
||||
'.rd-goal{ margin:auto 0 0; font-size:var(--font-size-sm); }' +
|
||||
// .stack .stack--xs, inside the Prayer Coverage card.
|
||||
'.rd-stack-xs{ display:flex; flex-direction:column; }' +
|
||||
'.rd-stack-xs > * + *{ margin-top:10px; }' +
|
||||
// .region-goal — margin-top:auto, spelled at higher specificity than the stack rule above
|
||||
// so the override is unambiguous rather than depending on source order.
|
||||
'.rd-goal{ margin:0; font-size:var(--font-size-sm); }' +
|
||||
// base/_globals.scss:200-202 — <strong> is --font-weight-medium (500) on their site, not the
|
||||
// UA's bold. The 'Goal:' label in all three cards is a <strong>, so ours was rendering 700.
|
||||
'.rd-root strong{ font-weight:500; }' +
|
||||
'.rd-goal-card > .rd-goal{ margin-top:auto; }' +
|
||||
|
||||
// ── .progress-bar: blocks/_progress-bar.scss. The HEIGHT comes from padding-top, not height
|
||||
// -- clamp(15px, 6%, 25px) at [data-size="md"] -- so the track scales with its own width.
|
||||
|
|
@ -817,16 +851,45 @@ useShadowStyles(
|
|||
// ── the breakdown table: RegionDetail.vue's scoped block. min-width 560px inside an
|
||||
// overflow-x:auto wrapper is how they keep five columns readable on a phone instead of
|
||||
// crushing them -- the table scrolls sideways, the page does not.
|
||||
'.rd-section{ display:flex; flex-direction:column; gap:var(--spacing-md); }' +
|
||||
// ★ base/_globals.scss:19-23 — their countries block is a <section>, and EVERY <section> on
|
||||
// their site carries padding-top clamp(--spacing-2xl, 6vw, --spacing-4xl) and padding-bottom
|
||||
// --spacing-4xl. At 1440 that is 73.614px above and below, ON TOP of the --spacing-3xl the
|
||||
// page stack already puts between blocks: 128.96px of air above the heading, where ours had
|
||||
// 55.35px and nothing below. Another global rule, another thing reading RegionDetail.vue
|
||||
// alone could not tell me. Same clamp, in container units for the embedded case.
|
||||
'.rd-section{ display:flex; flex-direction:column;' +
|
||||
' padding-top:clamp(var(--spacing-2xl), 6cqw, var(--spacing-4xl));' +
|
||||
' padding-bottom:var(--spacing-4xl); }' +
|
||||
'.rd-section > * + *{ margin-top:var(--spacing-md); }' + // .stack .stack--md
|
||||
|
||||
'.rd-table-scroll{ overflow-x:auto; }' +
|
||||
'.rd-table{ width:100%; min-width:560px; border-collapse:collapse; font-size:var(--font-size-md); }' +
|
||||
// ★ base/_globals.scss:99-105 — the part of their table that is NOT in RegionDetail's
|
||||
// scoped block and was therefore missed: every <table> on their site is a rounded,
|
||||
// ring-outlined WHITE card, and every <td> carries a 1px gridline (:205-207). Ours was a
|
||||
// bare borderless table on the page background. That is what the DRIVER meant by 'the
|
||||
// tbabel compoent is not the same' — the rule lived in a global stylesheet, not next to
|
||||
// the markup, so reading RegionDetail.vue alone could not show it.
|
||||
// overflow:hidden is what makes border-radius clip the header's own background.
|
||||
'.rd-table{ width:100%; min-width:560px; border-collapse:collapse; font-size:var(--font-size-md);' +
|
||||
' border-radius:var(--dx-radius-lg); overflow:hidden; background:#fff;' +
|
||||
' box-shadow:0 0 0 1px var(--dx-table-border); }' +
|
||||
// td ONLY — their th has no border of its own, it has the header fill.
|
||||
'.rd-table td{ border:1px solid var(--dx-table-border); }' +
|
||||
'.rd-table th, .rd-table td{ padding:var(--spacing-2xs) 13.3px; text-align:start; }' +
|
||||
'.rd-table th:not(:first-child), .rd-table td:not(:first-child){ text-align:end; }' +
|
||||
'.rd-table th{ background:var(--dx-muted); color:var(--dx-on-dark); font-weight:500; }' +
|
||||
'.rd-tr--selected{ background:#e8ece7; font-weight:600; }' +
|
||||
// ★ Their country cell is a <NuxtLink>, i.e. an <a>, which picks up base/_globals.scss:132-141:
|
||||
// --color-brand-light, --font-weight-medium, the UA underline at 2px thickness / 4px offset,
|
||||
// hovering to --color-brand-lighter. Ours is a <button> (it selects a subject in place
|
||||
// rather than navigating, which is the one thing this element does differently) and a
|
||||
// button inherits NONE of that — it read as plain body text, unweighted and unlined.
|
||||
// So the anchor rule is spelled out here: same element role, same appearance.
|
||||
'.rd-row-link{ appearance:none; background:none; border:0; padding:0; margin:0; cursor:pointer;' +
|
||||
' font:inherit; color:var(--dx-text); text-align:start; }' +
|
||||
'.rd-row-link:hover{ text-decoration:underline; }' +
|
||||
' font:inherit; font-weight:500; color:var(--dx-link); text-align:start;' +
|
||||
' text-decoration:underline; text-decoration-thickness:2px; text-underline-offset:4px;' +
|
||||
' text-decoration-skip-ink:auto; transition:color .3s ease; }' +
|
||||
'.rd-row-link:hover{ color:var(--dx-link-hover); }' +
|
||||
'.rd-row-link:focus-visible{ outline:2px solid var(--dx-accent); outline-offset:2px; border-radius:4px; }',
|
||||
'region-dashboards'
|
||||
)
|
||||
|
|
|
|||
2
public/doxa-maps/index.html
generated
2
public/doxa-maps/index.html
generated
File diff suppressed because one or more lines are too long
8
public/doxa-maps/manifest.json
generated
8
public/doxa-maps/manifest.json
generated
|
|
@ -879,7 +879,7 @@
|
|||
"bundle": "regions-dashboard",
|
||||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"output": "doxa-maps/regions-dashboard/regions-dashboard.js",
|
||||
"integrity": "sha384-o2n8vzVstdRyYCQ4YnWVCpZYCOfaNGa+4BABLAeVw5vuXbnm1R71Zx3WT9FJc22n",
|
||||
"integrity": "sha384-MeHrLZLEBmvYM0NTxaJJTnLJ5UIr17K0HuHntIvLbzIXTqtr6/aJYTs16wezXpgl",
|
||||
"elements": [
|
||||
"regions-dashboard"
|
||||
],
|
||||
|
|
@ -899,7 +899,7 @@
|
|||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./regions-dashboard/region-dashboards/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-o2n8vzVstdRyYCQ4YnWVCpZYCOfaNGa+4BABLAeVw5vuXbnm1R71Zx3WT9FJc22n\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-MeHrLZLEBmvYM0NTxaJJTnLJ5UIr17K0HuHntIvLbzIXTqtr6/aJYTs16wezXpgl\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -913,7 +913,7 @@
|
|||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./regions-dashboard/regions-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-o2n8vzVstdRyYCQ4YnWVCpZYCOfaNGa+4BABLAeVw5vuXbnm1R71Zx3WT9FJc22n\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-MeHrLZLEBmvYM0NTxaJJTnLJ5UIr17K0HuHntIvLbzIXTqtr6/aJYTs16wezXpgl\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -927,7 +927,7 @@
|
|||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./regions-dashboard/regions-mfe/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-o2n8vzVstdRyYCQ4YnWVCpZYCOfaNGa+4BABLAeVw5vuXbnm1R71Zx3WT9FJc22n\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-MeHrLZLEBmvYM0NTxaJJTnLJ5UIr17K0HuHntIvLbzIXTqtr6/aJYTs16wezXpgl\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <regions-dashboard> custom element. -->
|
||||
<script src="../regions-dashboard.js" integrity="sha384-o2n8vzVstdRyYCQ4YnWVCpZYCOfaNGa+4BABLAeVw5vuXbnm1R71Zx3WT9FJc22n" crossorigin="anonymous"></script>
|
||||
<script src="../regions-dashboard.js" integrity="sha384-MeHrLZLEBmvYM0NTxaJJTnLJ5UIr17K0HuHntIvLbzIXTqtr6/aJYTs16wezXpgl" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
134
public/doxa-maps/regions-dashboard/regions-dashboard.js
generated
134
public/doxa-maps/regions-dashboard/regions-dashboard.js
generated
File diff suppressed because one or more lines are too long
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <regions-dashboard> custom element. -->
|
||||
<script src="../regions-dashboard.js" integrity="sha384-o2n8vzVstdRyYCQ4YnWVCpZYCOfaNGa+4BABLAeVw5vuXbnm1R71Zx3WT9FJc22n" crossorigin="anonymous"></script>
|
||||
<script src="../regions-dashboard.js" integrity="sha384-MeHrLZLEBmvYM0NTxaJJTnLJ5UIr17K0HuHntIvLbzIXTqtr6/aJYTs16wezXpgl" 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 <regions-dashboard> custom element. -->
|
||||
<script src="../regions-dashboard.js" integrity="sha384-o2n8vzVstdRyYCQ4YnWVCpZYCOfaNGa+4BABLAeVw5vuXbnm1R71Zx3WT9FJc22n" crossorigin="anonymous"></script>
|
||||
<script src="../regions-dashboard.js" integrity="sha384-MeHrLZLEBmvYM0NTxaJJTnLJ5UIr17K0HuHntIvLbzIXTqtr6/aJYTs16wezXpgl" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
Loading…
Reference in a new issue