Rebuild the served tree after merging main
31
README.md
|
|
@ -124,6 +124,37 @@ and graduates to a named tab when it's ready.
|
|||
|
||||
---
|
||||
|
||||
## Who it's for
|
||||
|
||||
**Each map answers a real task for someone doing the mission.** Open it in the Research Gallery, or
|
||||
embed just the one you need.
|
||||
|
||||
| You are… | Open | It answers |
|
||||
|---|---|---|
|
||||
| a **translator** (or an AI translation pipeline) | Gospel Resources (map, list, data tables) | which people groups have no Scripture, film or audio in their language, and which bridge language already reaches them |
|
||||
| **media to movements** | Cities with Internet · Gospel × Internet | where unreached people groups live with internet access, country by country and down to province where data exists |
|
||||
| a **catalyst** or mobilizer | Big Picture · Simple Research · Regions | filter the 2,107 groups by region, religion, language and engagement; **Export CSV** or **Export this selection**; open a group's **Full Profile** |
|
||||
| **praying** | Prayer Progress · UPG-100 List | where prayer is covered and where it is still needed; print a **Prayer List**, **Poster Map** or **Card Deck** for a list of 100 |
|
||||
| a **teacher** or presenter | the Research Gallery | every map in one app, in 11 languages, ready to show |
|
||||
|
||||
<details>
|
||||
<summary><b>For AI agents</b></summary>
|
||||
|
||||
- **Every map, and how to embed it:** `public/dx-maps/manifest.json` lists each plugin with its
|
||||
`embed.iframe` and `embed.script` snippet (with its integrity hash).
|
||||
- **The data behind the maps:** `public/dx-maps/assets/tables/*.json` (gospel access, internet
|
||||
access, bridge languages, resource links…), `assets/people-groups/*.json` (points and slim
|
||||
records) and `assets/people-groups/lists/` (the membership of each list).
|
||||
- **Live people-group data (public, no key):** `https://pray.doxa.life/api/people-groups/list`
|
||||
and `…/detail/{slug}`, the same endpoints the published maps call.
|
||||
- **Switches on any map page:** `?lang=` (11 languages), `?provider=maplibre|mapbox`,
|
||||
`?list=` (a project list such as `700`), `?tk=` (a Mapbox token). Embeds take the same keys in
|
||||
`profile-config`. Contract: [documentation/reference-universal-props.md](./documentation/reference-universal-props.md).
|
||||
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
## The 5 plugin capabilities
|
||||
|
||||
A capability is **how much a plugin nests**, from one element (1) to an app of apps (5). Every
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 1.7 MiB After Width: | Height: | Size: 1.6 MiB |
|
Before Width: | Height: | Size: 1.7 MiB After Width: | Height: | Size: 1.6 MiB |
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 1.7 MiB After Width: | Height: | Size: 1.7 MiB |
|
Before Width: | Height: | Size: 1.6 MiB After Width: | Height: | Size: 1.6 MiB |
|
Before Width: | Height: | Size: 924 KiB After Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 828 KiB After Width: | Height: | Size: 828 KiB |
|
Before Width: | Height: | Size: 2 MiB After Width: | Height: | Size: 2 MiB |
|
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 1.7 MiB After Width: | Height: | Size: 1.7 MiB |
|
Before Width: | Height: | Size: 391 KiB After Width: | Height: | Size: 391 KiB |
|
Before Width: | Height: | Size: 1 MiB After Width: | Height: | Size: 1 MiB |
|
Before Width: | Height: | Size: 330 KiB After Width: | Height: | Size: 330 KiB |
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 809 KiB After Width: | Height: | Size: 806 KiB |
|
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 120 KiB |
|
Before Width: | Height: | Size: 205 KiB After Width: | Height: | Size: 205 KiB |
|
Before Width: | Height: | Size: 768 KiB After Width: | Height: | Size: 750 KiB |
|
|
@ -1,95 +1,95 @@
|
|||
{
|
||||
"cap1-single-element": {
|
||||
"bundle": "all-people-groups",
|
||||
"sha256": "3260659777752cdc1916a4870980850fb12000f133fe956b944745fa8c91cf4a"
|
||||
"sha256": "2dd0dfab07a2e18905e09b49aec73cb690d900e7f9fd3b3e08da57e39c10e835"
|
||||
},
|
||||
"cap2-adoption": {
|
||||
"bundle": "doxa-simple-map",
|
||||
"sha256": "f83d60377976d81e96e0c217dc2e6146c271ef7a2c47e13084c2d7a28f12ecfe"
|
||||
"sha256": "7a7545494b7962ab81def419b560845747f54145ceadd0c97e73ea2b175c63f3"
|
||||
},
|
||||
"cap2-engagement": {
|
||||
"bundle": "doxa-simple-map",
|
||||
"sha256": "f83d60377976d81e96e0c217dc2e6146c271ef7a2c47e13084c2d7a28f12ecfe"
|
||||
"sha256": "7a7545494b7962ab81def419b560845747f54145ceadd0c97e73ea2b175c63f3"
|
||||
},
|
||||
"cap2-prayer": {
|
||||
"bundle": "doxa-simple-map",
|
||||
"sha256": "f83d60377976d81e96e0c217dc2e6146c271ef7a2c47e13084c2d7a28f12ecfe"
|
||||
"sha256": "7a7545494b7962ab81def419b560845747f54145ceadd0c97e73ea2b175c63f3"
|
||||
},
|
||||
"cap3-monolithic-research": {
|
||||
"bundle": "doxa-research-map",
|
||||
"sha256": "e49811c929a624570ab850a8a7f5e9cc45c3f9de18d1ef79e902a230ffd369a5"
|
||||
"sha256": "81b249a1af111f2e5f080d3440b486e3977db8b9cf4105d6e9d2c72c4af72f30"
|
||||
},
|
||||
"cap4-upg100-list": {
|
||||
"bundle": "my-upg-100-list",
|
||||
"sha256": "2116fcbcdea5e7ea05d5b9c7d72e02f2ff921185f9805903b1fe640a6be265ff"
|
||||
"sha256": "7fc9958df0297a74efe63c9e8c6ce58a7de65eb2f2a1a66e05f408a79c1304e7"
|
||||
},
|
||||
"cap4-upg100-mfe": {
|
||||
"bundle": "my-upg-100-list",
|
||||
"sha256": "2116fcbcdea5e7ea05d5b9c7d72e02f2ff921185f9805903b1fe640a6be265ff"
|
||||
"sha256": "7fc9958df0297a74efe63c9e8c6ce58a7de65eb2f2a1a66e05f408a79c1304e7"
|
||||
},
|
||||
"cap4-upg100-poster-wall": {
|
||||
"bundle": "my-upg-100-list",
|
||||
"sha256": "2116fcbcdea5e7ea05d5b9c7d72e02f2ff921185f9805903b1fe640a6be265ff"
|
||||
"sha256": "7fc9958df0297a74efe63c9e8c6ce58a7de65eb2f2a1a66e05f408a79c1304e7"
|
||||
},
|
||||
"cap5-doxa-maps-spa": {
|
||||
"bundle": "doxa-maps-spa",
|
||||
"sha256": "1d2619fdb65538616b4acfae05ead24e0cce93cf4bd382b0b52e8ea47db8c00f"
|
||||
"sha256": "b4b441c0248dfcd53316dc27c6bf386695919d3f32f9ead1c57522cc58782950"
|
||||
},
|
||||
"cap5-plugin-studio": {
|
||||
"bundle": "plugin-studio",
|
||||
"sha256": "d2ea03976a0ee1d804398736528d78fe0ca51ffeff89d1aa07f434ed32715469"
|
||||
"sha256": "0d6f85bf2417b01c6c12f52bd3d6e78cf0655667c15da87ed41a73c32a910154"
|
||||
},
|
||||
"deploy2-mobile-upg100": {
|
||||
"bundle": "my-upg-100-list",
|
||||
"sha256": "2116fcbcdea5e7ea05d5b9c7d72e02f2ff921185f9805903b1fe640a6be265ff"
|
||||
"sha256": "7fc9958df0297a74efe63c9e8c6ce58a7de65eb2f2a1a66e05f408a79c1304e7"
|
||||
},
|
||||
"exp-prayer-walk-planner": {
|
||||
"bundle": "prayer-walk-planner",
|
||||
"sha256": "dd232bb45a86f3b91f2f90907eb6a27d69c21d1546d5e37a39504f8ebe64c469"
|
||||
"sha256": "ec74ce978e7a3d41c5e0e57276bb1d26939abaf4f371a3f02eac8a6753794b64"
|
||||
},
|
||||
"exp-wall-of-people-groups": {
|
||||
"bundle": "wall-of-people-groups",
|
||||
"sha256": "2834da2244a51e9ced4252bd0a79514b05dcf11e8d55d5007914be424641deb1"
|
||||
"sha256": "cdeb3b69796c8fddd44e8605069fc9726b30f234ccc26aa7fcb7daa9b369f823"
|
||||
},
|
||||
"lang-arabic-upg100": {
|
||||
"bundle": "my-upg-100-list",
|
||||
"sha256": "2116fcbcdea5e7ea05d5b9c7d72e02f2ff921185f9805903b1fe640a6be265ff"
|
||||
"sha256": "7fc9958df0297a74efe63c9e8c6ce58a7de65eb2f2a1a66e05f408a79c1304e7"
|
||||
},
|
||||
"prod-big-picture": {
|
||||
"bundle": "dashboard-plus-grid",
|
||||
"sha256": "676b3f8a05c45ed3d0aab1adb671b8277ed15e0a424ab3ec2d6d7ff56ee72f6d"
|
||||
"sha256": "43ec41ba9261de4690c131104bdd518cf33cc21fe2d490d59cb478abe8ae71b1"
|
||||
},
|
||||
"prod-cities-internet": {
|
||||
"bundle": "cities-internet",
|
||||
"sha256": "bfccab06c3085d7a7bd601b889e196e360e01a9cf32561e35112d947430400b6"
|
||||
"sha256": "a9ee6299bbbd28e49aba61bac1968e78ccc63bf1f06a7247dde23fd48eab63ab"
|
||||
},
|
||||
"prod-cities-internet-phone": {
|
||||
"bundle": "cities-internet",
|
||||
"sha256": "bfccab06c3085d7a7bd601b889e196e360e01a9cf32561e35112d947430400b6"
|
||||
"sha256": "a9ee6299bbbd28e49aba61bac1968e78ccc63bf1f06a7247dde23fd48eab63ab"
|
||||
},
|
||||
"prod-gospel-resources": {
|
||||
"bundle": "gospel-resources",
|
||||
"sha256": "c16c3eb4613493a709b5d242f4354bc9c5cb468e89ee8c1f090a9eeb3bba3ef4"
|
||||
"sha256": "04fb9e72b99f09e3ab91f743208721df8a84f33adddc50e060c8edc37c46039b"
|
||||
},
|
||||
"prod-gospel-resources-phone": {
|
||||
"bundle": "gospel-resources",
|
||||
"sha256": "c16c3eb4613493a709b5d242f4354bc9c5cb468e89ee8c1f090a9eeb3bba3ef4"
|
||||
"sha256": "04fb9e72b99f09e3ab91f743208721df8a84f33adddc50e060c8edc37c46039b"
|
||||
},
|
||||
"prod-prayer-phone": {
|
||||
"bundle": "doxa-simple-map",
|
||||
"sha256": "f83d60377976d81e96e0c217dc2e6146c271ef7a2c47e13084c2d7a28f12ecfe"
|
||||
"sha256": "7a7545494b7962ab81def419b560845747f54145ceadd0c97e73ea2b175c63f3"
|
||||
},
|
||||
"prod-regions": {
|
||||
"bundle": "regions-dashboard",
|
||||
"sha256": "da59e6f88d0cc7ff9aebc32d513e73c7c224101dabbed7deced03f5220bdb67c"
|
||||
"sha256": "377d5a2bba03f50465a0a3d7af49d954a6fcfe4895e03d92907faec7be507257"
|
||||
},
|
||||
"prod-regions-phone": {
|
||||
"bundle": "regions-dashboard",
|
||||
"sha256": "da59e6f88d0cc7ff9aebc32d513e73c7c224101dabbed7deced03f5220bdb67c"
|
||||
"sha256": "377d5a2bba03f50465a0a3d7af49d954a6fcfe4895e03d92907faec7be507257"
|
||||
},
|
||||
"prod-research-gallery-phone": {
|
||||
"bundle": "doxa-maps-spa",
|
||||
"sha256": "1d2619fdb65538616b4acfae05ead24e0cce93cf4bd382b0b52e8ea47db8c00f"
|
||||
"sha256": "b4b441c0248dfcd53316dc27c6bf386695919d3f32f9ead1c57522cc58782950"
|
||||
},
|
||||
"prod-simple-research": {
|
||||
"bundle": "research-map-plus-grid",
|
||||
|
|
|
|||
|
|
@ -32,10 +32,28 @@ export function devBackendProxy() {
|
|||
|
||||
export function backendDevPlugin(root) {
|
||||
const children = []
|
||||
const alive = new Set() // backends whose process is running right now
|
||||
return {
|
||||
name: 'dx-backend-dev',
|
||||
apply: 'serve',
|
||||
configureServer(server) {
|
||||
// ENGINE NOT RUNNING, QUIETLY (dx-shepherd, R500): with no backend process the proxy answered
|
||||
// 500 ECONNREFUSED, which every page showed as console errors. While a backend is down its routes get
|
||||
// well-formed answers instead: /events streams ONE status event saying the engine is offline (the
|
||||
// plugin renders its own "engine not running" state from it), anything else returns an empty JSON
|
||||
// list. Registered here, so it runs before vite's proxy.
|
||||
for (const b of DEV_BACKENDS) {
|
||||
server.middlewares.use(b.route, (req, res, next) => {
|
||||
if (alive.has(b.name)) return next()
|
||||
if ((req.url || '').startsWith('/events')) {
|
||||
res.writeHead(200, { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache', Connection: 'keep-alive' })
|
||||
res.write(`data: ${JSON.stringify({ type: 'status', status: { engine: 'offline', error: 'The desktop engine is not running.' } })}\n\n`)
|
||||
return // held open, so the EventSource does not reconnect in a loop
|
||||
}
|
||||
res.writeHead(200, { 'Content-Type': 'application/json' })
|
||||
res.end('[]')
|
||||
})
|
||||
}
|
||||
for (const b of DEV_BACKENDS) {
|
||||
const bin = resolve(root, b.bin)
|
||||
if (!existsSync(bin)) {
|
||||
|
|
@ -47,8 +65,9 @@ export function backendDevPlugin(root) {
|
|||
const out = (d) => String(d).trim().split('\n').forEach((l) => l && server.config.logger.info(`${tag} ${l}`))
|
||||
child.stdout.on('data', out)
|
||||
child.stderr.on('data', out)
|
||||
child.on('exit', (code) => server.config.logger.warn(`${tag} exited (${code})`))
|
||||
child.on('exit', (code) => { alive.delete(b.name); server.config.logger.warn(`${tag} exited (${code})`) })
|
||||
children.push(child)
|
||||
alive.add(b.name)
|
||||
server.config.logger.info(`${tag} started → ${b.route} on 127.0.0.1:${b.port}`)
|
||||
}
|
||||
const stop = () => children.forEach((c) => { try { c.kill('SIGTERM') } catch {} })
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ import { createHash } from 'node:crypto'
|
|||
// without a separate tierMap. Previously the manifest carried no `type`, so a manifest-fed
|
||||
// consumer (plugin-studio) mis-tiered every profile as cap-1 (single). Single source of truth.
|
||||
import { detectProfileType } from './plugin-gallery/discover.mjs'
|
||||
import { profileMetaFields, bundleStage } from './profile-meta.mjs'
|
||||
import { TREE_NAME as CONFIGURED_TREE_NAME } from './_tree-name.mjs'
|
||||
import { syncAppShells } from './sync-app-shells.mjs'
|
||||
|
||||
|
|
@ -301,25 +302,6 @@ function profileReachesAMap(dir, file) {
|
|||
}
|
||||
return false
|
||||
}
|
||||
/**
|
||||
* STAGE and HEAVY, read from <profile>.meta.json and carried into manifest.json (the Driver, 2026-09-27:
|
||||
* a public-but-unfinished plugin shows under EXPERIMENTAL in the Plugin Studio and the gallery until it works
|
||||
* as a production map). Both surfaces read the MANIFEST, so they cannot disagree, and neither keeps a list.
|
||||
* "stage": "production" | "experimental" default experimental; a bundle is production if ANY of its
|
||||
* profiles says so (a bundle is one folder in the studio)
|
||||
* "heavy": true the element holds live WebGL contexts, so a host must destroy
|
||||
* it when it leaves the screen (Plugin Studio's HEAVY rows)
|
||||
*/
|
||||
function metaStageHeavy(dir, profileName) {
|
||||
try {
|
||||
const meta = JSON.parse(readFileSync(join(dir, `${profileName}.meta.json`), 'utf8'))
|
||||
const corner = meta?.widget?.corner
|
||||
return { stage: meta?.stage === 'production' ? 'production' : 'experimental', heavy: meta?.heavy === true,
|
||||
// "widget": { "corner": "bottom-right" } — a corner widget the Plugin Studio mounts once, fixed, not in a pane
|
||||
widget: ['bottom-right', 'bottom-left', 'top-right', 'top-left'].includes(corner) ? { corner } : null }
|
||||
} catch { return { stage: 'experimental', heavy: false, widget: null } }
|
||||
}
|
||||
|
||||
function metaIsMap(dir, profileName) {
|
||||
try {
|
||||
const meta = JSON.parse(readFileSync(join(dir, `${profileName}.meta.json`), 'utf8'))
|
||||
|
|
@ -1305,12 +1287,9 @@ function scanBundles() {
|
|||
? composesAMapLeaf(dir, profileName, file)
|
||||
: (metaIsMap(dir, profileName) ?? profileReachesAMap(dir, file))
|
||||
|
||||
const { stage: profileStage, heavy: profileHeavy, widget: profileWidget } = metaStageHeavy(dir, profileName)
|
||||
return {
|
||||
profile: profileName,
|
||||
stage: profileStage,
|
||||
...(profileHeavy ? { heavy: true } : {}),
|
||||
...(profileWidget ? { widget: profileWidget } : {}),
|
||||
...profileMetaFields(dir, profileName), // stage / heavy / widget, shared with the dev manifest
|
||||
file,
|
||||
description: description || fileTag || '',
|
||||
element: tag,
|
||||
|
|
@ -1364,7 +1343,7 @@ function scanBundles() {
|
|||
integrity,
|
||||
elements: bundleElements,
|
||||
...(composesUnique.length ? { composes: composesUnique } : {}),
|
||||
stage: profiles.some((p) => p.stage === 'production') ? 'production' : 'experimental',
|
||||
stage: bundleStage(profiles),
|
||||
profiles,
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ import { readdirSync, statSync, existsSync, readFileSync } from 'node:fs'
|
|||
import { REPO_ROOT, discoverSpaRegistry } from './discover.mjs'
|
||||
import { readBuildConfig, renderGallery } from '../generate-gallery.mjs'
|
||||
import { TREE_NAME } from '../_tree-name.mjs'
|
||||
import { profileMetaFields, bundleStage } from '../profile-meta.mjs'
|
||||
|
||||
// ─── DEV plugin gallery ──────────────────────────────────────────────────────
|
||||
// `bun x vite` (dev) serves the plugin gallery at `/` — the same page `bun run build`
|
||||
|
|
@ -115,6 +116,7 @@ export function galleryModel(reg) {
|
|||
const p = {
|
||||
profile, file: `${profile}.vue`, description: '', element: b.tag,
|
||||
type: typeOf.get(profile) || 'single',
|
||||
...profileMetaFields(resolve(REPO_ROOT, 'plugin-designs', b.bundle), profile), // same as the built manifest
|
||||
iframeUrl: link(b.bundle, profile), scriptUrl,
|
||||
embed: {
|
||||
iframe: iframe(`./${b.bundle}/${profile}/index.html`),
|
||||
|
|
@ -135,7 +137,7 @@ export function galleryModel(reg) {
|
|||
// to drop them, so under the dev server — which is what the Driver's laptop runs — the studio's
|
||||
// Composed-of panel and composition trees were silently empty for every composite.
|
||||
const composes = [...new Set([...presets.keys()].flatMap((profile) => readComposes(b.bundle, profile)))]
|
||||
return { bundle: b.bundle, scriptUrl, integrity: '', elements: [b.tag], ...(composes.length ? { composes } : {}), profiles }
|
||||
return { bundle: b.bundle, scriptUrl, integrity: '', elements: [b.tag], stage: bundleStage(profiles), ...(composes.length ? { composes } : {}), profiles }
|
||||
})
|
||||
return {
|
||||
schema: 'doxa-maps-manifest@1', generatedFrom: 'plugin-designs/*/*.vue (dev discovery)', embedBase: '.',
|
||||
|
|
|
|||
35
internal/profile-meta.mjs
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
/**
|
||||
* profile-meta.mjs — the per-profile fields a host reads from <profile>.meta.json, in ONE place.
|
||||
*
|
||||
* generate-tree (the built manifest.json) and the dev server's /__plugin-gallery/manifest.json both call
|
||||
* this, so the dev Studio and the built Studio cannot disagree (rega: the corner widget never mounted in
|
||||
* dev because only the built manifest carried "widget").
|
||||
* stage "production" | "experimental" default experimental
|
||||
* heavy true when the element holds live WebGL contexts
|
||||
* widget { corner } for a corner widget the Plugin Studio mounts once, fixed
|
||||
*/
|
||||
import { readFileSync } from 'node:fs'
|
||||
import { join } from 'node:path'
|
||||
|
||||
const CORNERS = ['bottom-right', 'bottom-left', 'top-right', 'top-left']
|
||||
|
||||
export function readProfileMeta(dir, profileName) {
|
||||
try {
|
||||
const meta = JSON.parse(readFileSync(join(dir, `${profileName}.meta.json`), 'utf8'))
|
||||
const corner = meta?.widget?.corner
|
||||
return {
|
||||
stage: meta?.stage === 'production' ? 'production' : 'experimental',
|
||||
heavy: meta?.heavy === true,
|
||||
widget: CORNERS.includes(corner) ? { corner } : null,
|
||||
}
|
||||
} catch { return { stage: 'experimental', heavy: false, widget: null } }
|
||||
}
|
||||
|
||||
/** The optional manifest keys for one profile (stage always; heavy / widget only when set). */
|
||||
export function profileMetaFields(dir, profileName) {
|
||||
const m = readProfileMeta(dir, profileName)
|
||||
return { stage: m.stage, ...(m.heavy ? { heavy: true } : {}), ...(m.widget ? { widget: m.widget } : {}) }
|
||||
}
|
||||
|
||||
/** A bundle is production if ANY of its profiles says so. */
|
||||
export const bundleStage = (profiles) => (profiles.some((p) => p.stage === 'production') ? 'production' : 'experimental')
|
||||
|
|
@ -233,7 +233,12 @@ useShadowStyles(
|
|||
'.dt .tabulator .tabulator-row{background:#fff;color:#3b463d;border-bottom:1px solid #e6e8e3}' +
|
||||
'.dt .tabulator .tabulator-row.tabulator-row-even{background:#faf9f7}' +
|
||||
'.dt .tabulator .tabulator-row:hover{background:#e9ebe6}' +
|
||||
'.dt .tabulator .tabulator-row .tabulator-cell{border-right:1px solid #e6e8e3;color:#3b463d}' +
|
||||
// unicode-bidi:plaintext: each cell takes its direction from its own first strong character, so an English
|
||||
// title in an Arabic page keeps its brackets and numbers where they belong (gospel-plugin / rega row 86).
|
||||
'.dt .tabulator .tabulator-row .tabulator-cell{border-right:1px solid #e6e8e3;color:#3b463d;unicode-bidi:plaintext}' +
|
||||
// plaintext also resolves a cell's ALIGNMENT from its own text, so English cells left-aligned in an rtl
|
||||
// table and clipped at its left edge (rega, L20). Align by the page's direction; the text stays isolated.
|
||||
'.dt:dir(rtl) .tabulator .tabulator-row .tabulator-cell{text-align:right}' +
|
||||
// The resource link is the point of the gospel-resources table, so it reads as a link
|
||||
// in the accent rather than as default-blue on grey.
|
||||
'.dt .tabulator .tabulator-row .tabulator-cell a{color:#4a7a52;font-weight:600}' +
|
||||
|
|
@ -310,7 +315,8 @@ useShadowStyles(
|
|||
|
||||
<div v-if="err" class="dt-err">{{ err }}</div>
|
||||
<div class="dt-wrap"><div ref="host"></div></div>
|
||||
<p class="dt-hint">{{ T('tables.tap_row_hint', 'Tap any row for its full detail') }}{{ isMobile ? '' : ' — every field, including the lists the table flattens' }}.</p>
|
||||
<!-- The English tail is isolated left-to-right, so under rtl its full stop stays at its end (row 86). -->
|
||||
<p class="dt-hint">{{ T('tables.tap_row_hint', 'Tap any row for its full detail') }}<bdi v-if="!isMobile" dir="ltr"> — every field, including the lists the table flattens.</bdi><template v-else>.</template></p>
|
||||
|
||||
<!-- ROW DETAIL — a bottom sheet on mobile, a panel on desktop. Carries EVERY
|
||||
field, including the ones the list view has to hide or flatten. -->
|
||||
|
|
@ -335,7 +341,8 @@ useShadowStyles(
|
|||
|
||||
<div v-if="caveats.length" class="dt-caveats">
|
||||
<div v-for="c in caveats" :key="c.key">
|
||||
<span class="dt-cav-k">{{ c.key }}:</span> {{ c.text }}
|
||||
<!-- A caveat is English prose from the table's meta: isolated ltr so its punctuation stays put under rtl. -->
|
||||
<bdi dir="ltr"><span class="dt-cav-k">{{ c.key }}:</span> {{ c.text }}</bdi>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
"cap2": "إعداد مسبق",
|
||||
"cap1": "مفرد",
|
||||
"stageExperimental": "تجريبي",
|
||||
"widget:rudder-voice/rudder-voice": "Rudder — تحويل الصوت إلى نص",
|
||||
"toggleList": "إظهار القائمة أو إخفاؤها",
|
||||
"openViews": "فتح قائمة العروض",
|
||||
"expandList": "توسيع القائمة",
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
"cap2": "Voreinstellung",
|
||||
"cap1": "Einzeln",
|
||||
"stageExperimental": "Experimentell",
|
||||
"widget:rudder-voice/rudder-voice": "Rudder — Sprache zu Text",
|
||||
"toggleList": "Liste ein-/ausblenden",
|
||||
"openViews": "Ansichtsliste öffnen",
|
||||
"expandList": "Liste ausklappen",
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
"cap2": "Preset",
|
||||
"cap1": "Single",
|
||||
"stageExperimental": "Experimental",
|
||||
"widget:rudder-voice/rudder-voice": "Rudder — voice to text",
|
||||
"toggleList": "Toggle list",
|
||||
"openViews": "Open the list of views",
|
||||
"expandList": "Expand list",
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
"cap2": "Preajuste",
|
||||
"cap1": "Individual",
|
||||
"stageExperimental": "Experimental",
|
||||
"widget:rudder-voice/rudder-voice": "Rudder — voz a texto",
|
||||
"toggleList": "Mostrar u ocultar la lista",
|
||||
"openViews": "Abrir la lista de vistas",
|
||||
"expandList": "Expandir la lista",
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
"cap2": "Préréglage",
|
||||
"cap1": "Simple",
|
||||
"stageExperimental": "Expérimental",
|
||||
"widget:rudder-voice/rudder-voice": "Rudder — voix vers texte",
|
||||
"toggleList": "Afficher ou masquer la liste",
|
||||
"openViews": "Ouvrir la liste des vues",
|
||||
"expandList": "Déplier la liste",
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
"cap2": "प्रीसेट",
|
||||
"cap1": "एकल",
|
||||
"stageExperimental": "प्रायोगिक",
|
||||
"widget:rudder-voice/rudder-voice": "Rudder — आवाज़ से टेक्स्ट",
|
||||
"toggleList": "सूची दिखाएँ या छिपाएँ",
|
||||
"openViews": "दृश्यों की सूची खोलें",
|
||||
"expandList": "सूची फैलाएँ",
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
"cap2": "Preimpostato",
|
||||
"cap1": "Singolo",
|
||||
"stageExperimental": "Sperimentale",
|
||||
"widget:rudder-voice/rudder-voice": "Rudder — voce in testo",
|
||||
"toggleList": "Mostra o nascondi l’elenco",
|
||||
"openViews": "Apri l’elenco delle viste",
|
||||
"expandList": "Espandi l’elenco",
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
"cap2": "Predefinição",
|
||||
"cap1": "Único",
|
||||
"stageExperimental": "Experimental",
|
||||
"widget:rudder-voice/rudder-voice": "Rudder — voz para texto",
|
||||
"toggleList": "Mostrar ou ocultar a lista",
|
||||
"openViews": "Abrir a lista de visualizações",
|
||||
"expandList": "Expandir a lista",
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
"cap2": "Presetat",
|
||||
"cap1": "Simplu",
|
||||
"stageExperimental": "Experimental",
|
||||
"widget:rudder-voice/rudder-voice": "Rudder — voce în text",
|
||||
"toggleList": "Afișează sau ascunde lista",
|
||||
"openViews": "Deschide lista de vizualizări",
|
||||
"expandList": "Extinde lista",
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
"cap2": "Предустановка",
|
||||
"cap1": "Одиночный",
|
||||
"stageExperimental": "Экспериментальные",
|
||||
"widget:rudder-voice/rudder-voice": "Rudder — голос в текст",
|
||||
"toggleList": "Показать или скрыть список",
|
||||
"openViews": "Открыть список представлений",
|
||||
"expandList": "Развернуть список",
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
"cap2": "预设",
|
||||
"cap1": "单一",
|
||||
"stageExperimental": "实验性",
|
||||
"widget:rudder-voice/rudder-voice": "Rudder — 语音转文字",
|
||||
"toggleList": "显示或隐藏列表",
|
||||
"openViews": "打开视图列表",
|
||||
"expandList": "展开列表",
|
||||
|
|
|
|||
|
|
@ -1092,7 +1092,11 @@ export default defineComponent({
|
|||
panel.style.cssText = 'display:none;width:min(380px,calc(100vw - 24px));height:min(520px,calc(100vh - 80px));position:relative;background:#fff;border-radius:10px;box-shadow:0 8px 30px rgba(0,0,0,.25);overflow:hidden;'
|
||||
const btn = document.createElement('button')
|
||||
btn.type = 'button'
|
||||
btn.textContent = row.label
|
||||
// A catalogue label per widget ("widget:<row key>"), not the row key (rega / repo: the button read
|
||||
// the raw "rudder-voice"). Falls back to the row label for a widget with no key yet.
|
||||
const wk = 'widget:' + row.key
|
||||
const wl = this.tr(wk)
|
||||
btn.textContent = wl !== wk ? wl : row.label
|
||||
btn.setAttribute('aria-expanded', 'false')
|
||||
btn.style.cssText = 'font:600 13px system-ui,sans-serif;padding:8px 14px;border-radius:999px;border:1px solid #30363d;background:#0d1117;color:#e6edf3;cursor:pointer;box-shadow:0 2px 10px rgba(0,0,0,.25);'
|
||||
btn.addEventListener('click', () => this.openWidget(row, panel.style.display === 'none'))
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <cities-internet-map> custom element. -->
|
||||
<script src="../cities-internet.js" integrity="sha384-I2iNfp1pTAhCbpzIz/iVdUo0/BgsDr7xskuZtOfYw8mP+2e6MnmRKH8erYGOhJsC" crossorigin="anonymous"></script>
|
||||
<script src="../cities-internet.js" integrity="sha384-l0xAmMtQ2HmJf1StRc+tqEI7bJrXGN6fKFZjtaqoHHwz7DRLBW5YxqnVT0GjjOUZ" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <cities-internet-map> custom element. -->
|
||||
<script src="../cities-internet.js" integrity="sha384-I2iNfp1pTAhCbpzIz/iVdUo0/BgsDr7xskuZtOfYw8mP+2e6MnmRKH8erYGOhJsC" crossorigin="anonymous"></script>
|
||||
<script src="../cities-internet.js" integrity="sha384-l0xAmMtQ2HmJf1StRc+tqEI7bJrXGN6fKFZjtaqoHHwz7DRLBW5YxqnVT0GjjOUZ" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <cities-internet-map> custom element. -->
|
||||
<script src="../cities-internet.js" integrity="sha384-I2iNfp1pTAhCbpzIz/iVdUo0/BgsDr7xskuZtOfYw8mP+2e6MnmRKH8erYGOhJsC" crossorigin="anonymous"></script>
|
||||
<script src="../cities-internet.js" integrity="sha384-l0xAmMtQ2HmJf1StRc+tqEI7bJrXGN6fKFZjtaqoHHwz7DRLBW5YxqnVT0GjjOUZ" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@
|
|||
"bundle": "cities-internet",
|
||||
"scriptUrl": "./cities-internet/cities-internet.js",
|
||||
"output": "dx-maps/cities-internet/cities-internet.js",
|
||||
"integrity": "sha384-I2iNfp1pTAhCbpzIz/iVdUo0/BgsDr7xskuZtOfYw8mP+2e6MnmRKH8erYGOhJsC",
|
||||
"integrity": "sha384-l0xAmMtQ2HmJf1StRc+tqEI7bJrXGN6fKFZjtaqoHHwz7DRLBW5YxqnVT0GjjOUZ",
|
||||
"elements": [
|
||||
"cities-internet-map"
|
||||
],
|
||||
|
|
@ -126,7 +126,7 @@
|
|||
"scriptUrl": "./cities-internet/cities-internet.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./cities-internet/connectivity-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=\"./cities-internet/cities-internet.js\" integrity=\"sha384-I2iNfp1pTAhCbpzIz/iVdUo0/BgsDr7xskuZtOfYw8mP+2e6MnmRKH8erYGOhJsC\" crossorigin=\"anonymous\"></script>\n<cities-internet-map profile-config='{\"profile\":\"connectivity-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-l0xAmMtQ2HmJf1StRc+tqEI7bJrXGN6fKFZjtaqoHHwz7DRLBW5YxqnVT0GjjOUZ\" crossorigin=\"anonymous\"></script>\n<cities-internet-map profile-config='{\"profile\":\"connectivity-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -141,7 +141,7 @@
|
|||
"scriptUrl": "./cities-internet/cities-internet.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./cities-internet/connectivity-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<!-- Mapbox engine, fetched early. Keep it only with a real Mapbox token in \"tk\": without one (or with \"provider\":\"maplibre\") the map draws with MapLibre and this line must go -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-I2iNfp1pTAhCbpzIz/iVdUo0/BgsDr7xskuZtOfYw8mP+2e6MnmRKH8erYGOhJsC\" crossorigin=\"anonymous\"></script>\n<cities-internet-map profile-config='{\"profile\":\"connectivity-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-map>"
|
||||
"script": "<!-- Mapbox engine, fetched early. Keep it only with a real Mapbox token in \"tk\": without one (or with \"provider\":\"maplibre\") the map draws with MapLibre and this line must go -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-l0xAmMtQ2HmJf1StRc+tqEI7bJrXGN6fKFZjtaqoHHwz7DRLBW5YxqnVT0GjjOUZ\" crossorigin=\"anonymous\"></script>\n<cities-internet-map profile-config='{\"profile\":\"connectivity-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -156,7 +156,7 @@
|
|||
"scriptUrl": "./cities-internet/cities-internet.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./cities-internet/data-tables/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=\"./cities-internet/cities-internet.js\" integrity=\"sha384-I2iNfp1pTAhCbpzIz/iVdUo0/BgsDr7xskuZtOfYw8mP+2e6MnmRKH8erYGOhJsC\" crossorigin=\"anonymous\"></script>\n<cities-internet-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-l0xAmMtQ2HmJf1StRc+tqEI7bJrXGN6fKFZjtaqoHHwz7DRLBW5YxqnVT0GjjOUZ\" crossorigin=\"anonymous\"></script>\n<cities-internet-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-map>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -723,7 +723,7 @@
|
|||
"bundle": "gospel-resources",
|
||||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"output": "dx-maps/gospel-resources/gospel-resources.js",
|
||||
"integrity": "sha384-tsuaFv6mU4y5eDLROQg5GM7Krdrr/eVDlcbQI0NOcJc1I/xk8/rkSnGQfZrHsX89",
|
||||
"integrity": "sha384-THPKrUhJSCbS9B+obc+eoQGrEGG5RA1dFjPwDeB/XDANcCjS3Fyu1z2clXpGbu9d",
|
||||
"elements": [
|
||||
"gospel-resources-map"
|
||||
],
|
||||
|
|
@ -745,7 +745,7 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/charts/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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-tsuaFv6mU4y5eDLROQg5GM7Krdrr/eVDlcbQI0NOcJc1I/xk8/rkSnGQfZrHsX89\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"charts\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-THPKrUhJSCbS9B+obc+eoQGrEGG5RA1dFjPwDeB/XDANcCjS3Fyu1z2clXpGbu9d\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"charts\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -760,7 +760,7 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/data-tables/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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-tsuaFv6mU4y5eDLROQg5GM7Krdrr/eVDlcbQI0NOcJc1I/xk8/rkSnGQfZrHsX89\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-THPKrUhJSCbS9B+obc+eoQGrEGG5RA1dFjPwDeB/XDANcCjS3Fyu1z2clXpGbu9d\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -775,7 +775,7 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/gospel-dashboard/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<!-- Mapbox engine, fetched early. Keep it only with a real Mapbox token in \"tk\": without one (or with \"provider\":\"maplibre\") the map draws with MapLibre and this line must go -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-tsuaFv6mU4y5eDLROQg5GM7Krdrr/eVDlcbQI0NOcJc1I/xk8/rkSnGQfZrHsX89\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"gospel-dashboard\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
"script": "<!-- Mapbox engine, fetched early. Keep it only with a real Mapbox token in \"tk\": without one (or with \"provider\":\"maplibre\") the map draws with MapLibre and this line must go -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-THPKrUhJSCbS9B+obc+eoQGrEGG5RA1dFjPwDeB/XDANcCjS3Fyu1z2clXpGbu9d\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"gospel-dashboard\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -790,7 +790,7 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/resources-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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-tsuaFv6mU4y5eDLROQg5GM7Krdrr/eVDlcbQI0NOcJc1I/xk8/rkSnGQfZrHsX89\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"resources-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-THPKrUhJSCbS9B+obc+eoQGrEGG5RA1dFjPwDeB/XDANcCjS3Fyu1z2clXpGbu9d\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"resources-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -805,7 +805,7 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/resources-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<!-- Mapbox engine, fetched early. Keep it only with a real Mapbox token in \"tk\": without one (or with \"provider\":\"maplibre\") the map draws with MapLibre and this line must go -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-tsuaFv6mU4y5eDLROQg5GM7Krdrr/eVDlcbQI0NOcJc1I/xk8/rkSnGQfZrHsX89\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"resources-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
"script": "<!-- Mapbox engine, fetched early. Keep it only with a real Mapbox token in \"tk\": without one (or with \"provider\":\"maplibre\") the map draws with MapLibre and this line must go -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-THPKrUhJSCbS9B+obc+eoQGrEGG5RA1dFjPwDeB/XDANcCjS3Fyu1z2clXpGbu9d\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"resources-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -938,7 +938,7 @@
|
|||
"bundle": "plugin-studio",
|
||||
"scriptUrl": "./plugin-studio/plugin-studio.js",
|
||||
"output": "dx-maps/plugin-studio/plugin-studio.js",
|
||||
"integrity": "sha384-L2MCcGfR6X5/0VxHzMs9eDvMsdSYufZ66OhQdodC7vwcNgM7op8u8jNjayoJsySd",
|
||||
"integrity": "sha384-KZM0ps1KcU1sVPPvQVWdsT0mCZ/5TAaD3RXTVsvHZ9bjxFM0A53sODlG8Nbz/AGA",
|
||||
"elements": [
|
||||
"plugin-studio"
|
||||
],
|
||||
|
|
@ -968,7 +968,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-L2MCcGfR6X5/0VxHzMs9eDvMsdSYufZ66OhQdodC7vwcNgM7op8u8jNjayoJsySd\" crossorigin=\"anonymous\"></script>\n<plugin-studio profile-config='{\"profile\":\"plugin-studio\",\"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-KZM0ps1KcU1sVPPvQVWdsT0mCZ/5TAaD3RXTVsvHZ9bjxFM0A53sODlG8Nbz/AGA\" crossorigin=\"anonymous\"></script>\n<plugin-studio profile-config='{\"profile\":\"plugin-studio\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></plugin-studio>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <gospel-resources-map> custom element. -->
|
||||
<script src="../gospel-resources.js" integrity="sha384-tsuaFv6mU4y5eDLROQg5GM7Krdrr/eVDlcbQI0NOcJc1I/xk8/rkSnGQfZrHsX89" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-THPKrUhJSCbS9B+obc+eoQGrEGG5RA1dFjPwDeB/XDANcCjS3Fyu1z2clXpGbu9d" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <gospel-resources-map> custom element. -->
|
||||
<script src="../gospel-resources.js" integrity="sha384-tsuaFv6mU4y5eDLROQg5GM7Krdrr/eVDlcbQI0NOcJc1I/xk8/rkSnGQfZrHsX89" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-THPKrUhJSCbS9B+obc+eoQGrEGG5RA1dFjPwDeB/XDANcCjS3Fyu1z2clXpGbu9d" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <gospel-resources-map> custom element. -->
|
||||
<script src="../gospel-resources.js" integrity="sha384-tsuaFv6mU4y5eDLROQg5GM7Krdrr/eVDlcbQI0NOcJc1I/xk8/rkSnGQfZrHsX89" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-THPKrUhJSCbS9B+obc+eoQGrEGG5RA1dFjPwDeB/XDANcCjS3Fyu1z2clXpGbu9d" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <gospel-resources-map> custom element. -->
|
||||
<script src="../gospel-resources.js" integrity="sha384-tsuaFv6mU4y5eDLROQg5GM7Krdrr/eVDlcbQI0NOcJc1I/xk8/rkSnGQfZrHsX89" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-THPKrUhJSCbS9B+obc+eoQGrEGG5RA1dFjPwDeB/XDANcCjS3Fyu1z2clXpGbu9d" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <gospel-resources-map> custom element. -->
|
||||
<script src="../gospel-resources.js" integrity="sha384-tsuaFv6mU4y5eDLROQg5GM7Krdrr/eVDlcbQI0NOcJc1I/xk8/rkSnGQfZrHsX89" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-THPKrUhJSCbS9B+obc+eoQGrEGG5RA1dFjPwDeB/XDANcCjS3Fyu1z2clXpGbu9d" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -19,6 +19,6 @@
|
|||
</head>
|
||||
<body>
|
||||
<plugin-studio tree-base="."></plugin-studio>
|
||||
<script src="./plugin-studio/plugin-studio.js" integrity="sha384-L2MCcGfR6X5/0VxHzMs9eDvMsdSYufZ66OhQdodC7vwcNgM7op8u8jNjayoJsySd" crossorigin="anonymous"></script>
|
||||
<script src="./plugin-studio/plugin-studio.js" integrity="sha384-KZM0ps1KcU1sVPPvQVWdsT0mCZ/5TAaD3RXTVsvHZ9bjxFM0A53sODlG8Nbz/AGA" crossorigin="anonymous"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@
|
|||
"bundle": "cities-internet",
|
||||
"scriptUrl": "./cities-internet/cities-internet.js",
|
||||
"output": "dx-maps/cities-internet/cities-internet.js",
|
||||
"integrity": "sha384-I2iNfp1pTAhCbpzIz/iVdUo0/BgsDr7xskuZtOfYw8mP+2e6MnmRKH8erYGOhJsC",
|
||||
"integrity": "sha384-l0xAmMtQ2HmJf1StRc+tqEI7bJrXGN6fKFZjtaqoHHwz7DRLBW5YxqnVT0GjjOUZ",
|
||||
"elements": [
|
||||
"cities-internet-map"
|
||||
],
|
||||
|
|
@ -126,7 +126,7 @@
|
|||
"scriptUrl": "./cities-internet/cities-internet.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./cities-internet/connectivity-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=\"./cities-internet/cities-internet.js\" integrity=\"sha384-I2iNfp1pTAhCbpzIz/iVdUo0/BgsDr7xskuZtOfYw8mP+2e6MnmRKH8erYGOhJsC\" crossorigin=\"anonymous\"></script>\n<cities-internet-map profile-config='{\"profile\":\"connectivity-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-l0xAmMtQ2HmJf1StRc+tqEI7bJrXGN6fKFZjtaqoHHwz7DRLBW5YxqnVT0GjjOUZ\" crossorigin=\"anonymous\"></script>\n<cities-internet-map profile-config='{\"profile\":\"connectivity-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -141,7 +141,7 @@
|
|||
"scriptUrl": "./cities-internet/cities-internet.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./cities-internet/connectivity-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<!-- Mapbox engine, fetched early. Keep it only with a real Mapbox token in \"tk\": without one (or with \"provider\":\"maplibre\") the map draws with MapLibre and this line must go -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-I2iNfp1pTAhCbpzIz/iVdUo0/BgsDr7xskuZtOfYw8mP+2e6MnmRKH8erYGOhJsC\" crossorigin=\"anonymous\"></script>\n<cities-internet-map profile-config='{\"profile\":\"connectivity-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-map>"
|
||||
"script": "<!-- Mapbox engine, fetched early. Keep it only with a real Mapbox token in \"tk\": without one (or with \"provider\":\"maplibre\") the map draws with MapLibre and this line must go -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-l0xAmMtQ2HmJf1StRc+tqEI7bJrXGN6fKFZjtaqoHHwz7DRLBW5YxqnVT0GjjOUZ\" crossorigin=\"anonymous\"></script>\n<cities-internet-map profile-config='{\"profile\":\"connectivity-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -156,7 +156,7 @@
|
|||
"scriptUrl": "./cities-internet/cities-internet.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./cities-internet/data-tables/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=\"./cities-internet/cities-internet.js\" integrity=\"sha384-I2iNfp1pTAhCbpzIz/iVdUo0/BgsDr7xskuZtOfYw8mP+2e6MnmRKH8erYGOhJsC\" crossorigin=\"anonymous\"></script>\n<cities-internet-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-l0xAmMtQ2HmJf1StRc+tqEI7bJrXGN6fKFZjtaqoHHwz7DRLBW5YxqnVT0GjjOUZ\" crossorigin=\"anonymous\"></script>\n<cities-internet-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></cities-internet-map>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -723,7 +723,7 @@
|
|||
"bundle": "gospel-resources",
|
||||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"output": "dx-maps/gospel-resources/gospel-resources.js",
|
||||
"integrity": "sha384-tsuaFv6mU4y5eDLROQg5GM7Krdrr/eVDlcbQI0NOcJc1I/xk8/rkSnGQfZrHsX89",
|
||||
"integrity": "sha384-THPKrUhJSCbS9B+obc+eoQGrEGG5RA1dFjPwDeB/XDANcCjS3Fyu1z2clXpGbu9d",
|
||||
"elements": [
|
||||
"gospel-resources-map"
|
||||
],
|
||||
|
|
@ -745,7 +745,7 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/charts/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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-tsuaFv6mU4y5eDLROQg5GM7Krdrr/eVDlcbQI0NOcJc1I/xk8/rkSnGQfZrHsX89\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"charts\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-THPKrUhJSCbS9B+obc+eoQGrEGG5RA1dFjPwDeB/XDANcCjS3Fyu1z2clXpGbu9d\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"charts\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -760,7 +760,7 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/data-tables/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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-tsuaFv6mU4y5eDLROQg5GM7Krdrr/eVDlcbQI0NOcJc1I/xk8/rkSnGQfZrHsX89\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-THPKrUhJSCbS9B+obc+eoQGrEGG5RA1dFjPwDeB/XDANcCjS3Fyu1z2clXpGbu9d\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -775,7 +775,7 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/gospel-dashboard/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<!-- Mapbox engine, fetched early. Keep it only with a real Mapbox token in \"tk\": without one (or with \"provider\":\"maplibre\") the map draws with MapLibre and this line must go -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-tsuaFv6mU4y5eDLROQg5GM7Krdrr/eVDlcbQI0NOcJc1I/xk8/rkSnGQfZrHsX89\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"gospel-dashboard\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
"script": "<!-- Mapbox engine, fetched early. Keep it only with a real Mapbox token in \"tk\": without one (or with \"provider\":\"maplibre\") the map draws with MapLibre and this line must go -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-THPKrUhJSCbS9B+obc+eoQGrEGG5RA1dFjPwDeB/XDANcCjS3Fyu1z2clXpGbu9d\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"gospel-dashboard\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -790,7 +790,7 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/resources-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=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-tsuaFv6mU4y5eDLROQg5GM7Krdrr/eVDlcbQI0NOcJc1I/xk8/rkSnGQfZrHsX89\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"resources-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-THPKrUhJSCbS9B+obc+eoQGrEGG5RA1dFjPwDeB/XDANcCjS3Fyu1z2clXpGbu9d\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"resources-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -805,7 +805,7 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/resources-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<!-- Mapbox engine, fetched early. Keep it only with a real Mapbox token in \"tk\": without one (or with \"provider\":\"maplibre\") the map draws with MapLibre and this line must go -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-tsuaFv6mU4y5eDLROQg5GM7Krdrr/eVDlcbQI0NOcJc1I/xk8/rkSnGQfZrHsX89\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"resources-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
"script": "<!-- Mapbox engine, fetched early. Keep it only with a real Mapbox token in \"tk\": without one (or with \"provider\":\"maplibre\") the map draws with MapLibre and this line must go -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-THPKrUhJSCbS9B+obc+eoQGrEGG5RA1dFjPwDeB/XDANcCjS3Fyu1z2clXpGbu9d\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"resources-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -938,7 +938,7 @@
|
|||
"bundle": "plugin-studio",
|
||||
"scriptUrl": "./plugin-studio/plugin-studio.js",
|
||||
"output": "dx-maps/plugin-studio/plugin-studio.js",
|
||||
"integrity": "sha384-L2MCcGfR6X5/0VxHzMs9eDvMsdSYufZ66OhQdodC7vwcNgM7op8u8jNjayoJsySd",
|
||||
"integrity": "sha384-KZM0ps1KcU1sVPPvQVWdsT0mCZ/5TAaD3RXTVsvHZ9bjxFM0A53sODlG8Nbz/AGA",
|
||||
"elements": [
|
||||
"plugin-studio"
|
||||
],
|
||||
|
|
@ -968,7 +968,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-L2MCcGfR6X5/0VxHzMs9eDvMsdSYufZ66OhQdodC7vwcNgM7op8u8jNjayoJsySd\" crossorigin=\"anonymous\"></script>\n<plugin-studio profile-config='{\"profile\":\"plugin-studio\",\"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-KZM0ps1KcU1sVPPvQVWdsT0mCZ/5TAaD3RXTVsvHZ9bjxFM0A53sODlG8Nbz/AGA\" crossorigin=\"anonymous\"></script>\n<plugin-studio profile-config='{\"profile\":\"plugin-studio\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></plugin-studio>"
|
||||
},
|
||||
"instances": [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -32,7 +32,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-L2MCcGfR6X5/0VxHzMs9eDvMsdSYufZ66OhQdodC7vwcNgM7op8u8jNjayoJsySd" crossorigin="anonymous"></script>
|
||||
<script src="../plugin-studio.js" integrity="sha384-KZM0ps1KcU1sVPPvQVWdsT0mCZ/5TAaD3RXTVsvHZ9bjxFM0A53sODlG8Nbz/AGA" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -32,7 +32,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-L2MCcGfR6X5/0VxHzMs9eDvMsdSYufZ66OhQdodC7vwcNgM7op8u8jNjayoJsySd" crossorigin="anonymous"></script>
|
||||
<script src="../../plugin-studio.js" integrity="sha384-KZM0ps1KcU1sVPPvQVWdsT0mCZ/5TAaD3RXTVsvHZ9bjxFM0A53sODlG8Nbz/AGA" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||