Compare commits
2 commits
main
...
studio/dxm
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
026b17bb75 | ||
|
|
c7c2c12cd0 |
38 changed files with 562 additions and 294 deletions
188
internal/check-element-namespace.mjs
Normal file
188
internal/check-element-namespace.mjs
Normal file
|
|
@ -0,0 +1,188 @@
|
|||
#!/usr/bin/env node
|
||||
/**
|
||||
* check-element-namespace.mjs — DX Maps never takes a host's tag name by default, and never adopts a foreign one.
|
||||
*
|
||||
* THE DEFECT. customElements.define is first come, first served. DX Life's own /js scripts define <doxa-map>,
|
||||
* <doxa-simple-map> and <doxa-research-map>, and the doxa-simple-map / doxa-research-map bundles defined the
|
||||
* same names behind a silent guard (`if (!customElements.get(tag)) define(...)`). On a DX Life page the host's
|
||||
* script won, our define was skipped without a word, and the gallery drew the host's element under our name.
|
||||
*
|
||||
* WHAT IT ASSERTS:
|
||||
* A. no bundle entry (plugin-designs/<b>/index.js) defines a HOST name by default: a host name is defined only
|
||||
* inside an `if (LEGACY_TAGS) { … }` block, and LEGACY_TAGS comes from legacyTagsRequested();
|
||||
* B. each of the two bundles' FIRST literal define is its namespaced tag (generate-tree reads it as the
|
||||
* profile's element);
|
||||
* C. the built manifest names those tags as the profiles' elements, and no profile element is a host name;
|
||||
* D. a tag is defined by ONE bundle (KNOWN_SHARED is the one recorded exception, carded; it may only shrink);
|
||||
* E. library/elements/ownTags.js, run against a stub registry: a free tag is free; the same bundle's re-load is
|
||||
* silent; a FOREIGN class is reported and never adopted; the opt-in reads the attribute and the flag;
|
||||
* F. library/utils/embedScript.js whenTagDefined REJECTS a dxm- tag held by a foreign class.
|
||||
* `--self-test` plants each defect in memory (no file is written) and exits 0 only if every one is caught.
|
||||
*/
|
||||
import { readFileSync, readdirSync, existsSync } from 'node:fs'
|
||||
import { join, dirname } from 'node:path'
|
||||
import { fileURLToPath } from 'node:url'
|
||||
|
||||
const ROOT = join(dirname(fileURLToPath(import.meta.url)), '..')
|
||||
const HOST_TAGS = ['doxa-map', 'doxa-simple-map', 'doxa-research-map']
|
||||
const OWN = { 'doxa-simple-map': 'dxm-simple-map', 'doxa-research-map': 'dxm-research-map' }
|
||||
// Defined by two bundles as two classes; whichever loads first serves both. Carded (studio backlog): big-picture's
|
||||
// embedded grid gets its own tag. It may only leave this list.
|
||||
const KNOWN_SHARED = { 'people-groups-grid': ['big-picture', 'people-groups-grid'] }
|
||||
const DEFINE_RE = /customElements\.define\(\s*['"]([^'"]+)['"]/g
|
||||
|
||||
const read = (p) => readFileSync(join(ROOT, p), 'utf8')
|
||||
const entries = () => readdirSync(join(ROOT, 'plugin-designs'), { withFileTypes: true })
|
||||
.filter((d) => d.isDirectory() && existsSync(join(ROOT, 'plugin-designs', d.name, 'index.js'))).map((d) => d.name)
|
||||
|
||||
// The body of every `if (LEGACY_TAGS) { … }` block, by brace matching.
|
||||
function legacyBlocks(src) {
|
||||
const out = []
|
||||
for (const m of src.matchAll(/if\s*\(\s*LEGACY_TAGS\s*\)\s*\{/g)) {
|
||||
let depth = 1, i = m.index + m[0].length
|
||||
for (; i < src.length && depth; i++) { if (src[i] === '{') depth++; else if (src[i] === '}') depth--; }
|
||||
out.push([m.index, i])
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
function checkEntries(srcOf) {
|
||||
const fails = [], definedBy = {}
|
||||
for (const b of Object.keys(srcOf)) {
|
||||
const src = srcOf[b].replace(/\/\*[\s\S]*?\*\//g, (c) => ' '.repeat(c.length)).replace(/\/\/[^\n]*/g, (c) => ' '.repeat(c.length))
|
||||
const literal = [...src.matchAll(DEFINE_RE)].map((m) => m[1])
|
||||
for (const t of new Set(literal)) (definedBy[t] ||= []).push(b)
|
||||
const blocks = legacyBlocks(src)
|
||||
const inBlock = (i) => blocks.some(([a, z]) => i > a && i < z)
|
||||
// A: a host name, as a literal define or as a string anywhere near a define, only inside the opt-in block.
|
||||
for (const m of src.matchAll(/customElements\.define\(/g)) {
|
||||
if (inBlock(m.index)) continue
|
||||
const arg = src.slice(m.index + m[0].length).match(/^\s*(['"])([^'"]+)\1/)
|
||||
if (!arg) fails.push(`A ${b}/index.js: a define whose tag is not a literal sits OUTSIDE \`if (LEGACY_TAGS)\` (only the opt-in block may define a computed name)`)
|
||||
else if (HOST_TAGS.includes(arg[2])) fails.push(`A ${b}/index.js defines the host name <${arg[2]}> by default (only inside \`if (LEGACY_TAGS)\`)`)
|
||||
}
|
||||
if (blocks.length && !/const\s+LEGACY_TAGS\s*=\s*legacyTagsRequested\(\)/.test(src)) fails.push(`A ${b}/index.js: LEGACY_TAGS is not read from legacyTagsRequested() at evaluation time`)
|
||||
// B
|
||||
if (OWN[b] && literal[0] !== OWN[b]) fails.push(`B ${b}/index.js: the first define is <${literal[0]}>, not its own <${OWN[b]}>`)
|
||||
}
|
||||
// D
|
||||
for (const [t, bs] of Object.entries(definedBy)) {
|
||||
if (bs.length < 2) continue
|
||||
const known = KNOWN_SHARED[t]
|
||||
if (!known || bs.slice().sort().join() !== known.slice().sort().join()) fails.push(`D <${t}> is defined by ${bs.length} bundles: ${bs.join(', ')} (whichever loads first serves all of them)`)
|
||||
}
|
||||
for (const t of Object.keys(KNOWN_SHARED)) if (!(definedBy[t] || []).length || definedBy[t].length < 2) fails.push(`D KNOWN_SHARED <${t}> is no longer shared: remove it from the list`)
|
||||
return fails
|
||||
}
|
||||
|
||||
function checkManifest(manifest) {
|
||||
const fails = []
|
||||
// Every `element` (profiles and instances) and every bundle's `elements`, each with the bundle it belongs to.
|
||||
const uses = []
|
||||
const walk = (o, bundle) => {
|
||||
if (Array.isArray(o)) return o.forEach((x) => walk(x, bundle))
|
||||
if (!o || typeof o !== 'object') return
|
||||
const b = typeof o.bundle === 'string' ? o.bundle : bundle
|
||||
if (typeof o.element === 'string') uses.push({ bundle: b, element: o.element, at: o.id || o.profile || b })
|
||||
if (Array.isArray(o.elements)) for (const e of o.elements) uses.push({ bundle: b, element: e, at: b + ' elements' })
|
||||
for (const v of Object.values(o)) walk(v, b)
|
||||
}
|
||||
walk(manifest, null)
|
||||
for (const u of uses) if (HOST_TAGS.includes(u.element)) fails.push(`C manifest: ${u.at} mounts the host name <${u.element}>`)
|
||||
for (const [b, tag] of Object.entries(OWN)) {
|
||||
const mine = uses.filter((u) => u.bundle === b)
|
||||
if (!mine.length) fails.push(`C manifest: no entry for bundle ${b}`)
|
||||
else if (mine.some((u) => u.element !== tag)) fails.push(`C manifest: bundle ${b} mounts <${[...new Set(mine.map((u) => u.element))].join('>, <')}>, not <${tag}>`)
|
||||
}
|
||||
return fails
|
||||
}
|
||||
|
||||
// A stub registry: enough of customElements for ownTags.js and whenTagDefined.
|
||||
function stubRegistry() {
|
||||
const map = new Map()
|
||||
return { get: (t) => map.get(t), define: (t, c) => { if (map.has(t)) throw new Error('NotSupportedError: ' + t); map.set(t, c) }, whenDefined: () => new Promise(() => {}) }
|
||||
}
|
||||
const asModule = (src) => import('data:text/javascript;base64,' + Buffer.from(src).toString('base64'))
|
||||
|
||||
async function checkRuntime(ownSrc, embedSrc) {
|
||||
const fails = []
|
||||
const errors = []
|
||||
const saved = { ce: globalThis.customElements, err: console.error, win: globalThis.window, doc: globalThis.document }
|
||||
try {
|
||||
globalThis.customElements = stubRegistry()
|
||||
console.error = (...a) => errors.push(a.join(' '))
|
||||
const o = await asModule(ownSrc)
|
||||
class Foreign {}
|
||||
class Ours {}
|
||||
o.brand(Ours, 'doxa-simple-map')
|
||||
if (o.ownTagFree('dxm-simple-map', 'doxa-simple-map') !== true) fails.push('E ownTagFree: a free tag is not free')
|
||||
customElements.define('dxm-simple-map', Ours)
|
||||
const before = errors.length
|
||||
if (o.ownTagFree('dxm-simple-map', 'doxa-simple-map') !== false || errors.length !== before) fails.push('E ownTagFree: a re-load of the same bundle is not silent')
|
||||
customElements.define('doxa-map', Foreign)
|
||||
if (o.ownTagFree('doxa-map', 'doxa-simple-map') !== false) fails.push('E ownTagFree: a FOREIGN class is adopted (the tag reads as free)')
|
||||
if (errors.length !== before + 1) fails.push('E ownTagFree: a foreign class is not reported')
|
||||
globalThis.window = {}; globalThis.document = { currentScript: { hasAttribute: (a) => a === 'data-legacy-tags' } }
|
||||
if (o.legacyTagsRequested() !== true) fails.push('E legacyTagsRequested: data-legacy-tags on the <script> is not read')
|
||||
globalThis.document = { currentScript: { hasAttribute: () => false } }
|
||||
if (o.legacyTagsRequested() !== false) fails.push('E legacyTagsRequested: on with no attribute and no flag (the default must be OFF)')
|
||||
globalThis.window = { DXM_LEGACY_TAGS: true }
|
||||
if (o.legacyTagsRequested() !== true) fails.push('E legacyTagsRequested: window.DXM_LEGACY_TAGS is not read')
|
||||
// F
|
||||
const e = await asModule(embedSrc.replace(/^import[^\n]*\n/gm, ''))
|
||||
customElements.define('dxm-research-map', Foreign)
|
||||
const r = await e.whenTagDefined('dxm-research-map', 50).then(() => 'resolved', () => 'rejected')
|
||||
if (r !== 'rejected') fails.push('F whenTagDefined: a dxm- tag held by a FOREIGN class resolves (it would be mounted)')
|
||||
const r2 = await e.whenTagDefined('dxm-simple-map', 50).then(() => 'resolved', () => 'rejected')
|
||||
if (r2 !== 'resolved') fails.push('F whenTagDefined: our own branded dxm- tag is refused')
|
||||
} catch (err) {
|
||||
fails.push('E/F could not run: ' + (err && err.message))
|
||||
} finally {
|
||||
globalThis.customElements = saved.ce; console.error = saved.err; globalThis.window = saved.win; globalThis.document = saved.doc
|
||||
}
|
||||
return fails
|
||||
}
|
||||
|
||||
async function run({ srcOf, manifest, ownSrc, embedSrc }) {
|
||||
return [...checkEntries(srcOf), ...(manifest ? checkManifest(manifest) : ['C NOT MEASURED: public/dx-maps/manifest.json is missing']), ...(await checkRuntime(ownSrc, embedSrc))]
|
||||
}
|
||||
|
||||
const live = () => {
|
||||
const srcOf = Object.fromEntries(entries().map((b) => [b, read(`plugin-designs/${b}/index.js`)]))
|
||||
const mp = join(ROOT, 'public/dx-maps/manifest.json')
|
||||
return { srcOf, manifest: existsSync(mp) ? JSON.parse(readFileSync(mp, 'utf8')) : null, ownSrc: read('library/elements/ownTags.js'), embedSrc: read('library/utils/embedScript.js') }
|
||||
}
|
||||
|
||||
if (process.argv.includes('--self-test')) {
|
||||
const base = live()
|
||||
const sm = base.srcOf['doxa-simple-map']
|
||||
const own = 'if (ownTagFree(\'dxm-simple-map\', BUNDLE)) customElements.define(\'dxm-simple-map\', DxmSimpleMapElement)'
|
||||
const poisons = [
|
||||
['a default-on <doxa-map> define', (s) => { s.srcOf = { ...s.srcOf, 'doxa-simple-map': sm.replace(own, own + "\ncustomElements.define('doxa-map', DxmSimpleMapElement)") } }, /^A .*host name <doxa-map>/],
|
||||
['the legacy loop moved out of the opt-in block', (s) => { s.srcOf = { ...s.srcOf, 'doxa-simple-map': sm.replace('if (LEGACY_TAGS) {', 'if (true) {') } }, /^A .*not a literal sits OUTSIDE/],
|
||||
['the own tag no longer first', (s) => { s.srcOf = { ...s.srcOf, 'doxa-simple-map': sm.replace(own, "customElements.define('dxm-other', X)\n" + own) } }, /^B /],
|
||||
['a manifest that mounts <doxa-map>', (s) => { s.manifest = JSON.parse(JSON.stringify(s.manifest).replace(/"dxm-simple-map"/g, '"doxa-map"')) }, /^C /],
|
||||
['a second bundle defining <dxm-research-map>', (s) => { s.srcOf = { ...s.srcOf, 'stack-demo': (s.srcOf['stack-demo'] || '') + "\ncustomElements.define('dxm-research-map', X)" } }, /^D <dxm-research-map>/],
|
||||
['ownTagFree adopting a foreign class', (s) => { s.ownSrc = s.ownSrc.replace("if (held.__dxmBundle === bundle) return false", "return true") }, /^E ownTagFree: a FOREIGN class is adopted/],
|
||||
['legacy names on by default', (s) => { s.ownSrc = s.ownSrc.replace("return Boolean(s && typeof s.hasAttribute === 'function' && s.hasAttribute('data-legacy-tags'))", 'return true') }, /^E legacyTagsRequested: on with no attribute/],
|
||||
['whenTagDefined without the foreign check', (s) => { s.embedSrc = s.embedSrc.replace("if (!/^dxm-/.test(String(tag))) return false", 'return false') }, /^F whenTagDefined: a dxm- tag held by a FOREIGN/],
|
||||
]
|
||||
let missed = 0
|
||||
for (const [name, plant, expect] of poisons) {
|
||||
const s = { ...base }
|
||||
plant(s)
|
||||
const changed = s.srcOf !== base.srcOf || s.manifest !== base.manifest || s.ownSrc !== base.ownSrc || s.embedSrc !== base.embedSrc
|
||||
const same = JSON.stringify([s.srcOf, s.ownSrc, s.embedSrc, s.manifest]) === JSON.stringify([base.srcOf, base.ownSrc, base.embedSrc, base.manifest])
|
||||
if (!changed || same) { console.log(`NOT MEASURED: the poison anchor for "${name}" moved`); process.exitCode = 75; continue }
|
||||
const f = await run(s)
|
||||
const hit = f.find((x) => expect.test(x))
|
||||
console.log(hit ? `✓ caught: ${name} -> ${hit}` : `✗ MISSED: ${name}${f.length ? ' (other: ' + f[0] + ')' : ''}`)
|
||||
if (!hit) missed++
|
||||
}
|
||||
if (missed) process.exitCode = 1
|
||||
console.log(missed ? `✗ check:element-namespace self-test: ${missed} poison(s) missed` : process.exitCode === 75 ? 'NOT MEASURED' : '✓ check:element-namespace self-test: every poison caught')
|
||||
} else {
|
||||
const f = await run(live())
|
||||
if (f.length) { for (const x of f) console.log('✗ ' + x); console.log(`FAIL check:element-namespace (${f.length})`); process.exitCode = f.some((x) => /NOT MEASURED/.test(x)) && f.length === 1 ? 75 : 1 }
|
||||
else console.log(`PASS check:element-namespace — no host tag by default (${HOST_TAGS.join(', ')}); dxm-simple-map + dxm-research-map own their bundles and the manifest; foreign definitions are reported, never adopted`)
|
||||
}
|
||||
58
library/elements/ownTags.js
Normal file
58
library/elements/ownTags.js
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
/**
|
||||
* ownTags.js — a DX Maps element is registered under DX Maps' OWN tag; a host's older names only on request.
|
||||
*
|
||||
* ★ WHY. customElements.define is first come, first served, and a host page can define the same name first.
|
||||
* DX Life's own /js scripts define <doxa-map>, <doxa-simple-map> and <doxa-research-map>. Every bundle here
|
||||
* guarded its define (`if (!customElements.get(tag)) define(...)`), so on such a page it skipped OUR class
|
||||
* without a word and the page drew the host's element under our name: the Prayer Progress / Adopt clash.
|
||||
* So:
|
||||
* - a bundle defines a NAMESPACED tag (dxm-…), which no host defines;
|
||||
* - the older generic names are defined only when the host asks for them (legacyTagsRequested);
|
||||
* - a tag already held by a class that is not this bundle's is REPORTED, never adopted (ownTagFree).
|
||||
* check:element-namespace keeps the generic names off by default.
|
||||
*/
|
||||
|
||||
/** Marks a class as this bundle's, so a re-load of the same bundle is told apart from a foreign definition. */
|
||||
export function brand(Ctor, bundle) {
|
||||
try { Object.defineProperty(Ctor, '__dxmBundle', { value: bundle }) } catch (_) { /* frozen: the check reports it */ }
|
||||
return Ctor
|
||||
}
|
||||
|
||||
/** The bundle that defined `tag` on this page, or null when it is undefined or not a DX Maps class. */
|
||||
export function tagOwner(tag) {
|
||||
if (typeof customElements === 'undefined') return null
|
||||
const held = customElements.get(tag)
|
||||
return (held && held.__dxmBundle) || null
|
||||
}
|
||||
|
||||
/**
|
||||
* True when `tag` is free for `bundle` to define.
|
||||
* - Held by the same bundle (the bundle was loaded twice): false, silently. The first copy serves.
|
||||
* - Held by anything else: false, and the page is told which element it is really running.
|
||||
*/
|
||||
export function ownTagFree(tag, bundle) {
|
||||
if (typeof customElements === 'undefined') return false
|
||||
const held = customElements.get(tag)
|
||||
if (!held) return true
|
||||
if (held.__dxmBundle === bundle) return false
|
||||
if (typeof console !== 'undefined' && console.error) {
|
||||
console.error('[dx-maps] <' + tag + '> is already defined by ' +
|
||||
(held.__dxmBundle ? 'the ' + held.__dxmBundle + ' bundle' : 'a script that is not DX Maps') +
|
||||
', so this page is NOT running DX Maps\' ' + bundle + ' element under that name.')
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
/**
|
||||
* The host asked for the older generic tag names: a `data-legacy-tags` attribute on this bundle's <script>,
|
||||
* or `window.DXM_LEGACY_TAGS = true` set before it loads.
|
||||
* ⚠ Reads document.currentScript, so it is valid only at MODULE EVALUATION TIME: call it at the top level
|
||||
* of a bundle entry, never later (currentScript is null once the script has finished).
|
||||
*/
|
||||
export function legacyTagsRequested() {
|
||||
try {
|
||||
if (typeof window !== 'undefined' && window.DXM_LEGACY_TAGS === true) return true
|
||||
const s = typeof document !== 'undefined' ? document.currentScript : null
|
||||
return Boolean(s && typeof s.hasAttribute === 'function' && s.hasAttribute('data-legacy-tags'))
|
||||
} catch (_) { return false }
|
||||
}
|
||||
|
|
@ -168,16 +168,29 @@ export function claimTag(tag, url) {
|
|||
// appear a tick or two after onload. customElements.whenDefined is the browser's own authoritative
|
||||
// answer; the timeout turns a never-registered tag into THIS tab's error overlay rather than a silent
|
||||
// blank pane that claims to be ready.
|
||||
// ★ AND DEFINED BY DX MAPS. A dxm- tag is DX Maps' own name (library/elements/ownTags.js); one held by a class
|
||||
// that no DX Maps bundle branded is a foreign definition, and mounting it would draw someone else's element
|
||||
// under our name, so it fails here, loudly, instead of being adopted.
|
||||
export function whenTagDefined(tag, ms) {
|
||||
if (typeof customElements === 'undefined') return Promise.resolve()
|
||||
if (customElements.get(tag)) return Promise.resolve()
|
||||
const ours = () => (foreignDxmTag(tag)
|
||||
? Promise.reject(new Error('<' + tag + '> is defined by a script that is not DX Maps'))
|
||||
: undefined)
|
||||
if (customElements.get(tag)) return ours() || Promise.resolve()
|
||||
return Promise.race([
|
||||
customElements.whenDefined(tag),
|
||||
new Promise((_, fail) => setTimeout(() => {
|
||||
if (customElements.get(tag)) return
|
||||
fail(new Error('<' + tag + '> never registered (bundle loaded but defined no element)'))
|
||||
}, ms || 15000))
|
||||
])
|
||||
]).then(() => ours())
|
||||
}
|
||||
|
||||
// A dxm- tag held by a class no DX Maps bundle branded (ownTags.js brand()).
|
||||
function foreignDxmTag(tag) {
|
||||
if (!/^dxm-/.test(String(tag))) return false
|
||||
const held = customElements.get(tag)
|
||||
return Boolean(held) && !held.__dxmBundle
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -58,6 +58,8 @@
|
|||
"check:poster-sizes": "node internal/check-poster-sizes.mjs",
|
||||
"check:pin-hint-floor": "node internal/check-pin-hint-floor.mjs",
|
||||
"check:pin-hint-floor:self-test": "node internal/check-pin-hint-floor.mjs --self-test",
|
||||
"check:element-namespace": "node internal/check-element-namespace.mjs",
|
||||
"check:element-namespace:self-test": "node internal/check-element-namespace.mjs --self-test",
|
||||
"check:no-fleet-names": "node internal/check-no-fleet-names.mjs",
|
||||
"check:no-fleet-names:self-test": "node internal/check-no-fleet-names.mjs --self-test",
|
||||
"check:dashboard-filter-a11y": "node plugin-designs/research-dashboard/scripts/check-dashboard-filter-a11y.mjs",
|
||||
|
|
@ -350,8 +352,8 @@
|
|||
"dev": "bun x vite",
|
||||
"fix:sri": "node internal/fix-sri.mjs",
|
||||
"gallery": "node internal/generate-gallery.mjs",
|
||||
"gates:post": "node internal/run-parallel.mjs --label=post -- check:capability-derived check:drop check:parse verify check:sri check:public-hygiene check:label-joins check:facet-cascade check:facet-one-field check:heartbeat check:kpi-unit check:composite-reg check:descriptions check:no-abs-paths check:no-codename check:dep-names check:composite-srcs check:embed-targets check:nested-token check:i18n-parity check:tabs-localized check:packets-all check:packet-strings-parity check:zone-census check:zoning-declared check:share-policy check:library-index check:csv-shape check:capability-citations check:catalog-identity check:no-orphan-gates check:quoted-scripts check:script-flags check:capability-exemplars check:packet-fixture check:packet-browser check:provider-switch check:locale-reachable check:url-resolver check:manifest-covers check:one-palette check:pin-dim-slider check:legend-source check:clustering-modes check:composite-embed-knobs check:composite-locale-leaks check:linked-vocabulary check:wp-embed check:dashboard-geocoder-provider check:leaf-engine-per-provider check:auto-engine check:engine-contract check:map-props-unit check:composites-mount check:composite-interop check:no-free-identifiers check:map-fly-reduced-motion check:mst-clustering check:list-prop-unit check:profiles-mount check:cdn-pins check:no-eval check:popup-escaping check:i18n-treeshake check:pinned-umd check:one-palette:self-test check:no-cross-plugin-imports check:no-cross-plugin-imports:self-test check:map-attribution check:studio-rail check:approx-pin-note check:embedder-keys check:provider-for check:legend-logical-insets check:legend-logical-insets:self-test check:optional-t-equivalence check:text-highlight check:religion-label-not-value check:i18n-stopped-scope check:no-silent-engine check:no-silent-engine:self-test check:regions-uses-library check:shadow-css-parses check:square-map-controls check:preset-config-merge check:instance-config-keys check:frozen-labels check:plural-forms check:region-fill-repaint check:region-paint-single-source check:poster-print-fallback check:posters-exportable check:country-names check:reduced-motion check:no-dead-library check:universal-props check:readme-size check:tree-relative check:leaf-hints check:snippet-engine check:snippet-engine:self-test check:embed-base check:link-coverage check:no-public-binds check:shared-reached check:tree-weight check:no-fleet-names:self-test check:pin-hint-floor:self-test check:poster-sizes:self-test check:shell-header:self-test",
|
||||
"gates:pre": "node internal/run-parallel.mjs --label=pre -- check:template-literal check:mjs-parse check:sfc-parse check:tab-radius check:synced-css check:doc-scripts check:setup-order check:package-json-unique-keys check:no-repo-pb-hooks check:no-credentials-omit check:no-credentials-omit:self-test check:shadow-reduced-motion check:poster-action-print check:targets check:targets:self-test check:browser-gates-guarded check:pin-selection check:facet-shape check:hardcoded-english:self-test check:list-selection check:selector-fields check:upg-zone-joins check:gospel-set-charts check:gospel-set-fit check:describe-group check:one-scroll-container check:packet-charts check:composite-token-url check:language-tree-layout check:i18n-keys-exist check:i18n-never-translated check:packet-variants check:profile-table check:element-bootstrap check:embed-url-absolute check:frame-target check:language-tree-model check:map-menu-anchor check:selection-kinds check:tiered-points check:whiteboard-projection check:mercator-slice check:ring-vocabulary check:map-props-unit check:mobile-gating check:provide-shadowing check:legend-top-offset check:cdn-cache check:plural-forms check:select-zone-race check:script-registry check:map-control-overlap check:poster-attribution check:board-map-options check:gospel-whiteboard check:packet-map-missing-loud check:poster-layout-optin check:ported-globals-identical check:ring-bands check:packet-a1-structure check:india-states check:batch-selection-export check:zone-title-tier-a check:evangelical-share check:map-labels check:packet-offline check:help-reachable check:gated-not-in-tree check:window-globals-released check:legend-data-contract check:no-internal-role-nouns check:poster-fetch-guard check:people-group-records check:sentence-slots check:popup-href-escaped check:popup-pan-controls check:country-map-refetch check:pane-config-reforward check:viewport-meta check:viewport-meta:self-test check:label-key-coverage check:poster-browser-equiv check:poster-render-pinned check:country-sheet-one-path check:country-sheet-one-path:self-test check:side-lanes check:side-lanes:self-test check:posterverse-shelf check:host-locale-fetch check:print-frame-reclaim check:click-sheet check:coverage-consistent:chained check:coverage-consistent:poison check:dashboard-filter-a11y check:filter-multivalue check:hover-channel check:kit-options-reachable check:layout-key-namespaced check:legend-mirrors check:map-unmount-race check:no-conflict-markers check:series-isolation check:snapshot-guard check:stale-sweep-claim check:surfaces-read-the-tier check:translator-contacts check:wall-wysiwyg check:wall-print-watch check:wall-no-bg-photos check:wall-pan check:template-i18n check:list-pattern-doc check:shadow-style-labels-unique check:grid-image-loading check:retry-fetch check:panel-sheets check:poster-wall-host-seams check:poster-design-catalogue check:wall-photo-weight check:no-fleet-names check:pin-hint-floor check:poster-sizes check:upg-count check:shell-header check:pg-name-gate",
|
||||
"gates:post": "node internal/run-parallel.mjs --label=post -- check:capability-derived check:drop check:parse verify check:sri check:public-hygiene check:label-joins check:facet-cascade check:facet-one-field check:heartbeat check:kpi-unit check:composite-reg check:descriptions check:no-abs-paths check:no-codename check:dep-names check:composite-srcs check:embed-targets check:nested-token check:i18n-parity check:tabs-localized check:packets-all check:packet-strings-parity check:zone-census check:zoning-declared check:share-policy check:library-index check:csv-shape check:capability-citations check:catalog-identity check:no-orphan-gates check:quoted-scripts check:script-flags check:capability-exemplars check:packet-fixture check:packet-browser check:provider-switch check:locale-reachable check:url-resolver check:manifest-covers check:one-palette check:pin-dim-slider check:legend-source check:clustering-modes check:composite-embed-knobs check:composite-locale-leaks check:linked-vocabulary check:wp-embed check:dashboard-geocoder-provider check:leaf-engine-per-provider check:auto-engine check:engine-contract check:map-props-unit check:composites-mount check:composite-interop check:no-free-identifiers check:map-fly-reduced-motion check:mst-clustering check:list-prop-unit check:profiles-mount check:cdn-pins check:no-eval check:popup-escaping check:i18n-treeshake check:pinned-umd check:one-palette:self-test check:no-cross-plugin-imports check:no-cross-plugin-imports:self-test check:map-attribution check:studio-rail check:approx-pin-note check:embedder-keys check:provider-for check:legend-logical-insets check:legend-logical-insets:self-test check:optional-t-equivalence check:text-highlight check:religion-label-not-value check:i18n-stopped-scope check:no-silent-engine check:no-silent-engine:self-test check:regions-uses-library check:shadow-css-parses check:square-map-controls check:preset-config-merge check:instance-config-keys check:frozen-labels check:plural-forms check:region-fill-repaint check:region-paint-single-source check:poster-print-fallback check:posters-exportable check:country-names check:reduced-motion check:no-dead-library check:universal-props check:readme-size check:tree-relative check:leaf-hints check:snippet-engine check:snippet-engine:self-test check:embed-base check:link-coverage check:no-public-binds check:shared-reached check:tree-weight check:no-fleet-names:self-test check:pin-hint-floor:self-test check:poster-sizes:self-test check:shell-header:self-test check:element-namespace:self-test",
|
||||
"gates:pre": "node internal/run-parallel.mjs --label=pre -- check:template-literal check:mjs-parse check:sfc-parse check:tab-radius check:synced-css check:doc-scripts check:setup-order check:package-json-unique-keys check:no-repo-pb-hooks check:no-credentials-omit check:no-credentials-omit:self-test check:shadow-reduced-motion check:poster-action-print check:targets check:targets:self-test check:browser-gates-guarded check:pin-selection check:facet-shape check:hardcoded-english:self-test check:list-selection check:selector-fields check:upg-zone-joins check:gospel-set-charts check:gospel-set-fit check:describe-group check:one-scroll-container check:packet-charts check:composite-token-url check:language-tree-layout check:i18n-keys-exist check:i18n-never-translated check:packet-variants check:profile-table check:element-bootstrap check:embed-url-absolute check:frame-target check:language-tree-model check:map-menu-anchor check:selection-kinds check:tiered-points check:whiteboard-projection check:mercator-slice check:ring-vocabulary check:map-props-unit check:mobile-gating check:provide-shadowing check:legend-top-offset check:cdn-cache check:plural-forms check:select-zone-race check:script-registry check:map-control-overlap check:poster-attribution check:board-map-options check:gospel-whiteboard check:packet-map-missing-loud check:poster-layout-optin check:ported-globals-identical check:ring-bands check:packet-a1-structure check:india-states check:batch-selection-export check:zone-title-tier-a check:evangelical-share check:map-labels check:packet-offline check:help-reachable check:gated-not-in-tree check:window-globals-released check:legend-data-contract check:no-internal-role-nouns check:poster-fetch-guard check:people-group-records check:sentence-slots check:popup-href-escaped check:popup-pan-controls check:country-map-refetch check:pane-config-reforward check:viewport-meta check:viewport-meta:self-test check:label-key-coverage check:poster-browser-equiv check:poster-render-pinned check:country-sheet-one-path check:country-sheet-one-path:self-test check:side-lanes check:side-lanes:self-test check:posterverse-shelf check:host-locale-fetch check:print-frame-reclaim check:click-sheet check:coverage-consistent:chained check:coverage-consistent:poison check:dashboard-filter-a11y check:filter-multivalue check:hover-channel check:kit-options-reachable check:layout-key-namespaced check:legend-mirrors check:map-unmount-race check:no-conflict-markers check:series-isolation check:snapshot-guard check:stale-sweep-claim check:surfaces-read-the-tier check:translator-contacts check:wall-wysiwyg check:wall-print-watch check:wall-no-bg-photos check:wall-pan check:template-i18n check:list-pattern-doc check:shadow-style-labels-unique check:grid-image-loading check:retry-fetch check:panel-sheets check:poster-wall-host-seams check:poster-design-catalogue check:wall-photo-weight check:no-fleet-names check:pin-hint-floor check:poster-sizes check:upg-count check:shell-header check:pg-name-gate check:element-namespace",
|
||||
"gen:iso3-to-alpha2": "node library/scripts/generate-iso3-to-alpha2.mjs",
|
||||
"internet:adm1": "node plugin-designs/cities-internet/scripts/build-adm1-internet.mjs",
|
||||
"library-index": "node internal/generate-library-index.mjs",
|
||||
|
|
@ -467,6 +469,7 @@
|
|||
"check:coverage-consistent": "the gospel-resources surfaces must agree: no resource on an ISO RESERVED code (und/mul/mis/zxx), every resourced code NAMED, table reach recounted off the pins, no invented URL, tiers reconcile. Static, sub-second. Self-test: `bun run check:coverage-consistent:poison`, all 12 clauses (A-L) must fail. Clause L is the one that is not about consistency: it fails when the link-verification record goes stale, because 'link checked' is a claim about the present tense. Written after the same drift defect was found by hand three times.",
|
||||
"check:csv-shape": "the export must OPEN as a table: header on line 0, every row matching. Run the `check:csv-shape:self-test` script for the NEGATIVE test (forces the provenance comment back to line 0 IN MEMORY and requires this gate to REJECT it) — the header used to claim 'NEGATIVE-TESTED' with no way to re-run it.",
|
||||
"check:poster-sizes": "the shared poster-size ladder (library/constants/posterSizes.js) is right: picker order = ladder, dot-free keys, portrait only, the sheets glue up to the finished size, photo slots on exactly 66x66 + 60x96, paper prints and the rest go to a print-shop PDF, every alias resolves, paperFor() picks Letter or A4 by region. Run the `check:poster-sizes:self-test` script for the NEGATIVE test",
|
||||
"check:element-namespace": "DX Maps never takes a host page's tag by default and never adopts a foreign one: the doxa-simple-map and doxa-research-map bundles define <dxm-simple-map> and <dxm-research-map> (the manifest mounts those); the host names doxa-map, doxa-simple-map and doxa-research-map are defined only on the host's opt-in (data-legacy-tags / window.DXM_LEGACY_TAGS); a tag already held by a foreign class is reported, never adopted, and whenTagDefined refuses a foreign dxm- tag; one bundle per tag (people-groups-grid is the one carded exception).",
|
||||
"check:pin-hint-floor": "the pin-hint pill sits at the map's bottom on a page that scrolls (the fold is not an obstacle there) and is still lifted above the fold on a full-screen page; the legend sheet and the licence credit still lift it; PinHint.vue takes its floor from pinHintFloor.js. Run the `check:pin-hint-floor:self-test` script for the NEGATIVE test",
|
||||
"check:no-fleet-names": "tracked source (not data/, public/ or the translation catalogues) names no build-team member, attributes no request to a user and carries no dated QA-round tag; an allowance is a named LINE, never a whole file. Run the `check:no-fleet-names:self-test` script for the NEGATIVE test",
|
||||
"check:dashboard-filter-a11y": "the dashboard's cross-filter is operable and audible: every filter chip is a <button type=\"button\"> with an aria-label naming the ACTION (a filter that can be set by keyboard must be clearable by keyboard), the shell carries exactly ONE always-rendered polite role=\"status\" region so a brush that changes a number far from the control is announced once rather than six times or not at all, and no resize handle's accessible name is a raw English literal. AST over the parsed templates plus the built bundle — no browser.",
|
||||
|
|
|
|||
|
|
@ -545,7 +545,7 @@ assertNoDuplicateTabKeys(NAV_MODEL)
|
|||
const HEAVY_ELEMENTS = new Set([
|
||||
// map elements proper
|
||||
'doxa-research-map', 'doxa-simple-map', 'cities-internet-map', 'gospel-resources-map',
|
||||
'my-upg-100-list-map', 'doxa-map', 'doxa-maps-spa',
|
||||
'my-upg-100-list-map', 'doxa-map', 'doxa-maps-spa', 'dxm-research-map', 'dxm-simple-map',
|
||||
// composites that NEST a map, so they own a context too (measured, see above)
|
||||
'dashboard-plus-grid', 'research-dashboard-map', 'demo-map', 'all-people-groups',
|
||||
'country-posters-map', 'key-cities-map', 'research-map-plus-grid',
|
||||
|
|
|
|||
|
|
@ -1,13 +1,14 @@
|
|||
import { defineMapElement } from '@map/elements/defineMapElement.js'
|
||||
import { brand, ownTagFree, legacyTagsRequested } from '@map/elements/ownTags.js'
|
||||
/**
|
||||
* doxa-research-map / index.js — Bundle entry
|
||||
*
|
||||
* Vite multi-entry build target. Emits app/doxa-maps/doxa-research-map/doxa-research-map.js.
|
||||
*
|
||||
* Registers ONE custom-element tag that mounts ProfileLoader:
|
||||
* - <doxa-research-map> explicit tag matching the bundle name
|
||||
* The legacy <doxa-map> tag is owned by the doxa-simple-map bundle — this
|
||||
* bundle deliberately does not register it (see the registration comment below).
|
||||
* - <dxm-research-map> DX Maps' own name (see the registration comment below)
|
||||
* An existing embed that still writes <doxa-research-map> adds `data-legacy-tags` to its <script> tag.
|
||||
* <doxa-map> belongs to the doxa-simple-map bundle; this bundle never registers it.
|
||||
*
|
||||
* The profile-config attribute is parsed by ProfileLoader (in @map). `profile`
|
||||
* must match a .vue file in this bundle's folder.
|
||||
|
|
@ -47,22 +48,27 @@ function buildDoxaResearchMapElement() {
|
|||
})
|
||||
}
|
||||
|
||||
const DoxaResearchMapElement = buildDoxaResearchMapElement()
|
||||
// Read at evaluation time: legacyTagsRequested() reads document.currentScript, which is gone later.
|
||||
const LEGACY_TAGS = legacyTagsRequested()
|
||||
const BUNDLE = 'doxa-research-map'
|
||||
const DxmResearchMapElement = brand(buildDoxaResearchMapElement(), BUNDLE)
|
||||
|
||||
// ─── Register ONE tag — <doxa-research-map> ──────────────────────────────────
|
||||
// IMPORTANT: this bundle deliberately does NOT register <doxa-map>. The legacy
|
||||
// <doxa-map> tag is owned exclusively by the doxa-simple-map bundle. Why:
|
||||
// customElements.define() is one-shot per tag per page session; if BOTH bundles
|
||||
// registered <doxa-map>, an SPA user who visited /research first would have the
|
||||
// research bundle's profileModules stuck on <doxa-map>, then any subsequent
|
||||
// /home / /pray / /adopt navigation would render <doxa-map> with the research
|
||||
// bundle's profile registry — which has 'research-map' but not 'doxa-simple-map',
|
||||
// producing the "Profile not found" error. DoxaMapSlot already uses distinct
|
||||
// tags per bundle (<doxa-map> vs <doxa-research-map>) — keep them disjoint here.
|
||||
if (typeof customElements !== 'undefined') {
|
||||
if (!customElements.get('doxa-research-map')) {
|
||||
customElements.define('doxa-research-map', DoxaResearchMapElement)
|
||||
}
|
||||
// ─── Register ONE tag — <dxm-research-map> ───────────────────────────────────
|
||||
// ★ DX Maps' OWN name (library/elements/ownTags.js). DX Life's own /js/doxa-research-map.js defines
|
||||
// <doxa-research-map>, and the first definition wins, so under that name a page could be drawing the host's
|
||||
// element. The older name is defined only when the host asks: a `data-legacy-tags` attribute on this
|
||||
// bundle's <script>, or window.DXM_LEGACY_TAGS = true before it loads.
|
||||
// This bundle never registers <doxa-map> either: customElements.define() is one-shot per tag per page, so a
|
||||
// tag shared with the simple-map bundle would keep whichever profile registry loaded first, and a page that
|
||||
// visited research first would then fail the simple-map profiles with "Profile not found".
|
||||
// ownTagFree: a second load of this bundle is silent; a tag held by anything else is reported, never adopted.
|
||||
// The FIRST define in this file is the profile's element (internal/generate-tree.mjs reads it).
|
||||
if (ownTagFree('dxm-research-map', BUNDLE)) customElements.define('dxm-research-map', DxmResearchMapElement)
|
||||
|
||||
// The older generic name, ONLY when the host asked. Never on by default.
|
||||
if (LEGACY_TAGS) {
|
||||
const legacy = 'doxa-research-map'
|
||||
if (ownTagFree(legacy, BUNDLE)) customElements.define(legacy, brand(buildDoxaResearchMapElement(), BUNDLE))
|
||||
}
|
||||
|
||||
export default DoxaResearchMapElement
|
||||
export default DxmResearchMapElement
|
||||
|
|
|
|||
|
|
@ -1,20 +1,21 @@
|
|||
/**
|
||||
* plugin-designs/doxa-simple-map/index.js
|
||||
*
|
||||
* Bundle entry — registers the doxa-simple-map web component(s).
|
||||
* Bundle entry — registers the doxa-simple-map web component.
|
||||
*
|
||||
* Registers TWO custom-element tag names that mount the SAME ProfileLoader
|
||||
* (separate defineCustomElement calls so each tag gets its own class):
|
||||
* - <doxa-map> legacy production tag (Q1 back-compat — must keep working)
|
||||
* - <doxa-simple-map> new explicit tag matching the bundle name
|
||||
* ★ ITS TAG IS <dxm-simple-map>, DX Maps' own name (library/elements/ownTags.js). A host can define the
|
||||
* older generic names first (DX Life's own /js/doxa-simple-map.js defines <doxa-map> and <doxa-simple-map>),
|
||||
* and the first definition wins, so under those names a page could be drawing the host's element, not this
|
||||
* one. The older names are defined only when the host asks for them: a `data-legacy-tags` attribute on this
|
||||
* bundle's <script>, or window.DXM_LEGACY_TAGS = true before it loads. Each name gets its own class
|
||||
* (separate defineCustomElement calls: one class under two tags is undefined behaviour).
|
||||
*
|
||||
* Usage from a host page (legacy):
|
||||
* <script src="/app/doxa-simple-map.iife.js"></script>
|
||||
* <doxa-map profile-config='{"profile":"doxa-simple-map","tk":"pk.eyJ..."}'></doxa-map>
|
||||
* Usage:
|
||||
* <script src="<tree>/doxa-simple-map/doxa-simple-map.js"></script>
|
||||
* <dxm-simple-map profile-config='{"profile":"doxa-simple-map","tk":"pk.eyJ..."}'></dxm-simple-map>
|
||||
*
|
||||
* Usage (new):
|
||||
* <script src="/app/doxa-simple-map.iife.js"></script>
|
||||
* <doxa-simple-map profile-config='{"profile":"doxa-simple-map","tk":"pk.eyJ..."}'></doxa-simple-map>
|
||||
* An existing embed that still writes <doxa-map> or <doxa-simple-map> adds `data-legacy-tags` to its
|
||||
* <script> tag.
|
||||
*
|
||||
* The profile-config attribute is parsed by ProfileLoader (in @map).
|
||||
* `profile` must match a .vue file in this bundle's folder.
|
||||
|
|
@ -29,8 +30,12 @@
|
|||
*/
|
||||
|
||||
import { defineMapElement } from '@map/elements/defineMapElement.js'
|
||||
import { brand, ownTagFree, legacyTagsRequested } from '@map/elements/ownTags.js'
|
||||
import { registerStrategies } from '@map/colors/_registry.js'
|
||||
|
||||
// Read NOW, at evaluation time: legacyTagsRequested() reads document.currentScript, which is gone later.
|
||||
const LEGACY_TAGS = legacyTagsRequested()
|
||||
|
||||
// ─── Bundle-private profile registry ─────────────────────────────────────────
|
||||
// import.meta.glob is evaluated by Vite at build time relative to THIS file —
|
||||
// so it captures only this bundle's profiles. Handed to ProfileLoader via
|
||||
|
|
@ -73,21 +78,20 @@ function buildDoxaMapElement() {
|
|||
})
|
||||
}
|
||||
|
||||
const DoxaMapElement = buildDoxaMapElement()
|
||||
const DoxaSimpleMapElement = buildDoxaMapElement()
|
||||
const BUNDLE = 'doxa-simple-map'
|
||||
const DxmSimpleMapElement = brand(buildDoxaMapElement(), BUNDLE)
|
||||
|
||||
// ─── Register both tag names ─────────────────────────────────────────────────
|
||||
// Guards prevent "already registered" errors when this IIFE is loaded twice
|
||||
// (e.g. on a page that ships both legacy and new <script> tags during a
|
||||
// transition window).
|
||||
if (typeof customElements !== 'undefined') {
|
||||
if (!customElements.get('doxa-map')) {
|
||||
customElements.define('doxa-map', DoxaMapElement)
|
||||
}
|
||||
if (!customElements.get('doxa-simple-map')) {
|
||||
customElements.define('doxa-simple-map', DoxaSimpleMapElement)
|
||||
// ─── Register the tag ────────────────────────────────────────────────────────
|
||||
// ownTagFree: a second load of this bundle is silent (the first copy serves); a tag already held by
|
||||
// anything else is reported, never adopted. The FIRST define in this file is the profile's element:
|
||||
// internal/generate-tree.mjs reads it into the manifest, the leaf pages and the gallery.
|
||||
if (ownTagFree('dxm-simple-map', BUNDLE)) customElements.define('dxm-simple-map', DxmSimpleMapElement)
|
||||
|
||||
// The older generic names, ONLY when the host asked (see the header). Never on by default.
|
||||
if (LEGACY_TAGS) {
|
||||
for (const legacy of ['doxa-map', 'doxa-simple-map']) {
|
||||
if (ownTagFree(legacy, BUNDLE)) customElements.define(legacy, brand(buildDoxaMapElement(), BUNDLE))
|
||||
}
|
||||
}
|
||||
|
||||
export default DoxaMapElement
|
||||
export { DoxaSimpleMapElement }
|
||||
export default DxmSimpleMapElement
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@
|
|||
"composes": [
|
||||
"dashboard-plus-grid",
|
||||
"people-groups-grid",
|
||||
"doxa-research-map",
|
||||
"doxa-simple-map",
|
||||
"dxm-research-map",
|
||||
"dxm-simple-map",
|
||||
"cities-internet-map",
|
||||
"gospel-resources-map",
|
||||
"my-upg-100-list-map",
|
||||
|
|
|
|||
|
|
@ -392,7 +392,7 @@ const CAP_ICON = { 5: 'monitor', 4: 'tree', 3: 'layers', 2: 'grid', 1: 'embed' }
|
|||
const HEAVY_ELEMENTS = new Set([
|
||||
// map elements proper
|
||||
'doxa-research-map', 'doxa-simple-map', 'cities-internet-map', 'gospel-resources-map',
|
||||
'my-upg-100-list-map', 'doxa-map', 'doxa-maps-spa',
|
||||
'my-upg-100-list-map', 'doxa-map', 'doxa-maps-spa', 'dxm-research-map', 'dxm-simple-map',
|
||||
// composites that NEST a map, so they own a context too (measured, see above)
|
||||
'dashboard-plus-grid', 'research-dashboard-map', 'demo-map', 'all-people-groups',
|
||||
'country-posters-map', 'key-cities-map', 'research-map-plus-grid',
|
||||
|
|
|
|||
|
|
@ -2,6 +2,6 @@
|
|||
"stage": "production",
|
||||
"_comment": "Capability-4 composite: the monolithic doxa-research-map (cap-3) stacked above the people-groups-grid (cap-2), scrolled as one element. THE MOBILE SIBLING of dashboard-plus-grid — the 2026-09-22 ruling was two separate cap-4 plugins rather than one element that swaps its top half by aspect ratio ('that would be really complex'); the SPA picks which one to show. Composes by TAG + BUNDLE URL (the stack-demo element/src contract) rather than baking the children in, because importing the research map's .vue directly would bypass doxa-research-map/index.js and silently drop its bundle-private colour strategies, its profileModules registry, its Pinia/i18n pair and the RTL plugin. The grid's own search + filters are ON here (unlike the desktop sibling, where the dashboard header owns them).",
|
||||
"type": "nested-elements-mfe",
|
||||
"composes": ["doxa-research-map", "people-groups-grid"],
|
||||
"composes": ["dxm-research-map", "people-groups-grid"],
|
||||
"label": "Research Map + Grid (mobile composite, stacked to scroll)"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -470,7 +470,7 @@ function pushToChildren() {
|
|||
pushing = true
|
||||
// Release after the children have re-rendered and emitted, not synchronously.
|
||||
setTimeout(() => { pushing = false }, 1200)
|
||||
const map = rootEl.querySelector('doxa-research-map')
|
||||
const map = rootEl.querySelector('dxm-research-map')
|
||||
if (map) {
|
||||
let cfg = {}
|
||||
try { cfg = JSON.parse(map.getAttribute('profile-config') || '{}') } catch (_) { cfg = {} }
|
||||
|
|
@ -539,7 +539,7 @@ const sections = computed(() => [
|
|||
// sibling (BUG-RESEARCH-DASHBOARD-HEADER-STACK-WRONG). One header per element.
|
||||
{
|
||||
key: 'map',
|
||||
element: 'doxa-research-map',
|
||||
element: 'dxm-research-map',
|
||||
src: bundleSrc('doxa-research-map', 'doxa-research-map'),
|
||||
// ★ profile-config IS MANDATORY FOR THIS CHILD, and omitting it was a real shipped defect
|
||||
// (found + fixed 2026-09-22 by READING the regenerated README screenshot, not by any gate).
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -67,7 +67,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <doxa-maps-spa> custom element. -->
|
||||
<script src="../../doxa-maps-spa.js" integrity="sha384-O6ncS56zUa2/9qib46/2MV5z2GRI12GqyDGIiJOGX4Zl1cGqUiNIvLLl15juiTDl" crossorigin="anonymous"></script>
|
||||
<script src="../../doxa-maps-spa.js" integrity="sha384-7bpR/WI9TPG3Q6X+lZPycUzCUjKetwQnqkYSS7f46LwrTIqw8/UAVWNMh7W6B3o7" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <doxa-maps-spa> custom element. -->
|
||||
<script src="../doxa-maps-spa.js" integrity="sha384-O6ncS56zUa2/9qib46/2MV5z2GRI12GqyDGIiJOGX4Zl1cGqUiNIvLLl15juiTDl" crossorigin="anonymous"></script>
|
||||
<script src="../doxa-maps-spa.js" integrity="sha384-7bpR/WI9TPG3Q6X+lZPycUzCUjKetwQnqkYSS7f46LwrTIqw8/UAVWNMh7W6B3o7" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -393,7 +393,7 @@
|
|||
"bundle": "doxa-maps-spa",
|
||||
"scriptUrl": "./doxa-maps-spa/doxa-maps-spa.js",
|
||||
"output": "dx-maps/doxa-maps-spa/doxa-maps-spa.js",
|
||||
"integrity": "sha384-O6ncS56zUa2/9qib46/2MV5z2GRI12GqyDGIiJOGX4Zl1cGqUiNIvLLl15juiTDl",
|
||||
"integrity": "sha384-7bpR/WI9TPG3Q6X+lZPycUzCUjKetwQnqkYSS7f46LwrTIqw8/UAVWNMh7W6B3o7",
|
||||
"elements": [
|
||||
"doxa-maps-spa"
|
||||
],
|
||||
|
|
@ -423,7 +423,7 @@
|
|||
"scriptUrl": "./doxa-maps-spa/doxa-maps-spa.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./doxa-maps-spa/doxa-maps-spa/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=\"./doxa-maps-spa/doxa-maps-spa.js\" integrity=\"sha384-O6ncS56zUa2/9qib46/2MV5z2GRI12GqyDGIiJOGX4Zl1cGqUiNIvLLl15juiTDl\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<doxa-maps-spa profile-config='{\"profile\":\"doxa-maps-spa\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-maps-spa>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-maps-spa/doxa-maps-spa.js\" integrity=\"sha384-7bpR/WI9TPG3Q6X+lZPycUzCUjKetwQnqkYSS7f46LwrTIqw8/UAVWNMh7W6B3o7\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<doxa-maps-spa profile-config='{\"profile\":\"doxa-maps-spa\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-maps-spa>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -450,9 +450,9 @@
|
|||
"bundle": "doxa-research-map",
|
||||
"scriptUrl": "./doxa-research-map/doxa-research-map.js",
|
||||
"output": "dx-maps/doxa-research-map/doxa-research-map.js",
|
||||
"integrity": "sha384-22n6l3xAj9jEpCWmgmgb97PC7Qpj+VymS1t1fiCv+mXcTeTLFByZDIkxSsQ0MPsF",
|
||||
"integrity": "sha384-TjJO51ZdqT/jYQtL7F6PvO4Fa97zVihdBpjJT68//c8m5uJgZL9XIlm8xAmeJDsJ",
|
||||
"elements": [
|
||||
"doxa-research-map"
|
||||
"dxm-research-map"
|
||||
],
|
||||
"stage": "experimental",
|
||||
"profiles": [
|
||||
|
|
@ -462,15 +462,15 @@
|
|||
"label": "Research Map",
|
||||
"file": "research-map.vue",
|
||||
"description": "The researcher's workbench: every piece a missiologist, demographer or",
|
||||
"element": "doxa-research-map",
|
||||
"element": "dxm-research-map",
|
||||
"type": "monolithic",
|
||||
"isMap": true,
|
||||
"iframeUrl": "./doxa-research-map/research-map/index.html",
|
||||
"scriptUrl": "./doxa-research-map/doxa-research-map.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./doxa-research-map/research-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<!-- MapLibre engine (the default), fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.js\" integrity=\"sha384-5+cfbwT0iiub6VsQAdn6yz16nr6sDiQoHx6tm4O8OVYXHYOxcffFmCJBL0dgdvGp\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.css\" integrity=\"sha384-uTttxo/aOKbdE5RlD/SPzSDoDmNvGlUYPjONi2MN/b7c9HPSvW07OIuyP7uL6jxK\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-research-map/doxa-research-map.js\" integrity=\"sha384-22n6l3xAj9jEpCWmgmgb97PC7Qpj+VymS1t1fiCv+mXcTeTLFByZDIkxSsQ0MPsF\" crossorigin=\"anonymous\"></script>\n<!-- MapLibre draws this map and needs no token. For Mapbox, paste this map's embed.scriptMapbox from manifest.json instead: it sets \"provider\":\"mapbox\" and preloads the Mapbox engine; fill \"tk\" with your token. -->\n<doxa-research-map profile-config='{\"profile\":\"research-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-research-map>",
|
||||
"scriptMapbox": "<!-- Mapbox engine, fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css\" integrity=\"sha384-rp1X/jJ9MpWPef9OimfXhOaOc4Gzs87yQvF+ajwY6X2H4PTeHNycNlLWiWvj7ehV\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-research-map/doxa-research-map.js\" integrity=\"sha384-22n6l3xAj9jEpCWmgmgb97PC7Qpj+VymS1t1fiCv+mXcTeTLFByZDIkxSsQ0MPsF\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<doxa-research-map profile-config='{\"profile\":\"research-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-research-map>"
|
||||
"script": "<!-- MapLibre engine (the default), fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.js\" integrity=\"sha384-5+cfbwT0iiub6VsQAdn6yz16nr6sDiQoHx6tm4O8OVYXHYOxcffFmCJBL0dgdvGp\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.css\" integrity=\"sha384-uTttxo/aOKbdE5RlD/SPzSDoDmNvGlUYPjONi2MN/b7c9HPSvW07OIuyP7uL6jxK\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-research-map/doxa-research-map.js\" integrity=\"sha384-TjJO51ZdqT/jYQtL7F6PvO4Fa97zVihdBpjJT68//c8m5uJgZL9XIlm8xAmeJDsJ\" crossorigin=\"anonymous\"></script>\n<!-- MapLibre draws this map and needs no token. For Mapbox, paste this map's embed.scriptMapbox from manifest.json instead: it sets \"provider\":\"mapbox\" and preloads the Mapbox engine; fill \"tk\" with your token. -->\n<dxm-research-map profile-config='{\"profile\":\"research-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dxm-research-map>",
|
||||
"scriptMapbox": "<!-- Mapbox engine, fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css\" integrity=\"sha384-rp1X/jJ9MpWPef9OimfXhOaOc4Gzs87yQvF+ajwY6X2H4PTeHNycNlLWiWvj7ehV\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-research-map/doxa-research-map.js\" integrity=\"sha384-TjJO51ZdqT/jYQtL7F6PvO4Fa97zVihdBpjJT68//c8m5uJgZL9XIlm8xAmeJDsJ\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<dxm-research-map profile-config='{\"profile\":\"research-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dxm-research-map>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -482,7 +482,7 @@
|
|||
"provider": "maplibre",
|
||||
"instanceId": "research-map-maplibre"
|
||||
},
|
||||
"element": "doxa-research-map",
|
||||
"element": "dxm-research-map",
|
||||
"iframeUrl": "./doxa-research-map/research-map/maplibre/index.html",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./doxa-research-map/research-map/maplibre/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>"
|
||||
|
|
@ -496,10 +496,9 @@
|
|||
"bundle": "doxa-simple-map",
|
||||
"scriptUrl": "./doxa-simple-map/doxa-simple-map.js",
|
||||
"output": "dx-maps/doxa-simple-map/doxa-simple-map.js",
|
||||
"integrity": "sha384-D8fEYcK088iPw/CYxV5XS4cqcfdvM04/farKZuL6zvXE8TpRLxhgLP74HWhPDDX5",
|
||||
"integrity": "sha384-wdDs5rHpFGBL1RF+4Zt/JMspTqmr4DOC+lB1niJEXY1hAweTzfQsOoKL6L3VZvwU",
|
||||
"elements": [
|
||||
"doxa-map",
|
||||
"doxa-simple-map"
|
||||
"dxm-simple-map"
|
||||
],
|
||||
"stage": "production",
|
||||
"profiles": [
|
||||
|
|
@ -509,15 +508,15 @@
|
|||
"label": "Prayer Progress — prayer map",
|
||||
"file": "doxa-simple-map.vue",
|
||||
"description": "The simple world map, shipped as three presets off ONE prop table —",
|
||||
"element": "doxa-map",
|
||||
"element": "dxm-simple-map",
|
||||
"type": "parameterized",
|
||||
"isMap": true,
|
||||
"iframeUrl": "./doxa-simple-map/doxa-simple-map/index.html",
|
||||
"scriptUrl": "./doxa-simple-map/doxa-simple-map.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./doxa-simple-map/doxa-simple-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<!-- MapLibre engine (the default), fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.js\" integrity=\"sha384-5+cfbwT0iiub6VsQAdn6yz16nr6sDiQoHx6tm4O8OVYXHYOxcffFmCJBL0dgdvGp\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.css\" integrity=\"sha384-uTttxo/aOKbdE5RlD/SPzSDoDmNvGlUYPjONi2MN/b7c9HPSvW07OIuyP7uL6jxK\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-simple-map/doxa-simple-map.js\" integrity=\"sha384-D8fEYcK088iPw/CYxV5XS4cqcfdvM04/farKZuL6zvXE8TpRLxhgLP74HWhPDDX5\" crossorigin=\"anonymous\"></script>\n<!-- MapLibre draws this map and needs no token. For Mapbox, paste this map's embed.scriptMapbox from manifest.json instead: it sets \"provider\":\"mapbox\" and preloads the Mapbox engine; fill \"tk\" with your token. -->\n<doxa-map profile-config='{\"profile\":\"doxa-simple-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-map>",
|
||||
"scriptMapbox": "<!-- Mapbox engine, fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css\" integrity=\"sha384-rp1X/jJ9MpWPef9OimfXhOaOc4Gzs87yQvF+ajwY6X2H4PTeHNycNlLWiWvj7ehV\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-simple-map/doxa-simple-map.js\" integrity=\"sha384-D8fEYcK088iPw/CYxV5XS4cqcfdvM04/farKZuL6zvXE8TpRLxhgLP74HWhPDDX5\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<doxa-map profile-config='{\"profile\":\"doxa-simple-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-map>"
|
||||
"script": "<!-- MapLibre engine (the default), fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.js\" integrity=\"sha384-5+cfbwT0iiub6VsQAdn6yz16nr6sDiQoHx6tm4O8OVYXHYOxcffFmCJBL0dgdvGp\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.css\" integrity=\"sha384-uTttxo/aOKbdE5RlD/SPzSDoDmNvGlUYPjONi2MN/b7c9HPSvW07OIuyP7uL6jxK\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-simple-map/doxa-simple-map.js\" integrity=\"sha384-wdDs5rHpFGBL1RF+4Zt/JMspTqmr4DOC+lB1niJEXY1hAweTzfQsOoKL6L3VZvwU\" crossorigin=\"anonymous\"></script>\n<!-- MapLibre draws this map and needs no token. For Mapbox, paste this map's embed.scriptMapbox from manifest.json instead: it sets \"provider\":\"mapbox\" and preloads the Mapbox engine; fill \"tk\" with your token. -->\n<dxm-simple-map profile-config='{\"profile\":\"doxa-simple-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dxm-simple-map>",
|
||||
"scriptMapbox": "<!-- Mapbox engine, fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css\" integrity=\"sha384-rp1X/jJ9MpWPef9OimfXhOaOc4Gzs87yQvF+ajwY6X2H4PTeHNycNlLWiWvj7ehV\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-simple-map/doxa-simple-map.js\" integrity=\"sha384-wdDs5rHpFGBL1RF+4Zt/JMspTqmr4DOC+lB1niJEXY1hAweTzfQsOoKL6L3VZvwU\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<dxm-simple-map profile-config='{\"profile\":\"doxa-simple-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dxm-simple-map>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -537,7 +536,7 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
"element": "doxa-map",
|
||||
"element": "dxm-simple-map",
|
||||
"iframeUrl": "./doxa-simple-map/doxa-simple-map/prayer/index.html",
|
||||
"embed": {
|
||||
"iframe": "<iframe 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></iframe>"
|
||||
|
|
@ -560,7 +559,7 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
"element": "doxa-map",
|
||||
"element": "dxm-simple-map",
|
||||
"iframeUrl": "./doxa-simple-map/doxa-simple-map/engagement/index.html",
|
||||
"embed": {
|
||||
"iframe": "<iframe 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></iframe>"
|
||||
|
|
@ -583,7 +582,7 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
"element": "doxa-map",
|
||||
"element": "dxm-simple-map",
|
||||
"iframeUrl": "./doxa-simple-map/doxa-simple-map/adoption/index.html",
|
||||
"embed": {
|
||||
"iframe": "<iframe 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></iframe>"
|
||||
|
|
@ -1044,15 +1043,15 @@
|
|||
"bundle": "plugin-studio",
|
||||
"scriptUrl": "./plugin-studio/plugin-studio.js",
|
||||
"output": "dx-maps/plugin-studio/plugin-studio.js",
|
||||
"integrity": "sha384-Ho56LhDEIeUJwhGvHC9k3g/CTVhnVfz/o4r7QiYj+lHnjwOKZVsHxhGNnqJ16KEn",
|
||||
"integrity": "sha384-g1tVEahAKn6M3b2r9r0Q2i/NS21ZmxBxGBCy7359fUN9FVcy1Xtv8PBS9W+m7R8t",
|
||||
"elements": [
|
||||
"plugin-studio"
|
||||
],
|
||||
"composes": [
|
||||
"dashboard-plus-grid",
|
||||
"people-groups-grid",
|
||||
"doxa-research-map",
|
||||
"doxa-simple-map",
|
||||
"dxm-research-map",
|
||||
"dxm-simple-map",
|
||||
"cities-internet-map",
|
||||
"gospel-resources-map",
|
||||
"my-upg-100-list-map",
|
||||
|
|
@ -1075,7 +1074,7 @@
|
|||
"scriptUrl": "./plugin-studio/plugin-studio.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./plugin-studio/plugin-studio/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=\"./plugin-studio/plugin-studio.js\" integrity=\"sha384-Ho56LhDEIeUJwhGvHC9k3g/CTVhnVfz/o4r7QiYj+lHnjwOKZVsHxhGNnqJ16KEn\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<plugin-studio profile-config='{\"profile\":\"plugin-studio\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></plugin-studio>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./plugin-studio/plugin-studio.js\" integrity=\"sha384-g1tVEahAKn6M3b2r9r0Q2i/NS21ZmxBxGBCy7359fUN9FVcy1Xtv8PBS9W+m7R8t\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<plugin-studio profile-config='{\"profile\":\"plugin-studio\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></plugin-studio>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -1166,7 +1165,7 @@
|
|||
"bundle": "posterverse",
|
||||
"scriptUrl": "./posterverse/posterverse.js",
|
||||
"output": "dx-maps/posterverse/posterverse.js",
|
||||
"integrity": "sha384-g++MF1T2qsdRlRnfvvvwNmZGtZvXcQsk9OfxPUwYo8mEMkuj5FCptXSyZwrWoifo",
|
||||
"integrity": "sha384-Faj9FR5Z9B0wAVZe6wdNrXWt0iv8J6F5G77cgXydjZ8JewU/R4fESOf7y3J2zjD8",
|
||||
"elements": [
|
||||
"posterverse-app"
|
||||
],
|
||||
|
|
@ -1192,7 +1191,7 @@
|
|||
"scriptUrl": "./posterverse/posterverse.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./posterverse/posterverse/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=\"./posterverse/posterverse.js\" integrity=\"sha384-g++MF1T2qsdRlRnfvvvwNmZGtZvXcQsk9OfxPUwYo8mEMkuj5FCptXSyZwrWoifo\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<posterverse-app profile-config='{\"profile\":\"posterverse\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></posterverse-app>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./posterverse/posterverse.js\" integrity=\"sha384-Faj9FR5Z9B0wAVZe6wdNrXWt0iv8J6F5G77cgXydjZ8JewU/R4fESOf7y3J2zjD8\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<posterverse-app profile-config='{\"profile\":\"posterverse\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></posterverse-app>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -1277,7 +1276,7 @@
|
|||
"bundle": "regions-dashboard",
|
||||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"output": "dx-maps/regions-dashboard/regions-dashboard.js",
|
||||
"integrity": "sha384-sRf1EciMTPf75qh2MCXDXP4WrDipcrjEzUrGi70iO1WxYvCXIqIxIleMFGA4YejC",
|
||||
"integrity": "sha384-pl4/zU/IZHro/uOp+kB5K9NUgRBFRiTJghmh09Em1PKTILpxWbVVqdnmB4tBskSg",
|
||||
"elements": [
|
||||
"regions-dashboard"
|
||||
],
|
||||
|
|
@ -1300,8 +1299,8 @@
|
|||
"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": "<!-- MapLibre engine (the default), fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.js\" integrity=\"sha384-5+cfbwT0iiub6VsQAdn6yz16nr6sDiQoHx6tm4O8OVYXHYOxcffFmCJBL0dgdvGp\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.css\" integrity=\"sha384-uTttxo/aOKbdE5RlD/SPzSDoDmNvGlUYPjONi2MN/b7c9HPSvW07OIuyP7uL6jxK\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-sRf1EciMTPf75qh2MCXDXP4WrDipcrjEzUrGi70iO1WxYvCXIqIxIleMFGA4YejC\" crossorigin=\"anonymous\"></script>\n<!-- MapLibre draws this map and needs no token. For Mapbox, paste this map's embed.scriptMapbox from manifest.json instead: it sets \"provider\":\"mapbox\" and preloads the Mapbox engine; fill \"tk\" with your token. -->\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>",
|
||||
"scriptMapbox": "<!-- Mapbox engine, fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css\" integrity=\"sha384-rp1X/jJ9MpWPef9OimfXhOaOc4Gzs87yQvF+ajwY6X2H4PTeHNycNlLWiWvj7ehV\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-sRf1EciMTPf75qh2MCXDXP4WrDipcrjEzUrGi70iO1WxYvCXIqIxIleMFGA4YejC\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
"script": "<!-- MapLibre engine (the default), fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.js\" integrity=\"sha384-5+cfbwT0iiub6VsQAdn6yz16nr6sDiQoHx6tm4O8OVYXHYOxcffFmCJBL0dgdvGp\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.css\" integrity=\"sha384-uTttxo/aOKbdE5RlD/SPzSDoDmNvGlUYPjONi2MN/b7c9HPSvW07OIuyP7uL6jxK\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-pl4/zU/IZHro/uOp+kB5K9NUgRBFRiTJghmh09Em1PKTILpxWbVVqdnmB4tBskSg\" crossorigin=\"anonymous\"></script>\n<!-- MapLibre draws this map and needs no token. For Mapbox, paste this map's embed.scriptMapbox from manifest.json instead: it sets \"provider\":\"mapbox\" and preloads the Mapbox engine; fill \"tk\" with your token. -->\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>",
|
||||
"scriptMapbox": "<!-- Mapbox engine, fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css\" integrity=\"sha384-rp1X/jJ9MpWPef9OimfXhOaOc4Gzs87yQvF+ajwY6X2H4PTeHNycNlLWiWvj7ehV\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-pl4/zU/IZHro/uOp+kB5K9NUgRBFRiTJghmh09Em1PKTILpxWbVVqdnmB4tBskSg\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1317,7 +1316,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-sRf1EciMTPf75qh2MCXDXP4WrDipcrjEzUrGi70iO1WxYvCXIqIxIleMFGA4YejC\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-pl4/zU/IZHro/uOp+kB5K9NUgRBFRiTJghmh09Em1PKTILpxWbVVqdnmB4tBskSg\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1333,8 +1332,8 @@
|
|||
"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": "<!-- MapLibre engine (the default), fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.js\" integrity=\"sha384-5+cfbwT0iiub6VsQAdn6yz16nr6sDiQoHx6tm4O8OVYXHYOxcffFmCJBL0dgdvGp\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.css\" integrity=\"sha384-uTttxo/aOKbdE5RlD/SPzSDoDmNvGlUYPjONi2MN/b7c9HPSvW07OIuyP7uL6jxK\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-sRf1EciMTPf75qh2MCXDXP4WrDipcrjEzUrGi70iO1WxYvCXIqIxIleMFGA4YejC\" crossorigin=\"anonymous\"></script>\n<!-- MapLibre draws this map and needs no token. For Mapbox, paste this map's embed.scriptMapbox from manifest.json instead: it sets \"provider\":\"mapbox\" and preloads the Mapbox engine; fill \"tk\" with your token. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>",
|
||||
"scriptMapbox": "<!-- Mapbox engine, fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css\" integrity=\"sha384-rp1X/jJ9MpWPef9OimfXhOaOc4Gzs87yQvF+ajwY6X2H4PTeHNycNlLWiWvj7ehV\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-sRf1EciMTPf75qh2MCXDXP4WrDipcrjEzUrGi70iO1WxYvCXIqIxIleMFGA4YejC\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
"script": "<!-- MapLibre engine (the default), fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.js\" integrity=\"sha384-5+cfbwT0iiub6VsQAdn6yz16nr6sDiQoHx6tm4O8OVYXHYOxcffFmCJBL0dgdvGp\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.css\" integrity=\"sha384-uTttxo/aOKbdE5RlD/SPzSDoDmNvGlUYPjONi2MN/b7c9HPSvW07OIuyP7uL6jxK\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-pl4/zU/IZHro/uOp+kB5K9NUgRBFRiTJghmh09Em1PKTILpxWbVVqdnmB4tBskSg\" crossorigin=\"anonymous\"></script>\n<!-- MapLibre draws this map and needs no token. For Mapbox, paste this map's embed.scriptMapbox from manifest.json instead: it sets \"provider\":\"mapbox\" and preloads the Mapbox engine; fill \"tk\" with your token. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>",
|
||||
"scriptMapbox": "<!-- Mapbox engine, fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css\" integrity=\"sha384-rp1X/jJ9MpWPef9OimfXhOaOc4Gzs87yQvF+ajwY6X2H4PTeHNycNlLWiWvj7ehV\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-pl4/zU/IZHro/uOp+kB5K9NUgRBFRiTJghmh09Em1PKTILpxWbVVqdnmB4tBskSg\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -1373,12 +1372,12 @@
|
|||
"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-7AV8g9hqenMKcZNXEj1lkL3FL7PtyL1Z9Hiknh51twSs+C1fhJcwb7qSAR4oM5kL",
|
||||
"integrity": "sha384-baSZyso+ailWUshUPhtj5JujUP865Y+9SYa8/BQkV1mEBxf/GSMO6S89cHJnlvYp",
|
||||
"elements": [
|
||||
"research-map-plus-grid"
|
||||
],
|
||||
"composes": [
|
||||
"doxa-research-map",
|
||||
"dxm-research-map",
|
||||
"people-groups-grid"
|
||||
],
|
||||
"stage": "production",
|
||||
|
|
@ -1396,8 +1395,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": "<!-- MapLibre engine (the default), fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.js\" integrity=\"sha384-5+cfbwT0iiub6VsQAdn6yz16nr6sDiQoHx6tm4O8OVYXHYOxcffFmCJBL0dgdvGp\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.css\" integrity=\"sha384-uTttxo/aOKbdE5RlD/SPzSDoDmNvGlUYPjONi2MN/b7c9HPSvW07OIuyP7uL6jxK\" crossorigin=\"anonymous\">\n<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-7AV8g9hqenMKcZNXEj1lkL3FL7PtyL1Z9Hiknh51twSs+C1fhJcwb7qSAR4oM5kL\" crossorigin=\"anonymous\"></script>\n<!-- MapLibre draws this map and needs no token. For Mapbox, paste this map's embed.scriptMapbox from manifest.json instead: it sets \"provider\":\"mapbox\" and preloads the Mapbox engine; fill \"tk\" with your token. -->\n<research-map-plus-grid profile-config='{\"profile\":\"research-map-plus-grid\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></research-map-plus-grid>",
|
||||
"scriptMapbox": "<!-- Mapbox engine, fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css\" integrity=\"sha384-rp1X/jJ9MpWPef9OimfXhOaOc4Gzs87yQvF+ajwY6X2H4PTeHNycNlLWiWvj7ehV\" crossorigin=\"anonymous\">\n<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-7AV8g9hqenMKcZNXEj1lkL3FL7PtyL1Z9Hiknh51twSs+C1fhJcwb7qSAR4oM5kL\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<research-map-plus-grid profile-config='{\"profile\":\"research-map-plus-grid\",\"provider\":\"mapbox\",\"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-baSZyso+ailWUshUPhtj5JujUP865Y+9SYa8/BQkV1mEBxf/GSMO6S89cHJnlvYp\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<research-map-plus-grid profile-config='{\"profile\":\"research-map-plus-grid\",\"provider\":\"maplibre\",\"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
|
|
@ -34,7 +34,7 @@
|
|||
is the fallback for a browser without svh, which would otherwise size the box to its content.
|
||||
--profile-min-h:0 opts out of ProfileLoader's 100dvh floor, which would grow the element again. */
|
||||
html, body { height: 100%; margin: 0; background: #0a0e15; }
|
||||
#slot, doxa-research-map { position: fixed; inset: 0 auto auto 0; width: 100%; height: 100%; height: 100svh; --profile-min-h: 0; display: block; }
|
||||
#slot, dxm-research-map { position: fixed; inset: 0 auto auto 0; width: 100%; height: 100%; height: 100svh; --profile-min-h: 0; display: block; }
|
||||
#status { position: fixed; inset: 0; z-index: 2; display: grid; place-items: center;
|
||||
padding: 24px; text-align: center; color: #9aa7b8;
|
||||
font: 13px/1.6 ui-monospace, SFMono-Regular, Menlo, monospace; }
|
||||
|
|
@ -66,7 +66,7 @@
|
|||
page — a worse failure than the one being fixed, and the discriminator is not isMap
|
||||
(region-dashboards is isMap:true and is a scrolling dashboard). The floor keeps a definite
|
||||
box for the map case while letting a taller document grow onto page two. */
|
||||
#slot, doxa-research-map { position: static; inset: auto; width: 100%; height: auto; min-height: 14cm; }
|
||||
#slot, dxm-research-map { position: static; inset: auto; width: 100%; height: auto; min-height: 14cm; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
|
@ -75,8 +75,8 @@
|
|||
<div id="status">loading token…</div>
|
||||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <doxa-research-map> custom element. -->
|
||||
<script src="../doxa-research-map.js" integrity="sha384-22n6l3xAj9jEpCWmgmgb97PC7Qpj+VymS1t1fiCv+mXcTeTLFByZDIkxSsQ0MPsF" crossorigin="anonymous"></script>
|
||||
<!-- Bundle IIFE — registers the <dxm-research-map> custom element. -->
|
||||
<script src="../doxa-research-map.js" integrity="sha384-TjJO51ZdqT/jYQtL7F6PvO4Fa97zVihdBpjJT68//c8m5uJgZL9XIlm8xAmeJDsJ" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
@ -149,7 +149,7 @@
|
|||
if (token && typeof window !== 'undefined' && !window.MAP_TOKEN) { window.MAP_TOKEN = token; }
|
||||
try {
|
||||
var cfg = token ? Object.assign({}, BASE_CONFIG, { tk: token }) : BASE_CONFIG;
|
||||
var el = document.createElement("doxa-research-map");
|
||||
var el = document.createElement("dxm-research-map");
|
||||
el.setAttribute('profile-config', JSON.stringify(cfg));
|
||||
slot.innerHTML = '';
|
||||
slot.appendChild(el);
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
is the fallback for a browser without svh, which would otherwise size the box to its content.
|
||||
--profile-min-h:0 opts out of ProfileLoader's 100dvh floor, which would grow the element again. */
|
||||
html, body { height: 100%; margin: 0; background: #0a0e15; }
|
||||
#slot, doxa-research-map { position: fixed; inset: 0 auto auto 0; width: 100%; height: 100%; height: 100svh; --profile-min-h: 0; display: block; }
|
||||
#slot, dxm-research-map { position: fixed; inset: 0 auto auto 0; width: 100%; height: 100%; height: 100svh; --profile-min-h: 0; display: block; }
|
||||
#status { position: fixed; inset: 0; z-index: 2; display: grid; place-items: center;
|
||||
padding: 24px; text-align: center; color: #9aa7b8;
|
||||
font: 13px/1.6 ui-monospace, SFMono-Regular, Menlo, monospace; }
|
||||
|
|
@ -62,7 +62,7 @@
|
|||
page — a worse failure than the one being fixed, and the discriminator is not isMap
|
||||
(region-dashboards is isMap:true and is a scrolling dashboard). The floor keeps a definite
|
||||
box for the map case while letting a taller document grow onto page two. */
|
||||
#slot, doxa-research-map { position: static; inset: auto; width: 100%; height: auto; min-height: 14cm; }
|
||||
#slot, dxm-research-map { position: static; inset: auto; width: 100%; height: auto; min-height: 14cm; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
|
@ -71,8 +71,8 @@
|
|||
<div id="status">loading…</div>
|
||||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <doxa-research-map> custom element. -->
|
||||
<script src="../../doxa-research-map.js" integrity="sha384-22n6l3xAj9jEpCWmgmgb97PC7Qpj+VymS1t1fiCv+mXcTeTLFByZDIkxSsQ0MPsF" crossorigin="anonymous"></script>
|
||||
<!-- Bundle IIFE — registers the <dxm-research-map> custom element. -->
|
||||
<script src="../../doxa-research-map.js" integrity="sha384-TjJO51ZdqT/jYQtL7F6PvO4Fa97zVihdBpjJT68//c8m5uJgZL9XIlm8xAmeJDsJ" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
@ -145,7 +145,7 @@
|
|||
if (token && typeof window !== 'undefined' && !window.MAP_TOKEN) { window.MAP_TOKEN = token; }
|
||||
try {
|
||||
var cfg = token ? Object.assign({}, BASE_CONFIG, { tk: token }) : BASE_CONFIG;
|
||||
var el = document.createElement("doxa-research-map");
|
||||
var el = document.createElement("dxm-research-map");
|
||||
el.setAttribute('profile-config', JSON.stringify(cfg));
|
||||
slot.innerHTML = '';
|
||||
slot.appendChild(el);
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -34,7 +34,7 @@
|
|||
is the fallback for a browser without svh, which would otherwise size the box to its content.
|
||||
--profile-min-h:0 opts out of ProfileLoader's 100dvh floor, which would grow the element again. */
|
||||
html, body { height: 100%; margin: 0; background: #0a0e15; }
|
||||
#slot, doxa-map { position: fixed; inset: 0 auto auto 0; width: 100%; height: 100%; height: 100svh; --profile-min-h: 0; display: block; }
|
||||
#slot, dxm-simple-map { position: fixed; inset: 0 auto auto 0; width: 100%; height: 100%; height: 100svh; --profile-min-h: 0; display: block; }
|
||||
#status { position: fixed; inset: 0; z-index: 2; display: grid; place-items: center;
|
||||
padding: 24px; text-align: center; color: #9aa7b8;
|
||||
font: 13px/1.6 ui-monospace, SFMono-Regular, Menlo, monospace; }
|
||||
|
|
@ -66,7 +66,7 @@
|
|||
page — a worse failure than the one being fixed, and the discriminator is not isMap
|
||||
(region-dashboards is isMap:true and is a scrolling dashboard). The floor keeps a definite
|
||||
box for the map case while letting a taller document grow onto page two. */
|
||||
#slot, doxa-map { position: static; inset: auto; width: 100%; height: auto; min-height: 14cm; }
|
||||
#slot, dxm-simple-map { position: static; inset: auto; width: 100%; height: auto; min-height: 14cm; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
|
@ -75,8 +75,8 @@
|
|||
<div id="status">loading token…</div>
|
||||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <doxa-map> custom element. -->
|
||||
<script src="../../doxa-simple-map.js" integrity="sha384-D8fEYcK088iPw/CYxV5XS4cqcfdvM04/farKZuL6zvXE8TpRLxhgLP74HWhPDDX5" crossorigin="anonymous"></script>
|
||||
<!-- Bundle IIFE — registers the <dxm-simple-map> custom element. -->
|
||||
<script src="../../doxa-simple-map.js" integrity="sha384-wdDs5rHpFGBL1RF+4Zt/JMspTqmr4DOC+lB1niJEXY1hAweTzfQsOoKL6L3VZvwU" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
@ -149,7 +149,7 @@
|
|||
if (token && typeof window !== 'undefined' && !window.MAP_TOKEN) { window.MAP_TOKEN = token; }
|
||||
try {
|
||||
var cfg = token ? Object.assign({}, BASE_CONFIG, { tk: token }) : BASE_CONFIG;
|
||||
var el = document.createElement("doxa-map");
|
||||
var el = document.createElement("dxm-simple-map");
|
||||
el.setAttribute('profile-config', JSON.stringify(cfg));
|
||||
slot.innerHTML = '';
|
||||
slot.appendChild(el);
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@
|
|||
is the fallback for a browser without svh, which would otherwise size the box to its content.
|
||||
--profile-min-h:0 opts out of ProfileLoader's 100dvh floor, which would grow the element again. */
|
||||
html, body { height: 100%; margin: 0; background: #0a0e15; }
|
||||
#slot, doxa-map { position: fixed; inset: 0 auto auto 0; width: 100%; height: 100%; height: 100svh; --profile-min-h: 0; display: block; }
|
||||
#slot, dxm-simple-map { position: fixed; inset: 0 auto auto 0; width: 100%; height: 100%; height: 100svh; --profile-min-h: 0; display: block; }
|
||||
#status { position: fixed; inset: 0; z-index: 2; display: grid; place-items: center;
|
||||
padding: 24px; text-align: center; color: #9aa7b8;
|
||||
font: 13px/1.6 ui-monospace, SFMono-Regular, Menlo, monospace; }
|
||||
|
|
@ -66,7 +66,7 @@
|
|||
page — a worse failure than the one being fixed, and the discriminator is not isMap
|
||||
(region-dashboards is isMap:true and is a scrolling dashboard). The floor keeps a definite
|
||||
box for the map case while letting a taller document grow onto page two. */
|
||||
#slot, doxa-map { position: static; inset: auto; width: 100%; height: auto; min-height: 14cm; }
|
||||
#slot, dxm-simple-map { position: static; inset: auto; width: 100%; height: auto; min-height: 14cm; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
|
@ -75,8 +75,8 @@
|
|||
<div id="status">loading token…</div>
|
||||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <doxa-map> custom element. -->
|
||||
<script src="../../doxa-simple-map.js" integrity="sha384-D8fEYcK088iPw/CYxV5XS4cqcfdvM04/farKZuL6zvXE8TpRLxhgLP74HWhPDDX5" crossorigin="anonymous"></script>
|
||||
<!-- Bundle IIFE — registers the <dxm-simple-map> custom element. -->
|
||||
<script src="../../doxa-simple-map.js" integrity="sha384-wdDs5rHpFGBL1RF+4Zt/JMspTqmr4DOC+lB1niJEXY1hAweTzfQsOoKL6L3VZvwU" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
@ -149,7 +149,7 @@
|
|||
if (token && typeof window !== 'undefined' && !window.MAP_TOKEN) { window.MAP_TOKEN = token; }
|
||||
try {
|
||||
var cfg = token ? Object.assign({}, BASE_CONFIG, { tk: token }) : BASE_CONFIG;
|
||||
var el = document.createElement("doxa-map");
|
||||
var el = document.createElement("dxm-simple-map");
|
||||
el.setAttribute('profile-config', JSON.stringify(cfg));
|
||||
slot.innerHTML = '';
|
||||
slot.appendChild(el);
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@
|
|||
is the fallback for a browser without svh, which would otherwise size the box to its content.
|
||||
--profile-min-h:0 opts out of ProfileLoader's 100dvh floor, which would grow the element again. */
|
||||
html, body { height: 100%; margin: 0; background: #0a0e15; }
|
||||
#slot, doxa-map { position: fixed; inset: 0 auto auto 0; width: 100%; height: 100%; height: 100svh; --profile-min-h: 0; display: block; }
|
||||
#slot, dxm-simple-map { position: fixed; inset: 0 auto auto 0; width: 100%; height: 100%; height: 100svh; --profile-min-h: 0; display: block; }
|
||||
#status { position: fixed; inset: 0; z-index: 2; display: grid; place-items: center;
|
||||
padding: 24px; text-align: center; color: #9aa7b8;
|
||||
font: 13px/1.6 ui-monospace, SFMono-Regular, Menlo, monospace; }
|
||||
|
|
@ -66,7 +66,7 @@
|
|||
page — a worse failure than the one being fixed, and the discriminator is not isMap
|
||||
(region-dashboards is isMap:true and is a scrolling dashboard). The floor keeps a definite
|
||||
box for the map case while letting a taller document grow onto page two. */
|
||||
#slot, doxa-map { position: static; inset: auto; width: 100%; height: auto; min-height: 14cm; }
|
||||
#slot, dxm-simple-map { position: static; inset: auto; width: 100%; height: auto; min-height: 14cm; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
|
@ -75,8 +75,8 @@
|
|||
<div id="status">loading token…</div>
|
||||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <doxa-map> custom element. -->
|
||||
<script src="../doxa-simple-map.js" integrity="sha384-D8fEYcK088iPw/CYxV5XS4cqcfdvM04/farKZuL6zvXE8TpRLxhgLP74HWhPDDX5" crossorigin="anonymous"></script>
|
||||
<!-- Bundle IIFE — registers the <dxm-simple-map> custom element. -->
|
||||
<script src="../doxa-simple-map.js" integrity="sha384-wdDs5rHpFGBL1RF+4Zt/JMspTqmr4DOC+lB1niJEXY1hAweTzfQsOoKL6L3VZvwU" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
@ -149,7 +149,7 @@
|
|||
if (token && typeof window !== 'undefined' && !window.MAP_TOKEN) { window.MAP_TOKEN = token; }
|
||||
try {
|
||||
var cfg = token ? Object.assign({}, BASE_CONFIG, { tk: token }) : BASE_CONFIG;
|
||||
var el = document.createElement("doxa-map");
|
||||
var el = document.createElement("dxm-simple-map");
|
||||
el.setAttribute('profile-config', JSON.stringify(cfg));
|
||||
slot.innerHTML = '';
|
||||
slot.appendChild(el);
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@
|
|||
is the fallback for a browser without svh, which would otherwise size the box to its content.
|
||||
--profile-min-h:0 opts out of ProfileLoader's 100dvh floor, which would grow the element again. */
|
||||
html, body { height: 100%; margin: 0; background: #0a0e15; }
|
||||
#slot, doxa-map { position: fixed; inset: 0 auto auto 0; width: 100%; height: 100%; height: 100svh; --profile-min-h: 0; display: block; }
|
||||
#slot, dxm-simple-map { position: fixed; inset: 0 auto auto 0; width: 100%; height: 100%; height: 100svh; --profile-min-h: 0; display: block; }
|
||||
#status { position: fixed; inset: 0; z-index: 2; display: grid; place-items: center;
|
||||
padding: 24px; text-align: center; color: #9aa7b8;
|
||||
font: 13px/1.6 ui-monospace, SFMono-Regular, Menlo, monospace; }
|
||||
|
|
@ -66,7 +66,7 @@
|
|||
page — a worse failure than the one being fixed, and the discriminator is not isMap
|
||||
(region-dashboards is isMap:true and is a scrolling dashboard). The floor keeps a definite
|
||||
box for the map case while letting a taller document grow onto page two. */
|
||||
#slot, doxa-map { position: static; inset: auto; width: 100%; height: auto; min-height: 14cm; }
|
||||
#slot, dxm-simple-map { position: static; inset: auto; width: 100%; height: auto; min-height: 14cm; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
|
@ -75,8 +75,8 @@
|
|||
<div id="status">loading token…</div>
|
||||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <doxa-map> custom element. -->
|
||||
<script src="../../doxa-simple-map.js" integrity="sha384-D8fEYcK088iPw/CYxV5XS4cqcfdvM04/farKZuL6zvXE8TpRLxhgLP74HWhPDDX5" crossorigin="anonymous"></script>
|
||||
<!-- Bundle IIFE — registers the <dxm-simple-map> custom element. -->
|
||||
<script src="../../doxa-simple-map.js" integrity="sha384-wdDs5rHpFGBL1RF+4Zt/JMspTqmr4DOC+lB1niJEXY1hAweTzfQsOoKL6L3VZvwU" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
@ -149,7 +149,7 @@
|
|||
if (token && typeof window !== 'undefined' && !window.MAP_TOKEN) { window.MAP_TOKEN = token; }
|
||||
try {
|
||||
var cfg = token ? Object.assign({}, BASE_CONFIG, { tk: token }) : BASE_CONFIG;
|
||||
var el = document.createElement("doxa-map");
|
||||
var el = document.createElement("dxm-simple-map");
|
||||
el.setAttribute('profile-config', JSON.stringify(cfg));
|
||||
slot.innerHTML = '';
|
||||
slot.appendChild(el);
|
||||
|
|
|
|||
|
|
@ -24,6 +24,6 @@
|
|||
</head>
|
||||
<body>
|
||||
<plugin-studio tree-base="."></plugin-studio>
|
||||
<script src="./plugin-studio/plugin-studio.js" integrity="sha384-Ho56LhDEIeUJwhGvHC9k3g/CTVhnVfz/o4r7QiYj+lHnjwOKZVsHxhGNnqJ16KEn" crossorigin="anonymous"></script>
|
||||
<script src="./plugin-studio/plugin-studio.js" integrity="sha384-g1tVEahAKn6M3b2r9r0Q2i/NS21ZmxBxGBCy7359fUN9FVcy1Xtv8PBS9W+m7R8t" crossorigin="anonymous"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -393,7 +393,7 @@
|
|||
"bundle": "doxa-maps-spa",
|
||||
"scriptUrl": "./doxa-maps-spa/doxa-maps-spa.js",
|
||||
"output": "dx-maps/doxa-maps-spa/doxa-maps-spa.js",
|
||||
"integrity": "sha384-O6ncS56zUa2/9qib46/2MV5z2GRI12GqyDGIiJOGX4Zl1cGqUiNIvLLl15juiTDl",
|
||||
"integrity": "sha384-7bpR/WI9TPG3Q6X+lZPycUzCUjKetwQnqkYSS7f46LwrTIqw8/UAVWNMh7W6B3o7",
|
||||
"elements": [
|
||||
"doxa-maps-spa"
|
||||
],
|
||||
|
|
@ -423,7 +423,7 @@
|
|||
"scriptUrl": "./doxa-maps-spa/doxa-maps-spa.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./doxa-maps-spa/doxa-maps-spa/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=\"./doxa-maps-spa/doxa-maps-spa.js\" integrity=\"sha384-O6ncS56zUa2/9qib46/2MV5z2GRI12GqyDGIiJOGX4Zl1cGqUiNIvLLl15juiTDl\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<doxa-maps-spa profile-config='{\"profile\":\"doxa-maps-spa\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-maps-spa>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-maps-spa/doxa-maps-spa.js\" integrity=\"sha384-7bpR/WI9TPG3Q6X+lZPycUzCUjKetwQnqkYSS7f46LwrTIqw8/UAVWNMh7W6B3o7\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<doxa-maps-spa profile-config='{\"profile\":\"doxa-maps-spa\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-maps-spa>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -450,9 +450,9 @@
|
|||
"bundle": "doxa-research-map",
|
||||
"scriptUrl": "./doxa-research-map/doxa-research-map.js",
|
||||
"output": "dx-maps/doxa-research-map/doxa-research-map.js",
|
||||
"integrity": "sha384-22n6l3xAj9jEpCWmgmgb97PC7Qpj+VymS1t1fiCv+mXcTeTLFByZDIkxSsQ0MPsF",
|
||||
"integrity": "sha384-TjJO51ZdqT/jYQtL7F6PvO4Fa97zVihdBpjJT68//c8m5uJgZL9XIlm8xAmeJDsJ",
|
||||
"elements": [
|
||||
"doxa-research-map"
|
||||
"dxm-research-map"
|
||||
],
|
||||
"stage": "experimental",
|
||||
"profiles": [
|
||||
|
|
@ -462,15 +462,15 @@
|
|||
"label": "Research Map",
|
||||
"file": "research-map.vue",
|
||||
"description": "The researcher's workbench: every piece a missiologist, demographer or",
|
||||
"element": "doxa-research-map",
|
||||
"element": "dxm-research-map",
|
||||
"type": "monolithic",
|
||||
"isMap": true,
|
||||
"iframeUrl": "./doxa-research-map/research-map/index.html",
|
||||
"scriptUrl": "./doxa-research-map/doxa-research-map.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./doxa-research-map/research-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<!-- MapLibre engine (the default), fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.js\" integrity=\"sha384-5+cfbwT0iiub6VsQAdn6yz16nr6sDiQoHx6tm4O8OVYXHYOxcffFmCJBL0dgdvGp\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.css\" integrity=\"sha384-uTttxo/aOKbdE5RlD/SPzSDoDmNvGlUYPjONi2MN/b7c9HPSvW07OIuyP7uL6jxK\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-research-map/doxa-research-map.js\" integrity=\"sha384-22n6l3xAj9jEpCWmgmgb97PC7Qpj+VymS1t1fiCv+mXcTeTLFByZDIkxSsQ0MPsF\" crossorigin=\"anonymous\"></script>\n<!-- MapLibre draws this map and needs no token. For Mapbox, paste this map's embed.scriptMapbox from manifest.json instead: it sets \"provider\":\"mapbox\" and preloads the Mapbox engine; fill \"tk\" with your token. -->\n<doxa-research-map profile-config='{\"profile\":\"research-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-research-map>",
|
||||
"scriptMapbox": "<!-- Mapbox engine, fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css\" integrity=\"sha384-rp1X/jJ9MpWPef9OimfXhOaOc4Gzs87yQvF+ajwY6X2H4PTeHNycNlLWiWvj7ehV\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-research-map/doxa-research-map.js\" integrity=\"sha384-22n6l3xAj9jEpCWmgmgb97PC7Qpj+VymS1t1fiCv+mXcTeTLFByZDIkxSsQ0MPsF\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<doxa-research-map profile-config='{\"profile\":\"research-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-research-map>"
|
||||
"script": "<!-- MapLibre engine (the default), fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.js\" integrity=\"sha384-5+cfbwT0iiub6VsQAdn6yz16nr6sDiQoHx6tm4O8OVYXHYOxcffFmCJBL0dgdvGp\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.css\" integrity=\"sha384-uTttxo/aOKbdE5RlD/SPzSDoDmNvGlUYPjONi2MN/b7c9HPSvW07OIuyP7uL6jxK\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-research-map/doxa-research-map.js\" integrity=\"sha384-TjJO51ZdqT/jYQtL7F6PvO4Fa97zVihdBpjJT68//c8m5uJgZL9XIlm8xAmeJDsJ\" crossorigin=\"anonymous\"></script>\n<!-- MapLibre draws this map and needs no token. For Mapbox, paste this map's embed.scriptMapbox from manifest.json instead: it sets \"provider\":\"mapbox\" and preloads the Mapbox engine; fill \"tk\" with your token. -->\n<dxm-research-map profile-config='{\"profile\":\"research-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dxm-research-map>",
|
||||
"scriptMapbox": "<!-- Mapbox engine, fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css\" integrity=\"sha384-rp1X/jJ9MpWPef9OimfXhOaOc4Gzs87yQvF+ajwY6X2H4PTeHNycNlLWiWvj7ehV\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-research-map/doxa-research-map.js\" integrity=\"sha384-TjJO51ZdqT/jYQtL7F6PvO4Fa97zVihdBpjJT68//c8m5uJgZL9XIlm8xAmeJDsJ\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<dxm-research-map profile-config='{\"profile\":\"research-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dxm-research-map>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -482,7 +482,7 @@
|
|||
"provider": "maplibre",
|
||||
"instanceId": "research-map-maplibre"
|
||||
},
|
||||
"element": "doxa-research-map",
|
||||
"element": "dxm-research-map",
|
||||
"iframeUrl": "./doxa-research-map/research-map/maplibre/index.html",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./doxa-research-map/research-map/maplibre/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>"
|
||||
|
|
@ -496,10 +496,9 @@
|
|||
"bundle": "doxa-simple-map",
|
||||
"scriptUrl": "./doxa-simple-map/doxa-simple-map.js",
|
||||
"output": "dx-maps/doxa-simple-map/doxa-simple-map.js",
|
||||
"integrity": "sha384-D8fEYcK088iPw/CYxV5XS4cqcfdvM04/farKZuL6zvXE8TpRLxhgLP74HWhPDDX5",
|
||||
"integrity": "sha384-wdDs5rHpFGBL1RF+4Zt/JMspTqmr4DOC+lB1niJEXY1hAweTzfQsOoKL6L3VZvwU",
|
||||
"elements": [
|
||||
"doxa-map",
|
||||
"doxa-simple-map"
|
||||
"dxm-simple-map"
|
||||
],
|
||||
"stage": "production",
|
||||
"profiles": [
|
||||
|
|
@ -509,15 +508,15 @@
|
|||
"label": "Prayer Progress — prayer map",
|
||||
"file": "doxa-simple-map.vue",
|
||||
"description": "The simple world map, shipped as three presets off ONE prop table —",
|
||||
"element": "doxa-map",
|
||||
"element": "dxm-simple-map",
|
||||
"type": "parameterized",
|
||||
"isMap": true,
|
||||
"iframeUrl": "./doxa-simple-map/doxa-simple-map/index.html",
|
||||
"scriptUrl": "./doxa-simple-map/doxa-simple-map.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./doxa-simple-map/doxa-simple-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<!-- MapLibre engine (the default), fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.js\" integrity=\"sha384-5+cfbwT0iiub6VsQAdn6yz16nr6sDiQoHx6tm4O8OVYXHYOxcffFmCJBL0dgdvGp\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.css\" integrity=\"sha384-uTttxo/aOKbdE5RlD/SPzSDoDmNvGlUYPjONi2MN/b7c9HPSvW07OIuyP7uL6jxK\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-simple-map/doxa-simple-map.js\" integrity=\"sha384-D8fEYcK088iPw/CYxV5XS4cqcfdvM04/farKZuL6zvXE8TpRLxhgLP74HWhPDDX5\" crossorigin=\"anonymous\"></script>\n<!-- MapLibre draws this map and needs no token. For Mapbox, paste this map's embed.scriptMapbox from manifest.json instead: it sets \"provider\":\"mapbox\" and preloads the Mapbox engine; fill \"tk\" with your token. -->\n<doxa-map profile-config='{\"profile\":\"doxa-simple-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-map>",
|
||||
"scriptMapbox": "<!-- Mapbox engine, fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css\" integrity=\"sha384-rp1X/jJ9MpWPef9OimfXhOaOc4Gzs87yQvF+ajwY6X2H4PTeHNycNlLWiWvj7ehV\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-simple-map/doxa-simple-map.js\" integrity=\"sha384-D8fEYcK088iPw/CYxV5XS4cqcfdvM04/farKZuL6zvXE8TpRLxhgLP74HWhPDDX5\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<doxa-map profile-config='{\"profile\":\"doxa-simple-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-map>"
|
||||
"script": "<!-- MapLibre engine (the default), fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.js\" integrity=\"sha384-5+cfbwT0iiub6VsQAdn6yz16nr6sDiQoHx6tm4O8OVYXHYOxcffFmCJBL0dgdvGp\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.css\" integrity=\"sha384-uTttxo/aOKbdE5RlD/SPzSDoDmNvGlUYPjONi2MN/b7c9HPSvW07OIuyP7uL6jxK\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-simple-map/doxa-simple-map.js\" integrity=\"sha384-wdDs5rHpFGBL1RF+4Zt/JMspTqmr4DOC+lB1niJEXY1hAweTzfQsOoKL6L3VZvwU\" crossorigin=\"anonymous\"></script>\n<!-- MapLibre draws this map and needs no token. For Mapbox, paste this map's embed.scriptMapbox from manifest.json instead: it sets \"provider\":\"mapbox\" and preloads the Mapbox engine; fill \"tk\" with your token. -->\n<dxm-simple-map profile-config='{\"profile\":\"doxa-simple-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dxm-simple-map>",
|
||||
"scriptMapbox": "<!-- Mapbox engine, fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css\" integrity=\"sha384-rp1X/jJ9MpWPef9OimfXhOaOc4Gzs87yQvF+ajwY6X2H4PTeHNycNlLWiWvj7ehV\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-simple-map/doxa-simple-map.js\" integrity=\"sha384-wdDs5rHpFGBL1RF+4Zt/JMspTqmr4DOC+lB1niJEXY1hAweTzfQsOoKL6L3VZvwU\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<dxm-simple-map profile-config='{\"profile\":\"doxa-simple-map\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dxm-simple-map>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -537,7 +536,7 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
"element": "doxa-map",
|
||||
"element": "dxm-simple-map",
|
||||
"iframeUrl": "./doxa-simple-map/doxa-simple-map/prayer/index.html",
|
||||
"embed": {
|
||||
"iframe": "<iframe 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></iframe>"
|
||||
|
|
@ -560,7 +559,7 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
"element": "doxa-map",
|
||||
"element": "dxm-simple-map",
|
||||
"iframeUrl": "./doxa-simple-map/doxa-simple-map/engagement/index.html",
|
||||
"embed": {
|
||||
"iframe": "<iframe 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></iframe>"
|
||||
|
|
@ -583,7 +582,7 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
"element": "doxa-map",
|
||||
"element": "dxm-simple-map",
|
||||
"iframeUrl": "./doxa-simple-map/doxa-simple-map/adoption/index.html",
|
||||
"embed": {
|
||||
"iframe": "<iframe 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></iframe>"
|
||||
|
|
@ -1044,15 +1043,15 @@
|
|||
"bundle": "plugin-studio",
|
||||
"scriptUrl": "./plugin-studio/plugin-studio.js",
|
||||
"output": "dx-maps/plugin-studio/plugin-studio.js",
|
||||
"integrity": "sha384-Ho56LhDEIeUJwhGvHC9k3g/CTVhnVfz/o4r7QiYj+lHnjwOKZVsHxhGNnqJ16KEn",
|
||||
"integrity": "sha384-g1tVEahAKn6M3b2r9r0Q2i/NS21ZmxBxGBCy7359fUN9FVcy1Xtv8PBS9W+m7R8t",
|
||||
"elements": [
|
||||
"plugin-studio"
|
||||
],
|
||||
"composes": [
|
||||
"dashboard-plus-grid",
|
||||
"people-groups-grid",
|
||||
"doxa-research-map",
|
||||
"doxa-simple-map",
|
||||
"dxm-research-map",
|
||||
"dxm-simple-map",
|
||||
"cities-internet-map",
|
||||
"gospel-resources-map",
|
||||
"my-upg-100-list-map",
|
||||
|
|
@ -1075,7 +1074,7 @@
|
|||
"scriptUrl": "./plugin-studio/plugin-studio.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./plugin-studio/plugin-studio/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=\"./plugin-studio/plugin-studio.js\" integrity=\"sha384-Ho56LhDEIeUJwhGvHC9k3g/CTVhnVfz/o4r7QiYj+lHnjwOKZVsHxhGNnqJ16KEn\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<plugin-studio profile-config='{\"profile\":\"plugin-studio\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></plugin-studio>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./plugin-studio/plugin-studio.js\" integrity=\"sha384-g1tVEahAKn6M3b2r9r0Q2i/NS21ZmxBxGBCy7359fUN9FVcy1Xtv8PBS9W+m7R8t\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<plugin-studio profile-config='{\"profile\":\"plugin-studio\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></plugin-studio>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -1166,7 +1165,7 @@
|
|||
"bundle": "posterverse",
|
||||
"scriptUrl": "./posterverse/posterverse.js",
|
||||
"output": "dx-maps/posterverse/posterverse.js",
|
||||
"integrity": "sha384-g++MF1T2qsdRlRnfvvvwNmZGtZvXcQsk9OfxPUwYo8mEMkuj5FCptXSyZwrWoifo",
|
||||
"integrity": "sha384-Faj9FR5Z9B0wAVZe6wdNrXWt0iv8J6F5G77cgXydjZ8JewU/R4fESOf7y3J2zjD8",
|
||||
"elements": [
|
||||
"posterverse-app"
|
||||
],
|
||||
|
|
@ -1192,7 +1191,7 @@
|
|||
"scriptUrl": "./posterverse/posterverse.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./posterverse/posterverse/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=\"./posterverse/posterverse.js\" integrity=\"sha384-g++MF1T2qsdRlRnfvvvwNmZGtZvXcQsk9OfxPUwYo8mEMkuj5FCptXSyZwrWoifo\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<posterverse-app profile-config='{\"profile\":\"posterverse\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></posterverse-app>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./posterverse/posterverse.js\" integrity=\"sha384-Faj9FR5Z9B0wAVZe6wdNrXWt0iv8J6F5G77cgXydjZ8JewU/R4fESOf7y3J2zjD8\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<posterverse-app profile-config='{\"profile\":\"posterverse\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></posterverse-app>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
@ -1277,7 +1276,7 @@
|
|||
"bundle": "regions-dashboard",
|
||||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"output": "dx-maps/regions-dashboard/regions-dashboard.js",
|
||||
"integrity": "sha384-sRf1EciMTPf75qh2MCXDXP4WrDipcrjEzUrGi70iO1WxYvCXIqIxIleMFGA4YejC",
|
||||
"integrity": "sha384-pl4/zU/IZHro/uOp+kB5K9NUgRBFRiTJghmh09Em1PKTILpxWbVVqdnmB4tBskSg",
|
||||
"elements": [
|
||||
"regions-dashboard"
|
||||
],
|
||||
|
|
@ -1300,8 +1299,8 @@
|
|||
"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": "<!-- MapLibre engine (the default), fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.js\" integrity=\"sha384-5+cfbwT0iiub6VsQAdn6yz16nr6sDiQoHx6tm4O8OVYXHYOxcffFmCJBL0dgdvGp\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.css\" integrity=\"sha384-uTttxo/aOKbdE5RlD/SPzSDoDmNvGlUYPjONi2MN/b7c9HPSvW07OIuyP7uL6jxK\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-sRf1EciMTPf75qh2MCXDXP4WrDipcrjEzUrGi70iO1WxYvCXIqIxIleMFGA4YejC\" crossorigin=\"anonymous\"></script>\n<!-- MapLibre draws this map and needs no token. For Mapbox, paste this map's embed.scriptMapbox from manifest.json instead: it sets \"provider\":\"mapbox\" and preloads the Mapbox engine; fill \"tk\" with your token. -->\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>",
|
||||
"scriptMapbox": "<!-- Mapbox engine, fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css\" integrity=\"sha384-rp1X/jJ9MpWPef9OimfXhOaOc4Gzs87yQvF+ajwY6X2H4PTeHNycNlLWiWvj7ehV\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-sRf1EciMTPf75qh2MCXDXP4WrDipcrjEzUrGi70iO1WxYvCXIqIxIleMFGA4YejC\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
"script": "<!-- MapLibre engine (the default), fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.js\" integrity=\"sha384-5+cfbwT0iiub6VsQAdn6yz16nr6sDiQoHx6tm4O8OVYXHYOxcffFmCJBL0dgdvGp\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.css\" integrity=\"sha384-uTttxo/aOKbdE5RlD/SPzSDoDmNvGlUYPjONi2MN/b7c9HPSvW07OIuyP7uL6jxK\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-pl4/zU/IZHro/uOp+kB5K9NUgRBFRiTJghmh09Em1PKTILpxWbVVqdnmB4tBskSg\" crossorigin=\"anonymous\"></script>\n<!-- MapLibre draws this map and needs no token. For Mapbox, paste this map's embed.scriptMapbox from manifest.json instead: it sets \"provider\":\"mapbox\" and preloads the Mapbox engine; fill \"tk\" with your token. -->\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>",
|
||||
"scriptMapbox": "<!-- Mapbox engine, fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css\" integrity=\"sha384-rp1X/jJ9MpWPef9OimfXhOaOc4Gzs87yQvF+ajwY6X2H4PTeHNycNlLWiWvj7ehV\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-pl4/zU/IZHro/uOp+kB5K9NUgRBFRiTJghmh09Em1PKTILpxWbVVqdnmB4tBskSg\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1317,7 +1316,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-sRf1EciMTPf75qh2MCXDXP4WrDipcrjEzUrGi70iO1WxYvCXIqIxIleMFGA4YejC\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-pl4/zU/IZHro/uOp+kB5K9NUgRBFRiTJghmh09Em1PKTILpxWbVVqdnmB4tBskSg\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -1333,8 +1332,8 @@
|
|||
"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": "<!-- MapLibre engine (the default), fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.js\" integrity=\"sha384-5+cfbwT0iiub6VsQAdn6yz16nr6sDiQoHx6tm4O8OVYXHYOxcffFmCJBL0dgdvGp\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.css\" integrity=\"sha384-uTttxo/aOKbdE5RlD/SPzSDoDmNvGlUYPjONi2MN/b7c9HPSvW07OIuyP7uL6jxK\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-sRf1EciMTPf75qh2MCXDXP4WrDipcrjEzUrGi70iO1WxYvCXIqIxIleMFGA4YejC\" crossorigin=\"anonymous\"></script>\n<!-- MapLibre draws this map and needs no token. For Mapbox, paste this map's embed.scriptMapbox from manifest.json instead: it sets \"provider\":\"mapbox\" and preloads the Mapbox engine; fill \"tk\" with your token. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>",
|
||||
"scriptMapbox": "<!-- Mapbox engine, fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css\" integrity=\"sha384-rp1X/jJ9MpWPef9OimfXhOaOc4Gzs87yQvF+ajwY6X2H4PTeHNycNlLWiWvj7ehV\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-sRf1EciMTPf75qh2MCXDXP4WrDipcrjEzUrGi70iO1WxYvCXIqIxIleMFGA4YejC\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
"script": "<!-- MapLibre engine (the default), fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.js\" integrity=\"sha384-5+cfbwT0iiub6VsQAdn6yz16nr6sDiQoHx6tm4O8OVYXHYOxcffFmCJBL0dgdvGp\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.css\" integrity=\"sha384-uTttxo/aOKbdE5RlD/SPzSDoDmNvGlUYPjONi2MN/b7c9HPSvW07OIuyP7uL6jxK\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-pl4/zU/IZHro/uOp+kB5K9NUgRBFRiTJghmh09Em1PKTILpxWbVVqdnmB4tBskSg\" crossorigin=\"anonymous\"></script>\n<!-- MapLibre draws this map and needs no token. For Mapbox, paste this map's embed.scriptMapbox from manifest.json instead: it sets \"provider\":\"mapbox\" and preloads the Mapbox engine; fill \"tk\" with your token. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>",
|
||||
"scriptMapbox": "<!-- Mapbox engine, fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css\" integrity=\"sha384-rp1X/jJ9MpWPef9OimfXhOaOc4Gzs87yQvF+ajwY6X2H4PTeHNycNlLWiWvj7ehV\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-pl4/zU/IZHro/uOp+kB5K9NUgRBFRiTJghmh09Em1PKTILpxWbVVqdnmB4tBskSg\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"provider\":\"mapbox\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -1373,12 +1372,12 @@
|
|||
"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-7AV8g9hqenMKcZNXEj1lkL3FL7PtyL1Z9Hiknh51twSs+C1fhJcwb7qSAR4oM5kL",
|
||||
"integrity": "sha384-baSZyso+ailWUshUPhtj5JujUP865Y+9SYa8/BQkV1mEBxf/GSMO6S89cHJnlvYp",
|
||||
"elements": [
|
||||
"research-map-plus-grid"
|
||||
],
|
||||
"composes": [
|
||||
"doxa-research-map",
|
||||
"dxm-research-map",
|
||||
"people-groups-grid"
|
||||
],
|
||||
"stage": "production",
|
||||
|
|
@ -1396,8 +1395,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": "<!-- MapLibre engine (the default), fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.js\" integrity=\"sha384-5+cfbwT0iiub6VsQAdn6yz16nr6sDiQoHx6tm4O8OVYXHYOxcffFmCJBL0dgdvGp\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.css\" integrity=\"sha384-uTttxo/aOKbdE5RlD/SPzSDoDmNvGlUYPjONi2MN/b7c9HPSvW07OIuyP7uL6jxK\" crossorigin=\"anonymous\">\n<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-7AV8g9hqenMKcZNXEj1lkL3FL7PtyL1Z9Hiknh51twSs+C1fhJcwb7qSAR4oM5kL\" crossorigin=\"anonymous\"></script>\n<!-- MapLibre draws this map and needs no token. For Mapbox, paste this map's embed.scriptMapbox from manifest.json instead: it sets \"provider\":\"mapbox\" and preloads the Mapbox engine; fill \"tk\" with your token. -->\n<research-map-plus-grid profile-config='{\"profile\":\"research-map-plus-grid\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></research-map-plus-grid>",
|
||||
"scriptMapbox": "<!-- Mapbox engine, fetched early -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<link rel=\"preload\" as=\"style\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.css\" integrity=\"sha384-rp1X/jJ9MpWPef9OimfXhOaOc4Gzs87yQvF+ajwY6X2H4PTeHNycNlLWiWvj7ehV\" crossorigin=\"anonymous\">\n<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-7AV8g9hqenMKcZNXEj1lkL3FL7PtyL1Z9Hiknh51twSs+C1fhJcwb7qSAR4oM5kL\" crossorigin=\"anonymous\"></script>\n<!-- Mapbox draws this map: fill \"tk\" with your Mapbox token. -->\n<research-map-plus-grid profile-config='{\"profile\":\"research-map-plus-grid\",\"provider\":\"mapbox\",\"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-baSZyso+ailWUshUPhtj5JujUP865Y+9SYa8/BQkV1mEBxf/GSMO6S89cHJnlvYp\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<research-map-plus-grid profile-config='{\"profile\":\"research-map-plus-grid\",\"provider\":\"maplibre\",\"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
|
|
@ -67,7 +67,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <plugin-studio> custom element. -->
|
||||
<script src="../plugin-studio.js" integrity="sha384-Ho56LhDEIeUJwhGvHC9k3g/CTVhnVfz/o4r7QiYj+lHnjwOKZVsHxhGNnqJ16KEn" crossorigin="anonymous"></script>
|
||||
<script src="../plugin-studio.js" integrity="sha384-g1tVEahAKn6M3b2r9r0Q2i/NS21ZmxBxGBCy7359fUN9FVcy1Xtv8PBS9W+m7R8t" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <plugin-studio> custom element. -->
|
||||
<script src="../../plugin-studio.js" integrity="sha384-Ho56LhDEIeUJwhGvHC9k3g/CTVhnVfz/o4r7QiYj+lHnjwOKZVsHxhGNnqJ16KEn" crossorigin="anonymous"></script>
|
||||
<script src="../../plugin-studio.js" integrity="sha384-g1tVEahAKn6M3b2r9r0Q2i/NS21ZmxBxGBCy7359fUN9FVcy1Xtv8PBS9W+m7R8t" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -67,7 +67,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <posterverse-app> custom element. -->
|
||||
<script src="../../posterverse.js" integrity="sha384-g++MF1T2qsdRlRnfvvvwNmZGtZvXcQsk9OfxPUwYo8mEMkuj5FCptXSyZwrWoifo" crossorigin="anonymous"></script>
|
||||
<script src="../../posterverse.js" integrity="sha384-Faj9FR5Z9B0wAVZe6wdNrXWt0iv8J6F5G77cgXydjZ8JewU/R4fESOf7y3J2zjD8" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <posterverse-app> custom element. -->
|
||||
<script src="../posterverse.js" integrity="sha384-g++MF1T2qsdRlRnfvvvwNmZGtZvXcQsk9OfxPUwYo8mEMkuj5FCptXSyZwrWoifo" crossorigin="anonymous"></script>
|
||||
<script src="../posterverse.js" integrity="sha384-Faj9FR5Z9B0wAVZe6wdNrXWt0iv8J6F5G77cgXydjZ8JewU/R4fESOf7y3J2zjD8" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -76,7 +76,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-sRf1EciMTPf75qh2MCXDXP4WrDipcrjEzUrGi70iO1WxYvCXIqIxIleMFGA4YejC" crossorigin="anonymous"></script>
|
||||
<script src="../regions-dashboard.js" integrity="sha384-pl4/zU/IZHro/uOp+kB5K9NUgRBFRiTJghmh09Em1PKTILpxWbVVqdnmB4tBskSg" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -67,7 +67,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-sRf1EciMTPf75qh2MCXDXP4WrDipcrjEzUrGi70iO1WxYvCXIqIxIleMFGA4YejC" crossorigin="anonymous"></script>
|
||||
<script src="../regions-dashboard.js" integrity="sha384-pl4/zU/IZHro/uOp+kB5K9NUgRBFRiTJghmh09Em1PKTILpxWbVVqdnmB4tBskSg" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -77,7 +77,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-sRf1EciMTPf75qh2MCXDXP4WrDipcrjEzUrGi70iO1WxYvCXIqIxIleMFGA4YejC" crossorigin="anonymous"></script>
|
||||
<script src="../regions-dashboard.js" integrity="sha384-pl4/zU/IZHro/uOp+kB5K9NUgRBFRiTJghmh09Em1PKTILpxWbVVqdnmB4tBskSg" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -77,7 +77,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-7AV8g9hqenMKcZNXEj1lkL3FL7PtyL1Z9Hiknh51twSs+C1fhJcwb7qSAR4oM5kL" crossorigin="anonymous"></script>
|
||||
<script src="../../research-map-plus-grid.js" integrity="sha384-baSZyso+ailWUshUPhtj5JujUP865Y+9SYa8/BQkV1mEBxf/GSMO6S89cHJnlvYp" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -77,7 +77,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-7AV8g9hqenMKcZNXEj1lkL3FL7PtyL1Z9Hiknh51twSs+C1fhJcwb7qSAR4oM5kL" crossorigin="anonymous"></script>
|
||||
<script src="../research-map-plus-grid.js" integrity="sha384-baSZyso+ailWUshUPhtj5JujUP865Y+9SYa8/BQkV1mEBxf/GSMO6S89cHJnlvYp" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
Loading…
Reference in a new issue