/** * doxa-maps-spa / index.js — Bundle entry (Capability-5 nested-mfe-spa / app-shell). * * ONE folder -> ONE bundle -> ONE custom element: . * * is the OUTER app-shell of the whole DX-maps app: a vertical-tab layout whose * tab-1 is the Cat-4 Big Picture (mounted directly via its real tag + the built * big-picture.js) and whose other tabs are every production research map, each nested as its OWN * full SPA via that map's standalone leaf page (iframe). See doxa-maps-spa.vue for the full why. * * ★ ONE-SHOT-DEFINE SAFETY: the ONLY tag this bundle registers is . It NEVER * imports another plugin's components and NEVER re-registers a tag another bundle owns. The * nested maps register their own tags when THEIR IIFE loads (tab-1 loads big-picture.js at * runtime; the iframe tabs run each map's own document). So loading this bundle beside any other * bundle can never collide. * * ★ TREE BASE: to find each nested map's .js / leaf page, the shell needs the built tree's root * URL. We derive it HERE, at IIFE load, from this script's own URL * (.../doxa-maps/doxa-maps-spa/doxa-maps-spa.js) → two levels up = the tree root. That value is * provided to the Vue app so the element self-locates from wherever the tree is served (any * static host, a subpath, file://). A host can still override it with the tree-base="" attribute * or profile-config.treeBase. * * Usage from a host page (direct-JS, deploy-method-3): * * * * */ import { defineCustomElement } from 'vue' import DoxaMapsSpa from './doxa-maps-spa.vue' import { deriveTreeBase } from '@map/utils/embedScript.js' // Capture the running