Forward urlSync to the nested panes: the guard was unreachable without it
rega measured that a Regions nested in the Research Gallery STILL rewrote the host's #anchor and tab title after my urlSync guard landed, and named the cause exactly: regions-mfe.vue INHERITED_PAGE_KEYS lacked `urlSync`. They were right, and the lesson is mine. Guarding writeUrl, syncTitle and popstate in region-dashboards.vue was necessary and NOT sufficient: a nested pane has no leaf page of its own, so it only ever sees what this composite forwards. Without the key the panes read cfg.urlSync as undefined and the guard never fired. A guard you cannot reach is not a guard, and I had verified only the half I could see from my own file. It is the same lesson this file already records for cap-4 asset paths: page scoped config must be forwarded explicitly. The existing filter keeps `false`, which is the value that matters here -- it rejects undefined, null and '' only. VERIFIED ON THE WHOLE PATH, composite -> pane -> guard, on a foreign origin (tree on 127.0.0.1, host page on localhost) with urlSync:false and a host #anchor: 868 nodes and 2 nested pane roots rendered, and the host's #host-anchor-must-survive and its tab title both came through untouched. The probe asserts the embed RENDERED before it believes the URL result, and that guard earned itself twice: a first run used <regions-mfe> as a tag, which is a profile of <regions-dashboard> and not an element, so nothing mounted -- 7 inert nodes, with the host URL "untouched" only because no code had run.
This commit is contained in:
parent
31ddd2eb87
commit
d61819b553
7 changed files with 19 additions and 10 deletions
|
|
@ -82,7 +82,16 @@ let offScroll = null
|
|||
// own default. Forwarded by KEY LIST, never by spreading the whole host config, so a pane's own
|
||||
// `profile` / `instanceId` cannot be overwritten by the host's — that is what makes a pane a
|
||||
// distinct view at all (pane.config is spread last and always wins).
|
||||
const INHERITED_PAGE_KEYS = ['assetsBase', 'apiBaseUrl', 'prayBaseUrl', 'locale', 'lang', 'languageCode', 'isDark', 'qa', 'pinHint']
|
||||
// ★ urlSync IS PAGE-SCOPED CONFIG AND MUST BE INHERITED. Landing the guard in
|
||||
// region-dashboards.vue was necessary and NOT sufficient: a nested pane has no leaf page of its
|
||||
// own, so it only sees what this composite forwards. Without `urlSync` in this list the panes read
|
||||
// cfg.urlSync as undefined, the guard never fires, and a Regions nested in the Research Gallery
|
||||
// goes on rewriting the HOST page's #anchor and tab title -- which is exactly what rega measured
|
||||
// after my fix landed. A guard you cannot reach is not a guard.
|
||||
// It is the same lesson as the cap-4 asset-path one this file already records: page-scoped config
|
||||
// has to be forwarded explicitly. Note the filter below keeps `false`, which is the value that
|
||||
// matters here -- it rejects undefined, null and '' only.
|
||||
const INHERITED_PAGE_KEYS = ['assetsBase', 'apiBaseUrl', 'prayBaseUrl', 'locale', 'lang', 'languageCode', 'isDark', 'qa', 'pinHint', 'urlSync']
|
||||
|
||||
function paneElement(pane) {
|
||||
const el = document.createElement(TAG)
|
||||
|
|
|
|||
2
public/doxa-maps/index.html
generated
2
public/doxa-maps/index.html
generated
File diff suppressed because one or more lines are too long
8
public/doxa-maps/manifest.json
generated
8
public/doxa-maps/manifest.json
generated
|
|
@ -879,7 +879,7 @@
|
|||
"bundle": "regions-dashboard",
|
||||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"output": "doxa-maps/regions-dashboard/regions-dashboard.js",
|
||||
"integrity": "sha384-loMRSunQDFyzu8MiF10LCkcUXriEGb12F3mHbCvVPLR3ayOyUgqERAimXn2fz2fZ",
|
||||
"integrity": "sha384-Nj0HDdU4kjjTmJeQX6yoDu+qJEZ6qJZrbalZXOK6GspzSqmrvxIdP5bQ3hy6gy+4",
|
||||
"elements": [
|
||||
"regions-dashboard"
|
||||
],
|
||||
|
|
@ -899,7 +899,7 @@
|
|||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./regions-dashboard/region-dashboards/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-loMRSunQDFyzu8MiF10LCkcUXriEGb12F3mHbCvVPLR3ayOyUgqERAimXn2fz2fZ\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-Nj0HDdU4kjjTmJeQX6yoDu+qJEZ6qJZrbalZXOK6GspzSqmrvxIdP5bQ3hy6gy+4\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -913,7 +913,7 @@
|
|||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./regions-dashboard/regions-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-loMRSunQDFyzu8MiF10LCkcUXriEGb12F3mHbCvVPLR3ayOyUgqERAimXn2fz2fZ\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-Nj0HDdU4kjjTmJeQX6yoDu+qJEZ6qJZrbalZXOK6GspzSqmrvxIdP5bQ3hy6gy+4\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -927,7 +927,7 @@
|
|||
"scriptUrl": "./regions-dashboard/regions-dashboard.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./regions-dashboard/regions-mfe/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-loMRSunQDFyzu8MiF10LCkcUXriEGb12F3mHbCvVPLR3ayOyUgqERAimXn2fz2fZ\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-Nj0HDdU4kjjTmJeQX6yoDu+qJEZ6qJZrbalZXOK6GspzSqmrvxIdP5bQ3hy6gy+4\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <regions-dashboard> custom element. -->
|
||||
<script src="../regions-dashboard.js" integrity="sha384-loMRSunQDFyzu8MiF10LCkcUXriEGb12F3mHbCvVPLR3ayOyUgqERAimXn2fz2fZ" crossorigin="anonymous"></script>
|
||||
<script src="../regions-dashboard.js" integrity="sha384-Nj0HDdU4kjjTmJeQX6yoDu+qJEZ6qJZrbalZXOK6GspzSqmrvxIdP5bQ3hy6gy+4" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <regions-dashboard> custom element. -->
|
||||
<script src="../regions-dashboard.js" integrity="sha384-loMRSunQDFyzu8MiF10LCkcUXriEGb12F3mHbCvVPLR3ayOyUgqERAimXn2fz2fZ" crossorigin="anonymous"></script>
|
||||
<script src="../regions-dashboard.js" integrity="sha384-Nj0HDdU4kjjTmJeQX6yoDu+qJEZ6qJZrbalZXOK6GspzSqmrvxIdP5bQ3hy6gy+4" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <regions-dashboard> custom element. -->
|
||||
<script src="../regions-dashboard.js" integrity="sha384-loMRSunQDFyzu8MiF10LCkcUXriEGb12F3mHbCvVPLR3ayOyUgqERAimXn2fz2fZ" crossorigin="anonymous"></script>
|
||||
<script src="../regions-dashboard.js" integrity="sha384-Nj0HDdU4kjjTmJeQX6yoDu+qJEZ6qJZrbalZXOK6GspzSqmrvxIdP5bQ3hy6gy+4" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
Loading…
Reference in a new issue