@ds-mo/ui 14.31.3 → 14.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.package-ready.json +1 -1
- package/dist/agent-patterns.json +15 -5
- package/dist/agent.json +228 -23
- package/dist/angular/ds-bar-page-title.d.ts +28 -0
- package/dist/angular/ds-bar-page-title.js +48 -0
- package/dist/angular/ds-card-settings-scope.d.ts +1 -1
- package/dist/angular/ds-card-settings-scope.js +3 -3
- package/dist/angular/index.d.ts +1 -1
- package/dist/angular/index.js +1 -0
- package/dist/angular/proxies.d.ts +1 -0
- package/dist/angular/proxies.js +1 -0
- package/dist/components/ds-agent-questionnaire.js +1 -1
- package/dist/components/ds-agent-response.js +1 -1
- package/dist/components/ds-avatar.js +1 -1
- package/dist/components/ds-avatar.js.map +1 -1
- package/dist/components/ds-banner.js +1 -1
- package/dist/components/ds-banner.js.map +1 -1
- package/dist/components/ds-bar-action.js +1 -1
- package/dist/components/ds-bar-action.js.map +1 -1
- package/dist/components/ds-bar-nav.js +1 -1
- package/dist/components/ds-bar-page-title.d.ts +11 -0
- package/dist/components/ds-bar-page-title.js +2 -0
- package/dist/components/ds-bar-page-title.js.map +1 -0
- package/dist/components/ds-bar-title.js +1 -1
- package/dist/components/ds-bar-workflow.js +1 -1
- package/dist/components/ds-bar-workflow.js.map +1 -1
- package/dist/components/ds-button-filled.js +1 -1
- package/dist/components/ds-button-unfilled.js +1 -1
- package/dist/components/ds-card-chart.js +1 -1
- package/dist/components/ds-card-chart.js.map +1 -1
- package/dist/components/ds-card-navigation.js +1 -1
- package/dist/components/ds-card-navigation.js.map +1 -1
- package/dist/components/ds-card-overview.js +1 -1
- package/dist/components/ds-card-overview.js.map +1 -1
- package/dist/components/ds-card-setting.js +1 -1
- package/dist/components/ds-card-setting.js.map +1 -1
- package/dist/components/ds-card-settings-scope.js +1 -1
- package/dist/components/ds-card-settings-scope.js.map +1 -1
- package/dist/components/ds-chart-legend.js +1 -1
- package/dist/components/ds-chart-legend.js.map +1 -1
- package/dist/components/ds-chart.js +1 -1
- package/dist/components/ds-checkbox.js +1 -1
- package/dist/components/ds-chip.js +1 -1
- package/dist/components/ds-code-block.js +1 -1
- package/dist/components/ds-conversation-list-item.js +1 -1
- package/dist/components/ds-conversation-list-item.js.map +1 -1
- package/dist/components/ds-conversation-list-section.js +1 -1
- package/dist/components/ds-empty-state.js +1 -1
- package/dist/components/ds-field.js +1 -1
- package/dist/components/ds-filter-menu.js +1 -1
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-markdown.js +1 -1
- package/dist/components/ds-menu.js +1 -1
- package/dist/components/ds-message-actions.js +1 -1
- package/dist/components/ds-message-composer.js +1 -1
- package/dist/components/ds-message-scroller.js +1 -1
- package/dist/components/ds-message.js +1 -1
- package/dist/components/ds-mobile-bar-nav.js +1 -1
- package/dist/components/ds-mobile-header.js +1 -1
- package/dist/components/ds-mobile-section-switcher.js +1 -1
- package/dist/components/ds-mobile-sheet-nav.js +1 -1
- package/dist/components/ds-modal.js +1 -1
- package/dist/components/ds-pagination.js +1 -1
- package/dist/components/ds-panel-nav.js +1 -1
- package/dist/components/ds-panel-sub-nav.js +1 -1
- package/dist/components/ds-panel-sub-nav.js.map +1 -1
- package/dist/components/ds-panel-tool-header.js +1 -1
- package/dist/components/ds-panel-tool-search.js +1 -1
- package/dist/components/ds-panel-tool-search.js.map +1 -1
- package/dist/components/ds-panel-tools.js +1 -1
- package/dist/components/ds-paper-texture.js +1 -1
- package/dist/components/ds-radio.js +1 -1
- package/dist/components/ds-score.js +1 -1
- package/dist/components/ds-select.js +1 -1
- package/dist/components/ds-shell-app.js +1 -1
- package/dist/components/ds-shell-app.js.map +1 -1
- package/dist/components/ds-shell-page.js +1 -1
- package/dist/components/ds-shell-tools.js +1 -1
- package/dist/components/ds-skeleton.js +1 -1
- package/dist/components/ds-swatch-picker.js +1 -1
- package/dist/components/ds-tab-group.js +1 -1
- package/dist/components/ds-table-filter.js +1 -1
- package/dist/components/ds-table-group.js +1 -1
- package/dist/components/ds-table-group.js.map +1 -1
- package/dist/components/ds-table-saved-views.js +1 -1
- package/dist/components/ds-table-search.js +1 -1
- package/dist/components/ds-table-search.js.map +1 -1
- package/dist/components/ds-table-sort.js +1 -1
- package/dist/components/ds-table-toolbar.js +1 -1
- package/dist/components/ds-table.js +1 -1
- package/dist/components/ds-table.js.map +1 -1
- package/dist/components/ds-tag.js +1 -1
- package/dist/components/ds-textarea.js +1 -1
- package/dist/components/ds-textarea.js.map +1 -1
- package/dist/components/ds-toast.js +1 -1
- package/dist/components/ds-toast.js.map +1 -1
- package/dist/components/ds-tooltip-chart.js +1 -1
- package/dist/components/ds-tooltip.js +1 -1
- package/dist/components/ds-typing-indicator.js +1 -1
- package/dist/components/p--VKxPUoV.js +2 -0
- package/dist/components/p--VKxPUoV.js.map +1 -0
- package/dist/components/p-14sMoeTr.js +2 -0
- package/dist/components/p-14sMoeTr.js.map +1 -0
- package/dist/components/p-9rzbZP-F.js +2 -0
- package/dist/components/p-9rzbZP-F.js.map +1 -0
- package/dist/components/p-B5W_r4vV.js +2 -0
- package/dist/components/p-B5W_r4vV.js.map +1 -0
- package/dist/components/{p-DjF2m7bf.js → p-B8ZonS3S.js} +2 -2
- package/dist/components/{p-BrW77sNB.js → p-B9WwU5vu.js} +2 -2
- package/dist/components/p-BCRPg1Xs.js +2 -0
- package/dist/components/p-BCRPg1Xs.js.map +1 -0
- package/dist/components/{p-KV3_5Cgo.js → p-BFd18avA.js} +2 -2
- package/dist/components/{p-DLDFPn9F.js → p-BGGIEmQj.js} +2 -2
- package/dist/components/p-BG_n-zQT.js +2 -0
- package/dist/components/p-BG_n-zQT.js.map +1 -0
- package/dist/components/p-BINlT3xz.js +2 -0
- package/dist/components/p-BINlT3xz.js.map +1 -0
- package/dist/components/p-BPTqn5zL.js +2 -0
- package/dist/components/p-BPTqn5zL.js.map +1 -0
- package/dist/components/p-BnWxbhFP.js +2 -0
- package/dist/components/p-BnWxbhFP.js.map +1 -0
- package/dist/components/{p-DhibZEq-.js → p-BonnrRtE.js} +2 -2
- package/dist/components/p-BxduVc5g.js +2 -0
- package/dist/components/p-BxduVc5g.js.map +1 -0
- package/dist/components/p-CD9AbaHQ.js +2 -0
- package/dist/components/p-CD9AbaHQ.js.map +1 -0
- package/dist/components/p-CN3roaMg.js +2 -0
- package/dist/components/p-CN3roaMg.js.map +1 -0
- package/dist/components/p-CR7G2BI6.js +2 -0
- package/dist/components/p-CR7G2BI6.js.map +1 -0
- package/dist/components/p-CakRq92x.js +2 -0
- package/dist/components/p-CakRq92x.js.map +1 -0
- package/dist/components/p-CumGY3uN.js +2 -0
- package/dist/components/p-CumGY3uN.js.map +1 -0
- package/dist/components/p-D59xX7JN.js +2 -0
- package/dist/components/p-D59xX7JN.js.map +1 -0
- package/dist/components/p-DFWJmuaR.js +2 -0
- package/dist/components/p-DFWJmuaR.js.map +1 -0
- package/dist/components/p-DGQUm3WL.js +2 -0
- package/dist/components/p-DGQUm3WL.js.map +1 -0
- package/dist/components/{p-DmTnBu5r.js → p-DJHshyyC.js} +2 -2
- package/dist/components/{p-BtUYEMwA.js → p-DPPM5T7q.js} +2 -2
- package/dist/components/p-DVRL3oem.js +2 -0
- package/dist/components/p-DVRL3oem.js.map +1 -0
- package/dist/components/p-DceM6xWR.js +2 -0
- package/dist/components/p-DceM6xWR.js.map +1 -0
- package/dist/components/p-Dhw_W8nk.js +2 -0
- package/dist/components/p-Dhw_W8nk.js.map +1 -0
- package/dist/components/{p-pkGqqLm-.js → p-DwxKwC5i.js} +2 -2
- package/dist/components/{p-DnhDgPJv.js → p-DzHXk0IG.js} +2 -2
- package/dist/components/p-OHT7lQVt.js +2 -0
- package/dist/components/p-OHT7lQVt.js.map +1 -0
- package/dist/components/{p-ln3dJxQT.js → p-P60MGUqZ.js} +2 -2
- package/dist/components/{p-Bu-gu0mN.js → p-UxIgD24y.js} +2 -2
- package/dist/components/{p-BiIDQ5RW.js → p-YFrD62Ml.js} +2 -2
- package/dist/components/p-gR6G5azA.js +2 -0
- package/dist/components/p-gR6G5azA.js.map +1 -0
- package/dist/components/{p-ehZFKett.js → p-oFbI_M5B.js} +2 -2
- package/dist/components/p-r5td84fg.js +2 -0
- package/dist/components/p-r5td84fg.js.map +1 -0
- package/dist/components/p-skVhQk9d.js +2 -0
- package/dist/components/p-skVhQk9d.js.map +1 -0
- package/dist/components/p-z7Zj26BA.js +2 -0
- package/dist/components/p-z7Zj26BA.js.map +1 -0
- package/dist/components/{p-YDUM8xDg.js → p-zunBF381.js} +2 -2
- package/dist/docs/components.json +584 -38
- package/dist/mcp-data/registry/avatar.json +1 -1
- package/dist/mcp-data/registry/banner.json +1 -1
- package/dist/mcp-data/registry/bar-action.json +5 -5
- package/dist/mcp-data/registry/bar-nav.json +1 -1
- package/dist/mcp-data/registry/bar-page-title.json +433 -0
- package/dist/mcp-data/registry/bar-title.json +21 -5
- package/dist/mcp-data/registry/bar-workflow.json +1 -1
- package/dist/mcp-data/registry/button-filled.json +1 -1
- package/dist/mcp-data/registry/button-unfilled.json +1 -1
- package/dist/mcp-data/registry/card-chart.json +1 -1
- package/dist/mcp-data/registry/card-navigation.json +1 -1
- package/dist/mcp-data/registry/card-overview.json +1 -1
- package/dist/mcp-data/registry/card-setting.json +1 -1
- package/dist/mcp-data/registry/card-settings-scope.json +23 -5
- package/dist/mcp-data/registry/chart-legend.json +1 -1
- package/dist/mcp-data/registry/checkbox.json +1 -1
- package/dist/mcp-data/registry/chip.json +3 -2
- package/dist/mcp-data/registry/conversation-list-item.json +1 -1
- package/dist/mcp-data/registry/filter-menu.json +1 -1
- package/dist/mcp-data/registry/input.json +1 -1
- package/dist/mcp-data/registry/menu.json +1 -1
- package/dist/mcp-data/registry/mobile-section-switcher.json +1 -1
- package/dist/mcp-data/registry/mobile-sheet-nav.json +1 -1
- package/dist/mcp-data/registry/modal.json +1 -1
- package/dist/mcp-data/registry/pagination.json +10 -10
- package/dist/mcp-data/registry/panel-nav.json +1 -1
- package/dist/mcp-data/registry/panel-sub-nav.json +1 -1
- package/dist/mcp-data/registry/panel-tool-header.json +1 -1
- package/dist/mcp-data/registry/panel-tool-search.json +1 -1
- package/dist/mcp-data/registry/panel-tools.json +4 -2
- package/dist/mcp-data/registry/radio.json +1 -1
- package/dist/mcp-data/registry/registry.json +230 -22
- package/dist/mcp-data/registry/select.json +1 -1
- package/dist/mcp-data/registry/shell-app.json +9 -7
- package/dist/mcp-data/registry/skeleton.json +1 -1
- package/dist/mcp-data/registry/tab-group.json +1 -1
- package/dist/mcp-data/registry/table-group.json +1 -1
- package/dist/mcp-data/registry/table-search.json +1 -1
- package/dist/mcp-data/registry/table.json +2 -2
- package/dist/mcp-data/registry/tag.json +1 -1
- package/dist/mcp-data/registry/textarea.json +1 -1
- package/dist/mcp-data/registry/toast.json +1 -1
- package/dist/mcp-data/registry/tooltip-chart.json +1 -1
- package/dist/mcp-data/registry/tooltip.json +1 -1
- package/dist/react/components.d.ts +1 -0
- package/dist/react/components.js +1 -0
- package/dist/react/ds-bar-page-title.d.ts +14 -0
- package/dist/react/ds-bar-page-title.js +16 -0
- package/dist/styles/table.css +1 -1
- package/dist/types/components/BarPageTitle/BarPageTitle.d.ts +124 -0
- package/dist/types/components/BarPageTitle/index.d.ts +2 -0
- package/dist/types/components/BarTitle/BarTitle.d.ts +1 -7
- package/dist/types/components/BarTitle/bar-title-action-chrome.d.ts +76 -0
- package/dist/types/components/BarTitle/bar-title-actions.d.ts +1 -0
- package/dist/types/components/BarTitle/bar-title-sections.d.ts +11 -0
- package/dist/types/components/CardSettingsScope/CardSettingsScope.d.ts +3 -1
- package/dist/types/components/ShellApp/ShellApp.d.ts +1 -0
- package/dist/types/components.d.ts +181 -4
- package/dist/vue/components.d.ts +1 -0
- package/dist/vue/components.js +1 -0
- package/dist/vue/ds-bar-page-title.d.ts +3 -0
- package/dist/vue/ds-bar-page-title.js +26 -0
- package/dist/vue/ds-card-settings-scope.js +1 -0
- package/package.json +1 -1
- package/dist/components/p-B4ZrhWSH.js +0 -2
- package/dist/components/p-B4ZrhWSH.js.map +0 -1
- package/dist/components/p-BTsFFzfR.js +0 -2
- package/dist/components/p-BTsFFzfR.js.map +0 -1
- package/dist/components/p-BpSPAlOx.js +0 -2
- package/dist/components/p-BpSPAlOx.js.map +0 -1
- package/dist/components/p-C-MaZPyA.js +0 -2
- package/dist/components/p-C-MaZPyA.js.map +0 -1
- package/dist/components/p-CB5-uIY2.js +0 -2
- package/dist/components/p-CB5-uIY2.js.map +0 -1
- package/dist/components/p-CG4Fp3SY.js +0 -2
- package/dist/components/p-CG4Fp3SY.js.map +0 -1
- package/dist/components/p-CHCsDvJK.js +0 -2
- package/dist/components/p-CHCsDvJK.js.map +0 -1
- package/dist/components/p-CImwNex7.js +0 -2
- package/dist/components/p-CImwNex7.js.map +0 -1
- package/dist/components/p-CNZwk176.js +0 -2
- package/dist/components/p-CNZwk176.js.map +0 -1
- package/dist/components/p-CSZlbQ8_.js +0 -2
- package/dist/components/p-CSZlbQ8_.js.map +0 -1
- package/dist/components/p-CVNYRTEH.js +0 -2
- package/dist/components/p-CVNYRTEH.js.map +0 -1
- package/dist/components/p-D3sJXjcg.js +0 -2
- package/dist/components/p-D3sJXjcg.js.map +0 -1
- package/dist/components/p-DFOhxUQP.js +0 -2
- package/dist/components/p-DFOhxUQP.js.map +0 -1
- package/dist/components/p-DI7qbahC.js +0 -2
- package/dist/components/p-DI7qbahC.js.map +0 -1
- package/dist/components/p-DP75OhfU.js +0 -2
- package/dist/components/p-DP75OhfU.js.map +0 -1
- package/dist/components/p-DR1jV6Q5.js +0 -2
- package/dist/components/p-DR1jV6Q5.js.map +0 -1
- package/dist/components/p-DuJuqbcg.js +0 -2
- package/dist/components/p-DuJuqbcg.js.map +0 -1
- package/dist/components/p-E3RCUE7a.js +0 -2
- package/dist/components/p-E3RCUE7a.js.map +0 -1
- package/dist/components/p-JuKGR7Ay.js +0 -2
- package/dist/components/p-JuKGR7Ay.js.map +0 -1
- package/dist/components/p-MuZ6B9gu.js +0 -2
- package/dist/components/p-MuZ6B9gu.js.map +0 -1
- package/dist/components/p-Ui0Ir5li.js +0 -2
- package/dist/components/p-Ui0Ir5li.js.map +0 -1
- package/dist/components/p-eAX_M_QY.js +0 -2
- package/dist/components/p-eAX_M_QY.js.map +0 -1
- package/dist/components/p-eaCtnww1.js +0 -2
- package/dist/components/p-eaCtnww1.js.map +0 -1
- /package/dist/components/{p-DjF2m7bf.js.map → p-B8ZonS3S.js.map} +0 -0
- /package/dist/components/{p-BrW77sNB.js.map → p-B9WwU5vu.js.map} +0 -0
- /package/dist/components/{p-KV3_5Cgo.js.map → p-BFd18avA.js.map} +0 -0
- /package/dist/components/{p-DLDFPn9F.js.map → p-BGGIEmQj.js.map} +0 -0
- /package/dist/components/{p-DhibZEq-.js.map → p-BonnrRtE.js.map} +0 -0
- /package/dist/components/{p-DmTnBu5r.js.map → p-DJHshyyC.js.map} +0 -0
- /package/dist/components/{p-BtUYEMwA.js.map → p-DPPM5T7q.js.map} +0 -0
- /package/dist/components/{p-pkGqqLm-.js.map → p-DwxKwC5i.js.map} +0 -0
- /package/dist/components/{p-DnhDgPJv.js.map → p-DzHXk0IG.js.map} +0 -0
- /package/dist/components/{p-ln3dJxQT.js.map → p-P60MGUqZ.js.map} +0 -0
- /package/dist/components/{p-Bu-gu0mN.js.map → p-UxIgD24y.js.map} +0 -0
- /package/dist/components/{p-BiIDQ5RW.js.map → p-YFrD62Ml.js.map} +0 -0
- /package/dist/components/{p-ehZFKett.js.map → p-oFbI_M5B.js.map} +0 -0
- /package/dist/components/{p-YDUM8xDg.js.map → p-zunBF381.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["resolvePromiseValue","value","input","resolved","description","ToastManagerImpl","constructor","this","records","listeners","Set","nextId","add","options","id","existingIndex","findIndex","record","title","trim","console","warn","current","updated","priority","transitionStatus","closeReason","undefined","updateKey","timerKey","filter","_","index","emit","update","updates","restartsTimer","Object","prototype","hasOwnProperty","call","type","map","recordIndex","close","reason","closing","onClose","toast","closeAll","promise","promiseValue","loading","timeout","success","error","failure","subscribe","listener","getSnapshot","delete","activate","find","candidate","remove","context","notifyRemove","onRemove","snapshot","createToastManager","defaultManagerKey","Symbol","for","globalScope","globalThis","existingManager","toastManager","toastCss","SWIPE_THRESHOLD","SWIPE_REVERSE_CANCEL_THRESHOLD","GLOBAL_STACK_HOVER","INTERACTIVE_SWIPE_SELECTOR","attachedManagers","WeakMap","connectedToastRegions","activeToastRegion","toastInstanceCounter","Toast","__stencil_proxyCustomElement","HTMLElement","registerHost","manager","defaultToastManager","limit","TOKEN_DEFAULTS","animationDelayLong2","label","closeLabel","avoidMobileShellBar","swipeDirections","expanded","keyboardActive","swipe","layoutVersion","instanceId","domIds","Map","timers","closeWatchdogs","closeFrames","closeEvents","activationFrames","pauseReasons","hoveredIds","heights","measuredUpdateKeys","anchoredPositions","dismissedSwipeDirections","observedElements","pendingRemovals","unsubscribe","attachedManager","previousFocus","resizeObserver","mutationObserver","layoutFrame","activeSwipe","nextDomId","connected","pendingHoverLeave","handleWindowBlur","pauseTimers","handleWindowFocus","resumeTimers","handleVisibilityChange","document","hidden","handleFocusIn","active","activeElement","matches","handleFocusOut","event","next","relatedTarget","Node","el","contains","size","handleDocumentKeyDown","key","eligible","Array","from","region","activeRecords","length","target","preventDefault","regionElement","focus","handleRegionKeyDown","positioner","closest","dataset","shiftKey","restorePreviousFocus","handleWindowResize","clear","scheduleLayout","requestAnimationFrame","measureLayout","connectedCallback","connect","componentDidLoad","ResizeObserver","MutationObserver","observe","body","childList","subtree","attachManager","window","addEventListener","componentDidRender","syncObservedElements","flushPendingRemovals","disconnectedCallback","detachManager","resetManagerState","disconnect","cancelAnimationFrame","removeEventListener","remaining","onManagerChange","onTimeoutChange","timer","values","handle","clearTimeout","syncTimers","attached","get","set","syncLifecycle","clearAllTimers","frame","querySelectorAll","anchor","resolveAnchor","element","has","unobserve","pending","splice","dsToastRemove","recordIds","hasEndingRecords","some","watchdog","keys","ensureDomId","clearToastTimer","beginRemoval","closeFrame","activeIds","duration","resolveToastTimeout","existing","startedAt","isPaused","startToastTimer","Math","max","resolveCssTimeMs","Date","now","setTimeout","wasPaused","dsToastClose","moveFocusAfterClose","resolveMotionTimeMs","motionShort3","animationDurationShort3","queueMicrotask","completeRemoval","push","handleAnimationComplete","bindAnimationCancel","handlePointerEnter","handlePointerLeave","querySelector","positionerElement","control","setFocus","handleAction","detail","originalEvent","dsToastAction","action","onAction","data","handlePointerDown","button","surface","currentTarget","setPointerCapture","pointerId","pointerType","startX","clientX","startY","clientY","maxDistance","cancelled","axis","x","y","handlePointerMove","dx","dy","abs","horizontal","direction","allowed","includes","rawDistance","distance","sqrt","signed","cancelSwipe","handlePointerUp","shouldDismiss","wasTouch","handlePointerCancel","touchAction","vertical","measureNaturalHeight","expandedWidth","previousWidth","style","width","previousTransition","transition","previousHeight","height","getBoundingClientRect","changed","needsHeightMeasurement","rect","sideOffset","resolveCssLengthPx","space050","alignOffset","position","computeAnchoredPosition","anchorRect","popupWidth","popupHeight","side","align","sideOffsetPx","alignOffsetPx","viewportPadPx","space200","viewportWidth","innerWidth","viewportHeight","innerHeight","collisionRect","resolveAnchoredOverlayBoundaryRect","resolvedSide","getElementById","globalLayout","globalRecords","offset","visibleIndex","gap","layouts","forEach","domIndex","limited","renderToast","layout","domId","titleId","descriptionId","swipeDirection","anchored","anchoredPosition","hiddenHighPriority","focusTabIndex","toastHeight","h","ref","class","String","inert","zIndex","left","top","onAnimationEnd","role","onPointerDown","onPointerMove","onPointerUp","onPointerCancel","onPointerEnter","onPointerLeave","as","variant","color","textId","ariaLabel","hasBorder","onDsClick","icon","activeFill","render","globalLayouts","anchoredRecords","highPriority","Host","tabIndex","onFocusin","onFocusout","onKeyDown","Boolean","join"],"sources":["src/wc/toast/toast-manager.ts","src/wc/components/Toast/Toast.css?tag=ds-toast&encapsulation=scoped","src/wc/components/Toast/Toast.tsx"],"sourcesContent":["import type {\n ToastCloseContext,\n ToastCloseReason,\n ToastListener,\n ToastManager,\n ToastOptions,\n ToastPromiseOptions,\n ToastPromiseValue,\n ToastRecord,\n} from './toast-types';\n\nfunction resolvePromiseValue<Value, Data>(\n value: ToastPromiseValue<Data> | ((input: Value) => ToastPromiseValue<Data>),\n input: Value\n): ToastOptions<Data> {\n const resolved = typeof value === 'function' ? value(input) : value;\n return typeof resolved === 'string' ? { description: resolved } : resolved;\n}\n\nclass ToastManagerImpl<Data = unknown> implements ToastManager<Data> {\n private records: ToastRecord<Data>[] = [];\n private listeners = new Set<ToastListener<Data>>();\n private nextId = 0;\n\n add(options: ToastOptions<Data>): string {\n const id = options.id || `ds-toast-${++this.nextId}`;\n const existingIndex = this.records.findIndex(record => record.id === id);\n\n if (!options.title?.trim() && !options.description?.trim()) {\n console.warn(`[ds-toast] Toast \"${id}\" should provide a title or description.`);\n }\n\n if (existingIndex >= 0) {\n const current = this.records[existingIndex];\n const updated: ToastRecord<Data> = {\n ...current,\n ...options,\n id,\n priority: options.priority ?? current.priority,\n transitionStatus: 'active',\n closeReason: undefined,\n updateKey: current.updateKey + 1,\n timerKey: current.timerKey + 1,\n };\n this.records = [updated, ...this.records.filter((_, index) => index !== existingIndex)];\n this.emit();\n return id;\n }\n\n const record: ToastRecord<Data> = {\n ...options,\n id,\n priority: options.priority ?? 'low',\n transitionStatus: 'starting',\n updateKey: 0,\n timerKey: 0,\n };\n this.records = [record, ...this.records];\n this.emit();\n return id;\n }\n\n update(id: string, updates: Partial<ToastOptions<Data>>): void {\n const index = this.records.findIndex(record => record.id === id);\n if (index < 0) return;\n const current = this.records[index];\n const restartsTimer =\n Object.prototype.hasOwnProperty.call(updates, 'timeout') ||\n (current.type === 'loading' && updates.type !== undefined && updates.type !== 'loading');\n const updated: ToastRecord<Data> = {\n ...current,\n ...updates,\n id,\n priority: updates.priority ?? current.priority,\n updateKey: current.updateKey + 1,\n timerKey: restartsTimer ? current.timerKey + 1 : current.timerKey,\n };\n this.records = this.records.map((record, recordIndex) =>\n recordIndex === index ? updated : record\n );\n this.emit();\n }\n\n close(id: string, reason: ToastCloseReason = 'programmatic'): void {\n const index = this.records.findIndex(record => record.id === id);\n if (index < 0 || this.records[index].transitionStatus === 'ending') return;\n\n const closing: ToastRecord<Data> = {\n ...this.records[index],\n transitionStatus: 'ending',\n closeReason: reason,\n };\n this.records = this.records.map((record, recordIndex) =>\n recordIndex === index ? closing : record\n );\n this.emit();\n closing.onClose?.({ id, reason, toast: closing });\n }\n\n closeAll(reason: ToastCloseReason = 'programmatic'): void {\n for (const record of [...this.records]) this.close(record.id, reason);\n }\n\n async promise<Value>(\n promiseValue: PromiseLike<Value>,\n options: ToastPromiseOptions<Value, Data>\n ): Promise<Value> {\n const loading = resolvePromiseValue(options.loading, undefined as Value);\n const id = this.add({\n ...loading,\n type: loading.type ?? 'loading',\n timeout: 0,\n });\n\n try {\n const value = await promiseValue;\n const success = resolvePromiseValue(options.success, value);\n this.update(id, {\n ...success,\n type: success.type ?? 'success',\n timeout: success.timeout,\n });\n return value;\n } catch (error) {\n const failure = resolvePromiseValue(options.error, error);\n this.update(id, {\n ...failure,\n type: failure.type ?? 'error',\n timeout: failure.timeout,\n });\n throw error;\n }\n }\n\n subscribe(listener: ToastListener<Data>): () => void {\n this.listeners.add(listener);\n listener(this.getSnapshot());\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n getSnapshot(): readonly ToastRecord<Data>[] {\n return this.records.map(record => ({ ...record }));\n }\n\n activate(id: string): void {\n const record = this.records.find(candidate => candidate.id === id);\n if (!record || record.transitionStatus !== 'starting') return;\n this.records = this.records.map(candidate =>\n candidate.id === id ? { ...candidate, transitionStatus: 'active' } : candidate\n );\n this.emit();\n }\n\n remove(id: string): ToastCloseContext<Data> | null {\n const record = this.records.find(candidate => candidate.id === id);\n if (!record || record.transitionStatus !== 'ending') return null;\n const reason = record.closeReason ?? 'programmatic';\n this.records = this.records.filter(candidate => candidate.id !== id);\n this.emit();\n const context: ToastCloseContext<Data> = { id, reason, toast: record };\n return context;\n }\n\n notifyRemove(context: ToastCloseContext<Data>): void {\n const { toast } = context;\n toast.onRemove?.(context);\n }\n\n private emit(): void {\n const snapshot = this.getSnapshot();\n for (const listener of this.listeners) listener(snapshot);\n }\n}\n\nexport function createToastManager<Data = unknown>(): ToastManager<Data> {\n return new ToastManagerImpl<Data>();\n}\n\nconst defaultManagerKey = Symbol.for('@ds-mo/ui/default-toast-manager');\nconst globalScope = globalThis as typeof globalThis & Record<PropertyKey, unknown>;\nconst existingManager = globalScope[defaultManagerKey] as ToastManager | undefined;\n\nexport const toastManager: ToastManager = existingManager ?? createToastManager();\n\nif (!existingManager) globalScope[defaultManagerKey] = toastManager;\n","@import '../../utils/visually-hidden.css';\n@import '../../utils/forced-colors.css';\n\n:host {\n display: contents;\n}\n\n.toast-region {\n position: fixed;\n inset: 0;\n z-index: var(--dimension-z-index-floating);\n pointer-events: none;\n outline: none;\n}\n\n.toast-viewport {\n position: absolute;\n right: var(--dimension-space-200);\n bottom: var(--dimension-space-200);\n display: grid;\n width: min(var(--dimension-card-width-sm), calc(100vw - 2 * var(--dimension-space-200)));\n}\n\n@media (max-width: 767px) {\n :host([avoid-mobile-shell-bar]) .toast-viewport {\n bottom: calc(\n var(--dimension-space-200) + var(--dimension-stroke-width-012) + var(--dimension-space-100) +\n var(--dimension-size-500) + max(var(--dimension-space-100), env(safe-area-inset-bottom))\n );\n }\n}\n\n.toast-positioner {\n grid-area: 1 / 1;\n align-self: end;\n justify-self: center;\n width: 100%;\n pointer-events: auto;\n transform: translateY(calc(-1 * var(--toast-index) * var(--dimension-space-100)));\n transition:\n transform var(--effect-motion-short-3),\n width var(--effect-motion-short-3);\n}\n\n.toast-viewport:not([data-expanded]) .toast-positioner {\n width: calc(100% - 2 * var(--toast-index) * var(--dimension-space-100));\n}\n\n.toast-viewport[data-expanded] .toast-positioner {\n transform: translateY(calc(-1 * var(--toast-offset-y)));\n}\n\n.toast-positioner[data-limited] {\n visibility: hidden;\n pointer-events: none;\n}\n\n.toast-positioner--anchored {\n position: fixed;\n width: min(var(--dimension-card-width-sm), calc(100vw - 2 * var(--dimension-space-200)));\n transform: none;\n}\n\n.toast-positioner--anchored[data-positioned='false'] {\n visibility: hidden;\n}\n\n.toast-surface {\n position: relative;\n display: block;\n box-sizing: border-box;\n width: 100%;\n height: var(--toast-height, auto);\n padding: var(--dimension-space-200);\n overflow: hidden;\n color: var(--color-foreground-primary);\n background-color: var(--color-background-primary);\n border-radius: var(--dimension-radius-050);\n box-shadow: var(--effect-elevation-elevated-floating);\n transform: translate(var(--toast-swipe-movement-x), var(--toast-swipe-movement-y));\n animation: toast-enter var(--effect-motion-short-2) both;\n}\n\n.toast-positioner--ending .toast-surface {\n animation: toast-exit var(--effect-motion-short-3) both;\n}\n\n.toast-surface--swiping {\n transition: none;\n user-select: none;\n}\n\n.toast-content {\n display: flex;\n flex-direction: column;\n min-width: 0;\n padding-inline-end: var(--dimension-size-500);\n transition: opacity var(--effect-motion-short-3);\n}\n\n.toast-copy {\n display: flex;\n flex-direction: column;\n min-width: 0;\n min-height: var(--typography-lineheight-md);\n margin-block: calc(-1 * var(--dimension-space-025));\n gap: var(--dimension-space-050);\n}\n\n.toast-title,\n.toast-description {\n min-width: 0;\n}\n\n.toast-action {\n align-self: start;\n margin-top: calc(var(--dimension-space-200) + var(--dimension-space-025));\n}\n\n.toast-close {\n position: absolute;\n top: var(--dimension-space-100);\n right: var(--dimension-space-100);\n transition: opacity var(--effect-motion-short-3);\n}\n\n.toast-viewport:not([data-expanded]) .toast-positioner[data-behind] .toast-content,\n.toast-viewport:not([data-expanded]) .toast-positioner[data-behind] .toast-close {\n opacity: 0;\n}\n\n@keyframes toast-enter {\n from {\n opacity: 0;\n transform: translateY(var(--dimension-space-100));\n }\n\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes toast-exit {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .toast-positioner,\n .toast-surface,\n .toast-content,\n .toast-close,\n .toast-positioner--ending .toast-surface {\n transition: none;\n animation: none;\n }\n\n .toast-positioner--ending .toast-surface {\n opacity: 0;\n }\n}\n\n@media (forced-colors: active) {\n .toast-surface {\n box-shadow: none;\n outline: var(--dimension-stroke-width-012) solid var(--ds-forced-color-content);\n outline-offset: calc(-1 * var(--dimension-stroke-width-012));\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport {\n resolveCssLengthPx,\n resolveCssTimeMs,\n resolveMotionTimeMs,\n TOKEN_DEFAULTS,\n} from '../../utils';\nimport {\n toastManager as defaultToastManager,\n type ToastActionEventDetail,\n type ToastCloseContext,\n type ToastCloseEventDetail,\n type ToastEventDetail,\n type ToastManager,\n type ToastRecord,\n type ToastSwipeDirection,\n} from '../../toast';\nimport { computeAnchoredPosition } from '../../utils/anchored-position';\nimport { resolveAnchoredOverlayBoundaryRect } from '../../utils/anchored-overlay-boundary';\n\ninterface ToastTimer {\n timerKey: number;\n remaining: number;\n startedAt: number;\n handle: ReturnType<typeof setTimeout> | null;\n}\n\ninterface SwipeState {\n id: string;\n x: number;\n y: number;\n direction?: ToastSwipeDirection;\n}\n\ninterface AnchoredPosition {\n x: number;\n y: number;\n side: 'top' | 'right' | 'bottom' | 'left';\n}\n\ninterface ActiveSwipe {\n id: string;\n pointerId: number;\n pointerType: string;\n startX: number;\n startY: number;\n maxDistance: number;\n cancelled: boolean;\n axis: 'x' | 'y' | null;\n}\n\nconst SWIPE_THRESHOLD = 40;\nconst SWIPE_REVERSE_CANCEL_THRESHOLD = 10;\nconst GLOBAL_STACK_HOVER = '__global-stack__';\nconst INTERACTIVE_SWIPE_SELECTOR =\n 'button,a,input,textarea,select,[role=\"button\"],[data-ds-toast-swipe-ignore]';\n\nconst attachedManagers = new WeakMap<ToastManager, Toast>();\nconst connectedToastRegions = new Set<Toast>();\nlet activeToastRegion: Toast | null = null;\nlet toastInstanceCounter = 0;\n\n@Component({\n tag: 'ds-toast',\n styleUrl: 'Toast.css',\n scoped: true,\n})\nexport class Toast {\n @Element() el!: HTMLElement;\n\n /** Manager that supplies toast records. Assign as a JavaScript property. */\n @Prop() manager: ToastManager = defaultToastManager;\n /** Maximum visible global-stack records. Limited records remain mounted and inert. */\n @Prop() limit: number = 3;\n /** Default auto-dismiss delay. Use 0 for persistent records. */\n @Prop() timeout: number | string = TOKEN_DEFAULTS.animationDelayLong2;\n /** Accessible label for the notification region. */\n @Prop() label: string = 'Notifications';\n /** Localized accessible label for every toast close action. */\n @Prop() closeLabel: string = 'Close notification';\n /** Keep the global stack 16px above the persistent mobile shell bar below 768px. */\n @Prop({ attribute: 'avoid-mobile-shell-bar', reflect: true })\n avoidMobileShellBar: boolean = false;\n /** Allowed swipe-to-dismiss directions. Assign as a JavaScript property. */\n @Prop() swipeDirections: ToastSwipeDirection[] = ['down', 'right'];\n\n @State() private records: readonly ToastRecord[] = [];\n @State() private expanded = false;\n @State() private keyboardActive = false;\n @State() private swipe: SwipeState | null = null;\n @State() private layoutVersion = 0;\n\n @Event() dsToastClose!: EventEmitter<ToastCloseEventDetail>;\n @Event() dsToastRemove!: EventEmitter<ToastEventDetail>;\n @Event() dsToastAction!: EventEmitter<ToastActionEventDetail>;\n\n private readonly instanceId = ++toastInstanceCounter;\n private readonly domIds = new Map<string, number>();\n private readonly timers = new Map<string, ToastTimer>();\n private readonly closeWatchdogs = new Map<string, ReturnType<typeof setTimeout>>();\n private readonly closeFrames = new Map<string, number>();\n private readonly closeEvents = new Set<string>();\n private readonly activationFrames = new Map<string, number>();\n private readonly pauseReasons = new Set<string>();\n private readonly hoveredIds = new Set<string>();\n private readonly heights = new Map<string, number>();\n private readonly measuredUpdateKeys = new Map<string, number>();\n private readonly anchoredPositions = new Map<string, AnchoredPosition>();\n private readonly dismissedSwipeDirections = new Map<string, ToastSwipeDirection>();\n private readonly observedElements = new Set<Element>();\n private readonly pendingRemovals: Array<{\n manager: ToastManager;\n context: ToastCloseContext;\n }> = [];\n\n private unsubscribe: (() => void) | null = null;\n private attachedManager: ToastManager | null = null;\n private previousFocus: HTMLElement | null = null;\n private resizeObserver: ResizeObserver | null = null;\n private mutationObserver: MutationObserver | null = null;\n private layoutFrame: number | null = null;\n private activeSwipe: ActiveSwipe | null = null;\n private nextDomId = 0;\n private connected = false;\n private pendingHoverLeave = false;\n\n connectedCallback() {\n this.connect();\n }\n\n componentDidLoad() {\n this.connect();\n }\n\n private connect() {\n if (this.connected) return;\n this.connected = true;\n this.resizeObserver ??= new ResizeObserver(() => this.scheduleLayout());\n this.mutationObserver ??= new MutationObserver(() => this.scheduleLayout());\n this.mutationObserver.observe(document.body, { childList: true, subtree: true });\n if (!this.unsubscribe) this.attachManager(this.manager);\n window.addEventListener('blur', this.handleWindowBlur);\n window.addEventListener('focus', this.handleWindowFocus);\n window.addEventListener('resize', this.handleWindowResize);\n window.addEventListener('scroll', this.scheduleLayout, true);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n document.addEventListener('visibilitychange', this.handleVisibilityChange);\n connectedToastRegions.add(this);\n // eslint-disable-next-line @typescript-eslint/no-this-alias -- module coordinator tracks the active connected viewport\n if (!activeToastRegion) activeToastRegion = this;\n }\n\n componentDidRender() {\n this.syncObservedElements();\n this.flushPendingRemovals();\n this.scheduleLayout();\n }\n\n disconnectedCallback() {\n this.connected = false;\n this.flushPendingRemovals();\n this.detachManager();\n this.resetManagerState();\n this.resizeObserver?.disconnect();\n this.resizeObserver = null;\n this.mutationObserver?.disconnect();\n this.mutationObserver = null;\n this.observedElements.clear();\n if (this.layoutFrame !== null) cancelAnimationFrame(this.layoutFrame);\n this.layoutFrame = null;\n window.removeEventListener('blur', this.handleWindowBlur);\n window.removeEventListener('focus', this.handleWindowFocus);\n window.removeEventListener('resize', this.handleWindowResize);\n window.removeEventListener('scroll', this.scheduleLayout, true);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n document.removeEventListener('visibilitychange', this.handleVisibilityChange);\n connectedToastRegions.delete(this);\n if (activeToastRegion === this) {\n const remaining = Array.from(connectedToastRegions);\n activeToastRegion = remaining[remaining.length - 1] ?? null;\n }\n }\n\n @Watch('manager')\n onManagerChange(next: ToastManager) {\n this.detachManager();\n this.resetManagerState();\n if (this.connected) this.attachManager(next);\n }\n\n @Watch('timeout')\n onTimeoutChange() {\n for (const timer of this.timers.values()) {\n if (timer.handle) clearTimeout(timer.handle);\n }\n this.timers.clear();\n this.syncTimers();\n }\n\n private attachManager(manager: ToastManager) {\n const attached = attachedManagers.get(manager);\n if (attached && attached !== this) {\n console.warn('[ds-toast] A manager can control only one connected ds-toast instance.');\n return;\n }\n attachedManagers.set(manager, this);\n this.attachedManager = manager;\n this.unsubscribe = manager.subscribe(records => {\n this.records = records;\n this.syncLifecycle(records);\n this.scheduleLayout();\n });\n }\n\n private detachManager() {\n this.unsubscribe?.();\n this.unsubscribe = null;\n if (this.attachedManager && attachedManagers.get(this.attachedManager) === this) {\n attachedManagers.delete(this.attachedManager);\n }\n this.attachedManager = null;\n }\n\n private resetManagerState() {\n this.flushPendingRemovals();\n if (this.el.contains(document.activeElement)) this.restorePreviousFocus();\n this.clearAllTimers();\n for (const frame of this.activationFrames.values()) cancelAnimationFrame(frame);\n for (const frame of this.closeFrames.values()) cancelAnimationFrame(frame);\n this.activationFrames.clear();\n this.closeFrames.clear();\n this.closeEvents.clear();\n this.pauseReasons.clear();\n this.hoveredIds.clear();\n this.pendingHoverLeave = false;\n this.heights.clear();\n this.measuredUpdateKeys.clear();\n this.anchoredPositions.clear();\n this.dismissedSwipeDirections.clear();\n this.domIds.clear();\n this.activeSwipe = null;\n this.swipe = null;\n this.expanded = false;\n this.keyboardActive = false;\n this.records = [];\n this.resizeObserver?.disconnect();\n this.observedElements.clear();\n }\n\n private syncObservedElements() {\n const next = new Set<Element>(this.el.querySelectorAll<HTMLElement>('.toast-positioner'));\n for (const record of this.records) {\n if (!record.positioner) continue;\n const anchor = this.resolveAnchor(record.positioner.anchor);\n if (anchor) next.add(anchor);\n }\n\n for (const element of this.observedElements) {\n if (!next.has(element)) {\n this.resizeObserver?.unobserve(element);\n this.observedElements.delete(element);\n }\n }\n for (const element of next) {\n if (this.observedElements.has(element)) continue;\n this.resizeObserver?.observe(element);\n this.observedElements.add(element);\n }\n }\n\n private flushPendingRemovals() {\n for (const pending of this.pendingRemovals.splice(0)) {\n pending.manager.notifyRemove(pending.context);\n this.dsToastRemove.emit({\n id: pending.context.id,\n toast: pending.context.toast,\n });\n }\n }\n\n private syncLifecycle(records: readonly ToastRecord[]) {\n const recordIds = new Set(records.map(record => record.id));\n for (const id of this.hoveredIds) {\n if (id !== GLOBAL_STACK_HOVER && !recordIds.has(id)) this.hoveredIds.delete(id);\n }\n const hasEndingRecords = records.some(record => record.transitionStatus === 'ending');\n if (this.pendingHoverLeave && !hasEndingRecords && !this.hoveredIds.size) {\n this.pendingHoverLeave = false;\n this.expanded = false;\n this.resumeTimers('hover');\n } else if (!this.hoveredIds.size && !this.pendingHoverLeave) {\n this.resumeTimers('hover');\n }\n\n for (const [id, timer] of this.timers) {\n if (recordIds.has(id)) continue;\n if (timer.handle) clearTimeout(timer.handle);\n this.timers.delete(id);\n }\n\n for (const [id, watchdog] of this.closeWatchdogs) {\n if (recordIds.has(id)) continue;\n clearTimeout(watchdog);\n this.closeWatchdogs.delete(id);\n }\n\n for (const [id, frame] of this.activationFrames) {\n if (recordIds.has(id)) continue;\n cancelAnimationFrame(frame);\n this.activationFrames.delete(id);\n }\n\n for (const [id, frame] of this.closeFrames) {\n if (recordIds.has(id)) continue;\n cancelAnimationFrame(frame);\n this.closeFrames.delete(id);\n }\n\n for (const id of this.domIds.keys()) {\n if (recordIds.has(id)) continue;\n this.closeEvents.delete(id);\n this.domIds.delete(id);\n this.heights.delete(id);\n this.measuredUpdateKeys.delete(id);\n this.anchoredPositions.delete(id);\n this.dismissedSwipeDirections.delete(id);\n }\n\n for (const record of records) {\n this.ensureDomId(record.id);\n if (record.transitionStatus === 'starting' && !this.activationFrames.has(record.id)) {\n const manager = this.attachedManager;\n const frame = requestAnimationFrame(() => {\n this.activationFrames.delete(record.id);\n manager?.activate(record.id);\n });\n this.activationFrames.set(record.id, frame);\n }\n\n if (record.transitionStatus === 'ending') {\n this.clearToastTimer(record.id);\n this.beginRemoval(record);\n } else {\n const watchdog = this.closeWatchdogs.get(record.id);\n if (watchdog) clearTimeout(watchdog);\n this.closeWatchdogs.delete(record.id);\n const closeFrame = this.closeFrames.get(record.id);\n if (closeFrame) cancelAnimationFrame(closeFrame);\n this.closeFrames.delete(record.id);\n this.closeEvents.delete(record.id);\n }\n }\n\n this.syncTimers();\n }\n\n private syncTimers() {\n const activeIds = new Set<string>();\n for (const record of this.records) {\n if (record.transitionStatus !== 'active') continue;\n activeIds.add(record.id);\n const duration = this.resolveToastTimeout(record);\n if (duration <= 0) {\n this.clearToastTimer(record.id);\n continue;\n }\n\n const existing = this.timers.get(record.id);\n if (!existing || existing.timerKey !== record.timerKey) {\n this.clearToastTimer(record.id);\n this.timers.set(record.id, {\n timerKey: record.timerKey,\n remaining: duration,\n startedAt: 0,\n handle: null,\n });\n }\n if (!this.isPaused) this.startToastTimer(record.id);\n }\n\n for (const id of this.timers.keys()) {\n if (!activeIds.has(id)) this.clearToastTimer(id);\n }\n }\n\n private resolveToastTimeout(record: ToastRecord): number {\n const value = record.timeout ?? this.timeout;\n if (typeof value === 'number') return Math.max(0, value);\n return resolveCssTimeMs(value, TOKEN_DEFAULTS.animationDelayLong2);\n }\n\n private startToastTimer(id: string) {\n const timer = this.timers.get(id);\n if (!timer || timer.handle || timer.remaining <= 0) return;\n timer.startedAt = Date.now();\n timer.handle = setTimeout(() => {\n timer.handle = null;\n timer.remaining = 0;\n this.manager.close(id, 'timeout');\n }, timer.remaining);\n }\n\n private pauseTimers(reason: string) {\n const wasPaused = this.isPaused;\n this.pauseReasons.add(reason);\n if (wasPaused) return;\n const now = Date.now();\n for (const timer of this.timers.values()) {\n if (!timer.handle) continue;\n clearTimeout(timer.handle);\n timer.handle = null;\n timer.remaining = Math.max(0, timer.remaining - (now - timer.startedAt));\n }\n }\n\n private resumeTimers(reason: string) {\n this.pauseReasons.delete(reason);\n if (this.isPaused) return;\n for (const id of this.timers.keys()) this.startToastTimer(id);\n }\n\n private get isPaused(): boolean {\n return this.pauseReasons.size > 0;\n }\n\n private clearToastTimer(id: string) {\n const timer = this.timers.get(id);\n if (timer?.handle) clearTimeout(timer.handle);\n this.timers.delete(id);\n }\n\n private clearAllTimers() {\n for (const timer of this.timers.values()) {\n if (timer.handle) clearTimeout(timer.handle);\n }\n for (const watchdog of this.closeWatchdogs.values()) clearTimeout(watchdog);\n this.timers.clear();\n this.closeWatchdogs.clear();\n }\n\n private beginRemoval(record: ToastRecord) {\n if (!this.closeEvents.has(record.id)) {\n this.closeEvents.add(record.id);\n this.dsToastClose.emit({\n id: record.id,\n reason: record.closeReason ?? 'programmatic',\n toast: record,\n });\n this.moveFocusAfterClose(record.id);\n }\n if (this.closeWatchdogs.has(record.id) || this.closeFrames.has(record.id)) return;\n\n const duration = resolveMotionTimeMs(\n TOKEN_DEFAULTS.motionShort3,\n TOKEN_DEFAULTS.animationDurationShort3\n );\n if (duration <= 0) {\n queueMicrotask(() => this.completeRemoval(record));\n return;\n }\n const frame = requestAnimationFrame(() => {\n this.closeFrames.delete(record.id);\n const current = this.records.find(candidate => candidate.id === record.id);\n if (!current || current.transitionStatus !== 'ending') return;\n this.closeWatchdogs.set(\n record.id,\n setTimeout(() => this.completeRemoval(current), duration)\n );\n });\n this.closeFrames.set(record.id, frame);\n }\n\n private completeRemoval(record: ToastRecord) {\n const current = this.records.find(candidate => candidate.id === record.id);\n if (!current || current.transitionStatus !== 'ending') return;\n const watchdog = this.closeWatchdogs.get(record.id);\n if (watchdog) clearTimeout(watchdog);\n this.closeWatchdogs.delete(record.id);\n const closeFrame = this.closeFrames.get(record.id);\n if (closeFrame) cancelAnimationFrame(closeFrame);\n this.closeFrames.delete(record.id);\n const manager = this.attachedManager;\n const context = manager?.remove(record.id);\n if (manager && context) this.pendingRemovals.push({ manager, context });\n }\n\n private handleAnimationComplete(record: ToastRecord) {\n if (record.transitionStatus === 'ending') this.completeRemoval(record);\n }\n\n private bindAnimationCancel(element: HTMLDivElement | undefined, id: string) {\n if (!element || element.dataset['cancelBound'] === 'true') return;\n element.dataset['cancelBound'] = 'true';\n element.addEventListener('animationcancel', () => {\n const record = this.records.find(candidate => candidate.id === id);\n if (record) this.handleAnimationComplete(record);\n });\n }\n\n private handleWindowBlur = () => this.pauseTimers('window');\n private handleWindowFocus = () => this.resumeTimers('window');\n private handleVisibilityChange = () => {\n if (document.hidden) this.pauseTimers('document');\n else this.resumeTimers('document');\n };\n\n private handlePointerEnter(id: string) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias -- pointer interaction selects the viewport that receives F6\n activeToastRegion = this;\n this.pendingHoverLeave = false;\n this.hoveredIds.add(id);\n this.expanded = true;\n this.pauseTimers('hover');\n }\n\n private handlePointerLeave(id: string) {\n this.hoveredIds.delete(id);\n if (this.hoveredIds.size) return;\n if (this.records.some(record => record.transitionStatus === 'ending')) {\n this.pendingHoverLeave = true;\n return;\n }\n this.expanded = false;\n this.resumeTimers('hover');\n }\n\n private handleFocusIn = () => {\n const active = document.activeElement;\n if (!(active instanceof HTMLElement) || !active.matches(':focus-visible')) return;\n // eslint-disable-next-line @typescript-eslint/no-this-alias -- module coordinator routes F6 to the last focused viewport\n activeToastRegion = this;\n this.keyboardActive = true;\n this.expanded = true;\n this.pauseTimers('focus');\n };\n\n private handleFocusOut = (event: FocusEvent) => {\n const next = event.relatedTarget;\n if (next instanceof Node && this.el.contains(next)) return;\n if (!this.keyboardActive) return;\n this.keyboardActive = false;\n this.expanded = this.hoveredIds.size > 0;\n this.resumeTimers('focus');\n };\n\n private handleDocumentKeyDown = (event: KeyboardEvent) => {\n if (event.key !== 'F6') return;\n const eligible = Array.from(connectedToastRegions).filter(\n region => region.activeRecords.length > 0\n );\n const target =\n activeToastRegion && activeToastRegion.activeRecords.length\n ? activeToastRegion\n : eligible[eligible.length - 1];\n if (target !== this) return;\n event.preventDefault();\n if (!this.el.contains(document.activeElement)) {\n this.previousFocus = document.activeElement as HTMLElement | null;\n }\n this.keyboardActive = true;\n this.regionElement?.focus();\n };\n\n private handleRegionKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n const target = event.target as HTMLElement;\n const positioner = target.closest<HTMLElement>('.toast-positioner');\n const id = positioner?.dataset['toastId'] ?? this.activeRecords[0]?.id;\n if (id) {\n event.preventDefault();\n this.manager.close(id, 'escape');\n }\n return;\n }\n\n if (event.key === 'Tab' && event.shiftKey && event.target === this.regionElement) {\n event.preventDefault();\n this.restorePreviousFocus();\n }\n };\n\n private get regionElement(): HTMLElement | null {\n return this.el.querySelector<HTMLElement>('.toast-region');\n }\n\n private restorePreviousFocus() {\n this.previousFocus?.focus?.();\n this.previousFocus = null;\n this.keyboardActive = false;\n }\n\n private moveFocusAfterClose(id: string) {\n const active = document.activeElement;\n const closing = this.positionerElement(id);\n if (!active || !closing?.contains(active)) return;\n requestAnimationFrame(() => {\n const next = this.activeRecords.find(record => record.id !== id);\n const control = next\n ? this.positionerElement(next.id)?.querySelector<\n HTMLElement & { setFocus?: () => Promise<void> }\n >('ds-button-unfilled')\n : null;\n if (control?.setFocus) void control.setFocus();\n else if (next) this.regionElement?.focus();\n else this.restorePreviousFocus();\n });\n }\n\n private handleAction(record: ToastRecord, event: CustomEvent<MouseEvent>) {\n const detail: ToastActionEventDetail = {\n id: record.id,\n toast: record,\n originalEvent: event.detail,\n };\n this.dsToastAction.emit(detail);\n record.action?.onAction?.({\n id: record.id,\n data: record.data,\n manager: this.manager,\n originalEvent: event.detail,\n });\n }\n\n private handlePointerDown(record: ToastRecord, event: PointerEvent) {\n if (event.button !== 0) return;\n const target = event.target as Element;\n if (target.closest(INTERACTIVE_SWIPE_SELECTOR)) return;\n\n const surface = event.currentTarget as HTMLElement;\n surface.setPointerCapture(event.pointerId);\n this.activeSwipe = {\n id: record.id,\n pointerId: event.pointerId,\n pointerType: event.pointerType,\n startX: event.clientX,\n startY: event.clientY,\n maxDistance: 0,\n cancelled: false,\n axis: null,\n };\n this.swipe = { id: record.id, x: 0, y: 0 };\n if (event.pointerType === 'touch') this.pauseTimers('swipe');\n }\n\n private handlePointerMove(event: PointerEvent) {\n const active = this.activeSwipe;\n if (!active || active.pointerId !== event.pointerId || active.cancelled) return;\n const dx = event.clientX - active.startX;\n const dy = event.clientY - active.startY;\n if (!active.axis && Math.max(Math.abs(dx), Math.abs(dy)) > 1) {\n active.axis = Math.abs(dx) >= Math.abs(dy) ? 'x' : 'y';\n }\n if (!active.axis) return;\n const horizontal = active.axis === 'x';\n const direction: ToastSwipeDirection = horizontal\n ? dx >= 0\n ? 'right'\n : 'left'\n : dy >= 0\n ? 'down'\n : 'up';\n const allowed = this.swipeDirections.includes(direction);\n const rawDistance = horizontal ? Math.abs(dx) : Math.abs(dy);\n const distance = allowed ? rawDistance : Math.sqrt(rawDistance);\n const signed = (horizontal ? dx : dy) < 0 ? -distance : distance;\n const x = horizontal ? signed : 0;\n const y = horizontal ? 0 : signed;\n\n if (active.maxDistance - distance >= SWIPE_REVERSE_CANCEL_THRESHOLD) {\n active.cancelled = true;\n this.cancelSwipe();\n return;\n }\n active.maxDistance = Math.max(active.maxDistance, distance);\n if (rawDistance > 1) event.preventDefault();\n this.swipe = { id: active.id, x, y, direction: allowed ? direction : undefined };\n }\n\n private handlePointerUp(event: PointerEvent) {\n const active = this.activeSwipe;\n if (!active || active.pointerId !== event.pointerId) return;\n const swipe = this.swipe;\n const distance = swipe ? Math.max(Math.abs(swipe.x), Math.abs(swipe.y)) : 0;\n const shouldDismiss = !active.cancelled && !!swipe?.direction && distance >= SWIPE_THRESHOLD;\n const id = active.id;\n const wasTouch = active.pointerType === 'touch';\n this.activeSwipe = null;\n this.swipe = null;\n if (wasTouch) this.resumeTimers('swipe');\n if (shouldDismiss && swipe.direction) {\n this.dismissedSwipeDirections.set(id, swipe.direction);\n this.manager.close(id, 'swipe');\n }\n }\n\n private handlePointerCancel(event: PointerEvent) {\n if (this.activeSwipe?.pointerId !== event.pointerId) return;\n this.cancelSwipe();\n }\n\n private cancelSwipe() {\n const wasTouch = this.activeSwipe?.pointerType === 'touch';\n this.activeSwipe = null;\n this.swipe = null;\n if (wasTouch) this.resumeTimers('swipe');\n }\n\n private get touchAction(): string {\n const horizontal =\n this.swipeDirections.includes('left') || this.swipeDirections.includes('right');\n const vertical = this.swipeDirections.includes('up') || this.swipeDirections.includes('down');\n if (horizontal && vertical) return 'none';\n if (horizontal) return 'pan-y';\n if (vertical) return 'pan-x';\n return 'auto';\n }\n\n private handleWindowResize = () => {\n this.heights.clear();\n this.measuredUpdateKeys.clear();\n this.layoutVersion += 1;\n this.scheduleLayout();\n };\n\n private scheduleLayout = () => {\n if (this.layoutFrame !== null) return;\n this.layoutFrame = requestAnimationFrame(() => {\n this.layoutFrame = null;\n this.measureLayout();\n });\n };\n\n private measureNaturalHeight(element: HTMLElement, expandedWidth: boolean): number {\n const surface = element.querySelector<HTMLElement>('.toast-surface');\n if (!surface) return 0;\n const previousWidth = element.style.width;\n const previousTransition = element.style.transition;\n const previousHeight = surface.style.height;\n\n if (expandedWidth) {\n element.style.transition = 'none';\n element.style.width = '100%';\n }\n surface.style.height = 'auto';\n const height = surface.getBoundingClientRect().height;\n\n surface.style.height = previousHeight;\n if (expandedWidth) {\n element.style.width = previousWidth;\n element.getBoundingClientRect();\n element.style.transition = previousTransition;\n }\n return height;\n }\n\n private measureLayout() {\n let changed = false;\n for (const record of this.records) {\n const element = this.positionerElement(record.id);\n if (!element) continue;\n let height = this.heights.get(record.id) ?? 0;\n const needsHeightMeasurement =\n height <= 0 || this.measuredUpdateKeys.get(record.id) !== record.updateKey;\n if (needsHeightMeasurement) {\n height = this.measureNaturalHeight(element, !record.positioner);\n if (height > 0) {\n if (this.heights.get(record.id) !== height) changed = true;\n this.heights.set(record.id, height);\n this.measuredUpdateKeys.set(record.id, record.updateKey);\n }\n }\n\n if (!record.positioner) continue;\n const anchor = this.resolveAnchor(record.positioner.anchor);\n if (!anchor || height <= 0) {\n if (this.anchoredPositions.delete(record.id)) changed = true;\n continue;\n }\n const rect = element.getBoundingClientRect();\n const sideOffset = resolveCssLengthPx(record.positioner.sideOffset, TOKEN_DEFAULTS.space050);\n const alignOffset = resolveCssLengthPx(record.positioner.alignOffset, 0);\n const position = computeAnchoredPosition({\n anchorRect: anchor.getBoundingClientRect(),\n popupWidth: rect.width,\n popupHeight: height,\n side: record.positioner.side ?? 'top',\n align: record.positioner.align ?? 'center',\n sideOffsetPx: sideOffset,\n alignOffsetPx: alignOffset,\n viewportPadPx: resolveCssLengthPx(undefined, TOKEN_DEFAULTS.space200),\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n collisionRect: resolveAnchoredOverlayBoundaryRect(anchor),\n });\n const current = this.anchoredPositions.get(record.id);\n if (\n !current ||\n current.x !== position.x ||\n current.y !== position.y ||\n current.side !== position.resolvedSide\n ) {\n this.anchoredPositions.set(record.id, {\n x: position.x,\n y: position.y,\n side: position.resolvedSide,\n });\n changed = true;\n }\n }\n if (changed) this.layoutVersion += 1;\n }\n\n private resolveAnchor(anchor: HTMLElement | string): HTMLElement | null {\n return typeof anchor === 'string' ? document.getElementById(anchor) : anchor;\n }\n\n private positionerElement(id: string): HTMLElement | null {\n return (\n Array.from(this.el.querySelectorAll<HTMLElement>('.toast-positioner')).find(\n element => element.dataset['toastId'] === id\n ) ?? null\n );\n }\n\n private ensureDomId(id: string): number {\n const current = this.domIds.get(id);\n if (current) return current;\n const next = ++this.nextDomId;\n this.domIds.set(id, next);\n return next;\n }\n\n private get activeRecords(): ToastRecord[] {\n return this.records.filter(record => record.transitionStatus !== 'ending');\n }\n\n private globalLayout() {\n const globalRecords = this.records.filter(record => !record.positioner);\n let offset = 0;\n let visibleIndex = 0;\n const gap = resolveCssLengthPx(undefined, TOKEN_DEFAULTS.space200);\n const layouts = new Map<string, { index: number; offset: number; limited: boolean }>();\n\n globalRecords.forEach((record, domIndex) => {\n if (record.transitionStatus === 'ending') {\n layouts.set(record.id, { index: domIndex, offset, limited: false });\n return;\n }\n\n const limited = visibleIndex >= Math.max(1, this.limit);\n layouts.set(record.id, { index: visibleIndex, offset, limited });\n offset += (this.heights.get(record.id) ?? 0) + gap;\n visibleIndex += 1;\n });\n return layouts;\n }\n\n private renderToast(\n record: ToastRecord,\n layout: { index: number; offset: number; limited: boolean }\n ) {\n const domId = this.ensureDomId(record.id);\n const titleId = `ds-toast-${this.instanceId}-${domId}-title`;\n const descriptionId = `ds-toast-${this.instanceId}-${domId}-description`;\n const swipe = this.swipe?.id === record.id ? this.swipe : null;\n const swipeDirection = swipe?.direction ?? this.dismissedSwipeDirections.get(record.id);\n const anchored = !!record.positioner;\n const anchoredPosition = this.anchoredPositions.get(record.id);\n const hiddenHighPriority = record.priority === 'high' && !this.keyboardActive;\n const focusTabIndex = this.keyboardActive && !layout.limited ? 0 : -1;\n const toastHeight = this.heights.get(record.id);\n\n return (\n <div\n ref={(element?: HTMLDivElement) => this.bindAnimationCancel(element, record.id)}\n class={{\n 'toast-positioner': true,\n 'toast-positioner--anchored': anchored,\n 'toast-positioner--ending': record.transitionStatus === 'ending',\n }}\n data-toast-id={record.id}\n data-behind={!anchored && layout.index > 0 ? '' : undefined}\n data-limited={layout.limited ? '' : undefined}\n data-positioned={anchored ? String(!!anchoredPosition) : undefined}\n data-side={anchoredPosition?.side}\n inert={layout.limited ? true : undefined}\n aria-hidden={layout.limited ? 'true' : undefined}\n style={{\n '--toast-index': String(layout.index),\n '--toast-offset-y': `${layout.offset}px`,\n '--toast-height': toastHeight ? `${toastHeight}px` : undefined,\n zIndex: String(this.records.length - layout.index),\n left: anchoredPosition ? `${anchoredPosition.x}px` : undefined,\n top: anchoredPosition ? `${anchoredPosition.y}px` : undefined,\n }}\n onAnimationEnd={() => this.handleAnimationComplete(record)}\n >\n <div\n class={{\n 'toast-surface': true,\n 'toast-surface--swiping': !!swipe,\n }}\n role={record.priority === 'high' ? 'alertdialog' : 'dialog'}\n aria-modal=\"false\"\n aria-labelledby={record.title ? titleId : record.description ? descriptionId : undefined}\n aria-describedby={record.title && record.description ? descriptionId : undefined}\n aria-hidden={hiddenHighPriority ? 'true' : undefined}\n data-type={record.type}\n data-priority={record.priority}\n data-transition-status={record.transitionStatus}\n data-swiping={swipe ? '' : undefined}\n data-swipe-direction={swipeDirection}\n style={{\n '--toast-swipe-movement-x': `${swipe?.x ?? 0}px`,\n '--toast-swipe-movement-y': `${swipe?.y ?? 0}px`,\n touchAction: this.touchAction,\n }}\n onPointerDown={(event: PointerEvent) => this.handlePointerDown(record, event)}\n onPointerMove={(event: PointerEvent) => this.handlePointerMove(event)}\n onPointerUp={(event: PointerEvent) => this.handlePointerUp(event)}\n onPointerCancel={(event: PointerEvent) => this.handlePointerCancel(event)}\n onPointerEnter={anchored ? () => this.handlePointerEnter(record.id) : undefined}\n onPointerLeave={anchored ? () => this.handlePointerLeave(record.id) : undefined}\n >\n <div class=\"toast-content\">\n <div class=\"toast-copy\">\n {record.title && (\n <ds-text\n class=\"toast-title\"\n as=\"div\"\n variant=\"text-title-small\"\n color=\"primary\"\n textId={titleId}\n >\n {record.title}\n </ds-text>\n )}\n {record.description && (\n <ds-text\n class=\"toast-description\"\n as=\"div\"\n variant=\"text-body-medium\"\n color=\"secondary\"\n textId={descriptionId}\n >\n {record.description}\n </ds-text>\n )}\n </div>\n {record.action && (\n <ds-button-unfilled\n class=\"toast-action\"\n variant=\"label\"\n size=\"md\"\n type=\"button\"\n label={record.action.label}\n aria-label={record.action.ariaLabel}\n hasBorder\n focusTabIndex={focusTabIndex}\n aria-hidden={!this.keyboardActive ? 'true' : undefined}\n onDsClick={(event: CustomEvent<MouseEvent>) => this.handleAction(record, event)}\n />\n )}\n </div>\n <ds-button-unfilled\n class=\"toast-close\"\n variant=\"icon\"\n size=\"md\"\n type=\"button\"\n icon=\"Cross\"\n aria-label={this.closeLabel}\n hasBorder={false}\n activeFill={false}\n focusTabIndex={focusTabIndex}\n aria-hidden={!this.keyboardActive ? 'true' : undefined}\n onDsClick={() => this.manager.close(record.id, 'close-button')}\n />\n </div>\n </div>\n );\n }\n\n render() {\n void this.layoutVersion;\n const globalLayouts = this.globalLayout();\n const globalRecords = this.records.filter(record => !record.positioner);\n const anchoredRecords = this.records.filter(record => !!record.positioner);\n const highPriority = this.records.filter(\n record =>\n record.priority === 'high' &&\n record.transitionStatus !== 'ending' &&\n !globalLayouts.get(record.id)?.limited\n );\n\n return (\n <Host>\n <section\n class=\"toast-region\"\n role=\"region\"\n aria-label={this.label}\n aria-live=\"polite\"\n aria-atomic=\"false\"\n aria-relevant=\"additions text\"\n tabIndex={-1}\n onFocusin={this.handleFocusIn}\n onFocusout={(event: FocusEvent) => this.handleFocusOut(event)}\n onKeyDown={(event: KeyboardEvent) => this.handleRegionKeyDown(event)}\n >\n <div\n class=\"toast-viewport\"\n data-expanded={this.expanded ? '' : undefined}\n onPointerEnter={() => this.handlePointerEnter(GLOBAL_STACK_HOVER)}\n onPointerLeave={() => this.handlePointerLeave(GLOBAL_STACK_HOVER)}\n >\n {globalRecords.map(record =>\n this.renderToast(\n record,\n globalLayouts.get(record.id) ?? { index: 0, offset: 0, limited: false }\n )\n )}\n </div>\n <div class=\"toast-anchored-layer\">\n {anchoredRecords.map(record =>\n this.renderToast(record, { index: 0, offset: 0, limited: false })\n )}\n </div>\n <div class=\"toast-assertive-announcer ds-visually-hidden\">\n {highPriority.map(record => (\n <div role=\"alert\" aria-atomic=\"true\">\n {[record.title, record.description].filter(Boolean).join('. ')}\n </div>\n ))}\n </div>\n </section>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["resolvePromiseValue","value","input","resolved","description","ToastManagerImpl","constructor","this","records","listeners","Set","nextId","add","options","id","existingIndex","findIndex","record","title","trim","console","warn","current","updated","priority","transitionStatus","closeReason","undefined","updateKey","timerKey","filter","_","index","emit","update","updates","restartsTimer","Object","prototype","hasOwnProperty","call","type","map","recordIndex","close","reason","closing","onClose","toast","closeAll","promise","promiseValue","loading","timeout","success","error","failure","subscribe","listener","getSnapshot","delete","activate","find","candidate","remove","context","notifyRemove","onRemove","snapshot","createToastManager","defaultManagerKey","Symbol","for","globalScope","globalThis","existingManager","toastManager","toastCss","SWIPE_THRESHOLD","SWIPE_REVERSE_CANCEL_THRESHOLD","GLOBAL_STACK_HOVER","INTERACTIVE_SWIPE_SELECTOR","attachedManagers","WeakMap","connectedToastRegions","activeToastRegion","toastInstanceCounter","Toast","__stencil_proxyCustomElement","HTMLElement","registerHost","manager","defaultToastManager","limit","TOKEN_DEFAULTS","animationDelayLong2","label","closeLabel","avoidMobileShellBar","swipeDirections","expanded","keyboardActive","swipe","layoutVersion","instanceId","domIds","Map","timers","closeWatchdogs","closeFrames","closeEvents","activationFrames","pauseReasons","hoveredIds","heights","measuredUpdateKeys","anchoredPositions","dismissedSwipeDirections","observedElements","pendingRemovals","unsubscribe","attachedManager","previousFocus","resizeObserver","mutationObserver","layoutFrame","activeSwipe","nextDomId","connected","pendingHoverLeave","handleWindowBlur","pauseTimers","handleWindowFocus","resumeTimers","handleVisibilityChange","document","hidden","handleFocusIn","active","activeElement","matches","handleFocusOut","event","next","relatedTarget","Node","el","contains","size","handleDocumentKeyDown","key","eligible","Array","from","region","activeRecords","length","target","preventDefault","regionElement","focus","handleRegionKeyDown","positioner","closest","dataset","shiftKey","restorePreviousFocus","handleWindowResize","clear","scheduleLayout","requestAnimationFrame","measureLayout","connectedCallback","connect","componentDidLoad","ResizeObserver","MutationObserver","observe","body","childList","subtree","attachManager","window","addEventListener","componentDidRender","syncObservedElements","flushPendingRemovals","disconnectedCallback","detachManager","resetManagerState","disconnect","cancelAnimationFrame","removeEventListener","remaining","onManagerChange","onTimeoutChange","timer","values","handle","clearTimeout","syncTimers","attached","get","set","syncLifecycle","clearAllTimers","frame","querySelectorAll","anchor","resolveAnchor","element","has","unobserve","pending","splice","dsToastRemove","recordIds","hasEndingRecords","some","watchdog","keys","ensureDomId","clearToastTimer","beginRemoval","closeFrame","activeIds","duration","resolveToastTimeout","existing","startedAt","isPaused","startToastTimer","Math","max","resolveCssTimeMs","Date","now","setTimeout","wasPaused","dsToastClose","moveFocusAfterClose","resolveMotionTimeMs","motionShort3","animationDurationShort3","queueMicrotask","completeRemoval","push","handleAnimationComplete","bindAnimationCancel","handlePointerEnter","handlePointerLeave","querySelector","positionerElement","control","setFocus","handleAction","detail","originalEvent","dsToastAction","action","onAction","data","handlePointerDown","button","surface","currentTarget","setPointerCapture","pointerId","pointerType","startX","clientX","startY","clientY","maxDistance","cancelled","axis","x","y","handlePointerMove","dx","dy","abs","horizontal","direction","allowed","includes","rawDistance","distance","sqrt","signed","cancelSwipe","handlePointerUp","shouldDismiss","wasTouch","handlePointerCancel","touchAction","vertical","measureNaturalHeight","expandedWidth","previousWidth","style","width","previousTransition","transition","previousHeight","height","getBoundingClientRect","changed","needsHeightMeasurement","rect","sideOffset","resolveCssLengthPx","space050","alignOffset","position","computeAnchoredPosition","anchorRect","popupWidth","popupHeight","side","align","sideOffsetPx","alignOffsetPx","viewportPadPx","space200","viewportWidth","innerWidth","viewportHeight","innerHeight","collisionRect","resolveAnchoredOverlayBoundaryRect","resolvedSide","getElementById","globalLayout","globalRecords","offset","visibleIndex","gap","layouts","forEach","domIndex","limited","renderToast","layout","domId","titleId","descriptionId","swipeDirection","anchored","anchoredPosition","hiddenHighPriority","focusTabIndex","toastHeight","h","ref","class","String","inert","zIndex","left","top","onAnimationEnd","role","onPointerDown","onPointerMove","onPointerUp","onPointerCancel","onPointerEnter","onPointerLeave","as","variant","color","textId","ariaLabel","hasBorder","onDsClick","icon","activeFill","render","globalLayouts","anchoredRecords","highPriority","Host","tabIndex","onFocusin","onFocusout","onKeyDown","Boolean","join"],"sources":["src/wc/toast/toast-manager.ts","src/wc/components/Toast/Toast.css?tag=ds-toast&encapsulation=scoped","src/wc/components/Toast/Toast.tsx"],"sourcesContent":["import type {\n ToastCloseContext,\n ToastCloseReason,\n ToastListener,\n ToastManager,\n ToastOptions,\n ToastPromiseOptions,\n ToastPromiseValue,\n ToastRecord,\n} from './toast-types';\n\nfunction resolvePromiseValue<Value, Data>(\n value: ToastPromiseValue<Data> | ((input: Value) => ToastPromiseValue<Data>),\n input: Value\n): ToastOptions<Data> {\n const resolved = typeof value === 'function' ? value(input) : value;\n return typeof resolved === 'string' ? { description: resolved } : resolved;\n}\n\nclass ToastManagerImpl<Data = unknown> implements ToastManager<Data> {\n private records: ToastRecord<Data>[] = [];\n private listeners = new Set<ToastListener<Data>>();\n private nextId = 0;\n\n add(options: ToastOptions<Data>): string {\n const id = options.id || `ds-toast-${++this.nextId}`;\n const existingIndex = this.records.findIndex(record => record.id === id);\n\n if (!options.title?.trim() && !options.description?.trim()) {\n console.warn(`[ds-toast] Toast \"${id}\" should provide a title or description.`);\n }\n\n if (existingIndex >= 0) {\n const current = this.records[existingIndex];\n const updated: ToastRecord<Data> = {\n ...current,\n ...options,\n id,\n priority: options.priority ?? current.priority,\n transitionStatus: 'active',\n closeReason: undefined,\n updateKey: current.updateKey + 1,\n timerKey: current.timerKey + 1,\n };\n this.records = [updated, ...this.records.filter((_, index) => index !== existingIndex)];\n this.emit();\n return id;\n }\n\n const record: ToastRecord<Data> = {\n ...options,\n id,\n priority: options.priority ?? 'low',\n transitionStatus: 'starting',\n updateKey: 0,\n timerKey: 0,\n };\n this.records = [record, ...this.records];\n this.emit();\n return id;\n }\n\n update(id: string, updates: Partial<ToastOptions<Data>>): void {\n const index = this.records.findIndex(record => record.id === id);\n if (index < 0) return;\n const current = this.records[index];\n const restartsTimer =\n Object.prototype.hasOwnProperty.call(updates, 'timeout') ||\n (current.type === 'loading' && updates.type !== undefined && updates.type !== 'loading');\n const updated: ToastRecord<Data> = {\n ...current,\n ...updates,\n id,\n priority: updates.priority ?? current.priority,\n updateKey: current.updateKey + 1,\n timerKey: restartsTimer ? current.timerKey + 1 : current.timerKey,\n };\n this.records = this.records.map((record, recordIndex) =>\n recordIndex === index ? updated : record\n );\n this.emit();\n }\n\n close(id: string, reason: ToastCloseReason = 'programmatic'): void {\n const index = this.records.findIndex(record => record.id === id);\n if (index < 0 || this.records[index].transitionStatus === 'ending') return;\n\n const closing: ToastRecord<Data> = {\n ...this.records[index],\n transitionStatus: 'ending',\n closeReason: reason,\n };\n this.records = this.records.map((record, recordIndex) =>\n recordIndex === index ? closing : record\n );\n this.emit();\n closing.onClose?.({ id, reason, toast: closing });\n }\n\n closeAll(reason: ToastCloseReason = 'programmatic'): void {\n for (const record of [...this.records]) this.close(record.id, reason);\n }\n\n async promise<Value>(\n promiseValue: PromiseLike<Value>,\n options: ToastPromiseOptions<Value, Data>\n ): Promise<Value> {\n const loading = resolvePromiseValue(options.loading, undefined as Value);\n const id = this.add({\n ...loading,\n type: loading.type ?? 'loading',\n timeout: 0,\n });\n\n try {\n const value = await promiseValue;\n const success = resolvePromiseValue(options.success, value);\n this.update(id, {\n ...success,\n type: success.type ?? 'success',\n timeout: success.timeout,\n });\n return value;\n } catch (error) {\n const failure = resolvePromiseValue(options.error, error);\n this.update(id, {\n ...failure,\n type: failure.type ?? 'error',\n timeout: failure.timeout,\n });\n throw error;\n }\n }\n\n subscribe(listener: ToastListener<Data>): () => void {\n this.listeners.add(listener);\n listener(this.getSnapshot());\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n getSnapshot(): readonly ToastRecord<Data>[] {\n return this.records.map(record => ({ ...record }));\n }\n\n activate(id: string): void {\n const record = this.records.find(candidate => candidate.id === id);\n if (!record || record.transitionStatus !== 'starting') return;\n this.records = this.records.map(candidate =>\n candidate.id === id ? { ...candidate, transitionStatus: 'active' } : candidate\n );\n this.emit();\n }\n\n remove(id: string): ToastCloseContext<Data> | null {\n const record = this.records.find(candidate => candidate.id === id);\n if (!record || record.transitionStatus !== 'ending') return null;\n const reason = record.closeReason ?? 'programmatic';\n this.records = this.records.filter(candidate => candidate.id !== id);\n this.emit();\n const context: ToastCloseContext<Data> = { id, reason, toast: record };\n return context;\n }\n\n notifyRemove(context: ToastCloseContext<Data>): void {\n const { toast } = context;\n toast.onRemove?.(context);\n }\n\n private emit(): void {\n const snapshot = this.getSnapshot();\n for (const listener of this.listeners) listener(snapshot);\n }\n}\n\nexport function createToastManager<Data = unknown>(): ToastManager<Data> {\n return new ToastManagerImpl<Data>();\n}\n\nconst defaultManagerKey = Symbol.for('@ds-mo/ui/default-toast-manager');\nconst globalScope = globalThis as typeof globalThis & Record<PropertyKey, unknown>;\nconst existingManager = globalScope[defaultManagerKey] as ToastManager | undefined;\n\nexport const toastManager: ToastManager = existingManager ?? createToastManager();\n\nif (!existingManager) globalScope[defaultManagerKey] = toastManager;\n","@import '../../utils/visually-hidden.css';\n@import '../../utils/forced-colors.css';\n@import '../../utils/radius.css';\n\n:host {\n display: contents;\n}\n\n.toast-region {\n position: fixed;\n inset: 0;\n z-index: var(--dimension-z-index-floating);\n pointer-events: none;\n outline: none;\n}\n\n.toast-viewport {\n position: absolute;\n right: var(--dimension-space-200);\n bottom: var(--dimension-space-200);\n display: grid;\n width: min(var(--dimension-card-width-sm), calc(100vw - 2 * var(--dimension-space-200)));\n}\n\n@media (max-width: 767px) {\n :host([avoid-mobile-shell-bar]) .toast-viewport {\n bottom: calc(\n var(--dimension-space-200) + var(--dimension-stroke-width-012) + var(--dimension-space-100) +\n var(--dimension-size-500) + max(var(--dimension-space-100), env(safe-area-inset-bottom))\n );\n }\n}\n\n.toast-positioner {\n grid-area: 1 / 1;\n align-self: end;\n justify-self: center;\n width: 100%;\n pointer-events: auto;\n transform: translateY(calc(-1 * var(--toast-index) * var(--dimension-space-100)));\n transition:\n transform var(--effect-motion-short-3),\n width var(--effect-motion-short-3);\n}\n\n.toast-viewport:not([data-expanded]) .toast-positioner {\n width: calc(100% - 2 * var(--toast-index) * var(--dimension-space-100));\n}\n\n.toast-viewport[data-expanded] .toast-positioner {\n transform: translateY(calc(-1 * var(--toast-offset-y)));\n}\n\n.toast-positioner[data-limited] {\n visibility: hidden;\n pointer-events: none;\n}\n\n.toast-positioner--anchored {\n position: fixed;\n width: min(var(--dimension-card-width-sm), calc(100vw - 2 * var(--dimension-space-200)));\n transform: none;\n}\n\n.toast-positioner--anchored[data-positioned='false'] {\n visibility: hidden;\n}\n\n.toast-surface {\n position: relative;\n display: block;\n box-sizing: border-box;\n width: 100%;\n height: var(--toast-height, auto);\n padding: var(--dimension-space-200);\n overflow: hidden;\n color: var(--color-foreground-primary);\n background-color: var(--color-background-primary);\n border-radius: var(--ds-radius-modal);\n box-shadow: var(--effect-elevation-elevated-floating);\n transform: translate(var(--toast-swipe-movement-x), var(--toast-swipe-movement-y));\n animation: toast-enter var(--effect-motion-short-2) both;\n}\n\n.toast-positioner--ending .toast-surface {\n animation: toast-exit var(--effect-motion-short-3) both;\n}\n\n.toast-surface--swiping {\n transition: none;\n user-select: none;\n}\n\n.toast-content {\n display: flex;\n flex-direction: column;\n min-width: 0;\n padding-inline-end: var(--dimension-size-500);\n transition: opacity var(--effect-motion-short-3);\n}\n\n.toast-copy {\n display: flex;\n flex-direction: column;\n min-width: 0;\n min-height: var(--typography-lineheight-md);\n margin-block: calc(-1 * var(--dimension-space-025));\n gap: var(--dimension-space-050);\n}\n\n.toast-title,\n.toast-description {\n min-width: 0;\n}\n\n.toast-action {\n align-self: start;\n margin-top: calc(var(--dimension-space-200) + var(--dimension-space-025));\n}\n\n.toast-close {\n position: absolute;\n top: var(--dimension-space-100);\n right: var(--dimension-space-100);\n transition: opacity var(--effect-motion-short-3);\n}\n\n.toast-viewport:not([data-expanded]) .toast-positioner[data-behind] .toast-content,\n.toast-viewport:not([data-expanded]) .toast-positioner[data-behind] .toast-close {\n opacity: 0;\n}\n\n@keyframes toast-enter {\n from {\n opacity: 0;\n transform: translateY(var(--dimension-space-100));\n }\n\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes toast-exit {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .toast-positioner,\n .toast-surface,\n .toast-content,\n .toast-close,\n .toast-positioner--ending .toast-surface {\n transition: none;\n animation: none;\n }\n\n .toast-positioner--ending .toast-surface {\n opacity: 0;\n }\n}\n\n@media (forced-colors: active) {\n .toast-surface {\n box-shadow: none;\n outline: var(--dimension-stroke-width-012) solid var(--ds-forced-color-content);\n outline-offset: calc(-1 * var(--dimension-stroke-width-012));\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport {\n resolveCssLengthPx,\n resolveCssTimeMs,\n resolveMotionTimeMs,\n TOKEN_DEFAULTS,\n} from '../../utils';\nimport {\n toastManager as defaultToastManager,\n type ToastActionEventDetail,\n type ToastCloseContext,\n type ToastCloseEventDetail,\n type ToastEventDetail,\n type ToastManager,\n type ToastRecord,\n type ToastSwipeDirection,\n} from '../../toast';\nimport { computeAnchoredPosition } from '../../utils/anchored-position';\nimport { resolveAnchoredOverlayBoundaryRect } from '../../utils/anchored-overlay-boundary';\n\ninterface ToastTimer {\n timerKey: number;\n remaining: number;\n startedAt: number;\n handle: ReturnType<typeof setTimeout> | null;\n}\n\ninterface SwipeState {\n id: string;\n x: number;\n y: number;\n direction?: ToastSwipeDirection;\n}\n\ninterface AnchoredPosition {\n x: number;\n y: number;\n side: 'top' | 'right' | 'bottom' | 'left';\n}\n\ninterface ActiveSwipe {\n id: string;\n pointerId: number;\n pointerType: string;\n startX: number;\n startY: number;\n maxDistance: number;\n cancelled: boolean;\n axis: 'x' | 'y' | null;\n}\n\nconst SWIPE_THRESHOLD = 40;\nconst SWIPE_REVERSE_CANCEL_THRESHOLD = 10;\nconst GLOBAL_STACK_HOVER = '__global-stack__';\nconst INTERACTIVE_SWIPE_SELECTOR =\n 'button,a,input,textarea,select,[role=\"button\"],[data-ds-toast-swipe-ignore]';\n\nconst attachedManagers = new WeakMap<ToastManager, Toast>();\nconst connectedToastRegions = new Set<Toast>();\nlet activeToastRegion: Toast | null = null;\nlet toastInstanceCounter = 0;\n\n@Component({\n tag: 'ds-toast',\n styleUrl: 'Toast.css',\n scoped: true,\n})\nexport class Toast {\n @Element() el!: HTMLElement;\n\n /** Manager that supplies toast records. Assign as a JavaScript property. */\n @Prop() manager: ToastManager = defaultToastManager;\n /** Maximum visible global-stack records. Limited records remain mounted and inert. */\n @Prop() limit: number = 3;\n /** Default auto-dismiss delay. Use 0 for persistent records. */\n @Prop() timeout: number | string = TOKEN_DEFAULTS.animationDelayLong2;\n /** Accessible label for the notification region. */\n @Prop() label: string = 'Notifications';\n /** Localized accessible label for every toast close action. */\n @Prop() closeLabel: string = 'Close notification';\n /** Keep the global stack 16px above the persistent mobile shell bar below 768px. */\n @Prop({ attribute: 'avoid-mobile-shell-bar', reflect: true })\n avoidMobileShellBar: boolean = false;\n /** Allowed swipe-to-dismiss directions. Assign as a JavaScript property. */\n @Prop() swipeDirections: ToastSwipeDirection[] = ['down', 'right'];\n\n @State() private records: readonly ToastRecord[] = [];\n @State() private expanded = false;\n @State() private keyboardActive = false;\n @State() private swipe: SwipeState | null = null;\n @State() private layoutVersion = 0;\n\n @Event() dsToastClose!: EventEmitter<ToastCloseEventDetail>;\n @Event() dsToastRemove!: EventEmitter<ToastEventDetail>;\n @Event() dsToastAction!: EventEmitter<ToastActionEventDetail>;\n\n private readonly instanceId = ++toastInstanceCounter;\n private readonly domIds = new Map<string, number>();\n private readonly timers = new Map<string, ToastTimer>();\n private readonly closeWatchdogs = new Map<string, ReturnType<typeof setTimeout>>();\n private readonly closeFrames = new Map<string, number>();\n private readonly closeEvents = new Set<string>();\n private readonly activationFrames = new Map<string, number>();\n private readonly pauseReasons = new Set<string>();\n private readonly hoveredIds = new Set<string>();\n private readonly heights = new Map<string, number>();\n private readonly measuredUpdateKeys = new Map<string, number>();\n private readonly anchoredPositions = new Map<string, AnchoredPosition>();\n private readonly dismissedSwipeDirections = new Map<string, ToastSwipeDirection>();\n private readonly observedElements = new Set<Element>();\n private readonly pendingRemovals: Array<{\n manager: ToastManager;\n context: ToastCloseContext;\n }> = [];\n\n private unsubscribe: (() => void) | null = null;\n private attachedManager: ToastManager | null = null;\n private previousFocus: HTMLElement | null = null;\n private resizeObserver: ResizeObserver | null = null;\n private mutationObserver: MutationObserver | null = null;\n private layoutFrame: number | null = null;\n private activeSwipe: ActiveSwipe | null = null;\n private nextDomId = 0;\n private connected = false;\n private pendingHoverLeave = false;\n\n connectedCallback() {\n this.connect();\n }\n\n componentDidLoad() {\n this.connect();\n }\n\n private connect() {\n if (this.connected) return;\n this.connected = true;\n this.resizeObserver ??= new ResizeObserver(() => this.scheduleLayout());\n this.mutationObserver ??= new MutationObserver(() => this.scheduleLayout());\n this.mutationObserver.observe(document.body, { childList: true, subtree: true });\n if (!this.unsubscribe) this.attachManager(this.manager);\n window.addEventListener('blur', this.handleWindowBlur);\n window.addEventListener('focus', this.handleWindowFocus);\n window.addEventListener('resize', this.handleWindowResize);\n window.addEventListener('scroll', this.scheduleLayout, true);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n document.addEventListener('visibilitychange', this.handleVisibilityChange);\n connectedToastRegions.add(this);\n // eslint-disable-next-line @typescript-eslint/no-this-alias -- module coordinator tracks the active connected viewport\n if (!activeToastRegion) activeToastRegion = this;\n }\n\n componentDidRender() {\n this.syncObservedElements();\n this.flushPendingRemovals();\n this.scheduleLayout();\n }\n\n disconnectedCallback() {\n this.connected = false;\n this.flushPendingRemovals();\n this.detachManager();\n this.resetManagerState();\n this.resizeObserver?.disconnect();\n this.resizeObserver = null;\n this.mutationObserver?.disconnect();\n this.mutationObserver = null;\n this.observedElements.clear();\n if (this.layoutFrame !== null) cancelAnimationFrame(this.layoutFrame);\n this.layoutFrame = null;\n window.removeEventListener('blur', this.handleWindowBlur);\n window.removeEventListener('focus', this.handleWindowFocus);\n window.removeEventListener('resize', this.handleWindowResize);\n window.removeEventListener('scroll', this.scheduleLayout, true);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n document.removeEventListener('visibilitychange', this.handleVisibilityChange);\n connectedToastRegions.delete(this);\n if (activeToastRegion === this) {\n const remaining = Array.from(connectedToastRegions);\n activeToastRegion = remaining[remaining.length - 1] ?? null;\n }\n }\n\n @Watch('manager')\n onManagerChange(next: ToastManager) {\n this.detachManager();\n this.resetManagerState();\n if (this.connected) this.attachManager(next);\n }\n\n @Watch('timeout')\n onTimeoutChange() {\n for (const timer of this.timers.values()) {\n if (timer.handle) clearTimeout(timer.handle);\n }\n this.timers.clear();\n this.syncTimers();\n }\n\n private attachManager(manager: ToastManager) {\n const attached = attachedManagers.get(manager);\n if (attached && attached !== this) {\n console.warn('[ds-toast] A manager can control only one connected ds-toast instance.');\n return;\n }\n attachedManagers.set(manager, this);\n this.attachedManager = manager;\n this.unsubscribe = manager.subscribe(records => {\n this.records = records;\n this.syncLifecycle(records);\n this.scheduleLayout();\n });\n }\n\n private detachManager() {\n this.unsubscribe?.();\n this.unsubscribe = null;\n if (this.attachedManager && attachedManagers.get(this.attachedManager) === this) {\n attachedManagers.delete(this.attachedManager);\n }\n this.attachedManager = null;\n }\n\n private resetManagerState() {\n this.flushPendingRemovals();\n if (this.el.contains(document.activeElement)) this.restorePreviousFocus();\n this.clearAllTimers();\n for (const frame of this.activationFrames.values()) cancelAnimationFrame(frame);\n for (const frame of this.closeFrames.values()) cancelAnimationFrame(frame);\n this.activationFrames.clear();\n this.closeFrames.clear();\n this.closeEvents.clear();\n this.pauseReasons.clear();\n this.hoveredIds.clear();\n this.pendingHoverLeave = false;\n this.heights.clear();\n this.measuredUpdateKeys.clear();\n this.anchoredPositions.clear();\n this.dismissedSwipeDirections.clear();\n this.domIds.clear();\n this.activeSwipe = null;\n this.swipe = null;\n this.expanded = false;\n this.keyboardActive = false;\n this.records = [];\n this.resizeObserver?.disconnect();\n this.observedElements.clear();\n }\n\n private syncObservedElements() {\n const next = new Set<Element>(this.el.querySelectorAll<HTMLElement>('.toast-positioner'));\n for (const record of this.records) {\n if (!record.positioner) continue;\n const anchor = this.resolveAnchor(record.positioner.anchor);\n if (anchor) next.add(anchor);\n }\n\n for (const element of this.observedElements) {\n if (!next.has(element)) {\n this.resizeObserver?.unobserve(element);\n this.observedElements.delete(element);\n }\n }\n for (const element of next) {\n if (this.observedElements.has(element)) continue;\n this.resizeObserver?.observe(element);\n this.observedElements.add(element);\n }\n }\n\n private flushPendingRemovals() {\n for (const pending of this.pendingRemovals.splice(0)) {\n pending.manager.notifyRemove(pending.context);\n this.dsToastRemove.emit({\n id: pending.context.id,\n toast: pending.context.toast,\n });\n }\n }\n\n private syncLifecycle(records: readonly ToastRecord[]) {\n const recordIds = new Set(records.map(record => record.id));\n for (const id of this.hoveredIds) {\n if (id !== GLOBAL_STACK_HOVER && !recordIds.has(id)) this.hoveredIds.delete(id);\n }\n const hasEndingRecords = records.some(record => record.transitionStatus === 'ending');\n if (this.pendingHoverLeave && !hasEndingRecords && !this.hoveredIds.size) {\n this.pendingHoverLeave = false;\n this.expanded = false;\n this.resumeTimers('hover');\n } else if (!this.hoveredIds.size && !this.pendingHoverLeave) {\n this.resumeTimers('hover');\n }\n\n for (const [id, timer] of this.timers) {\n if (recordIds.has(id)) continue;\n if (timer.handle) clearTimeout(timer.handle);\n this.timers.delete(id);\n }\n\n for (const [id, watchdog] of this.closeWatchdogs) {\n if (recordIds.has(id)) continue;\n clearTimeout(watchdog);\n this.closeWatchdogs.delete(id);\n }\n\n for (const [id, frame] of this.activationFrames) {\n if (recordIds.has(id)) continue;\n cancelAnimationFrame(frame);\n this.activationFrames.delete(id);\n }\n\n for (const [id, frame] of this.closeFrames) {\n if (recordIds.has(id)) continue;\n cancelAnimationFrame(frame);\n this.closeFrames.delete(id);\n }\n\n for (const id of this.domIds.keys()) {\n if (recordIds.has(id)) continue;\n this.closeEvents.delete(id);\n this.domIds.delete(id);\n this.heights.delete(id);\n this.measuredUpdateKeys.delete(id);\n this.anchoredPositions.delete(id);\n this.dismissedSwipeDirections.delete(id);\n }\n\n for (const record of records) {\n this.ensureDomId(record.id);\n if (record.transitionStatus === 'starting' && !this.activationFrames.has(record.id)) {\n const manager = this.attachedManager;\n const frame = requestAnimationFrame(() => {\n this.activationFrames.delete(record.id);\n manager?.activate(record.id);\n });\n this.activationFrames.set(record.id, frame);\n }\n\n if (record.transitionStatus === 'ending') {\n this.clearToastTimer(record.id);\n this.beginRemoval(record);\n } else {\n const watchdog = this.closeWatchdogs.get(record.id);\n if (watchdog) clearTimeout(watchdog);\n this.closeWatchdogs.delete(record.id);\n const closeFrame = this.closeFrames.get(record.id);\n if (closeFrame) cancelAnimationFrame(closeFrame);\n this.closeFrames.delete(record.id);\n this.closeEvents.delete(record.id);\n }\n }\n\n this.syncTimers();\n }\n\n private syncTimers() {\n const activeIds = new Set<string>();\n for (const record of this.records) {\n if (record.transitionStatus !== 'active') continue;\n activeIds.add(record.id);\n const duration = this.resolveToastTimeout(record);\n if (duration <= 0) {\n this.clearToastTimer(record.id);\n continue;\n }\n\n const existing = this.timers.get(record.id);\n if (!existing || existing.timerKey !== record.timerKey) {\n this.clearToastTimer(record.id);\n this.timers.set(record.id, {\n timerKey: record.timerKey,\n remaining: duration,\n startedAt: 0,\n handle: null,\n });\n }\n if (!this.isPaused) this.startToastTimer(record.id);\n }\n\n for (const id of this.timers.keys()) {\n if (!activeIds.has(id)) this.clearToastTimer(id);\n }\n }\n\n private resolveToastTimeout(record: ToastRecord): number {\n const value = record.timeout ?? this.timeout;\n if (typeof value === 'number') return Math.max(0, value);\n return resolveCssTimeMs(value, TOKEN_DEFAULTS.animationDelayLong2);\n }\n\n private startToastTimer(id: string) {\n const timer = this.timers.get(id);\n if (!timer || timer.handle || timer.remaining <= 0) return;\n timer.startedAt = Date.now();\n timer.handle = setTimeout(() => {\n timer.handle = null;\n timer.remaining = 0;\n this.manager.close(id, 'timeout');\n }, timer.remaining);\n }\n\n private pauseTimers(reason: string) {\n const wasPaused = this.isPaused;\n this.pauseReasons.add(reason);\n if (wasPaused) return;\n const now = Date.now();\n for (const timer of this.timers.values()) {\n if (!timer.handle) continue;\n clearTimeout(timer.handle);\n timer.handle = null;\n timer.remaining = Math.max(0, timer.remaining - (now - timer.startedAt));\n }\n }\n\n private resumeTimers(reason: string) {\n this.pauseReasons.delete(reason);\n if (this.isPaused) return;\n for (const id of this.timers.keys()) this.startToastTimer(id);\n }\n\n private get isPaused(): boolean {\n return this.pauseReasons.size > 0;\n }\n\n private clearToastTimer(id: string) {\n const timer = this.timers.get(id);\n if (timer?.handle) clearTimeout(timer.handle);\n this.timers.delete(id);\n }\n\n private clearAllTimers() {\n for (const timer of this.timers.values()) {\n if (timer.handle) clearTimeout(timer.handle);\n }\n for (const watchdog of this.closeWatchdogs.values()) clearTimeout(watchdog);\n this.timers.clear();\n this.closeWatchdogs.clear();\n }\n\n private beginRemoval(record: ToastRecord) {\n if (!this.closeEvents.has(record.id)) {\n this.closeEvents.add(record.id);\n this.dsToastClose.emit({\n id: record.id,\n reason: record.closeReason ?? 'programmatic',\n toast: record,\n });\n this.moveFocusAfterClose(record.id);\n }\n if (this.closeWatchdogs.has(record.id) || this.closeFrames.has(record.id)) return;\n\n const duration = resolveMotionTimeMs(\n TOKEN_DEFAULTS.motionShort3,\n TOKEN_DEFAULTS.animationDurationShort3\n );\n if (duration <= 0) {\n queueMicrotask(() => this.completeRemoval(record));\n return;\n }\n const frame = requestAnimationFrame(() => {\n this.closeFrames.delete(record.id);\n const current = this.records.find(candidate => candidate.id === record.id);\n if (!current || current.transitionStatus !== 'ending') return;\n this.closeWatchdogs.set(\n record.id,\n setTimeout(() => this.completeRemoval(current), duration)\n );\n });\n this.closeFrames.set(record.id, frame);\n }\n\n private completeRemoval(record: ToastRecord) {\n const current = this.records.find(candidate => candidate.id === record.id);\n if (!current || current.transitionStatus !== 'ending') return;\n const watchdog = this.closeWatchdogs.get(record.id);\n if (watchdog) clearTimeout(watchdog);\n this.closeWatchdogs.delete(record.id);\n const closeFrame = this.closeFrames.get(record.id);\n if (closeFrame) cancelAnimationFrame(closeFrame);\n this.closeFrames.delete(record.id);\n const manager = this.attachedManager;\n const context = manager?.remove(record.id);\n if (manager && context) this.pendingRemovals.push({ manager, context });\n }\n\n private handleAnimationComplete(record: ToastRecord) {\n if (record.transitionStatus === 'ending') this.completeRemoval(record);\n }\n\n private bindAnimationCancel(element: HTMLDivElement | undefined, id: string) {\n if (!element || element.dataset['cancelBound'] === 'true') return;\n element.dataset['cancelBound'] = 'true';\n element.addEventListener('animationcancel', () => {\n const record = this.records.find(candidate => candidate.id === id);\n if (record) this.handleAnimationComplete(record);\n });\n }\n\n private handleWindowBlur = () => this.pauseTimers('window');\n private handleWindowFocus = () => this.resumeTimers('window');\n private handleVisibilityChange = () => {\n if (document.hidden) this.pauseTimers('document');\n else this.resumeTimers('document');\n };\n\n private handlePointerEnter(id: string) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias -- pointer interaction selects the viewport that receives F6\n activeToastRegion = this;\n this.pendingHoverLeave = false;\n this.hoveredIds.add(id);\n this.expanded = true;\n this.pauseTimers('hover');\n }\n\n private handlePointerLeave(id: string) {\n this.hoveredIds.delete(id);\n if (this.hoveredIds.size) return;\n if (this.records.some(record => record.transitionStatus === 'ending')) {\n this.pendingHoverLeave = true;\n return;\n }\n this.expanded = false;\n this.resumeTimers('hover');\n }\n\n private handleFocusIn = () => {\n const active = document.activeElement;\n if (!(active instanceof HTMLElement) || !active.matches(':focus-visible')) return;\n // eslint-disable-next-line @typescript-eslint/no-this-alias -- module coordinator routes F6 to the last focused viewport\n activeToastRegion = this;\n this.keyboardActive = true;\n this.expanded = true;\n this.pauseTimers('focus');\n };\n\n private handleFocusOut = (event: FocusEvent) => {\n const next = event.relatedTarget;\n if (next instanceof Node && this.el.contains(next)) return;\n if (!this.keyboardActive) return;\n this.keyboardActive = false;\n this.expanded = this.hoveredIds.size > 0;\n this.resumeTimers('focus');\n };\n\n private handleDocumentKeyDown = (event: KeyboardEvent) => {\n if (event.key !== 'F6') return;\n const eligible = Array.from(connectedToastRegions).filter(\n region => region.activeRecords.length > 0\n );\n const target =\n activeToastRegion && activeToastRegion.activeRecords.length\n ? activeToastRegion\n : eligible[eligible.length - 1];\n if (target !== this) return;\n event.preventDefault();\n if (!this.el.contains(document.activeElement)) {\n this.previousFocus = document.activeElement as HTMLElement | null;\n }\n this.keyboardActive = true;\n this.regionElement?.focus();\n };\n\n private handleRegionKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n const target = event.target as HTMLElement;\n const positioner = target.closest<HTMLElement>('.toast-positioner');\n const id = positioner?.dataset['toastId'] ?? this.activeRecords[0]?.id;\n if (id) {\n event.preventDefault();\n this.manager.close(id, 'escape');\n }\n return;\n }\n\n if (event.key === 'Tab' && event.shiftKey && event.target === this.regionElement) {\n event.preventDefault();\n this.restorePreviousFocus();\n }\n };\n\n private get regionElement(): HTMLElement | null {\n return this.el.querySelector<HTMLElement>('.toast-region');\n }\n\n private restorePreviousFocus() {\n this.previousFocus?.focus?.();\n this.previousFocus = null;\n this.keyboardActive = false;\n }\n\n private moveFocusAfterClose(id: string) {\n const active = document.activeElement;\n const closing = this.positionerElement(id);\n if (!active || !closing?.contains(active)) return;\n requestAnimationFrame(() => {\n const next = this.activeRecords.find(record => record.id !== id);\n const control = next\n ? this.positionerElement(next.id)?.querySelector<\n HTMLElement & { setFocus?: () => Promise<void> }\n >('ds-button-unfilled')\n : null;\n if (control?.setFocus) void control.setFocus();\n else if (next) this.regionElement?.focus();\n else this.restorePreviousFocus();\n });\n }\n\n private handleAction(record: ToastRecord, event: CustomEvent<MouseEvent>) {\n const detail: ToastActionEventDetail = {\n id: record.id,\n toast: record,\n originalEvent: event.detail,\n };\n this.dsToastAction.emit(detail);\n record.action?.onAction?.({\n id: record.id,\n data: record.data,\n manager: this.manager,\n originalEvent: event.detail,\n });\n }\n\n private handlePointerDown(record: ToastRecord, event: PointerEvent) {\n if (event.button !== 0) return;\n const target = event.target as Element;\n if (target.closest(INTERACTIVE_SWIPE_SELECTOR)) return;\n\n const surface = event.currentTarget as HTMLElement;\n surface.setPointerCapture(event.pointerId);\n this.activeSwipe = {\n id: record.id,\n pointerId: event.pointerId,\n pointerType: event.pointerType,\n startX: event.clientX,\n startY: event.clientY,\n maxDistance: 0,\n cancelled: false,\n axis: null,\n };\n this.swipe = { id: record.id, x: 0, y: 0 };\n if (event.pointerType === 'touch') this.pauseTimers('swipe');\n }\n\n private handlePointerMove(event: PointerEvent) {\n const active = this.activeSwipe;\n if (!active || active.pointerId !== event.pointerId || active.cancelled) return;\n const dx = event.clientX - active.startX;\n const dy = event.clientY - active.startY;\n if (!active.axis && Math.max(Math.abs(dx), Math.abs(dy)) > 1) {\n active.axis = Math.abs(dx) >= Math.abs(dy) ? 'x' : 'y';\n }\n if (!active.axis) return;\n const horizontal = active.axis === 'x';\n const direction: ToastSwipeDirection = horizontal\n ? dx >= 0\n ? 'right'\n : 'left'\n : dy >= 0\n ? 'down'\n : 'up';\n const allowed = this.swipeDirections.includes(direction);\n const rawDistance = horizontal ? Math.abs(dx) : Math.abs(dy);\n const distance = allowed ? rawDistance : Math.sqrt(rawDistance);\n const signed = (horizontal ? dx : dy) < 0 ? -distance : distance;\n const x = horizontal ? signed : 0;\n const y = horizontal ? 0 : signed;\n\n if (active.maxDistance - distance >= SWIPE_REVERSE_CANCEL_THRESHOLD) {\n active.cancelled = true;\n this.cancelSwipe();\n return;\n }\n active.maxDistance = Math.max(active.maxDistance, distance);\n if (rawDistance > 1) event.preventDefault();\n this.swipe = { id: active.id, x, y, direction: allowed ? direction : undefined };\n }\n\n private handlePointerUp(event: PointerEvent) {\n const active = this.activeSwipe;\n if (!active || active.pointerId !== event.pointerId) return;\n const swipe = this.swipe;\n const distance = swipe ? Math.max(Math.abs(swipe.x), Math.abs(swipe.y)) : 0;\n const shouldDismiss = !active.cancelled && !!swipe?.direction && distance >= SWIPE_THRESHOLD;\n const id = active.id;\n const wasTouch = active.pointerType === 'touch';\n this.activeSwipe = null;\n this.swipe = null;\n if (wasTouch) this.resumeTimers('swipe');\n if (shouldDismiss && swipe.direction) {\n this.dismissedSwipeDirections.set(id, swipe.direction);\n this.manager.close(id, 'swipe');\n }\n }\n\n private handlePointerCancel(event: PointerEvent) {\n if (this.activeSwipe?.pointerId !== event.pointerId) return;\n this.cancelSwipe();\n }\n\n private cancelSwipe() {\n const wasTouch = this.activeSwipe?.pointerType === 'touch';\n this.activeSwipe = null;\n this.swipe = null;\n if (wasTouch) this.resumeTimers('swipe');\n }\n\n private get touchAction(): string {\n const horizontal =\n this.swipeDirections.includes('left') || this.swipeDirections.includes('right');\n const vertical = this.swipeDirections.includes('up') || this.swipeDirections.includes('down');\n if (horizontal && vertical) return 'none';\n if (horizontal) return 'pan-y';\n if (vertical) return 'pan-x';\n return 'auto';\n }\n\n private handleWindowResize = () => {\n this.heights.clear();\n this.measuredUpdateKeys.clear();\n this.layoutVersion += 1;\n this.scheduleLayout();\n };\n\n private scheduleLayout = () => {\n if (this.layoutFrame !== null) return;\n this.layoutFrame = requestAnimationFrame(() => {\n this.layoutFrame = null;\n this.measureLayout();\n });\n };\n\n private measureNaturalHeight(element: HTMLElement, expandedWidth: boolean): number {\n const surface = element.querySelector<HTMLElement>('.toast-surface');\n if (!surface) return 0;\n const previousWidth = element.style.width;\n const previousTransition = element.style.transition;\n const previousHeight = surface.style.height;\n\n if (expandedWidth) {\n element.style.transition = 'none';\n element.style.width = '100%';\n }\n surface.style.height = 'auto';\n const height = surface.getBoundingClientRect().height;\n\n surface.style.height = previousHeight;\n if (expandedWidth) {\n element.style.width = previousWidth;\n element.getBoundingClientRect();\n element.style.transition = previousTransition;\n }\n return height;\n }\n\n private measureLayout() {\n let changed = false;\n for (const record of this.records) {\n const element = this.positionerElement(record.id);\n if (!element) continue;\n let height = this.heights.get(record.id) ?? 0;\n const needsHeightMeasurement =\n height <= 0 || this.measuredUpdateKeys.get(record.id) !== record.updateKey;\n if (needsHeightMeasurement) {\n height = this.measureNaturalHeight(element, !record.positioner);\n if (height > 0) {\n if (this.heights.get(record.id) !== height) changed = true;\n this.heights.set(record.id, height);\n this.measuredUpdateKeys.set(record.id, record.updateKey);\n }\n }\n\n if (!record.positioner) continue;\n const anchor = this.resolveAnchor(record.positioner.anchor);\n if (!anchor || height <= 0) {\n if (this.anchoredPositions.delete(record.id)) changed = true;\n continue;\n }\n const rect = element.getBoundingClientRect();\n const sideOffset = resolveCssLengthPx(record.positioner.sideOffset, TOKEN_DEFAULTS.space050);\n const alignOffset = resolveCssLengthPx(record.positioner.alignOffset, 0);\n const position = computeAnchoredPosition({\n anchorRect: anchor.getBoundingClientRect(),\n popupWidth: rect.width,\n popupHeight: height,\n side: record.positioner.side ?? 'top',\n align: record.positioner.align ?? 'center',\n sideOffsetPx: sideOffset,\n alignOffsetPx: alignOffset,\n viewportPadPx: resolveCssLengthPx(undefined, TOKEN_DEFAULTS.space200),\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n collisionRect: resolveAnchoredOverlayBoundaryRect(anchor),\n });\n const current = this.anchoredPositions.get(record.id);\n if (\n !current ||\n current.x !== position.x ||\n current.y !== position.y ||\n current.side !== position.resolvedSide\n ) {\n this.anchoredPositions.set(record.id, {\n x: position.x,\n y: position.y,\n side: position.resolvedSide,\n });\n changed = true;\n }\n }\n if (changed) this.layoutVersion += 1;\n }\n\n private resolveAnchor(anchor: HTMLElement | string): HTMLElement | null {\n return typeof anchor === 'string' ? document.getElementById(anchor) : anchor;\n }\n\n private positionerElement(id: string): HTMLElement | null {\n return (\n Array.from(this.el.querySelectorAll<HTMLElement>('.toast-positioner')).find(\n element => element.dataset['toastId'] === id\n ) ?? null\n );\n }\n\n private ensureDomId(id: string): number {\n const current = this.domIds.get(id);\n if (current) return current;\n const next = ++this.nextDomId;\n this.domIds.set(id, next);\n return next;\n }\n\n private get activeRecords(): ToastRecord[] {\n return this.records.filter(record => record.transitionStatus !== 'ending');\n }\n\n private globalLayout() {\n const globalRecords = this.records.filter(record => !record.positioner);\n let offset = 0;\n let visibleIndex = 0;\n const gap = resolveCssLengthPx(undefined, TOKEN_DEFAULTS.space200);\n const layouts = new Map<string, { index: number; offset: number; limited: boolean }>();\n\n globalRecords.forEach((record, domIndex) => {\n if (record.transitionStatus === 'ending') {\n layouts.set(record.id, { index: domIndex, offset, limited: false });\n return;\n }\n\n const limited = visibleIndex >= Math.max(1, this.limit);\n layouts.set(record.id, { index: visibleIndex, offset, limited });\n offset += (this.heights.get(record.id) ?? 0) + gap;\n visibleIndex += 1;\n });\n return layouts;\n }\n\n private renderToast(\n record: ToastRecord,\n layout: { index: number; offset: number; limited: boolean }\n ) {\n const domId = this.ensureDomId(record.id);\n const titleId = `ds-toast-${this.instanceId}-${domId}-title`;\n const descriptionId = `ds-toast-${this.instanceId}-${domId}-description`;\n const swipe = this.swipe?.id === record.id ? this.swipe : null;\n const swipeDirection = swipe?.direction ?? this.dismissedSwipeDirections.get(record.id);\n const anchored = !!record.positioner;\n const anchoredPosition = this.anchoredPositions.get(record.id);\n const hiddenHighPriority = record.priority === 'high' && !this.keyboardActive;\n const focusTabIndex = this.keyboardActive && !layout.limited ? 0 : -1;\n const toastHeight = this.heights.get(record.id);\n\n return (\n <div\n ref={(element?: HTMLDivElement) => this.bindAnimationCancel(element, record.id)}\n class={{\n 'toast-positioner': true,\n 'toast-positioner--anchored': anchored,\n 'toast-positioner--ending': record.transitionStatus === 'ending',\n }}\n data-toast-id={record.id}\n data-behind={!anchored && layout.index > 0 ? '' : undefined}\n data-limited={layout.limited ? '' : undefined}\n data-positioned={anchored ? String(!!anchoredPosition) : undefined}\n data-side={anchoredPosition?.side}\n inert={layout.limited ? true : undefined}\n aria-hidden={layout.limited ? 'true' : undefined}\n style={{\n '--toast-index': String(layout.index),\n '--toast-offset-y': `${layout.offset}px`,\n '--toast-height': toastHeight ? `${toastHeight}px` : undefined,\n zIndex: String(this.records.length - layout.index),\n left: anchoredPosition ? `${anchoredPosition.x}px` : undefined,\n top: anchoredPosition ? `${anchoredPosition.y}px` : undefined,\n }}\n onAnimationEnd={() => this.handleAnimationComplete(record)}\n >\n <div\n class={{\n 'toast-surface': true,\n 'toast-surface--swiping': !!swipe,\n }}\n role={record.priority === 'high' ? 'alertdialog' : 'dialog'}\n aria-modal=\"false\"\n aria-labelledby={record.title ? titleId : record.description ? descriptionId : undefined}\n aria-describedby={record.title && record.description ? descriptionId : undefined}\n aria-hidden={hiddenHighPriority ? 'true' : undefined}\n data-type={record.type}\n data-priority={record.priority}\n data-transition-status={record.transitionStatus}\n data-swiping={swipe ? '' : undefined}\n data-swipe-direction={swipeDirection}\n style={{\n '--toast-swipe-movement-x': `${swipe?.x ?? 0}px`,\n '--toast-swipe-movement-y': `${swipe?.y ?? 0}px`,\n touchAction: this.touchAction,\n }}\n onPointerDown={(event: PointerEvent) => this.handlePointerDown(record, event)}\n onPointerMove={(event: PointerEvent) => this.handlePointerMove(event)}\n onPointerUp={(event: PointerEvent) => this.handlePointerUp(event)}\n onPointerCancel={(event: PointerEvent) => this.handlePointerCancel(event)}\n onPointerEnter={anchored ? () => this.handlePointerEnter(record.id) : undefined}\n onPointerLeave={anchored ? () => this.handlePointerLeave(record.id) : undefined}\n >\n <div class=\"toast-content\">\n <div class=\"toast-copy\">\n {record.title && (\n <ds-text\n class=\"toast-title\"\n as=\"div\"\n variant=\"text-title-small\"\n color=\"primary\"\n textId={titleId}\n >\n {record.title}\n </ds-text>\n )}\n {record.description && (\n <ds-text\n class=\"toast-description\"\n as=\"div\"\n variant=\"text-body-medium\"\n color=\"secondary\"\n textId={descriptionId}\n >\n {record.description}\n </ds-text>\n )}\n </div>\n {record.action && (\n <ds-button-unfilled\n class=\"toast-action\"\n variant=\"label\"\n size=\"md\"\n type=\"button\"\n label={record.action.label}\n aria-label={record.action.ariaLabel}\n hasBorder\n focusTabIndex={focusTabIndex}\n aria-hidden={!this.keyboardActive ? 'true' : undefined}\n onDsClick={(event: CustomEvent<MouseEvent>) => this.handleAction(record, event)}\n />\n )}\n </div>\n <ds-button-unfilled\n class=\"toast-close\"\n variant=\"icon\"\n size=\"md\"\n type=\"button\"\n icon=\"Cross\"\n aria-label={this.closeLabel}\n hasBorder={false}\n activeFill={false}\n focusTabIndex={focusTabIndex}\n aria-hidden={!this.keyboardActive ? 'true' : undefined}\n onDsClick={() => this.manager.close(record.id, 'close-button')}\n />\n </div>\n </div>\n );\n }\n\n render() {\n void this.layoutVersion;\n const globalLayouts = this.globalLayout();\n const globalRecords = this.records.filter(record => !record.positioner);\n const anchoredRecords = this.records.filter(record => !!record.positioner);\n const highPriority = this.records.filter(\n record =>\n record.priority === 'high' &&\n record.transitionStatus !== 'ending' &&\n !globalLayouts.get(record.id)?.limited\n );\n\n return (\n <Host>\n <section\n class=\"toast-region\"\n role=\"region\"\n aria-label={this.label}\n aria-live=\"polite\"\n aria-atomic=\"false\"\n aria-relevant=\"additions text\"\n tabIndex={-1}\n onFocusin={this.handleFocusIn}\n onFocusout={(event: FocusEvent) => this.handleFocusOut(event)}\n onKeyDown={(event: KeyboardEvent) => this.handleRegionKeyDown(event)}\n >\n <div\n class=\"toast-viewport\"\n data-expanded={this.expanded ? '' : undefined}\n onPointerEnter={() => this.handlePointerEnter(GLOBAL_STACK_HOVER)}\n onPointerLeave={() => this.handlePointerLeave(GLOBAL_STACK_HOVER)}\n >\n {globalRecords.map(record =>\n this.renderToast(\n record,\n globalLayouts.get(record.id) ?? { index: 0, offset: 0, limited: false }\n )\n )}\n </div>\n <div class=\"toast-anchored-layer\">\n {anchoredRecords.map(record =>\n this.renderToast(record, { index: 0, offset: 0, limited: false })\n )}\n </div>\n <div class=\"toast-assertive-announcer ds-visually-hidden\">\n {highPriority.map(record => (\n <div role=\"alert\" aria-atomic=\"true\">\n {[record.title, record.description].filter(Boolean).join('. ')}\n </div>\n ))}\n </div>\n </section>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{T as o,d as s}from"./p-
|
|
1
|
+
import{T as o,d as s}from"./p-CR7G2BI6.js";const t=o;const p=s;export{t as DsTooltipChart,p as defineCustomElement};
|
|
2
2
|
//# sourceMappingURL=ds-tooltip-chart.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{T as o,d as s}from"./p-
|
|
1
|
+
import{T as o,d as s}from"./p-14sMoeTr.js";const r=o;const t=s;export{r as DsTooltip,t as defineCustomElement};
|
|
2
2
|
//# sourceMappingURL=ds-tooltip.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{p as t,H as e,h as s,a as i,t as a}from"./index.js";import{d as n}from"./p-B9oadFSC.js";const o=()=>`.sc-ds-typing-indicator-h{display:block;width:100%;min-width:0;box-sizing:border-box}`;const r=t(class t extends e{constructor(t){super();if(t!==false){this.__registerHost()}this.label="Typing…"}render(){return s(i,{key:"
|
|
1
|
+
import{p as t,H as e,h as s,a as i,t as a}from"./index.js";import{d as n}from"./p-B9oadFSC.js";const o=()=>`.sc-ds-typing-indicator-h{display:block;width:100%;min-width:0;box-sizing:border-box}`;const r=t(class t extends e{constructor(t){super();if(t!==false){this.__registerHost()}this.label="Typing…"}render(){return s(i,{key:"a0c122fad2ed23e35fc87fb09bd172096a9adfa9",role:"status","aria-live":"polite","aria-atomic":"true"},s("ds-text",{key:"f5e106a144ec0767ef01e8d93a6b24a930dcd8ee",as:"span",variant:"text-body-medium",color:"secondary",shimmer:true},this.label))}static get style(){return o()}},[2,"ds-typing-indicator",{label:[1]}]);function d(){if(typeof customElements==="undefined"){return}const t=["ds-typing-indicator","ds-text"];t.forEach((t=>{switch(t){case"ds-typing-indicator":if(!customElements.get(a(t))){customElements.define(a(t),r)}break;case"ds-text":if(!customElements.get(a(t))){n()}break}}))}d();const c=r;const m=d;export{c as DsTypingIndicator,m as defineCustomElement};
|
|
2
2
|
//# sourceMappingURL=ds-typing-indicator.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p as e,H as n,c as a,h as i,a as s,t}from"./index.js";import{r as o,p as r,a as d,d as l,s as c,f as v,b as p}from"./p-D_QtZZR8.js";import{c as h}from"./p-CUL5_8JM.js";import{r as f}from"./p-rCeztgVn.js";import{d as u}from"./p-DQpw21HO.js";import{d as m}from"./p-CD9AbaHQ.js";import{d as g}from"./p-Cea7rROU.js";import{d as b}from"./p-0XTyQNRG.js";import{d as _}from"./p-B5W_r4vV.js";import{d as x}from"./p-BonnrRtE.js";import{d as y}from"./p-DC69DgAR.js";import{d as w}from"./p-BG_n-zQT.js";import{d as k}from"./p-B9oadFSC.js";import{d as C}from"./p-14sMoeTr.js";function z(e){const n=Array.isArray(e.edges)?e.edges:[e.edges];const a={"scroll-edge-fade":true,"scroll-edge-fade--scroll-aware":e.scrollAware===true,"scroll-edge-fade--hidden":e.hidden===true};for(const e of n){a[`scroll-edge-fade--${e}`]=true}const{atEnd:i}=e;if(i===true){a["scroll-edge-fade--at-end"]=true}else if(i&&typeof i==="object"){for(const e of n){if(i[e]){a[`scroll-edge-fade--${e}-at-edge`]=true}}}return a}const I={side:"right",align:"end",anchorAlignment:"choice-cell",sideOffset:"calc(var(--dimension-space-100) + var(--dimension-space-050))",alignOffset:0};const A={side:"right",align:"start",anchorAlignment:"choice-cell",sideOffset:"calc(var(--dimension-space-100) + var(--dimension-space-050))",alignOffset:0};const S="data-nav-style";function D(e){if(e==="dashboard"||e==="settings")return e;return undefined}function E(e,n,a){const i=D(n);if(i)return i;const s=typeof document!=="undefined"?document.documentElement.getAttribute(S):null;const t=D(s);if(t)return t;return e}function R(e,n){return e!==n}const N="ds-panel-nav-user-menu-anchor";const F=()=>`@property --ds-scroll-edge-fade-top{syntax:'<length-percentage>';inherits:false;initial-value:0px}@property --ds-scroll-edge-fade-bottom{syntax:'<length-percentage>';inherits:false;initial-value:0px}@property --ds-scroll-edge-fade-left{syntax:'<length-percentage>';inherits:false;initial-value:0px}@property --ds-scroll-edge-fade-right{syntax:'<length-percentage>';inherits:false;initial-value:0px}@keyframes ds-scroll-edge-fade-reveal-top{from{--ds-scroll-edge-fade-top:0px}to{--ds-scroll-edge-fade-top:var(--ds-scroll-edge-fade-target-top)}}@keyframes ds-scroll-edge-fade-reveal-bottom{from{--ds-scroll-edge-fade-bottom:var(--ds-scroll-edge-fade-target-bottom)}to{--ds-scroll-edge-fade-bottom:0px}}@keyframes ds-scroll-edge-fade-reveal-left{from{--ds-scroll-edge-fade-left:0px}to{--ds-scroll-edge-fade-left:var(--ds-scroll-edge-fade-target-left)}}@keyframes ds-scroll-edge-fade-reveal-right{from{--ds-scroll-edge-fade-right:var(--ds-scroll-edge-fade-target-right)}to{--ds-scroll-edge-fade-right:0px}}.scroll-edge-fade.sc-ds-panel-nav{--ds-scroll-edge-fade-size:var(--dimension-size-600);--ds-scroll-edge-fade-reveal-distance:var(--dimension-size-800);--ds-scroll-edge-fade-target-top:0px;--ds-scroll-edge-fade-target-bottom:0px;--ds-scroll-edge-fade-target-left:0px;--ds-scroll-edge-fade-target-right:0px;--ds-scroll-edge-fade-top:var(--ds-scroll-edge-fade-target-top);--ds-scroll-edge-fade-bottom:var(--ds-scroll-edge-fade-target-bottom);--ds-scroll-edge-fade-left:var(--ds-scroll-edge-fade-target-left);--ds-scroll-edge-fade-right:var(--ds-scroll-edge-fade-target-right);--ds-scroll-edge-fade-block-mask:linear-gradient( to bottom, transparent 0, #000 var(--ds-scroll-edge-fade-top), #000 calc(100% - var(--ds-scroll-edge-fade-bottom)), transparent 100% );--ds-scroll-edge-fade-inline-mask:linear-gradient( to right, transparent 0, #000 var(--ds-scroll-edge-fade-left), #000 calc(100% - var(--ds-scroll-edge-fade-right)), transparent 100% );-webkit-mask-image:var(--ds-scroll-edge-fade-block-mask), var(--ds-scroll-edge-fade-inline-mask);mask-image:var(--ds-scroll-edge-fade-block-mask), var(--ds-scroll-edge-fade-inline-mask);-webkit-mask-composite:source-in;mask-composite:intersect;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%}.scroll-edge-fade--top.sc-ds-panel-nav{--ds-scroll-edge-fade-target-top:var(--ds-scroll-edge-fade-size)}.scroll-edge-fade--bottom.sc-ds-panel-nav{--ds-scroll-edge-fade-target-bottom:var(--ds-scroll-edge-fade-size)}.scroll-edge-fade--left.sc-ds-panel-nav{--ds-scroll-edge-fade-target-left:var(--ds-scroll-edge-fade-size)}.scroll-edge-fade--right.sc-ds-panel-nav{--ds-scroll-edge-fade-target-right:var(--ds-scroll-edge-fade-size)}.scroll-edge-fade--top-at-edge.sc-ds-panel-nav{--ds-scroll-edge-fade-target-top:0px}.scroll-edge-fade--bottom-at-edge.sc-ds-panel-nav{--ds-scroll-edge-fade-target-bottom:0px}.scroll-edge-fade--left-at-edge.sc-ds-panel-nav{--ds-scroll-edge-fade-target-left:0px}.scroll-edge-fade--right-at-edge.sc-ds-panel-nav{--ds-scroll-edge-fade-target-right:0px}@supports (animation-timeline: scroll()){.scroll-edge-fade--scroll-aware.sc-ds-panel-nav{animation-name:ds-scroll-edge-fade-reveal-top, ds-scroll-edge-fade-reveal-bottom, ds-scroll-edge-fade-reveal-left, ds-scroll-edge-fade-reveal-right;animation-duration:1ms;animation-timing-function:ease-in-out;animation-fill-mode:both;animation-timeline:scroll(self y), scroll(self y), scroll(self x), scroll(self x);animation-range:0 var(--ds-scroll-edge-fade-reveal-distance), calc(100% - var(--ds-scroll-edge-fade-reveal-distance)) 100%, 0 var(--ds-scroll-edge-fade-reveal-distance), calc(100% - var(--ds-scroll-edge-fade-reveal-distance)) 100%}@media (prefers-reduced-motion: reduce){.scroll-edge-fade--scroll-aware.sc-ds-panel-nav{animation:none}}}.scroll-edge-fade--at-end.sc-ds-panel-nav,.scroll-edge-fade--hidden.sc-ds-panel-nav{-webkit-mask-image:none;mask-image:none}.scroll-edge-fade--block-window.sc-ds-panel-nav{--ds-scroll-edge-fade-window-start:100%;--ds-scroll-edge-fade-window-end:100%;-webkit-mask-image:linear-gradient( to bottom, #000 0, #000 var(--ds-scroll-edge-fade-window-start), transparent var(--ds-scroll-edge-fade-window-end) );mask-image:linear-gradient( to bottom, #000 0, #000 var(--ds-scroll-edge-fade-window-start), transparent var(--ds-scroll-edge-fade-window-end) );-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}`;const j=()=>`.sc-ds-panel-nav-h,.sc-ds-panel-nav:where(.ds-table),.sc-ds-panel-nav:where(.tooltip-popup),.sc-ds-panel-nav:where(.ds-radius){--ds-radius-control:var(--dimension-radius-025);--ds-radius-card:var(--dimension-radius-050);--ds-radius-modal:var(--dimension-radius-050);--ds-radius-menu:var(--dimension-radius-075);--ds-radius-tooltip-control:var(--dimension-radius-025);--ds-radius-tooltip-menu:var(--dimension-radius-075);--ds-radius-table:var(--dimension-radius-050)}.ds-control--lg.sc-ds-panel-nav,.ds-control--lg.sc-ds-panel-nav-h,.ds-control--md.sc-ds-panel-nav-h,.ds-control--md.sc-ds-panel-nav,.ds-control--sm.sc-ds-panel-nav-h,.ds-control--sm.sc-ds-panel-nav,.ds-control--xs.sc-ds-panel-nav-h,.ds-control--xs.sc-ds-panel-nav{--ds-control-radius:var(--ds-radius-control)}.ds-control--lg.sc-ds-panel-nav-h,.ds-control--lg.sc-ds-panel-nav{--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-nav-h,.ds-control--md.sc-ds-panel-nav{--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-nav-h,.ds-control--sm.sc-ds-panel-nav{--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-nav-h,.ds-control--xs.sc-ds-panel-nav{--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-nav-h,.ds-chrome-space--sm.sc-ds-panel-nav{--ds-chrome-padding:var(--dimension-space-050);--ds-chrome-gap:var(--dimension-space-050)}.ds-chrome-space--md.sc-ds-panel-nav-h,.ds-chrome-space--md.sc-ds-panel-nav{--ds-chrome-padding:var(--dimension-space-100);--ds-chrome-gap:var(--dimension-space-100)}.ds-chrome-space--lg.sc-ds-panel-nav-h,.ds-chrome-space--lg.sc-ds-panel-nav{--ds-chrome-padding:var(--dimension-space-200);--ds-chrome-gap:var(--dimension-space-200)}.ds-chrome-row.sc-ds-panel-nav-h,.ds-chrome-row.sc-ds-panel-nav,.ds-chrome-column.sc-ds-panel-nav-h,.ds-chrome-column.sc-ds-panel-nav,.ds-chrome-grid.sc-ds-panel-nav-h,.ds-chrome-grid.sc-ds-panel-nav{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-nav-h,.ds-chrome-row.sc-ds-panel-nav{flex-direction:row;align-items:center}.ds-chrome-column.sc-ds-panel-nav-h,.ds-chrome-column.sc-ds-panel-nav{flex-direction:column}.ds-chrome-grid.sc-ds-panel-nav-h,.ds-chrome-grid.sc-ds-panel-nav{display:grid;align-items:center}@media (forced-colors: active){.sc-ds-panel-nav:root,.sc-ds-panel-nav-h,.ds-forced-colors-scope.sc-ds-panel-nav{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.sc-ds-panel-nav-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-panel-nav-h,.ds-focus-ring.sc-ds-panel-nav,.ds-focus-ring-inset.sc-ds-panel-nav-h,.ds-focus-ring-inset.sc-ds-panel-nav{outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.ds-focus-ring.sc-ds-panel-nav-h:focus-visible,.ds-focus-ring.sc-ds-panel-nav: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-panel-nav-h,.ds-focus-ring.ds-focus-ring--visible.sc-ds-panel-nav{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-panel-nav-h:focus-visible,.ds-focus-ring-inset.sc-ds-panel-nav:focus-visible{outline:none}.ds-focus-ring-inset.sc-ds-panel-nav-h:focus-visible::after,.ds-focus-ring-inset.sc-ds-panel-nav: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-panel-nav-h,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-panel-nav{outline:none}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-panel-nav-h::after,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-panel-nav::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}@media (forced-colors: active){.sc-ds-panel-nav-h{--ds-focus-ring-color:var(--ds-forced-color-selected)}}@media (forced-colors: active){.sc-ds-panel-nav:root,.sc-ds-panel-nav-h,.ds-forced-colors-scope.sc-ds-panel-nav{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.ds-interaction-fill.sc-ds-panel-nav-h,.ds-interaction-fill.sc-ds-panel-nav{position:var(--ds-interaction-position, relative);z-index:var(--ds-interaction-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-divider-width:0px;--ds-interaction-divider-color:transparent;--ds-interaction-divider-inline-start-width:0px;--ds-interaction-divider-inline-start-color:transparent;--ds-interaction-divider-inline-end-width:0px;--ds-interaction-divider-inline-end-color:transparent}.ds-interaction-fill.sc-ds-panel-nav-h::before,.ds-interaction-fill.sc-ds-panel-nav::before,.ds-interaction-fill.sc-ds-panel-nav-h::after,.ds-interaction-fill.sc-ds-panel-nav::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none;cursor:inherit;transition:none}.ds-interaction-fill.sc-ds-panel-nav-h::before,.ds-interaction-fill.sc-ds-panel-nav::before{z-index:1}.ds-interaction-fill.sc-ds-panel-nav-h::after,.ds-interaction-fill.sc-ds-panel-nav::after{z-index:3;box-shadow:inset 0 calc(-1 * var(--ds-interaction-divider-width)) 0 var(--ds-interaction-divider-color), inset var(--ds-interaction-divider-inline-start-width) 0 0 var(--ds-interaction-divider-inline-start-color), inset calc(-1 * var(--ds-interaction-divider-inline-end-width)) 0 0 var(--ds-interaction-divider-inline-end-color), inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color)}.ds-interaction-fill--bordered.sc-ds-panel-nav-h,.ds-interaction-fill--bordered.sc-ds-panel-nav{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--color-border-secondary)}.ds-interaction-fill--selected.sc-ds-panel-nav-h::before,.ds-interaction-fill--selected.sc-ds-panel-nav::before{background:var(--ds-interaction-active)}.ds-interaction-fill--selected.sc-ds-panel-nav-h,.ds-interaction-fill--selected.sc-ds-panel-nav{--ds-interaction-dot-ring:var(--ds-interaction-active)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-panel-nav-h:hover:not(:disabled)::after,.ds-interaction-fill.sc-ds-panel-nav:hover:not(:disabled)::after{background:var(--ds-interaction-hover)}}.ds-interaction-fill.sc-ds-panel-nav-h:active:not(:disabled)::after,.ds-interaction-fill.sc-ds-panel-nav:active:not(:disabled)::after{background:var(--ds-interaction-pressed)}.ds-interaction-fill--grouped.sc-ds-panel-nav-h::after,.ds-interaction-fill--grouped.sc-ds-panel-nav::after,.ds-interaction-fill--grouped.sc-ds-panel-nav-h:active:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-panel-nav:active:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill--grouped.sc-ds-panel-nav-h:hover:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-panel-nav:hover:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}}.ds-interaction-fill--grouped.sc-ds-panel-nav-h,.ds-interaction-fill--grouped.sc-ds-panel-nav{--ds-interaction-divider-width:var(--ds-interaction-group-divider-width, 0px);--ds-interaction-divider-color:var(--ds-interaction-group-divider-color, transparent);--ds-interaction-divider-inline-start-width:var( --ds-interaction-group-divider-inline-start-width, 0px );--ds-interaction-divider-inline-start-color:var( --ds-interaction-group-divider-inline-start-color, transparent );--ds-interaction-divider-inline-end-width:var( --ds-interaction-group-divider-inline-end-width, 0px );--ds-interaction-divider-inline-end-color:var( --ds-interaction-group-divider-inline-end-color, transparent )}.ds-interaction-fill.sc-ds-panel-nav-h>.ds-interaction-fill__content.sc-ds-panel-nav,.ds-interaction-fill.sc-ds-panel-nav>.ds-interaction-fill__content.sc-ds-panel-nav,.ds-interaction-fill__content.sc-ds-panel-nav{position:relative;z-index:2;cursor:inherit}.ds-interaction-fill--on-faint.sc-ds-panel-nav-h,.ds-interaction-fill--on-faint.sc-ds-panel-nav{--ds-interaction-active:var(--color-interaction-active)}.ds-interaction-fill--on-medium.sc-ds-panel-nav-h,.ds-interaction-fill--on-medium.sc-ds-panel-nav{--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-panel-nav-h,.ds-interaction-fill--on-bold.sc-ds-panel-nav{--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-panel-nav-h,.ds-interaction-fill--on-strong.sc-ds-panel-nav{--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-panel-nav-h,.ds-interaction-fill--on-translucent.sc-ds-panel-nav{--ds-interaction-hover:var(--color-translucent-interaction-hover);--ds-interaction-pressed:var(--color-translucent-interaction-pressed);--ds-interaction-active:var(--color-translucent-interaction-active-brand);--ds-focus-ring-color:var(--color-translucent-interaction-focus)}.ds-interaction-fill--on-inverted.sc-ds-panel-nav-h,.ds-interaction-fill--on-inverted.sc-ds-panel-nav{--ds-interaction-hover:var(--color-inverted-interaction-hover);--ds-interaction-pressed:var(--color-inverted-interaction-pressed);--ds-interaction-active:var(--color-inverted-interaction-active-brand);--ds-focus-ring-color:var(--color-inverted-interaction-focus)}.ds-interaction-fill--on-media.sc-ds-panel-nav-h,.ds-interaction-fill--on-media.sc-ds-panel-nav{--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-panel-nav-h,.ds-interaction-fill--on-always-dark.sc-ds-panel-nav{--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-brand);--ds-focus-ring-color:var(--color-always-dark-interaction-focus)}.ds-interaction-fill--on-navigation.sc-ds-panel-nav-h,.ds-interaction-fill--on-navigation.sc-ds-panel-nav{--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-interaction-fill.ds-interaction-fill--surface-open.sc-ds-panel-nav-h:not(:disabled)::after,.ds-interaction-fill.ds-interaction-fill--surface-open.sc-ds-panel-nav:not(:disabled)::after{background:var(--ds-interaction-pressed)}@media (forced-colors: active){.ds-interaction-fill.sc-ds-panel-nav-h::after,.ds-interaction-fill.sc-ds-panel-nav::after{box-shadow:none;outline:var(--ds-interaction-border-width) solid var(--ds-forced-color-control-boundary);outline-offset:calc(-1 * var(--ds-interaction-border-width))}.ds-interaction-fill--surface-open.sc-ds-panel-nav-h:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill--surface-open.sc-ds-panel-nav:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after{outline:var(--dimension-stroke-width-025) dashed var(--ds-forced-color-control-boundary);outline-offset:calc(-1 * var(--dimension-stroke-width-025))}.ds-interaction-fill--selected.sc-ds-panel-nav-h::before,.ds-interaction-fill--selected.sc-ds-panel-nav::before{background:transparent;outline:var(--dimension-stroke-width-025) solid var(--ds-forced-color-selected);outline-offset:calc(-1 * var(--dimension-stroke-width-025))}}@media (forced-colors: active) and (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-panel-nav-h:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill.sc-ds-panel-nav:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after{outline-color:var(--ds-forced-color-selected);outline-width:var(--dimension-stroke-width-012)}}.ds-scrollbar-hidden.sc-ds-panel-nav-h,.ds-scrollbar-hidden.sc-ds-panel-nav{scrollbar-width:none}.ds-scrollbar-hidden.sc-ds-panel-nav-h::-webkit-scrollbar,.ds-scrollbar-hidden.sc-ds-panel-nav::-webkit-scrollbar{display:none}.ds-nav-disclosure.sc-ds-panel-nav,.ds-nav-disclosure-divider.sc-ds-panel-nav{--ds-nav-disclosure-duration:calc( var(--effect-animation-duration-short-3) * 2 + var(--effect-animation-duration-short-2) );--ds-nav-disclosure-wait:calc( var(--effect-animation-duration-short-3) + var(--effect-animation-duration-short-1) );--ds-nav-disclosure-fade:var(--ds-nav-disclosure-duration);--ds-nav-disclosure-stagger:var(--effect-animation-duration-short-1)}.ds-nav-disclosure.sc-ds-panel-nav{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--ds-nav-disclosure-duration) var(--effect-animation-easing-ease-in-out) var(--ds-nav-disclosure-wait)}.ds-nav-disclosure--open.sc-ds-panel-nav{grid-template-rows:1fr;transition-delay:var(--effect-animation-duration-instant)}.ds-nav-disclosure.sc-ds-panel-nav .ds-nav-disclosure__item.sc-ds-panel-nav{opacity:0;pointer-events:none;transition:opacity var(--ds-nav-disclosure-fade) var(--effect-animation-easing-ease-out) calc(var(--ds-nav-disclosure-reverse-index) * var(--ds-nav-disclosure-stagger)), color var(--effect-motion-short-1)}.ds-nav-disclosure--open.sc-ds-panel-nav .ds-nav-disclosure__item.sc-ds-panel-nav{opacity:1;pointer-events:auto;transition-delay:calc( var(--ds-nav-disclosure-wait) + var(--ds-nav-disclosure-index) * var(--ds-nav-disclosure-stagger) ), var(--effect-animation-duration-instant)}.ds-nav-disclosure-divider.sc-ds-panel-nav{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows var(--ds-nav-disclosure-duration) var(--effect-animation-easing-ease-in-out) var(--ds-nav-disclosure-wait), opacity var(--ds-nav-disclosure-duration) var(--effect-animation-easing-ease-out)}.ds-nav-disclosure-divider--open.sc-ds-panel-nav{grid-template-rows:1fr;opacity:1;transition-delay:var(--effect-animation-duration-instant), var(--effect-animation-duration-instant)}.ds-nav-disclosure-divider__clip.sc-ds-panel-nav{min-height:0;overflow:hidden}@media (prefers-reduced-motion: reduce){.ds-nav-disclosure.sc-ds-panel-nav,.ds-nav-disclosure-divider.sc-ds-panel-nav,.ds-nav-disclosure.sc-ds-panel-nav .ds-nav-disclosure__item.sc-ds-panel-nav{transition-duration:var(--effect-animation-duration-instant) !important;transition-delay:var(--effect-animation-duration-instant) !important}}.panel-nav.sc-ds-panel-nav{--_nav-width:var(--dimension-panel-width-2xs);--_nav-width-collapsed:var(--dimension-size-600);--_nav-item-height:var(--dimension-size-400, 32px);--_nav-padding-x:var(--dimension-space-100, 8px);--_nav-padding-y:var(--dimension-space-100, 8px);--_nav-footer-btn-w:calc( var(--dimension-space-075, 6px) * 2 + var(--dimension-iconography-md, 20px) );--_nav-speed:var(--ds-panel-nav-speed, 1);--_nav-expand-dur:calc(var(--_nav-speed) * var(--effect-animation-duration-medium-1, 300ms));--_nav-expand-motion:var(--_nav-expand-dur) var(--effect-animation-easing-ease-in-out, ease);--_nav-label-fade-dur:calc(var(--_nav-speed) * var(--effect-animation-duration-medium-1, 300ms));--_nav-label-fade-motion:var(--_nav-label-fade-dur) var(--effect-animation-easing-ease-in-out, ease);--_nav-label-fade-out-dur:calc( var(--_nav-speed) * var(--effect-animation-duration-medium-1, 300ms) );--_nav-label-fade-out-motion:var(--_nav-label-fade-out-dur) var(--effect-animation-easing-ease-in-out, ease);--_nav-bg:var(--color-background-secondary);--_nav-border:var(--color-border-tertiary);--_nav-divider:var(--color-border-tertiary);--_nav-fg-primary:var(--color-foreground-primary);--_nav-fg-secondary:var(--color-foreground-secondary);--_nav-fg-tertiary:var(--color-foreground-tertiary);--_nav-hover:var(--color-interaction-hover);--_nav-pressed:var(--color-interaction-pressed);--_nav-focus:var(--color-interaction-focus);--_nav-dot:var(--color-foreground-bold-brand);--ds-interaction-hover:var(--_nav-hover);--ds-interaction-pressed:var(--_nav-pressed);--ds-focus-ring-color:var(--_nav-focus)}ds-shell-app.sc-ds-panel-nav-h:not([gradient-preset='none']) .panel-nav.sc-ds-panel-nav,ds-shell-app:not([gradient-preset='none']) .sc-ds-panel-nav-h .panel-nav.sc-ds-panel-nav,ds-shell-app.shell-app--paper-texture.sc-ds-panel-nav-h .panel-nav.sc-ds-panel-nav,ds-shell-app.shell-app--paper-texture .sc-ds-panel-nav-h .panel-nav.sc-ds-panel-nav{background-color:transparent}.panel-nav--dashboard.sc-ds-panel-nav,.panel-nav--settings.sc-ds-panel-nav{--_nav-bg:var(--color-background-secondary);--_nav-border:var(--color-border-tertiary);--_nav-divider:var(--color-border-tertiary);--_nav-fg-primary:var(--color-foreground-primary);--_nav-fg-secondary:var(--color-foreground-secondary);--_nav-fg-tertiary:var(--color-foreground-tertiary);--_nav-hover:var(--color-interaction-hover);--_nav-pressed:var(--color-interaction-pressed);--_nav-focus:var(--color-interaction-focus);--_nav-dot:var(--color-foreground-bold-brand);--ds-interaction-hover:var(--_nav-hover);--ds-interaction-pressed:var(--_nav-pressed);--ds-focus-ring-color:var(--_nav-focus)}.panel-nav.sc-ds-panel-nav{display:flex;flex-direction:column;position:relative;width:var(--_nav-width);min-width:var(--_nav-width);height:100%;background-color:var(--_nav-bg);border-right:var(--dimension-stroke-width-012, 1px) solid var(--_nav-border);box-sizing:border-box;overflow:visible;transition:width var(--_nav-expand-motion), min-width var(--_nav-expand-motion), background-color var(--effect-motion-short-3, 200ms ease), border-color var(--effect-motion-short-3, 200ms ease);font-family:var(--typography-font-family-ui, system-ui);isolation:isolate}.panel-nav__header.sc-ds-panel-nav,.panel-nav__body.sc-ds-panel-nav,.panel-nav__footer.sc-ds-panel-nav{position:relative;z-index:3}.panel-nav--collapsed.sc-ds-panel-nav{width:var(--_nav-width-collapsed);min-width:var(--_nav-width-collapsed)}.panel-nav__header.sc-ds-panel-nav{height:var(--dimension-size-600, 48px);flex-shrink:0;border-bottom:var(--dimension-stroke-width-012, 1px) solid var(--_nav-divider);transition:border-color var(--effect-motion-short-3, 200ms ease)}.panel-nav__header-btn.sc-ds-panel-nav{all:unset;position:relative;z-index:0;display:flex;align-items:center;justify-content:center;padding:var(--dimension-space-075, 6px);border-radius:var(--ds-control-radius, var(--dimension-radius-025, 2px));cursor:default;color:var(--_nav-fg-primary);flex-shrink:0;box-sizing:border-box;transition:color var(--effect-motion-short-3, 200ms ease)}.panel-nav--breakpoint-locked.sc-ds-panel-nav .panel-nav__header-btn.sc-ds-panel-nav{cursor:default}.panel-nav__header-logo.sc-ds-panel-nav{display:flex;align-items:center;justify-content:center;position:relative;z-index:2;opacity:1}.panel-nav__m-mark.sc-ds-panel-nav{width:var(--dimension-iconography-md, 20px);height:var(--dimension-iconography-md, 20px);display:block}.panel-nav__header-toggle.sc-ds-panel-nav{display:flex;align-items:center;justify-content:center;position:absolute;inset:0;z-index:2;opacity:0;pointer-events:none}@media (hover: hover) and (pointer: fine){.panel-nav.sc-ds-panel-nav:not(.panel-nav--breakpoint-locked) .panel-nav__header-btn.sc-ds-panel-nav:hover .panel-nav__header-logo.sc-ds-panel-nav{opacity:0}.panel-nav.sc-ds-panel-nav:not(.panel-nav--breakpoint-locked) .panel-nav__header-btn.sc-ds-panel-nav:hover .panel-nav__header-toggle.sc-ds-panel-nav{opacity:1}}.panel-nav__body.sc-ds-panel-nav{flex:1;overflow-y:auto;overflow-x:hidden}.panel-nav--collapsed.sc-ds-panel-nav .panel-nav__body.sc-ds-panel-nav{padding-inline-end:calc(var(--_nav-padding-x) - var(--dimension-stroke-width-012))}.panel-nav__sections.sc-ds-panel-nav{display:flex;flex-direction:column;gap:var(--dimension-space-200, 16px);width:100%}.panel-nav__group.sc-ds-panel-nav{display:flex;flex-direction:column;gap:var(--dimension-space-050, 4px)}.panel-nav__branch.sc-ds-panel-nav{display:flex;flex-direction:column}.panel-nav__branch-divider-line.sc-ds-panel-nav{display:block;height:var(--dimension-stroke-width-012);margin-inline:var(--dimension-space-075);background:var(--_nav-divider)}.panel-nav__branch-divider--before.sc-ds-panel-nav .panel-nav__branch-divider-line.sc-ds-panel-nav{margin-block:var(--dimension-space-050) var(--dimension-space-100)}.panel-nav__branch-divider--after.sc-ds-panel-nav .panel-nav__branch-divider-line.sc-ds-panel-nav{margin-block:var(--dimension-space-100) var(--dimension-space-050)}.panel-nav__children-accordion.sc-ds-panel-nav,.panel-nav__branch-divider.sc-ds-panel-nav{--ds-nav-disclosure-duration:var( --_panel-nav-nested-section-duration, calc(var(--effect-animation-duration-short-3) * 2 + var(--effect-animation-duration-short-2)) );--ds-nav-disclosure-wait:var( --_panel-nav-nested-transition-wait, calc(var(--effect-animation-duration-short-3) + var(--effect-animation-duration-short-1)) );--ds-nav-disclosure-fade:var( --_panel-nav-nested-child-fade-duration, var(--ds-nav-disclosure-duration) );--ds-nav-disclosure-stagger:var( --_panel-nav-nested-child-stagger, var(--effect-animation-duration-short-1) )}.panel-nav__children.sc-ds-panel-nav{display:flex;flex-direction:column;gap:var(--dimension-space-050, 4px);min-height:0;overflow:hidden}.panel-nav__children.sc-ds-panel-nav>.panel-nav__child.sc-ds-panel-nav:first-child{margin-block-start:var(--dimension-space-050, 4px)}ds-text.panel-nav__group-label.sc-ds-panel-nav{display:flex;align-items:center;box-sizing:border-box;text-transform:uppercase;color:var(--_nav-fg-secondary);user-select:none;height:var(--dimension-size-300, 24px);padding:0 calc(var(--dimension-space-075, 6px) + var(--ds-control-label-inset));white-space:nowrap;overflow:hidden;max-height:var(--dimension-size-300, 24px);opacity:1;transition:opacity var(--_nav-label-fade-motion) 0ms, max-height var(--_nav-label-fade-motion) 0ms, padding var(--_nav-label-fade-motion) 0ms, color var(--effect-motion-short-3, 200ms ease)}.panel-nav__item.sc-ds-panel-nav{all:unset;position:relative;z-index:0;display:flex;align-items:center;gap:var(--dimension-space-050, 4px);padding:0 var(--dimension-space-075, 6px);height:var(--dimension-size-400, 32px);border-radius:var(--ds-control-radius, var(--dimension-radius-025, 2px));cursor:default;color:var(--_nav-fg-secondary);box-sizing:border-box;width:100%;user-select:none;transition:color var(--effect-motion-short-1, 50ms ease-in-out)}.panel-nav__item--active.sc-ds-panel-nav{color:var(--_nav-fg-primary)}.panel-nav__parent--muted.sc-ds-panel-nav{color:var(--_nav-fg-secondary)}.panel-nav__child.sc-ds-panel-nav{flex:0 0 var(--_nav-item-height);padding-inline-start:calc( var(--dimension-space-075, 6px) + var(--dimension-iconography-md) + var(--dimension-space-050) )}.panel-nav__children-accordion.sc-ds-panel-nav:not(.panel-nav__children-accordion--open) .panel-nav__child.sc-ds-panel-nav{color:var(--_nav-fg-secondary)}.panel-nav__child-dot.sc-ds-panel-nav{position:relative;z-index:2;display:flex;align-items:center;justify-content:center;flex:0 0 var(--dimension-iconography-md);width:var(--dimension-iconography-md);height:var(--dimension-iconography-md)}.panel-nav__child--inactive.sc-ds-panel-nav{color:var(--_nav-fg-tertiary)}.panel-nav__child--inactive.sc-ds-panel-nav::after{display:none}.panel-nav__item-icon.sc-ds-panel-nav{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--dimension-iconography-md, 20px);height:var(--dimension-iconography-md, 20px);position:relative;z-index:2}.panel-nav__item-label.sc-ds-panel-nav{position:relative;z-index:2;flex:1;min-width:0;height:var(--typography-lineheight-md, 20px);opacity:1;mask-image:linear-gradient(to right, black 50%, transparent 100%);-webkit-mask-image:linear-gradient(to right, black 50%, transparent 100%);mask-size:200% 100%;-webkit-mask-size:200% 100%;mask-position:0% 0;-webkit-mask-position:0% 0;transition:opacity var(--_nav-label-fade-motion) 0ms, mask-position var(--_nav-label-fade-motion) 0ms, -webkit-mask-position var(--_nav-label-fade-motion) 0ms}.panel-nav__item-label-text.sc-ds-panel-nav{padding:0 var(--ds-control-label-inset)}.panel-nav__item-dot-box.sc-ds-panel-nav{position:absolute;z-index:2;right:var(--dimension-space-075, 6px);top:var(--dimension-space-075, 6px);display:flex;align-items:center;justify-content:center;width:var(--dimension-iconography-md, 20px);height:var(--dimension-iconography-md, 20px);pointer-events:none}.panel-nav__item-dot.sc-ds-panel-nav{transition:transform var(--_nav-expand-motion)}.panel-nav--collapsed.sc-ds-panel-nav .panel-nav__item-dot.sc-ds-panel-nav{transform:translate( calc(var(--dimension-space-075, 6px) + var(--dimension-stroke-width-012, 1px)), calc(0px - var(--dimension-space-075, 6px) - var(--dimension-stroke-width-012, 1px)) )}.panel-nav--animating.sc-ds-panel-nav .panel-nav__item-label.sc-ds-panel-nav{text-overflow:clip}.panel-nav--collapsed.sc-ds-panel-nav .panel-nav__item-label.sc-ds-panel-nav{opacity:0;pointer-events:none;text-overflow:clip;mask-position:100% 0;-webkit-mask-position:100% 0;transition:opacity var(--_nav-label-fade-out-motion) 0ms, mask-position var(--_nav-label-fade-out-motion) 0ms, -webkit-mask-position var(--_nav-label-fade-out-motion) 0ms}.panel-nav--collapsed.panel-nav--animating.sc-ds-panel-nav .panel-nav__children-accordion.sc-ds-panel-nav{transition-duration:var(--_nav-expand-dur);transition-delay:var(--effect-animation-duration-instant)}.panel-nav--animating.sc-ds-panel-nav .panel-nav__branch-divider.sc-ds-panel-nav{transition-duration:var(--_nav-expand-dur), var(--_nav-expand-dur);transition-delay:var(--effect-animation-duration-instant), var(--effect-animation-duration-instant)}.panel-nav--collapsed.sc-ds-panel-nav:not(.panel-nav--animating) .panel-nav__children.sc-ds-panel-nav{display:none}.panel-nav--collapsed.sc-ds-panel-nav ds-text.panel-nav__group-label.sc-ds-panel-nav{opacity:0;max-height:0;padding:0 calc(var(--dimension-space-075, 6px) + var(--ds-control-label-inset));pointer-events:none;transition:opacity var(--_nav-label-fade-out-motion) 0ms, max-height var(--_nav-label-fade-out-motion) 0ms, padding var(--_nav-label-fade-out-motion) 0ms, color var(--effect-motion-short-3, 200ms ease)}.panel-nav__footer.sc-ds-panel-nav{position:relative;flex-shrink:0;height:calc(var(--_nav-padding-y) * 2 + var(--_nav-item-height));transition:height var(--_nav-expand-motion)}.panel-nav--collapsed.sc-ds-panel-nav .panel-nav__footer.sc-ds-panel-nav{height:calc( var(--_nav-padding-y) * 2 + var(--_nav-item-height) * 2 + var(--dimension-space-050, 4px) )}.panel-nav__footer-btn.sc-ds-panel-nav{position:absolute;left:var(--_nav-padding-x);top:var(--_nav-padding-y);--ds-button-unfilled-fg:var(--_nav-fg-secondary);--ds-button-unfilled-fg-active:var(--_nav-fg-primary);--ds-interaction-hover:var(--_nav-hover);--ds-interaction-pressed:var(--_nav-pressed);--ds-focus-ring-color:var(--_nav-focus)}.panel-nav__footer-user.sc-ds-panel-nav{position:absolute;left:calc(var(--_nav-padding-x) + var(--_nav-footer-btn-w) + var(--dimension-space-100, 8px));right:var(--_nav-padding-x);top:var(--_nav-padding-y);width:auto;min-width:0;transition:left var(--_nav-expand-motion), right var(--_nav-expand-motion), top var(--_nav-expand-motion)}.panel-nav--collapsed.sc-ds-panel-nav .panel-nav__footer-user.sc-ds-panel-nav{left:var(--_nav-padding-x);right:calc(100% - var(--_nav-padding-x) - var(--_nav-item-height));top:calc(var(--_nav-padding-y) + var(--_nav-item-height) + var(--dimension-space-050, 4px))}.panel-nav__footer-user-label.sc-ds-panel-nav{text-align:right;position:absolute;left:var(--dimension-space-075, 6px);right:calc( var(--dimension-space-075, 6px) + var(--dimension-iconography-md, 20px) + var(--dimension-space-050, 4px) );top:50%;transform:translateY(-50%);flex:none;height:var(--typography-lineheight-md, 20px);mask-image:none;-webkit-mask-image:none;transition:opacity var(--_nav-label-fade-motion)}.panel-nav--collapsed.sc-ds-panel-nav .panel-nav__footer-user-label.sc-ds-panel-nav{opacity:0;pointer-events:none;mask-position:0% 0;-webkit-mask-position:0% 0}.panel-nav__footer-user-icon.sc-ds-panel-nav{position:absolute;left:calc(100% - var(--dimension-iconography-md, 20px) - var(--dimension-space-075, 6px));top:0;bottom:0;height:auto;display:flex;align-items:center;justify-content:center;transition:left var(--_nav-expand-motion)}.panel-nav--collapsed.sc-ds-panel-nav .panel-nav__footer-user-icon.sc-ds-panel-nav{left:var(--dimension-space-075, 6px)}.panel-nav__footer-icon-expanded.sc-ds-panel-nav,.panel-nav__footer-icon-collapsed.sc-ds-panel-nav{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}.panel-nav__footer-icon-expanded.sc-ds-panel-nav{opacity:1;transition:opacity var(--_nav-label-fade-motion)}.panel-nav__footer-icon-collapsed.sc-ds-panel-nav{opacity:0;transition:opacity var(--_nav-label-fade-motion)}.panel-nav--collapsed.sc-ds-panel-nav .panel-nav__footer-icon-expanded.sc-ds-panel-nav{opacity:0;transition:opacity var(--_nav-label-fade-out-motion)}.panel-nav--collapsed.sc-ds-panel-nav .panel-nav__footer-icon-collapsed.sc-ds-panel-nav{opacity:1;transition:opacity var(--_nav-label-fade-out-motion)}ds-text.panel-nav__user-initial.sc-ds-panel-nav,ds-text.panel-nav__user-initial.ds-text--caption.sc-ds-panel-nav{position:absolute;top:50%;left:50%;right:auto;bottom:auto;transform:translate(-50%, -50%);display:block;width:max-content;max-width:none;min-width:0;text-align:center;color:inherit;pointer-events:none}.panel-nav__resize-handle.sc-ds-panel-nav{position:absolute;top:0;right:var(--dimension-space-n050, -4px);bottom:0;width:var(--dimension-space-100, 8px);z-index:20;cursor:ew-resize;touch-action:none;background:transparent}.panel-nav__resize-handle.sc-ds-panel-nav::before{content:'';position:absolute;inset:0;background:rgba(0, 0, 0, 0.001)}.panel-nav__resize-handle.sc-ds-panel-nav::after{content:'';position:absolute;top:0;bottom:0;left:50%;transform:translateX(-50%);width:var(--dimension-stroke-width-025, 2px);background:var(--color-foreground-primary);opacity:0;pointer-events:none;transition:opacity var(--effect-motion-short-2, 100ms ease-in-out)}.panel-nav__resize-handle--overlay.sc-ds-panel-nav::after{opacity:1}@media (prefers-reduced-motion: reduce){.panel-nav.sc-ds-panel-nav,.panel-nav.sc-ds-panel-nav *.sc-ds-panel-nav,.panel-nav.sc-ds-panel-nav *.sc-ds-panel-nav::before,.panel-nav.sc-ds-panel-nav *.sc-ds-panel-nav::after,.panel-nav__resize-handle.sc-ds-panel-nav,.panel-nav__resize-handle.sc-ds-panel-nav::before,.panel-nav__resize-handle.sc-ds-panel-nav::after{transition-duration:var(--effect-animation-duration-instant) !important;animation-duration:var(--effect-animation-duration-instant) !important;transition-delay:var(--effect-animation-duration-instant) !important}}`;let T=0;const L=e(class e extends n{constructor(e){super();if(e!==false){this.__registerHost()}this.dsNavSelect=a(this,"dsNavSelect",7);this.dsNavChildSelect=a(this,"dsNavChildSelect",7);this.dsNavToggle=a(this,"dsNavToggle",7);this.dsChromeTransitionStart=a(this,"dsChromeTransitionStart",7);this.dsChromeTransitionEnd=a(this,"dsChromeTransitionEnd",7);this.dsNavFooterAction=a(this,"dsNavFooterAction",7);this.dsNavUserAction=a(this,"dsNavUserAction",7);this.instanceId=T++;this.navStyle="dashboard";this.disableViewTransition=false;this.groups="[]";this.presentation="flat";this.routerMode="anchor";this.activeId="";this.activeChildId="";this.collapsed=false;this.breakpoint=0;this.storageKey="";this.currentUrl="";this.userName="";this.userInitial="";this.dashboardLabel="Dashboard";this.settingsLabel="Settings";this.accountLabel="Account";this.accountMenuExpanded=false;this.dashboardNavigationLabel="Dashboard navigation";this.settingsNavigationLabel="Settings navigation";this.expandNavigationLabel="Expand navigation";this.collapseNavigationLabel="Collapse navigation";this.navigationItemsLabel="Navigation items";this.renderedStyle="dashboard";this.parsedGroups=[];this.isAnimating=false;this.rovingIndex=0;this.viewportNarrow=false;this.urlDerivedActiveId="";this.urlDerivedActiveChildId="";this.bodyScrollable=false;this.expandedParentId="";this.inlineChildrenExpansionReady=true;this.flyoutParentId="";this.flyoutOpen=false;this.flyoutInitialFocusVisible=false;this.transitionFallbackTimer=null;this.initialRenderComplete=false;this.inlineChildrenExpansionFrame=null;this.isDragging=false;this.dragStartX=0;this.didSnap=false;this.lastDeltaX=0;this.edgeOverlayTimer=null;this.showEdgeOverlay=false;this.closeFlyout=()=>{this.flyoutOpen=false;this.flyoutInitialFocusVisible=false};this.handleFlyoutAfterClose=()=>{if(!this.flyoutOpen)this.flyoutParentId=""};this.handleFlyoutSelect=e=>{const n=this.getAllItems().find((e=>e.id===this.flyoutParentId));const a=n?.children?.find((n=>n.id===e.detail?.value));if(!n||!a)return;this.emitChildSelect(n,a);this.followFlyoutAnchor(a);this.closeFlyout()}}get effectiveActiveId(){return this.urlDerivedActiveId||this.activeId}get effectiveActiveChildId(){return this.urlDerivedActiveChildId||this.activeChildId}get collapsedPresentation(){return this.collapsed||this.viewportNarrow}get effectiveDisableViewTransition(){return o(this.disableViewTransition,this.el.getAttribute("disable-view-transition"))}onCollapsedChange(e,n){if(n===undefined||!this.initialRenderComplete)return;this.stageInlineChildrenExpansion(n&&!e&&!this.viewportNarrow&&this.presentation==="nested");this.flyoutParentId="";this.flyoutOpen=false;this.syncExpandedParent();this.rovingIndex=this.getFirstRovingIndex();this.startCollapseAnimation()}onViewportNarrowChange(e,n){if(n===undefined||!this.initialRenderComplete)return;this.stageInlineChildrenExpansion(n&&!e&&!this.collapsed&&this.presentation==="nested");this.flyoutParentId="";this.flyoutOpen=false;if(e||this.rovingIndex>this.getVisibleRovingEntries().length){this.rovingIndex=this.getFirstRovingIndex()}this.startCollapseAnimation()}onBreakpointChange(){this.disconnectResizeObserver();if(this.effectiveBreakpoint()>0)this.connectResizeObserver()}onGroupsChange(e){this.parsedGroups=r(e);this.rovingIndex=0;this.syncActiveFromUrl();this.syncExpandedParent()}onPresentationChange(){this.stageInlineChildrenExpansion(false);this.flyoutParentId="";this.flyoutOpen=false;this.syncExpandedParent();this.rovingIndex=this.getFirstRovingIndex()}onActiveIdChange(){this.syncExpandedParent()}onCurrentUrlChange(){this.syncActiveFromUrl()}onNavStyleChange(e){this.renderedStyle=e}componentWillLoad(){this.renderedStyle=E(this.navStyle,this.el.getAttribute("nav-style"));this.viewportNarrow=this.isViewportNarrow();if(this.storageKey){try{const e=localStorage.getItem(this.storageKey);if(e!==null)this.collapsed=e==="true"}catch{}}this.onGroupsChange(this.groups);this.syncActiveFromUrl()}componentDidLoad(){this.syncHostPropsIfNeeded();this.scheduleDeferredHostPropSync();if(this.effectiveBreakpoint()>0)this.connectResizeObserver();this.connectScrollRegionObserver();this.updateBodyScrollable();this.initialRenderComplete=true}componentDidRender(){this.updateBodyScrollable();this.scheduleInlineChildrenExpansion()}disconnectedCallback(){this.disconnectResizeObserver();this.disconnectScrollRegionObserver();this.clearInlineChildrenExpansionFrame();this.clearCollapseAnimationCompletion(this.el.querySelector(".panel-nav"));this.clearEdgeOverlayTimer();if(this.globalMouseMoveHandler){window.removeEventListener("mousemove",this.globalMouseMoveHandler)}if(this.globalMouseUpHandler){window.removeEventListener("mouseup",this.globalMouseUpHandler)}}startCollapseAnimation(){if(this.isAnimating)return;this.isAnimating=true;this.dsChromeTransitionStart.emit({source:"panel-nav"});const e=this.el.querySelector(".panel-nav");this.clearCollapseAnimationCompletion(e);this.transitionCompletionHandler=n=>{if(n.target===e&&(n.propertyName==="width"||n.propertyName==="min-width")){this.finishCollapseAnimation(e)}};e?.addEventListener("transitionend",this.transitionCompletionHandler);e?.addEventListener("transitioncancel",this.transitionCompletionHandler);requestAnimationFrame((()=>{requestAnimationFrame((()=>{if(!this.isAnimating)return;if(!e){this.finishCollapseAnimation(e);return}const n=d(getComputedStyle(e));if(n<=0){this.finishCollapseAnimation(e);return}this.transitionFallbackTimer=window.setTimeout((()=>{this.finishCollapseAnimation(e)}),n)}))}))}stageInlineChildrenExpansion(e){this.clearInlineChildrenExpansionFrame();this.inlineChildrenExpansionReady=!e}scheduleInlineChildrenExpansion(){if(this.inlineChildrenExpansionReady||this.collapsedPresentation)return;this.clearInlineChildrenExpansionFrame();this.inlineChildrenExpansionFrame=requestAnimationFrame((()=>{this.inlineChildrenExpansionFrame=null;if(this.collapsedPresentation)return;this.el.querySelector(".panel-nav__children-accordion")?.getBoundingClientRect();this.inlineChildrenExpansionReady=true}))}clearInlineChildrenExpansionFrame(){if(this.inlineChildrenExpansionFrame===null)return;cancelAnimationFrame(this.inlineChildrenExpansionFrame);this.inlineChildrenExpansionFrame=null}finishCollapseAnimation(e){const n=this.isAnimating;this.clearCollapseAnimationCompletion(e);if(!n)return;this.isAnimating=false;this.dsChromeTransitionEnd.emit({source:"panel-nav"})}clearCollapseAnimationCompletion(e){if(this.transitionCompletionHandler){e?.removeEventListener("transitionend",this.transitionCompletionHandler);e?.removeEventListener("transitioncancel",this.transitionCompletionHandler);this.transitionCompletionHandler=undefined}if(this.transitionFallbackTimer!==null){window.clearTimeout(this.transitionFallbackTimer);this.transitionFallbackTimer=null}}effectiveBreakpoint(){if(this.breakpoint>0)return this.breakpoint;const e=Number(this.el.getAttribute("breakpoint")??0);return Number.isFinite(e)&&e>0?e:0}isViewportNarrow(){const e=this.effectiveBreakpoint();return typeof window!=="undefined"&&e>0&&window.innerWidth<e}connectResizeObserver(){this.viewportNarrow=this.isViewportNarrow();this.resizeObserver=new ResizeObserver((()=>{this.viewportNarrow=this.isViewportNarrow()}));this.resizeObserver.observe(document.documentElement)}disconnectResizeObserver(){this.resizeObserver?.disconnect();this.resizeObserver=undefined}connectScrollRegionObserver(){this.disconnectScrollRegionObserver();if(!this.bodyEl||typeof ResizeObserver==="undefined")return;this.scrollRegionObserver=new ResizeObserver((()=>this.updateBodyScrollable()));this.scrollRegionObserver.observe(this.bodyEl)}disconnectScrollRegionObserver(){this.scrollRegionObserver?.disconnect();this.scrollRegionObserver=undefined}updateBodyScrollable(){const e=Boolean(this.bodyEl&&this.bodyEl.scrollHeight>this.bodyEl.clientHeight+1);if(e!==this.bodyScrollable)this.bodyScrollable=e}syncActiveFromUrl(){if(!this.currentUrl){this.urlDerivedActiveId="";this.urlDerivedActiveChildId="";return}const e=l(this.currentUrl,this.getAllItems());this.urlDerivedActiveId=e.parentId;this.urlDerivedActiveChildId=e.childId}syncExpandedParent(){const e=this.getAllItems().find((e=>e.id===this.effectiveActiveId));this.expandedParentId=this.presentation==="nested"&&e?.children?.length?e.id:""}syncHostPropsIfNeeded(){if(R(this.renderedStyle,this.navStyle)){this.renderedStyle=this.navStyle}if(c(this.parsedGroups,this.groups)){this.onGroupsChange(this.groups)}else if(this.currentUrl){this.syncActiveFromUrl()}}scheduleDeferredHostPropSync(){let n=e.HOST_PROP_SYNC_BUDGET;const a=()=>{this.syncHostPropsIfNeeded();if(--n>0){requestAnimationFrame(a)}};queueMicrotask(a)}applyToggle(e){if(this.viewportNarrow)return;this.collapsed=e;if(this.storageKey){try{localStorage.setItem(this.storageKey,String(e))}catch{}}this.dsNavToggle.emit(e)}getAllItems(){return this.parsedGroups.flatMap((e=>e.items))}getVisibleRovingEntries(){return this.getAllItems().flatMap((e=>{const n={kind:"parent",item:e};if(this.presentation!=="nested"||this.collapsedPresentation||e.id!==this.expandedParentId||!e.children?.length){return[n]}return[n,...e.children.filter((e=>!e.isInactive)).map((n=>({kind:"child",parent:e,child:n})))]}))}getFirstRovingIndex(){return this.viewportNarrow?1:0}getFooterRovingIndex(){return 1+this.getVisibleRovingEntries().length}getUserRovingIndex(){return this.getFooterRovingIndex()+1}getRovingElement(e){const n=this.getVisibleRovingEntries().length;if(e===0){return this.viewportNarrow?null:this.el.querySelector(".panel-nav__header-btn")}if(e>=1&&e<=n){const n=this.el.querySelectorAll(".panel-nav__body [data-panel-nav-roving]");return n[e-1]??null}if(e===this.getFooterRovingIndex()){return this.el.querySelector(".panel-nav__footer-btn .button-unfilled")}if(e===this.getUserRovingIndex()){return this.el.querySelector(".panel-nav__footer-user")}return null}focusRovingAt(e){this.rovingIndex=e;this.getRovingElement(e)?.focus({preventScroll:true})}activateRovingIndex(e,n=false){const a=this.getVisibleRovingEntries();const i=a.length;if(e===0){this.handleToggle();return}if(e>=1&&e<=i){const i=a[e-1];if(!i)return;if(i.kind==="child"){this.emitChildSelect(i.parent,i.child)}else if(i.item.children?.length){this.activateParent(i.item,n)}else{this.handleItemClick(i.item.id)}return}if(e===this.getFooterRovingIndex()){this.handleFooterAction();return}if(e===this.getUserRovingIndex()){const e=this.el.querySelector(`#${N}`);if(e)this.dsNavUserAction.emit({anchor:e,menuPlacement:I})}}handleRovingKeyDown(e,n){if(e.key==="Enter"||e.key===" "){e.preventDefault();this.activateRovingIndex(n,true);return}const a=this.getFooterRovingIndex();const i=this.getUserRovingIndex();const s=this.getFirstRovingIndex();let t;switch(e.key){case"ArrowDown":if(n===i)return;if(n===a)t=i;else t=n+1;break;case"ArrowUp":if(n===s)return;if(n===i)t=a;else if(n===a)t=a-1;else t=n-1;break;case"ArrowRight":if(n===a)t=i;else return;break;case"ArrowLeft":if(n===i)t=a;else return;break;case"Home":e.preventDefault();t=s;break;case"End":e.preventDefault();t=i;break;default:return}if(t===undefined||t===n)return;e.preventDefault();this.focusRovingAt(t)}handleItemClick(e){this.dsNavSelect.emit(e)}emitChildSelect(e,n){if(n.isInactive)return;this.dsNavChildSelect.emit({parentId:e.id,childId:n.id,href:n.href})}followFlyoutAnchor(e){const n=f(e.href);if(this.routerMode!=="anchor"||!n)return;const a=this.el.ownerDocument.createElement("a");a.href=n;a.hidden=true;this.el.append(a);a.click();a.remove()}activateParent(e,n=false){if(this.presentation==="nested"){this.expandedParentId=e.id;if(this.collapsedPresentation){if(this.flyoutParentId===e.id&&this.flyoutOpen){this.closeFlyout();return}this.flyoutInitialFocusVisible=n;this.flyoutParentId=e.id;this.flyoutOpen=true;return}}const a=v(e.children);if(a)this.emitChildSelect(e,a)}parentAnchorId(e){return`panel-nav-parent-${this.instanceId}-${e.replace(/[^a-zA-Z0-9_-]/g,"-")}`}childListId(e){return`panel-nav-children-${this.instanceId}-${e.replace(/[^a-zA-Z0-9_-]/g,"-")}`}handleToggle(){const e=p(this.collapsed,this.viewportNarrow);if(e!==null)this.applyToggle(e)}async toggleCollapsed(){this.handleToggle()}handleFooterAction(){this.dsNavFooterAction.emit()}handleUserAction(e){const n=e.currentTarget;this.dsNavUserAction.emit({anchor:n,menuPlacement:I})}clearEdgeOverlayTimer(){if(this.edgeOverlayTimer!==null){window.clearTimeout(this.edgeOverlayTimer);this.edgeOverlayTimer=null}}handleResizeHandleMouseEnter(){this.clearEdgeOverlayTimer();if(h()){this.showEdgeOverlay=true;return}this.edgeOverlayTimer=window.setTimeout((()=>{this.showEdgeOverlay=true;this.edgeOverlayTimer=null}),500)}handleResizeHandleMouseLeave(){if(this.isDragging)return;this.clearEdgeOverlayTimer();this.showEdgeOverlay=false}handleResizeHandleMouseDown(e){e.preventDefault();e.stopPropagation();const n=this.collapsed||this.viewportNarrow;this.isDragging=true;this.dragStartX=e.clientX;this.didSnap=false;this.lastDeltaX=0;this.clearEdgeOverlayTimer();this.showEdgeOverlay=false;document.body.style.cursor="ew-resize";document.body.style.userSelect="none";const a=e=>{const a=e.clientX-this.dragStartX;this.lastDeltaX=Math.abs(a);if(this.didSnap)return;if(!n&&a<-8){this.applyToggle(true);this.didSnap=true}else if(n&&a>8){this.applyToggle(false);this.didSnap=true}};const i=()=>{if(!this.didSnap&&this.lastDeltaX<3){this.applyToggle(!n)}this.isDragging=false;this.showEdgeOverlay=false;document.body.style.cursor="";document.body.style.userSelect="";window.removeEventListener("mousemove",a);window.removeEventListener("mouseup",i);this.globalMouseMoveHandler=undefined;this.globalMouseUpHandler=undefined};this.globalMouseMoveHandler=a;this.globalMouseUpHandler=i;window.addEventListener("mousemove",a);window.addEventListener("mouseup",i)}renderFooterAction(e){const n=e?this.settingsLabel:this.dashboardLabel;return i("ds-tooltip",{label:n,side:"right",size:"sm"},i("ds-button-unfilled",{variant:"icon",class:"panel-nav__footer-btn",icon:e?"Gear":"Dashboard",activeFill:false,hasBorder:false,focusTabIndex:this.rovingIndex===this.getFooterRovingIndex()?0:-1,"aria-label":n,onDsClick:()=>this.handleFooterAction(),onKeyDown:e=>this.handleRovingKeyDown(e,this.getFooterRovingIndex()),onFocusin:()=>{this.rovingIndex=this.getFooterRovingIndex()}}))}renderFooterUser(e,n,a){const s=e?this.accountLabel:"";const t=i("button",{type:"button",id:N,class:{"panel-nav__item":true,"panel-nav__footer-user":true,"panel-nav__footer-user--menu-expanded":this.accountMenuExpanded,"ds-interaction-fill--surface-open":this.accountMenuSurfaceOpen??this.accountMenuExpanded,"ds-focus-ring-inset":true,"ds-interaction-fill":true},tabIndex:this.rovingIndex===this.getUserRovingIndex()?0:-1,"aria-label":this.accountLabel,"aria-haspopup":"menu","aria-expanded":String(this.accountMenuExpanded),onClick:e=>this.handleUserAction(e),onKeyDown:e=>this.handleRovingKeyDown(e,this.getUserRovingIndex()),onFocus:()=>{this.rovingIndex=this.getUserRovingIndex()}},i("ds-text",{class:"panel-nav__item-label panel-nav__footer-user-label panel-nav__item-label-text ds-control--md",as:"span",variant:"text-body-medium",emphasis:true,color:"inherit",lineTruncation:1},n),i("span",{class:"panel-nav__item-icon panel-nav__footer-user-icon","aria-hidden":"true"},i("span",{class:"panel-nav__footer-icon-expanded"},i("ds-icon",{name:"ChevronUpDown",size:"md",color:"inherit"})),i("span",{class:"panel-nav__footer-icon-collapsed"},i("ds-icon",{name:"Circle",size:"md",color:"inherit"}),i("ds-text",{class:"panel-nav__user-initial",as:"span",variant:"text-caption",emphasis:true,align:"center",color:"inherit"},a))));return i("ds-tooltip",{label:s,side:"right",size:"sm"},t)}renderParentItem(e,n,a){const s=e.id===this.effectiveActiveId;const t=(e.children?.length??0)>0;const o=this.presentation==="nested"&&t;const r=o?a?this.flyoutParentId===e.id:this.expandedParentId===e.id:false;const d=[i("span",{class:"panel-nav__item-icon"},i("ds-icon",{name:e.icon,size:"md",color:"inherit"})),i("ds-text",{class:"panel-nav__item-label panel-nav__item-label-text ds-control--md",as:"span",variant:"text-body-medium",emphasis:s,color:"inherit",lineTruncation:1},e.label),e.dot&&i("span",{class:"panel-nav__item-dot-box","aria-hidden":"true"},i("ds-badge",{class:"panel-nav__item-dot",variant:"dot",hasRing:a,label:""}))];const l={id:o?this.parentAnchorId(e.id):undefined,class:{"panel-nav__item":true,"panel-nav__parent":o,"panel-nav__parent--expanded":r,"panel-nav__parent--flyout-active":a&&this.flyoutParentId===e.id,"ds-interaction-fill--surface-open":a&&this.flyoutParentId===e.id,"panel-nav__parent--muted":this.presentation==="nested"&&!a&&this.expandedParentId!==""&&this.expandedParentId!==e.id,"panel-nav__item--active":s,"ds-focus-ring-inset":true,"ds-interaction-fill":true},"aria-current":!o&&s?"page":undefined,"aria-expanded":o?String(r):undefined,"aria-controls":o&&r?this.childListId(e.id):undefined,"aria-haspopup":o&&a?"menu":undefined,"data-panel-nav-roving":"",tabIndex:n===this.rovingIndex?0:-1,onClick:n=>t?this.activateParent(e,n.detail===0):this.handleItemClick(e.id),onKeyDown:e=>this.handleRovingKeyDown(e,n),onFocus:()=>{this.rovingIndex=n}};const c=f(t?v(e.children)?.href:e.href);const p=this.routerMode==="anchor"&&c&&!(o&&a);const h=p?i("a",{...l,href:c},d):i("button",{...l,type:"button"},d);return i("ds-tooltip",{label:a?e.label:"",side:"right",size:"sm"},h)}renderChildItem(e,n,a,s,t){const o=e.id===this.effectiveActiveId&&n.id===this.effectiveActiveChildId;const r=n.isInactive===true;const d=[i("ds-text",{class:"panel-nav__item-label panel-nav__item-label-text ds-control--md",as:"span",variant:"text-body-medium",emphasis:o,color:"inherit",lineTruncation:1},n.label),n.dot&&i("span",{class:"panel-nav__child-dot","aria-hidden":"true"},i("ds-badge",{variant:"dot",label:""}))];const l={class:{"panel-nav__item":true,"panel-nav__child":true,"ds-nav-disclosure__item":true,"panel-nav__child--active":o,"panel-nav__child--inactive":r,"panel-nav__item--active":o,"ds-focus-ring-inset":!r,"ds-interaction-fill":!r},"aria-current":o?"page":undefined,"aria-disabled":r?"true":undefined,"data-panel-nav-roving":r||a===undefined?undefined:"",style:{"--_panel-nav-child-index":String(s),"--_panel-nav-child-reverse-index":String(t),"--ds-nav-disclosure-index":String(s),"--ds-nav-disclosure-reverse-index":String(t)},tabIndex:!r&&a===this.rovingIndex?0:-1,onClick:()=>this.emitChildSelect(e,n),onKeyDown:e=>a===undefined?undefined:this.handleRovingKeyDown(e,a),onFocus:()=>{if(a!==undefined)this.rovingIndex=a}};const c=f(n.href);const v=!r&&this.routerMode==="anchor"&&c;return v?i("a",{...l,href:c},d):i("button",{...l,type:"button",disabled:r},d)}renderFlyout(){const e=this.getAllItems().find((e=>e.id===this.flyoutParentId));if(!e?.children?.length)return null;return i("ds-menu",{id:this.childListId(e.id),open:this.flyoutOpen,side:A.side,align:A.align,anchorAlignment:A.anchorAlignment,sideOffset:A.sideOffset,alignOffset:A.alignOffset,anchorId:this.parentAnchorId(e.id),selectionMode:"single",menuLabel:`${e.label} sections`,initialFocusVisible:this.flyoutInitialFocusVisible,sections:[{items:e.children.map((n=>({label:n.label,value:n.id,dot:n.dot,isInactive:n.isInactive,isSelected:e.id===this.effectiveActiveId&&n.id===this.effectiveActiveChildId})))}],onDsSelect:this.handleFlyoutSelect,onDsClose:this.closeFlyout,onDsAfterClose:this.handleFlyoutAfterClose})}render(){const e=this.renderedStyle;const n=e==="dashboard";const a=this.navStyle==="dashboard";const t=this.collapsed||this.viewportNarrow;const{userName:o,userInitial:r}=this;const d={"panel-nav":true,"ds-control--md":true,"panel-nav--dashboard":a,"panel-nav--settings":!a,"panel-nav--collapsed":t,"panel-nav--breakpoint-locked":this.viewportNarrow,"panel-nav--animating":this.isAnimating};return i(s,{key:"de666b377b6ffdf2254d806908cdb17885654354",style:{display:"block",position:"relative"}},i("nav",{key:"01181083dedb9ab84c6a18dcf9cdfd362d48f1e3",class:d,"aria-label":n?this.dashboardNavigationLabel:this.settingsNavigationLabel},i("div",{key:"82244092ce3ae1894df36ac42faed87bdf806ddf",class:"panel-nav__header ds-chrome-row ds-chrome-space--md"},i("button",{key:"f3242e039eec56b0bb57e71eac22cf2c8d813aab",type:"button",class:"panel-nav__header-btn ds-focus-ring-inset ds-interaction-fill",disabled:this.viewportNarrow,tabIndex:!this.viewportNarrow&&this.rovingIndex===0?0:-1,onClick:()=>this.handleToggle(),onKeyDown:e=>this.handleRovingKeyDown(e,0),onFocus:()=>{this.rovingIndex=0},"aria-label":t?this.expandNavigationLabel:this.collapseNavigationLabel,"aria-expanded":t?"false":"true"},i("span",{key:"7a8738751dca6f74cc0fbaa569cd8f57d43f4b17",class:"panel-nav__header-logo","aria-hidden":"true"},i("svg",{key:"a304025441bf7b44c09403c2ae2fbb1ffae90c8f",class:"panel-nav__m-mark",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",focusable:"false","aria-hidden":"true"},i("path",{key:"3e80b14ae5816801f31f3a1fab48ff3d15baad28",d:"M11.1159 4.31537H7.67021L2.53401 13.0703H0V15.6875H4.02716L8.24319 8.49978V15.6846H11.6342L15.8289 8.47829V15.6846H18.7122V4.3125H15.2559L11.1159 11.3648V4.31537Z",fill:"currentColor"}))),i("span",{key:"3b410ea69628b041ef57e991ac049bbf1d207c9f",class:"panel-nav__header-toggle","aria-hidden":"true"},i("ds-icon",{key:"2ca2b32641474e4ec1719d40d1be90f88ddd96ef",name:t?"LeftExpandB":"LeftCollapseB",size:"md",color:"inherit"})))),i("div",{key:"2a4044e15ad0802db89060b510f4dcb354dba1bc",class:{"panel-nav__body":true,"ds-chrome-column":true,"ds-chrome-space--md":true,"ds-scrollbar-hidden":true,"ds-focus-ring":this.bodyScrollable,...z({edges:"bottom"})},ref:e=>{const n=e??undefined;if(n===this.bodyEl)return;this.bodyEl=n;this.connectScrollRegionObserver()},role:this.bodyScrollable?"region":undefined,"aria-label":this.bodyScrollable?this.navigationItemsLabel:undefined,tabIndex:this.bodyScrollable?0:undefined},i("div",{key:"c6da45ea8825512a011198300b40bed444924b8c",class:"panel-nav__sections"},(()=>{let e=1;return this.parsedGroups.map((n=>i("div",{class:"panel-nav__group",key:n.id??n.label},n.label&&i("ds-text",{class:"panel-nav__group-label ds-control--md",as:"span",variant:"text-caption",emphasis:true,color:"inherit"},n.label),n.items.map(((a,s)=>{const o=e++;const r=!t&&this.inlineChildrenExpansionReady&&a.id===this.expandedParentId&&(a.children?.length??0)>0;const d=n.items.length>1;const l=d&&s>0;const c=d&&s<n.items.length-1;const v=r&&d;const p=this.presentation==="nested"&&(!t||this.isAnimating)&&(a.children?.length??0)>0;const h=p?a.children?.map(((n,i)=>{const s=!r||n.isInactive?undefined:e++;return this.renderChildItem(a,n,s,i,(a.children?.length??0)-i-1)})):null;return i("div",{class:"panel-nav__branch",key:a.id},l?i("div",{key:`${a.id}-divider-before`,class:{"panel-nav__branch-divider":true,"panel-nav__branch-divider--before":true,"panel-nav__branch-divider--open":v,"ds-nav-disclosure-divider":true,"ds-nav-disclosure-divider--open":v},"aria-hidden":"true"},i("div",{class:"panel-nav__branch-divider-clip ds-nav-disclosure-divider__clip"},i("span",{class:"panel-nav__branch-divider-line"}))):null,this.renderParentItem(a,o,t),p?i("div",{key:`${a.id}-children`,class:{"panel-nav__children-accordion":true,"panel-nav__children-accordion--open":r,"ds-nav-disclosure":true,"ds-nav-disclosure--open":r},"aria-hidden":r?undefined:"true",inert:r?undefined:true},i("div",{id:this.childListId(a.id),class:"panel-nav__children",role:"group","aria-labelledby":this.parentAnchorId(a.id)},h)):null,c?i("div",{key:`${a.id}-divider-after`,class:{"panel-nav__branch-divider":true,"panel-nav__branch-divider--after":true,"panel-nav__branch-divider--open":v,"ds-nav-disclosure-divider":true,"ds-nav-disclosure-divider--open":v},"aria-hidden":"true"},i("div",{class:"panel-nav__branch-divider-clip ds-nav-disclosure-divider__clip"},i("span",{class:"panel-nav__branch-divider-line"}))):null)})))))})())),i("div",{key:"1c3c3170ba117098562f20355f947b7ff3650c24",class:"panel-nav__footer"},this.renderFooterAction(n),this.renderFooterUser(t,o,r))),this.renderFlyout(),!this.viewportNarrow&&i("div",{key:"634385f412c2ee1e434b84edbe3371131c4adb06",class:{"panel-nav__resize-handle":true,"panel-nav__resize-handle--overlay":this.showEdgeOverlay},onMouseEnter:()=>this.handleResizeHandleMouseEnter(),onMouseLeave:()=>this.handleResizeHandleMouseLeave(),onMouseDown:e=>this.handleResizeHandleMouseDown(e),"aria-hidden":"true"}))}get el(){return this}static get watchers(){return{collapsed:[{onCollapsedChange:0}],viewportNarrow:[{onViewportNarrowChange:0}],breakpoint:[{onBreakpointChange:0}],groups:[{onGroupsChange:0}],presentation:[{onPresentationChange:0}],activeId:[{onActiveIdChange:0}],activeChildId:[{onActiveIdChange:0}],urlDerivedActiveId:[{onActiveIdChange:0}],urlDerivedActiveChildId:[{onActiveIdChange:0}],currentUrl:[{onCurrentUrlChange:0}],navStyle:[{onNavStyleChange:0}]}}static get style(){return F()+j()}},[2,"ds-panel-nav",{navStyle:[513,"nav-style"],disableViewTransition:[4,"disable-view-transition"],groups:[1],presentation:[513],routerMode:[1,"router-mode"],activeId:[1,"active-id"],activeChildId:[1,"active-child-id"],collapsed:[1028],breakpoint:[2],storageKey:[1,"storage-key"],currentUrl:[1,"current-url"],userName:[1,"user-name"],userInitial:[1,"user-initial"],dashboardLabel:[1,"dashboard-label"],settingsLabel:[1,"settings-label"],accountLabel:[1,"account-label"],accountMenuExpanded:[4,"account-menu-expanded"],accountMenuSurfaceOpen:[4,"account-menu-surface-open"],dashboardNavigationLabel:[1,"dashboard-navigation-label"],settingsNavigationLabel:[1,"settings-navigation-label"],expandNavigationLabel:[1,"expand-navigation-label"],collapseNavigationLabel:[1,"collapse-navigation-label"],navigationItemsLabel:[1,"navigation-items-label"],renderedStyle:[32],parsedGroups:[32],isAnimating:[32],rovingIndex:[32],viewportNarrow:[32],urlDerivedActiveId:[32],urlDerivedActiveChildId:[32],bodyScrollable:[32],expandedParentId:[32],inlineChildrenExpansionReady:[32],flyoutParentId:[32],flyoutOpen:[32],flyoutInitialFocusVisible:[32],showEdgeOverlay:[32],toggleCollapsed:[64]},undefined,{collapsed:[{onCollapsedChange:0}],viewportNarrow:[{onViewportNarrowChange:0}],breakpoint:[{onBreakpointChange:0}],groups:[{onGroupsChange:0}],presentation:[{onPresentationChange:0}],activeId:[{onActiveIdChange:0}],activeChildId:[{onActiveIdChange:0}],urlDerivedActiveId:[{onActiveIdChange:0}],urlDerivedActiveChildId:[{onActiveIdChange:0}],currentUrl:[{onCurrentUrlChange:0}],navStyle:[{onNavStyleChange:0}]}]);L.HOST_PROP_SYNC_BUDGET=8;function O(){if(typeof customElements==="undefined"){return}const e=["ds-panel-nav","ds-badge","ds-button-unfilled","ds-icon","ds-loader","ds-menu","ds-swatch-picker","ds-switch","ds-tag","ds-text","ds-tooltip"];e.forEach((e=>{switch(e){case"ds-panel-nav":if(!customElements.get(t(e))){customElements.define(t(e),L)}break;case"ds-badge":if(!customElements.get(t(e))){u()}break;case"ds-button-unfilled":if(!customElements.get(t(e))){m()}break;case"ds-icon":if(!customElements.get(t(e))){g()}break;case"ds-loader":if(!customElements.get(t(e))){b()}break;case"ds-menu":if(!customElements.get(t(e))){_()}break;case"ds-swatch-picker":if(!customElements.get(t(e))){x()}break;case"ds-switch":if(!customElements.get(t(e))){y()}break;case"ds-tag":if(!customElements.get(t(e))){w()}break;case"ds-text":if(!customElements.get(t(e))){k()}break;case"ds-tooltip":if(!customElements.get(t(e))){C()}break}}))}O();export{L as P,O as d};
|
|
2
|
+
//# sourceMappingURL=p--VKxPUoV.js.map
|