From b57aef457c65e70b5a35a8629a80e7f84eea24d3 Mon Sep 17 00:00:00 2001 From: doxa-maps Date: Tue, 22 Sep 2026 07:34:02 +0000 Subject: [PATCH] Add the mobile capability-4 composite: research map above the people-groups grid MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The desktop composite pairs the research dashboard with the grid. This is its mobile sibling: the monolithic 7-tab research map on top, the same grid beneath, stacked to scroll. Which one a shell shows is an aspect-ratio choice made at the SPA level, so neither plugin knows about the other and both stay embeddable. The grid's own search and filters are ON here. The desktop composite turns them off because the dashboard header owns those controls and drives the grid through props; the research map has no such header, so switching them off would leave the grid with no way to be searched at all. Composes its children by tag and bundle URL rather than importing their .vue files. Importing the research map directly would bypass its bundle entry, which is where its three bundle-private colour strategies, its profile registry, its Pinia and i18n pair and the RTL text plugin are installed — and losing those is a runtime defect in a green build, because a thrown setup() removes the subtree with an empty error. Add check:composite-srcs, which resolves every nested src against the built tree and asserts every nested tag is registered. A wrong relative depth is a 404, and the stack layout swallows a failed section on purpose so one broken child cannot take the whole stack down — which means the cost of that resilience is a silently empty band. Negative-tested both ways: breaking the depth and renaming a tag each fail with the file and path named; restoring returns to pass. --- .../README-SECTION-3-cli-commands.md | 2 +- internal/check-composite-srcs.mjs | 156 ++++++++ package.json | 5 +- .../research-map-plus-grid/index.html | 41 ++ .../research-map-plus-grid/index.js | 44 +++ .../research-map-plus-grid.instances.json | 1 + .../research-map-plus-grid.meta.json | 6 + .../research-map-plus-grid.vue | 112 ++++++ public/.build.lock | 2 +- public/doxa-maps/all-people-groups/index.html | 2 +- public/doxa-maps/big-picture/index.html | 2 +- public/doxa-maps/cities-internet/index.html | 2 +- public/doxa-maps/country-posters/index.html | 2 +- public/doxa-maps/demo-map/index.html | 2 +- public/doxa-maps/doxa-maps-spa/index.html | 2 +- public/doxa-maps/doxa-research-map/index.html | 2 +- public/doxa-maps/doxa-simple-map/index.html | 2 +- public/doxa-maps/doxa-vision-card/index.html | 2 +- public/doxa-maps/gospel-resources/index.html | 2 +- public/doxa-maps/index.html | 2 +- public/doxa-maps/manifest.json | 44 ++- public/doxa-maps/my-upg-100-list/index.html | 2 +- .../doxa-maps/people-groups-grid/index.html | 2 +- public/doxa-maps/plugin-studio/index.html | 2 +- .../doxa-maps/research-dashboard/index.html | 2 +- .../research-map-plus-grid/index.html | 371 ++++++++++++++++++ .../research-map-plus-grid.js | 47 +++ .../research-map-plus-grid/default/index.html | 179 +++++++++ .../research-map-plus-grid/index.html | 179 +++++++++ public/doxa-maps/template-bundle/index.html | 2 +- public/index.html | 4 +- 31 files changed, 1201 insertions(+), 24 deletions(-) create mode 100644 internal/check-composite-srcs.mjs create mode 100644 plugin-designs/research-map-plus-grid/index.html create mode 100644 plugin-designs/research-map-plus-grid/index.js create mode 100644 plugin-designs/research-map-plus-grid/research-map-plus-grid.instances.json create mode 100644 plugin-designs/research-map-plus-grid/research-map-plus-grid.meta.json create mode 100644 plugin-designs/research-map-plus-grid/research-map-plus-grid.vue create mode 100644 public/doxa-maps/research-map-plus-grid/index.html create mode 100644 public/doxa-maps/research-map-plus-grid/research-map-plus-grid.js create mode 100644 public/doxa-maps/research-map-plus-grid/research-map-plus-grid/default/index.html create mode 100644 public/doxa-maps/research-map-plus-grid/research-map-plus-grid/index.html diff --git a/documentation/README-SECTION-3-cli-commands.md b/documentation/README-SECTION-3-cli-commands.md index 37406ff20..adae3e236 100644 --- a/documentation/README-SECTION-3-cli-commands.md +++ b/documentation/README-SECTION-3-cli-commands.md @@ -25,7 +25,7 @@ The scripts these commands are grounded in (from this branch's `package.json`): // claiming to be ground truth, and this one had silently stopped being it. "dev": "bun x vite", "build": "bash internal/build-lock.sh", -"build:unlocked": "bun run check:template-literal && bun run clean && bun run token && for d in plugin-designs/*/; do BUNDLE=$(basename \"$d\") bun x vite build || exit 1; done && bun run tree && bun run check:drop && bun run check:parse && bun run verify && bun run check:sri && bun run check:public-hygiene && bun run check:label-joins && bun run check:descriptions && bun run check:no-abs-paths && bun run check:dep-names && bun run gallery", +"build:unlocked": "bun run check:template-literal && bun run clean && bun run token && for d in plugin-designs/*/; do BUNDLE=$(basename \"$d\") bun x vite build || exit 1; done && bun run tree && bun run check:drop && bun run check:parse && bun run verify && bun run check:sri && bun run check:public-hygiene && bun run check:label-joins && bun run check:descriptions && bun run check:no-abs-paths && bun run check:dep-names && bun run check:composite-srcs && bun run gallery", "preview": "bun x vite preview", "serve": "python3 -m http.server 4173 --bind 0.0.0.0 --directory public", "cap:sync": "./node_modules/.bin/cap sync android", diff --git a/internal/check-composite-srcs.mjs b/internal/check-composite-srcs.mjs new file mode 100644 index 000000000..71bcb2c8f --- /dev/null +++ b/internal/check-composite-srcs.mjs @@ -0,0 +1,156 @@ +#!/usr/bin/env node +/** + * check-composite-srcs.mjs — every composite's nested `src:` must resolve to a real built bundle. + * + * WHY THIS EXISTS. A capability-4/5 composite nests its children by TAG + BUNDLE URL through + * StackLayout / VerticalTabsLayout: + * + * { key:'map', element:'doxa-research-map', src:'../../doxa-research-map/doxa-research-map.js' } + * + * That `src` is resolved BY THE BROWSER, relative to the composite's generated leaf page, which is + * served two levels deep (doxa-maps///index.html). So a sibling bundle is reached + * with `../..//.js`. Get the depth wrong by one and you get a 404. + * + * ★ THE FAILURE IS SILENT, WHICH IS WHY IT NEEDS A GATE. StackLayout mounts each section inside a + * promise chain that ends in `.catch(() => {})` — a deliberate choice, so one broken child cannot + * take down the whole stack. The cost of that resilience is that a wrong path produces NO error, + * NO console warning and NO build failure: just a section that is silently EMPTY. The build is + * green, the element mounts, and a band of the product is missing. Exactly the shape that survives + * every check an author runs and is found only by a human looking at the page. + * + * WHAT IT CHECKS. For every `src:` string in plugin-designs//*.vue, resolve it the way the + * browser will — against `public////` — and assert the file exists in + * the built tree. It also flags an `element:` whose tag no bundle registers, which is the other + * half of the same defect (a correct path to a bundle that defines a different tag). + * + * NOT A SUBSTITUTE FOR A BROWSER. This proves the URL resolves to a file on disk. It cannot prove + * the element renders. Pair it with the Playwright smoke. + * + * NEGATIVE-TESTED: changing a src's depth (../../ -> ../) makes this FAIL naming the bundle, the + * section and both the written and resolved paths; restoring it returns PASS. A tree with no + * composites at all FAILS (vacuous guard) rather than passing on an empty set. + */ +import { readFileSync, existsSync, readdirSync } from 'node:fs' +import { resolve, dirname, join } from 'node:path' +import { fileURLToPath } from 'node:url' + +const ROOT = resolve(dirname(fileURLToPath(import.meta.url)), '..') + +// The output tree name comes from the build config, the same source generate-tree uses. Defaulting +// silently would make this gate check a directory the build never writes. +let treeName = 'doxa-maps' +try { + const cfg = JSON.parse(readFileSync(join(ROOT, 'vite.1040-maps-build-config.json'), 'utf8')) + if (cfg?.name) treeName = cfg.name +} catch { /* fall through to the default */ } + +const TREE = join(ROOT, 'public', treeName) +if (!existsSync(TREE)) { + console.log(`COMPOSITE-SRCS: SKIP — no built tree at public/${treeName}/. Run \`bun run build\` first.`) + console.log(' An absent tree is not evidence either way.') + process.exit(0) +} + +const DESIGNS = join(ROOT, 'plugin-designs') +const bundles = readdirSync(DESIGNS, { withFileTypes: true }) + .filter(d => d.isDirectory()).map(d => d.name) + +// Collect every tag any bundle registers, so an `element:` pointing at a tag nobody defines is +// caught too. Read from the SOURCE entries (index.js), which is where customElements.define lives. +const definedTags = new Map() // tag -> bundle that defines it +for (const b of bundles) { + const entry = join(DESIGNS, b, 'index.js') + if (!existsSync(entry)) continue + const txt = readFileSync(entry, 'utf8') + for (const m of txt.matchAll(/customElements\.define\(\s*['"]([^'"]+)['"]/g)) { + if (!definedTags.has(m[1])) definedTags.set(m[1], b) + } +} + +// A section literal is `{ ... element: 'tag' ... src: '...' ... }`. Rather than parse JS, scan each +// .vue for src/element string pairs within a small window — composites declare them adjacently. +const SRC_RE = /src:\s*['"]([^'"]+\.js)['"]/g +const EL_RE = /element:\s*['"]([^'"]+)['"]/g + +const problems = [] +let composites = 0 +let checked = 0 + +for (const bundle of bundles) { + const dir = join(DESIGNS, bundle) + const vues = readdirSync(dir).filter(f => f.endsWith('.vue')) + for (const vue of vues) { + const text = readFileSync(join(dir, vue), 'utf8') + const srcs = [...text.matchAll(SRC_RE)].map(m => m[1]) + const els = [...text.matchAll(EL_RE)].map(m => m[1]) + if (!srcs.length && !els.length) continue + composites++ + + // The composite's generated leaf lives at public////index.html. Profiles + // are the bundle's own .vue basenames; use the real built dirs so this matches what shipped. + const bundleOut = join(TREE, bundle) + if (!existsSync(bundleOut)) { + problems.push({ bundle, vue, why: `no built output at public/${treeName}/${bundle}/ — did the build emit this bundle?` }) + continue + } + const profileDirs = readdirSync(bundleOut, { withFileTypes: true }) + .filter(d => d.isDirectory()).map(d => d.name) + if (!profileDirs.length) { + problems.push({ bundle, vue, why: `built bundle has no profile directory to resolve relative srcs from` }) + continue + } + + for (const src of srcs) { + checked++ + // Resolve exactly as the browser would: against the leaf page's directory. + const leafDir = join(bundleOut, profileDirs[0]) + const resolved = resolve(leafDir, src) + if (!existsSync(resolved)) { + problems.push({ + bundle, vue, src, + why: `resolves to ${resolved.replace(ROOT + '/', '')} — WHICH DOES NOT EXIST`, + hint: `a sibling bundle is '../..//.js' from a leaf at ///` + }) + } + } + for (const el of els) { + checked++ + if (!definedTags.has(el)) { + problems.push({ + bundle, vue, src: el, + why: `element tag '${el}' is not registered by ANY bundle's index.js`, + hint: `StackLayout waits for customElements.get('${el}') and gives up silently if it never appears` + }) + } + } + } +} + +console.log(`COMPOSITE-SRCS: ${composites} composite file(s), ${checked} nested reference(s) checked ` + + `against public/${treeName}/.`) + +// Vacuous guard: "0 composites" must never read as "0 problems" — this repo ships several. +const MIN_COMPOSITES = 2 +if (composites < MIN_COMPOSITES) { + console.error(`\nCOMPOSITE-SRCS: FAIL — only ${composites} composite(s) found (expected >= ${MIN_COMPOSITES}).`) + console.error(' The scan found almost nothing, which means the pattern changed or the scan broke.') + console.error(' Refusing to pass vacuously.') + process.exit(1) +} + +if (problems.length) { + console.error(`\nCOMPOSITE-SRCS: FAIL — ${problems.length} nested reference(s) do not resolve:`) + for (const p of problems) { + console.error(` ✗ ${p.bundle}/${p.vue}${p.src ? ` ${p.src}` : ''}`) + console.error(` ${p.why}`) + if (p.hint) console.error(` ${p.hint}`) + } + console.error( + '\n A composite nests its children by URL, and StackLayout swallows a failed section on purpose\n' + + ' (one broken child must not take down the stack). So a wrong path is NOT an error at runtime —\n' + + ' it is a silently EMPTY band in a green build. Fix the path, or the product ships missing a piece.' + ) + process.exit(1) +} + +console.log('COMPOSITE-SRCS: PASS — every nested src resolves and every nested tag is registered.') diff --git a/package.json b/package.json index 0bc04ebce..2f6eea567 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "check:public-hygiene": "node internal/public-hygiene-check.mjs", "check:label-joins": "node internal/check-label-joins.mjs", "check:dxlife": "node internal/check-dxlife-untouched.mjs", - "build:unlocked": "bun run check:template-literal && bun run clean && bun run token && for d in plugin-designs/*/; do BUNDLE=$(basename \"$d\") bun x vite build || exit 1; done && bun run tree && bun run check:drop && bun run check:parse && bun run verify && bun run check:sri && bun run check:public-hygiene && bun run check:label-joins && bun run check:descriptions && bun run check:no-abs-paths && bun run check:dep-names && bun run gallery", + "build:unlocked": "bun run check:template-literal && bun run clean && bun run token && for d in plugin-designs/*/; do BUNDLE=$(basename \"$d\") bun x vite build || exit 1; done && bun run tree && bun run check:drop && bun run check:parse && bun run verify && bun run check:sri && bun run check:public-hygiene && bun run check:label-joins && bun run check:descriptions && bun run check:no-abs-paths && bun run check:dep-names && bun run check:composite-srcs && bun run gallery", "check:template-literal": "node internal/template-literal-check.mjs", "verify:map-paint": "node internal/verify-map-paint.mjs", "check:sri": "node internal/sri-consistency-check.mjs", @@ -72,7 +72,8 @@ "verify:gate1": "node internal/acceptance/big-picture-acceptance.mjs # the Gate-1 chain end-to-end against LIVE data: header emits research-filter -> composite passes props down -> the REAL cap-2 grid re-filters -> count reflected back up. Asserts the NEGATIVE (a filter that must return 0 does) and RESET. Was an ORPHAN — present in internal/acceptance/ but invoked by NO script, so it could never report anything.", "check:descriptions": "node internal/check-profile-descriptions.mjs # every shipped profile must say what it is (reads the BUILT manifest)", "check:no-abs-paths": "node internal/check-no-absolute-paths.mjs # no /home/… or /Users/… in any TRACKED file (a clone must work on any machine)", - "check:dep-names": "node internal/check-dependency-names.mjs # every declared dep is a REAL package name (a rename once rewrote @capacitor/* and broke bun install in a clone)" + "check:dep-names": "node internal/check-dependency-names.mjs # every declared dep is a REAL package name (a rename once rewrote @capacitor/* and broke bun install in a clone)", + "check:composite-srcs": "node internal/check-composite-srcs.mjs" }, "devDependencies": { "@capacitor/android": "^7.6.9", diff --git a/plugin-designs/research-map-plus-grid/index.html b/plugin-designs/research-map-plus-grid/index.html new file mode 100644 index 000000000..21e3a89ba --- /dev/null +++ b/plugin-designs/research-map-plus-grid/index.html @@ -0,0 +1,41 @@ + + + + + + doxa-maps · research-map-plus-grid staging + + + + +
+

research-map-plus-grid · staging

+

Capability 4 — the monolithic doxa-research-map stacked above the + cap-2 people-groups-grid via the shared StackLayout. Scroll down through + both. This is the mobile sibling of dashboard-plus-grid; the SPA + chooses which one to show by aspect ratio. Embed + <research-map-plus-grid> anywhere.

+
+ +
+
+ + + + diff --git a/plugin-designs/research-map-plus-grid/index.js b/plugin-designs/research-map-plus-grid/index.js new file mode 100644 index 000000000..18130f949 --- /dev/null +++ b/plugin-designs/research-map-plus-grid/index.js @@ -0,0 +1,44 @@ +/** + * research-map-plus-grid / index.js — Bundle entry (Capability-4 nested-elements-mfe, COMPOSED variant). + * + * ONE folder -> ONE bundle -> ONE element: + * — stacks the doxa-research-map (cap-3) above the people-groups-grid + * (cap-2). THE MOBILE SIBLING of . + * + * Usage — direct-JS (method 3): + * + * + * + * ── WHY THIS ENTRY IS SMALL (and why that is correct here) ─────────────────── + * dashboard-plus-grid's entry must install Pinia + i18n itself, because that composite IMPORTS its + * children's .vue files directly and therefore bypasses their bundle entries — the appContext they + * would normally get has to be recreated by hand (BUG-VUE-I18N-CODE27). + * + * THIS composite does the opposite: it composes by TAG + BUNDLE URL through StackLayout, so each + * child is injected as its OWN built bundle and boots through its OWN index.js. That means + * doxa-research-map/index.js still runs — and with it the four things a direct .vue import would + * have silently dropped: registerStrategies() for its three bundle-private colour strategies, + * provide('profileModules') for the ProfileLoader mount, its own Pinia + i18n pair, and + * setRTLTextPlugin. Re-installing them here would be redundant at best and a second Pinia at worst. + * + * The root component itself only renders StackLayout and calls no useI18n(), so it needs no + * configureApp. Keep it that way: if this element ever grows chrome of its own that calls + * useI18n(), add the createPinia() + createAppI18n() + provide('appI18n') trio exactly as + * dashboard-plus-grid/index.js does — a thrown setup() removes the subtree with an EMPTY + * SyntaxError and NO build failure. + */ +import { defineCustomElement } from 'vue' +import ResearchMapPlusGrid from './research-map-plus-grid.vue' + +const ResearchMapPlusGridElement = defineCustomElement(ResearchMapPlusGrid) + +if (typeof customElements !== 'undefined') { + // One-shot-define safety: register ONLY this bundle's own tag, and only if free. The child tags + // (, ) are registered by THEIR bundles when StackLayout + // injects them — never re-register another bundle's tag here. + if (!customElements.get('research-map-plus-grid')) { + customElements.define('research-map-plus-grid', ResearchMapPlusGridElement) + } +} + +export default ResearchMapPlusGridElement diff --git a/plugin-designs/research-map-plus-grid/research-map-plus-grid.instances.json b/plugin-designs/research-map-plus-grid/research-map-plus-grid.instances.json new file mode 100644 index 000000000..c994dc68d --- /dev/null +++ b/plugin-designs/research-map-plus-grid/research-map-plus-grid.instances.json @@ -0,0 +1 @@ +{ "_comment": "One default instance.", "instances": [ { "id": "default", "label": "Research Map + Grid", "profileConfig": {} } ] } diff --git a/plugin-designs/research-map-plus-grid/research-map-plus-grid.meta.json b/plugin-designs/research-map-plus-grid/research-map-plus-grid.meta.json new file mode 100644 index 000000000..26f52799c --- /dev/null +++ b/plugin-designs/research-map-plus-grid/research-map-plus-grid.meta.json @@ -0,0 +1,6 @@ +{ + "_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 Driver's 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"], + "label": "Research Map + Grid (mobile composite, stacked to scroll)" +} diff --git a/plugin-designs/research-map-plus-grid/research-map-plus-grid.vue b/plugin-designs/research-map-plus-grid/research-map-plus-grid.vue new file mode 100644 index 000000000..e240eabf5 --- /dev/null +++ b/plugin-designs/research-map-plus-grid/research-map-plus-grid.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/public/.build.lock b/public/.build.lock index 0b10ff896..d59582331 100644 --- a/public/.build.lock +++ b/public/.build.lock @@ -1 +1 @@ -pid=1853029 started=2026-09-22T06:44:53Z by=lk10x +pid=2071820 started=2026-09-22T07:24:51Z by=lk10x diff --git a/public/doxa-maps/all-people-groups/index.html b/public/doxa-maps/all-people-groups/index.html index 3af1b11d5..962b2b2fe 100644 --- a/public/doxa-maps/all-people-groups/index.html +++ b/public/doxa-maps/all-people-groups/index.html @@ -130,7 +130,7 @@ header.top .sub { margin-top: 3px; font: 12px/1.4 var(--sans); color: var(--mut) + window.FORGE.manifest = {"schema":"doxa-maps-manifest@1","generatedFrom":"plugin-designs/*/*.vue","embedBase":".","bundleCount":19,"profileCount":28,"bundles":[{"bundle":"all-people-groups","scriptUrl":"./all-people-groups/all-people-groups.js","output":"doxa-maps/all-people-groups/all-people-groups.js","integrity":"sha384-ow6UD//vvtt8jD+CSsKeKm4oLZF6l0lYw94ro7it8ugZTrTudkDYjq/bjwOKK3Ku","elements":["all-people-groups"],"profiles":[{"profile":"all-people-groups","file":"all-people-groups.vue","description":"All 12,379 people groups (peoplegroups.org) in four colors — reached,","element":"all-people-groups","type":"single","isMap":true,"iframeUrl":"./all-people-groups/all-people-groups/index.html","scriptUrl":"./all-people-groups/all-people-groups.js","embed":{"iframe":"\u003ciframe src=\"./all-people-groups/all-people-groups/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./all-people-groups/all-people-groups.js\" integrity=\"sha384-ow6UD//vvtt8jD+CSsKeKm4oLZF6l0lYw94ro7it8ugZTrTudkDYjq/bjwOKK3Ku\" crossorigin=\"anonymous\">\u003c/script>\n\u003call-people-groups profile-config='{\"profile\":\"all-people-groups\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/all-people-groups>"},"bundle":"all-people-groups"}]}]}; + window.FORGE.manifest = {"schema":"doxa-maps-manifest@1","generatedFrom":"plugin-designs/*/*.vue","embedBase":".","bundleCount":19,"profileCount":28,"bundles":[{"bundle":"big-picture","scriptUrl":"./big-picture/big-picture.js","output":"doxa-maps/big-picture/big-picture.js","integrity":"sha384-soRngAClVe33aZ0x9qX5YGVjmOCWml6J6p7h6ZYAFgGI+fpWolApFo/Y3UZYlMBi","elements":["bp-big-picture","bp-research-header","people-groups-grid"],"profiles":[{"profile":"big-picture","file":"big-picture.vue","description":"The Cat-4 composite that PAIRS the two real capability elements of the","element":"bp-big-picture","type":"nested-elements-mfe","isMap":false,"iframeUrl":"./big-picture/big-picture/index.html","scriptUrl":"./big-picture/big-picture.js","embed":{"iframe":"\u003ciframe src=\"./big-picture/big-picture/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./big-picture/big-picture.js\" integrity=\"sha384-soRngAClVe33aZ0x9qX5YGVjmOCWml6J6p7h6ZYAFgGI+fpWolApFo/Y3UZYlMBi\" crossorigin=\"anonymous\">\u003c/script>\n\u003cbp-big-picture profile-config='{\"profile\":\"big-picture\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/bp-big-picture>"},"instances":[{"id":"big-picture","title":"Big Picture — research header ↔ people-groups grid (composite)","apiBaseUrl":"","props":{"profile":"big-picture","provider":"maplibre","instanceId":"bp-big-picture"},"element":"bp-big-picture","iframeUrl":"./big-picture/big-picture/big-picture/index.html","embed":{"iframe":"\u003ciframe src=\"./big-picture/big-picture/big-picture/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"frontier","title":"Big Picture — frontier accent","apiBaseUrl":"","props":{"profile":"big-picture","provider":"maplibre","instanceId":"bp-big-picture-frontier","accent":"#22d3ee","title":"Big Picture — Frontier Focus"},"element":"bp-big-picture","iframeUrl":"./big-picture/big-picture/frontier/index.html","embed":{"iframe":"\u003ciframe src=\"./big-picture/big-picture/frontier/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}],"bundle":"big-picture"}]}]}; + window.FORGE.manifest = {"schema":"doxa-maps-manifest@1","generatedFrom":"plugin-designs/*/*.vue","embedBase":".","bundleCount":19,"profileCount":28,"bundles":[{"bundle":"cities-internet","scriptUrl":"./cities-internet/cities-internet.js","output":"doxa-maps/cities-internet/cities-internet.js","integrity":"sha384-TxqECrIH9paOxCxEJOSIPPJ0iOGlOh/Dp01NQ9WcJQ6Gu5K2pB7IP2NXw6tqOTbS","elements":["cities-internet-map"],"profiles":[{"profile":"connectivity-list","file":"connectivity-list.vue","description":"Countries where DX people groups live, grouped by region, showing measured internet penetration","element":"cities-internet-map","type":"single","isMap":false,"iframeUrl":"./cities-internet/connectivity-list/index.html","scriptUrl":"./cities-internet/cities-internet.js","embed":{"iframe":"\u003ciframe src=\"./cities-internet/connectivity-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-TxqECrIH9paOxCxEJOSIPPJ0iOGlOh/Dp01NQ9WcJQ6Gu5K2pB7IP2NXw6tqOTbS\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccities-internet-map profile-config='{\"profile\":\"connectivity-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/cities-internet-map>"}},{"profile":"connectivity-map","file":"connectivity-map.vue","description":"Every country shaded by measured internet penetration, with its named carriers and dominant","element":"cities-internet-map","type":"single","isMap":true,"iframeUrl":"./cities-internet/connectivity-map/index.html","scriptUrl":"./cities-internet/cities-internet.js","embed":{"iframe":"\u003ciframe src=\"./cities-internet/connectivity-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-TxqECrIH9paOxCxEJOSIPPJ0iOGlOh/Dp01NQ9WcJQ6Gu5K2pB7IP2NXw6tqOTbS\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccities-internet-map profile-config='{\"profile\":\"connectivity-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/cities-internet-map>"}},{"profile":"data-tables","file":"data-tables.vue","description":"Four validated research tables, one tab each, with sortable and filterable columns, CSV and JSON","element":"cities-internet-map","type":"single","isMap":false,"iframeUrl":"./cities-internet/data-tables/index.html","scriptUrl":"./cities-internet/cities-internet.js","embed":{"iframe":"\u003ciframe src=\"./cities-internet/data-tables/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-TxqECrIH9paOxCxEJOSIPPJ0iOGlOh/Dp01NQ9WcJQ6Gu5K2pB7IP2NXw6tqOTbS\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccities-internet-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/cities-internet-map>"}}]}]}; + window.FORGE.manifest = {"schema":"doxa-maps-manifest@1","generatedFrom":"plugin-designs/*/*.vue","embedBase":".","bundleCount":19,"profileCount":28,"bundles":[{"bundle":"country-posters","scriptUrl":"./country-posters/country-posters.js","output":"doxa-maps/country-posters/country-posters.js","integrity":"sha384-W7C5dqO9Otokvs5+g+2BO/FIY0e//dqfciPCAZUkDRhF2iGY1+HhccCUFkSeavUU","elements":["country-posters-map"],"profiles":[{"profile":"countries-map","file":"countries-map.vue","description":"The researcher's workbench retargeted from people groups to COUNTRIES — region","element":"country-posters-map","type":"single","isMap":true,"iframeUrl":"./country-posters/countries-map/index.html","scriptUrl":"./country-posters/country-posters.js","embed":{"iframe":"\u003ciframe src=\"./country-posters/countries-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./country-posters/country-posters.js\" integrity=\"sha384-W7C5dqO9Otokvs5+g+2BO/FIY0e//dqfciPCAZUkDRhF2iGY1+HhccCUFkSeavUU\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccountry-posters-map profile-config='{\"profile\":\"countries-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/country-posters-map>"}},{"profile":"country-poster-wall","file":"country-poster-wall.vue","description":"One printable card per country, grouped into COLLAPSIBLE regional sections so the","element":"country-posters-map","type":"single","isMap":false,"iframeUrl":"./country-posters/country-poster-wall/index.html","scriptUrl":"./country-posters/country-posters.js","embed":{"iframe":"\u003ciframe src=\"./country-posters/country-poster-wall/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./country-posters/country-posters.js\" integrity=\"sha384-W7C5dqO9Otokvs5+g+2BO/FIY0e//dqfciPCAZUkDRhF2iGY1+HhccCUFkSeavUU\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccountry-posters-map profile-config='{\"profile\":\"country-poster-wall\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/country-posters-map>"}}]}]}; + window.FORGE.manifest = {"schema":"doxa-maps-manifest@1","generatedFrom":"plugin-designs/*/*.vue","embedBase":".","bundleCount":19,"profileCount":28,"bundles":[{"bundle":"demo-map","scriptUrl":"./demo-map/demo-map.js","output":"doxa-maps/demo-map/demo-map.js","integrity":"sha384-sNkrKqoXD+BS4MABLGB8THNMi3BRl+Wcazb7xoMqaowlGknoCQHF8pU1q7CtsfpT","elements":["demo-map"],"profiles":[{"profile":"demo-map","file":"demo-map.vue","description":"Simple two-tab demo map. Tab 1 colors pins by religion (shared","element":"demo-map","type":"parameterized","isMap":true,"iframeUrl":"./demo-map/demo-map/index.html","scriptUrl":"./demo-map/demo-map.js","embed":{"iframe":"\u003ciframe src=\"./demo-map/demo-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./demo-map/demo-map.js\" integrity=\"sha384-sNkrKqoXD+BS4MABLGB8THNMi3BRl+Wcazb7xoMqaowlGknoCQHF8pU1q7CtsfpT\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdemo-map profile-config='{\"profile\":\"demo-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/demo-map>"},"instances":[{"id":"maplibre","title":"Demo map — MapLibre (token-free)","apiBaseUrl":"","props":{"profile":"demo-map","provider":"maplibre","instanceId":"demo-maplibre"},"element":"demo-map","iframeUrl":"./demo-map/demo-map/maplibre/index.html","embed":{"iframe":"\u003ciframe src=\"./demo-map/demo-map/maplibre/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}],"bundle":"demo-map"}]}]}; + window.FORGE.manifest = {"schema":"doxa-maps-manifest@1","generatedFrom":"plugin-designs/*/*.vue","embedBase":".","bundleCount":19,"profileCount":28,"bundles":[{"bundle":"doxa-maps-spa","scriptUrl":"./doxa-maps-spa/doxa-maps-spa.js","output":"doxa-maps/doxa-maps-spa/doxa-maps-spa.js","integrity":"sha384-RZwhOAJ23jbKxK/lRCDOz7ggpDTuLcnY+BXl4n6R5KIE9QutGmFdqBJokVbgoduu","elements":["doxa-maps-spa"],"profiles":[{"profile":"doxa-maps-spa","file":"doxa-maps-spa.vue","description":"The DX-maps app itself: one element whose vertical-tab rail nests every other","element":"doxa-maps-spa","type":"nested-mfe-spa","isMap":false,"iframeUrl":"./doxa-maps-spa/doxa-maps-spa/index.html","scriptUrl":"./doxa-maps-spa/doxa-maps-spa.js","embed":{"iframe":"\u003ciframe src=\"./doxa-maps-spa/doxa-maps-spa/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./doxa-maps-spa/doxa-maps-spa.js\" integrity=\"sha384-RZwhOAJ23jbKxK/lRCDOz7ggpDTuLcnY+BXl4n6R5KIE9QutGmFdqBJokVbgoduu\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdoxa-maps-spa profile-config='{\"profile\":\"doxa-maps-spa\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/doxa-maps-spa>"},"instances":[{"id":"app","title":"DX-Maps SPA — Big Picture + every research map (app-shell)","apiBaseUrl":"","props":{"profile":"doxa-maps-spa","provider":"maplibre","instanceId":"doxa-maps-spa-app","title":"DX-Maps"},"element":"doxa-maps-spa","iframeUrl":"./doxa-maps-spa/doxa-maps-spa/app/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-maps-spa/doxa-maps-spa/app/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]}]}; + window.FORGE.manifest = {"schema":"doxa-maps-manifest@1","generatedFrom":"plugin-designs/*/*.vue","embedBase":".","bundleCount":19,"profileCount":28,"bundles":[{"bundle":"doxa-research-map","scriptUrl":"./doxa-research-map/doxa-research-map.js","output":"doxa-maps/doxa-research-map/doxa-research-map.js","integrity":"sha384-5I+d9O+m1RpzzM6S93o6lKRRtURUbFV+Pw4liNp0ontv/2mwm8yqD6UT2vBytNFY","elements":["doxa-research-map"],"profiles":[{"profile":"research-map","file":"research-map.vue","description":"The researcher's workbench: every piece a missiologist, demographer or","element":"doxa-research-map","type":"monolithic","isMap":true,"iframeUrl":"./doxa-research-map/research-map/index.html","scriptUrl":"./doxa-research-map/doxa-research-map.js","embed":{"iframe":"\u003ciframe src=\"./doxa-research-map/research-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./doxa-research-map/doxa-research-map.js\" integrity=\"sha384-5I+d9O+m1RpzzM6S93o6lKRRtURUbFV+Pw4liNp0ontv/2mwm8yqD6UT2vBytNFY\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdoxa-research-map profile-config='{\"profile\":\"research-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/doxa-research-map>"}}]}]}; + window.FORGE.manifest = {"schema":"doxa-maps-manifest@1","generatedFrom":"plugin-designs/*/*.vue","embedBase":".","bundleCount":19,"profileCount":28,"bundles":[{"bundle":"doxa-simple-map","scriptUrl":"./doxa-simple-map/doxa-simple-map.js","output":"doxa-maps/doxa-simple-map/doxa-simple-map.js","integrity":"sha384-qTaIz+Irs4qPFjmJqkNCYlI2/tiLO9f/9uDnpLbOPkXkCEbja6VxfyspfuuXh8Qy","elements":["doxa-map","doxa-simple-map"],"profiles":[{"profile":"doxa-simple-map","file":"doxa-simple-map.vue","description":"The simple world map, shipped as three presets off ONE prop table —","element":"doxa-map","type":"parameterized","isMap":true,"iframeUrl":"./doxa-simple-map/doxa-simple-map/index.html","scriptUrl":"./doxa-simple-map/doxa-simple-map.js","embed":{"iframe":"\u003ciframe src=\"./doxa-simple-map/doxa-simple-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./doxa-simple-map/doxa-simple-map.js\" integrity=\"sha384-qTaIz+Irs4qPFjmJqkNCYlI2/tiLO9f/9uDnpLbOPkXkCEbja6VxfyspfuuXh8Qy\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdoxa-map profile-config='{\"profile\":\"doxa-simple-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/doxa-map>"},"instances":[{"id":"prayer","title":"Prayer Map","apiBaseUrl":"https://pray.doxa.life","props":{"profile":"doxa-simple-map","instanceId":"embed-prayer","dataSource":"pray-tools","tabs":[{"id":"prayer","colorStrategy":"prayer","legend":"prayer","popup":"prayer"}]},"element":"doxa-map","iframeUrl":"./doxa-simple-map/doxa-simple-map/prayer/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-simple-map/doxa-simple-map/prayer/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"engagement","title":"Engagement Map","apiBaseUrl":"https://pray.doxa.life","props":{"profile":"doxa-simple-map","instanceId":"embed-engagement","dataSource":"pray-tools","tabs":[{"id":"engagement","colorStrategy":"engagement","legend":"engagement","popup":"engagement"}]},"element":"doxa-map","iframeUrl":"./doxa-simple-map/doxa-simple-map/engagement/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-simple-map/doxa-simple-map/engagement/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"adoption","title":"Adoption Map","apiBaseUrl":"https://pray.doxa.life","props":{"profile":"doxa-simple-map","instanceId":"embed-adoption","dataSource":"pray-tools","tabs":[{"id":"adoption","colorStrategy":"adoption","legend":"adoption","popup":"adoption"}]},"element":"doxa-map","iframeUrl":"./doxa-simple-map/doxa-simple-map/adoption/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-simple-map/doxa-simple-map/adoption/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]}]}; + window.FORGE.manifest = {"schema":"doxa-maps-manifest@1","generatedFrom":"plugin-designs/*/*.vue","embedBase":".","bundleCount":19,"profileCount":28,"bundles":[{"bundle":"doxa-vision-card","scriptUrl":"./doxa-vision-card/doxa-vision-card.js","output":"doxa-maps/doxa-vision-card/doxa-vision-card.js","integrity":"sha384-2mza3cltN5LQQIrlENG/IVL6Icd9zzcFve3E8R8VWuCdYOGW9uGKFvxcbu6eFfwn","elements":["doxa-vision-card"],"profiles":[{"profile":"doxa-vision-card","file":"doxa-vision-card.vue","description":"The Capability-1 example: ONE folder -> ONE bundle -> ONE element.","element":"doxa-vision-card","type":"parameterized","isMap":false,"iframeUrl":"./doxa-vision-card/doxa-vision-card/index.html","scriptUrl":"./doxa-vision-card/doxa-vision-card.js","embed":{"iframe":"\u003ciframe src=\"./doxa-vision-card/doxa-vision-card/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./doxa-vision-card/doxa-vision-card.js\" integrity=\"sha384-2mza3cltN5LQQIrlENG/IVL6Icd9zzcFve3E8R8VWuCdYOGW9uGKFvxcbu6eFfwn\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdoxa-vision-card profile-config='{\"profile\":\"doxa-vision-card\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/doxa-vision-card>"},"instances":[{"id":"default","title":"Vision card — reach at a glance","apiBaseUrl":"","props":{"profile":"doxa-vision-card","provider":"maplibre","instanceId":"vision-card-default"},"element":"doxa-vision-card","iframeUrl":"./doxa-vision-card/doxa-vision-card/default/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-vision-card/doxa-vision-card/default/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"frontier","title":"Vision card — frontier accent","apiBaseUrl":"","props":{"profile":"doxa-vision-card","provider":"maplibre","instanceId":"vision-card-frontier","accent":"#22d3ee","title":"The last frontier of the gospel.","tagline":"Frontier people groups — where fewer than one in a thousand follow Jesus.","stats":[{"value":"1,910","label":"Frontier groups","note":"under 0.1% believers"},{"value":"2.1B","label":"People","note":"living in frontier settings"},{"value":"0.1%","label":"Christian","note":"or fewer, in each group"}]},"element":"doxa-vision-card","iframeUrl":"./doxa-vision-card/doxa-vision-card/frontier/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-vision-card/doxa-vision-card/frontier/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}],"bundle":"doxa-vision-card"}]}]}; + window.FORGE.manifest = {"schema":"doxa-maps-manifest@1","generatedFrom":"plugin-designs/*/*.vue","embedBase":".","bundleCount":19,"profileCount":28,"bundles":[{"bundle":"gospel-resources","scriptUrl":"./gospel-resources/gospel-resources.js","output":"doxa-maps/gospel-resources/gospel-resources.js","integrity":"sha384-AyMRDqYNDLShkHxHQAWRlGIPRlnfmG1S565v8hz+mCbGxQuc6WqRDiweBUTk86VI","elements":["gospel-resources-map"],"profiles":[{"profile":"charts","file":"charts.vue","description":"The gap by LANGUAGE (ISO 639-3) rather than by people group — because one translation serves every","element":"gospel-resources-map","type":"single","isMap":false,"iframeUrl":"./gospel-resources/charts/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/charts/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-AyMRDqYNDLShkHxHQAWRlGIPRlnfmG1S565v8hz+mCbGxQuc6WqRDiweBUTk86VI\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"charts\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}},{"profile":"data-tables","file":"data-tables.vue","description":"Two validated tables: what resources exist per people group, and whether that access is keeping","element":"gospel-resources-map","type":"single","isMap":false,"iframeUrl":"./gospel-resources/data-tables/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/data-tables/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-AyMRDqYNDLShkHxHQAWRlGIPRlnfmG1S565v8hz+mCbGxQuc6WqRDiweBUTk86VI\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}},{"profile":"resources-list","file":"resources-list.vue","description":"Which DX people groups have scripture in their own language, and which have none. The zero-resource","element":"gospel-resources-map","type":"single","isMap":false,"iframeUrl":"./gospel-resources/resources-list/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/resources-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-AyMRDqYNDLShkHxHQAWRlGIPRlnfmG1S565v8hz+mCbGxQuc6WqRDiweBUTk86VI\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"resources-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}},{"profile":"resources-map","file":"resources-map.vue","description":"Every country shaded by how much of its unengaged population has NO gospel resource in their own","element":"gospel-resources-map","type":"single","isMap":true,"iframeUrl":"./gospel-resources/resources-map/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/resources-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-AyMRDqYNDLShkHxHQAWRlGIPRlnfmG1S565v8hz+mCbGxQuc6WqRDiweBUTk86VI\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"resources-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}}]}]}; + window.FORGE.manifest = {"schema":"doxa-maps-manifest@1","generatedFrom":"plugin-designs/*/*.vue","embedBase":".","bundleCount":19,"profileCount":28,"bundles":[{"bundle":"all-people-groups","scriptUrl":"./all-people-groups/all-people-groups.js","output":"doxa-maps/all-people-groups/all-people-groups.js","integrity":"sha384-ow6UD//vvtt8jD+CSsKeKm4oLZF6l0lYw94ro7it8ugZTrTudkDYjq/bjwOKK3Ku","elements":["all-people-groups"],"profiles":[{"profile":"all-people-groups","file":"all-people-groups.vue","description":"All 12,379 people groups (peoplegroups.org) in four colors — reached,","element":"all-people-groups","type":"single","isMap":true,"iframeUrl":"./all-people-groups/all-people-groups/index.html","scriptUrl":"./all-people-groups/all-people-groups.js","embed":{"iframe":"\u003ciframe src=\"./all-people-groups/all-people-groups/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./all-people-groups/all-people-groups.js\" integrity=\"sha384-ow6UD//vvtt8jD+CSsKeKm4oLZF6l0lYw94ro7it8ugZTrTudkDYjq/bjwOKK3Ku\" crossorigin=\"anonymous\">\u003c/script>\n\u003call-people-groups profile-config='{\"profile\":\"all-people-groups\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/all-people-groups>"},"bundle":"all-people-groups"}]},{"bundle":"big-picture","scriptUrl":"./big-picture/big-picture.js","output":"doxa-maps/big-picture/big-picture.js","integrity":"sha384-soRngAClVe33aZ0x9qX5YGVjmOCWml6J6p7h6ZYAFgGI+fpWolApFo/Y3UZYlMBi","elements":["bp-big-picture","bp-research-header","people-groups-grid"],"profiles":[{"profile":"big-picture","file":"big-picture.vue","description":"The Cat-4 composite that PAIRS the two real capability elements of the","element":"bp-big-picture","type":"nested-elements-mfe","isMap":false,"iframeUrl":"./big-picture/big-picture/index.html","scriptUrl":"./big-picture/big-picture.js","embed":{"iframe":"\u003ciframe src=\"./big-picture/big-picture/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./big-picture/big-picture.js\" integrity=\"sha384-soRngAClVe33aZ0x9qX5YGVjmOCWml6J6p7h6ZYAFgGI+fpWolApFo/Y3UZYlMBi\" crossorigin=\"anonymous\">\u003c/script>\n\u003cbp-big-picture profile-config='{\"profile\":\"big-picture\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/bp-big-picture>"},"instances":[{"id":"big-picture","title":"Big Picture — research header ↔ people-groups grid (composite)","apiBaseUrl":"","props":{"profile":"big-picture","provider":"maplibre","instanceId":"bp-big-picture"},"element":"bp-big-picture","iframeUrl":"./big-picture/big-picture/big-picture/index.html","embed":{"iframe":"\u003ciframe src=\"./big-picture/big-picture/big-picture/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"frontier","title":"Big Picture — frontier accent","apiBaseUrl":"","props":{"profile":"big-picture","provider":"maplibre","instanceId":"bp-big-picture-frontier","accent":"#22d3ee","title":"Big Picture — Frontier Focus"},"element":"bp-big-picture","iframeUrl":"./big-picture/big-picture/frontier/index.html","embed":{"iframe":"\u003ciframe src=\"./big-picture/big-picture/frontier/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}],"bundle":"big-picture"}]},{"bundle":"cities-internet","scriptUrl":"./cities-internet/cities-internet.js","output":"doxa-maps/cities-internet/cities-internet.js","integrity":"sha384-TxqECrIH9paOxCxEJOSIPPJ0iOGlOh/Dp01NQ9WcJQ6Gu5K2pB7IP2NXw6tqOTbS","elements":["cities-internet-map"],"profiles":[{"profile":"connectivity-list","file":"connectivity-list.vue","description":"Countries where DX people groups live, grouped by region, showing measured internet penetration","element":"cities-internet-map","type":"single","isMap":false,"iframeUrl":"./cities-internet/connectivity-list/index.html","scriptUrl":"./cities-internet/cities-internet.js","embed":{"iframe":"\u003ciframe src=\"./cities-internet/connectivity-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-TxqECrIH9paOxCxEJOSIPPJ0iOGlOh/Dp01NQ9WcJQ6Gu5K2pB7IP2NXw6tqOTbS\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccities-internet-map profile-config='{\"profile\":\"connectivity-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/cities-internet-map>"}},{"profile":"connectivity-map","file":"connectivity-map.vue","description":"Every country shaded by measured internet penetration, with its named carriers and dominant","element":"cities-internet-map","type":"single","isMap":true,"iframeUrl":"./cities-internet/connectivity-map/index.html","scriptUrl":"./cities-internet/cities-internet.js","embed":{"iframe":"\u003ciframe src=\"./cities-internet/connectivity-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-TxqECrIH9paOxCxEJOSIPPJ0iOGlOh/Dp01NQ9WcJQ6Gu5K2pB7IP2NXw6tqOTbS\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccities-internet-map profile-config='{\"profile\":\"connectivity-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/cities-internet-map>"}},{"profile":"data-tables","file":"data-tables.vue","description":"Four validated research tables, one tab each, with sortable and filterable columns, CSV and JSON","element":"cities-internet-map","type":"single","isMap":false,"iframeUrl":"./cities-internet/data-tables/index.html","scriptUrl":"./cities-internet/cities-internet.js","embed":{"iframe":"\u003ciframe src=\"./cities-internet/data-tables/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./cities-internet/cities-internet.js\" integrity=\"sha384-TxqECrIH9paOxCxEJOSIPPJ0iOGlOh/Dp01NQ9WcJQ6Gu5K2pB7IP2NXw6tqOTbS\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccities-internet-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/cities-internet-map>"}}]},{"bundle":"country-posters","scriptUrl":"./country-posters/country-posters.js","output":"doxa-maps/country-posters/country-posters.js","integrity":"sha384-W7C5dqO9Otokvs5+g+2BO/FIY0e//dqfciPCAZUkDRhF2iGY1+HhccCUFkSeavUU","elements":["country-posters-map"],"profiles":[{"profile":"countries-map","file":"countries-map.vue","description":"The researcher's workbench retargeted from people groups to COUNTRIES — region","element":"country-posters-map","type":"single","isMap":true,"iframeUrl":"./country-posters/countries-map/index.html","scriptUrl":"./country-posters/country-posters.js","embed":{"iframe":"\u003ciframe src=\"./country-posters/countries-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./country-posters/country-posters.js\" integrity=\"sha384-W7C5dqO9Otokvs5+g+2BO/FIY0e//dqfciPCAZUkDRhF2iGY1+HhccCUFkSeavUU\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccountry-posters-map profile-config='{\"profile\":\"countries-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/country-posters-map>"}},{"profile":"country-poster-wall","file":"country-poster-wall.vue","description":"One printable card per country, grouped into COLLAPSIBLE regional sections so the","element":"country-posters-map","type":"single","isMap":false,"iframeUrl":"./country-posters/country-poster-wall/index.html","scriptUrl":"./country-posters/country-posters.js","embed":{"iframe":"\u003ciframe src=\"./country-posters/country-poster-wall/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./country-posters/country-posters.js\" integrity=\"sha384-W7C5dqO9Otokvs5+g+2BO/FIY0e//dqfciPCAZUkDRhF2iGY1+HhccCUFkSeavUU\" crossorigin=\"anonymous\">\u003c/script>\n\u003ccountry-posters-map profile-config='{\"profile\":\"country-poster-wall\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/country-posters-map>"}}]},{"bundle":"dashboard-plus-grid","scriptUrl":"./dashboard-plus-grid/dashboard-plus-grid.js","output":"doxa-maps/dashboard-plus-grid/dashboard-plus-grid.js","integrity":"sha384-6ddhxxFtnLUrWWS01UXWoEcLdQdu+hisMNf/Au4tR97VIwPUhRxfA6h7bKX8JXq9","elements":["dashboard-plus-grid"],"profiles":[{"profile":"dashboard-plus-grid","file":"dashboard-plus-grid.vue","description":"Both children are IMPORTED DIRECTLY (compiled into this ONE bundle — no runtime bundle","element":"dashboard-plus-grid","type":"nested-elements-mfe","isMap":true,"iframeUrl":"./dashboard-plus-grid/dashboard-plus-grid/index.html","scriptUrl":"./dashboard-plus-grid/dashboard-plus-grid.js","embed":{"iframe":"\u003ciframe src=\"./dashboard-plus-grid/dashboard-plus-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-6ddhxxFtnLUrWWS01UXWoEcLdQdu+hisMNf/Au4tR97VIwPUhRxfA6h7bKX8JXq9\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/dashboard-plus-grid>"},"instances":[{"id":"default","title":"default","apiBaseUrl":"","props":{"profile":"dashboard-plus-grid"},"element":"dashboard-plus-grid","iframeUrl":"./dashboard-plus-grid/dashboard-plus-grid/default/index.html","embed":{"iframe":"\u003ciframe src=\"./dashboard-plus-grid/dashboard-plus-grid/default/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"demo-map","scriptUrl":"./demo-map/demo-map.js","output":"doxa-maps/demo-map/demo-map.js","integrity":"sha384-sNkrKqoXD+BS4MABLGB8THNMi3BRl+Wcazb7xoMqaowlGknoCQHF8pU1q7CtsfpT","elements":["demo-map"],"profiles":[{"profile":"demo-map","file":"demo-map.vue","description":"Simple two-tab demo map. Tab 1 colors pins by religion (shared","element":"demo-map","type":"parameterized","isMap":true,"iframeUrl":"./demo-map/demo-map/index.html","scriptUrl":"./demo-map/demo-map.js","embed":{"iframe":"\u003ciframe src=\"./demo-map/demo-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./demo-map/demo-map.js\" integrity=\"sha384-sNkrKqoXD+BS4MABLGB8THNMi3BRl+Wcazb7xoMqaowlGknoCQHF8pU1q7CtsfpT\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdemo-map profile-config='{\"profile\":\"demo-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/demo-map>"},"instances":[{"id":"maplibre","title":"Demo map — MapLibre (token-free)","apiBaseUrl":"","props":{"profile":"demo-map","provider":"maplibre","instanceId":"demo-maplibre"},"element":"demo-map","iframeUrl":"./demo-map/demo-map/maplibre/index.html","embed":{"iframe":"\u003ciframe src=\"./demo-map/demo-map/maplibre/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}],"bundle":"demo-map"}]},{"bundle":"doxa-maps-spa","scriptUrl":"./doxa-maps-spa/doxa-maps-spa.js","output":"doxa-maps/doxa-maps-spa/doxa-maps-spa.js","integrity":"sha384-RZwhOAJ23jbKxK/lRCDOz7ggpDTuLcnY+BXl4n6R5KIE9QutGmFdqBJokVbgoduu","elements":["doxa-maps-spa"],"profiles":[{"profile":"doxa-maps-spa","file":"doxa-maps-spa.vue","description":"The DX-maps app itself: one element whose vertical-tab rail nests every other","element":"doxa-maps-spa","type":"nested-mfe-spa","isMap":false,"iframeUrl":"./doxa-maps-spa/doxa-maps-spa/index.html","scriptUrl":"./doxa-maps-spa/doxa-maps-spa.js","embed":{"iframe":"\u003ciframe src=\"./doxa-maps-spa/doxa-maps-spa/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./doxa-maps-spa/doxa-maps-spa.js\" integrity=\"sha384-RZwhOAJ23jbKxK/lRCDOz7ggpDTuLcnY+BXl4n6R5KIE9QutGmFdqBJokVbgoduu\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdoxa-maps-spa profile-config='{\"profile\":\"doxa-maps-spa\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/doxa-maps-spa>"},"instances":[{"id":"app","title":"DX-Maps SPA — Big Picture + every research map (app-shell)","apiBaseUrl":"","props":{"profile":"doxa-maps-spa","provider":"maplibre","instanceId":"doxa-maps-spa-app","title":"DX-Maps"},"element":"doxa-maps-spa","iframeUrl":"./doxa-maps-spa/doxa-maps-spa/app/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-maps-spa/doxa-maps-spa/app/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"doxa-research-map","scriptUrl":"./doxa-research-map/doxa-research-map.js","output":"doxa-maps/doxa-research-map/doxa-research-map.js","integrity":"sha384-5I+d9O+m1RpzzM6S93o6lKRRtURUbFV+Pw4liNp0ontv/2mwm8yqD6UT2vBytNFY","elements":["doxa-research-map"],"profiles":[{"profile":"research-map","file":"research-map.vue","description":"The researcher's workbench: every piece a missiologist, demographer or","element":"doxa-research-map","type":"monolithic","isMap":true,"iframeUrl":"./doxa-research-map/research-map/index.html","scriptUrl":"./doxa-research-map/doxa-research-map.js","embed":{"iframe":"\u003ciframe src=\"./doxa-research-map/research-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./doxa-research-map/doxa-research-map.js\" integrity=\"sha384-5I+d9O+m1RpzzM6S93o6lKRRtURUbFV+Pw4liNp0ontv/2mwm8yqD6UT2vBytNFY\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdoxa-research-map profile-config='{\"profile\":\"research-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/doxa-research-map>"}}]},{"bundle":"doxa-simple-map","scriptUrl":"./doxa-simple-map/doxa-simple-map.js","output":"doxa-maps/doxa-simple-map/doxa-simple-map.js","integrity":"sha384-qTaIz+Irs4qPFjmJqkNCYlI2/tiLO9f/9uDnpLbOPkXkCEbja6VxfyspfuuXh8Qy","elements":["doxa-map","doxa-simple-map"],"profiles":[{"profile":"doxa-simple-map","file":"doxa-simple-map.vue","description":"The simple world map, shipped as three presets off ONE prop table —","element":"doxa-map","type":"parameterized","isMap":true,"iframeUrl":"./doxa-simple-map/doxa-simple-map/index.html","scriptUrl":"./doxa-simple-map/doxa-simple-map.js","embed":{"iframe":"\u003ciframe src=\"./doxa-simple-map/doxa-simple-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./doxa-simple-map/doxa-simple-map.js\" integrity=\"sha384-qTaIz+Irs4qPFjmJqkNCYlI2/tiLO9f/9uDnpLbOPkXkCEbja6VxfyspfuuXh8Qy\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdoxa-map profile-config='{\"profile\":\"doxa-simple-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/doxa-map>"},"instances":[{"id":"prayer","title":"Prayer Map","apiBaseUrl":"https://pray.doxa.life","props":{"profile":"doxa-simple-map","instanceId":"embed-prayer","dataSource":"pray-tools","tabs":[{"id":"prayer","colorStrategy":"prayer","legend":"prayer","popup":"prayer"}]},"element":"doxa-map","iframeUrl":"./doxa-simple-map/doxa-simple-map/prayer/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-simple-map/doxa-simple-map/prayer/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"engagement","title":"Engagement Map","apiBaseUrl":"https://pray.doxa.life","props":{"profile":"doxa-simple-map","instanceId":"embed-engagement","dataSource":"pray-tools","tabs":[{"id":"engagement","colorStrategy":"engagement","legend":"engagement","popup":"engagement"}]},"element":"doxa-map","iframeUrl":"./doxa-simple-map/doxa-simple-map/engagement/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-simple-map/doxa-simple-map/engagement/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"adoption","title":"Adoption Map","apiBaseUrl":"https://pray.doxa.life","props":{"profile":"doxa-simple-map","instanceId":"embed-adoption","dataSource":"pray-tools","tabs":[{"id":"adoption","colorStrategy":"adoption","legend":"adoption","popup":"adoption"}]},"element":"doxa-map","iframeUrl":"./doxa-simple-map/doxa-simple-map/adoption/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-simple-map/doxa-simple-map/adoption/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"doxa-vision-card","scriptUrl":"./doxa-vision-card/doxa-vision-card.js","output":"doxa-maps/doxa-vision-card/doxa-vision-card.js","integrity":"sha384-2mza3cltN5LQQIrlENG/IVL6Icd9zzcFve3E8R8VWuCdYOGW9uGKFvxcbu6eFfwn","elements":["doxa-vision-card"],"profiles":[{"profile":"doxa-vision-card","file":"doxa-vision-card.vue","description":"The Capability-1 example: ONE folder -> ONE bundle -> ONE element.","element":"doxa-vision-card","type":"parameterized","isMap":false,"iframeUrl":"./doxa-vision-card/doxa-vision-card/index.html","scriptUrl":"./doxa-vision-card/doxa-vision-card.js","embed":{"iframe":"\u003ciframe src=\"./doxa-vision-card/doxa-vision-card/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./doxa-vision-card/doxa-vision-card.js\" integrity=\"sha384-2mza3cltN5LQQIrlENG/IVL6Icd9zzcFve3E8R8VWuCdYOGW9uGKFvxcbu6eFfwn\" crossorigin=\"anonymous\">\u003c/script>\n\u003cdoxa-vision-card profile-config='{\"profile\":\"doxa-vision-card\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/doxa-vision-card>"},"instances":[{"id":"default","title":"Vision card — reach at a glance","apiBaseUrl":"","props":{"profile":"doxa-vision-card","provider":"maplibre","instanceId":"vision-card-default"},"element":"doxa-vision-card","iframeUrl":"./doxa-vision-card/doxa-vision-card/default/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-vision-card/doxa-vision-card/default/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"frontier","title":"Vision card — frontier accent","apiBaseUrl":"","props":{"profile":"doxa-vision-card","provider":"maplibre","instanceId":"vision-card-frontier","accent":"#22d3ee","title":"The last frontier of the gospel.","tagline":"Frontier people groups — where fewer than one in a thousand follow Jesus.","stats":[{"value":"1,910","label":"Frontier groups","note":"under 0.1% believers"},{"value":"2.1B","label":"People","note":"living in frontier settings"},{"value":"0.1%","label":"Christian","note":"or fewer, in each group"}]},"element":"doxa-vision-card","iframeUrl":"./doxa-vision-card/doxa-vision-card/frontier/index.html","embed":{"iframe":"\u003ciframe src=\"./doxa-vision-card/doxa-vision-card/frontier/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}],"bundle":"doxa-vision-card"}]},{"bundle":"golden-path-check","scriptUrl":"./golden-path-check/golden-path-check.js","output":"doxa-maps/golden-path-check/golden-path-check.js","integrity":"sha384-1V/sT5SkV0U9yTCK9ELIOFfU1ZIJkInIF6nG3UllJ4dxax3RsEAupSGLJEFK6e14","elements":["golden-path-check"],"profiles":[{"profile":"golden-path-check","file":"golden-path-check.vue","description":"A live self-test of the develop-a-plugin-and-see-it-live path: it reads the built","element":"golden-path-check","type":"single","isMap":false,"iframeUrl":"./golden-path-check/golden-path-check/index.html","scriptUrl":"./golden-path-check/golden-path-check.js","embed":{"iframe":"\u003ciframe src=\"./golden-path-check/golden-path-check/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./golden-path-check/golden-path-check.js\" integrity=\"sha384-1V/sT5SkV0U9yTCK9ELIOFfU1ZIJkInIF6nG3UllJ4dxax3RsEAupSGLJEFK6e14\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgolden-path-check profile-config='{\"profile\":\"golden-path-check\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/golden-path-check>"}}]},{"bundle":"gospel-resources","scriptUrl":"./gospel-resources/gospel-resources.js","output":"doxa-maps/gospel-resources/gospel-resources.js","integrity":"sha384-AyMRDqYNDLShkHxHQAWRlGIPRlnfmG1S565v8hz+mCbGxQuc6WqRDiweBUTk86VI","elements":["gospel-resources-map"],"profiles":[{"profile":"charts","file":"charts.vue","description":"The gap by LANGUAGE (ISO 639-3) rather than by people group — because one translation serves every","element":"gospel-resources-map","type":"single","isMap":false,"iframeUrl":"./gospel-resources/charts/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/charts/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-AyMRDqYNDLShkHxHQAWRlGIPRlnfmG1S565v8hz+mCbGxQuc6WqRDiweBUTk86VI\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"charts\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}},{"profile":"data-tables","file":"data-tables.vue","description":"Two validated tables: what resources exist per people group, and whether that access is keeping","element":"gospel-resources-map","type":"single","isMap":false,"iframeUrl":"./gospel-resources/data-tables/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/data-tables/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-AyMRDqYNDLShkHxHQAWRlGIPRlnfmG1S565v8hz+mCbGxQuc6WqRDiweBUTk86VI\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}},{"profile":"resources-list","file":"resources-list.vue","description":"Which DX people groups have scripture in their own language, and which have none. The zero-resource","element":"gospel-resources-map","type":"single","isMap":false,"iframeUrl":"./gospel-resources/resources-list/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/resources-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-AyMRDqYNDLShkHxHQAWRlGIPRlnfmG1S565v8hz+mCbGxQuc6WqRDiweBUTk86VI\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"resources-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}},{"profile":"resources-map","file":"resources-map.vue","description":"Every country shaded by how much of its unengaged population has NO gospel resource in their own","element":"gospel-resources-map","type":"single","isMap":true,"iframeUrl":"./gospel-resources/resources-map/index.html","scriptUrl":"./gospel-resources/gospel-resources.js","embed":{"iframe":"\u003ciframe src=\"./gospel-resources/resources-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-AyMRDqYNDLShkHxHQAWRlGIPRlnfmG1S565v8hz+mCbGxQuc6WqRDiweBUTk86VI\" crossorigin=\"anonymous\">\u003c/script>\n\u003cgospel-resources-map profile-config='{\"profile\":\"resources-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/gospel-resources-map>"}}]},{"bundle":"my-upg-100-list","scriptUrl":"./my-upg-100-list/my-upg-100-list.js","output":"doxa-maps/my-upg-100-list/my-upg-100-list.js","integrity":"sha384-kp9nHCASuuYGJTAlEJ4gHkCUr9YrbLOHweqkWiyngdBAaDmVsUtOjafvDSBmUSZI","elements":["my-upg-100-list-map"],"profiles":[{"profile":"poster-wall","file":"poster-wall.vue","description":"A wall of printable poster cards, one per 100-list entry, each with a \"Show on map\" action that","element":"my-upg-100-list-map","type":"single","isMap":true,"iframeUrl":"./my-upg-100-list/poster-wall/index.html","scriptUrl":"./my-upg-100-list/my-upg-100-list.js","embed":{"iframe":"\u003ciframe src=\"./my-upg-100-list/poster-wall/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-kp9nHCASuuYGJTAlEJ4gHkCUr9YrbLOHweqkWiyngdBAaDmVsUtOjafvDSBmUSZI\" crossorigin=\"anonymous\">\u003c/script>\n\u003cmy-upg-100-list-map profile-config='{\"profile\":\"poster-wall\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/my-upg-100-list-map>"}},{"profile":"upg-100-list","file":"upg-100-list.vue","description":"A personal unreached-people-groups list painted as true boundary polygons —","element":"my-upg-100-list-map","type":"single","isMap":true,"iframeUrl":"./my-upg-100-list/upg-100-list/index.html","scriptUrl":"./my-upg-100-list/my-upg-100-list.js","embed":{"iframe":"\u003ciframe src=\"./my-upg-100-list/upg-100-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-kp9nHCASuuYGJTAlEJ4gHkCUr9YrbLOHweqkWiyngdBAaDmVsUtOjafvDSBmUSZI\" crossorigin=\"anonymous\">\u003c/script>\n\u003cmy-upg-100-list-map profile-config='{\"profile\":\"upg-100-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/my-upg-100-list-map>"}},{"profile":"upg-100-mfe","file":"upg-100-mfe.vue","description":"The standalone, shareable and embeddable composite of the my-upg-100-list family — it nests the map","element":"my-upg-100-list-map","type":"nested-elements-mfe","isMap":true,"iframeUrl":"./my-upg-100-list/upg-100-mfe/index.html","scriptUrl":"./my-upg-100-list/my-upg-100-list.js","embed":{"iframe":"\u003ciframe src=\"./my-upg-100-list/upg-100-mfe/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-kp9nHCASuuYGJTAlEJ4gHkCUr9YrbLOHweqkWiyngdBAaDmVsUtOjafvDSBmUSZI\" crossorigin=\"anonymous\">\u003c/script>\n\u003cmy-upg-100-list-map profile-config='{\"profile\":\"upg-100-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/my-upg-100-list-map>"}}]},{"bundle":"people-groups-grid","scriptUrl":"./people-groups-grid/people-groups-grid.js","output":"doxa-maps/people-groups-grid/people-groups-grid.js","integrity":"sha384-JCol/vri0hsYL5ziRSlphv7jLoyhu5ZS5Ll1gREPmX0gs4zw1jmLpdIVbxqAAMie","elements":["people-groups-grid"],"profiles":[{"profile":"people-groups-grid","file":"people-groups-grid.vue","description":"The people-groups grid as an owned custom element: card list, search and four","element":"people-groups-grid","type":"parameterized","isMap":false,"iframeUrl":"./people-groups-grid/people-groups-grid/index.html","scriptUrl":"./people-groups-grid/people-groups-grid.js","embed":{"iframe":"\u003ciframe src=\"./people-groups-grid/people-groups-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./people-groups-grid/people-groups-grid.js\" integrity=\"sha384-JCol/vri0hsYL5ziRSlphv7jLoyhu5ZS5Ll1gREPmX0gs4zw1jmLpdIVbxqAAMie\" crossorigin=\"anonymous\">\u003c/script>\n\u003cpeople-groups-grid profile-config='{\"profile\":\"people-groups-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/people-groups-grid>"},"instances":[{"id":"people-groups-grid","title":"People Groups Grid — standalone (own search + 4 dropdowns)","apiBaseUrl":"","props":{"profile":"people-groups-grid","provider":"maplibre","instanceId":"people-groups-grid","pray-base-url":"https://pray.doxa.life"},"element":"people-groups-grid","iframeUrl":"./people-groups-grid/people-groups-grid/people-groups-grid/index.html","embed":{"iframe":"\u003ciframe src=\"./people-groups-grid/people-groups-grid/people-groups-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"driven","title":"People Groups Grid — externally driven (controls off, props/events)","apiBaseUrl":"","props":{"profile":"people-groups-grid","provider":"maplibre","instanceId":"people-groups-grid-driven","pray-base-url":"https://pray.doxa.life","show-search":"false","show-filters":"false"},"element":"people-groups-grid","iframeUrl":"./people-groups-grid/people-groups-grid/driven/index.html","embed":{"iframe":"\u003ciframe src=\"./people-groups-grid/people-groups-grid/driven/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"plugin-studio","scriptUrl":"./plugin-studio/plugin-studio.js","output":"doxa-maps/plugin-studio/plugin-studio.js","integrity":"sha384-TgQEX+LPYUYcF1PcPli9N3VH1sNm9P+1SOv+EkbGBBYjcXYA6xYjJ4UPaB+1HCHU","elements":["plugin-studio"],"profiles":[{"profile":"plugin-studio","file":"plugin-studio.vue","description":"The developer's viewing surface: a sidebar that is the composability ladder","element":"plugin-studio","type":"nested-mfe-spa","isMap":false,"iframeUrl":"./plugin-studio/plugin-studio/index.html","scriptUrl":"./plugin-studio/plugin-studio.js","embed":{"iframe":"\u003ciframe src=\"./plugin-studio/plugin-studio/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./plugin-studio/plugin-studio.js\" integrity=\"sha384-TgQEX+LPYUYcF1PcPli9N3VH1sNm9P+1SOv+EkbGBBYjcXYA6xYjJ4UPaB+1HCHU\" crossorigin=\"anonymous\">\u003c/script>\n\u003cplugin-studio profile-config='{\"profile\":\"plugin-studio\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/plugin-studio>"},"instances":[{"id":"studio","title":"Plugin Studio — every element by capability 5 -> 1 (developer studio)","apiBaseUrl":"","props":{"profile":"plugin-studio","provider":"maplibre","instanceId":"plugin-studio","title":"Plugin Studio"},"element":"plugin-studio","iframeUrl":"./plugin-studio/plugin-studio/studio/index.html","embed":{"iframe":"\u003ciframe src=\"./plugin-studio/plugin-studio/studio/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"research-dashboard","scriptUrl":"./research-dashboard/research-dashboard.js","output":"doxa-maps/research-dashboard/research-dashboard.js","integrity":"sha384-/gLHxNST0ho6G2xtCoWryUdyrljQWBsR1VfXRS5QEHGpW9UuTLSM+HAXT7pbg5NB","elements":["research-dashboard-map"],"profiles":[{"profile":"research-dashboard","file":"research-dashboard.vue","description":"Coordinated-Multiple-Views research dashboard for 10/40-window UPGs (live pray.doxa.life): docked facet rail + map-as-hero + linked table/charts, brushing-and-linking over one in-memory store.","element":"research-dashboard-map","type":"monolithic","isMap":true,"iframeUrl":"./research-dashboard/research-dashboard/index.html","scriptUrl":"./research-dashboard/research-dashboard.js","embed":{"iframe":"\u003ciframe src=\"./research-dashboard/research-dashboard/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./research-dashboard/research-dashboard.js\" integrity=\"sha384-/gLHxNST0ho6G2xtCoWryUdyrljQWBsR1VfXRS5QEHGpW9UuTLSM+HAXT7pbg5NB\" crossorigin=\"anonymous\">\u003c/script>\n\u003cresearch-dashboard-map profile-config='{\"profile\":\"research-dashboard\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/research-dashboard-map>"},"bundle":"research-dashboard"}]},{"bundle":"research-map-plus-grid","scriptUrl":"./research-map-plus-grid/research-map-plus-grid.js","output":"doxa-maps/research-map-plus-grid/research-map-plus-grid.js","integrity":"sha384-rvlGYT9b/rWuzxz5ipTfhXuh4pTJIZ48NI8cObfbauGKwD7pChQt4/axGOUI9Fik","elements":["research-map-plus-grid"],"profiles":[{"profile":"research-map-plus-grid","file":"research-map-plus-grid.vue","description":"The monolithic 7-tab research map (cap-3) on top, the People Groups grid beneath,","element":"research-map-plus-grid","type":"nested-elements-mfe","isMap":false,"iframeUrl":"./research-map-plus-grid/research-map-plus-grid/index.html","scriptUrl":"./research-map-plus-grid/research-map-plus-grid.js","embed":{"iframe":"\u003ciframe src=\"./research-map-plus-grid/research-map-plus-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./research-map-plus-grid/research-map-plus-grid.js\" integrity=\"sha384-rvlGYT9b/rWuzxz5ipTfhXuh4pTJIZ48NI8cObfbauGKwD7pChQt4/axGOUI9Fik\" crossorigin=\"anonymous\">\u003c/script>\n\u003cresearch-map-plus-grid profile-config='{\"profile\":\"research-map-plus-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/research-map-plus-grid>"},"instances":[{"id":"default","title":"default","apiBaseUrl":"","props":{"profile":"research-map-plus-grid"},"element":"research-map-plus-grid","iframeUrl":"./research-map-plus-grid/research-map-plus-grid/default/index.html","embed":{"iframe":"\u003ciframe src=\"./research-map-plus-grid/research-map-plus-grid/default/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"stack-demo","scriptUrl":"./stack-demo/stack-demo.js","output":"doxa-maps/stack-demo/stack-demo.js","integrity":"sha384-OERfDCY+oHWG9Z0VYc1UMO5LGVSyKMJj6W0C+yAcb78PIJP81pkwK3HRcC0hoTkq","elements":["stack-demo"],"profiles":[{"profile":"stack-demo","file":"stack-demo.vue","description":"Groups TWO independent elements TOP-TO-BOTTOM so you can embed the pair on a page and","element":"stack-demo","type":"nested-elements-mfe","isMap":false,"iframeUrl":"./stack-demo/stack-demo/index.html","scriptUrl":"./stack-demo/stack-demo.js","embed":{"iframe":"\u003ciframe src=\"./stack-demo/stack-demo/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./stack-demo/stack-demo.js\" integrity=\"sha384-OERfDCY+oHWG9Z0VYc1UMO5LGVSyKMJj6W0C+yAcb78PIJP81pkwK3HRcC0hoTkq\" crossorigin=\"anonymous\">\u003c/script>\n\u003cstack-demo profile-config='{\"profile\":\"stack-demo\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/stack-demo>"},"instances":[{"id":"pair","title":"pair","apiBaseUrl":"","props":{"profile":"stack-demo"},"element":"stack-demo","iframeUrl":"./stack-demo/stack-demo/pair/index.html","embed":{"iframe":"\u003ciframe src=\"./stack-demo/stack-demo/pair/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]},{"bundle":"template-bundle","scriptUrl":"./template-bundle/template-bundle.js","output":"doxa-maps/template-bundle/template-bundle.js","integrity":"sha384-aIcrWHM2nmCSPqnMA+9xMC8jfc5ynJ+/eFCrR+WwZcQViaXErkZEjzV2fw/p8IoH","elements":["template-bundle"],"profiles":[{"profile":"template-map-a","file":"template-map-a.vue","description":"Minimal example profile A — a colored placeholder, no Mapbox or data.","element":"template-bundle","type":"single","isMap":false,"iframeUrl":"./template-bundle/template-map-a/index.html","scriptUrl":"./template-bundle/template-bundle.js","embed":{"iframe":"\u003ciframe src=\"./template-bundle/template-map-a/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./template-bundle/template-bundle.js\" integrity=\"sha384-aIcrWHM2nmCSPqnMA+9xMC8jfc5ynJ+/eFCrR+WwZcQViaXErkZEjzV2fw/p8IoH\" crossorigin=\"anonymous\">\u003c/script>\n\u003ctemplate-bundle profile-config='{\"profile\":\"template-map-a\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/template-bundle>"},"bundle":"template-bundle"},{"profile":"template-map-b","file":"template-map-b.vue","description":"Minimal example profile B — a second profile in the same bundle.","element":"template-bundle","type":"single","isMap":false,"iframeUrl":"./template-bundle/template-map-b/index.html","scriptUrl":"./template-bundle/template-bundle.js","embed":{"iframe":"\u003ciframe src=\"./template-bundle/template-map-b/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./template-bundle/template-bundle.js\" integrity=\"sha384-aIcrWHM2nmCSPqnMA+9xMC8jfc5ynJ+/eFCrR+WwZcQViaXErkZEjzV2fw/p8IoH\" crossorigin=\"anonymous\">\u003c/script>\n\u003ctemplate-bundle profile-config='{\"profile\":\"template-map-b\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/template-bundle>"},"bundle":"template-bundle"}]}]}; \n\n" + }, + "instances": [ + { + "id": "default", + "title": "default", + "apiBaseUrl": "", + "props": { + "profile": "research-map-plus-grid" + }, + "element": "research-map-plus-grid", + "iframeUrl": "./research-map-plus-grid/research-map-plus-grid/default/index.html", + "embed": { + "iframe": "" + } + } + ] + } + ] + }, { "bundle": "stack-demo", "scriptUrl": "./stack-demo/stack-demo.js", diff --git a/public/doxa-maps/my-upg-100-list/index.html b/public/doxa-maps/my-upg-100-list/index.html index b0a5c2312..f64501eef 100644 --- a/public/doxa-maps/my-upg-100-list/index.html +++ b/public/doxa-maps/my-upg-100-list/index.html @@ -130,7 +130,7 @@ header.top .sub { margin-top: 3px; font: 12px/1.4 var(--sans); color: var(--mut) + window.FORGE.manifest = {"schema":"doxa-maps-manifest@1","generatedFrom":"plugin-designs/*/*.vue","embedBase":".","bundleCount":19,"profileCount":28,"bundles":[{"bundle":"my-upg-100-list","scriptUrl":"./my-upg-100-list/my-upg-100-list.js","output":"doxa-maps/my-upg-100-list/my-upg-100-list.js","integrity":"sha384-kp9nHCASuuYGJTAlEJ4gHkCUr9YrbLOHweqkWiyngdBAaDmVsUtOjafvDSBmUSZI","elements":["my-upg-100-list-map"],"profiles":[{"profile":"poster-wall","file":"poster-wall.vue","description":"A wall of printable poster cards, one per 100-list entry, each with a \"Show on map\" action that","element":"my-upg-100-list-map","type":"single","isMap":true,"iframeUrl":"./my-upg-100-list/poster-wall/index.html","scriptUrl":"./my-upg-100-list/my-upg-100-list.js","embed":{"iframe":"\u003ciframe src=\"./my-upg-100-list/poster-wall/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-kp9nHCASuuYGJTAlEJ4gHkCUr9YrbLOHweqkWiyngdBAaDmVsUtOjafvDSBmUSZI\" crossorigin=\"anonymous\">\u003c/script>\n\u003cmy-upg-100-list-map profile-config='{\"profile\":\"poster-wall\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/my-upg-100-list-map>"}},{"profile":"upg-100-list","file":"upg-100-list.vue","description":"A personal unreached-people-groups list painted as true boundary polygons —","element":"my-upg-100-list-map","type":"single","isMap":true,"iframeUrl":"./my-upg-100-list/upg-100-list/index.html","scriptUrl":"./my-upg-100-list/my-upg-100-list.js","embed":{"iframe":"\u003ciframe src=\"./my-upg-100-list/upg-100-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-kp9nHCASuuYGJTAlEJ4gHkCUr9YrbLOHweqkWiyngdBAaDmVsUtOjafvDSBmUSZI\" crossorigin=\"anonymous\">\u003c/script>\n\u003cmy-upg-100-list-map profile-config='{\"profile\":\"upg-100-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/my-upg-100-list-map>"}},{"profile":"upg-100-mfe","file":"upg-100-mfe.vue","description":"The standalone, shareable and embeddable composite of the my-upg-100-list family — it nests the map","element":"my-upg-100-list-map","type":"nested-elements-mfe","isMap":true,"iframeUrl":"./my-upg-100-list/upg-100-mfe/index.html","scriptUrl":"./my-upg-100-list/my-upg-100-list.js","embed":{"iframe":"\u003ciframe src=\"./my-upg-100-list/upg-100-mfe/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./my-upg-100-list/my-upg-100-list.js\" integrity=\"sha384-kp9nHCASuuYGJTAlEJ4gHkCUr9YrbLOHweqkWiyngdBAaDmVsUtOjafvDSBmUSZI\" crossorigin=\"anonymous\">\u003c/script>\n\u003cmy-upg-100-list-map profile-config='{\"profile\":\"upg-100-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/my-upg-100-list-map>"}}]}]}; + window.FORGE.manifest = {"schema":"doxa-maps-manifest@1","generatedFrom":"plugin-designs/*/*.vue","embedBase":".","bundleCount":19,"profileCount":28,"bundles":[{"bundle":"people-groups-grid","scriptUrl":"./people-groups-grid/people-groups-grid.js","output":"doxa-maps/people-groups-grid/people-groups-grid.js","integrity":"sha384-JCol/vri0hsYL5ziRSlphv7jLoyhu5ZS5Ll1gREPmX0gs4zw1jmLpdIVbxqAAMie","elements":["people-groups-grid"],"profiles":[{"profile":"people-groups-grid","file":"people-groups-grid.vue","description":"The people-groups grid as an owned custom element: card list, search and four","element":"people-groups-grid","type":"parameterized","isMap":false,"iframeUrl":"./people-groups-grid/people-groups-grid/index.html","scriptUrl":"./people-groups-grid/people-groups-grid.js","embed":{"iframe":"\u003ciframe src=\"./people-groups-grid/people-groups-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./people-groups-grid/people-groups-grid.js\" integrity=\"sha384-JCol/vri0hsYL5ziRSlphv7jLoyhu5ZS5Ll1gREPmX0gs4zw1jmLpdIVbxqAAMie\" crossorigin=\"anonymous\">\u003c/script>\n\u003cpeople-groups-grid profile-config='{\"profile\":\"people-groups-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/people-groups-grid>"},"instances":[{"id":"people-groups-grid","title":"People Groups Grid — standalone (own search + 4 dropdowns)","apiBaseUrl":"","props":{"profile":"people-groups-grid","provider":"maplibre","instanceId":"people-groups-grid","pray-base-url":"https://pray.doxa.life"},"element":"people-groups-grid","iframeUrl":"./people-groups-grid/people-groups-grid/people-groups-grid/index.html","embed":{"iframe":"\u003ciframe src=\"./people-groups-grid/people-groups-grid/people-groups-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}},{"id":"driven","title":"People Groups Grid — externally driven (controls off, props/events)","apiBaseUrl":"","props":{"profile":"people-groups-grid","provider":"maplibre","instanceId":"people-groups-grid-driven","pray-base-url":"https://pray.doxa.life","show-search":"false","show-filters":"false"},"element":"people-groups-grid","iframeUrl":"./people-groups-grid/people-groups-grid/driven/index.html","embed":{"iframe":"\u003ciframe src=\"./people-groups-grid/people-groups-grid/driven/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]}]}; + window.FORGE.manifest = {"schema":"doxa-maps-manifest@1","generatedFrom":"plugin-designs/*/*.vue","embedBase":".","bundleCount":19,"profileCount":28,"bundles":[{"bundle":"plugin-studio","scriptUrl":"./plugin-studio/plugin-studio.js","output":"doxa-maps/plugin-studio/plugin-studio.js","integrity":"sha384-TgQEX+LPYUYcF1PcPli9N3VH1sNm9P+1SOv+EkbGBBYjcXYA6xYjJ4UPaB+1HCHU","elements":["plugin-studio"],"profiles":[{"profile":"plugin-studio","file":"plugin-studio.vue","description":"The developer's viewing surface: a sidebar that is the composability ladder","element":"plugin-studio","type":"nested-mfe-spa","isMap":false,"iframeUrl":"./plugin-studio/plugin-studio/index.html","scriptUrl":"./plugin-studio/plugin-studio.js","embed":{"iframe":"\u003ciframe src=\"./plugin-studio/plugin-studio/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./plugin-studio/plugin-studio.js\" integrity=\"sha384-TgQEX+LPYUYcF1PcPli9N3VH1sNm9P+1SOv+EkbGBBYjcXYA6xYjJ4UPaB+1HCHU\" crossorigin=\"anonymous\">\u003c/script>\n\u003cplugin-studio profile-config='{\"profile\":\"plugin-studio\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/plugin-studio>"},"instances":[{"id":"studio","title":"Plugin Studio — every element by capability 5 -> 1 (developer studio)","apiBaseUrl":"","props":{"profile":"plugin-studio","provider":"maplibre","instanceId":"plugin-studio","title":"Plugin Studio"},"element":"plugin-studio","iframeUrl":"./plugin-studio/plugin-studio/studio/index.html","embed":{"iframe":"\u003ciframe src=\"./plugin-studio/plugin-studio/studio/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>"}}]}]}]}; + window.FORGE.manifest = {"schema":"doxa-maps-manifest@1","generatedFrom":"plugin-designs/*/*.vue","embedBase":".","bundleCount":19,"profileCount":28,"bundles":[{"bundle":"research-dashboard","scriptUrl":"./research-dashboard/research-dashboard.js","output":"doxa-maps/research-dashboard/research-dashboard.js","integrity":"sha384-/gLHxNST0ho6G2xtCoWryUdyrljQWBsR1VfXRS5QEHGpW9UuTLSM+HAXT7pbg5NB","elements":["research-dashboard-map"],"profiles":[{"profile":"research-dashboard","file":"research-dashboard.vue","description":"Coordinated-Multiple-Views research dashboard for 10/40-window UPGs (live pray.doxa.life): docked facet rail + map-as-hero + linked table/charts, brushing-and-linking over one in-memory store.","element":"research-dashboard-map","type":"monolithic","isMap":true,"iframeUrl":"./research-dashboard/research-dashboard/index.html","scriptUrl":"./research-dashboard/research-dashboard.js","embed":{"iframe":"\u003ciframe src=\"./research-dashboard/research-dashboard/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./research-dashboard/research-dashboard.js\" integrity=\"sha384-/gLHxNST0ho6G2xtCoWryUdyrljQWBsR1VfXRS5QEHGpW9UuTLSM+HAXT7pbg5NB\" crossorigin=\"anonymous\">\u003c/script>\n\u003cresearch-dashboard-map profile-config='{\"profile\":\"research-dashboard\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/research-dashboard-map>"},"bundle":"research-dashboard"}]}]}; + + + diff --git a/public/doxa-maps/research-map-plus-grid/research-map-plus-grid.js b/public/doxa-maps/research-map-plus-grid/research-map-plus-grid.js new file mode 100644 index 000000000..7f85f1f25 --- /dev/null +++ b/public/doxa-maps/research-map-plus-grid/research-map-plus-grid.js @@ -0,0 +1,47 @@ +(function(){"use strict";/** +* @vue/shared v3.5.42 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function bs(t){const e=Object.create(null);for(const s of t.split(","))e[s]=1;return s=>s in e}const V={},ee=[],bt=()=>{},cn=()=>!1,Fe=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&(t.charCodeAt(2)>122||t.charCodeAt(2)<97),He=t=>t.startsWith("onUpdate:"),q=Object.assign,ys=(t,e)=>{const s=t.indexOf(e);s>-1&&t.splice(s,1)},cr=Object.prototype.hasOwnProperty,H=(t,e)=>cr.call(t,e),P=Array.isArray,Vt=t=>ue(t)==="[object Map]",Ne=t=>ue(t)==="[object Set]",fn=t=>ue(t)==="[object Date]",R=t=>typeof t=="function",B=t=>typeof t=="string",dt=t=>typeof t=="symbol",D=t=>t!==null&&typeof t=="object",un=t=>(D(t)||R(t))&&R(t.then)&&R(t.catch),an=Object.prototype.toString,ue=t=>an.call(t),fr=t=>ue(t).slice(8,-1),De=t=>ue(t)==="[object Object]",xs=t=>B(t)&&t!=="NaN"&&t[0]!=="-"&&""+parseInt(t,10)===t,ae=bs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),je=t=>{const e=Object.create(null);return s=>e[s]||(e[s]=t(s))},ur=/-\w/g,rt=je(t=>t.replace(ur,e=>e.slice(1).toUpperCase())),ar=/\B([A-Z])/g,ht=je(t=>t.replace(ar,"-$1").toLowerCase()),hn=je(t=>t.charAt(0).toUpperCase()+t.slice(1)),vs=je(t=>t?`on${hn(t)}`:""),It=(t,e)=>!Object.is(t,e),Ss=(t,...e)=>{for(let s=0;s{Object.defineProperty(t,e,{configurable:!0,enumerable:!1,writable:n,value:s})},hr=t=>{const e=parseFloat(t);return isNaN(e)?t:e},pn=t=>{const e=B(t)?Number(t):NaN;return isNaN(e)?t:e};let gn;const $e=()=>gn||(gn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Le(t){if(P(t)){const e={};for(let s=0;s{if(s){const n=s.split(pr);n.length>1&&(e[n[0].trim()]=n[1].trim())}}),e}function ke(t){let e="";if(B(t))e=t;else if(P(t))for(let s=0;s!!(t&&t.__v_isRef===!0),Ke=t=>B(t)?t:t==null?"":P(t)||D(t)&&(t.toString===an||!R(t.toString))?bn(t)?Ke(t.value):JSON.stringify(t,yn,2):String(t),yn=(t,e)=>bn(e)?yn(t,e.value):Vt(e)?{[`Map(${e.size})`]:[...e.entries()].reduce((s,[n,i],r)=>(s[ws(n,r)+" =>"]=i,s),{})}:Ne(e)?{[`Set(${e.size})`]:[...e.values()].map(s=>ws(s))}:dt(e)?ws(e):D(e)&&!P(e)&&!De(e)?String(e):e,ws=(t,e="")=>{var s;return dt(t)?`Symbol(${(s=t.description)!=null?s:e})`:t};/** +* @vue/reactivity v3.5.42 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let X;class yr{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!e&&X&&(X.active?(this.parent=X,this.index=(X.scopes||(X.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let e,s;if(this.scopes){const n=this.scopes.slice();for(e=0,s=n.length;e0&&--this._on===0){if(X===this)X=this.prevScope;else{let e=X;for(;e;){if(e.prevScope===this){e.prevScope=this.prevScope;break}e=e.prevScope}}this.prevScope=void 0}}stop(e){if(this._active){this._active=!1;let s,n;for(s=0,n=this.effects.length;s0)return;if(de){let e=de;for(de=void 0;e;){const s=e.next;e.next=void 0,e.flags&=-9,e=s}}let t;for(;he;){let e=he;for(he=void 0;e;){const s=e.next;if(e.next=void 0,e.flags&=-9,e.flags&1)try{e.trigger()}catch(n){t||(t=n)}e=s}}if(t)throw t}function wn(t){for(let e=t.deps;e;e=e.nextDep)e.version=-1,e.prevActiveLink=e.dep.activeLink,e.dep.activeLink=e}function Cn(t){let e,s=t.depsTail,n=s;for(;n;){const i=n.prevDep;n.version===-1?(n===s&&(s=i),Ps(n),vr(n)):e=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=i}t.deps=e,t.depsTail=s}function Ts(t){for(let e=t.deps;e;e=e.nextDep)if(e.dep.version!==e.version||e.dep.computed&&(An(e.dep.computed)||e.dep.version!==e.version))return!0;return!!t._dirty}function An(t){if(t.flags&4&&!(t.flags&16)||(t.flags&=-17,t.globalVersion===pe)||(t.globalVersion=pe,!t.isSSR&&t.flags&128&&(!t.deps&&!t._dirty||!Ts(t))))return;t.flags|=2;const e=t.dep,s=K,n=pt;K=t,pt=!0;try{wn(t);const i=t.fn(t._value);(e.version===0||It(i,t._value))&&(t.flags|=128,t._value=i,e.version++)}catch(i){throw e.version++,i}finally{K=s,pt=n,Cn(t),t.flags&=-3}}function Ps(t,e=!1){const{dep:s,prevSub:n,nextSub:i}=t;if(n&&(n.nextSub=i,t.prevSub=void 0),i&&(i.prevSub=n,t.nextSub=void 0),s.subs===t&&(s.subs=n,!n&&s.computed)){s.computed.flags&=-5;for(let r=s.computed.deps;r;r=r.nextDep)Ps(r,!0)}!e&&!--s.sc&&s.map&&s.map.delete(s.key)}function vr(t){const{prevDep:e,nextDep:s}=t;e&&(e.nextDep=s,t.prevDep=void 0),s&&(s.prevDep=e,t.nextDep=void 0)}let pt=!0;const En=[];function yt(){En.push(pt),pt=!1}function xt(){const t=En.pop();pt=t===void 0?!0:t}function Tn(t){const{cleanup:e}=t;if(t.cleanup=void 0,e){const s=K;K=void 0;try{e()}finally{K=s}}}let pe=0;class Sr{constructor(e,s){this.sub=e,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Pn{constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(e){if(!K||!pt||K===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==K)s=this.activeLink=new Sr(K,this),K.deps?(s.prevDep=K.depsTail,K.depsTail.nextDep=s,K.depsTail=s):K.deps=K.depsTail=s,On(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const n=s.nextDep;n.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=n),s.prevDep=K.depsTail,s.nextDep=void 0,K.depsTail.nextDep=s,K.depsTail=s,K.deps===s&&(K.deps=n)}return s}trigger(e){this.version++,pe++,this.notify(e)}notify(e){As();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{Es()}}}function On(t){if(t.dep.sc++,t.sub.flags&4){const e=t.dep.computed;if(e&&!t.dep.subs){e.flags|=20;for(let n=e.deps;n;n=n.nextDep)On(n)}const s=t.dep.subs;s!==t&&(t.prevSub=s,s&&(s.nextSub=t)),t.dep.subs=t}}const Os=new WeakMap,zt=Symbol(""),Rs=Symbol(""),ge=Symbol("");function Q(t,e,s){if(pt&&K){let n=Os.get(t);n||Os.set(t,n=new Map);let i=n.get(s);i||(n.set(s,i=new Pn),i.map=n,i.key=s),i.track()}}function Ft(t,e,s,n,i,r){const o=Os.get(t);if(!o){pe++;return}const l=c=>{c&&c.trigger()};if(As(),e==="clear")o.forEach(l);else{const c=P(t),h=c&&xs(s);if(c&&s==="length"){const a=Number(n);o.forEach((p,w)=>{(w==="length"||w===ge||!dt(w)&&w>=a)&&l(p)})}else switch((s!==void 0||o.has(void 0))&&l(o.get(s)),h&&l(o.get(ge)),e){case"add":c?h&&l(o.get("length")):(l(o.get(zt)),Vt(t)&&l(o.get(Rs)));break;case"delete":c||(l(o.get(zt)),Vt(t)&&l(o.get(Rs)));break;case"set":Vt(t)&&l(o.get(zt));break}}Es()}function se(t){const e=N(t);return e===t?e:(Q(e,"iterate",ge),gt(t)?e:e.map(Nt))}function Ue(t){return Q(t=N(t),"iterate",ge),t}function vt(t,e){return Kt(t)?ne(qt(t)?Nt(e):e):Nt(e)}const wr={__proto__:null,[Symbol.iterator](){return Ms(this,Symbol.iterator,t=>vt(this,t))},concat(...t){return se(this).concat(...t.map(e=>P(e)?se(e):e))},entries(){return Ms(this,"entries",t=>(t[1]=vt(this,t[1]),t))},every(t,e){return Ht(this,"every",t,e,void 0,arguments)},filter(t,e){return Ht(this,"filter",t,e,s=>s.map(n=>vt(this,n)),arguments)},find(t,e){return Ht(this,"find",t,e,s=>vt(this,s),arguments)},findIndex(t,e){return Ht(this,"findIndex",t,e,void 0,arguments)},findLast(t,e){return Ht(this,"findLast",t,e,s=>vt(this,s),arguments)},findLastIndex(t,e){return Ht(this,"findLastIndex",t,e,void 0,arguments)},forEach(t,e){return Ht(this,"forEach",t,e,void 0,arguments)},includes(...t){return Is(this,"includes",t)},indexOf(...t){return Is(this,"indexOf",t)},join(t){return se(this).join(t)},lastIndexOf(...t){return Is(this,"lastIndexOf",t)},map(t,e){return Ht(this,"map",t,e,void 0,arguments)},pop(){return _e(this,"pop")},push(...t){return _e(this,"push",t)},reduce(t,...e){return Rn(this,"reduce",t,e)},reduceRight(t,...e){return Rn(this,"reduceRight",t,e)},shift(){return _e(this,"shift")},some(t,e){return Ht(this,"some",t,e,void 0,arguments)},splice(...t){return _e(this,"splice",t)},toReversed(){return se(this).toReversed()},toSorted(t){return se(this).toSorted(t)},toSpliced(...t){return se(this).toSpliced(...t)},unshift(...t){return _e(this,"unshift",t)},values(){return Ms(this,"values",t=>vt(this,t))}};function Ms(t,e,s){const n=Ue(t),i=n[e]();return n!==t&&!gt(t)&&(i._next=i.next,i.next=()=>{const r=i._next();return r.done||(r.value=s(r.value)),r}),i}const Cr=Array.prototype;function Ht(t,e,s,n,i,r){const o=Ue(t),l=o!==t&&!gt(t),c=o[e];if(c!==Cr[e]){const p=c.apply(t,r);return l?Nt(p):p}let h=s;o!==t&&(l?h=function(p,w){return s.call(this,vt(t,p),w,t)}:s.length>2&&(h=function(p,w){return s.call(this,p,w,t)}));const a=c.call(o,h,n);return l&&i?i(a):a}function Rn(t,e,s,n){const i=Ue(t),r=i!==t&&!gt(t);let o=s,l=!1;i!==t&&(r?(l=n.length===0,o=function(h,a,p){return l&&(l=!1,h=vt(t,h)),s.call(this,h,vt(t,a),p,t)}):s.length>3&&(o=function(h,a,p){return s.call(this,h,a,p,t)}));const c=i[e](o,...n);return l?vt(t,c):c}function Is(t,e,s){const n=N(t);Q(n,"iterate",ge);const i=n[e](...s);return(i===-1||i===!1)&&Ds(s[0])?(s[0]=N(s[0]),n[e](...s)):i}function _e(t,e,s=[]){yt(),As();const n=N(t)[e].apply(t,s);return Es(),xt(),n}const Ar=bs("__proto__,__v_isRef,__isVue"),Mn=new Set(Object.getOwnPropertyNames(Symbol).filter(t=>t!=="arguments"&&t!=="caller").map(t=>Symbol[t]).filter(dt));function Er(t){dt(t)||(t=String(t));const e=N(this);return Q(e,"has",t),e.hasOwnProperty(t)}class In{constructor(e=!1,s=!1){this._isReadonly=e,this._isShallow=s}get(e,s,n){if(s==="__v_skip")return e.__v_skip;const i=this._isReadonly,r=this._isShallow;if(s==="__v_isReactive")return!i;if(s==="__v_isReadonly")return i;if(s==="__v_isShallow")return r;if(s==="__v_raw")return n===(i?r?$n:jn:r?Dn:Nn).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;const o=P(e);if(!i){let c;if(o&&(c=wr[s]))return c;if(s==="hasOwnProperty")return Er}const l=Reflect.get(e,s,tt(e)?e:n);if((dt(s)?Mn.has(s):Ar(s))||(i||Q(e,"get",s),r))return l;if(tt(l)){const c=o&&xs(s)?l:l.value;return i&&D(c)?Ns(c):c}return D(l)?i?Ns(l):Hs(l):l}}class Fn extends In{constructor(e=!1){super(!1,e)}set(e,s,n,i){let r=e[s];const o=P(e)&&xs(s);if(!this._isShallow){const h=Kt(r);if(!gt(n)&&!Kt(n)&&(r=N(r),n=N(n)),!o&&tt(r)&&!tt(n))return h||(r.value=n),!0}const l=o?Number(s)t,Be=t=>Reflect.getPrototypeOf(t);function Mr(t,e,s){return function(...n){const i=this.__v_raw,r=N(i),o=Vt(r),l=t==="entries"||t===Symbol.iterator&&o,c=t==="keys"&&o,h=i[t](...n),a=s?Fs:e?ne:Nt;return!e&&Q(r,"iterate",c?Rs:zt),q(Object.create(h),{next(){const{value:p,done:w}=h.next();return w?{value:p,done:w}:{value:l?[a(p[0]),a(p[1])]:a(p),done:w}}})}}function We(t){return function(...e){return t==="delete"?!1:t==="clear"?void 0:this}}function Ir(t,e){const s={get(i){const r=this.__v_raw,o=N(r),l=N(i);t||(It(i,l)&&Q(o,"get",i),Q(o,"get",l));const{has:c}=Be(o),h=e?Fs:t?ne:Nt;if(c.call(o,i))return h(r.get(i));if(c.call(o,l))return h(r.get(l));r!==o&&r.get(i)},get size(){const i=this.__v_raw;return!t&&Q(N(i),"iterate",zt),i.size},has(i){const r=this.__v_raw,o=N(r),l=N(i);return t||(It(i,l)&&Q(o,"has",i),Q(o,"has",l)),i===l?r.has(i):r.has(i)||r.has(l)},forEach(i,r){const o=this,l=o.__v_raw,c=N(l),h=e?Fs:t?ne:Nt;return!t&&Q(c,"iterate",zt),l.forEach((a,p)=>i.call(r,h(a),h(p),o))}};return q(s,t?{add:We("add"),set:We("set"),delete:We("delete"),clear:We("clear")}:{add(i){const r=N(this),o=Be(r),l=N(i),c=!e&&!gt(i)&&!Kt(i)?l:i;return o.has.call(r,c)||It(i,c)&&o.has.call(r,i)||It(l,c)&&o.has.call(r,l)||(r.add(c),Ft(r,"add",c,c)),this},set(i,r){!e&&!gt(r)&&!Kt(r)&&(r=N(r));const o=N(this),{has:l,get:c}=Be(o);let h=l.call(o,i);h||(i=N(i),h=l.call(o,i));const a=c.call(o,i);return o.set(i,r),h?It(r,a)&&Ft(o,"set",i,r):Ft(o,"add",i,r),this},delete(i){const r=N(this),{has:o,get:l}=Be(r);let c=o.call(r,i);c||(i=N(i),c=o.call(r,i)),l&&l.call(r,i);const h=r.delete(i);return c&&Ft(r,"delete",i,void 0),h},clear(){const i=N(this),r=i.size!==0,o=i.clear();return r&&Ft(i,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(i=>{s[i]=Mr(i,t,e)}),s}function ze(t,e){const s=Ir(t,e);return(n,i,r)=>i==="__v_isReactive"?!t:i==="__v_isReadonly"?t:i==="__v_raw"?n:Reflect.get(H(s,i)&&i in n?s:n,i,r)}const Fr={get:ze(!1,!1)},Hr={get:ze(!1,!0)},Nr={get:ze(!0,!1)},Dr={get:ze(!0,!0)},Nn=new WeakMap,Dn=new WeakMap,jn=new WeakMap,$n=new WeakMap;function jr(t){switch(t){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Hs(t){return Kt(t)?t:qe(t,!1,Tr,Fr,Nn)}function $r(t){return qe(t,!1,Or,Hr,Dn)}function Ns(t){return qe(t,!0,Pr,Nr,jn)}function lc(t){return qe(t,!0,Rr,Dr,$n)}function qe(t,e,s,n,i){if(!D(t)||t.__v_raw&&!(e&&t.__v_isReactive)||t.__v_skip||!Object.isExtensible(t))return t;const r=i.get(t);if(r)return r;const o=jr(fr(t));if(o===0)return t;const l=new Proxy(t,o===2?n:s);return i.set(t,l),l}function qt(t){return Kt(t)?qt(t.__v_raw):!!(t&&t.__v_isReactive)}function Kt(t){return!!(t&&t.__v_isReadonly)}function gt(t){return!!(t&&t.__v_isShallow)}function Ds(t){return t?!!t.__v_raw:!1}function N(t){const e=t&&t.__v_raw;return e?N(e):t}function Lr(t){return!H(t,"__v_skip")&&Object.isExtensible(t)&&dn(t,"__v_skip",!0),t}const Nt=t=>D(t)?Hs(t):t,ne=t=>D(t)?Ns(t):t;function tt(t){return t?t.__v_isRef===!0:!1}function Ln(t){return tt(t)?t.value:t}const kr={get:(t,e,s)=>e==="__v_raw"?t:Ln(Reflect.get(t,e,s)),set:(t,e,s,n)=>{const i=t[e];return tt(i)&&!tt(s)?(i.value=s,!0):Reflect.set(t,e,s,n)}};function kn(t){return qt(t)?t:new Proxy(t,kr)}class Vr{constructor(e,s,n){this.fn=e,this.setter=s,this._value=void 0,this.dep=new Pn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=pe-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&K!==this)return Sn(this,!0),!0}get value(){const e=this.dep.track();return An(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}}function Kr(t,e,s=!1){let n,i;return R(t)?n=t:(n=t.get,i=t.set),new Vr(n,i,s)}const Ge={},Je=new WeakMap;let Gt;function Ur(t,e=!1,s=Gt){if(s){let n=Je.get(s);n||Je.set(s,n=[]),n.push(t)}}function Br(t,e,s=V){const{immediate:n,deep:i,once:r,scheduler:o,augmentJob:l,call:c}=s,h=T=>i?T:gt(T)||i===!1||i===0?Ut(T,1):Ut(T);let a,p,w,C,j=!1,M=!1;if(tt(t)?(p=()=>t.value,j=gt(t)):qt(t)?(p=()=>h(t),j=!0):P(t)?(M=!0,j=t.some(T=>qt(T)||gt(T)),p=()=>t.map(T=>{if(tt(T))return T.value;if(qt(T))return h(T);if(R(T))return c?c(T,2):T()})):R(t)?e?p=c?()=>c(t,2):t:p=()=>{if(w){yt();try{w()}finally{xt()}}const T=Gt;Gt=a;try{return c?c(t,3,[C]):t(C)}finally{Gt=T}}:p=bt,e&&i){const T=p,Y=i===!0?1/0:i;p=()=>Ut(T(),Y)}const G=xr(),W=()=>{a.stop(),G&&G.active&&ys(G.effects,a)};if(r&&e){const T=e;e=(...Y)=>{const Et=T(...Y);return W(),Et}}let F=M?new Array(t.length).fill(Ge):Ge;const $=T=>{if(!(!(a.flags&1)||!a.dirty&&!T))if(e){const Y=a.run();if(T||i||j||(M?Y.some((Et,Tt)=>It(Et,F[Tt])):It(Y,F))){w&&w();const Et=Gt;Gt=a;try{const Tt=[Y,F===Ge?void 0:M&&F[0]===Ge?[]:F,C];F=Y,c?c(e,3,Tt):e(...Tt)}finally{Gt=Et}}}else a.run()};return l&&l($),a=new xn(p),a.scheduler=o?()=>o($,!1):$,C=T=>Ur(T,!1,a),w=a.onStop=()=>{const T=Je.get(a);if(T){if(c)c(T,4);else for(const Y of T)Y();Je.delete(a)}},e?n?$(!0):F=a.run():o?o($.bind(null,!0),!0):a.run(),W.pause=a.pause.bind(a),W.resume=a.resume.bind(a),W.stop=W,W}function Ut(t,e=1/0,s){if(e<=0||!D(t)||t.__v_skip||(s=s||new Map,(s.get(t)||0)>=e))return t;if(s.set(t,e),e--,tt(t))Ut(t.value,e,s);else if(P(t))for(let n=0;n{Ut(n,e,s)});else if(De(t)){for(const n in t)Ut(t[n],e,s);for(const n of Object.getOwnPropertySymbols(t))Object.prototype.propertyIsEnumerable.call(t,n)&&Ut(t[n],e,s)}return t}/** +* @vue/runtime-core v3.5.42 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const me=[];let js=!1;function cc(t,...e){if(js)return;js=!0,yt();const s=me.length?me[me.length-1].component:null,n=s&&s.appContext.config.warnHandler,i=Wr();if(n)ie(n,s,11,[t+e.map(r=>{var o,l;return(l=(o=r.toString)==null?void 0:o.call(r))!=null?l:JSON.stringify(r)}).join(""),s&&s.proxy,i.map(({vnode:r})=>`at <${Li(s,r.type)}>`).join(` +`),i]);else{const r=[`[Vue warn]: ${t}`,...e];i.length&&r.push(` +`,...zr(i)),console.warn(...r)}xt(),js=!1}function Wr(){let t=me[me.length-1];if(!t)return[];const e=[];for(;t;){const s=e[0];s&&s.vnode===t?s.recurseCount++:e.push({vnode:t,recurseCount:0});const n=t.component&&t.component.parent;t=n&&n.vnode}return e}function zr(t){const e=[];return t.forEach((s,n)=>{e.push(...n===0?[]:[` +`],...qr(s))}),e}function qr({vnode:t,recurseCount:e}){const s=e>0?`... (${e} recursive calls)`:"",n=t.component?t.component.parent==null:!1,i=` at <${Li(t.component,t.type,n)}`,r=">"+s;return t.props?[i,...Gr(t.props),r]:[i+r]}function Gr(t){const e=[],s=Object.keys(t);return s.slice(0,3).forEach(n=>{e.push(...Vn(n,t[n]))}),s.length>3&&e.push(" ..."),e}function Vn(t,e,s){return B(e)?(e=JSON.stringify(e),s?e:[`${t}=${e}`]):typeof e=="number"||typeof e=="boolean"||e==null?s?e:[`${t}=${e}`]:tt(e)?(e=Vn(t,N(e.value),!0),s?e:[`${t}=Ref<`,e,">"]):R(e)?[`${t}=fn${e.name?`<${e.name}>`:""}`]:(e=N(e),s?e:[`${t}=`,e])}function ie(t,e,s,n){try{return n?t(...n):t()}catch(i){Ye(i,e,s)}}function _t(t,e,s,n){if(R(t)){const i=ie(t,e,s,n);return i&&un(i)&&i.catch(r=>{Ye(r,e,s)}),i}if(P(t)){const i=[];for(let r=0;r>>1,i=et[n],r=be(i);r=be(s)?et.push(t):et.splice(Yr(e),0,t),t.flags|=1,Bn()}}function Bn(){Xe||(Xe=Kn.then(qn))}function Xr(t){if(!P(t))Bt&&t.id===-1?Bt.splice(oe+1,0,t):t.flags&1||(re.push(t),t.flags|=1);else for(let e=0;ebe(s)-be(n));if(re.length=0,Bt){for(let s=0;st.id==null?t.flags&2?-1:1/0:t.id;function qn(t){try{for(St=0;St{n._d&&Mi(-1);const r=Ze(e),o=jt.length;let l;try{l=t(...i)}finally{for(let c=jt.length;c>o;c--)Zs();Ze(r),n._d&&Mi(1)}return l};return n._n=!0,n._c=!0,n._d=!0,n}function Jt(t,e,s,n){const i=t.dirs,r=e&&e.dirs;for(let o=0;o1)return s&&R(e)?e.call(n&&n.proxy):e}}const to=Symbol.for("v-scx"),eo=()=>Qe(to);function Ls(t,e,s){return Jn(t,e,s)}function Jn(t,e,s=V){const{immediate:n,deep:i,flush:r,once:o}=s,l=q({},s),c=e&&n||!e&&r!=="post";let h;if(Ee){if(r==="sync"){const C=eo();h=C.__watcherHandles||(C.__watcherHandles=[])}else if(!c){const C=()=>{};return C.stop=bt,C.resume=bt,C.pause=bt,C}}const a=nt;l.call=(C,j,M)=>_t(C,a,j,M);let p=!1;r==="post"?l.scheduler=C=>{lt(C,a&&a.suspense)}:r!=="sync"&&(p=!0,l.scheduler=(C,j)=>{j?C():$s(C)}),l.augmentJob=C=>{e&&(C.flags|=4),p&&(C.flags|=2,a&&(C.id=a.uid,C.i=a))};const w=Br(t,e,l);return Ee&&(h?h.push(w):c&&w()),w}function so(t,e,s){const n=this.proxy,i=B(t)?t.includes(".")?Yn(n,t):()=>n[t]:t.bind(n,n);let r;R(e)?r=e:(r=e.handler,s=e);const o=Ae(this),l=Jn(i,r.bind(n),s);return o(),l}function Yn(t,e){const s=e.split(".");return()=>{let n=t;for(let i=0;it.__isTeleport,ks=Symbol("_leaveCb");function io(t){let e=t[0];if(t.length>1){for(const s of t)if(s.type!==wt){e=s;break}}return e}function Xn(t){if(!Ks(t))return ts(t.type)&&t.children?io(t.children):t;if(t.component)return t.component.subTree;const{shapeFlag:e,children:s}=t;if(s){if(e&16)return s[0];if(e&32&&R(s.default))return s.default()}}function Vs(t,e){if(t.shapeFlag&6&&t.component){t.transition=e;const s=t.component.subTree;Vs(ts(s.type)&&Xn(s)||s,e)}else t.shapeFlag&128?(t.ssContent.transition=e.clone(t.ssContent),t.ssFallback.transition=e.clone(t.ssFallback)):t.transition=e}function Zn(t,e){return R(t)?q({name:t.name},e,{setup:t}):t}function Qn(t){t.ids=[t.ids[0]+t.ids[2]+++"-",0,0]}function ti(t,e){let s;return!!((s=Object.getOwnPropertyDescriptor(t,e))&&!s.configurable)}const es=new WeakMap;function ye(t,e,s,n,i=!1){if(P(t)){t.forEach((M,G)=>ye(M,e&&(P(e)?e[G]:e),s,n,i));return}if(le(n)&&!i){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&ye(t,e,s,n.component.subTree);return}const r=n.shapeFlag&4?tn(n.component):n.el,o=i?null:r,{i:l,r:c}=t,h=e&&e.r,a=l.refs===V?l.refs={}:l.refs,p=l.setupState,w=N(p),C=p===V?cn:M=>ti(a,M)?!1:H(w,M),j=(M,G)=>!(G&&ti(a,G));if(h!=null&&h!==c){if(ei(e),B(h))a[h]=null,C(h)&&(p[h]=null);else if(tt(h)){const M=e;j(h,M.k)&&(h.value=null),M.k&&(a[M.k]=null)}}if(R(c))ie(c,l,12,[o,a]);else{const M=B(c),G=tt(c);if(M||G){const W=()=>{if(t.f){const F=M?C(c)?p[c]:a[c]:j()||!t.k?c.value:a[t.k];if(i)P(F)&&ys(F,r);else if(P(F))F.includes(r)||F.push(r);else if(M)a[c]=[r],C(c)&&(p[c]=a[c]);else{const $=[r];j(c,t.k)&&(c.value=$),t.k&&(a[t.k]=$)}}else M?(a[c]=o,C(c)&&(p[c]=o)):G&&(j(c,t.k)&&(c.value=o),t.k&&(a[t.k]=o))};if(o){const F=()=>{W(),es.delete(t)};F.id=-1,es.set(t,F),lt(F,s)}else ei(t),W()}}}function ei(t){const e=es.get(t);e&&(e.flags|=8,es.delete(t))}$e().requestIdleCallback,$e().cancelIdleCallback;const le=t=>!!t.type.__asyncLoader,Ks=t=>t.type.__isKeepAlive;function ro(t,e){si(t,"a",e)}function oo(t,e){si(t,"da",e)}function si(t,e,s=nt){const n=t.__wdc||(t.__wdc=()=>{let i=s;for(;i;){if(i.isDeactivated)return;i=i.parent}return t()});if(ss(e,n,s),s){let i=s.parent;for(;i&&i.parent;)Ks(i.parent.vnode)&&lo(n,e,s,i),i=i.parent}}function lo(t,e,s,n){const i=ss(e,t,n,!0);ii(()=>{ys(n[e],i)},s)}function ss(t,e,s=nt,n=!1){if(s){const i=s[t]||(s[t]=[]),r=e.__weh||(e.__weh=(...o)=>{yt();const l=Ae(s),c=_t(e,s,t,o);return l(),xt(),c});return n?i.unshift(r):i.push(r),r}}const Dt=t=>(e,s=nt)=>{(!Ee||t==="sp")&&ss(t,(...n)=>e(...n),s)},co=Dt("bm"),ni=Dt("m"),fo=Dt("bu"),uo=Dt("u"),ao=Dt("bum"),ii=Dt("um"),ho=Dt("sp"),po=Dt("rtg"),go=Dt("rtc");function _o(t,e=nt){ss("ec",t,e)}const mo=Symbol.for("v-ndc");function bo(t,e,s,n){let i;const r=s,o=P(t);if(o||B(t)){const l=o&&qt(t);let c=!1,h=!1;l&&(c=!gt(t),h=Kt(t),t=Ue(t)),i=new Array(t.length);for(let a=0,p=t.length;ae(l,c,void 0,r));else{const l=Object.keys(t);i=new Array(l.length);for(let c=0,h=l.length;c0;return e!=="default"&&(h.name=e),ut(),ls(ct,null,[mt("slot",h,n)],a?-2:64)}let o=t[e];o&&o._c&&(o._d=!1);const l=jt.length;ut();let c;try{const h=o&&ri(o(s)),a=s.key||r||h&&h.key;c=ls(ct,{key:(a&&!dt(a)?a:`_${e}`)+(!h&&n?"_fb":"")},h||(n?n():[]),h&&t._===1?64:-2)}catch(h){for(let a=jt.length;a>l;a--)Zs();throw h}finally{o&&o._c&&(o._d=!0)}return c.scopeId&&(c.slotScopeIds=[c.scopeId+"-s"]),c}function ri(t){return t.some(e=>Qs(e)?!(e.type===wt||e.type===ct&&!ri(e.children)):!0)?t:null}const Us=t=>t?Di(t)?tn(t):Us(t.parent):null,xe=q(Object.create(null),{$:t=>t,$el:t=>t.vnode.el,$data:t=>t.data,$props:t=>t.props,$attrs:t=>t.attrs,$slots:t=>t.slots,$refs:t=>t.refs,$parent:t=>Us(t.parent),$root:t=>Us(t.root),$host:t=>t.ce,$emit:t=>t.emit,$options:t=>fi(t),$forceUpdate:t=>t.f||(t.f=()=>{$s(t.update)}),$nextTick:t=>t.n||(t.n=Un.bind(t.proxy)),$watch:t=>so.bind(t)}),Bs=(t,e)=>t!==V&&!t.__isScriptSetup&&H(t,e),yo={get({_:t},e){if(e==="__v_skip")return!0;const{ctx:s,setupState:n,data:i,props:r,accessCache:o,type:l,appContext:c}=t;if(e[0]!=="$"){const w=o[e];if(w!==void 0)switch(w){case 1:return n[e];case 2:return i[e];case 4:return s[e];case 3:return r[e]}else{if(Bs(n,e))return o[e]=1,n[e];if(i!==V&&H(i,e))return o[e]=2,i[e];if(H(r,e))return o[e]=3,r[e];if(s!==V&&H(s,e))return o[e]=4,s[e];Ws&&(o[e]=0)}}const h=xe[e];let a,p;if(h)return e==="$attrs"&&Q(t.attrs,"get",""),h(t);if((a=l.__cssModules)&&(a=a[e]))return a;if(s!==V&&H(s,e))return o[e]=4,s[e];if(p=c.config.globalProperties,H(p,e))return p[e]},set({_:t},e,s){const{data:n,setupState:i,ctx:r}=t;return Bs(i,e)?(i[e]=s,!0):n!==V&&H(n,e)?(n[e]=s,!0):H(t.props,e)||e[0]==="$"&&e.slice(1)in t?!1:(r[e]=s,!0)},has({_:{data:t,setupState:e,accessCache:s,ctx:n,appContext:i,props:r,type:o}},l){let c;return!!(s[l]||t!==V&&l[0]!=="$"&&H(t,l)||Bs(e,l)||H(r,l)||H(n,l)||H(xe,l)||H(i.config.globalProperties,l)||(c=o.__cssModules)&&c[l])},defineProperty(t,e,s){return s.get!=null?t._.accessCache[e]=0:H(s,"value")&&this.set(t,e,s.value,null),Reflect.defineProperty(t,e,s)}};function oi(t){return P(t)?t.reduce((e,s)=>(e[s]=null,e),{}):t}let Ws=!0;function xo(t){const e=fi(t),s=t.proxy,n=t.ctx;Ws=!1,e.beforeCreate&&li(e.beforeCreate,t,"bc");const{data:i,computed:r,methods:o,watch:l,provide:c,inject:h,created:a,beforeMount:p,mounted:w,beforeUpdate:C,updated:j,activated:M,deactivated:G,beforeDestroy:W,beforeUnmount:F,destroyed:$,unmounted:T,render:Y,renderTracked:Et,renderTriggered:Tt,errorCaptured:Wt,serverPrefetch:ds,expose:Zt,inheritAttrs:Oe,components:ps,directives:gs,filters:on}=e;if(h&&vo(h,n,null),o)for(const z in o){const U=o[z];R(U)&&(n[z]=U.bind(s))}if(i){const z=i.call(s,s);D(z)&&(t.data=Hs(z))}if(Ws=!0,r)for(const z in r){const U=r[z],Qt=R(U)?U.bind(s,s):R(U.get)?U.get.bind(s,s):bt,_s=!R(U)&&R(U.set)?U.set.bind(s):bt,te=ol({get:Qt,set:_s});Object.defineProperty(n,z,{enumerable:!0,configurable:!0,get:()=>te.value,set:Pt=>te.value=Pt})}if(l)for(const z in l)ci(l[z],n,s,z);if(c){const z=R(c)?c.call(s):c;Reflect.ownKeys(z).forEach(U=>{Qr(U,z[U])})}a&&li(a,t,"c");function it(z,U){P(U)?U.forEach(Qt=>z(Qt.bind(s))):U&&z(U.bind(s))}if(it(co,p),it(ni,w),it(fo,C),it(uo,j),it(ro,M),it(oo,G),it(_o,Wt),it(go,Et),it(po,Tt),it(ao,F),it(ii,T),it(ho,ds),P(Zt))if(Zt.length){const z=t.exposed||(t.exposed={});Zt.forEach(U=>{Object.defineProperty(z,U,{get:()=>s[U],set:Qt=>s[U]=Qt,enumerable:!0})})}else t.exposed||(t.exposed={});Y&&t.render===bt&&(t.render=Y),Oe!=null&&(t.inheritAttrs=Oe),ps&&(t.components=ps),gs&&(t.directives=gs),ds&&Qn(t)}function vo(t,e,s=bt){P(t)&&(t=zs(t));for(const n in t){const i=t[n];let r;D(i)?"default"in i?r=Qe(i.from||n,i.default,!0):r=Qe(i.from||n):r=Qe(i),tt(r)?Object.defineProperty(e,n,{enumerable:!0,configurable:!0,get:()=>r.value,set:o=>r.value=o}):e[n]=r}}function li(t,e,s){_t(P(t)?t.map(n=>n.bind(e.proxy)):t.bind(e.proxy),e,s)}function ci(t,e,s,n){let i=n.includes(".")?Yn(s,n):()=>s[n];if(B(t)){const r=e[t];R(r)&&Ls(i,r)}else if(R(t))Ls(i,t.bind(s));else if(D(t))if(P(t))t.forEach(r=>ci(r,e,s,n));else{const r=R(t.handler)?t.handler.bind(s):e[t.handler];R(r)&&Ls(i,r,t)}}function fi(t){const e=t.type,{mixins:s,extends:n}=e,{mixins:i,optionsCache:r,config:{optionMergeStrategies:o}}=t.appContext,l=r.get(e);let c;return l?c=l:!i.length&&!s&&!n?c=e:(c={},i.length&&i.forEach(h=>is(c,h,o,!0)),is(c,e,o)),D(e)&&r.set(e,c),c}function is(t,e,s,n=!1){const{mixins:i,extends:r}=e;r&&is(t,r,s,!0),i&&i.forEach(o=>is(t,o,s,!0));for(const o in e)if(!(n&&o==="expose")){const l=So[o]||s&&s[o];t[o]=l?l(t[o],e[o]):e[o]}return t}const So={data:ui,props:ai,emits:ai,methods:ve,computed:ve,beforeCreate:st,created:st,beforeMount:st,mounted:st,beforeUpdate:st,updated:st,beforeDestroy:st,beforeUnmount:st,destroyed:st,unmounted:st,activated:st,deactivated:st,errorCaptured:st,serverPrefetch:st,components:ve,directives:ve,watch:Co,provide:ui,inject:wo};function ui(t,e){return e?t?function(){return q(R(t)?t.call(this,this):t,R(e)?e.call(this,this):e)}:e:t}function wo(t,e){return ve(zs(t),zs(e))}function zs(t){if(P(t)){const e={};for(let s=0;se==="modelValue"||e==="model-value"?t.modelModifiers:t[`${e}Modifiers`]||t[`${rt(e)}Modifiers`]||t[`${ht(e)}Modifiers`];function Po(t,e,...s){if(t.isUnmounted)return;const n=t.vnode.props||V;let i=s;const r=e.startsWith("update:"),o=r&&To(n,e.slice(7));o&&(o.trim&&(i=s.map(a=>B(a)?a.trim():a)),o.number&&(i=i.map(hr)));let l,c=n[l=vs(e)]||n[l=vs(rt(e))];!c&&r&&(c=n[l=vs(ht(e))]),c&&_t(c,t,6,i);const h=n[l+"Once"];if(h){if(!t.emitted)t.emitted={};else if(t.emitted[l])return;t.emitted[l]=!0,_t(h,t,6,i)}}const Oo=new WeakMap;function di(t,e,s=!1){const n=s?Oo:e.emitsCache,i=n.get(t);if(i!==void 0)return i;const r=t.emits;let o={},l=!1;if(!R(t)){const c=h=>{const a=di(h,e,!0);a&&(l=!0,q(o,a))};!s&&e.mixins.length&&e.mixins.forEach(c),t.extends&&c(t.extends),t.mixins&&t.mixins.forEach(c)}return!r&&!l?(D(t)&&n.set(t,null),null):(P(r)?r.forEach(c=>o[c]=null):q(o,r),D(t)&&n.set(t,o),o)}function rs(t,e){return!t||!Fe(e)?!1:(e=e.slice(2),e=e==="Once"?e:e.replace(/Once$/,""),H(t,e[0].toLowerCase()+e.slice(1))||H(t,ht(e))||H(t,e))}function fc(){}function pi(t){const{type:e,vnode:s,proxy:n,withProxy:i,propsOptions:[r],slots:o,attrs:l,emit:c,render:h,renderCache:a,props:p,data:w,setupState:C,ctx:j,inheritAttrs:M}=t,G=Ze(t);let W,F;try{if(s.shapeFlag&4){const T=i||n,Y=T;W=Ct(h.call(Y,T,a,p,C,w,j)),F=l}else{const T=e;W=Ct(T.length>1?T(p,{attrs:l,slots:o,emit:c}):T(p,null)),F=e.props?l:Ro(l)}}catch(T){jt.length=0,Ye(T,t,1),W=mt(wt)}let $=W;if(F&&M!==!1){const T=Object.keys(F),{shapeFlag:Y}=$;T.length&&Y&7&&(r&&T.some(He)&&(F=Mo(F,r)),$=fe($,F,!1,!0))}if(s.dirs&&($=fe($,null,!1,!0),$.dirs=$.dirs?$.dirs.concat(s.dirs):s.dirs),s.transition){const T=ts($.type)&&Xn($)||$;Vs(T,s.transition)}return W=$,Ze(G),W}const Ro=t=>{let e;for(const s in t)(s==="class"||s==="style"||Fe(s))&&((e||(e={}))[s]=t[s]);return e},Mo=(t,e)=>{const s={};for(const n in t)(!He(n)||!(n.slice(9)in e))&&(s[n]=t[n]);return s};function Io(t,e,s){const{props:n,children:i,component:r}=t,{props:o,children:l,patchFlag:c}=e,h=r.emitsOptions;if(e.dirs||e.transition)return!0;if(s&&c>=0){if(c&1024)return!0;if(c&16)return n?gi(n,o,h):!!o;if(c&8){const a=e.dynamicProps;for(let p=0;pObject.create(mi),yi=t=>Object.getPrototypeOf(t)===mi;function Ho(t,e,s,n=!1){const i={},r=bi();t.propsDefaults=Object.create(null),xi(t,e,i,r);for(const o in t.propsOptions[0])o in i||(i[o]=void 0);s?t.props=n?i:$r(i):t.type.props?t.props=i:t.props=r,t.attrs=r}function No(t,e,s,n){const{props:i,attrs:r,vnode:{patchFlag:o}}=t,l=N(i),[c]=t.propsOptions;let h=!1;if((n||o>0)&&!(o&16)){if(o&8){const a=t.vnode.dynamicProps;for(let p=0;p{c=!0;const[w,C]=vi(p,e,!0);q(o,w),C&&l.push(...C)};!s&&e.mixins.length&&e.mixins.forEach(a),t.extends&&a(t.extends),t.mixins&&t.mixins.forEach(a)}if(!r&&!c)return D(t)&&n.set(t,ee),ee;if(P(r))for(let a=0;at==="_"||t==="_ctx"||t==="$stable",Js=t=>P(t)?t.map(Ct):[Ct(t)],jo=(t,e,s)=>{if(e._n)return e;const n=Zr((...i)=>Js(e(...i)),s);return n._c=!1,n},wi=(t,e,s)=>{const n=t._ctx;for(const i in t){if(Gs(i))continue;const r=t[i];if(R(r))e[i]=jo(i,r,n);else if(r!=null){const o=Js(r);e[i]=()=>o}}},Ci=(t,e)=>{const s=Js(e);t.slots.default=()=>s},Ai=(t,e,s)=>{for(const n in e)(s||!Gs(n))&&(t[n]=e[n])},$o=(t,e,s)=>{const n=t.slots=bi();if(t.vnode.shapeFlag&32){const i=e._;i?(Ai(n,e,s),s&&dn(n,"_",i,!0)):wi(e,n)}else e&&Ci(t,e)},Lo=(t,e,s)=>{const{vnode:n,slots:i}=t;let r=!0,o=V;if(n.shapeFlag&32){const l=e._;l?s&&l===1?r=!1:Ai(i,e,s):(r=!e.$stable,wi(e,i)),o=e}else e&&(Ci(t,e),o={default:1});if(r)for(const l in i)!Gs(l)&&o[l]==null&&delete i[l]},lt=Bo;function ko(t){return Vo(t)}function Vo(t,e){const s=$e();s.__VUE__=!0;const{insert:n,remove:i,patchProp:r,createElement:o,createText:l,createComment:c,setText:h,setElementText:a,parentNode:p,nextSibling:w,setScopeId:C=bt,insertStaticContent:j}=t,M=(f,u,d,b=null,m=null,g=null,v=void 0,x=null,y=!!u.dynamicChildren)=>{if(f===u)return;f&&!we(f,u)&&(b=ms(f),Pt(f,m,g,!0),f=null),u.patchFlag===-2&&(y=!1,u.dynamicChildren=null);const{type:_,ref:E,shapeFlag:S}=u;switch(_){case os:G(f,u,d,b);break;case wt:W(f,u,d,b);break;case Xs:f==null&&F(u,d,b,v);break;case ct:ps(f,u,d,b,m,g,v,x,y);break;default:S&1?Y(f,u,d,b,m,g,v,x,y):S&6?gs(f,u,d,b,m,g,v,x,y):(S&64||S&128)&&_.process(f,u,d,b,m,g,v,x,y,Me)}E!=null&&m?ye(E,f&&f.ref,g,u||f,!u):E==null&&f&&f.ref!=null&&ye(f.ref,null,g,f,!0)},G=(f,u,d,b)=>{if(f==null)n(u.el=l(u.children),d,b);else{const m=u.el=f.el;u.children!==f.children&&h(m,u.children)}},W=(f,u,d,b)=>{f==null?n(u.el=c(u.children||""),d,b):u.el=f.el},F=(f,u,d,b)=>{[f.el,f.anchor]=j(f.children,u,d,b,f.el,f.anchor)},$=({el:f,anchor:u},d,b)=>{let m;for(;f&&f!==u;)m=w(f),n(f,d,b),f=m;n(u,d,b)},T=({el:f,anchor:u})=>{let d;for(;f&&f!==u;)d=w(f),i(f),f=d;i(u)},Y=(f,u,d,b,m,g,v,x,y)=>{if(u.type==="svg"?v="svg":u.type==="math"&&(v="mathml"),f==null)Et(u,d,b,m,g,v,x,y);else{const _=f.el&&f.el._isVueCE?f.el:null;try{_&&_._beginPatch(),ds(f,u,m,g,v,x,y)}finally{_&&_._endPatch()}}},Et=(f,u,d,b,m,g,v,x)=>{let y,_;const{props:E,shapeFlag:S,transition:A,dirs:O}=f;if(y=f.el=o(f.type,g,E&&E.is,E),S&8?a(y,f.children):S&16&&Wt(f.children,y,null,b,m,Ys(f,g),v,x),O&&Jt(f,null,b,"created"),Tt(y,f,f.scopeId,v,b),E){for(const k in E)k!=="value"&&!ae(k)&&r(y,k,null,E[k],g,b);"value"in E&&r(y,"value",null,E.value,g),(_=E.onVnodeBeforeMount)&&At(_,b,f)}O&&Jt(f,null,b,"beforeMount");const I=Ko(m,A);I&&A.beforeEnter(y),n(y,u,d),((_=E&&E.onVnodeMounted)||I||O)&<(()=>{try{_&&At(_,b,f),I&&A.enter(y),O&&Jt(f,null,b,"mounted")}finally{}},m)},Tt=(f,u,d,b,m)=>{if(d&&C(f,d),b)for(let g=0;g{for(let _=y;_{const x=u.el=f.el;let{patchFlag:y,dynamicChildren:_,dirs:E}=u;y|=f.patchFlag&16;const S=f.props||V,A=u.props||V;let O;if(d&&Yt(d,!1),(O=A.onVnodeBeforeUpdate)&&At(O,d,u,f),E&&Jt(u,f,d,"beforeUpdate"),d&&Yt(d,!0),_&&(!f.dynamicChildren||f.dynamicChildren.length!==_.length)&&(y=0,v=!1,_=null),(S.innerHTML&&A.innerHTML==null||S.textContent&&A.textContent==null)&&a(x,""),_?Zt(f.dynamicChildren,_,x,d,b,Ys(u,m),g):v||U(f,u,x,null,d,b,Ys(u,m),g,!1),y>0){if(y&16)Oe(x,S,A,d,m);else if(y&2&&S.class!==A.class&&r(x,"class",null,A.class,m),y&4&&r(x,"style",S.style,A.style,m),y&8){const I=u.dynamicProps;for(let k=0;k{O&&At(O,d,u,f),E&&Jt(u,f,d,"updated")},b)},Zt=(f,u,d,b,m,g,v)=>{for(let x=0;x{if(u!==d){if(u!==V)for(const g in u)!ae(g)&&!(g in d)&&r(f,g,u[g],null,m,b);for(const g in d){if(ae(g))continue;const v=d[g],x=u[g];v!==x&&g!=="value"&&r(f,g,x,v,m,b)}"value"in d&&r(f,"value",u.value,d.value,m)}},ps=(f,u,d,b,m,g,v,x,y)=>{const _=u.el=f?f.el:l(""),E=u.anchor=f?f.anchor:l("");let{patchFlag:S,dynamicChildren:A,slotScopeIds:O}=u;O&&(x=x?x.concat(O):O),f==null?(n(_,d,b),n(E,d,b),Wt(u.children||[],d,E,m,g,v,x,y)):S>0&&S&64&&A&&f.dynamicChildren&&f.dynamicChildren.length===A.length?(Zt(f.dynamicChildren,A,d,m,g,v,x),(u.key!=null||m&&u===m.subTree)&&Ei(f,u,!0)):U(f,u,d,E,m,g,v,x,y)},gs=(f,u,d,b,m,g,v,x,y)=>{u.slotScopeIds=x,f==null?u.shapeFlag&512?m.ctx.activate(u,d,b,v,y):on(u,d,b,m,g,v,y):sr(f,u,y)},on=(f,u,d,b,m,g,v)=>{const x=f.component=Xo(f,b,m);if(Ks(f)&&(x.ctx.renderer=Me),Zo(x,!1,v),x.asyncDep){if(m&&m.registerDep(x,it,v),!f.el){const y=x.subTree=mt(wt);W(null,y,u,d),f.placeholder=y.el}}else it(x,f,u,d,m,g,v)},sr=(f,u,d)=>{const b=u.component=f.component;if(Io(f,u,d))if(b.asyncDep&&!b.asyncResolved){z(b,u,d);return}else b.next=u,b.update();else u.el=f.el,b.vnode=u},it=(f,u,d,b,m,g,v)=>{const x=()=>{if(f.isMounted){let{next:S,bu:A,u:O,parent:I,vnode:k}=f;{const Rt=Ti(f);if(Rt){S&&(S.el=k.el,z(f,S,v)),Rt.asyncDep.then(()=>{lt(()=>{f.isUnmounted||_()},m)});return}}let L=S,J;Yt(f,!1),S?(S.el=k.el,z(f,S,v)):S=k,A&&Ss(A),(J=S.props&&S.props.onVnodeBeforeUpdate)&&At(J,I,S,k),Yt(f,!0);const Z=pi(f),Ot=f.subTree;f.subTree=Z,M(Ot,Z,p(Ot.el),ms(Ot),f,m,g),S.el=Z.el,L===null&&Fo(f,Z.el),O&<(O,m),(J=S.props&&S.props.onVnodeUpdated)&<(()=>At(J,I,S,k),m)}else{let S;const{el:A,props:O}=u,{bm:I,m:k,parent:L,root:J,type:Z}=f,Ot=le(u);Yt(f,!1),I&&Ss(I),!Ot&&(S=O&&O.onVnodeBeforeMount)&&At(S,L,u),Yt(f,!0);{J.ce&&J.ce._hasShadowRoot()&&J.ce._injectChildStyle(Z,f.parent?f.parent.type:void 0);const Rt=f.subTree=pi(f);M(null,Rt,d,b,f,m,g),u.el=Rt.el}if(k&<(k,m),!Ot&&(S=O&&O.onVnodeMounted)){const Rt=u;lt(()=>At(S,L,Rt),m)}(u.shapeFlag&256||L&&le(L.vnode)&&L.vnode.shapeFlag&256)&&f.a&<(f.a,m),f.isMounted=!0,u=d=b=null}};f.scope.on();const y=f.effect=new xn(x);f.scope.off();const _=f.update=y.run.bind(y),E=f.job=y.runIfDirty.bind(y);E.i=f,E.id=f.uid,y.scheduler=()=>$s(E),Yt(f,!0),_()},z=(f,u,d)=>{u.component=f;const b=f.vnode.props;f.vnode=u,f.next=null,No(f,u.props,b,d),Lo(f,u.children,d),yt(),Wn(f),xt()},U=(f,u,d,b,m,g,v,x,y=!1)=>{const _=f&&f.children,E=f?f.shapeFlag:0,S=u.children,{patchFlag:A,shapeFlag:O}=u;if(A>0){if(A&128){_s(_,S,d,b,m,g,v,x,y);return}else if(A&256){Qt(_,S,d,b,m,g,v,x,y);return}}O&8?(E&16&&Re(_,m,g),S!==_&&a(d,S)):E&16?O&16?_s(_,S,d,b,m,g,v,x,y):Re(_,m,g,!0):(E&8&&a(d,""),O&16&&Wt(S,d,b,m,g,v,x,y))},Qt=(f,u,d,b,m,g,v,x,y)=>{f=f||ee,u=u||ee;const _=f.length,E=u.length,S=Math.min(_,E);let A;for(A=0;AE?Re(f,m,g,!0,!1,S):Wt(u,d,b,m,g,v,x,y,S)},_s=(f,u,d,b,m,g,v,x,y)=>{let _=0;const E=u.length;let S=f.length-1,A=E-1;for(;_<=S&&_<=A;){const O=f[_],I=u[_]=y?Lt(u[_]):Ct(u[_]);if(we(O,I))M(O,I,d,null,m,g,v,x,y);else break;_++}for(;_<=S&&_<=A;){const O=f[S],I=u[A]=y?Lt(u[A]):Ct(u[A]);if(we(O,I))M(O,I,d,null,m,g,v,x,y);else break;S--,A--}if(_>S){if(_<=A){const O=A+1,I=OA)for(;_<=S;)Pt(f[_],m,g,!0),_++;else{const O=_,I=_,k=new Map;for(_=I;_<=A;_++){const at=u[_]=y?Lt(u[_]):Ct(u[_]);at.key!=null&&k.set(at.key,_)}let L,J=0;const Z=A-I+1;let Ot=!1,Rt=0;const Ie=new Array(Z);for(_=0;_=Z){Pt(at,m,g,!0);continue}let Mt;if(at.key!=null)Mt=k.get(at.key);else for(L=I;L<=A;L++)if(Ie[L-I]===0&&we(at,u[L])){Mt=L;break}Mt===void 0?Pt(at,m,g,!0):(Ie[Mt-I]=_+1,Mt>=Rt?Rt=Mt:Ot=!0,M(at,u[Mt],d,null,m,g,v,x,y),J++)}const rr=Ot?Uo(Ie):ee;for(L=rr.length-1,_=Z-1;_>=0;_--){const at=I+_,Mt=u[at],or=u[at+1],lr=at+1{const{el:g,type:v,transition:x,children:y,shapeFlag:_}=f;if(_&6){te(f.component.subTree,u,d,b);return}if(_&128){f.suspense.move(u,d,b);return}if(_&64){v.move(f,u,d,Me);return}if(v===ct){n(g,u,d);for(let S=0;Sx.enter(g),m));else{const{leave:S,delayLeave:A,afterLeave:O}=x,I=()=>{f.ctx.isUnmounted?i(g):n(g,u,d)},k=()=>{const L=g._isLeaving||!!g[ks];g._isLeaving&&g[ks](!0),x.persisted&&!L?I():S(g,()=>{I(),O&&O()})};A?A(g,I,k):k()}else n(g,u,d)},Pt=(f,u,d,b=!1,m=!1)=>{const{type:g,props:v,ref:x,children:y,dynamicChildren:_,shapeFlag:E,patchFlag:S,dirs:A,cacheIndex:O,memo:I}=f;if(S===-2&&(m=!1),x!=null&&(yt(),ye(x,null,d,f,!0),xt()),O!=null&&(u.renderCache[O]=void 0),E&256){u.ctx.deactivate(f);return}const k=E&1&&A,L=!le(f);let J;if(L&&(J=v&&v.onVnodeBeforeUnmount)&&At(J,u,f),E&6)rc(f.component,d,b);else{if(E&128){f.suspense.unmount(d,b);return}k&&Jt(f,null,u,"beforeUnmount"),E&64?f.type.remove(f,u,d,Me,b):_&&!_.hasOnce&&(g!==ct||S>0&&S&64)?Re(_,u,d,!1,!0):(g===ct&&S&384||!m&&E&16)&&Re(y,u,d),b&&nr(f)}const Z=I!=null&&O==null;(L&&(J=v&&v.onVnodeUnmounted)||k||Z)&<(()=>{J&&At(J,u,f),k&&Jt(f,null,u,"unmounted"),Z&&(f.el=null)},d)},nr=f=>{const{type:u,el:d,anchor:b,transition:m}=f;if(u===ct){ic(d,b);return}if(u===Xs){T(f);return}const g=()=>{i(d),m&&!m.persisted&&m.afterLeave&&m.afterLeave()};if(f.shapeFlag&1&&m&&!m.persisted){const{leave:v,delayLeave:x}=m,y=()=>v(d,g);x?x(f.el,g,y):y()}else g()},ic=(f,u)=>{let d;for(;f!==u;)d=w(f),i(f),f=d;i(u)},rc=(f,u,d)=>{const{bum:b,scope:m,job:g,subTree:v,um:x,m:y,a:_}=f;Pi(y),Pi(_),b&&Ss(b),m.stop(),g&&(g.flags|=8,Pt(v,f,u,d)),x&<(x,u),lt(()=>{f.isUnmounted=!0},u)},Re=(f,u,d,b=!1,m=!1,g=0)=>{for(let v=g;v{if(f.shapeFlag&6)return ms(f.component.subTree);if(f.shapeFlag&128)return f.suspense.next();const u=w(f.anchor||f.el),d=u&&u[no];return d?w(d):u};let ln=!1;const ir=(f,u,d)=>{let b;f==null?u._vnode&&(Pt(u._vnode,null,null,!0),b=u._vnode.component):M(u._vnode||null,f,u,null,null,null,d),u._vnode=f,ln||(ln=!0,Wn(b),zn(),ln=!1)},Me={p:M,um:Pt,m:te,r:nr,mt:on,mc:Wt,pc:U,pbc:Zt,n:ms,o:t};return{render:ir,hydrate:void 0,createApp:Eo(ir)}}function Ys({type:t,props:e},s){return s==="svg"&&t==="foreignObject"||s==="mathml"&&t==="annotation-xml"&&e&&e.encoding&&e.encoding.includes("html")?void 0:s}function Yt({effect:t,job:e},s){s?(t.flags|=32,e.flags|=4):(t.flags&=-33,e.flags&=-5)}function Ko(t,e){return(!t||t&&!t.pendingBranch)&&e&&!e.persisted}function Ei(t,e,s=!1){const n=t.children,i=e.children;if(P(n)&&P(i))for(let r=0;r>1,t[s[l]]0&&(e[n]=s[r-1]),s[r]=n)}}for(r=s.length,o=s[r-1];r-- >0;)s[r]=o,o=e[o];return s}function Ti(t){const e=t.subTree.component;if(e)return e.asyncDep&&!e.asyncResolved?e:Ti(e)}function Pi(t){if(t)for(let e=0;et.__isSuspense;function Bo(t,e){e&&e.pendingBranch?P(t)?e.effects.push(...t):e.effects.push(t):Xr(t)}const ct=Symbol.for("v-fgt"),os=Symbol.for("v-txt"),wt=Symbol.for("v-cmt"),Xs=Symbol.for("v-stc"),jt=[];let ft=null;function ut(t=!1){jt.push(ft=t?null:[])}function Zs(){jt.pop(),ft=jt[jt.length-1]||null}let Se=1;function Mi(t,e=!1){Se+=t,t<0&&ft&&e&&(ft.hasOnce=!0)}function Ii(t){return t.dynamicChildren=Se>0?ft||ee:null,Zs(),Se>0&&ft&&ft.push(t),t}function $t(t,e,s,n,i,r){return Ii(Xt(t,e,s,n,i,r,!0))}function ls(t,e,s,n,i){return Ii(mt(t,e,s,n,i,!0))}function Qs(t){return t?t.__v_isVNode===!0:!1}function we(t,e){return t.type===e.type&&t.key===e.key}const Fi=({key:t})=>t??null,cs=({ref:t,ref_key:e,ref_for:s})=>(typeof t=="number"&&(t=""+t),t!=null?B(t)||tt(t)||R(t)?{i:ot,r:t,k:e,f:!!s}:t:null);function Xt(t,e=null,s=null,n=0,i=null,r=t===ct?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:t,props:e,key:e&&Fi(e),ref:e&&cs(e),scopeId:Gn,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:n,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:ot};return l?(us(c,s),r&128&&t.normalize(c)):s&&(c.shapeFlag|=B(s)?8:16),Se>0&&!o&&ft&&(c.patchFlag>0||r&6)&&c.patchFlag!==32&&ft.push(c),c}const mt=Wo;function Wo(t,e=null,s=null,n=0,i=null,r=!1){if((!t||t===mo)&&(t=wt),Qs(t)){const l=fe(t,e,!0);return s&&us(l,s),Se>0&&!r&&ft&&(l.shapeFlag&6?ft[ft.indexOf(t)]=l:ft.push(l)),l.patchFlag=-2,l}if(rl(t)&&(t=t.__vccOpts),e){e=zo(e);let{class:l,style:c}=e;l&&!B(l)&&(e.class=ke(l)),D(c)&&(Ds(c)&&!P(c)&&(c=q({},c)),e.style=Le(c))}const o=B(t)?1:Ri(t)?128:ts(t)?64:D(t)?4:R(t)?2:0;return Xt(t,e,s,n,i,o,r,!0)}function zo(t){return t?Ds(t)||yi(t)?q({},t):t:null}function fe(t,e,s=!1,n=!1){const{props:i,ref:r,patchFlag:o,children:l,transition:c}=t,h=e?Go(i||{},e):i,a={__v_isVNode:!0,__v_skip:!0,type:t.type,props:h,key:h&&Fi(h),ref:e&&e.ref?s&&r?P(r)?r.concat(cs(e)):[r,cs(e)]:cs(e):r,scopeId:t.scopeId,slotScopeIds:t.slotScopeIds,children:l,target:t.target,targetStart:t.targetStart,targetAnchor:t.targetAnchor,staticCount:t.staticCount,shapeFlag:t.shapeFlag,patchFlag:e&&t.type!==ct?o===-1?16:o|16:o,dynamicProps:t.dynamicProps,dynamicChildren:t.dynamicChildren,appContext:t.appContext,dirs:t.dirs,transition:c,component:t.component,suspense:t.suspense,ssContent:t.ssContent&&fe(t.ssContent),ssFallback:t.ssFallback&&fe(t.ssFallback),placeholder:t.placeholder,el:t.el,anchor:t.anchor,ctx:t.ctx,ce:t.ce};return c&&n&&Vs(a,c.clone(a)),a}function qo(t=" ",e=0){return mt(os,null,t,e)}function fs(t="",e=!1){return e?(ut(),ls(wt,null,t)):mt(wt,null,t)}function Ct(t){return t==null||typeof t=="boolean"?mt(wt):P(t)?mt(ct,null,t.slice()):Qs(t)?Lt(t):mt(os,null,String(t))}function Lt(t){return t.el===null&&t.patchFlag!==-1||t.memo?t:fe(t)}function us(t,e){let s=0;const{shapeFlag:n}=t;if(e==null)e=null;else if(P(e))s=16;else if(typeof e=="object")if(n&65){const i=e.default;i&&(i._c&&(i._d=!1),us(t,i()),i._c&&(i._d=!0));return}else{s=32;const i=e._;!i&&!yi(e)?e._ctx=ot:i===3&&ot&&(ot.slots._===1?e._=1:(e._=2,t.patchFlag|=1024))}else if(R(e)){if(n&65){us(t,{default:e});return}e={default:e,_ctx:ot},s=32}else e=String(e),n&64?(s=16,e=[qo(e)]):s=8;t.children=e,t.shapeFlag|=s}function Go(...t){const e={};for(let s=0;snt||ot;let as,Ce;{const t=$e(),e=(s,n)=>{let i;return(i=t[s])||(i=t[s]=[]),i.push(n),r=>{i.length>1?i.forEach(o=>o(r)):i[0](r)}};as=e("__VUE_INSTANCE_SETTERS__",s=>nt=s),Ce=e("__VUE_SSR_SETTERS__",s=>Ee=s)}const Ae=t=>{const e=nt;return as(t),t.scope.on(),()=>{t.scope.off(),as(e)}},Ni=()=>{nt&&nt.scope.off(),as(null)};function Di(t){return t.vnode.shapeFlag&4}let Ee=!1;function Zo(t,e=!1,s=!1){e&&Ce(e);const{props:n,children:i}=t.vnode,r=Di(t);Ho(t,n,r,e),$o(t,i,s||e);const o=r?Qo(t,e):void 0;return e&&Ce(!1),o}function Qo(t,e){const s=t.type;t.accessCache=Object.create(null),t.proxy=new Proxy(t.ctx,yo);const{setup:n}=s;if(n){yt();const i=t.setupContext=n.length>1?el(t):null,r=Ae(t),o=ie(n,t,0,[t.props,i]),l=un(o);if(xt(),r(),(l||t.sp)&&!le(t)&&Qn(t),l){if(o.then(Ni,Ni),e)return o.then(c=>{Ce(!0);try{ji(t,c,e)}finally{Ce(!1)}}).catch(c=>{Ye(c,t,0)});t.asyncDep=o}else ji(t,o)}else $i(t)}function ji(t,e,s){R(e)?t.type.__ssrInlineRender?t.ssrRender=e:t.render=e:D(e)&&(t.setupState=kn(e)),$i(t)}function $i(t,e,s){const n=t.type;t.render||(t.render=n.render||bt);{const i=Ae(t);yt();try{xo(t)}finally{xt(),i()}}}const tl={get(t,e){return Q(t,"get",""),t[e]}};function el(t){const e=s=>{t.exposed=s||{}};return{attrs:new Proxy(t.attrs,tl),slots:t.slots,emit:t.emit,expose:e}}function tn(t){return t.exposed?t.exposeProxy||(t.exposeProxy=new Proxy(kn(Lr(t.exposed)),{get(e,s){if(s in e)return e[s];if(s in xe)return xe[s](t)},has(e,s){return s in e||s in xe}})):t.proxy}const sl=/(?:^|[-_])\w/g,nl=t=>t.replace(sl,e=>e.toUpperCase()).replace(/[-_]/g,"");function il(t,e=!0){return R(t)?t.displayName||t.name:t.name||e&&t.__name}function Li(t,e,s=!1){let n=il(e);if(!n&&e.__file){const i=e.__file.match(/([^/\\]+)\.\w+$/);i&&(n=i[1])}if(!n&&t){const i=r=>{for(const o in r)if(r[o]===e)return o};n=i(t.components)||t.parent&&i(t.parent.type.components)||i(t.appContext.components)}return n?nl(n):s?"App":"Anonymous"}function rl(t){return R(t)&&"__vccOpts"in t}const ol=(t,e)=>Kr(t,e,Ee),ll="3.5.42";/** +* @vue/runtime-dom v3.5.42 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let en;const ki=typeof window<"u"&&window.trustedTypes;if(ki)try{en=ki.createPolicy("vue",{createHTML:t=>t})}catch{}const Vi=en?t=>en.createHTML(t):t=>t,cl="http://www.w3.org/2000/svg",fl="http://www.w3.org/1998/Math/MathML",kt=typeof document<"u"?document:null,Ki=kt&&kt.createElement("template"),ul={insert:(t,e,s)=>{e.insertBefore(t,s||null)},remove:t=>{const e=t.parentNode;e&&e.removeChild(t)},createElement:(t,e,s,n)=>{const i=e==="svg"?kt.createElementNS(cl,t):e==="mathml"?kt.createElementNS(fl,t):s?kt.createElement(t,{is:s}):kt.createElement(t);return t==="select"&&n&&n.multiple!=null&&i.setAttribute("multiple",n.multiple),i},createText:t=>kt.createTextNode(t),createComment:t=>kt.createComment(t),setText:(t,e)=>{t.nodeValue=e},setElementText:(t,e)=>{t.textContent=e},parentNode:t=>t.parentNode,nextSibling:t=>t.nextSibling,querySelector:t=>kt.querySelector(t),setScopeId(t,e){t.setAttribute(e,"")},insertStaticContent(t,e,s,n,i,r){const o=s?s.previousSibling:e.lastChild;if(i&&(i===r||i.nextSibling))for(;e.insertBefore(i.cloneNode(!0),s),!(i===r||!(i=i.nextSibling)););else{Ki.innerHTML=Vi(n==="svg"?`${t}`:n==="mathml"?`${t}`:t);const l=Ki.content;if(n==="svg"||n==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}e.insertBefore(l,s)}return[o?o.nextSibling:e.firstChild,s?s.previousSibling:e.lastChild]}},al=Symbol("_vtc");function hl(t,e,s){const n=t[al];n&&(e=(e?[e,...n]:[...n]).join(" ")),e==null?t.removeAttribute("class"):s?t.setAttribute("class",e):t.className=e}const Ui=Symbol("_vod"),dl=Symbol("_vsh"),pl=Symbol(""),gl=/(?:^|;)\s*display\s*:/;function _l(t,e,s){const n=t.style,i=B(s);let r=!1;if(s&&!i){if(e)if(B(e))for(const o of e.split(";")){const l=o.slice(0,o.indexOf(":")).trim();s[l]==null&&Te(n,l,"")}else for(const o in e)s[o]==null&&Te(n,o,"");for(const o in s){o==="display"&&(r=!0);const l=s[o];l!=null?bl(t,o,!B(e)&&e?e[o]:void 0,l)||Te(n,o,l):Te(n,o,"")}}else if(i){if(e!==s){const o=n[pl];o&&(s+=";"+o),n.cssText=s,r=gl.test(s)}}else e&&t.removeAttribute("style");Ui in t&&(t[Ui]=r?n.display:"",t[dl]&&(n.display="none"))}const hs=/\s*!important$/;function Te(t,e,s){if(P(s))s.forEach(n=>Te(t,e,n));else if(s==null&&(s=""),e.startsWith("--"))hs.test(s)?t.setProperty(e,s.replace(hs,""),"important"):t.setProperty(e,s);else{const n=ml(t,e);hs.test(s)?t.setProperty(ht(n),s.replace(hs,""),"important"):t[n]=s}}const Bi=["Webkit","Moz","ms"],sn={};function ml(t,e){const s=sn[e];if(s)return s;let n=rt(e);if(n!=="filter"&&n in t)return sn[e]=n;n=hn(n);for(let i=0;inn||(Al.then(()=>nn=0),nn=Date.now());function Tl(t,e){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;const i=s.value;if(P(i)){const r=n.stopImmediatePropagation;n.stopImmediatePropagation=()=>{r.call(n),n._stopped=!0};const o=i.slice(),l=[n];for(let c=0;ct.charCodeAt(0)===111&&t.charCodeAt(1)===110&&t.charCodeAt(2)>96&&t.charCodeAt(2)<123,Pl=(t,e,s,n,i,r)=>{const o=i==="svg";e==="class"?hl(t,n,o):e==="style"?_l(t,s,n):Fe(e)?He(e)||vl(t,e,s,n,r):(e[0]==="."?(e=e.slice(1),!0):e[0]==="^"?(e=e.slice(1),!1):Ol(t,e,n,o))?(qi(t,e,n),!t.tagName.includes("-")&&(e==="value"||e==="checked"||e==="selected")&&zi(t,e,n,o,r,e!=="value")):t._isVueCE&&(Rl(t,e)||t._def.__asyncLoader&&(/[A-Z]/.test(e)||!B(n)))?qi(t,rt(e),n,r,e):(e==="true-value"?t._trueValue=n:e==="false-value"&&(t._falseValue=n),zi(t,e,n,o))};function Ol(t,e,s,n){if(n)return!!(e==="innerHTML"||e==="textContent"||e in t&&Ji(e)&&R(s));if(e==="spellcheck"||e==="draggable"||e==="translate"||e==="autocorrect"||e==="sandbox"&&t.tagName==="IFRAME"||e==="form"||e==="list"&&t.tagName==="INPUT"||e==="type"&&t.tagName==="TEXTAREA")return!1;if(e==="width"||e==="height"){const i=t.tagName;if(i==="IMG"||i==="VIDEO"||i==="CANVAS"||i==="SOURCE")return!1}return Ji(e)&&B(s)?!1:e in t}function Rl(t,e){const s=t._def.props;if(!s)return!1;const n=rt(e);return Array.isArray(s)?s.some(i=>rt(i)===n):Object.keys(s).some(i=>rt(i)===n)}const Yi={};function Ml(t,e,s){let n=Zn(t,e);De(n)&&(n=q({},n,e));class i extends rn{constructor(o){super(n,o,s)}}return i.def=n,i}const Il=typeof HTMLElement<"u"?HTMLElement:class{};class rn extends Il{constructor(e,s={},n=Qi){super(),this._def=e,this._props=s,this._createApp=n,this._isVueCE=!0,this._instance=null,this._app=null,this._nonce=this._def.nonce,this._connected=!1,this._resolved=!1,this._patching=!1,this._dirty=!1,this._numberProps=null,this._styleChildren=new WeakSet,this._styleAnchors=new WeakMap,this._ob=null,this.shadowRoot&&n!==Qi?this._root=this.shadowRoot:e.shadowRoot!==!1?(this.attachShadow(q({},e.shadowRootOptions,{mode:"open"})),this._root=this.shadowRoot):this._root=this}connectedCallback(){if(!this.isConnected)return;!this.shadowRoot&&!this._resolved&&this._parseSlots(),this._connected=!0;let e=this;for(;e=e&&(e.assignedSlot||e.parentNode||e.host);)if(e instanceof rn){this._parent=e;break}this._instance||(this._resolved?this._mount(this._def):e&&e._pendingResolve?this._pendingResolve=e._pendingResolve.then(()=>{if(this._pendingResolve=void 0,this.isConnected)return this._resolveDef()}):this._resolveDef())}_setParent(e=this._parent){e&&(this._instance.parent=e._instance,this._inheritParentContext(e))}_inheritParentContext(e=this._parent){e&&this._app&&Object.setPrototypeOf(this._app._context.provides,e._instance.provides)}disconnectedCallback(){this._connected=!1,Un(()=>{this._connected||(this._ob&&(this._ob.disconnect(),this._ob=null),this._app&&this._app.unmount(),this._instance&&(this._instance.ce=void 0),this._app=this._instance=null,this._teleportTargets&&(this._teleportTargets.clear(),this._teleportTargets=void 0))})}_processMutations(e){for(const s of e)this._setAttr(s.attributeName)}_resolveDef(){if(this._pendingResolve)return this._pendingResolve;for(let n=0;n{this._resolved=!0,this._pendingResolve=void 0;const{props:r,styles:o}=n;let l;if(r&&!P(r))for(const c in r){const h=r[c];(h===Number||h&&h.type===Number)&&(c in this._props&&(this._props[c]=pn(this._props[c])),(l||(l=Object.create(null)))[rt(c)]=!0)}this._numberProps=l,this._resolveProps(n),this.shadowRoot&&this._applyStyles(o),this._mount(n)},s=this._def.__asyncLoader;if(s)return this._pendingResolve=s().then(n=>{n.configureApp=this._def.configureApp,e(this._def=n,!0)}),this._pendingResolve;e(this._def)}_mount(e){this._app=this._createApp(e),this._inheritParentContext(),e.configureApp&&e.configureApp(this._app),this._app._ceVNode=this._createVNode(),this._app.mount(this._root);const s=this._instance&&this._instance.exposed;if(s)for(const n in s)H(this,n)||Object.defineProperty(this,n,{get:()=>Ln(s[n])})}_resolveProps(e){const{props:s}=e,n=P(s)?s:Object.keys(s||{});for(const i of Object.keys(this))i[0]!=="_"&&n.includes(i)&&this._setProp(i,this[i]);for(const i of n.map(rt))Object.defineProperty(this,i,{get(){return this._getProp(i)},set(r){this._setProp(i,r,!0,!this._patching)}})}_setAttr(e){if(e.startsWith("data-v-"))return;const s=this.hasAttribute(e);let n=s?this.getAttribute(e):Yi;const i=rt(e);s&&this._numberProps&&this._numberProps[i]&&(n=pn(n)),this._setProp(i,n,!1,!0)}_getProp(e){return this._props[e]}_setProp(e,s,n=!0,i=!1){if(s!==this._props[e]&&(this._dirty=!0,s===Yi?delete this._props[e]:(this._props[e]=s,e==="key"&&this._app&&(this._app._ceVNode.key=s)),i&&this._instance&&this._update(),n)){const r=this._ob;r&&(this._processMutations(r.takeRecords()),r.disconnect()),s===!0?this.setAttribute(ht(e),""):typeof s=="string"||typeof s=="number"?this.setAttribute(ht(e),s+""):s||this.removeAttribute(ht(e)),r&&r.observe(this,{attributes:!0})}}_update(){const e=this._createVNode();this._app&&(e.appContext=this._app._context),Hl(e,this._root)}_createVNode(){const e={};this.shadowRoot||(e.onVnodeMounted=e.onVnodeUpdated=this._renderSlots.bind(this));const s=mt(this._def,q(e,this._props));return this._instance||(s.ce=n=>{this._instance=n,n.ce=this,n.isCE=!0;const i=(r,o)=>{this.dispatchEvent(new CustomEvent(r,De(o[0])?q({detail:o},o[0]):{detail:o}))};n.emit=(r,...o)=>{i(r,o),ht(r)!==r&&i(ht(r),o)},this._setParent()}),s}_applyStyles(e,s,n){if(!e)return;if(s){if(s===this._def||this._styleChildren.has(s))return;this._styleChildren.add(s)}const i=this._nonce,r=this.shadowRoot,o=n?this._getStyleAnchor(n)||this._getStyleAnchor(this._def):this._getRootStyleInsertionAnchor(r);let l=null;for(let c=e.length-1;c>=0;c--){const h=document.createElement("style");i&&h.setAttribute("nonce",i),h.textContent=e[c],r.insertBefore(h,l||o),l=h,c===0&&(n||this._styleAnchors.set(this._def,h),s&&this._styleAnchors.set(s,h))}}_getStyleAnchor(e){if(!e)return null;const s=this._styleAnchors.get(e);return s&&s.parentNode===this.shadowRoot?s:(s&&this._styleAnchors.delete(e),null)}_getRootStyleInsertionAnchor(e){for(let s=0;s{Zi().render(...t)},Qi=(...t)=>{const e=Zi().createApp(...t),{mount:s}=e;return e.mount=n=>{const i=Dl(n);if(!i)return;const r=e._component;!R(r)&&!r.render&&!r.template&&(r.template=i.innerHTML),i.nodeType===1&&(i.textContent="");const o=s(i,!1,Nl(i));return i instanceof Element&&(i.removeAttribute("v-cloak"),i.setAttribute("data-v-app","")),o},e};function Nl(t){if(t instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&t instanceof MathMLElement)return"mathml"}function Dl(t){return B(t)?document.querySelector(t):t}function jl(t,e){const s=e;ni(()=>{var l;const n=Hi();if(!n)return;const i=(l=n.proxy)==null?void 0:l.$el;if(!i)return;const r=i.getRootNode();if(!(r instanceof ShadowRoot)||r.querySelector(`style[data-shadow-styles="${s}"]`))return;const o=document.createElement("style");o.setAttribute("data-shadow-styles",s),o.textContent=t,r.appendChild(o)})}const $l=".stl{display:flow-root;width:100%;min-height:100%;background:#f3f3f1;color:#3b463d;font-family:Public Sans,-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;-webkit-font-smoothing:antialiased;--stl-accent:#92b195;--stl-border:#d1d4cd;--stl-elevated:#ffffff;--stl-muted:#6d766e}.stl-top{display:flex;align-items:center;gap:10px;padding:11px 16px;border-bottom:1px solid var(--stl-border);background:#fff;position:sticky;top:0;z-index:5}.stl-brand{display:inline-flex;align-items:center}.stl-brand:empty{display:none}.stl-title{font-size:15px;font-weight:600;letter-spacing:-.01em;color:#3b463d}.stl-meta{color:var(--stl-muted);font-size:12px;margin-left:auto;display:inline-flex;align-items:center;gap:8px}.stl-stack{display:flex;flex-direction:column}.stl-sec{display:flex;flex-direction:column;min-width:0;border-bottom:1px solid var(--stl-border)}.stl-sec:last-child{border-bottom:0}.stl-sec-head{padding:12px 16px 8px;display:flex;align-items:baseline;gap:10px}.stl-sec-title{font-size:13px;font-weight:600;letter-spacing:.02em;color:#3b463d}.stl-sec-sub{font-size:12px;color:var(--stl-muted)}.stl-host{display:block;width:100%;min-width:0;position:relative}.stl-host>*{display:block;width:100%}.stl-host>*[style*=absolute],.stl-host>*[style*=fixed]{position:static!important;inset:auto!important}.stl-slot{display:block;width:100%}.stl-tail:empty{display:none}.stl-sec-fill{position:relative;overflow:hidden}.stl-sec-fill>.stl-host,.stl-sec-fill>.stl-slot{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}.stl-sec-fill>.stl-host>*,.stl-sec-fill>.stl-slot>*{height:100%}.stl,.stl *{scrollbar-width:thin;scrollbar-color:#c4c8c0 transparent}.stl ::-webkit-scrollbar{width:8px;height:8px}.stl ::-webkit-scrollbar-track{background:transparent}.stl ::-webkit-scrollbar-thumb{background:#c4c8c0;border-radius:8px}.stl ::-webkit-scrollbar-thumb:hover{background:#9aa197}.stl ::-webkit-scrollbar-corner{background:transparent}",tr=(t,e)=>{const s=t.__vccOpts||t;for(const[n,i]of e)s[n]=i;return s},Pe={};function Ll(t){return t?(Pe[t]||(Pe[t]=new Promise((e,s)=>{const n=document.createElement("script");n.src=t,n.onload=()=>e(),n.onerror=()=>{delete Pe[t],s(new Error("failed to load "+t))},document.head.appendChild(n)})),Pe[t]):Promise.resolve()}function kl(t,e=5e3){return typeof customElements>"u"||customElements.get(t)?Promise.resolve():customElements.whenDefined?Promise.race([customElements.whenDefined(t),new Promise((s,n)=>setTimeout(()=>n(new Error("timeout waiting for <"+t+">")),e))]):Promise.resolve()}const Vl=` +.stl { display:flow-root; width:100%; min-height:100%; background:#f3f3f1; color:#3b463d; font-family:'Public Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif; -webkit-font-smoothing:antialiased; --stl-accent:#92b195; --stl-border:#d1d4cd; --stl-elevated:#ffffff; --stl-muted:#6d766e; } +.stl-top { display:flex; align-items:center; gap:10px; padding:11px 16px; border-bottom:1px solid var(--stl-border); background:#ffffff; position:sticky; top:0; z-index:5; } +.stl-brand { display:inline-flex; align-items:center; } +.stl-brand:empty { display:none; } +.stl-title { font-size:15px; font-weight:600; letter-spacing:-0.01em; color:#3b463d; } +.stl-meta { color:var(--stl-muted); font-size:12px; margin-left:auto; display:inline-flex; align-items:center; gap:8px; } +.stl-stack { display:flex; flex-direction:column; } +.stl-sec { display:flex; flex-direction:column; min-width:0; border-bottom:1px solid var(--stl-border); } +.stl-sec:last-child { border-bottom:0; } +.stl-sec-head { padding:12px 16px 8px; display:flex; align-items:baseline; gap:10px; } +.stl-sec-title { font-size:13px; font-weight:600; letter-spacing:.02em; color:#3b463d; } +.stl-sec-sub { font-size:12px; color:var(--stl-muted); } +.stl-host { display:block; width:100%; min-width:0; position:relative; } +.stl-host > * { display:block; width:100%; } +.stl-host > *[style*="absolute"], .stl-host > *[style*="fixed"] { position:static !important; inset:auto !important; } +.stl-slot { display:block; width:100%; } +.stl-tail:empty { display:none; } +.stl-sec-fill { position:relative; overflow:hidden; } +.stl-sec-fill > .stl-host, .stl-sec-fill > .stl-slot { position:absolute; inset:0; overflow:hidden; } +.stl-sec-fill > .stl-host > *, .stl-sec-fill > .stl-slot > * { height:100%; } +.stl, .stl * { scrollbar-width:thin; scrollbar-color:#c4c8c0 transparent; } +.stl ::-webkit-scrollbar { width:8px; height:8px; } +.stl ::-webkit-scrollbar-track { background:transparent; } +.stl ::-webkit-scrollbar-thumb { background:#c4c8c0; border-radius:8px; } +.stl ::-webkit-scrollbar-thumb:hover { background:#9aa197; } +.stl ::-webkit-scrollbar-corner { background:transparent; } +`,Kl=Zn({name:"StackLayout",props:{sections:{type:Array,default:()=>[]},title:{type:String,default:""},maxSectionHeight:{type:String,default:""},minSectionHeight:{type:String,default:""}},setup(){jl(Vl,"stack-layout")},data(){return{_hosts:{},_mounted:{}}},mounted(){for(const t of this.sections||[])t.element&&this.mountSection(t)},methods:{registerHost(t,e){e&&(this._hosts[t]=e)},sectionStyle(t){const e={},s=t.maxHeight||this.maxSectionHeight,n=t.minHeight||this.minSectionHeight,i=!!(s&&n&&s===n);return s&&(e.maxHeight=s,i||(e.overflow="auto")),n&&(e.minHeight=n),Object.keys(e).length?e:null},hasDefiniteHeight(t){const e=t.maxHeight||this.maxSectionHeight,s=t.minHeight||this.minSectionHeight;return!!(e&&s&&e===s)},mountSection(t){if(this._mounted[t.key])return;this._mounted[t.key]=!0;const e=this._hosts[t.key];e&&Ll(t.src).then(()=>kl(t.element)).then(()=>{if(!customElements.get(t.element))return;const s=document.createElement(t.element),n=t.attrs||{};for(const i in n){const r=n[i];try{s[i]=r}catch{}try{s.setAttribute(i,r==null?"":String(r))}catch{}}e.innerHTML="",e.appendChild(s)}).catch(()=>{})}}}),Ul={class:"stl"},Bl={key:0,class:"stl-top"},Wl={class:"stl-brand"},zl={key:0,class:"stl-title"},ql={class:"stl-meta"},Gl={class:"stl-stack"},Jl={key:0,class:"stl-sec-head"},Yl={class:"stl-sec-title"},Xl={key:0,class:"stl-sec-sub"},Zl={key:2,class:"stl-slot"},Ql={class:"stl-tail"};function tc(t,e,s,n,i,r){return ut(),$t("div",Ul,[t.$slots.brand||t.$slots.meta||t.title?(ut(),$t("header",Bl,[Xt("span",Wl,[ns(t.$slots,"brand")]),t.title?(ut(),$t("b",zl,Ke(t.title),1)):fs("",!0),Xt("span",ql,[ns(t.$slots,"meta")])])):fs("",!0),Xt("div",Gl,[(ut(!0),$t(ct,null,bo(t.sections,o=>(ut(),$t("section",{key:o.key,class:ke(["stl-sec",{"stl-sec-fill":t.hasDefiniteHeight(o)}]),style:Le(t.sectionStyle(o))},[o.title?(ut(),$t("div",Jl,[Xt("b",Yl,Ke(o.title),1),o.sub?(ut(),$t("span",Xl,Ke(o.sub),1)):fs("",!0)])):fs("",!0),o.element?(ut(),$t("div",{key:1,class:"stl-host",ref_for:!0,ref:l=>t.registerHost(o.key,l)},null,512)):(ut(),$t("div",Zl,[ns(t.$slots,"section-"+o.key)]))],6))),128)),Xt("div",Ql,[ns(t.$slots,"default")])])])}const ec=tr(Kl,[["render",tc],["styles",[$l]]]),sc=":host{display:block;width:100%}",er="88svh",nc=Ml(tr({__name:"research-map-plus-grid",setup(t){const e=[{key:"map",element:"doxa-research-map",src:"../../doxa-research-map/doxa-research-map.js",minHeight:er,maxHeight:er},{key:"grid",element:"people-groups-grid",src:"../../people-groups-grid/people-groups-grid.js",attrs:{"show-search":"true","show-filters":"true","show-total":"true"}}];return(s,n)=>(ut(),ls(ec,{sections:e}))}},[["styles",[sc]]]));typeof customElements<"u"&&(customElements.get("research-map-plus-grid")||customElements.define("research-map-plus-grid",nc))})(); diff --git a/public/doxa-maps/research-map-plus-grid/research-map-plus-grid/default/index.html b/public/doxa-maps/research-map-plus-grid/research-map-plus-grid/default/index.html new file mode 100644 index 000000000..d7634a065 --- /dev/null +++ b/public/doxa-maps/research-map-plus-grid/research-map-plus-grid/default/index.html @@ -0,0 +1,179 @@ + + + + + + default · research-map-plus-grid + + + + + +
+
loading…
+ + + + + + + + diff --git a/public/doxa-maps/research-map-plus-grid/research-map-plus-grid/index.html b/public/doxa-maps/research-map-plus-grid/research-map-plus-grid/index.html new file mode 100644 index 000000000..14871f279 --- /dev/null +++ b/public/doxa-maps/research-map-plus-grid/research-map-plus-grid/index.html @@ -0,0 +1,179 @@ + + + + + + research-map-plus-grid · research-map-plus-grid + + + + + +
+
loading…
+ + + + + + + + diff --git a/public/doxa-maps/template-bundle/index.html b/public/doxa-maps/template-bundle/index.html index 160ea8ba4..edb4f08a1 100644 --- a/public/doxa-maps/template-bundle/index.html +++ b/public/doxa-maps/template-bundle/index.html @@ -130,7 +130,7 @@ header.top .sub { margin-top: 3px; font: 12px/1.4 var(--sans); color: var(--mut) + window.FORGE.manifest = {"schema":"doxa-maps-manifest@1","generatedFrom":"plugin-designs/*/*.vue","embedBase":".","bundleCount":19,"profileCount":28,"bundles":[{"bundle":"template-bundle","scriptUrl":"./template-bundle/template-bundle.js","output":"doxa-maps/template-bundle/template-bundle.js","integrity":"sha384-aIcrWHM2nmCSPqnMA+9xMC8jfc5ynJ+/eFCrR+WwZcQViaXErkZEjzV2fw/p8IoH","elements":["template-bundle"],"profiles":[{"profile":"template-map-a","file":"template-map-a.vue","description":"Minimal example profile A — a colored placeholder, no Mapbox or data.","element":"template-bundle","type":"single","isMap":false,"iframeUrl":"./template-bundle/template-map-a/index.html","scriptUrl":"./template-bundle/template-bundle.js","embed":{"iframe":"\u003ciframe src=\"./template-bundle/template-map-a/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./template-bundle/template-bundle.js\" integrity=\"sha384-aIcrWHM2nmCSPqnMA+9xMC8jfc5ynJ+/eFCrR+WwZcQViaXErkZEjzV2fw/p8IoH\" crossorigin=\"anonymous\">\u003c/script>\n\u003ctemplate-bundle profile-config='{\"profile\":\"template-map-a\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/template-bundle>"},"bundle":"template-bundle"},{"profile":"template-map-b","file":"template-map-b.vue","description":"Minimal example profile B — a second profile in the same bundle.","element":"template-bundle","type":"single","isMap":false,"iframeUrl":"./template-bundle/template-map-b/index.html","scriptUrl":"./template-bundle/template-bundle.js","embed":{"iframe":"\u003ciframe src=\"./template-bundle/template-map-b/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen>\u003c/iframe>","script":"\u003cscript>window.MAP_APP_API_URL=\"https://pray.doxa.life\";\u003c/script>\n\u003cscript src=\"./template-bundle/template-bundle.js\" integrity=\"sha384-aIcrWHM2nmCSPqnMA+9xMC8jfc5ynJ+/eFCrR+WwZcQViaXErkZEjzV2fw/p8IoH\" crossorigin=\"anonymous\">\u003c/script>\n\u003ctemplate-bundle profile-config='{\"profile\":\"template-map-b\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'>\u003c/template-bundle>"},"bundle":"template-bundle"}]}]};