@ds-mo/ui 15.5.1 → 15.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +1 -1
  3. package/dist/agent.json +46 -21
  4. package/dist/angular/ds-data-preferences.d.ts +1 -1
  5. package/dist/angular/ds-data-preferences.js +3 -3
  6. package/dist/angular/ds-menu.d.ts +7 -1
  7. package/dist/angular/ds-menu.js +5 -2
  8. package/dist/angular/ds-table.d.ts +1 -1
  9. package/dist/angular/ds-table.js +3 -3
  10. package/dist/components/THIRD-PARTY-NOTICES +1 -1
  11. package/dist/components/bundled-dependencies.json +1 -1
  12. package/dist/components/ds-agent-questionnaire.js +1 -1
  13. package/dist/components/ds-agent-response.js +1 -1
  14. package/dist/components/ds-banner.js +1 -1
  15. package/dist/components/ds-bar-nav.js +1 -1
  16. package/dist/components/ds-bar-page-title.js +1 -1
  17. package/dist/components/ds-bar-title.js +1 -1
  18. package/dist/components/ds-bar-workflow.js +1 -1
  19. package/dist/components/ds-button-unfilled.js +1 -1
  20. package/dist/components/ds-calendar.js +1 -1
  21. package/dist/components/ds-card-chart.js +1 -1
  22. package/dist/components/ds-card-overview.js +1 -1
  23. package/dist/components/ds-card-setting.js +1 -1
  24. package/dist/components/ds-code-block.js +1 -1
  25. package/dist/components/ds-data-customize.js +1 -1
  26. package/dist/components/ds-data-filter.js +1 -1
  27. package/dist/components/ds-data-group.js +1 -1
  28. package/dist/components/ds-data-preferences.js +1 -1
  29. package/dist/components/ds-data-preferences.js.map +1 -1
  30. package/dist/components/ds-data-saved-views.js +1 -1
  31. package/dist/components/ds-data-search.js +1 -1
  32. package/dist/components/ds-data-search.js.map +1 -1
  33. package/dist/components/ds-data-sort.js +1 -1
  34. package/dist/components/ds-filter-menu.js +1 -1
  35. package/dist/components/ds-input-date.js +1 -1
  36. package/dist/components/ds-input-time.js +1 -1
  37. package/dist/components/ds-input.js +1 -1
  38. package/dist/components/ds-markdown.js +1 -1
  39. package/dist/components/ds-menu.js +1 -1
  40. package/dist/components/ds-message-actions.js +1 -1
  41. package/dist/components/ds-message-composer.js +1 -1
  42. package/dist/components/ds-message-scroller.js +1 -1
  43. package/dist/components/ds-mobile-header.js +1 -1
  44. package/dist/components/ds-mobile-section-switcher.js +1 -1
  45. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  46. package/dist/components/ds-modal.js +1 -1
  47. package/dist/components/ds-pagination.js +1 -1
  48. package/dist/components/ds-panel-nav.js +1 -1
  49. package/dist/components/ds-panel-tool-header.js +1 -1
  50. package/dist/components/ds-panel-tool-search.js +1 -1
  51. package/dist/components/ds-panel-tools.js +1 -1
  52. package/dist/components/ds-select.js +1 -1
  53. package/dist/components/ds-shell-app.js +1 -1
  54. package/dist/components/ds-shell-tools.js +1 -1
  55. package/dist/components/ds-table.js +1 -1
  56. package/dist/components/ds-table.js.map +1 -1
  57. package/dist/components/ds-toast.js +1 -1
  58. package/dist/components/ds-toast.js.map +1 -1
  59. package/dist/components/ds-tooltip.js +1 -1
  60. package/dist/components/{p-sDm8BEMy.js → p-B-pkoIX9.js} +2 -2
  61. package/dist/components/{p-DYsRXun3.js → p-B3o9zn3Y.js} +2 -2
  62. package/dist/components/p-BR9Pjp15.js +2 -0
  63. package/dist/components/{p-CXlklL-0.js.map → p-BR9Pjp15.js.map} +1 -1
  64. package/dist/components/{p-CcwxySms.js → p-BZY40-pE.js} +2 -2
  65. package/dist/components/{p-BLeHHoVb.js → p-BqipGGua.js} +2 -2
  66. package/dist/components/{p-BuDxlhnQ.js → p-C6kUn-vb.js} +2 -2
  67. package/dist/components/p-CElsKlxj.js +2 -0
  68. package/dist/components/{p-CzdE3M3g.js.map → p-CElsKlxj.js.map} +1 -1
  69. package/dist/components/p-CIMyD_6H.js +2 -0
  70. package/dist/components/{p-C5BBIDVm.js.map → p-CIMyD_6H.js.map} +1 -1
  71. package/dist/components/{p-C35Tki38.js → p-CSxwWcwW.js} +2 -2
  72. package/dist/components/p-CUYLGe5d.js +2 -0
  73. package/dist/components/{p-D9_iDlkT.js.map → p-CUYLGe5d.js.map} +1 -1
  74. package/dist/components/{p-BlbfbYg6.js → p-CaFXrn_8.js} +2 -2
  75. package/dist/components/{p-DZLtFn-r.js → p-DObhRLBa.js} +2 -2
  76. package/dist/components/{p-bQE1NZVe.js → p-DP07JCed.js} +2 -2
  77. package/dist/components/p-DYGllrVT.js +2 -0
  78. package/dist/components/{p-CNeDJTGX.js.map → p-DYGllrVT.js.map} +1 -1
  79. package/dist/components/{p-C378wwRj.js → p-DYtVsnDS.js} +2 -2
  80. package/dist/components/p-DbW8S5qe.js +2 -0
  81. package/dist/components/p-DbW8S5qe.js.map +1 -0
  82. package/dist/components/p-DcxY_pdJ.js +2 -0
  83. package/dist/components/{p-Df9S0aWi.js.map → p-DcxY_pdJ.js.map} +1 -1
  84. package/dist/components/{p-C9H-3JOA.js → p-DdFeWC-e.js} +2 -2
  85. package/dist/components/p-DlCLfwP4.js +2 -0
  86. package/dist/components/p-DuCfCvPs.js +2 -0
  87. package/dist/components/p-DuCfCvPs.js.map +1 -0
  88. package/dist/components/{p-BYrBU_U9.js → p-HMDczkQf.js} +2 -2
  89. package/dist/components/p-HfZ1gI2q.js +2 -0
  90. package/dist/components/{p-Da3aFRk2.js.map → p-HfZ1gI2q.js.map} +1 -1
  91. package/dist/components/{p--VQc5GDy.js → p-KA8srEed.js} +2 -2
  92. package/dist/components/{p-BfVMaZZE.js → p-OJ5WeR05.js} +2 -2
  93. package/dist/components/p-Ouk6FCxc.js +2 -0
  94. package/dist/components/{p-a-cIN_BX.js.map → p-Ouk6FCxc.js.map} +1 -1
  95. package/dist/components/p-leZFu-cd.js +2 -0
  96. package/dist/components/{p-BuGlC5r8.js.map → p-leZFu-cd.js.map} +1 -1
  97. package/dist/components/{p-DPwptvZl.js → p-wXKIVUTn.js} +2 -2
  98. package/dist/components/p-xMBaOeKa.js +2 -0
  99. package/dist/components/p-xMBaOeKa.js.map +1 -0
  100. package/dist/docs/components.json +207 -29
  101. package/dist/lint/index.js +1 -1
  102. package/dist/mcp-data/registry/agent-activity.json +1 -1
  103. package/dist/mcp-data/registry/agent-questionnaire.json +1 -1
  104. package/dist/mcp-data/registry/agent-response.json +1 -1
  105. package/dist/mcp-data/registry/agent-source-list.json +1 -1
  106. package/dist/mcp-data/registry/agent-tool-call.json +1 -1
  107. package/dist/mcp-data/registry/attachment-list.json +1 -1
  108. package/dist/mcp-data/registry/avatar.json +1 -1
  109. package/dist/mcp-data/registry/badge.json +1 -1
  110. package/dist/mcp-data/registry/banner.json +1 -1
  111. package/dist/mcp-data/registry/bar-action.json +1 -1
  112. package/dist/mcp-data/registry/bar-nav.json +1 -1
  113. package/dist/mcp-data/registry/bar-page-title.json +1 -1
  114. package/dist/mcp-data/registry/bar-title.json +1 -1
  115. package/dist/mcp-data/registry/bar-workflow.json +1 -1
  116. package/dist/mcp-data/registry/breadcrumb.json +1 -1
  117. package/dist/mcp-data/registry/button-filled.json +1 -1
  118. package/dist/mcp-data/registry/button-inverted.json +1 -1
  119. package/dist/mcp-data/registry/button-unfilled.json +1 -1
  120. package/dist/mcp-data/registry/calendar.json +1 -1
  121. package/dist/mcp-data/registry/card-action-center.json +1 -1
  122. package/dist/mcp-data/registry/card-chart.json +1 -1
  123. package/dist/mcp-data/registry/card-navigation.json +1 -1
  124. package/dist/mcp-data/registry/card-overview.json +1 -1
  125. package/dist/mcp-data/registry/card-setting.json +1 -1
  126. package/dist/mcp-data/registry/card-settings-scope.json +1 -1
  127. package/dist/mcp-data/registry/chart-legend.json +1 -1
  128. package/dist/mcp-data/registry/chart.json +1 -1
  129. package/dist/mcp-data/registry/checkbox-group.json +1 -1
  130. package/dist/mcp-data/registry/checkbox.json +1 -1
  131. package/dist/mcp-data/registry/chip.json +1 -1
  132. package/dist/mcp-data/registry/code-block.json +1 -1
  133. package/dist/mcp-data/registry/conversation-list-item.json +1 -1
  134. package/dist/mcp-data/registry/conversation-list-section.json +1 -1
  135. package/dist/mcp-data/registry/conversation-list.json +1 -1
  136. package/dist/mcp-data/registry/data-customize.json +1 -1
  137. package/dist/mcp-data/registry/data-filter.json +1 -1
  138. package/dist/mcp-data/registry/data-group.json +1 -1
  139. package/dist/mcp-data/registry/data-preferences.json +22 -6
  140. package/dist/mcp-data/registry/data-saved-views.json +1 -1
  141. package/dist/mcp-data/registry/data-search.json +1 -1
  142. package/dist/mcp-data/registry/data-sort.json +1 -1
  143. package/dist/mcp-data/registry/data-toolbar.json +1 -1
  144. package/dist/mcp-data/registry/divider.json +1 -1
  145. package/dist/mcp-data/registry/empty-state.json +1 -1
  146. package/dist/mcp-data/registry/field.json +1 -1
  147. package/dist/mcp-data/registry/filter-menu.json +1 -1
  148. package/dist/mcp-data/registry/icon.json +1 -1
  149. package/dist/mcp-data/registry/inline-banner-settings.json +1 -1
  150. package/dist/mcp-data/registry/input-date.json +1 -1
  151. package/dist/mcp-data/registry/input-time.json +1 -1
  152. package/dist/mcp-data/registry/input.json +1 -1
  153. package/dist/mcp-data/registry/loader.json +1 -1
  154. package/dist/mcp-data/registry/map-cluster-marker.json +1 -1
  155. package/dist/mcp-data/registry/map-entity-marker.json +1 -1
  156. package/dist/mcp-data/registry/markdown.json +1 -1
  157. package/dist/mcp-data/registry/menu.json +31 -12
  158. package/dist/mcp-data/registry/message-actions.json +1 -1
  159. package/dist/mcp-data/registry/message-bubble.json +1 -1
  160. package/dist/mcp-data/registry/message-composer.json +1 -1
  161. package/dist/mcp-data/registry/message-scroller.json +1 -1
  162. package/dist/mcp-data/registry/message.json +1 -1
  163. package/dist/mcp-data/registry/mobile-bar-nav.json +1 -1
  164. package/dist/mcp-data/registry/mobile-header.json +1 -1
  165. package/dist/mcp-data/registry/mobile-section-switcher.json +1 -1
  166. package/dist/mcp-data/registry/mobile-sheet-nav.json +1 -1
  167. package/dist/mcp-data/registry/modal.json +1 -1
  168. package/dist/mcp-data/registry/pagination.json +1 -1
  169. package/dist/mcp-data/registry/panel-nav.json +1 -1
  170. package/dist/mcp-data/registry/panel-sub-nav.json +1 -1
  171. package/dist/mcp-data/registry/panel-tool-header.json +1 -1
  172. package/dist/mcp-data/registry/panel-tool-search.json +1 -1
  173. package/dist/mcp-data/registry/panel-tools.json +1 -1
  174. package/dist/mcp-data/registry/paper-texture.json +1 -1
  175. package/dist/mcp-data/registry/radio-tile.json +1 -1
  176. package/dist/mcp-data/registry/radio.json +1 -1
  177. package/dist/mcp-data/registry/registry.json +46 -21
  178. package/dist/mcp-data/registry/score.json +1 -1
  179. package/dist/mcp-data/registry/scroll-overlay.json +1 -1
  180. package/dist/mcp-data/registry/select.json +1 -1
  181. package/dist/mcp-data/registry/setting-row-checkbox.json +1 -1
  182. package/dist/mcp-data/registry/setting-row-radio.json +1 -1
  183. package/dist/mcp-data/registry/setting-row-toggle.json +1 -1
  184. package/dist/mcp-data/registry/shell-app.json +1 -1
  185. package/dist/mcp-data/registry/shell-page.json +1 -1
  186. package/dist/mcp-data/registry/shell-tools.json +1 -1
  187. package/dist/mcp-data/registry/skeleton.json +1 -1
  188. package/dist/mcp-data/registry/slider.json +1 -1
  189. package/dist/mcp-data/registry/swatch-picker.json +1 -1
  190. package/dist/mcp-data/registry/switch.json +1 -1
  191. package/dist/mcp-data/registry/tab-group.json +1 -1
  192. package/dist/mcp-data/registry/table.json +59 -19
  193. package/dist/mcp-data/registry/tag.json +1 -1
  194. package/dist/mcp-data/registry/text.json +1 -1
  195. package/dist/mcp-data/registry/textarea.json +1 -1
  196. package/dist/mcp-data/registry/time-picker.json +1 -1
  197. package/dist/mcp-data/registry/toast.json +1 -1
  198. package/dist/mcp-data/registry/tooltip-chart.json +1 -1
  199. package/dist/mcp-data/registry/tooltip.json +1 -1
  200. package/dist/mcp-data/registry/typing-indicator.json +1 -1
  201. package/dist/react/ds-menu.d.ts +2 -1
  202. package/dist/react/ds-menu.js +1 -0
  203. package/dist/styles/table.css +41 -0
  204. package/dist/types/components/DataPreferences/DataPreferences.d.ts +3 -0
  205. package/dist/types/components/Menu/Menu.d.ts +5 -1
  206. package/dist/types/components/Menu/menu-types.d.ts +36 -0
  207. package/dist/types/components/Table/Table.d.ts +11 -2
  208. package/dist/types/components/Table/index.d.ts +1 -1
  209. package/dist/types/components/Table/table-column-customizer.d.ts +23 -4
  210. package/dist/types/components/Table/table-layout-controller.d.ts +2 -1
  211. package/dist/types/components/Table/table-types.d.ts +3 -1
  212. package/dist/types/components.d.ts +42 -6
  213. package/dist/vue/ds-data-preferences.js +1 -0
  214. package/dist/vue/ds-menu.js +2 -0
  215. package/dist/vue/ds-table.js +2 -0
  216. package/package.json +3 -3
  217. package/dist/components/p-BuGlC5r8.js +0 -2
  218. package/dist/components/p-C5BBIDVm.js +0 -2
  219. package/dist/components/p-CE6MaXBg.js +0 -2
  220. package/dist/components/p-CE6MaXBg.js.map +0 -1
  221. package/dist/components/p-CNeDJTGX.js +0 -2
  222. package/dist/components/p-CXlklL-0.js +0 -2
  223. package/dist/components/p-CzdE3M3g.js +0 -2
  224. package/dist/components/p-D9_iDlkT.js +0 -2
  225. package/dist/components/p-Da3aFRk2.js +0 -2
  226. package/dist/components/p-Df9S0aWi.js +0 -2
  227. package/dist/components/p-DvGrsLgt.js +0 -2
  228. package/dist/components/p-DvGrsLgt.js.map +0 -1
  229. package/dist/components/p-a-cIN_BX.js +0 -2
  230. package/dist/components/p-aD5cw_m2.js +0 -2
  231. package/dist/components/p-aD5cw_m2.js.map +0 -1
  232. package/dist/components/p-kDZ0sEII.js +0 -2
  233. package/dist/components/p-t2Ebn8si.js +0 -2
  234. package/dist/components/p-t2Ebn8si.js.map +0 -1
  235. /package/dist/components/{p-sDm8BEMy.js.map → p-B-pkoIX9.js.map} +0 -0
  236. /package/dist/components/{p-DYsRXun3.js.map → p-B3o9zn3Y.js.map} +0 -0
  237. /package/dist/components/{p-CcwxySms.js.map → p-BZY40-pE.js.map} +0 -0
  238. /package/dist/components/{p-BLeHHoVb.js.map → p-BqipGGua.js.map} +0 -0
  239. /package/dist/components/{p-BuDxlhnQ.js.map → p-C6kUn-vb.js.map} +0 -0
  240. /package/dist/components/{p-C35Tki38.js.map → p-CSxwWcwW.js.map} +0 -0
  241. /package/dist/components/{p-BlbfbYg6.js.map → p-CaFXrn_8.js.map} +0 -0
  242. /package/dist/components/{p-DZLtFn-r.js.map → p-DObhRLBa.js.map} +0 -0
  243. /package/dist/components/{p-bQE1NZVe.js.map → p-DP07JCed.js.map} +0 -0
  244. /package/dist/components/{p-C378wwRj.js.map → p-DYtVsnDS.js.map} +0 -0
  245. /package/dist/components/{p-C9H-3JOA.js.map → p-DdFeWC-e.js.map} +0 -0
  246. /package/dist/components/{p-kDZ0sEII.js.map → p-DlCLfwP4.js.map} +0 -0
  247. /package/dist/components/{p-BYrBU_U9.js.map → p-HMDczkQf.js.map} +0 -0
  248. /package/dist/components/{p--VQc5GDy.js.map → p-KA8srEed.js.map} +0 -0
  249. /package/dist/components/{p-BfVMaZZE.js.map → p-OJ5WeR05.js.map} +0 -0
  250. /package/dist/components/{p-DPwptvZl.js.map → p-wXKIVUTn.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["SelectController","constructor","state","this","triggerEl","popupEl","searchEl","typeahead","typeaheadTimer","outsideHandler","setTriggerElement","element","setPopupElement","setSearchElement","handleTriggerKeyDown","event","open","includes","key","preventDefault","openPopup","isTypeaheadKey","searchable","searchTerm","handleTypeahead","handleListKeyDown","focusRingVisible","activeIndex","moveChoiceIndex","options","enabledChoiceIndexes","enabled","length","target","Node","contains","option","selectOption","closePopup","position","AnchoredPositionController","getAnchor","anchor","getPopup","measure","trigger","popup","isConnected","host","sectionPadding","resolveCssLengthPx","TOKEN_DEFAULTS","space050","style","minWidth","menuWidthXs","offsetWidth","choicePopupMinWidth","align","popupAlign","anchorRect","getBoundingClientRect","popupWidth","popupHeight","offsetHeight","side","sideOffsetPx","alignOffsetPx","resolveChoicePopupAlignOffset","sectionInsetPx","anchorAlignment","viewportPadPx","viewportWidth","window","innerWidth","viewportHeight","innerHeight","collisionRect","resolveAnchoredOverlayBoundaryRect","boundary","apply","x","y","positionReady","topLayer","activeOptionId","isLoading","generatedId","undefined","connect","openChanged","disconnect","cancelPositionRetry","unbindPopupListeners","clearTimeout","setFocus","focus","optionsChanged","requestAnimationFrame","updatePosition","loadingChanged","positionChanged","bindPopupListeners","schedulePositionUpdate","scrollActiveOptionIntoView","searchChanged","activeIndexChanged","focusVisible","edge","isDisabled","preferredIndex","restoreFocus","focusSearchOrTrigger","metaKey","ctrlKey","altKey","normalized","toLocaleLowerCase","repeatedCharacter","every","character","match","findChoiceTypeaheadMatch","resetMs","resolveCssTimeMs","animationDurationMedium1","setTimeout","querySelector","scrollIntoView","block","inline","eventIntersectsComposedBoundary","document","addEventListener","observe","removeEventListener","unobserve","cancel","onReady","schedule","update","selectCss","ICON_SIZE","lg","md","sm","xs","OPTION_ACTION_SIZE","selectId","Select","__stencil_proxyCustomElement","HTMLElement","registerHost","sections","multiple","value","disabled","required","requiredMessage","DEFAULT_REQUIRED_MESSAGE","placeholder","triggerLabelPlaceholder","dot","size","isInset","insetDepth","width","isInactive","neutralTrigger","activeFill","collapseLabel","iconOnly","hasBorder","hasInteractionFill","hasFocusRing","rounded","indicator","allowClear","clearLabel","selectedLabel","searchPlaceholder","noResultsText","loadingLabel","error","ariaLabel","formDisabled","compactFooterSummary","captionCompact","listboxId","errorId","initialValue","controller","createController","hasLoaded","clearSelection","stopPropagation","dsChange","emit","dsClear","visibleOptions","activateFooterAction","dsFooterAction","owner","el","findIndex","scalarValue","componentWillLoad","normalizeValueForMode","Array","isArray","syncFormValue","componentDidLoad","observeFooterContent","syncCaptionCompactObserver","connectedCallback","componentDidRender","scheduleFooterSummaryMeasurement","disconnectedCallback","footerResizeObserver","observedFooterContentElement","footerMeasurementFrame","cancelAnimationFrame","disconnectCaptionCompactObserver","onCollapseLabelChange","inactive","values","resolvedValues","setRepeatedFormControlValue","internals","name","JSON","stringify","hasSelection","setFormControlValue","missing","setRequiredValidity","onLoadingChange","onPopupAlignChange","onOpenChange","dsOpenChange","onSearchTermChange","onActiveIndexChange","formDisabledCallback","formResetCallback","formStateRestoreCallback","restoreStringFormState","restoreStringArrayFormState","allSections","resolveChoiceSections","allOptions","flattenChoiceSections","visibleSections","filterChoiceSections","valid","Set","map","filter","has","selectedOption","find","Boolean","popupRole","some","action","content","footerContentElement","ResizeObserver","measureFooterSummary","summary","footerSummaryMeasureElement","clear","footerClearElement","styles","getComputedStyle","clientWidth","Number","parseFloat","paddingInlineStart","paddingInlineEnd","requiredWidth","columnGap","nextCompact","current","next","renderOption","index","usesIcons","usesSubtext","selected","active","actionId","h","ChoiceOptionRow","id","actionOpen","surfaceOpen","expanded","leading","class","label","checked","presentation","icon","color","supporting","subtextActions","actionIndex","as","variant","CONTROL_SUPPORTING_TEXT_VARIANT","type","tone","onKeyDown","onClick","dsOptionSubtextAction","actionValue","originalEvent","haspopup","controls","onDsClick","dsOptionAction","anchorId","detail","onHover","onSelect","captionIconOnly","doubleInset","captionCompactDisconnect","observeTableCaptionCompact","compact","renderCaptionTooltip","render","showPlaceholder","count","triggerLabel","textVariant","CONTROL_TEXT_VARIANT","iconSize","usesOptionIcons","choiceListUsesIcons","usesOptionSubtext","choiceListUsesSubtext","showError","errorMessage","describedBy","ariaDescribedby","join","popupStyle","left","top","transform","Math","round","zIndex","visibility","flatIndex","Host","controlWidthClass","background","ref","inputId","choiceBackgroundClassMap","role","String","ariaLabelledby","shiftKey","getElementById","lineTruncation","hasRing","trim","popover","ChoiceSearch","activeDescendant","inputRef","onValueChange","body","section","sectionIndex","divider","header","emphasis","footerActionLabel","ChoiceActionFooter","onAction","ChoiceFooter","compactSummary","useCompactSummary","contentRef","summaryMeasureRef","clearRef","onClear","textId"],"sources":["src/wc/utils/select-controller.ts","src/wc/components/Select/Select.css?tag=ds-select&encapsulation=scoped","src/wc/components/Select/Select.tsx"],"sourcesContent":["import { AnchoredPositionController } from './anchored-position-controller';\nimport {\n enabledChoiceIndexes,\n findChoiceTypeaheadMatch,\n moveChoiceIndex,\n type ChoiceOption,\n} from './choice-list';\nimport { choicePopupMinWidth, resolveChoicePopupAlignOffset } from './choice-popup-alignment';\nimport { resolveCssLengthPx } from './resolve-css-length-px';\nimport { resolveCssTimeMs } from './resolve-css-time-ms';\nimport { TOKEN_DEFAULTS } from './token-defaults';\nimport { eventIntersectsComposedBoundary } from './anchored-overlay-interaction-controller';\nimport { resolveAnchoredOverlayBoundaryRect } from './anchored-overlay-boundary';\n\ntype PopupPosition = { x: number; y: number };\n\nexport interface SelectControllerState<T extends ChoiceOption> {\n readonly host: HTMLElement;\n readonly generatedId: string;\n readonly options: T[];\n readonly searchable: boolean;\n readonly isLoading: boolean;\n readonly isDisabled: boolean;\n readonly preferredIndex: number;\n readonly popupAlign: 'start' | 'end';\n readonly boundary: HTMLElement | undefined;\n readonly anchor?: HTMLElement;\n open: boolean;\n activeIndex: number;\n searchTerm: string;\n focusRingVisible: boolean;\n position: PopupPosition;\n positionReady: boolean;\n selectOption(option: T): void;\n}\n\n/**\n * Shared single/multiple Select interaction controller.\n *\n * Decorated Stencil state and scalar/array selection remain in each component;\n * this controller owns only popup lifecycle, focus, positioning, typeahead,\n * and listbox keyboard traversal. Anchored placement is delegated to\n * `AnchoredPositionController`; only the choice-cell measurement stays here.\n */\nexport class SelectController<T extends ChoiceOption> {\n private triggerEl: HTMLButtonElement | null = null;\n private popupEl: HTMLDivElement | null = null;\n private searchEl: HTMLDsInputElement | null = null;\n private typeahead = '';\n private typeaheadTimer: ReturnType<typeof setTimeout> | null = null;\n private outsideHandler: ((event: MouseEvent) => void) | null = null;\n private readonly position: AnchoredPositionController;\n\n constructor(private readonly state: SelectControllerState<T>) {\n this.position = new AnchoredPositionController({\n getAnchor: () => this.state.anchor ?? this.triggerEl,\n getPopup: () => this.popupEl,\n measure: (trigger, popup) => {\n if (!this.state.open || !popup.isConnected || !this.state.host.contains(popup)) return null;\n\n const sectionPadding = resolveCssLengthPx(TOKEN_DEFAULTS.space050, TOKEN_DEFAULTS.space050);\n popup.style.minWidth = `max(var(--ds-choice-popup-min-inline-size, ${TOKEN_DEFAULTS.menuWidthXs}), ${this.state.anchor ? trigger.offsetWidth : choicePopupMinWidth(trigger.offsetWidth, sectionPadding)}px)`;\n\n const align = this.state.popupAlign;\n return {\n anchorRect: trigger.getBoundingClientRect(),\n popupWidth: popup.offsetWidth,\n popupHeight: popup.offsetHeight,\n side: 'bottom',\n align,\n sideOffsetPx: sectionPadding,\n alignOffsetPx: resolveChoicePopupAlignOffset({\n align,\n alignOffsetPx: 0,\n sectionInsetPx: sectionPadding,\n anchorAlignment: this.state.anchor ? 'popup-frame' : 'choice-cell',\n }),\n viewportPadPx: sectionPadding,\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n collisionRect: resolveAnchoredOverlayBoundaryRect(trigger, this.state.boundary),\n };\n },\n apply: ({ x, y }) => {\n this.state.position = { x, y };\n this.state.positionReady = true;\n },\n topLayer: true,\n });\n }\n\n get activeOptionId(): string | undefined {\n return !this.state.isLoading && this.state.activeIndex >= 0\n ? `${this.state.generatedId}-option-${this.state.activeIndex}`\n : undefined;\n }\n\n setTriggerElement = (element: HTMLButtonElement | null) => {\n this.triggerEl = element;\n };\n\n setPopupElement = (element: HTMLDivElement | null) => {\n this.popupEl = element;\n };\n\n setSearchElement = (element: HTMLDsInputElement | null) => {\n this.searchEl = element;\n };\n\n connect() {\n if (this.state.open) this.openChanged(true);\n }\n\n disconnect() {\n this.cancelPositionRetry();\n this.unbindPopupListeners();\n if (this.typeaheadTimer) clearTimeout(this.typeaheadTimer);\n }\n\n setFocus() {\n this.triggerEl?.focus();\n }\n\n optionsChanged() {\n if (!this.state.open) return;\n const enabled = enabledChoiceIndexes(this.state.options);\n if (!enabled.includes(this.state.activeIndex)) this.state.activeIndex = enabled[0] ?? -1;\n requestAnimationFrame(() => this.updatePosition());\n }\n\n loadingChanged() {\n if (this.state.open) requestAnimationFrame(() => this.updatePosition());\n }\n\n positionChanged() {\n if (this.state.open) requestAnimationFrame(() => this.updatePosition());\n }\n\n openChanged(open: boolean) {\n if (open) {\n this.bindPopupListeners();\n this.schedulePositionUpdate(() => {\n this.scrollActiveOptionIntoView();\n if (this.state.searchable) void this.searchEl?.setFocus();\n });\n return;\n }\n this.cancelPositionRetry();\n this.unbindPopupListeners();\n this.state.searchTerm = '';\n this.state.positionReady = false;\n }\n\n searchChanged() {\n this.state.activeIndex = enabledChoiceIndexes(this.state.options)[0] ?? -1;\n requestAnimationFrame(() => {\n this.updatePosition();\n this.scrollActiveOptionIntoView();\n });\n }\n\n activeIndexChanged() {\n requestAnimationFrame(() => this.scrollActiveOptionIntoView());\n }\n\n openPopup(focusVisible: boolean, edge?: 'first' | 'last') {\n if (this.state.isDisabled || (!this.state.options.length && !this.state.isLoading)) return;\n const enabled = enabledChoiceIndexes(this.state.options);\n this.state.activeIndex =\n edge === 'last'\n ? (enabled[enabled.length - 1] ?? -1)\n : this.state.preferredIndex >= 0\n ? this.state.preferredIndex\n : (enabled[0] ?? -1);\n this.state.focusRingVisible = focusVisible;\n this.state.open = true;\n }\n\n closePopup(restoreFocus = false) {\n if (!this.state.open) return;\n this.state.open = false;\n if (restoreFocus) requestAnimationFrame(() => this.triggerEl?.focus());\n }\n\n focusSearchOrTrigger() {\n requestAnimationFrame(() => {\n if (this.state.searchable) void this.searchEl?.setFocus();\n else this.triggerEl?.focus();\n });\n }\n\n handleTriggerKeyDown = (event: KeyboardEvent) => {\n if (!this.state.open) {\n if (['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(event.key)) {\n event.preventDefault();\n this.openPopup(true, event.key === 'ArrowUp' ? 'last' : 'first');\n } else if (this.isTypeaheadKey(event)) {\n event.preventDefault();\n this.openPopup(true);\n if (this.state.searchable) this.state.searchTerm = event.key;\n else this.handleTypeahead(event.key);\n }\n return;\n }\n this.handleListKeyDown(event);\n };\n\n handleListKeyDown = (event: KeyboardEvent) => {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.state.focusRingVisible = true;\n this.state.activeIndex = moveChoiceIndex(this.state.options, this.state.activeIndex, 1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.state.focusRingVisible = true;\n this.state.activeIndex = moveChoiceIndex(this.state.options, this.state.activeIndex, -1);\n break;\n case 'Home':\n event.preventDefault();\n this.state.focusRingVisible = true;\n this.state.activeIndex = enabledChoiceIndexes(this.state.options)[0] ?? -1;\n break;\n case 'End': {\n event.preventDefault();\n this.state.focusRingVisible = true;\n const enabled = enabledChoiceIndexes(this.state.options);\n this.state.activeIndex = enabled[enabled.length - 1] ?? -1;\n break;\n }\n case 'Enter':\n case ' ': {\n if (\n event.key === ' ' &&\n this.state.searchable &&\n event.target instanceof Node &&\n this.searchEl?.contains(event.target)\n )\n break;\n event.preventDefault();\n const option = this.state.options[this.state.activeIndex];\n if (option) this.state.selectOption(option);\n break;\n }\n case 'Escape':\n event.preventDefault();\n this.closePopup(true);\n break;\n case 'Tab':\n this.closePopup();\n break;\n default:\n if (!this.state.searchable && this.isTypeaheadKey(event)) {\n this.handleTypeahead(event.key);\n }\n }\n };\n\n private isTypeaheadKey(event: KeyboardEvent) {\n return event.key.length === 1 && !event.metaKey && !event.ctrlKey && !event.altKey;\n }\n\n private handleTypeahead(key: string) {\n if (this.typeaheadTimer) clearTimeout(this.typeaheadTimer);\n this.state.focusRingVisible = true;\n const normalized = key.toLocaleLowerCase();\n const repeatedCharacter =\n this.typeahead.length > 0 && [...this.typeahead].every(character => character === normalized);\n this.typeahead = repeatedCharacter ? normalized : `${this.typeahead}${normalized}`;\n const match = findChoiceTypeaheadMatch(\n this.state.options,\n this.typeahead,\n this.state.activeIndex\n );\n if (match >= 0) this.state.activeIndex = match;\n const resetMs = resolveCssTimeMs(\n TOKEN_DEFAULTS.animationDurationMedium1,\n TOKEN_DEFAULTS.animationDurationMedium1\n );\n this.typeaheadTimer = setTimeout(() => {\n this.typeahead = '';\n this.typeaheadTimer = null;\n }, resetMs);\n }\n\n private scrollActiveOptionIntoView() {\n if (!this.state.open || !this.activeOptionId) return;\n this.state.host\n .querySelector<HTMLElement>(`#${this.activeOptionId}`)\n ?.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }\n\n private bindPopupListeners() {\n this.unbindPopupListeners();\n this.outsideHandler = event => {\n if (eventIntersectsComposedBoundary(event, this.state.host)) return;\n if (this.state.anchor && eventIntersectsComposedBoundary(event, this.state.anchor)) return;\n this.closePopup();\n };\n document.addEventListener('mousedown', this.outsideHandler, true);\n this.position.observe();\n }\n\n private unbindPopupListeners() {\n if (this.outsideHandler) {\n document.removeEventListener('mousedown', this.outsideHandler, true);\n this.outsideHandler = null;\n }\n this.position.unobserve();\n }\n\n private cancelPositionRetry() {\n this.position.cancel();\n }\n\n private schedulePositionUpdate(onReady?: () => void) {\n if (!this.state.open) return;\n this.state.positionReady = false;\n this.position.schedule(onReady);\n }\n\n private updatePosition(): boolean {\n return this.position.update();\n }\n}\n","@import '../../utils/radius.css';\n@import '../../utils/choice-list.css';\n@import '../../utils/control-density-inset.css';\n@import '../../utils/control-parts.css';\n@import '../../utils/control-width.css';\n@import '../../utils/field-stack.css';\n@import '../../utils/search-control.css';\n@import '../../utils/select-trigger.css';\n@import '../../utils/table-caption-control.css';\n@import '../../utils/typography.css';\n@import '../../styles/control-elevation.css';\n\n.wrapper--error {\n --ds-interaction-border-width: var(--dimension-stroke-width-018);\n --ds-interaction-border-color: var(--color-border-bold-negative);\n}\n\n.select-popup {\n color: var(--color-foreground-secondary);\n}\n\n/* An embedding surface supplies the focus indicator instead of a second trigger ring. */\n.trigger--external-focus {\n outline: none;\n}\n\n.trigger--external-fill {\n --ds-interaction-hover: transparent;\n --ds-interaction-pressed: transparent;\n --ds-interaction-active: transparent;\n}\n\n.select-option[aria-selected='true'] .ds-choice-item__icon {\n color: var(--color-foreground-primary);\n}\n\n.select-option-row {\n position: relative;\n isolation: isolate;\n}\n\n.select-option-row__action {\n position: absolute;\n top: 50%;\n right: var(--dimension-space-050);\n z-index: var(--dimension-z-index-floating);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--dimension-radius-half);\n background: var(--color-background-transparent);\n -webkit-backdrop-filter: blur(var(--effect-blur-sm));\n backdrop-filter: blur(var(--effect-blur-sm));\n opacity: 0;\n pointer-events: none;\n transform: translateY(-50%);\n}\n\n.select-option-row:has(:focus-visible) .select-option-row__action,\n.select-option-row--action-open .select-option-row__action,\n.select-option-row--keyboard-active .select-option-row__action {\n opacity: 1;\n pointer-events: auto;\n}\n\n.select-option-row--action-open .select-option::after {\n background: var(--ds-interaction-hover);\n}\n\n.select-option__subtext-actions {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-050);\n min-inline-size: 0;\n color: var(--color-foreground-secondary);\n}\n\n.select-option__subtext-action {\n appearance: none;\n display: inline-flex;\n align-items: center;\n padding: 0;\n border: 0;\n border-radius: var(--dimension-radius-025);\n background: transparent;\n cursor: pointer;\n}\n\n.select-option__subtext-action--negative {\n --ds-text-action-foreground: var(--color-foreground-bold-negative);\n}\n\n.select-option__subtext-action-separator {\n color: var(--color-foreground-tertiary);\n pointer-events: none;\n}\n\n@media (hover: hover) and (pointer: fine) {\n .select-option-row:hover .select-option-row__action {\n opacity: 1;\n pointer-events: auto;\n }\n\n .select-option-row:hover .select-option::after {\n background: var(--ds-interaction-hover);\n }\n}\n\n@media (hover: none) {\n .select-option-row__action {\n opacity: 1;\n pointer-events: auto;\n }\n\n .select-option-row--has-action .ds-choice-item__content {\n padding-inline-end: var(--dimension-size-400);\n }\n}\n\n.error-text {\n width: 100%;\n}\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n type VNode,\n Watch,\n} from '@stencil/core';\nimport {\n controlWidthClass,\n CONTROL_SUPPORTING_TEXT_VARIANT,\n CONTROL_TEXT_VARIANT,\n DEFAULT_REQUIRED_MESSAGE,\n restoreStringArrayFormState,\n restoreStringFormState,\n setFormControlValue,\n setRepeatedFormControlValue,\n setRequiredValidity,\n type ControlInsetDepth,\n type ControlWidth,\n} from '../../utils';\nimport {\n ChoiceActionFooter,\n ChoiceFooter,\n ChoiceOptionRow,\n ChoiceSearch,\n} from '../../utils/choice-list-parts';\nimport {\n choiceBackgroundClassMap,\n choiceListUsesIcons,\n choiceListUsesSubtext,\n enabledChoiceIndexes,\n filterChoiceSections,\n flattenChoiceSections,\n resolveChoiceSections,\n type ChoiceBackground,\n type ChoiceOption,\n type ChoiceSection,\n} from '../../utils/choice-list';\nimport { SelectController } from '../../utils/select-controller';\nimport { observeTableCaptionCompact } from '../../utils/table-caption-compact';\n\nexport type SelectOption = ChoiceOption;\nexport type SelectSection = ChoiceSection;\nexport type SelectBackground = ChoiceBackground;\nexport type SelectSize = 'lg' | 'md' | 'sm' | 'xs';\nexport type SelectWidth = ControlWidth;\nexport type SelectPopupAlign = 'start' | 'end';\nexport type SelectValue = string | string[];\nexport type SelectIndicator = 'down' | 'up-down' | 'none';\n\nexport interface SelectOptionActionDetail {\n value: string;\n anchorId: string;\n originalEvent: MouseEvent;\n}\n\nexport interface SelectOptionSubtextActionDetail {\n value: string;\n actionValue: string;\n originalEvent: MouseEvent;\n}\n\nconst ICON_SIZE: Record<SelectSize, 'lg' | 'md' | 'sm' | 'xs'> = {\n lg: 'lg',\n md: 'md',\n sm: 'sm',\n xs: 'xs',\n};\n\nconst OPTION_ACTION_SIZE: Record<SelectSize, 'md' | 'sm' | 'xs'> = {\n lg: 'md',\n md: 'sm',\n sm: 'xs',\n xs: 'xs',\n};\n\nlet selectId = 0;\n\n@Component({\n tag: 'ds-select',\n styleUrl: 'Select.css',\n scoped: true,\n formAssociated: true,\n})\nexport class Select {\n @Element() el!: HTMLElement;\n @AttachInternals() internals!: ElementInternals;\n\n /** Flat choices. Assign arrays through the JavaScript property. */\n @Prop() options: SelectOption[] = [];\n /** Grouped choices; takes precedence over options. Assign through JavaScript. */\n @Prop() sections: SelectSection[] = [];\n /** Enable independent multi-value selection while keeping the popup open. */\n @Prop({ reflect: true }) multiple: boolean = false;\n /** Selected scalar or array value according to `multiple`. */\n @Prop({ mutable: true }) value: SelectValue = '';\n /** Controlled popup visibility. */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n /** Native form field name. */\n @Prop({ reflect: true }) name: string | undefined;\n /** Associates the select with a form by id when rendered outside that form. */\n @Prop({ reflect: true }) form: string | undefined;\n /** Native disabled state. */\n @Prop({ reflect: true }) disabled: boolean = false;\n /** Require one valid selected value. */\n @Prop({ reflect: true }) required: boolean = false;\n /** Validation message used when required is missing. */\n @Prop() requiredMessage: string = DEFAULT_REQUIRED_MESSAGE;\n /** Trigger text shown when no valid value is selected. */\n @Prop() placeholder: string = 'Select';\n /** Optional scalar-mode trigger text that does not change the selected option label. */\n @Prop() triggerLabel: string | undefined;\n /** Present triggerLabel with placeholder emphasis while preserving the selected value. */\n @Prop() triggerLabelPlaceholder: boolean = false;\n /** Show a supplemental notification dot beside the trigger label. */\n @Prop() dot: boolean = false;\n /** Control density. */\n @Prop() size: SelectSize = 'md';\n /** Use reduced outer geometry when nested inside a control of the same size. */\n @Prop() isInset: boolean = false;\n /** Single removes 4px overall; double removes 8px overall (xs stays single). */\n @Prop() insetDepth: ControlInsetDepth = 'single';\n /** Width fit — hug content (default) or fill the parent. */\n @Prop() width: SelectWidth = 'hug';\n /** Align the popup's choice edge to the trigger start or end edge. */\n @Prop() popupAlign: SelectPopupAlign = 'start';\n /** Explicit collision owner; otherwise the nearest data-ds-overlay-boundary ancestor is used. */\n @Prop() boundary: HTMLElement | undefined;\n /** Optional popup positioning anchor; the trigger still owns focus and accessibility. */\n @Prop() anchor: HTMLElement | undefined;\n /** Shared inactive treatment; removes interaction and form submission. */\n @Prop() isInactive: boolean = false;\n /** Replace the prefix with a loader and disable option interaction. */\n @Prop() isLoading: boolean = false;\n /** Show the selected interaction fill when a valid value exists. */\n /** Keep trigger colors neutral when a value is selected. */\n @Prop() neutralTrigger: boolean = false;\n @Prop() activeFill: boolean = false;\n /**\n * Opt into table-caption icon-only chrome below 900px. The trigger omits its\n * visible label and chevron; keep an accessible name via aria-label.\n */\n @Prop({ reflect: true }) collapseLabel: boolean = false;\n /** Always show only the prefix icon; retain an accessible name via aria-label. */\n @Prop() iconOnly: boolean = false;\n /** Show the surface-aware inset border, including focused and invalid strokes. */\n @Prop() hasBorder: boolean = true;\n /** Disable only when a containing surface owns hover and press feedback. */\n @Prop() hasInteractionFill: boolean = true;\n /** Disable only when a containing surface supplies a visible focus indicator. */\n @Prop() hasFocusRing: boolean = true;\n /** Use a pill radius on the trigger. Popup chrome stays on the menu radius. */\n @Prop() rounded: boolean = false;\n /** Optional trigger prefix icon name. */\n @Prop() icon: string | undefined;\n /** Trailing choice indicator. Use up-down for compact value steppers such as page size. */\n @Prop() indicator: SelectIndicator = 'down';\n /** Show the clear footer action when a value exists. */\n @Prop() allowClear: boolean = true;\n /** Localized clear action label. */\n @Prop() clearLabel: string = 'Clear';\n /** Localized noun displayed after the selected count in multiple mode. */\n @Prop() selectedLabel: string = 'selected';\n /** Optional text action shown in the popup footer instead of the clear action. */\n @Prop() footerActionLabel: string | undefined;\n /** Show immediate local filtering over option labels, subtext, and section headings. */\n @Prop() searchable: boolean = false;\n /** Localized search-field placeholder and accessible name. */\n @Prop() searchPlaceholder: string = 'Search';\n /** Localized empty-filter result text. */\n @Prop() noResultsText: string = 'No results found';\n /** Accessible loading status label. */\n @Prop() loadingLabel: string = 'Loading';\n /** Actual parent surface context; omit on primary and secondary surfaces. */\n @Prop() background: SelectBackground | undefined;\n /** Show invalid visual state. */\n @Prop() error: boolean = false;\n /** Error text rendered below the trigger when error is true. */\n @Prop() errorMessage: string | undefined;\n /** ID applied to the internal combobox trigger for external labels. */\n @Prop() inputId: string | undefined;\n /** Direct accessible name when no external label is available. */\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | null = null;\n /** IDs of elements that label the combobox. */\n @Prop({ attribute: 'aria-labelledby' }) ariaLabelledby: string | undefined;\n /** Additional IDs that describe the combobox. */\n @Prop({ attribute: 'aria-describedby' }) ariaDescribedby: string | undefined;\n\n /** Emitted after selection or clearing with the next scalar or array value. */\n @Event() dsChange!: EventEmitter<SelectValue>;\n /** Emitted after the footer clear action. */\n @Event() dsClear!: EventEmitter<void>;\n /** Emitted whenever popup visibility changes. */\n @Event() dsOpenChange!: EventEmitter<boolean>;\n /** Emitted when the optional popup footer action is activated. */\n @Event() dsFooterAction!: EventEmitter<void>;\n /** Emitted when an option's contextual ellipsis action is activated. */\n @Event() dsOptionAction!: EventEmitter<SelectOptionActionDetail>;\n /** Emitted when an option's supporting text action is activated. */\n @Event() dsOptionSubtextAction!: EventEmitter<SelectOptionSubtextActionDetail>;\n\n @State() private activeIndex = -1;\n @State() private searchTerm = '';\n @State() private formDisabled = false;\n @State() private position = { x: 0, y: 0 };\n @State() private positionReady = false;\n @State() private focusRingVisible = false;\n @State() private compactFooterSummary = false;\n @State() private captionCompact = false;\n\n private readonly generatedId = `ds-select-${++selectId}`;\n private readonly listboxId = `${this.generatedId}-listbox`;\n private readonly errorId = `${this.generatedId}-error`;\n private initialValue: SelectValue = '';\n private readonly controller = this.createController();\n private footerContentElement?: HTMLDivElement;\n private footerSummaryMeasureElement?: HTMLElement;\n private footerClearElement?: HTMLButtonElement;\n private footerResizeObserver?: ResizeObserver;\n private observedFooterContentElement?: HTMLDivElement;\n private footerMeasurementFrame?: number;\n private captionCompactDisconnect: (() => void) | undefined;\n private hasLoaded = false;\n\n private createController() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias -- adapter getters preserve reactive component ownership without inheritance.\n const owner = this;\n return new SelectController<SelectOption>({\n get host() {\n return owner.el;\n },\n generatedId: owner.generatedId,\n get options() {\n return owner.visibleOptions;\n },\n get searchable() {\n return owner.searchable;\n },\n get isLoading() {\n return owner.isLoading;\n },\n get isDisabled() {\n return owner.isDisabled;\n },\n get preferredIndex() {\n if (owner.multiple) return -1;\n return owner.visibleOptions.findIndex(\n option => option.value === owner.scalarValue && !option.isInactive\n );\n },\n get popupAlign() {\n return owner.popupAlign;\n },\n get boundary() {\n return owner.boundary;\n },\n get anchor() {\n return owner.anchor;\n },\n get open() {\n return owner.open;\n },\n set open(value) {\n owner.open = value;\n },\n get activeIndex() {\n return owner.activeIndex;\n },\n set activeIndex(value) {\n owner.activeIndex = value;\n },\n get searchTerm() {\n return owner.searchTerm;\n },\n set searchTerm(value) {\n owner.searchTerm = value;\n },\n get focusRingVisible() {\n return owner.focusRingVisible;\n },\n set focusRingVisible(value) {\n owner.focusRingVisible = value;\n },\n get position() {\n return owner.position;\n },\n set position(value) {\n owner.position = value;\n },\n get positionReady() {\n return owner.positionReady;\n },\n set positionReady(value) {\n owner.positionReady = value;\n },\n selectOption: option => owner.selectOption(option),\n });\n }\n\n componentWillLoad() {\n this.value = this.normalizeValueForMode(this.value);\n this.initialValue = Array.isArray(this.value) ? [...this.value] : this.value;\n this.syncFormValue();\n }\n\n componentDidLoad() {\n this.hasLoaded = true;\n this.controller.connect();\n this.observeFooterContent();\n this.syncCaptionCompactObserver();\n }\n\n connectedCallback() {\n if (!this.hasLoaded) return;\n this.controller.connect();\n this.observeFooterContent();\n this.syncCaptionCompactObserver();\n }\n\n componentDidRender() {\n this.observeFooterContent();\n this.scheduleFooterSummaryMeasurement();\n }\n\n disconnectedCallback() {\n this.controller.disconnect();\n this.footerResizeObserver?.disconnect();\n this.observedFooterContentElement = undefined;\n if (this.footerMeasurementFrame !== undefined) {\n cancelAnimationFrame(this.footerMeasurementFrame);\n this.footerMeasurementFrame = undefined;\n }\n this.disconnectCaptionCompactObserver();\n }\n\n @Watch('collapseLabel')\n onCollapseLabelChange() {\n this.syncCaptionCompactObserver();\n }\n\n @Watch('value')\n @Watch('multiple')\n @Watch('disabled')\n @Watch('isInactive')\n @Watch('required')\n @Watch('requiredMessage')\n @Watch('name')\n @Watch('options')\n @Watch('sections')\n syncFormValue() {\n if (\n (this.multiple && !Array.isArray(this.value)) ||\n (!this.multiple && Array.isArray(this.value))\n ) {\n this.value = this.normalizeValueForMode(this.value);\n }\n const inactive = this.isDisabled;\n if (this.multiple) {\n const values = this.resolvedValues;\n setRepeatedFormControlValue(this.internals, this.name, values, {\n inactive,\n state: JSON.stringify(this.value),\n });\n } else {\n const value = this.hasSelection ? this.scalarValue : '';\n setFormControlValue(this.internals, value, { inactive, state: this.scalarValue });\n }\n const missing = this.required && !inactive && !this.hasSelection;\n setRequiredValidity(this.internals, missing, this.requiredMessage);\n this.controller.optionsChanged();\n }\n\n @Watch('isLoading')\n onLoadingChange() {\n this.controller.loadingChanged();\n }\n\n @Watch('popupAlign')\n @Watch('boundary')\n @Watch('anchor')\n onPopupAlignChange() {\n this.controller.positionChanged();\n }\n\n @Watch('open')\n onOpenChange(open: boolean) {\n this.dsOpenChange.emit(open);\n this.controller.openChanged(open);\n }\n\n @Watch('searchTerm')\n onSearchTermChange() {\n this.controller.searchChanged();\n }\n\n @Watch('activeIndex')\n onActiveIndexChange() {\n this.controller.activeIndexChanged();\n }\n\n formDisabledCallback(disabled: boolean) {\n this.formDisabled = disabled;\n this.syncFormValue();\n }\n\n formResetCallback() {\n this.value = this.normalizeValueForMode(this.initialValue);\n this.closePopup();\n }\n\n formStateRestoreCallback(state: string | File | FormData | null) {\n if (!this.multiple) {\n this.value = restoreStringFormState(state);\n return;\n }\n this.value = restoreStringArrayFormState(state);\n }\n\n @Method()\n async setFocus() {\n this.controller.setFocus();\n }\n\n private get isDisabled(): boolean {\n return this.disabled || this.isInactive || this.formDisabled;\n }\n\n private normalizeValueForMode(value: SelectValue): SelectValue {\n if (this.multiple) {\n return Array.isArray(value) ? [...value] : value ? [value] : [];\n }\n return Array.isArray(value) ? (value[0] ?? '') : value;\n }\n\n private get allSections(): SelectSection[] {\n return resolveChoiceSections(this.options, this.sections);\n }\n\n private get allOptions(): SelectOption[] {\n return flattenChoiceSections(this.allSections);\n }\n\n private get visibleSections(): SelectSection[] {\n return this.searchable\n ? filterChoiceSections(this.allSections, this.searchTerm)\n : this.allSections;\n }\n\n private get visibleOptions(): SelectOption[] {\n return flattenChoiceSections(this.visibleSections);\n }\n\n private get scalarValue(): string {\n return typeof this.value === 'string' ? this.value : '';\n }\n\n private get resolvedValues(): string[] {\n if (!this.multiple || !Array.isArray(this.value)) return [];\n const valid = new Set(this.allOptions.map(option => option.value));\n return [...new Set(this.value.filter(value => valid.has(value)))];\n }\n\n private get selectedOption(): SelectOption | undefined {\n if (this.multiple) return undefined;\n return this.allOptions.find(option => option.value === this.scalarValue);\n }\n\n private get hasSelection(): boolean {\n return this.multiple ? this.resolvedValues.length > 0 : Boolean(this.selectedOption);\n }\n\n private get activeOptionId(): string | undefined {\n return this.controller.activeOptionId;\n }\n\n private get popupRole(): 'listbox' | 'grid' {\n return this.allOptions.some(option => Boolean(option.action)) ? 'grid' : 'listbox';\n }\n\n private observeFooterContent() {\n const content =\n this.open && this.multiple && this.hasSelection ? this.footerContentElement : undefined;\n if (!content?.isConnected) {\n this.footerResizeObserver?.disconnect();\n this.observedFooterContentElement = undefined;\n return;\n }\n if (this.observedFooterContentElement === content) return;\n\n this.footerResizeObserver?.disconnect();\n if (typeof ResizeObserver !== 'undefined') {\n this.footerResizeObserver = new ResizeObserver(() => this.scheduleFooterSummaryMeasurement());\n this.footerResizeObserver.observe(content);\n }\n this.observedFooterContentElement = content;\n }\n\n private scheduleFooterSummaryMeasurement() {\n if (\n !this.open ||\n !this.multiple ||\n !this.hasSelection ||\n this.footerMeasurementFrame !== undefined\n ) {\n return;\n }\n this.footerMeasurementFrame = requestAnimationFrame(() => {\n this.footerMeasurementFrame = undefined;\n this.measureFooterSummary();\n });\n }\n\n private measureFooterSummary() {\n const content = this.footerContentElement;\n const summary = this.footerSummaryMeasureElement;\n const clear = this.footerClearElement;\n if (!content?.isConnected || !summary?.isConnected || !clear?.isConnected) return;\n\n const styles = getComputedStyle(content);\n const innerWidth =\n content.clientWidth -\n Number.parseFloat(styles.paddingInlineStart || '0') -\n Number.parseFloat(styles.paddingInlineEnd || '0');\n const requiredWidth =\n summary.getBoundingClientRect().width +\n clear.getBoundingClientRect().width +\n Number.parseFloat(styles.columnGap || '0');\n const nextCompact = requiredWidth > innerWidth + 0.5;\n if (nextCompact !== this.compactFooterSummary) {\n this.compactFooterSummary = nextCompact;\n }\n }\n\n private closePopup(restoreFocus = false) {\n this.controller.closePopup(restoreFocus);\n }\n\n private openPopup(focusVisible: boolean, edge?: 'first' | 'last') {\n this.controller.openPopup(focusVisible, edge);\n }\n\n private selectOption(option: SelectOption) {\n if (option.isInactive || this.isLoading) return;\n if (this.multiple) {\n const current = this.resolvedValues;\n const next = current.includes(option.value)\n ? current.filter(value => value !== option.value)\n : [...current, option.value];\n this.value = next;\n this.dsChange.emit([...next]);\n return;\n }\n this.value = option.value;\n this.dsChange.emit(option.value);\n this.controller.closePopup(true);\n }\n\n private clearSelection = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n this.value = this.multiple ? [] : '';\n this.dsChange.emit(this.multiple ? [] : '');\n this.dsClear.emit();\n if (!this.multiple) {\n const enabled = enabledChoiceIndexes(this.visibleOptions);\n this.activeIndex = enabled[0] ?? -1;\n }\n this.controller.focusSearchOrTrigger();\n };\n\n private activateFooterAction = (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n this.dsFooterAction.emit();\n this.closePopup();\n };\n\n private readonly handleListKeyDown = this.controller.handleListKeyDown;\n private readonly handleTriggerKeyDown = this.controller.handleTriggerKeyDown;\n\n private renderOption(\n option: SelectOption,\n index: number,\n usesIcons: boolean,\n usesSubtext: boolean\n ) {\n const selected = this.multiple\n ? this.resolvedValues.includes(option.value)\n : option.value === this.scalarValue;\n const active = index === this.activeIndex;\n const actionId = `${this.generatedId}-option-action-${index}`;\n return (\n <ChoiceOptionRow\n size={this.size}\n id={`${this.generatedId}-option-${index}`}\n option={option}\n selected={selected}\n active={active}\n focusRingVisible={this.focusRingVisible}\n usesSubtext={usesSubtext}\n actionOpen={option.action?.surfaceOpen ?? option.action?.expanded}\n popupRole={this.popupRole}\n leading={\n this.multiple ? (\n <span\n class=\"ds-choice-item__icon ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-checkbox\n class=\"select-option__checkbox\"\n label=\"\"\n size={this.size}\n checked={selected}\n presentation\n />\n </span>\n ) : usesIcons && option.icon ? (\n <span\n class=\"ds-choice-item__icon ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-icon name={option.icon} size={this.size} color=\"inherit\" />\n </span>\n ) : undefined\n }\n supporting={\n option.subtextActions?.length ? (\n <span class=\"ds-choice-item__subtext ds-control-label-box select-option__subtext-actions\">\n {option.subtextActions.map((action, actionIndex) => [\n actionIndex > 0 ? (\n <ds-text\n class=\"select-option__subtext-action-separator\"\n as=\"span\"\n variant={CONTROL_SUPPORTING_TEXT_VARIANT[this.size]}\n color=\"inherit\"\n aria-hidden=\"true\"\n >\n ·\n </ds-text>\n ) : null,\n <button\n type=\"button\"\n class={{\n 'select-option__subtext-action': true,\n 'select-option__subtext-action--negative': action.tone === 'negative',\n 'ds-text-action': true,\n 'ds-focus-ring': true,\n }}\n onKeyDown={(event: KeyboardEvent) => event.stopPropagation()}\n onClick={(event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n this.dsOptionSubtextAction.emit({\n value: option.value,\n actionValue: action.value,\n originalEvent: event,\n });\n }}\n >\n <ds-text\n as=\"span\"\n variant={CONTROL_SUPPORTING_TEXT_VARIANT[this.size]}\n color=\"inherit\"\n >\n {action.label}\n </ds-text>\n </button>,\n ])}\n </span>\n ) : undefined\n }\n action={\n option.action ? (\n <ds-tooltip label={option.action.label} side=\"left\" size=\"sm\">\n <ds-button-unfilled\n id={actionId}\n variant=\"icon\"\n size={OPTION_ACTION_SIZE[this.size]}\n icon=\"Ellipses\"\n rounded\n hasBorder={false}\n activeFill={false}\n ariaLabel={option.action.label}\n haspopup=\"menu\"\n controls={option.action.controls}\n expanded={option.action.expanded}\n surfaceOpen={option.action.surfaceOpen}\n onKeyDown={event => {\n event.stopPropagation();\n if (event.key === 'Escape' || event.key === 'ArrowLeft') {\n event.preventDefault();\n this.controller.focusSearchOrTrigger();\n }\n }}\n onDsClick={(event: CustomEvent<MouseEvent>) => {\n event.stopPropagation();\n this.dsOptionAction.emit({\n value: option.value,\n anchorId: actionId,\n originalEvent: event.detail,\n });\n }}\n />\n </ds-tooltip>\n ) : undefined\n }\n onHover={() => {\n this.focusRingVisible = false;\n this.activeIndex = index;\n }}\n onSelect={() => this.selectOption(option)}\n />\n );\n }\n\n private get captionIconOnly(): boolean {\n return (\n (this.iconOnly || (this.collapseLabel && this.captionCompact)) &&\n Boolean(this.icon || this.isLoading)\n );\n }\n\n private get doubleInset(): boolean {\n return this.isInset && this.insetDepth === 'double' && this.size !== 'xs';\n }\n\n private syncCaptionCompactObserver(): void {\n this.disconnectCaptionCompactObserver();\n if (!this.collapseLabel) {\n if (this.captionCompact) this.captionCompact = false;\n return;\n }\n this.captionCompactDisconnect = observeTableCaptionCompact(this.el, compact => {\n if (this.captionCompact !== compact) this.captionCompact = compact;\n });\n }\n\n private disconnectCaptionCompactObserver(): void {\n this.captionCompactDisconnect?.();\n this.captionCompactDisconnect = undefined;\n }\n\n private renderCaptionTooltip(trigger: VNode, label: string): VNode {\n if (!this.collapseLabel) return trigger;\n return (\n <ds-tooltip label={label} side=\"top\" size=\"sm\">\n {trigger}\n </ds-tooltip>\n );\n }\n\n render() {\n const inactive = this.isDisabled;\n const showPlaceholder = !this.hasSelection;\n const count = this.resolvedValues.length;\n const label = this.multiple\n ? `${this.placeholder}${count > 0 ? ` · ${count}` : ''}`\n : showPlaceholder\n ? this.placeholder\n : (this.triggerLabel ?? this.selectedOption?.label);\n const textVariant = CONTROL_TEXT_VARIANT[this.size];\n const iconSize = ICON_SIZE[this.size];\n const usesOptionIcons = !this.multiple && choiceListUsesIcons(this.allOptions);\n const usesOptionSubtext = choiceListUsesSubtext(this.allOptions);\n const showError = this.error && Boolean(this.errorMessage);\n const describedBy =\n [this.ariaDescribedby, showError ? this.errorId : undefined].filter(Boolean).join(' ') ||\n undefined;\n const popupStyle = {\n position: 'fixed',\n left: '0',\n top: '0',\n transform: `translate(${Math.round(this.position.x)}px, ${Math.round(this.position.y)}px)`,\n zIndex: 'var(--dimension-z-index-floating)',\n visibility: this.positionReady ? 'visible' : 'hidden',\n };\n let flatIndex = 0;\n\n return (\n <Host\n class={{\n 'select-host': true,\n 'ds-select-trigger-host': true,\n 'select-host--multiple': this.multiple,\n 'ds-field-stack': true,\n 'ds-field-stack--supporting-inset': !this.hasBorder,\n 'ds-control-inactive': inactive,\n [`ds-control--${this.size}`]: true,\n 'ds-table-caption-control': this.collapseLabel,\n 'ds-table-caption-control--compact': this.captionIconOnly,\n ...controlWidthClass(this.width),\n [`select-host--background-${this.background}`]: !!this.background,\n [`ds-select-trigger-host--background-${this.background}`]: !!this.background,\n }}\n >\n {this.renderCaptionTooltip(\n <button\n ref={element => {\n this.controller.setTriggerElement((element as HTMLButtonElement) ?? null);\n }}\n id={this.inputId ?? this.generatedId}\n type=\"button\"\n class={{\n trigger: true,\n 'ds-control-frame': true,\n 'ds-focus-ring-inset': this.hasFocusRing,\n 'trigger--external-focus': !this.hasFocusRing,\n // The shared overlay also carries borders/focus; suppress only its wash.\n 'ds-interaction-fill': this.hasInteractionFill || this.hasBorder || this.hasFocusRing,\n 'trigger--external-fill': !this.hasInteractionFill,\n 'ds-interaction-fill--selected':\n this.hasInteractionFill && !inactive && this.activeFill && this.hasSelection,\n 'trigger--expanded': !inactive && this.open,\n 'ds-interaction-fill--surface-open':\n this.hasInteractionFill && !inactive && this.open,\n 'trigger--bordered': this.hasBorder,\n 'trigger--rounded': this.rounded,\n 'trigger--placeholder': showPlaceholder && !this.multiple,\n 'trigger--has-value': this.hasSelection && !this.neutralTrigger,\n 'trigger--label-placeholder':\n !this.multiple && Boolean(this.triggerLabel) && this.triggerLabelPlaceholder,\n 'wrapper--error': this.hasBorder && this.error,\n [`ds-control--${this.size}`]: true,\n 'ds-control--inset': this.isInset && !this.doubleInset,\n 'ds-control--inset-double': this.doubleInset,\n ...choiceBackgroundClassMap(this.background),\n }}\n disabled={inactive}\n role=\"combobox\"\n aria-haspopup={this.popupRole}\n aria-expanded={String(this.open)}\n aria-controls={this.open ? this.listboxId : undefined}\n aria-activedescendant={this.open && !this.searchable ? this.activeOptionId : undefined}\n aria-label={this.ariaLabel ?? (this.captionIconOnly ? label : undefined)}\n aria-labelledby={this.ariaLabelledby}\n aria-describedby={describedBy}\n aria-invalid={this.error ? 'true' : undefined}\n aria-required={this.required || undefined}\n aria-busy={this.isLoading ? 'true' : undefined}\n onClick={() => (this.open ? this.closePopup() : this.openPopup(false))}\n onKeyDown={event => {\n const action = this.visibleOptions[this.activeIndex]?.action;\n if (\n this.open &&\n action &&\n (event.key === 'ArrowRight' || (event.key === 'F10' && event.shiftKey))\n ) {\n event.preventDefault();\n document\n .getElementById(`${this.generatedId}-option-action-${this.activeIndex}`)\n ?.querySelector<HTMLElement>('button')\n ?.focus();\n return;\n }\n this.handleTriggerKeyDown(event);\n }}\n >\n {(this.icon || this.isLoading) && (\n <span\n class=\"trigger__prefix ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n {this.isLoading ? (\n <ds-loader size={iconSize} color=\"inherit\" />\n ) : (\n <ds-icon name={this.icon} size={iconSize} color=\"inherit\" />\n )}\n </span>\n )}\n {this.captionIconOnly ? null : (\n <span\n class={{\n 'trigger__label-box': true,\n 'ds-interaction-fill__content': true,\n }}\n >\n <span\n class={{\n 'trigger__label-content': true,\n 'ds-control-label-box': true,\n 'ds-control-label-dot': this.dot,\n 'trigger__label-content--dot': this.dot,\n }}\n >\n <ds-text\n class=\"trigger__label\"\n as=\"span\"\n variant={textVariant}\n color=\"inherit\"\n lineTruncation={1}\n >\n {label}\n </ds-text>\n {this.dot && (\n <ds-badge\n class=\"trigger__dot ds-control-label-dot__badge\"\n variant=\"dot\"\n hasRing={false}\n label=\"\"\n aria-hidden=\"true\"\n />\n )}\n </span>\n </span>\n )}\n {this.captionIconOnly || this.indicator === 'none' ? null : (\n <span\n class=\"trigger__chevron ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-icon\n name={this.indicator === 'up-down' ? 'ChevronUpDown' : 'ChevronDown'}\n size={iconSize}\n color=\"inherit\"\n />\n </span>\n )}\n </button>,\n this.captionIconOnly ? this.ariaLabel?.trim() || this.placeholder : ''\n )}\n\n {this.open && (\n <div\n popover=\"manual\"\n ref={element => {\n this.controller.setPopupElement((element as HTMLDivElement) ?? null);\n }}\n class=\"select-popup ds-choice-popup\"\n style={popupStyle}\n >\n {this.searchable && (\n <ChoiceSearch\n size={this.size}\n value={this.searchTerm}\n placeholder={this.searchPlaceholder}\n controls={this.listboxId}\n activeDescendant={this.activeOptionId}\n inputRef={this.controller.setSearchElement}\n clearLabel={this.clearLabel}\n onValueChange={value => {\n this.searchTerm = value;\n }}\n onKeyDown={event => this.handleListKeyDown(event)}\n />\n )}\n <div\n id={this.listboxId}\n class=\"ds-choice-list\"\n role={this.popupRole}\n aria-multiselectable={this.multiple ? 'true' : undefined}\n aria-label={this.ariaLabel ?? this.placeholder}\n aria-busy={this.isLoading ? 'true' : undefined}\n >\n {this.isLoading ? (\n <div\n class=\"ds-choice-loading ds-empty-region\"\n role={this.popupRole === 'grid' ? 'row' : 'option'}\n aria-selected=\"false\"\n aria-disabled=\"true\"\n aria-label={this.loadingLabel}\n aria-live=\"polite\"\n >\n {this.popupRole === 'grid' ? (\n <span role=\"gridcell\">\n <ds-loader size={this.size} color=\"inherit\" />\n </span>\n ) : (\n <ds-loader size={this.size} color=\"inherit\" />\n )}\n </div>\n ) : this.visibleOptions.length === 0 ? (\n <div\n class=\"ds-choice-empty ds-empty-region\"\n role={this.popupRole === 'grid' ? 'row' : 'option'}\n aria-selected=\"false\"\n aria-disabled=\"true\"\n aria-label={this.noResultsText}\n aria-live=\"polite\"\n >\n {this.popupRole === 'grid' ? (\n <span role=\"gridcell\">\n <ds-empty-state body={this.noResultsText} />\n </span>\n ) : (\n <ds-empty-state body={this.noResultsText} />\n )}\n </div>\n ) : (\n this.visibleSections.map((section, sectionIndex) => (\n <div\n class={{\n 'ds-choice-section': true,\n 'ds-chrome-column': true,\n 'ds-chrome-space--sm': true,\n 'ds-choice-section--divided': !!section.divider,\n 'ds-choice-section--headed-after-first':\n sectionIndex > 0 && Boolean(section.header),\n }}\n role={\n this.popupRole === 'grid' ? 'rowgroup' : section.header ? 'group' : undefined\n }\n aria-label={section.header}\n >\n {section.header && this.popupRole === 'grid' ? (\n <ds-text\n class={`ds-choice-section__header ds-control-section-heading ds-control--${this.size}`}\n as=\"span\"\n variant={CONTROL_SUPPORTING_TEXT_VARIANT[this.size]}\n emphasis\n color=\"primary\"\n role=\"row\"\n >\n <span class=\"ds-choice-section__header-label\" role=\"gridcell\">\n {section.header}\n </span>\n </ds-text>\n ) : section.header ? (\n <ds-text\n class={`ds-choice-section__header ds-control-section-heading ds-control--${this.size}`}\n as=\"span\"\n variant={CONTROL_SUPPORTING_TEXT_VARIANT[this.size]}\n emphasis\n color=\"primary\"\n aria-hidden=\"true\"\n >\n <span class=\"ds-choice-section__header-label\">{section.header}</span>\n </ds-text>\n ) : null}\n {section.options.map(option =>\n this.renderOption(option, flatIndex++, usesOptionIcons, usesOptionSubtext)\n )}\n </div>\n ))\n )}\n </div>\n {this.footerActionLabel && !this.isLoading ? (\n <ChoiceActionFooter\n size={this.size}\n label={this.footerActionLabel}\n onAction={this.activateFooterAction}\n />\n ) : this.allowClear && this.hasSelection && !this.isLoading ? (\n <ChoiceFooter\n size={this.size}\n summary={this.multiple ? `${count} ${this.selectedLabel}` : undefined}\n compactSummary={this.multiple ? String(count) : undefined}\n useCompactSummary={this.compactFooterSummary}\n contentRef={element => {\n this.footerContentElement = element ?? undefined;\n }}\n summaryMeasureRef={element => {\n this.footerSummaryMeasureElement = element ?? undefined;\n }}\n clearRef={element => {\n this.footerClearElement = element ?? undefined;\n }}\n clearLabel={this.clearLabel}\n onClear={this.clearSelection}\n />\n ) : null}\n </div>\n )}\n\n {showError && (\n <ds-text\n class=\"error-text\"\n as=\"div\"\n variant=\"text-body-small\"\n color=\"negative\"\n textId={this.errorId}\n role=\"alert\"\n >\n {this.errorMessage}\n </ds-text>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["SelectController","constructor","state","this","triggerEl","popupEl","searchEl","typeahead","typeaheadTimer","outsideHandler","setTriggerElement","element","setPopupElement","setSearchElement","handleTriggerKeyDown","event","open","includes","key","preventDefault","openPopup","isTypeaheadKey","searchable","searchTerm","handleTypeahead","handleListKeyDown","focusRingVisible","activeIndex","moveChoiceIndex","options","enabledChoiceIndexes","enabled","length","target","Node","contains","option","selectOption","closePopup","position","AnchoredPositionController","getAnchor","anchor","getPopup","measure","trigger","popup","isConnected","host","sectionPadding","resolveCssLengthPx","TOKEN_DEFAULTS","space050","style","minWidth","menuWidthXs","offsetWidth","choicePopupMinWidth","align","popupAlign","anchorRect","getBoundingClientRect","popupWidth","popupHeight","offsetHeight","side","sideOffsetPx","alignOffsetPx","resolveChoicePopupAlignOffset","sectionInsetPx","anchorAlignment","viewportPadPx","viewportWidth","window","innerWidth","viewportHeight","innerHeight","collisionRect","resolveAnchoredOverlayBoundaryRect","boundary","apply","x","y","positionReady","topLayer","activeOptionId","isLoading","generatedId","undefined","connect","openChanged","disconnect","cancelPositionRetry","unbindPopupListeners","clearTimeout","setFocus","focus","optionsChanged","requestAnimationFrame","updatePosition","loadingChanged","positionChanged","bindPopupListeners","schedulePositionUpdate","scrollActiveOptionIntoView","searchChanged","activeIndexChanged","focusVisible","edge","isDisabled","preferredIndex","restoreFocus","focusSearchOrTrigger","metaKey","ctrlKey","altKey","normalized","toLocaleLowerCase","repeatedCharacter","every","character","match","findChoiceTypeaheadMatch","resetMs","resolveCssTimeMs","animationDurationMedium1","setTimeout","querySelector","scrollIntoView","block","inline","eventIntersectsComposedBoundary","document","addEventListener","observe","removeEventListener","unobserve","cancel","onReady","schedule","update","selectCss","ICON_SIZE","lg","md","sm","xs","OPTION_ACTION_SIZE","selectId","Select","__stencil_proxyCustomElement","HTMLElement","registerHost","sections","multiple","value","disabled","required","requiredMessage","DEFAULT_REQUIRED_MESSAGE","placeholder","triggerLabelPlaceholder","dot","size","isInset","insetDepth","width","isInactive","neutralTrigger","activeFill","collapseLabel","iconOnly","hasBorder","hasInteractionFill","hasFocusRing","rounded","indicator","allowClear","clearLabel","selectedLabel","searchPlaceholder","noResultsText","loadingLabel","error","ariaLabel","formDisabled","compactFooterSummary","captionCompact","listboxId","errorId","initialValue","controller","createController","hasLoaded","clearSelection","stopPropagation","dsChange","emit","dsClear","visibleOptions","activateFooterAction","dsFooterAction","owner","el","findIndex","scalarValue","componentWillLoad","normalizeValueForMode","Array","isArray","syncFormValue","componentDidLoad","observeFooterContent","syncCaptionCompactObserver","connectedCallback","componentDidRender","scheduleFooterSummaryMeasurement","disconnectedCallback","footerResizeObserver","observedFooterContentElement","footerMeasurementFrame","cancelAnimationFrame","disconnectCaptionCompactObserver","onCollapseLabelChange","inactive","values","resolvedValues","setRepeatedFormControlValue","internals","name","JSON","stringify","hasSelection","setFormControlValue","missing","setRequiredValidity","onLoadingChange","onPopupAlignChange","onOpenChange","dsOpenChange","onSearchTermChange","onActiveIndexChange","formDisabledCallback","formResetCallback","formStateRestoreCallback","restoreStringFormState","restoreStringArrayFormState","allSections","resolveChoiceSections","allOptions","flattenChoiceSections","visibleSections","filterChoiceSections","valid","Set","map","filter","has","selectedOption","find","Boolean","popupRole","some","action","content","footerContentElement","ResizeObserver","measureFooterSummary","summary","footerSummaryMeasureElement","clear","footerClearElement","styles","getComputedStyle","clientWidth","Number","parseFloat","paddingInlineStart","paddingInlineEnd","requiredWidth","columnGap","nextCompact","current","next","renderOption","index","usesIcons","usesSubtext","selected","active","actionId","h","ChoiceOptionRow","id","actionOpen","surfaceOpen","expanded","leading","class","label","checked","presentation","icon","color","supporting","subtextActions","actionIndex","as","variant","CONTROL_SUPPORTING_TEXT_VARIANT","type","tone","onKeyDown","onClick","dsOptionSubtextAction","actionValue","originalEvent","haspopup","controls","onDsClick","dsOptionAction","anchorId","detail","onHover","onSelect","captionIconOnly","doubleInset","captionCompactDisconnect","observeTableCaptionCompact","compact","renderCaptionTooltip","render","showPlaceholder","count","triggerLabel","textVariant","CONTROL_TEXT_VARIANT","iconSize","usesOptionIcons","choiceListUsesIcons","usesOptionSubtext","choiceListUsesSubtext","showError","errorMessage","describedBy","ariaDescribedby","join","popupStyle","left","top","transform","Math","round","zIndex","visibility","flatIndex","Host","controlWidthClass","background","ref","inputId","choiceBackgroundClassMap","role","String","ariaLabelledby","shiftKey","getElementById","lineTruncation","hasRing","trim","popover","ChoiceSearch","activeDescendant","inputRef","onValueChange","body","section","sectionIndex","divider","header","emphasis","footerActionLabel","ChoiceActionFooter","onAction","ChoiceFooter","compactSummary","useCompactSummary","contentRef","summaryMeasureRef","clearRef","onClear","textId"],"sources":["src/wc/utils/select-controller.ts","src/wc/components/Select/Select.css?tag=ds-select&encapsulation=scoped","src/wc/components/Select/Select.tsx"],"sourcesContent":["import { AnchoredPositionController } from './anchored-position-controller';\nimport {\n enabledChoiceIndexes,\n findChoiceTypeaheadMatch,\n moveChoiceIndex,\n type ChoiceOption,\n} from './choice-list';\nimport { choicePopupMinWidth, resolveChoicePopupAlignOffset } from './choice-popup-alignment';\nimport { resolveCssLengthPx } from './resolve-css-length-px';\nimport { resolveCssTimeMs } from './resolve-css-time-ms';\nimport { TOKEN_DEFAULTS } from './token-defaults';\nimport { eventIntersectsComposedBoundary } from './anchored-overlay-interaction-controller';\nimport { resolveAnchoredOverlayBoundaryRect } from './anchored-overlay-boundary';\n\ntype PopupPosition = { x: number; y: number };\n\nexport interface SelectControllerState<T extends ChoiceOption> {\n readonly host: HTMLElement;\n readonly generatedId: string;\n readonly options: T[];\n readonly searchable: boolean;\n readonly isLoading: boolean;\n readonly isDisabled: boolean;\n readonly preferredIndex: number;\n readonly popupAlign: 'start' | 'end';\n readonly boundary: HTMLElement | undefined;\n readonly anchor?: HTMLElement;\n open: boolean;\n activeIndex: number;\n searchTerm: string;\n focusRingVisible: boolean;\n position: PopupPosition;\n positionReady: boolean;\n selectOption(option: T): void;\n}\n\n/**\n * Shared single/multiple Select interaction controller.\n *\n * Decorated Stencil state and scalar/array selection remain in each component;\n * this controller owns only popup lifecycle, focus, positioning, typeahead,\n * and listbox keyboard traversal. Anchored placement is delegated to\n * `AnchoredPositionController`; only the choice-cell measurement stays here.\n */\nexport class SelectController<T extends ChoiceOption> {\n private triggerEl: HTMLButtonElement | null = null;\n private popupEl: HTMLDivElement | null = null;\n private searchEl: HTMLDsInputElement | null = null;\n private typeahead = '';\n private typeaheadTimer: ReturnType<typeof setTimeout> | null = null;\n private outsideHandler: ((event: MouseEvent) => void) | null = null;\n private readonly position: AnchoredPositionController;\n\n constructor(private readonly state: SelectControllerState<T>) {\n this.position = new AnchoredPositionController({\n getAnchor: () => this.state.anchor ?? this.triggerEl,\n getPopup: () => this.popupEl,\n measure: (trigger, popup) => {\n if (!this.state.open || !popup.isConnected || !this.state.host.contains(popup)) return null;\n\n const sectionPadding = resolveCssLengthPx(TOKEN_DEFAULTS.space050, TOKEN_DEFAULTS.space050);\n popup.style.minWidth = `max(var(--ds-choice-popup-min-inline-size, ${TOKEN_DEFAULTS.menuWidthXs}), ${this.state.anchor ? trigger.offsetWidth : choicePopupMinWidth(trigger.offsetWidth, sectionPadding)}px)`;\n\n const align = this.state.popupAlign;\n return {\n anchorRect: trigger.getBoundingClientRect(),\n popupWidth: popup.offsetWidth,\n popupHeight: popup.offsetHeight,\n side: 'bottom',\n align,\n sideOffsetPx: sectionPadding,\n alignOffsetPx: resolveChoicePopupAlignOffset({\n align,\n alignOffsetPx: 0,\n sectionInsetPx: sectionPadding,\n anchorAlignment: this.state.anchor ? 'popup-frame' : 'choice-cell',\n }),\n viewportPadPx: sectionPadding,\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n collisionRect: resolveAnchoredOverlayBoundaryRect(trigger, this.state.boundary),\n };\n },\n apply: ({ x, y }) => {\n this.state.position = { x, y };\n this.state.positionReady = true;\n },\n topLayer: true,\n });\n }\n\n get activeOptionId(): string | undefined {\n return !this.state.isLoading && this.state.activeIndex >= 0\n ? `${this.state.generatedId}-option-${this.state.activeIndex}`\n : undefined;\n }\n\n setTriggerElement = (element: HTMLButtonElement | null) => {\n this.triggerEl = element;\n };\n\n setPopupElement = (element: HTMLDivElement | null) => {\n this.popupEl = element;\n };\n\n setSearchElement = (element: HTMLDsInputElement | null) => {\n this.searchEl = element;\n };\n\n connect() {\n if (this.state.open) this.openChanged(true);\n }\n\n disconnect() {\n this.cancelPositionRetry();\n this.unbindPopupListeners();\n if (this.typeaheadTimer) clearTimeout(this.typeaheadTimer);\n }\n\n setFocus() {\n this.triggerEl?.focus();\n }\n\n optionsChanged() {\n if (!this.state.open) return;\n const enabled = enabledChoiceIndexes(this.state.options);\n if (!enabled.includes(this.state.activeIndex)) this.state.activeIndex = enabled[0] ?? -1;\n requestAnimationFrame(() => this.updatePosition());\n }\n\n loadingChanged() {\n if (this.state.open) requestAnimationFrame(() => this.updatePosition());\n }\n\n positionChanged() {\n if (this.state.open) requestAnimationFrame(() => this.updatePosition());\n }\n\n openChanged(open: boolean) {\n if (open) {\n this.bindPopupListeners();\n this.schedulePositionUpdate(() => {\n this.scrollActiveOptionIntoView();\n if (this.state.searchable) void this.searchEl?.setFocus();\n });\n return;\n }\n this.cancelPositionRetry();\n this.unbindPopupListeners();\n this.state.searchTerm = '';\n this.state.positionReady = false;\n }\n\n searchChanged() {\n this.state.activeIndex = enabledChoiceIndexes(this.state.options)[0] ?? -1;\n requestAnimationFrame(() => {\n this.updatePosition();\n this.scrollActiveOptionIntoView();\n });\n }\n\n activeIndexChanged() {\n requestAnimationFrame(() => this.scrollActiveOptionIntoView());\n }\n\n openPopup(focusVisible: boolean, edge?: 'first' | 'last') {\n if (this.state.isDisabled || (!this.state.options.length && !this.state.isLoading)) return;\n const enabled = enabledChoiceIndexes(this.state.options);\n this.state.activeIndex =\n edge === 'last'\n ? (enabled[enabled.length - 1] ?? -1)\n : this.state.preferredIndex >= 0\n ? this.state.preferredIndex\n : (enabled[0] ?? -1);\n this.state.focusRingVisible = focusVisible;\n this.state.open = true;\n }\n\n closePopup(restoreFocus = false) {\n if (!this.state.open) return;\n this.state.open = false;\n if (restoreFocus) requestAnimationFrame(() => this.triggerEl?.focus());\n }\n\n focusSearchOrTrigger() {\n requestAnimationFrame(() => {\n if (this.state.searchable) void this.searchEl?.setFocus();\n else this.triggerEl?.focus();\n });\n }\n\n handleTriggerKeyDown = (event: KeyboardEvent) => {\n if (!this.state.open) {\n if (['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(event.key)) {\n event.preventDefault();\n this.openPopup(true, event.key === 'ArrowUp' ? 'last' : 'first');\n } else if (this.isTypeaheadKey(event)) {\n event.preventDefault();\n this.openPopup(true);\n if (this.state.searchable) this.state.searchTerm = event.key;\n else this.handleTypeahead(event.key);\n }\n return;\n }\n this.handleListKeyDown(event);\n };\n\n handleListKeyDown = (event: KeyboardEvent) => {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.state.focusRingVisible = true;\n this.state.activeIndex = moveChoiceIndex(this.state.options, this.state.activeIndex, 1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.state.focusRingVisible = true;\n this.state.activeIndex = moveChoiceIndex(this.state.options, this.state.activeIndex, -1);\n break;\n case 'Home':\n event.preventDefault();\n this.state.focusRingVisible = true;\n this.state.activeIndex = enabledChoiceIndexes(this.state.options)[0] ?? -1;\n break;\n case 'End': {\n event.preventDefault();\n this.state.focusRingVisible = true;\n const enabled = enabledChoiceIndexes(this.state.options);\n this.state.activeIndex = enabled[enabled.length - 1] ?? -1;\n break;\n }\n case 'Enter':\n case ' ': {\n if (\n event.key === ' ' &&\n this.state.searchable &&\n event.target instanceof Node &&\n this.searchEl?.contains(event.target)\n )\n break;\n event.preventDefault();\n const option = this.state.options[this.state.activeIndex];\n if (option) this.state.selectOption(option);\n break;\n }\n case 'Escape':\n event.preventDefault();\n this.closePopup(true);\n break;\n case 'Tab':\n this.closePopup();\n break;\n default:\n if (!this.state.searchable && this.isTypeaheadKey(event)) {\n this.handleTypeahead(event.key);\n }\n }\n };\n\n private isTypeaheadKey(event: KeyboardEvent) {\n return event.key.length === 1 && !event.metaKey && !event.ctrlKey && !event.altKey;\n }\n\n private handleTypeahead(key: string) {\n if (this.typeaheadTimer) clearTimeout(this.typeaheadTimer);\n this.state.focusRingVisible = true;\n const normalized = key.toLocaleLowerCase();\n const repeatedCharacter =\n this.typeahead.length > 0 && [...this.typeahead].every(character => character === normalized);\n this.typeahead = repeatedCharacter ? normalized : `${this.typeahead}${normalized}`;\n const match = findChoiceTypeaheadMatch(\n this.state.options,\n this.typeahead,\n this.state.activeIndex\n );\n if (match >= 0) this.state.activeIndex = match;\n const resetMs = resolveCssTimeMs(\n TOKEN_DEFAULTS.animationDurationMedium1,\n TOKEN_DEFAULTS.animationDurationMedium1\n );\n this.typeaheadTimer = setTimeout(() => {\n this.typeahead = '';\n this.typeaheadTimer = null;\n }, resetMs);\n }\n\n private scrollActiveOptionIntoView() {\n if (!this.state.open || !this.activeOptionId) return;\n this.state.host\n .querySelector<HTMLElement>(`#${this.activeOptionId}`)\n ?.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }\n\n private bindPopupListeners() {\n this.unbindPopupListeners();\n this.outsideHandler = event => {\n if (eventIntersectsComposedBoundary(event, this.state.host)) return;\n if (this.state.anchor && eventIntersectsComposedBoundary(event, this.state.anchor)) return;\n this.closePopup();\n };\n document.addEventListener('mousedown', this.outsideHandler, true);\n this.position.observe();\n }\n\n private unbindPopupListeners() {\n if (this.outsideHandler) {\n document.removeEventListener('mousedown', this.outsideHandler, true);\n this.outsideHandler = null;\n }\n this.position.unobserve();\n }\n\n private cancelPositionRetry() {\n this.position.cancel();\n }\n\n private schedulePositionUpdate(onReady?: () => void) {\n if (!this.state.open) return;\n this.state.positionReady = false;\n this.position.schedule(onReady);\n }\n\n private updatePosition(): boolean {\n return this.position.update();\n }\n}\n","@import '../../utils/radius.css';\n@import '../../utils/choice-list.css';\n@import '../../utils/control-density-inset.css';\n@import '../../utils/control-parts.css';\n@import '../../utils/control-width.css';\n@import '../../utils/field-stack.css';\n@import '../../utils/search-control.css';\n@import '../../utils/select-trigger.css';\n@import '../../utils/table-caption-control.css';\n@import '../../utils/typography.css';\n@import '../../styles/control-elevation.css';\n\n.wrapper--error {\n --ds-interaction-border-width: var(--dimension-stroke-width-018);\n --ds-interaction-border-color: var(--color-border-bold-negative);\n}\n\n.select-popup {\n color: var(--color-foreground-secondary);\n}\n\n/* An embedding surface supplies the focus indicator instead of a second trigger ring. */\n.trigger--external-focus {\n outline: none;\n}\n\n.trigger--external-fill {\n --ds-interaction-hover: transparent;\n --ds-interaction-pressed: transparent;\n --ds-interaction-active: transparent;\n}\n\n.select-option[aria-selected='true'] .ds-choice-item__icon {\n color: var(--color-foreground-primary);\n}\n\n.select-option-row {\n position: relative;\n isolation: isolate;\n}\n\n.select-option-row__action {\n position: absolute;\n top: 50%;\n right: var(--dimension-space-050);\n z-index: var(--dimension-z-index-floating);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--dimension-radius-half);\n background: var(--color-background-transparent);\n -webkit-backdrop-filter: blur(var(--effect-blur-sm));\n backdrop-filter: blur(var(--effect-blur-sm));\n opacity: 0;\n pointer-events: none;\n transform: translateY(-50%);\n}\n\n.select-option-row:has(:focus-visible) .select-option-row__action,\n.select-option-row--action-open .select-option-row__action,\n.select-option-row--keyboard-active .select-option-row__action {\n opacity: 1;\n pointer-events: auto;\n}\n\n.select-option-row--action-open .select-option::after {\n background: var(--ds-interaction-hover);\n}\n\n.select-option__subtext-actions {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-050);\n min-inline-size: 0;\n color: var(--color-foreground-secondary);\n}\n\n.select-option__subtext-action {\n appearance: none;\n display: inline-flex;\n align-items: center;\n padding: 0;\n border: 0;\n border-radius: var(--dimension-radius-025);\n background: transparent;\n cursor: pointer;\n}\n\n.select-option__subtext-action--negative {\n --ds-text-action-foreground: var(--color-foreground-bold-negative);\n}\n\n.select-option__subtext-action-separator {\n color: var(--color-foreground-tertiary);\n pointer-events: none;\n}\n\n@media (hover: hover) and (pointer: fine) {\n .select-option-row:hover .select-option-row__action {\n opacity: 1;\n pointer-events: auto;\n }\n\n .select-option-row:hover .select-option::after {\n background: var(--ds-interaction-hover);\n }\n}\n\n@media (hover: none) {\n .select-option-row__action {\n opacity: 1;\n pointer-events: auto;\n }\n\n .select-option-row--has-action .ds-choice-item__content {\n padding-inline-end: var(--dimension-size-400);\n }\n}\n\n.error-text {\n width: 100%;\n}\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n type VNode,\n Watch,\n} from '@stencil/core';\nimport {\n controlWidthClass,\n CONTROL_SUPPORTING_TEXT_VARIANT,\n CONTROL_TEXT_VARIANT,\n DEFAULT_REQUIRED_MESSAGE,\n restoreStringArrayFormState,\n restoreStringFormState,\n setFormControlValue,\n setRepeatedFormControlValue,\n setRequiredValidity,\n type ControlInsetDepth,\n type ControlWidth,\n} from '../../utils';\nimport {\n ChoiceActionFooter,\n ChoiceFooter,\n ChoiceOptionRow,\n ChoiceSearch,\n} from '../../utils/choice-list-parts';\nimport {\n choiceBackgroundClassMap,\n choiceListUsesIcons,\n choiceListUsesSubtext,\n enabledChoiceIndexes,\n filterChoiceSections,\n flattenChoiceSections,\n resolveChoiceSections,\n type ChoiceBackground,\n type ChoiceOption,\n type ChoiceSection,\n} from '../../utils/choice-list';\nimport { SelectController } from '../../utils/select-controller';\nimport { observeTableCaptionCompact } from '../../utils/table-caption-compact';\n\nexport type SelectOption = ChoiceOption;\nexport type SelectSection = ChoiceSection;\nexport type SelectBackground = ChoiceBackground;\nexport type SelectSize = 'lg' | 'md' | 'sm' | 'xs';\nexport type SelectWidth = ControlWidth;\nexport type SelectPopupAlign = 'start' | 'end';\nexport type SelectValue = string | string[];\nexport type SelectIndicator = 'down' | 'up-down' | 'none';\n\nexport interface SelectOptionActionDetail {\n value: string;\n anchorId: string;\n originalEvent: MouseEvent;\n}\n\nexport interface SelectOptionSubtextActionDetail {\n value: string;\n actionValue: string;\n originalEvent: MouseEvent;\n}\n\nconst ICON_SIZE: Record<SelectSize, 'lg' | 'md' | 'sm' | 'xs'> = {\n lg: 'lg',\n md: 'md',\n sm: 'sm',\n xs: 'xs',\n};\n\nconst OPTION_ACTION_SIZE: Record<SelectSize, 'md' | 'sm' | 'xs'> = {\n lg: 'md',\n md: 'sm',\n sm: 'xs',\n xs: 'xs',\n};\n\nlet selectId = 0;\n\n@Component({\n tag: 'ds-select',\n styleUrl: 'Select.css',\n scoped: true,\n formAssociated: true,\n})\nexport class Select {\n @Element() el!: HTMLElement;\n @AttachInternals() internals!: ElementInternals;\n\n /** Flat choices. Assign arrays through the JavaScript property. */\n @Prop() options: SelectOption[] = [];\n /** Grouped choices; takes precedence over options. Assign through JavaScript. */\n @Prop() sections: SelectSection[] = [];\n /** Enable independent multi-value selection while keeping the popup open. */\n @Prop({ reflect: true }) multiple: boolean = false;\n /** Selected scalar or array value according to `multiple`. */\n @Prop({ mutable: true }) value: SelectValue = '';\n /** Controlled popup visibility. */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n /** Native form field name. */\n @Prop({ reflect: true }) name: string | undefined;\n /** Associates the select with a form by id when rendered outside that form. */\n @Prop({ reflect: true }) form: string | undefined;\n /** Native disabled state. */\n @Prop({ reflect: true }) disabled: boolean = false;\n /** Require one valid selected value. */\n @Prop({ reflect: true }) required: boolean = false;\n /** Validation message used when required is missing. */\n @Prop() requiredMessage: string = DEFAULT_REQUIRED_MESSAGE;\n /** Trigger text shown when no valid value is selected. */\n @Prop() placeholder: string = 'Select';\n /** Optional scalar-mode trigger text that does not change the selected option label. */\n @Prop() triggerLabel: string | undefined;\n /** Present triggerLabel with placeholder emphasis while preserving the selected value. */\n @Prop() triggerLabelPlaceholder: boolean = false;\n /** Show a supplemental notification dot beside the trigger label. */\n @Prop() dot: boolean = false;\n /** Control density. */\n @Prop() size: SelectSize = 'md';\n /** Use reduced outer geometry when nested inside a control of the same size. */\n @Prop() isInset: boolean = false;\n /** Single removes 4px overall; double removes 8px overall (xs stays single). */\n @Prop() insetDepth: ControlInsetDepth = 'single';\n /** Width fit — hug content (default) or fill the parent. */\n @Prop() width: SelectWidth = 'hug';\n /** Align the popup's choice edge to the trigger start or end edge. */\n @Prop() popupAlign: SelectPopupAlign = 'start';\n /** Explicit collision owner; otherwise the nearest data-ds-overlay-boundary ancestor is used. */\n @Prop() boundary: HTMLElement | undefined;\n /** Optional popup positioning anchor; the trigger still owns focus and accessibility. */\n @Prop() anchor: HTMLElement | undefined;\n /** Shared inactive treatment; removes interaction and form submission. */\n @Prop() isInactive: boolean = false;\n /** Replace the prefix with a loader and disable option interaction. */\n @Prop() isLoading: boolean = false;\n /** Show the selected interaction fill when a valid value exists. */\n /** Keep trigger colors neutral when a value is selected. */\n @Prop() neutralTrigger: boolean = false;\n @Prop() activeFill: boolean = false;\n /**\n * Opt into table-caption icon-only chrome below 900px. The trigger omits its\n * visible label and chevron; keep an accessible name via aria-label.\n */\n @Prop({ reflect: true }) collapseLabel: boolean = false;\n /** Always show only the prefix icon; retain an accessible name via aria-label. */\n @Prop() iconOnly: boolean = false;\n /** Show the surface-aware inset border, including focused and invalid strokes. */\n @Prop() hasBorder: boolean = true;\n /** Disable only when a containing surface owns hover and press feedback. */\n @Prop() hasInteractionFill: boolean = true;\n /** Disable only when a containing surface supplies a visible focus indicator. */\n @Prop() hasFocusRing: boolean = true;\n /** Use a pill radius on the trigger. Popup chrome stays on the menu radius. */\n @Prop() rounded: boolean = false;\n /** Optional trigger prefix icon name. */\n @Prop() icon: string | undefined;\n /** Trailing choice indicator. Use up-down for compact value steppers such as page size. */\n @Prop() indicator: SelectIndicator = 'down';\n /** Show the clear footer action when a value exists. */\n @Prop() allowClear: boolean = true;\n /** Localized clear action label. */\n @Prop() clearLabel: string = 'Clear';\n /** Localized noun displayed after the selected count in multiple mode. */\n @Prop() selectedLabel: string = 'selected';\n /** Optional text action shown in the popup footer instead of the clear action. */\n @Prop() footerActionLabel: string | undefined;\n /** Show immediate local filtering over option labels, subtext, and section headings. */\n @Prop() searchable: boolean = false;\n /** Localized search-field placeholder and accessible name. */\n @Prop() searchPlaceholder: string = 'Search';\n /** Localized empty-filter result text. */\n @Prop() noResultsText: string = 'No results found';\n /** Accessible loading status label. */\n @Prop() loadingLabel: string = 'Loading';\n /** Actual parent surface context; omit on primary and secondary surfaces. */\n @Prop() background: SelectBackground | undefined;\n /** Show invalid visual state. */\n @Prop() error: boolean = false;\n /** Error text rendered below the trigger when error is true. */\n @Prop() errorMessage: string | undefined;\n /** ID applied to the internal combobox trigger for external labels. */\n @Prop() inputId: string | undefined;\n /** Direct accessible name when no external label is available. */\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | null = null;\n /** IDs of elements that label the combobox. */\n @Prop({ attribute: 'aria-labelledby' }) ariaLabelledby: string | undefined;\n /** Additional IDs that describe the combobox. */\n @Prop({ attribute: 'aria-describedby' }) ariaDescribedby: string | undefined;\n\n /** Emitted after selection or clearing with the next scalar or array value. */\n @Event() dsChange!: EventEmitter<SelectValue>;\n /** Emitted after the footer clear action. */\n @Event() dsClear!: EventEmitter<void>;\n /** Emitted whenever popup visibility changes. */\n @Event() dsOpenChange!: EventEmitter<boolean>;\n /** Emitted when the optional popup footer action is activated. */\n @Event() dsFooterAction!: EventEmitter<void>;\n /** Emitted when an option's contextual ellipsis action is activated. */\n @Event() dsOptionAction!: EventEmitter<SelectOptionActionDetail>;\n /** Emitted when an option's supporting text action is activated. */\n @Event() dsOptionSubtextAction!: EventEmitter<SelectOptionSubtextActionDetail>;\n\n @State() private activeIndex = -1;\n @State() private searchTerm = '';\n @State() private formDisabled = false;\n @State() private position = { x: 0, y: 0 };\n @State() private positionReady = false;\n @State() private focusRingVisible = false;\n @State() private compactFooterSummary = false;\n @State() private captionCompact = false;\n\n private readonly generatedId = `ds-select-${++selectId}`;\n private readonly listboxId = `${this.generatedId}-listbox`;\n private readonly errorId = `${this.generatedId}-error`;\n private initialValue: SelectValue = '';\n private readonly controller = this.createController();\n private footerContentElement?: HTMLDivElement;\n private footerSummaryMeasureElement?: HTMLElement;\n private footerClearElement?: HTMLButtonElement;\n private footerResizeObserver?: ResizeObserver;\n private observedFooterContentElement?: HTMLDivElement;\n private footerMeasurementFrame?: number;\n private captionCompactDisconnect: (() => void) | undefined;\n private hasLoaded = false;\n\n private createController() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias -- adapter getters preserve reactive component ownership without inheritance.\n const owner = this;\n return new SelectController<SelectOption>({\n get host() {\n return owner.el;\n },\n generatedId: owner.generatedId,\n get options() {\n return owner.visibleOptions;\n },\n get searchable() {\n return owner.searchable;\n },\n get isLoading() {\n return owner.isLoading;\n },\n get isDisabled() {\n return owner.isDisabled;\n },\n get preferredIndex() {\n if (owner.multiple) return -1;\n return owner.visibleOptions.findIndex(\n option => option.value === owner.scalarValue && !option.isInactive\n );\n },\n get popupAlign() {\n return owner.popupAlign;\n },\n get boundary() {\n return owner.boundary;\n },\n get anchor() {\n return owner.anchor;\n },\n get open() {\n return owner.open;\n },\n set open(value) {\n owner.open = value;\n },\n get activeIndex() {\n return owner.activeIndex;\n },\n set activeIndex(value) {\n owner.activeIndex = value;\n },\n get searchTerm() {\n return owner.searchTerm;\n },\n set searchTerm(value) {\n owner.searchTerm = value;\n },\n get focusRingVisible() {\n return owner.focusRingVisible;\n },\n set focusRingVisible(value) {\n owner.focusRingVisible = value;\n },\n get position() {\n return owner.position;\n },\n set position(value) {\n owner.position = value;\n },\n get positionReady() {\n return owner.positionReady;\n },\n set positionReady(value) {\n owner.positionReady = value;\n },\n selectOption: option => owner.selectOption(option),\n });\n }\n\n componentWillLoad() {\n this.value = this.normalizeValueForMode(this.value);\n this.initialValue = Array.isArray(this.value) ? [...this.value] : this.value;\n this.syncFormValue();\n }\n\n componentDidLoad() {\n this.hasLoaded = true;\n this.controller.connect();\n this.observeFooterContent();\n this.syncCaptionCompactObserver();\n }\n\n connectedCallback() {\n if (!this.hasLoaded) return;\n this.controller.connect();\n this.observeFooterContent();\n this.syncCaptionCompactObserver();\n }\n\n componentDidRender() {\n this.observeFooterContent();\n this.scheduleFooterSummaryMeasurement();\n }\n\n disconnectedCallback() {\n this.controller.disconnect();\n this.footerResizeObserver?.disconnect();\n this.observedFooterContentElement = undefined;\n if (this.footerMeasurementFrame !== undefined) {\n cancelAnimationFrame(this.footerMeasurementFrame);\n this.footerMeasurementFrame = undefined;\n }\n this.disconnectCaptionCompactObserver();\n }\n\n @Watch('collapseLabel')\n onCollapseLabelChange() {\n this.syncCaptionCompactObserver();\n }\n\n @Watch('value')\n @Watch('multiple')\n @Watch('disabled')\n @Watch('isInactive')\n @Watch('required')\n @Watch('requiredMessage')\n @Watch('name')\n @Watch('options')\n @Watch('sections')\n syncFormValue() {\n if (\n (this.multiple && !Array.isArray(this.value)) ||\n (!this.multiple && Array.isArray(this.value))\n ) {\n this.value = this.normalizeValueForMode(this.value);\n }\n const inactive = this.isDisabled;\n if (this.multiple) {\n const values = this.resolvedValues;\n setRepeatedFormControlValue(this.internals, this.name, values, {\n inactive,\n state: JSON.stringify(this.value),\n });\n } else {\n const value = this.hasSelection ? this.scalarValue : '';\n setFormControlValue(this.internals, value, { inactive, state: this.scalarValue });\n }\n const missing = this.required && !inactive && !this.hasSelection;\n setRequiredValidity(this.internals, missing, this.requiredMessage);\n this.controller.optionsChanged();\n }\n\n @Watch('isLoading')\n onLoadingChange() {\n this.controller.loadingChanged();\n }\n\n @Watch('popupAlign')\n @Watch('boundary')\n @Watch('anchor')\n onPopupAlignChange() {\n this.controller.positionChanged();\n }\n\n @Watch('open')\n onOpenChange(open: boolean) {\n this.dsOpenChange.emit(open);\n this.controller.openChanged(open);\n }\n\n @Watch('searchTerm')\n onSearchTermChange() {\n this.controller.searchChanged();\n }\n\n @Watch('activeIndex')\n onActiveIndexChange() {\n this.controller.activeIndexChanged();\n }\n\n formDisabledCallback(disabled: boolean) {\n this.formDisabled = disabled;\n this.syncFormValue();\n }\n\n formResetCallback() {\n this.value = this.normalizeValueForMode(this.initialValue);\n this.closePopup();\n }\n\n formStateRestoreCallback(state: string | File | FormData | null) {\n if (!this.multiple) {\n this.value = restoreStringFormState(state);\n return;\n }\n this.value = restoreStringArrayFormState(state);\n }\n\n @Method()\n async setFocus() {\n this.controller.setFocus();\n }\n\n private get isDisabled(): boolean {\n return this.disabled || this.isInactive || this.formDisabled;\n }\n\n private normalizeValueForMode(value: SelectValue): SelectValue {\n if (this.multiple) {\n return Array.isArray(value) ? [...value] : value ? [value] : [];\n }\n return Array.isArray(value) ? (value[0] ?? '') : value;\n }\n\n private get allSections(): SelectSection[] {\n return resolveChoiceSections(this.options, this.sections);\n }\n\n private get allOptions(): SelectOption[] {\n return flattenChoiceSections(this.allSections);\n }\n\n private get visibleSections(): SelectSection[] {\n return this.searchable\n ? filterChoiceSections(this.allSections, this.searchTerm)\n : this.allSections;\n }\n\n private get visibleOptions(): SelectOption[] {\n return flattenChoiceSections(this.visibleSections);\n }\n\n private get scalarValue(): string {\n return typeof this.value === 'string' ? this.value : '';\n }\n\n private get resolvedValues(): string[] {\n if (!this.multiple || !Array.isArray(this.value)) return [];\n const valid = new Set(this.allOptions.map(option => option.value));\n return [...new Set(this.value.filter(value => valid.has(value)))];\n }\n\n private get selectedOption(): SelectOption | undefined {\n if (this.multiple) return undefined;\n return this.allOptions.find(option => option.value === this.scalarValue);\n }\n\n private get hasSelection(): boolean {\n return this.multiple ? this.resolvedValues.length > 0 : Boolean(this.selectedOption);\n }\n\n private get activeOptionId(): string | undefined {\n return this.controller.activeOptionId;\n }\n\n private get popupRole(): 'listbox' | 'grid' {\n return this.allOptions.some(option => Boolean(option.action)) ? 'grid' : 'listbox';\n }\n\n private observeFooterContent() {\n const content =\n this.open && this.multiple && this.hasSelection ? this.footerContentElement : undefined;\n if (!content?.isConnected) {\n this.footerResizeObserver?.disconnect();\n this.observedFooterContentElement = undefined;\n return;\n }\n if (this.observedFooterContentElement === content) return;\n\n this.footerResizeObserver?.disconnect();\n if (typeof ResizeObserver !== 'undefined') {\n this.footerResizeObserver = new ResizeObserver(() => this.scheduleFooterSummaryMeasurement());\n this.footerResizeObserver.observe(content);\n }\n this.observedFooterContentElement = content;\n }\n\n private scheduleFooterSummaryMeasurement() {\n if (\n !this.open ||\n !this.multiple ||\n !this.hasSelection ||\n this.footerMeasurementFrame !== undefined\n ) {\n return;\n }\n this.footerMeasurementFrame = requestAnimationFrame(() => {\n this.footerMeasurementFrame = undefined;\n this.measureFooterSummary();\n });\n }\n\n private measureFooterSummary() {\n const content = this.footerContentElement;\n const summary = this.footerSummaryMeasureElement;\n const clear = this.footerClearElement;\n if (!content?.isConnected || !summary?.isConnected || !clear?.isConnected) return;\n\n const styles = getComputedStyle(content);\n const innerWidth =\n content.clientWidth -\n Number.parseFloat(styles.paddingInlineStart || '0') -\n Number.parseFloat(styles.paddingInlineEnd || '0');\n const requiredWidth =\n summary.getBoundingClientRect().width +\n clear.getBoundingClientRect().width +\n Number.parseFloat(styles.columnGap || '0');\n const nextCompact = requiredWidth > innerWidth + 0.5;\n if (nextCompact !== this.compactFooterSummary) {\n this.compactFooterSummary = nextCompact;\n }\n }\n\n private closePopup(restoreFocus = false) {\n this.controller.closePopup(restoreFocus);\n }\n\n private openPopup(focusVisible: boolean, edge?: 'first' | 'last') {\n this.controller.openPopup(focusVisible, edge);\n }\n\n private selectOption(option: SelectOption) {\n if (option.isInactive || this.isLoading) return;\n if (this.multiple) {\n const current = this.resolvedValues;\n const next = current.includes(option.value)\n ? current.filter(value => value !== option.value)\n : [...current, option.value];\n this.value = next;\n this.dsChange.emit([...next]);\n return;\n }\n this.value = option.value;\n this.dsChange.emit(option.value);\n this.controller.closePopup(true);\n }\n\n private clearSelection = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n this.value = this.multiple ? [] : '';\n this.dsChange.emit(this.multiple ? [] : '');\n this.dsClear.emit();\n if (!this.multiple) {\n const enabled = enabledChoiceIndexes(this.visibleOptions);\n this.activeIndex = enabled[0] ?? -1;\n }\n this.controller.focusSearchOrTrigger();\n };\n\n private activateFooterAction = (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n this.dsFooterAction.emit();\n this.closePopup();\n };\n\n private readonly handleListKeyDown = this.controller.handleListKeyDown;\n private readonly handleTriggerKeyDown = this.controller.handleTriggerKeyDown;\n\n private renderOption(\n option: SelectOption,\n index: number,\n usesIcons: boolean,\n usesSubtext: boolean\n ) {\n const selected = this.multiple\n ? this.resolvedValues.includes(option.value)\n : option.value === this.scalarValue;\n const active = index === this.activeIndex;\n const actionId = `${this.generatedId}-option-action-${index}`;\n return (\n <ChoiceOptionRow\n size={this.size}\n id={`${this.generatedId}-option-${index}`}\n option={option}\n selected={selected}\n active={active}\n focusRingVisible={this.focusRingVisible}\n usesSubtext={usesSubtext}\n actionOpen={option.action?.surfaceOpen ?? option.action?.expanded}\n popupRole={this.popupRole}\n leading={\n this.multiple ? (\n <span\n class=\"ds-choice-item__icon ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-checkbox\n class=\"select-option__checkbox\"\n label=\"\"\n size={this.size}\n checked={selected}\n presentation\n />\n </span>\n ) : usesIcons && option.icon ? (\n <span\n class=\"ds-choice-item__icon ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-icon name={option.icon} size={this.size} color=\"inherit\" />\n </span>\n ) : undefined\n }\n supporting={\n option.subtextActions?.length ? (\n <span class=\"ds-choice-item__subtext ds-control-label-box select-option__subtext-actions\">\n {option.subtextActions.map((action, actionIndex) => [\n actionIndex > 0 ? (\n <ds-text\n class=\"select-option__subtext-action-separator\"\n as=\"span\"\n variant={CONTROL_SUPPORTING_TEXT_VARIANT[this.size]}\n color=\"inherit\"\n aria-hidden=\"true\"\n >\n ·\n </ds-text>\n ) : null,\n <button\n type=\"button\"\n class={{\n 'select-option__subtext-action': true,\n 'select-option__subtext-action--negative': action.tone === 'negative',\n 'ds-text-action': true,\n 'ds-focus-ring': true,\n }}\n onKeyDown={(event: KeyboardEvent) => event.stopPropagation()}\n onClick={(event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n this.dsOptionSubtextAction.emit({\n value: option.value,\n actionValue: action.value,\n originalEvent: event,\n });\n }}\n >\n <ds-text\n as=\"span\"\n variant={CONTROL_SUPPORTING_TEXT_VARIANT[this.size]}\n color=\"inherit\"\n >\n {action.label}\n </ds-text>\n </button>,\n ])}\n </span>\n ) : undefined\n }\n action={\n option.action ? (\n <ds-tooltip label={option.action.label} side=\"left\" size=\"sm\">\n <ds-button-unfilled\n id={actionId}\n variant=\"icon\"\n size={OPTION_ACTION_SIZE[this.size]}\n icon=\"Ellipses\"\n rounded\n hasBorder={false}\n activeFill={false}\n ariaLabel={option.action.label}\n haspopup=\"menu\"\n controls={option.action.controls}\n expanded={option.action.expanded}\n surfaceOpen={option.action.surfaceOpen}\n onKeyDown={event => {\n event.stopPropagation();\n if (event.key === 'Escape' || event.key === 'ArrowLeft') {\n event.preventDefault();\n this.controller.focusSearchOrTrigger();\n }\n }}\n onDsClick={(event: CustomEvent<MouseEvent>) => {\n event.stopPropagation();\n this.dsOptionAction.emit({\n value: option.value,\n anchorId: actionId,\n originalEvent: event.detail,\n });\n }}\n />\n </ds-tooltip>\n ) : undefined\n }\n onHover={() => {\n this.focusRingVisible = false;\n this.activeIndex = index;\n }}\n onSelect={() => this.selectOption(option)}\n />\n );\n }\n\n private get captionIconOnly(): boolean {\n return (\n (this.iconOnly || (this.collapseLabel && this.captionCompact)) &&\n Boolean(this.icon || this.isLoading)\n );\n }\n\n private get doubleInset(): boolean {\n return this.isInset && this.insetDepth === 'double' && this.size !== 'xs';\n }\n\n private syncCaptionCompactObserver(): void {\n this.disconnectCaptionCompactObserver();\n if (!this.collapseLabel) {\n if (this.captionCompact) this.captionCompact = false;\n return;\n }\n this.captionCompactDisconnect = observeTableCaptionCompact(this.el, compact => {\n if (this.captionCompact !== compact) this.captionCompact = compact;\n });\n }\n\n private disconnectCaptionCompactObserver(): void {\n this.captionCompactDisconnect?.();\n this.captionCompactDisconnect = undefined;\n }\n\n private renderCaptionTooltip(trigger: VNode, label: string): VNode {\n if (!this.collapseLabel) return trigger;\n return (\n <ds-tooltip label={label} side=\"top\" size=\"sm\">\n {trigger}\n </ds-tooltip>\n );\n }\n\n render() {\n const inactive = this.isDisabled;\n const showPlaceholder = !this.hasSelection;\n const count = this.resolvedValues.length;\n const label = this.multiple\n ? `${this.placeholder}${count > 0 ? ` · ${count}` : ''}`\n : showPlaceholder\n ? this.placeholder\n : (this.triggerLabel ?? this.selectedOption?.label);\n const textVariant = CONTROL_TEXT_VARIANT[this.size];\n const iconSize = ICON_SIZE[this.size];\n const usesOptionIcons = !this.multiple && choiceListUsesIcons(this.allOptions);\n const usesOptionSubtext = choiceListUsesSubtext(this.allOptions);\n const showError = this.error && Boolean(this.errorMessage);\n const describedBy =\n [this.ariaDescribedby, showError ? this.errorId : undefined].filter(Boolean).join(' ') ||\n undefined;\n const popupStyle = {\n position: 'fixed',\n left: '0',\n top: '0',\n transform: `translate(${Math.round(this.position.x)}px, ${Math.round(this.position.y)}px)`,\n zIndex: 'var(--dimension-z-index-floating)',\n visibility: this.positionReady ? 'visible' : 'hidden',\n };\n let flatIndex = 0;\n\n return (\n <Host\n class={{\n 'select-host': true,\n 'ds-select-trigger-host': true,\n 'select-host--multiple': this.multiple,\n 'ds-field-stack': true,\n 'ds-field-stack--supporting-inset': !this.hasBorder,\n 'ds-control-inactive': inactive,\n [`ds-control--${this.size}`]: true,\n 'ds-table-caption-control': this.collapseLabel,\n 'ds-table-caption-control--compact': this.captionIconOnly,\n ...controlWidthClass(this.width),\n [`select-host--background-${this.background}`]: !!this.background,\n [`ds-select-trigger-host--background-${this.background}`]: !!this.background,\n }}\n >\n {this.renderCaptionTooltip(\n <button\n ref={element => {\n this.controller.setTriggerElement((element as HTMLButtonElement) ?? null);\n }}\n id={this.inputId ?? this.generatedId}\n type=\"button\"\n class={{\n trigger: true,\n 'ds-control-frame': true,\n 'ds-focus-ring-inset': this.hasFocusRing,\n 'trigger--external-focus': !this.hasFocusRing,\n // The shared overlay also carries borders/focus; suppress only its wash.\n 'ds-interaction-fill': this.hasInteractionFill || this.hasBorder || this.hasFocusRing,\n 'trigger--external-fill': !this.hasInteractionFill,\n 'ds-interaction-fill--selected':\n this.hasInteractionFill && !inactive && this.activeFill && this.hasSelection,\n 'trigger--expanded': !inactive && this.open,\n 'ds-interaction-fill--surface-open':\n this.hasInteractionFill && !inactive && this.open,\n 'trigger--bordered': this.hasBorder,\n 'trigger--rounded': this.rounded,\n 'trigger--placeholder': showPlaceholder && !this.multiple,\n 'trigger--has-value': this.hasSelection && !this.neutralTrigger,\n 'trigger--label-placeholder':\n !this.multiple && Boolean(this.triggerLabel) && this.triggerLabelPlaceholder,\n 'wrapper--error': this.hasBorder && this.error,\n [`ds-control--${this.size}`]: true,\n 'ds-control--inset': this.isInset && !this.doubleInset,\n 'ds-control--inset-double': this.doubleInset,\n ...choiceBackgroundClassMap(this.background),\n }}\n disabled={inactive}\n role=\"combobox\"\n aria-haspopup={this.popupRole}\n aria-expanded={String(this.open)}\n aria-controls={this.open ? this.listboxId : undefined}\n aria-activedescendant={this.open && !this.searchable ? this.activeOptionId : undefined}\n aria-label={this.ariaLabel ?? (this.captionIconOnly ? label : undefined)}\n aria-labelledby={this.ariaLabelledby}\n aria-describedby={describedBy}\n aria-invalid={this.error ? 'true' : undefined}\n aria-required={this.required || undefined}\n aria-busy={this.isLoading ? 'true' : undefined}\n onClick={() => (this.open ? this.closePopup() : this.openPopup(false))}\n onKeyDown={event => {\n const action = this.visibleOptions[this.activeIndex]?.action;\n if (\n this.open &&\n action &&\n (event.key === 'ArrowRight' || (event.key === 'F10' && event.shiftKey))\n ) {\n event.preventDefault();\n document\n .getElementById(`${this.generatedId}-option-action-${this.activeIndex}`)\n ?.querySelector<HTMLElement>('button')\n ?.focus();\n return;\n }\n this.handleTriggerKeyDown(event);\n }}\n >\n {(this.icon || this.isLoading) && (\n <span\n class=\"trigger__prefix ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n {this.isLoading ? (\n <ds-loader size={iconSize} color=\"inherit\" />\n ) : (\n <ds-icon name={this.icon} size={iconSize} color=\"inherit\" />\n )}\n </span>\n )}\n {this.captionIconOnly ? null : (\n <span\n class={{\n 'trigger__label-box': true,\n 'ds-interaction-fill__content': true,\n }}\n >\n <span\n class={{\n 'trigger__label-content': true,\n 'ds-control-label-box': true,\n 'ds-control-label-dot': this.dot,\n 'trigger__label-content--dot': this.dot,\n }}\n >\n <ds-text\n class=\"trigger__label\"\n as=\"span\"\n variant={textVariant}\n color=\"inherit\"\n lineTruncation={1}\n >\n {label}\n </ds-text>\n {this.dot && (\n <ds-badge\n class=\"trigger__dot ds-control-label-dot__badge\"\n variant=\"dot\"\n hasRing={false}\n label=\"\"\n aria-hidden=\"true\"\n />\n )}\n </span>\n </span>\n )}\n {this.captionIconOnly || this.indicator === 'none' ? null : (\n <span\n class=\"trigger__chevron ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-icon\n name={this.indicator === 'up-down' ? 'ChevronUpDown' : 'ChevronDown'}\n size={iconSize}\n color=\"inherit\"\n />\n </span>\n )}\n </button>,\n this.captionIconOnly ? this.ariaLabel?.trim() || this.placeholder : ''\n )}\n\n {this.open && (\n <div\n popover=\"manual\"\n ref={element => {\n this.controller.setPopupElement((element as HTMLDivElement) ?? null);\n }}\n class=\"select-popup ds-choice-popup\"\n style={popupStyle}\n >\n {this.searchable && (\n <ChoiceSearch\n size={this.size}\n value={this.searchTerm}\n placeholder={this.searchPlaceholder}\n controls={this.listboxId}\n activeDescendant={this.activeOptionId}\n inputRef={this.controller.setSearchElement}\n clearLabel={this.clearLabel}\n onValueChange={value => {\n this.searchTerm = value;\n }}\n onKeyDown={event => this.handleListKeyDown(event)}\n />\n )}\n <div\n id={this.listboxId}\n class=\"ds-choice-list\"\n role={this.popupRole}\n aria-multiselectable={this.multiple ? 'true' : undefined}\n aria-label={this.ariaLabel ?? this.placeholder}\n aria-busy={this.isLoading ? 'true' : undefined}\n >\n {this.isLoading ? (\n <div\n class=\"ds-choice-loading ds-empty-region\"\n role={this.popupRole === 'grid' ? 'row' : 'option'}\n aria-selected=\"false\"\n aria-disabled=\"true\"\n aria-label={this.loadingLabel}\n aria-live=\"polite\"\n >\n {this.popupRole === 'grid' ? (\n <span role=\"gridcell\">\n <ds-loader size={this.size} color=\"inherit\" />\n </span>\n ) : (\n <ds-loader size={this.size} color=\"inherit\" />\n )}\n </div>\n ) : this.visibleOptions.length === 0 ? (\n <div\n class=\"ds-choice-empty ds-empty-region\"\n role={this.popupRole === 'grid' ? 'row' : 'option'}\n aria-selected=\"false\"\n aria-disabled=\"true\"\n aria-label={this.noResultsText}\n aria-live=\"polite\"\n >\n {this.popupRole === 'grid' ? (\n <span role=\"gridcell\">\n <ds-empty-state body={this.noResultsText} />\n </span>\n ) : (\n <ds-empty-state body={this.noResultsText} />\n )}\n </div>\n ) : (\n this.visibleSections.map((section, sectionIndex) => (\n <div\n class={{\n 'ds-choice-section': true,\n 'ds-chrome-column': true,\n 'ds-chrome-space--sm': true,\n 'ds-choice-section--divided': !!section.divider,\n 'ds-choice-section--headed-after-first':\n sectionIndex > 0 && Boolean(section.header),\n }}\n role={\n this.popupRole === 'grid' ? 'rowgroup' : section.header ? 'group' : undefined\n }\n aria-label={section.header}\n >\n {section.header && this.popupRole === 'grid' ? (\n <ds-text\n class={`ds-choice-section__header ds-control-section-heading ds-control--${this.size}`}\n as=\"span\"\n variant={CONTROL_SUPPORTING_TEXT_VARIANT[this.size]}\n emphasis\n color=\"primary\"\n role=\"row\"\n >\n <span class=\"ds-choice-section__header-label\" role=\"gridcell\">\n {section.header}\n </span>\n </ds-text>\n ) : section.header ? (\n <ds-text\n class={`ds-choice-section__header ds-control-section-heading ds-control--${this.size}`}\n as=\"span\"\n variant={CONTROL_SUPPORTING_TEXT_VARIANT[this.size]}\n emphasis\n color=\"primary\"\n aria-hidden=\"true\"\n >\n <span class=\"ds-choice-section__header-label\">{section.header}</span>\n </ds-text>\n ) : null}\n {section.options.map(option =>\n this.renderOption(option, flatIndex++, usesOptionIcons, usesOptionSubtext)\n )}\n </div>\n ))\n )}\n </div>\n {this.footerActionLabel && !this.isLoading ? (\n <ChoiceActionFooter\n size={this.size}\n label={this.footerActionLabel}\n onAction={this.activateFooterAction}\n />\n ) : this.allowClear && this.hasSelection && !this.isLoading ? (\n <ChoiceFooter\n size={this.size}\n summary={this.multiple ? `${count} ${this.selectedLabel}` : undefined}\n compactSummary={this.multiple ? String(count) : undefined}\n useCompactSummary={this.compactFooterSummary}\n contentRef={element => {\n this.footerContentElement = element ?? undefined;\n }}\n summaryMeasureRef={element => {\n this.footerSummaryMeasureElement = element ?? undefined;\n }}\n clearRef={element => {\n this.footerClearElement = element ?? undefined;\n }}\n clearLabel={this.clearLabel}\n onClear={this.clearSelection}\n />\n ) : null}\n </div>\n )}\n\n {showError && (\n <ds-text\n class=\"error-text\"\n as=\"div\"\n variant=\"text-body-small\"\n color=\"negative\"\n textId={this.errorId}\n role=\"alert\"\n >\n {this.errorMessage}\n </ds-text>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"k7BA4CaA,EASX,WAAAC,CAA6BC,GAAAC,KAAAD,QARrBC,KAAAC,UAAsC,KACtCD,KAAAE,QAAiC,KACjCF,KAAAG,SAAsC,KACtCH,KAAAI,UAAY,GACZJ,KAAAK,eAAuD,KACvDL,KAAAM,eAAuD,KA+C/DN,KAAAO,kBAAqBC,IACnBR,KAAKC,UAAYO,CAAO,EAG1BR,KAAAS,gBAAmBD,IACjBR,KAAKE,QAAUM,CAAO,EAGxBR,KAAAU,iBAAoBF,IAClBR,KAAKG,SAAWK,CAAO,EAqFzBR,KAAAW,qBAAwBC,IACtB,IAAKZ,KAAKD,MAAMc,KAAM,CACpB,GAAI,CAAC,YAAa,UAAW,QAAS,KAAKC,SAASF,EAAMG,KAAM,CAC9DH,EAAMI,iBACNhB,KAAKiB,UAAU,KAAML,EAAMG,MAAQ,UAAY,OAAS,Q,MACnD,GAAIf,KAAKkB,eAAeN,GAAQ,CACrCA,EAAMI,iBACNhB,KAAKiB,UAAU,MACf,GAAIjB,KAAKD,MAAMoB,WAAYnB,KAAKD,MAAMqB,WAAaR,EAAMG,SACpDf,KAAKqB,gBAAgBT,EAAMG,I,CAElC,M,CAEFf,KAAKsB,kBAAkBV,EAAM,EAG/BZ,KAAAsB,kBAAqBV,IACnB,OAAQA,EAAMG,KACZ,IAAK,YACHH,EAAMI,iBACNhB,KAAKD,MAAMwB,iBAAmB,KAC9BvB,KAAKD,MAAMyB,YAAcC,EAAgBzB,KAAKD,MAAM2B,QAAS1B,KAAKD,MAAMyB,YAAa,GACrF,MACF,IAAK,UACHZ,EAAMI,iBACNhB,KAAKD,MAAMwB,iBAAmB,KAC9BvB,KAAKD,MAAMyB,YAAcC,EAAgBzB,KAAKD,MAAM2B,QAAS1B,KAAKD,MAAMyB,aAAa,GACrF,MACF,IAAK,OACHZ,EAAMI,iBACNhB,KAAKD,MAAMwB,iBAAmB,KAC9BvB,KAAKD,MAAMyB,YAAcG,EAAqB3B,KAAKD,MAAM2B,SAAS,KAAM,EACxE,MACF,IAAK,MAAO,CACVd,EAAMI,iBACNhB,KAAKD,MAAMwB,iBAAmB,KAC9B,MAAMK,EAAUD,EAAqB3B,KAAKD,MAAM2B,SAChD1B,KAAKD,MAAMyB,YAAcI,EAAQA,EAAQC,OAAS,KAAM,EACxD,K,CAEF,IAAK,QACL,IAAK,IAAK,CACR,GACEjB,EAAMG,MAAQ,KACdf,KAAKD,MAAMoB,YACXP,EAAMkB,kBAAkBC,MACxB/B,KAAKG,UAAU6B,SAASpB,EAAMkB,QAE9B,MACFlB,EAAMI,iBACN,MAAMiB,EAASjC,KAAKD,MAAM2B,QAAQ1B,KAAKD,MAAMyB,aAC7C,GAAIS,EAAQjC,KAAKD,MAAMmC,aAAaD,GACpC,K,CAEF,IAAK,SACHrB,EAAMI,iBACNhB,KAAKmC,WAAW,MAChB,MACF,IAAK,MACHnC,KAAKmC,aACL,MACF,QACE,IAAKnC,KAAKD,MAAMoB,YAAcnB,KAAKkB,eAAeN,GAAQ,CACxDZ,KAAKqB,gBAAgBT,EAAMG,I,IAxMjCf,KAAKoC,SAAW,IAAIC,EAA2B,CAC7CC,UAAW,IAAMtC,KAAKD,MAAMwC,QAAUvC,KAAKC,UAC3CuC,SAAU,IAAMxC,KAAKE,QACrBuC,QAAS,CAACC,EAASC,KACjB,IAAK3C,KAAKD,MAAMc,OAAS8B,EAAMC,cAAgB5C,KAAKD,MAAM8C,KAAKb,SAASW,GAAQ,OAAO,KAEvF,MAAMG,EAAiBC,EAAmBC,EAAeC,SAAUD,EAAeC,UAClFN,EAAMO,MAAMC,SAAW,8CAA8CH,EAAeI,iBAAiBpD,KAAKD,MAAMwC,OAASG,EAAQW,YAAcC,EAAoBZ,EAAQW,YAAaP,QAExL,MAAMS,EAAQvD,KAAKD,MAAMyD,WACzB,MAAO,CACLC,WAAYf,EAAQgB,wBACpBC,WAAYhB,EAAMU,YAClBO,YAAajB,EAAMkB,aACnBC,KAAM,SACNP,QACAQ,aAAcjB,EACdkB,cAAeC,EAA8B,CAC3CV,QACAS,cAAe,EACfE,eAAgBpB,EAChBqB,gBAAiBnE,KAAKD,MAAMwC,OAAS,cAAgB,gBAEvD6B,cAAetB,EACfuB,cAAeC,OAAOC,WACtBC,eAAgBF,OAAOG,YACvBC,cAAeC,EAAmCjC,EAAS1C,KAAKD,MAAM6E,UACvE,EAEHC,MAAO,EAAGC,IAAGC,QACX/E,KAAKD,MAAMqC,SAAW,CAAE0C,IAAGC,KAC3B/E,KAAKD,MAAMiF,cAAgB,IAAI,EAEjCC,SAAU,M,CAId,kBAAIC,GACF,OAAQlF,KAAKD,MAAMoF,WAAanF,KAAKD,MAAMyB,aAAe,EACtD,GAAGxB,KAAKD,MAAMqF,sBAAsBpF,KAAKD,MAAMyB,cAC/C6D,S,CAeN,OAAAC,GACE,GAAItF,KAAKD,MAAMc,KAAMb,KAAKuF,YAAY,K,CAGxC,UAAAC,GACExF,KAAKyF,sBACLzF,KAAK0F,uBACL,GAAI1F,KAAKK,eAAgBsF,aAAa3F,KAAKK,e,CAG7C,QAAAuF,GACE5F,KAAKC,WAAW4F,O,CAGlB,cAAAC,GACE,IAAK9F,KAAKD,MAAMc,KAAM,OACtB,MAAMe,EAAUD,EAAqB3B,KAAKD,MAAM2B,SAChD,IAAKE,EAAQd,SAASd,KAAKD,MAAMyB,aAAcxB,KAAKD,MAAMyB,YAAcI,EAAQ,KAAM,EACtFmE,uBAAsB,IAAM/F,KAAKgG,kB,CAGnC,cAAAC,GACE,GAAIjG,KAAKD,MAAMc,KAAMkF,uBAAsB,IAAM/F,KAAKgG,kB,CAGxD,eAAAE,GACE,GAAIlG,KAAKD,MAAMc,KAAMkF,uBAAsB,IAAM/F,KAAKgG,kB,CAGxD,WAAAT,CAAY1E,GACV,GAAIA,EAAM,CACRb,KAAKmG,qBACLnG,KAAKoG,wBAAuB,KAC1BpG,KAAKqG,6BACL,GAAIrG,KAAKD,MAAMoB,gBAAiBnB,KAAKG,UAAUyF,UAAU,IAE3D,M,CAEF5F,KAAKyF,sBACLzF,KAAK0F,uBACL1F,KAAKD,MAAMqB,WAAa,GACxBpB,KAAKD,MAAMiF,cAAgB,K,CAG7B,aAAAsB,GACEtG,KAAKD,MAAMyB,YAAcG,EAAqB3B,KAAKD,MAAM2B,SAAS,KAAM,EACxEqE,uBAAsB,KACpB/F,KAAKgG,iBACLhG,KAAKqG,4BAA4B,G,CAIrC,kBAAAE,GACER,uBAAsB,IAAM/F,KAAKqG,8B,CAGnC,SAAApF,CAAUuF,EAAuBC,GAC/B,GAAIzG,KAAKD,MAAM2G,aAAgB1G,KAAKD,MAAM2B,QAAQG,SAAW7B,KAAKD,MAAMoF,UAAY,OACpF,MAAMvD,EAAUD,EAAqB3B,KAAKD,MAAM2B,SAChD1B,KAAKD,MAAMyB,YACTiF,IAAS,OACJ7E,EAAQA,EAAQC,OAAS,KAAM,EAChC7B,KAAKD,MAAM4G,gBAAkB,EAC3B3G,KAAKD,MAAM4G,eACV/E,EAAQ,KAAM,EACvB5B,KAAKD,MAAMwB,iBAAmBiF,EAC9BxG,KAAKD,MAAMc,KAAO,I,CAGpB,UAAAsB,CAAWyE,EAAe,OACxB,IAAK5G,KAAKD,MAAMc,KAAM,OACtBb,KAAKD,MAAMc,KAAO,MAClB,GAAI+F,EAAcb,uBAAsB,IAAM/F,KAAKC,WAAW4F,S,CAGhE,oBAAAgB,GACEd,uBAAsB,KACpB,GAAI/F,KAAKD,MAAMoB,gBAAiBnB,KAAKG,UAAUyF,gBAC1C5F,KAAKC,WAAW4F,OAAO,G,CAwExB,cAAA3E,CAAeN,GACrB,OAAOA,EAAMG,IAAIc,SAAW,IAAMjB,EAAMkG,UAAYlG,EAAMmG,UAAYnG,EAAMoG,M,CAGtE,eAAA3F,CAAgBN,GACtB,GAAIf,KAAKK,eAAgBsF,aAAa3F,KAAKK,gBAC3CL,KAAKD,MAAMwB,iBAAmB,KAC9B,MAAM0F,EAAalG,EAAImG,oBACvB,MAAMC,EACJnH,KAAKI,UAAUyB,OAAS,GAAK,IAAI7B,KAAKI,WAAWgH,OAAMC,GAAaA,IAAcJ,IACpFjH,KAAKI,UAAY+G,EAAoBF,EAAa,GAAGjH,KAAKI,YAAY6G,IACtE,MAAMK,EAAQC,EACZvH,KAAKD,MAAM2B,QACX1B,KAAKI,UACLJ,KAAKD,MAAMyB,aAEb,GAAI8F,GAAS,EAAGtH,KAAKD,MAAMyB,YAAc8F,EACzC,MAAME,EAAUC,EACdzE,EAAe0E,yBACf1E,EAAe0E,0BAEjB1H,KAAKK,eAAiBsH,YAAW,KAC/B3H,KAAKI,UAAY,GACjBJ,KAAKK,eAAiB,IAAI,GACzBmH,E,CAGG,0BAAAnB,GACN,IAAKrG,KAAKD,MAAMc,OAASb,KAAKkF,eAAgB,OAC9ClF,KAAKD,MAAM8C,KACR+E,cAA2B,IAAI5H,KAAKkF,mBACnC2C,eAAe,CAAEC,MAAO,UAAWC,OAAQ,W,CAGzC,kBAAA5B,GACNnG,KAAK0F,uBACL1F,KAAKM,eAAiBM,IACpB,GAAIoH,EAAgCpH,EAAOZ,KAAKD,MAAM8C,MAAO,OAC7D,GAAI7C,KAAKD,MAAMwC,QAAUyF,EAAgCpH,EAAOZ,KAAKD,MAAMwC,QAAS,OACpFvC,KAAKmC,YAAY,EAEnB8F,SAASC,iBAAiB,YAAalI,KAAKM,eAAgB,MAC5DN,KAAKoC,SAAS+F,S,CAGR,oBAAAzC,GACN,GAAI1F,KAAKM,eAAgB,CACvB2H,SAASG,oBAAoB,YAAapI,KAAKM,eAAgB,MAC/DN,KAAKM,eAAiB,I,CAExBN,KAAKoC,SAASiG,W,CAGR,mBAAA5C,GACNzF,KAAKoC,SAASkG,Q,CAGR,sBAAAlC,CAAuBmC,GAC7B,IAAKvI,KAAKD,MAAMc,KAAM,OACtBb,KAAKD,MAAMiF,cAAgB,MAC3BhF,KAAKoC,SAASoG,SAASD,E,CAGjB,cAAAvC,GACN,OAAOhG,KAAKoC,SAASqG,Q,ECnUzB,MAAMC,EAAY,IAAM,m2xCCqExB,MAAMC,EAA2D,CAC/DC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MAGN,MAAMC,EAA6D,CACjEJ,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MAGN,IAAIE,EAAW,E,MAQFC,EAAMC,EAAA,MAAAD,UAAAE,EANnB,WAAAtJ,CAAAuJ,G,4VAWUrJ,KAAA0B,QAA0B,GAE1B1B,KAAAsJ,SAA4B,GAEXtJ,KAAAuJ,SAAoB,MAEpBvJ,KAAAwJ,MAAqB,GAENxJ,KAAAa,KAAgB,MAM/Bb,KAAAyJ,SAAoB,MAEpBzJ,KAAA0J,SAAoB,MAErC1J,KAAA2J,gBAA0BC,EAE1B5J,KAAA6J,YAAsB,SAItB7J,KAAA8J,wBAAmC,MAEnC9J,KAAA+J,IAAe,MAEf/J,KAAAgK,KAAmB,KAEnBhK,KAAAiK,QAAmB,MAEnBjK,KAAAkK,WAAgC,SAEhClK,KAAAmK,MAAqB,MAErBnK,KAAAwD,WAA+B,QAM/BxD,KAAAoK,WAAsB,MAEtBpK,KAAAmF,UAAqB,MAGrBnF,KAAAqK,eAA0B,MAC1BrK,KAAAsK,WAAsB,MAKLtK,KAAAuK,cAAyB,MAE1CvK,KAAAwK,SAAoB,MAEpBxK,KAAAyK,UAAqB,KAErBzK,KAAA0K,mBAA8B,KAE9B1K,KAAA2K,aAAwB,KAExB3K,KAAA4K,QAAmB,MAInB5K,KAAA6K,UAA6B,OAE7B7K,KAAA8K,WAAsB,KAEtB9K,KAAA+K,WAAqB,QAErB/K,KAAAgL,cAAwB,WAIxBhL,KAAAmB,WAAsB,MAEtBnB,KAAAiL,kBAA4B,SAE5BjL,KAAAkL,cAAwB,mBAExBlL,KAAAmL,aAAuB,UAIvBnL,KAAAoL,MAAiB,MAMUpL,KAAAqL,UAA2B,KAmB7CrL,KAAAwB,aAAc,EACdxB,KAAAoB,WAAa,GACbpB,KAAAsL,aAAe,MACftL,KAAAoC,SAAW,CAAE0C,EAAG,EAAGC,EAAG,GACtB/E,KAAAgF,cAAgB,MAChBhF,KAAAuB,iBAAmB,MACnBvB,KAAAuL,qBAAuB,MACvBvL,KAAAwL,eAAiB,MAEjBxL,KAAAoF,YAAc,eAAe6D,IAC7BjJ,KAAAyL,UAAY,GAAGzL,KAAKoF,sBACpBpF,KAAA0L,QAAU,GAAG1L,KAAKoF,oBAC3BpF,KAAA2L,aAA4B,GACnB3L,KAAA4L,WAAa5L,KAAK6L,mBAQ3B7L,KAAA8L,UAAY,MA+UZ9L,KAAA+L,eAAkBnL,IACxBA,EAAMI,iBACNJ,EAAMoL,kBACNhM,KAAKwJ,MAAQxJ,KAAKuJ,SAAW,GAAK,GAClCvJ,KAAKiM,SAASC,KAAKlM,KAAKuJ,SAAW,GAAK,IACxCvJ,KAAKmM,QAAQD,OACb,IAAKlM,KAAKuJ,SAAU,CAClB,MAAM3H,EAAUD,EAAqB3B,KAAKoM,gBAC1CpM,KAAKwB,YAAcI,EAAQ,KAAM,C,CAEnC5B,KAAK4L,WAAW/E,sBAAsB,EAGhC7G,KAAAqM,qBAAwBzL,IAC9BA,EAAMI,iBACNJ,EAAMoL,kBACNhM,KAAKsM,eAAeJ,OACpBlM,KAAKmC,YAAY,EAGFnC,KAAAsB,kBAAoBtB,KAAK4L,WAAWtK,kBACpCtB,KAAAW,qBAAuBX,KAAK4L,WAAWjL,oBAofzD,CAt1BS,gBAAAkL,GAEN,MAAMU,EAAQvM,KACd,OAAO,IAAIH,EAA+B,CACxC,QAAIgD,GACF,OAAO0J,EAAMC,E,EAEfpH,YAAamH,EAAMnH,YACnB,WAAI1D,GACF,OAAO6K,EAAMH,c,EAEf,cAAIjL,GACF,OAAOoL,EAAMpL,U,EAEf,aAAIgE,GACF,OAAOoH,EAAMpH,S,EAEf,cAAIuB,GACF,OAAO6F,EAAM7F,U,EAEf,kBAAIC,GACF,GAAI4F,EAAMhD,SAAU,OAAO,EAC3B,OAAOgD,EAAMH,eAAeK,WAC1BxK,GAAUA,EAAOuH,QAAU+C,EAAMG,cAAgBzK,EAAOmI,Y,EAG5D,cAAI5G,GACF,OAAO+I,EAAM/I,U,EAEf,YAAIoB,GACF,OAAO2H,EAAM3H,Q,EAEf,UAAIrC,GACF,OAAOgK,EAAMhK,M,EAEf,QAAI1B,GACF,OAAO0L,EAAM1L,I,EAEf,QAAIA,CAAK2I,GACP+C,EAAM1L,KAAO2I,C,EAEf,eAAIhI,GACF,OAAO+K,EAAM/K,W,EAEf,eAAIA,CAAYgI,GACd+C,EAAM/K,YAAcgI,C,EAEtB,cAAIpI,GACF,OAAOmL,EAAMnL,U,EAEf,cAAIA,CAAWoI,GACb+C,EAAMnL,WAAaoI,C,EAErB,oBAAIjI,GACF,OAAOgL,EAAMhL,gB,EAEf,oBAAIA,CAAiBiI,GACnB+C,EAAMhL,iBAAmBiI,C,EAE3B,YAAIpH,GACF,OAAOmK,EAAMnK,Q,EAEf,YAAIA,CAASoH,GACX+C,EAAMnK,SAAWoH,C,EAEnB,iBAAIxE,GACF,OAAOuH,EAAMvH,a,EAEf,iBAAIA,CAAcwE,GAChB+C,EAAMvH,cAAgBwE,C,EAExBtH,aAAcD,GAAUsK,EAAMrK,aAAaD,I,CAI/C,iBAAA0K,GACE3M,KAAKwJ,MAAQxJ,KAAK4M,sBAAsB5M,KAAKwJ,OAC7CxJ,KAAK2L,aAAekB,MAAMC,QAAQ9M,KAAKwJ,OAAS,IAAIxJ,KAAKwJ,OAASxJ,KAAKwJ,MACvExJ,KAAK+M,e,CAGP,gBAAAC,GACEhN,KAAK8L,UAAY,KACjB9L,KAAK4L,WAAWtG,UAChBtF,KAAKiN,uBACLjN,KAAKkN,4B,CAGP,iBAAAC,GACE,IAAKnN,KAAK8L,UAAW,OACrB9L,KAAK4L,WAAWtG,UAChBtF,KAAKiN,uBACLjN,KAAKkN,4B,CAGP,kBAAAE,GACEpN,KAAKiN,uBACLjN,KAAKqN,kC,CAGP,oBAAAC,GACEtN,KAAK4L,WAAWpG,aAChBxF,KAAKuN,sBAAsB/H,aAC3BxF,KAAKwN,6BAA+BnI,UACpC,GAAIrF,KAAKyN,yBAA2BpI,UAAW,CAC7CqI,qBAAqB1N,KAAKyN,wBAC1BzN,KAAKyN,uBAAyBpI,S,CAEhCrF,KAAK2N,kC,CAIP,qBAAAC,GACE5N,KAAKkN,4B,CAYP,aAAAH,GACE,GACG/M,KAAKuJ,WAAasD,MAAMC,QAAQ9M,KAAKwJ,SACpCxJ,KAAKuJ,UAAYsD,MAAMC,QAAQ9M,KAAKwJ,OACtC,CACAxJ,KAAKwJ,MAAQxJ,KAAK4M,sBAAsB5M,KAAKwJ,M,CAE/C,MAAMqE,EAAW7N,KAAK0G,WACtB,GAAI1G,KAAKuJ,SAAU,CACjB,MAAMuE,EAAS9N,KAAK+N,eACpBC,EAA4BhO,KAAKiO,UAAWjO,KAAKkO,KAAMJ,EAAQ,CAC7DD,WACA9N,MAAOoO,KAAKC,UAAUpO,KAAKwJ,Q,KAExB,CACL,MAAMA,EAAQxJ,KAAKqO,aAAerO,KAAK0M,YAAc,GACrD4B,EAAoBtO,KAAKiO,UAAWzE,EAAO,CAAEqE,WAAU9N,MAAOC,KAAK0M,a,CAErE,MAAM6B,EAAUvO,KAAK0J,WAAamE,IAAa7N,KAAKqO,aACpDG,EAAoBxO,KAAKiO,UAAWM,EAASvO,KAAK2J,iBAClD3J,KAAK4L,WAAW9F,gB,CAIlB,eAAA2I,GACEzO,KAAK4L,WAAW3F,gB,CAMlB,kBAAAyI,GACE1O,KAAK4L,WAAW1F,iB,CAIlB,YAAAyI,CAAa9N,GACXb,KAAK4O,aAAa1C,KAAKrL,GACvBb,KAAK4L,WAAWrG,YAAY1E,E,CAI9B,kBAAAgO,GACE7O,KAAK4L,WAAWtF,e,CAIlB,mBAAAwI,GACE9O,KAAK4L,WAAWrF,oB,CAGlB,oBAAAwI,CAAqBtF,GACnBzJ,KAAKsL,aAAe7B,EACpBzJ,KAAK+M,e,CAGP,iBAAAiC,GACEhP,KAAKwJ,MAAQxJ,KAAK4M,sBAAsB5M,KAAK2L,cAC7C3L,KAAKmC,Y,CAGP,wBAAA8M,CAAyBlP,GACvB,IAAKC,KAAKuJ,SAAU,CAClBvJ,KAAKwJ,MAAQ0F,EAAuBnP,GACpC,M,CAEFC,KAAKwJ,MAAQ2F,EAA4BpP,E,CAI3C,cAAM6F,GACJ5F,KAAK4L,WAAWhG,U,CAGlB,cAAYc,GACV,OAAO1G,KAAKyJ,UAAYzJ,KAAKoK,YAAcpK,KAAKsL,Y,CAG1C,qBAAAsB,CAAsBpD,GAC5B,GAAIxJ,KAAKuJ,SAAU,CACjB,OAAOsD,MAAMC,QAAQtD,GAAS,IAAIA,GAASA,EAAQ,CAACA,GAAS,E,CAE/D,OAAOqD,MAAMC,QAAQtD,GAAUA,EAAM,IAAM,GAAMA,C,CAGnD,eAAY4F,GACV,OAAOC,EAAsBrP,KAAK0B,QAAS1B,KAAKsJ,S,CAGlD,cAAYgG,GACV,OAAOC,EAAsBvP,KAAKoP,Y,CAGpC,mBAAYI,GACV,OAAOxP,KAAKmB,WACRsO,EAAqBzP,KAAKoP,YAAapP,KAAKoB,YAC5CpB,KAAKoP,W,CAGX,kBAAYhD,GACV,OAAOmD,EAAsBvP,KAAKwP,gB,CAGpC,eAAY9C,GACV,cAAc1M,KAAKwJ,QAAU,SAAWxJ,KAAKwJ,MAAQ,E,CAGvD,kBAAYuE,GACV,IAAK/N,KAAKuJ,WAAasD,MAAMC,QAAQ9M,KAAKwJ,OAAQ,MAAO,GACzD,MAAMkG,EAAQ,IAAIC,IAAI3P,KAAKsP,WAAWM,KAAI3N,GAAUA,EAAOuH,SAC3D,MAAO,IAAI,IAAImG,IAAI3P,KAAKwJ,MAAMqG,QAAOrG,GAASkG,EAAMI,IAAItG,M,CAG1D,kBAAYuG,GACV,GAAI/P,KAAKuJ,SAAU,OAAOlE,UAC1B,OAAOrF,KAAKsP,WAAWU,MAAK/N,GAAUA,EAAOuH,QAAUxJ,KAAK0M,a,CAG9D,gBAAY2B,GACV,OAAOrO,KAAKuJ,SAAWvJ,KAAK+N,eAAelM,OAAS,EAAIoO,QAAQjQ,KAAK+P,e,CAGvE,kBAAY7K,GACV,OAAOlF,KAAK4L,WAAW1G,c,CAGzB,aAAYgL,GACV,OAAOlQ,KAAKsP,WAAWa,MAAKlO,GAAUgO,QAAQhO,EAAOmO,UAAW,OAAS,S,CAGnE,oBAAAnD,GACN,MAAMoD,EACJrQ,KAAKa,MAAQb,KAAKuJ,UAAYvJ,KAAKqO,aAAerO,KAAKsQ,qBAAuBjL,UAChF,IAAKgL,GAASzN,YAAa,CACzB5C,KAAKuN,sBAAsB/H,aAC3BxF,KAAKwN,6BAA+BnI,UACpC,M,CAEF,GAAIrF,KAAKwN,+BAAiC6C,EAAS,OAEnDrQ,KAAKuN,sBAAsB/H,aAC3B,UAAW+K,iBAAmB,YAAa,CACzCvQ,KAAKuN,qBAAuB,IAAIgD,gBAAe,IAAMvQ,KAAKqN,qCAC1DrN,KAAKuN,qBAAqBpF,QAAQkI,E,CAEpCrQ,KAAKwN,6BAA+B6C,C,CAG9B,gCAAAhD,GACN,IACGrN,KAAKa,OACLb,KAAKuJ,WACLvJ,KAAKqO,cACNrO,KAAKyN,yBAA2BpI,UAChC,CACA,M,CAEFrF,KAAKyN,uBAAyB1H,uBAAsB,KAClD/F,KAAKyN,uBAAyBpI,UAC9BrF,KAAKwQ,sBAAsB,G,CAIvB,oBAAAA,GACN,MAAMH,EAAUrQ,KAAKsQ,qBACrB,MAAMG,EAAUzQ,KAAK0Q,4BACrB,MAAMC,EAAQ3Q,KAAK4Q,mBACnB,IAAKP,GAASzN,cAAgB6N,GAAS7N,cAAgB+N,GAAO/N,YAAa,OAE3E,MAAMiO,EAASC,iBAAiBT,GAChC,MAAM9L,EACJ8L,EAAQU,YACRC,OAAOC,WAAWJ,EAAOK,oBAAsB,KAC/CF,OAAOC,WAAWJ,EAAOM,kBAAoB,KAC/C,MAAMC,EACJX,EAAQ/M,wBAAwByG,MAChCwG,EAAMjN,wBAAwByG,MAC9B6G,OAAOC,WAAWJ,EAAOQ,WAAa,KACxC,MAAMC,EAAcF,EAAgB7M,EAAa,GACjD,GAAI+M,IAAgBtR,KAAKuL,qBAAsB,CAC7CvL,KAAKuL,qBAAuB+F,C,EAIxB,UAAAnP,CAAWyE,EAAe,OAChC5G,KAAK4L,WAAWzJ,WAAWyE,E,CAGrB,SAAA3F,CAAUuF,EAAuBC,GACvCzG,KAAK4L,WAAW3K,UAAUuF,EAAcC,E,CAGlC,YAAAvE,CAAaD,GACnB,GAAIA,EAAOmI,YAAcpK,KAAKmF,UAAW,OACzC,GAAInF,KAAKuJ,SAAU,CACjB,MAAMgI,EAAUvR,KAAK+N,eACrB,MAAMyD,EAAOD,EAAQzQ,SAASmB,EAAOuH,OACjC+H,EAAQ1B,QAAOrG,GAASA,IAAUvH,EAAOuH,QACzC,IAAI+H,EAAStP,EAAOuH,OACxBxJ,KAAKwJ,MAAQgI,EACbxR,KAAKiM,SAASC,KAAK,IAAIsF,IACvB,M,CAEFxR,KAAKwJ,MAAQvH,EAAOuH,MACpBxJ,KAAKiM,SAASC,KAAKjK,EAAOuH,OAC1BxJ,KAAK4L,WAAWzJ,WAAW,K,CA0BrB,YAAAsP,CACNxP,EACAyP,EACAC,EACAC,GAEA,MAAMC,EAAW7R,KAAKuJ,SAClBvJ,KAAK+N,eAAejN,SAASmB,EAAOuH,OACpCvH,EAAOuH,QAAUxJ,KAAK0M,YAC1B,MAAMoF,EAASJ,IAAU1R,KAAKwB,YAC9B,MAAMuQ,EAAW,GAAG/R,KAAKoF,6BAA6BsM,IACtD,OACEM,EAACC,EAAe,CACdjI,KAAMhK,KAAKgK,KACXkI,GAAI,GAAGlS,KAAKoF,sBAAsBsM,IAClCzP,OAAQA,EACR4P,SAAUA,EACVC,OAAQA,EACRvQ,iBAAkBvB,KAAKuB,iBACvBqQ,YAAaA,EACbO,WAAYlQ,EAAOmO,QAAQgC,aAAenQ,EAAOmO,QAAQiC,SACzDnC,UAAWlQ,KAAKkQ,UAChBoC,QACEtS,KAAKuJ,SACHyI,EAAA,QACEO,MAAM,wEAAuE,cACjE,QAEZP,EAAA,eACEO,MAAM,0BACNC,MAAM,GACNxI,KAAMhK,KAAKgK,KACXyI,QAASZ,EACTa,aAAY,QAGdf,GAAa1P,EAAO0Q,KACtBX,EAAA,QACEO,MAAM,wEAAuE,cACjE,QAEZP,EAAA,WAAS9D,KAAMjM,EAAO0Q,KAAM3I,KAAMhK,KAAKgK,KAAM4I,MAAM,aAEnDvN,UAENwN,WACE5Q,EAAO6Q,gBAAgBjR,OACrBmQ,EAAA,QAAMO,MAAM,+EACTtQ,EAAO6Q,eAAelD,KAAI,CAACQ,EAAQ2C,IAAgB,CAClDA,EAAc,EACZf,EAAA,WACEO,MAAM,0CACNS,GAAG,OACHC,QAASC,EAAgClT,KAAKgK,MAC9C4I,MAAM,UAAS,cACH,QAAM,KAIlB,KACJZ,EAAA,UACEmB,KAAK,SACLZ,MAAO,CACL,gCAAiC,KACjC,0CAA2CnC,EAAOgD,OAAS,WAC3D,iBAAkB,KAClB,gBAAiB,MAEnBC,UAAYzS,GAAyBA,EAAMoL,kBAC3CsH,QAAU1S,IACRA,EAAMI,iBACNJ,EAAMoL,kBACNhM,KAAKuT,sBAAsBrH,KAAK,CAC9B1C,MAAOvH,EAAOuH,MACdgK,YAAapD,EAAO5G,MACpBiK,cAAe7S,GACf,GAGJoR,EAAA,WACEgB,GAAG,OACHC,QAASC,EAAgClT,KAAKgK,MAC9C4I,MAAM,WAELxC,EAAOoC,YAKdnN,UAEN+K,OACEnO,EAAOmO,OACL4B,EAAA,cAAYQ,MAAOvQ,EAAOmO,OAAOoC,MAAO1O,KAAK,OAAOkG,KAAK,MACvDgI,EAAA,sBACEE,GAAIH,EACJkB,QAAQ,OACRjJ,KAAMhB,EAAmBhJ,KAAKgK,MAC9B2I,KAAK,WACL/H,QAAO,KACPH,UAAW,MACXH,WAAY,MACZe,UAAWpJ,EAAOmO,OAAOoC,MACzBkB,SAAS,OACTC,SAAU1R,EAAOmO,OAAOuD,SACxBtB,SAAUpQ,EAAOmO,OAAOiC,SACxBD,YAAanQ,EAAOmO,OAAOgC,YAC3BiB,UAAWzS,IACTA,EAAMoL,kBACN,GAAIpL,EAAMG,MAAQ,UAAYH,EAAMG,MAAQ,YAAa,CACvDH,EAAMI,iBACNhB,KAAK4L,WAAW/E,sB,GAGpB+M,UAAYhT,IACVA,EAAMoL,kBACNhM,KAAK6T,eAAe3H,KAAK,CACvB1C,MAAOvH,EAAOuH,MACdsK,SAAU/B,EACV0B,cAAe7S,EAAMmT,QACrB,KAIN1O,UAEN2O,QAAS,KACPhU,KAAKuB,iBAAmB,MACxBvB,KAAKwB,YAAckQ,CAAK,EAE1BuC,SAAU,IAAMjU,KAAKkC,aAAaD,I,CAKxC,mBAAYiS,GACV,OACGlU,KAAKwK,UAAaxK,KAAKuK,eAAiBvK,KAAKwL,iBAC9CyE,QAAQjQ,KAAK2S,MAAQ3S,KAAKmF,U,CAI9B,eAAYgP,GACV,OAAOnU,KAAKiK,SAAWjK,KAAKkK,aAAe,UAAYlK,KAAKgK,OAAS,I,CAG/D,0BAAAkD,GACNlN,KAAK2N,mCACL,IAAK3N,KAAKuK,cAAe,CACvB,GAAIvK,KAAKwL,eAAgBxL,KAAKwL,eAAiB,MAC/C,M,CAEFxL,KAAKoU,yBAA2BC,EAA2BrU,KAAKwM,IAAI8H,IAClE,GAAItU,KAAKwL,iBAAmB8I,EAAStU,KAAKwL,eAAiB8I,CAAO,G,CAI9D,gCAAA3G,GACN3N,KAAKoU,6BACLpU,KAAKoU,yBAA2B/O,S,CAG1B,oBAAAkP,CAAqB7R,EAAgB8P,GAC3C,IAAKxS,KAAKuK,cAAe,OAAO7H,EAChC,OACEsP,EAAA,cAAYQ,MAAOA,EAAO1O,KAAK,MAAMkG,KAAK,MACvCtH,E,CAKP,MAAA8R,GACE,MAAM3G,EAAW7N,KAAK0G,WACtB,MAAM+N,GAAmBzU,KAAKqO,aAC9B,MAAMqG,EAAQ1U,KAAK+N,eAAelM,OAClC,MAAM2Q,EAAQxS,KAAKuJ,SACf,GAAGvJ,KAAK6J,cAAc6K,EAAQ,EAAI,MAAMA,IAAU,KAClDD,EACEzU,KAAK6J,YACJ7J,KAAK2U,cAAgB3U,KAAK+P,gBAAgByC,MACjD,MAAMoC,EAAcC,EAAqB7U,KAAKgK,MAC9C,MAAM8K,EAAWnM,EAAU3I,KAAKgK,MAChC,MAAM+K,GAAmB/U,KAAKuJ,UAAYyL,EAAoBhV,KAAKsP,YACnE,MAAM2F,EAAoBC,EAAsBlV,KAAKsP,YACrD,MAAM6F,EAAYnV,KAAKoL,OAAS6E,QAAQjQ,KAAKoV,cAC7C,MAAMC,EACJ,CAACrV,KAAKsV,gBAAiBH,EAAYnV,KAAK0L,QAAUrG,WAAWwK,OAAOI,SAASsF,KAAK,MAClFlQ,UACF,MAAMmQ,EAAa,CACjBpT,SAAU,QACVqT,KAAM,IACNC,IAAK,IACLC,UAAW,aAAaC,KAAKC,MAAM7V,KAAKoC,SAAS0C,SAAS8Q,KAAKC,MAAM7V,KAAKoC,SAAS2C,QACnF+Q,OAAQ,oCACRC,WAAY/V,KAAKgF,cAAgB,UAAY,UAE/C,IAAIgR,EAAY,EAEhB,OACEhE,EAACiE,EAAI,CAAAlV,IAAA,2CACHwR,MAAO,CACL,cAAe,KACf,yBAA0B,KAC1B,wBAAyBvS,KAAKuJ,SAC9B,iBAAkB,KAClB,oCAAqCvJ,KAAKyK,UAC1C,sBAAuBoD,EACvB,CAAC,eAAe7N,KAAKgK,QAAS,KAC9B,2BAA4BhK,KAAKuK,cACjC,oCAAqCvK,KAAKkU,mBACvCgC,EAAkBlW,KAAKmK,OAC1B,CAAC,2BAA2BnK,KAAKmW,gBAAiBnW,KAAKmW,WACvD,CAAC,sCAAsCnW,KAAKmW,gBAAiBnW,KAAKmW,aAGnEnW,KAAKuU,qBACJvC,EAAA,UACEoE,IAAK5V,IACHR,KAAK4L,WAAWrL,kBAAmBC,GAAiC,KAAK,EAE3E0R,GAAIlS,KAAKqW,SAAWrW,KAAKoF,YACzB+N,KAAK,SACLZ,MAAO,CACL7P,QAAS,KACT,mBAAoB,KACpB,sBAAuB1C,KAAK2K,aAC5B,2BAA4B3K,KAAK2K,aAEjC,sBAAuB3K,KAAK0K,oBAAsB1K,KAAKyK,WAAazK,KAAK2K,aACzE,0BAA2B3K,KAAK0K,mBAChC,gCACE1K,KAAK0K,qBAAuBmD,GAAY7N,KAAKsK,YAActK,KAAKqO,aAClE,qBAAsBR,GAAY7N,KAAKa,KACvC,oCACEb,KAAK0K,qBAAuBmD,GAAY7N,KAAKa,KAC/C,oBAAqBb,KAAKyK,UAC1B,mBAAoBzK,KAAK4K,QACzB,uBAAwB6J,IAAoBzU,KAAKuJ,SACjD,qBAAsBvJ,KAAKqO,eAAiBrO,KAAKqK,eACjD,8BACGrK,KAAKuJ,UAAY0G,QAAQjQ,KAAK2U,eAAiB3U,KAAK8J,wBACvD,iBAAkB9J,KAAKyK,WAAazK,KAAKoL,MACzC,CAAC,eAAepL,KAAKgK,QAAS,KAC9B,oBAAqBhK,KAAKiK,UAAYjK,KAAKmU,YAC3C,2BAA4BnU,KAAKmU,eAC9BmC,EAAyBtW,KAAKmW,aAEnC1M,SAAUoE,EACV0I,KAAK,WAAU,gBACAvW,KAAKkQ,UAAS,gBACdsG,OAAOxW,KAAKa,MAAK,gBACjBb,KAAKa,KAAOb,KAAKyL,UAAYpG,UAAS,wBAC9BrF,KAAKa,OAASb,KAAKmB,WAAanB,KAAKkF,eAAiBG,UAAS,aAC1ErF,KAAKqL,YAAcrL,KAAKkU,gBAAkB1B,EAAQnN,WAAU,kBACvDrF,KAAKyW,eAAc,mBAClBpB,EAAW,eACfrV,KAAKoL,MAAQ,OAAS/F,UAAS,gBAC9BrF,KAAK0J,UAAYrE,UAAS,YAC9BrF,KAAKmF,UAAY,OAASE,UACrCiO,QAAS,IAAOtT,KAAKa,KAAOb,KAAKmC,aAAenC,KAAKiB,UAAU,OAC/DoS,UAAWzS,IACT,MAAMwP,EAASpQ,KAAKoM,eAAepM,KAAKwB,cAAc4O,OACtD,GACEpQ,KAAKa,MACLuP,IACCxP,EAAMG,MAAQ,cAAiBH,EAAMG,MAAQ,OAASH,EAAM8V,UAC7D,CACA9V,EAAMI,iBACNiH,SACG0O,eAAe,GAAG3W,KAAKoF,6BAA6BpF,KAAKwB,gBACxDoG,cAA2B,WAC3B/B,QACJ,M,CAEF7F,KAAKW,qBAAqBC,EAAM,IAGhCZ,KAAK2S,MAAQ3S,KAAKmF,YAClB6M,EAAA,QACEO,MAAM,mEAAkE,cAC5D,QAEXvS,KAAKmF,UACJ6M,EAAA,aAAWhI,KAAM8K,EAAUlC,MAAM,YAEjCZ,EAAA,WAAS9D,KAAMlO,KAAK2S,KAAM3I,KAAM8K,EAAUlC,MAAM,aAIrD5S,KAAKkU,gBAAkB,KACtBlC,EAAA,QACEO,MAAO,CACL,qBAAsB,KACtB,+BAAgC,OAGlCP,EAAA,QACEO,MAAO,CACL,yBAA0B,KAC1B,uBAAwB,KACxB,uBAAwBvS,KAAK+J,IAC7B,8BAA+B/J,KAAK+J,MAGtCiI,EAAA,WACEO,MAAM,iBACNS,GAAG,OACHC,QAAS2B,EACThC,MAAM,UACNgE,eAAgB,GAEfpE,GAEFxS,KAAK+J,KACJiI,EAAA,YACEO,MAAM,2CACNU,QAAQ,MACR4D,QAAS,MACTrE,MAAM,GAAE,cACI,WAMrBxS,KAAKkU,iBAAmBlU,KAAK6K,YAAc,OAAS,KACnDmH,EAAA,QACEO,MAAM,oEAAmE,cAC7D,QAEZP,EAAA,WACE9D,KAAMlO,KAAK6K,YAAc,UAAY,gBAAkB,cACvDb,KAAM8K,EACNlC,MAAM,cAKd5S,KAAKkU,gBAAkBlU,KAAKqL,WAAWyL,QAAU9W,KAAK6J,YAAc,IAGrE7J,KAAKa,MACJmR,EAAA,OAAAjR,IAAA,2CACEgW,QAAQ,SACRX,IAAK5V,IACHR,KAAK4L,WAAWnL,gBAAiBD,GAA8B,KAAK,EAEtE+R,MAAM,+BACNrP,MAAOsS,GAENxV,KAAKmB,YACJ6Q,EAACgF,EAAY,CAAAjW,IAAA,2CACXiJ,KAAMhK,KAAKgK,KACXR,MAAOxJ,KAAKoB,WACZyI,YAAa7J,KAAKiL,kBAClB0I,SAAU3T,KAAKyL,UACfwL,iBAAkBjX,KAAKkF,eACvBgS,SAAUlX,KAAK4L,WAAWlL,iBAC1BqK,WAAY/K,KAAK+K,WACjBoM,cAAe3N,IACbxJ,KAAKoB,WAAaoI,CAAK,EAEzB6J,UAAWzS,GAASZ,KAAKsB,kBAAkBV,KAG/CoR,EAAA,OAAAjR,IAAA,2CACEmR,GAAIlS,KAAKyL,UACT8G,MAAM,iBACNgE,KAAMvW,KAAKkQ,UAAS,uBACElQ,KAAKuJ,SAAW,OAASlE,UAAS,aAC5CrF,KAAKqL,WAAarL,KAAK6J,YAAW,YACnC7J,KAAKmF,UAAY,OAASE,WAEpCrF,KAAKmF,UACJ6M,EAAA,OACEO,MAAM,oCACNgE,KAAMvW,KAAKkQ,YAAc,OAAS,MAAQ,SAAQ,gBACpC,QAAO,gBACP,OAAM,aACRlQ,KAAKmL,aAAY,YACnB,UAETnL,KAAKkQ,YAAc,OAClB8B,EAAA,QAAMuE,KAAK,YACTvE,EAAA,aAAWhI,KAAMhK,KAAKgK,KAAM4I,MAAM,aAGpCZ,EAAA,aAAWhI,KAAMhK,KAAKgK,KAAM4I,MAAM,aAGpC5S,KAAKoM,eAAevK,SAAW,EACjCmQ,EAAA,OACEO,MAAM,kCACNgE,KAAMvW,KAAKkQ,YAAc,OAAS,MAAQ,SAAQ,gBACpC,QAAO,gBACP,OAAM,aACRlQ,KAAKkL,cAAa,YACpB,UAETlL,KAAKkQ,YAAc,OAClB8B,EAAA,QAAMuE,KAAK,YACTvE,EAAA,kBAAgBoF,KAAMpX,KAAKkL,iBAG7B8G,EAAA,kBAAgBoF,KAAMpX,KAAKkL,iBAI/BlL,KAAKwP,gBAAgBI,KAAI,CAACyH,EAASC,IACjCtF,EAAA,OACEO,MAAO,CACL,oBAAqB,KACrB,mBAAoB,KACpB,sBAAuB,KACvB,+BAAgC8E,EAAQE,QACxC,wCACED,EAAe,GAAKrH,QAAQoH,EAAQG,SAExCjB,KACEvW,KAAKkQ,YAAc,OAAS,WAAamH,EAAQG,OAAS,QAAUnS,UAAS,aAEnEgS,EAAQG,QAEnBH,EAAQG,QAAUxX,KAAKkQ,YAAc,OACpC8B,EAAA,WACEO,MAAO,oEAAoEvS,KAAKgK,OAChFgJ,GAAG,OACHC,QAASC,EAAgClT,KAAKgK,MAC9CyN,SAAQ,KACR7E,MAAM,UACN2D,KAAK,OAELvE,EAAA,QAAMO,MAAM,kCAAkCgE,KAAK,YAChDc,EAAQG,SAGXH,EAAQG,OACVxF,EAAA,WACEO,MAAO,oEAAoEvS,KAAKgK,OAChFgJ,GAAG,OACHC,QAASC,EAAgClT,KAAKgK,MAC9CyN,SAAQ,KACR7E,MAAM,UAAS,cACH,QAEZZ,EAAA,QAAMO,MAAM,mCAAmC8E,EAAQG,SAEvD,KACHH,EAAQ3V,QAAQkO,KAAI3N,GACnBjC,KAAKyR,aAAaxP,EAAQ+T,IAAajB,EAAiBE,SAMjEjV,KAAK0X,oBAAsB1X,KAAKmF,UAC/B6M,EAAC2F,EAAkB,CACjB3N,KAAMhK,KAAKgK,KACXwI,MAAOxS,KAAK0X,kBACZE,SAAU5X,KAAKqM,uBAEfrM,KAAK8K,YAAc9K,KAAKqO,eAAiBrO,KAAKmF,UAChD6M,EAAC6F,EAAY,CACX7N,KAAMhK,KAAKgK,KACXyG,QAASzQ,KAAKuJ,SAAW,GAAGmL,KAAS1U,KAAKgL,gBAAkB3F,UAC5DyS,eAAgB9X,KAAKuJ,SAAWiN,OAAO9B,GAASrP,UAChD0S,kBAAmB/X,KAAKuL,qBACxByM,WAAYxX,IACVR,KAAKsQ,qBAAuB9P,GAAW6E,SAAS,EAElD4S,kBAAmBzX,IACjBR,KAAK0Q,4BAA8BlQ,GAAW6E,SAAS,EAEzD6S,SAAU1X,IACRR,KAAK4Q,mBAAqBpQ,GAAW6E,SAAS,EAEhD0F,WAAY/K,KAAK+K,WACjBoN,QAASnY,KAAK+L,iBAEd,MAIPoJ,GACCnD,EAAA,WAAAjR,IAAA,2CACEwR,MAAM,aACNS,GAAG,MACHC,QAAQ,kBACRL,MAAM,WACNwF,OAAQpY,KAAK0L,QACb6K,KAAK,SAEJvW,KAAKoV,c","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{p as i,H as e,c as s,h as t,a as o,t as n}from"./index.js";import{g as r,i as c}from"./p-BQq26pt9.js";import{C as a}from"./p-DlsjHRU3.js";import{d}from"./p-CwdRaJER.js";import{d as l}from"./p-BqipGGua.js";import{d as h}from"./p-pPtjNRqC.js";import{d as m}from"./p-0XTyQNRG.js";import{d as b}from"./p-xMBaOeKa.js";import{d as f}from"./p-B9y6azEw.js";import{d as u}from"./p-Bf-BphXP.js";import{d as v}from"./p-d76Ry5nh.js";import{d as g}from"./p-D8OWhnID.js";import{d as w}from"./p-DbW8S5qe.js";import{b as p,T as x}from"./p-CeXf9-X3.js";function k(i,e){const s=r(i);const t=s.findIndex((i=>i.id===e));const o=t>=0?t:0;return{selectedIndex:o,selected:s[o],hasPrevious:o>0,hasNext:o<s.length-1}}const _=()=>`@media (forced-colors: active){.sc-ds-mobile-section-switcher:root,.sc-ds-mobile-section-switcher-h,.ds-forced-colors-scope.sc-ds-mobile-section-switcher{--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-mobile-section-switcher-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-mobile-section-switcher-h,.ds-focus-ring.sc-ds-mobile-section-switcher,.ds-focus-ring-inset.sc-ds-mobile-section-switcher-h,.ds-focus-ring-inset.sc-ds-mobile-section-switcher{outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.ds-focus-ring.sc-ds-mobile-section-switcher-h:focus-visible,.ds-focus-ring.sc-ds-mobile-section-switcher: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-mobile-section-switcher-h,.ds-focus-ring.ds-focus-ring--visible.sc-ds-mobile-section-switcher{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-mobile-section-switcher-h:focus-visible,.ds-focus-ring-inset.sc-ds-mobile-section-switcher:focus-visible{outline:none}.ds-focus-ring-inset.sc-ds-mobile-section-switcher-h:focus-visible::after,.ds-focus-ring-inset.sc-ds-mobile-section-switcher: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-mobile-section-switcher-h,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-mobile-section-switcher{outline:none}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-mobile-section-switcher-h::after,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-mobile-section-switcher::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-mobile-section-switcher-h{--ds-focus-ring-color:var(--ds-forced-color-selected)}}@media (forced-colors: active){.sc-ds-mobile-section-switcher:root,.sc-ds-mobile-section-switcher-h,.ds-forced-colors-scope.sc-ds-mobile-section-switcher{--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-mobile-section-switcher-h,.ds-interaction-fill.sc-ds-mobile-section-switcher{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-mobile-section-switcher-h::before,.ds-interaction-fill.sc-ds-mobile-section-switcher::before,.ds-interaction-fill.sc-ds-mobile-section-switcher-h::after,.ds-interaction-fill.sc-ds-mobile-section-switcher::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none;cursor:inherit;transition:none}.ds-interaction-fill.sc-ds-mobile-section-switcher-h::before,.ds-interaction-fill.sc-ds-mobile-section-switcher::before{z-index:1}.ds-interaction-fill.sc-ds-mobile-section-switcher-h::after,.ds-interaction-fill.sc-ds-mobile-section-switcher::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-mobile-section-switcher-h,.ds-interaction-fill--bordered.sc-ds-mobile-section-switcher{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--color-border-secondary)}.ds-interaction-fill--selected.sc-ds-mobile-section-switcher-h::before,.ds-interaction-fill--selected.sc-ds-mobile-section-switcher::before{background:var(--ds-interaction-active)}.ds-interaction-fill--selected.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--selected.sc-ds-mobile-section-switcher{--ds-interaction-dot-ring:var(--ds-interaction-active)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-mobile-section-switcher-h:hover:not(:disabled)::after,.ds-interaction-fill.sc-ds-mobile-section-switcher:hover:not(:disabled)::after{background:var(--ds-interaction-hover)}}.ds-interaction-fill.sc-ds-mobile-section-switcher-h:active:not(:disabled)::after,.ds-interaction-fill.sc-ds-mobile-section-switcher:active:not(:disabled)::after{background:var(--ds-interaction-pressed)}.ds-interaction-fill--grouped.sc-ds-mobile-section-switcher-h::after,.ds-interaction-fill--grouped.sc-ds-mobile-section-switcher::after,.ds-interaction-fill--grouped.sc-ds-mobile-section-switcher-h:active:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-mobile-section-switcher:active:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill--grouped.sc-ds-mobile-section-switcher-h:hover:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-mobile-section-switcher:hover:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}}.ds-interaction-fill--grouped.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--grouped.sc-ds-mobile-section-switcher{--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-mobile-section-switcher-h>.ds-interaction-fill__content.sc-ds-mobile-section-switcher,.ds-interaction-fill.sc-ds-mobile-section-switcher>.ds-interaction-fill__content.sc-ds-mobile-section-switcher,.ds-interaction-fill__content.sc-ds-mobile-section-switcher{position:relative;z-index:2;cursor:inherit}.ds-interaction-fill--on-faint.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--on-faint.sc-ds-mobile-section-switcher{--ds-interaction-active:var(--color-interaction-active)}.ds-interaction-fill--on-medium.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--on-medium.sc-ds-mobile-section-switcher{--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-mobile-section-switcher-h,.ds-interaction-fill--on-bold.sc-ds-mobile-section-switcher{--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-mobile-section-switcher-h,.ds-interaction-fill--on-strong.sc-ds-mobile-section-switcher{--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-mobile-section-switcher-h,.ds-interaction-fill--on-translucent.sc-ds-mobile-section-switcher{--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-mobile-section-switcher-h,.ds-interaction-fill--on-inverted.sc-ds-mobile-section-switcher{--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-mobile-section-switcher-h,.ds-interaction-fill--on-media.sc-ds-mobile-section-switcher{--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-mobile-section-switcher-h,.ds-interaction-fill--on-always-dark.sc-ds-mobile-section-switcher{--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-chrome.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--on-chrome.sc-ds-mobile-section-switcher{--ds-interaction-hover:var(--color-chrome-interaction-hover);--ds-interaction-pressed:var(--color-chrome-interaction-pressed);--ds-interaction-active:var(--color-chrome-interaction-active);--ds-focus-ring-color:var(--color-chrome-interaction-focus)}.ds-interaction-fill--on-navigation.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--on-navigation.sc-ds-mobile-section-switcher{--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-mobile-section-switcher-h:not(:disabled)::after,.ds-interaction-fill.ds-interaction-fill--surface-open.sc-ds-mobile-section-switcher:not(:disabled)::after{background:var(--ds-interaction-pressed)}@media (forced-colors: active){.ds-interaction-fill.sc-ds-mobile-section-switcher-h::after,.ds-interaction-fill.sc-ds-mobile-section-switcher::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-mobile-section-switcher-h:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill--surface-open.sc-ds-mobile-section-switcher: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-mobile-section-switcher-h::before,.ds-interaction-fill--selected.sc-ds-mobile-section-switcher::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-mobile-section-switcher-h:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill.sc-ds-mobile-section-switcher: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)}}.sc-ds-mobile-section-switcher-h,.sc-ds-mobile-section-switcher:where(.ds-table),.sc-ds-mobile-section-switcher:where(.tooltip-popup),.sc-ds-mobile-section-switcher: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-mobile-section-switcher,.ds-control--lg.sc-ds-mobile-section-switcher-h,.ds-control--md.sc-ds-mobile-section-switcher-h,.ds-control--md.sc-ds-mobile-section-switcher,.ds-control--sm.sc-ds-mobile-section-switcher-h,.ds-control--sm.sc-ds-mobile-section-switcher,.ds-control--xs.sc-ds-mobile-section-switcher-h,.ds-control--xs.sc-ds-mobile-section-switcher{--ds-control-radius:var(--ds-radius-control)}.ds-control--lg.sc-ds-mobile-section-switcher-h,.ds-control--lg.sc-ds-mobile-section-switcher{--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-mobile-section-switcher-h,.ds-control--md.sc-ds-mobile-section-switcher{--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-mobile-section-switcher-h,.ds-control--sm.sc-ds-mobile-section-switcher{--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-mobile-section-switcher-h,.ds-control--xs.sc-ds-mobile-section-switcher{--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}.sc-ds-mobile-section-switcher-h{display:block;min-width:0;max-width:100%;color:var(--color-foreground-primary)}.mobile-section-switcher.sc-ds-mobile-section-switcher{appearance:none;display:grid;grid-template-columns:var(--dimension-size-100) minmax(0, auto) var(--dimension-size-100);align-items:center;justify-content:center;gap:var(--dimension-space-050);max-width:100%;min-height:var(--dimension-size-400);padding-inline:var(--dimension-space-100);border:0;border-radius:var(--dimension-radius-100);background:var(--color-background-secondary);color:inherit;box-sizing:border-box;cursor:default}.mobile-section-switcher__label.sc-ds-mobile-section-switcher{min-width:0;max-width:100%;text-align:center}.mobile-section-switcher__position.sc-ds-mobile-section-switcher{width:var(--dimension-size-050);height:var(--dimension-size-050);border-radius:var(--dimension-radius-half);background:currentColor;opacity:0}.mobile-section-switcher__position--visible.sc-ds-mobile-section-switcher{opacity:1}.mobile-section-switcher--sheet.sc-ds-mobile-section-switcher{grid-template-columns:minmax(0, auto);min-height:var(--dimension-size-500);padding-inline:var(--dimension-space-150);border-radius:var(--dimension-radius-half);background:transparent;--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--color-border-tertiary)}.mobile-section-switcher--combined.sc-ds-mobile-section-switcher{display:flex}.mobile-section-switcher__page-label.sc-ds-mobile-section-switcher{flex:0 1 auto;min-width:0}.mobile-section-switcher__separator.sc-ds-mobile-section-switcher{flex:0 0 auto}.mobile-section-switcher--combined.sc-ds-mobile-section-switcher .mobile-section-switcher__label.sc-ds-mobile-section-switcher{flex:0 0 auto;max-width:50%}.mobile-section-sheet.sc-ds-mobile-section-switcher{position:fixed;inset:0 0 auto;width:100%;max-width:none;max-height:calc(100dvh - var(--dimension-size-500) - var(--dimension-space-200));margin:0;padding:0;border:0;border-radius:0;box-sizing:border-box;overflow:visible;background:transparent;color:var(--color-foreground-secondary);outline:none}.mobile-section-sheet[open].sc-ds-mobile-section-switcher{display:flex;flex-direction:column}.mobile-section-sheet[open].sc-ds-mobile-section-switcher .mobile-section-sheet__items.sc-ds-mobile-section-switcher{animation:mobileSectionSheetIn var(--effect-motion-short-2) both}.mobile-section-sheet.sc-ds-mobile-section-switcher::backdrop{background:var(--color-background-shade);animation:mobileSectionShadeIn var(--effect-motion-short-2) both}.mobile-section-sheet--closing[open].sc-ds-mobile-section-switcher .mobile-section-sheet__items.sc-ds-mobile-section-switcher{animation-name:mobileSectionSheetOut}.mobile-section-sheet--closing.sc-ds-mobile-section-switcher::backdrop{animation-name:mobileSectionShadeOut}.mobile-section-sheet__items.sc-ds-mobile-section-switcher{display:flex;flex-direction:column;gap:var(--dimension-space-100);min-height:0;max-height:inherit;box-sizing:border-box;background:var(--color-background-primary);box-shadow:var(--effect-elevation-elevated-floating);padding:var(--dimension-space-100);padding-block-start:max(var(--dimension-space-100), env(safe-area-inset-top, 0px));overflow-y:auto;overscroll-behavior:contain}.mobile-section-sheet__item.sc-ds-mobile-section-switcher{appearance:none;flex:0 0 auto;display:flex;align-items:center;height:var(--ds-control-height);width:100%;min-width:0;padding:0 var(--ds-control-padding-inline);box-sizing:border-box;border:0;border-radius:var(--ds-control-radius);background:transparent;color:inherit;text-align:start}.mobile-section-sheet__item[aria-current='page'].sc-ds-mobile-section-switcher{color:var(--color-foreground-primary)}.mobile-section-sheet__item.sc-ds-mobile-section-switcher:disabled{color:var(--color-foreground-tertiary)}.mobile-section-sheet__label.sc-ds-mobile-section-switcher{min-width:0;padding-inline:var(--ds-control-label-inset)}.mobile-section-sheet__divider.sc-ds-mobile-section-switcher{flex:0 0 auto;height:var(--dimension-stroke-width-012);margin-inline:var(--dimension-space-100);background:var(--color-border-tertiary)}@keyframes mobileSectionSheetIn{from{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes mobileSectionSheetOut{from{transform:translateY(0)}to{transform:translateY(-100%)}}@keyframes mobileSectionShadeIn{from{opacity:0}to{opacity:1}}@keyframes mobileSectionShadeOut{from{opacity:1}to{opacity:0}}.mobile-section-switcher--pointer-focus.sc-ds-mobile-section-switcher-h .ds-focus-ring-inset.sc-ds-mobile-section-switcher::after{outline:none}.mobile-section-sheet__browser-edge.sc-ds-mobile-section-switcher{position:fixed;inset:auto 0 0;height:max(var(--dimension-space-200), env(safe-area-inset-bottom, 0px));pointer-events:none;color:var(--color-background-primary);background-color:var(--_mobile-section-edge-color, var(--color-background-primary))}.mobile-section-sheet[open].sc-ds-mobile-section-switcher .mobile-section-sheet__browser-edge.sc-ds-mobile-section-switcher{animation:mobileSectionEdgeIn var(--effect-motion-short-2) both}.mobile-section-sheet--closing[open].sc-ds-mobile-section-switcher .mobile-section-sheet__browser-edge.sc-ds-mobile-section-switcher{animation-name:mobileSectionEdgeOut}@keyframes mobileSectionEdgeIn{from{background-color:var(--color-background-primary)}to{background-color:var(--_mobile-section-edge-color, var(--color-background-primary))}}@keyframes mobileSectionEdgeOut{from{background-color:var(--_mobile-section-edge-color, var(--color-background-primary))}to{background-color:var(--color-background-primary)}}@media (prefers-reduced-motion: reduce){.mobile-section-sheet[open].sc-ds-mobile-section-switcher .mobile-section-sheet__items.sc-ds-mobile-section-switcher,.mobile-section-sheet[open].sc-ds-mobile-section-switcher .mobile-section-sheet__browser-edge.sc-ds-mobile-section-switcher,.mobile-section-sheet.sc-ds-mobile-section-switcher::backdrop{animation:none}}`;let y=0;const C=i(class i extends e{constructor(i){super();if(i!==false){this.__registerHost()}this.dsChange=s(this,"dsChange",7);this.sections=[];this.value="";this.navigationLabel="Change page section";this.presentation="menu";this.pageLabel="";this.menuOpen=false;this.menuSurfaceOpen=false;this.initialFocusVisible=false;this.pointerFocus=false;this.sheetClosing=false;this.focusedSection="";this.instanceId=y++;this.triggerId=`ds-mobile-section-switcher-trigger-${this.instanceId}`;this.menuId=`ds-mobile-section-switcher-menu-${this.instanceId}`;this.triggerEl=null;this.dialogEl=null;this.browserEdgeEl=null;this.browserEdgeColors="";this.closeTimer=null;this.loaded=false;this.tasks=new a((()=>this.el.isConnected));this.handleDocumentKeyDown=i=>{if(["Shift","Control","Alt","Meta"].includes(i.key))return;this.pointerFocus=false};this.updateBrowserEdgeColor=()=>{if(!this.el.isConnected||!this.browserEdgeEl||!this.dialogEl)return;const i=getComputedStyle(this.browserEdgeEl).color;const e=getComputedStyle(this.dialogEl,"::backdrop").backgroundColor;const s=`${i}|${e}`;if(s===this.browserEdgeColors)return;const t=this.el.ownerDocument.createElement("canvas");t.width=t.height=1;const o=t.getContext("2d");if(!o)return;o.fillStyle=i;o.fillRect(0,0,1,1);o.fillStyle=e;o.fillRect(0,0,1,1);const[n,r,c]=o.getImageData(0,0,1,1).data;this.browserEdgeEl.style.setProperty("--_mobile-section-edge-color",`rgb(${n}, ${r}, ${c})`);this.browserEdgeColors=s};this.handleSheetKeyDown=i=>{if(i.key==="Escape"){i.preventDefault();i.stopPropagation();this.closeMenu();return}const e=this.selectableSections.filter((i=>!i.isInactive));if(!e.length)return;const s=Math.max(0,e.findIndex((i=>i.id===this.focusedSection)));let t;if(i.key==="ArrowDown")t=(s+1)%e.length;else if(i.key==="ArrowUp")t=(s+e.length-1)%e.length;else if(i.key==="Home")t=0;else if(i.key==="End")t=e.length-1;else if(i.key==="Tab")t=s;else if(i.key.length===1&&!i.ctrlKey&&!i.metaKey&&!i.altKey&&i.key!==" "){const o=e.findIndex(((t,o)=>e[(s+o+1)%e.length].label.toLowerCase().startsWith(i.key.toLowerCase())));if(o<0)return;t=(s+o+1)%e.length}else return;i.preventDefault();this.initialFocusVisible=true;this.focusSheetItem(e[t].id)};this.toggleMenu=i=>{if(this.selectableSections.length<=1)return;this.initialFocusVisible=i.detail===0;if(this.presentation==="sheet"){if(this.menuOpen)this.closeMenu();else{this.focusedSection=this.selectedSection?.id??"";this.menuOpen=true}return}this.menuOpen=!this.menuOpen;if(this.menuOpen)this.menuSurfaceOpen=true};this.closeMenu=()=>{this.menuOpen=false;if(this.dialogEl?.open)this.sheetClosing=true};this.handleSelect=i=>{const e=String(i.detail.value??"");const s=this.selectableSections.find((i=>i.id===e));if(!s||s.isInactive)return;this.closeMenu();if(e!==this.selectedSection?.id)this.dsChange.emit(e);this.tasks.frame((()=>this.triggerEl?.focus()))}}componentDidLoad(){this.loaded=true;this.connectResources()}connectedCallback(){if(this.loaded)this.connectResources()}connectResources(){if(!this.el.isConnected||this.boundDocument)return;this.boundDocument=this.el.ownerDocument;this.boundDocument.addEventListener("keydown",this.handleDocumentKeyDown,true);this.visibilityObserver=new ResizeObserver(this.tasks.guard((()=>{if(this.dialogEl?.open&&!this.triggerEl?.getClientRects().length){this.finishSheetClose(false)}})));this.visibilityObserver.observe(this.el)}componentDidRender(){if(!this.el.isConnected||!this.dialogEl)return;if(this.presentation==="sheet"&&this.menuOpen&&!this.dialogEl.open){const i=this.focusedSection;this.updateBrowserEdgeColor();this.observeBrowserEdgeTheme();this.dialogEl.showModal();this.focusSheetItem(i)}if(this.sheetClosing&&this.dialogEl.open&&!this.closeTimer){const i=p(x.motionShort2,x.animationDurationShort3);if(!i)this.finishSheetClose();else this.closeTimer=setTimeout((()=>this.finishSheetClose()),i)}}disconnectedCallback(){this.tasks.cancel();this.boundDocument?.removeEventListener("keydown",this.handleDocumentKeyDown,true);this.boundDocument=undefined;this.visibilityObserver?.disconnect();this.visibilityObserver=undefined;this.pointerFocus=false;this.menuSurfaceOpen=false;this.finishSheetClose(false)}handlePresentationChange(){this.menuSurfaceOpen=false;this.closeMenu()}handleContextChange(){this.closeMenu()}finishSheetClose(i=true){if(this.closeTimer)clearTimeout(this.closeTimer);this.closeTimer=null;const e=this.dialogEl?.open;this.dialogEl?.close();this.themeObserver?.disconnect();this.menuOpen=false;this.sheetClosing=false;if(e&&i&&this.triggerEl?.getClientRects().length)this.triggerEl.focus()}observeBrowserEdgeTheme(){this.themeObserver??(this.themeObserver=new MutationObserver(this.updateBrowserEdgeColor));for(let i=this.el;i;i=i.parentElement){this.themeObserver.observe(i,{attributes:true,attributeFilter:["class","style","data-theme"]})}}focusSheetItem(i){const e=Array.from(this.dialogEl?.querySelectorAll("button")??[]);const s=e.find((e=>e.value===i&&!e.disabled))??e.find((i=>!i.disabled));if(s){this.focusedSection=s.value;s.focus()}else this.dialogEl?.focus()}get resolvedSections(){return this.sections??[]}get selectableSections(){return r(this.resolvedSections)}get selectedIndex(){return k(this.resolvedSections,this.value).selectedIndex}get selectedSection(){return this.selectableSections[this.selectedIndex]}get hasPrevious(){return k(this.resolvedSections,this.value).hasPrevious}get hasNext(){return k(this.resolvedSections,this.value).hasNext}get triggerAriaLabel(){return`${this.presentation==="sheet"&&this.pageLabel?`${this.pageLabel}. `:""}${this.navigationLabel}. Current section: ${this.selectedSection?.label??""}`}get menuSections(){const i=[];let e=[];const s=()=>{if(e.length)i.push({items:e});e=[]};for(const i of this.resolvedSections){if(c(i)){s();continue}e.push({label:i.label,value:i.id,dot:i.dot,isSelected:i.id===this.selectedSection?.id,isInactive:i.isInactive})}s();return i}handleSectionsChange(){if(this.selectableSections.length<=1){this.closeMenu();this.menuSurfaceOpen=false}else if(this.dialogEl?.open&&!this.sheetClosing){this.tasks.frame((()=>{if(this.dialogEl?.open&&!this.sheetClosing)this.focusSheetItem(this.focusedSection)}))}}renderSheet(){return t("dialog",{id:this.menuId,ref:i=>{this.dialogEl=i??null},class:{"mobile-section-sheet":true,"mobile-section-sheet--closing":this.sheetClosing},"aria-label":this.navigationLabel,tabIndex:-1,onCancel:i=>{i.preventDefault();this.closeMenu()},onKeyDown:this.handleSheetKeyDown,onClick:i=>{if(!this.dialogEl||i.target!==this.dialogEl)return;const e=this.dialogEl.getBoundingClientRect();if(i.clientY<e.top||i.clientY>e.bottom||i.clientX<e.left||i.clientX>e.right)this.closeMenu()}},t("div",{class:"mobile-section-sheet__items",role:"menu","aria-label":this.navigationLabel},this.resolvedSections.map((i=>c(i)?t("div",{class:"mobile-section-sheet__divider",role:"separator"}):t("button",{type:"button",role:"menuitem",value:i.id,disabled:i.isInactive,"aria-current":i.id===this.selectedSection?.id?"page":undefined,tabIndex:i.id===this.focusedSection?0:-1,class:{"mobile-section-sheet__item":true,"ds-control--lg":true,"ds-interaction-fill":true,"ds-focus-ring-inset":true,"ds-focus-ring--visible":this.initialFocusVisible&&i.id===this.focusedSection},onFocus:()=>{this.focusedSection=i.id},onClick:()=>{if(this.sheetClosing||i.isInactive)return;this.closeMenu();if(i.id!==this.selectedSection?.id)this.dsChange.emit(i.id)}},t("ds-text",{class:"mobile-section-sheet__label ds-interaction-fill__content",as:"span",variant:"text-body-large",color:"inherit",emphasis:i.id===this.selectedSection?.id,lineTruncation:1},i.label))))),t("div",{ref:i=>{if(this.browserEdgeEl!==i)this.browserEdgeColors="";this.browserEdgeEl=i??null},class:"mobile-section-sheet__browser-edge","aria-hidden":"true"}))}render(){const i=this.selectedSection;if(!i)return t(o,null);const e=this.presentation==="sheet"&&!!this.pageLabel;return t(o,{class:{"mobile-section-switcher--pointer-focus":this.pointerFocus},onPointerDown:()=>{this.pointerFocus=true;this.initialFocusVisible=false}},t("button",{ref:i=>{this.triggerEl=i??null},id:this.triggerId,class:{"mobile-section-switcher":true,"mobile-section-switcher--expanded":this.menuOpen,"ds-interaction-fill--surface-open":this.menuSurfaceOpen||this.menuOpen||this.sheetClosing,"mobile-section-switcher--sheet":this.presentation==="sheet","mobile-section-switcher--combined":e,"ds-focus-ring-inset":true,"ds-interaction-fill":true},type:"button","aria-haspopup":this.presentation==="sheet"?"dialog":"menu","aria-controls":this.menuId,"aria-expanded":String(this.menuOpen),"aria-label":this.triggerAriaLabel,onClick:this.toggleMenu},this.presentation==="menu"?t("span",{class:{"mobile-section-switcher__position":true,"mobile-section-switcher__position--visible":this.hasPrevious,"ds-interaction-fill__content":true},"aria-hidden":"true"}):null,e?[t("ds-text",{class:"mobile-section-switcher__page-label ds-interaction-fill__content",as:"span",variant:"text-body-large",emphasis:true,color:"inherit",lineTruncation:1},this.pageLabel),t("ds-text",{class:"mobile-section-switcher__separator ds-interaction-fill__content",as:"span",variant:"text-body-large",color:"inherit","aria-hidden":"true"},"·")]:null,t("ds-text",{class:"mobile-section-switcher__label ds-interaction-fill__content",as:"span",variant:this.presentation==="sheet"?"text-body-large":"text-body-medium",emphasis:true,color:"inherit",lineTruncation:1},i.label),this.presentation==="menu"?t("span",{class:{"mobile-section-switcher__position":true,"mobile-section-switcher__position--visible":this.hasNext,"ds-interaction-fill__content":true},"aria-hidden":"true"}):null),this.presentation==="sheet"||this.sheetClosing?this.renderSheet():this.selectableSections.length>1?t("ds-menu",{id:this.menuId,anchorId:this.triggerId,align:"center",menuLabel:this.navigationLabel,open:this.menuOpen,initialFocusVisible:this.initialFocusVisible,sections:this.menuSections,onDsClose:this.closeMenu,onDsAfterClose:()=>{if(!this.menuOpen)this.menuSurfaceOpen=false},onDsSelect:this.handleSelect}):null)}get el(){return this}static get watchers(){return{presentation:[{handlePresentationChange:0}],value:[{handleContextChange:0}],pageLabel:[{handleContextChange:0}],sections:[{handleSectionsChange:0}]}}static get style(){return _()}},[2,"ds-mobile-section-switcher",{sections:[16],value:[1],navigationLabel:[1,"navigation-label"],presentation:[1],pageLabel:[1,"page-label"],menuOpen:[32],menuSurfaceOpen:[32],initialFocusVisible:[32],pointerFocus:[32],sheetClosing:[32],focusedSection:[32]},undefined,{presentation:[{handlePresentationChange:0}],value:[{handleContextChange:0}],pageLabel:[{handleContextChange:0}],sections:[{handleSectionsChange:0}]}]);function S(){if(typeof customElements==="undefined"){return}const i=["ds-mobile-section-switcher","ds-badge","ds-button-unfilled","ds-icon","ds-loader","ds-menu","ds-swatch-picker","ds-switch","ds-tag","ds-text","ds-tooltip"];i.forEach((i=>{switch(i){case"ds-mobile-section-switcher":if(!customElements.get(n(i))){customElements.define(n(i),C)}break;case"ds-badge":if(!customElements.get(n(i))){d()}break;case"ds-button-unfilled":if(!customElements.get(n(i))){l()}break;case"ds-icon":if(!customElements.get(n(i))){h()}break;case"ds-loader":if(!customElements.get(n(i))){m()}break;case"ds-menu":if(!customElements.get(n(i))){b()}break;case"ds-swatch-picker":if(!customElements.get(n(i))){f()}break;case"ds-switch":if(!customElements.get(n(i))){u()}break;case"ds-tag":if(!customElements.get(n(i))){v()}break;case"ds-text":if(!customElements.get(n(i))){g()}break;case"ds-tooltip":if(!customElements.get(n(i))){w()}break}}))}S();export{C as M,S as d};
2
+ //# sourceMappingURL=p-CIMyD_6H.js.map