@ds-mo/ui 15.1.0 → 15.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.package-ready.json +1 -1
- package/dist/agent-patterns.json +2 -2
- package/dist/agent.json +286 -4
- package/dist/angular/ds-map-cluster-marker.d.ts +18 -0
- package/dist/angular/ds-map-cluster-marker.js +43 -0
- package/dist/angular/ds-map-entity-marker.d.ts +18 -0
- package/dist/angular/ds-map-entity-marker.js +43 -0
- package/dist/angular/index.d.ts +1 -1
- package/dist/angular/index.js +2 -0
- package/dist/angular/proxies.d.ts +2 -0
- package/dist/angular/proxies.js +2 -0
- package/dist/components/ds-agent-activity.js +1 -1
- package/dist/components/ds-agent-questionnaire.js +1 -1
- package/dist/components/ds-agent-response.js +1 -1
- package/dist/components/ds-agent-source-list.js +1 -1
- package/dist/components/ds-agent-tool-call.js +1 -1
- package/dist/components/ds-attachment-list.js +1 -1
- package/dist/components/ds-badge.js +1 -1
- package/dist/components/ds-banner.js +1 -1
- package/dist/components/ds-bar-action.js +1 -1
- package/dist/components/ds-bar-nav.js +1 -1
- package/dist/components/ds-bar-page-title.js +1 -1
- package/dist/components/ds-bar-title.js +1 -1
- package/dist/components/ds-bar-workflow.js +1 -1
- package/dist/components/ds-breadcrumb.js +1 -1
- package/dist/components/ds-button-filled.js +1 -1
- package/dist/components/ds-button-inverted.js +1 -1
- package/dist/components/ds-button-unfilled.js +1 -1
- package/dist/components/ds-calendar.js +1 -1
- package/dist/components/ds-card-action-center.js +1 -1
- package/dist/components/ds-card-chart.js +1 -1
- package/dist/components/ds-card-navigation.js +1 -1
- package/dist/components/ds-card-overview.js +1 -1
- package/dist/components/ds-card-setting.js +1 -1
- package/dist/components/ds-card-settings-scope.js +1 -1
- package/dist/components/ds-chart-legend.js +1 -1
- package/dist/components/ds-chart.js +1 -1
- package/dist/components/ds-checkbox.js +1 -1
- package/dist/components/ds-chip.js +1 -1
- package/dist/components/ds-code-block.js +1 -1
- package/dist/components/ds-conversation-list-item.js +1 -1
- package/dist/components/ds-conversation-list-section.js +1 -1
- package/dist/components/ds-conversation-list.js +1 -1
- package/dist/components/ds-data-customize.js +1 -1
- package/dist/components/ds-data-filter.js +1 -1
- package/dist/components/ds-data-group.js +1 -1
- package/dist/components/ds-data-preferences.js +1 -1
- package/dist/components/ds-data-saved-views.js +1 -1
- package/dist/components/ds-data-saved-views.js.map +1 -1
- package/dist/components/ds-data-search.js +1 -1
- package/dist/components/ds-data-search.js.map +1 -1
- package/dist/components/ds-data-sort.js +1 -1
- package/dist/components/ds-data-toolbar.js +1 -1
- package/dist/components/ds-empty-state.js +1 -1
- package/dist/components/ds-field.js +1 -1
- package/dist/components/ds-filter-menu.js +1 -1
- package/dist/components/ds-input-date.js +1 -1
- package/dist/components/ds-input-time.js +1 -1
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-map-cluster-marker.d.ts +11 -0
- package/dist/components/ds-map-cluster-marker.js +2 -0
- package/dist/components/ds-map-cluster-marker.js.map +1 -0
- package/dist/components/ds-map-entity-marker.d.ts +11 -0
- package/dist/components/ds-map-entity-marker.js +2 -0
- package/dist/components/ds-map-entity-marker.js.map +1 -0
- package/dist/components/ds-markdown.js +1 -1
- package/dist/components/ds-menu.js +1 -1
- package/dist/components/ds-message-actions.js +1 -1
- package/dist/components/ds-message-bubble.js +1 -1
- package/dist/components/ds-message-composer.js +1 -1
- package/dist/components/ds-message-scroller.js +1 -1
- package/dist/components/ds-message.js +1 -1
- package/dist/components/ds-mobile-bar-nav.js +1 -1
- package/dist/components/ds-mobile-header.js +1 -1
- package/dist/components/ds-mobile-section-switcher.js +1 -1
- package/dist/components/ds-mobile-sheet-nav.js +1 -1
- package/dist/components/ds-modal.js +1 -1
- package/dist/components/ds-pagination.js +1 -1
- package/dist/components/ds-panel-nav.js +1 -1
- package/dist/components/ds-panel-sub-nav.js +1 -1
- package/dist/components/ds-panel-tool-header.js +1 -1
- package/dist/components/ds-panel-tool-search.js +1 -1
- package/dist/components/ds-panel-tools.js +1 -1
- package/dist/components/ds-paper-texture.js +1 -1
- package/dist/components/ds-radio.js +1 -1
- package/dist/components/ds-score.js +1 -1
- package/dist/components/ds-scroll-overlay.js +1 -1
- package/dist/components/ds-scroll-overlay.js.map +1 -1
- package/dist/components/ds-select.js +1 -1
- package/dist/components/ds-shell-app.js +1 -1
- package/dist/components/ds-shell-page.js +1 -1
- package/dist/components/ds-shell-tools.js +1 -1
- package/dist/components/ds-skeleton.js +1 -1
- package/dist/components/ds-slider.js +1 -1
- package/dist/components/ds-swatch-picker.js +1 -1
- package/dist/components/ds-switch.js +1 -1
- package/dist/components/ds-tab-group.js +1 -1
- package/dist/components/ds-table.js +1 -1
- package/dist/components/ds-tag.js +1 -1
- package/dist/components/ds-text.js +1 -1
- package/dist/components/ds-textarea.js +1 -1
- package/dist/components/ds-time-picker.js +1 -1
- package/dist/components/ds-toast.js +1 -1
- package/dist/components/ds-tooltip-chart.js +1 -1
- package/dist/components/ds-tooltip.js +1 -1
- package/dist/components/ds-typing-indicator.js +1 -1
- package/dist/components/{p-CD4DZPy_.js → p-5SVmAjXY.js} +2 -2
- package/dist/components/{p-B_jdoM7e.js → p-B3CZvMXs.js} +2 -2
- package/dist/components/{p-Bn8I7iw6.js → p-B6qQaYkB.js} +2 -2
- package/dist/components/p-BCnzbfma.js +2 -0
- package/dist/components/{p-0qY_HDId.js.map → p-BCnzbfma.js.map} +1 -1
- package/dist/components/{p-D922f6Tb.js → p-BJJh-Bf7.js} +2 -2
- package/dist/components/{p-5URekSny.js → p-BLSSaVWm.js} +2 -2
- package/dist/components/{p-BciTtTwx.js → p-BLuqpHvp.js} +2 -2
- package/dist/components/{p-BciTtTwx.js.map → p-BLuqpHvp.js.map} +1 -1
- package/dist/components/{p-BeNa6tw5.js → p-BOhefRMt.js} +2 -2
- package/dist/components/{p-BKZdqJQB.js → p-BR5OC2PX.js} +2 -2
- package/dist/components/{p-CUcUHwI3.js → p-BX506yEW.js} +2 -2
- package/dist/components/{p-C6xVxqOn.js → p-BZ_e69zx.js} +2 -2
- package/dist/components/{p-DEW7r0U9.js → p-BfF4RZdp.js} +2 -2
- package/dist/components/{p-etifxiDc.js → p-Br5e83Fr.js} +2 -2
- package/dist/components/{p-8yBdCXCn.js → p-BtnTQp4K.js} +2 -2
- package/dist/components/{p-Di5FH7eh.js → p-Bv9rSkp0.js} +2 -2
- package/dist/components/{p-CiH4GG6r.js → p-BzYW1IqO.js} +2 -2
- package/dist/components/{p-DpoTwJAR.js → p-C0JkLR83.js} +2 -2
- package/dist/components/{p-CiJ1WR11.js → p-C1gaWjOm.js} +2 -2
- package/dist/components/{p-D0y7Sja6.js → p-C6Aavz9h.js} +2 -2
- package/dist/components/{p-DVOjjuXc.js → p-C6zycbhC.js} +2 -2
- package/dist/components/{p-BhJXmuRA.js → p-CNZ6-kWd.js} +2 -2
- package/dist/components/{p-DVINzOoK.js → p-CR-Jjdcn.js} +2 -2
- package/dist/components/{p-Dfs98tpL.js → p-CRk0TjQv.js} +2 -2
- package/dist/components/{p-DHICPS4n.js → p-CTGgXIXM.js} +2 -2
- package/dist/components/{p-Dw9sE6Iw.js → p-CZ7hxDy_.js} +2 -2
- package/dist/components/{p-CYzFfFcH.js → p-C_Ma6Xa-.js} +2 -2
- package/dist/components/{p-ZhP2tVmM.js → p-Cn6AfzeF.js} +2 -2
- package/dist/components/{p-Dn9QHL4O.js → p-Cu8o2rOz.js} +2 -2
- package/dist/components/{p-FIBCluwV.js → p-CuWPWC3t.js} +2 -2
- package/dist/components/{p-DOAybCp0.js → p-D5HxZrMA.js} +2 -2
- package/dist/components/{p-Dzndkdx5.js → p-D7K1ZHML.js} +2 -2
- package/dist/components/{p-CzIpquvw.js → p-DFO5lV_A.js} +2 -2
- package/dist/components/{p-CdGXzRP8.js → p-Dlp1HqgS.js} +2 -2
- package/dist/components/{p-0FYD2bev.js → p-Dqfc6Nvd.js} +2 -2
- package/dist/components/{p-0FYD2bev.js.map → p-Dqfc6Nvd.js.map} +1 -1
- package/dist/components/{p-CNxvnQ6A.js → p-DsLXlxt3.js} +2 -2
- package/dist/components/{p-ljbw3UMZ.js → p-ER5M085B.js} +2 -2
- package/dist/components/{p-xdmJCPCg.js → p-QWukusRL.js} +2 -2
- package/dist/components/{p-E5W27Fu_.js → p-UY63jmrO.js} +2 -2
- package/dist/components/{p-D1vQGJzc.js → p-YrnU2fM7.js} +2 -2
- package/dist/components/{p-Do2FJd1y.js → p-ZYWnJaye.js} +2 -2
- package/dist/components/{p-DwbcNDJF.js → p-ZwRLjD5M.js} +2 -2
- package/dist/components/p-lamoJZE4.js +2 -0
- package/dist/components/{p-BgQMEHRa.js.map → p-lamoJZE4.js.map} +1 -1
- package/dist/components/{p-CdgOLWX9.js → p-mV4vSjSK.js} +2 -2
- package/dist/components/{p-Cqc2U1ZQ.js → p-mux14tWZ.js} +2 -2
- package/dist/components/{p-C-3YqeTb.js → p-mxZoWfnS.js} +2 -2
- package/dist/components/{p-CmexIVnE.js → p-p0FVyEFa.js} +2 -2
- package/dist/components/{p-Bpd6YCo4.js → p-uADksYMl.js} +2 -2
- package/dist/components/{p-Bm7rqs3C.js → p-xhn1cZgU.js} +2 -2
- package/dist/components/{p-Bm7rqs3C.js.map → p-xhn1cZgU.js.map} +1 -1
- package/dist/docs/components.json +488 -1
- package/dist/lint/index.js +1 -1
- package/dist/mcp-data/registry/bar-title.json +2 -2
- package/dist/mcp-data/registry/calendar.json +1 -1
- package/dist/mcp-data/registry/data-search.json +1 -1
- package/dist/mcp-data/registry/map-cluster-marker.json +263 -0
- package/dist/mcp-data/registry/map-entity-marker.json +321 -0
- package/dist/mcp-data/registry/registry.json +291 -3
- package/dist/mcp-data/registry/shell-app.json +1 -1
- package/dist/mcp-data/registry/shell-page.json +3 -3
- package/dist/react/components.d.ts +2 -0
- package/dist/react/components.js +2 -0
- package/dist/react/ds-map-cluster-marker.d.ts +12 -0
- package/dist/react/ds-map-cluster-marker.js +12 -0
- package/dist/react/ds-map-entity-marker.d.ts +12 -0
- package/dist/react/ds-map-entity-marker.js +12 -0
- package/dist/types/components/MapClusterMarker/MapClusterMarker.d.ts +19 -0
- package/dist/types/components/MapEntityMarker/MapEntityMarker.d.ts +26 -0
- package/dist/types/components.d.ts +195 -0
- package/dist/vue/components.d.ts +2 -0
- package/dist/vue/components.js +2 -0
- package/dist/vue/ds-map-cluster-marker.d.ts +3 -0
- package/dist/vue/ds-map-cluster-marker.js +14 -0
- package/dist/vue/ds-map-entity-marker.d.ts +3 -0
- package/dist/vue/ds-map-entity-marker.js +17 -0
- package/package.json +1 -1
- package/dist/components/p-0qY_HDId.js +0 -2
- package/dist/components/p-BgQMEHRa.js +0 -2
- /package/dist/components/{p-CD4DZPy_.js.map → p-5SVmAjXY.js.map} +0 -0
- /package/dist/components/{p-B_jdoM7e.js.map → p-B3CZvMXs.js.map} +0 -0
- /package/dist/components/{p-Bn8I7iw6.js.map → p-B6qQaYkB.js.map} +0 -0
- /package/dist/components/{p-D922f6Tb.js.map → p-BJJh-Bf7.js.map} +0 -0
- /package/dist/components/{p-5URekSny.js.map → p-BLSSaVWm.js.map} +0 -0
- /package/dist/components/{p-BeNa6tw5.js.map → p-BOhefRMt.js.map} +0 -0
- /package/dist/components/{p-BKZdqJQB.js.map → p-BR5OC2PX.js.map} +0 -0
- /package/dist/components/{p-CUcUHwI3.js.map → p-BX506yEW.js.map} +0 -0
- /package/dist/components/{p-C6xVxqOn.js.map → p-BZ_e69zx.js.map} +0 -0
- /package/dist/components/{p-DEW7r0U9.js.map → p-BfF4RZdp.js.map} +0 -0
- /package/dist/components/{p-etifxiDc.js.map → p-Br5e83Fr.js.map} +0 -0
- /package/dist/components/{p-8yBdCXCn.js.map → p-BtnTQp4K.js.map} +0 -0
- /package/dist/components/{p-Di5FH7eh.js.map → p-Bv9rSkp0.js.map} +0 -0
- /package/dist/components/{p-CiH4GG6r.js.map → p-BzYW1IqO.js.map} +0 -0
- /package/dist/components/{p-DpoTwJAR.js.map → p-C0JkLR83.js.map} +0 -0
- /package/dist/components/{p-CiJ1WR11.js.map → p-C1gaWjOm.js.map} +0 -0
- /package/dist/components/{p-D0y7Sja6.js.map → p-C6Aavz9h.js.map} +0 -0
- /package/dist/components/{p-DVOjjuXc.js.map → p-C6zycbhC.js.map} +0 -0
- /package/dist/components/{p-BhJXmuRA.js.map → p-CNZ6-kWd.js.map} +0 -0
- /package/dist/components/{p-DVINzOoK.js.map → p-CR-Jjdcn.js.map} +0 -0
- /package/dist/components/{p-Dfs98tpL.js.map → p-CRk0TjQv.js.map} +0 -0
- /package/dist/components/{p-DHICPS4n.js.map → p-CTGgXIXM.js.map} +0 -0
- /package/dist/components/{p-Dw9sE6Iw.js.map → p-CZ7hxDy_.js.map} +0 -0
- /package/dist/components/{p-CYzFfFcH.js.map → p-C_Ma6Xa-.js.map} +0 -0
- /package/dist/components/{p-ZhP2tVmM.js.map → p-Cn6AfzeF.js.map} +0 -0
- /package/dist/components/{p-Dn9QHL4O.js.map → p-Cu8o2rOz.js.map} +0 -0
- /package/dist/components/{p-FIBCluwV.js.map → p-CuWPWC3t.js.map} +0 -0
- /package/dist/components/{p-DOAybCp0.js.map → p-D5HxZrMA.js.map} +0 -0
- /package/dist/components/{p-Dzndkdx5.js.map → p-D7K1ZHML.js.map} +0 -0
- /package/dist/components/{p-CzIpquvw.js.map → p-DFO5lV_A.js.map} +0 -0
- /package/dist/components/{p-CdGXzRP8.js.map → p-Dlp1HqgS.js.map} +0 -0
- /package/dist/components/{p-CNxvnQ6A.js.map → p-DsLXlxt3.js.map} +0 -0
- /package/dist/components/{p-ljbw3UMZ.js.map → p-ER5M085B.js.map} +0 -0
- /package/dist/components/{p-xdmJCPCg.js.map → p-QWukusRL.js.map} +0 -0
- /package/dist/components/{p-E5W27Fu_.js.map → p-UY63jmrO.js.map} +0 -0
- /package/dist/components/{p-D1vQGJzc.js.map → p-YrnU2fM7.js.map} +0 -0
- /package/dist/components/{p-Do2FJd1y.js.map → p-ZYWnJaye.js.map} +0 -0
- /package/dist/components/{p-DwbcNDJF.js.map → p-ZwRLjD5M.js.map} +0 -0
- /package/dist/components/{p-CdgOLWX9.js.map → p-mV4vSjSK.js.map} +0 -0
- /package/dist/components/{p-Cqc2U1ZQ.js.map → p-mux14tWZ.js.map} +0 -0
- /package/dist/components/{p-C-3YqeTb.js.map → p-mxZoWfnS.js.map} +0 -0
- /package/dist/components/{p-CmexIVnE.js.map → p-p0FVyEFa.js.map} +0 -0
- /package/dist/components/{p-Bpd6YCo4.js.map → p-uADksYMl.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["resolveShellPageHeaderVariant","presentation","capacity","pageTopVisible","shellPageCss","ShellPage","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","headerPresentation","desktopHeaderPlacement","contentInset","contentInsetBlockStart","scrollCompaction","contentSurface","responsiveMode","sentinelEl","spacerEl","stickyHeaderEl","headerEl","expandedHeaderHeight","headerTravel","expandedGeometryFrozen","pageHeaderResizeObserver","headerResizeObserver","headerMutationObserver","headerRevealFrame","headerGeometryFrame","reconnectFrame","scrollRoot","hasLoaded","handleScroll","rootTop","window","getBoundingClientRect","top","syncHeaderDividerInset","nextPageTopVisible","effectiveScrollCompaction","classList","contains","variantClass","captureExpandedHeaderGeometry","el","handleHeaderSlotChange","event","slot","target","header","assignedElements","find","element","tagName","toLowerCase","observeHeader","handleHeaderContractChange","syncHeaderVariant","handleResponsiveModeChange","style","removeProperty","desktopHeaderExternal","findHeader","syncPageHeaderBlockSize","handleDesktopHeaderPlacementChange","componentDidLoad","connectRuntime","componentDidRender","connectedCallback","cancelAnimationFrame","requestAnimationFrame","isConnected","disconnectedCallback","disconnect","cancelHeaderReveal","cancelHeaderGeometrySync","removeEventListener","observePageHeaderGeometry","connectScrollRoot","effectiveVariant","headerCapacity","headerContractResolved","undefined","isScrollCompacted","contentInsetStyles","styles","expanded","contentInsetBlockStartSize","trim","compact","compactContentInsetBlockStartSize","composedParent","assignedSlot","parentElement","findScrollRoot","ancestor","document","documentElement","overflow","getComputedStyle","overflowY","next","addEventListener","passive","scrollRootResolved","shell","closest","expected","querySelector","compactHeaderHeight","resolveCssLengthPx","ownsScrollTransition","expandedInset","scrollRootTop","remainingTravel","progress","Math","min","max","setProperty","setHeaderTravel","distance","abs","measureHeaderTravel","anchor","compactHeight","headerRect","anchorRect","height","expandedAnchorTop","compactAnchorTop","setSpacerHeight","variant","setStickyHeaderOffset","renderedVariant","renderedHeight","ResizeObserver","observe","syncRenderedHeaderGeometry","scheduleHeaderGeometrySync","framesRemaining","MAX_HEADER_GEOMETRY_FRAMES","framesElapsed","sync","geometryReady","removeAttribute","revealHeaderWhenSynced","MAX_HEADER_REVEAL_FRAMES","reveal","concealUntilSynced","setAttribute","renderedVariantIsStale","MutationObserver","attributes","attributeFilter","childList","subtree","render","mobile","h","Host","key","role","class","ref","hidden","inert","name","onSlotchange"],"sources":["src/wc/components/ShellPage/shell-page-responsive.ts","src/wc/components/ShellPage/ShellPage.css?tag=ds-shell-page&encapsulation=scoped","src/wc/components/ShellPage/ShellPage.tsx"],"sourcesContent":["import type { ShellPageCapacity, ShellPageHeaderPresentation } from './shell-page-types';\nimport type { BarTitleVariant } from '../BarTitle/bar-title-types';\n\nexport function resolveShellPageHeaderVariant(\n presentation: ShellPageHeaderPresentation,\n capacity: ShellPageCapacity,\n pageTopVisible: boolean\n): BarTitleVariant {\n if (presentation !== 'auto') return presentation;\n if (capacity === 'constrained') return 'constrained';\n if (capacity === 'compact' || !pageTopVisible) return 'compact';\n return 'expanded';\n}\n",":host {\n --_shell-page-content-background: var(--color-background-primary);\n --_shell-page-header-background: var(--color-background-primary);\n --_shell-page-responsive-content-block-start-inset: var(--dimension-space-400);\n --_shell-page-content-block-start-inset: var(\n --ds-shell-page-content-block-start-inset,\n var(--_shell-page-responsive-content-block-start-inset)\n );\n --ds-shell-page-sticky-header-block-size: var(--dimension-size-600);\n --ds-shell-page-content-block-start-offset: calc(\n var(--ds-shell-page-sticky-header-block-size) + var(--_shell-page-content-block-start-inset)\n );\n display: block;\n position: relative;\n min-width: 0;\n min-height: 100%;\n box-sizing: border-box;\n background: var(--_shell-page-content-background);\n}\n\n:host(.shell-page-host--surface-secondary) {\n --_shell-page-content-background: var(--color-background-secondary);\n}\n\n:host(.shell-page-host--surface-secondary[responsive-mode='desktop']),\n:host(.shell-page-host--surface-secondary[responsive-mode='tablet']) {\n --_shell-page-header-background: var(--color-background-secondary);\n}\n\n:host([responsive-mode='tablet']),\n:host([responsive-mode='mobile']) {\n --_shell-page-responsive-content-block-start-inset: var(--dimension-space-200);\n}\n\n:host([responsive-mode='mobile']) {\n --ds-shell-page-sticky-header-block-size: calc(\n var(--dimension-size-500) + var(--dimension-space-200)\n );\n}\n\n:host(.shell-page-host--header-compact),\n:host(.shell-page-host--header-constrained) {\n --_shell-page-content-block-start-inset: var(\n --ds-shell-page-compact-content-block-start-inset,\n var(--_shell-page-responsive-content-block-start-inset)\n );\n}\n\n:host(.shell-page-host--inset-none),\n:host(.shell-page-host--block-start-inset-none) {\n --_shell-page-content-block-start-inset: 0px;\n}\n\n:host(.shell-page-host--desktop-header-shell-bar) {\n --ds-shell-page-sticky-header-block-size: 0px;\n}\n\n:host(.shell-page-host--desktop-header-shell-bar.shell-page-host--inset-default) {\n --_shell-page-content-block-start-inset: var(--_shell-page-responsive-content-block-start-inset);\n}\n\n.shell-page__scroll-sentinel {\n position: absolute;\n inset-block-start: var(--ds-shell-page-header-travel, 0);\n inset-inline-start: 0;\n width: var(--dimension-stroke-width-012);\n height: var(--dimension-stroke-width-012);\n pointer-events: none;\n}\n\n.shell-page__sticky-header {\n position: sticky;\n inset-block-start: var(--ds-shell-page-sticky-offset, 0);\n z-index: var(--dimension-z-index-overlay);\n min-width: 0;\n background: var(--_shell-page-header-background);\n overflow: visible;\n overflow-anchor: none;\n}\n\n.shell-page__desktop-header ::slotted(ds-bar-title),\n.shell-page__desktop-header ::slotted(ds-bar-workflow),\n.shell-page__mobile-header ::slotted(ds-mobile-header) {\n display: block;\n min-width: 0;\n}\n\n.shell-page__desktop-header[hidden],\n.shell-page__mobile-header[hidden] {\n display: none;\n}\n\n:host(.shell-page-host--mobile) .shell-page__scroll-sentinel,\n:host(.shell-page-host--mobile) .shell-page__flow-spacer {\n display: none;\n}\n\n.shell-page__flow-spacer {\n height: var(--ds-shell-page-flow-spacer, 0);\n background: var(--_shell-page-content-background);\n}\n\n.shell-page__content {\n min-width: 0;\n box-sizing: border-box;\n background: var(--_shell-page-content-background);\n}\n\n:host(.shell-page-host--inset-default) .shell-page__content {\n padding: var(--dimension-space-400);\n padding-block-start: var(--_shell-page-content-block-start-inset);\n}\n\n:host(.shell-page-host--inset-default[responsive-mode='tablet']) .shell-page__content,\n:host(.shell-page-host--inset-default[responsive-mode='mobile']) .shell-page__content {\n padding: var(--dimension-space-200);\n padding-block-start: var(--_shell-page-content-block-start-inset);\n}\n\n:host(.shell-page-host--inset-none) .shell-page__content {\n padding: 0;\n}\n","import { Component, Element, h, Host, Prop, State, Watch } from '@stencil/core';\nimport type { ShellResponsiveMode } from '../../shell/shell-responsive';\nimport { resolveCssLengthPx } from '../../utils/resolve-css-length-px';\nimport type { BarTitleVariant } from '../BarTitle/bar-title-types';\nimport { resolveShellPageHeaderVariant } from './shell-page-responsive';\nimport type {\n ShellPageCapacity,\n ShellPageContentInset,\n ShellPageContentSurface,\n ShellPageDesktopHeaderPlacement,\n ShellPageHeaderPresentation,\n} from './shell-page-types';\n\ntype BarTitleElement = HTMLElement & { variant: BarTitleVariant };\n\n@Component({\n tag: 'ds-shell-page',\n styleUrl: 'ShellPage.css',\n scoped: true,\n})\nexport class ShellPage {\n private static readonly MAX_HEADER_REVEAL_FRAMES = 12;\n private static readonly MAX_HEADER_GEOMETRY_FRAMES = 12;\n\n @Element() el!: HTMLElement;\n\n /** Automatic capacity/scroll behavior, or an explicit header variant override. */\n @Prop() headerPresentation: ShellPageHeaderPresentation = 'auto';\n\n /** Available page-header capacity supplied by the owning application shell. */\n @Prop() headerCapacity?: ShellPageCapacity;\n\n /** Desktop title chrome is rendered in this page or externally in the shell bar. */\n @Prop({ attribute: 'desktop-header-placement', reflect: true })\n desktopHeaderPlacement: ShellPageDesktopHeaderPlacement = 'page';\n\n /** Standard page gutters, or no inset for full-bleed page content. */\n @Prop() contentInset: ShellPageContentInset = 'default';\n\n /** Preserve the responsive side/end gutters while allowing content to meet the header. */\n @Prop() contentInsetBlockStart: ShellPageContentInset = 'default';\n\n /** Exact block-start content inset, overriding the responsive default when provided. */\n @Prop() contentInsetBlockStartSize?: string;\n\n /** Exact block-start content inset while the header is compact or constrained. */\n @Prop() compactContentInsetBlockStartSize?: string;\n\n /** Allow roomy automatic headers to compact as the page scrolls. */\n @Prop() scrollCompaction: boolean = true;\n\n /** Canvas surface painted around and beneath routed page content. */\n @Prop() contentSurface: ShellPageContentSurface = 'primary';\n\n /** Explicit shell breakpoint presentation. Mobile uses the dedicated mobile-header slot. */\n @Prop({ attribute: 'responsive-mode', reflect: true })\n responsiveMode: ShellResponsiveMode = 'desktop';\n\n @State() private pageTopVisible = true;\n\n private sentinelEl: HTMLElement | null = null;\n private spacerEl: HTMLElement | null = null;\n private stickyHeaderEl: HTMLElement | null = null;\n private headerEl: BarTitleElement | null = null;\n private expandedHeaderHeight = 0;\n private headerTravel = 0;\n private expandedGeometryFrozen = false;\n private pageHeaderResizeObserver: ResizeObserver | null = null;\n private headerResizeObserver: ResizeObserver | null = null;\n private headerMutationObserver: MutationObserver | null = null;\n private headerRevealFrame: number | null = null;\n private headerGeometryFrame: number | null = null;\n private reconnectFrame: number | null = null;\n private scrollRoot: HTMLElement | Window | null = null;\n private hasLoaded = false;\n\n @Watch('headerCapacity')\n @Watch('headerPresentation')\n @Watch('scrollCompaction')\n handleHeaderContractChange() {\n this.syncHeaderVariant(true);\n }\n\n @Watch('responsiveMode')\n handleResponsiveModeChange() {\n this.el.style.removeProperty('--ds-shell-page-sticky-header-block-size');\n this.observeHeader(\n this.responsiveMode === 'mobile' || this.desktopHeaderExternal ? null : this.findHeader()\n );\n this.syncPageHeaderBlockSize();\n }\n\n @Watch('desktopHeaderPlacement')\n handleDesktopHeaderPlacementChange() {\n this.observeHeader(this.desktopHeaderExternal ? null : this.findHeader());\n this.syncPageHeaderBlockSize();\n }\n\n componentDidLoad() {\n this.hasLoaded = true;\n this.connectRuntime();\n }\n\n componentDidRender() {\n this.syncHeaderVariant();\n this.syncPageHeaderBlockSize();\n }\n\n connectedCallback() {\n if (!this.hasLoaded) return;\n if (this.reconnectFrame !== null) cancelAnimationFrame(this.reconnectFrame);\n this.reconnectFrame = requestAnimationFrame(() => {\n this.reconnectFrame = null;\n if (this.el.isConnected) this.connectRuntime();\n });\n }\n\n disconnectedCallback() {\n if (this.reconnectFrame !== null) cancelAnimationFrame(this.reconnectFrame);\n this.reconnectFrame = null;\n this.headerResizeObserver?.disconnect();\n this.headerResizeObserver = null;\n this.pageHeaderResizeObserver?.disconnect();\n this.pageHeaderResizeObserver = null;\n this.headerMutationObserver?.disconnect();\n this.headerMutationObserver = null;\n this.cancelHeaderReveal();\n this.cancelHeaderGeometrySync();\n this.headerEl?.style.removeProperty('--ds-bar-title-divider-inset');\n this.scrollRoot?.removeEventListener('scroll', this.handleScroll);\n this.scrollRoot = null;\n }\n\n private connectRuntime() {\n this.observePageHeaderGeometry();\n this.observeHeader(this.responsiveMode === 'mobile' ? null : this.findHeader());\n this.connectScrollRoot();\n }\n\n private get effectiveVariant(): BarTitleVariant {\n if (this.desktopHeaderExternal) return 'compact';\n return resolveShellPageHeaderVariant(\n this.headerPresentation,\n this.headerCapacity ?? 'roomy',\n this.effectiveScrollCompaction ? this.pageTopVisible : true\n );\n }\n\n private get desktopHeaderExternal(): boolean {\n return this.responsiveMode !== 'mobile' && this.desktopHeaderPlacement === 'shell-bar';\n }\n\n private get effectiveScrollCompaction(): boolean {\n return this.scrollCompaction && !this.desktopHeaderExternal;\n }\n\n private get headerContractResolved(): boolean {\n return this.headerPresentation !== 'auto' || this.headerCapacity !== undefined;\n }\n\n private get isScrollCompacted(): boolean {\n return (\n this.effectiveScrollCompaction &&\n this.headerPresentation === 'auto' &&\n this.headerCapacity === 'roomy' &&\n !this.pageTopVisible\n );\n }\n\n private get contentInsetStyles(): { [name: string]: string } {\n const styles: { [name: string]: string } = {};\n const expanded = this.contentInsetBlockStartSize?.trim();\n const compact = this.compactContentInsetBlockStartSize?.trim();\n if (expanded) styles['--ds-shell-page-content-block-start-inset'] = expanded;\n if (compact) styles['--ds-shell-page-compact-content-block-start-inset'] = compact;\n return styles;\n }\n\n private composedParent(element: Element): Element | null {\n return (element as HTMLElement).assignedSlot?.parentElement ?? element.parentElement;\n }\n\n private findScrollRoot(): HTMLElement | Window {\n let ancestor = this.composedParent(this.el);\n while (ancestor && ancestor !== document.documentElement) {\n const overflow = getComputedStyle(ancestor).overflowY;\n if (overflow === 'auto' || overflow === 'scroll' || overflow === 'overlay') {\n return ancestor as HTMLElement;\n }\n ancestor = this.composedParent(ancestor);\n }\n return window;\n }\n\n private connectScrollRoot() {\n const next = this.findScrollRoot();\n if (next === this.scrollRoot) return;\n this.scrollRoot?.removeEventListener('scroll', this.handleScroll);\n this.scrollRoot = next;\n this.scrollRoot.addEventListener('scroll', this.handleScroll, { passive: true });\n this.handleScroll();\n }\n\n private get scrollRootResolved(): boolean {\n const shell = this.el.closest('ds-shell-app');\n if (!shell) return true;\n const expected = shell.querySelector<HTMLElement>('.shell-app__content');\n return expected !== null && this.scrollRoot === expected;\n }\n\n private handleScroll = () => {\n if (!this.sentinelEl || !this.scrollRoot) return;\n const rootTop =\n this.scrollRoot === window ? 0 : (this.scrollRoot as HTMLElement).getBoundingClientRect().top;\n this.syncHeaderDividerInset(rootTop);\n const nextPageTopVisible = this.sentinelEl.getBoundingClientRect().top >= rootTop;\n if (\n this.effectiveScrollCompaction &&\n !nextPageTopVisible &&\n this.pageTopVisible &&\n this.headerEl?.classList.contains(this.variantClass('expanded'))\n ) {\n this.captureExpandedHeaderGeometry(this.headerEl);\n this.expandedGeometryFrozen = true;\n }\n if (\n nextPageTopVisible &&\n this.expandedGeometryFrozen &&\n this.el.getBoundingClientRect().top >= rootTop\n ) {\n this.expandedGeometryFrozen = false;\n if (this.headerEl?.classList.contains(this.variantClass('expanded'))) {\n this.captureExpandedHeaderGeometry(this.headerEl);\n }\n }\n this.pageTopVisible = nextPageTopVisible;\n };\n\n private findHeader(): BarTitleElement | null {\n return this.el.querySelector<BarTitleElement>('ds-bar-title');\n }\n\n private get compactHeaderHeight(): number {\n return resolveCssLengthPx('--dimension-size-600', 0);\n }\n\n private syncHeaderDividerInset(rootTop?: number) {\n const header = this.headerEl;\n if (!header) return;\n\n const ownsScrollTransition =\n this.effectiveScrollCompaction &&\n this.headerPresentation === 'auto' &&\n this.headerCapacity === 'roomy';\n const expandedInset = resolveCssLengthPx('--dimension-space-400', 0);\n if (\n !ownsScrollTransition ||\n !this.sentinelEl ||\n !this.scrollRoot ||\n this.headerTravel <= 0 ||\n expandedInset <= 0\n ) {\n header.style.removeProperty('--ds-bar-title-divider-inset');\n return;\n }\n\n const scrollRootTop =\n rootTop ??\n (this.scrollRoot === window\n ? 0\n : (this.scrollRoot as HTMLElement).getBoundingClientRect().top);\n const remainingTravel = this.sentinelEl.getBoundingClientRect().top - scrollRootTop;\n const progress = Math.min(1, Math.max(0, 1 - remainingTravel / this.headerTravel));\n header.style.setProperty('--ds-bar-title-divider-inset', `${expandedInset * (1 - progress)}px`);\n }\n\n private setHeaderTravel(distance: number) {\n const next = Math.max(0, distance);\n if (Math.abs(next - this.headerTravel) < 0.5) return;\n this.headerTravel = next;\n this.el.style.setProperty('--ds-shell-page-header-travel', `${next}px`);\n this.handleScroll();\n }\n\n private measureHeaderTravel(header: BarTitleElement) {\n const anchor = header.querySelector<HTMLElement>('[data-shell-page-header-anchor]');\n const compactHeight = this.compactHeaderHeight;\n if (!anchor || compactHeight <= 0) return;\n\n const headerRect = header.getBoundingClientRect();\n const anchorRect = anchor.getBoundingClientRect();\n if (headerRect.height <= 0 || anchorRect.height <= 0) return;\n\n const expandedAnchorTop = anchorRect.top - headerRect.top;\n const compactAnchorTop = Math.max(0, (compactHeight - anchorRect.height) / 2);\n this.setHeaderTravel(expandedAnchorTop - compactAnchorTop);\n }\n\n private captureExpandedHeaderGeometry(header: BarTitleElement) {\n // Keep the largest observed expanded geometry for this header instance.\n // During a variant handoff Chromium can briefly report the compact box\n // before the child host class mutation is delivered; that transient must\n // not erase the flow reservation captured at the roomy page top.\n this.expandedHeaderHeight = Math.max(\n this.expandedHeaderHeight,\n header.getBoundingClientRect().height\n );\n this.measureHeaderTravel(header);\n }\n\n private setSpacerHeight(height: number) {\n if (!this.spacerEl) return;\n this.spacerEl.style.setProperty('--ds-shell-page-flow-spacer', `${Math.max(0, height)}px`);\n }\n\n private variantClass(variant: BarTitleVariant): string {\n return `bar-title-host--${variant}`;\n }\n\n private setStickyHeaderOffset(renderedVariant: BarTitleVariant) {\n this.stickyHeaderEl?.style.setProperty(\n '--ds-shell-page-sticky-offset',\n renderedVariant === 'expanded' &&\n this.effectiveScrollCompaction &&\n this.headerPresentation === 'auto' &&\n this.headerCapacity === 'roomy'\n ? `${-this.headerTravel}px`\n : '0px'\n );\n }\n\n private syncPageHeaderBlockSize() {\n if (this.desktopHeaderExternal) {\n this.el.style.setProperty('--ds-shell-page-sticky-header-block-size', '0px');\n return;\n }\n const renderedHeight = this.stickyHeaderEl?.getBoundingClientRect().height ?? 0;\n if (renderedHeight > 0) {\n this.el.style.setProperty('--ds-shell-page-sticky-header-block-size', `${renderedHeight}px`);\n } else {\n this.el.style.removeProperty('--ds-shell-page-sticky-header-block-size');\n }\n }\n\n private observePageHeaderGeometry() {\n this.pageHeaderResizeObserver?.disconnect();\n this.pageHeaderResizeObserver = null;\n this.syncPageHeaderBlockSize();\n\n if (!this.stickyHeaderEl || typeof ResizeObserver === 'undefined') return;\n this.pageHeaderResizeObserver = new ResizeObserver(() => {\n this.syncPageHeaderBlockSize();\n });\n this.pageHeaderResizeObserver.observe(this.stickyHeaderEl);\n }\n\n private syncRenderedHeaderGeometry(header: BarTitleElement) {\n const renderedVariant = this.effectiveVariant;\n if (!header.classList.contains(this.variantClass(renderedVariant))) return;\n\n this.syncPageHeaderBlockSize();\n\n // Update both flow-preservation pieces before reading layout. Otherwise a\n // reverse compact → expanded render can briefly contain the tall header and\n // the compact spacer together, giving browser scroll anchoring a transient\n // height change to compensate.\n this.setSpacerHeight(\n this.isScrollCompacted ? this.expandedHeaderHeight - this.compactHeaderHeight : 0\n );\n this.setStickyHeaderOffset(renderedVariant);\n\n if (renderedVariant === 'expanded' && !this.expandedGeometryFrozen) {\n this.captureExpandedHeaderGeometry(header);\n this.setStickyHeaderOffset(renderedVariant);\n }\n }\n\n private cancelHeaderGeometrySync() {\n if (this.headerGeometryFrame !== null) cancelAnimationFrame(this.headerGeometryFrame);\n this.headerGeometryFrame = null;\n }\n\n private scheduleHeaderGeometrySync(header: BarTitleElement) {\n this.cancelHeaderGeometrySync();\n let framesRemaining = ShellPage.MAX_HEADER_GEOMETRY_FRAMES;\n let framesElapsed = 0;\n const sync = () => {\n if (this.headerEl !== header) return;\n framesRemaining -= 1;\n framesElapsed += 1;\n // In WebKit a child's componentDidLoad can precede its assignment into\n // the parent's rendered slot. Revalidate after ShellApp has had a frame\n // to expose the actual content scroller.\n this.connectScrollRoot();\n this.syncRenderedHeaderGeometry(header);\n const geometryReady =\n this.effectiveVariant !== 'expanded' ||\n (this.expandedHeaderHeight > 0 && this.headerTravel > 0);\n if (\n (geometryReady && this.scrollRootResolved && framesElapsed >= 2) ||\n framesRemaining <= 0\n ) {\n this.headerGeometryFrame = null;\n return;\n }\n this.headerGeometryFrame = requestAnimationFrame(sync);\n };\n this.headerGeometryFrame = requestAnimationFrame(sync);\n }\n\n private cancelHeaderReveal() {\n if (this.headerRevealFrame !== null) cancelAnimationFrame(this.headerRevealFrame);\n this.headerRevealFrame = null;\n this.headerEl?.removeAttribute('data-shell-page-syncing');\n }\n\n private revealHeaderWhenSynced(header: BarTitleElement, variant: BarTitleVariant) {\n // Stencil normally re-renders within a frame or two of a prop change. Stop\n // polling at the cap, but fail closed: a stale variant must never paint.\n let framesRemaining = ShellPage.MAX_HEADER_REVEAL_FRAMES;\n const reveal = () => {\n if (this.headerEl !== header) {\n header.removeAttribute('data-shell-page-syncing');\n return;\n }\n framesRemaining -= 1;\n if (header.classList.contains(this.variantClass(variant))) {\n header.removeAttribute('data-shell-page-syncing');\n this.headerRevealFrame = null;\n return;\n }\n if (framesRemaining <= 0) {\n this.headerRevealFrame = null;\n return;\n }\n this.headerRevealFrame = requestAnimationFrame(reveal);\n };\n this.headerRevealFrame = requestAnimationFrame(reveal);\n }\n\n private syncHeaderVariant(concealUntilSynced = false) {\n const header = this.headerEl;\n if (!header) return;\n\n this.syncHeaderDividerInset();\n if (!this.headerContractResolved) {\n this.cancelHeaderReveal();\n header.setAttribute('data-shell-page-syncing', '');\n return;\n }\n\n const next = this.effectiveVariant;\n const renderedVariantIsStale = !header.classList.contains(this.variantClass(next));\n if (!renderedVariantIsStale) this.syncRenderedHeaderGeometry(header);\n if (renderedVariantIsStale && this.isScrollCompacted) {\n // Preserve the expanded flow before asking BarTitle to become compact.\n // This prevents the sentinel from moving back into view during the\n // parent/child render handoff and keeps the variant transition stable.\n this.setSpacerHeight(this.expandedHeaderHeight - this.compactHeaderHeight);\n this.setStickyHeaderOffset(next);\n }\n if (concealUntilSynced) {\n this.cancelHeaderReveal();\n header.setAttribute('data-shell-page-syncing', '');\n }\n if (header.variant !== next) {\n header.variant = next;\n // The child update and its MutationObserver callback can land in\n // different phases across engines. Poll the rendered class as the\n // authoritative handoff before committing sticky/spacer geometry.\n this.scheduleHeaderGeometrySync(header);\n }\n if (concealUntilSynced) {\n this.revealHeaderWhenSynced(header, next);\n }\n }\n\n private observeHeader(header: BarTitleElement | null) {\n this.cancelHeaderReveal();\n this.cancelHeaderGeometrySync();\n this.headerResizeObserver?.disconnect();\n this.headerResizeObserver = null;\n this.headerMutationObserver?.disconnect();\n this.headerMutationObserver = null;\n this.headerEl?.style.removeProperty('--ds-bar-title-divider-inset');\n this.headerEl = header;\n this.expandedHeaderHeight = 0;\n this.expandedGeometryFrozen = false;\n this.setHeaderTravel(0);\n this.setSpacerHeight(0);\n this.stickyHeaderEl?.style.setProperty('--ds-shell-page-sticky-offset', '0px');\n\n if (!header) return;\n if (header.classList.contains(this.variantClass('expanded'))) {\n this.captureExpandedHeaderGeometry(header);\n }\n if (typeof ResizeObserver !== 'undefined') {\n this.headerResizeObserver = new ResizeObserver(() => {\n this.syncRenderedHeaderGeometry(header);\n });\n this.headerResizeObserver.observe(header);\n }\n if (typeof MutationObserver !== 'undefined') {\n this.headerMutationObserver = new MutationObserver(() => {\n this.syncRenderedHeaderGeometry(header);\n });\n this.headerMutationObserver.observe(header, {\n attributes: true,\n attributeFilter: ['class'],\n childList: true,\n subtree: true,\n });\n }\n this.syncHeaderVariant(true);\n this.scheduleHeaderGeometrySync(header);\n }\n\n private handleHeaderSlotChange = (event: Event) => {\n if (this.responsiveMode === 'mobile') return;\n const slot = event.target as HTMLSlotElement;\n const header = slot\n .assignedElements()\n .find(element => element.tagName.toLowerCase() === 'ds-bar-title');\n this.observeHeader((header as BarTitleElement | undefined) ?? null);\n };\n\n render() {\n const mobile = this.responsiveMode === 'mobile';\n return (\n <Host\n role=\"main\"\n style={this.contentInsetStyles}\n class={{\n 'shell-page-host--inset-default': this.contentInset === 'default',\n 'shell-page-host--inset-none': this.contentInset === 'none',\n 'shell-page-host--block-start-inset-none': this.contentInsetBlockStart === 'none',\n 'shell-page-host--surface-primary': this.contentSurface === 'primary',\n 'shell-page-host--surface-secondary': this.contentSurface === 'secondary',\n 'shell-page-host--mobile': mobile,\n 'shell-page-host--desktop-header-shell-bar': this.desktopHeaderExternal,\n [`shell-page-host--header-${this.effectiveVariant}`]: true,\n }}\n >\n <div\n ref={el => {\n this.sentinelEl = el ?? null;\n }}\n class=\"shell-page__scroll-sentinel\"\n aria-hidden=\"true\"\n />\n <div\n ref={el => {\n this.stickyHeaderEl = el ?? null;\n }}\n class=\"shell-page__sticky-header\"\n >\n <div\n class=\"shell-page__desktop-header\"\n hidden={mobile}\n aria-hidden={mobile ? 'true' : undefined}\n inert={mobile ? true : undefined}\n >\n <slot name=\"header\" onSlotchange={this.handleHeaderSlotChange} />\n </div>\n <div\n class=\"shell-page__mobile-header\"\n hidden={!mobile}\n aria-hidden={!mobile ? 'true' : undefined}\n inert={!mobile ? true : undefined}\n >\n <slot name=\"mobile-header\" />\n </div>\n </div>\n <div\n ref={el => {\n this.spacerEl = el ?? null;\n }}\n class=\"shell-page__flow-spacer\"\n aria-hidden=\"true\"\n />\n <div class=\"shell-page__content\">\n <slot />\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["resolveShellPageHeaderVariant","presentation","capacity","pageTopVisible","shellPageCss","ShellPage","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","headerPresentation","desktopHeaderPlacement","contentInset","contentInsetBlockStart","scrollCompaction","contentSurface","responsiveMode","sentinelEl","spacerEl","stickyHeaderEl","headerEl","expandedHeaderHeight","headerTravel","expandedGeometryFrozen","pageHeaderResizeObserver","headerResizeObserver","headerMutationObserver","headerRevealFrame","headerGeometryFrame","reconnectFrame","scrollRoot","hasLoaded","handleScroll","rootTop","window","getBoundingClientRect","top","syncHeaderDividerInset","nextPageTopVisible","effectiveScrollCompaction","classList","contains","variantClass","captureExpandedHeaderGeometry","el","handleHeaderSlotChange","event","slot","target","header","assignedElements","find","element","tagName","toLowerCase","observeHeader","handleHeaderContractChange","syncHeaderVariant","handleResponsiveModeChange","style","removeProperty","desktopHeaderExternal","findHeader","syncPageHeaderBlockSize","handleDesktopHeaderPlacementChange","componentDidLoad","connectRuntime","componentDidRender","connectedCallback","cancelAnimationFrame","requestAnimationFrame","isConnected","disconnectedCallback","disconnect","cancelHeaderReveal","cancelHeaderGeometrySync","removeEventListener","observePageHeaderGeometry","connectScrollRoot","effectiveVariant","headerCapacity","headerContractResolved","undefined","isScrollCompacted","contentInsetStyles","styles","expanded","contentInsetBlockStartSize","trim","compact","compactContentInsetBlockStartSize","composedParent","assignedSlot","parentElement","findScrollRoot","ancestor","document","documentElement","overflow","getComputedStyle","overflowY","next","addEventListener","passive","scrollRootResolved","shell","closest","expected","querySelector","compactHeaderHeight","resolveCssLengthPx","ownsScrollTransition","expandedInset","scrollRootTop","remainingTravel","progress","Math","min","max","setProperty","setHeaderTravel","distance","abs","measureHeaderTravel","anchor","compactHeight","headerRect","anchorRect","height","expandedAnchorTop","compactAnchorTop","setSpacerHeight","variant","setStickyHeaderOffset","renderedVariant","renderedHeight","ResizeObserver","observe","syncRenderedHeaderGeometry","scheduleHeaderGeometrySync","framesRemaining","MAX_HEADER_GEOMETRY_FRAMES","framesElapsed","sync","geometryReady","removeAttribute","revealHeaderWhenSynced","MAX_HEADER_REVEAL_FRAMES","reveal","concealUntilSynced","setAttribute","renderedVariantIsStale","MutationObserver","attributes","attributeFilter","childList","subtree","render","mobile","h","Host","key","role","class","ref","hidden","inert","name","onSlotchange"],"sources":["src/wc/components/ShellPage/shell-page-responsive.ts","src/wc/components/ShellPage/ShellPage.css?tag=ds-shell-page&encapsulation=scoped","src/wc/components/ShellPage/ShellPage.tsx"],"sourcesContent":["import type { ShellPageCapacity, ShellPageHeaderPresentation } from './shell-page-types';\nimport type { BarTitleVariant } from '../BarTitle/bar-title-types';\n\nexport function resolveShellPageHeaderVariant(\n presentation: ShellPageHeaderPresentation,\n capacity: ShellPageCapacity,\n pageTopVisible: boolean\n): BarTitleVariant {\n if (presentation !== 'auto') return presentation;\n if (capacity === 'constrained') return 'constrained';\n if (capacity === 'compact' || !pageTopVisible) return 'compact';\n return 'expanded';\n}\n",":host {\n --_shell-page-content-background: var(--color-background-primary);\n --_shell-page-header-background: var(--color-background-primary);\n --_shell-page-responsive-content-block-start-inset: var(--dimension-space-200);\n --_shell-page-content-block-start-inset: var(\n --ds-shell-page-content-block-start-inset,\n var(--_shell-page-responsive-content-block-start-inset)\n );\n --ds-shell-page-sticky-header-block-size: var(--dimension-size-600);\n --ds-shell-page-content-block-start-offset: calc(\n var(--ds-shell-page-sticky-header-block-size) + var(--_shell-page-content-block-start-inset)\n );\n display: block;\n position: relative;\n min-width: 0;\n min-height: 100%;\n box-sizing: border-box;\n background: var(--_shell-page-content-background);\n}\n\n:host(.shell-page-host--surface-secondary) {\n --_shell-page-content-background: var(--color-background-secondary);\n}\n\n:host(.shell-page-host--surface-secondary[responsive-mode='desktop']),\n:host(.shell-page-host--surface-secondary[responsive-mode='tablet']) {\n --_shell-page-header-background: var(--color-background-secondary);\n}\n\n:host([responsive-mode='tablet']),\n:host([responsive-mode='mobile']) {\n --_shell-page-responsive-content-block-start-inset: var(--dimension-space-200);\n}\n\n:host([responsive-mode='mobile']) {\n --ds-shell-page-sticky-header-block-size: calc(\n var(--dimension-size-500) + var(--dimension-space-200)\n );\n}\n\n:host(.shell-page-host--header-compact),\n:host(.shell-page-host--header-constrained) {\n --_shell-page-content-block-start-inset: var(\n --ds-shell-page-compact-content-block-start-inset,\n var(--_shell-page-responsive-content-block-start-inset)\n );\n}\n\n:host(.shell-page-host--inset-none),\n:host(.shell-page-host--block-start-inset-none) {\n --_shell-page-content-block-start-inset: 0px;\n}\n\n:host(.shell-page-host--desktop-header-shell-bar) {\n --ds-shell-page-sticky-header-block-size: 0px;\n}\n\n:host(.shell-page-host--desktop-header-shell-bar.shell-page-host--inset-default) {\n --_shell-page-content-block-start-inset: var(--_shell-page-responsive-content-block-start-inset);\n}\n\n.shell-page__scroll-sentinel {\n position: absolute;\n inset-block-start: var(--ds-shell-page-header-travel, 0);\n inset-inline-start: 0;\n width: var(--dimension-stroke-width-012);\n height: var(--dimension-stroke-width-012);\n pointer-events: none;\n}\n\n.shell-page__sticky-header {\n position: sticky;\n inset-block-start: var(--ds-shell-page-sticky-offset, 0);\n z-index: var(--dimension-z-index-overlay);\n min-width: 0;\n background: var(--_shell-page-header-background);\n overflow: visible;\n overflow-anchor: none;\n}\n\n.shell-page__desktop-header ::slotted(ds-bar-title),\n.shell-page__desktop-header ::slotted(ds-bar-workflow),\n.shell-page__mobile-header ::slotted(ds-mobile-header) {\n display: block;\n min-width: 0;\n}\n\n.shell-page__desktop-header[hidden],\n.shell-page__mobile-header[hidden] {\n display: none;\n}\n\n:host(.shell-page-host--mobile) .shell-page__scroll-sentinel,\n:host(.shell-page-host--mobile) .shell-page__flow-spacer {\n display: none;\n}\n\n.shell-page__flow-spacer {\n height: var(--ds-shell-page-flow-spacer, 0);\n background: var(--_shell-page-content-background);\n}\n\n.shell-page__content {\n min-width: 0;\n box-sizing: border-box;\n background: var(--_shell-page-content-background);\n}\n\n:host(.shell-page-host--inset-default) .shell-page__content {\n padding: var(--dimension-space-200);\n padding-block-start: var(--_shell-page-content-block-start-inset);\n}\n\n:host(.shell-page-host--inset-default[responsive-mode='tablet']) .shell-page__content,\n:host(.shell-page-host--inset-default[responsive-mode='mobile']) .shell-page__content {\n padding: var(--dimension-space-200);\n padding-block-start: var(--_shell-page-content-block-start-inset);\n}\n\n:host(.shell-page-host--inset-none) .shell-page__content {\n padding: 0;\n}\n","import { Component, Element, h, Host, Prop, State, Watch } from '@stencil/core';\nimport type { ShellResponsiveMode } from '../../shell/shell-responsive';\nimport { resolveCssLengthPx } from '../../utils/resolve-css-length-px';\nimport type { BarTitleVariant } from '../BarTitle/bar-title-types';\nimport { resolveShellPageHeaderVariant } from './shell-page-responsive';\nimport type {\n ShellPageCapacity,\n ShellPageContentInset,\n ShellPageContentSurface,\n ShellPageDesktopHeaderPlacement,\n ShellPageHeaderPresentation,\n} from './shell-page-types';\n\ntype BarTitleElement = HTMLElement & { variant: BarTitleVariant };\n\n@Component({\n tag: 'ds-shell-page',\n styleUrl: 'ShellPage.css',\n scoped: true,\n})\nexport class ShellPage {\n private static readonly MAX_HEADER_REVEAL_FRAMES = 12;\n private static readonly MAX_HEADER_GEOMETRY_FRAMES = 12;\n\n @Element() el!: HTMLElement;\n\n /** Automatic capacity/scroll behavior, or an explicit header variant override. */\n @Prop() headerPresentation: ShellPageHeaderPresentation = 'auto';\n\n /** Available page-header capacity supplied by the owning application shell. */\n @Prop() headerCapacity?: ShellPageCapacity;\n\n /** Desktop title chrome is rendered in this page or externally in the shell bar. */\n @Prop({ attribute: 'desktop-header-placement', reflect: true })\n desktopHeaderPlacement: ShellPageDesktopHeaderPlacement = 'page';\n\n /** Standard page gutters, or no inset for full-bleed page content. */\n @Prop() contentInset: ShellPageContentInset = 'default';\n\n /** Preserve the responsive side/end gutters while allowing content to meet the header. */\n @Prop() contentInsetBlockStart: ShellPageContentInset = 'default';\n\n /** Exact block-start content inset, overriding the responsive default when provided. */\n @Prop() contentInsetBlockStartSize?: string;\n\n /** Exact block-start content inset while the header is compact or constrained. */\n @Prop() compactContentInsetBlockStartSize?: string;\n\n /** Allow roomy automatic headers to compact as the page scrolls. */\n @Prop() scrollCompaction: boolean = true;\n\n /** Canvas surface painted around and beneath routed page content. */\n @Prop() contentSurface: ShellPageContentSurface = 'primary';\n\n /** Explicit shell breakpoint presentation. Mobile uses the dedicated mobile-header slot. */\n @Prop({ attribute: 'responsive-mode', reflect: true })\n responsiveMode: ShellResponsiveMode = 'desktop';\n\n @State() private pageTopVisible = true;\n\n private sentinelEl: HTMLElement | null = null;\n private spacerEl: HTMLElement | null = null;\n private stickyHeaderEl: HTMLElement | null = null;\n private headerEl: BarTitleElement | null = null;\n private expandedHeaderHeight = 0;\n private headerTravel = 0;\n private expandedGeometryFrozen = false;\n private pageHeaderResizeObserver: ResizeObserver | null = null;\n private headerResizeObserver: ResizeObserver | null = null;\n private headerMutationObserver: MutationObserver | null = null;\n private headerRevealFrame: number | null = null;\n private headerGeometryFrame: number | null = null;\n private reconnectFrame: number | null = null;\n private scrollRoot: HTMLElement | Window | null = null;\n private hasLoaded = false;\n\n @Watch('headerCapacity')\n @Watch('headerPresentation')\n @Watch('scrollCompaction')\n handleHeaderContractChange() {\n this.syncHeaderVariant(true);\n }\n\n @Watch('responsiveMode')\n handleResponsiveModeChange() {\n this.el.style.removeProperty('--ds-shell-page-sticky-header-block-size');\n this.observeHeader(\n this.responsiveMode === 'mobile' || this.desktopHeaderExternal ? null : this.findHeader()\n );\n this.syncPageHeaderBlockSize();\n }\n\n @Watch('desktopHeaderPlacement')\n handleDesktopHeaderPlacementChange() {\n this.observeHeader(this.desktopHeaderExternal ? null : this.findHeader());\n this.syncPageHeaderBlockSize();\n }\n\n componentDidLoad() {\n this.hasLoaded = true;\n this.connectRuntime();\n }\n\n componentDidRender() {\n this.syncHeaderVariant();\n this.syncPageHeaderBlockSize();\n }\n\n connectedCallback() {\n if (!this.hasLoaded) return;\n if (this.reconnectFrame !== null) cancelAnimationFrame(this.reconnectFrame);\n this.reconnectFrame = requestAnimationFrame(() => {\n this.reconnectFrame = null;\n if (this.el.isConnected) this.connectRuntime();\n });\n }\n\n disconnectedCallback() {\n if (this.reconnectFrame !== null) cancelAnimationFrame(this.reconnectFrame);\n this.reconnectFrame = null;\n this.headerResizeObserver?.disconnect();\n this.headerResizeObserver = null;\n this.pageHeaderResizeObserver?.disconnect();\n this.pageHeaderResizeObserver = null;\n this.headerMutationObserver?.disconnect();\n this.headerMutationObserver = null;\n this.cancelHeaderReveal();\n this.cancelHeaderGeometrySync();\n this.headerEl?.style.removeProperty('--ds-bar-title-divider-inset');\n this.scrollRoot?.removeEventListener('scroll', this.handleScroll);\n this.scrollRoot = null;\n }\n\n private connectRuntime() {\n this.observePageHeaderGeometry();\n this.observeHeader(this.responsiveMode === 'mobile' ? null : this.findHeader());\n this.connectScrollRoot();\n }\n\n private get effectiveVariant(): BarTitleVariant {\n if (this.desktopHeaderExternal) return 'compact';\n return resolveShellPageHeaderVariant(\n this.headerPresentation,\n this.headerCapacity ?? 'roomy',\n this.effectiveScrollCompaction ? this.pageTopVisible : true\n );\n }\n\n private get desktopHeaderExternal(): boolean {\n return this.responsiveMode !== 'mobile' && this.desktopHeaderPlacement === 'shell-bar';\n }\n\n private get effectiveScrollCompaction(): boolean {\n return this.scrollCompaction && !this.desktopHeaderExternal;\n }\n\n private get headerContractResolved(): boolean {\n return this.headerPresentation !== 'auto' || this.headerCapacity !== undefined;\n }\n\n private get isScrollCompacted(): boolean {\n return (\n this.effectiveScrollCompaction &&\n this.headerPresentation === 'auto' &&\n this.headerCapacity === 'roomy' &&\n !this.pageTopVisible\n );\n }\n\n private get contentInsetStyles(): { [name: string]: string } {\n const styles: { [name: string]: string } = {};\n const expanded = this.contentInsetBlockStartSize?.trim();\n const compact = this.compactContentInsetBlockStartSize?.trim();\n if (expanded) styles['--ds-shell-page-content-block-start-inset'] = expanded;\n if (compact) styles['--ds-shell-page-compact-content-block-start-inset'] = compact;\n return styles;\n }\n\n private composedParent(element: Element): Element | null {\n return (element as HTMLElement).assignedSlot?.parentElement ?? element.parentElement;\n }\n\n private findScrollRoot(): HTMLElement | Window {\n let ancestor = this.composedParent(this.el);\n while (ancestor && ancestor !== document.documentElement) {\n const overflow = getComputedStyle(ancestor).overflowY;\n if (overflow === 'auto' || overflow === 'scroll' || overflow === 'overlay') {\n return ancestor as HTMLElement;\n }\n ancestor = this.composedParent(ancestor);\n }\n return window;\n }\n\n private connectScrollRoot() {\n const next = this.findScrollRoot();\n if (next === this.scrollRoot) return;\n this.scrollRoot?.removeEventListener('scroll', this.handleScroll);\n this.scrollRoot = next;\n this.scrollRoot.addEventListener('scroll', this.handleScroll, { passive: true });\n this.handleScroll();\n }\n\n private get scrollRootResolved(): boolean {\n const shell = this.el.closest('ds-shell-app');\n if (!shell) return true;\n const expected = shell.querySelector<HTMLElement>('.shell-app__content');\n return expected !== null && this.scrollRoot === expected;\n }\n\n private handleScroll = () => {\n if (!this.sentinelEl || !this.scrollRoot) return;\n const rootTop =\n this.scrollRoot === window ? 0 : (this.scrollRoot as HTMLElement).getBoundingClientRect().top;\n this.syncHeaderDividerInset(rootTop);\n const nextPageTopVisible = this.sentinelEl.getBoundingClientRect().top >= rootTop;\n if (\n this.effectiveScrollCompaction &&\n !nextPageTopVisible &&\n this.pageTopVisible &&\n this.headerEl?.classList.contains(this.variantClass('expanded'))\n ) {\n this.captureExpandedHeaderGeometry(this.headerEl);\n this.expandedGeometryFrozen = true;\n }\n if (\n nextPageTopVisible &&\n this.expandedGeometryFrozen &&\n this.el.getBoundingClientRect().top >= rootTop\n ) {\n this.expandedGeometryFrozen = false;\n if (this.headerEl?.classList.contains(this.variantClass('expanded'))) {\n this.captureExpandedHeaderGeometry(this.headerEl);\n }\n }\n this.pageTopVisible = nextPageTopVisible;\n };\n\n private findHeader(): BarTitleElement | null {\n return this.el.querySelector<BarTitleElement>('ds-bar-title');\n }\n\n private get compactHeaderHeight(): number {\n return resolveCssLengthPx('--dimension-size-600', 0);\n }\n\n private syncHeaderDividerInset(rootTop?: number) {\n const header = this.headerEl;\n if (!header) return;\n\n const ownsScrollTransition =\n this.effectiveScrollCompaction &&\n this.headerPresentation === 'auto' &&\n this.headerCapacity === 'roomy';\n const expandedInset = resolveCssLengthPx('--dimension-space-200', 0);\n if (\n !ownsScrollTransition ||\n !this.sentinelEl ||\n !this.scrollRoot ||\n this.headerTravel <= 0 ||\n expandedInset <= 0\n ) {\n header.style.removeProperty('--ds-bar-title-divider-inset');\n return;\n }\n\n const scrollRootTop =\n rootTop ??\n (this.scrollRoot === window\n ? 0\n : (this.scrollRoot as HTMLElement).getBoundingClientRect().top);\n const remainingTravel = this.sentinelEl.getBoundingClientRect().top - scrollRootTop;\n const progress = Math.min(1, Math.max(0, 1 - remainingTravel / this.headerTravel));\n header.style.setProperty('--ds-bar-title-divider-inset', `${expandedInset * (1 - progress)}px`);\n }\n\n private setHeaderTravel(distance: number) {\n const next = Math.max(0, distance);\n if (Math.abs(next - this.headerTravel) < 0.5) return;\n this.headerTravel = next;\n this.el.style.setProperty('--ds-shell-page-header-travel', `${next}px`);\n this.handleScroll();\n }\n\n private measureHeaderTravel(header: BarTitleElement) {\n const anchor = header.querySelector<HTMLElement>('[data-shell-page-header-anchor]');\n const compactHeight = this.compactHeaderHeight;\n if (!anchor || compactHeight <= 0) return;\n\n const headerRect = header.getBoundingClientRect();\n const anchorRect = anchor.getBoundingClientRect();\n if (headerRect.height <= 0 || anchorRect.height <= 0) return;\n\n const expandedAnchorTop = anchorRect.top - headerRect.top;\n const compactAnchorTop = Math.max(0, (compactHeight - anchorRect.height) / 2);\n this.setHeaderTravel(expandedAnchorTop - compactAnchorTop);\n }\n\n private captureExpandedHeaderGeometry(header: BarTitleElement) {\n // Keep the largest observed expanded geometry for this header instance.\n // During a variant handoff Chromium can briefly report the compact box\n // before the child host class mutation is delivered; that transient must\n // not erase the flow reservation captured at the roomy page top.\n this.expandedHeaderHeight = Math.max(\n this.expandedHeaderHeight,\n header.getBoundingClientRect().height\n );\n this.measureHeaderTravel(header);\n }\n\n private setSpacerHeight(height: number) {\n if (!this.spacerEl) return;\n this.spacerEl.style.setProperty('--ds-shell-page-flow-spacer', `${Math.max(0, height)}px`);\n }\n\n private variantClass(variant: BarTitleVariant): string {\n return `bar-title-host--${variant}`;\n }\n\n private setStickyHeaderOffset(renderedVariant: BarTitleVariant) {\n this.stickyHeaderEl?.style.setProperty(\n '--ds-shell-page-sticky-offset',\n renderedVariant === 'expanded' &&\n this.effectiveScrollCompaction &&\n this.headerPresentation === 'auto' &&\n this.headerCapacity === 'roomy'\n ? `${-this.headerTravel}px`\n : '0px'\n );\n }\n\n private syncPageHeaderBlockSize() {\n if (this.desktopHeaderExternal) {\n this.el.style.setProperty('--ds-shell-page-sticky-header-block-size', '0px');\n return;\n }\n const renderedHeight = this.stickyHeaderEl?.getBoundingClientRect().height ?? 0;\n if (renderedHeight > 0) {\n this.el.style.setProperty('--ds-shell-page-sticky-header-block-size', `${renderedHeight}px`);\n } else {\n this.el.style.removeProperty('--ds-shell-page-sticky-header-block-size');\n }\n }\n\n private observePageHeaderGeometry() {\n this.pageHeaderResizeObserver?.disconnect();\n this.pageHeaderResizeObserver = null;\n this.syncPageHeaderBlockSize();\n\n if (!this.stickyHeaderEl || typeof ResizeObserver === 'undefined') return;\n this.pageHeaderResizeObserver = new ResizeObserver(() => {\n this.syncPageHeaderBlockSize();\n });\n this.pageHeaderResizeObserver.observe(this.stickyHeaderEl);\n }\n\n private syncRenderedHeaderGeometry(header: BarTitleElement) {\n const renderedVariant = this.effectiveVariant;\n if (!header.classList.contains(this.variantClass(renderedVariant))) return;\n\n this.syncPageHeaderBlockSize();\n\n // Update both flow-preservation pieces before reading layout. Otherwise a\n // reverse compact → expanded render can briefly contain the tall header and\n // the compact spacer together, giving browser scroll anchoring a transient\n // height change to compensate.\n this.setSpacerHeight(\n this.isScrollCompacted ? this.expandedHeaderHeight - this.compactHeaderHeight : 0\n );\n this.setStickyHeaderOffset(renderedVariant);\n\n if (renderedVariant === 'expanded' && !this.expandedGeometryFrozen) {\n this.captureExpandedHeaderGeometry(header);\n this.setStickyHeaderOffset(renderedVariant);\n }\n }\n\n private cancelHeaderGeometrySync() {\n if (this.headerGeometryFrame !== null) cancelAnimationFrame(this.headerGeometryFrame);\n this.headerGeometryFrame = null;\n }\n\n private scheduleHeaderGeometrySync(header: BarTitleElement) {\n this.cancelHeaderGeometrySync();\n let framesRemaining = ShellPage.MAX_HEADER_GEOMETRY_FRAMES;\n let framesElapsed = 0;\n const sync = () => {\n if (this.headerEl !== header) return;\n framesRemaining -= 1;\n framesElapsed += 1;\n // In WebKit a child's componentDidLoad can precede its assignment into\n // the parent's rendered slot. Revalidate after ShellApp has had a frame\n // to expose the actual content scroller.\n this.connectScrollRoot();\n this.syncRenderedHeaderGeometry(header);\n const geometryReady =\n this.effectiveVariant !== 'expanded' ||\n (this.expandedHeaderHeight > 0 && this.headerTravel > 0);\n if (\n (geometryReady && this.scrollRootResolved && framesElapsed >= 2) ||\n framesRemaining <= 0\n ) {\n this.headerGeometryFrame = null;\n return;\n }\n this.headerGeometryFrame = requestAnimationFrame(sync);\n };\n this.headerGeometryFrame = requestAnimationFrame(sync);\n }\n\n private cancelHeaderReveal() {\n if (this.headerRevealFrame !== null) cancelAnimationFrame(this.headerRevealFrame);\n this.headerRevealFrame = null;\n this.headerEl?.removeAttribute('data-shell-page-syncing');\n }\n\n private revealHeaderWhenSynced(header: BarTitleElement, variant: BarTitleVariant) {\n // Stencil normally re-renders within a frame or two of a prop change. Stop\n // polling at the cap, but fail closed: a stale variant must never paint.\n let framesRemaining = ShellPage.MAX_HEADER_REVEAL_FRAMES;\n const reveal = () => {\n if (this.headerEl !== header) {\n header.removeAttribute('data-shell-page-syncing');\n return;\n }\n framesRemaining -= 1;\n if (header.classList.contains(this.variantClass(variant))) {\n header.removeAttribute('data-shell-page-syncing');\n this.headerRevealFrame = null;\n return;\n }\n if (framesRemaining <= 0) {\n this.headerRevealFrame = null;\n return;\n }\n this.headerRevealFrame = requestAnimationFrame(reveal);\n };\n this.headerRevealFrame = requestAnimationFrame(reveal);\n }\n\n private syncHeaderVariant(concealUntilSynced = false) {\n const header = this.headerEl;\n if (!header) return;\n\n this.syncHeaderDividerInset();\n if (!this.headerContractResolved) {\n this.cancelHeaderReveal();\n header.setAttribute('data-shell-page-syncing', '');\n return;\n }\n\n const next = this.effectiveVariant;\n const renderedVariantIsStale = !header.classList.contains(this.variantClass(next));\n if (!renderedVariantIsStale) this.syncRenderedHeaderGeometry(header);\n if (renderedVariantIsStale && this.isScrollCompacted) {\n // Preserve the expanded flow before asking BarTitle to become compact.\n // This prevents the sentinel from moving back into view during the\n // parent/child render handoff and keeps the variant transition stable.\n this.setSpacerHeight(this.expandedHeaderHeight - this.compactHeaderHeight);\n this.setStickyHeaderOffset(next);\n }\n if (concealUntilSynced) {\n this.cancelHeaderReveal();\n header.setAttribute('data-shell-page-syncing', '');\n }\n if (header.variant !== next) {\n header.variant = next;\n // The child update and its MutationObserver callback can land in\n // different phases across engines. Poll the rendered class as the\n // authoritative handoff before committing sticky/spacer geometry.\n this.scheduleHeaderGeometrySync(header);\n }\n if (concealUntilSynced) {\n this.revealHeaderWhenSynced(header, next);\n }\n }\n\n private observeHeader(header: BarTitleElement | null) {\n this.cancelHeaderReveal();\n this.cancelHeaderGeometrySync();\n this.headerResizeObserver?.disconnect();\n this.headerResizeObserver = null;\n this.headerMutationObserver?.disconnect();\n this.headerMutationObserver = null;\n this.headerEl?.style.removeProperty('--ds-bar-title-divider-inset');\n this.headerEl = header;\n this.expandedHeaderHeight = 0;\n this.expandedGeometryFrozen = false;\n this.setHeaderTravel(0);\n this.setSpacerHeight(0);\n this.stickyHeaderEl?.style.setProperty('--ds-shell-page-sticky-offset', '0px');\n\n if (!header) return;\n if (header.classList.contains(this.variantClass('expanded'))) {\n this.captureExpandedHeaderGeometry(header);\n }\n if (typeof ResizeObserver !== 'undefined') {\n this.headerResizeObserver = new ResizeObserver(() => {\n this.syncRenderedHeaderGeometry(header);\n });\n this.headerResizeObserver.observe(header);\n }\n if (typeof MutationObserver !== 'undefined') {\n this.headerMutationObserver = new MutationObserver(() => {\n this.syncRenderedHeaderGeometry(header);\n });\n this.headerMutationObserver.observe(header, {\n attributes: true,\n attributeFilter: ['class'],\n childList: true,\n subtree: true,\n });\n }\n this.syncHeaderVariant(true);\n this.scheduleHeaderGeometrySync(header);\n }\n\n private handleHeaderSlotChange = (event: Event) => {\n if (this.responsiveMode === 'mobile') return;\n const slot = event.target as HTMLSlotElement;\n const header = slot\n .assignedElements()\n .find(element => element.tagName.toLowerCase() === 'ds-bar-title');\n this.observeHeader((header as BarTitleElement | undefined) ?? null);\n };\n\n render() {\n const mobile = this.responsiveMode === 'mobile';\n return (\n <Host\n role=\"main\"\n style={this.contentInsetStyles}\n class={{\n 'shell-page-host--inset-default': this.contentInset === 'default',\n 'shell-page-host--inset-none': this.contentInset === 'none',\n 'shell-page-host--block-start-inset-none': this.contentInsetBlockStart === 'none',\n 'shell-page-host--surface-primary': this.contentSurface === 'primary',\n 'shell-page-host--surface-secondary': this.contentSurface === 'secondary',\n 'shell-page-host--mobile': mobile,\n 'shell-page-host--desktop-header-shell-bar': this.desktopHeaderExternal,\n [`shell-page-host--header-${this.effectiveVariant}`]: true,\n }}\n >\n <div\n ref={el => {\n this.sentinelEl = el ?? null;\n }}\n class=\"shell-page__scroll-sentinel\"\n aria-hidden=\"true\"\n />\n <div\n ref={el => {\n this.stickyHeaderEl = el ?? null;\n }}\n class=\"shell-page__sticky-header\"\n >\n <div\n class=\"shell-page__desktop-header\"\n hidden={mobile}\n aria-hidden={mobile ? 'true' : undefined}\n inert={mobile ? true : undefined}\n >\n <slot name=\"header\" onSlotchange={this.handleHeaderSlotChange} />\n </div>\n <div\n class=\"shell-page__mobile-header\"\n hidden={!mobile}\n aria-hidden={!mobile ? 'true' : undefined}\n inert={!mobile ? true : undefined}\n >\n <slot name=\"mobile-header\" />\n </div>\n </div>\n <div\n ref={el => {\n this.spacerEl = el ?? null;\n }}\n class=\"shell-page__flow-spacer\"\n aria-hidden=\"true\"\n />\n <div class=\"shell-page__content\">\n <slot />\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|