diff --git a/plugin-designs/dashboard-plus-grid/dashboard-plus-grid.vue b/plugin-designs/dashboard-plus-grid/dashboard-plus-grid.vue index e43f72328..99c4fde58 100644 --- a/plugin-designs/dashboard-plus-grid/dashboard-plus-grid.vue +++ b/plugin-designs/dashboard-plus-grid/dashboard-plus-grid.vue @@ -27,15 +27,15 @@ import PeopleGroupsGrid from '../people-groups-grid/people-groups-grid.vue' // why the diagnosis rests on the row IDENTITY fingerprint being unchanged too. // // NEITHER HALF WAS BROKEN; THE LINK WAS ABSENT. The grid's receiving end already works -// (people-groups-grid.vue:60-64 declares all five props and watches them), and the dashboard +// (people-groups-grid.vue declares the filter props in defineProps and watches them all), and the dashboard // now emits (`dashboard-filter`). This handler is the translation layer between them, because // the two speak different vocabularies: the dashboard's bus keys are snake_case facet names // from dashboard.config.js, the grid's props are camelCase. // -// ONLY FOUR OF THE DASHBOARD'S TWELVE FACETS MAP. The config defines religion, +// ONLY FIVE OF THE DASHBOARD'S TWELVE FACETS MAP. The config defines religion, // religion_family, wagf_region, wagf_block, country_code, engagement_status, language_family, // primary_language, affinity_bloc, cluster, people_group and rop1 — but the grid accepts only -// query/wagfRegion/wagfBlock/rop1/religion. The unmapped eight are deliberately DROPPED rather +// query/wagfRegion/wagfBlock/rop1/religion/countryCode. The unmapped seven are DROPPED rather // than guessed at: pushing a value into a prop the grid filters differently would silently // show the WRONG rows, which is worse than the honest current behaviour of not narrowing on // that axis. Widening this map means adding real props to the grid first. @@ -44,19 +44,38 @@ import PeopleGroupsGrid from '../people-groups-grid/people-groups-grid.vue' // `religion_family` is NOT `religion`, even though the names invite it. Measured: clicking the // facet "Hinduism 693" sets filterSet.religion_family = "Hinduism" (a family NAME, derived in // dashboard.config.js from the FIRST LETTER of the religion code). The grid's `religion` prop -// matches the religion CODE/value (people-groups-grid.vue:118 → :217). Mapping family→religion +// matches the religion CODE/value (people-groups-grid.vue: propFilters → valueMatches). Mapping family→religion // would compare "Hinduism" against codes and filter the grid to ZERO rows — a broken screen // that looks like a data bug. A real religion_family filter needs a matching prop on the grid. +// +// ★ COUNTRY WAS THE FIFTH TO EARN ITS MAPPING (Driver-reported 2026-09-22: "when I click on +// India in the top countries nothing happens and the people groups grid just stays the same"). +// That report was correct, and the cause was this map: `country_code` was one of the eight +// dropped facets, so the "Top countries" chart had no prop to reach and the grid could not +// react. The fix was NOT to guess a mapping — it was to add a real `countryCode` prop to the +// grid first, then map onto it, which is the procedure the paragraph above prescribes. +// +// It passes the same test religion_family FAILS. The test is "does the facet filter over the +// SAME field as the prop?": +// religion_family → DERIVED (first letter of the religion code → "Hinduism"); no such field +// exists on a row. Still dropped. +// country_code → dashboard.config.js:80 is `get: (r) => lbl(r.country_code)`, the label of +// the very field the grid's filter reads. Same field, same rows. +// The label-vs-value gap that remains ("India" here, "IND" in the row) is absorbed by the +// grid's shared valueMatches() normaliser, which compares against value AND label. Verified on +// the live 2,107 rows: 175 countries, 100% populated, and zero normalisation collisions between +// any two of them. Seven facets remain deliberately unmapped, on the same rule. const FACET_TO_PROP = { - wagf_region: 'wagfRegion', - wagf_block: 'wagfBlock', - rop1: 'rop1', - religion: 'religion', + wagf_region: 'wagfRegion', + wagf_block: 'wagfBlock', + rop1: 'rop1', + religion: 'religion', + country_code: 'countryCode', } // Empty string (not null) is the grid's documented "no filter" value for every axis, so a // cleared facet must RESET its prop rather than leave the previous value stuck. -const filter = reactive({ query: '', wagfRegion: '', wagfBlock: '', rop1: '', religion: '' }) +const filter = reactive({ query: '', wagfRegion: '', wagfBlock: '', rop1: '', religion: '', countryCode: '' }) function onDashboardFilter({ filterSet = {}, searchTerm = '' } = {}) { filter.query = searchTerm || '' @@ -126,6 +145,7 @@ const sections = [ :wagf-block="filter.wagfBlock" :rop1="filter.rop1" :religion="filter.religion" + :country-code="filter.countryCode" :show-search="false" :show-filters="false" :show-total="false" /> diff --git a/plugin-designs/people-groups-grid/people-groups-grid.vue b/plugin-designs/people-groups-grid/people-groups-grid.vue index 0ea5c48d4..7daff9b14 100644 --- a/plugin-designs/people-groups-grid/people-groups-grid.vue +++ b/plugin-designs/people-groups-grid/people-groups-grid.vue @@ -19,10 +19,15 @@ * - `show-search` / `show-filters` ([Boolean,String], default true) TURN OFF its own * controls so an external header (e.g. the Big-Picture Cat-4 shell) can drive it. * - External filter props feed it when the matching control is hidden: - * query, wagfRegion, wagfBlock, rop1 (people-group), religion - * …the FOUR dropdown axes (Region / Block / People-Group / Religion). Country is the - * 5th axis and is EXCLUDED here per Driver. Precedence = internal control (when shown) - * ELSE the incoming prop (local-else-prop). + * query, wagfRegion, wagfBlock, rop1 (people-group), religion, countryCode + * …the four dropdown axes (Region / Block / People-Group / Religion) PLUS Country. + * Precedence = internal control (when shown) ELSE the incoming prop (local-else-prop). + * + * ★ COUNTRY IS PROP-ONLY, NOT A FIFTH DROPDOWN. The Driver's exclusion of Country was + * about this element's OWN CONTROLS — it ships four dropdowns, not five, and that is + * unchanged (see extractFilterOptions + the filters__panel template). What is added is a + * `countryCode` INPUT so a host that already owns a country control (the cap-4 + * dashboard's "Top countries" chart) can drive the grid. Nothing new is rendered. * - Emits `groups-filtered` { query, activeFilters, total, slugs } on every change — * BOTH a Vue emit AND a native bubbling+composed DOM CustomEvent, so a plain host page * hears it when the element is embedded standalone. @@ -61,13 +66,50 @@ const props = defineProps({ showTotal: { type: [Boolean, String], default: true }, // ── external filter props (used when the matching internal control is hidden) ── - // THE FOUR axes (Country excluded per Driver): Region / Block / People-Group / Religion. + // The four dropdown axes — Region / Block / People-Group / Religion — plus Country. query: { type: String, default: '' }, wagfRegion: { type: String, default: '' }, wagfBlock: { type: String, default: '' }, rop1: { type: String, default: '' }, // "People Group" axis (rop1) religion: { type: String, default: '' }, + // ★ COUNTRY — WHY IT WAS DROPPED, AND WHAT MAKES IT SAFE TO MAP NOW. + // + // THE DRIVER'S BUG (reported 2026-09-22): "when I click on India in the top countries nothing + // happens and the people groups grid just stays the same." That was accurate and the cause was + // NOT a wiring fault. The cap-4 composite's FACET_TO_PROP translates dashboard facet keys to + // grid props, and it mapped only four; `country_code` was one of eight facets deliberately + // DROPPED, on the standing rule that it is better to not narrow on an axis than to push a value + // into a prop that filters differently and silently show the WRONG rows. With no country prop + // to land in, a country selection had nowhere to go — so the honest fix is to add the prop + // here FIRST, which is what this is. (See the composite's header for the rule + the + // religion_family worked example.) + // + // WHY THIS ONE IS SAFE, WHERE religion_family IS NOT. The rule the composite states is: never + // map a facet onto a prop that filters over a DIFFERENT field. Measured against that test: + // religion_family — dashboard.config.js DERIVES it (first letter of the religion code → + // "Hinduism"). There is no `religion_family` field on a row at all, so it + // could only be aimed at `religion`, which holds CODES. Different field → + // unsafe → still dropped. + // country_code — dashboard.config.js:80 is `get: (r) => lbl(r.country_code)`. That is the + // LABEL OF THE VERY SAME FIELD this filter reads, `u.country_code`. Same + // field, same 2,107 rows, nothing derived. Only the SPELLING differs. + // So country passes the test on its merits; it is not an exception to the rule. + // + // THE SPELLING DIFFERENCE IS ALREADY HANDLED — see valueMatches() below. MEASURED on the live + // API (2,107 rows, 2026-09-22): country_code is a {value,label} pair with an ALPHA-3 machine + // value and a human label — {"value":"IND","label":"India"} — across 175 distinct countries, + // populated on 100% of rows (zero nulls). The dashboard emits the LABEL ("India"); the row + // stores "IND". A strict === would filter to zero, which is the same defect the label-vs-value + // fix already addressed for region. Routing country through valueMatches() makes EITHER + // vocabulary work: it normalises and compares against value AND label, so "India", "india" and + // "IND" all select the same 855 rows. + // + // AND THE WIDENING IS NOT OVER-WIDE. norm() strips case and [\s_&-], so the fair question is + // whether two DIFFERENT countries can collapse onto one key and over-match. Checked over all + // 175 values and all 175 labels: ZERO collisions. Country is safe on both sides of the match. + countryCode: { type: String, default: '' }, + // ── presentation knobs copied from UupgsList (defaults preserve today's behaviour) ── perPage: { type: Number, default: 24 }, morePerPage: { type: Number, default: 0 }, @@ -121,6 +163,10 @@ const propFilters = computed(() => { if (props.wagfBlock) f.wagf_block = { value: props.wagfBlock, label: lbl(props.wagfBlock) } if (props.rop1) f.rop1 = { value: props.rop1, label: lbl(props.rop1) } if (props.religion) f.religion = { value: props.religion, label: lbl(props.religion) } + // The key MUST be the API field name `country_code`, not the prop name: applyDropdownFilters + // indexes the row with it directly (u[field]). camelCase here would read u.countryCode, which + // is undefined on every row, and filter the grid to zero. + if (props.countryCode) f.country_code = { value: props.countryCode, label: lbl(props.countryCode) } return f }) const activeFilters = computed(() => (useFilters.value ? localFilters.value : propFilters.value)) @@ -187,14 +233,43 @@ function toggleExact() { } // ── copied from UupgsList: dropdown filtering + faceted counts + Fuse search ──── + +// TWO VOCABULARIES MEET HERE, AND A STRICT === SILENTLY FILTERED TO ZERO. +// +// THE BUG (Driver-reported + measured live 2026-09-22, dashboard-plus-grid leaf). Picking a +// region in the dashboard above showed "1,309" in its own chart while the grid below said +// "no people groups match this filter" — every host-driven selection produced ZERO cards. +// Neither half was broken and the event wiring was correct; the two sides simply SPELL the +// same value differently: +// the dashboard emits the human LABEL ...... "Asia", "North America & non-Spanish Caribbean" +// the API stores the machine VALUE ......... "asia", "north_america_&_non-spanish_caribbean" +// `vl?.value === selection.value` compares those literally, so it never matched. +// +// ★ WHY THE GRID'S OWN DROPDOWNS ALWAYS WORKED — and why no gate caught this. Those options +// are built by extractFilterOptions() FROM THE DATA ITSELF, so that path compares "asia" to +// "asia" and can never mismatch. Only the HOST-PROP path (see the props→activeFilters bridge +// above, which wraps an incoming prop verbatim) can inject a label into this comparison. The +// defect therefore exists ONLY in the composite, which is why the standalone grid is fine and +// verify:gate1 passes 13/13 on the same 2,107 records. +// +// THE FIX IS A NORMALISING MATCH, NOT A TRANSLATION TABLE. A lookup mapping label→value would +// need maintaining for every axis and would rot the moment the API adds a region. Instead +// compare both the value AND the label, case- and separator-insensitively, so EITHER +// vocabulary works and a new value needs no code change. Kept deliberately narrow: it only +// widens what counts as equal, so a genuine non-match still filters to nothing. +const norm = (s) => String(s ?? '').toLowerCase().replace(/[\s_&-]+/g, '') +function valueMatches(vl, selection) { + if (!vl) return false + const want = norm(selection?.value) + if (!want) return false + return norm(vl.value) === want || norm(vl.label) === want +} + function applyDropdownFilters(list) { let filtered = list for (const [field, selection] of Object.entries(activeFilters.value)) { if (field === 'exact') { filtered = filtered } else { - filtered = filtered.filter((u) => { - const vl = u[field] - return vl?.value === selection.value - }) + filtered = filtered.filter((u) => valueMatches(u[field], selection)) } } return filtered @@ -214,7 +289,17 @@ function extractFilterOptions() { .map(([value, { label, count }]) => ({ value, label, count })) .sort((a, b) => a.label.localeCompare(b.label)) } - // The FOUR axes only (Country excluded per Driver). + // THE FOUR AXES ONLY — Country is deliberately absent here, and that is not an oversight. + // filterOptions is what RENDERS the dropdowns (see the filters__panel template), so adding + // country_code would grow this element a FIFTH dropdown, which is exactly the control the + // Driver excluded. The new `countryCode` prop is an INPUT, not a control: it reaches the rows + // through propFilters → activeFilters → applyDropdownFilters without ever passing through here. + // + // The cross-filtering still comes out right. updateFilterOptionCounts() below iterates + // Object.keys(filterOptions) for the fields it RECOMPUTES, but feeds applyWith() the whole of + // activeFilters minus that one field — so an incoming country selection DOES narrow the four + // visible counts (pick India and Religion re-counts over 855 rows, not 2,107), it simply never + // gets a picker of its own. Input, not control: that is the whole distinction. filterOptions.value = { wagf_region: extract('wagf_region'), wagf_block: extract('wagf_block'), @@ -245,11 +330,14 @@ function updateFilterOptionCounts() { } // helper: apply a specific filter-set (used by the faceted-count cross-filter) +// Uses the same valueMatches() as applyDropdownFilters: if the two disagreed, the facet COUNTS +// would contradict the rows actually shown (a chart reading 1,309 above an empty list — exactly +// the symptom the Driver reported). One matcher, both call sites. function applyWith(filters, list) { let filtered = list for (const [field, selection] of Object.entries(filters)) { if (field === 'exact') continue - filtered = filtered.filter((u) => u[field]?.value === selection.value) + filtered = filtered.filter((u) => valueMatches(u[field], selection)) } return filtered } @@ -394,7 +482,7 @@ async function getUUPGs() { } // external prop-driven filters should re-filter the grid (when controls are hidden). -watch(() => [props.query, props.wagfRegion, props.wagfBlock, props.rop1, props.religion, useSearch.value, useFilters.value], () => { +watch(() => [props.query, props.wagfRegion, props.wagfBlock, props.rop1, props.religion, props.countryCode, useSearch.value, useFilters.value], () => { page.value = 1 filterUUPGs() }) diff --git a/plugin-designs/research-dashboard/src/components/dashboards/DashboardFacetRail.vue b/plugin-designs/research-dashboard/src/components/dashboards/DashboardFacetRail.vue index 54f7d2599..df0758b1f 100644 --- a/plugin-designs/research-dashboard/src/components/dashboards/DashboardFacetRail.vue +++ b/plugin-designs/research-dashboard/src/components/dashboards/DashboardFacetRail.vue @@ -299,7 +299,9 @@ useShadowStyles(` /* gap:0 so consecutive trunk spans butt flush and their 1px rules form ONE continuous line (an 8px flex gap would break each level's rule into a dashed ladder). The label/bar/count spacing that the gap used to provide is restored by margin-left on .fr-lbl below. */ - .fr-row{ position:relative; display:flex; align-items:center; gap:0; padding:3px 12px 3px 14px; cursor:pointer; font-size:12px; color:var(--dx-text, #3b463d); } + /* min-height replaces an implicit one-line height so a WRAPPED label (see .fr-lbl) grows the + row instead of overflowing it; single-line rows keep their previous rhythm. */ + .fr-row{ position:relative; display:flex; align-items:center; gap:0; padding:3px 12px 3px 14px; min-height:22px; cursor:pointer; font-size:12px; color:var(--dx-text, #3b463d); } .fr-row:hover{ background:var(--dx-surface, #f3f3f1); } /* Indentation is carried by the TRUNK SPANS (one 12px span per ancestor level), not by padding-left — so depth is drawn as a connected tree instead of implied by whitespace. @@ -338,8 +340,23 @@ useShadowStyles(` .fr-sw{ flex:0 0 auto; width:9px; height:9px; border-radius:2px; margin-left:4px; box-shadow:inset 0 0 0 1px rgba(59,70,61,.18); } /* re-introduce the inter-column spacing the row's gap used to supply (trunks stay flush) */ - .fr-lbl{ flex:0 1 auto; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; margin-left:6px; } - .fr-bar{ flex:1 1 auto; height:6px; min-width:24px; background:var(--dx-surface, #f3f3f1); border-radius:3px; overflow:hidden; margin-left:8px; } + /* WRAP, DON'T ELLIPSISE — the COUNT is the information, and nowrap was hiding it. + Driver-reported 2026-09-22: "North America and non-Spanish Caribbean is way too long... I + can't even scroll right to see the numbers", same for "Chinese folk religion". The old rule + was white-space:nowrap + overflow:hidden + text-overflow:ellipsis, which let a long label + eat the row; because .fr-body is overflow-x:hidden (vertical scroll only, by design), there + was NO way to scroll right and recover the number. An ellipsis hid the label AND cost the count. + Wrapping to a second line keeps both readable at the rail's fixed width. + overflow-wrap:anywhere (not break-all) breaks only when a word genuinely cannot fit, so + ordinary labels still break at spaces. The trunk glyphs stay aligned because .fr-trunk is + align-self:stretch — it grows with the row instead of assuming one text line. */ + .fr-lbl{ flex:1 1 auto; min-width:0; white-space:normal; overflow-wrap:anywhere; line-height:1.3; margin-left:6px; } + /* The bar YIELDS to the label now that the label wraps (flex:1 1 auto above). Previously both + were flex:1 1 auto and the bar's 24px floor competed with the text for the same row; with a + wrapping label the bar must be the element that gives way, so it is capped and allowed to + shrink to zero-ish on a narrow rail. The COUNT (.fr-cnt, flex:0 0 auto) never shrinks — it is + the number the Driver could not previously see. */ + .fr-bar{ flex:0 1 56px; height:6px; min-width:0; background:var(--dx-surface, #f3f3f1); border-radius:3px; overflow:hidden; margin-left:8px; } /* magnitude fill — a QUANTITY bar, not a categorical series, so it takes the sage accent rather than a hue of its own (the pale blue here was the last of the drift). */ .fr-bar i{ display:block; height:100%; background:var(--dx-accent, #92b195); border-radius:3px; transition:width .3s; } diff --git a/plugin-designs/research-dashboard/src/components/dashboards/DashboardMapPanel.vue b/plugin-designs/research-dashboard/src/components/dashboards/DashboardMapPanel.vue index f2944b4ae..f214aa5c3 100644 --- a/plugin-designs/research-dashboard/src/components/dashboards/DashboardMapPanel.vue +++ b/plugin-designs/research-dashboard/src/components/dashboards/DashboardMapPanel.vue @@ -425,18 +425,177 @@ function toggleProjection() { projection.value = projection.value === 'globe' ? // ── RDASH-ENHANCE: fly-to on selection. Any facet brush (tree node / chart slice / region / row) // flies the map to fit the in-scope people groups; a pin focus flies to that PG (deeper drill). ── -function boundsOf(rows) { - const pts = rows.filter((r) => Number(r.latitude) && Number(r.longitude)) - if (!pts.length) return null - let w = 180, s = 90, e = -180, n = -90 - for (const r of pts) { const x = Number(r.longitude), y = Number(r.latitude); if (x < w) w = x; if (x > e) e = x; if (y < s) s = y; if (y > n) n = y } - return [[w, s], [e, n]] +// +// ╔═ BUG-CAMERA-FLIES-TO-NORTH-POLE-ON-FLAT-FACETS (Driver, 2026-09-22) ════════════════════╗ +// "when I click unengaged status it just goes to the north pole. Deaf people, it just goes to +// the north pole... it needs to take you to the highest concentration location geographically, +// not to the North Pole." +// +// ── WHAT WAS MEASURED (live API, 2,107 rows, pray.doxa.life, 2026-09-22) ── +// The old code fitBounds()'d the raw min/max bbox of the in-scope rows. For the Unengaged +// facet (2,080 of 2,107 rows) that bbox measured: +// W -176.18 S -36.85 E 178.48 N 78.22 → 354.7 deg of lng, 115.1 deg of lat +// Run through the REAL MapLibre 5.6 in a real WebGL browser, fitBounds resolved that box to: +// center [1.15, 41.15] zoom 2.06 (globe projection; identical center under mercator) +// and map.project([lng, 90]) put the NORTH POLE at screen y=99 in an 800px-tall viewport — +// i.e. the pole is genuinely in frame, occupying the top third, which is precisely what the +// Driver is describing. The densest data cell (75E/15N) was shoved to x=939, onto the right +// limb of the globe where the sphere foreshortens it into an unreadable sliver. +// +// ── WHAT THE BUG IS *NOT* (both hypotheses tested and DISPROVED) ── +// 1. NOT a degenerate/empty-bounds fallback to something like [0, 90]. fitBounds threw no +// error, hit no fallback, and returned a perfectly valid finite center. cameraForBounds() +// agreed with fitBounds() exactly. There is no degenerate path being taken here at all. +// 2. NOT "the bbox center is the pole". The bbox center latitude is 20.69 — nowhere near a +// pole. The camera still ends up at 41.15. +// +// ── THE ACTUAL ROOT CAUSE (two effects stacking) ── +// a. A min/max bbox is an OUTLIER statistic. 61 of 2,080 unengaged rows (2.9%) lie north of +// 41N, and a couple reach 78.22N — yet those few rows drag the entire frame ~23 deg north. +// The MEDIAN unengaged row sits at 18.08N. The camera was framing the tail, not the mass. +// b. Vertical fitting is NON-LINEAR in latitude (Mercator-family y). So the northern half of +// a tall box eats disproportionate screen height, pulling the resolved center (41.15) well +// north of the box's own midpoint (20.69). On the GLOBE projection — which is the panel's +// default (see `projection` above, initialised to 'globe') — that northward tilt is what +// swings the pole into view and rolls the equatorial data mass off to the limb. This is +// why the Driver tied it to the globe/flat setting: flat shows the same bad center, but a +// sphere makes it look like you flew to the Arctic. +// +// ── THE FIX: frame the CONCENTRATION, and make a pole unreachable by construction ── +// We fit a PERCENTILE-TRIMMED box (P10..P90 on each axis) instead of the raw extent, and we +// anchor the camera on the MEDIAN point. Measured on the same live rows, trimming collapses +// the latitude span from 115.1 to 32.8 deg, and the resulting fit centers at [45.91, 16.87] +// with the north pole at screen y = -138 — OFF-SCREEN. Verified by rendering the real 2,080 +// points: the South-Asia cluster is large and legible and no pole appears. +// +// Why the MEDIAN as the anchor: of the candidates measured for "highest concentration", +// median lng 75.25 -> 73% of rows within +/-45 deg ← best +// 3x3 densest-bin centroid 78.51 -> 70% +// densest 15-deg bin 82.50 -> 68% +// trimmed midpoint 45.91 -> 68% +// The median also wins on properties, not just this dataset: it is the SAME cheap statistic on +// both axes, it is by definition an actual data latitude, and it therefore CANNOT be a pole +// unless a majority of the selection genuinely sits at a pole. That is the structural guarantee +// the card asked for — the degenerate path cannot resolve to a pole because the pole is never +// a candidate value, rather than being fenced off by an after-the-fact clamp. +// +// ── WHAT WAS REJECTED ── +// • Clamping the resolved center latitude (e.g. to +/-60). Treats the symptom: the camera +// would stop showing the pole but would still be framing the outlier tail rather than the +// concentration, so "deaf people" would land in empty ocean instead of empty Arctic. +// • A k-means / DBSCAN densest-cluster search. Genuinely better framing for multi-lobe sets, +// but it is O(n*k*i) on every facet click, non-deterministic without a seed, and this runs +// on a 2,107-row set behind a 260ms debounce in a dashboard cell. Percentile trim + median +// is one sort per axis, fully deterministic, and measured sufficient. +// • Reusing useMapFly's _robustLngExtent (which already does trim + densest-bin). It solves +// only LONGITUDE — its latitude handling is still (minLat+maxLat)/2, i.e. exactly the +// outlier-driven statistic that causes THIS bug. It is also module-private. Fixing the +// library's latitude path is the right follow-up, but it is a shared-surface change across +// every map profile and does not belong in a P0 panel fix. +// +// Antimeridian: the trim is applied to longitudes unwrapped at their largest circular gap, so +// a Pacific set holding both -176 and +178 reads as one contiguous ~6-deg span rather than a +// false 355-deg span. Same technique the library uses; see useMapFly.js _robustLngExtent. +// ╚═════════════════════════════════════════════════════════════════════════════════════════╝ + +// Fraction trimmed off EACH tail before framing. 0.10 was chosen against the live data: it is +// aggressive enough to drop the Arctic tail that caused this bug (115.1 -> 32.8 deg of lat) while +// still keeping 80% of the selection inside the frame. Anything visible outside the box is not +// hidden — it simply does not get a vote on where the camera points. +const FIT_TRIM = 0.10 +// Sanity floor: trimming is pointless (and can over-crop) on a handful of rows, where every row +// is already "the concentration". Below this we frame the full extent. +const FIT_TRIM_MIN_ROWS = 12 + +// Usable [lng, lat] for a row, or null. Number.isFinite — NOT truthiness: the old code's +// `Number(r.latitude) && Number(r.longitude)` silently discarded every row sitting exactly on +// the equator or the prime meridian. Rejects only the exact 0,0 pair, which is the null-island +// sentinel a failed geocode degrades into, plus out-of-range junk. +function coordOf(r) { + const x = Number(r.longitude), y = Number(r.latitude) + if (!Number.isFinite(x) || !Number.isFinite(y)) return null + if (x === 0 && y === 0) return null + if (y < -90 || y > 90 || x < -180 || x > 180) return null + return [x, y] } + +// Value at fraction p of a sorted numeric array (p=0.5 is the median). Nearest-rank, so the +// result is always an ACTUAL observed value — never an interpolated coordinate that no row +// occupies, which is what keeps the median anchor physically meaningful. +function pctl(sorted, p) { + if (!sorted.length) return NaN + const i = Math.min(sorted.length - 1, Math.max(0, Math.round(p * (sorted.length - 1)))) + return sorted[i] +} + +// Longitudes unwrapped at their largest circular gap, so a set straddling the antimeridian +// becomes monotonic and its span/percentiles are meaningful. Returns values that may exceed +// 180; fitBounds accepts and wraps those correctly. +function unwrapLngs(xs) { + const s = xs.slice().sort((a, b) => a - b) + const n = s.length + if (n < 2) return s + let gap = -1, gapIdx = 0 + for (let i = 0; i < n; i++) { + const next = (i + 1 < n) ? s[i + 1] : s[0] + 360 + const g = next - s[i] + if (g > gap) { gap = g; gapIdx = i } + } + const start = (gapIdx + 1) % n + const out = new Array(n) + for (let k = 0; k < n; k++) { + let v = s[(start + k) % n] + if (k > 0 && v < out[k - 1]) v += 360 + out[k] = v + } + return out +} + +/** + * Camera target for a set of rows, framed on where the rows CONCENTRATE. + * + * @returns {null | { bounds:[[w,s],[e,n]], center:[lng,lat] }} + * null when no row has usable coordinates — the caller must then hold position. + * `center` is the median point and is always an anchor the fit is re-centred on, so + * a lopsided (multi-lobe) selection still points at its densest lobe. + */ +function boundsOf(rows) { + const pts = [] + for (const r of rows) { const c = coordOf(r); if (c) pts.push(c) } + if (!pts.length) return null + + const lats = pts.map((p) => p[1]).sort((a, b) => a - b) + const lngs = unwrapLngs(pts.map((p) => p[0])) + + // Below the floor, or for a single point, trimming would throw away real signal. + const t = pts.length >= FIT_TRIM_MIN_ROWS ? FIT_TRIM : 0 + const s = pctl(lats, t), n = pctl(lats, 1 - t) + const w = pctl(lngs, t), e = pctl(lngs, 1 - t) + const center = [pctl(lngs, 0.5), pctl(lats, 0.5)] + + // Degenerate box (one point, or a co-located cluster): fitBounds would resolve it at maxZoom. + // Hand back a zero-area box centred on the median and let the caller's maxZoom cap the zoom. + if (!(e > w) || !(n > s)) return { bounds: [[center[0], center[1]], [center[0], center[1]]], center } + + return { bounds: [[w, s], [e, n]], center } +} + function flyToFiltered() { const m = map.value; if (!m) return if (!Object.keys(filterSet).length) { try { m.flyTo({ center: [28, 18], zoom: 1.45, duration: 1000 }) } catch (_) {} ; return } - const b = boundsOf(filteredRows.value) - if (b) { try { m.fitBounds(b, { padding: 70, duration: 1200, maxZoom: 5.5 }) } catch (_) {} } + const t = boundsOf(filteredRows.value) + // No usable coordinates in scope: HOLD POSITION. Deliberately not a reset-to-world — an + // unrequested snap-back is motion the user did not ask for (same rule useSelectionCamera + // follows for an empty selection). + if (!t) return + try { + m.fitBounds(t.bounds, { padding: 70, duration: 1200, maxZoom: 5.5 }) + // Re-anchor on the median AFTER the fit. fitBounds derives its center from the box, which + // for a two-lobe selection (e.g. West Africa + South Asia) is the empty gap between the + // lobes; setCenter moves the camera onto the mass without changing the zoom the fit chose. + // Safe against the pole by construction: the median latitude is an observed row latitude. + m.setCenter(t.center) + } catch (_) { /* fitBounds throws on degenerate bounds — never break the dashboard */ } } let _flyT = null watch(() => JSON.stringify(filterSet), () => { clearTimeout(_flyT); _flyT = setTimeout(flyToFiltered, 260) }) diff --git a/public/.build.lock b/public/.build.lock index e9fbbebd2..7da661db2 100644 --- a/public/.build.lock +++ b/public/.build.lock @@ -1 +1 @@ -pid=3497423 started=2026-09-22T11:45:46Z by=lk10x +pid=3840928 started=2026-09-22T12:45:39Z by=lk10x diff --git a/public/doxa-maps/big-picture/big-picture.js b/public/doxa-maps/big-picture/big-picture.js index 44d0428aa..552236ea6 100644 --- a/public/doxa-maps/big-picture/big-picture.js +++ b/public/doxa-maps/big-picture/big-picture.js @@ -2,19 +2,19 @@ * @vue/shared v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/function Rn(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const Z={},dt=[],Pe=()=>{},yr=()=>!1,Xt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Zt=e=>e.startsWith("onUpdate:"),se=Object.assign,Mn=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},_o=Object.prototype.hasOwnProperty,z=(e,t)=>_o.call(e,t),F=Array.isArray,et=e=>At(e)==="[object Map]",Qt=e=>At(e)==="[object Set]",wr=e=>At(e)==="[object Date]",I=e=>typeof e=="function",te=e=>typeof e=="string",Oe=e=>typeof e=="symbol",J=e=>e!==null&&typeof e=="object",Sr=e=>(J(e)||I(e))&&I(e.then)&&I(e.catch),Cr=Object.prototype.toString,At=e=>Cr.call(e),vo=e=>At(e).slice(8,-1),en=e=>At(e)==="[object Object]",Fn=e=>te(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Et=Rn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),tn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},bo=/-\w/g,ve=tn(e=>e.replace(bo,t=>t.slice(1).toUpperCase())),mo=/\B([A-Z])/g,ye=tn(e=>e.replace(mo,"-$1").toLowerCase()),kr=tn(e=>e.charAt(0).toUpperCase()+e.slice(1)),In=tn(e=>e?`on${kr(e)}`:""),Re=(e,t)=>!Object.is(e,t),$n=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},xo=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Ar=e=>{const t=te(e)?Number(e):NaN;return isNaN(t)?e:t};let Er;const nn=()=>Er||(Er=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function ht(e){if(F(e)){const t={};for(let n=0;n{if(n){const r=n.split(wo);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function rn(e){let t="";if(te(e))t=e;else if(F(e))for(let n=0;n!!(e&&e.__v_isRef===!0),oe=e=>te(e)?e:e==null?"":F(e)||J(e)&&(e.toString===Cr||!I(e.toString))?Rr(e)?oe(e.value):JSON.stringify(e,Mr,2):String(e),Mr=(e,t)=>Rr(t)?Mr(e,t.value):et(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[Nn(r,o)+" =>"]=s,n),{})}:Qt(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Nn(n))}:Oe(t)?Nn(t):J(t)&&!F(t)&&!en(t)?String(t):t,Nn=(e,t="")=>{var n;return Oe(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +**/function Rn(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const Q={},pt=[],Re=()=>{},xr=()=>!1,Jt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Yt=e=>e.startsWith("onUpdate:"),se=Object.assign,Mn=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},_o=Object.prototype.hasOwnProperty,z=(e,t)=>_o.call(e,t),F=Array.isArray,et=e=>At(e)==="[object Map]",Xt=e=>At(e)==="[object Set]",yr=e=>At(e)==="[object Date]",I=e=>typeof e=="function",ne=e=>typeof e=="string",Me=e=>typeof e=="symbol",Y=e=>e!==null&&typeof e=="object",wr=e=>(Y(e)||I(e))&&I(e.then)&&I(e.catch),Sr=Object.prototype.toString,At=e=>Sr.call(e),vo=e=>At(e).slice(8,-1),Zt=e=>At(e)==="[object Object]",Fn=e=>ne(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Et=Rn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Qt=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},bo=/-\w/g,ve=Qt(e=>e.replace(bo,t=>t.slice(1).toUpperCase())),mo=/\B([A-Z])/g,Ce=Qt(e=>e.replace(mo,"-$1").toLowerCase()),Cr=Qt(e=>e.charAt(0).toUpperCase()+e.slice(1)),In=Qt(e=>e?`on${Cr(e)}`:""),Fe=(e,t)=>!Object.is(e,t),$n=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},xo=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Tr=e=>{const t=ne(e)?Number(e):NaN;return isNaN(t)?e:t};let Ar;const en=()=>Ar||(Ar=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function gt(e){if(F(e)){const t={};for(let n=0;n{if(n){const r=n.split(wo);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function tn(e){let t="";if(ne(e))t=e;else if(F(e))for(let n=0;n!!(e&&e.__v_isRef===!0),oe=e=>ne(e)?e:e==null?"":F(e)||Y(e)&&(e.toString===Sr||!I(e.toString))?Or(e)?oe(e.value):JSON.stringify(e,Rr,2):String(e),Rr=(e,t)=>Or(t)?Rr(e,t.value):et(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[Nn(r,o)+" =>"]=s,n),{})}:Xt(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Nn(n))}:Me(t)?Nn(t):Y(t)&&!F(t)&&!Zt(t)?String(t):t,Nn=(e,t="")=>{var n;return Me(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** * @vue/reactivity v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/let fe;class Ao{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&fe&&(fe.active?(this.parent=fe,this.index=(fe.scopes||(fe.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes){const r=this.scopes.slice();for(t=0,n=r.length;t0&&--this._on===0){if(fe===this)fe=this.prevScope;else{let t=fe;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let n,r;for(n=0,r=this.effects.length;n0)return;if(Ot){let t=Ot;for(Ot=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Pt;){let t=Pt;for(Pt=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function Nr(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Lr(e){let t,n=e.depsTail,r=n;for(;r;){const s=r.prevDep;r.version===-1?(r===n&&(n=s),Hn(r),Po(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=s}e.deps=t,e.depsTail=n}function Bn(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(jr(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function jr(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Rt)||(e.globalVersion=Rt,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Bn(e))))return;e.flags|=2;const t=e.dep,n=Q,r=Te;Q=e,Te=!0;try{Nr(e);const s=e.fn(e._value);(t.version===0||Re(s,e._value))&&(e.flags|=128,e._value=s,t.version++)}catch(s){throw t.version++,s}finally{Q=n,Te=r,Lr(e),e.flags&=-3}}function Hn(e,t=!1){const{dep:n,prevSub:r,nextSub:s}=e;if(r&&(r.nextSub=s,e.prevSub=void 0),s&&(s.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)Hn(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Po(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Te=!0;const Dr=[];function Me(){Dr.push(Te),Te=!1}function Fe(){const e=Dr.pop();Te=e===void 0?!0:e}function Br(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=Q;Q=void 0;try{t()}finally{Q=n}}}let Rt=0;class Oo{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Un{constructor(t){this.computed=t,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(t){if(!Q||!Te||Q===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==Q)n=this.activeLink=new Oo(Q,this),Q.deps?(n.prevDep=Q.depsTail,Q.depsTail.nextDep=n,Q.depsTail=n):Q.deps=Q.depsTail=n,Hr(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=Q.depsTail,n.nextDep=void 0,Q.depsTail.nextDep=n,Q.depsTail=n,Q.deps===n&&(Q.deps=r)}return n}trigger(t){this.version++,Rt++,this.notify(t)}notify(t){jn();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Dn()}}}function Hr(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)Hr(r)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Vn=new WeakMap,st=Symbol(""),Kn=Symbol(""),Mt=Symbol("");function de(e,t,n){if(Te&&Q){let r=Vn.get(e);r||Vn.set(e,r=new Map);let s=r.get(n);s||(r.set(n,s=new Un),s.map=r,s.key=n),s.track()}}function He(e,t,n,r,s,o){const i=Vn.get(e);if(!i){Rt++;return}const l=c=>{c&&c.trigger()};if(jn(),t==="clear")i.forEach(l);else{const c=F(e),h=c&&Fn(n);if(c&&n==="length"){const f=Number(r);i.forEach((g,S)=>{(S==="length"||S===Mt||!Oe(S)&&S>=f)&&l(g)})}else switch((n!==void 0||i.has(void 0))&&l(i.get(n)),h&&l(i.get(Mt)),t){case"add":c?h&&l(i.get("length")):(l(i.get(st)),et(e)&&l(i.get(Kn)));break;case"delete":c||(l(i.get(st)),et(e)&&l(i.get(Kn)));break;case"set":et(e)&&l(i.get(st));break}}Dn()}function pt(e){const t=K(e);return t===e?t:(de(t,"iterate",Mt),we(e)?t:t.map(Ae))}function on(e){return de(e=K(e),"iterate",Mt),e}function Ie(e,t){return Ve(e)?_t(ot(e)?Ae(t):t):Ae(t)}const Ro={__proto__:null,[Symbol.iterator](){return Wn(this,Symbol.iterator,e=>Ie(this,e))},concat(...e){return pt(this).concat(...e.map(t=>F(t)?pt(t):t))},entries(){return Wn(this,"entries",e=>(e[1]=Ie(this,e[1]),e))},every(e,t){return Ue(this,"every",e,t,void 0,arguments)},filter(e,t){return Ue(this,"filter",e,t,n=>n.map(r=>Ie(this,r)),arguments)},find(e,t){return Ue(this,"find",e,t,n=>Ie(this,n),arguments)},findIndex(e,t){return Ue(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ue(this,"findLast",e,t,n=>Ie(this,n),arguments)},findLastIndex(e,t){return Ue(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ue(this,"forEach",e,t,void 0,arguments)},includes(...e){return zn(this,"includes",e)},indexOf(...e){return zn(this,"indexOf",e)},join(e){return pt(this).join(e)},lastIndexOf(...e){return zn(this,"lastIndexOf",e)},map(e,t){return Ue(this,"map",e,t,void 0,arguments)},pop(){return Ft(this,"pop")},push(...e){return Ft(this,"push",e)},reduce(e,...t){return Ur(this,"reduce",e,t)},reduceRight(e,...t){return Ur(this,"reduceRight",e,t)},shift(){return Ft(this,"shift")},some(e,t){return Ue(this,"some",e,t,void 0,arguments)},splice(...e){return Ft(this,"splice",e)},toReversed(){return pt(this).toReversed()},toSorted(e){return pt(this).toSorted(e)},toSpliced(...e){return pt(this).toSpliced(...e)},unshift(...e){return Ft(this,"unshift",e)},values(){return Wn(this,"values",e=>Ie(this,e))}};function Wn(e,t,n){const r=on(e),s=r[t]();return r!==e&&!we(e)&&(s._next=s.next,s.next=()=>{const o=s._next();return o.done||(o.value=n(o.value)),o}),s}const Mo=Array.prototype;function Ue(e,t,n,r,s,o){const i=on(e),l=i!==e&&!we(e),c=i[t];if(c!==Mo[t]){const g=c.apply(e,o);return l?Ae(g):g}let h=n;i!==e&&(l?h=function(g,S){return n.call(this,Ie(e,g),S,e)}:n.length>2&&(h=function(g,S){return n.call(this,g,S,e)}));const f=c.call(i,h,r);return l&&s?s(f):f}function Ur(e,t,n,r){const s=on(e),o=s!==e&&!we(e);let i=n,l=!1;s!==e&&(o?(l=r.length===0,i=function(h,f,g){return l&&(l=!1,h=Ie(e,h)),n.call(this,h,Ie(e,f),g,e)}):n.length>3&&(i=function(h,f,g){return n.call(this,h,f,g,e)}));const c=s[t](i,...r);return l?Ie(e,c):c}function zn(e,t,n){const r=K(e);de(r,"iterate",Mt);const s=r[t](...n);return(s===-1||s===!1)&&Jn(n[0])?(n[0]=K(n[0]),r[t](...n)):s}function Ft(e,t,n=[]){Me(),jn();const r=K(e)[t].apply(e,n);return Dn(),Fe(),r}const Fo=Rn("__proto__,__v_isRef,__isVue"),Vr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Oe));function Io(e){Oe(e)||(e=String(e));const t=K(this);return de(t,"has",e),t.hasOwnProperty(e)}class Kr{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){if(n==="__v_skip")return t.__v_skip;const s=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return r===(s?o?Yr:Jr:o?Gr:qr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=F(t);if(!s){let c;if(i&&(c=Ro[n]))return c;if(n==="hasOwnProperty")return Io}const l=Reflect.get(t,n,ue(t)?t:r);if((Oe(n)?Vr.has(n):Fo(n))||(s||de(t,"get",n),o))return l;if(ue(l)){const c=i&&Fn(n)?l:l.value;return s&&J(c)?Gn(c):c}return J(l)?s?Gn(l):gt(l):l}}class Wr extends Kr{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];const i=F(t)&&Fn(n);if(!this._isShallow){const h=Ve(o);if(!we(r)&&!Ve(r)&&(o=K(o),r=K(r)),!i&&ue(o)&&!ue(r))return h||(o.value=r),!0}const l=i?Number(n)e,ln=e=>Reflect.getPrototypeOf(e);function Do(e,t,n){return function(...r){const s=this.__v_raw,o=K(s),i=et(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,h=s[e](...r),f=n?qn:t?_t:Ae;return!t&&de(o,"iterate",c?Kn:st),se(Object.create(h),{next(){const{value:g,done:S}=h.next();return S?{value:g,done:S}:{value:l?[f(g[0]),f(g[1])]:f(g),done:S}}})}}function cn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Bo(e,t){const n={get(s){const o=this.__v_raw,i=K(o),l=K(s);e||(Re(s,l)&&de(i,"get",s),de(i,"get",l));const{has:c}=ln(i),h=t?qn:e?_t:Ae;if(c.call(i,s))return h(o.get(s));if(c.call(i,l))return h(o.get(l));o!==i&&o.get(s)},get size(){const s=this.__v_raw;return!e&&de(K(s),"iterate",st),s.size},has(s){const o=this.__v_raw,i=K(o),l=K(s);return e||(Re(s,l)&&de(i,"has",s),de(i,"has",l)),s===l?o.has(s):o.has(s)||o.has(l)},forEach(s,o){const i=this,l=i.__v_raw,c=K(l),h=t?qn:e?_t:Ae;return!e&&de(c,"iterate",st),l.forEach((f,g)=>s.call(o,h(f),h(g),i))}};return se(n,e?{add:cn("add"),set:cn("set"),delete:cn("delete"),clear:cn("clear")}:{add(s){const o=K(this),i=ln(o),l=K(s),c=!t&&!we(s)&&!Ve(s)?l:s;return i.has.call(o,c)||Re(s,c)&&i.has.call(o,s)||Re(l,c)&&i.has.call(o,l)||(o.add(c),He(o,"add",c,c)),this},set(s,o){!t&&!we(o)&&!Ve(o)&&(o=K(o));const i=K(this),{has:l,get:c}=ln(i);let h=l.call(i,s);h||(s=K(s),h=l.call(i,s));const f=c.call(i,s);return i.set(s,o),h?Re(o,f)&&He(i,"set",s,o):He(i,"add",s,o),this},delete(s){const o=K(this),{has:i,get:l}=ln(o);let c=i.call(o,s);c||(s=K(s),c=i.call(o,s)),l&&l.call(o,s);const h=o.delete(s);return c&&He(o,"delete",s,void 0),h},clear(){const s=K(this),o=s.size!==0,i=s.clear();return o&&He(s,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(s=>{n[s]=Do(s,e,t)}),n}function an(e,t){const n=Bo(e,t);return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(z(n,s)&&s in r?n:r,s,o)}const Ho={get:an(!1,!1)},Uo={get:an(!1,!0)},Vo={get:an(!0,!1)},Ko={get:an(!0,!0)},qr=new WeakMap,Gr=new WeakMap,Jr=new WeakMap,Yr=new WeakMap;function Wo(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function gt(e){return Ve(e)?e:fn(e,!1,$o,Ho,qr)}function zo(e){return fn(e,!1,Lo,Uo,Gr)}function Gn(e){return fn(e,!0,No,Vo,Jr)}function Kc(e){return fn(e,!0,jo,Ko,Yr)}function fn(e,t,n,r,s){if(!J(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const o=s.get(e);if(o)return o;const i=Wo(vo(e));if(i===0)return e;const l=new Proxy(e,i===2?r:n);return s.set(e,l),l}function ot(e){return Ve(e)?ot(e.__v_raw):!!(e&&e.__v_isReactive)}function Ve(e){return!!(e&&e.__v_isReadonly)}function we(e){return!!(e&&e.__v_isShallow)}function Jn(e){return e?!!e.__v_raw:!1}function K(e){const t=e&&e.__v_raw;return t?K(t):e}function qo(e){return!z(e,"__v_skip")&&Object.isExtensible(e)&&Tr(e,"__v_skip",!0),e}const Ae=e=>J(e)?gt(e):e,_t=e=>J(e)?Gn(e):e;function ue(e){return e?e.__v_isRef===!0:!1}function he(e){return Go(e,!1)}function Go(e,t){return ue(e)?e:new Jo(e,t)}class Jo{constructor(t,n){this.dep=new Un,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:K(t),this._value=n?t:Ae(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,r=this.__v_isShallow||we(t)||Ve(t);t=r?t:K(t),Re(t,n)&&(this._rawValue=t,this._value=r?t:Ae(t),this.dep.trigger())}}function Yn(e){return ue(e)?e.value:e}const Yo={get:(e,t,n)=>t==="__v_raw"?e:Yn(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return ue(s)&&!ue(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function Xr(e){return ot(e)?e:new Proxy(e,Yo)}class Xo{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Un(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Rt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&Q!==this)return $r(this,!0),!0}get value(){const t=this.dep.track();return jr(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Zo(e,t,n=!1){let r,s;return I(e)?r=e:(r=e.get,s=e.set),new Xo(r,s,n)}const un={},dn=new WeakMap;let it;function Qo(e,t=!1,n=it){if(n){let r=dn.get(n);r||dn.set(n,r=[]),r.push(e)}}function ei(e,t,n=Z){const{immediate:r,deep:s,once:o,scheduler:i,augmentJob:l,call:c}=n,h=w=>s?w:we(w)||s===!1||s===0?tt(w,1):tt(w);let f,g,S,k,M=!1,E=!1;if(ue(e)?(g=()=>e.value,M=we(e)):ot(e)?(g=()=>h(e),M=!0):F(e)?(E=!0,M=e.some(w=>ot(w)||we(w)),g=()=>e.map(w=>{if(ue(w))return w.value;if(ot(w))return h(w);if(I(w))return c?c(w,2):w()})):I(e)?t?g=c?()=>c(e,2):e:g=()=>{if(S){Me();try{S()}finally{Fe()}}const w=it;it=f;try{return c?c(e,3,[k]):e(k)}finally{it=w}}:g=Pe,t&&s){const w=g,O=s===!0?1/0:s;g=()=>tt(w(),O)}const H=Eo(),L=()=>{f.stop(),H&&H.active&&Mn(H.effects,f)};if(o&&t){const w=t;t=(...O)=>{const j=w(...O);return L(),j}}let $=E?new Array(e.length).fill(un):un;const T=w=>{if(!(!(f.flags&1)||!f.dirty&&!w))if(t){const O=f.run();if(w||s||M||(E?O.some((j,ee)=>Re(j,$[ee])):Re(O,$))){S&&S();const j=it;it=f;try{const ee=[O,$===un?void 0:E&&$[0]===un?[]:$,k];$=O,c?c(t,3,ee):t(...ee)}finally{it=j}}}else f.run()};return l&&l(T),f=new Fr(g),f.scheduler=i?()=>i(T,!1):T,k=w=>Qo(w,!1,f),S=f.onStop=()=>{const w=dn.get(f);if(w){if(c)c(w,4);else for(const O of w)O();dn.delete(f)}},t?r?T(!0):$=f.run():i?i(T.bind(null,!0),!0):f.run(),L.pause=f.pause.bind(f),L.resume=f.resume.bind(f),L.stop=L,L}function tt(e,t=1/0,n){if(t<=0||!J(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,ue(e))tt(e.value,t,n);else if(F(e))for(let r=0;r{tt(r,t,n)});else if(en(e)){for(const r in e)tt(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&tt(e[r],t,n)}return e}/** +**/let fe;class Ao{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&fe&&(fe.active?(this.parent=fe,this.index=(fe.scopes||(fe.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes){const r=this.scopes.slice();for(t=0,n=r.length;t0&&--this._on===0){if(fe===this)fe=this.prevScope;else{let t=fe;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let n,r;for(n=0,r=this.effects.length;n0)return;if(Ot){let t=Ot;for(Ot=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Pt;){let t=Pt;for(Pt=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function $r(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Nr(e){let t,n=e.depsTail,r=n;for(;r;){const s=r.prevDep;r.version===-1?(r===n&&(n=s),Hn(r),Po(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=s}e.deps=t,e.depsTail=n}function Bn(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Lr(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Lr(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Rt)||(e.globalVersion=Rt,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Bn(e))))return;e.flags|=2;const t=e.dep,n=ee,r=Ae;ee=e,Ae=!0;try{$r(e);const s=e.fn(e._value);(t.version===0||Fe(s,e._value))&&(e.flags|=128,e._value=s,t.version++)}catch(s){throw t.version++,s}finally{ee=n,Ae=r,Nr(e),e.flags&=-3}}function Hn(e,t=!1){const{dep:n,prevSub:r,nextSub:s}=e;if(r&&(r.nextSub=s,e.prevSub=void 0),s&&(s.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)Hn(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Po(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Ae=!0;const jr=[];function Ie(){jr.push(Ae),Ae=!1}function $e(){const e=jr.pop();Ae=e===void 0?!0:e}function Dr(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=ee;ee=void 0;try{t()}finally{ee=n}}}let Rt=0;class Oo{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Un{constructor(t){this.computed=t,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(t){if(!ee||!Ae||ee===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==ee)n=this.activeLink=new Oo(ee,this),ee.deps?(n.prevDep=ee.depsTail,ee.depsTail.nextDep=n,ee.depsTail=n):ee.deps=ee.depsTail=n,Br(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=ee.depsTail,n.nextDep=void 0,ee.depsTail.nextDep=n,ee.depsTail=n,ee.deps===n&&(ee.deps=r)}return n}trigger(t){this.version++,Rt++,this.notify(t)}notify(t){jn();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Dn()}}}function Br(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)Br(r)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Vn=new WeakMap,ot=Symbol(""),Kn=Symbol(""),Mt=Symbol("");function de(e,t,n){if(Ae&&ee){let r=Vn.get(e);r||Vn.set(e,r=new Map);let s=r.get(n);s||(r.set(n,s=new Un),s.map=r,s.key=n),s.track()}}function Ve(e,t,n,r,s,o){const i=Vn.get(e);if(!i){Rt++;return}const l=c=>{c&&c.trigger()};if(jn(),t==="clear")i.forEach(l);else{const c=F(e),h=c&&Fn(n);if(c&&n==="length"){const f=Number(r);i.forEach((g,k)=>{(k==="length"||k===Mt||!Me(k)&&k>=f)&&l(g)})}else switch((n!==void 0||i.has(void 0))&&l(i.get(n)),h&&l(i.get(Mt)),t){case"add":c?h&&l(i.get("length")):(l(i.get(ot)),et(e)&&l(i.get(Kn)));break;case"delete":c||(l(i.get(ot)),et(e)&&l(i.get(Kn)));break;case"set":et(e)&&l(i.get(ot));break}}Dn()}function _t(e){const t=K(e);return t===e?t:(de(t,"iterate",Mt),ke(e)?t:t.map(Ee))}function rn(e){return de(e=K(e),"iterate",Mt),e}function Ne(e,t){return We(e)?bt(it(e)?Ee(t):t):Ee(t)}const Ro={__proto__:null,[Symbol.iterator](){return Wn(this,Symbol.iterator,e=>Ne(this,e))},concat(...e){return _t(this).concat(...e.map(t=>F(t)?_t(t):t))},entries(){return Wn(this,"entries",e=>(e[1]=Ne(this,e[1]),e))},every(e,t){return Ke(this,"every",e,t,void 0,arguments)},filter(e,t){return Ke(this,"filter",e,t,n=>n.map(r=>Ne(this,r)),arguments)},find(e,t){return Ke(this,"find",e,t,n=>Ne(this,n),arguments)},findIndex(e,t){return Ke(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ke(this,"findLast",e,t,n=>Ne(this,n),arguments)},findLastIndex(e,t){return Ke(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ke(this,"forEach",e,t,void 0,arguments)},includes(...e){return zn(this,"includes",e)},indexOf(...e){return zn(this,"indexOf",e)},join(e){return _t(this).join(e)},lastIndexOf(...e){return zn(this,"lastIndexOf",e)},map(e,t){return Ke(this,"map",e,t,void 0,arguments)},pop(){return Ft(this,"pop")},push(...e){return Ft(this,"push",e)},reduce(e,...t){return Hr(this,"reduce",e,t)},reduceRight(e,...t){return Hr(this,"reduceRight",e,t)},shift(){return Ft(this,"shift")},some(e,t){return Ke(this,"some",e,t,void 0,arguments)},splice(...e){return Ft(this,"splice",e)},toReversed(){return _t(this).toReversed()},toSorted(e){return _t(this).toSorted(e)},toSpliced(...e){return _t(this).toSpliced(...e)},unshift(...e){return Ft(this,"unshift",e)},values(){return Wn(this,"values",e=>Ne(this,e))}};function Wn(e,t,n){const r=rn(e),s=r[t]();return r!==e&&!ke(e)&&(s._next=s.next,s.next=()=>{const o=s._next();return o.done||(o.value=n(o.value)),o}),s}const Mo=Array.prototype;function Ke(e,t,n,r,s,o){const i=rn(e),l=i!==e&&!ke(e),c=i[t];if(c!==Mo[t]){const g=c.apply(e,o);return l?Ee(g):g}let h=n;i!==e&&(l?h=function(g,k){return n.call(this,Ne(e,g),k,e)}:n.length>2&&(h=function(g,k){return n.call(this,g,k,e)}));const f=c.call(i,h,r);return l&&s?s(f):f}function Hr(e,t,n,r){const s=rn(e),o=s!==e&&!ke(e);let i=n,l=!1;s!==e&&(o?(l=r.length===0,i=function(h,f,g){return l&&(l=!1,h=Ne(e,h)),n.call(this,h,Ne(e,f),g,e)}):n.length>3&&(i=function(h,f,g){return n.call(this,h,f,g,e)}));const c=s[t](i,...r);return l?Ne(e,c):c}function zn(e,t,n){const r=K(e);de(r,"iterate",Mt);const s=r[t](...n);return(s===-1||s===!1)&&Jn(n[0])?(n[0]=K(n[0]),r[t](...n)):s}function Ft(e,t,n=[]){Ie(),jn();const r=K(e)[t].apply(e,n);return Dn(),$e(),r}const Fo=Rn("__proto__,__v_isRef,__isVue"),Ur=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Me));function Io(e){Me(e)||(e=String(e));const t=K(this);return de(t,"has",e),t.hasOwnProperty(e)}class Vr{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){if(n==="__v_skip")return t.__v_skip;const s=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return r===(s?o?Jr:Gr:o?qr:zr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=F(t);if(!s){let c;if(i&&(c=Ro[n]))return c;if(n==="hasOwnProperty")return Io}const l=Reflect.get(t,n,ue(t)?t:r);if((Me(n)?Ur.has(n):Fo(n))||(s||de(t,"get",n),o))return l;if(ue(l)){const c=i&&Fn(n)?l:l.value;return s&&Y(c)?Gn(c):c}return Y(l)?s?Gn(l):vt(l):l}}class Kr extends Vr{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];const i=F(t)&&Fn(n);if(!this._isShallow){const h=We(o);if(!ke(r)&&!We(r)&&(o=K(o),r=K(r)),!i&&ue(o)&&!ue(r))return h||(o.value=r),!0}const l=i?Number(n)e,sn=e=>Reflect.getPrototypeOf(e);function Do(e,t,n){return function(...r){const s=this.__v_raw,o=K(s),i=et(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,h=s[e](...r),f=n?qn:t?bt:Ee;return!t&&de(o,"iterate",c?Kn:ot),se(Object.create(h),{next(){const{value:g,done:k}=h.next();return k?{value:g,done:k}:{value:l?[f(g[0]),f(g[1])]:f(g),done:k}}})}}function on(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Bo(e,t){const n={get(s){const o=this.__v_raw,i=K(o),l=K(s);e||(Fe(s,l)&&de(i,"get",s),de(i,"get",l));const{has:c}=sn(i),h=t?qn:e?bt:Ee;if(c.call(i,s))return h(o.get(s));if(c.call(i,l))return h(o.get(l));o!==i&&o.get(s)},get size(){const s=this.__v_raw;return!e&&de(K(s),"iterate",ot),s.size},has(s){const o=this.__v_raw,i=K(o),l=K(s);return e||(Fe(s,l)&&de(i,"has",s),de(i,"has",l)),s===l?o.has(s):o.has(s)||o.has(l)},forEach(s,o){const i=this,l=i.__v_raw,c=K(l),h=t?qn:e?bt:Ee;return!e&&de(c,"iterate",ot),l.forEach((f,g)=>s.call(o,h(f),h(g),i))}};return se(n,e?{add:on("add"),set:on("set"),delete:on("delete"),clear:on("clear")}:{add(s){const o=K(this),i=sn(o),l=K(s),c=!t&&!ke(s)&&!We(s)?l:s;return i.has.call(o,c)||Fe(s,c)&&i.has.call(o,s)||Fe(l,c)&&i.has.call(o,l)||(o.add(c),Ve(o,"add",c,c)),this},set(s,o){!t&&!ke(o)&&!We(o)&&(o=K(o));const i=K(this),{has:l,get:c}=sn(i);let h=l.call(i,s);h||(s=K(s),h=l.call(i,s));const f=c.call(i,s);return i.set(s,o),h?Fe(o,f)&&Ve(i,"set",s,o):Ve(i,"add",s,o),this},delete(s){const o=K(this),{has:i,get:l}=sn(o);let c=i.call(o,s);c||(s=K(s),c=i.call(o,s)),l&&l.call(o,s);const h=o.delete(s);return c&&Ve(o,"delete",s,void 0),h},clear(){const s=K(this),o=s.size!==0,i=s.clear();return o&&Ve(s,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(s=>{n[s]=Do(s,e,t)}),n}function ln(e,t){const n=Bo(e,t);return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(z(n,s)&&s in r?n:r,s,o)}const Ho={get:ln(!1,!1)},Uo={get:ln(!1,!0)},Vo={get:ln(!0,!1)},Ko={get:ln(!0,!0)},zr=new WeakMap,qr=new WeakMap,Gr=new WeakMap,Jr=new WeakMap;function Wo(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function vt(e){return We(e)?e:cn(e,!1,$o,Ho,zr)}function zo(e){return cn(e,!1,Lo,Uo,qr)}function Gn(e){return cn(e,!0,No,Vo,Gr)}function Kc(e){return cn(e,!0,jo,Ko,Jr)}function cn(e,t,n,r,s){if(!Y(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const o=s.get(e);if(o)return o;const i=Wo(vo(e));if(i===0)return e;const l=new Proxy(e,i===2?r:n);return s.set(e,l),l}function it(e){return We(e)?it(e.__v_raw):!!(e&&e.__v_isReactive)}function We(e){return!!(e&&e.__v_isReadonly)}function ke(e){return!!(e&&e.__v_isShallow)}function Jn(e){return e?!!e.__v_raw:!1}function K(e){const t=e&&e.__v_raw;return t?K(t):e}function qo(e){return!z(e,"__v_skip")&&Object.isExtensible(e)&&kr(e,"__v_skip",!0),e}const Ee=e=>Y(e)?vt(e):e,bt=e=>Y(e)?Gn(e):e;function ue(e){return e?e.__v_isRef===!0:!1}function he(e){return Go(e,!1)}function Go(e,t){return ue(e)?e:new Jo(e,t)}class Jo{constructor(t,n){this.dep=new Un,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:K(t),this._value=n?t:Ee(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,r=this.__v_isShallow||ke(t)||We(t);t=r?t:K(t),Fe(t,n)&&(this._rawValue=t,this._value=r?t:Ee(t),this.dep.trigger())}}function Yn(e){return ue(e)?e.value:e}const Yo={get:(e,t,n)=>t==="__v_raw"?e:Yn(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return ue(s)&&!ue(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function Yr(e){return it(e)?e:new Proxy(e,Yo)}class Xo{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Un(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Rt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&ee!==this)return Ir(this,!0),!0}get value(){const t=this.dep.track();return Lr(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Zo(e,t,n=!1){let r,s;return I(e)?r=e:(r=e.get,s=e.set),new Xo(r,s,n)}const an={},fn=new WeakMap;let lt;function Qo(e,t=!1,n=lt){if(n){let r=fn.get(n);r||fn.set(n,r=[]),r.push(e)}}function ei(e,t,n=Q){const{immediate:r,deep:s,once:o,scheduler:i,augmentJob:l,call:c}=n,h=w=>s?w:ke(w)||s===!1||s===0?tt(w,1):tt(w);let f,g,k,T,M=!1,P=!1;if(ue(e)?(g=()=>e.value,M=ke(e)):it(e)?(g=()=>h(e),M=!0):F(e)?(P=!0,M=e.some(w=>it(w)||ke(w)),g=()=>e.map(w=>{if(ue(w))return w.value;if(it(w))return h(w);if(I(w))return c?c(w,2):w()})):I(e)?t?g=c?()=>c(e,2):e:g=()=>{if(k){Ie();try{k()}finally{$e()}}const w=lt;lt=f;try{return c?c(e,3,[T]):e(T)}finally{lt=w}}:g=Re,t&&s){const w=g,R=s===!0?1/0:s;g=()=>tt(w(),R)}const H=Eo(),L=()=>{f.stop(),H&&H.active&&Mn(H.effects,f)};if(o&&t){const w=t;t=(...R)=>{const j=w(...R);return L(),j}}let $=P?new Array(e.length).fill(an):an;const A=w=>{if(!(!(f.flags&1)||!f.dirty&&!w))if(t){const R=f.run();if(w||s||M||(P?R.some((j,te)=>Fe(j,$[te])):Fe(R,$))){k&&k();const j=lt;lt=f;try{const te=[R,$===an?void 0:P&&$[0]===an?[]:$,T];$=R,c?c(t,3,te):t(...te)}finally{lt=j}}}else f.run()};return l&&l(A),f=new Mr(g),f.scheduler=i?()=>i(A,!1):A,T=w=>Qo(w,!1,f),k=f.onStop=()=>{const w=fn.get(f);if(w){if(c)c(w,4);else for(const R of w)R();fn.delete(f)}},t?r?A(!0):$=f.run():i?i(A.bind(null,!0),!0):f.run(),L.pause=f.pause.bind(f),L.resume=f.resume.bind(f),L.stop=L,L}function tt(e,t=1/0,n){if(t<=0||!Y(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,ue(e))tt(e.value,t,n);else if(F(e))for(let r=0;r{tt(r,t,n)});else if(Zt(e)){for(const r in e)tt(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&tt(e[r],t,n)}return e}/** * @vue/runtime-core v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/const It=[];let Xn=!1;function Wc(e,...t){if(Xn)return;Xn=!0,Me();const n=It.length?It[It.length-1].component:null,r=n&&n.appContext.config.warnHandler,s=ti();if(r)vt(r,n,11,[e+t.map(o=>{var i,l;return(l=(i=o.toString)==null?void 0:i.call(o))!=null?l:JSON.stringify(o)}).join(""),n&&n.proxy,s.map(({vnode:o})=>`at <${Gs(n,o.type)}>`).join(` +**/const It=[];let Xn=!1;function Wc(e,...t){if(Xn)return;Xn=!0,Ie();const n=It.length?It[It.length-1].component:null,r=n&&n.appContext.config.warnHandler,s=ti();if(r)mt(r,n,11,[e+t.map(o=>{var i,l;return(l=(i=o.toString)==null?void 0:i.call(o))!=null?l:JSON.stringify(o)}).join(""),n&&n.proxy,s.map(({vnode:o})=>`at <${qs(n,o.type)}>`).join(` `),s]);else{const o=[`[Vue warn]: ${e}`,...t];s.length&&o.push(` -`,...ni(s)),console.warn(...o)}Fe(),Xn=!1}function ti(){let e=It[It.length-1];if(!e)return[];const t=[];for(;e;){const n=t[0];n&&n.vnode===e?n.recurseCount++:t.push({vnode:e,recurseCount:0});const r=e.component&&e.component.parent;e=r&&r.vnode}return t}function ni(e){const t=[];return e.forEach((n,r)=>{t.push(...r===0?[]:[` -`],...ri(n))}),t}function ri({vnode:e,recurseCount:t}){const n=t>0?`... (${t} recursive calls)`:"",r=e.component?e.component.parent==null:!1,s=` at <${Gs(e.component,e.type,r)}`,o=">"+n;return e.props?[s,...si(e.props),o]:[s+o]}function si(e){const t=[],n=Object.keys(e);return n.slice(0,3).forEach(r=>{t.push(...Zr(r,e[r]))}),n.length>3&&t.push(" ..."),t}function Zr(e,t,n){return te(t)?(t=JSON.stringify(t),n?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?n?t:[`${e}=${t}`]:ue(t)?(t=Zr(e,K(t.value),!0),n?t:[`${e}=Ref<`,t,">"]):I(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=K(t),n?t:[`${e}=`,t])}function vt(e,t,n,r){try{return r?e(...r):e()}catch(s){hn(s,t,n)}}function Ee(e,t,n,r){if(I(e)){const s=vt(e,t,n,r);return s&&Sr(s)&&s.catch(o=>{hn(o,t,n)}),s}if(F(e)){const s=[];for(let o=0;o>>1,s=pe[r],o=$t(s);o=$t(n)?pe.push(e):pe.splice(ii(t),0,e),e.flags|=1,es()}}function es(){pn||(pn=Qr.then(rs))}function li(e){if(!F(e))nt&&e.id===-1?nt.splice(mt+1,0,e):e.flags&1||(bt.push(e),e.flags|=1);else for(let t=0;t$t(n)-$t(r));if(bt.length=0,nt){for(let n=0;ne.id==null?e.flags&2?-1:1/0:e.id;function rs(e){try{for($e=0;$e{r._d&&Bs(-1);const o=_n(t),i=at.length;let l;try{l=e(...s)}finally{for(let c=at.length;c>i;c--)Ds();_n(o),r._d&&Bs(1)}return l};return r._n=!0,r._c=!0,r._d=!0,r}function lt(e,t,n,r){const s=e.dirs,o=t&&t.dirs;for(let i=0;i1)return n&&I(t)?t.call(r&&r.proxy):t}}const fi=Symbol.for("v-scx"),ui=()=>vn(fi);function Nt(e,t,n){return os(e,t,n)}function os(e,t,n=Z){const{immediate:r,deep:s,flush:o,once:i}=n,l=se({},n),c=t&&r||!t&&o!=="post";let h;if(Wt){if(o==="sync"){const k=ui();h=k.__watcherHandles||(k.__watcherHandles=[])}else if(!c){const k=()=>{};return k.stop=Pe,k.resume=Pe,k.pause=Pe,k}}const f=_e;l.call=(k,M,E)=>Ee(k,f,M,E);let g=!1;o==="post"?l.scheduler=k=>{be(k,f&&f.suspense)}:o!=="sync"&&(g=!0,l.scheduler=(k,M)=>{M?k():Zn(k)}),l.augmentJob=k=>{t&&(k.flags|=4),g&&(k.flags|=2,f&&(k.id=f.uid,k.i=f))};const S=ei(e,t,l);return Wt&&(h?h.push(S):c&&S()),S}function di(e,t,n){const r=this.proxy,s=te(e)?e.includes(".")?is(r,e):()=>r[e]:e.bind(r,r);let o;I(t)?o=t:(o=t.handler,n=t);const i=Kt(this),l=os(s,o.bind(r),n);return i(),l}function is(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;se.__isTeleport,Qn=Symbol("_leaveCb");function pi(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==We){t=n;break}}return t}function ls(e){if(!tr(e))return bn(e.type)&&e.children?pi(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&I(n.default))return n.default()}}function er(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;const n=e.component.subTree;er(bn(n.type)&&ls(n)||n,t)}else e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function gi(e,t){return I(e)?se({name:e.name},t,{setup:e}):e}function cs(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function as(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}const mn=new WeakMap;function Lt(e,t,n,r,s=!1){if(F(e)){e.forEach((E,H)=>Lt(E,t&&(F(t)?t[H]:t),n,r,s));return}if(jt(r)&&!s){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&Lt(e,t,n,r.component.subTree);return}const o=r.shapeFlag&4?hr(r.component):r.el,i=s?null:o,{i:l,r:c}=e,h=t&&t.r,f=l.refs===Z?l.refs={}:l.refs,g=l.setupState,S=K(g),k=g===Z?yr:E=>as(f,E)?!1:z(S,E),M=(E,H)=>!(H&&as(f,H));if(h!=null&&h!==c){if(fs(t),te(h))f[h]=null,k(h)&&(g[h]=null);else if(ue(h)){const E=t;M(h,E.k)&&(h.value=null),E.k&&(f[E.k]=null)}}if(I(c))vt(c,l,12,[i,f]);else{const E=te(c),H=ue(c);if(E||H){const L=()=>{if(e.f){const $=E?k(c)?g[c]:f[c]:M()||!e.k?c.value:f[e.k];if(s)F($)&&Mn($,o);else if(F($))$.includes(o)||$.push(o);else if(E)f[c]=[o],k(c)&&(g[c]=f[c]);else{const T=[o];M(c,e.k)&&(c.value=T),e.k&&(f[e.k]=T)}}else E?(f[c]=i,k(c)&&(g[c]=i)):H&&(M(c,e.k)&&(c.value=i),e.k&&(f[e.k]=i))};if(i){const $=()=>{L(),mn.delete(e)};$.id=-1,mn.set(e,$),be($,n)}else fs(e),L()}}}function fs(e){const t=mn.get(e);t&&(t.flags|=8,mn.delete(e))}nn().requestIdleCallback,nn().cancelIdleCallback;const jt=e=>!!e.type.__asyncLoader,tr=e=>e.type.__isKeepAlive;function _i(e,t){us(e,"a",t)}function vi(e,t){us(e,"da",t)}function us(e,t,n=_e){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(xn(t,r,n),n){let s=n.parent;for(;s&&s.parent;)tr(s.parent.vnode)&&bi(r,t,n,s),s=s.parent}}function bi(e,t,n,r){const s=xn(t,e,r,!0);hs(()=>{Mn(r[t],s)},n)}function xn(e,t,n=_e,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{Me();const l=Kt(n),c=Ee(t,n,e,i);return l(),Fe(),c});return r?s.unshift(o):s.push(o),o}}const Ke=e=>(t,n=_e)=>{(!Wt||e==="sp")&&xn(e,(...r)=>t(...r),n)},mi=Ke("bm"),nr=Ke("m"),xi=Ke("bu"),yi=Ke("u"),ds=Ke("bum"),hs=Ke("um"),wi=Ke("sp"),Si=Ke("rtg"),Ci=Ke("rtc");function ki(e,t=_e){xn("ec",e,t)}const Ti=Symbol.for("v-ndc");function yn(e,t,n,r){let s;const o=n,i=F(e);if(i||te(e)){const l=i&&ot(e);let c=!1,h=!1;l&&(c=!we(e),h=Ve(e),e=on(e)),s=new Array(e.length);for(let f=0,g=e.length;ft(l,c,void 0,o));else{const l=Object.keys(e);s=new Array(l.length);for(let c=0,h=l.length;ce?Ws(e)?hr(e):rr(e.parent):null,Dt=se(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>rr(e.parent),$root:e=>rr(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>vs(e),$forceUpdate:e=>e.f||(e.f=()=>{Zn(e.update)}),$nextTick:e=>e.n||(e.n=gn.bind(e.proxy)),$watch:e=>di.bind(e)}),sr=(e,t)=>e!==Z&&!e.__isScriptSetup&&z(e,t),Ai={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:l,appContext:c}=e;if(t[0]!=="$"){const S=i[t];if(S!==void 0)switch(S){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(sr(r,t))return i[t]=1,r[t];if(s!==Z&&z(s,t))return i[t]=2,s[t];if(z(o,t))return i[t]=3,o[t];if(n!==Z&&z(n,t))return i[t]=4,n[t];or&&(i[t]=0)}}const h=Dt[t];let f,g;if(h)return t==="$attrs"&&de(e.attrs,"get",""),h(e);if((f=l.__cssModules)&&(f=f[t]))return f;if(n!==Z&&z(n,t))return i[t]=4,n[t];if(g=c.config.globalProperties,z(g,t))return g[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return sr(s,t)?(s[t]=n,!0):r!==Z&&z(r,t)?(r[t]=n,!0):z(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,props:o,type:i}},l){let c;return!!(n[l]||e!==Z&&l[0]!=="$"&&z(e,l)||sr(t,l)||z(o,l)||z(r,l)||z(Dt,l)||z(s.config.globalProperties,l)||(c=i.__cssModules)&&c[l])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:z(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function ps(e){return F(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let or=!0;function Ei(e){const t=vs(e),n=e.proxy,r=e.ctx;or=!1,t.beforeCreate&&gs(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:l,provide:c,inject:h,created:f,beforeMount:g,mounted:S,beforeUpdate:k,updated:M,activated:E,deactivated:H,beforeDestroy:L,beforeUnmount:$,destroyed:T,unmounted:w,render:O,renderTracked:j,renderTriggered:ee,errorCaptured:G,serverPrefetch:ft,expose:Je,inheritAttrs:Ye,components:wt,directives:St,filters:Gt}=t;if(h&&Pi(h,r,null),i)for(const Y in i){const q=i[Y];I(q)&&(r[Y]=q.bind(n))}if(s){const Y=s.call(n,n);J(Y)&&(e.data=gt(Y))}if(or=!0,o)for(const Y in o){const q=o[Y],Xe=I(q)?q.bind(n,n):I(q.get)?q.get.bind(n,n):Pe,Ct=!I(q)&&I(q.set)?q.set.bind(n):Pe,Ze=X({get:Xe,set:Ct});Object.defineProperty(r,Y,{enumerable:!0,configurable:!0,get:()=>Ze.value,set:Se=>Ze.value=Se})}if(l)for(const Y in l)_s(l[Y],r,n,Y);if(c){const Y=I(c)?c.call(n):c;Reflect.ownKeys(Y).forEach(q=>{ai(q,Y[q])})}f&&gs(f,e,"c");function le(Y,q){F(q)?q.forEach(Xe=>Y(Xe.bind(n))):q&&Y(q.bind(n))}if(le(mi,g),le(nr,S),le(xi,k),le(yi,M),le(_i,E),le(vi,H),le(ki,G),le(Ci,j),le(Si,ee),le(ds,$),le(hs,w),le(wi,ft),F(Je))if(Je.length){const Y=e.exposed||(e.exposed={});Je.forEach(q=>{Object.defineProperty(Y,q,{get:()=>n[q],set:Xe=>n[q]=Xe,enumerable:!0})})}else e.exposed||(e.exposed={});O&&e.render===Pe&&(e.render=O),Ye!=null&&(e.inheritAttrs=Ye),wt&&(e.components=wt),St&&(e.directives=St),ft&&cs(e)}function Pi(e,t,n=Pe){F(e)&&(e=ir(e));for(const r in e){const s=e[r];let o;J(s)?"default"in s?o=vn(s.from||r,s.default,!0):o=vn(s.from||r):o=vn(s),ue(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function gs(e,t,n){Ee(F(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function _s(e,t,n,r){let s=r.includes(".")?is(n,r):()=>n[r];if(te(e)){const o=t[e];I(o)&&Nt(s,o)}else if(I(e))Nt(s,e.bind(n));else if(J(e))if(F(e))e.forEach(o=>_s(o,t,n,r));else{const o=I(e.handler)?e.handler.bind(n):t[e.handler];I(o)&&Nt(s,o,e)}}function vs(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!s.length&&!n&&!r?c=t:(c={},s.length&&s.forEach(h=>wn(c,h,i,!0)),wn(c,t,i)),J(t)&&o.set(t,c),c}function wn(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&wn(e,o,n,!0),s&&s.forEach(i=>wn(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const l=Oi[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const Oi={data:bs,props:ms,emits:ms,methods:Bt,computed:Bt,beforeCreate:ge,created:ge,beforeMount:ge,mounted:ge,beforeUpdate:ge,updated:ge,beforeDestroy:ge,beforeUnmount:ge,destroyed:ge,unmounted:ge,activated:ge,deactivated:ge,errorCaptured:ge,serverPrefetch:ge,components:Bt,directives:Bt,watch:Mi,provide:bs,inject:Ri};function bs(e,t){return t?e?function(){return se(I(e)?e.call(this,this):e,I(t)?t.call(this,this):t)}:t:e}function Ri(e,t){return Bt(ir(e),ir(t))}function ir(e){if(F(e)){const t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${ve(t)}Modifiers`]||e[`${ye(t)}Modifiers`];function Ni(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||Z;let s=n;const o=t.startsWith("update:"),i=o&&$i(r,t.slice(7));i&&(i.trim&&(s=n.map(f=>te(f)?f.trim():f)),i.number&&(s=s.map(xo)));let l,c=r[l=In(t)]||r[l=In(ve(t))];!c&&o&&(c=r[l=In(ye(t))]),c&&Ee(c,e,6,s);const h=r[l+"Once"];if(h){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Ee(h,e,6,s)}}const Li=new WeakMap;function ys(e,t,n=!1){const r=n?Li:t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let i={},l=!1;if(!I(e)){const c=h=>{const f=ys(h,t,!0);f&&(l=!0,se(i,f))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(J(e)&&r.set(e,null),null):(F(o)?o.forEach(c=>i[c]=null):se(i,o),J(e)&&r.set(e,i),i)}function Sn(e,t){return!e||!Xt(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),z(e,t[0].toLowerCase()+t.slice(1))||z(e,ye(t))||z(e,t))}function zc(){}function ws(e){const{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[o],slots:i,attrs:l,emit:c,render:h,renderCache:f,props:g,data:S,setupState:k,ctx:M,inheritAttrs:E}=e,H=_n(e);let L,$;try{if(n.shapeFlag&4){const w=s||r,O=w;L=Le(h.call(O,w,f,g,k,S,M)),$=l}else{const w=t;L=Le(w.length>1?w(g,{attrs:l,slots:i,emit:c}):w(g,null)),$=t.props?l:ji(l)}}catch(w){at.length=0,hn(w,e,1),L=re(We)}let T=L;if($&&E!==!1){const w=Object.keys($),{shapeFlag:O}=T;w.length&&O&7&&(o&&w.some(Zt)&&($=Di($,o)),T=yt(T,$,!1,!0))}if(n.dirs&&(T=yt(T,null,!1,!0),T.dirs=T.dirs?T.dirs.concat(n.dirs):n.dirs),n.transition){const w=bn(T.type)&&ls(T)||T;er(w,n.transition)}return L=T,_n(H),L}const ji=e=>{let t;for(const n in e)(n==="class"||n==="style"||Xt(n))&&((t||(t={}))[n]=e[n]);return t},Di=(e,t)=>{const n={};for(const r in e)(!Zt(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Bi(e,t,n){const{props:r,children:s,component:o}=e,{props:i,children:l,patchFlag:c}=t,h=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?Ss(r,i,h):!!i;if(c&8){const f=t.dynamicProps;for(let g=0;gObject.create(ks),As=e=>Object.getPrototypeOf(e)===ks;function Ui(e,t,n,r=!1){const s={},o=Ts();e.propsDefaults=Object.create(null),Es(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:zo(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function Vi(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,l=K(s),[c]=e.propsOptions;let h=!1;if((r||i>0)&&!(i&16)){if(i&8){const f=e.vnode.dynamicProps;for(let g=0;g{c=!0;const[S,k]=Ps(g,t,!0);se(i,S),k&&l.push(...k)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!c)return J(e)&&r.set(e,dt),dt;if(F(o))for(let f=0;fe==="_"||e==="_ctx"||e==="$stable",ar=e=>F(e)?e.map(Le):[Le(e)],Wi=(e,t,n)=>{if(t._n)return t;const r=ci((...s)=>ar(t(...s)),n);return r._c=!1,r},Rs=(e,t,n)=>{const r=e._ctx;for(const s in e){if(cr(s))continue;const o=e[s];if(I(o))t[s]=Wi(s,o,r);else if(o!=null){const i=ar(o);t[s]=()=>i}}},Ms=(e,t)=>{const n=ar(t);e.slots.default=()=>n},Fs=(e,t,n)=>{for(const r in t)(n||!cr(r))&&(e[r]=t[r])},zi=(e,t,n)=>{const r=e.slots=Ts();if(e.vnode.shapeFlag&32){const s=t._;s?(Fs(r,t,n),n&&Tr(r,"_",s,!0)):Rs(t,r)}else t&&Ms(e,t)},qi=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=Z;if(r.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:Fs(s,t,n):(o=!t.$stable,Rs(t,s)),i=t}else t&&(Ms(e,t),i={default:1});if(o)for(const l in s)!cr(l)&&i[l]==null&&delete s[l]},be=Zi;function Gi(e){return Ji(e)}function Ji(e,t){const n=nn();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:l,createComment:c,setText:h,setElementText:f,parentNode:g,nextSibling:S,setScopeId:k=Pe,insertStaticContent:M}=e,E=(a,u,d,p=null,_=null,v=null,y=void 0,x=null,b=!!u.dynamicChildren)=>{if(a===u)return;a&&!Ut(a,u)&&(p=kt(a),Se(a,_,v,!0),a=null),u.patchFlag===-2&&(b=!1,u.dynamicChildren=null);const{type:m,ref:P,shapeFlag:C}=u;switch(m){case Cn:H(a,u,d,p);break;case We:L(a,u,d,p);break;case ur:a==null&&$(u,d,p,y);break;case ce:wt(a,u,d,p,_,v,y,x,b);break;default:C&1?O(a,u,d,p,_,v,y,x,b):C&6?St(a,u,d,p,_,v,y,x,b):(C&64||C&128)&&m.process(a,u,d,p,_,v,y,x,b,ut)}P!=null&&_?Lt(P,a&&a.ref,v,u||a,!u):P==null&&a&&a.ref!=null&&Lt(a.ref,null,v,a,!0)},H=(a,u,d,p)=>{if(a==null)r(u.el=l(u.children),d,p);else{const _=u.el=a.el;u.children!==a.children&&h(_,u.children)}},L=(a,u,d,p)=>{a==null?r(u.el=c(u.children||""),d,p):u.el=a.el},$=(a,u,d,p)=>{[a.el,a.anchor]=M(a.children,u,d,p,a.el,a.anchor)},T=({el:a,anchor:u},d,p)=>{let _;for(;a&&a!==u;)_=S(a),r(a,d,p),a=_;r(u,d,p)},w=({el:a,anchor:u})=>{let d;for(;a&&a!==u;)d=S(a),s(a),a=d;s(u)},O=(a,u,d,p,_,v,y,x,b)=>{if(u.type==="svg"?y="svg":u.type==="math"&&(y="mathml"),a==null)j(u,d,p,_,v,y,x,b);else{const m=a.el&&a.el._isVueCE?a.el:null;try{m&&m._beginPatch(),ft(a,u,_,v,y,x,b)}finally{m&&m._endPatch()}}},j=(a,u,d,p,_,v,y,x)=>{let b,m;const{props:P,shapeFlag:C,transition:A,dirs:R}=a;if(b=a.el=i(a.type,v,P&&P.is,P),C&8?f(b,a.children):C&16&&G(a.children,b,null,p,_,fr(a,v),y,x),R&<(a,null,p,"created"),ee(b,a,a.scopeId,y,p),P){for(const V in P)V!=="value"&&!Et(V)&&o(b,V,null,P[V],v,p);"value"in P&&o(b,"value",null,P.value,v),(m=P.onVnodeBeforeMount)&&je(m,p,a)}R&<(a,null,p,"beforeMount");const D=Yi(_,A);D&&A.beforeEnter(b),r(b,u,d),((m=P&&P.onVnodeMounted)||D||R)&&be(()=>{try{m&&je(m,p,a),D&&A.enter(b),R&<(a,null,p,"mounted")}finally{}},_)},ee=(a,u,d,p,_)=>{if(d&&k(a,d),p)for(let v=0;v{for(let m=b;m{const x=u.el=a.el;let{patchFlag:b,dynamicChildren:m,dirs:P}=u;b|=a.patchFlag&16;const C=a.props||Z,A=u.props||Z;let R;if(d&&ct(d,!1),(R=A.onVnodeBeforeUpdate)&&je(R,d,u,a),P&<(u,a,d,"beforeUpdate"),d&&ct(d,!0),m&&(!a.dynamicChildren||a.dynamicChildren.length!==m.length)&&(b=0,y=!1,m=null),(C.innerHTML&&A.innerHTML==null||C.textContent&&A.textContent==null)&&f(x,""),m?Je(a.dynamicChildren,m,x,d,p,fr(u,_),v):y||q(a,u,x,null,d,p,fr(u,_),v,!1),b>0){if(b&16)Ye(x,C,A,d,_);else if(b&2&&C.class!==A.class&&o(x,"class",null,A.class,_),b&4&&o(x,"style",C.style,A.style,_),b&8){const D=u.dynamicProps;for(let V=0;V{R&&je(R,d,u,a),P&<(u,a,d,"updated")},p)},Je=(a,u,d,p,_,v,y)=>{for(let x=0;x{if(u!==d){if(u!==Z)for(const v in u)!Et(v)&&!(v in d)&&o(a,v,u[v],null,_,p);for(const v in d){if(Et(v))continue;const y=d[v],x=u[v];y!==x&&v!=="value"&&o(a,v,x,y,_,p)}"value"in d&&o(a,"value",u.value,d.value,_)}},wt=(a,u,d,p,_,v,y,x,b)=>{const m=u.el=a?a.el:l(""),P=u.anchor=a?a.anchor:l("");let{patchFlag:C,dynamicChildren:A,slotScopeIds:R}=u;R&&(x=x?x.concat(R):R),a==null?(r(m,d,p),r(P,d,p),G(u.children||[],d,P,_,v,y,x,b)):C>0&&C&64&&A&&a.dynamicChildren&&a.dynamicChildren.length===A.length?(Je(a.dynamicChildren,A,d,_,v,y,x),(u.key!=null||_&&u===_.subTree)&&Is(a,u,!0)):q(a,u,d,P,_,v,y,x,b)},St=(a,u,d,p,_,v,y,x,b)=>{u.slotScopeIds=x,a==null?u.shapeFlag&512?_.ctx.activate(u,d,p,y,b):Gt(u,d,p,_,v,y,b):Pn(a,u,b)},Gt=(a,u,d,p,_,v,y)=>{const x=a.component=ol(a,p,_);if(tr(a)&&(x.ctx.renderer=ut),il(x,!1,y),x.asyncDep){if(_&&_.registerDep(x,le,y),!a.el){const b=x.subTree=re(We);L(null,b,u,d),a.placeholder=b.el}}else le(x,a,u,d,_,v,y)},Pn=(a,u,d)=>{const p=u.component=a.component;if(Bi(a,u,d))if(p.asyncDep&&!p.asyncResolved){Y(p,u,d);return}else p.next=u,p.update();else u.el=a.el,p.vnode=u},le=(a,u,d,p,_,v,y)=>{const x=()=>{if(a.isMounted){let{next:C,bu:A,u:R,parent:D,vnode:V}=a;{const De=$s(a);if(De){C&&(C.el=V.el,Y(a,C,y)),De.asyncDep.then(()=>{be(()=>{a.isUnmounted||m()},_)});return}}let W=C,ne;ct(a,!1),C?(C.el=V.el,Y(a,C,y)):C=V,A&&$n(A),(ne=C.props&&C.props.onVnodeBeforeUpdate)&&je(ne,D,C,V),ct(a,!0);const ie=ws(a),ke=a.subTree;a.subTree=ie,E(ke,ie,g(ke.el),kt(ke),a,_,v),C.el=ie.el,W===null&&Hi(a,ie.el),R&&be(R,_),(ne=C.props&&C.props.onVnodeUpdated)&&be(()=>je(ne,D,C,V),_)}else{let C;const{el:A,props:R}=u,{bm:D,m:V,parent:W,root:ne,type:ie}=a,ke=jt(u);ct(a,!1),D&&$n(D),!ke&&(C=R&&R.onVnodeBeforeMount)&&je(C,W,u),ct(a,!0);{ne.ce&&ne.ce._hasShadowRoot()&&ne.ce._injectChildStyle(ie,a.parent?a.parent.type:void 0);const De=a.subTree=ws(a);E(null,De,d,p,a,_,v),u.el=De.el}if(V&&be(V,_),!ke&&(C=R&&R.onVnodeMounted)){const De=u;be(()=>je(C,W,De),_)}(u.shapeFlag&256||W&&jt(W.vnode)&&W.vnode.shapeFlag&256)&&a.a&&be(a.a,_),a.isMounted=!0,u=d=p=null}};a.scope.on();const b=a.effect=new Fr(x);a.scope.off();const m=a.update=b.run.bind(b),P=a.job=b.runIfDirty.bind(b);P.i=a,P.id=a.uid,b.scheduler=()=>Zn(P),ct(a,!0),m()},Y=(a,u,d)=>{u.component=a;const p=a.vnode.props;a.vnode=u,a.next=null,Vi(a,u.props,p,d),qi(a,u.children,d),Me(),ts(a),Fe()},q=(a,u,d,p,_,v,y,x,b=!1)=>{const m=a&&a.children,P=a?a.shapeFlag:0,C=u.children,{patchFlag:A,shapeFlag:R}=u;if(A>0){if(A&128){Ct(m,C,d,p,_,v,y,x,b);return}else if(A&256){Xe(m,C,d,p,_,v,y,x,b);return}}R&8?(P&16&&Ce(m,_,v),C!==m&&f(d,C)):P&16?R&16?Ct(m,C,d,p,_,v,y,x,b):Ce(m,_,v,!0):(P&8&&f(d,""),R&16&&G(C,d,p,_,v,y,x,b))},Xe=(a,u,d,p,_,v,y,x,b)=>{a=a||dt,u=u||dt;const m=a.length,P=u.length,C=Math.min(m,P);let A;for(A=0;AP?Ce(a,_,v,!0,!1,C):G(u,d,p,_,v,y,x,b,C)},Ct=(a,u,d,p,_,v,y,x,b)=>{let m=0;const P=u.length;let C=a.length-1,A=P-1;for(;m<=C&&m<=A;){const R=a[m],D=u[m]=b?qe(u[m]):Le(u[m]);if(Ut(R,D))E(R,D,d,null,_,v,y,x,b);else break;m++}for(;m<=C&&m<=A;){const R=a[C],D=u[A]=b?qe(u[A]):Le(u[A]);if(Ut(R,D))E(R,D,d,null,_,v,y,x,b);else break;C--,A--}if(m>C){if(m<=A){const R=A+1,D=RA)for(;m<=C;)Se(a[m],_,v,!0),m++;else{const R=m,D=m,V=new Map;for(m=D;m<=A;m++){const xe=u[m]=b?qe(u[m]):Le(u[m]);xe.key!=null&&V.set(xe.key,m)}let W,ne=0;const ie=A-D+1;let ke=!1,De=0;const Yt=new Array(ie);for(m=0;m=ie){Se(xe,_,v,!0);continue}let Be;if(xe.key!=null)Be=V.get(xe.key);else for(W=D;W<=A;W++)if(Yt[W-D]===0&&Ut(xe,u[W])){Be=W;break}Be===void 0?Se(xe,_,v,!0):(Yt[Be-D]=m+1,Be>=De?De=Be:ke=!0,E(xe,u[Be],d,null,_,v,y,x,b),ne++)}const ho=ke?Xi(Yt):dt;for(W=ho.length-1,m=ie-1;m>=0;m--){const xe=D+m,Be=u[xe],po=u[xe+1],go=xe+1{const{el:v,type:y,transition:x,children:b,shapeFlag:m}=a;if(m&6){Ze(a.component.subTree,u,d,p);return}if(m&128){a.suspense.move(u,d,p);return}if(m&64){y.move(a,u,d,ut);return}if(y===ce){r(v,u,d);for(let C=0;Cx.enter(v),_));else{const{leave:C,delayLeave:A,afterLeave:R}=x,D=()=>{a.ctx.isUnmounted?s(v):r(v,u,d)},V=()=>{const W=v._isLeaving||!!v[Qn];v._isLeaving&&v[Qn](!0),x.persisted&&!W?D():C(v,()=>{D(),R&&R()})};A?A(v,D,V):V()}else r(v,u,d)},Se=(a,u,d,p=!1,_=!1)=>{const{type:v,props:y,ref:x,children:b,dynamicChildren:m,shapeFlag:P,patchFlag:C,dirs:A,cacheIndex:R,memo:D}=a;if(C===-2&&(_=!1),x!=null&&(Me(),Lt(x,null,d,a,!0),Fe()),R!=null&&(u.renderCache[R]=void 0),P&256){u.ctx.deactivate(a);return}const V=P&1&&A,W=!jt(a);let ne;if(W&&(ne=y&&y.onVnodeBeforeUnmount)&&je(ne,u,a),P&6)Qe(a.component,d,p);else{if(P&128){a.suspense.unmount(d,p);return}V&<(a,null,u,"beforeUnmount"),P&64?a.type.remove(a,u,d,ut,p):m&&!m.hasOnce&&(v!==ce||C>0&&C&64)?Ce(m,u,d,!1,!0):(v===ce&&C&384||!_&&P&16)&&Ce(b,u,d),p&&Jt(a)}const ie=D!=null&&R==null;(W&&(ne=y&&y.onVnodeUnmounted)||V||ie)&&be(()=>{ne&&je(ne,u,a),V&<(a,null,u,"unmounted"),ie&&(a.el=null)},d)},Jt=a=>{const{type:u,el:d,anchor:p,transition:_}=a;if(u===ce){mr(d,p);return}if(u===ur){w(a);return}const v=()=>{s(d),_&&!_.persisted&&_.afterLeave&&_.afterLeave()};if(a.shapeFlag&1&&_&&!_.persisted){const{leave:y,delayLeave:x}=_,b=()=>y(d,v);x?x(a.el,v,b):b()}else v()},mr=(a,u)=>{let d;for(;a!==u;)d=S(a),s(a),a=d;s(u)},Qe=(a,u,d)=>{const{bum:p,scope:_,job:v,subTree:y,um:x,m:b,a:m}=a;Ns(b),Ns(m),p&&$n(p),_.stop(),v&&(v.flags|=8,Se(y,a,u,d)),x&&be(x,u),be(()=>{a.isUnmounted=!0},u)},Ce=(a,u,d,p=!1,_=!1,v=0)=>{for(let y=v;y{if(a.shapeFlag&6)return kt(a.component.subTree);if(a.shapeFlag&128)return a.suspense.next();const u=S(a.anchor||a.el),d=u&&u[hi];return d?S(d):u};let Tt=!1;const On=(a,u,d)=>{let p;a==null?u._vnode&&(Se(u._vnode,null,null,!0),p=u._vnode.component):E(u._vnode||null,a,u,null,null,null,d),u._vnode=a,Tt||(Tt=!0,ts(p),ns(),Tt=!1)},ut={p:E,um:Se,m:Ze,r:Jt,mt:Gt,mc:G,pc:q,pbc:Je,n:kt,o:e};return{render:On,hydrate:void 0,createApp:Ii(On)}}function fr({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function ct({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Yi(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Is(e,t,n=!1){const r=e.children,s=t.children;if(F(r)&&F(s))for(let o=0;o>1,e[n[l]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function $s(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:$s(t)}function Ns(e){if(e)for(let t=0;te.__isSuspense;function Zi(e,t){t&&t.pendingBranch?F(e)?t.effects.push(...e):t.effects.push(e):li(e)}const ce=Symbol.for("v-fgt"),Cn=Symbol.for("v-txt"),We=Symbol.for("v-cmt"),ur=Symbol.for("v-stc"),at=[];let me=null;function B(e=!1){at.push(me=e?null:[])}function Ds(){at.pop(),me=at[at.length-1]||null}let Ht=1;function Bs(e,t=!1){Ht+=e,e<0&&me&&t&&(me.hasOnce=!0)}function Hs(e){return e.dynamicChildren=Ht>0?me||dt:null,Ds(),Ht>0&&me&&me.push(e),e}function U(e,t,n,r,s,o){return Hs(N(e,t,n,r,s,o,!0))}function Qi(e,t,n,r,s){return Hs(re(e,t,n,r,s,!0))}function Us(e){return e?e.__v_isVNode===!0:!1}function Ut(e,t){return e.type===t.type&&e.key===t.key}const Vs=({key:e})=>e??null,kn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?te(e)||ue(e)||I(e)?{i:Ne,r:e,k:t,f:!!n}:e:null);function N(e,t=null,n=null,r=0,s=null,o=e===ce?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Vs(t),ref:t&&kn(t),scopeId:ss,slotScopeIds:null,children:n,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:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:Ne};return l?(Tn(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=te(n)?8:16),Ht>0&&!i&&me&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&me.push(c),c}const re=el;function el(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===Ti)&&(e=We),Us(e)){const l=yt(e,t,!0);return n&&Tn(l,n),Ht>0&&!o&&me&&(l.shapeFlag&6?me[me.indexOf(e)]=l:me.push(l)),l.patchFlag=-2,l}if(hl(e)&&(e=e.__vccOpts),t){t=tl(t);let{class:l,style:c}=t;l&&!te(l)&&(t.class=rn(l)),J(c)&&(Jn(c)&&!F(c)&&(c=se({},c)),t.style=ht(c))}const i=te(e)?1:js(e)?128:bn(e)?64:J(e)?4:I(e)?2:0;return N(e,t,n,r,s,i,o,!0)}function tl(e){return e?Jn(e)||As(e)?se({},e):e:null}function yt(e,t,n=!1,r=!1){const{props:s,ref:o,patchFlag:i,children:l,transition:c}=e,h=t?nl(s||{},t):s,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:h,key:h&&Vs(h),ref:t&&t.ref?n&&o?F(o)?o.concat(kn(t)):[o,kn(t)]:kn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ce?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&yt(e.ssContent),ssFallback:e.ssFallback&&yt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&r&&er(f,c.clone(f)),f}function ze(e=" ",t=0){return re(Cn,null,e,t)}function ae(e="",t=!1){return t?(B(),Qi(We,null,e)):re(We,null,e)}function Le(e){return e==null||typeof e=="boolean"?re(We):F(e)?re(ce,null,e.slice()):Us(e)?qe(e):re(Cn,null,String(e))}function qe(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:yt(e)}function Tn(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(F(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),Tn(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!As(t)?t._ctx=Ne:s===3&&Ne&&(Ne.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(I(t)){if(r&65){Tn(e,{default:t});return}t={default:t,_ctx:Ne},n=32}else t=String(t),r&64?(n=16,t=[ze(t)]):n=8;e.children=t,e.shapeFlag|=n}function nl(...e){const t={};for(let n=0;n_e||Ne;let An,Vt;{const e=nn(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),o=>{s.length>1?s.forEach(i=>i(o)):s[0](o)}};An=t("__VUE_INSTANCE_SETTERS__",n=>_e=n),Vt=t("__VUE_SSR_SETTERS__",n=>Wt=n)}const Kt=e=>{const t=_e;return An(e),e.scope.on(),()=>{e.scope.off(),An(t)}},Ks=()=>{_e&&_e.scope.off(),An(null)};function Ws(e){return e.vnode.shapeFlag&4}let Wt=!1;function il(e,t=!1,n=!1){t&&Vt(t);const{props:r,children:s}=e.vnode,o=Ws(e);Ui(e,r,o,t),zi(e,s,n||t);const i=o?ll(e,t):void 0;return t&&Vt(!1),i}function ll(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Ai);const{setup:r}=n;if(r){Me();const s=e.setupContext=r.length>1?al(e):null,o=Kt(e),i=vt(r,e,0,[e.props,s]),l=Sr(i);if(Fe(),o(),(l||e.sp)&&!jt(e)&&cs(e),l){if(i.then(Ks,Ks),t)return i.then(c=>{Vt(!0);try{zs(e,c,t)}finally{Vt(!1)}}).catch(c=>{hn(c,e,0)});e.asyncDep=i}else zs(e,i)}else qs(e)}function zs(e,t,n){I(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:J(t)&&(e.setupState=Xr(t)),qs(e)}function qs(e,t,n){const r=e.type;e.render||(e.render=r.render||Pe);{const s=Kt(e);Me();try{Ei(e)}finally{Fe(),s()}}}const cl={get(e,t){return de(e,"get",""),e[t]}};function al(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,cl),slots:e.slots,emit:e.emit,expose:t}}function hr(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Xr(qo(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Dt)return Dt[n](e)},has(t,n){return n in t||n in Dt}})):e.proxy}const fl=/(?:^|[-_])\w/g,ul=e=>e.replace(fl,t=>t.toUpperCase()).replace(/[-_]/g,"");function dl(e,t=!0){return I(e)?e.displayName||e.name:e.name||t&&e.__name}function Gs(e,t,n=!1){let r=dl(t);if(!r&&t.__file){const s=t.__file.match(/([^/\\]+)\.\w+$/);s&&(r=s[1])}if(!r&&e){const s=o=>{for(const i in o)if(o[i]===t)return i};r=s(e.components)||e.parent&&s(e.parent.type.components)||s(e.appContext.components)}return r?ul(r):n?"App":"Anonymous"}function hl(e){return I(e)&&"__vccOpts"in e}const X=(e,t)=>Zo(e,t,Wt),pl="3.5.42";/** +`,...ni(s)),console.warn(...o)}$e(),Xn=!1}function ti(){let e=It[It.length-1];if(!e)return[];const t=[];for(;e;){const n=t[0];n&&n.vnode===e?n.recurseCount++:t.push({vnode:e,recurseCount:0});const r=e.component&&e.component.parent;e=r&&r.vnode}return t}function ni(e){const t=[];return e.forEach((n,r)=>{t.push(...r===0?[]:[` +`],...ri(n))}),t}function ri({vnode:e,recurseCount:t}){const n=t>0?`... (${t} recursive calls)`:"",r=e.component?e.component.parent==null:!1,s=` at <${qs(e.component,e.type,r)}`,o=">"+n;return e.props?[s,...si(e.props),o]:[s+o]}function si(e){const t=[],n=Object.keys(e);return n.slice(0,3).forEach(r=>{t.push(...Xr(r,e[r]))}),n.length>3&&t.push(" ..."),t}function Xr(e,t,n){return ne(t)?(t=JSON.stringify(t),n?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?n?t:[`${e}=${t}`]:ue(t)?(t=Xr(e,K(t.value),!0),n?t:[`${e}=Ref<`,t,">"]):I(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=K(t),n?t:[`${e}=`,t])}function mt(e,t,n,r){try{return r?e(...r):e()}catch(s){un(s,t,n)}}function Pe(e,t,n,r){if(I(e)){const s=mt(e,t,n,r);return s&&wr(s)&&s.catch(o=>{un(o,t,n)}),s}if(F(e)){const s=[];for(let o=0;o>>1,s=pe[r],o=$t(s);o=$t(n)?pe.push(e):pe.splice(ii(t),0,e),e.flags|=1,Qr()}}function Qr(){dn||(dn=Zr.then(ns))}function li(e){if(!F(e))nt&&e.id===-1?nt.splice(yt+1,0,e):e.flags&1||(xt.push(e),e.flags|=1);else for(let t=0;t$t(n)-$t(r));if(xt.length=0,nt){for(let n=0;ne.id==null?e.flags&2?-1:1/0:e.id;function ns(e){try{for(Le=0;Le{r._d&&Ds(-1);const o=pn(t),i=ft.length;let l;try{l=e(...s)}finally{for(let c=ft.length;c>i;c--)js();pn(o),r._d&&Ds(1)}return l};return r._n=!0,r._c=!0,r._d=!0,r}function ct(e,t,n,r){const s=e.dirs,o=t&&t.dirs;for(let i=0;i1)return n&&I(t)?t.call(r&&r.proxy):t}}const fi=Symbol.for("v-scx"),ui=()=>gn(fi);function Nt(e,t,n){return ss(e,t,n)}function ss(e,t,n=Q){const{immediate:r,deep:s,flush:o,once:i}=n,l=se({},n),c=t&&r||!t&&o!=="post";let h;if(Wt){if(o==="sync"){const T=ui();h=T.__watcherHandles||(T.__watcherHandles=[])}else if(!c){const T=()=>{};return T.stop=Re,T.resume=Re,T.pause=Re,T}}const f=_e;l.call=(T,M,P)=>Pe(T,f,M,P);let g=!1;o==="post"?l.scheduler=T=>{be(T,f&&f.suspense)}:o!=="sync"&&(g=!0,l.scheduler=(T,M)=>{M?T():Zn(T)}),l.augmentJob=T=>{t&&(T.flags|=4),g&&(T.flags|=2,f&&(T.id=f.uid,T.i=f))};const k=ei(e,t,l);return Wt&&(h?h.push(k):c&&k()),k}function di(e,t,n){const r=this.proxy,s=ne(e)?e.includes(".")?os(r,e):()=>r[e]:e.bind(r,r);let o;I(t)?o=t:(o=t.handler,n=t);const i=Kt(this),l=ss(s,o.bind(r),n);return i(),l}function os(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;se.__isTeleport,Qn=Symbol("_leaveCb");function pi(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==qe){t=n;break}}return t}function is(e){if(!tr(e))return _n(e.type)&&e.children?pi(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&I(n.default))return n.default()}}function er(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;const n=e.component.subTree;er(_n(n.type)&&is(n)||n,t)}else e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function gi(e,t){return I(e)?se({name:e.name},t,{setup:e}):e}function ls(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function cs(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}const vn=new WeakMap;function Lt(e,t,n,r,s=!1){if(F(e)){e.forEach((P,H)=>Lt(P,t&&(F(t)?t[H]:t),n,r,s));return}if(jt(r)&&!s){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&Lt(e,t,n,r.component.subTree);return}const o=r.shapeFlag&4?hr(r.component):r.el,i=s?null:o,{i:l,r:c}=e,h=t&&t.r,f=l.refs===Q?l.refs={}:l.refs,g=l.setupState,k=K(g),T=g===Q?xr:P=>cs(f,P)?!1:z(k,P),M=(P,H)=>!(H&&cs(f,H));if(h!=null&&h!==c){if(as(t),ne(h))f[h]=null,T(h)&&(g[h]=null);else if(ue(h)){const P=t;M(h,P.k)&&(h.value=null),P.k&&(f[P.k]=null)}}if(I(c))mt(c,l,12,[i,f]);else{const P=ne(c),H=ue(c);if(P||H){const L=()=>{if(e.f){const $=P?T(c)?g[c]:f[c]:M()||!e.k?c.value:f[e.k];if(s)F($)&&Mn($,o);else if(F($))$.includes(o)||$.push(o);else if(P)f[c]=[o],T(c)&&(g[c]=f[c]);else{const A=[o];M(c,e.k)&&(c.value=A),e.k&&(f[e.k]=A)}}else P?(f[c]=i,T(c)&&(g[c]=i)):H&&(M(c,e.k)&&(c.value=i),e.k&&(f[e.k]=i))};if(i){const $=()=>{L(),vn.delete(e)};$.id=-1,vn.set(e,$),be($,n)}else as(e),L()}}}function as(e){const t=vn.get(e);t&&(t.flags|=8,vn.delete(e))}en().requestIdleCallback,en().cancelIdleCallback;const jt=e=>!!e.type.__asyncLoader,tr=e=>e.type.__isKeepAlive;function _i(e,t){fs(e,"a",t)}function vi(e,t){fs(e,"da",t)}function fs(e,t,n=_e){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(bn(t,r,n),n){let s=n.parent;for(;s&&s.parent;)tr(s.parent.vnode)&&bi(r,t,n,s),s=s.parent}}function bi(e,t,n,r){const s=bn(t,e,r,!0);ds(()=>{Mn(r[t],s)},n)}function bn(e,t,n=_e,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{Ie();const l=Kt(n),c=Pe(t,n,e,i);return l(),$e(),c});return r?s.unshift(o):s.push(o),o}}const ze=e=>(t,n=_e)=>{(!Wt||e==="sp")&&bn(e,(...r)=>t(...r),n)},mi=ze("bm"),nr=ze("m"),xi=ze("bu"),yi=ze("u"),us=ze("bum"),ds=ze("um"),wi=ze("sp"),Si=ze("rtg"),Ci=ze("rtc");function ki(e,t=_e){bn("ec",e,t)}const Ti=Symbol.for("v-ndc");function mn(e,t,n,r){let s;const o=n,i=F(e);if(i||ne(e)){const l=i&&it(e);let c=!1,h=!1;l&&(c=!ke(e),h=We(e),e=rn(e)),s=new Array(e.length);for(let f=0,g=e.length;ft(l,c,void 0,o));else{const l=Object.keys(e);s=new Array(l.length);for(let c=0,h=l.length;ce?Ks(e)?hr(e):rr(e.parent):null,Dt=se(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>rr(e.parent),$root:e=>rr(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>_s(e),$forceUpdate:e=>e.f||(e.f=()=>{Zn(e.update)}),$nextTick:e=>e.n||(e.n=hn.bind(e.proxy)),$watch:e=>di.bind(e)}),sr=(e,t)=>e!==Q&&!e.__isScriptSetup&&z(e,t),Ai={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:l,appContext:c}=e;if(t[0]!=="$"){const k=i[t];if(k!==void 0)switch(k){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(sr(r,t))return i[t]=1,r[t];if(s!==Q&&z(s,t))return i[t]=2,s[t];if(z(o,t))return i[t]=3,o[t];if(n!==Q&&z(n,t))return i[t]=4,n[t];or&&(i[t]=0)}}const h=Dt[t];let f,g;if(h)return t==="$attrs"&&de(e.attrs,"get",""),h(e);if((f=l.__cssModules)&&(f=f[t]))return f;if(n!==Q&&z(n,t))return i[t]=4,n[t];if(g=c.config.globalProperties,z(g,t))return g[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return sr(s,t)?(s[t]=n,!0):r!==Q&&z(r,t)?(r[t]=n,!0):z(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,props:o,type:i}},l){let c;return!!(n[l]||e!==Q&&l[0]!=="$"&&z(e,l)||sr(t,l)||z(o,l)||z(r,l)||z(Dt,l)||z(s.config.globalProperties,l)||(c=i.__cssModules)&&c[l])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:z(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function hs(e){return F(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let or=!0;function Ei(e){const t=_s(e),n=e.proxy,r=e.ctx;or=!1,t.beforeCreate&&ps(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:l,provide:c,inject:h,created:f,beforeMount:g,mounted:k,beforeUpdate:T,updated:M,activated:P,deactivated:H,beforeDestroy:L,beforeUnmount:$,destroyed:A,unmounted:w,render:R,renderTracked:j,renderTriggered:te,errorCaptured:G,serverPrefetch:ut,expose:Xe,inheritAttrs:Ze,components:Ct,directives:kt,filters:Gt}=t;if(h&&Pi(h,r,null),i)for(const X in i){const q=i[X];I(q)&&(r[X]=q.bind(n))}if(s){const X=s.call(n,n);Y(X)&&(e.data=vt(X))}if(or=!0,o)for(const X in o){const q=o[X],Qe=I(q)?q.bind(n,n):I(q.get)?q.get.bind(n,n):Re,Tt=!I(q)&&I(q.set)?q.set.bind(n):Re,Oe=Z({get:Qe,set:Tt});Object.defineProperty(r,X,{enumerable:!0,configurable:!0,get:()=>Oe.value,set:ye=>Oe.value=ye})}if(l)for(const X in l)gs(l[X],r,n,X);if(c){const X=I(c)?c.call(n):c;Reflect.ownKeys(X).forEach(q=>{ai(q,X[q])})}f&&ps(f,e,"c");function le(X,q){F(q)?q.forEach(Qe=>X(Qe.bind(n))):q&&X(q.bind(n))}if(le(mi,g),le(nr,k),le(xi,T),le(yi,M),le(_i,P),le(vi,H),le(ki,G),le(Ci,j),le(Si,te),le(us,$),le(ds,w),le(wi,ut),F(Xe))if(Xe.length){const X=e.exposed||(e.exposed={});Xe.forEach(q=>{Object.defineProperty(X,q,{get:()=>n[q],set:Qe=>n[q]=Qe,enumerable:!0})})}else e.exposed||(e.exposed={});R&&e.render===Re&&(e.render=R),Ze!=null&&(e.inheritAttrs=Ze),Ct&&(e.components=Ct),kt&&(e.directives=kt),ut&&ls(e)}function Pi(e,t,n=Re){F(e)&&(e=ir(e));for(const r in e){const s=e[r];let o;Y(s)?"default"in s?o=gn(s.from||r,s.default,!0):o=gn(s.from||r):o=gn(s),ue(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function ps(e,t,n){Pe(F(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function gs(e,t,n,r){let s=r.includes(".")?os(n,r):()=>n[r];if(ne(e)){const o=t[e];I(o)&&Nt(s,o)}else if(I(e))Nt(s,e.bind(n));else if(Y(e))if(F(e))e.forEach(o=>gs(o,t,n,r));else{const o=I(e.handler)?e.handler.bind(n):t[e.handler];I(o)&&Nt(s,o,e)}}function _s(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!s.length&&!n&&!r?c=t:(c={},s.length&&s.forEach(h=>xn(c,h,i,!0)),xn(c,t,i)),Y(t)&&o.set(t,c),c}function xn(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&xn(e,o,n,!0),s&&s.forEach(i=>xn(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const l=Oi[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const Oi={data:vs,props:bs,emits:bs,methods:Bt,computed:Bt,beforeCreate:ge,created:ge,beforeMount:ge,mounted:ge,beforeUpdate:ge,updated:ge,beforeDestroy:ge,beforeUnmount:ge,destroyed:ge,unmounted:ge,activated:ge,deactivated:ge,errorCaptured:ge,serverPrefetch:ge,components:Bt,directives:Bt,watch:Mi,provide:vs,inject:Ri};function vs(e,t){return t?e?function(){return se(I(e)?e.call(this,this):e,I(t)?t.call(this,this):t)}:t:e}function Ri(e,t){return Bt(ir(e),ir(t))}function ir(e){if(F(e)){const t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${ve(t)}Modifiers`]||e[`${Ce(t)}Modifiers`];function Ni(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||Q;let s=n;const o=t.startsWith("update:"),i=o&&$i(r,t.slice(7));i&&(i.trim&&(s=n.map(f=>ne(f)?f.trim():f)),i.number&&(s=s.map(xo)));let l,c=r[l=In(t)]||r[l=In(ve(t))];!c&&o&&(c=r[l=In(Ce(t))]),c&&Pe(c,e,6,s);const h=r[l+"Once"];if(h){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Pe(h,e,6,s)}}const Li=new WeakMap;function xs(e,t,n=!1){const r=n?Li:t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let i={},l=!1;if(!I(e)){const c=h=>{const f=xs(h,t,!0);f&&(l=!0,se(i,f))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(Y(e)&&r.set(e,null),null):(F(o)?o.forEach(c=>i[c]=null):se(i,o),Y(e)&&r.set(e,i),i)}function yn(e,t){return!e||!Jt(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),z(e,t[0].toLowerCase()+t.slice(1))||z(e,Ce(t))||z(e,t))}function zc(){}function ys(e){const{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[o],slots:i,attrs:l,emit:c,render:h,renderCache:f,props:g,data:k,setupState:T,ctx:M,inheritAttrs:P}=e,H=pn(e);let L,$;try{if(n.shapeFlag&4){const w=s||r,R=w;L=De(h.call(R,w,f,g,T,k,M)),$=l}else{const w=t;L=De(w.length>1?w(g,{attrs:l,slots:i,emit:c}):w(g,null)),$=t.props?l:ji(l)}}catch(w){ft.length=0,un(w,e,1),L=re(qe)}let A=L;if($&&P!==!1){const w=Object.keys($),{shapeFlag:R}=A;w.length&&R&7&&(o&&w.some(Yt)&&($=Di($,o)),A=St(A,$,!1,!0))}if(n.dirs&&(A=St(A,null,!1,!0),A.dirs=A.dirs?A.dirs.concat(n.dirs):n.dirs),n.transition){const w=_n(A.type)&&is(A)||A;er(w,n.transition)}return L=A,pn(H),L}const ji=e=>{let t;for(const n in e)(n==="class"||n==="style"||Jt(n))&&((t||(t={}))[n]=e[n]);return t},Di=(e,t)=>{const n={};for(const r in e)(!Yt(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Bi(e,t,n){const{props:r,children:s,component:o}=e,{props:i,children:l,patchFlag:c}=t,h=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?ws(r,i,h):!!i;if(c&8){const f=t.dynamicProps;for(let g=0;gObject.create(Cs),Ts=e=>Object.getPrototypeOf(e)===Cs;function Ui(e,t,n,r=!1){const s={},o=ks();e.propsDefaults=Object.create(null),As(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:zo(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function Vi(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,l=K(s),[c]=e.propsOptions;let h=!1;if((r||i>0)&&!(i&16)){if(i&8){const f=e.vnode.dynamicProps;for(let g=0;g{c=!0;const[k,T]=Es(g,t,!0);se(i,k),T&&l.push(...T)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!c)return Y(e)&&r.set(e,pt),pt;if(F(o))for(let f=0;fe==="_"||e==="_ctx"||e==="$stable",ar=e=>F(e)?e.map(De):[De(e)],Wi=(e,t,n)=>{if(t._n)return t;const r=ci((...s)=>ar(t(...s)),n);return r._c=!1,r},Os=(e,t,n)=>{const r=e._ctx;for(const s in e){if(cr(s))continue;const o=e[s];if(I(o))t[s]=Wi(s,o,r);else if(o!=null){const i=ar(o);t[s]=()=>i}}},Rs=(e,t)=>{const n=ar(t);e.slots.default=()=>n},Ms=(e,t,n)=>{for(const r in t)(n||!cr(r))&&(e[r]=t[r])},zi=(e,t,n)=>{const r=e.slots=ks();if(e.vnode.shapeFlag&32){const s=t._;s?(Ms(r,t,n),n&&kr(r,"_",s,!0)):Os(t,r)}else t&&Rs(e,t)},qi=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=Q;if(r.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:Ms(s,t,n):(o=!t.$stable,Os(t,s)),i=t}else t&&(Rs(e,t),i={default:1});if(o)for(const l in s)!cr(l)&&i[l]==null&&delete s[l]},be=Zi;function Gi(e){return Ji(e)}function Ji(e,t){const n=en();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:l,createComment:c,setText:h,setElementText:f,parentNode:g,nextSibling:k,setScopeId:T=Re,insertStaticContent:M}=e,P=(a,u,_,y=null,d=null,p=null,b=void 0,m=null,x=!!u.dynamicChildren)=>{if(a===u)return;a&&!Ut(a,u)&&(y=Te(a),ye(a,d,p,!0),a=null),u.patchFlag===-2&&(x=!1,u.dynamicChildren=null);const{type:v,ref:S,shapeFlag:C}=u;switch(v){case wn:H(a,u,_,y);break;case qe:L(a,u,_,y);break;case ur:a==null&&$(u,_,y,b);break;case ce:Ct(a,u,_,y,d,p,b,m,x);break;default:C&1?R(a,u,_,y,d,p,b,m,x):C&6?kt(a,u,_,y,d,p,b,m,x):(C&64||C&128)&&v.process(a,u,_,y,d,p,b,m,x,st)}S!=null&&d?Lt(S,a&&a.ref,p,u||a,!u):S==null&&a&&a.ref!=null&&Lt(a.ref,null,p,a,!0)},H=(a,u,_,y)=>{if(a==null)r(u.el=l(u.children),_,y);else{const d=u.el=a.el;u.children!==a.children&&h(d,u.children)}},L=(a,u,_,y)=>{a==null?r(u.el=c(u.children||""),_,y):u.el=a.el},$=(a,u,_,y)=>{[a.el,a.anchor]=M(a.children,u,_,y,a.el,a.anchor)},A=({el:a,anchor:u},_,y)=>{let d;for(;a&&a!==u;)d=k(a),r(a,_,y),a=d;r(u,_,y)},w=({el:a,anchor:u})=>{let _;for(;a&&a!==u;)_=k(a),s(a),a=_;s(u)},R=(a,u,_,y,d,p,b,m,x)=>{if(u.type==="svg"?b="svg":u.type==="math"&&(b="mathml"),a==null)j(u,_,y,d,p,b,m,x);else{const v=a.el&&a.el._isVueCE?a.el:null;try{v&&v._beginPatch(),ut(a,u,d,p,b,m,x)}finally{v&&v._endPatch()}}},j=(a,u,_,y,d,p,b,m)=>{let x,v;const{props:S,shapeFlag:C,transition:E,dirs:O}=a;if(x=a.el=i(a.type,p,S&&S.is,S),C&8?f(x,a.children):C&16&&G(a.children,x,null,y,d,fr(a,p),b,m),O&&ct(a,null,y,"created"),te(x,a,a.scopeId,b,y),S){for(const W in S)W!=="value"&&!Et(W)&&o(x,W,null,S[W],p,y);"value"in S&&o(x,"value",null,S.value,p),(v=S.onVnodeBeforeMount)&&Be(v,y,a)}O&&ct(a,null,y,"beforeMount");const D=Yi(d,E);D&&E.beforeEnter(x),r(x,u,_),((v=S&&S.onVnodeMounted)||D||O)&&be(()=>{try{v&&Be(v,y,a),D&&E.enter(x),O&&ct(a,null,y,"mounted")}finally{}},d)},te=(a,u,_,y,d)=>{if(_&&T(a,_),y)for(let p=0;p{for(let v=x;v{const m=u.el=a.el;let{patchFlag:x,dynamicChildren:v,dirs:S}=u;x|=a.patchFlag&16;const C=a.props||Q,E=u.props||Q;let O;if(_&&at(_,!1),(O=E.onVnodeBeforeUpdate)&&Be(O,_,u,a),S&&ct(u,a,_,"beforeUpdate"),_&&at(_,!0),v&&(!a.dynamicChildren||a.dynamicChildren.length!==v.length)&&(x=0,b=!1,v=null),(C.innerHTML&&E.innerHTML==null||C.textContent&&E.textContent==null)&&f(m,""),v?Xe(a.dynamicChildren,v,m,_,y,fr(u,d),p):b||q(a,u,m,null,_,y,fr(u,d),p,!1),x>0){if(x&16)Ze(m,C,E,_,d);else if(x&2&&C.class!==E.class&&o(m,"class",null,E.class,d),x&4&&o(m,"style",C.style,E.style,d),x&8){const D=u.dynamicProps;for(let W=0;W{O&&Be(O,_,u,a),S&&ct(u,a,_,"updated")},y)},Xe=(a,u,_,y,d,p,b)=>{for(let m=0;m{if(u!==_){if(u!==Q)for(const p in u)!Et(p)&&!(p in _)&&o(a,p,u[p],null,d,y);for(const p in _){if(Et(p))continue;const b=_[p],m=u[p];b!==m&&p!=="value"&&o(a,p,m,b,d,y)}"value"in _&&o(a,"value",u.value,_.value,d)}},Ct=(a,u,_,y,d,p,b,m,x)=>{const v=u.el=a?a.el:l(""),S=u.anchor=a?a.anchor:l("");let{patchFlag:C,dynamicChildren:E,slotScopeIds:O}=u;O&&(m=m?m.concat(O):O),a==null?(r(v,_,y),r(S,_,y),G(u.children||[],_,S,d,p,b,m,x)):C>0&&C&64&&E&&a.dynamicChildren&&a.dynamicChildren.length===E.length?(Xe(a.dynamicChildren,E,_,d,p,b,m),(u.key!=null||d&&u===d.subTree)&&Fs(a,u,!0)):q(a,u,_,S,d,p,b,m,x)},kt=(a,u,_,y,d,p,b,m,x)=>{u.slotScopeIds=m,a==null?u.shapeFlag&512?d.ctx.activate(u,_,y,b,x):Gt(u,_,y,d,p,b,x):An(a,u,x)},Gt=(a,u,_,y,d,p,b)=>{const m=a.component=ol(a,y,d);if(tr(a)&&(m.ctx.renderer=st),il(m,!1,b),m.asyncDep){if(d&&d.registerDep(m,le,b),!a.el){const x=m.subTree=re(qe);L(null,x,u,_),a.placeholder=x.el}}else le(m,a,u,_,d,p,b)},An=(a,u,_)=>{const y=u.component=a.component;if(Bi(a,u,_))if(y.asyncDep&&!y.asyncResolved){X(y,u,_);return}else y.next=u,y.update();else u.el=a.el,y.vnode=u},le=(a,u,_,y,d,p,b)=>{const m=()=>{if(a.isMounted){let{next:C,bu:E,u:O,parent:D,vnode:W}=a;{const me=Is(a);if(me){C&&(C.el=W.el,X(a,C,b)),me.asyncDep.then(()=>{be(()=>{a.isUnmounted||v()},d)});return}}let U=C,J;at(a,!1),C?(C.el=W.el,X(a,C,b)):C=W,E&&$n(E),(J=C.props&&C.props.onVnodeBeforeUpdate)&&Be(J,D,C,W),at(a,!0);const ie=ys(a),we=a.subTree;a.subTree=ie,P(we,ie,g(we.el),Te(we),a,d,p),C.el=ie.el,U===null&&Hi(a,ie.el),O&&be(O,d),(J=C.props&&C.props.onVnodeUpdated)&&be(()=>Be(J,D,C,W),d)}else{let C;const{el:E,props:O}=u,{bm:D,m:W,parent:U,root:J,type:ie}=a,we=jt(u);at(a,!1),D&&$n(D),!we&&(C=O&&O.onVnodeBeforeMount)&&Be(C,U,u),at(a,!0);{J.ce&&J.ce._hasShadowRoot()&&J.ce._injectChildStyle(ie,a.parent?a.parent.type:void 0);const me=a.subTree=ys(a);P(null,me,_,y,a,d,p),u.el=me.el}if(W&&be(W,d),!we&&(C=O&&O.onVnodeMounted)){const me=u;be(()=>Be(C,U,me),d)}(u.shapeFlag&256||U&&jt(U.vnode)&&U.vnode.shapeFlag&256)&&a.a&&be(a.a,d),a.isMounted=!0,u=_=y=null}};a.scope.on();const x=a.effect=new Mr(m);a.scope.off();const v=a.update=x.run.bind(x),S=a.job=x.runIfDirty.bind(x);S.i=a,S.id=a.uid,x.scheduler=()=>Zn(S),at(a,!0),v()},X=(a,u,_)=>{u.component=a;const y=a.vnode.props;a.vnode=u,a.next=null,Vi(a,u.props,y,_),qi(a,u.children,_),Ie(),es(a),$e()},q=(a,u,_,y,d,p,b,m,x=!1)=>{const v=a&&a.children,S=a?a.shapeFlag:0,C=u.children,{patchFlag:E,shapeFlag:O}=u;if(E>0){if(E&128){Tt(v,C,_,y,d,p,b,m,x);return}else if(E&256){Qe(v,C,_,y,d,p,b,m,x);return}}O&8?(S&16&&dt(v,d,p),C!==v&&f(_,C)):S&16?O&16?Tt(v,C,_,y,d,p,b,m,x):dt(v,d,p,!0):(S&8&&f(_,""),O&16&&G(C,_,y,d,p,b,m,x))},Qe=(a,u,_,y,d,p,b,m,x)=>{a=a||pt,u=u||pt;const v=a.length,S=u.length,C=Math.min(v,S);let E;for(E=0;ES?dt(a,d,p,!0,!1,C):G(u,_,y,d,p,b,m,x,C)},Tt=(a,u,_,y,d,p,b,m,x)=>{let v=0;const S=u.length;let C=a.length-1,E=S-1;for(;v<=C&&v<=E;){const O=a[v],D=u[v]=x?Je(u[v]):De(u[v]);if(Ut(O,D))P(O,D,_,null,d,p,b,m,x);else break;v++}for(;v<=C&&v<=E;){const O=a[C],D=u[E]=x?Je(u[E]):De(u[E]);if(Ut(O,D))P(O,D,_,null,d,p,b,m,x);else break;C--,E--}if(v>C){if(v<=E){const O=E+1,D=OE)for(;v<=C;)ye(a[v],d,p,!0),v++;else{const O=v,D=v,W=new Map;for(v=D;v<=E;v++){const Se=u[v]=x?Je(u[v]):De(u[v]);Se.key!=null&&W.set(Se.key,v)}let U,J=0;const ie=E-D+1;let we=!1,me=0;const ht=new Array(ie);for(v=0;v=ie){ye(Se,d,p,!0);continue}let Ue;if(Se.key!=null)Ue=W.get(Se.key);else for(U=D;U<=E;U++)if(ht[U-D]===0&&Ut(Se,u[U])){Ue=U;break}Ue===void 0?ye(Se,d,p,!0):(ht[Ue-D]=v+1,Ue>=me?me=Ue:we=!0,P(Se,u[Ue],_,null,d,p,b,m,x),J++)}const ho=we?Xi(ht):pt;for(U=ho.length-1,v=ie-1;v>=0;v--){const Se=D+v,Ue=u[Se],po=u[Se+1],go=Se+1{const{el:p,type:b,transition:m,children:x,shapeFlag:v}=a;if(v&6){Oe(a.component.subTree,u,_,y);return}if(v&128){a.suspense.move(u,_,y);return}if(v&64){b.move(a,u,_,st);return}if(b===ce){r(p,u,_);for(let C=0;Cm.enter(p),d));else{const{leave:C,delayLeave:E,afterLeave:O}=m,D=()=>{a.ctx.isUnmounted?s(p):r(p,u,_)},W=()=>{const U=p._isLeaving||!!p[Qn];p._isLeaving&&p[Qn](!0),m.persisted&&!U?D():C(p,()=>{D(),O&&O()})};E?E(p,D,W):W()}else r(p,u,_)},ye=(a,u,_,y=!1,d=!1)=>{const{type:p,props:b,ref:m,children:x,dynamicChildren:v,shapeFlag:S,patchFlag:C,dirs:E,cacheIndex:O,memo:D}=a;if(C===-2&&(d=!1),m!=null&&(Ie(),Lt(m,null,_,a,!0),$e()),O!=null&&(u.renderCache[O]=void 0),S&256){u.ctx.deactivate(a);return}const W=S&1&&E,U=!jt(a);let J;if(U&&(J=b&&b.onVnodeBeforeUnmount)&&Be(J,u,a),S&6)Pn(a.component,_,y);else{if(S&128){a.suspense.unmount(_,y);return}W&&ct(a,null,u,"beforeUnmount"),S&64?a.type.remove(a,u,_,st,y):v&&!v.hasOnce&&(p!==ce||C>0&&C&64)?dt(v,u,_,!1,!0):(p===ce&&C&384||!d&&S&16)&&dt(x,u,_),y&&En(a)}const ie=D!=null&&O==null;(U&&(J=b&&b.onVnodeUnmounted)||W||ie)&&be(()=>{J&&Be(J,u,a),W&&ct(a,null,u,"unmounted"),ie&&(a.el=null)},_)},En=a=>{const{type:u,el:_,anchor:y,transition:d}=a;if(u===ce){mr(_,y);return}if(u===ur){w(a);return}const p=()=>{s(_),d&&!d.persisted&&d.afterLeave&&d.afterLeave()};if(a.shapeFlag&1&&d&&!d.persisted){const{leave:b,delayLeave:m}=d,x=()=>b(_,p);m?m(a.el,p,x):x()}else p()},mr=(a,u)=>{let _;for(;a!==u;)_=k(a),s(a),a=_;s(u)},Pn=(a,u,_)=>{const{bum:y,scope:d,job:p,subTree:b,um:m,m:x,a:v}=a;$s(x),$s(v),y&&$n(y),d.stop(),p&&(p.flags|=8,ye(b,a,u,_)),m&&be(m,u),be(()=>{a.isUnmounted=!0},u)},dt=(a,u,_,y=!1,d=!1,p=0)=>{for(let b=p;b{if(a.shapeFlag&6)return Te(a.component.subTree);if(a.shapeFlag&128)return a.suspense.next();const u=k(a.anchor||a.el),_=u&&u[hi];return _?k(_):u};let He=!1;const On=(a,u,_)=>{let y;a==null?u._vnode&&(ye(u._vnode,null,null,!0),y=u._vnode.component):P(u._vnode||null,a,u,null,null,null,_),u._vnode=a,He||(He=!0,es(y),ts(),He=!1)},st={p:P,um:ye,m:Oe,r:En,mt:Gt,mc:G,pc:q,pbc:Xe,n:Te,o:e};return{render:On,hydrate:void 0,createApp:Ii(On)}}function fr({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function at({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Yi(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Fs(e,t,n=!1){const r=e.children,s=t.children;if(F(r)&&F(s))for(let o=0;o>1,e[n[l]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function Is(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Is(t)}function $s(e){if(e)for(let t=0;te.__isSuspense;function Zi(e,t){t&&t.pendingBranch?F(e)?t.effects.push(...e):t.effects.push(e):li(e)}const ce=Symbol.for("v-fgt"),wn=Symbol.for("v-txt"),qe=Symbol.for("v-cmt"),ur=Symbol.for("v-stc"),ft=[];let xe=null;function B(e=!1){ft.push(xe=e?null:[])}function js(){ft.pop(),xe=ft[ft.length-1]||null}let Ht=1;function Ds(e,t=!1){Ht+=e,e<0&&xe&&t&&(xe.hasOnce=!0)}function Bs(e){return e.dynamicChildren=Ht>0?xe||pt:null,js(),Ht>0&&xe&&xe.push(e),e}function V(e,t,n,r,s,o){return Bs(N(e,t,n,r,s,o,!0))}function Qi(e,t,n,r,s){return Bs(re(e,t,n,r,s,!0))}function Hs(e){return e?e.__v_isVNode===!0:!1}function Ut(e,t){return e.type===t.type&&e.key===t.key}const Us=({key:e})=>e??null,Sn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ne(e)||ue(e)||I(e)?{i:je,r:e,k:t,f:!!n}:e:null);function N(e,t=null,n=null,r=0,s=null,o=e===ce?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Us(t),ref:t&&Sn(t),scopeId:rs,slotScopeIds:null,children:n,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:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:je};return l?(Cn(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=ne(n)?8:16),Ht>0&&!i&&xe&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&xe.push(c),c}const re=el;function el(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===Ti)&&(e=qe),Hs(e)){const l=St(e,t,!0);return n&&Cn(l,n),Ht>0&&!o&&xe&&(l.shapeFlag&6?xe[xe.indexOf(e)]=l:xe.push(l)),l.patchFlag=-2,l}if(hl(e)&&(e=e.__vccOpts),t){t=tl(t);let{class:l,style:c}=t;l&&!ne(l)&&(t.class=tn(l)),Y(c)&&(Jn(c)&&!F(c)&&(c=se({},c)),t.style=gt(c))}const i=ne(e)?1:Ls(e)?128:_n(e)?64:Y(e)?4:I(e)?2:0;return N(e,t,n,r,s,i,o,!0)}function tl(e){return e?Jn(e)||Ts(e)?se({},e):e:null}function St(e,t,n=!1,r=!1){const{props:s,ref:o,patchFlag:i,children:l,transition:c}=e,h=t?nl(s||{},t):s,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:h,key:h&&Us(h),ref:t&&t.ref?n&&o?F(o)?o.concat(Sn(t)):[o,Sn(t)]:Sn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ce?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&St(e.ssContent),ssFallback:e.ssFallback&&St(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&r&&er(f,c.clone(f)),f}function Ge(e=" ",t=0){return re(wn,null,e,t)}function ae(e="",t=!1){return t?(B(),Qi(qe,null,e)):re(qe,null,e)}function De(e){return e==null||typeof e=="boolean"?re(qe):F(e)?re(ce,null,e.slice()):Hs(e)?Je(e):re(wn,null,String(e))}function Je(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:St(e)}function Cn(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(F(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),Cn(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!Ts(t)?t._ctx=je:s===3&&je&&(je.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(I(t)){if(r&65){Cn(e,{default:t});return}t={default:t,_ctx:je},n=32}else t=String(t),r&64?(n=16,t=[Ge(t)]):n=8;e.children=t,e.shapeFlag|=n}function nl(...e){const t={};for(let n=0;n_e||je;let kn,Vt;{const e=en(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),o=>{s.length>1?s.forEach(i=>i(o)):s[0](o)}};kn=t("__VUE_INSTANCE_SETTERS__",n=>_e=n),Vt=t("__VUE_SSR_SETTERS__",n=>Wt=n)}const Kt=e=>{const t=_e;return kn(e),e.scope.on(),()=>{e.scope.off(),kn(t)}},Vs=()=>{_e&&_e.scope.off(),kn(null)};function Ks(e){return e.vnode.shapeFlag&4}let Wt=!1;function il(e,t=!1,n=!1){t&&Vt(t);const{props:r,children:s}=e.vnode,o=Ks(e);Ui(e,r,o,t),zi(e,s,n||t);const i=o?ll(e,t):void 0;return t&&Vt(!1),i}function ll(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Ai);const{setup:r}=n;if(r){Ie();const s=e.setupContext=r.length>1?al(e):null,o=Kt(e),i=mt(r,e,0,[e.props,s]),l=wr(i);if($e(),o(),(l||e.sp)&&!jt(e)&&ls(e),l){if(i.then(Vs,Vs),t)return i.then(c=>{Vt(!0);try{Ws(e,c,t)}finally{Vt(!1)}}).catch(c=>{un(c,e,0)});e.asyncDep=i}else Ws(e,i)}else zs(e)}function Ws(e,t,n){I(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Y(t)&&(e.setupState=Yr(t)),zs(e)}function zs(e,t,n){const r=e.type;e.render||(e.render=r.render||Re);{const s=Kt(e);Ie();try{Ei(e)}finally{$e(),s()}}}const cl={get(e,t){return de(e,"get",""),e[t]}};function al(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,cl),slots:e.slots,emit:e.emit,expose:t}}function hr(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Yr(qo(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Dt)return Dt[n](e)},has(t,n){return n in t||n in Dt}})):e.proxy}const fl=/(?:^|[-_])\w/g,ul=e=>e.replace(fl,t=>t.toUpperCase()).replace(/[-_]/g,"");function dl(e,t=!0){return I(e)?e.displayName||e.name:e.name||t&&e.__name}function qs(e,t,n=!1){let r=dl(t);if(!r&&t.__file){const s=t.__file.match(/([^/\\]+)\.\w+$/);s&&(r=s[1])}if(!r&&e){const s=o=>{for(const i in o)if(o[i]===t)return i};r=s(e.components)||e.parent&&s(e.parent.type.components)||s(e.appContext.components)}return r?ul(r):n?"App":"Anonymous"}function hl(e){return I(e)&&"__vccOpts"in e}const Z=(e,t)=>Zo(e,t,Wt),pl="3.5.42";/** * @vue/runtime-dom v3.5.42 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/let pr;const Js=typeof window<"u"&&window.trustedTypes;if(Js)try{pr=Js.createPolicy("vue",{createHTML:e=>e})}catch{}const Ys=pr?e=>pr.createHTML(e):e=>e,gl="http://www.w3.org/2000/svg",_l="http://www.w3.org/1998/Math/MathML",Ge=typeof document<"u"?document:null,Xs=Ge&&Ge.createElement("template"),vl={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?Ge.createElementNS(gl,e):t==="mathml"?Ge.createElementNS(_l,e):n?Ge.createElement(e,{is:n}):Ge.createElement(e);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>Ge.createTextNode(e),createComment:e=>Ge.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ge.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{Xs.innerHTML=Ys(r==="svg"?`${e}`:r==="mathml"?`${e}`:e);const l=Xs.content;if(r==="svg"||r==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},bl=Symbol("_vtc");function ml(e,t,n){const r=e[bl];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Zs=Symbol("_vod"),xl=Symbol("_vsh"),yl=Symbol(""),wl=/(?:^|;)\s*display\s*:/;function Sl(e,t,n){const r=e.style,s=te(n);let o=!1;if(n&&!s){if(t)if(te(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&zt(r,l,"")}else for(const i in t)n[i]==null&&zt(r,i,"");for(const i in n){i==="display"&&(o=!0);const l=n[i];l!=null?kl(e,i,!te(t)&&t?t[i]:void 0,l)||zt(r,i,l):zt(r,i,"")}}else if(s){if(t!==n){const i=r[yl];i&&(n+=";"+i),r.cssText=n,o=wl.test(n)}}else t&&e.removeAttribute("style");Zs in e&&(e[Zs]=o?r.display:"",e[xl]&&(r.display="none"))}const En=/\s*!important$/;function zt(e,t,n){if(F(n))n.forEach(r=>zt(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))En.test(n)?e.setProperty(t,n.replace(En,""),"important"):e.setProperty(t,n);else{const r=Cl(e,t);En.test(n)?e.setProperty(ye(r),n.replace(En,""),"important"):e[r]=n}}const Qs=["Webkit","Moz","ms"],gr={};function Cl(e,t){const n=gr[t];if(n)return n;let r=ve(t);if(r!=="filter"&&r in e)return gr[t]=r;r=kr(r);for(let s=0;s_r||(Ml.then(()=>_r=0),_r=Date.now());function Il(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;const s=n.value;if(F(s)){const o=r.stopImmediatePropagation;r.stopImmediatePropagation=()=>{o.call(r),r._stopped=!0};const i=s.slice(),l=[r];for(let c=0;ce.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,$l=(e,t,n,r,s,o)=>{const i=s==="svg";t==="class"?ml(e,r,i):t==="style"?Sl(e,n,r):Xt(t)?Zt(t)||El(e,t,n,r,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Nl(e,t,r,i))?(no(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&to(e,t,r,i,o,t!=="value")):e._isVueCE&&(Ll(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!te(r)))?no(e,ve(t),r,o,t):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),to(e,t,r,i))};function Nl(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&so(t)&&I(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return so(t)&&te(n)?!1:t in e}function Ll(e,t){const n=e._def.props;if(!n)return!1;const r=ve(t);return Array.isArray(n)?n.some(s=>ve(s)===r):Object.keys(n).some(s=>ve(s)===r)}const oo={};function vr(e,t,n){let r=gi(e,t);en(r)&&(r=se({},r,t));class s extends br{constructor(i){super(r,i,n)}}return s.def=r,s}const jl=typeof HTMLElement<"u"?HTMLElement:class{};class br extends jl{constructor(t,n={},r=co){super(),this._def=t,this._props=n,this._createApp=r,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&&r!==co?this._root=this.shadowRoot:t.shadowRoot!==!1?(this.attachShadow(se({},t.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 t=this;for(;t=t&&(t.assignedSlot||t.parentNode||t.host);)if(t instanceof br){this._parent=t;break}this._instance||(this._resolved?this._mount(this._def):t&&t._pendingResolve?this._pendingResolve=t._pendingResolve.then(()=>{if(this._pendingResolve=void 0,this.isConnected)return this._resolveDef()}):this._resolveDef())}_setParent(t=this._parent){t&&(this._instance.parent=t._instance,this._inheritParentContext(t))}_inheritParentContext(t=this._parent){t&&this._app&&Object.setPrototypeOf(this._app._context.provides,t._instance.provides)}disconnectedCallback(){this._connected=!1,gn(()=>{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(t){for(const n of t)this._setAttr(n.attributeName)}_resolveDef(){if(this._pendingResolve)return this._pendingResolve;for(let r=0;r{this._resolved=!0,this._pendingResolve=void 0;const{props:o,styles:i}=r;let l;if(o&&!F(o))for(const c in o){const h=o[c];(h===Number||h&&h.type===Number)&&(c in this._props&&(this._props[c]=Ar(this._props[c])),(l||(l=Object.create(null)))[ve(c)]=!0)}this._numberProps=l,this._resolveProps(r),this.shadowRoot&&this._applyStyles(i),this._mount(r)},n=this._def.__asyncLoader;if(n)return this._pendingResolve=n().then(r=>{r.configureApp=this._def.configureApp,t(this._def=r,!0)}),this._pendingResolve;t(this._def)}_mount(t){this._app=this._createApp(t),this._inheritParentContext(),t.configureApp&&t.configureApp(this._app),this._app._ceVNode=this._createVNode(),this._app.mount(this._root);const n=this._instance&&this._instance.exposed;if(n)for(const r in n)z(this,r)||Object.defineProperty(this,r,{get:()=>Yn(n[r])})}_resolveProps(t){const{props:n}=t,r=F(n)?n:Object.keys(n||{});for(const s of Object.keys(this))s[0]!=="_"&&r.includes(s)&&this._setProp(s,this[s]);for(const s of r.map(ve))Object.defineProperty(this,s,{get(){return this._getProp(s)},set(o){this._setProp(s,o,!0,!this._patching)}})}_setAttr(t){if(t.startsWith("data-v-"))return;const n=this.hasAttribute(t);let r=n?this.getAttribute(t):oo;const s=ve(t);n&&this._numberProps&&this._numberProps[s]&&(r=Ar(r)),this._setProp(s,r,!1,!0)}_getProp(t){return this._props[t]}_setProp(t,n,r=!0,s=!1){if(n!==this._props[t]&&(this._dirty=!0,n===oo?delete this._props[t]:(this._props[t]=n,t==="key"&&this._app&&(this._app._ceVNode.key=n)),s&&this._instance&&this._update(),r)){const o=this._ob;o&&(this._processMutations(o.takeRecords()),o.disconnect()),n===!0?this.setAttribute(ye(t),""):typeof n=="string"||typeof n=="number"?this.setAttribute(ye(t),n+""):n||this.removeAttribute(ye(t)),o&&o.observe(this,{attributes:!0})}}_update(){const t=this._createVNode();this._app&&(t.appContext=this._app._context),Bl(t,this._root)}_createVNode(){const t={};this.shadowRoot||(t.onVnodeMounted=t.onVnodeUpdated=this._renderSlots.bind(this));const n=re(this._def,se(t,this._props));return this._instance||(n.ce=r=>{this._instance=r,r.ce=this,r.isCE=!0;const s=(o,i)=>{this.dispatchEvent(new CustomEvent(o,en(i[0])?se({detail:i},i[0]):{detail:i}))};r.emit=(o,...i)=>{s(o,i),ye(o)!==o&&s(ye(o),i)},this._setParent()}),n}_applyStyles(t,n,r){if(!t)return;if(n){if(n===this._def||this._styleChildren.has(n))return;this._styleChildren.add(n)}const s=this._nonce,o=this.shadowRoot,i=r?this._getStyleAnchor(r)||this._getStyleAnchor(this._def):this._getRootStyleInsertionAnchor(o);let l=null;for(let c=t.length-1;c>=0;c--){const h=document.createElement("style");s&&h.setAttribute("nonce",s),h.textContent=t[c],o.insertBefore(h,l||i),l=h,c===0&&(r||this._styleAnchors.set(this._def,h),n&&this._styleAnchors.set(n,h))}}_getStyleAnchor(t){if(!t)return null;const n=this._styleAnchors.get(t);return n&&n.parentNode===this.shadowRoot?n:(n&&this._styleAnchors.delete(t),null)}_getRootStyleInsertionAnchor(t){for(let n=0;n{lo().render(...e)},co=(...e)=>{const t=lo().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=Ul(r);if(!s)return;const o=t._component;!I(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.nodeType===1&&(s.textContent="");const i=n(s,!1,Hl(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t};function Hl(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Ul(e){return te(e)?document.querySelector(e):e}const Vl=".search-box{position:relative;display:flex;align-items:center;margin:0 auto;width:100%;color:var(--dx-muted, #6d766e)}.search-box .search-icon{position:absolute;left:12px;pointer-events:none}.search-box input{width:100%;padding:10px 12px 10px 38px;font-size:.95rem;color:var(--dx-text, #3b463d);background:var(--dx-elevated, #fff);border:1px solid var(--dx-line, #d1d4cd);border-radius:10px;outline:none;box-sizing:border-box}.search-box input:focus{border-color:var(--dx-accent, #92b195);box-shadow:0 0 0 2px var(--dx-accent-weak, rgba(146, 177, 149, .18))}",qt=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},Kl=["value","placeholder","aria-label"],ao=qt({__name:"SearchBar",props:{modelValue:{type:String,default:""},placeholder:{type:String,default:"Search…"},ariaLabel:{type:String,default:"Search"},maxWidth:{type:String,default:""}},emits:["update:modelValue","search"],setup(e,{emit:t}){const n=e,r=t,s=X(()=>n.maxWidth?{maxWidth:n.maxWidth}:{});function o(i){const l=i.target.value??"";r("update:modelValue",l),r("search",{value:l})}return(i,l)=>(B(),U("div",{class:"search-box",style:ht(s.value)},[l[0]||(l[0]=N("svg",{class:"search-icon",width:"18",height:"18",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},[N("circle",{cx:"11",cy:"11",r:"7",fill:"none",stroke:"currentColor","stroke-width":"2"}),N("line",{x1:"16.5",y1:"16.5",x2:"21",y2:"21",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"})],-1)),N("input",{type:"search",value:e.modelValue,placeholder:e.placeholder,"aria-label":e.ariaLabel,onInput:o},null,40,Kl)],4))}},[["styles",[Vl]]]),Wl=".filter-dropdown{position:relative;min-width:160px;max-width:240px;flex:1 1 160px}@media (max-width: 576px){.filter-dropdown{flex:1 1 100%;max-width:90vw}}.filter-dropdown__trigger{width:100%;padding:6px 12px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:6px;font-size:.875rem;color:var(--dx-text, #3b463d);text-align:start;background:var(--dx-elevated, #fff);border:1px solid var(--dx-line, #d1d4cd);border-radius:8px;transition:border-color .15s ease}.filter-dropdown__trigger:hover{border-color:var(--dx-accent, #92b195)}.filter-dropdown__trigger[data-active]{background-color:var(--dx-accent-weak, rgba(146, 177, 149, .18));border-color:var(--dx-accent, #92b195)}.filter-dropdown__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filter-dropdown__chevron{flex-shrink:0;transition:transform .2s ease}.filter-dropdown.is-open .filter-dropdown__chevron{transform:rotate(180deg)}.filter-dropdown__menu{position:absolute;top:100%;left:0;right:0;z-index:10;background-color:var(--dx-elevated, #fff);color:var(--dx-text, #3b463d);border:1px solid var(--dx-line, #d1d4cd);border-radius:8px;margin-top:4px;box-shadow:0 4px 12px #0000001f;overflow:hidden}.filter-dropdown__search{border:none;border-bottom:1px solid var(--dx-line, #d1d4cd);border-radius:0;padding:6px 12px;width:100%;font-size:.875rem;color:var(--dx-text, #3b463d);background:var(--dx-elevated, #fff);outline:none;box-sizing:border-box}.filter-dropdown__search::placeholder{color:var(--dx-muted, #6d766e)}.filter-dropdown__clear{display:block;width:100%;background:none;border:none;border-bottom:1px solid var(--dx-line, #d1d4cd);padding:6px 12px;font-size:.875rem;color:var(--dx-text, #3b463d);cursor:pointer;text-align:start;text-decoration:underline;text-decoration-color:var(--dx-accent, #92b195);text-underline-offset:3px}.filter-dropdown__clear:hover{background-color:var(--dx-accent-weak, rgba(146, 177, 149, .18))}.filter-dropdown__options{max-height:250px;overflow-y:auto}.filter-dropdown__option{padding:5px 12px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;font-size:.875rem;transition:background-color .1s ease}.filter-dropdown__option[data-selected]{font-weight:700;color:var(--dx-text, #3b463d);box-shadow:inset 3px 0 0 var(--dx-accent, #92b195)}.filter-dropdown__option:hover,.filter-dropdown__option[data-highlighted]{background-color:var(--dx-accent-weak, rgba(146, 177, 149, .18))}.filter-dropdown__count{color:var(--dx-muted, #6d766e);font-size:.75rem;margin-inline-start:6px}.filter-dropdown__no-options{padding:12px;font-size:.875rem;color:var(--dx-muted, #6d766e);text-align:center}",zl=["data-active","aria-expanded"],ql={class:"filter-dropdown__label"},Gl={key:0,class:"filter-dropdown__menu",role:"listbox"},Jl=["value","placeholder"],Yl={class:"filter-dropdown__options"},Xl={key:0,class:"filter-dropdown__no-options"},Zl=["data-highlighted","data-selected","aria-selected","onClick","onMouseenter"],Ql={class:"filter-dropdown__count"},rt=qt({__name:"FilterDropdown",props:{label:{type:String,required:!0},name:{type:String,required:!0},options:{type:Array,default:()=>[]},value:{type:String,default:""},placeholder:{type:String,default:"Type to search..."}},emits:["filter-change","filter-clear"],setup(e,{emit:t}){const n=e,r=t,s=he(!1),o=he(""),i=he(-1),l=he(null),c=he(null),h=X(()=>{if(!o.value)return n.options;const w=o.value.toLowerCase();return n.options.filter(O=>O.label.toLowerCase().includes(w))}),f=X(()=>n.options.find(w=>w.value===n.value));function g(w){var j;const O=((j=w.composedPath)==null?void 0:j.call(w))??[];l.value&&!O.includes(l.value)&&M()}function S(){s.value?M():k()}function k(){s.value=!0,o.value="",i.value=-1,document.addEventListener("click",g),gn(()=>{var w;return(w=c.value)==null?void 0:w.focus()})}function M(){s.value=!1,o.value="",i.value=-1,document.removeEventListener("click",g)}function E(w){o.value=w.target.value,i.value=-1}function H(w){const O=h.value;switch(w.key){case"ArrowDown":w.preventDefault(),i.value=Math.min(i.value+1,O.length-1),L();break;case"ArrowUp":w.preventDefault(),i.value=Math.max(i.value-1,0),L();break;case"Enter":{w.preventDefault();const j=O[i.value];j&&$(j);break}case"Escape":w.preventDefault(),M();break}}function L(){gn(()=>{var O;const w=(O=l.value)==null?void 0:O.querySelector(".filter-dropdown__option[data-highlighted]");w==null||w.scrollIntoView({block:"nearest"})})}function $(w){r("filter-change",{name:n.name,value:w.value,label:w.label,type:w.type}),M()}function T(){r("filter-clear",{name:n.name}),M()}return ds(()=>document.removeEventListener("click",g)),(w,O)=>(B(),U("div",{ref_key:"rootRef",ref:l,class:rn(["filter-dropdown",{"is-open":s.value}])},[N("button",{class:"filter-dropdown__trigger input","data-active":e.value?"":void 0,type:"button","aria-haspopup":"listbox","aria-expanded":s.value,onClick:S},[N("span",ql,[f.value?(B(),U(ce,{key:0},[ze(oe(e.label)+": ",1),N("strong",null,oe(f.value.label),1)],64)):(B(),U(ce,{key:1},[ze(oe(e.label),1)],64))]),O[0]||(O[0]=N("svg",{class:"filter-dropdown__chevron",width:"12",height:"12",viewBox:"0 0 12 12",xmlns:"http://www.w3.org/2000/svg"},[N("path",{d:"M2 4l4 4 4-4",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"})],-1))],8,zl),s.value?(B(),U("div",Gl,[N("input",{ref_key:"searchInputRef",ref:c,class:"filter-dropdown__search",type:"text",value:o.value,placeholder:e.placeholder,onInput:E,onKeydown:H},null,40,Jl),e.value?(B(),U("button",{key:0,class:"filter-dropdown__clear",type:"button",onClick:T},"Clear selection")):ae("",!0),N("div",Yl,[h.value.length===0?(B(),U("div",Xl,"No options found")):(B(!0),U(ce,{key:1},yn(h.value,(j,ee)=>(B(),U("div",{key:j.value,class:"filter-dropdown__option",role:"option","data-highlighted":ee===i.value?"":void 0,"data-selected":j.value===e.value?"":void 0,"aria-selected":j.value===e.value,onClick:G=>$(j),onMouseenter:G=>i.value=ee},[N("span",null,oe(j.label),1),N("span",Ql,oe(j.count),1)],40,Zl))),128))])])):ae("",!0)],2))}},[["styles",[Wl]]]),ec=".rh-root{width:100%;box-sizing:border-box;padding:14px 16px;background:#111827;color:#e5e7eb;border-bottom:1px solid #1f2937;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;display:flex;flex-direction:column;gap:12px}.rh-title{display:flex;align-items:center;gap:10px}.rh-title h1{font-size:17px;font-weight:700;letter-spacing:-.01em}.rh-dot{width:10px;height:10px;border-radius:50%;background:var(--accent);box-shadow:0 0 12px var(--accent)}.rh-count{margin-left:auto;font:700 12px/1 ui-monospace,monospace;color:var(--accent)}.rh-search{display:flex}.rh-controls{display:flex;flex-wrap:wrap;align-items:flex-start;gap:10px}.rh-reset{padding:8px 12px;background:transparent;border:1px solid #1f2937;border-radius:8px;color:#94a3b8;font-size:13px;cursor:pointer}.rh-reset:hover{border-color:var(--accent);color:#e5e7eb}",tc={class:"rh-title"},nc={key:0,class:"rh-count",role:"status","aria-live":"polite"},rc={class:"rh-search"},sc={class:"rh-controls"},fo=qt({__name:"BpResearchHeader",props:{count:{type:[Number,String],default:null},title:{type:String,default:"Unified Research Dashboard"},accent:{type:String,default:"#8b5cf6"},prayBaseUrl:{type:String,default:""},languageCode:{type:String,default:""}},emits:["research-filter"],setup(e,{emit:t}){const n=e,r=t,s=X(()=>n.prayBaseUrl||"https://pray.doxa.life"),o=X(()=>n.languageCode||""),i=he(""),l=gt({wagf_region:"",wagf_block:"",rop1:"",religion:""}),c=gt({wagf_region:[],wagf_block:[],rop1:[],religion:[]}),h=X(()=>!!(i.value||l.wagf_region||l.wagf_block||l.rop1||l.religion)),f=dr();function g(){var w,O;const T=((w=f==null?void 0:f.vnode)==null?void 0:w.el)||((O=f==null?void 0:f.proxy)==null?void 0:O.$el);try{const j=T&&T.getRootNode&&T.getRootNode();if(j&&j.host)return j.host}catch{}return T}function S(){const T={query:i.value,wagfRegion:l.wagf_region,wagfBlock:l.wagf_block,rop1:l.rop1,religion:l.religion};r("research-filter",T);const w=g();w&&typeof w.dispatchEvent=="function"&&w.dispatchEvent(new CustomEvent("research-filter",{detail:T,bubbles:!0,composed:!0}))}Nt([i,()=>l.wagf_region,()=>l.wagf_block,()=>l.rop1,()=>l.religion],S,{immediate:!0});function k(T){i.value=(T==null?void 0:T.value)??""}function M(T){(T==null?void 0:T.name)in l&&(l[T.name]=T.value)}function E(T){(T==null?void 0:T.name)in l&&(l[T.name]="")}function H(){i.value="",l.wagf_region="",l.wagf_block="",l.rop1="",l.religion=""}function L(T,w){const O=new Map;for(const j of T){const ee=j[w];if(!(ee!=null&&ee.value))continue;const G=O.get(ee.value);G?G.count++:O.set(ee.value,{label:ee.label,count:1})}return Array.from(O.entries()).map(([j,{label:ee,count:G}])=>({value:j,label:ee,count:G})).sort((j,ee)=>j.label.localeCompare(ee.label))}async function $(){const T=`${s.value}/api/people-groups/list?fields=name,slug,wagf_region,wagf_block,country_code,rop1,religion&lang=${o.value}`;try{const O=await(await fetch(T)).json(),j=Array.isArray(O.posts)?O.posts:[];c.wagf_region=L(j,"wagf_region"),c.wagf_block=L(j,"wagf_block"),c.rop1=L(j,"rop1"),c.religion=L(j,"religion")}catch(w){console.error("[bp-research-header] options fetch error:",w)}}return nr($),(T,w)=>(B(),U("div",{class:"rh-root",role:"banner",style:ht({"--accent":e.accent})},[N("div",tc,[w[0]||(w[0]=N("span",{class:"rh-dot","aria-hidden":"true"},null,-1)),N("h1",null,oe(e.title),1),e.count!==null&&e.count!==""?(B(),U("span",nc,oe(e.count)+" shown",1)):ae("",!0)]),N("div",rc,[re(ao,{"model-value":i.value,placeholder:"Search people groups or countries…","aria-label":"Search people groups",onSearch:k},null,8,["model-value"])]),N("div",sc,[re(rt,{label:"Region",name:"wagf_region",options:c.wagf_region,value:l.wagf_region,onFilterChange:M,onFilterClear:E},null,8,["options","value"]),re(rt,{label:"Bloc",name:"wagf_block",options:c.wagf_block,value:l.wagf_block,onFilterChange:M,onFilterClear:E},null,8,["options","value"]),re(rt,{label:"People Group",name:"rop1",options:c.rop1,value:l.rop1,onFilterChange:M,onFilterClear:E},null,8,["options","value"]),re(rt,{label:"Religion",name:"religion",options:c.religion,value:l.religion,onFilterChange:M,onFilterClear:E},null,8,["options","value"]),h.value?(B(),U("button",{key:0,class:"rh-reset",type:"button","aria-label":"Reset all filters and search",onClick:H},"Reset")):ae("",!0)])],4))}},[["styles",[ec]]]);function oc(e,t){if(!t.includes("."))return e==null?void 0:e[t];const[n,...r]=t.split(".");let s=e==null?void 0:e[n];for(const o of r)s=s==null?void 0:s[o];return s}function ic(e,t){const n=e.toLowerCase(),r=t.toLowerCase(),s=[];let o=0,i=n.indexOf(r,o);for(;i!==-1;)s.push([i,i+r.length-1]),o=i+r.length,i=n.indexOf(r,o);return s}function lc(e,t){const n=e.toLowerCase(),r=t.toLowerCase(),s=[];let o=0,i=-1,l=-1;for(let c=0;c({item:o,matches:[]}));if(n.lengthk-S+1>=Math.min(this.minMatchCharLength,n.length));g.length&&(h=g)}}h.length&&i.push({key:l,indices:h})}i.length&&s.push({item:o,matches:i})}return s}}function ac(e,t){return String(t||e||"").trim().toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}const fc=":host{display:block;width:100%;--dx-surface: #f3f3f1;--dx-elevated: #ffffff;--dx-text: #3b463d;--dx-muted: #6d766e;--dx-line: #d1d4cd;--dx-accent: #92b195;--dx-accent-weak: rgba(146, 177, 149, .18);--dx-accent-soft: rgba(146, 177, 149, .1);--dx-accent-strong: #657967}.pgg-root{--brand: var(--dx-accent, #92b195);--ink: var(--dx-text, #3b463d);--mut: var(--dx-muted, #6d766e);--line: var(--dx-line, #d1d4cd);--card: var(--dx-elevated, #fff);--bg: var(--dx-surface, #f3f3f1);width:100%;box-sizing:border-box;color:var(--ink);background:var(--bg);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;padding:16px}.filters{display:flex;flex-direction:column;gap:12px;margin-bottom:16px}.pgg-search{display:flex;justify-content:center}.filters__toggle{background:var(--dx-elevated, #fff);border:1px solid var(--dx-line, #d1d4cd);border-radius:8px;cursor:pointer;font-size:.875rem;font-weight:500;color:var(--dx-text, #3b463d);padding:7px 12px;display:inline-flex;align-items:center;gap:7px;margin-inline:auto;transition:background-color .15s ease,border-color .15s ease}.filters__toggle:hover{background:var(--dx-accent-weak, rgba(146,177,149,.18));border-color:var(--dx-accent, #92b195)}.filters__toggle:focus-visible{outline:2px solid var(--dx-accent, #92b195);outline-offset:2px}.filters__toggle-icon{color:var(--dx-accent, #92b195);flex:none}.filters__toggle-count{background:var(--dx-accent, #92b195);color:#fff;border-radius:999px;min-width:18px;padding:0 5px;font-size:.75rem;line-height:18px;text-align:center}.filters__toggle[aria-expanded=true] svg{transform:rotate(180deg)}.filters__panel{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;align-items:flex-start}.filter-toggle{padding:6px 12px;cursor:pointer;font-size:.875rem;color:inherit;background:var(--card);border:1px solid var(--line);border-radius:8px;transition:border-color .15s ease,background .15s ease}.filter-toggle:hover{border-color:var(--brand)}.filter-toggle[data-active]{background-color:var(--dx-accent-weak, rgba(146, 177, 149, .18));border-color:var(--brand);color:var(--ink)}.filters__active{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:center}.filter-chip{display:inline-flex;gap:6px;align-items:center;background-color:var(--dx-accent-weak, rgba(146, 177, 149, .18));color:var(--ink);border:1px solid var(--line);border-radius:100px;padding:4px 12px;font-size:.85rem}.filter-chip__remove{background:none;border:none;cursor:pointer;font-size:1.1em;line-height:1;color:inherit;padding:0;display:inline-flex;align-items:center}.filter-chip__remove:hover{opacity:.7}.filters__clear-all{background:none;border:none;cursor:pointer;font-size:.875rem;color:var(--ink);text-decoration:underline;text-decoration-color:var(--brand);text-underline-offset:4px}.repel{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.font-size-sm{font-size:.875rem;color:var(--mut)}.grid.uupgs-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}.card.uupg__card{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden;box-shadow:0 1px 2px #0000000a}.uupg__image{width:100%;height:130px;object-fit:cover;background:var(--line)}.uupg__header{padding:12px 14px 6px}.uupg__name{font-size:1rem;font-weight:700;line-height:1.2;margin:0 0 4px}.uupg__country{font-size:.85rem;color:var(--mut);margin:0}.uupg__country-link{color:var(--ink);font-weight:600;text-decoration:underline;text-decoration-color:var(--brand);text-decoration-thickness:1px;text-underline-offset:2px}.uupg__country-link:hover{text-decoration-thickness:2px}.uupg__match{font-size:.8rem;color:var(--mut);margin:4px 0 0}.uupg__content{padding:0 14px;font-size:.85rem;color:var(--mut)}.uupg__more-button{margin:12px 14px 14px;padding:8px 12px;text-align:center;font-size:.85rem;font-weight:700;color:var(--dx-elevated, #fff);background:var(--dx-accent-strong, #657967);border-radius:8px;text-decoration:none}.uupg__more-button:hover{background:var(--dx-text, #3b463d)}.search-highlight{background:#fde68a;border-radius:2px;padding:0 1px}.loading,.pgg-empty{grid-column:1 / -1;padding:28px;text-align:center;color:var(--mut);font-size:.9rem}.pgg-loadmore{display:block;margin:20px auto 0;padding:8px 18px;font-size:.9rem;cursor:pointer;color:var(--ink);background:var(--card);border:1px solid var(--brand);border-radius:8px}.pgg-loadmore:hover{background:var(--dx-accent-soft, rgba(146, 177, 149, .1))}",uc={class:"pgg-root"},dc={key:0,id:"filters",class:"filters"},hc={key:0,class:"pgg-search"},pc=["aria-expanded"],gc={key:0,class:"filters__toggle-count"},_c={class:"filters__panel"},vc={class:"filters__panel"},bc=["data-active"],mc={key:3,class:"filters__active"},xc=["onClick"],yc={class:"pgg-body"},wc={key:0,class:"repel"},Sc={class:"font-size-sm"},Cc={key:1},kc={id:"results",class:"grid uupgs-list"},Tc=["src","alt"],Ac={class:"uupg__header"},Ec=["innerHTML"],Pc={key:0,class:"uupg__country"},Oc=["href"],Rc=["innerHTML"],Mc=["innerHTML"],Fc=["innerHTML"],Ic={key:1,class:"uupg__content"},$c=["href"],Nc={key:0,class:"loading"},Lc={key:1,class:"pgg-empty"},uo=qt({__name:"people-groups-grid",props:{profileConfig:{type:String,default:""},prayBaseUrl:{type:String,default:""},languageCode:{type:String,default:""},researchUrl:{type:String,default:"/research/"},selectUrl:{type:String,default:""},t:{type:Object,default:()=>({})},showSearch:{type:[Boolean,String],default:!0},showFilters:{type:[Boolean,String],default:!0},showTotal:{type:[Boolean,String],default:!0},query:{type:String,default:""},wagfRegion:{type:String,default:""},wagfBlock:{type:String,default:""},rop1:{type:String,default:""},religion:{type:String,default:""},perPage:{type:Number,default:24},morePerPage:{type:Number,default:0}},emits:["groups-filtered"],setup(e,{emit:t}){const n=e,r=t,s=X(()=>{if(!n.profileConfig)return{};try{return JSON.parse(n.profileConfig)||{}}catch{return{}}}),o=X(()=>n.prayBaseUrl||s.value.prayBaseUrl||"https://pray.doxa.life"),i=X(()=>n.languageCode||s.value.languageCode||""),l=X(()=>n.researchUrl||s.value.researchUrl||"/research/"),c=X(()=>({...s.value.t||{},...n.t||{}})),h=d=>!(d===!1||d==="false"||d==="0"||d===0),f=X(()=>h(n.showSearch)),g=X(()=>h(n.showFilters)),S=X(()=>h(n.showTotal)),k=he([]),M=he([]),E=he(0),H=he(1),L=he(!0),$=he(!0),T=he({}),w=he(""),O=he({}),j=X(()=>f.value?w.value:n.query||""),ee=X(()=>{const d={},p=_=>_;return n.wagfRegion&&(d.wagf_region={value:n.wagfRegion,label:p(n.wagfRegion)}),n.wagfBlock&&(d.wagf_block={value:n.wagfBlock,label:p(n.wagfBlock)}),n.rop1&&(d.rop1={value:n.rop1,label:p(n.rop1)}),n.religion&&(d.religion={value:n.religion,label:p(n.religion)}),d}),G=X(()=>g.value?O.value:ee.value),ft=X(()=>Object.values(G.value||{}).filter(d=>d&&d.value!==""&&d.value!=null).length),Je=X(()=>Object.keys(G.value).length);function Ye(d){return d.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function wt(d,p=500){let _;return(...v)=>{clearTimeout(_),_=setTimeout(()=>d(...v),p)}}const St=wt(()=>{L.value=!0,H.value=1,Qe()},500);function Gt(d){w.value=(d==null?void 0:d.value)??"",St()}function Pn(){$.value=!$.value}function le(d){O.value={...O.value,[d.name]:{value:d.value,label:d.label}},H.value=1,Qe()}function Y(d){q(d.name)}function q(d){const p={...O.value};delete p[d],O.value=p,H.value=1,Qe()}function Xe(){O.value={},H.value=1,Qe()}function Ct(){if(O.value.exact)return q("exact");O.value={...O.value,exact:{value:"yes",label:c.value.exact_filter||"Exact"}},H.value=1,Qe()}function Ze(d){let p=d;for(const[_,v]of Object.entries(G.value))_==="exact"?p=p:p=p.filter(y=>{const x=y[_];return(x==null?void 0:x.value)===v.value});return p}function Se(){const d=p=>{const _=new Map;for(const v of k.value){const y=v[p];if(!(y!=null&&y.value))continue;const x=_.get(y.value);x?x.count++:_.set(y.value,{label:y.label,count:1})}return Array.from(_.entries()).map(([v,{label:y,count:x}])=>({value:v,label:y,count:x})).sort((v,y)=>v.label.localeCompare(y.label))};T.value={wagf_region:d("wagf_region"),wagf_block:d("wagf_block"),rop1:d("rop1"),religion:d("religion")}}function Jt(){const d=Object.keys(T.value),p={};for(const _ of d){const v={};for(const[b,m]of Object.entries(G.value))b!==_&&(v[b]=m);const y=mr(v,k.value),x=new Map;for(const b of y){const m=b[_];m!=null&&m.value&&x.set(m.value,(x.get(m.value)??0)+1)}p[_]=(T.value[_]??[]).map(b=>({...b,count:x.get(b.value)??0}))}T.value=p}function mr(d,p){let _=p;for(const[v,y]of Object.entries(d))v!=="exact"&&(_=_.filter(x=>{var b;return((b=x[v])==null?void 0:b.value)===y.value}));return _}function Qe(){k.value=k.value.map(x=>(x.matches=[],x.country_label="",x.rop1_label="",x));const p=Object.keys(G.value).length>0?Ze(k.value):k.value,_=j.value;if(!_){M.value=p,E.value=M.value.length,L.value=!1,Jt(),Tt();return}const y=new cc(p,{includeMatches:!0,ignoreLocation:!0,minMatchCharLength:3,threshold:G.value.exact?0:.4,keys:["name","imb_alternate_name","country_code.label","rop1.label","religion.label","wagf_region.label","wagf_block.label"]}).search(_);M.value=y.map(x=>{var m;const b={...x.item};if(!x.matches)return b;b.matches=[];for(const P of x.matches){const C=P.key;if(!C)continue;let A="";if(String(C).includes(".")){const[R,D]=String(C).split(".");A=(m=b[R])==null?void 0:m[D]}else A=b[String(C)];if(A&&typeof A=="string"){let R=0,D="";if(P.indices.forEach((V,W)=>{const ne=V[0],ie=V[1],ke=P.indices.length-1===W;D+=Ye(A.slice(R,ne))+`${Ye(A.slice(ne,ie+1))}`+(ke?Ye(A.slice(ie+1)):""),R=ie+1}),String(C).includes("imb_alternate_name"))b.matches.push({key:c.value.alternate_name??"Also known as",label:D});else if(String(C).includes(".")){const[V]=String(C).split("."),W={religion:c.value.religion,country_code:c.value.country,rop1:c.value.rop1,wagf_region:c.value.wagf_region,wagf_block:c.value.wagf_block};V==="rop1"?b.rop1_label=D:V==="country_code"?b.country_label=D:V==="wagf_region"||b.matches.push({key:W[V]??V,label:D})}else b[String(C)]=D}}return b}),E.value=M.value.length,L.value=!1,Jt(),Tt()}const Ce=dr();function kt(){var p,_;const d=((p=Ce==null?void 0:Ce.vnode)==null?void 0:p.el)||((_=Ce==null?void 0:Ce.proxy)==null?void 0:_.$el);try{const v=d&&d.getRootNode&&d.getRootNode();if(v&&v.host)return v.host}catch{}return d}function Tt(){const d={query:j.value,activeFilters:G.value,total:E.value,slugs:M.value.map(_=>_.slug)};r("groups-filtered",d);const p=kt();p&&typeof p.dispatchEvent=="function"&&p.dispatchEvent(new CustomEvent("groups-filtered",{detail:d,bubbles:!0,composed:!0}))}function On(){return n.morePerPage>0?E.value>n.perPage+(H.value-1)*n.morePerPage&&!L.value&&M.value.length>0:E.value>H.value*n.perPage&&!L.value&&M.value.length>0}function ut(){H.value=H.value+1}const xr=X(()=>n.morePerPage>0?M.value.slice(0,n.perPage+(H.value-1)*n.morePerPage):M.value.slice(0,H.value*n.perPage)),a=X(()=>On());async function u(){const d=`${o.value}/api/people-groups/list?fields=name,slug,wagf_region,wagf_block,country_code,rop1,religion,has_photo,image_url,adopted_by_churches,imb_alternate_name,engagement_status,people_committed&lang=${i.value}`;L.value=!0;try{const _=await(await fetch(d)).json();E.value=_.total,k.value=Array.isArray(_.posts)?_.posts:[],Se(),Qe()}catch(p){console.error("[people-groups-grid] fetch error:",p),L.value=!1}}return Nt(()=>[n.query,n.wagfRegion,n.wagfBlock,n.rop1,n.religion,f.value,g.value],()=>{H.value=1,Qe()}),nr(u),(d,p)=>{var _,v,y,x;return B(),U("div",uc,[f.value||g.value?(B(),U("div",dc,[f.value?(B(),U("div",hc,[re(ao,{"model-value":w.value,placeholder:c.value.search||"Search people groups…","aria-label":c.value.search||"Search people groups","max-width":"480px",onSearch:Gt},null,8,["model-value","placeholder","aria-label"])])):ae("",!0),g.value?(B(),U("button",{key:1,class:"filters__toggle",type:"button","aria-expanded":$.value,onClick:Pn},[p[0]||(p[0]=N("svg",{class:"filters__toggle-icon",width:"13",height:"13",viewBox:"0 0 12 12",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},[N("path",{d:"M1.5 2.5h9M3 6h6M4.5 9.5h3",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round"})],-1)),ze(" "+oe($.value?c.value.hide_filters||"Hide Filters":c.value.show_filters||"Show Filters")+" ",1),ft.value?(B(),U("span",gc,oe(ft.value),1)):ae("",!0),p[1]||(p[1]=N("svg",{width:"12",height:"12",viewBox:"0 0 12 12",xmlns:"http://www.w3.org/2000/svg"},[N("path",{d:"M2 4l4 4 4-4",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"})],-1))],8,pc)):ae("",!0),g.value&&$.value?(B(),U(ce,{key:2},[N("div",_c,[re(rt,{label:c.value.wagf_region||"Region",name:"wagf_region",options:T.value.wagf_region||[],value:((_=G.value.wagf_region)==null?void 0:_.value)??"",placeholder:c.value.type_to_search||"Type to search...",onFilterChange:le,onFilterClear:Y},null,8,["label","options","value","placeholder"]),re(rt,{label:c.value.wagf_block||"Bloc",name:"wagf_block",options:T.value.wagf_block||[],value:((v=G.value.wagf_block)==null?void 0:v.value)??"",placeholder:c.value.type_to_search||"Type to search...",onFilterChange:le,onFilterClear:Y},null,8,["label","options","value","placeholder"]),re(rt,{label:c.value.rop1||"People Group",name:"rop1",options:T.value.rop1||[],value:((y=G.value.rop1)==null?void 0:y.value)??"",placeholder:c.value.type_to_search||"Type to search...",onFilterChange:le,onFilterClear:Y},null,8,["label","options","value","placeholder"]),re(rt,{label:c.value.religion||"Religion",name:"religion",options:T.value.religion||[],value:((x=G.value.religion)==null?void 0:x.value)??"",placeholder:c.value.type_to_search||"Type to search...",onFilterChange:le,onFilterClear:Y},null,8,["label","options","value","placeholder"])]),N("div",vc,[N("button",{class:"filter-toggle",type:"button","data-active":G.value.exact?"":void 0,onClick:Ct},oe(c.value.exact_filter||"Exact"),9,bc)])],64)):ae("",!0),g.value&&Je.value>0?(B(),U("div",mc,[(B(!0),U(ce,null,yn(G.value,(b,m)=>(B(),U("span",{key:m,class:"filter-chip"},[ze(oe(b.label)+" ",1),N("button",{class:"filter-chip__remove",type:"button",onClick:P=>q(String(m))},"×",8,xc)]))),128)),N("button",{class:"filters__clear-all",type:"button",onClick:Xe},oe(c.value.clear_all||"Clear All"),1)])):ae("",!0)])):ae("",!0),N("div",yc,[S.value?(B(),U("div",wc,[N("div",Sc,[L.value?(B(),U("span",Cc," ")):(B(),U(ce,{key:0},[ze(oe(c.value.total||"Total")+": "+oe(E.value.toLocaleString("en-US")),1)],64))])])):ae("",!0),N("div",kc,[(B(!0),U(ce,null,yn(xr.value,b=>(B(),U("div",{key:b.slug,class:"card uupg__card"},[b.image_url?(B(),U("img",{key:0,class:"uupg__image",src:b.image_url,alt:b.name},null,8,Tc)):ae("",!0),N("div",Ac,[N("h3",{class:"uupg__name",innerHTML:b.name},null,8,Ec),b.country_code?(B(),U("p",Pc,[N("a",{class:"uupg__country-link",href:`${l.value}../countries/${Yn(ac)(b.country_code.value,b.country_code.label)}`},[N("span",{innerHTML:b.country_label?b.country_label:b.country_code.label},null,8,Rc)],8,Oc),b.rop1?(B(),U(ce,{key:0},[p[2]||(p[2]=ze(" (",-1)),N("span",{innerHTML:b.rop1_label?b.rop1_label:b.rop1.label},null,8,Mc),p[3]||(p[3]=ze(")",-1))],64)):ae("",!0)])):ae("",!0),b.matches?(B(!0),U(ce,{key:1},yn(b.matches,(m,P)=>(B(),U("p",{key:P,class:"uupg__match"},[N("strong",null,oe(m.key),1),p[4]||(p[4]=ze(": ",-1)),N("span",{innerHTML:m.label},null,8,Fc)]))),128)):ae("",!0)]),b.location_description?(B(),U("p",Ic,oe(b.location_description),1)):ae("",!0),N("a",{class:"uupg__more-button",href:`${l.value}${b.slug}`},oe(c.value.full_profile||"Full profile"),9,$c)]))),128)),L.value?(B(),U("div",Nc,oe(c.value.loading||"Loading…"),1)):xr.value.length?ae("",!0):(B(),U("div",Lc,oe(c.value.no_results||"No people groups match this filter."),1))]),a.value?(B(),U("button",{key:1,class:"pgg-loadmore",type:"button",onClick:ut},oe(c.value.load_more||"Load more"),1)):ae("",!0)])])}}},[["styles",[fc]]]),jc=":host{display:block;width:100%;height:100%}.bp-root{--bg: #f3f3f1;--line: #d1d4cd;--ink: #3b463d;--mut: #6d766e;display:flex;flex-direction:column;width:100%;height:100%;min-height:480px;overflow:hidden;background:var(--bg);color:var(--ink);box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif}.bp-body{flex:1;min-height:0;position:relative;overflow:auto}.bp-foot{flex:none;padding:8px 12px;font-size:11px;color:var(--mut);text-align:center;border-top:1px solid var(--line)}",Dc={class:"bp-body"},Bc=vr(qt({__name:"big-picture",props:{profileConfig:{type:String,default:""}},setup(e){const t=e,n=X(()=>{if(!t.profileConfig)return{};try{return JSON.parse(t.profileConfig)||{}}catch{return{}}}),r=X(()=>n.value.accent||"#8b5cf6"),s=X(()=>n.value.title||"Big Picture — Unified Research Dashboard"),o=X(()=>n.value.prayBaseUrl||""),i=X(()=>n.value.languageCode||""),l=gt({query:"",wagfRegion:"",wagfBlock:"",rop1:"",religion:""}),c=he(null);function h(g){const S=g&&typeof g=="object"?g:{};l.query=S.query||"",l.wagfRegion=S.wagfRegion||"",l.wagfBlock=S.wagfBlock||"",l.rop1=S.rop1||"",l.religion=S.religion||""}function f(g){const S=g&&typeof g=="object"?g:{};c.value=typeof S.total=="number"?S.total:null}return(g,S)=>(B(),U("div",{class:"bp-root",style:ht({"--accent":r.value})},[re(fo,{title:s.value,accent:r.value,count:c.value,"pray-base-url":o.value,"language-code":i.value,onResearchFilter:h},null,8,["title","accent","count","pray-base-url","language-code"]),N("div",Dc,[re(uo,{query:l.query,"wagf-region":l.wagfRegion,"wagf-block":l.wagfBlock,rop1:l.rop1,religion:l.religion,"show-search":!1,"show-filters":!1,"pray-base-url":o.value,"language-code":i.value,onGroupsFiltered:f},null,8,["query","wagf-region","wagf-block","rop1","religion","pray-base-url","language-code"])]),S[0]||(S[0]=N("footer",{class:"bp-foot"}," Search and filter the world's people groups · least-reached shown first ",-1))],4))}},[["styles",[jc]]])),Hc=vr(fo),Uc=vr(uo);typeof customElements<"u"&&(customElements.get("bp-big-picture")||customElements.define("bp-big-picture",Bc),customElements.get("bp-research-header")||customElements.define("bp-research-header",Hc),customElements.get("people-groups-grid")||customElements.define("people-groups-grid",Uc))})(); +**/let pr;const Gs=typeof window<"u"&&window.trustedTypes;if(Gs)try{pr=Gs.createPolicy("vue",{createHTML:e=>e})}catch{}const Js=pr?e=>pr.createHTML(e):e=>e,gl="http://www.w3.org/2000/svg",_l="http://www.w3.org/1998/Math/MathML",Ye=typeof document<"u"?document:null,Ys=Ye&&Ye.createElement("template"),vl={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?Ye.createElementNS(gl,e):t==="mathml"?Ye.createElementNS(_l,e):n?Ye.createElement(e,{is:n}):Ye.createElement(e);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>Ye.createTextNode(e),createComment:e=>Ye.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ye.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{Ys.innerHTML=Js(r==="svg"?`${e}`:r==="mathml"?`${e}`:e);const l=Ys.content;if(r==="svg"||r==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},bl=Symbol("_vtc");function ml(e,t,n){const r=e[bl];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Xs=Symbol("_vod"),xl=Symbol("_vsh"),yl=Symbol(""),wl=/(?:^|;)\s*display\s*:/;function Sl(e,t,n){const r=e.style,s=ne(n);let o=!1;if(n&&!s){if(t)if(ne(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&zt(r,l,"")}else for(const i in t)n[i]==null&&zt(r,i,"");for(const i in n){i==="display"&&(o=!0);const l=n[i];l!=null?kl(e,i,!ne(t)&&t?t[i]:void 0,l)||zt(r,i,l):zt(r,i,"")}}else if(s){if(t!==n){const i=r[yl];i&&(n+=";"+i),r.cssText=n,o=wl.test(n)}}else t&&e.removeAttribute("style");Xs in e&&(e[Xs]=o?r.display:"",e[xl]&&(r.display="none"))}const Tn=/\s*!important$/;function zt(e,t,n){if(F(n))n.forEach(r=>zt(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))Tn.test(n)?e.setProperty(t,n.replace(Tn,""),"important"):e.setProperty(t,n);else{const r=Cl(e,t);Tn.test(n)?e.setProperty(Ce(r),n.replace(Tn,""),"important"):e[r]=n}}const Zs=["Webkit","Moz","ms"],gr={};function Cl(e,t){const n=gr[t];if(n)return n;let r=ve(t);if(r!=="filter"&&r in e)return gr[t]=r;r=Cr(r);for(let s=0;s_r||(Ml.then(()=>_r=0),_r=Date.now());function Il(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;const s=n.value;if(F(s)){const o=r.stopImmediatePropagation;r.stopImmediatePropagation=()=>{o.call(r),r._stopped=!0};const i=s.slice(),l=[r];for(let c=0;ce.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,$l=(e,t,n,r,s,o)=>{const i=s==="svg";t==="class"?ml(e,r,i):t==="style"?Sl(e,n,r):Jt(t)?Yt(t)||El(e,t,n,r,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Nl(e,t,r,i))?(to(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&eo(e,t,r,i,o,t!=="value")):e._isVueCE&&(Ll(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!ne(r)))?to(e,ve(t),r,o,t):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),eo(e,t,r,i))};function Nl(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&ro(t)&&I(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return ro(t)&&ne(n)?!1:t in e}function Ll(e,t){const n=e._def.props;if(!n)return!1;const r=ve(t);return Array.isArray(n)?n.some(s=>ve(s)===r):Object.keys(n).some(s=>ve(s)===r)}const so={};function vr(e,t,n){let r=gi(e,t);Zt(r)&&(r=se({},r,t));class s extends br{constructor(i){super(r,i,n)}}return s.def=r,s}const jl=typeof HTMLElement<"u"?HTMLElement:class{};class br extends jl{constructor(t,n={},r=lo){super(),this._def=t,this._props=n,this._createApp=r,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&&r!==lo?this._root=this.shadowRoot:t.shadowRoot!==!1?(this.attachShadow(se({},t.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 t=this;for(;t=t&&(t.assignedSlot||t.parentNode||t.host);)if(t instanceof br){this._parent=t;break}this._instance||(this._resolved?this._mount(this._def):t&&t._pendingResolve?this._pendingResolve=t._pendingResolve.then(()=>{if(this._pendingResolve=void 0,this.isConnected)return this._resolveDef()}):this._resolveDef())}_setParent(t=this._parent){t&&(this._instance.parent=t._instance,this._inheritParentContext(t))}_inheritParentContext(t=this._parent){t&&this._app&&Object.setPrototypeOf(this._app._context.provides,t._instance.provides)}disconnectedCallback(){this._connected=!1,hn(()=>{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(t){for(const n of t)this._setAttr(n.attributeName)}_resolveDef(){if(this._pendingResolve)return this._pendingResolve;for(let r=0;r{this._resolved=!0,this._pendingResolve=void 0;const{props:o,styles:i}=r;let l;if(o&&!F(o))for(const c in o){const h=o[c];(h===Number||h&&h.type===Number)&&(c in this._props&&(this._props[c]=Tr(this._props[c])),(l||(l=Object.create(null)))[ve(c)]=!0)}this._numberProps=l,this._resolveProps(r),this.shadowRoot&&this._applyStyles(i),this._mount(r)},n=this._def.__asyncLoader;if(n)return this._pendingResolve=n().then(r=>{r.configureApp=this._def.configureApp,t(this._def=r,!0)}),this._pendingResolve;t(this._def)}_mount(t){this._app=this._createApp(t),this._inheritParentContext(),t.configureApp&&t.configureApp(this._app),this._app._ceVNode=this._createVNode(),this._app.mount(this._root);const n=this._instance&&this._instance.exposed;if(n)for(const r in n)z(this,r)||Object.defineProperty(this,r,{get:()=>Yn(n[r])})}_resolveProps(t){const{props:n}=t,r=F(n)?n:Object.keys(n||{});for(const s of Object.keys(this))s[0]!=="_"&&r.includes(s)&&this._setProp(s,this[s]);for(const s of r.map(ve))Object.defineProperty(this,s,{get(){return this._getProp(s)},set(o){this._setProp(s,o,!0,!this._patching)}})}_setAttr(t){if(t.startsWith("data-v-"))return;const n=this.hasAttribute(t);let r=n?this.getAttribute(t):so;const s=ve(t);n&&this._numberProps&&this._numberProps[s]&&(r=Tr(r)),this._setProp(s,r,!1,!0)}_getProp(t){return this._props[t]}_setProp(t,n,r=!0,s=!1){if(n!==this._props[t]&&(this._dirty=!0,n===so?delete this._props[t]:(this._props[t]=n,t==="key"&&this._app&&(this._app._ceVNode.key=n)),s&&this._instance&&this._update(),r)){const o=this._ob;o&&(this._processMutations(o.takeRecords()),o.disconnect()),n===!0?this.setAttribute(Ce(t),""):typeof n=="string"||typeof n=="number"?this.setAttribute(Ce(t),n+""):n||this.removeAttribute(Ce(t)),o&&o.observe(this,{attributes:!0})}}_update(){const t=this._createVNode();this._app&&(t.appContext=this._app._context),Bl(t,this._root)}_createVNode(){const t={};this.shadowRoot||(t.onVnodeMounted=t.onVnodeUpdated=this._renderSlots.bind(this));const n=re(this._def,se(t,this._props));return this._instance||(n.ce=r=>{this._instance=r,r.ce=this,r.isCE=!0;const s=(o,i)=>{this.dispatchEvent(new CustomEvent(o,Zt(i[0])?se({detail:i},i[0]):{detail:i}))};r.emit=(o,...i)=>{s(o,i),Ce(o)!==o&&s(Ce(o),i)},this._setParent()}),n}_applyStyles(t,n,r){if(!t)return;if(n){if(n===this._def||this._styleChildren.has(n))return;this._styleChildren.add(n)}const s=this._nonce,o=this.shadowRoot,i=r?this._getStyleAnchor(r)||this._getStyleAnchor(this._def):this._getRootStyleInsertionAnchor(o);let l=null;for(let c=t.length-1;c>=0;c--){const h=document.createElement("style");s&&h.setAttribute("nonce",s),h.textContent=t[c],o.insertBefore(h,l||i),l=h,c===0&&(r||this._styleAnchors.set(this._def,h),n&&this._styleAnchors.set(n,h))}}_getStyleAnchor(t){if(!t)return null;const n=this._styleAnchors.get(t);return n&&n.parentNode===this.shadowRoot?n:(n&&this._styleAnchors.delete(t),null)}_getRootStyleInsertionAnchor(t){for(let n=0;n{io().render(...e)},lo=(...e)=>{const t=io().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=Ul(r);if(!s)return;const o=t._component;!I(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.nodeType===1&&(s.textContent="");const i=n(s,!1,Hl(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t};function Hl(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Ul(e){return ne(e)?document.querySelector(e):e}const Vl=".search-box{position:relative;display:flex;align-items:center;margin:0 auto;width:100%;color:var(--dx-muted, #6d766e)}.search-box .search-icon{position:absolute;left:12px;pointer-events:none}.search-box input{width:100%;padding:10px 12px 10px 38px;font-size:.95rem;color:var(--dx-text, #3b463d);background:var(--dx-elevated, #fff);border:1px solid var(--dx-line, #d1d4cd);border-radius:10px;outline:none;box-sizing:border-box}.search-box input:focus{border-color:var(--dx-accent, #92b195);box-shadow:0 0 0 2px var(--dx-accent-weak, rgba(146, 177, 149, .18))}",qt=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},Kl=["value","placeholder","aria-label"],co=qt({__name:"SearchBar",props:{modelValue:{type:String,default:""},placeholder:{type:String,default:"Search…"},ariaLabel:{type:String,default:"Search"},maxWidth:{type:String,default:""}},emits:["update:modelValue","search"],setup(e,{emit:t}){const n=e,r=t,s=Z(()=>n.maxWidth?{maxWidth:n.maxWidth}:{});function o(i){const l=i.target.value??"";r("update:modelValue",l),r("search",{value:l})}return(i,l)=>(B(),V("div",{class:"search-box",style:gt(s.value)},[l[0]||(l[0]=N("svg",{class:"search-icon",width:"18",height:"18",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},[N("circle",{cx:"11",cy:"11",r:"7",fill:"none",stroke:"currentColor","stroke-width":"2"}),N("line",{x1:"16.5",y1:"16.5",x2:"21",y2:"21",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"})],-1)),N("input",{type:"search",value:e.modelValue,placeholder:e.placeholder,"aria-label":e.ariaLabel,onInput:o},null,40,Kl)],4))}},[["styles",[Vl]]]),Wl=".filter-dropdown{position:relative;min-width:160px;max-width:240px;flex:1 1 160px}@media (max-width: 576px){.filter-dropdown{flex:1 1 100%;max-width:90vw}}.filter-dropdown__trigger{width:100%;padding:6px 12px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:6px;font-size:.875rem;color:var(--dx-text, #3b463d);text-align:start;background:var(--dx-elevated, #fff);border:1px solid var(--dx-line, #d1d4cd);border-radius:8px;transition:border-color .15s ease}.filter-dropdown__trigger:hover{border-color:var(--dx-accent, #92b195)}.filter-dropdown__trigger[data-active]{background-color:var(--dx-accent-weak, rgba(146, 177, 149, .18));border-color:var(--dx-accent, #92b195)}.filter-dropdown__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filter-dropdown__chevron{flex-shrink:0;transition:transform .2s ease}.filter-dropdown.is-open .filter-dropdown__chevron{transform:rotate(180deg)}.filter-dropdown__menu{position:absolute;top:100%;left:0;right:0;z-index:10;background-color:var(--dx-elevated, #fff);color:var(--dx-text, #3b463d);border:1px solid var(--dx-line, #d1d4cd);border-radius:8px;margin-top:4px;box-shadow:0 4px 12px #0000001f;overflow:hidden}.filter-dropdown__search{border:none;border-bottom:1px solid var(--dx-line, #d1d4cd);border-radius:0;padding:6px 12px;width:100%;font-size:.875rem;color:var(--dx-text, #3b463d);background:var(--dx-elevated, #fff);outline:none;box-sizing:border-box}.filter-dropdown__search::placeholder{color:var(--dx-muted, #6d766e)}.filter-dropdown__clear{display:block;width:100%;background:none;border:none;border-bottom:1px solid var(--dx-line, #d1d4cd);padding:6px 12px;font-size:.875rem;color:var(--dx-text, #3b463d);cursor:pointer;text-align:start;text-decoration:underline;text-decoration-color:var(--dx-accent, #92b195);text-underline-offset:3px}.filter-dropdown__clear:hover{background-color:var(--dx-accent-weak, rgba(146, 177, 149, .18))}.filter-dropdown__options{max-height:250px;overflow-y:auto}.filter-dropdown__option{padding:5px 12px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;font-size:.875rem;transition:background-color .1s ease}.filter-dropdown__option[data-selected]{font-weight:700;color:var(--dx-text, #3b463d);box-shadow:inset 3px 0 0 var(--dx-accent, #92b195)}.filter-dropdown__option:hover,.filter-dropdown__option[data-highlighted]{background-color:var(--dx-accent-weak, rgba(146, 177, 149, .18))}.filter-dropdown__count{color:var(--dx-muted, #6d766e);font-size:.75rem;margin-inline-start:6px}.filter-dropdown__no-options{padding:12px;font-size:.875rem;color:var(--dx-muted, #6d766e);text-align:center}",zl=["data-active","aria-expanded"],ql={class:"filter-dropdown__label"},Gl={key:0,class:"filter-dropdown__menu",role:"listbox"},Jl=["value","placeholder"],Yl={class:"filter-dropdown__options"},Xl={key:0,class:"filter-dropdown__no-options"},Zl=["data-highlighted","data-selected","aria-selected","onClick","onMouseenter"],Ql={class:"filter-dropdown__count"},rt=qt({__name:"FilterDropdown",props:{label:{type:String,required:!0},name:{type:String,required:!0},options:{type:Array,default:()=>[]},value:{type:String,default:""},placeholder:{type:String,default:"Type to search..."}},emits:["filter-change","filter-clear"],setup(e,{emit:t}){const n=e,r=t,s=he(!1),o=he(""),i=he(-1),l=he(null),c=he(null),h=Z(()=>{if(!o.value)return n.options;const w=o.value.toLowerCase();return n.options.filter(R=>R.label.toLowerCase().includes(w))}),f=Z(()=>n.options.find(w=>w.value===n.value));function g(w){var j;const R=((j=w.composedPath)==null?void 0:j.call(w))??[];l.value&&!R.includes(l.value)&&M()}function k(){s.value?M():T()}function T(){s.value=!0,o.value="",i.value=-1,document.addEventListener("click",g),hn(()=>{var w;return(w=c.value)==null?void 0:w.focus()})}function M(){s.value=!1,o.value="",i.value=-1,document.removeEventListener("click",g)}function P(w){o.value=w.target.value,i.value=-1}function H(w){const R=h.value;switch(w.key){case"ArrowDown":w.preventDefault(),i.value=Math.min(i.value+1,R.length-1),L();break;case"ArrowUp":w.preventDefault(),i.value=Math.max(i.value-1,0),L();break;case"Enter":{w.preventDefault();const j=R[i.value];j&&$(j);break}case"Escape":w.preventDefault(),M();break}}function L(){hn(()=>{var R;const w=(R=l.value)==null?void 0:R.querySelector(".filter-dropdown__option[data-highlighted]");w==null||w.scrollIntoView({block:"nearest"})})}function $(w){r("filter-change",{name:n.name,value:w.value,label:w.label,type:w.type}),M()}function A(){r("filter-clear",{name:n.name}),M()}return us(()=>document.removeEventListener("click",g)),(w,R)=>(B(),V("div",{ref_key:"rootRef",ref:l,class:tn(["filter-dropdown",{"is-open":s.value}])},[N("button",{class:"filter-dropdown__trigger input","data-active":e.value?"":void 0,type:"button","aria-haspopup":"listbox","aria-expanded":s.value,onClick:k},[N("span",ql,[f.value?(B(),V(ce,{key:0},[Ge(oe(e.label)+": ",1),N("strong",null,oe(f.value.label),1)],64)):(B(),V(ce,{key:1},[Ge(oe(e.label),1)],64))]),R[0]||(R[0]=N("svg",{class:"filter-dropdown__chevron",width:"12",height:"12",viewBox:"0 0 12 12",xmlns:"http://www.w3.org/2000/svg"},[N("path",{d:"M2 4l4 4 4-4",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"})],-1))],8,zl),s.value?(B(),V("div",Gl,[N("input",{ref_key:"searchInputRef",ref:c,class:"filter-dropdown__search",type:"text",value:o.value,placeholder:e.placeholder,onInput:P,onKeydown:H},null,40,Jl),e.value?(B(),V("button",{key:0,class:"filter-dropdown__clear",type:"button",onClick:A},"Clear selection")):ae("",!0),N("div",Yl,[h.value.length===0?(B(),V("div",Xl,"No options found")):(B(!0),V(ce,{key:1},mn(h.value,(j,te)=>(B(),V("div",{key:j.value,class:"filter-dropdown__option",role:"option","data-highlighted":te===i.value?"":void 0,"data-selected":j.value===e.value?"":void 0,"aria-selected":j.value===e.value,onClick:G=>$(j),onMouseenter:G=>i.value=te},[N("span",null,oe(j.label),1),N("span",Ql,oe(j.count),1)],40,Zl))),128))])])):ae("",!0)],2))}},[["styles",[Wl]]]),ec=".rh-root{width:100%;box-sizing:border-box;padding:14px 16px;background:#111827;color:#e5e7eb;border-bottom:1px solid #1f2937;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;display:flex;flex-direction:column;gap:12px}.rh-title{display:flex;align-items:center;gap:10px}.rh-title h1{font-size:17px;font-weight:700;letter-spacing:-.01em}.rh-dot{width:10px;height:10px;border-radius:50%;background:var(--accent);box-shadow:0 0 12px var(--accent)}.rh-count{margin-left:auto;font:700 12px/1 ui-monospace,monospace;color:var(--accent)}.rh-search{display:flex}.rh-controls{display:flex;flex-wrap:wrap;align-items:flex-start;gap:10px}.rh-reset{padding:8px 12px;background:transparent;border:1px solid #1f2937;border-radius:8px;color:#94a3b8;font-size:13px;cursor:pointer}.rh-reset:hover{border-color:var(--accent);color:#e5e7eb}",tc={class:"rh-title"},nc={key:0,class:"rh-count",role:"status","aria-live":"polite"},rc={class:"rh-search"},sc={class:"rh-controls"},ao=qt({__name:"BpResearchHeader",props:{count:{type:[Number,String],default:null},title:{type:String,default:"Unified Research Dashboard"},accent:{type:String,default:"#8b5cf6"},prayBaseUrl:{type:String,default:""},languageCode:{type:String,default:""}},emits:["research-filter"],setup(e,{emit:t}){const n=e,r=t,s=Z(()=>n.prayBaseUrl||"https://pray.doxa.life"),o=Z(()=>n.languageCode||""),i=he(""),l=vt({wagf_region:"",wagf_block:"",rop1:"",religion:""}),c=vt({wagf_region:[],wagf_block:[],rop1:[],religion:[]}),h=Z(()=>!!(i.value||l.wagf_region||l.wagf_block||l.rop1||l.religion)),f=dr();function g(){var w,R;const A=((w=f==null?void 0:f.vnode)==null?void 0:w.el)||((R=f==null?void 0:f.proxy)==null?void 0:R.$el);try{const j=A&&A.getRootNode&&A.getRootNode();if(j&&j.host)return j.host}catch{}return A}function k(){const A={query:i.value,wagfRegion:l.wagf_region,wagfBlock:l.wagf_block,rop1:l.rop1,religion:l.religion};r("research-filter",A);const w=g();w&&typeof w.dispatchEvent=="function"&&w.dispatchEvent(new CustomEvent("research-filter",{detail:A,bubbles:!0,composed:!0}))}Nt([i,()=>l.wagf_region,()=>l.wagf_block,()=>l.rop1,()=>l.religion],k,{immediate:!0});function T(A){i.value=(A==null?void 0:A.value)??""}function M(A){(A==null?void 0:A.name)in l&&(l[A.name]=A.value)}function P(A){(A==null?void 0:A.name)in l&&(l[A.name]="")}function H(){i.value="",l.wagf_region="",l.wagf_block="",l.rop1="",l.religion=""}function L(A,w){const R=new Map;for(const j of A){const te=j[w];if(!(te!=null&&te.value))continue;const G=R.get(te.value);G?G.count++:R.set(te.value,{label:te.label,count:1})}return Array.from(R.entries()).map(([j,{label:te,count:G}])=>({value:j,label:te,count:G})).sort((j,te)=>j.label.localeCompare(te.label))}async function $(){const A=`${s.value}/api/people-groups/list?fields=name,slug,wagf_region,wagf_block,country_code,rop1,religion&lang=${o.value}`;try{const R=await(await fetch(A)).json(),j=Array.isArray(R.posts)?R.posts:[];c.wagf_region=L(j,"wagf_region"),c.wagf_block=L(j,"wagf_block"),c.rop1=L(j,"rop1"),c.religion=L(j,"religion")}catch(w){console.error("[bp-research-header] options fetch error:",w)}}return nr($),(A,w)=>(B(),V("div",{class:"rh-root",role:"banner",style:gt({"--accent":e.accent})},[N("div",tc,[w[0]||(w[0]=N("span",{class:"rh-dot","aria-hidden":"true"},null,-1)),N("h1",null,oe(e.title),1),e.count!==null&&e.count!==""?(B(),V("span",nc,oe(e.count)+" shown",1)):ae("",!0)]),N("div",rc,[re(co,{"model-value":i.value,placeholder:"Search people groups or countries…","aria-label":"Search people groups",onSearch:T},null,8,["model-value"])]),N("div",sc,[re(rt,{label:"Region",name:"wagf_region",options:c.wagf_region,value:l.wagf_region,onFilterChange:M,onFilterClear:P},null,8,["options","value"]),re(rt,{label:"Bloc",name:"wagf_block",options:c.wagf_block,value:l.wagf_block,onFilterChange:M,onFilterClear:P},null,8,["options","value"]),re(rt,{label:"People Group",name:"rop1",options:c.rop1,value:l.rop1,onFilterChange:M,onFilterClear:P},null,8,["options","value"]),re(rt,{label:"Religion",name:"religion",options:c.religion,value:l.religion,onFilterChange:M,onFilterClear:P},null,8,["options","value"]),h.value?(B(),V("button",{key:0,class:"rh-reset",type:"button","aria-label":"Reset all filters and search",onClick:H},"Reset")):ae("",!0)])],4))}},[["styles",[ec]]]);function oc(e,t){if(!t.includes("."))return e==null?void 0:e[t];const[n,...r]=t.split(".");let s=e==null?void 0:e[n];for(const o of r)s=s==null?void 0:s[o];return s}function ic(e,t){const n=e.toLowerCase(),r=t.toLowerCase(),s=[];let o=0,i=n.indexOf(r,o);for(;i!==-1;)s.push([i,i+r.length-1]),o=i+r.length,i=n.indexOf(r,o);return s}function lc(e,t){const n=e.toLowerCase(),r=t.toLowerCase(),s=[];let o=0,i=-1,l=-1;for(let c=0;c({item:o,matches:[]}));if(n.lengthT-k+1>=Math.min(this.minMatchCharLength,n.length));g.length&&(h=g)}}h.length&&i.push({key:l,indices:h})}i.length&&s.push({item:o,matches:i})}return s}}function ac(e,t){return String(t||e||"").trim().toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}const fc=":host{display:block;width:100%;--dx-surface: #f3f3f1;--dx-elevated: #ffffff;--dx-text: #3b463d;--dx-muted: #6d766e;--dx-line: #d1d4cd;--dx-accent: #92b195;--dx-accent-weak: rgba(146, 177, 149, .18);--dx-accent-soft: rgba(146, 177, 149, .1);--dx-accent-strong: #657967}.pgg-root{--brand: var(--dx-accent, #92b195);--ink: var(--dx-text, #3b463d);--mut: var(--dx-muted, #6d766e);--line: var(--dx-line, #d1d4cd);--card: var(--dx-elevated, #fff);--bg: var(--dx-surface, #f3f3f1);width:100%;box-sizing:border-box;color:var(--ink);background:var(--bg);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;padding:16px}.filters{display:flex;flex-direction:column;gap:12px;margin-bottom:16px}.pgg-search{display:flex;justify-content:center}.filters__toggle{background:var(--dx-elevated, #fff);border:1px solid var(--dx-line, #d1d4cd);border-radius:8px;cursor:pointer;font-size:.875rem;font-weight:500;color:var(--dx-text, #3b463d);padding:7px 12px;display:inline-flex;align-items:center;gap:7px;margin-inline:auto;transition:background-color .15s ease,border-color .15s ease}.filters__toggle:hover{background:var(--dx-accent-weak, rgba(146,177,149,.18));border-color:var(--dx-accent, #92b195)}.filters__toggle:focus-visible{outline:2px solid var(--dx-accent, #92b195);outline-offset:2px}.filters__toggle-icon{color:var(--dx-accent, #92b195);flex:none}.filters__toggle-count{background:var(--dx-accent, #92b195);color:#fff;border-radius:999px;min-width:18px;padding:0 5px;font-size:.75rem;line-height:18px;text-align:center}.filters__toggle[aria-expanded=true] svg{transform:rotate(180deg)}.filters__panel{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;align-items:flex-start}.filter-toggle{padding:6px 12px;cursor:pointer;font-size:.875rem;color:inherit;background:var(--card);border:1px solid var(--line);border-radius:8px;transition:border-color .15s ease,background .15s ease}.filter-toggle:hover{border-color:var(--brand)}.filter-toggle[data-active]{background-color:var(--dx-accent-weak, rgba(146, 177, 149, .18));border-color:var(--brand);color:var(--ink)}.filters__active{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:center}.filter-chip{display:inline-flex;gap:6px;align-items:center;background-color:var(--dx-accent-weak, rgba(146, 177, 149, .18));color:var(--ink);border:1px solid var(--line);border-radius:100px;padding:4px 12px;font-size:.85rem}.filter-chip__remove{background:none;border:none;cursor:pointer;font-size:1.1em;line-height:1;color:inherit;padding:0;display:inline-flex;align-items:center}.filter-chip__remove:hover{opacity:.7}.filters__clear-all{background:none;border:none;cursor:pointer;font-size:.875rem;color:var(--ink);text-decoration:underline;text-decoration-color:var(--brand);text-underline-offset:4px}.repel{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.font-size-sm{font-size:.875rem;color:var(--mut)}.grid.uupgs-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}.card.uupg__card{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden;box-shadow:0 1px 2px #0000000a}.uupg__image{width:100%;height:130px;object-fit:cover;background:var(--line)}.uupg__header{padding:12px 14px 6px}.uupg__name{font-size:1rem;font-weight:700;line-height:1.2;margin:0 0 4px}.uupg__country{font-size:.85rem;color:var(--mut);margin:0}.uupg__country-link{color:var(--ink);font-weight:600;text-decoration:underline;text-decoration-color:var(--brand);text-decoration-thickness:1px;text-underline-offset:2px}.uupg__country-link:hover{text-decoration-thickness:2px}.uupg__match{font-size:.8rem;color:var(--mut);margin:4px 0 0}.uupg__content{padding:0 14px;font-size:.85rem;color:var(--mut)}.uupg__more-button{margin:12px 14px 14px;padding:8px 12px;text-align:center;font-size:.85rem;font-weight:700;color:var(--dx-elevated, #fff);background:var(--dx-accent-strong, #657967);border-radius:8px;text-decoration:none}.uupg__more-button:hover{background:var(--dx-text, #3b463d)}.search-highlight{background:#fde68a;border-radius:2px;padding:0 1px}.loading,.pgg-empty{grid-column:1 / -1;padding:28px;text-align:center;color:var(--mut);font-size:.9rem}.pgg-loadmore{display:block;margin:20px auto 0;padding:8px 18px;font-size:.9rem;cursor:pointer;color:var(--ink);background:var(--card);border:1px solid var(--brand);border-radius:8px}.pgg-loadmore:hover{background:var(--dx-accent-soft, rgba(146, 177, 149, .1))}",uc={class:"pgg-root"},dc={key:0,id:"filters",class:"filters"},hc={key:0,class:"pgg-search"},pc=["aria-expanded"],gc={key:0,class:"filters__toggle-count"},_c={class:"filters__panel"},vc={class:"filters__panel"},bc=["data-active"],mc={key:3,class:"filters__active"},xc=["onClick"],yc={class:"pgg-body"},wc={key:0,class:"repel"},Sc={class:"font-size-sm"},Cc={key:1},kc={id:"results",class:"grid uupgs-list"},Tc=["src","alt"],Ac={class:"uupg__header"},Ec=["innerHTML"],Pc={key:0,class:"uupg__country"},Oc=["href"],Rc=["innerHTML"],Mc=["innerHTML"],Fc=["innerHTML"],Ic={key:1,class:"uupg__content"},$c=["href"],Nc={key:0,class:"loading"},Lc={key:1,class:"pgg-empty"},fo=qt({__name:"people-groups-grid",props:{profileConfig:{type:String,default:""},prayBaseUrl:{type:String,default:""},languageCode:{type:String,default:""},researchUrl:{type:String,default:"/research/"},selectUrl:{type:String,default:""},t:{type:Object,default:()=>({})},showSearch:{type:[Boolean,String],default:!0},showFilters:{type:[Boolean,String],default:!0},showTotal:{type:[Boolean,String],default:!0},query:{type:String,default:""},wagfRegion:{type:String,default:""},wagfBlock:{type:String,default:""},rop1:{type:String,default:""},religion:{type:String,default:""},countryCode:{type:String,default:""},perPage:{type:Number,default:24},morePerPage:{type:Number,default:0}},emits:["groups-filtered"],setup(e,{emit:t}){const n=e,r=t,s=Z(()=>{if(!n.profileConfig)return{};try{return JSON.parse(n.profileConfig)||{}}catch{return{}}}),o=Z(()=>n.prayBaseUrl||s.value.prayBaseUrl||"https://pray.doxa.life"),i=Z(()=>n.languageCode||s.value.languageCode||""),l=Z(()=>n.researchUrl||s.value.researchUrl||"/research/"),c=Z(()=>({...s.value.t||{},...n.t||{}})),h=d=>!(d===!1||d==="false"||d==="0"||d===0),f=Z(()=>h(n.showSearch)),g=Z(()=>h(n.showFilters)),k=Z(()=>h(n.showTotal)),T=he([]),M=he([]),P=he(0),H=he(1),L=he(!0),$=he(!0),A=he({}),w=he(""),R=he({}),j=Z(()=>f.value?w.value:n.query||""),te=Z(()=>{const d={},p=b=>b;return n.wagfRegion&&(d.wagf_region={value:n.wagfRegion,label:p(n.wagfRegion)}),n.wagfBlock&&(d.wagf_block={value:n.wagfBlock,label:p(n.wagfBlock)}),n.rop1&&(d.rop1={value:n.rop1,label:p(n.rop1)}),n.religion&&(d.religion={value:n.religion,label:p(n.religion)}),n.countryCode&&(d.country_code={value:n.countryCode,label:p(n.countryCode)}),d}),G=Z(()=>g.value?R.value:te.value),ut=Z(()=>Object.values(G.value||{}).filter(d=>d&&d.value!==""&&d.value!=null).length),Xe=Z(()=>Object.keys(G.value).length);function Ze(d){return d.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function Ct(d,p=500){let b;return(...m)=>{clearTimeout(b),b=setTimeout(()=>d(...m),p)}}const kt=Ct(()=>{L.value=!0,H.value=1,Te()},500);function Gt(d){w.value=(d==null?void 0:d.value)??"",kt()}function An(){$.value=!$.value}function le(d){R.value={...R.value,[d.name]:{value:d.value,label:d.label}},H.value=1,Te()}function X(d){q(d.name)}function q(d){const p={...R.value};delete p[d],R.value=p,H.value=1,Te()}function Qe(){R.value={},H.value=1,Te()}function Tt(){if(R.value.exact)return q("exact");R.value={...R.value,exact:{value:"yes",label:c.value.exact_filter||"Exact"}},H.value=1,Te()}const Oe=d=>String(d??"").toLowerCase().replace(/[\s_&-]+/g,"");function ye(d,p){if(!d)return!1;const b=Oe(p==null?void 0:p.value);return b?Oe(d.value)===b||Oe(d.label)===b:!1}function En(d){let p=d;for(const[b,m]of Object.entries(G.value))b==="exact"?p=p:p=p.filter(x=>ye(x[b],m));return p}function mr(){const d=p=>{const b=new Map;for(const m of T.value){const x=m[p];if(!(x!=null&&x.value))continue;const v=b.get(x.value);v?v.count++:b.set(x.value,{label:x.label,count:1})}return Array.from(b.entries()).map(([m,{label:x,count:v}])=>({value:m,label:x,count:v})).sort((m,x)=>m.label.localeCompare(x.label))};A.value={wagf_region:d("wagf_region"),wagf_block:d("wagf_block"),rop1:d("rop1"),religion:d("religion")}}function Pn(){const d=Object.keys(A.value),p={};for(const b of d){const m={};for(const[S,C]of Object.entries(G.value))S!==b&&(m[S]=C);const x=dt(m,T.value),v=new Map;for(const S of x){const C=S[b];C!=null&&C.value&&v.set(C.value,(v.get(C.value)??0)+1)}p[b]=(A.value[b]??[]).map(S=>({...S,count:v.get(S.value)??0}))}A.value=p}function dt(d,p){let b=p;for(const[m,x]of Object.entries(d))m!=="exact"&&(b=b.filter(v=>ye(v[m],x)));return b}function Te(){T.value=T.value.map(v=>(v.matches=[],v.country_label="",v.rop1_label="",v));const p=Object.keys(G.value).length>0?En(T.value):T.value,b=j.value;if(!b){M.value=p,P.value=M.value.length,L.value=!1,Pn(),st();return}const x=new cc(p,{includeMatches:!0,ignoreLocation:!0,minMatchCharLength:3,threshold:G.value.exact?0:.4,keys:["name","imb_alternate_name","country_code.label","rop1.label","religion.label","wagf_region.label","wagf_block.label"]}).search(b);M.value=x.map(v=>{var C;const S={...v.item};if(!v.matches)return S;S.matches=[];for(const E of v.matches){const O=E.key;if(!O)continue;let D="";if(String(O).includes(".")){const[W,U]=String(O).split(".");D=(C=S[W])==null?void 0:C[U]}else D=S[String(O)];if(D&&typeof D=="string"){let W=0,U="";if(E.indices.forEach((J,ie)=>{const we=J[0],me=J[1],ht=E.indices.length-1===ie;U+=Ze(D.slice(W,we))+`${Ze(D.slice(we,me+1))}`+(ht?Ze(D.slice(me+1)):""),W=me+1}),String(O).includes("imb_alternate_name"))S.matches.push({key:c.value.alternate_name??"Also known as",label:U});else if(String(O).includes(".")){const[J]=String(O).split("."),ie={religion:c.value.religion,country_code:c.value.country,rop1:c.value.rop1,wagf_region:c.value.wagf_region,wagf_block:c.value.wagf_block};J==="rop1"?S.rop1_label=U:J==="country_code"?S.country_label=U:J==="wagf_region"||S.matches.push({key:ie[J]??J,label:U})}else S[String(O)]=U}}return S}),P.value=M.value.length,L.value=!1,Pn(),st()}const He=dr();function On(){var p,b;const d=((p=He==null?void 0:He.vnode)==null?void 0:p.el)||((b=He==null?void 0:He.proxy)==null?void 0:b.$el);try{const m=d&&d.getRootNode&&d.getRootNode();if(m&&m.host)return m.host}catch{}return d}function st(){const d={query:j.value,activeFilters:G.value,total:P.value,slugs:M.value.map(b=>b.slug)};r("groups-filtered",d);const p=On();p&&typeof p.dispatchEvent=="function"&&p.dispatchEvent(new CustomEvent("groups-filtered",{detail:d,bubbles:!0,composed:!0}))}function uo(){return n.morePerPage>0?P.value>n.perPage+(H.value-1)*n.morePerPage&&!L.value&&M.value.length>0:P.value>H.value*n.perPage&&!L.value&&M.value.length>0}function a(){H.value=H.value+1}const u=Z(()=>n.morePerPage>0?M.value.slice(0,n.perPage+(H.value-1)*n.morePerPage):M.value.slice(0,H.value*n.perPage)),_=Z(()=>uo());async function y(){const d=`${o.value}/api/people-groups/list?fields=name,slug,wagf_region,wagf_block,country_code,rop1,religion,has_photo,image_url,adopted_by_churches,imb_alternate_name,engagement_status,people_committed&lang=${i.value}`;L.value=!0;try{const b=await(await fetch(d)).json();P.value=b.total,T.value=Array.isArray(b.posts)?b.posts:[],mr(),Te()}catch(p){console.error("[people-groups-grid] fetch error:",p),L.value=!1}}return Nt(()=>[n.query,n.wagfRegion,n.wagfBlock,n.rop1,n.religion,n.countryCode,f.value,g.value],()=>{H.value=1,Te()}),nr(y),(d,p)=>{var b,m,x,v;return B(),V("div",uc,[f.value||g.value?(B(),V("div",dc,[f.value?(B(),V("div",hc,[re(co,{"model-value":w.value,placeholder:c.value.search||"Search people groups…","aria-label":c.value.search||"Search people groups","max-width":"480px",onSearch:Gt},null,8,["model-value","placeholder","aria-label"])])):ae("",!0),g.value?(B(),V("button",{key:1,class:"filters__toggle",type:"button","aria-expanded":$.value,onClick:An},[p[0]||(p[0]=N("svg",{class:"filters__toggle-icon",width:"13",height:"13",viewBox:"0 0 12 12",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},[N("path",{d:"M1.5 2.5h9M3 6h6M4.5 9.5h3",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round"})],-1)),Ge(" "+oe($.value?c.value.hide_filters||"Hide Filters":c.value.show_filters||"Show Filters")+" ",1),ut.value?(B(),V("span",gc,oe(ut.value),1)):ae("",!0),p[1]||(p[1]=N("svg",{width:"12",height:"12",viewBox:"0 0 12 12",xmlns:"http://www.w3.org/2000/svg"},[N("path",{d:"M2 4l4 4 4-4",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"})],-1))],8,pc)):ae("",!0),g.value&&$.value?(B(),V(ce,{key:2},[N("div",_c,[re(rt,{label:c.value.wagf_region||"Region",name:"wagf_region",options:A.value.wagf_region||[],value:((b=G.value.wagf_region)==null?void 0:b.value)??"",placeholder:c.value.type_to_search||"Type to search...",onFilterChange:le,onFilterClear:X},null,8,["label","options","value","placeholder"]),re(rt,{label:c.value.wagf_block||"Bloc",name:"wagf_block",options:A.value.wagf_block||[],value:((m=G.value.wagf_block)==null?void 0:m.value)??"",placeholder:c.value.type_to_search||"Type to search...",onFilterChange:le,onFilterClear:X},null,8,["label","options","value","placeholder"]),re(rt,{label:c.value.rop1||"People Group",name:"rop1",options:A.value.rop1||[],value:((x=G.value.rop1)==null?void 0:x.value)??"",placeholder:c.value.type_to_search||"Type to search...",onFilterChange:le,onFilterClear:X},null,8,["label","options","value","placeholder"]),re(rt,{label:c.value.religion||"Religion",name:"religion",options:A.value.religion||[],value:((v=G.value.religion)==null?void 0:v.value)??"",placeholder:c.value.type_to_search||"Type to search...",onFilterChange:le,onFilterClear:X},null,8,["label","options","value","placeholder"])]),N("div",vc,[N("button",{class:"filter-toggle",type:"button","data-active":G.value.exact?"":void 0,onClick:Tt},oe(c.value.exact_filter||"Exact"),9,bc)])],64)):ae("",!0),g.value&&Xe.value>0?(B(),V("div",mc,[(B(!0),V(ce,null,mn(G.value,(S,C)=>(B(),V("span",{key:C,class:"filter-chip"},[Ge(oe(S.label)+" ",1),N("button",{class:"filter-chip__remove",type:"button",onClick:E=>q(String(C))},"×",8,xc)]))),128)),N("button",{class:"filters__clear-all",type:"button",onClick:Qe},oe(c.value.clear_all||"Clear All"),1)])):ae("",!0)])):ae("",!0),N("div",yc,[k.value?(B(),V("div",wc,[N("div",Sc,[L.value?(B(),V("span",Cc," ")):(B(),V(ce,{key:0},[Ge(oe(c.value.total||"Total")+": "+oe(P.value.toLocaleString("en-US")),1)],64))])])):ae("",!0),N("div",kc,[(B(!0),V(ce,null,mn(u.value,S=>(B(),V("div",{key:S.slug,class:"card uupg__card"},[S.image_url?(B(),V("img",{key:0,class:"uupg__image",src:S.image_url,alt:S.name},null,8,Tc)):ae("",!0),N("div",Ac,[N("h3",{class:"uupg__name",innerHTML:S.name},null,8,Ec),S.country_code?(B(),V("p",Pc,[N("a",{class:"uupg__country-link",href:`${l.value}../countries/${Yn(ac)(S.country_code.value,S.country_code.label)}`},[N("span",{innerHTML:S.country_label?S.country_label:S.country_code.label},null,8,Rc)],8,Oc),S.rop1?(B(),V(ce,{key:0},[p[2]||(p[2]=Ge(" (",-1)),N("span",{innerHTML:S.rop1_label?S.rop1_label:S.rop1.label},null,8,Mc),p[3]||(p[3]=Ge(")",-1))],64)):ae("",!0)])):ae("",!0),S.matches?(B(!0),V(ce,{key:1},mn(S.matches,(C,E)=>(B(),V("p",{key:E,class:"uupg__match"},[N("strong",null,oe(C.key),1),p[4]||(p[4]=Ge(": ",-1)),N("span",{innerHTML:C.label},null,8,Fc)]))),128)):ae("",!0)]),S.location_description?(B(),V("p",Ic,oe(S.location_description),1)):ae("",!0),N("a",{class:"uupg__more-button",href:`${l.value}${S.slug}`},oe(c.value.full_profile||"Full profile"),9,$c)]))),128)),L.value?(B(),V("div",Nc,oe(c.value.loading||"Loading…"),1)):u.value.length?ae("",!0):(B(),V("div",Lc,oe(c.value.no_results||"No people groups match this filter."),1))]),_.value?(B(),V("button",{key:1,class:"pgg-loadmore",type:"button",onClick:a},oe(c.value.load_more||"Load more"),1)):ae("",!0)])])}}},[["styles",[fc]]]),jc=":host{display:block;width:100%;height:100%}.bp-root{--bg: #f3f3f1;--line: #d1d4cd;--ink: #3b463d;--mut: #6d766e;display:flex;flex-direction:column;width:100%;height:100%;min-height:480px;overflow:hidden;background:var(--bg);color:var(--ink);box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif}.bp-body{flex:1;min-height:0;position:relative;overflow:auto}.bp-foot{flex:none;padding:8px 12px;font-size:11px;color:var(--mut);text-align:center;border-top:1px solid var(--line)}",Dc={class:"bp-body"},Bc=vr(qt({__name:"big-picture",props:{profileConfig:{type:String,default:""}},setup(e){const t=e,n=Z(()=>{if(!t.profileConfig)return{};try{return JSON.parse(t.profileConfig)||{}}catch{return{}}}),r=Z(()=>n.value.accent||"#8b5cf6"),s=Z(()=>n.value.title||"Big Picture — Unified Research Dashboard"),o=Z(()=>n.value.prayBaseUrl||""),i=Z(()=>n.value.languageCode||""),l=vt({query:"",wagfRegion:"",wagfBlock:"",rop1:"",religion:""}),c=he(null);function h(g){const k=g&&typeof g=="object"?g:{};l.query=k.query||"",l.wagfRegion=k.wagfRegion||"",l.wagfBlock=k.wagfBlock||"",l.rop1=k.rop1||"",l.religion=k.religion||""}function f(g){const k=g&&typeof g=="object"?g:{};c.value=typeof k.total=="number"?k.total:null}return(g,k)=>(B(),V("div",{class:"bp-root",style:gt({"--accent":r.value})},[re(ao,{title:s.value,accent:r.value,count:c.value,"pray-base-url":o.value,"language-code":i.value,onResearchFilter:h},null,8,["title","accent","count","pray-base-url","language-code"]),N("div",Dc,[re(fo,{query:l.query,"wagf-region":l.wagfRegion,"wagf-block":l.wagfBlock,rop1:l.rop1,religion:l.religion,"show-search":!1,"show-filters":!1,"pray-base-url":o.value,"language-code":i.value,onGroupsFiltered:f},null,8,["query","wagf-region","wagf-block","rop1","religion","pray-base-url","language-code"])]),k[0]||(k[0]=N("footer",{class:"bp-foot"}," Search and filter the world's people groups · least-reached shown first ",-1))],4))}},[["styles",[jc]]])),Hc=vr(ao),Uc=vr(fo);typeof customElements<"u"&&(customElements.get("bp-big-picture")||customElements.define("bp-big-picture",Bc),customElements.get("bp-research-header")||customElements.define("bp-research-header",Hc),customElements.get("people-groups-grid")||customElements.define("people-groups-grid",Uc))})(); diff --git a/public/doxa-maps/big-picture/big-picture/big-picture/index.html b/public/doxa-maps/big-picture/big-picture/big-picture/index.html index cee4d8a7e..2e80136fb 100644 --- a/public/doxa-maps/big-picture/big-picture/big-picture/index.html +++ b/public/doxa-maps/big-picture/big-picture/big-picture/index.html @@ -37,7 +37,7 @@ - + - + - + + 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-T+pRaZkssXjuFk1ehjya7I73/AmZzZs41RPQ8PvujPFGJuVI53fcJu9+3Zk28n02","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-T+pRaZkssXjuFk1ehjya7I73/AmZzZs41RPQ8PvujPFGJuVI53fcJu9+3Zk28n02\" 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":"dashboard-plus-grid","scriptUrl":"./dashboard-plus-grid/dashboard-plus-grid.js","output":"doxa-maps/dashboard-plus-grid/dashboard-plus-grid.js","integrity":"sha384-9BYJSq79mr0iTDOZUk48P35+bpXCVJke9xD5W2xYvKPnQAE/rbpNdxaZzkiZjnSj","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-9BYJSq79mr0iTDOZUk48P35+bpXCVJke9xD5W2xYvKPnQAE/rbpNdxaZzkiZjnSj\" 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>"}}]}]}]}; + 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-T+pRaZkssXjuFk1ehjya7I73/AmZzZs41RPQ8PvujPFGJuVI53fcJu9+3Zk28n02","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-T+pRaZkssXjuFk1ehjya7I73/AmZzZs41RPQ8PvujPFGJuVI53fcJu9+3Zk28n02\" 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-9BYJSq79mr0iTDOZUk48P35+bpXCVJke9xD5W2xYvKPnQAE/rbpNdxaZzkiZjnSj","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-9BYJSq79mr0iTDOZUk48P35+bpXCVJke9xD5W2xYvKPnQAE/rbpNdxaZzkiZjnSj\" 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-eUOhrqzBqC4p9TmS3XkDuKPTjgRooQV1WrhUFaa8p3NqmKUXmEfbwh8GxfB5AK90","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-eUOhrqzBqC4p9TmS3XkDuKPTjgRooQV1WrhUFaa8p3NqmKUXmEfbwh8GxfB5AK90\" 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-Juq7s0kvFMgANiysoEh2N3MFkIZU16TZCmRdTKJ6nI8MWOWn4BfpaT8Syy9NJlJk","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-Juq7s0kvFMgANiysoEh2N3MFkIZU16TZCmRdTKJ6nI8MWOWn4BfpaT8Syy9NJlJk\" 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-Juq7s0kvFMgANiysoEh2N3MFkIZU16TZCmRdTKJ6nI8MWOWn4BfpaT8Syy9NJlJk\" 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-Juq7s0kvFMgANiysoEh2N3MFkIZU16TZCmRdTKJ6nI8MWOWn4BfpaT8Syy9NJlJk\" 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-iZt0B4Frfb7tLlAdWioHoQ6m0sXu+SbVqXC1tcbJifuCQmR8zwMQ6STlFLD6MHcU","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-iZt0B4Frfb7tLlAdWioHoQ6m0sXu+SbVqXC1tcbJifuCQmR8zwMQ6STlFLD6MHcU\" 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-jrNVYqT1EOy1Ko4QvpVr9OYG6SUGaGwA8i0wg5otrX2MxH7W5FdjBpX0sO4PwW2o","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-jrNVYqT1EOy1Ko4QvpVr9OYG6SUGaGwA8i0wg5otrX2MxH7W5FdjBpX0sO4PwW2o\" 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-bkHqLMT1g4ABMX7BhgqM2DEw4luXhZpmCQ/Ya5wDnrzT0bTMJErJ7g5cDITPvCVb","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-bkHqLMT1g4ABMX7BhgqM2DEw4luXhZpmCQ/Ya5wDnrzT0bTMJErJ7g5cDITPvCVb\" 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-kFphDHIpEeUHa9M6viOQW9dLfeg/Yzrd7WFcIoZVAKhvbarfXlYJ00efPxO9AKXy","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-kFphDHIpEeUHa9M6viOQW9dLfeg/Yzrd7WFcIoZVAKhvbarfXlYJ00efPxO9AKXy\" 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-+yA8BJlj7zWj0MB/w3yjs/DlM6wpCqlHg1/8UTd9Q/xNcwk0G5j9c2aQGiMzbBTu","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-+yA8BJlj7zWj0MB/w3yjs/DlM6wpCqlHg1/8UTd9Q/xNcwk0G5j9c2aQGiMzbBTu\" 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" + "script": "\n\n" }, "instances": [ { @@ -189,7 +189,7 @@ "bundle": "dashboard-plus-grid", "scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js", "output": "doxa-maps/dashboard-plus-grid/dashboard-plus-grid.js", - "integrity": "sha384-/UkaMDPGJO4ukE+I+epQnPGG48NER9WEhjeiQyWIfGFr6zYZB+tLg4aVnBHwzxfn", + "integrity": "sha384-9BYJSq79mr0iTDOZUk48P35+bpXCVJke9xD5W2xYvKPnQAE/rbpNdxaZzkiZjnSj", "elements": [ "dashboard-plus-grid" ], @@ -205,7 +205,7 @@ "scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" }, "instances": [ { @@ -660,7 +660,7 @@ "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", + "integrity": "sha384-iZt0B4Frfb7tLlAdWioHoQ6m0sXu+SbVqXC1tcbJifuCQmR8zwMQ6STlFLD6MHcU", "elements": [ "people-groups-grid" ], @@ -676,7 +676,7 @@ "scriptUrl": "./people-groups-grid/people-groups-grid.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" }, "instances": [ { @@ -764,7 +764,7 @@ "bundle": "research-dashboard", "scriptUrl": "./research-dashboard/research-dashboard.js", "output": "doxa-maps/research-dashboard/research-dashboard.js", - "integrity": "sha384-O3Sw2lYVAFvyHkhXQeKtTEmR5DpoDH3zdL7bI8pmu9pNgiFjknHLNJAeMO4UGsSv", + "integrity": "sha384-bkHqLMT1g4ABMX7BhgqM2DEw4luXhZpmCQ/Ya5wDnrzT0bTMJErJ7g5cDITPvCVb", "elements": [ "research-dashboard-map" ], @@ -780,7 +780,7 @@ "scriptUrl": "./research-dashboard/research-dashboard.js", "embed": { "iframe": "", - "script": "\n\n" + "script": "\n\n" }, "bundle": "research-dashboard" } diff --git a/public/doxa-maps/people-groups-grid/index.html b/public/doxa-maps/people-groups-grid/index.html index 1d6276742..210b067a7 100644 --- a/public/doxa-maps/people-groups-grid/index.html +++ b/public/doxa-maps/people-groups-grid/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":"people-groups-grid","scriptUrl":"./people-groups-grid/people-groups-grid.js","output":"doxa-maps/people-groups-grid/people-groups-grid.js","integrity":"sha384-iZt0B4Frfb7tLlAdWioHoQ6m0sXu+SbVqXC1tcbJifuCQmR8zwMQ6STlFLD6MHcU","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-iZt0B4Frfb7tLlAdWioHoQ6m0sXu+SbVqXC1tcbJifuCQmR8zwMQ6STlFLD6MHcU\" 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":"research-dashboard","scriptUrl":"./research-dashboard/research-dashboard.js","output":"doxa-maps/research-dashboard/research-dashboard.js","integrity":"sha384-bkHqLMT1g4ABMX7BhgqM2DEw4luXhZpmCQ/Ya5wDnrzT0bTMJErJ7g5cDITPvCVb","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-bkHqLMT1g4ABMX7BhgqM2DEw4luXhZpmCQ/Ya5wDnrzT0bTMJErJ7g5cDITPvCVb\" 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"}]}]}; - +