The gallery is Deep Research, and a host can hide its Experimental folder
DX Life publishes the gallery shell on a hidden page named Deep Research, so that is now the default heading (profile-config.heading or the heading prop still override it), and the meta, instance and demo page say the same. profile-config experimental:false (or "hidden") hides the Experimental folder: the manifest is not mined for experimental tabs, the folder has no rows, and a tab= request for one falls back to the first visible tab. It is off only on request, so every other host keeps the folder as before.
This commit is contained in:
parent
feb75f0f44
commit
b435a7a548
4 changed files with 18 additions and 7 deletions
|
|
@ -4,12 +4,12 @@
|
|||
"instances": [
|
||||
{
|
||||
"id": "app",
|
||||
"title": "Research Gallery — Big Picture + every research map (app-shell)",
|
||||
"title": "Deep Research — Big Picture + every research map (app-shell)",
|
||||
"props": {
|
||||
"profile": "doxa-maps-spa",
|
||||
"provider": "maplibre",
|
||||
"instanceId": "doxa-maps-spa-app",
|
||||
"title": "Research Gallery"
|
||||
"title": "Deep Research"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -10,5 +10,5 @@
|
|||
"cities-internet/connectivity-map",
|
||||
"gospel-resources/resources-map"
|
||||
],
|
||||
"label": "Research Gallery (vertical-tab app shell: the seven production maps)"
|
||||
"label": "Deep Research (vertical-tab app shell: the seven production maps)"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@
|
|||
:dir="uiDir"
|
||||
:lang="uiLocale"
|
||||
:labels="layoutLabels"
|
||||
:title="heading"
|
||||
:title="headingText"
|
||||
:nav-label="t('navLabel')"
|
||||
:header="showHeader"
|
||||
:groups="navGroups"
|
||||
|
|
@ -759,7 +759,9 @@ export default defineComponent({
|
|||
// mount that it will overwrite the native one. Both capability-5 shells had the same
|
||||
// declaration, which is the same duplicate-implementation pattern that turned one resolver
|
||||
// assumption into two separate outages — when one shell is fixed, grep for its twin.
|
||||
heading: { type: String, default: 'DX-Maps' },
|
||||
// DX Life publishes this gallery as "Deep Research" (a hidden page on its site), so that is the
|
||||
// default name. A host may still pass its own, as this prop or as profile-config.heading.
|
||||
heading: { type: String, default: 'Deep Research' },
|
||||
// Optional: pin the Mapbox token / token URL forwarded to each tab's element via profile-config.
|
||||
tokenUrl: { type: String, default: '' },
|
||||
tk: { type: String, default: '' },
|
||||
|
|
@ -924,6 +926,14 @@ export default defineComponent({
|
|||
// gone — every row is in the rail on every width, same order, always). The ONLY width-driven
|
||||
// thing left is which row is DISABLED (Big Picture, on mobile — see isDesktopOnly) and
|
||||
// which row auto-opens (see firstVisibleIndex) — both presentation, neither touches NAV_MODEL.
|
||||
headingText() { return String(this.cfg.heading || this.heading || '').trim() || 'Deep Research' },
|
||||
// profile-config `experimental: false` (or "hidden") hides the Experimental folder: no discovery, no
|
||||
// rows, and a tab= request for an experimental map falls back to the first visible tab. OFF only on
|
||||
// request, so every other host keeps the folder exactly as before.
|
||||
showExperimental() {
|
||||
const v = this.cfg.experimental
|
||||
return !(v === false || v === 'false' || v === 'hidden' || v === 'off')
|
||||
},
|
||||
navGroups() {
|
||||
const byId = Object.fromEntries(this.tabs.map(t => [t.id, t]))
|
||||
// ONE `seen` set threaded across ALL groups (not per-group): the rail must hold one node per tab
|
||||
|
|
@ -954,6 +964,7 @@ export default defineComponent({
|
|||
// The Experimental folder is not authored — it is FILLED with every discovered tab (any
|
||||
// built bundle no curated section placed). This is the one group whose rows come from the
|
||||
// manifest rather than NAV_MODEL, which is what makes a new plugin appear by itself.
|
||||
if (g.key === 'experimental' && !this.showExperimental) return { key: g.key, rows: [] }
|
||||
if (g.key === 'experimental') {
|
||||
// Discovered rows go through the SAME de-dup gate as curated ones. Belt-and-braces: a
|
||||
// discovered bundle should already be excluded by curatedBundles()/NOT_EXPERIMENTAL, but
|
||||
|
|
@ -1262,7 +1273,7 @@ export default defineComponent({
|
|||
kept.push(t)
|
||||
}
|
||||
const have = new Set(kept.map(t => t.id))
|
||||
for (const d of experimentalTabsFromManifest(m)) {
|
||||
if (this.showExperimental) for (const d of experimentalTabsFromManifest(m)) {
|
||||
if (have.has(d.id)) continue
|
||||
kept.push({ ...d, resolved: true, mounted: false, state: 'idle', error: '' })
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
with no page reload; each map tab loads lazily on first open.</p>
|
||||
</div>
|
||||
<div class="frame">
|
||||
<doxa-maps-spa id="dms" title="DX-Maps"></doxa-maps-spa>
|
||||
<doxa-maps-spa id="dms" heading="Deep Research"></doxa-maps-spa>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue