@ds-mo/ui 13.0.0 → 13.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.
Files changed (170) hide show
  1. package/README.md +6 -0
  2. package/dist/.package-ready.json +1 -1
  3. package/dist/agent-patterns.json +1 -1
  4. package/dist/agent.json +1 -1
  5. package/dist/components/ds-agent-response.js +1 -1
  6. package/dist/components/ds-bar-nav.js +1 -1
  7. package/dist/components/ds-bar-title.js +1 -1
  8. package/dist/components/ds-bar-workflow.js +1 -1
  9. package/dist/components/ds-button-filled.js +1 -1
  10. package/dist/components/ds-button-unfilled.js +1 -1
  11. package/dist/components/ds-card-data-viz.js +1 -1
  12. package/dist/components/ds-card-overview.js +1 -1
  13. package/dist/components/ds-card-overview.js.map +1 -1
  14. package/dist/components/ds-card-setting.js +1 -1
  15. package/dist/components/ds-chart-donut.js +1 -1
  16. package/dist/components/ds-chart-donut.js.map +1 -1
  17. package/dist/components/ds-chart-legend.js +1 -1
  18. package/dist/components/ds-chart-legend.js.map +1 -1
  19. package/dist/components/ds-checkbox.js +1 -1
  20. package/dist/components/ds-chip.js +1 -1
  21. package/dist/components/ds-chip.js.map +1 -1
  22. package/dist/components/ds-code-block.js +1 -1
  23. package/dist/components/ds-conversation-list-item.js +1 -1
  24. package/dist/components/ds-conversation-list-item.js.map +1 -1
  25. package/dist/components/ds-input.js +1 -1
  26. package/dist/components/ds-input.js.map +1 -1
  27. package/dist/components/ds-markdown.js +1 -1
  28. package/dist/components/ds-menu.js +1 -1
  29. package/dist/components/ds-message-composer.js +1 -1
  30. package/dist/components/ds-message-scroller.js +1 -1
  31. package/dist/components/ds-mobile-header.js +1 -1
  32. package/dist/components/ds-mobile-section-switcher.js +1 -1
  33. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  34. package/dist/components/ds-modal.js +1 -1
  35. package/dist/components/ds-panel-nav.js +1 -1
  36. package/dist/components/ds-panel-sub-nav.js +1 -1
  37. package/dist/components/ds-panel-sub-nav.js.map +1 -1
  38. package/dist/components/ds-panel-tool-header.js +1 -1
  39. package/dist/components/ds-panel-tool-search.js +1 -1
  40. package/dist/components/ds-panel-tools.js +1 -1
  41. package/dist/components/ds-radio.js +1 -1
  42. package/dist/components/ds-radio.js.map +1 -1
  43. package/dist/components/ds-select.js +1 -1
  44. package/dist/components/ds-select.js.map +1 -1
  45. package/dist/components/ds-shell-app.js +1 -1
  46. package/dist/components/ds-shell-tools.js +1 -1
  47. package/dist/components/ds-slider.js +1 -1
  48. package/dist/components/ds-slider.js.map +1 -1
  49. package/dist/components/ds-swatch-picker.js +1 -1
  50. package/dist/components/ds-switch.js +1 -1
  51. package/dist/components/ds-tab-group.js +1 -1
  52. package/dist/components/ds-tag.js +1 -1
  53. package/dist/components/ds-tag.js.map +1 -1
  54. package/dist/components/ds-toast.js +1 -1
  55. package/dist/components/{p-B1cbQ0SG.js → p-B1XW4VSn.js} +2 -2
  56. package/dist/components/p-B9p6w-_T.js +2 -0
  57. package/dist/components/{p-z5RIrXuX.js.map → p-B9p6w-_T.js.map} +1 -1
  58. package/dist/components/p-BBFEhNzM.js +2 -0
  59. package/dist/components/{p-CS6CHlHK.js.map → p-BBFEhNzM.js.map} +1 -1
  60. package/dist/components/p-BGUK8-Qm.js +2 -0
  61. package/dist/components/{p-C3ArcO50.js.map → p-BGUK8-Qm.js.map} +1 -1
  62. package/dist/components/p-BO4cj3iX.js +2 -0
  63. package/dist/components/{p-BaUsq_VK.js.map → p-BO4cj3iX.js.map} +1 -1
  64. package/dist/components/p-BYWkksDO.js +2 -0
  65. package/dist/components/{p-Bkv3UjZz.js.map → p-BYWkksDO.js.map} +1 -1
  66. package/dist/components/{p-CWoXKe_h.js → p-C-aCzwhA.js} +2 -2
  67. package/dist/components/{p-DdvEZyX4.js → p-C-kzknkR.js} +2 -2
  68. package/dist/components/p-C4uYvyq6.js.map +1 -1
  69. package/dist/components/{p-Dg1LBXJ2.js → p-CH9yArA1.js} +2 -2
  70. package/dist/components/p-CHpNyAo1.js +2 -0
  71. package/dist/components/{p-CMWata9g.js.map → p-CHpNyAo1.js.map} +1 -1
  72. package/dist/components/{p-D09HINr_.js → p-CJDTh9Tg.js} +2 -2
  73. package/dist/components/p-CJbLY1tu.js +2 -0
  74. package/dist/components/{p-CwwuSGER.js.map → p-CJbLY1tu.js.map} +1 -1
  75. package/dist/components/{p-DeQwkbT1.js → p-CreGah0j.js} +2 -2
  76. package/dist/components/p-Cvxm1OZB.js +2 -0
  77. package/dist/components/{p-lyZNvRvO.js.map → p-Cvxm1OZB.js.map} +1 -1
  78. package/dist/components/{p-CTTnM7cE.js → p-DhEdICfD.js} +2 -2
  79. package/dist/components/{p-BwT6B5Fi.js → p-bxoryr-3.js} +2 -2
  80. package/dist/components/p-eAfNzlMa.js +2 -0
  81. package/dist/components/{p-DsiCDzoF.js.map → p-eAfNzlMa.js.map} +1 -1
  82. package/dist/components/{p-_DzUXA86.js → p-gZni7A2L.js} +2 -2
  83. package/dist/docs/components.json +1 -1
  84. package/dist/mcp/cli.js +15613 -17399
  85. package/dist/mcp-data/registry/agent-activity.json +1 -1
  86. package/dist/mcp-data/registry/agent-response.json +1 -1
  87. package/dist/mcp-data/registry/agent-source-list.json +1 -1
  88. package/dist/mcp-data/registry/agent-tool-call.json +1 -1
  89. package/dist/mcp-data/registry/attachment-list.json +1 -1
  90. package/dist/mcp-data/registry/avatar.json +1 -1
  91. package/dist/mcp-data/registry/badge.json +1 -1
  92. package/dist/mcp-data/registry/bar-nav.json +1 -1
  93. package/dist/mcp-data/registry/bar-title.json +1 -1
  94. package/dist/mcp-data/registry/bar-workflow.json +1 -1
  95. package/dist/mcp-data/registry/breadcrumb.json +1 -1
  96. package/dist/mcp-data/registry/button-filled.json +1 -1
  97. package/dist/mcp-data/registry/button-unfilled.json +1 -1
  98. package/dist/mcp-data/registry/card-data-viz.json +1 -1
  99. package/dist/mcp-data/registry/card-overview.json +3 -3
  100. package/dist/mcp-data/registry/card-setting.json +1 -1
  101. package/dist/mcp-data/registry/chart-bar.json +1 -1
  102. package/dist/mcp-data/registry/chart-donut.json +3 -3
  103. package/dist/mcp-data/registry/chart-legend.json +3 -3
  104. package/dist/mcp-data/registry/chart-line.json +1 -1
  105. package/dist/mcp-data/registry/checkbox.json +1 -1
  106. package/dist/mcp-data/registry/chip.json +1 -1
  107. package/dist/mcp-data/registry/code-block.json +1 -1
  108. package/dist/mcp-data/registry/conversation-list-item.json +1 -1
  109. package/dist/mcp-data/registry/conversation-list-section.json +1 -1
  110. package/dist/mcp-data/registry/conversation-list.json +1 -1
  111. package/dist/mcp-data/registry/divider.json +1 -1
  112. package/dist/mcp-data/registry/empty-state.json +1 -1
  113. package/dist/mcp-data/registry/field.json +1 -1
  114. package/dist/mcp-data/registry/icon.json +1 -1
  115. package/dist/mcp-data/registry/input.json +1 -1
  116. package/dist/mcp-data/registry/loader.json +1 -1
  117. package/dist/mcp-data/registry/markdown.json +1 -1
  118. package/dist/mcp-data/registry/menu.json +1 -1
  119. package/dist/mcp-data/registry/message-bubble.json +1 -1
  120. package/dist/mcp-data/registry/message-composer.json +1 -1
  121. package/dist/mcp-data/registry/message-scroller.json +1 -1
  122. package/dist/mcp-data/registry/message.json +1 -1
  123. package/dist/mcp-data/registry/mobile-bar-nav.json +1 -1
  124. package/dist/mcp-data/registry/mobile-header.json +1 -1
  125. package/dist/mcp-data/registry/mobile-section-switcher.json +1 -1
  126. package/dist/mcp-data/registry/mobile-sheet-nav.json +1 -1
  127. package/dist/mcp-data/registry/modal.json +1 -1
  128. package/dist/mcp-data/registry/panel-nav.json +1 -1
  129. package/dist/mcp-data/registry/panel-sub-nav.json +1 -1
  130. package/dist/mcp-data/registry/panel-tool-header.json +1 -1
  131. package/dist/mcp-data/registry/panel-tool-search.json +1 -1
  132. package/dist/mcp-data/registry/panel-tools.json +1 -1
  133. package/dist/mcp-data/registry/radio.json +1 -1
  134. package/dist/mcp-data/registry/registry.json +1 -1
  135. package/dist/mcp-data/registry/scroll-overlay.json +1 -1
  136. package/dist/mcp-data/registry/select.json +1 -1
  137. package/dist/mcp-data/registry/shell-app.json +1 -1
  138. package/dist/mcp-data/registry/shell-page.json +1 -1
  139. package/dist/mcp-data/registry/shell-tools.json +1 -1
  140. package/dist/mcp-data/registry/skeleton.json +1 -1
  141. package/dist/mcp-data/registry/slider.json +1 -1
  142. package/dist/mcp-data/registry/swatch-picker.json +1 -1
  143. package/dist/mcp-data/registry/switch.json +1 -1
  144. package/dist/mcp-data/registry/tab-group.json +1 -1
  145. package/dist/mcp-data/registry/tag.json +1 -1
  146. package/dist/mcp-data/registry/text.json +1 -1
  147. package/dist/mcp-data/registry/toast.json +1 -1
  148. package/dist/mcp-data/registry/tooltip-data-viz.json +1 -1
  149. package/dist/mcp-data/registry/tooltip.json +1 -1
  150. package/dist/mcp-data/registry/typing-indicator.json +1 -1
  151. package/dist/types/components/CardOverview/CardOverview.d.ts +2 -3
  152. package/package.json +5 -4
  153. package/dist/components/p-BaUsq_VK.js +0 -2
  154. package/dist/components/p-Bkv3UjZz.js +0 -2
  155. package/dist/components/p-C3ArcO50.js +0 -2
  156. package/dist/components/p-CMWata9g.js +0 -2
  157. package/dist/components/p-CS6CHlHK.js +0 -2
  158. package/dist/components/p-CwwuSGER.js +0 -2
  159. package/dist/components/p-DsiCDzoF.js +0 -2
  160. package/dist/components/p-lyZNvRvO.js +0 -2
  161. package/dist/components/p-z5RIrXuX.js +0 -2
  162. /package/dist/components/{p-B1cbQ0SG.js.map → p-B1XW4VSn.js.map} +0 -0
  163. /package/dist/components/{p-CWoXKe_h.js.map → p-C-aCzwhA.js.map} +0 -0
  164. /package/dist/components/{p-DdvEZyX4.js.map → p-C-kzknkR.js.map} +0 -0
  165. /package/dist/components/{p-Dg1LBXJ2.js.map → p-CH9yArA1.js.map} +0 -0
  166. /package/dist/components/{p-D09HINr_.js.map → p-CJDTh9Tg.js.map} +0 -0
  167. /package/dist/components/{p-DeQwkbT1.js.map → p-CreGah0j.js.map} +0 -0
  168. /package/dist/components/{p-CTTnM7cE.js.map → p-DhEdICfD.js.map} +0 -0
  169. /package/dist/components/{p-BwT6B5Fi.js.map → p-bxoryr-3.js.map} +0 -0
  170. /package/dist/components/{p-_DzUXA86.js.map → p-gZni7A2L.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["deriveBarNavValueFromUrl","path","basePath","tabs","value","hideTabs","startsWith","remainder","slice","length","seg","split","selectableTabs","getSelectableTabs","id","tab","find","t","shouldResyncBarNavProps","resolvedTabs","tabsToMenuSections","selectedId","sections","batch","item","isTabDivider","push","items","label","dot","isSelected","isInactive","tabsToOverflowMenuSections","trimLeadingDividers","tabsOverflowContainer","tabListScrollWidth","containerClientWidth","collapsed","hysteresis","diff","visibleTabCountForWidth","itemWidths","availableWidth","overflowTriggerWidth","itemGap","listExtraWidth","fullWidth","widthForItemCount","availableForTabs","Math","max","count","i","width","trimTrailingDividers","end","start","itemsWidth","reduce","sum","CHROME_TRANSITION_START","CHROME_TRANSITION_END","ChromeTransitionDepth","constructor","this","depth","enter","exit","isActive","ChromeTransitionGate","active","createRafCoalescer","onFrame","rafId","schedule","requestAnimationFrame","cancel","cancelAnimationFrame","readChromeTransitionSource","event","detail","source","readChromeTransitionPhase","phase","barNavCss","BarNav","__stencil_proxyCustomElement","HTMLElement","registerHost","navStyle","currentUrl","moreTabsLabel","urlDerivedValue","hideTabsForDetailRoute","tabsCollapsed","menuOpen","menuTriggerActive","tabLayoutCommitted","visibleTabs","overflowTabs","menuInitialFocusVisible","overflowRovingFocused","focusedTabId","headerEl","triggerEl","menuEl","visibleTabListEl","probeTabListEl","resizeObserver","intrinsicWidthRetryCount","tabLayoutPendingFrames","panelNavTransition","panelToolsTransition","overflowCoalescer","updateTabsCollapsed","chromeTransitionShell","committedSection","pendingSection","onChromeTransitionStart","onChromeTransitionEnd","scheduleOverflowCheck","handleOverflowFocus","handleOverflowBlur","effectiveValue","renderedSelectableTabs","hasOverflowTabs","syncFocusedTabId","preferred","some","first","digestTabsConfig","map","join","resetTabOverflowLayout","onHostPropsChange","applyHostProps","onSelectionChange","syncMenuSections","onMenuOpenChange","open","onTabsCollapsedChange","prevCollapsed","undefined","queueMicrotask","focusVisibleSelectedTab","componentWillLoad","componentDidLoad","syncHostPropsIfNeeded","scheduleDeferredHostPropSync","setupOverflowObserver","bindChromeTransitionListeners","componentDidRender","chromeOverflowPaused","syncMenuAnchor","disconnectedCallback","disconnect","unbindChromeTransitionListeners","shell","el","closest","addEventListener","removeEventListener","syncValueFromUrl","remaining","HOST_PROP_SYNC_BUDGET","tick","ResizeObserver","observe","getLeftZoneAvailableWidth","headerStyle","getComputedStyle","horizontalPadding","parseFloat","paddingLeft","paddingRight","clientWidth","getTabsIntrinsicWidth","scrollWidth","getHeaderGap","style","columnGap","gap","getOverflowTriggerReserveWidth","getBoundingClientRect","getProbeTabMetrics","tabList","children","Array","from","child","childrenWidth","gapWidth","setOverflowTabLayout","nextCollapsed","visibleChanged","overflowChanged","scheduleIntrinsicWidthRetry","INTRINSIC_WIDTH_RETRY_MAX","forceTabLayoutCommit","fallbackCollapsed","metrics","intrinsicWidth","TAB_LAYOUT_COMMIT_MAX_FRAMES","shouldCollapse","OVERFLOW_HYSTERESIS_PX","visibleCount","anchor","handleMenuSelect","e","selectTab","String","handleMenuClose","handleMenuAfterClose","incomingTabs","nextBasePath","sectionChanged","tabsConfigChanged","dsTabChange","emit","querySelector","focus","preventScroll","focusVisibleTab","focusLastVisibleTab","last","reverse","findEnabledVisibleTab","step","index","handleTabKeyDown","targetId","target","getAttribute","focusedId","key","focused","preventDefault","currentIndex","findIndex","nextIndex","setFocus","reversedIndex","toggleTabMenu","options","minWidth","focusVisible","handleTriggerKeyDown","renderTabList","probe","h","role","class","heading","ref","next","onKeyDown","onFocusin","type","panelId","disabled","tabIndex","onClick","onFocus","as","variant","emphasis","color","hasRing","render","sectionReady","hasTabs","tabGroupKey","renderedTabs","Host","inert","lineTruncation","wrap","icon","activeFill","hasBorder","focusTabIndex","haspopup","expanded","onDsClick","onFocusout","side","align","sideOffset","initialFocusVisible","onDsSelect","onDsClose","onDsAfterClose"],"sources":["src/wc/components/BarNav/bar-nav-utils.ts","src/wc/components/BarNav/bar-nav-tabs-menu-utils.ts","src/wc/shell/chrome-transition.ts","src/wc/components/BarNav/BarNav.css?tag=ds-bar-nav&encapsulation=scoped","src/wc/components/BarNav/BarNav.tsx"],"sourcesContent":["import { getSelectableTabs } from '../TabGroup/tab-item-utils';\nimport type { BarNavTab } from './bar-nav-types';\n\nexport interface BarNavUrlState {\n /** Tab id derived from the URL, or empty when none applies. */\n value: string;\n /** When true, tabs should be hidden (e.g. non-tab child routes like detail pages). */\n hideTabs: boolean;\n}\n\n/** Derive BarNav tab selection from `currentUrl` relative to `basePath`.\n * Mirrors motive-webapp-lab `resolveBarNavState` tab-selection semantics. */\nexport function deriveBarNavValueFromUrl(\n path: string,\n basePath: string,\n tabs: BarNavTab[],\n): BarNavUrlState {\n if (!path || !basePath) {\n return { value: '', hideTabs: false };\n }\n\n if (path !== basePath && !path.startsWith(`${basePath}/`)) {\n return { value: '', hideTabs: false };\n }\n\n const remainder = path.slice(basePath.length);\n const seg = remainder.startsWith('/') ? remainder.slice(1).split('/')[0] : '';\n const selectableTabs = getSelectableTabs(tabs);\n\n if (!seg) {\n return { value: selectableTabs[0]?.id ?? '', hideTabs: false };\n }\n\n const tab = selectableTabs.find(t => t.id === seg);\n if (tab) {\n return { value: tab.id, hideTabs: false };\n }\n\n return { value: '', hideTabs: true };\n}\n\n/** True when host array props have data but resolved internal state is still empty. */\nexport function shouldResyncBarNavProps(\n resolvedTabs: BarNavTab[],\n tabs: BarNavTab[],\n): boolean {\n return resolvedTabs.length === 0 && (tabs?.length ?? 0) > 0;\n}\n","import type { MenuItemData, MenuSection } from '../Menu/menu-types';\nimport {\n getSelectableTabs,\n isTabDivider,\n type TabItem,\n type TabItemTab,\n} from '../TabGroup/tab-item-utils';\n\n/** Map BarNav tabs to menu sections, preserving `{ type: 'divider' }` as section breaks. */\nexport function tabsToMenuSections(tabs: TabItem[], selectedId: string): MenuSection[] {\n const sections: MenuSection[] = [];\n let batch: MenuItemData[] = [];\n\n for (const item of tabs) {\n if (isTabDivider(item)) {\n if (batch.length > 0) {\n sections.push({ items: batch });\n batch = [];\n }\n continue;\n }\n\n batch.push({\n label: item.label,\n value: item.id,\n dot: item.dot,\n isSelected: item.id === selectedId,\n isInactive: item.isInactive,\n });\n }\n\n if (batch.length > 0) {\n sections.push({ items: batch });\n }\n\n return sections;\n}\n\nexport function tabsToOverflowMenuSections(tabs: TabItem[], selectedId: string): MenuSection[] {\n return tabsToMenuSections(trimLeadingDividers(tabs), selectedId);\n}\n\nexport function getActiveTab(tabs: TabItem[], selectedId: string): TabItemTab | undefined {\n const selectable = getSelectableTabs(tabs);\n return selectable.find(tab => tab.id === selectedId) ?? selectable[0];\n}\n\nexport function getActiveTabLabel(tabs: TabItem[], selectedId: string): string {\n return getActiveTab(tabs, selectedId)?.label ?? 'Tabs';\n}\n\n/** True when tablist content exceeds the available width (with optional hysteresis). */\nexport function tabsOverflowContainer(\n tabListScrollWidth: number,\n containerClientWidth: number,\n collapsed: boolean,\n hysteresis = 2,\n): boolean {\n const diff = tabListScrollWidth - containerClientWidth;\n if (collapsed) {\n return diff > -hysteresis;\n }\n return diff > hysteresis;\n}\n\nexport function visibleTabCountForWidth(\n itemWidths: number[],\n availableWidth: number,\n overflowTriggerWidth: number,\n itemGap: number,\n listExtraWidth: number,\n): number {\n if (itemWidths.length === 0 || availableWidth <= 0) return 0;\n\n const fullWidth = widthForItemCount(itemWidths, itemWidths.length, itemGap, listExtraWidth);\n if (fullWidth <= availableWidth) return itemWidths.length;\n\n const availableForTabs = Math.max(0, availableWidth - overflowTriggerWidth);\n let count = 0;\n\n for (let i = 1; i <= itemWidths.length; i++) {\n const width = widthForItemCount(itemWidths, i, itemGap, listExtraWidth);\n if (width > availableForTabs) break;\n count = i;\n }\n\n return count;\n}\n\nexport function trimTrailingDividers(tabs: TabItem[]): TabItem[] {\n let end = tabs.length;\n while (end > 0 && isTabDivider(tabs[end - 1])) {\n end -= 1;\n }\n return tabs.slice(0, end);\n}\n\nfunction trimLeadingDividers(tabs: TabItem[]): TabItem[] {\n let start = 0;\n while (start < tabs.length && isTabDivider(tabs[start])) {\n start += 1;\n }\n return tabs.slice(start);\n}\n\nfunction widthForItemCount(\n itemWidths: number[],\n count: number,\n itemGap: number,\n listExtraWidth: number,\n): number {\n if (count <= 0) return 0;\n const itemsWidth = itemWidths.slice(0, count).reduce((sum, width) => sum + width, 0);\n return listExtraWidth + itemsWidth + itemGap * Math.max(0, count - 1);\n}\n","/** Bubbling/composed events — `ds-shell-app` and `ds-bar-nav` coordinate during width motion. */\n\nexport const CHROME_TRANSITION_START = 'dsChromeTransitionStart';\nexport const CHROME_TRANSITION_END = 'dsChromeTransitionEnd';\n\nexport type ChromeTransitionSource = 'panel-nav' | 'panel-tools';\n\nexport interface ChromeTransitionDetail {\n source: ChromeTransitionSource;\n /** Panel-tools drawer motion direction; omitted for panel-nav. */\n phase?: 'opening' | 'closing';\n}\n\n/** Reference-counted gate — used while panel-nav width is transitioning. */\nexport class ChromeTransitionDepth {\n private depth = 0;\n\n enter(): void {\n this.depth += 1;\n }\n\n exit(): void {\n this.depth = Math.max(0, this.depth - 1);\n }\n\n get isActive(): boolean {\n return this.depth > 0;\n }\n}\n\n/** Idempotent gate for one physical chrome surface.\n * Duplicate start notifications still require only one matching end. */\nexport class ChromeTransitionGate {\n private active = false;\n\n enter(): void {\n this.active = true;\n }\n\n exit(): void {\n this.active = false;\n }\n\n get isActive(): boolean {\n return this.active;\n }\n}\n\nexport interface RafCoalescer {\n schedule(): void;\n cancel(): void;\n}\n\n/** Coalesce bursty layout work (ResizeObserver, prop churn) to one callback per frame. */\nexport function createRafCoalescer(onFrame: () => void): RafCoalescer {\n let rafId = 0;\n return {\n schedule() {\n if (rafId !== 0) return;\n rafId = requestAnimationFrame(() => {\n rafId = 0;\n onFrame();\n });\n },\n cancel() {\n if (rafId !== 0) {\n cancelAnimationFrame(rafId);\n rafId = 0;\n }\n },\n };\n}\n\nexport function readChromeTransitionSource(event: Event): ChromeTransitionSource | undefined {\n return (event as CustomEvent<ChromeTransitionDetail>).detail?.source;\n}\n\nexport function readChromeTransitionPhase(event: Event): ChromeTransitionDetail['phase'] {\n return (event as CustomEvent<ChromeTransitionDetail>).detail?.phase;\n}\n","@import '../../utils/control-density.css';\n@import '../../utils/chrome-layout.css';\n@import '../../utils/focus-ring.css';\n@import '../../utils/control-inactive.css';\n\n:host {\n display: block;\n}\n\n.bar-nav {\n position: relative;\n height: var(--dimension-size-600);\n border-bottom: var(--dimension-stroke-width-012) solid var(--_bar-nav-border);\n background-color: var(--_bar-nav-bg);\n color: var(--_bar-nav-fg-primary);\n -webkit-user-select: none;\n user-select: none;\n overflow: hidden;\n transition:\n background-color var(--effect-motion-short-3),\n border-color var(--effect-motion-short-3),\n color var(--effect-motion-short-3);\n isolation: isolate;\n /* Default chrome — app surfaces */\n --_bar-nav-bg: var(--color-background-secondary);\n --_bar-nav-border: var(--color-border-tertiary);\n --_bar-nav-fg-primary: var(--color-foreground-primary);\n --_bar-nav-fg-secondary: var(--color-foreground-secondary);\n --_bar-nav-hover: var(--color-interaction-hover);\n --_bar-nav-pressed: var(--color-interaction-pressed);\n --_bar-nav-focus: var(--color-interaction-focus);\n --_bar-nav-dot: var(--color-foreground-bold-brand);\n --ds-focus-ring-color: var(--_bar-nav-focus);\n}\n\n/* Style slots — same app tokens for now; hook texture/glyph layers later. */\n.bar-nav--dashboard,\n.bar-nav--settings {\n --_bar-nav-bg: var(--color-background-secondary);\n --_bar-nav-border: var(--color-border-tertiary);\n --_bar-nav-fg-primary: var(--color-foreground-primary);\n --_bar-nav-fg-secondary: var(--color-foreground-secondary);\n --_bar-nav-hover: var(--color-interaction-hover);\n --_bar-nav-pressed: var(--color-interaction-pressed);\n --_bar-nav-focus: var(--color-interaction-focus);\n --_bar-nav-dot: var(--color-foreground-bold-brand);\n}\n\n/* Shell-owned chrome (bg + wash) — bar is a transparent frame. */\n:host-context(ds-shell-app:not([gradient-preset='none'])) .bar-nav {\n background-color: transparent;\n}\n\n.bar-nav > :not(.bar-nav__tabs-probe) {\n position: relative;\n z-index: 3;\n}\n\n/* Overflow — keep fitting tabs visible and pin the overflow trigger to the far edge. */\n.bar-nav--tabs-collapsed {\n display: flex;\n gap: var(--dimension-space-100);\n align-items: center;\n}\n\n/* Expanded tabs — consume full header width */\n.bar-nav__left {\n position: relative;\n flex: 1 1 0%;\n min-width: 0;\n width: 0;\n display: flex;\n align-items: center;\n}\n\n.bar-nav__tabs-visible {\n flex: 1;\n min-width: 0;\n width: 100%;\n}\n\n/* Unconstrained width so intrinsic tab row width is measurable while collapsed */\n.bar-nav__tabs-probe {\n position: absolute;\n left: 0;\n top: 0;\n visibility: hidden;\n pointer-events: none;\n overflow: visible;\n width: max-content;\n max-width: none;\n z-index: -1;\n}\n\n.bar-nav__tabs-probe > div {\n width: max-content;\n}\n\n.bar-nav__tab-list {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-050);\n position: relative;\n width: max-content;\n}\n\n.bar-nav__tab {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--ds-control-gap);\n height: var(--ds-control-height);\n min-width: var(--ds-control-height);\n padding: 0 var(--ds-control-padding-inline);\n box-sizing: border-box;\n border: none;\n border-radius: var(--ds-control-radius);\n background-color: transparent;\n color: var(--_bar-nav-fg-secondary);\n cursor: default;\n position: relative;\n flex-shrink: 0;\n -webkit-user-select: none;\n user-select: none;\n transition: color var(--effect-motion-short-2);\n}\n\n.bar-nav__tab::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--ds-control-radius);\n background: transparent;\n pointer-events: none;\n cursor: inherit;\n}\n\n.bar-nav__tab:hover::after {\n background: var(--_bar-nav-hover);\n}\n\n.bar-nav__tab:active::after {\n background: var(--_bar-nav-pressed);\n}\n\n.bar-nav__tab--selected {\n color: var(--_bar-nav-fg-primary);\n}\n\n.bar-nav__tab-label {\n position: relative;\n display: inline-flex;\n align-items: center;\n padding: 0 var(--ds-control-label-inset);\n white-space: nowrap;\n}\n\n.bar-nav__tab-label--dot {\n padding-right: calc(var(--ds-control-label-inset) + var(--ds-control-gap));\n}\n\n.bar-nav__tab-dot {\n position: absolute;\n top: 0;\n right: 0;\n pointer-events: none;\n}\n\n.bar-nav__tab-divider {\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: var(--dimension-space-100);\n height: var(--ds-control-height);\n padding-block: var(--ds-control-padding-inline);\n flex-shrink: 0;\n pointer-events: none;\n}\n\n.bar-nav__tab-divider-line {\n width: var(--dimension-stroke-width-012);\n align-self: stretch;\n background-color: var(--_bar-nav-border);\n}\n\n/* In-flow placeholder while measuring overflow — avoids layout jump; hidden from view/accessibility. */\n.bar-nav__tabs-pending {\n flex: 1;\n min-width: 0;\n height: var(--ds-control-height);\n visibility: hidden;\n pointer-events: none;\n}\n\n/* Overflow trigger — compact icon button aligned to the right edge. */\n.bar-nav__overflow-trigger {\n margin-left: auto;\n --ds-button-unfilled-fg: var(--_bar-nav-fg-secondary);\n --ds-button-unfilled-fg-active: var(--_bar-nav-fg-primary);\n --ds-interaction-hover: var(--_bar-nav-hover);\n --ds-interaction-pressed: var(--_bar-nav-pressed);\n --ds-focus-ring-color: var(--_bar-nav-focus);\n}\n\n/* Fallback heading when no tabs — matches a single (selected) tab so the area\n name shares the tab label's type token, color, height and horizontal inset.\n Inset = tab button padding (space-075, 6px) + label inset (space-025, 2px).\n Color comes from ds-text color=\"primary\"; beat Text's inline-box display. */\nds-text.bar-nav__heading {\n display: inline-flex;\n align-items: center;\n height: var(--ds-control-height);\n padding-inline: calc(var(--ds-control-padding-inline) + var(--ds-control-label-inset));\n -webkit-user-select: none;\n user-select: none;\n}\n","import {\n Component,\n Prop,\n Event,\n EventEmitter,\n Element,\n Watch,\n State,\n h,\n Host,\n} from '@stencil/core';\nimport type { NavChromeStyle } from '../../shell/nav-chrome';\nimport type { MenuItemData } from '../Menu/menu-types';\nimport { getSelectableTabs, isTabDivider, type TabItemTab } from '../TabGroup/tab-item-utils';\nimport type { BarNavTab } from './bar-nav-types';\nimport {\n deriveBarNavValueFromUrl,\n shouldResyncBarNavProps,\n} from './bar-nav-utils';\nimport {\n tabsOverflowContainer,\n tabsToOverflowMenuSections,\n trimTrailingDividers,\n visibleTabCountForWidth,\n} from './bar-nav-tabs-menu-utils';\nimport {\n CHROME_TRANSITION_END,\n CHROME_TRANSITION_START,\n ChromeTransitionGate,\n createRafCoalescer,\n readChromeTransitionSource,\n readChromeTransitionPhase,\n} from '../../shell/chrome-transition';\n\n@Component({\n tag: 'ds-bar-nav',\n styleUrl: 'BarNav.css',\n scoped: true,\n})\nexport class BarNav {\n /** Style slot: `dashboard` or `settings`. Colors match for now. */\n @Prop({ attribute: 'nav-style', reflect: true }) navStyle: NavChromeStyle = 'dashboard';\n\n @Element() el!: HTMLElement;\n\n /**\n * Tab items for the left section.\n * Set via JS property: `el.tabs = [...]`. Replace the array reference to update.\n */\n @Prop() tabs: BarNavTab[] = [];\n\n /** ID of the currently active tab. Overridden when `currentUrl` + `basePath` are set. */\n @Prop({ mutable: true }) value: string = '';\n\n /**\n * Fallback heading shown when no tabs are provided.\n * When tabs are present the heading is hidden.\n */\n @Prop() heading: string | undefined;\n\n /** Section base path (e.g. `/dashboard/safety`). Used with `currentUrl` to derive `value`. */\n @Prop() basePath: string = '';\n\n /** Current route URL. When set with `basePath`, the active tab is derived automatically. */\n @Prop() currentUrl: string = '';\n @Prop() moreTabsLabel: string = 'More tabs';\n\n /** Emitted when the active tab changes. Detail = tab id. */\n @Event() dsTabChange!: EventEmitter<string>;\n\n @State() private resolvedTabs: BarNavTab[] = [];\n @State() private urlDerivedValue: string = '';\n @State() private hideTabsForDetailRoute = false;\n @State() private tabsCollapsed = false;\n @State() private menuOpen = false;\n @State() private menuTriggerActive = false;\n /** When false, defer showing expanded tabs or the collapsed trigger until intrinsic width is measured (avoids a one-frame flash of the full tab row on narrow viewports). */\n @State() private tabLayoutCommitted = false;\n @State() private visibleTabs: BarNavTab[] = [];\n @State() private overflowTabs: BarNavTab[] = [];\n @State() private menuInitialFocusVisible = false;\n @State() private overflowRovingFocused = false;\n @State() private focusedTabId = '';\n\n private static readonly HOST_PROP_SYNC_BUDGET = 8;\n private static readonly INTRINSIC_WIDTH_RETRY_MAX = 3;\n private static readonly TAB_LAYOUT_COMMIT_MAX_FRAMES = 16;\n private static readonly OVERFLOW_HYSTERESIS_PX = 8;\n\n private headerEl: HTMLElement | null = null;\n private triggerEl: (HTMLElement & { setFocus?: () => Promise<void> }) | null = null;\n private menuEl: HTMLDsMenuElement | null = null;\n private visibleTabListEl: HTMLElement | null = null;\n private probeTabListEl: HTMLElement | null = null;\n private resizeObserver: ResizeObserver | null = null;\n private intrinsicWidthRetryCount = 0;\n private tabLayoutPendingFrames = 0;\n private readonly panelNavTransition = new ChromeTransitionGate();\n private readonly panelToolsTransition = new ChromeTransitionGate();\n private readonly overflowCoalescer = createRafCoalescer(() => {\n this.updateTabsCollapsed();\n });\n private chromeTransitionShell: HTMLElement | null = null;\n /** Matches `basePath` once tabs + URL are reconciled for the active section. */\n @State() private committedSection = '';\n /** Section waiting for URL + tabs to catch up after a cross-area navigation. */\n @State() private pendingSection = '';\n\n private get effectiveValue(): string {\n if (this.currentUrl && this.basePath) {\n return this.urlDerivedValue;\n }\n return this.value;\n }\n\n private get renderedSelectableTabs(): TabItemTab[] {\n const tabs = this.hasOverflowTabs ? this.visibleTabs : this.resolvedTabs;\n return getSelectableTabs(tabs);\n }\n\n private get hasOverflowTabs(): boolean {\n return this.tabLayoutCommitted && this.tabsCollapsed && this.overflowTabs.length > 0;\n }\n\n private syncFocusedTabId(preferred: string, tabs: TabItemTab[]) {\n if (tabs.some(tab => tab.id === preferred && !tab.isInactive)) {\n this.focusedTabId = preferred;\n return;\n }\n const first = tabs.find(tab => !tab.isInactive);\n this.focusedTabId = first?.id ?? '';\n }\n\n private digestTabsConfig(tabs: BarNavTab[]): string {\n return tabs.map(t => (isTabDivider(t) ? '|' : t.id)).join(',');\n }\n\n private resetTabOverflowLayout() {\n this.tabLayoutCommitted = false;\n this.tabsCollapsed = false;\n this.menuOpen = false;\n this.menuTriggerActive = false;\n this.menuInitialFocusVisible = false;\n this.intrinsicWidthRetryCount = 0;\n this.tabLayoutPendingFrames = 0;\n this.visibleTabs = [];\n this.overflowTabs = [];\n }\n\n @Watch('tabs')\n @Watch('currentUrl')\n @Watch('basePath')\n onHostPropsChange() {\n this.applyHostProps();\n }\n\n @Watch('value')\n @Watch('urlDerivedValue')\n onSelectionChange() {\n this.syncFocusedTabId(this.effectiveValue, this.renderedSelectableTabs);\n this.syncMenuSections();\n this.scheduleOverflowCheck();\n }\n\n @Watch('menuOpen')\n onMenuOpenChange(open: boolean) {\n if (this.menuEl) {\n this.menuEl.open = open;\n }\n }\n\n @Watch('tabsCollapsed')\n onTabsCollapsedChange(collapsed: boolean, prevCollapsed: boolean | undefined) {\n if (!collapsed) {\n this.menuOpen = false;\n this.menuTriggerActive = false;\n this.menuInitialFocusVisible = false;\n this.menuEl = null;\n }\n this.scheduleOverflowCheck();\n if (collapsed) {\n requestAnimationFrame(() => {\n this.scheduleOverflowCheck();\n });\n }\n if (collapsed || prevCollapsed === undefined || prevCollapsed === collapsed) return;\n requestAnimationFrame(() => this.scheduleOverflowCheck());\n queueMicrotask(() => this.focusVisibleSelectedTab());\n }\n\n componentWillLoad() {\n this.applyHostProps();\n this.syncFocusedTabId(this.effectiveValue, getSelectableTabs(this.resolvedTabs));\n }\n\n componentDidLoad() {\n this.syncHostPropsIfNeeded();\n this.scheduleDeferredHostPropSync();\n this.setupOverflowObserver();\n this.bindChromeTransitionListeners();\n this.scheduleOverflowCheck();\n }\n\n componentDidRender() {\n if (this.chromeOverflowPaused()) {\n this.syncMenuAnchor();\n return;\n }\n this.scheduleOverflowCheck();\n this.syncMenuAnchor();\n }\n\n disconnectedCallback() {\n this.resizeObserver?.disconnect();\n this.resizeObserver = null;\n this.overflowCoalescer.cancel();\n this.unbindChromeTransitionListeners();\n }\n\n private bindChromeTransitionListeners() {\n const shell = this.el.closest<HTMLElement>('ds-shell-app');\n if (!shell) return;\n this.chromeTransitionShell = shell;\n shell.addEventListener(CHROME_TRANSITION_START, this.onChromeTransitionStart);\n shell.addEventListener(CHROME_TRANSITION_END, this.onChromeTransitionEnd);\n }\n\n private unbindChromeTransitionListeners() {\n if (!this.chromeTransitionShell) return;\n this.chromeTransitionShell.removeEventListener(\n CHROME_TRANSITION_START,\n this.onChromeTransitionStart,\n );\n this.chromeTransitionShell.removeEventListener(\n CHROME_TRANSITION_END,\n this.onChromeTransitionEnd,\n );\n this.chromeTransitionShell = null;\n }\n\n private onChromeTransitionStart = (event: Event) => {\n const source = readChromeTransitionSource(event);\n if (source === 'panel-nav') {\n this.panelNavTransition.enter();\n return;\n }\n if (source === 'panel-tools') {\n const phase = readChromeTransitionPhase(event) ?? 'opening';\n if (phase === 'closing') {\n this.panelToolsTransition.enter();\n }\n }\n };\n\n private chromeOverflowPaused(): boolean {\n return this.panelNavTransition.isActive || this.panelToolsTransition.isActive;\n }\n\n private onChromeTransitionEnd = (event: Event) => {\n const source = readChromeTransitionSource(event);\n if (source === 'panel-nav') {\n this.panelNavTransition.exit();\n if (!this.panelNavTransition.isActive) {\n this.scheduleOverflowCheck();\n }\n return;\n }\n if (source === 'panel-tools') {\n this.panelToolsTransition.exit();\n this.scheduleOverflowCheck();\n }\n };\n\n /** Re-resolve props assigned by the host after componentWillLoad (Angular ngAfterViewInit). */\n private syncHostPropsIfNeeded() {\n if (shouldResyncBarNavProps(this.resolvedTabs, this.tabs)) {\n this.applyHostProps();\n } else if (this.currentUrl && this.basePath) {\n this.syncValueFromUrl();\n }\n }\n\n /** Poll across animation frames — host props may land without triggering @Watch. */\n private scheduleDeferredHostPropSync() {\n let remaining = BarNav.HOST_PROP_SYNC_BUDGET;\n const tick = () => {\n this.syncHostPropsIfNeeded();\n if (--remaining > 0) {\n requestAnimationFrame(tick);\n }\n };\n queueMicrotask(tick);\n }\n\n private setupOverflowObserver() {\n if (typeof ResizeObserver === 'undefined' || !this.headerEl) return;\n this.resizeObserver?.disconnect();\n this.resizeObserver = new ResizeObserver(() => {\n if (this.chromeOverflowPaused()) return;\n this.scheduleOverflowCheck();\n });\n this.resizeObserver.observe(this.headerEl);\n }\n\n private scheduleOverflowCheck() {\n if (this.chromeOverflowPaused()) return;\n this.overflowCoalescer.schedule();\n }\n\n /** Width available for the tab row or collapsed trigger. */\n private getLeftZoneAvailableWidth(): number {\n if (!this.headerEl) return 0;\n\n const headerStyle = getComputedStyle(this.headerEl);\n const horizontalPadding =\n (parseFloat(headerStyle.paddingLeft) || 0) + (parseFloat(headerStyle.paddingRight) || 0);\n\n return Math.max(0, this.headerEl.clientWidth - horizontalPadding);\n }\n\n private getTabsIntrinsicWidth(): number {\n return this.probeTabListEl?.scrollWidth ?? 0;\n }\n\n private getHeaderGap(): number {\n if (!this.headerEl) return 0;\n const style = getComputedStyle(this.headerEl);\n return parseFloat(style.columnGap || style.gap) || 0;\n }\n\n private getOverflowTriggerReserveWidth(): number {\n if (!this.triggerEl) {\n return 40;\n }\n return this.triggerEl.getBoundingClientRect().width + this.getHeaderGap();\n }\n\n private getProbeTabMetrics():\n | {\n itemWidths: number[];\n itemGap: number;\n listExtraWidth: number;\n }\n | null {\n const tabList = this.probeTabListEl;\n if (!tabList) return null;\n\n const children = Array.from(tabList.children) as HTMLElement[];\n const itemWidths = children.map(child => child.getBoundingClientRect().width);\n if (itemWidths.length === 0 || itemWidths.some(width => width === 0)) return null;\n\n const style = getComputedStyle(tabList);\n const itemGap = parseFloat(style.columnGap || style.gap) || 0;\n const childrenWidth = itemWidths.reduce((sum, width) => sum + width, 0);\n const gapWidth = itemGap * Math.max(0, itemWidths.length - 1);\n const listExtraWidth = Math.max(0, tabList.scrollWidth - childrenWidth - gapWidth);\n\n return { itemWidths, itemGap, listExtraWidth };\n }\n\n private setOverflowTabLayout(visibleTabs: BarNavTab[], overflowTabs: BarNavTab[]) {\n const nextCollapsed = overflowTabs.length > 0;\n const visibleChanged =\n this.digestTabsConfig(visibleTabs) !== this.digestTabsConfig(this.visibleTabs);\n const overflowChanged =\n this.digestTabsConfig(overflowTabs) !== this.digestTabsConfig(this.overflowTabs);\n\n if (visibleChanged) {\n this.visibleTabs = visibleTabs;\n }\n if (overflowChanged) {\n this.overflowTabs = overflowTabs;\n }\n if (nextCollapsed !== this.tabsCollapsed) {\n this.tabsCollapsed = nextCollapsed;\n if (!nextCollapsed) {\n this.menuOpen = false;\n this.menuTriggerActive = false;\n }\n }\n this.syncFocusedTabId(\n this.effectiveValue,\n getSelectableTabs(nextCollapsed ? visibleTabs : this.resolvedTabs),\n );\n }\n\n private scheduleIntrinsicWidthRetry() {\n if (this.intrinsicWidthRetryCount >= BarNav.INTRINSIC_WIDTH_RETRY_MAX) return;\n this.intrinsicWidthRetryCount++;\n requestAnimationFrame(() => this.scheduleOverflowCheck());\n }\n\n private forceTabLayoutCommit(fallbackCollapsed: boolean) {\n this.intrinsicWidthRetryCount = 0;\n this.tabLayoutPendingFrames = 0;\n this.setOverflowTabLayout(\n fallbackCollapsed ? [] : this.resolvedTabs,\n fallbackCollapsed ? this.resolvedTabs : [],\n );\n this.tabLayoutCommitted = true;\n }\n\n private updateTabsCollapsed() {\n if (!this.headerEl || this.resolvedTabs.length === 0 || this.hideTabsForDetailRoute) {\n if (this.tabsCollapsed) {\n this.setOverflowTabLayout([], []);\n }\n this.intrinsicWidthRetryCount = 0;\n this.tabLayoutPendingFrames = 0;\n this.tabLayoutCommitted = true;\n return;\n }\n\n const metrics = this.getProbeTabMetrics();\n const intrinsicWidth = this.getTabsIntrinsicWidth();\n if (!metrics || intrinsicWidth === 0) {\n this.tabLayoutPendingFrames += 1;\n if (this.intrinsicWidthRetryCount >= BarNav.INTRINSIC_WIDTH_RETRY_MAX) {\n this.forceTabLayoutCommit(false);\n } else if (this.tabLayoutPendingFrames >= BarNav.TAB_LAYOUT_COMMIT_MAX_FRAMES) {\n this.forceTabLayoutCommit(false);\n } else {\n this.scheduleIntrinsicWidthRetry();\n }\n return;\n }\n this.intrinsicWidthRetryCount = 0;\n this.tabLayoutPendingFrames = 0;\n\n const shouldCollapse = tabsOverflowContainer(\n intrinsicWidth,\n this.getLeftZoneAvailableWidth(),\n this.tabsCollapsed,\n BarNav.OVERFLOW_HYSTERESIS_PX,\n );\n\n if (!shouldCollapse) {\n this.setOverflowTabLayout(this.resolvedTabs, []);\n this.tabLayoutCommitted = true;\n return;\n }\n\n const visibleCount = visibleTabCountForWidth(\n metrics.itemWidths,\n this.getLeftZoneAvailableWidth(),\n this.getOverflowTriggerReserveWidth(),\n metrics.itemGap,\n metrics.listExtraWidth,\n );\n const visibleTabs = trimTrailingDividers(this.resolvedTabs.slice(0, visibleCount));\n const overflowTabs = this.resolvedTabs.slice(visibleTabs.length);\n this.setOverflowTabLayout(visibleTabs, overflowTabs);\n this.tabLayoutCommitted = true;\n }\n\n private syncMenuAnchor() {\n if (!this.menuEl || !this.triggerEl || !this.hasOverflowTabs) return;\n this.menuEl.anchor = this.triggerEl;\n this.syncMenuSections();\n }\n\n private handleMenuSelect(e: Event) {\n const detail = (e as CustomEvent<MenuItemData>).detail;\n if (detail?.value !== undefined) {\n this.selectTab(String(detail.value));\n }\n this.menuOpen = false;\n this.menuInitialFocusVisible = false;\n }\n\n private handleMenuClose() {\n this.menuOpen = false;\n this.menuInitialFocusVisible = false;\n }\n\n private handleMenuAfterClose() {\n if (!this.menuOpen) this.menuTriggerActive = false;\n }\n\n /** Batch tabs/basePath/currentUrl updates so URL derivation never runs with a mixed section. */\n private incomingTabs(): BarNavTab[] {\n return this.tabs ?? [];\n }\n\n private applyHostProps() {\n const nextBasePath = this.basePath;\n const sectionChanged =\n nextBasePath !== '' &&\n this.committedSection !== '' &&\n nextBasePath !== this.committedSection;\n\n if (sectionChanged) {\n this.urlDerivedValue = '';\n this.committedSection = '';\n this.pendingSection = nextBasePath;\n this.resolvedTabs = [];\n this.resetTabOverflowLayout();\n return;\n }\n\n if (this.pendingSection) {\n if (!nextBasePath || nextBasePath !== this.pendingSection) {\n return;\n }\n if (!this.currentUrl.startsWith(this.pendingSection)) {\n return;\n }\n const tabs = this.incomingTabs();\n if (tabs.length === 0) {\n return;\n }\n this.pendingSection = '';\n }\n\n const tabs = this.incomingTabs();\n const tabsConfigChanged =\n this.digestTabsConfig(tabs) !== this.digestTabsConfig(this.resolvedTabs);\n\n this.resolvedTabs = tabs;\n this.syncValueFromUrl();\n this.committedSection = nextBasePath;\n if (tabsConfigChanged) {\n this.resetTabOverflowLayout();\n }\n this.scheduleOverflowCheck();\n }\n\n private syncMenuSections() {\n if (!this.menuEl) return;\n this.menuEl.sections = tabsToOverflowMenuSections(this.overflowTabs, this.effectiveValue);\n }\n\n private syncValueFromUrl() {\n const tabs = this.incomingTabs();\n\n if (!this.currentUrl || !this.basePath) {\n this.urlDerivedValue = '';\n this.hideTabsForDetailRoute = false;\n return;\n }\n\n if (!this.currentUrl.startsWith(this.basePath)) {\n this.urlDerivedValue = '';\n this.hideTabsForDetailRoute = false;\n return;\n }\n\n const { value, hideTabs } = deriveBarNavValueFromUrl(\n this.currentUrl,\n this.basePath,\n tabs,\n );\n this.urlDerivedValue = value;\n this.hideTabsForDetailRoute = hideTabs;\n }\n\n private selectTab(id: string) {\n this.value = id;\n this.dsTabChange.emit(id);\n }\n\n /** Move focus to the selected tab in the visible tab group (after expand). */\n private focusVisibleSelectedTab() {\n const tab = this.visibleTabListEl?.querySelector(\n `[data-tab-id=\"${this.effectiveValue}\"]`,\n ) as HTMLElement | null;\n tab?.focus({ preventScroll: true });\n }\n\n private focusVisibleTab(id: string) {\n this.focusedTabId = id;\n const tab = this.visibleTabListEl?.querySelector(\n `[data-tab-id=\"${id}\"]`,\n ) as HTMLElement | null;\n tab?.focus({ preventScroll: true });\n }\n\n private focusLastVisibleTab() {\n const last = [...this.renderedSelectableTabs].reverse().find(tab => !tab.isInactive);\n if (last) this.focusVisibleTab(last.id);\n }\n\n private findEnabledVisibleTab(from: number, step: 1 | -1): number | null {\n const tabs = this.renderedSelectableTabs;\n for (let index = from + step; index >= 0 && index < tabs.length; index += step) {\n if (!tabs[index]?.isInactive) return index;\n }\n return null;\n }\n\n private handleTabKeyDown(e: KeyboardEvent) {\n const tabs = this.renderedSelectableTabs;\n if (!tabs.length) return;\n const targetId = (e.target as HTMLElement | null)?.getAttribute('data-tab-id');\n const focusedId = targetId ?? this.focusedTabId;\n\n if (e.key === 'Enter' || e.key === ' ') {\n const focused = tabs.find(tab => tab.id === focusedId);\n if (!focused || focused.isInactive) return;\n e.preventDefault();\n this.selectTab(focused.id);\n return;\n }\n\n const currentIndex = tabs.findIndex(tab => tab.id === focusedId);\n if (currentIndex < 0) return;\n\n let nextIndex: number | null;\n if (e.key === 'ArrowRight') {\n nextIndex = this.findEnabledVisibleTab(currentIndex, 1);\n if (nextIndex === null && this.hasOverflowTabs) {\n e.preventDefault();\n this.overflowRovingFocused = true;\n void this.triggerEl?.setFocus?.();\n return;\n }\n } else if (e.key === 'ArrowLeft') {\n nextIndex = this.findEnabledVisibleTab(currentIndex, -1);\n } else if (e.key === 'Home') {\n nextIndex = tabs.findIndex(tab => !tab.isInactive);\n } else if (e.key === 'End') {\n const reversedIndex = [...tabs].reverse().findIndex(tab => !tab.isInactive);\n nextIndex = reversedIndex < 0 ? null : tabs.length - 1 - reversedIndex;\n } else {\n return;\n }\n\n if (nextIndex === null || nextIndex < 0 || nextIndex === currentIndex) return;\n e.preventDefault();\n this.focusVisibleTab(tabs[nextIndex].id);\n }\n\n private toggleTabMenu(options?: { focusVisible?: boolean }) {\n if (this.menuOpen) {\n this.menuOpen = false;\n this.menuInitialFocusVisible = false;\n return;\n }\n\n if (this.menuEl && this.triggerEl) {\n this.menuEl.anchor = this.triggerEl;\n this.menuEl.minWidth = '';\n this.syncMenuSections();\n }\n\n this.menuInitialFocusVisible = options?.focusVisible ?? false;\n this.menuTriggerActive = true;\n this.menuOpen = true;\n }\n\n private handleOverflowFocus = () => {\n this.overflowRovingFocused = true;\n };\n\n private handleOverflowBlur = () => {\n this.overflowRovingFocused = false;\n };\n\n private handleTriggerKeyDown(e: KeyboardEvent) {\n if (!this.hasOverflowTabs) return;\n\n if (!this.menuOpen) {\n if (e.key === 'ArrowLeft') {\n e.preventDefault();\n this.overflowRovingFocused = false;\n this.focusLastVisibleTab();\n return;\n }\n\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n this.toggleTabMenu({ focusVisible: true });\n }\n return;\n }\n\n if (e.key === 'Escape') {\n e.preventDefault();\n this.menuOpen = false;\n this.menuInitialFocusVisible = false;\n void this.triggerEl?.setFocus?.();\n }\n }\n\n private renderTabList(tabs: BarNavTab[], probe: boolean) {\n return (\n <div\n role=\"tablist\"\n class=\"bar-nav__tab-list\"\n aria-label={this.heading}\n ref={el => {\n if (probe) {\n const next = (el as HTMLElement) ?? null;\n if (next === this.probeTabListEl) return;\n this.probeTabListEl = next;\n if (next) {\n this.intrinsicWidthRetryCount = 0;\n this.tabLayoutPendingFrames = 0;\n this.scheduleOverflowCheck();\n }\n } else {\n this.visibleTabListEl = (el as HTMLElement) ?? null;\n }\n }}\n onKeyDown={probe ? undefined : (e: KeyboardEvent) => this.handleTabKeyDown(e)}\n onFocusin={probe ? undefined : () => {\n this.overflowRovingFocused = false;\n }}\n >\n {tabs.map((tab, index) => {\n if (isTabDivider(tab)) {\n return (\n <div class=\"bar-nav__tab-divider\" key={`divider-${index}`} aria-hidden=\"true\">\n <div class=\"bar-nav__tab-divider-line\" />\n </div>\n );\n }\n\n const isSelected = tab.id === this.effectiveValue;\n return (\n <button\n key={tab.id}\n type=\"button\"\n role=\"tab\"\n data-tab-id={tab.id}\n class={{\n 'bar-nav__tab': true,\n 'bar-nav__tab--selected': isSelected,\n 'ds-control--md': true,\n 'ds-focus-ring-inset': true,\n 'ds-control-inactive': !!tab.isInactive,\n }}\n aria-selected={isSelected ? 'true' : 'false'}\n aria-disabled={tab.isInactive ? 'true' : undefined}\n aria-controls={tab.panelId ?? undefined}\n disabled={tab.isInactive}\n tabIndex={\n !probe && !this.overflowRovingFocused && tab.id === this.focusedTabId\n ? 0\n : -1\n }\n onClick={() => !probe && !tab.isInactive && this.selectTab(tab.id)}\n onFocus={() => {\n if (!probe) this.focusedTabId = tab.id;\n }}\n >\n <span\n class={{\n 'bar-nav__tab-label': true,\n 'bar-nav__tab-label--dot': !!tab.dot,\n }}\n >\n <ds-text as=\"span\" variant=\"text-body-medium\" emphasis={isSelected} color=\"inherit\">\n {tab.label}\n </ds-text>\n {tab.dot && (\n <ds-badge\n class=\"bar-nav__tab-dot\"\n variant=\"dot\"\n hasRing={false}\n label=\"\"\n aria-hidden=\"true\"\n />\n )}\n </span>\n </button>\n );\n })}\n </div>\n );\n }\n\n render() {\n // Section gating only applies when `basePath` is set (SPA section sync).\n // Tabs without a base path must still render — otherwise a single-tab bar\n // (or any non-routed tabs) silently falls through to an empty header.\n const sectionReady =\n this.basePath === '' || this.committedSection === this.basePath;\n const hasTabs =\n sectionReady && this.resolvedTabs.length > 0 && !this.hideTabsForDetailRoute;\n const tabGroupKey = this.basePath || 'no-section';\n const renderedTabs = this.hasOverflowTabs ? this.visibleTabs : this.resolvedTabs;\n\n return (\n <Host>\n <header\n class={{\n 'bar-nav': true,\n 'ds-control--md': true,\n 'ds-chrome-row': true,\n 'ds-chrome-space--md': true,\n 'bar-nav--dashboard': this.navStyle === 'dashboard',\n 'bar-nav--settings': this.navStyle === 'settings',\n 'bar-nav--tabs-collapsed':\n hasTabs && this.hasOverflowTabs,\n }}\n ref={el => {\n this.headerEl = el as HTMLElement;\n if (el && !this.resizeObserver) {\n this.setupOverflowObserver();\n }\n }}\n >\n {hasTabs && (\n <div class=\"bar-nav__tabs-probe\" aria-hidden=\"true\" inert>\n <div key={`probe-${tabGroupKey}`}>\n {this.renderTabList(this.resolvedTabs, true)}\n </div>\n </div>\n )}\n\n {hasTabs && this.tabLayoutCommitted && renderedTabs.length > 0 && (\n <div class=\"bar-nav__left\">\n <div key={`visible-${tabGroupKey}`} class=\"bar-nav__tabs-visible\">\n {this.renderTabList(renderedTabs, false)}\n </div>\n </div>\n )}\n\n {hasTabs && !this.tabLayoutCommitted && (\n <div class=\"bar-nav__tabs-pending\" aria-hidden=\"true\" />\n )}\n\n {!hasTabs && this.heading && (\n <ds-text\n class=\"bar-nav__heading\"\n lineTruncation={1}\n as=\"span\"\n variant=\"text-body-medium\"\n emphasis\n color=\"primary\"\n wrap=\"nowrap\"\n >\n {this.heading}\n </ds-text>\n )}\n\n {hasTabs && this.hasOverflowTabs && (\n <ds-button-unfilled variant=\"icon\"\n class={{\n 'bar-nav__overflow-trigger': true,\n }}\n icon=\"Ellipses\"\n activeFill={false}\n hasBorder={false}\n focusTabIndex={this.overflowRovingFocused ? 0 : -1}\n ref={(el?: HTMLDsButtonUnfilledElement) => {\n this.triggerEl = (el as (HTMLElement & { setFocus?: () => Promise<void> })) ?? null;\n }}\n haspopup=\"menu\"\n expanded={this.menuTriggerActive}\n aria-label={this.moreTabsLabel}\n onDsClick={() => this.toggleTabMenu({ focusVisible: false })}\n onFocusin={this.handleOverflowFocus}\n onFocusout={this.handleOverflowBlur}\n onKeyDown={(e: KeyboardEvent) => this.handleTriggerKeyDown(e)}\n />\n )}\n\n </header>\n\n {hasTabs && this.hasOverflowTabs && (\n <ds-menu\n ref={el => {\n this.menuEl = (el as HTMLDsMenuElement) ?? null;\n }}\n open={this.menuOpen}\n sections={tabsToOverflowMenuSections(this.overflowTabs, this.effectiveValue)}\n side=\"bottom\"\n align=\"end\"\n sideOffset=\"calc(var(--dimension-space-100) + var(--dimension-space-050))\"\n initialFocusVisible={this.menuInitialFocusVisible}\n onDsSelect={(e: Event) => this.handleMenuSelect(e)}\n onDsClose={() => this.handleMenuClose()}\n onDsAfterClose={() => this.handleMenuAfterClose()}\n />\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["deriveBarNavValueFromUrl","path","basePath","tabs","value","hideTabs","startsWith","remainder","slice","length","seg","split","selectableTabs","getSelectableTabs","id","tab","find","t","shouldResyncBarNavProps","resolvedTabs","tabsToMenuSections","selectedId","sections","batch","item","isTabDivider","push","items","label","dot","isSelected","isInactive","tabsToOverflowMenuSections","trimLeadingDividers","tabsOverflowContainer","tabListScrollWidth","containerClientWidth","collapsed","hysteresis","diff","visibleTabCountForWidth","itemWidths","availableWidth","overflowTriggerWidth","itemGap","listExtraWidth","fullWidth","widthForItemCount","availableForTabs","Math","max","count","i","width","trimTrailingDividers","end","start","itemsWidth","reduce","sum","CHROME_TRANSITION_START","CHROME_TRANSITION_END","ChromeTransitionDepth","constructor","this","depth","enter","exit","isActive","ChromeTransitionGate","active","createRafCoalescer","onFrame","rafId","schedule","requestAnimationFrame","cancel","cancelAnimationFrame","readChromeTransitionSource","event","detail","source","readChromeTransitionPhase","phase","barNavCss","BarNav","__stencil_proxyCustomElement","HTMLElement","registerHost","navStyle","currentUrl","moreTabsLabel","urlDerivedValue","hideTabsForDetailRoute","tabsCollapsed","menuOpen","menuTriggerActive","tabLayoutCommitted","visibleTabs","overflowTabs","menuInitialFocusVisible","overflowRovingFocused","focusedTabId","headerEl","triggerEl","menuEl","visibleTabListEl","probeTabListEl","resizeObserver","intrinsicWidthRetryCount","tabLayoutPendingFrames","panelNavTransition","panelToolsTransition","overflowCoalescer","updateTabsCollapsed","chromeTransitionShell","committedSection","pendingSection","onChromeTransitionStart","onChromeTransitionEnd","scheduleOverflowCheck","handleOverflowFocus","handleOverflowBlur","effectiveValue","renderedSelectableTabs","hasOverflowTabs","syncFocusedTabId","preferred","some","first","digestTabsConfig","map","join","resetTabOverflowLayout","onHostPropsChange","applyHostProps","onSelectionChange","syncMenuSections","onMenuOpenChange","open","onTabsCollapsedChange","prevCollapsed","undefined","queueMicrotask","focusVisibleSelectedTab","componentWillLoad","componentDidLoad","syncHostPropsIfNeeded","scheduleDeferredHostPropSync","setupOverflowObserver","bindChromeTransitionListeners","componentDidRender","chromeOverflowPaused","syncMenuAnchor","disconnectedCallback","disconnect","unbindChromeTransitionListeners","shell","el","closest","addEventListener","removeEventListener","syncValueFromUrl","remaining","HOST_PROP_SYNC_BUDGET","tick","ResizeObserver","observe","getLeftZoneAvailableWidth","headerStyle","getComputedStyle","horizontalPadding","parseFloat","paddingLeft","paddingRight","clientWidth","getTabsIntrinsicWidth","scrollWidth","getHeaderGap","style","columnGap","gap","getOverflowTriggerReserveWidth","getBoundingClientRect","getProbeTabMetrics","tabList","children","Array","from","child","childrenWidth","gapWidth","setOverflowTabLayout","nextCollapsed","visibleChanged","overflowChanged","scheduleIntrinsicWidthRetry","INTRINSIC_WIDTH_RETRY_MAX","forceTabLayoutCommit","fallbackCollapsed","metrics","intrinsicWidth","TAB_LAYOUT_COMMIT_MAX_FRAMES","shouldCollapse","OVERFLOW_HYSTERESIS_PX","visibleCount","anchor","handleMenuSelect","e","selectTab","String","handleMenuClose","handleMenuAfterClose","incomingTabs","nextBasePath","sectionChanged","tabsConfigChanged","dsTabChange","emit","querySelector","focus","preventScroll","focusVisibleTab","focusLastVisibleTab","last","reverse","findEnabledVisibleTab","step","index","handleTabKeyDown","targetId","target","getAttribute","focusedId","key","focused","preventDefault","currentIndex","findIndex","nextIndex","setFocus","reversedIndex","toggleTabMenu","options","minWidth","focusVisible","handleTriggerKeyDown","renderTabList","probe","h","role","class","heading","ref","next","onKeyDown","onFocusin","type","panelId","disabled","tabIndex","onClick","onFocus","as","variant","emphasis","color","hasRing","render","sectionReady","hasTabs","tabGroupKey","renderedTabs","Host","inert","lineTruncation","wrap","icon","activeFill","hasBorder","focusTabIndex","haspopup","expanded","onDsClick","onFocusout","side","align","sideOffset","initialFocusVisible","onDsSelect","onDsClose","onDsAfterClose"],"sources":["src/wc/components/BarNav/bar-nav-utils.ts","src/wc/components/BarNav/bar-nav-tabs-menu-utils.ts","src/wc/shell/chrome-transition.ts","src/wc/components/BarNav/BarNav.css?tag=ds-bar-nav&encapsulation=scoped","src/wc/components/BarNav/BarNav.tsx"],"sourcesContent":["import { getSelectableTabs } from '../TabGroup/tab-item-utils';\nimport type { BarNavTab } from './bar-nav-types';\n\nexport interface BarNavUrlState {\n /** Tab id derived from the URL, or empty when none applies. */\n value: string;\n /** When true, tabs should be hidden (e.g. non-tab child routes like detail pages). */\n hideTabs: boolean;\n}\n\n/** Derive BarNav tab selection from `currentUrl` relative to `basePath`.\n * Mirrors motive-webapp-lab `resolveBarNavState` tab-selection semantics. */\nexport function deriveBarNavValueFromUrl(\n path: string,\n basePath: string,\n tabs: BarNavTab[],\n): BarNavUrlState {\n if (!path || !basePath) {\n return { value: '', hideTabs: false };\n }\n\n if (path !== basePath && !path.startsWith(`${basePath}/`)) {\n return { value: '', hideTabs: false };\n }\n\n const remainder = path.slice(basePath.length);\n const seg = remainder.startsWith('/') ? remainder.slice(1).split('/')[0] : '';\n const selectableTabs = getSelectableTabs(tabs);\n\n if (!seg) {\n return { value: selectableTabs[0]?.id ?? '', hideTabs: false };\n }\n\n const tab = selectableTabs.find(t => t.id === seg);\n if (tab) {\n return { value: tab.id, hideTabs: false };\n }\n\n return { value: '', hideTabs: true };\n}\n\n/** True when host array props have data but resolved internal state is still empty. */\nexport function shouldResyncBarNavProps(\n resolvedTabs: BarNavTab[],\n tabs: BarNavTab[],\n): boolean {\n return resolvedTabs.length === 0 && (tabs?.length ?? 0) > 0;\n}\n","import type { MenuItemData, MenuSection } from '../Menu/menu-types';\nimport {\n getSelectableTabs,\n isTabDivider,\n type TabItem,\n type TabItemTab,\n} from '../TabGroup/tab-item-utils';\n\n/** Map BarNav tabs to menu sections, preserving `{ type: 'divider' }` as section breaks. */\nexport function tabsToMenuSections(tabs: TabItem[], selectedId: string): MenuSection[] {\n const sections: MenuSection[] = [];\n let batch: MenuItemData[] = [];\n\n for (const item of tabs) {\n if (isTabDivider(item)) {\n if (batch.length > 0) {\n sections.push({ items: batch });\n batch = [];\n }\n continue;\n }\n\n batch.push({\n label: item.label,\n value: item.id,\n dot: item.dot,\n isSelected: item.id === selectedId,\n isInactive: item.isInactive,\n });\n }\n\n if (batch.length > 0) {\n sections.push({ items: batch });\n }\n\n return sections;\n}\n\nexport function tabsToOverflowMenuSections(tabs: TabItem[], selectedId: string): MenuSection[] {\n return tabsToMenuSections(trimLeadingDividers(tabs), selectedId);\n}\n\nexport function getActiveTab(tabs: TabItem[], selectedId: string): TabItemTab | undefined {\n const selectable = getSelectableTabs(tabs);\n return selectable.find(tab => tab.id === selectedId) ?? selectable[0];\n}\n\nexport function getActiveTabLabel(tabs: TabItem[], selectedId: string): string {\n return getActiveTab(tabs, selectedId)?.label ?? 'Tabs';\n}\n\n/** True when tablist content exceeds the available width (with optional hysteresis). */\nexport function tabsOverflowContainer(\n tabListScrollWidth: number,\n containerClientWidth: number,\n collapsed: boolean,\n hysteresis = 2,\n): boolean {\n const diff = tabListScrollWidth - containerClientWidth;\n if (collapsed) {\n return diff > -hysteresis;\n }\n return diff > hysteresis;\n}\n\nexport function visibleTabCountForWidth(\n itemWidths: number[],\n availableWidth: number,\n overflowTriggerWidth: number,\n itemGap: number,\n listExtraWidth: number,\n): number {\n if (itemWidths.length === 0 || availableWidth <= 0) return 0;\n\n const fullWidth = widthForItemCount(itemWidths, itemWidths.length, itemGap, listExtraWidth);\n if (fullWidth <= availableWidth) return itemWidths.length;\n\n const availableForTabs = Math.max(0, availableWidth - overflowTriggerWidth);\n let count = 0;\n\n for (let i = 1; i <= itemWidths.length; i++) {\n const width = widthForItemCount(itemWidths, i, itemGap, listExtraWidth);\n if (width > availableForTabs) break;\n count = i;\n }\n\n return count;\n}\n\nexport function trimTrailingDividers(tabs: TabItem[]): TabItem[] {\n let end = tabs.length;\n while (end > 0 && isTabDivider(tabs[end - 1])) {\n end -= 1;\n }\n return tabs.slice(0, end);\n}\n\nfunction trimLeadingDividers(tabs: TabItem[]): TabItem[] {\n let start = 0;\n while (start < tabs.length && isTabDivider(tabs[start])) {\n start += 1;\n }\n return tabs.slice(start);\n}\n\nfunction widthForItemCount(\n itemWidths: number[],\n count: number,\n itemGap: number,\n listExtraWidth: number,\n): number {\n if (count <= 0) return 0;\n const itemsWidth = itemWidths.slice(0, count).reduce((sum, width) => sum + width, 0);\n return listExtraWidth + itemsWidth + itemGap * Math.max(0, count - 1);\n}\n","/** Bubbling/composed events — `ds-shell-app` and `ds-bar-nav` coordinate during width motion. */\n\nexport const CHROME_TRANSITION_START = 'dsChromeTransitionStart';\nexport const CHROME_TRANSITION_END = 'dsChromeTransitionEnd';\n\nexport type ChromeTransitionSource = 'panel-nav' | 'panel-tools';\n\nexport interface ChromeTransitionDetail {\n source: ChromeTransitionSource;\n /** Panel-tools drawer motion direction; omitted for panel-nav. */\n phase?: 'opening' | 'closing';\n}\n\n/** Reference-counted gate — used while panel-nav width is transitioning. */\nexport class ChromeTransitionDepth {\n private depth = 0;\n\n enter(): void {\n this.depth += 1;\n }\n\n exit(): void {\n this.depth = Math.max(0, this.depth - 1);\n }\n\n get isActive(): boolean {\n return this.depth > 0;\n }\n}\n\n/** Idempotent gate for one physical chrome surface.\n * Duplicate start notifications still require only one matching end. */\nexport class ChromeTransitionGate {\n private active = false;\n\n enter(): void {\n this.active = true;\n }\n\n exit(): void {\n this.active = false;\n }\n\n get isActive(): boolean {\n return this.active;\n }\n}\n\nexport interface RafCoalescer {\n schedule(): void;\n cancel(): void;\n}\n\n/** Coalesce bursty layout work (ResizeObserver, prop churn) to one callback per frame. */\nexport function createRafCoalescer(onFrame: () => void): RafCoalescer {\n let rafId = 0;\n return {\n schedule() {\n if (rafId !== 0) return;\n rafId = requestAnimationFrame(() => {\n rafId = 0;\n onFrame();\n });\n },\n cancel() {\n if (rafId !== 0) {\n cancelAnimationFrame(rafId);\n rafId = 0;\n }\n },\n };\n}\n\nexport function readChromeTransitionSource(event: Event): ChromeTransitionSource | undefined {\n return (event as CustomEvent<ChromeTransitionDetail>).detail?.source;\n}\n\nexport function readChromeTransitionPhase(event: Event): ChromeTransitionDetail['phase'] {\n return (event as CustomEvent<ChromeTransitionDetail>).detail?.phase;\n}\n","@import '../../utils/control-density.css';\n@import '../../utils/chrome-layout.css';\n@import '../../utils/focus-ring.css';\n@import '../../utils/control-inactive.css';\n\n:host {\n display: block;\n}\n\n.bar-nav {\n position: relative;\n height: var(--dimension-size-600);\n border-bottom: var(--dimension-stroke-width-012) solid var(--_bar-nav-border);\n background-color: var(--_bar-nav-bg);\n color: var(--_bar-nav-fg-primary);\n -webkit-user-select: none;\n user-select: none;\n overflow: hidden;\n transition:\n background-color var(--effect-motion-short-3),\n border-color var(--effect-motion-short-3),\n color var(--effect-motion-short-3);\n isolation: isolate;\n /* Default chrome — app surfaces */\n --_bar-nav-bg: var(--color-background-secondary);\n --_bar-nav-border: var(--color-border-tertiary);\n --_bar-nav-fg-primary: var(--color-foreground-primary);\n --_bar-nav-fg-secondary: var(--color-foreground-secondary);\n --_bar-nav-hover: var(--color-interaction-hover);\n --_bar-nav-pressed: var(--color-interaction-pressed);\n --_bar-nav-focus: var(--color-interaction-focus);\n --_bar-nav-dot: var(--color-foreground-bold-brand);\n --ds-focus-ring-color: var(--_bar-nav-focus);\n}\n\n/* Style slots — same app tokens for now; hook texture/glyph layers later. */\n.bar-nav--dashboard,\n.bar-nav--settings {\n --_bar-nav-bg: var(--color-background-secondary);\n --_bar-nav-border: var(--color-border-tertiary);\n --_bar-nav-fg-primary: var(--color-foreground-primary);\n --_bar-nav-fg-secondary: var(--color-foreground-secondary);\n --_bar-nav-hover: var(--color-interaction-hover);\n --_bar-nav-pressed: var(--color-interaction-pressed);\n --_bar-nav-focus: var(--color-interaction-focus);\n --_bar-nav-dot: var(--color-foreground-bold-brand);\n}\n\n/* Shell-owned chrome (bg + wash) — bar is a transparent frame. */\n:host-context(ds-shell-app:not([gradient-preset='none'])) .bar-nav {\n background-color: transparent;\n}\n\n.bar-nav > :not(.bar-nav__tabs-probe) {\n position: relative;\n z-index: 3;\n}\n\n/* Overflow — keep fitting tabs visible and pin the overflow trigger to the far edge. */\n.bar-nav--tabs-collapsed {\n display: flex;\n gap: var(--dimension-space-100);\n align-items: center;\n}\n\n/* Expanded tabs — consume full header width */\n.bar-nav__left {\n position: relative;\n flex: 1 1 0%;\n min-width: 0;\n width: 0;\n display: flex;\n align-items: center;\n}\n\n.bar-nav__tabs-visible {\n flex: 1;\n min-width: 0;\n width: 100%;\n}\n\n/* Unconstrained width so intrinsic tab row width is measurable while collapsed */\n.bar-nav__tabs-probe {\n position: absolute;\n left: 0;\n top: 0;\n visibility: hidden;\n pointer-events: none;\n overflow: visible;\n width: max-content;\n max-width: none;\n z-index: -1;\n}\n\n.bar-nav__tabs-probe > div {\n width: max-content;\n}\n\n.bar-nav__tab-list {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-050);\n position: relative;\n width: max-content;\n}\n\n.bar-nav__tab {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--ds-control-gap);\n height: var(--ds-control-height);\n min-width: var(--ds-control-height);\n padding: 0 var(--ds-control-padding-inline);\n box-sizing: border-box;\n border: none;\n border-radius: var(--ds-control-radius);\n background-color: transparent;\n color: var(--_bar-nav-fg-secondary);\n cursor: default;\n position: relative;\n flex-shrink: 0;\n -webkit-user-select: none;\n user-select: none;\n transition: color var(--effect-motion-short-2);\n}\n\n.bar-nav__tab::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--ds-control-radius);\n background: transparent;\n pointer-events: none;\n cursor: inherit;\n}\n\n.bar-nav__tab:hover::after {\n background: var(--_bar-nav-hover);\n}\n\n.bar-nav__tab:active::after {\n background: var(--_bar-nav-pressed);\n}\n\n.bar-nav__tab--selected {\n color: var(--_bar-nav-fg-primary);\n}\n\n.bar-nav__tab-label {\n position: relative;\n display: inline-flex;\n align-items: center;\n padding: 0 var(--ds-control-label-inset);\n white-space: nowrap;\n}\n\n.bar-nav__tab-label--dot {\n padding-right: calc(var(--ds-control-label-inset) + var(--ds-control-gap));\n}\n\n.bar-nav__tab-dot {\n position: absolute;\n top: 0;\n right: 0;\n pointer-events: none;\n}\n\n.bar-nav__tab-divider {\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: var(--dimension-space-100);\n height: var(--ds-control-height);\n padding-block: var(--ds-control-padding-inline);\n flex-shrink: 0;\n pointer-events: none;\n}\n\n.bar-nav__tab-divider-line {\n width: var(--dimension-stroke-width-012);\n align-self: stretch;\n background-color: var(--_bar-nav-border);\n}\n\n/* In-flow placeholder while measuring overflow — avoids layout jump; hidden from view/accessibility. */\n.bar-nav__tabs-pending {\n flex: 1;\n min-width: 0;\n height: var(--ds-control-height);\n visibility: hidden;\n pointer-events: none;\n}\n\n/* Overflow trigger — compact icon button aligned to the right edge. */\n.bar-nav__overflow-trigger {\n margin-left: auto;\n --ds-button-unfilled-fg: var(--_bar-nav-fg-secondary);\n --ds-button-unfilled-fg-active: var(--_bar-nav-fg-primary);\n --ds-interaction-hover: var(--_bar-nav-hover);\n --ds-interaction-pressed: var(--_bar-nav-pressed);\n --ds-focus-ring-color: var(--_bar-nav-focus);\n}\n\n/* Fallback heading when no tabs — matches a single (selected) tab so the area\n name shares the tab label's type token, color, height and horizontal inset.\n Inset = tab button padding (space-075, 6px) + label inset (space-025, 2px).\n Color comes from ds-text color=\"primary\"; beat Text's inline-box display. */\nds-text.bar-nav__heading {\n display: inline-flex;\n align-items: center;\n height: var(--ds-control-height);\n padding-inline: calc(var(--ds-control-padding-inline) + var(--ds-control-label-inset));\n -webkit-user-select: none;\n user-select: none;\n}\n","import {\n Component,\n Prop,\n Event,\n EventEmitter,\n Element,\n Watch,\n State,\n h,\n Host,\n} from '@stencil/core';\nimport type { NavChromeStyle } from '../../shell/nav-chrome';\nimport type { MenuItemData } from '../Menu/menu-types';\nimport { getSelectableTabs, isTabDivider, type TabItemTab } from '../TabGroup/tab-item-utils';\nimport type { BarNavTab } from './bar-nav-types';\nimport {\n deriveBarNavValueFromUrl,\n shouldResyncBarNavProps,\n} from './bar-nav-utils';\nimport {\n tabsOverflowContainer,\n tabsToOverflowMenuSections,\n trimTrailingDividers,\n visibleTabCountForWidth,\n} from './bar-nav-tabs-menu-utils';\nimport {\n CHROME_TRANSITION_END,\n CHROME_TRANSITION_START,\n ChromeTransitionGate,\n createRafCoalescer,\n readChromeTransitionSource,\n readChromeTransitionPhase,\n} from '../../shell/chrome-transition';\n\n@Component({\n tag: 'ds-bar-nav',\n styleUrl: 'BarNav.css',\n scoped: true,\n})\nexport class BarNav {\n /** Style slot: `dashboard` or `settings`. Colors match for now. */\n @Prop({ attribute: 'nav-style', reflect: true }) navStyle: NavChromeStyle = 'dashboard';\n\n @Element() el!: HTMLElement;\n\n /**\n * Tab items for the left section.\n * Set via JS property: `el.tabs = [...]`. Replace the array reference to update.\n */\n @Prop() tabs: BarNavTab[] = [];\n\n /** ID of the currently active tab. Overridden when `currentUrl` + `basePath` are set. */\n @Prop({ mutable: true }) value: string = '';\n\n /**\n * Fallback heading shown when no tabs are provided.\n * When tabs are present the heading is hidden.\n */\n @Prop() heading: string | undefined;\n\n /** Section base path (e.g. `/dashboard/safety`). Used with `currentUrl` to derive `value`. */\n @Prop() basePath: string = '';\n\n /** Current route URL. When set with `basePath`, the active tab is derived automatically. */\n @Prop() currentUrl: string = '';\n @Prop() moreTabsLabel: string = 'More tabs';\n\n /** Emitted when the active tab changes. Detail = tab id. */\n @Event() dsTabChange!: EventEmitter<string>;\n\n @State() private resolvedTabs: BarNavTab[] = [];\n @State() private urlDerivedValue: string = '';\n @State() private hideTabsForDetailRoute = false;\n @State() private tabsCollapsed = false;\n @State() private menuOpen = false;\n @State() private menuTriggerActive = false;\n /** When false, defer showing expanded tabs or the collapsed trigger until intrinsic width is measured (avoids a one-frame flash of the full tab row on narrow viewports). */\n @State() private tabLayoutCommitted = false;\n @State() private visibleTabs: BarNavTab[] = [];\n @State() private overflowTabs: BarNavTab[] = [];\n @State() private menuInitialFocusVisible = false;\n @State() private overflowRovingFocused = false;\n @State() private focusedTabId = '';\n\n private static readonly HOST_PROP_SYNC_BUDGET = 8;\n private static readonly INTRINSIC_WIDTH_RETRY_MAX = 3;\n private static readonly TAB_LAYOUT_COMMIT_MAX_FRAMES = 16;\n private static readonly OVERFLOW_HYSTERESIS_PX = 8;\n\n private headerEl: HTMLElement | null = null;\n private triggerEl: (HTMLElement & { setFocus?: () => Promise<void> }) | null = null;\n private menuEl: HTMLDsMenuElement | null = null;\n private visibleTabListEl: HTMLElement | null = null;\n private probeTabListEl: HTMLElement | null = null;\n private resizeObserver: ResizeObserver | null = null;\n private intrinsicWidthRetryCount = 0;\n private tabLayoutPendingFrames = 0;\n private readonly panelNavTransition = new ChromeTransitionGate();\n private readonly panelToolsTransition = new ChromeTransitionGate();\n private readonly overflowCoalescer = createRafCoalescer(() => {\n this.updateTabsCollapsed();\n });\n private chromeTransitionShell: HTMLElement | null = null;\n /** Matches `basePath` once tabs + URL are reconciled for the active section. */\n @State() private committedSection = '';\n /** Section waiting for URL + tabs to catch up after a cross-area navigation. */\n @State() private pendingSection = '';\n\n private get effectiveValue(): string {\n if (this.currentUrl && this.basePath) {\n return this.urlDerivedValue;\n }\n return this.value;\n }\n\n private get renderedSelectableTabs(): TabItemTab[] {\n const tabs = this.hasOverflowTabs ? this.visibleTabs : this.resolvedTabs;\n return getSelectableTabs(tabs);\n }\n\n private get hasOverflowTabs(): boolean {\n return this.tabLayoutCommitted && this.tabsCollapsed && this.overflowTabs.length > 0;\n }\n\n private syncFocusedTabId(preferred: string, tabs: TabItemTab[]) {\n if (tabs.some(tab => tab.id === preferred && !tab.isInactive)) {\n this.focusedTabId = preferred;\n return;\n }\n const first = tabs.find(tab => !tab.isInactive);\n this.focusedTabId = first?.id ?? '';\n }\n\n private digestTabsConfig(tabs: BarNavTab[]): string {\n return tabs.map(t => (isTabDivider(t) ? '|' : t.id)).join(',');\n }\n\n private resetTabOverflowLayout() {\n this.tabLayoutCommitted = false;\n this.tabsCollapsed = false;\n this.menuOpen = false;\n this.menuTriggerActive = false;\n this.menuInitialFocusVisible = false;\n this.intrinsicWidthRetryCount = 0;\n this.tabLayoutPendingFrames = 0;\n this.visibleTabs = [];\n this.overflowTabs = [];\n }\n\n @Watch('tabs')\n @Watch('currentUrl')\n @Watch('basePath')\n onHostPropsChange() {\n this.applyHostProps();\n }\n\n @Watch('value')\n @Watch('urlDerivedValue')\n onSelectionChange() {\n this.syncFocusedTabId(this.effectiveValue, this.renderedSelectableTabs);\n this.syncMenuSections();\n this.scheduleOverflowCheck();\n }\n\n @Watch('menuOpen')\n onMenuOpenChange(open: boolean) {\n if (this.menuEl) {\n this.menuEl.open = open;\n }\n }\n\n @Watch('tabsCollapsed')\n onTabsCollapsedChange(collapsed: boolean, prevCollapsed: boolean | undefined) {\n if (!collapsed) {\n this.menuOpen = false;\n this.menuTriggerActive = false;\n this.menuInitialFocusVisible = false;\n this.menuEl = null;\n }\n this.scheduleOverflowCheck();\n if (collapsed) {\n requestAnimationFrame(() => {\n this.scheduleOverflowCheck();\n });\n }\n if (collapsed || prevCollapsed === undefined || prevCollapsed === collapsed) return;\n requestAnimationFrame(() => this.scheduleOverflowCheck());\n queueMicrotask(() => this.focusVisibleSelectedTab());\n }\n\n componentWillLoad() {\n this.applyHostProps();\n this.syncFocusedTabId(this.effectiveValue, getSelectableTabs(this.resolvedTabs));\n }\n\n componentDidLoad() {\n this.syncHostPropsIfNeeded();\n this.scheduleDeferredHostPropSync();\n this.setupOverflowObserver();\n this.bindChromeTransitionListeners();\n this.scheduleOverflowCheck();\n }\n\n componentDidRender() {\n if (this.chromeOverflowPaused()) {\n this.syncMenuAnchor();\n return;\n }\n this.scheduleOverflowCheck();\n this.syncMenuAnchor();\n }\n\n disconnectedCallback() {\n this.resizeObserver?.disconnect();\n this.resizeObserver = null;\n this.overflowCoalescer.cancel();\n this.unbindChromeTransitionListeners();\n }\n\n private bindChromeTransitionListeners() {\n const shell = this.el.closest<HTMLElement>('ds-shell-app');\n if (!shell) return;\n this.chromeTransitionShell = shell;\n shell.addEventListener(CHROME_TRANSITION_START, this.onChromeTransitionStart);\n shell.addEventListener(CHROME_TRANSITION_END, this.onChromeTransitionEnd);\n }\n\n private unbindChromeTransitionListeners() {\n if (!this.chromeTransitionShell) return;\n this.chromeTransitionShell.removeEventListener(\n CHROME_TRANSITION_START,\n this.onChromeTransitionStart,\n );\n this.chromeTransitionShell.removeEventListener(\n CHROME_TRANSITION_END,\n this.onChromeTransitionEnd,\n );\n this.chromeTransitionShell = null;\n }\n\n private onChromeTransitionStart = (event: Event) => {\n const source = readChromeTransitionSource(event);\n if (source === 'panel-nav') {\n this.panelNavTransition.enter();\n return;\n }\n if (source === 'panel-tools') {\n const phase = readChromeTransitionPhase(event) ?? 'opening';\n if (phase === 'closing') {\n this.panelToolsTransition.enter();\n }\n }\n };\n\n private chromeOverflowPaused(): boolean {\n return this.panelNavTransition.isActive || this.panelToolsTransition.isActive;\n }\n\n private onChromeTransitionEnd = (event: Event) => {\n const source = readChromeTransitionSource(event);\n if (source === 'panel-nav') {\n this.panelNavTransition.exit();\n if (!this.panelNavTransition.isActive) {\n this.scheduleOverflowCheck();\n }\n return;\n }\n if (source === 'panel-tools') {\n this.panelToolsTransition.exit();\n this.scheduleOverflowCheck();\n }\n };\n\n /** Re-resolve props assigned by the host after componentWillLoad (Angular ngAfterViewInit). */\n private syncHostPropsIfNeeded() {\n if (shouldResyncBarNavProps(this.resolvedTabs, this.tabs)) {\n this.applyHostProps();\n } else if (this.currentUrl && this.basePath) {\n this.syncValueFromUrl();\n }\n }\n\n /** Poll across animation frames — host props may land without triggering @Watch. */\n private scheduleDeferredHostPropSync() {\n let remaining = BarNav.HOST_PROP_SYNC_BUDGET;\n const tick = () => {\n this.syncHostPropsIfNeeded();\n if (--remaining > 0) {\n requestAnimationFrame(tick);\n }\n };\n queueMicrotask(tick);\n }\n\n private setupOverflowObserver() {\n if (typeof ResizeObserver === 'undefined' || !this.headerEl) return;\n this.resizeObserver?.disconnect();\n this.resizeObserver = new ResizeObserver(() => {\n if (this.chromeOverflowPaused()) return;\n this.scheduleOverflowCheck();\n });\n this.resizeObserver.observe(this.headerEl);\n }\n\n private scheduleOverflowCheck() {\n if (this.chromeOverflowPaused()) return;\n this.overflowCoalescer.schedule();\n }\n\n /** Width available for the tab row or collapsed trigger. */\n private getLeftZoneAvailableWidth(): number {\n if (!this.headerEl) return 0;\n\n const headerStyle = getComputedStyle(this.headerEl);\n const horizontalPadding =\n (parseFloat(headerStyle.paddingLeft) || 0) + (parseFloat(headerStyle.paddingRight) || 0);\n\n return Math.max(0, this.headerEl.clientWidth - horizontalPadding);\n }\n\n private getTabsIntrinsicWidth(): number {\n return this.probeTabListEl?.scrollWidth ?? 0;\n }\n\n private getHeaderGap(): number {\n if (!this.headerEl) return 0;\n const style = getComputedStyle(this.headerEl);\n return parseFloat(style.columnGap || style.gap) || 0;\n }\n\n private getOverflowTriggerReserveWidth(): number {\n if (!this.triggerEl) {\n return 40;\n }\n return this.triggerEl.getBoundingClientRect().width + this.getHeaderGap();\n }\n\n private getProbeTabMetrics():\n | {\n itemWidths: number[];\n itemGap: number;\n listExtraWidth: number;\n }\n | null {\n const tabList = this.probeTabListEl;\n if (!tabList) return null;\n\n const children = Array.from(tabList.children) as HTMLElement[];\n const itemWidths = children.map(child => child.getBoundingClientRect().width);\n if (itemWidths.length === 0 || itemWidths.some(width => width === 0)) return null;\n\n const style = getComputedStyle(tabList);\n const itemGap = parseFloat(style.columnGap || style.gap) || 0;\n const childrenWidth = itemWidths.reduce((sum, width) => sum + width, 0);\n const gapWidth = itemGap * Math.max(0, itemWidths.length - 1);\n const listExtraWidth = Math.max(0, tabList.scrollWidth - childrenWidth - gapWidth);\n\n return { itemWidths, itemGap, listExtraWidth };\n }\n\n private setOverflowTabLayout(visibleTabs: BarNavTab[], overflowTabs: BarNavTab[]) {\n const nextCollapsed = overflowTabs.length > 0;\n const visibleChanged =\n this.digestTabsConfig(visibleTabs) !== this.digestTabsConfig(this.visibleTabs);\n const overflowChanged =\n this.digestTabsConfig(overflowTabs) !== this.digestTabsConfig(this.overflowTabs);\n\n if (visibleChanged) {\n this.visibleTabs = visibleTabs;\n }\n if (overflowChanged) {\n this.overflowTabs = overflowTabs;\n }\n if (nextCollapsed !== this.tabsCollapsed) {\n this.tabsCollapsed = nextCollapsed;\n if (!nextCollapsed) {\n this.menuOpen = false;\n this.menuTriggerActive = false;\n }\n }\n this.syncFocusedTabId(\n this.effectiveValue,\n getSelectableTabs(nextCollapsed ? visibleTabs : this.resolvedTabs),\n );\n }\n\n private scheduleIntrinsicWidthRetry() {\n if (this.intrinsicWidthRetryCount >= BarNav.INTRINSIC_WIDTH_RETRY_MAX) return;\n this.intrinsicWidthRetryCount++;\n requestAnimationFrame(() => this.scheduleOverflowCheck());\n }\n\n private forceTabLayoutCommit(fallbackCollapsed: boolean) {\n this.intrinsicWidthRetryCount = 0;\n this.tabLayoutPendingFrames = 0;\n this.setOverflowTabLayout(\n fallbackCollapsed ? [] : this.resolvedTabs,\n fallbackCollapsed ? this.resolvedTabs : [],\n );\n this.tabLayoutCommitted = true;\n }\n\n private updateTabsCollapsed() {\n if (!this.headerEl || this.resolvedTabs.length === 0 || this.hideTabsForDetailRoute) {\n if (this.tabsCollapsed) {\n this.setOverflowTabLayout([], []);\n }\n this.intrinsicWidthRetryCount = 0;\n this.tabLayoutPendingFrames = 0;\n this.tabLayoutCommitted = true;\n return;\n }\n\n const metrics = this.getProbeTabMetrics();\n const intrinsicWidth = this.getTabsIntrinsicWidth();\n if (!metrics || intrinsicWidth === 0) {\n this.tabLayoutPendingFrames += 1;\n if (this.intrinsicWidthRetryCount >= BarNav.INTRINSIC_WIDTH_RETRY_MAX) {\n this.forceTabLayoutCommit(false);\n } else if (this.tabLayoutPendingFrames >= BarNav.TAB_LAYOUT_COMMIT_MAX_FRAMES) {\n this.forceTabLayoutCommit(false);\n } else {\n this.scheduleIntrinsicWidthRetry();\n }\n return;\n }\n this.intrinsicWidthRetryCount = 0;\n this.tabLayoutPendingFrames = 0;\n\n const shouldCollapse = tabsOverflowContainer(\n intrinsicWidth,\n this.getLeftZoneAvailableWidth(),\n this.tabsCollapsed,\n BarNav.OVERFLOW_HYSTERESIS_PX,\n );\n\n if (!shouldCollapse) {\n this.setOverflowTabLayout(this.resolvedTabs, []);\n this.tabLayoutCommitted = true;\n return;\n }\n\n const visibleCount = visibleTabCountForWidth(\n metrics.itemWidths,\n this.getLeftZoneAvailableWidth(),\n this.getOverflowTriggerReserveWidth(),\n metrics.itemGap,\n metrics.listExtraWidth,\n );\n const visibleTabs = trimTrailingDividers(this.resolvedTabs.slice(0, visibleCount));\n const overflowTabs = this.resolvedTabs.slice(visibleTabs.length);\n this.setOverflowTabLayout(visibleTabs, overflowTabs);\n this.tabLayoutCommitted = true;\n }\n\n private syncMenuAnchor() {\n if (!this.menuEl || !this.triggerEl || !this.hasOverflowTabs) return;\n this.menuEl.anchor = this.triggerEl;\n this.syncMenuSections();\n }\n\n private handleMenuSelect(e: Event) {\n const detail = (e as CustomEvent<MenuItemData>).detail;\n if (detail?.value !== undefined) {\n this.selectTab(String(detail.value));\n }\n this.menuOpen = false;\n this.menuInitialFocusVisible = false;\n }\n\n private handleMenuClose() {\n this.menuOpen = false;\n this.menuInitialFocusVisible = false;\n }\n\n private handleMenuAfterClose() {\n if (!this.menuOpen) this.menuTriggerActive = false;\n }\n\n /** Batch tabs/basePath/currentUrl updates so URL derivation never runs with a mixed section. */\n private incomingTabs(): BarNavTab[] {\n return this.tabs ?? [];\n }\n\n private applyHostProps() {\n const nextBasePath = this.basePath;\n const sectionChanged =\n nextBasePath !== '' &&\n this.committedSection !== '' &&\n nextBasePath !== this.committedSection;\n\n if (sectionChanged) {\n this.urlDerivedValue = '';\n this.committedSection = '';\n this.pendingSection = nextBasePath;\n this.resolvedTabs = [];\n this.resetTabOverflowLayout();\n return;\n }\n\n if (this.pendingSection) {\n if (!nextBasePath || nextBasePath !== this.pendingSection) {\n return;\n }\n if (!this.currentUrl.startsWith(this.pendingSection)) {\n return;\n }\n const tabs = this.incomingTabs();\n if (tabs.length === 0) {\n return;\n }\n this.pendingSection = '';\n }\n\n const tabs = this.incomingTabs();\n const tabsConfigChanged =\n this.digestTabsConfig(tabs) !== this.digestTabsConfig(this.resolvedTabs);\n\n this.resolvedTabs = tabs;\n this.syncValueFromUrl();\n this.committedSection = nextBasePath;\n if (tabsConfigChanged) {\n this.resetTabOverflowLayout();\n }\n this.scheduleOverflowCheck();\n }\n\n private syncMenuSections() {\n if (!this.menuEl) return;\n this.menuEl.sections = tabsToOverflowMenuSections(this.overflowTabs, this.effectiveValue);\n }\n\n private syncValueFromUrl() {\n const tabs = this.incomingTabs();\n\n if (!this.currentUrl || !this.basePath) {\n this.urlDerivedValue = '';\n this.hideTabsForDetailRoute = false;\n return;\n }\n\n if (!this.currentUrl.startsWith(this.basePath)) {\n this.urlDerivedValue = '';\n this.hideTabsForDetailRoute = false;\n return;\n }\n\n const { value, hideTabs } = deriveBarNavValueFromUrl(\n this.currentUrl,\n this.basePath,\n tabs,\n );\n this.urlDerivedValue = value;\n this.hideTabsForDetailRoute = hideTabs;\n }\n\n private selectTab(id: string) {\n this.value = id;\n this.dsTabChange.emit(id);\n }\n\n /** Move focus to the selected tab in the visible tab group (after expand). */\n private focusVisibleSelectedTab() {\n const tab = this.visibleTabListEl?.querySelector(\n `[data-tab-id=\"${this.effectiveValue}\"]`,\n ) as HTMLElement | null;\n tab?.focus({ preventScroll: true });\n }\n\n private focusVisibleTab(id: string) {\n this.focusedTabId = id;\n const tab = this.visibleTabListEl?.querySelector(\n `[data-tab-id=\"${id}\"]`,\n ) as HTMLElement | null;\n tab?.focus({ preventScroll: true });\n }\n\n private focusLastVisibleTab() {\n const last = [...this.renderedSelectableTabs].reverse().find(tab => !tab.isInactive);\n if (last) this.focusVisibleTab(last.id);\n }\n\n private findEnabledVisibleTab(from: number, step: 1 | -1): number | null {\n const tabs = this.renderedSelectableTabs;\n for (let index = from + step; index >= 0 && index < tabs.length; index += step) {\n if (!tabs[index]?.isInactive) return index;\n }\n return null;\n }\n\n private handleTabKeyDown(e: KeyboardEvent) {\n const tabs = this.renderedSelectableTabs;\n if (!tabs.length) return;\n const targetId = (e.target as HTMLElement | null)?.getAttribute('data-tab-id');\n const focusedId = targetId ?? this.focusedTabId;\n\n if (e.key === 'Enter' || e.key === ' ') {\n const focused = tabs.find(tab => tab.id === focusedId);\n if (!focused || focused.isInactive) return;\n e.preventDefault();\n this.selectTab(focused.id);\n return;\n }\n\n const currentIndex = tabs.findIndex(tab => tab.id === focusedId);\n if (currentIndex < 0) return;\n\n let nextIndex: number | null;\n if (e.key === 'ArrowRight') {\n nextIndex = this.findEnabledVisibleTab(currentIndex, 1);\n if (nextIndex === null && this.hasOverflowTabs) {\n e.preventDefault();\n this.overflowRovingFocused = true;\n void this.triggerEl?.setFocus?.();\n return;\n }\n } else if (e.key === 'ArrowLeft') {\n nextIndex = this.findEnabledVisibleTab(currentIndex, -1);\n } else if (e.key === 'Home') {\n nextIndex = tabs.findIndex(tab => !tab.isInactive);\n } else if (e.key === 'End') {\n const reversedIndex = [...tabs].reverse().findIndex(tab => !tab.isInactive);\n nextIndex = reversedIndex < 0 ? null : tabs.length - 1 - reversedIndex;\n } else {\n return;\n }\n\n if (nextIndex === null || nextIndex < 0 || nextIndex === currentIndex) return;\n e.preventDefault();\n this.focusVisibleTab(tabs[nextIndex].id);\n }\n\n private toggleTabMenu(options?: { focusVisible?: boolean }) {\n if (this.menuOpen) {\n this.menuOpen = false;\n this.menuInitialFocusVisible = false;\n return;\n }\n\n if (this.menuEl && this.triggerEl) {\n this.menuEl.anchor = this.triggerEl;\n this.menuEl.minWidth = '';\n this.syncMenuSections();\n }\n\n this.menuInitialFocusVisible = options?.focusVisible ?? false;\n this.menuTriggerActive = true;\n this.menuOpen = true;\n }\n\n private handleOverflowFocus = () => {\n this.overflowRovingFocused = true;\n };\n\n private handleOverflowBlur = () => {\n this.overflowRovingFocused = false;\n };\n\n private handleTriggerKeyDown(e: KeyboardEvent) {\n if (!this.hasOverflowTabs) return;\n\n if (!this.menuOpen) {\n if (e.key === 'ArrowLeft') {\n e.preventDefault();\n this.overflowRovingFocused = false;\n this.focusLastVisibleTab();\n return;\n }\n\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n this.toggleTabMenu({ focusVisible: true });\n }\n return;\n }\n\n if (e.key === 'Escape') {\n e.preventDefault();\n this.menuOpen = false;\n this.menuInitialFocusVisible = false;\n void this.triggerEl?.setFocus?.();\n }\n }\n\n private renderTabList(tabs: BarNavTab[], probe: boolean) {\n return (\n <div\n role=\"tablist\"\n class=\"bar-nav__tab-list\"\n aria-label={this.heading}\n ref={el => {\n if (probe) {\n const next = (el as HTMLElement) ?? null;\n if (next === this.probeTabListEl) return;\n this.probeTabListEl = next;\n if (next) {\n this.intrinsicWidthRetryCount = 0;\n this.tabLayoutPendingFrames = 0;\n this.scheduleOverflowCheck();\n }\n } else {\n this.visibleTabListEl = (el as HTMLElement) ?? null;\n }\n }}\n onKeyDown={probe ? undefined : (e: KeyboardEvent) => this.handleTabKeyDown(e)}\n onFocusin={probe ? undefined : () => {\n this.overflowRovingFocused = false;\n }}\n >\n {tabs.map((tab, index) => {\n if (isTabDivider(tab)) {\n return (\n <div class=\"bar-nav__tab-divider\" key={`divider-${index}`} aria-hidden=\"true\">\n <div class=\"bar-nav__tab-divider-line\" />\n </div>\n );\n }\n\n const isSelected = tab.id === this.effectiveValue;\n return (\n <button\n key={tab.id}\n type=\"button\"\n role=\"tab\"\n data-tab-id={tab.id}\n class={{\n 'bar-nav__tab': true,\n 'bar-nav__tab--selected': isSelected,\n 'ds-control--md': true,\n 'ds-focus-ring-inset': true,\n 'ds-control-inactive': !!tab.isInactive,\n }}\n aria-selected={isSelected ? 'true' : 'false'}\n aria-disabled={tab.isInactive ? 'true' : undefined}\n aria-controls={tab.panelId ?? undefined}\n disabled={tab.isInactive}\n tabIndex={\n !probe && !this.overflowRovingFocused && tab.id === this.focusedTabId\n ? 0\n : -1\n }\n onClick={() => !probe && !tab.isInactive && this.selectTab(tab.id)}\n onFocus={() => {\n if (!probe) this.focusedTabId = tab.id;\n }}\n >\n <span\n class={{\n 'bar-nav__tab-label': true,\n 'bar-nav__tab-label--dot': !!tab.dot,\n }}\n >\n <ds-text as=\"span\" variant=\"text-body-medium\" emphasis={isSelected} color=\"inherit\">\n {tab.label}\n </ds-text>\n {tab.dot && (\n <ds-badge\n class=\"bar-nav__tab-dot\"\n variant=\"dot\"\n hasRing={false}\n label=\"\"\n aria-hidden=\"true\"\n />\n )}\n </span>\n </button>\n );\n })}\n </div>\n );\n }\n\n render() {\n // Section gating only applies when `basePath` is set (SPA section sync).\n // Tabs without a base path must still render — otherwise a single-tab bar\n // (or any non-routed tabs) silently falls through to an empty header.\n const sectionReady =\n this.basePath === '' || this.committedSection === this.basePath;\n const hasTabs =\n sectionReady && this.resolvedTabs.length > 0 && !this.hideTabsForDetailRoute;\n const tabGroupKey = this.basePath || 'no-section';\n const renderedTabs = this.hasOverflowTabs ? this.visibleTabs : this.resolvedTabs;\n\n return (\n <Host>\n <header\n class={{\n 'bar-nav': true,\n 'ds-control--md': true,\n 'ds-chrome-row': true,\n 'ds-chrome-space--md': true,\n 'bar-nav--dashboard': this.navStyle === 'dashboard',\n 'bar-nav--settings': this.navStyle === 'settings',\n 'bar-nav--tabs-collapsed':\n hasTabs && this.hasOverflowTabs,\n }}\n ref={el => {\n this.headerEl = el as HTMLElement;\n if (el && !this.resizeObserver) {\n this.setupOverflowObserver();\n }\n }}\n >\n {hasTabs && (\n <div class=\"bar-nav__tabs-probe\" aria-hidden=\"true\" inert>\n <div key={`probe-${tabGroupKey}`}>\n {this.renderTabList(this.resolvedTabs, true)}\n </div>\n </div>\n )}\n\n {hasTabs && this.tabLayoutCommitted && renderedTabs.length > 0 && (\n <div class=\"bar-nav__left\">\n <div key={`visible-${tabGroupKey}`} class=\"bar-nav__tabs-visible\">\n {this.renderTabList(renderedTabs, false)}\n </div>\n </div>\n )}\n\n {hasTabs && !this.tabLayoutCommitted && (\n <div class=\"bar-nav__tabs-pending\" aria-hidden=\"true\" />\n )}\n\n {!hasTabs && this.heading && (\n <ds-text\n class=\"bar-nav__heading\"\n lineTruncation={1}\n as=\"span\"\n variant=\"text-body-medium\"\n emphasis\n color=\"primary\"\n wrap=\"nowrap\"\n >\n {this.heading}\n </ds-text>\n )}\n\n {hasTabs && this.hasOverflowTabs && (\n <ds-button-unfilled variant=\"icon\"\n class={{\n 'bar-nav__overflow-trigger': true,\n }}\n icon=\"Ellipses\"\n activeFill={false}\n hasBorder={false}\n focusTabIndex={this.overflowRovingFocused ? 0 : -1}\n ref={(el?: HTMLDsButtonUnfilledElement) => {\n this.triggerEl = (el as (HTMLElement & { setFocus?: () => Promise<void> })) ?? null;\n }}\n haspopup=\"menu\"\n expanded={this.menuTriggerActive}\n aria-label={this.moreTabsLabel}\n onDsClick={() => this.toggleTabMenu({ focusVisible: false })}\n onFocusin={this.handleOverflowFocus}\n onFocusout={this.handleOverflowBlur}\n onKeyDown={(e: KeyboardEvent) => this.handleTriggerKeyDown(e)}\n />\n )}\n\n </header>\n\n {hasTabs && this.hasOverflowTabs && (\n <ds-menu\n ref={el => {\n this.menuEl = (el as HTMLDsMenuElement) ?? null;\n }}\n open={this.menuOpen}\n sections={tabsToOverflowMenuSections(this.overflowTabs, this.effectiveValue)}\n side=\"bottom\"\n align=\"end\"\n sideOffset=\"calc(var(--dimension-space-100) + var(--dimension-space-050))\"\n initialFocusVisible={this.menuInitialFocusVisible}\n onDsSelect={(e: Event) => this.handleMenuSelect(e)}\n onDsClose={() => this.handleMenuClose()}\n onDsAfterClose={() => this.handleMenuAfterClose()}\n />\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{p as e,H as s,h as r,a as o,t as a}from"./index.js";import{d}from"./p-BsoqsbBh.js";import{d as t}from"./p-DsiCDzoF.js";import{d as n}from"./p-DeQwkbT1.js";import{d as i}from"./p-BAfG3M8z.js";import{d as c}from"./p-Ca-I2UnB.js";import{d as h}from"./p-Ay1AX7Ql.js";import{d as m}from"./p-ohsLFap_.js";import{r as l}from"./p-C-vRkDyn.js";const p=()=>`.sc-ds-markdown:where(.ds-prose){display:block;box-sizing:border-box;max-inline-size:100%;min-inline-size:0;color:inherit;overflow-wrap:anywhere}.sc-ds-markdown:where(.ds-prose) :where(p,ul.sc-ds-markdown,ol.sc-ds-markdown,dl.sc-ds-markdown,blockquote.sc-ds-markdown,figure.sc-ds-markdown,figcaption.sc-ds-markdown,table).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin:0;color:inherit;font-family:var(--typography-font-family);font-size:var(--typography-fontsize-md);font-weight:var(--typography-weight-regular);line-height:var(--typography-lineheight-md);letter-spacing:var(--typography-letterspacing-negative-half)}.sc-ds-markdown:where(.ds-prose) :where(h1,h2.sc-ds-markdown,h3.sc-ds-markdown,h4.sc-ds-markdown,h5.sc-ds-markdown,h6).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin:0;color:var(--color-foreground-primary);font-family:var(--typography-font-family);font-weight:var(--typography-weight-semibold)}.sc-ds-markdown:where(.ds-prose) :where(h1,h2).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{font-size:var(--typography-fontsize-xl);line-height:var(--typography-lineheight-xl);letter-spacing:var(--typography-letterspacing-negative-double)}.sc-ds-markdown:where(.ds-prose) :where(h3,h4).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{font-size:var(--typography-fontsize-lg);line-height:var(--typography-lineheight-lg);letter-spacing:var(--typography-letterspacing-negative)}.sc-ds-markdown:where(.ds-prose) :where(h5,h6).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{font-size:var(--typography-fontsize-md);line-height:var(--typography-lineheight-md);letter-spacing:var(--typography-letterspacing-negative)}.sc-ds-markdown:where(.ds-prose)>.sc-ds-markdown:where(*+*){margin-block-start:var(--dimension-space-150)}.sc-ds-markdown:where(.ds-prose)>:where(*)+:where(h1,h2.sc-ds-markdown,h3.sc-ds-markdown,h4.sc-ds-markdown,h5.sc-ds-markdown,h6).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-block-start:var(--dimension-space-200)}.sc-ds-markdown:where(.ds-prose)>:where(h1,h2.sc-ds-markdown,h3.sc-ds-markdown,h4.sc-ds-markdown,h5.sc-ds-markdown,h6).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown+.sc-ds-markdown:where(*){margin-block-start:var(--dimension-space-100)}.sc-ds-markdown:where(.ds-prose) :where(blockquote,li.sc-ds-markdown,dd)>.sc-ds-markdown:where(*+*):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-block-start:var(--dimension-space-050)}.sc-ds-markdown:where(.ds-prose) :where(li+li.sc-ds-markdown,dt+dd).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-block-start:var(--dimension-space-050)}.sc-ds-markdown:where(.ds-prose) :where(ul,ol).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{padding-inline-start:var(--dimension-space-300)}.sc-ds-markdown:where(.ds-prose) :where(li>ul.sc-ds-markdown,li>ol).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-block-start:var(--dimension-space-050)}.sc-ds-markdown:where(.ds-prose) :where(li>input[type='checkbox']):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-inline-end:var(--dimension-space-050)}.sc-ds-markdown:where(.ds-prose) :where(blockquote):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{padding-inline-start:var(--dimension-space-150);border-inline-start:var(--dimension-stroke-width-025) solid var(--color-border-secondary);color:var(--color-foreground-secondary)}.sc-ds-markdown:where(.ds-prose) :where(strong,b).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{font-weight:var(--typography-weight-medium)}.sc-ds-markdown:where(.ds-prose) :where(h1,h2.sc-ds-markdown,h3.sc-ds-markdown,h4.sc-ds-markdown,h5.sc-ds-markdown,h6) .sc-ds-markdown:where(strong,b).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{font-weight:inherit}.sc-ds-markdown:where(.ds-prose) :where(a):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{color:var(--color-foreground-brand);text-decoration:underline;text-decoration-color:var(--color-foreground-tertiary)}.sc-ds-markdown:where(.ds-prose) :where(code):not(:where(pre code.sc-ds-markdown,[data-ds-prose='off'].sc-ds-markdown,[data-ds-prose='off'] *)).sc-ds-markdown{padding:var(--dimension-space-012) var(--dimension-space-025);border-radius:var(--dimension-radius-025);background:var(--color-background-secondary);font-family:var(--typography-fontfamily-mono);font-size:var(--typography-fontsize-sm);line-height:var(--typography-lineheight-sm);letter-spacing:var(--typography-letterspacing-none)}.sc-ds-markdown:where(.ds-prose) :where(pre):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{box-sizing:border-box;max-inline-size:100%;min-inline-size:0;margin:0;padding:var(--dimension-space-150);overflow:auto;border-radius:var(--dimension-radius-050);background:var(--color-background-strong-neutral);color:var(--color-foreground-faint-neutral);font-family:var(--typography-fontfamily-mono);font-size:var(--typography-fontsize-sm);line-height:var(--typography-lineheight-sm);letter-spacing:var(--typography-letterspacing-none);tab-size:2}.sc-ds-markdown:where(.ds-prose) :where(pre code):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{padding:0;background:transparent;color:inherit;font:inherit;letter-spacing:inherit;white-space:pre}.sc-ds-markdown:where(.ds-prose) :where(hr):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin:0;border:0;border-block-start:var(--dimension-stroke-width-012) solid var(--color-border-tertiary)}.sc-ds-markdown:where(.ds-prose__table-scroll){box-sizing:border-box;max-inline-size:100%;min-inline-size:0;overflow-x:auto}.sc-ds-markdown:where(.ds-prose) :where(table):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{inline-size:100%;border-collapse:collapse}.sc-ds-markdown:where(.ds-prose) :where(th,td).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{padding:var(--dimension-space-075);border:var(--dimension-stroke-width-012) solid var(--color-border-tertiary);text-align:start;vertical-align:top;overflow-wrap:anywhere}.sc-ds-markdown:where(.ds-prose) :where(th):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{color:var(--color-foreground-primary);font-weight:var(--typography-weight-medium)}.sc-ds-markdown:where(.ds-prose) :where(img,video.sc-ds-markdown,svg).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{max-inline-size:100%;block-size:auto}.sc-ds-markdown:where(.ds-prose) :where(figcaption):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-block-start:var(--dimension-space-050);color:var(--color-foreground-secondary);font-size:var(--typography-fontsize-sm);line-height:var(--typography-lineheight-sm);letter-spacing:var(--typography-letterspacing-none)}.sc-ds-markdown-h{display:block;min-width:0;color:inherit;box-sizing:border-box;-webkit-user-select:text;user-select:text}`;let w;function f(){w??(w=Promise.all([import("./p-BjtXYFhw.js"),import("./p-DVsje4AY.js"),import("./p-gidVv1FX.js")]).then((([e,s,r])=>({fromMarkdown:e.fromMarkdown,gfmFromMarkdown:s.gfmFromMarkdown,gfm:r.gfm}))));return w}const k=e(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.content="";this.streaming=false;this.tree=null;this.parseRevision=0}componentWillLoad(){if(typeof document!=="undefined")return this.parse()}disconnectedCallback(){this.parseRevision+=1;if(this.parseFrame&&typeof cancelAnimationFrame==="function"){cancelAnimationFrame(this.parseFrame)}}scheduleParse(){if(typeof requestAnimationFrame!=="function")return;if(this.parseFrame)cancelAnimationFrame(this.parseFrame);this.parseFrame=requestAnimationFrame((()=>{this.parseFrame=undefined;void this.parse()}))}async parse(){const e=++this.parseRevision;try{const{fromMarkdown:s,gfmFromMarkdown:r,gfm:o}=await f();const a=s(this.content,{extensions:[o()],mdastExtensions:[r()]});if(e===this.parseRevision)this.tree=a}catch{if(e===this.parseRevision)this.tree=null}}children(e){if(!("children"in e))return[];return e.children.map((e=>this.renderNode(e)))}renderNode(e){switch(e.type){case"root":return this.children(e);case"text":return r("span",{class:"markdown__text"},e.value);case"paragraph":return r("p",{class:"markdown__paragraph"},this.children(e));case"heading":{const s=`h${e.depth}`;return r(s,{class:"markdown__heading"},this.children(e))}case"strong":return r("strong",{class:"markdown__strong"},this.children(e));case"emphasis":return r("em",{class:"markdown__emphasis"},this.children(e));case"delete":return r("del",{class:"markdown__delete"},this.children(e));case"blockquote":return r("blockquote",{class:"markdown__blockquote"},this.children(e));case"break":return r("br",{class:"markdown__break"});case"thematicBreak":return r("hr",{class:"markdown__thematic-break"});case"inlineCode":return r("code",{class:"markdown__inline-code"},e.value);case"code":return r("ds-code-block",{class:"markdown__code-block","data-ds-prose":"off",code:e.value,language:e.lang??"",filename:e.meta??""});case"link":{const s=l(e.url,{protocols:["http:","https:","mailto:"]});return s?r("a",{class:"markdown__link",href:s,target:"_blank",rel:"noopener noreferrer"},this.children(e)):this.children(e)}case"list":{const s=e.ordered?"ol":"ul";return r(s,{class:"markdown__list",start:e.ordered&&e.start?e.start:undefined},this.children(e))}case"listItem":return r("li",{class:"markdown__list-item"},typeof e.checked==="boolean"?r("input",{class:"markdown__task-indicator",type:"checkbox",checked:e.checked,disabled:true,"aria-hidden":"true",tabIndex:-1}):null,this.children(e));case"table":{const[s,...o]=e.children;return r("div",{class:"markdown__table-wrap ds-prose__table-scroll",tabIndex:0},r("table",{class:"markdown__table"},s?r("thead",{class:"markdown__table-head"},r("tr",{class:"markdown__table-row"},s.children.map((e=>r("th",{class:"markdown__table-heading",scope:"col"},this.children(e)))))):null,r("tbody",{class:"markdown__table-body"},o.map((e=>this.renderNode(e))))))}case"tableRow":return r("tr",{class:"markdown__table-row"},this.children(e));case"tableCell":return r("td",{class:"markdown__table-cell"},this.children(e));case"image":{const s=l(e.url,{protocols:["http:","https:","mailto:"]});return s?r("a",{class:"markdown__image-link",href:s,target:"_blank",rel:"noopener noreferrer"},e.alt||"View image"):e.alt||null}case"html":case"definition":case"footnoteDefinition":return null;case"footnoteReference":return r("sup",{class:"markdown__footnote"},e.label);default:return this.children(e)}}render(){return r(o,{key:"586496a54c061a107376680e12cf6b51dc664355","aria-busy":this.streaming?"true":undefined},r("div",{key:"25963d2274fbcbc02f7f37d390ff39ac65900a49",class:"markdown ds-prose"},this.tree?this.renderNode(this.tree):r("p",{class:"markdown__paragraph"},r("span",{class:"markdown__text"},this.content))))}static get watchers(){return{content:[{scheduleParse:0}]}}static get style(){return p()}},[2,"ds-markdown",{content:[1],streaming:[4],tree:[32]},undefined,{content:[{scheduleParse:0}]}]);function g(){if(typeof customElements==="undefined"){return}const e=["ds-markdown","ds-badge","ds-button-unfilled","ds-code-block","ds-icon","ds-loader","ds-text","ds-tooltip"];e.forEach((e=>{switch(e){case"ds-markdown":if(!customElements.get(a(e))){customElements.define(a(e),k)}break;case"ds-badge":if(!customElements.get(a(e))){d()}break;case"ds-button-unfilled":if(!customElements.get(a(e))){t()}break;case"ds-code-block":if(!customElements.get(a(e))){n()}break;case"ds-icon":if(!customElements.get(a(e))){i()}break;case"ds-loader":if(!customElements.get(a(e))){c()}break;case"ds-text":if(!customElements.get(a(e))){h()}break;case"ds-tooltip":if(!customElements.get(a(e))){m()}break}}))}g();export{k as M,g as d};
2
- //# sourceMappingURL=p-CTTnM7cE.js.map
1
+ import{p as e,H as s,h as r,a as o,t as a}from"./index.js";import{d}from"./p-BsoqsbBh.js";import{d as t}from"./p-eAfNzlMa.js";import{d as n}from"./p-CreGah0j.js";import{d as i}from"./p-BAfG3M8z.js";import{d as c}from"./p-Ca-I2UnB.js";import{d as h}from"./p-Ay1AX7Ql.js";import{d as m}from"./p-ohsLFap_.js";import{r as l}from"./p-C-vRkDyn.js";const p=()=>`.sc-ds-markdown:where(.ds-prose){display:block;box-sizing:border-box;max-inline-size:100%;min-inline-size:0;color:inherit;overflow-wrap:anywhere}.sc-ds-markdown:where(.ds-prose) :where(p,ul.sc-ds-markdown,ol.sc-ds-markdown,dl.sc-ds-markdown,blockquote.sc-ds-markdown,figure.sc-ds-markdown,figcaption.sc-ds-markdown,table).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin:0;color:inherit;font-family:var(--typography-font-family);font-size:var(--typography-fontsize-md);font-weight:var(--typography-weight-regular);line-height:var(--typography-lineheight-md);letter-spacing:var(--typography-letterspacing-negative-half)}.sc-ds-markdown:where(.ds-prose) :where(h1,h2.sc-ds-markdown,h3.sc-ds-markdown,h4.sc-ds-markdown,h5.sc-ds-markdown,h6).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin:0;color:var(--color-foreground-primary);font-family:var(--typography-font-family);font-weight:var(--typography-weight-semibold)}.sc-ds-markdown:where(.ds-prose) :where(h1,h2).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{font-size:var(--typography-fontsize-xl);line-height:var(--typography-lineheight-xl);letter-spacing:var(--typography-letterspacing-negative-double)}.sc-ds-markdown:where(.ds-prose) :where(h3,h4).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{font-size:var(--typography-fontsize-lg);line-height:var(--typography-lineheight-lg);letter-spacing:var(--typography-letterspacing-negative)}.sc-ds-markdown:where(.ds-prose) :where(h5,h6).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{font-size:var(--typography-fontsize-md);line-height:var(--typography-lineheight-md);letter-spacing:var(--typography-letterspacing-negative)}.sc-ds-markdown:where(.ds-prose)>.sc-ds-markdown:where(*+*){margin-block-start:var(--dimension-space-150)}.sc-ds-markdown:where(.ds-prose)>:where(*)+:where(h1,h2.sc-ds-markdown,h3.sc-ds-markdown,h4.sc-ds-markdown,h5.sc-ds-markdown,h6).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-block-start:var(--dimension-space-200)}.sc-ds-markdown:where(.ds-prose)>:where(h1,h2.sc-ds-markdown,h3.sc-ds-markdown,h4.sc-ds-markdown,h5.sc-ds-markdown,h6).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown+.sc-ds-markdown:where(*){margin-block-start:var(--dimension-space-100)}.sc-ds-markdown:where(.ds-prose) :where(blockquote,li.sc-ds-markdown,dd)>.sc-ds-markdown:where(*+*):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-block-start:var(--dimension-space-050)}.sc-ds-markdown:where(.ds-prose) :where(li+li.sc-ds-markdown,dt+dd).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-block-start:var(--dimension-space-050)}.sc-ds-markdown:where(.ds-prose) :where(ul,ol).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{padding-inline-start:var(--dimension-space-300)}.sc-ds-markdown:where(.ds-prose) :where(li>ul.sc-ds-markdown,li>ol).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-block-start:var(--dimension-space-050)}.sc-ds-markdown:where(.ds-prose) :where(li>input[type='checkbox']):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-inline-end:var(--dimension-space-050)}.sc-ds-markdown:where(.ds-prose) :where(blockquote):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{padding-inline-start:var(--dimension-space-150);border-inline-start:var(--dimension-stroke-width-025) solid var(--color-border-secondary);color:var(--color-foreground-secondary)}.sc-ds-markdown:where(.ds-prose) :where(strong,b).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{font-weight:var(--typography-weight-medium)}.sc-ds-markdown:where(.ds-prose) :where(h1,h2.sc-ds-markdown,h3.sc-ds-markdown,h4.sc-ds-markdown,h5.sc-ds-markdown,h6) .sc-ds-markdown:where(strong,b).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{font-weight:inherit}.sc-ds-markdown:where(.ds-prose) :where(a):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{color:var(--color-foreground-brand);text-decoration:underline;text-decoration-color:var(--color-foreground-tertiary)}.sc-ds-markdown:where(.ds-prose) :where(code):not(:where(pre code.sc-ds-markdown,[data-ds-prose='off'].sc-ds-markdown,[data-ds-prose='off'] *)).sc-ds-markdown{padding:var(--dimension-space-012) var(--dimension-space-025);border-radius:var(--dimension-radius-025);background:var(--color-background-secondary);font-family:var(--typography-fontfamily-mono);font-size:var(--typography-fontsize-sm);line-height:var(--typography-lineheight-sm);letter-spacing:var(--typography-letterspacing-none)}.sc-ds-markdown:where(.ds-prose) :where(pre):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{box-sizing:border-box;max-inline-size:100%;min-inline-size:0;margin:0;padding:var(--dimension-space-150);overflow:auto;border-radius:var(--dimension-radius-050);background:var(--color-background-strong-neutral);color:var(--color-foreground-faint-neutral);font-family:var(--typography-fontfamily-mono);font-size:var(--typography-fontsize-sm);line-height:var(--typography-lineheight-sm);letter-spacing:var(--typography-letterspacing-none);tab-size:2}.sc-ds-markdown:where(.ds-prose) :where(pre code):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{padding:0;background:transparent;color:inherit;font:inherit;letter-spacing:inherit;white-space:pre}.sc-ds-markdown:where(.ds-prose) :where(hr):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin:0;border:0;border-block-start:var(--dimension-stroke-width-012) solid var(--color-border-tertiary)}.sc-ds-markdown:where(.ds-prose__table-scroll){box-sizing:border-box;max-inline-size:100%;min-inline-size:0;overflow-x:auto}.sc-ds-markdown:where(.ds-prose) :where(table):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{inline-size:100%;border-collapse:collapse}.sc-ds-markdown:where(.ds-prose) :where(th,td).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{padding:var(--dimension-space-075);border:var(--dimension-stroke-width-012) solid var(--color-border-tertiary);text-align:start;vertical-align:top;overflow-wrap:anywhere}.sc-ds-markdown:where(.ds-prose) :where(th):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{color:var(--color-foreground-primary);font-weight:var(--typography-weight-medium)}.sc-ds-markdown:where(.ds-prose) :where(img,video.sc-ds-markdown,svg).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{max-inline-size:100%;block-size:auto}.sc-ds-markdown:where(.ds-prose) :where(figcaption):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-block-start:var(--dimension-space-050);color:var(--color-foreground-secondary);font-size:var(--typography-fontsize-sm);line-height:var(--typography-lineheight-sm);letter-spacing:var(--typography-letterspacing-none)}.sc-ds-markdown-h{display:block;min-width:0;color:inherit;box-sizing:border-box;-webkit-user-select:text;user-select:text}`;let w;function f(){w??(w=Promise.all([import("./p-BjtXYFhw.js"),import("./p-DVsje4AY.js"),import("./p-gidVv1FX.js")]).then((([e,s,r])=>({fromMarkdown:e.fromMarkdown,gfmFromMarkdown:s.gfmFromMarkdown,gfm:r.gfm}))));return w}const k=e(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.content="";this.streaming=false;this.tree=null;this.parseRevision=0}componentWillLoad(){if(typeof document!=="undefined")return this.parse()}disconnectedCallback(){this.parseRevision+=1;if(this.parseFrame&&typeof cancelAnimationFrame==="function"){cancelAnimationFrame(this.parseFrame)}}scheduleParse(){if(typeof requestAnimationFrame!=="function")return;if(this.parseFrame)cancelAnimationFrame(this.parseFrame);this.parseFrame=requestAnimationFrame((()=>{this.parseFrame=undefined;void this.parse()}))}async parse(){const e=++this.parseRevision;try{const{fromMarkdown:s,gfmFromMarkdown:r,gfm:o}=await f();const a=s(this.content,{extensions:[o()],mdastExtensions:[r()]});if(e===this.parseRevision)this.tree=a}catch{if(e===this.parseRevision)this.tree=null}}children(e){if(!("children"in e))return[];return e.children.map((e=>this.renderNode(e)))}renderNode(e){switch(e.type){case"root":return this.children(e);case"text":return r("span",{class:"markdown__text"},e.value);case"paragraph":return r("p",{class:"markdown__paragraph"},this.children(e));case"heading":{const s=`h${e.depth}`;return r(s,{class:"markdown__heading"},this.children(e))}case"strong":return r("strong",{class:"markdown__strong"},this.children(e));case"emphasis":return r("em",{class:"markdown__emphasis"},this.children(e));case"delete":return r("del",{class:"markdown__delete"},this.children(e));case"blockquote":return r("blockquote",{class:"markdown__blockquote"},this.children(e));case"break":return r("br",{class:"markdown__break"});case"thematicBreak":return r("hr",{class:"markdown__thematic-break"});case"inlineCode":return r("code",{class:"markdown__inline-code"},e.value);case"code":return r("ds-code-block",{class:"markdown__code-block","data-ds-prose":"off",code:e.value,language:e.lang??"",filename:e.meta??""});case"link":{const s=l(e.url,{protocols:["http:","https:","mailto:"]});return s?r("a",{class:"markdown__link",href:s,target:"_blank",rel:"noopener noreferrer"},this.children(e)):this.children(e)}case"list":{const s=e.ordered?"ol":"ul";return r(s,{class:"markdown__list",start:e.ordered&&e.start?e.start:undefined},this.children(e))}case"listItem":return r("li",{class:"markdown__list-item"},typeof e.checked==="boolean"?r("input",{class:"markdown__task-indicator",type:"checkbox",checked:e.checked,disabled:true,"aria-hidden":"true",tabIndex:-1}):null,this.children(e));case"table":{const[s,...o]=e.children;return r("div",{class:"markdown__table-wrap ds-prose__table-scroll",tabIndex:0},r("table",{class:"markdown__table"},s?r("thead",{class:"markdown__table-head"},r("tr",{class:"markdown__table-row"},s.children.map((e=>r("th",{class:"markdown__table-heading",scope:"col"},this.children(e)))))):null,r("tbody",{class:"markdown__table-body"},o.map((e=>this.renderNode(e))))))}case"tableRow":return r("tr",{class:"markdown__table-row"},this.children(e));case"tableCell":return r("td",{class:"markdown__table-cell"},this.children(e));case"image":{const s=l(e.url,{protocols:["http:","https:","mailto:"]});return s?r("a",{class:"markdown__image-link",href:s,target:"_blank",rel:"noopener noreferrer"},e.alt||"View image"):e.alt||null}case"html":case"definition":case"footnoteDefinition":return null;case"footnoteReference":return r("sup",{class:"markdown__footnote"},e.label);default:return this.children(e)}}render(){return r(o,{key:"586496a54c061a107376680e12cf6b51dc664355","aria-busy":this.streaming?"true":undefined},r("div",{key:"25963d2274fbcbc02f7f37d390ff39ac65900a49",class:"markdown ds-prose"},this.tree?this.renderNode(this.tree):r("p",{class:"markdown__paragraph"},r("span",{class:"markdown__text"},this.content))))}static get watchers(){return{content:[{scheduleParse:0}]}}static get style(){return p()}},[2,"ds-markdown",{content:[1],streaming:[4],tree:[32]},undefined,{content:[{scheduleParse:0}]}]);function g(){if(typeof customElements==="undefined"){return}const e=["ds-markdown","ds-badge","ds-button-unfilled","ds-code-block","ds-icon","ds-loader","ds-text","ds-tooltip"];e.forEach((e=>{switch(e){case"ds-markdown":if(!customElements.get(a(e))){customElements.define(a(e),k)}break;case"ds-badge":if(!customElements.get(a(e))){d()}break;case"ds-button-unfilled":if(!customElements.get(a(e))){t()}break;case"ds-code-block":if(!customElements.get(a(e))){n()}break;case"ds-icon":if(!customElements.get(a(e))){i()}break;case"ds-loader":if(!customElements.get(a(e))){c()}break;case"ds-text":if(!customElements.get(a(e))){h()}break;case"ds-tooltip":if(!customElements.get(a(e))){m()}break}}))}g();export{k as M,g as d};
2
+ //# sourceMappingURL=p-DhEdICfD.js.map
@@ -1,2 +1,2 @@
1
- import{p as s,H as e,c as t,h as o,a as n,t as i}from"./index.js";import{p as a}from"./p-B6Vuayt6.js";import{d as l}from"./p-BsoqsbBh.js";import{d as r}from"./p-DsiCDzoF.js";import{d}from"./p-BAfG3M8z.js";import{d as c}from"./p-Ca-I2UnB.js";import{d as h}from"./p-B1cbQ0SG.js";import{d as p}from"./p-Ay1AX7Ql.js";import{d as f}from"./p-ohsLFap_.js";const u=["search","agents","messages","stacks","activity","help"];const m={search:"Search",messages:"Messages",stacks:"Stacks",activity:"Activity",agents:"Agents",help:"Help & Support"};const g={search:"K",agents:"A",messages:"M",stacks:"S",activity:"N",help:"/"};const v=[{id:"search",icon:"MagnifyingGlass",label:m.search,railPlacement:"header",order:0,shortcutKey:g.search,mobileDestination:"search"},{id:"agents",icon:"AI",label:m.agents,order:1,shortcutKey:g.agents,mobileDestination:"agents"},{id:"messages",icon:"MessageBubbleStack",label:m.messages,order:2,shortcutKey:g.messages,mobileDestination:"inbox"},{id:"stacks",icon:"ViewMenu",label:m.stacks,order:3,shortcutKey:g.stacks,mobileDestination:"inbox"},{id:"activity",icon:"Bell",label:m.activity,order:4,shortcutKey:g.activity,mobileDestination:"inbox"},{id:"help",icon:"CircleQuestion",label:m.help,railPlacement:"footer",order:5,shortcutKey:g.help,mobileDestination:"help"}];function b(s){const e=new Map;for(const t of s){if(t.id.trim()&&!e.has(t.id))e.set(t.id,t)}const t={header:0,body:1,footer:2};return Array.from(e.values()).sort(((s,e)=>{const o=w(s);const n=w(e);const i=t[o]-t[n];if(i!==0)return i;const a=u.findIndex((e=>e===s.id));const l=u.findIndex((s=>s===e.id));const r=s.order??(a<0?Number.MAX_SAFE_INTEGER:a);const d=e.order??(l<0?Number.MAX_SAFE_INTEGER:l);return r-d}))}function _(s){return typeof s==="string"&&s.trim().length>0}function w(s){if(s.railPlacement)return s.railPlacement;if(s.id==="search")return"header";if(s.id==="help")return"footer";return"body"}function y(s,e,t){if(!t||s.some((s=>s.id===t))){return{open:e,activeTool:t,removedTool:""}}return{open:false,activeTool:"",removedTool:t}}function x(s){const e=s.transitionProperty.split(",").map((s=>s.trim()));const t=s.transitionDuration.split(",").map((s=>a(s.trim(),0)));const o=s.transitionDelay.split(",").map((s=>a(s.trim(),0)));return e.reduce(((s,e,n)=>{if(e!=="all"&&e!=="max-width")return s;const i=t[n%t.length]??0;const a=o[n%o.length]??0;return Math.max(s,i+a,0)}),0)}function k(s,e){return!s&&e==="idle"}function A(s,e,t){if(t==="closing")return s<=.5;if(t==="opening")return e>0&&s>=e-.5;return true}function T(s,e,t){if(s&&e===t){return{open:false,activeTool:t,selected:false}}return{open:true,activeTool:t,selected:true}}const C=()=>`.ds-control--lg.sc-ds-panel-tools,.ds-control--lg.sc-ds-panel-tools-h,.ds-control--md.sc-ds-panel-tools-h,.ds-control--md.sc-ds-panel-tools,.ds-control--sm.sc-ds-panel-tools-h,.ds-control--sm.sc-ds-panel-tools,.ds-control--xs.sc-ds-panel-tools-h,.ds-control--xs.sc-ds-panel-tools{--ds-control-radius:var(--dimension-radius-025)}.ds-control--lg.sc-ds-panel-tools-h,.ds-control--lg.sc-ds-panel-tools{--ds-control-height:var(--dimension-size-500);--ds-control-icon:var(--dimension-iconography-lg);--ds-control-padding-inline:var(--dimension-space-100);--ds-control-label-inset:var(--dimension-space-050);--ds-control-gap:var(--dimension-space-050)}.ds-control--md.sc-ds-panel-tools-h,.ds-control--md.sc-ds-panel-tools{--ds-control-height:var(--dimension-size-400);--ds-control-icon:var(--dimension-iconography-md);--ds-control-padding-inline:var(--dimension-space-075);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-050)}.ds-control--sm.sc-ds-panel-tools-h,.ds-control--sm.sc-ds-panel-tools{--ds-control-height:var(--dimension-size-300);--ds-control-icon:var(--dimension-iconography-sm);--ds-control-padding-inline:var(--dimension-space-050);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-025)}.ds-control--xs.sc-ds-panel-tools-h,.ds-control--xs.sc-ds-panel-tools{--ds-control-height:var(--dimension-size-200);--ds-control-icon:var(--dimension-iconography-xs);--ds-control-padding-inline:var(--dimension-space-025);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:0}.ds-chrome-space--sm.sc-ds-panel-tools-h,.ds-chrome-space--sm.sc-ds-panel-tools{--ds-chrome-padding:var(--dimension-space-050);--ds-chrome-gap:var(--dimension-space-050)}.ds-chrome-space--md.sc-ds-panel-tools-h,.ds-chrome-space--md.sc-ds-panel-tools{--ds-chrome-padding:var(--dimension-space-100);--ds-chrome-gap:var(--dimension-space-100)}.ds-chrome-space--lg.sc-ds-panel-tools-h,.ds-chrome-space--lg.sc-ds-panel-tools{--ds-chrome-padding:var(--dimension-space-200);--ds-chrome-gap:var(--dimension-space-200)}.ds-chrome-row.sc-ds-panel-tools-h,.ds-chrome-row.sc-ds-panel-tools,.ds-chrome-column.sc-ds-panel-tools-h,.ds-chrome-column.sc-ds-panel-tools,.ds-chrome-grid.sc-ds-panel-tools-h,.ds-chrome-grid.sc-ds-panel-tools{display:flex;box-sizing:border-box;gap:var(--ds-chrome-gap, var(--dimension-space-100));padding:var(--ds-chrome-padding, var(--dimension-space-100))}.ds-chrome-row.sc-ds-panel-tools-h,.ds-chrome-row.sc-ds-panel-tools{flex-direction:row;align-items:center}.ds-chrome-column.sc-ds-panel-tools-h,.ds-chrome-column.sc-ds-panel-tools{flex-direction:column}.ds-chrome-grid.sc-ds-panel-tools-h,.ds-chrome-grid.sc-ds-panel-tools{display:grid;align-items:center}.ds-scrollbar-hidden.sc-ds-panel-tools-h,.ds-scrollbar-hidden.sc-ds-panel-tools{scrollbar-width:none}.ds-scrollbar-hidden.sc-ds-panel-tools-h::-webkit-scrollbar,.ds-scrollbar-hidden.sc-ds-panel-tools::-webkit-scrollbar{display:none}.sc-ds-panel-tools-h{display:block;flex:0 0 auto;box-sizing:border-box;height:100%;min-height:0;overflow:hidden;--_panel-tools-rail-width:var(--dimension-size-600);--_panel-tools-drawer-width:var(--ds-shell-panel-tools-width, var(--dimension-panel-width-xs));--_panel-tools-border:var(--dimension-stroke-width-012, 1px) solid var(--color-border-tertiary);--_panel-tools-expand-dur:var(--effect-animation-duration-medium-1, 300ms)}.panel-tools__layout.sc-ds-panel-tools{display:flex;flex-direction:row-reverse;align-items:stretch;height:100%;min-height:0;box-sizing:border-box}.panel-tools__drawer.sc-ds-panel-tools{flex:0 0 auto;max-width:0;min-width:0;height:100%;min-height:0;overflow:hidden;box-sizing:border-box;transition:none}.panel-tools--ready.sc-ds-panel-tools-h .panel-tools__drawer.sc-ds-panel-tools{transition:max-width var(--_panel-tools-expand-dur) var(--effect-animation-easing-ease-in-out, ease)}.panel-tools--ready.panel-tools--motion-opening.sc-ds-panel-tools-h .panel-tools__drawer.sc-ds-panel-tools{transition:max-width var(--_panel-tools-expand-dur) var(--effect-animation-easing-ease-out, ease-out)}.panel-tools--ready.panel-tools--motion-closing.sc-ds-panel-tools-h .panel-tools__drawer.sc-ds-panel-tools{transition:max-width var(--_panel-tools-expand-dur) var(--effect-animation-easing-ease-in, ease-in)}.panel-tools--open.sc-ds-panel-tools-h .panel-tools__drawer.sc-ds-panel-tools{max-width:var(--_panel-tools-drawer-width)}.panel-tools__drawer--visible.sc-ds-panel-tools{border-left:var(--_panel-tools-border)}.panel-tools__drawer-surface.sc-ds-panel-tools{display:flex;flex-direction:column;width:var(--_panel-tools-drawer-width);height:100%;min-height:0;box-sizing:border-box;background-color:transparent}.panel-tools__full-views.sc-ds-panel-tools,.panel-tools__full-view.sc-ds-panel-tools{flex:1 1 auto;min-height:0;overflow:hidden}.panel-tools__full-view.sc-ds-panel-tools{height:100%}.panel-tools__full-view.sc-ds-panel-tools{display:none}.panel-tools__full-view--active.sc-ds-panel-tools{display:block}[presentation='fullscreen'].sc-ds-panel-tools-h{height:100vh;inset:0;position:fixed;width:100vw;z-index:var(--dimension-z-index-modal)}[presentation='fullscreen'].sc-ds-panel-tools-h .panel-tools__rail.sc-ds-panel-tools{display:none}[presentation='fullscreen'].sc-ds-panel-tools-h .panel-tools__drawer.sc-ds-panel-tools{max-width:100vw;transition:none;width:100vw}[presentation='fullscreen'].sc-ds-panel-tools-h .panel-tools__drawer--visible.sc-ds-panel-tools{border-left:none}[presentation='fullscreen'].sc-ds-panel-tools-h .panel-tools__drawer-surface.sc-ds-panel-tools{background-color:transparent;width:100vw}[presentation='fullscreen'].sc-ds-panel-tools-h:not(.panel-tools--fullscreen) .panel-tools__drawer-surface.sc-ds-panel-tools,.panel-tools--fullscreen.sc-ds-panel-tools-h:not([presentation='fullscreen']) .panel-tools__drawer-surface.sc-ds-panel-tools{visibility:hidden}.panel-tools--presentation-snap.sc-ds-panel-tools-h .panel-tools__drawer.sc-ds-panel-tools{transition:none}.panel-tools__body.sc-ds-panel-tools{flex:1 1 auto;min-height:0;overflow:auto;position:relative}.panel-tools--drawer-resting.sc-ds-panel-tools-h .panel-tools__body.sc-ds-panel-tools{content-visibility:auto;contain-intrinsic-size:auto 200px}.panel-tools__view.sc-ds-panel-tools{display:none;height:100%;min-height:0;box-sizing:border-box;padding:var(--dimension-space-200);color:var(--color-foreground-secondary);font-family:var(--typography-font-family);font-size:var(--typography-fontsize-md);line-height:var(--typography-lineheight-md);font-weight:var(--typography-weight-regular);letter-spacing:var(--typography-letterspacing-negative-half)}.panel-tools__view.sc-ds-panel-tools-s>*,.panel-tools__view .sc-ds-panel-tools-s>*{margin:0;color:var(--color-foreground-secondary);font-family:var(--typography-font-family);font-size:var(--typography-fontsize-md);line-height:var(--typography-lineheight-md);font-weight:var(--typography-weight-regular);letter-spacing:var(--typography-letterspacing-negative-half)}.panel-tools__view--active.sc-ds-panel-tools{display:block}.panel-tools__rail.sc-ds-panel-tools{flex:0 0 var(--_panel-tools-rail-width);width:var(--_panel-tools-rail-width);min-width:var(--_panel-tools-rail-width);display:flex;flex-direction:column;box-sizing:border-box;height:100%;min-height:0;border-left:var(--_panel-tools-border);background-color:transparent}.panel-tools__rail-header.sc-ds-panel-tools{justify-content:center;height:var(--dimension-size-600);flex-shrink:0;border-bottom:var(--_panel-tools-border)}.panel-tools__rail-body.sc-ds-panel-tools{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden}.panel-tools__rail-actions.sc-ds-panel-tools{display:flex;flex-direction:column;gap:var(--dimension-space-050);width:100%}.panel-tools__rail-footer.sc-ds-panel-tools{justify-content:center;flex-shrink:0;margin-top:auto}.panel-tools__rail-action.sc-ds-panel-tools{display:flex;align-items:center;justify-content:center;width:100%;height:var(--ds-control-height);flex-shrink:0}@media (prefers-reduced-motion: reduce){.panel-tools--ready.panel-tools--motion-opening.sc-ds-panel-tools-h .panel-tools__drawer.sc-ds-panel-tools,.panel-tools--ready.panel-tools--motion-closing.sc-ds-panel-tools-h .panel-tools__drawer.sc-ds-panel-tools{transition:none}}`;const z=s(class s extends e{constructor(s){super();if(s!==false){this.__registerHost()}this.dsToolChange=t(this,"dsToolChange");this.dsPresentationChange=t(this,"dsPresentationChange");this.dsHeaderBack=t(this,"dsHeaderBack");this.dsHeaderAction=t(this,"dsHeaderAction");this.dsChromeTransitionStart=t(this,"dsChromeTransitionStart");this.dsChromeTransitionEnd=t(this,"dsChromeTransitionEnd");this.open=false;this.presentation="drawer";this.fullscreenHeaderMode="shared";this.activeTool="";this.items=[];this.toolsLabel="Tools";this.toolShortcutsLabel="Tool shortcuts";this.headers={};this.storageKey="";this.motion="idle";this.drawerSurfaceRetained=false;this.readyForMotion=false;this.presentationMotionSuppressed=false;this.rovingIndex=0;this.fullViewToolIds=[];this.motionEnableGeneration=0;this.presentationMotionGeneration=0;this.transitionGeneration=0;this.transitionFallbackTimer=null;this.ignoreReplacementTerminal=false;this.focusBeforeFullscreen=null;this.fullViewObserver=null;this.handleComposedHeaderAction=s=>{const e=s.detail;if(!this.activeTool||!e?.id)return;s.stopPropagation();this.dsHeaderAction.emit({tool:this.activeTool,id:e.id})};this.handleTransitionEnd=s=>{const e=this.el.querySelector(".panel-tools__drawer");if(s.target!==e)return;if(s.propertyName!=="max-width")return;if(this.ignoreReplacementTerminal){this.ignoreReplacementTerminal=false;return}if(s.type==="transitioncancel")return;if(e&&!this.drawerTransitionAtTerminal(e,this.motion))return;this.finishDrawerTransition()};this.handleToolChange=s=>{const e=T(this.open,this.activeTool,s);this.open=e.open;this.activeTool=e.activeTool;this.dsToolChange.emit({id:s,selected:e.selected})};this.handleRailKeyDown=(s,e)=>{const t=this.orderedRailItems;if(!t.length)return;if(s.key==="Enter"||s.key===" "){s.preventDefault();this.handleToolChange(t[e].id);return}if(s.key==="ArrowDown"){if(e>=t.length-1)return;s.preventDefault();this.focusRailAt(e+1);return}if(s.key==="ArrowUp"){if(e<=0)return;s.preventDefault();this.focusRailAt(e-1)}}}get railItems(){return this.items??[]}get orderedRailItems(){return b(this.railItems)}disconnectedCallback(){this.el.removeEventListener("transitionend",this.handleTransitionEnd);this.el.removeEventListener("transitioncancel",this.handleTransitionEnd);this.el.removeEventListener("dsAction",this.handleComposedHeaderAction);this.clearTransitionCompletion();this.motionEnableGeneration+=1;this.fullViewObserver?.disconnect();this.fullViewObserver=null}presentationChanged(s,t){if(s===t)return;if(this.el.getAttribute("presentation")!==s){this.el.setAttribute("presentation",s)}const o=++this.presentationMotionGeneration;this.presentationMotionSuppressed=true;requestAnimationFrame((()=>{requestAnimationFrame((()=>{if(o!==this.presentationMotionGeneration)return;this.presentationMotionSuppressed=false}))}));if(s==="fullscreen"){this.focusBeforeFullscreen=document.activeElement instanceof e?document.activeElement:null;this.open=true}else if(t==="fullscreen"){const s=this.focusBeforeFullscreen;const e=this.activeHeader().actions?.[0]?.id;requestAnimationFrame((async()=>{if(s?.isConnected){s.focus({preventScroll:true})}const t=s?document.activeElement===s||s.contains(document.activeElement):false;if(!t&&e)await this.focusHeaderAction(e);this.focusBeforeFullscreen=null}))}this.dsPresentationChange.emit({presentation:s})}handleFullscreenEscape(s){if(this.presentation!=="fullscreen"||s.key!=="Escape")return;s.preventDefault();s.stopPropagation();this.presentation="drawer"}deferMotionEnable(){if(this.readyForMotion)return;const s=++this.motionEnableGeneration;requestAnimationFrame((()=>{if(s!==this.motionEnableGeneration)return;requestAnimationFrame((()=>{if(s!==this.motionEnableGeneration)return;this.readyForMotion=true}))}))}connectedCallback(){this.el.addEventListener("transitionend",this.handleTransitionEnd);this.el.addEventListener("transitioncancel",this.handleTransitionEnd);this.el.addEventListener("dsAction",this.handleComposedHeaderAction)}componentWillLoad(){this.restoreLastActiveTool();this.drawerSurfaceRetained=this.open}openChanged(s,e){if(s)this.drawerSurfaceRetained=true;if(this.readyForMotion&&e!==undefined&&e!==s){this.startDrawerTransition(s?"opening":"closing")}else if(!s){this.drawerSurfaceRetained=false}this.deferMotionEnable()}activeToolChanged(){this.persistLastActiveTool();this.deferMotionEnable()}storageKeyChanged(){this.restoreLastActiveTool()}componentDidLoad(){this.deferMotionEnable();this.syncFullViewTools();this.fullViewObserver=new MutationObserver((()=>this.syncFullViewTools()));this.fullViewObserver.observe(this.el,{childList:true,attributes:true,attributeFilter:["slot"]})}itemsChanged(){this.rovingIndex=0;this.reconcileActiveTool();this.deferMotionEnable()}restoreLastActiveTool(){if(!this.storageKey||this.activeTool)return;try{const s=localStorage.getItem(this.storageKey);if(_(s))this.activeTool=s}catch{}}persistLastActiveTool(){if(!this.storageKey||!this.activeTool)return;try{localStorage.setItem(this.storageKey,this.activeTool)}catch{}}clearPersistedTool(){if(!this.storageKey)return;try{localStorage.removeItem(this.storageKey)}catch{}}reconcileActiveTool(){const s=y(this.railItems,this.open,this.activeTool);if(!s.removedTool)return;this.clearPersistedTool();this.open=s.open;this.activeTool=s.activeTool;this.dsToolChange.emit({id:s.removedTool,selected:false})}startDrawerTransition(s){const e=this.el.querySelector(".panel-tools__drawer");if(this.motion!=="idle"){this.finishDrawerTransition();this.ignoreReplacementTerminal=true}this.motion=s;this.dsChromeTransitionStart.emit({source:"panel-tools",phase:s});const t=++this.transitionGeneration;requestAnimationFrame((()=>{requestAnimationFrame((()=>{if(t!==this.transitionGeneration||this.motion!==s)return;if(!e){this.finishDrawerTransition();return}if(this.drawerTransitionAtTerminal(e,s)){this.finishDrawerTransition();return}const o=x(getComputedStyle(e));if(o<=0){this.finishDrawerTransition();return}this.transitionFallbackTimer=window.setTimeout((()=>{this.finishDrawerTransition()}),o)}))}))}drawerTransitionAtTerminal(s,e){const t=s.getBoundingClientRect().width;const o=s.querySelector(".panel-tools__drawer-surface");const n=o?.getBoundingClientRect().width??0;return A(t,n,e)}finishDrawerTransition(){const s=this.motion;const e=s!=="idle";this.clearTransitionCompletion();if(!e)return;this.ignoreReplacementTerminal=false;this.motion="idle";if(s==="closing"&&!this.open){this.drawerSurfaceRetained=false}this.dsChromeTransitionEnd.emit({source:"panel-tools"})}clearTransitionCompletion(){this.transitionGeneration+=1;if(this.transitionFallbackTimer!==null){window.clearTimeout(this.transitionFallbackTimer);this.transitionFallbackTimer=null}}isRailSelected(s){return this.open&&this.activeTool===s}isDrawerPresent(){return this.open||this.drawerSurfaceRetained}isViewActive(s){return this.isDrawerPresent()&&this.activeTool===s}hasFullView(s){return this.fullViewToolIds.includes(s)}syncFullViewTools(){const s=this.orderedRailItems.map((s=>s.id));const e=s.filter((s=>Boolean(this.el.querySelector(`[slot="${s}-view"]`))));if(e.join("|")!==this.fullViewToolIds.join("|"))this.fullViewToolIds=e}headerLabel(){if(!this.isDrawerPresent()||!this.activeTool)return"";const s=this.railItems.find((s=>s.id===this.activeTool));return s?.label??m[this.activeTool]??this.activeTool}resolvedHeaders(){return this.headers??{}}activeHeader(){if(!this.activeTool)return{};return this.resolvedHeaders()[this.activeTool]??{}}async activateTool(s){const e=this.railItems.find((e=>e.id===s));if(!e||e.isInactive)return;this.handleToolChange(s)}async closeDrawer(){if(!this.open)return;const s=this.activeTool;this.open=false;if(s){this.dsToolChange.emit({id:s,selected:false})}}async focusHeaderAction(s){const e=this.el.querySelector(`[data-header-action-id="${CSS.escape(s)}"]`);await(e?.setFocus?.())}focusRailAt(s){const e=this.orderedRailItems;if(!e.length)return;const t=Math.max(0,Math.min(s,e.length-1));if(t===this.rovingIndex)return;this.rovingIndex=t;const o=Array.from(this.el.querySelectorAll(".panel-tools__rail-action .button-icon"));o[t]?.focus({preventScroll:true})}renderRailAction(s,e){const t=s.ariaLabel??s.label??m[s.id]??s.id;return o("ds-tooltip",{key:s.id,label:t,shortcutKey:s.shortcutKey??g[s.id],side:"left",size:"sm"},o("ds-button-unfilled",{variant:"icon",class:"panel-tools__rail-action",icon:s.icon,isActive:this.isRailSelected(s.id),activeFill:false,hasBorder:false,pressScale:false,dot:s.dot??false,isInactive:s.isInactive,focusTabIndex:e===this.rovingIndex?0:-1,"aria-label":t,pressed:this.isRailSelected(s.id),onFocusin:()=>{this.rovingIndex=e},onKeyDown:s=>this.handleRailKeyDown(s,e),onDsClick:()=>this.handleToolChange(s.id)}))}render(){const s=this.headerLabel();const e=this.activeHeader();const t=e.title?.trim()||s;const i=e.actions??[];const a=this.orderedRailItems;const l=a.filter((s=>w(s)==="header"));const r=a.filter((s=>w(s)==="body"));const d=a.filter((s=>w(s)==="footer"));const c=l.length;const h=c+r.length;const p=this.isDrawerPresent();const f=k(this.open,this.motion);const u=Boolean(p&&this.activeTool&&this.hasFullView(this.activeTool));const m=a.map((s=>s.id));return o(n,{key:"993269b05735758d3bd76ab37d0463fd100c8212",class:{"panel-tools":true,"panel-tools--open":this.open,"panel-tools--ready":this.readyForMotion,"panel-tools--motion-opening":this.motion==="opening","panel-tools--motion-closing":this.motion==="closing","panel-tools--drawer-resting":f,"panel-tools--fullscreen":this.presentation==="fullscreen","panel-tools--presentation-snap":this.presentationMotionSuppressed},role:this.presentation==="fullscreen"?"dialog":"complementary","aria-modal":this.presentation==="fullscreen"?"true":undefined,"aria-label":this.toolsLabel},o("div",{key:"cf28c343a7c84d12efe72f9e74375520033d9e57",class:"panel-tools__layout"},o("nav",{key:"843ea60db330923bc42cf8ab2b66973b61d1ed6c",class:"panel-tools__rail","aria-label":this.toolShortcutsLabel},l.length?o("div",{class:"panel-tools__rail-header ds-chrome-row ds-chrome-space--md"},l.map(((s,e)=>this.renderRailAction(s,e)))):null,o("div",{key:"7d746be7dd25f892e504ccf75c6409539230cea5",class:"panel-tools__rail-body ds-chrome-column ds-chrome-space--md ds-scrollbar-hidden"},o("div",{key:"03abed4063fb556f65dbd9be0f52d6faa71f1bed",class:"panel-tools__rail-actions"},r.map(((s,e)=>this.renderRailAction(s,c+e))))),d.length?o("div",{class:"panel-tools__rail-footer ds-chrome-row ds-chrome-space--md"},d.map(((s,e)=>this.renderRailAction(s,h+e)))):null),o("div",{key:"fb6f5277e2a9a28d4d546ac5ed4d1cf7fc0c0fea",class:{"panel-tools__drawer":true,"panel-tools__drawer--visible":p},"aria-hidden":p?null:"true",inert:p?undefined:true},o("div",{key:"319a5b25248209c54b192ae827f971b4acb0f3d3",class:"panel-tools__drawer-surface"},this.presentation!=="fullscreen"||this.fullscreenHeaderMode==="shared"?o("ds-panel-tool-header",{class:"panel-tools__header",heading:t,showBack:e.showBack??false,backIcon:e.backIcon||"ChevronLeft",backAriaLabel:e.backAriaLabel||"Back",showMenu:false,ref:s=>{const e=s;if(e)e.actions=i},onDsBack:()=>{if(this.activeTool)this.dsHeaderBack.emit({tool:this.activeTool})}}):null,o("div",{key:"733ea2eb77a5f6d64e93f6da4db92d20bce8248e",class:"panel-tools__body",hidden:u},m.map((s=>{const e=this.isViewActive(s);return o("div",{class:{"panel-tools__view":true,"panel-tools__view--active":e},hidden:!e},o("slot",{name:s}))}))),o("div",{key:"a8104834f4622dee99ea9e3462a9e0378cb5e627",class:"panel-tools__full-views",hidden:!u},m.map((s=>o("div",{class:{"panel-tools__full-view":true,"panel-tools__full-view--active":this.isViewActive(s)&&this.hasFullView(s)},hidden:!(this.isViewActive(s)&&this.hasFullView(s))},o("slot",{name:`${s}-view`})))))))))}get el(){return this}static get watchers(){return{presentation:[{presentationChanged:0}],open:[{openChanged:0}],activeTool:[{activeToolChanged:0}],storageKey:[{storageKeyChanged:0}],items:[{itemsChanged:0}]}}static get style(){return C()}},[262,"ds-panel-tools",{open:[1540],presentation:[1537],fullscreenHeaderMode:[513,"fullscreen-header-mode"],activeTool:[1537,"active-tool"],items:[16],toolsLabel:[1,"tools-label"],toolShortcutsLabel:[1,"tool-shortcuts-label"],headers:[16],storageKey:[1,"storage-key"],motion:[32],drawerSurfaceRetained:[32],readyForMotion:[32],presentationMotionSuppressed:[32],rovingIndex:[32],fullViewToolIds:[32],activateTool:[64],closeDrawer:[64],focusHeaderAction:[64]},[[10,"keydown","handleFullscreenEscape"]],{presentation:[{presentationChanged:0}],open:[{openChanged:0}],activeTool:[{activeToolChanged:0}],storageKey:[{storageKeyChanged:0}],items:[{itemsChanged:0}]}]);function S(){if(typeof customElements==="undefined"){return}const s=["ds-panel-tools","ds-badge","ds-button-unfilled","ds-icon","ds-loader","ds-panel-tool-header","ds-text","ds-tooltip"];s.forEach((s=>{switch(s){case"ds-panel-tools":if(!customElements.get(i(s))){customElements.define(i(s),z)}break;case"ds-badge":if(!customElements.get(i(s))){l()}break;case"ds-button-unfilled":if(!customElements.get(i(s))){r()}break;case"ds-icon":if(!customElements.get(i(s))){d()}break;case"ds-loader":if(!customElements.get(i(s))){c()}break;case"ds-panel-tool-header":if(!customElements.get(i(s))){h()}break;case"ds-text":if(!customElements.get(i(s))){p()}break;case"ds-tooltip":if(!customElements.get(i(s))){f()}break}}))}S();export{z as P,m as a,T as b,v as c,S as d,b as o,y as r};
2
- //# sourceMappingURL=p-BwT6B5Fi.js.map
1
+ import{p as s,H as e,c as t,h as o,a as n,t as i}from"./index.js";import{p as a}from"./p-B6Vuayt6.js";import{d as l}from"./p-BsoqsbBh.js";import{d as r}from"./p-eAfNzlMa.js";import{d}from"./p-BAfG3M8z.js";import{d as c}from"./p-Ca-I2UnB.js";import{d as h}from"./p-B1XW4VSn.js";import{d as p}from"./p-Ay1AX7Ql.js";import{d as f}from"./p-ohsLFap_.js";const u=["search","agents","messages","stacks","activity","help"];const m={search:"Search",messages:"Messages",stacks:"Stacks",activity:"Activity",agents:"Agents",help:"Help & Support"};const g={search:"K",agents:"A",messages:"M",stacks:"S",activity:"N",help:"/"};const v=[{id:"search",icon:"MagnifyingGlass",label:m.search,railPlacement:"header",order:0,shortcutKey:g.search,mobileDestination:"search"},{id:"agents",icon:"AI",label:m.agents,order:1,shortcutKey:g.agents,mobileDestination:"agents"},{id:"messages",icon:"MessageBubbleStack",label:m.messages,order:2,shortcutKey:g.messages,mobileDestination:"inbox"},{id:"stacks",icon:"ViewMenu",label:m.stacks,order:3,shortcutKey:g.stacks,mobileDestination:"inbox"},{id:"activity",icon:"Bell",label:m.activity,order:4,shortcutKey:g.activity,mobileDestination:"inbox"},{id:"help",icon:"CircleQuestion",label:m.help,railPlacement:"footer",order:5,shortcutKey:g.help,mobileDestination:"help"}];function b(s){const e=new Map;for(const t of s){if(t.id.trim()&&!e.has(t.id))e.set(t.id,t)}const t={header:0,body:1,footer:2};return Array.from(e.values()).sort(((s,e)=>{const o=w(s);const n=w(e);const i=t[o]-t[n];if(i!==0)return i;const a=u.findIndex((e=>e===s.id));const l=u.findIndex((s=>s===e.id));const r=s.order??(a<0?Number.MAX_SAFE_INTEGER:a);const d=e.order??(l<0?Number.MAX_SAFE_INTEGER:l);return r-d}))}function _(s){return typeof s==="string"&&s.trim().length>0}function w(s){if(s.railPlacement)return s.railPlacement;if(s.id==="search")return"header";if(s.id==="help")return"footer";return"body"}function y(s,e,t){if(!t||s.some((s=>s.id===t))){return{open:e,activeTool:t,removedTool:""}}return{open:false,activeTool:"",removedTool:t}}function x(s){const e=s.transitionProperty.split(",").map((s=>s.trim()));const t=s.transitionDuration.split(",").map((s=>a(s.trim(),0)));const o=s.transitionDelay.split(",").map((s=>a(s.trim(),0)));return e.reduce(((s,e,n)=>{if(e!=="all"&&e!=="max-width")return s;const i=t[n%t.length]??0;const a=o[n%o.length]??0;return Math.max(s,i+a,0)}),0)}function k(s,e){return!s&&e==="idle"}function A(s,e,t){if(t==="closing")return s<=.5;if(t==="opening")return e>0&&s>=e-.5;return true}function T(s,e,t){if(s&&e===t){return{open:false,activeTool:t,selected:false}}return{open:true,activeTool:t,selected:true}}const C=()=>`.ds-control--lg.sc-ds-panel-tools,.ds-control--lg.sc-ds-panel-tools-h,.ds-control--md.sc-ds-panel-tools-h,.ds-control--md.sc-ds-panel-tools,.ds-control--sm.sc-ds-panel-tools-h,.ds-control--sm.sc-ds-panel-tools,.ds-control--xs.sc-ds-panel-tools-h,.ds-control--xs.sc-ds-panel-tools{--ds-control-radius:var(--dimension-radius-025)}.ds-control--lg.sc-ds-panel-tools-h,.ds-control--lg.sc-ds-panel-tools{--ds-control-height:var(--dimension-size-500);--ds-control-icon:var(--dimension-iconography-lg);--ds-control-padding-inline:var(--dimension-space-100);--ds-control-label-inset:var(--dimension-space-050);--ds-control-gap:var(--dimension-space-050)}.ds-control--md.sc-ds-panel-tools-h,.ds-control--md.sc-ds-panel-tools{--ds-control-height:var(--dimension-size-400);--ds-control-icon:var(--dimension-iconography-md);--ds-control-padding-inline:var(--dimension-space-075);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-050)}.ds-control--sm.sc-ds-panel-tools-h,.ds-control--sm.sc-ds-panel-tools{--ds-control-height:var(--dimension-size-300);--ds-control-icon:var(--dimension-iconography-sm);--ds-control-padding-inline:var(--dimension-space-050);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-025)}.ds-control--xs.sc-ds-panel-tools-h,.ds-control--xs.sc-ds-panel-tools{--ds-control-height:var(--dimension-size-200);--ds-control-icon:var(--dimension-iconography-xs);--ds-control-padding-inline:var(--dimension-space-025);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:0}.ds-chrome-space--sm.sc-ds-panel-tools-h,.ds-chrome-space--sm.sc-ds-panel-tools{--ds-chrome-padding:var(--dimension-space-050);--ds-chrome-gap:var(--dimension-space-050)}.ds-chrome-space--md.sc-ds-panel-tools-h,.ds-chrome-space--md.sc-ds-panel-tools{--ds-chrome-padding:var(--dimension-space-100);--ds-chrome-gap:var(--dimension-space-100)}.ds-chrome-space--lg.sc-ds-panel-tools-h,.ds-chrome-space--lg.sc-ds-panel-tools{--ds-chrome-padding:var(--dimension-space-200);--ds-chrome-gap:var(--dimension-space-200)}.ds-chrome-row.sc-ds-panel-tools-h,.ds-chrome-row.sc-ds-panel-tools,.ds-chrome-column.sc-ds-panel-tools-h,.ds-chrome-column.sc-ds-panel-tools,.ds-chrome-grid.sc-ds-panel-tools-h,.ds-chrome-grid.sc-ds-panel-tools{display:flex;box-sizing:border-box;gap:var(--ds-chrome-gap, var(--dimension-space-100));padding:var(--ds-chrome-padding, var(--dimension-space-100))}.ds-chrome-row.sc-ds-panel-tools-h,.ds-chrome-row.sc-ds-panel-tools{flex-direction:row;align-items:center}.ds-chrome-column.sc-ds-panel-tools-h,.ds-chrome-column.sc-ds-panel-tools{flex-direction:column}.ds-chrome-grid.sc-ds-panel-tools-h,.ds-chrome-grid.sc-ds-panel-tools{display:grid;align-items:center}.ds-scrollbar-hidden.sc-ds-panel-tools-h,.ds-scrollbar-hidden.sc-ds-panel-tools{scrollbar-width:none}.ds-scrollbar-hidden.sc-ds-panel-tools-h::-webkit-scrollbar,.ds-scrollbar-hidden.sc-ds-panel-tools::-webkit-scrollbar{display:none}.sc-ds-panel-tools-h{display:block;flex:0 0 auto;box-sizing:border-box;height:100%;min-height:0;overflow:hidden;--_panel-tools-rail-width:var(--dimension-size-600);--_panel-tools-drawer-width:var(--ds-shell-panel-tools-width, var(--dimension-panel-width-xs));--_panel-tools-border:var(--dimension-stroke-width-012, 1px) solid var(--color-border-tertiary);--_panel-tools-expand-dur:var(--effect-animation-duration-medium-1, 300ms)}.panel-tools__layout.sc-ds-panel-tools{display:flex;flex-direction:row-reverse;align-items:stretch;height:100%;min-height:0;box-sizing:border-box}.panel-tools__drawer.sc-ds-panel-tools{flex:0 0 auto;max-width:0;min-width:0;height:100%;min-height:0;overflow:hidden;box-sizing:border-box;transition:none}.panel-tools--ready.sc-ds-panel-tools-h .panel-tools__drawer.sc-ds-panel-tools{transition:max-width var(--_panel-tools-expand-dur) var(--effect-animation-easing-ease-in-out, ease)}.panel-tools--ready.panel-tools--motion-opening.sc-ds-panel-tools-h .panel-tools__drawer.sc-ds-panel-tools{transition:max-width var(--_panel-tools-expand-dur) var(--effect-animation-easing-ease-out, ease-out)}.panel-tools--ready.panel-tools--motion-closing.sc-ds-panel-tools-h .panel-tools__drawer.sc-ds-panel-tools{transition:max-width var(--_panel-tools-expand-dur) var(--effect-animation-easing-ease-in, ease-in)}.panel-tools--open.sc-ds-panel-tools-h .panel-tools__drawer.sc-ds-panel-tools{max-width:var(--_panel-tools-drawer-width)}.panel-tools__drawer--visible.sc-ds-panel-tools{border-left:var(--_panel-tools-border)}.panel-tools__drawer-surface.sc-ds-panel-tools{display:flex;flex-direction:column;width:var(--_panel-tools-drawer-width);height:100%;min-height:0;box-sizing:border-box;background-color:transparent}.panel-tools__full-views.sc-ds-panel-tools,.panel-tools__full-view.sc-ds-panel-tools{flex:1 1 auto;min-height:0;overflow:hidden}.panel-tools__full-view.sc-ds-panel-tools{height:100%}.panel-tools__full-view.sc-ds-panel-tools{display:none}.panel-tools__full-view--active.sc-ds-panel-tools{display:block}[presentation='fullscreen'].sc-ds-panel-tools-h{height:100vh;inset:0;position:fixed;width:100vw;z-index:var(--dimension-z-index-modal)}[presentation='fullscreen'].sc-ds-panel-tools-h .panel-tools__rail.sc-ds-panel-tools{display:none}[presentation='fullscreen'].sc-ds-panel-tools-h .panel-tools__drawer.sc-ds-panel-tools{max-width:100vw;transition:none;width:100vw}[presentation='fullscreen'].sc-ds-panel-tools-h .panel-tools__drawer--visible.sc-ds-panel-tools{border-left:none}[presentation='fullscreen'].sc-ds-panel-tools-h .panel-tools__drawer-surface.sc-ds-panel-tools{background-color:transparent;width:100vw}[presentation='fullscreen'].sc-ds-panel-tools-h:not(.panel-tools--fullscreen) .panel-tools__drawer-surface.sc-ds-panel-tools,.panel-tools--fullscreen.sc-ds-panel-tools-h:not([presentation='fullscreen']) .panel-tools__drawer-surface.sc-ds-panel-tools{visibility:hidden}.panel-tools--presentation-snap.sc-ds-panel-tools-h .panel-tools__drawer.sc-ds-panel-tools{transition:none}.panel-tools__body.sc-ds-panel-tools{flex:1 1 auto;min-height:0;overflow:auto;position:relative}.panel-tools--drawer-resting.sc-ds-panel-tools-h .panel-tools__body.sc-ds-panel-tools{content-visibility:auto;contain-intrinsic-size:auto 200px}.panel-tools__view.sc-ds-panel-tools{display:none;height:100%;min-height:0;box-sizing:border-box;padding:var(--dimension-space-200);color:var(--color-foreground-secondary);font-family:var(--typography-font-family);font-size:var(--typography-fontsize-md);line-height:var(--typography-lineheight-md);font-weight:var(--typography-weight-regular);letter-spacing:var(--typography-letterspacing-negative-half)}.panel-tools__view.sc-ds-panel-tools-s>*,.panel-tools__view .sc-ds-panel-tools-s>*{margin:0;color:var(--color-foreground-secondary);font-family:var(--typography-font-family);font-size:var(--typography-fontsize-md);line-height:var(--typography-lineheight-md);font-weight:var(--typography-weight-regular);letter-spacing:var(--typography-letterspacing-negative-half)}.panel-tools__view--active.sc-ds-panel-tools{display:block}.panel-tools__rail.sc-ds-panel-tools{flex:0 0 var(--_panel-tools-rail-width);width:var(--_panel-tools-rail-width);min-width:var(--_panel-tools-rail-width);display:flex;flex-direction:column;box-sizing:border-box;height:100%;min-height:0;border-left:var(--_panel-tools-border);background-color:transparent}.panel-tools__rail-header.sc-ds-panel-tools{justify-content:center;height:var(--dimension-size-600);flex-shrink:0;border-bottom:var(--_panel-tools-border)}.panel-tools__rail-body.sc-ds-panel-tools{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden}.panel-tools__rail-actions.sc-ds-panel-tools{display:flex;flex-direction:column;gap:var(--dimension-space-050);width:100%}.panel-tools__rail-footer.sc-ds-panel-tools{justify-content:center;flex-shrink:0;margin-top:auto}.panel-tools__rail-action.sc-ds-panel-tools{display:flex;align-items:center;justify-content:center;width:100%;height:var(--ds-control-height);flex-shrink:0}@media (prefers-reduced-motion: reduce){.panel-tools--ready.panel-tools--motion-opening.sc-ds-panel-tools-h .panel-tools__drawer.sc-ds-panel-tools,.panel-tools--ready.panel-tools--motion-closing.sc-ds-panel-tools-h .panel-tools__drawer.sc-ds-panel-tools{transition:none}}`;const z=s(class s extends e{constructor(s){super();if(s!==false){this.__registerHost()}this.dsToolChange=t(this,"dsToolChange");this.dsPresentationChange=t(this,"dsPresentationChange");this.dsHeaderBack=t(this,"dsHeaderBack");this.dsHeaderAction=t(this,"dsHeaderAction");this.dsChromeTransitionStart=t(this,"dsChromeTransitionStart");this.dsChromeTransitionEnd=t(this,"dsChromeTransitionEnd");this.open=false;this.presentation="drawer";this.fullscreenHeaderMode="shared";this.activeTool="";this.items=[];this.toolsLabel="Tools";this.toolShortcutsLabel="Tool shortcuts";this.headers={};this.storageKey="";this.motion="idle";this.drawerSurfaceRetained=false;this.readyForMotion=false;this.presentationMotionSuppressed=false;this.rovingIndex=0;this.fullViewToolIds=[];this.motionEnableGeneration=0;this.presentationMotionGeneration=0;this.transitionGeneration=0;this.transitionFallbackTimer=null;this.ignoreReplacementTerminal=false;this.focusBeforeFullscreen=null;this.fullViewObserver=null;this.handleComposedHeaderAction=s=>{const e=s.detail;if(!this.activeTool||!e?.id)return;s.stopPropagation();this.dsHeaderAction.emit({tool:this.activeTool,id:e.id})};this.handleTransitionEnd=s=>{const e=this.el.querySelector(".panel-tools__drawer");if(s.target!==e)return;if(s.propertyName!=="max-width")return;if(this.ignoreReplacementTerminal){this.ignoreReplacementTerminal=false;return}if(s.type==="transitioncancel")return;if(e&&!this.drawerTransitionAtTerminal(e,this.motion))return;this.finishDrawerTransition()};this.handleToolChange=s=>{const e=T(this.open,this.activeTool,s);this.open=e.open;this.activeTool=e.activeTool;this.dsToolChange.emit({id:s,selected:e.selected})};this.handleRailKeyDown=(s,e)=>{const t=this.orderedRailItems;if(!t.length)return;if(s.key==="Enter"||s.key===" "){s.preventDefault();this.handleToolChange(t[e].id);return}if(s.key==="ArrowDown"){if(e>=t.length-1)return;s.preventDefault();this.focusRailAt(e+1);return}if(s.key==="ArrowUp"){if(e<=0)return;s.preventDefault();this.focusRailAt(e-1)}}}get railItems(){return this.items??[]}get orderedRailItems(){return b(this.railItems)}disconnectedCallback(){this.el.removeEventListener("transitionend",this.handleTransitionEnd);this.el.removeEventListener("transitioncancel",this.handleTransitionEnd);this.el.removeEventListener("dsAction",this.handleComposedHeaderAction);this.clearTransitionCompletion();this.motionEnableGeneration+=1;this.fullViewObserver?.disconnect();this.fullViewObserver=null}presentationChanged(s,t){if(s===t)return;if(this.el.getAttribute("presentation")!==s){this.el.setAttribute("presentation",s)}const o=++this.presentationMotionGeneration;this.presentationMotionSuppressed=true;requestAnimationFrame((()=>{requestAnimationFrame((()=>{if(o!==this.presentationMotionGeneration)return;this.presentationMotionSuppressed=false}))}));if(s==="fullscreen"){this.focusBeforeFullscreen=document.activeElement instanceof e?document.activeElement:null;this.open=true}else if(t==="fullscreen"){const s=this.focusBeforeFullscreen;const e=this.activeHeader().actions?.[0]?.id;requestAnimationFrame((async()=>{if(s?.isConnected){s.focus({preventScroll:true})}const t=s?document.activeElement===s||s.contains(document.activeElement):false;if(!t&&e)await this.focusHeaderAction(e);this.focusBeforeFullscreen=null}))}this.dsPresentationChange.emit({presentation:s})}handleFullscreenEscape(s){if(this.presentation!=="fullscreen"||s.key!=="Escape")return;s.preventDefault();s.stopPropagation();this.presentation="drawer"}deferMotionEnable(){if(this.readyForMotion)return;const s=++this.motionEnableGeneration;requestAnimationFrame((()=>{if(s!==this.motionEnableGeneration)return;requestAnimationFrame((()=>{if(s!==this.motionEnableGeneration)return;this.readyForMotion=true}))}))}connectedCallback(){this.el.addEventListener("transitionend",this.handleTransitionEnd);this.el.addEventListener("transitioncancel",this.handleTransitionEnd);this.el.addEventListener("dsAction",this.handleComposedHeaderAction)}componentWillLoad(){this.restoreLastActiveTool();this.drawerSurfaceRetained=this.open}openChanged(s,e){if(s)this.drawerSurfaceRetained=true;if(this.readyForMotion&&e!==undefined&&e!==s){this.startDrawerTransition(s?"opening":"closing")}else if(!s){this.drawerSurfaceRetained=false}this.deferMotionEnable()}activeToolChanged(){this.persistLastActiveTool();this.deferMotionEnable()}storageKeyChanged(){this.restoreLastActiveTool()}componentDidLoad(){this.deferMotionEnable();this.syncFullViewTools();this.fullViewObserver=new MutationObserver((()=>this.syncFullViewTools()));this.fullViewObserver.observe(this.el,{childList:true,attributes:true,attributeFilter:["slot"]})}itemsChanged(){this.rovingIndex=0;this.reconcileActiveTool();this.deferMotionEnable()}restoreLastActiveTool(){if(!this.storageKey||this.activeTool)return;try{const s=localStorage.getItem(this.storageKey);if(_(s))this.activeTool=s}catch{}}persistLastActiveTool(){if(!this.storageKey||!this.activeTool)return;try{localStorage.setItem(this.storageKey,this.activeTool)}catch{}}clearPersistedTool(){if(!this.storageKey)return;try{localStorage.removeItem(this.storageKey)}catch{}}reconcileActiveTool(){const s=y(this.railItems,this.open,this.activeTool);if(!s.removedTool)return;this.clearPersistedTool();this.open=s.open;this.activeTool=s.activeTool;this.dsToolChange.emit({id:s.removedTool,selected:false})}startDrawerTransition(s){const e=this.el.querySelector(".panel-tools__drawer");if(this.motion!=="idle"){this.finishDrawerTransition();this.ignoreReplacementTerminal=true}this.motion=s;this.dsChromeTransitionStart.emit({source:"panel-tools",phase:s});const t=++this.transitionGeneration;requestAnimationFrame((()=>{requestAnimationFrame((()=>{if(t!==this.transitionGeneration||this.motion!==s)return;if(!e){this.finishDrawerTransition();return}if(this.drawerTransitionAtTerminal(e,s)){this.finishDrawerTransition();return}const o=x(getComputedStyle(e));if(o<=0){this.finishDrawerTransition();return}this.transitionFallbackTimer=window.setTimeout((()=>{this.finishDrawerTransition()}),o)}))}))}drawerTransitionAtTerminal(s,e){const t=s.getBoundingClientRect().width;const o=s.querySelector(".panel-tools__drawer-surface");const n=o?.getBoundingClientRect().width??0;return A(t,n,e)}finishDrawerTransition(){const s=this.motion;const e=s!=="idle";this.clearTransitionCompletion();if(!e)return;this.ignoreReplacementTerminal=false;this.motion="idle";if(s==="closing"&&!this.open){this.drawerSurfaceRetained=false}this.dsChromeTransitionEnd.emit({source:"panel-tools"})}clearTransitionCompletion(){this.transitionGeneration+=1;if(this.transitionFallbackTimer!==null){window.clearTimeout(this.transitionFallbackTimer);this.transitionFallbackTimer=null}}isRailSelected(s){return this.open&&this.activeTool===s}isDrawerPresent(){return this.open||this.drawerSurfaceRetained}isViewActive(s){return this.isDrawerPresent()&&this.activeTool===s}hasFullView(s){return this.fullViewToolIds.includes(s)}syncFullViewTools(){const s=this.orderedRailItems.map((s=>s.id));const e=s.filter((s=>Boolean(this.el.querySelector(`[slot="${s}-view"]`))));if(e.join("|")!==this.fullViewToolIds.join("|"))this.fullViewToolIds=e}headerLabel(){if(!this.isDrawerPresent()||!this.activeTool)return"";const s=this.railItems.find((s=>s.id===this.activeTool));return s?.label??m[this.activeTool]??this.activeTool}resolvedHeaders(){return this.headers??{}}activeHeader(){if(!this.activeTool)return{};return this.resolvedHeaders()[this.activeTool]??{}}async activateTool(s){const e=this.railItems.find((e=>e.id===s));if(!e||e.isInactive)return;this.handleToolChange(s)}async closeDrawer(){if(!this.open)return;const s=this.activeTool;this.open=false;if(s){this.dsToolChange.emit({id:s,selected:false})}}async focusHeaderAction(s){const e=this.el.querySelector(`[data-header-action-id="${CSS.escape(s)}"]`);await(e?.setFocus?.())}focusRailAt(s){const e=this.orderedRailItems;if(!e.length)return;const t=Math.max(0,Math.min(s,e.length-1));if(t===this.rovingIndex)return;this.rovingIndex=t;const o=Array.from(this.el.querySelectorAll(".panel-tools__rail-action .button-icon"));o[t]?.focus({preventScroll:true})}renderRailAction(s,e){const t=s.ariaLabel??s.label??m[s.id]??s.id;return o("ds-tooltip",{key:s.id,label:t,shortcutKey:s.shortcutKey??g[s.id],side:"left",size:"sm"},o("ds-button-unfilled",{variant:"icon",class:"panel-tools__rail-action",icon:s.icon,isActive:this.isRailSelected(s.id),activeFill:false,hasBorder:false,pressScale:false,dot:s.dot??false,isInactive:s.isInactive,focusTabIndex:e===this.rovingIndex?0:-1,"aria-label":t,pressed:this.isRailSelected(s.id),onFocusin:()=>{this.rovingIndex=e},onKeyDown:s=>this.handleRailKeyDown(s,e),onDsClick:()=>this.handleToolChange(s.id)}))}render(){const s=this.headerLabel();const e=this.activeHeader();const t=e.title?.trim()||s;const i=e.actions??[];const a=this.orderedRailItems;const l=a.filter((s=>w(s)==="header"));const r=a.filter((s=>w(s)==="body"));const d=a.filter((s=>w(s)==="footer"));const c=l.length;const h=c+r.length;const p=this.isDrawerPresent();const f=k(this.open,this.motion);const u=Boolean(p&&this.activeTool&&this.hasFullView(this.activeTool));const m=a.map((s=>s.id));return o(n,{key:"993269b05735758d3bd76ab37d0463fd100c8212",class:{"panel-tools":true,"panel-tools--open":this.open,"panel-tools--ready":this.readyForMotion,"panel-tools--motion-opening":this.motion==="opening","panel-tools--motion-closing":this.motion==="closing","panel-tools--drawer-resting":f,"panel-tools--fullscreen":this.presentation==="fullscreen","panel-tools--presentation-snap":this.presentationMotionSuppressed},role:this.presentation==="fullscreen"?"dialog":"complementary","aria-modal":this.presentation==="fullscreen"?"true":undefined,"aria-label":this.toolsLabel},o("div",{key:"cf28c343a7c84d12efe72f9e74375520033d9e57",class:"panel-tools__layout"},o("nav",{key:"843ea60db330923bc42cf8ab2b66973b61d1ed6c",class:"panel-tools__rail","aria-label":this.toolShortcutsLabel},l.length?o("div",{class:"panel-tools__rail-header ds-chrome-row ds-chrome-space--md"},l.map(((s,e)=>this.renderRailAction(s,e)))):null,o("div",{key:"7d746be7dd25f892e504ccf75c6409539230cea5",class:"panel-tools__rail-body ds-chrome-column ds-chrome-space--md ds-scrollbar-hidden"},o("div",{key:"03abed4063fb556f65dbd9be0f52d6faa71f1bed",class:"panel-tools__rail-actions"},r.map(((s,e)=>this.renderRailAction(s,c+e))))),d.length?o("div",{class:"panel-tools__rail-footer ds-chrome-row ds-chrome-space--md"},d.map(((s,e)=>this.renderRailAction(s,h+e)))):null),o("div",{key:"fb6f5277e2a9a28d4d546ac5ed4d1cf7fc0c0fea",class:{"panel-tools__drawer":true,"panel-tools__drawer--visible":p},"aria-hidden":p?null:"true",inert:p?undefined:true},o("div",{key:"319a5b25248209c54b192ae827f971b4acb0f3d3",class:"panel-tools__drawer-surface"},this.presentation!=="fullscreen"||this.fullscreenHeaderMode==="shared"?o("ds-panel-tool-header",{class:"panel-tools__header",heading:t,showBack:e.showBack??false,backIcon:e.backIcon||"ChevronLeft",backAriaLabel:e.backAriaLabel||"Back",showMenu:false,ref:s=>{const e=s;if(e)e.actions=i},onDsBack:()=>{if(this.activeTool)this.dsHeaderBack.emit({tool:this.activeTool})}}):null,o("div",{key:"733ea2eb77a5f6d64e93f6da4db92d20bce8248e",class:"panel-tools__body",hidden:u},m.map((s=>{const e=this.isViewActive(s);return o("div",{class:{"panel-tools__view":true,"panel-tools__view--active":e},hidden:!e},o("slot",{name:s}))}))),o("div",{key:"a8104834f4622dee99ea9e3462a9e0378cb5e627",class:"panel-tools__full-views",hidden:!u},m.map((s=>o("div",{class:{"panel-tools__full-view":true,"panel-tools__full-view--active":this.isViewActive(s)&&this.hasFullView(s)},hidden:!(this.isViewActive(s)&&this.hasFullView(s))},o("slot",{name:`${s}-view`})))))))))}get el(){return this}static get watchers(){return{presentation:[{presentationChanged:0}],open:[{openChanged:0}],activeTool:[{activeToolChanged:0}],storageKey:[{storageKeyChanged:0}],items:[{itemsChanged:0}]}}static get style(){return C()}},[262,"ds-panel-tools",{open:[1540],presentation:[1537],fullscreenHeaderMode:[513,"fullscreen-header-mode"],activeTool:[1537,"active-tool"],items:[16],toolsLabel:[1,"tools-label"],toolShortcutsLabel:[1,"tool-shortcuts-label"],headers:[16],storageKey:[1,"storage-key"],motion:[32],drawerSurfaceRetained:[32],readyForMotion:[32],presentationMotionSuppressed:[32],rovingIndex:[32],fullViewToolIds:[32],activateTool:[64],closeDrawer:[64],focusHeaderAction:[64]},[[10,"keydown","handleFullscreenEscape"]],{presentation:[{presentationChanged:0}],open:[{openChanged:0}],activeTool:[{activeToolChanged:0}],storageKey:[{storageKeyChanged:0}],items:[{itemsChanged:0}]}]);function S(){if(typeof customElements==="undefined"){return}const s=["ds-panel-tools","ds-badge","ds-button-unfilled","ds-icon","ds-loader","ds-panel-tool-header","ds-text","ds-tooltip"];s.forEach((s=>{switch(s){case"ds-panel-tools":if(!customElements.get(i(s))){customElements.define(i(s),z)}break;case"ds-badge":if(!customElements.get(i(s))){l()}break;case"ds-button-unfilled":if(!customElements.get(i(s))){r()}break;case"ds-icon":if(!customElements.get(i(s))){d()}break;case"ds-loader":if(!customElements.get(i(s))){c()}break;case"ds-panel-tool-header":if(!customElements.get(i(s))){h()}break;case"ds-text":if(!customElements.get(i(s))){p()}break;case"ds-tooltip":if(!customElements.get(i(s))){f()}break}}))}S();export{z as P,m as a,T as b,v as c,S as d,b as o,y as r};
2
+ //# sourceMappingURL=p-bxoryr-3.js.map
@@ -0,0 +1,2 @@
1
+ import{p as n,H as t,c as o,h as i,a as s,t as e}from"./index.js";import{b as d,r,c as l}from"./p-DAW6G8Sl.js";import{d as a}from"./p-BsoqsbBh.js";import{d as c}from"./p-BAfG3M8z.js";import{d as u}from"./p-Ca-I2UnB.js";import{d as f}from"./p-Ay1AX7Ql.js";const b=()=>`.sc-ds-button-unfilled-h{--ds-focus-ring-width:var(--dimension-stroke-width-025, 2px);--ds-focus-ring-offset:var(--dimension-space-025, 2px);--ds-focus-ring-color:var(--color-interaction-focus)}.ds-focus-ring.sc-ds-button-unfilled-h,.ds-focus-ring.sc-ds-button-unfilled,.ds-focus-ring-inset.sc-ds-button-unfilled-h,.ds-focus-ring-inset.sc-ds-button-unfilled{outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.ds-focus-ring.sc-ds-button-unfilled-h:focus-visible,.ds-focus-ring.sc-ds-button-unfilled:focus-visible{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring.ds-focus-ring--visible.sc-ds-button-unfilled-h,.ds-focus-ring.ds-focus-ring--visible.sc-ds-button-unfilled{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring-inset.sc-ds-button-unfilled-h:focus-visible,.ds-focus-ring-inset.sc-ds-button-unfilled:focus-visible{outline:none}.ds-focus-ring-inset.sc-ds-button-unfilled-h:focus-visible::after,.ds-focus-ring-inset.sc-ds-button-unfilled:focus-visible::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-button-unfilled-h,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-button-unfilled{outline:none}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-button-unfilled-h::after,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-button-unfilled::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}.ds-interaction-fill.sc-ds-button-unfilled-h,.ds-interaction-fill.sc-ds-button-unfilled{position:relative;z-index:0;cursor:default;--ds-interaction-hover:var(--color-interaction-hover);--ds-interaction-pressed:var(--color-interaction-pressed);--ds-interaction-active:var(--color-interaction-active-brand);--ds-interaction-border-width:0px;--ds-interaction-border-color:transparent}.ds-interaction-fill.sc-ds-button-unfilled-h::before,.ds-interaction-fill.sc-ds-button-unfilled::before,.ds-interaction-fill.sc-ds-button-unfilled-h::after,.ds-interaction-fill.sc-ds-button-unfilled::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none;cursor:inherit;transition:none}.ds-interaction-fill.sc-ds-button-unfilled-h::before,.ds-interaction-fill.sc-ds-button-unfilled::before{z-index:1}.ds-interaction-fill.sc-ds-button-unfilled-h::after,.ds-interaction-fill.sc-ds-button-unfilled::after{z-index:3;box-shadow:inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color)}.ds-interaction-fill--bordered.sc-ds-button-unfilled-h,.ds-interaction-fill--bordered.sc-ds-button-unfilled{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--color-border-secondary)}.ds-interaction-fill--selected.sc-ds-button-unfilled-h::before,.ds-interaction-fill--selected.sc-ds-button-unfilled::before{background:var(--ds-interaction-active)}.ds-interaction-fill--selected.sc-ds-button-unfilled-h,.ds-interaction-fill--selected.sc-ds-button-unfilled{--ds-interaction-dot-ring:var(--ds-interaction-active)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-button-unfilled-h:hover:not(:disabled)::after,.ds-interaction-fill.sc-ds-button-unfilled:hover:not(:disabled)::after{background:var(--ds-interaction-hover)}}.ds-interaction-fill.sc-ds-button-unfilled-h:active:not(:disabled)::after,.ds-interaction-fill.sc-ds-button-unfilled:active:not(:disabled)::after{background:var(--ds-interaction-pressed)}.ds-interaction-fill.sc-ds-button-unfilled-h>.ds-interaction-fill__content.sc-ds-button-unfilled,.ds-interaction-fill.sc-ds-button-unfilled>.ds-interaction-fill__content.sc-ds-button-unfilled,.ds-interaction-fill__content.sc-ds-button-unfilled{position:relative;z-index:2;cursor:inherit}.ds-interaction-fill--on-faint.sc-ds-button-unfilled-h,.ds-interaction-fill--on-faint.sc-ds-button-unfilled{--ds-interaction-active:var(--color-interaction-active)}.ds-interaction-fill--on-medium.sc-ds-button-unfilled-h,.ds-interaction-fill--on-medium.sc-ds-button-unfilled{--ds-interaction-hover:var(--color-interaction-on-medium-background-hover);--ds-interaction-pressed:var(--color-interaction-on-medium-background-pressed);--ds-interaction-active:var(--color-interaction-on-medium-background-active);--ds-focus-ring-color:var(--color-interaction-on-medium-background-focus)}.ds-interaction-fill--on-bold.sc-ds-button-unfilled-h,.ds-interaction-fill--on-bold.sc-ds-button-unfilled{--ds-interaction-hover:var(--color-interaction-on-bold-background-hover);--ds-interaction-pressed:var(--color-interaction-on-bold-background-pressed);--ds-interaction-active:var(--color-interaction-on-bold-background-active);--ds-focus-ring-color:var(--color-interaction-on-bold-background-focus)}.ds-interaction-fill--on-strong.sc-ds-button-unfilled-h,.ds-interaction-fill--on-strong.sc-ds-button-unfilled{--ds-interaction-hover:var(--color-interaction-on-strong-background-hover);--ds-interaction-pressed:var(--color-interaction-on-strong-background-pressed);--ds-interaction-active:var(--color-interaction-on-strong-background-active);--ds-focus-ring-color:var(--color-interaction-on-strong-background-focus)}.ds-interaction-fill--on-translucent.sc-ds-button-unfilled-h,.ds-interaction-fill--on-translucent.sc-ds-button-unfilled{--ds-interaction-hover:var(--color-translucent-interaction-hover);--ds-interaction-pressed:var(--color-translucent-interaction-pressed);--ds-interaction-active:var(--color-translucent-interaction-active);--ds-focus-ring-color:var(--color-translucent-interaction-focus)}.ds-interaction-fill--on-inverted.sc-ds-button-unfilled-h,.ds-interaction-fill--on-inverted.sc-ds-button-unfilled{--ds-interaction-hover:var(--color-inverted-interaction-hover);--ds-interaction-pressed:var(--color-inverted-interaction-pressed);--ds-interaction-active:var(--color-inverted-interaction-active);--ds-focus-ring-color:var(--color-inverted-interaction-focus)}.ds-interaction-fill--on-media.sc-ds-button-unfilled-h,.ds-interaction-fill--on-media.sc-ds-button-unfilled{--ds-interaction-hover:var(--color-media-interaction-hover);--ds-interaction-pressed:var(--color-media-interaction-pressed);--ds-interaction-active:var(--color-media-interaction-active);--ds-focus-ring-color:var(--color-media-interaction-focus)}.ds-interaction-fill--on-always-dark.sc-ds-button-unfilled-h,.ds-interaction-fill--on-always-dark.sc-ds-button-unfilled{--ds-interaction-hover:var(--color-always-dark-interaction-hover);--ds-interaction-pressed:var(--color-always-dark-interaction-pressed);--ds-interaction-active:var(--color-always-dark-interaction-active);--ds-focus-ring-color:var(--color-always-dark-interaction-focus)}.ds-interaction-fill--on-navigation.sc-ds-button-unfilled-h,.ds-interaction-fill--on-navigation.sc-ds-button-unfilled{--ds-interaction-hover:var(--color-navigation-interaction-hover);--ds-interaction-pressed:var(--color-navigation-interaction-pressed);--ds-interaction-active:var(--color-navigation-interaction-active);--ds-focus-ring-color:var(--color-navigation-interaction-focus)}.ds-control-press-scale.sc-ds-button-unfilled{transition:scale var(--effect-motion-short-2)}.ds-control-press-scale.sc-ds-button-unfilled:active:not(:disabled):not(.ds-control-inactive):not([aria-busy='true']){scale:var(--ds-control-press-active-scale, var(--dimension-scale-subtle))}@media (prefers-reduced-motion: reduce){.ds-control-press-scale.sc-ds-button-unfilled,.ds-control-press-scale.sc-ds-button-unfilled:active:not(:disabled):not(.ds-control-inactive):not([aria-busy='true']){scale:none;transition:none}}.ds-control-inactive.sc-ds-button-unfilled-h,.ds-control-inactive.sc-ds-button-unfilled{opacity:var(--effect-opacity-medium);pointer-events:none;cursor:not-allowed}.ds-control--lg.sc-ds-button-unfilled,.ds-control--lg.sc-ds-button-unfilled-h,.ds-control--md.sc-ds-button-unfilled-h,.ds-control--md.sc-ds-button-unfilled,.ds-control--sm.sc-ds-button-unfilled-h,.ds-control--sm.sc-ds-button-unfilled,.ds-control--xs.sc-ds-button-unfilled-h,.ds-control--xs.sc-ds-button-unfilled{--ds-control-radius:var(--dimension-radius-025)}.ds-control--lg.sc-ds-button-unfilled-h,.ds-control--lg.sc-ds-button-unfilled{--ds-control-height:var(--dimension-size-500);--ds-control-icon:var(--dimension-iconography-lg);--ds-control-padding-inline:var(--dimension-space-100);--ds-control-label-inset:var(--dimension-space-050);--ds-control-gap:var(--dimension-space-050)}.ds-control--md.sc-ds-button-unfilled-h,.ds-control--md.sc-ds-button-unfilled{--ds-control-height:var(--dimension-size-400);--ds-control-icon:var(--dimension-iconography-md);--ds-control-padding-inline:var(--dimension-space-075);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-050)}.ds-control--sm.sc-ds-button-unfilled-h,.ds-control--sm.sc-ds-button-unfilled{--ds-control-height:var(--dimension-size-300);--ds-control-icon:var(--dimension-iconography-sm);--ds-control-padding-inline:var(--dimension-space-050);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-025)}.ds-control--xs.sc-ds-button-unfilled-h,.ds-control--xs.sc-ds-button-unfilled{--ds-control-height:var(--dimension-size-200);--ds-control-icon:var(--dimension-iconography-xs);--ds-control-padding-inline:var(--dimension-space-025);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:0}.ds-control-frame.sc-ds-button-unfilled{display:inline-flex;align-items:center;box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400));padding-inline:var(--ds-control-padding-inline, var(--dimension-space-075));gap:var(--ds-control-gap, var(--dimension-space-050));border-radius:var(--ds-control-radius, var(--dimension-radius-025))}.ds-control-icon-box.sc-ds-button-unfilled{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ds-control-icon, var(--dimension-iconography-md));height:var(--ds-control-icon, var(--dimension-iconography-md))}.ds-control-label-box.sc-ds-button-unfilled{min-width:0;padding-inline:var(--ds-control-label-inset, var(--dimension-space-025))}.ds-control-width--hug.sc-ds-button-unfilled-h,.ds-control-width--hug.sc-ds-button-unfilled{width:fit-content;max-width:100%;flex:0 0 auto;align-self:flex-start}.ds-control-width--fill.sc-ds-button-unfilled-h,.ds-control-width--fill.sc-ds-button-unfilled{width:100%;min-width:0;flex:1 1 auto;align-self:stretch}.sc-ds-button-unfilled-h{display:inline-flex;outline:none}.ds-button-host--icon.ds-control-width--hug.sc-ds-button-unfilled-h{width:var(--ds-control-height, var(--dimension-size-400));height:var(--ds-control-height, var(--dimension-size-400));min-width:var(--ds-control-height, var(--dimension-size-400));min-height:var(--ds-control-height, var(--dimension-size-400))}.ds-button-host--icon.ds-control-width--fill.sc-ds-button-unfilled-h{height:var(--ds-control-height, var(--dimension-size-400));min-height:var(--ds-control-height, var(--dimension-size-400))}.ds-control-width--fill.sc-ds-button-unfilled-h .ds-button.sc-ds-button-unfilled{width:100%}.ds-button.sc-ds-button-unfilled{justify-content:center;overflow:hidden;border:none;border-radius:var(--ds-control-radius, var(--dimension-radius-025));cursor:default;-webkit-user-select:none;user-select:none}.ds-button--icon.sc-ds-button-unfilled{width:100%;height:100%;padding:0}.ds-button--rounded.sc-ds-button-unfilled{--ds-control-radius:var(--dimension-radius-half)}.ds-button--expanded.sc-ds-button-unfilled::after,.ds-button--expanded.sc-ds-button-unfilled:hover:not(:disabled)::after{background:var(--ds-interaction-pressed)}.ds-button--bordered.sc-ds-button-unfilled{--ds-interaction-border-width:var(--dimension-stroke-width-012)}.ds-button--bordered.sc-ds-button-unfilled:not(.ds-interaction-fill){box-shadow:inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color)}.ds-button__icon-wrap.sc-ds-button-unfilled,.ds-button__label.sc-ds-button-unfilled,.ds-button__chevron.sc-ds-button-unfilled{position:relative;z-index:2}.ds-button__label.sc-ds-button-unfilled{flex-shrink:0;min-width:0;white-space:nowrap}.ds-button__label--loading.sc-ds-button-unfilled,.ds-button__chevron--loading.sc-ds-button-unfilled{visibility:hidden}.ds-button.sc-ds-button-unfilled>.ds-button__loader-overlay.sc-ds-button-unfilled{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:center;pointer-events:none}.ds-button__dot.sc-ds-button-unfilled{position:absolute;top:0;right:0;z-index:2;pointer-events:none}.sc-ds-button-unfilled-h{--ds-button-unfilled-fg:var(--color-foreground-secondary);--ds-button-unfilled-fg-active:var(--color-foreground-primary);--ds-button-unfilled-dot-ring:var(--color-background-secondary);--ds-button-unfilled-border:var(--color-border-secondary)}.button-unfilled.sc-ds-button-unfilled{background:transparent;color:var(--ds-button-unfilled-fg)}.button-unfilled--active.sc-ds-button-unfilled{color:var(--ds-button-unfilled-fg-active)}.button-unfilled--bordered.sc-ds-button-unfilled{--ds-interaction-border-color:var(--ds-button-unfilled-border)}.button-unfilled--background-medium.sc-ds-button-unfilled{--ds-button-unfilled-fg:var(--color-foreground-on-medium-background-secondary);--ds-button-unfilled-fg-active:var(--color-foreground-on-medium-background-primary);--ds-button-unfilled-dot-ring:var(--color-background-medium-neutral);--ds-button-unfilled-border:var(--color-border-on-medium-background-secondary)}.button-unfilled--background-bold.sc-ds-button-unfilled{--ds-button-unfilled-fg:var(--color-foreground-on-bold-background-secondary);--ds-button-unfilled-fg-active:var(--color-foreground-on-bold-background-primary);--ds-button-unfilled-dot-ring:var(--color-background-bold-neutral);--ds-button-unfilled-border:var(--color-border-on-bold-background-secondary)}.button-unfilled--background-strong.sc-ds-button-unfilled{--ds-button-unfilled-fg:var(--color-foreground-on-strong-background-secondary);--ds-button-unfilled-fg-active:var(--color-foreground-on-strong-background-primary);--ds-button-unfilled-dot-ring:var(--color-background-strong-neutral);--ds-button-unfilled-border:var(--color-border-on-strong-background-secondary)}.button-unfilled--background-translucent.sc-ds-button-unfilled{--ds-button-unfilled-fg:var(--color-translucent-foreground-secondary);--ds-button-unfilled-fg-active:var(--color-translucent-foreground-primary);--ds-button-unfilled-dot-ring:var(--color-translucent-translucent);--ds-button-unfilled-border:var(--color-translucent-border-secondary)}.button-unfilled--background-inverted.sc-ds-button-unfilled{--ds-button-unfilled-fg:var(--color-inverted-foreground-secondary);--ds-button-unfilled-fg-active:var(--color-inverted-foreground-primary);--ds-button-unfilled-dot-ring:var(--color-inverted-background);--ds-button-unfilled-border:var(--color-inverted-border-secondary)}.button-unfilled--background-media.sc-ds-button-unfilled{--ds-button-unfilled-fg:var(--color-media-foreground-secondary);--ds-button-unfilled-fg-active:var(--color-media-foreground-primary);--ds-button-unfilled-dot-ring:var(--color-media-background);--ds-button-unfilled-border:var(--color-media-border-secondary)}.button-unfilled--on-always-dark.sc-ds-button-unfilled{--ds-button-unfilled-fg:var(--color-always-dark-foreground-secondary);--ds-button-unfilled-fg-active:var(--color-always-dark-foreground-primary);--ds-button-unfilled-dot-ring:var(--color-always-dark-background);--ds-button-unfilled-border:var(--color-always-dark-border-secondary)}.button-unfilled.ds-interaction-fill--selected.sc-ds-button-unfilled{--ds-button-unfilled-dot-ring:var(--ds-interaction-active)}`;const h=n(class n extends t{constructor(n){super();if(n!==false){this.__registerHost()}this.dsClick=o(this,"dsClick");this.dsChange=o(this,"dsChange");this.variant="label";this.size="md";this.width="hug";this.label="";this.icon="";this.isActive=false;this.activeFill=true;this.hasBorder=true;this.rounded=false;this.pressScale=true;this.dot=false;this.isInactive=false;this.isLoading=false;this.type="button";this.ariaLabel=null;this.hasMenu=false;this.buttonEl=null;this.handleClick=n=>{if(this.isInactive||this.isLoading){n.preventDefault();n.stopPropagation();return}this.dsClick.emit(n);if(this.pressed!==undefined)this.dsChange.emit(!this.pressed)}}async setFocus(){this.buttonEl?.focus()}get showDot(){return this.variant==="icon"&&this.dot&&!this.isLoading}get resolvedHaspopup(){return this.haspopup??(this.hasMenu?"menu":undefined)}get visuallyActive(){return this.isActive||this.pressed===true||this.expanded===true}get dotRing(){if((this.isActive||this.pressed===true)&&this.activeFill){return"var(--ds-interaction-active)"}return"var(--ds-button-unfilled-dot-ring)"}get accessibleName(){if(this.ariaLabel)return this.ariaLabel;if(this.isLoading&&this.variant==="label"&&this.label)return this.label;return undefined}render(){const n=this.background;const t={"button-unfilled":true,"ds-button":true,"ds-focus-ring-inset":true,"ds-control-press-scale":this.pressScale,"ds-interaction-fill":true,"ds-interaction-fill--selected":(this.isActive||this.pressed===true)&&this.activeFill&&!this.isInactive,"ds-interaction-fill--on-faint":n==="faint","ds-interaction-fill--on-medium":n==="medium","ds-interaction-fill--on-bold":n==="bold","ds-interaction-fill--on-strong":n==="strong","ds-interaction-fill--on-translucent":n==="translucent","ds-interaction-fill--on-inverted":n==="inverted","ds-interaction-fill--on-media":n==="media","ds-interaction-fill--on-always-dark":n==="always-dark","button-unfilled--active":this.visuallyActive,"button-unfilled--expanded":this.expanded===true&&!this.isInactive,"ds-button--expanded":this.expanded===true&&!this.isInactive,"button-unfilled--bordered":this.hasBorder,"ds-button--bordered":this.hasBorder,"button-unfilled--rounded":this.rounded,"ds-button--rounded":this.rounded,"ds-control-inactive":this.isInactive,"ds-control--lg":this.size==="lg","ds-control--md":this.size==="md","ds-control--sm":this.size==="sm","ds-control--xs":this.size==="xs","ds-control-frame":true,"button-unfilled--icon":this.variant==="icon","ds-button--icon":this.variant==="icon","button-unfilled--label":this.variant==="label","button-unfilled--icon-label":this.variant==="icon-label","button-unfilled--background-faint":n==="faint","button-unfilled--background-medium":n==="medium","button-unfilled--background-bold":n==="bold","button-unfilled--background-strong":n==="strong","button-unfilled--background-translucent":n==="translucent","button-unfilled--background-inverted":n==="inverted","button-unfilled--background-media":n==="media","button-unfilled--on-always-dark":n==="always-dark"};return i(s,{key:"5a31acd9315e873d1a08477f75d72c177788f96d",class:{"button-unfilled-host":true,"button-unfilled-host--icon":this.variant==="icon","ds-button-host--icon":this.variant==="icon","ds-control--lg":this.size==="lg","ds-control--md":this.size==="md","ds-control--sm":this.size==="sm","ds-control--xs":this.size==="xs",...l(this.width)},tabIndex:-1},i("button",{key:"c2af3615bd0305eabd41660891f6e8be21aa176e",ref:n=>{this.buttonEl=n??null},type:this.type,class:t,disabled:this.isInactive,tabIndex:this.focusTabIndex??0,"aria-label":this.accessibleName,"aria-busy":this.isLoading?"true":undefined,"aria-disabled":this.isLoading?"true":undefined,"aria-controls":this.controls,"aria-expanded":this.expanded===undefined?undefined:String(this.expanded),"aria-haspopup":this.resolvedHaspopup,"aria-pressed":this.pressed===undefined?undefined:String(this.pressed),onPointerDown:n=>d(n,this.pressScale&&!this.isInactive&&!this.isLoading),onClick:this.handleClick},r({namespace:"button-unfilled",variant:this.variant,size:this.size,label:this.label,icon:this.icon,hasMenu:this.hasMenu,isLoading:this.isLoading,dot:{visible:this.showDot,background:this.dotRing}})))}get el(){return this}static get style(){return b()}},[2,"ds-button-unfilled",{variant:[1],size:[1],width:[1],label:[1],icon:[1],isActive:[4,"is-active"],activeFill:[4,"active-fill"],hasBorder:[4,"has-border"],rounded:[4],pressScale:[4,"press-scale"],dot:[4],isInactive:[4,"is-inactive"],isLoading:[4,"is-loading"],type:[1],background:[1],ariaLabel:[1,"aria-label"],controls:[1],expanded:[4],haspopup:[1],pressed:[4],hasMenu:[4,"has-menu"],focusTabIndex:[2,"tab-index"],setFocus:[64]}]);function v(){if(typeof customElements==="undefined"){return}const n=["ds-button-unfilled","ds-badge","ds-icon","ds-loader","ds-text"];n.forEach((n=>{switch(n){case"ds-button-unfilled":if(!customElements.get(e(n))){customElements.define(e(n),h)}break;case"ds-badge":if(!customElements.get(e(n))){a()}break;case"ds-icon":if(!customElements.get(e(n))){c()}break;case"ds-loader":if(!customElements.get(e(n))){u()}break;case"ds-text":if(!customElements.get(e(n))){f()}break}}))}v();export{h as B,v as d};
2
+ //# sourceMappingURL=p-eAfNzlMa.js.map