@ds-mo/ui 12.1.0 → 12.3.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 (287) hide show
  1. package/README.md +26 -3
  2. package/dist/.build-stamp +1 -1
  3. package/dist/agent-patterns.json +8 -7
  4. package/dist/agent.json +837 -66
  5. package/dist/angular/ds-avatar.d.ts +1 -1
  6. package/dist/angular/ds-avatar.js +3 -3
  7. package/dist/angular/ds-bar-title.d.ts +7 -1
  8. package/dist/angular/ds-bar-title.js +7 -4
  9. package/dist/angular/ds-bar-workflow.d.ts +28 -0
  10. package/dist/angular/ds-bar-workflow.js +48 -0
  11. package/dist/angular/ds-breadcrumb.d.ts +19 -0
  12. package/dist/angular/ds-breadcrumb.js +42 -0
  13. package/dist/angular/ds-card-data-viz-bar.d.ts +18 -0
  14. package/dist/angular/ds-card-data-viz-bar.js +42 -0
  15. package/dist/angular/ds-card-data-viz-line.d.ts +18 -0
  16. package/dist/angular/ds-card-data-viz-line.js +42 -0
  17. package/dist/angular/ds-chart-bar-stacked.d.ts +12 -0
  18. package/dist/angular/ds-chart-bar-stacked.js +38 -0
  19. package/dist/angular/ds-chart-legend.d.ts +1 -1
  20. package/dist/angular/ds-chart-legend.js +3 -3
  21. package/dist/angular/ds-conversation-list.d.ts +1 -1
  22. package/dist/angular/ds-conversation-list.js +4 -3
  23. package/dist/angular/ds-scroll-overlay.d.ts +19 -0
  24. package/dist/angular/ds-scroll-overlay.js +43 -0
  25. package/dist/angular/ds-shell-page.d.ts +1 -1
  26. package/dist/angular/ds-shell-page.js +3 -3
  27. package/dist/angular/index.d.ts +1 -1
  28. package/dist/angular/index.js +6 -0
  29. package/dist/angular/proxies.d.ts +6 -0
  30. package/dist/angular/proxies.js +6 -0
  31. package/dist/components/ds-agent-activity.js +1 -1
  32. package/dist/components/ds-agent-response.js +1 -1
  33. package/dist/components/ds-agent-source-list.js +1 -1
  34. package/dist/components/ds-agent-tool-call.js +1 -1
  35. package/dist/components/ds-attachment-list.js +1 -1
  36. package/dist/components/ds-avatar.js +1 -1
  37. package/dist/components/ds-avatar.js.map +1 -1
  38. package/dist/components/ds-badge.js +1 -1
  39. package/dist/components/ds-bar-nav.js +1 -1
  40. package/dist/components/ds-bar-nav.js.map +1 -1
  41. package/dist/components/ds-bar-title.js +1 -1
  42. package/dist/components/ds-bar-title.js.map +1 -1
  43. package/dist/components/ds-bar-workflow.d.ts +11 -0
  44. package/dist/components/ds-bar-workflow.js +2 -0
  45. package/dist/components/ds-bar-workflow.js.map +1 -0
  46. package/dist/components/ds-breadcrumb.d.ts +11 -0
  47. package/dist/components/ds-breadcrumb.js +2 -0
  48. package/dist/components/ds-breadcrumb.js.map +1 -0
  49. package/dist/components/ds-button-filled.js +1 -1
  50. package/dist/components/ds-button-unfilled.js +1 -1
  51. package/dist/components/ds-card-data-viz-bar.d.ts +11 -0
  52. package/dist/components/ds-card-data-viz-bar.js +2 -0
  53. package/dist/components/ds-card-data-viz-bar.js.map +1 -0
  54. package/dist/components/ds-card-data-viz-donut.js +1 -1
  55. package/dist/components/ds-card-data-viz-line.d.ts +11 -0
  56. package/dist/components/ds-card-data-viz-line.js +2 -0
  57. package/dist/components/ds-card-data-viz-line.js.map +1 -0
  58. package/dist/components/ds-card-setting.js +1 -1
  59. package/dist/components/ds-card-shell-data-viz.js +1 -1
  60. package/dist/components/ds-chart-bar-stacked.d.ts +11 -0
  61. package/dist/components/ds-chart-bar-stacked.js +2 -0
  62. package/dist/components/ds-chart-bar-stacked.js.map +1 -0
  63. package/dist/components/ds-chart-bar.js +1 -1
  64. package/dist/components/ds-chart-bar.js.map +1 -1
  65. package/dist/components/ds-chart-donut.js +1 -1
  66. package/dist/components/ds-chart-legend.js +1 -1
  67. package/dist/components/ds-chart-legend.js.map +1 -1
  68. package/dist/components/ds-chart-line.js +1 -1
  69. package/dist/components/ds-chart-line.js.map +1 -1
  70. package/dist/components/ds-checkbox.js +1 -1
  71. package/dist/components/ds-chip.js +1 -1
  72. package/dist/components/ds-chip.js.map +1 -1
  73. package/dist/components/ds-code-block.js +1 -1
  74. package/dist/components/ds-conversation-list-item.js +1 -1
  75. package/dist/components/ds-conversation-list-item.js.map +1 -1
  76. package/dist/components/ds-conversation-list-section.js +1 -1
  77. package/dist/components/ds-conversation-list-section.js.map +1 -1
  78. package/dist/components/ds-conversation-list.js +1 -1
  79. package/dist/components/ds-conversation-list.js.map +1 -1
  80. package/dist/components/ds-divider.js +1 -1
  81. package/dist/components/ds-empty-state.js +1 -1
  82. package/dist/components/ds-field.js +1 -1
  83. package/dist/components/ds-input.js +1 -1
  84. package/dist/components/ds-input.js.map +1 -1
  85. package/dist/components/ds-markdown.js +1 -1
  86. package/dist/components/ds-menu.js +1 -1
  87. package/dist/components/ds-message-bubble.js +1 -1
  88. package/dist/components/ds-message-bubble.js.map +1 -1
  89. package/dist/components/ds-message-composer.js +1 -1
  90. package/dist/components/ds-message-scroller.js +1 -1
  91. package/dist/components/ds-message-scroller.js.map +1 -1
  92. package/dist/components/ds-message.js +1 -1
  93. package/dist/components/ds-modal.js +1 -1
  94. package/dist/components/ds-panel-nav.js +1 -1
  95. package/dist/components/ds-panel-sub-nav.js +1 -1
  96. package/dist/components/ds-panel-sub-nav.js.map +1 -1
  97. package/dist/components/ds-panel-tool-header.js +1 -1
  98. package/dist/components/ds-panel-tool-search.js +1 -1
  99. package/dist/components/ds-panel-tools.js +1 -1
  100. package/dist/components/ds-radio.js +1 -1
  101. package/dist/components/ds-radio.js.map +1 -1
  102. package/dist/components/ds-scroll-overlay.d.ts +11 -0
  103. package/dist/components/ds-scroll-overlay.js +2 -0
  104. package/dist/components/ds-scroll-overlay.js.map +1 -0
  105. package/dist/components/ds-select-multi.js +1 -1
  106. package/dist/components/ds-select-multi.js.map +1 -1
  107. package/dist/components/ds-select.js +1 -1
  108. package/dist/components/ds-select.js.map +1 -1
  109. package/dist/components/ds-shell-app.js +1 -1
  110. package/dist/components/ds-shell-gradient-picker.js +1 -1
  111. package/dist/components/ds-shell-gradient-swatch.js +1 -1
  112. package/dist/components/ds-shell-gradient-swatch.js.map +1 -1
  113. package/dist/components/ds-shell-page.js +1 -1
  114. package/dist/components/ds-shell-page.js.map +1 -1
  115. package/dist/components/ds-skeleton.js +1 -1
  116. package/dist/components/ds-slider.js +1 -1
  117. package/dist/components/ds-slider.js.map +1 -1
  118. package/dist/components/ds-swatch-picker.js +1 -1
  119. package/dist/components/ds-switch.js +1 -1
  120. package/dist/components/ds-tab-group.js +1 -1
  121. package/dist/components/ds-tab-group.js.map +1 -1
  122. package/dist/components/ds-tag.js +1 -1
  123. package/dist/components/ds-tag.js.map +1 -1
  124. package/dist/components/ds-text.js +1 -1
  125. package/dist/components/ds-toast.js +1 -1
  126. package/dist/components/ds-tooltip-data-viz.js +1 -1
  127. package/dist/components/ds-tooltip.js +1 -1
  128. package/dist/components/ds-typing-indicator.js +1 -1
  129. package/dist/components/ds-typing-indicator.js.map +1 -1
  130. package/dist/components/{p-B9jvSGid.js → p-9dQQSgwT.js} +2 -2
  131. package/dist/components/p-B3rbhRAk.js +2 -0
  132. package/dist/components/p-B3rbhRAk.js.map +1 -0
  133. package/dist/components/{p-BWUTr_XN.js → p-BJMRBHKW.js} +2 -2
  134. package/dist/components/p-BJMRBHKW.js.map +1 -0
  135. package/dist/components/p-BVV_rlIP.js +2 -0
  136. package/dist/components/p-BVV_rlIP.js.map +1 -0
  137. package/dist/components/p-BhxwpOH8.js +2 -0
  138. package/dist/components/{p-DpyTrZa2.js.map → p-BhxwpOH8.js.map} +1 -1
  139. package/dist/components/p-Bi_bxbih.js +2 -0
  140. package/dist/components/{p-Dqwcw1-m.js.map → p-Bi_bxbih.js.map} +1 -1
  141. package/dist/components/p-BtEjlcB9.js +2 -0
  142. package/dist/components/{p-DABj3qTX.js.map → p-BtEjlcB9.js.map} +1 -1
  143. package/dist/components/{p-Bs6SS34m.js → p-BwGnhInj.js} +2 -2
  144. package/dist/components/p-BwGnhInj.js.map +1 -0
  145. package/dist/components/p-C0NPJ0h2.js +2 -0
  146. package/dist/components/p-C0NPJ0h2.js.map +1 -0
  147. package/dist/components/{p-BkwBtZs3.js → p-C7bZ-jiU.js} +2 -2
  148. package/dist/components/p-CH3w-P2H.js +2 -0
  149. package/dist/components/p-CH3w-P2H.js.map +1 -0
  150. package/dist/components/{p-DxeHimqk.js → p-CH6cNXXF.js} +2 -2
  151. package/dist/components/p-CWlh7HAg.js +2 -0
  152. package/dist/components/p-CWlh7HAg.js.map +1 -0
  153. package/dist/components/p-CY19gMiz.js +2 -0
  154. package/dist/components/p-CY19gMiz.js.map +1 -0
  155. package/dist/components/p-C_ewSXTT.js +2 -0
  156. package/dist/components/p-C_ewSXTT.js.map +1 -0
  157. package/dist/components/{p-tDXHTAJh.js → p-Ce52yVXF.js} +2 -2
  158. package/dist/components/p-CoYFJD-w.js +2 -0
  159. package/dist/components/{p-webARv8d.js.map → p-CoYFJD-w.js.map} +1 -1
  160. package/dist/components/{p-BzsITTZa.js → p-Cuw2Lo2g.js} +2 -2
  161. package/dist/components/p-CydY-v7X.js +2 -0
  162. package/dist/components/p-CydY-v7X.js.map +1 -0
  163. package/dist/components/{p-LFGbdi7Y.js → p-D-xttdpn.js} +2 -2
  164. package/dist/components/{p-DfIch2Dk.js → p-D3DYxbC5.js} +2 -2
  165. package/dist/components/{p-CR7yMitN.js → p-DC7yOUQx.js} +2 -2
  166. package/dist/components/{p-liMPkhUP.js → p-DSa0Hnd3.js} +2 -2
  167. package/dist/components/p-DXewjzkM.js +2 -0
  168. package/dist/components/p-DXewjzkM.js.map +1 -0
  169. package/dist/components/p-DYqReipj.js +2 -0
  170. package/dist/components/{p-Dy_sZ-dI.js.map → p-DYqReipj.js.map} +1 -1
  171. package/dist/components/p-DbpfpeQT.js +2 -0
  172. package/dist/components/p-DbpfpeQT.js.map +1 -0
  173. package/dist/components/{p-DszI94sZ.js → p-DjPZxzIG.js} +2 -2
  174. package/dist/components/{p-DszI94sZ.js.map → p-DjPZxzIG.js.map} +1 -1
  175. package/dist/components/{p-CTV_QWC5.js → p-J6xK6Ihq.js} +2 -2
  176. package/dist/components/{p-Dfxnxx7L.js → p-jCWtxthA.js} +2 -2
  177. package/dist/docs/components.json +2137 -743
  178. package/dist/lib/utils/anchored-popup.d.ts +5 -1
  179. package/dist/lib/utils/index.js +3 -1
  180. package/dist/lib/utils/index.js.map +2 -2
  181. package/dist/mcp/cli.js +142 -18
  182. package/dist/mcp-data/registry/agent-response.json +9 -4
  183. package/dist/mcp-data/registry/agent-source-list.json +1 -1
  184. package/dist/mcp-data/registry/avatar.json +26 -7
  185. package/dist/mcp-data/registry/bar-title.json +76 -37
  186. package/dist/mcp-data/registry/bar-workflow.json +368 -0
  187. package/dist/mcp-data/registry/breadcrumb.json +205 -0
  188. package/dist/mcp-data/registry/button-filled.json +1 -1
  189. package/dist/mcp-data/registry/button-unfilled.json +1 -1
  190. package/dist/mcp-data/registry/card-data-viz-bar.json +212 -0
  191. package/dist/mcp-data/registry/card-data-viz-line.json +206 -0
  192. package/dist/mcp-data/registry/card-shell-data-viz.json +7 -0
  193. package/dist/mcp-data/registry/chart-bar-stacked.json +225 -0
  194. package/dist/mcp-data/registry/chart-bar.json +9 -2
  195. package/dist/mcp-data/registry/chart-legend.json +29 -3
  196. package/dist/mcp-data/registry/chart-line.json +4 -2
  197. package/dist/mcp-data/registry/checkbox.json +1 -1
  198. package/dist/mcp-data/registry/conversation-list-item.json +2 -2
  199. package/dist/mcp-data/registry/conversation-list-section.json +2 -2
  200. package/dist/mcp-data/registry/conversation-list.json +36 -9
  201. package/dist/mcp-data/registry/markdown.json +15 -10
  202. package/dist/mcp-data/registry/menu.json +9 -7
  203. package/dist/mcp-data/registry/message-scroller.json +6 -4
  204. package/dist/mcp-data/registry/message.json +3 -2
  205. package/dist/mcp-data/registry/panel-tool-search.json +1 -1
  206. package/dist/mcp-data/registry/registry.json +863 -74
  207. package/dist/mcp-data/registry/scroll-overlay.json +183 -0
  208. package/dist/mcp-data/registry/shell-gradient-swatch.json +1 -1
  209. package/dist/mcp-data/registry/shell-page.json +40 -19
  210. package/dist/mcp-data/registry/slider.json +1 -1
  211. package/dist/mcp-data/registry/switch.json +1 -1
  212. package/dist/mcp-data/registry/tab-group.json +1 -1
  213. package/dist/mcp-data/registry/text.json +1 -1
  214. package/dist/mcp-data/registry/typing-indicator.json +7 -7
  215. package/dist/react/components.d.ts +6 -0
  216. package/dist/react/components.js +6 -0
  217. package/dist/react/ds-bar-title.d.ts +2 -1
  218. package/dist/react/ds-bar-title.js +1 -0
  219. package/dist/react/ds-bar-workflow.d.ts +14 -0
  220. package/dist/react/ds-bar-workflow.js +16 -0
  221. package/dist/react/ds-breadcrumb.d.ts +12 -0
  222. package/dist/react/ds-breadcrumb.js +12 -0
  223. package/dist/react/ds-card-data-viz-bar.d.ts +12 -0
  224. package/dist/react/ds-card-data-viz-bar.js +12 -0
  225. package/dist/react/ds-card-data-viz-line.d.ts +12 -0
  226. package/dist/react/ds-card-data-viz-line.js +12 -0
  227. package/dist/react/ds-chart-bar-stacked.d.ts +9 -0
  228. package/dist/react/ds-chart-bar-stacked.js +12 -0
  229. package/dist/react/ds-scroll-overlay.d.ts +12 -0
  230. package/dist/react/ds-scroll-overlay.js +12 -0
  231. package/dist/styles/prose.css +215 -0
  232. package/dist/types/components/Avatar/Avatar.d.ts +4 -1
  233. package/dist/types/components/BarTitle/BarTitle.d.ts +14 -5
  234. package/dist/types/components/BarTitle/bar-title-types.d.ts +0 -1
  235. package/dist/types/components/BarWorkflow/BarWorkflow.d.ts +37 -0
  236. package/dist/types/components/BarWorkflow/bar-workflow-types.d.ts +12 -0
  237. package/dist/types/components/Breadcrumb/Breadcrumb.d.ts +31 -0
  238. package/dist/types/components/Breadcrumb/breadcrumb-types.d.ts +17 -0
  239. package/dist/types/components/CardDataVizBar/CardDataVizBar.d.ts +24 -0
  240. package/dist/types/components/CardDataVizBar/index.d.ts +2 -0
  241. package/dist/types/components/CardDataVizLine/CardDataVizLine.d.ts +24 -0
  242. package/dist/types/components/CardDataVizLine/index.d.ts +2 -0
  243. package/dist/types/components/ChartBarStacked/ChartBarStacked.d.ts +15 -0
  244. package/dist/types/components/ChartBarStacked/index.d.ts +3 -0
  245. package/dist/types/components/ChartLegend/ChartLegend.d.ts +3 -0
  246. package/dist/types/components/ConversationList/ConversationList.d.ts +12 -0
  247. package/dist/types/components/Menu/Menu.d.ts +1 -2
  248. package/dist/types/components/MessageScroller/MessageScroller.d.ts +1 -6
  249. package/dist/types/components/ScrollOverlay/ScrollOverlay.d.ts +28 -0
  250. package/dist/types/components/ShellPage/ShellPage.d.ts +19 -7
  251. package/dist/types/components/ShellPage/shell-page-responsive.d.ts +0 -8
  252. package/dist/types/components/TypingIndicator/TypingIndicator.d.ts +1 -1
  253. package/dist/types/components.d.ts +572 -26
  254. package/dist/types/stories/isolated-overlay-docs.d.ts +13 -0
  255. package/dist/types/utils/anchored-popup.d.ts +5 -1
  256. package/dist/types/utils/scroll-overlay-controller.d.ts +35 -0
  257. package/package.json +4 -3
  258. package/dist/components/p-BWUTr_XN.js.map +0 -1
  259. package/dist/components/p-BfEjWe8U.js +0 -2
  260. package/dist/components/p-BfEjWe8U.js.map +0 -1
  261. package/dist/components/p-Bs6SS34m.js.map +0 -1
  262. package/dist/components/p-C3Zfn7hz.js +0 -2
  263. package/dist/components/p-C3Zfn7hz.js.map +0 -1
  264. package/dist/components/p-CUik7PCi.js +0 -2
  265. package/dist/components/p-CUik7PCi.js.map +0 -1
  266. package/dist/components/p-CzBnvtcz.js +0 -2
  267. package/dist/components/p-CzBnvtcz.js.map +0 -1
  268. package/dist/components/p-DABj3qTX.js +0 -2
  269. package/dist/components/p-DpyTrZa2.js +0 -2
  270. package/dist/components/p-Dqwcw1-m.js +0 -2
  271. package/dist/components/p-Dy3Skua8.js +0 -2
  272. package/dist/components/p-Dy3Skua8.js.map +0 -1
  273. package/dist/components/p-Dy_sZ-dI.js +0 -2
  274. package/dist/components/p-l6PmnW_P.js +0 -2
  275. package/dist/components/p-l6PmnW_P.js.map +0 -1
  276. package/dist/components/p-webARv8d.js +0 -2
  277. /package/dist/components/{p-B9jvSGid.js.map → p-9dQQSgwT.js.map} +0 -0
  278. /package/dist/components/{p-BkwBtZs3.js.map → p-C7bZ-jiU.js.map} +0 -0
  279. /package/dist/components/{p-DxeHimqk.js.map → p-CH6cNXXF.js.map} +0 -0
  280. /package/dist/components/{p-tDXHTAJh.js.map → p-Ce52yVXF.js.map} +0 -0
  281. /package/dist/components/{p-BzsITTZa.js.map → p-Cuw2Lo2g.js.map} +0 -0
  282. /package/dist/components/{p-LFGbdi7Y.js.map → p-D-xttdpn.js.map} +0 -0
  283. /package/dist/components/{p-DfIch2Dk.js.map → p-D3DYxbC5.js.map} +0 -0
  284. /package/dist/components/{p-CR7yMitN.js.map → p-DC7yOUQx.js.map} +0 -0
  285. /package/dist/components/{p-liMPkhUP.js.map → p-DSa0Hnd3.js.map} +0 -0
  286. /package/dist/components/{p-CTV_QWC5.js.map → p-J6xK6Ihq.js.map} +0 -0
  287. /package/dist/components/{p-Dfxnxx7L.js.map → p-jCWtxthA.js.map} +0 -0
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Storybook's inline docs canvas applies a transform for zooming. That
3
+ * transform changes the containing block for viewport-fixed overlays, so an
4
+ * otherwise-correct popup can be offset from its trigger. Render affected
5
+ * stories in an iframe to give them the same coordinate space as Canvas.
6
+ */
7
+ export declare const isolatedOverlayDocs: (iframeHeight: string) => {
8
+ story: {
9
+ inline: boolean;
10
+ iframeHeight: string;
11
+ };
12
+ };
13
+ //# sourceMappingURL=isolated-overlay-docs.d.ts.map
@@ -12,7 +12,11 @@ export interface AnchoredPopupPositionInput {
12
12
  viewportWidth: number;
13
13
  viewportHeight: number;
14
14
  }
15
- /** Pure viewport-fixed anchored-popup layout math shared by menus and selects. */
15
+ /**
16
+ * Pure viewport-fixed anchored-popup layout math shared by menus and selects.
17
+ * `side` is preferred: when the popup does not fit there and the opposite side
18
+ * has more room, placement flips on the main axis before viewport clamping.
19
+ */
16
20
  export declare function computeAnchoredPopupPosition(input: AnchoredPopupPositionInput): {
17
21
  x: number;
18
22
  y: number;
@@ -0,0 +1,35 @@
1
+ export declare const SCROLL_OVERLAY_BLOCK_SIZE = "--ds-scroll-overlay-block-size";
2
+ export declare const SCROLL_OVERLAY_CONTENT_BLOCK_SIZE = "--ds-scroll-overlay-content-block-size";
3
+ export declare const SCROLL_OVERLAY_FADE_BLOCK_SIZE = "--ds-scroll-overlay-fade-block-size";
4
+ interface ScrollOverlayControllerOptions {
5
+ host: HTMLElement;
6
+ viewport: HTMLElement;
7
+ content: HTMLElement;
8
+ overlay: HTMLElement;
9
+ overlayContentSelector?: string;
10
+ onGeometryChange?: () => void;
11
+ }
12
+ /**
13
+ * Keeps a content-owned alpha mask pinned behind a fixed overlay.
14
+ *
15
+ * The mask lives on the long content element so native scrollbars stay outside
16
+ * the fade and the actual parent surface shows through. Its stop positions are
17
+ * therefore expressed in content coordinates and must follow scrollTop.
18
+ */
19
+ export declare class ScrollOverlayController {
20
+ private readonly options;
21
+ private resizeObserver?;
22
+ private overlayBlockSize;
23
+ private overlayContentBlockSize;
24
+ private fadeBlockSize;
25
+ constructor(options: ScrollOverlayControllerOptions);
26
+ connect(): void;
27
+ disconnect(): void;
28
+ sync(): void;
29
+ getOverlayBlockSize(): number;
30
+ getOverlayContentBlockSize(): number;
31
+ private syncOverlayGeometry;
32
+ private syncFadeWindow;
33
+ }
34
+ export {};
35
+ //# sourceMappingURL=scroll-overlay-controller.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ds-mo/ui",
3
- "version": "12.1.0",
3
+ "version": "12.3.0",
4
4
  "description": "CompoMo — composable web components styled with TokoMo design tokens",
5
5
  "keywords": [
6
6
  "web-components",
@@ -64,6 +64,7 @@
64
64
  "types": "./dist/lib/toast/index.d.ts",
65
65
  "import": "./dist/lib/toast/index.js"
66
66
  },
67
+ "./prose.css": "./dist/styles/prose.css",
67
68
  "./agent": "./dist/agent.json",
68
69
  "./agent/patterns": "./dist/agent-patterns.json",
69
70
  "./dist/components/*": "./dist/components/*",
@@ -76,7 +77,7 @@
76
77
  "prebuild": "npm run clean && npm run clean:framework-proxies && node scripts/generate-icon-catalog.mjs",
77
78
  "pretypecheck": "node scripts/generate-icon-catalog.mjs",
78
79
  "pretest": "node scripts/generate-icon-catalog.mjs",
79
- "build": "stencil build && node scripts/verify-framework-proxies.mjs && node scripts/patch-index-types.mjs && node scripts/verify-icons-externalized.mjs && node scripts/write-build-stamp.mjs && node scripts/build-lib-exports.mjs && node scripts/build-framework-exports.mjs && node scripts/build-registry.mjs && node scripts/build-agent-manifest.mjs && node scripts/build-mcp.mjs && node scripts/verify-framework-proxies.mjs",
80
+ "build": "stencil build && node scripts/verify-framework-proxies.mjs && node scripts/patch-index-types.mjs && node scripts/verify-icons-externalized.mjs && node scripts/write-build-stamp.mjs && node scripts/build-lib-exports.mjs && node scripts/build-style-exports.mjs && node scripts/build-framework-exports.mjs && node scripts/build-registry.mjs && node scripts/build-agent-manifest.mjs && node scripts/build-mcp.mjs && node scripts/verify-framework-proxies.mjs",
80
81
  "verify:pack": "node scripts/verify-framework-proxies.mjs && node scripts/verify-npm-pack.mjs && node scripts/verify-package-imports.mjs",
81
82
  "test": "node --import tsx/esm --test tests/*.test.ts",
82
83
  "test:e2e": "npm run build && playwright test",
@@ -95,7 +96,7 @@
95
96
  "typecheck": "tsc --noEmit",
96
97
  "typecheck:storybook": "tsc -p tsconfig.storybook-tests.json",
97
98
  "lint": "eslint src/ .storybook/vitest.setup.ts vitest.config.ts tests/ci-browser-scope.test.ts && npm run lint:css",
98
- "lint:css": "stylelint \"src/wc/components/**/*.css\" \"src/wc/utils/**/*.css\"",
99
+ "lint:css": "stylelint \"src/wc/components/**/*.css\" \"src/wc/styles/**/*.css\" \"src/wc/utils/**/*.css\"",
99
100
  "registry:build": "node scripts/build-registry.mjs",
100
101
  "agent:validate": "node scripts/validate-agent-contract.mjs",
101
102
  "agent:validate:trilogy": "node scripts/validate-trilogy-manifests.mjs",
@@ -1 +0,0 @@
1
- {"version":3,"names":["lengthPxCache","Map","probeEl","getProbeElement","document","createElement","setAttribute","style","cssText","documentElement","appendChild","resolveCssLengthPx","value","fallback","resolved","undefined","trimmed","trim","cached","get","test","n","Number","set","pxMatch","match","px","parseFloat","cssLength","probe","width","getBoundingClientRect"],"sources":["src/wc/utils/resolve-css-length-px.ts"],"sourcesContent":["const lengthPxCache = new Map<string, number>();\n\nlet probeEl: HTMLElement | null = null;\n\nfunction getProbeElement(): HTMLElement | null {\n if (typeof document === 'undefined') return null;\n\n if (!probeEl) {\n probeEl = document.createElement('div');\n probeEl.setAttribute('aria-hidden', 'true');\n probeEl.style.cssText =\n 'position:absolute;visibility:hidden;pointer-events:none;top:0;left:0;width:0;height:0;overflow:hidden;';\n document.documentElement.appendChild(probeEl);\n }\n\n return probeEl;\n}\n\n/** Clear session cache (tests only). */\nexport function clearCssLengthPxCache(): void {\n lengthPxCache.clear();\n}\n\n/**\n * Resolve a CSS length to pixels for layout math.\n * Numbers pass through; `var(--dimension-*)`, `calc(...)`, and `16px` resolve via a hidden probe.\n */\nexport function resolveCssLengthPx(\n value: number | string | undefined,\n fallback: number | string,\n): number {\n const resolved = value === undefined || value === null || value === '' ? fallback : value;\n if (typeof resolved === 'number') return resolved;\n\n const trimmed = resolved.trim();\n if (!trimmed) return resolveCssLengthPx(fallback, 0);\n\n const cached = lengthPxCache.get(trimmed);\n if (cached !== undefined) return cached;\n\n if (/^-?\\d+(\\.\\d+)?$/.test(trimmed)) {\n const n = Number(trimmed);\n lengthPxCache.set(trimmed, n);\n return n;\n }\n\n const pxMatch = trimmed.match(/^(-?\\d+(\\.\\d+)?)px$/);\n if (pxMatch) {\n const px = parseFloat(pxMatch[1]);\n lengthPxCache.set(trimmed, px);\n return px;\n }\n\n const cssLength = /^--[\\w-]+$/.test(trimmed) ? `var(${trimmed})` : trimmed;\n\n const probe = getProbeElement();\n if (!probe) {\n return typeof fallback === 'number' ? fallback : 0;\n }\n\n probe.style.width = cssLength;\n const px = probe.getBoundingClientRect().width;\n probe.style.width = '';\n lengthPxCache.set(trimmed, px);\n return px;\n}\n"],"mappings":"AAAA,MAAMA,EAAgB,IAAIC,IAE1B,IAAIC,EAA8B,KAElC,SAASC,IACP,UAAWC,WAAa,YAAa,OAAO,KAE5C,IAAKF,EAAS,CACZA,EAAUE,SAASC,cAAc,OACjCH,EAAQI,aAAa,cAAe,QACpCJ,EAAQK,MAAMC,QACZ,yGACFJ,SAASK,gBAAgBC,YAAYR,E,CAGvC,OAAOA,CACT,CAWM,SAAUS,EACdC,EACAC,GAEA,MAAMC,EAAWF,IAAUG,WAAaH,IAAU,MAAQA,IAAU,GAAKC,EAAWD,EACpF,UAAWE,IAAa,SAAU,OAAOA,EAEzC,MAAME,EAAUF,EAASG,OACzB,IAAKD,EAAS,OAAOL,EAAmBE,EAAU,GAElD,MAAMK,EAASlB,EAAcmB,IAAIH,GACjC,GAAIE,IAAWH,UAAW,OAAOG,EAEjC,GAAI,kBAAkBE,KAAKJ,GAAU,CACnC,MAAMK,EAAIC,OAAON,GACjBhB,EAAcuB,IAAIP,EAASK,GAC3B,OAAOA,C,CAGT,MAAMG,EAAUR,EAAQS,MAAM,uBAC9B,GAAID,EAAS,CACX,MAAME,EAAKC,WAAWH,EAAQ,IAC9BxB,EAAcuB,IAAIP,EAASU,GAC3B,OAAOA,C,CAGT,MAAME,EAAY,aAAaR,KAAKJ,GAAW,OAAOA,KAAaA,EAEnE,MAAMa,EAAQ1B,IACd,IAAK0B,EAAO,CACV,cAAchB,IAAa,SAAWA,EAAW,C,CAGnDgB,EAAMtB,MAAMuB,MAAQF,EACpB,MAAMF,EAAKG,EAAME,wBAAwBD,MACzCD,EAAMtB,MAAMuB,MAAQ,GACpB9B,EAAcuB,IAAIP,EAASU,GAC3B,OAAOA,CACT,Q","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{p as s,H as e,h as t,a as n,t as r}from"./index.js";import{d as i}from"./p-BAfG3M8z.js";import{d as a}from"./p-Bs6SS34m.js";const o=()=>`.sc-ds-agent-source-list-h{display:block}.agent-sources.sc-ds-agent-source-list{border-block-start:var(--dimension-stroke-width-012) solid var(--color-border-tertiary)}summary.sc-ds-agent-source-list{align-items:center;cursor:pointer;display:flex;gap:var(--dimension-space-050);list-style:none;padding-block:var(--dimension-space-075)}summary.sc-ds-agent-source-list::-webkit-details-marker{display:none}details[open].sc-ds-agent-source-list summary.sc-ds-agent-source-list ds-icon.sc-ds-agent-source-list{transform:rotate(90deg)}ol.sc-ds-agent-source-list{display:grid;gap:var(--dimension-space-075);margin:0;padding:0 0 var(--dimension-space-075) var(--dimension-space-150)}li.sc-ds-agent-source-list{display:grid;gap:var(--dimension-space-025)}a.sc-ds-agent-source-list{align-items:center;color:inherit;display:inline-flex;gap:var(--dimension-space-025);width:fit-content}@media (prefers-reduced-motion: no-preference){summary.sc-ds-agent-source-list ds-icon.sc-ds-agent-source-list{transition:transform var(--effect-motion-short-2)}}`;const c=s(class s extends e{constructor(s){super();if(s!==false){this.__registerHost()}this.items=[];this.heading="Sources";this.open=false}safeUrl(s){try{const e=new URL(s,document.baseURI);return e.protocol==="http:"||e.protocol==="https:"?e.href:undefined}catch{return undefined}}render(){if(!this.items.length)return null;return t(n,null,t("details",{class:"agent-sources",open:this.open},t("summary",null,t("ds-icon",{name:"ChevronRight",size:"xs",color:"inherit"}),t("ds-text",{variant:"text-body-small",emphasis:true},this.heading," · ",this.items.length)),t("ol",null,this.items.map((s=>{const e=this.safeUrl(s.url);return t("li",null,e?t("a",{href:e,target:"_blank",rel:"noopener noreferrer"},t("ds-text",{variant:"text-body-small",emphasis:true},s.title),t("ds-icon",{name:"ExternalLink",size:"xs",color:"inherit"})):t("ds-text",{variant:"text-body-small",emphasis:true},s.title),s.description?t("ds-text",{variant:"text-caption",color:"secondary"},s.description):null)})))))}static get style(){return o()}},[2,"ds-agent-source-list",{items:[16],heading:[1],open:[4]}]);function d(){if(typeof customElements==="undefined"){return}const s=["ds-agent-source-list","ds-icon","ds-text"];s.forEach((s=>{switch(s){case"ds-agent-source-list":if(!customElements.get(r(s))){customElements.define(r(s),c)}break;case"ds-icon":if(!customElements.get(r(s))){i()}break;case"ds-text":if(!customElements.get(r(s))){a()}break}}))}d();export{c as A,d};
2
- //# sourceMappingURL=p-BfEjWe8U.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["agentSourceListCss","AgentSourceList","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","items","heading","open","safeUrl","value","parsed","URL","document","baseURI","protocol","href","undefined","render","length","h","Host","class","name","size","color","variant","emphasis","map","source","url","target","rel","title","description"],"sources":["src/wc/components/AgentSourceList/AgentSourceList.css?tag=ds-agent-source-list&encapsulation=scoped","src/wc/components/AgentSourceList/AgentSourceList.tsx"],"sourcesContent":[":host { display: block; }\n.agent-sources { border-block-start: var(--dimension-stroke-width-012) solid var(--color-border-tertiary); }\nsummary { align-items: center; cursor: pointer; display: flex; gap: var(--dimension-space-050); list-style: none; padding-block: var(--dimension-space-075); }\nsummary::-webkit-details-marker { display: none; }\ndetails[open] summary ds-icon { transform: rotate(90deg); }\nol { display: grid; gap: var(--dimension-space-075); margin: 0; padding: 0 0 var(--dimension-space-075) var(--dimension-space-150); }\nli { display: grid; gap: var(--dimension-space-025); }\na { align-items: center; color: inherit; display: inline-flex; gap: var(--dimension-space-025); width: fit-content; }\n\n@media (prefers-reduced-motion: no-preference) { summary ds-icon { transition: transform var(--effect-motion-short-2); } }\n","import { Component, Prop, h, Host } from '@stencil/core';\nimport type { AgentSource } from '../conversation-types';\n\n@Component({ tag: 'ds-agent-source-list', styleUrl: 'AgentSourceList.css', scoped: true })\nexport class AgentSourceList {\n @Prop() items: AgentSource[] = [];\n @Prop() heading: string = 'Sources';\n @Prop() open: boolean = false;\n\n private safeUrl(value: string) {\n try {\n const parsed = new URL(value, document.baseURI);\n return parsed.protocol === 'http:' || parsed.protocol === 'https:' ? parsed.href : undefined;\n } catch { return undefined; }\n }\n\n render() {\n if (!this.items.length) return null;\n return (\n <Host>\n <details class=\"agent-sources\" open={this.open}>\n <summary>\n <ds-icon name=\"ChevronRight\" size=\"xs\" color=\"inherit\" />\n <ds-text variant=\"text-body-small\" emphasis>{this.heading} · {this.items.length}</ds-text>\n </summary>\n <ol>\n {this.items.map(source => {\n const href = this.safeUrl(source.url);\n return <li>\n {href\n ? <a href={href} target=\"_blank\" rel=\"noopener noreferrer\"><ds-text variant=\"text-body-small\" emphasis>{source.title}</ds-text><ds-icon name=\"ExternalLink\" size=\"xs\" color=\"inherit\" /></a>\n : <ds-text variant=\"text-body-small\" emphasis>{source.title}</ds-text>}\n {source.description ? <ds-text variant=\"text-caption\" color=\"secondary\">{source.description}</ds-text> : null}\n </li>;\n })}\n </ol>\n </details>\n </Host>\n );\n }\n}\n"],"mappings":"mIAAA,MAAMA,EAAqB,IAAM,ghC,MCIpBC,EAAeC,EAAA,MAAAD,UAAAE,EAD5B,WAAAC,CAAAC,G,4CAEUC,KAAAC,MAAuB,GACvBD,KAAAE,QAAkB,UAClBF,KAAAG,KAAgB,KAiCzB,CA/BS,OAAAC,CAAQC,GACd,IACE,MAAMC,EAAS,IAAIC,IAAIF,EAAOG,SAASC,SACvC,OAAOH,EAAOI,WAAa,SAAWJ,EAAOI,WAAa,SAAWJ,EAAOK,KAAOC,S,CACnF,MAAQ,OAAOA,S,EAGnB,MAAAC,GACE,IAAKb,KAAKC,MAAMa,OAAQ,OAAO,KAC/B,OACEC,EAACC,EAAI,KACHD,EAAA,WAASE,MAAM,gBAAgBd,KAAMH,KAAKG,MACxCY,EAAA,eACEA,EAAA,WAASG,KAAK,eAAeC,KAAK,KAAKC,MAAM,YAC7CL,EAAA,WAASM,QAAQ,kBAAkBC,SAAQ,MAAEtB,KAAKE,QAAO,MAAKF,KAAKC,MAAMa,SAE3EC,EAAA,UACGf,KAAKC,MAAMsB,KAAIC,IACd,MAAMb,EAAOX,KAAKI,QAAQoB,EAAOC,KACjC,OAAOV,EAAA,UACJJ,EACGI,EAAA,KAAGJ,KAAMA,EAAMe,OAAO,SAASC,IAAI,uBAAsBZ,EAAA,WAASM,QAAQ,kBAAkBC,SAAQ,MAAEE,EAAOI,OAAgBb,EAAA,WAASG,KAAK,eAAeC,KAAK,KAAKC,MAAM,aAC1KL,EAAA,WAASM,QAAQ,kBAAkBC,SAAQ,MAAEE,EAAOI,OACvDJ,EAAOK,YAAcd,EAAA,WAASM,QAAQ,eAAeD,MAAM,aAAaI,EAAOK,aAAyB,KACtG,M","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["textVariantClass","variant","replace","textDisplayClass","element","textCss","Text","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","emphasis","color","italic","shimmer","lineTruncation","fontFeature","as","render","Tag","isCustomColor","c","startsWith","truncationLines","Number","cls","wrap","decoration","align","style","undefined","extraProps","for","textId","h","Host","key","class"],"sources":["src/wc/components/Text/text-utils.ts","src/wc/components/Text/Text.css?tag=ds-text&encapsulation=scoped","src/wc/components/Text/Text.tsx"],"sourcesContent":["import type { TextElement, TextVariant } from './text-types';\n\n/** `text-body-medium` → `ds-text--body-medium` */\nexport function textVariantClass(variant: TextVariant): string {\n return `ds-text--${variant.replace(/^text-/, '')}`;\n}\n\n/** Inline semantics get a measurable inline box; paragraphs/headings get a block box. */\nexport function textDisplayClass(element: TextElement): string {\n return element === 'span' || element === 'label'\n ? 'ds-text--inline-box'\n : 'ds-text--block-box';\n}\n","@import '../../utils/typography.css';\n@import '../../utils/shimmer.css';\n\n:host {\n box-sizing: border-box;\n max-width: 100%;\n min-width: 0;\n margin: 0;\n padding: 0;\n border: 0;\n font-family: var(--typography-font-family);\n}\n\n:host(:where(.ds-text--inline-box)) {\n display: inline-block;\n}\n\n:host(:where(.ds-text--block-box)) {\n display: block;\n width: 100%;\n}\n\n/*\n * The host is the measurable typography box. The semantic inner element fills\n * it and inherits every text metric without adding margins, padding, or its own\n * line-height strut. One rendered line therefore measures exactly one token\n * line-height; N lines measure N × that token.\n */\n.ds-text__element {\n display: block;\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n margin: 0;\n padding: 0;\n border: 0;\n font: inherit;\n line-height: inherit;\n letter-spacing: inherit;\n color: inherit;\n text-transform: inherit;\n text-align: inherit;\n text-decoration: inherit;\n font-style: inherit;\n font-variant-numeric: inherit;\n font-feature-settings: inherit;\n -webkit-user-select: inherit;\n user-select: inherit;\n white-space: inherit;\n text-wrap: inherit;\n overflow-wrap: inherit;\n word-break: inherit;\n /* Consumer truncation on the host (PanelNav, ChartLegend, …) must reach the\n text node — overflow/text-overflow are not inherited by default. */\n overflow: inherit;\n text-overflow: inherit;\n}\n\n/* ── Truncation ─────────────────────────────────────────────────────────── */\n\n:host(.ds-text--truncate-1) {\n overflow: hidden;\n}\n\n:host(.ds-text--truncate-1) .ds-text__element {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n:host(.ds-text--truncate-2),\n:host(.ds-text--truncate-3),\n:host(.ds-text--truncate-4),\n:host(.ds-text--truncate-5) {\n overflow: hidden;\n}\n\n:host(.ds-text--truncate-2) .ds-text__element,\n:host(.ds-text--truncate-3) .ds-text__element,\n:host(.ds-text--truncate-4) .ds-text__element,\n:host(.ds-text--truncate-5) .ds-text__element {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: break-word;\n}\n\n:host(.ds-text--truncate-2) .ds-text__element { -webkit-line-clamp: 2; }\n:host(.ds-text--truncate-3) .ds-text__element { -webkit-line-clamp: 3; }\n:host(.ds-text--truncate-4) .ds-text__element { -webkit-line-clamp: 4; }\n:host(.ds-text--truncate-5) .ds-text__element { -webkit-line-clamp: 5; }\n\n/* ── Wrap ───────────────────────────────────────────────────────────────── */\n\n:host(.ds-text--nowrap),\n:host(.ds-text--nowrap) .ds-text__element {\n white-space: nowrap;\n word-break: normal;\n overflow: hidden;\n text-overflow: ellipsis;\n min-width: 0;\n}\n\n:host(.ds-text--balance),\n:host(.ds-text--balance) .ds-text__element { text-wrap: balance; }\n\n:host(.ds-text--pretty),\n:host(.ds-text--pretty) .ds-text__element { text-wrap: pretty; }\n\n/* ── Color ──────────────────────────────────────────────────────────────── */\n\n:host(.ds-text--color-primary) { color: var(--color-foreground-primary); }\n:host(.ds-text--color-secondary) { color: var(--color-foreground-secondary); }\n:host(.ds-text--color-tertiary) { color: var(--color-foreground-tertiary); }\n:host(.ds-text--color-quaternary) { color: var(--color-foreground-quaternary); }\n:host(.ds-text--color-brand) { color: var(--color-foreground-bold-brand); }\n:host(.ds-text--color-negative) { color: var(--color-foreground-bold-negative); }\n:host(.ds-text--color-positive) { color: var(--color-foreground-bold-positive); }\n:host(.ds-text--color-warning) { color: var(--color-foreground-bold-warning); }\n:host(.ds-text--color-caution) { color: var(--color-foreground-bold-caution); }\n:host(.ds-text--color-ai) { color: var(--color-foreground-bold-ai); }\n:host(.ds-text--color-on-strong) { color: var(--color-foreground-on-strong-background-primary); }\n:host(.ds-text--color-on-bold) { color: var(--color-foreground-on-bold-background-primary); }\n:host(.ds-text--color-inherit) { color: inherit; }\n\n/* ── Decorations ─────────────────────────────────────────────────────────── */\n\n:host(.ds-text--decoration-underline) {\n text-decoration: underline;\n text-underline-offset: 2px;\n text-decoration-thickness: 1px;\n}\n\n:host(.ds-text--decoration-dotted-underline) {\n text-decoration: underline dotted;\n text-underline-offset: 2px;\n text-decoration-thickness: 1px;\n}\n\n/* ── Style ──────────────────────────────────────────────────────────────── */\n\n:host(.ds-text--italic) { font-style: italic; }\n\n:host(.ds-text--font-feature-tabular-nums) {\n font-variant-numeric: tabular-nums;\n font-feature-settings: 'tnum';\n}\n\n/* ── Align ──────────────────────────────────────────────────────────────── */\n\n:host(.ds-text--align-left) { text-align: left; }\n:host(.ds-text--align-center) { text-align: center; }\n:host(.ds-text--align-right) { text-align: right; }\n","import { Component, Prop, h, Host } from '@stencil/core';\nimport { textDisplayClass, textVariantClass } from './text-utils';\nimport type {\n TextAlign,\n TextColor,\n TextDecoration,\n TextElement,\n TextFontFeature,\n TextVariant,\n LineTruncation,\n TextWrap,\n} from './text-types';\n\n@Component({\n tag: 'ds-text',\n styleUrl: 'Text.css',\n scoped: true,\n})\nexport class Text {\n @Prop() variant: TextVariant = 'text-body-medium';\n /**\n * Heavier weight + tighter letter-spacing for the variant.\n * `false` (default): one step below emphasis (display semibold, title/body\n * medium, caption medium).\n * `true`: display bold, title/caption semibold, body medium.\n */\n @Prop() emphasis: boolean = false;\n /**\n * Semantic foreground color token or CSS variable. `tertiary` and the\n * still-fainter `quaternary` are restricted to genuinely inactive/disabled\n * UI content or purely decorative content; prefer the owning control's\n * inactive state whenever one exists.\n */\n @Prop() color: TextColor = 'inherit';\n /** Link underline or dotted hidden-interaction affordance; does not add semantics. */\n @Prop() decoration: TextDecoration | undefined;\n @Prop() italic: boolean = false;\n /** Animate the visible glyphs with the shared loading shimmer treatment. */\n @Prop() shimmer: boolean = false;\n @Prop() align: TextAlign | undefined;\n @Prop() lineTruncation: LineTruncation = 'none';\n @Prop() wrap: TextWrap | undefined;\n @Prop() fontFeature: TextFontFeature = 'normal';\n @Prop() as: TextElement = 'p';\n /** Maps to `for` attribute on <label> elements. */\n @Prop() for: string | undefined;\n /** Forwarded to the inner element (e.g. aria-labelledby targets). */\n @Prop() textId: string | undefined;\n\n render() {\n // Polymorphic element: TSX treats a variable tag as a component, so a\n // dynamic intrinsic element name must be cast to `any` to render.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const Tag = this.as as any;\n const isCustomColor = (c: TextColor) => typeof c === 'string' && c.startsWith('var(--');\n const truncationLines = Number(this.lineTruncation);\n\n const cls: Record<string, boolean> = {\n 'ds-text': true,\n [textDisplayClass(this.as)]: true,\n [textVariantClass(this.variant)]: true,\n 'ds-text--emphasis': this.emphasis,\n 'ds-text--regular': !this.emphasis,\n 'ds-text--nowrap': this.wrap === 'nowrap',\n 'ds-text--balance': this.wrap === 'balance',\n 'ds-text--pretty': this.wrap === 'pretty',\n 'ds-text--truncate-1': truncationLines === 1 && this.wrap !== 'nowrap',\n 'ds-text--truncate-2': truncationLines === 2 && this.wrap !== 'nowrap',\n 'ds-text--truncate-3': truncationLines === 3 && this.wrap !== 'nowrap',\n 'ds-text--truncate-4': truncationLines === 4 && this.wrap !== 'nowrap',\n 'ds-text--truncate-5': truncationLines === 5 && this.wrap !== 'nowrap',\n 'ds-text--color-primary': this.color === 'primary',\n 'ds-text--color-secondary': this.color === 'secondary',\n 'ds-text--color-tertiary': this.color === 'tertiary',\n 'ds-text--color-quaternary': this.color === 'quaternary',\n 'ds-text--color-brand': this.color === 'brand',\n 'ds-text--color-negative': this.color === 'negative',\n 'ds-text--color-positive': this.color === 'positive',\n 'ds-text--color-warning': this.color === 'warning',\n 'ds-text--color-caution': this.color === 'caution',\n 'ds-text--color-ai': this.color === 'ai',\n 'ds-text--color-on-strong': this.color === 'on-strong',\n 'ds-text--color-on-bold': this.color === 'on-bold',\n 'ds-text--color-inherit': this.color === 'inherit',\n 'ds-text--decoration-underline': this.decoration === 'underline',\n 'ds-text--decoration-dotted-underline': this.decoration === 'dotted-underline',\n 'ds-text--italic': this.italic,\n 'ds-text--align-left': this.align === 'left',\n 'ds-text--align-center': this.align === 'center',\n 'ds-text--align-right': this.align === 'right',\n 'ds-text--font-feature-tabular-nums': this.fontFeature === 'tabular-nums',\n };\n\n const style = this.color && isCustomColor(this.color)\n ? { color: this.color as string }\n : undefined;\n\n const extraProps: Record<string, string> = {};\n if (this.as === 'label' && this.for) extraProps['for'] = this.for;\n if (this.textId) extraProps['id'] = this.textId;\n\n return (\n <Host class={cls} style={style}>\n <Tag\n class={{\n 'ds-text__element': true,\n 'ds-shimmer-text': this.shimmer,\n }}\n {...extraProps}\n >\n <slot />\n </Tag>\n </Host>\n );\n }\n}\n"],"mappings":"2DAGM,SAAUA,EAAiBC,GAC/B,MAAO,YAAYA,EAAQC,QAAQ,SAAU,KAC/C,CAGM,SAAUC,EAAiBC,GAC/B,OAAOA,IAAY,QAAUA,IAAY,QACrC,sBACA,oBACN,CCZA,MAAMC,EAAU,IAAM,ywV,MCkBTC,EAAIC,EAAA,MAAAD,UAAAE,EALjB,WAAAC,CAAAC,G,4CAMUC,KAAAV,QAAuB,mBAOvBU,KAAAC,SAAoB,MAOpBD,KAAAE,MAAmB,UAGnBF,KAAAG,OAAkB,MAElBH,KAAAI,QAAmB,MAEnBJ,KAAAK,eAAiC,OAEjCL,KAAAM,YAA+B,SAC/BN,KAAAO,GAAkB,GAwE3B,CAlEC,MAAAC,GAIE,MAAMC,EAAMT,KAAKO,GACjB,MAAMG,EAAiBC,UAAwBA,IAAM,UAAYA,EAAEC,WAAW,UAC9E,MAAMC,EAAkBC,OAAOd,KAAKK,gBAEpC,MAAMU,EAA+B,CACnC,UAAW,KACX,CAACvB,EAAiBQ,KAAKO,KAAM,KAC7B,CAAClB,EAAiBW,KAAKV,UAAW,KAClC,oBAAqBU,KAAKC,SAC1B,oBAAqBD,KAAKC,SAC1B,kBAAmBD,KAAKgB,OAAS,SACjC,mBAAoBhB,KAAKgB,OAAS,UAClC,kBAAmBhB,KAAKgB,OAAS,SACjC,sBAAuBH,IAAoB,GAAKb,KAAKgB,OAAS,SAC9D,sBAAuBH,IAAoB,GAAKb,KAAKgB,OAAS,SAC9D,sBAAuBH,IAAoB,GAAKb,KAAKgB,OAAS,SAC9D,sBAAuBH,IAAoB,GAAKb,KAAKgB,OAAS,SAC9D,sBAAuBH,IAAoB,GAAKb,KAAKgB,OAAS,SAC9D,yBAA4BhB,KAAKE,QAAU,UAC3C,2BAA4BF,KAAKE,QAAU,YAC3C,0BAA4BF,KAAKE,QAAU,WAC3C,4BAA6BF,KAAKE,QAAU,aAC5C,uBAA4BF,KAAKE,QAAU,QAC3C,0BAA4BF,KAAKE,QAAU,WAC3C,0BAA4BF,KAAKE,QAAU,WAC3C,yBAA4BF,KAAKE,QAAU,UAC3C,yBAA4BF,KAAKE,QAAU,UAC3C,oBAA4BF,KAAKE,QAAU,KAC3C,2BAA4BF,KAAKE,QAAU,YAC3C,yBAA4BF,KAAKE,QAAU,UAC3C,yBAA4BF,KAAKE,QAAU,UAC3C,gCAAwCF,KAAKiB,aAAe,YAC5D,uCAAwCjB,KAAKiB,aAAe,mBAC5D,kBAAmBjB,KAAKG,OACxB,sBAAyBH,KAAKkB,QAAU,OACxC,wBAAyBlB,KAAKkB,QAAU,SACxC,uBAAyBlB,KAAKkB,QAAU,QACxC,qCAAsClB,KAAKM,cAAgB,gBAG7D,MAAMa,EAAQnB,KAAKE,OAASQ,EAAcV,KAAKE,OAC3C,CAAEA,MAAOF,KAAKE,OACdkB,UAEJ,MAAMC,EAAqC,GAC3C,GAAIrB,KAAKO,KAAO,SAAWP,KAAKsB,IAAKD,EAAW,OAASrB,KAAKsB,IAC9D,GAAItB,KAAKuB,OAAQF,EAAW,MAAQrB,KAAKuB,OAEzC,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAACC,MAAOZ,EAAKI,MAAOA,GACvBK,EAACf,EAAG,CAAAiB,IAAA,2CACFC,MAAO,CACL,mBAAoB,KACpB,kBAAmB3B,KAAKI,YAEtBiB,GAEJG,EAAA,QAAAE,IAAA,8C","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{p as i,H as e,c as s,h as n,a as t,t as o}from"./index.js";import{a as r,c,r as a}from"./p-l6PmnW_P.js";import{s as d}from"./p-D1HFMTdC.js";import{d as l}from"./p-DxeHimqk.js";import{d as h}from"./p-Dqwcw1-m.js";import{d as u}from"./p-Dy_sZ-dI.js";import{d as m}from"./p-Bs6SS34m.js";import{a as f,b as p,T as v}from"./p-Dg3xLna0.js";import{r as g}from"./p-BWUTr_XN.js";const b=r;function x(i){return"variant"in i&&i.variant==="gradient-picker"}function w(i){return"variant"in i&&i.variant==="swatch-picker"}function _(i){return x(i)||w(i)}const y=()=>`.sc-ds-menu-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-menu-h:focus-visible,.ds-focus-ring.sc-ds-menu: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-menu-h,.ds-focus-ring.ds-focus-ring--visible.sc-ds-menu{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-menu-h:focus-visible,.ds-focus-ring-inset.sc-ds-menu:focus-visible{outline:none}.ds-focus-ring-inset.sc-ds-menu-h:focus-visible::after,.ds-focus-ring-inset.sc-ds-menu: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-menu-h,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-menu{outline:none}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-menu-h::after,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-menu::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}.ds-interaction-fill.sc-ds-menu-h,.ds-interaction-fill.sc-ds-menu{position:relative;z-index:0;--ds-interaction-hover:var(--color-interaction-hover);--ds-interaction-pressed:var(--color-interaction-pressed);--ds-interaction-active:var(--color-interaction-active-brand);--ds-interaction-border-width:0px;--ds-interaction-border-color:transparent}.ds-interaction-fill.sc-ds-menu-h::before,.ds-interaction-fill.sc-ds-menu::before,.ds-interaction-fill.sc-ds-menu-h::after,.ds-interaction-fill.sc-ds-menu::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none;transition:none}.ds-interaction-fill.sc-ds-menu-h::before,.ds-interaction-fill.sc-ds-menu::before{z-index:1}.ds-interaction-fill.sc-ds-menu-h::after,.ds-interaction-fill.sc-ds-menu::after{z-index:3;box-shadow:inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color)}.ds-interaction-fill--bordered.sc-ds-menu-h,.ds-interaction-fill--bordered.sc-ds-menu{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--color-border-secondary)}.ds-interaction-fill--selected.sc-ds-menu-h::before,.ds-interaction-fill--selected.sc-ds-menu::before{background:var(--ds-interaction-active)}.ds-interaction-fill--selected.sc-ds-menu-h,.ds-interaction-fill--selected.sc-ds-menu{--ds-interaction-dot-ring:var(--ds-interaction-active)}.ds-interaction-fill.sc-ds-menu-h:hover:not(:disabled)::after,.ds-interaction-fill.sc-ds-menu:hover:not(:disabled)::after{background:var(--ds-interaction-hover)}.ds-interaction-fill.sc-ds-menu-h:active:not(:disabled)::after,.ds-interaction-fill.sc-ds-menu:active:not(:disabled)::after{background:var(--ds-interaction-pressed)}.ds-interaction-fill.sc-ds-menu-h>.ds-interaction-fill__content.sc-ds-menu,.ds-interaction-fill.sc-ds-menu>.ds-interaction-fill__content.sc-ds-menu,.ds-interaction-fill__content.sc-ds-menu{position:relative;z-index:2}.ds-interaction-fill--on-faint.sc-ds-menu-h,.ds-interaction-fill--on-faint.sc-ds-menu{--ds-interaction-active:var(--color-interaction-active)}.ds-interaction-fill--on-medium.sc-ds-menu-h,.ds-interaction-fill--on-medium.sc-ds-menu{--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-menu-h,.ds-interaction-fill--on-bold.sc-ds-menu{--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-menu-h,.ds-interaction-fill--on-strong.sc-ds-menu{--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-menu-h,.ds-interaction-fill--on-translucent.sc-ds-menu{--ds-interaction-hover:var(--color-translucent-interaction-hover);--ds-interaction-pressed:var(--color-translucent-interaction-pressed);--ds-interaction-active:var(--color-translucent-interaction-active);--ds-focus-ring-color:var(--color-translucent-interaction-focus)}.ds-interaction-fill--on-inverted.sc-ds-menu-h,.ds-interaction-fill--on-inverted.sc-ds-menu{--ds-interaction-hover:var(--color-inverted-interaction-hover);--ds-interaction-pressed:var(--color-inverted-interaction-pressed);--ds-interaction-active:var(--color-inverted-interaction-active);--ds-focus-ring-color:var(--color-inverted-interaction-focus)}.ds-interaction-fill--on-media.sc-ds-menu-h,.ds-interaction-fill--on-media.sc-ds-menu{--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-menu-h,.ds-interaction-fill--on-always-dark.sc-ds-menu{--ds-interaction-hover:var(--color-always-dark-interaction-hover);--ds-interaction-pressed:var(--color-always-dark-interaction-pressed);--ds-interaction-active:var(--color-always-dark-interaction-active);--ds-focus-ring-color:var(--color-always-dark-interaction-focus)}.ds-interaction-fill--on-navigation.sc-ds-menu-h,.ds-interaction-fill--on-navigation.sc-ds-menu{--ds-interaction-hover:var(--color-navigation-interaction-hover);--ds-interaction-pressed:var(--color-navigation-interaction-pressed);--ds-interaction-active:var(--color-navigation-interaction-active);--ds-focus-ring-color:var(--color-navigation-interaction-focus)}.ds-control-inactive.sc-ds-menu-h,.ds-control-inactive.sc-ds-menu{opacity:0.25;pointer-events:none;cursor:not-allowed}.ds-control--md.sc-ds-menu-h,.ds-control--md.sc-ds-menu,.ds-control--sm.sc-ds-menu-h,.ds-control--sm.sc-ds-menu,.ds-control--xs.sc-ds-menu-h,.ds-control--xs.sc-ds-menu{--ds-control-radius:var(--dimension-radius-025)}.ds-control--md.sc-ds-menu-h,.ds-control--md.sc-ds-menu{--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-menu-h,.ds-control--sm.sc-ds-menu{--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-menu-h,.ds-control--xs.sc-ds-menu{--ds-control-height:var(--dimension-size-200);--ds-control-icon:var(--dimension-iconography-xs);--ds-control-padding-inline:var(--dimension-space-025);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:0}.ds-choice-popup.sc-ds-menu{box-sizing:border-box;display:flex;flex-direction:column;min-width:var(--dimension-menu-width-xs);max-width:min( var(--dimension-panel-width-lg), calc(100vw - var(--dimension-space-200)) );max-height:calc(100vh - var(--dimension-space-200));overflow:hidden;inset:auto;margin:0;padding:0;border:0;background-color:var(--color-background-primary);border-radius:var(--dimension-radius-075);box-shadow:var(--effect-shadow-elevated-floating);animation:dsChoiceFadeIn var(--effect-motion-short-2) forwards;backface-visibility:hidden;will-change:transform;text-align:start}.ds-choice-popup.sc-ds-menu::after{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;box-shadow:var(--effect-highlight-elevated-floating)}.ds-choice-popup--closing.sc-ds-menu{animation:dsChoiceFadeOut var(--effect-motion-short-2) forwards}@keyframes dsChoiceFadeIn{from{opacity:0;transform:inherit scale(0.97)}to{opacity:1}}@keyframes dsChoiceFadeOut{from{opacity:1}to{opacity:0}}@media (prefers-reduced-motion: reduce){.ds-choice-popup.sc-ds-menu{animation:none;opacity:1}.ds-choice-popup--closing.sc-ds-menu{opacity:0}}.ds-choice-list.sc-ds-menu{display:flex;flex-direction:column;min-height:0;overflow-y:auto;overscroll-behavior:contain}.ds-choice-section.sc-ds-menu{display:flex;flex-direction:column;gap:var(--dimension-space-050);padding:var(--dimension-space-050)}.ds-choice-section--divided.sc-ds-menu{border-bottom:var(--dimension-stroke-width-015) solid var(--color-border-tertiary)}ds-text.ds-choice-section__header.sc-ds-menu{display:flex;align-items:center;box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400));padding:0 calc( var(--ds-control-padding-inline, var(--dimension-space-075)) + var(--ds-control-label-inset, var(--dimension-space-025)) );text-align:start;-webkit-user-select:none;user-select:none}.ds-choice-item.sc-ds-menu{display:flex;align-items:center;gap:var(--ds-control-gap, var(--dimension-space-050));width:100%;height:var(--ds-control-height, var(--dimension-size-400));padding:0 var(--ds-control-padding-inline, var(--dimension-space-075));box-sizing:border-box;border:none;border-radius:var(--ds-control-radius, var(--dimension-radius-025));background:transparent;cursor:pointer;-webkit-user-select:none;user-select:none;text-align:left;color:inherit}.ds-choice-item.sc-ds-menu:has(.ds-choice-item__subtext){height:auto;min-height:var(--ds-control-height, var(--dimension-size-400));padding-block:var(--ds-control-padding-inline, var(--dimension-space-075));align-items:flex-start}.ds-choice-item__content.sc-ds-menu{display:flex;flex:1;flex-direction:column;gap:var(--dimension-space-025);min-width:0}ds-text.ds-choice-item__label.sc-ds-menu,.ds-choice-item__subtext.sc-ds-menu,ds-text.ds-choice-item__subtext.sc-ds-menu{padding:0 var(--ds-control-label-inset, var(--dimension-space-025))}ds-text.ds-choice-item__label.sc-ds-menu{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}ds-text.ds-choice-item__subtext.sc-ds-menu{display:-webkit-box;overflow:hidden;white-space:normal;-webkit-box-orient:vertical;-webkit-line-clamp:2}.ds-choice-item__icon.sc-ds-menu,.ds-choice-item__suffix.sc-ds-menu{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ds-control-icon, var(--dimension-iconography-md));height:var(--ds-control-icon, var(--dimension-iconography-md));pointer-events:none}.ds-choice-empty.sc-ds-menu,.ds-choice-loading.sc-ds-menu{display:flex;align-items:center;justify-content:center;box-sizing:border-box;min-height:var(--dimension-size-600);padding:var(--dimension-space-100)}.ds-choice-footer.sc-ds-menu{position:relative;box-sizing:border-box;padding-block:var(--dimension-space-050)}.ds-choice-footer.sc-ds-menu::before{content:'';position:absolute;inset:0 0 auto;height:var(--dimension-stroke-width-012);background-color:var(--color-border-tertiary);pointer-events:none}.ds-choice-footer__content.sc-ds-menu{display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;height:var(--dimension-size-400)}.ds-choice-footer__summary.sc-ds-menu,.ds-choice-footer__clear.sc-ds-menu ds-text.sc-ds-menu{padding-inline:calc( var(--dimension-space-050) + var(--ds-control-padding-inline, var(--dimension-space-075)) + var(--ds-control-label-inset, var(--dimension-space-025)) )}.ds-choice-footer__clear.sc-ds-menu{appearance:none;display:inline-flex;align-items:center;padding:0;border:0;border-radius:var(--dimension-radius-025);background:transparent;color:var(--color-foreground-bold-brand);cursor:pointer}.ds-choice-footer__clear.sc-ds-menu:hover{text-decoration:underline}.menu-item--destructive.sc-ds-menu .menu-item__label.sc-ds-menu{color:var(--color-foreground-bold-negative) !important}.menu-item__dot-box.sc-ds-menu{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ds-control-icon, var(--dimension-iconography-md));height:var(--ds-control-icon, var(--dimension-iconography-md));pointer-events:none}.menu-item__switch.sc-ds-menu{flex-shrink:0}.menu-item__radio-box.sc-ds-menu{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ds-control-icon, var(--dimension-iconography-md));height:var(--ds-control-icon, var(--dimension-iconography-md));pointer-events:none}.menu-item__radio.sc-ds-menu{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:var(--dimension-iconography-sm);height:var(--dimension-iconography-sm);border-radius:var(--dimension-radius-half);box-shadow:inset 0 0 0 var(--dimension-stroke-width-015) var(--color-foreground-tertiary)}.menu-item__radio--checked.sc-ds-menu{background-color:var(--color-background-bold-brand);box-shadow:none}.menu-item__radio-dot.sc-ds-menu{width:var(--dimension-size-100);height:var(--dimension-size-100);border-radius:var(--dimension-radius-half);background-color:var(--color-foreground-on-bold-background-primary)}`;const k=8;const P=["a[href]","button:not([disabled])",'input:not([disabled]):not([type="hidden"])',"select:not([disabled])","textarea:not([disabled])",'[tabindex]:not([tabindex="-1"])'].join(",");function C(i){return i.map((i=>{if(x(i))return{...i};if(w(i)){return{...i,options:i.options?.map((i=>({...i}))),sections:i.sections?.map((i=>({...i,options:i.options.map((i=>({...i})))})))}}return{...i,items:i.items.map((i=>({...i})))}}))}const A=i(class i extends e{constructor(i){super();if(i!==false){this.__registerHost()}this.dsClose=s(this,"dsClose");this.dsAfterClose=s(this,"dsAfterClose");this.dsSelect=s(this,"dsSelect");this.dsGradientSelect=s(this,"dsGradientSelect");this.dsSwatchSelect=s(this,"dsSwatchSelect");this.open=false;this.items=[];this.selectionMode="none";this.sections=[];this.side="bottom";this.align="start";this.anchorAlignment="choice-cell";this.sideOffset=f.space050;this.alignOffset=0;this.initialFocusVisible=false;this.menuLabel="Menu";this.shouldRender=false;this.closing=false;this.pos={x:0,y:0};this.focusedIndex=0;this.positionReady=false;this.focusRingVisible=false;this.clickOutsideHandler=null;this.scrollResizeHandler=null;this.closeTimer=null;this.itemEls=[];this.positionRetryRaf=null;this.livePositionRaf=null;this.listenersReady=false;this.lastRenderedSections=[];this.closingSections=null}componentDidLoad(){if(this.open)this.onOpenChange(true)}componentDidRender(){if(!this.shouldRender)return;const i=this.el.querySelector(".menu-popup");if(!i||typeof i.showPopover!=="function")return;if(!i.matches(":popover-open"))i.showPopover()}disconnectedCallback(){this.cancelPositionRetry();this.cancelLivePositionUpdate();this.teardownListeners()}onOpenChange(i){if(i){this.teardownListeners();this.closingSections=null;this.shouldRender=true;this.closing=false;this.positionReady=false;this.listenersReady=false;this.focusRingVisible=this.initialFocusVisible;this.listenersReady=true;this.setupListeners();this.schedulePositionUpdate((()=>{this.focusInitialItem()}))}else if(this.shouldRender){this.cancelPositionRetry();this.captureClosingSections();this.closing=true;this.teardownListeners();this.listenersReady=false;const i=this.closeAnimationMs;if(i<=0){this.finishClose();return}this.closeTimer=setTimeout((()=>{this.closeTimer=null;this.finishClose()}),i)}}onAnchorChange(){if(this.open)this.schedulePositionUpdate()}onPositionPropsChange(){if(this.open)this.schedulePositionUpdate()}get viewportPadPx(){return g(v.space050,v.space050)}get sideOffsetPx(){return g(this.sideOffset,v.space050)}get alignOffsetPx(){return g(this.alignOffset,0)}get popupFallbackWidthPx(){return g(v.menuWidthXs,v.menuWidthXs)}get popupFallbackHeightPx(){return g(v.menuFallbackHeight,v.menuFallbackHeight)}get closeAnimationMs(){return p(v.motionShort2,v.animationDurationShort3)}finishClose(){const i=this.el.querySelector(".menu-popup");if(i?.matches(":popover-open"))i.hidePopover();this.shouldRender=false;this.closing=false;this.lastRenderedSections=[];this.closingSections=null;this.dsAfterClose.emit()}captureClosingSections(){if(this.closingSections)return;const i=this.lastRenderedSections.length?this.lastRenderedSections:this.activeSections;this.closingSections=C(i)}get resolvedAnchor(){if(this.anchor)return this.anchor;if(this.anchorId)return document.getElementById(this.anchorId);return null}get anchorFocusTarget(){const i=this.resolvedAnchor;if(!i)return null;if(i.matches(P))return i;return i.querySelector(P)??i}focusAnchor(){const i=this.resolvedAnchor;if(i?.setFocus){i.setFocus();return}this.anchorFocusTarget?.focus()}moveFocusAfterTab(i){const e=this.anchorFocusTarget;if(!e)return;if(i){e.focus();return}const s=Array.from(document.querySelectorAll(P)).filter((i=>!i.closest(".menu-popup")&&!i.closest("[inert]")&&i.getClientRects().length>0));const n=s.indexOf(e);(s[n+1]??e).focus()}compositeTabLeavesPopup(i){const e=this.el.querySelector(".menu-popup");if(!e)return true;const s=Array.from(e.querySelectorAll(P)).filter((i=>i.getClientRects().length>0));const n=s.indexOf(i.target);if(n<0)return true;return i.shiftKey?n===0:n===s.length-1}get activeSections(){if(this.sections.length>0)return this.sections;if(this.items.length>0)return[{items:this.items}];return[]}get flatItems(){return this.activeSections.flatMap((i=>_(i)?[]:i.items))}get hasCompositeSections(){return this.activeSections.some(_)}cancelPositionRetry(){if(this.positionRetryRaf!==null){cancelAnimationFrame(this.positionRetryRaf);this.positionRetryRaf=null}}cancelLivePositionUpdate(){if(this.livePositionRaf!==null){cancelAnimationFrame(this.livePositionRaf);this.livePositionRaf=null}}scheduleLivePositionUpdate(){if(this.livePositionRaf!==null)return;this.livePositionRaf=requestAnimationFrame((()=>{if(this.shouldRender&&!this.closing)this.calculatePosition();this.livePositionRaf=requestAnimationFrame((()=>{this.livePositionRaf=null;if(this.shouldRender&&!this.closing)this.calculatePosition()}))}))}schedulePositionUpdate(i){if(!this.open)return;this.cancelPositionRetry();this.positionReady=false;let e=k;const s=()=>{this.positionRetryRaf=null;if(!this.open)return;if(this.calculatePosition()){this.positionReady=true;i?.();return}if(e>0){e-=1;this.positionRetryRaf=requestAnimationFrame(s)}};this.positionRetryRaf=requestAnimationFrame(s)}calculatePosition(){const i=this.resolvedAnchor;if(!i)return false;const e=this.el.querySelector(".menu-popup");if(!e)return false;const s=i.getBoundingClientRect();const n=this.viewportPadPx;if(!this.minWidth){if(this.anchorAlignment==="choice-cell"&&(this.side==="top"||this.side==="bottom")){e.style.minWidth=`max(var(--dimension-menu-width-xs), ${c(s.width,n)}px)`}else{e.style.removeProperty("min-width")}}const t=b({anchorRect:s,popupWidth:e.offsetWidth||this.popupFallbackWidthPx,popupHeight:e.offsetHeight||this.popupFallbackHeightPx,side:this.side,align:this.align,sideOffsetPx:this.sideOffsetPx,alignOffsetPx:a({align:this.align,alignOffsetPx:this.alignOffsetPx,sectionInsetPx:n,anchorAlignment:this.anchorAlignment}),viewportPadPx:this.viewportPadPx,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight});if(t.x!==this.pos.x||t.y!==this.pos.y)this.pos=t;return true}focusInitialItem(){if(this.hasCompositeSections){requestAnimationFrame((()=>{this.el.querySelector('.menu-popup [tabindex="0"]')?.focus()}));return}const i=this.flatItems;const e=i.findIndex((i=>i.isSelected&&!i.isInactive));const s=i.findIndex((i=>!i.isInactive));this.focusedIndex=e>=0?e:s>=0?s:0;requestAnimationFrame((()=>{const i=this.el.querySelectorAll(".menu-item");i[this.focusedIndex]?.focus()}))}setupListeners(){this.clickOutsideHandler=i=>{const e=i.target;const s=this.el.querySelector(".menu-popup");const n=this.resolvedAnchor;if(s?.contains(e)||n?.contains(e))return;this.close()};this.scrollResizeHandler=()=>this.scheduleLivePositionUpdate();document.addEventListener("mousedown",this.clickOutsideHandler,true);window.addEventListener("scroll",this.scrollResizeHandler,true);window.addEventListener("resize",this.scrollResizeHandler)}teardownListeners(){this.cancelLivePositionUpdate();if(this.clickOutsideHandler){document.removeEventListener("mousedown",this.clickOutsideHandler,true);this.clickOutsideHandler=null}if(this.scrollResizeHandler){window.removeEventListener("scroll",this.scrollResizeHandler,true);window.removeEventListener("resize",this.scrollResizeHandler);this.scrollResizeHandler=null}if(this.closeTimer){clearTimeout(this.closeTimer);this.closeTimer=null}}close(i=true){this.captureClosingSections();if(i)this.focusAnchor();this.dsClose.emit();this.open=false;this.onOpenChange(false)}handleKeyDown(i){if(!this.shouldRender||this.closing)return;if(i.key==="Escape"){i.preventDefault();this.close();return}if(i.key==="Tab"){if(this.hasCompositeSections&&!this.compositeTabLeavesPopup(i))return;i.preventDefault();this.close(false);this.moveFocusAfterTab(i.shiftKey);return}if(this.hasCompositeSections)return;const e=this.flatItems;const s=e.map(((i,e)=>({it:i,i:e}))).filter((({it:i})=>!i.isInactive)).map((({i})=>i));if(!s.length)return;const n=s.indexOf(this.focusedIndex);const t=n<0?0:n;switch(i.key){case"ArrowDown":i.preventDefault();i.stopPropagation();this.focusRingVisible=true;this.focusedIndex=s[(t+1)%s.length];this.focusItem(this.focusedIndex);break;case"ArrowUp":i.preventDefault();i.stopPropagation();this.focusRingVisible=true;this.focusedIndex=s[(t-1+s.length)%s.length];this.focusItem(this.focusedIndex);break;case"Home":i.preventDefault();i.stopPropagation();this.focusRingVisible=true;this.focusedIndex=s[0];this.focusItem(this.focusedIndex);break;case"End":i.preventDefault();i.stopPropagation();this.focusRingVisible=true;this.focusedIndex=s[s.length-1];this.focusItem(this.focusedIndex);break}}focusItem(i){const e=this.el.querySelectorAll(".menu-item");e[i]?.focus()}handleItemClick(i){if(i.isInactive)return;this.captureClosingSections();this.dsSelect.emit(i)}handleGradientSelect(i){this.dsGradientSelect.emit(i)}handleSwatchSelect(i){this.dsSwatchSelect.emit(i)}render(){if(!this.shouldRender)return n(t,{style:{display:"contents"}});const i=this.closing?this.closingSections??this.lastRenderedSections:this.activeSections;const e=i.some(_);if(!this.closing){this.lastRenderedSections=C(i);this.closingSections=null}let s=0;const o={position:"fixed",left:"0",top:"0",transform:`translate(${Math.round(this.pos.x)}px, ${Math.round(this.pos.y)}px)`,zIndex:"9998",visibility:this.positionReady?"visible":"hidden"};if(this.menuWidth)o["width"]=this.menuWidth;if(this.minWidth)o["min-width"]=this.minWidth;return n(t,{style:{display:"contents"}},n("div",{popover:"manual",class:{"menu-popup":true,"menu-popup--closing":this.closing,"ds-choice-popup":true,"ds-choice-popup--closing":this.closing},style:o,role:e?"dialog":"menu","aria-label":this.menuLabel,"aria-orientation":e?undefined:"vertical"},n("div",{class:"ds-choice-list"},i.map(((t,o)=>n("div",{key:o,class:{"menu-section":true,"menu-section--divided":o<i.length-1,"menu-section--gradient-picker":_(t),"ds-choice-section":true,"ds-choice-section--divided":o<i.length-1},role:t.header?"group":undefined,"aria-label":t.header},t.header&&n("ds-text",{class:"section-header ds-choice-section__header ds-control--md",as:"span",variant:"text-body-small",emphasis:true,color:"primary","aria-hidden":"true"},t.header),x(t)?n("ds-swatch-picker",{value:t.value,groupLabel:t.header??"Shell gradient theme",sections:d(),onDsChange:i=>{i.stopPropagation();this.handleGradientSelect(i.detail)}}):w(t)?n("ds-swatch-picker",{value:t.value,groupLabel:t.groupLabel??t.header??"Swatch options",options:t.options??[],sections:t.sections??[],onDsChange:i=>{i.stopPropagation();this.handleSwatchSelect(i.detail)}}):t.items.map((i=>{const t=s++;const o=this.focusedIndex===t;const r=!e&&this.selectionMode==="single"&&!i.showSwitch;return n("button",{key:t,type:"button",class:{"menu-item":true,"ds-choice-item":true,"ds-control--md":true,"ds-focus-ring-inset":true,"ds-focus-ring--visible":o&&this.focusRingVisible,"ds-interaction-fill":!i.isInactive,"ds-interaction-fill--selected":!!i.isSelected&&!i.isInactive,"menu-item--selected":!!i.isSelected,"ds-control-inactive":!!i.isInactive,"menu-item--destructive":!!i.isDestructive,"menu-item--focused":o},role:e?undefined:i.showSwitch?"menuitemcheckbox":r?"menuitemradio":"menuitem","aria-checked":!e&&i.showSwitch?String(!!i.switchValue):r?String(!!i.isSelected):undefined,"aria-pressed":e?String(i.showSwitch?!!i.switchValue:!!i.isSelected):undefined,"aria-current":!e&&!i.showSwitch&&!r&&i.isSelected?"true":undefined,disabled:i.isInactive,tabIndex:e?0:o?0:-1,onMouseDown:()=>{this.focusRingVisible=false},onClick:()=>this.handleItemClick(i),onFocus:()=>{this.focusedIndex=t}},r&&n("span",{class:"menu-item__radio-box ds-interaction-fill__content","aria-hidden":"true"},n("span",{class:{"menu-item__radio":true,"menu-item__radio--checked":!!i.isSelected}},i.isSelected&&n("span",{class:"menu-item__radio-dot"}))),n("div",{class:"menu-item__content ds-choice-item__content ds-interaction-fill__content"},n("ds-text",{class:"menu-item__label ds-choice-item__label",as:"span",variant:"text-body-medium",color:i.isSelected?"primary":"secondary"},i.label),i.subtext&&n("ds-text",{class:"menu-item__subtext ds-choice-item__subtext",as:"span",variant:"text-body-small",color:"secondary"},i.subtext)),i.dot&&n("span",{class:"menu-item__dot-box ds-interaction-fill__content","aria-hidden":"true"},n("ds-badge",{class:"menu-item__dot",variant:"dot",hasRing:false,label:""})),i.showSwitch&&n("ds-switch",{class:"menu-item__switch ds-interaction-fill__content",size:"md",checked:!!i.switchValue,presentation:true}))}))))))))}get el(){return this}static get watchers(){return{open:[{onOpenChange:0}],anchor:[{onAnchorChange:0}],anchorId:[{onAnchorChange:0}],side:[{onPositionPropsChange:0}],align:[{onPositionPropsChange:0}],anchorAlignment:[{onPositionPropsChange:0}],sideOffset:[{onPositionPropsChange:0}],alignOffset:[{onPositionPropsChange:0}]}}static get style(){return y()}},[2,"ds-menu",{open:[1028],items:[16],selectionMode:[1,"selection-mode"],sections:[16],side:[1],align:[1],anchorAlignment:[1,"anchor-alignment"],sideOffset:[8,"side-offset"],alignOffset:[8,"align-offset"],menuWidth:[1,"menu-width"],minWidth:[1,"min-width"],anchor:[16],anchorId:[1,"anchor-id"],initialFocusVisible:[4,"initial-focus-visible"],menuLabel:[1,"menu-label"],shouldRender:[32],closing:[32],pos:[32],focusedIndex:[32],positionReady:[32],focusRingVisible:[32]},[[0,"keydown","handleKeyDown"]],{open:[{onOpenChange:0}],anchor:[{onAnchorChange:0}],anchorId:[{onAnchorChange:0}],side:[{onPositionPropsChange:0}],align:[{onPositionPropsChange:0}],anchorAlignment:[{onPositionPropsChange:0}],sideOffset:[{onPositionPropsChange:0}],alignOffset:[{onPositionPropsChange:0}]}]);function z(){if(typeof customElements==="undefined"){return}const i=["ds-menu","ds-badge","ds-swatch-picker","ds-switch","ds-text"];i.forEach((i=>{switch(i){case"ds-menu":if(!customElements.get(o(i))){customElements.define(o(i),A)}break;case"ds-badge":if(!customElements.get(o(i))){l()}break;case"ds-swatch-picker":if(!customElements.get(o(i))){h()}break;case"ds-switch":if(!customElements.get(o(i))){u()}break;case"ds-text":if(!customElements.get(o(i))){m()}break}}))}z();export{A as M,z as d};
2
- //# sourceMappingURL=p-C3Zfn7hz.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["computeMenuPosition","computeAnchoredPopupPosition","isMenuGradientPickerSection","section","variant","isMenuSwatchPickerSection","isMenuPickerSection","menuCss","POSITION_RETRY_BUDGET","MENU_FOCUSABLE_SELECTOR","join","snapshotMenuSections","sections","map","options","option","swatchSection","items","item","Menu","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","open","selectionMode","side","align","anchorAlignment","sideOffset","TOKEN_CSS_LENGTHS","space050","alignOffset","initialFocusVisible","menuLabel","shouldRender","closing","pos","x","y","focusedIndex","positionReady","focusRingVisible","clickOutsideHandler","scrollResizeHandler","closeTimer","itemEls","positionRetryRaf","livePositionRaf","listenersReady","lastRenderedSections","closingSections","componentDidLoad","onOpenChange","componentDidRender","popup","el","querySelector","showPopover","matches","disconnectedCallback","cancelPositionRetry","cancelLivePositionUpdate","teardownListeners","isOpen","setupListeners","schedulePositionUpdate","focusInitialItem","captureClosingSections","closeAnimationMs","finishClose","setTimeout","onAnchorChange","onPositionPropsChange","viewportPadPx","resolveCssLengthPx","TOKEN_DEFAULTS","sideOffsetPx","alignOffsetPx","popupFallbackWidthPx","menuWidthXs","popupFallbackHeightPx","menuFallbackHeight","resolveMotionTimeMs","motionShort2","animationDurationShort3","hidePopover","dsAfterClose","emit","visibleSections","length","activeSections","resolvedAnchor","anchor","anchorId","document","getElementById","anchorFocusTarget","focusAnchor","setFocus","focus","moveFocusAfterTab","backwards","candidates","Array","from","querySelectorAll","filter","element","closest","getClientRects","index","indexOf","compositeTabLeavesPopup","event","focusables","currentIndex","target","shiftKey","flatItems","flatMap","hasCompositeSections","some","cancelAnimationFrame","scheduleLivePositionUpdate","requestAnimationFrame","calculatePosition","onReady","remaining","attempt","anchorEl","anchorRect","getBoundingClientRect","sectionInsetPx","minWidth","style","choicePopupMinWidth","width","removeProperty","next","popupWidth","offsetWidth","popupHeight","offsetHeight","resolveChoicePopupAlignOffset","viewportWidth","window","innerWidth","viewportHeight","innerHeight","flat","selectedIdx","findIndex","it","isSelected","isInactive","firstEnabledIdx","btns","e","t","contains","close","addEventListener","removeEventListener","clearTimeout","restoreFocus","dsClose","handleKeyDown","key","preventDefault","enabled","i","cur","safe","stopPropagation","focusItem","idx","handleItemClick","dsSelect","handleGradientSelect","preset","dsGradientSelect","handleSwatchSelect","value","dsSwatchSelect","render","h","Host","display","flatIdx","popupStyle","position","left","top","transform","Math","round","zIndex","visibility","menuWidth","popover","class","role","undefined","si","header","as","emphasis","color","groupLabel","shellGradientPickerSections","onDsChange","detail","isFocused","isRadioItem","showSwitch","type","isDestructive","String","switchValue","disabled","tabIndex","onMouseDown","onClick","onFocus","label","subtext","dot","hasRing","size","checked","presentation"],"sources":["src/wc/components/Menu/menu-position.ts","src/wc/components/Menu/menu-types.ts","src/wc/components/Menu/Menu.css?tag=ds-menu&encapsulation=scoped","src/wc/components/Menu/Menu.tsx"],"sourcesContent":["import {\n computeAnchoredPopupPosition,\n type AnchoredPopupAlign,\n type AnchoredPopupPositionInput,\n type AnchoredPopupSide,\n} from '../../utils/anchored-popup';\n\nexport type MenuSide = AnchoredPopupSide;\nexport type MenuAlign = AnchoredPopupAlign;\nexport type MenuPositionInput = AnchoredPopupPositionInput;\n\n/** Backward-compatible menu alias for the shared anchored-popup layout math. */\nexport const computeMenuPosition = computeAnchoredPopupPosition;\n","import type { ShellGradientPreset } from '../../shell/shell-gradient-presets';\nimport type { SwatchPickerOption, SwatchPickerSection } from '../SwatchPicker/swatch-picker-types';\n\nexport type { MenuAlign, MenuSide } from './menu-position';\nexport {\n PANEL_NAV_USER_MENU_PLACEMENT,\n PANEL_TOOLS_HEADER_MENU_PLACEMENT,\n type MenuPlacement,\n} from './menu-placement';\n\nexport interface MenuItemData {\n label: string;\n value?: string;\n subtext?: string;\n /** Show a supplemental brand notification dot. */\n dot?: boolean;\n isSelected?: boolean;\n isInactive?: boolean;\n isDestructive?: boolean;\n /** Render a compact switch indicator; the menu row owns interaction. */\n showSwitch?: boolean;\n switchValue?: boolean;\n}\n\nexport interface MenuItemsSection {\n header?: string;\n items: MenuItemData[];\n}\n\nexport interface MenuGradientPickerSection {\n header?: string;\n /** @deprecated Use the generic `swatch-picker` section. */\n variant: 'gradient-picker';\n value: ShellGradientPreset;\n}\n\nexport interface MenuSwatchPickerSection {\n header?: string;\n variant: 'swatch-picker';\n value: string;\n options?: SwatchPickerOption[];\n sections?: SwatchPickerSection[];\n groupLabel?: string;\n}\n\nexport type MenuSection =\n | MenuItemsSection\n | MenuGradientPickerSection\n | MenuSwatchPickerSection;\n\nexport function isMenuGradientPickerSection(\n section: MenuSection,\n): section is MenuGradientPickerSection {\n return 'variant' in section && section.variant === 'gradient-picker';\n}\n\nexport function isMenuSwatchPickerSection(\n section: MenuSection,\n): section is MenuSwatchPickerSection {\n return 'variant' in section && section.variant === 'swatch-picker';\n}\n\nexport function isMenuPickerSection(\n section: MenuSection,\n): section is MenuGradientPickerSection | MenuSwatchPickerSection {\n return isMenuGradientPickerSection(section) || isMenuSwatchPickerSection(section);\n}\n\nexport type { ShellGradientPreset };\nexport type { SwatchPickerOption, SwatchPickerSection };\n","@import '../../utils/choice-list.css';\n\n/* Inactive: `.ds-control-inactive` (25% opacity). */\n\n.menu-item--destructive .menu-item__label {\n /* Beat ds-text color-* host classes for destructive rows. */\n color: var(--color-foreground-bold-negative) !important;\n}\n\n/* Standard md icon zone keeps the dot aligned with other control suffixes. */\n.menu-item__dot-box {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--ds-control-icon, var(--dimension-iconography-md));\n height: var(--ds-control-icon, var(--dimension-iconography-md));\n pointer-events: none;\n}\n\n/* ── Switch suffix ───────────────────────────────────────────────────────── */\n\n.menu-item__switch {\n flex-shrink: 0;\n}\n\n/* ── Single-selection radio indicator ───────────────────────────────────── */\n\n.menu-item__radio-box {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--ds-control-icon, var(--dimension-iconography-md));\n height: var(--ds-control-icon, var(--dimension-iconography-md));\n pointer-events: none;\n}\n\n.menu-item__radio {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: var(--dimension-iconography-sm);\n height: var(--dimension-iconography-sm);\n border-radius: var(--dimension-radius-half);\n box-shadow: inset 0 0 0 var(--dimension-stroke-width-015) var(--color-foreground-tertiary);\n}\n\n.menu-item__radio--checked {\n background-color: var(--color-background-bold-brand);\n box-shadow: none;\n}\n\n.menu-item__radio-dot {\n width: var(--dimension-size-100);\n height: var(--dimension-size-100);\n border-radius: var(--dimension-radius-half);\n background-color: var(--color-foreground-on-bold-background-primary);\n}\n","import {\n Component,\n Prop,\n State,\n Event,\n EventEmitter,\n Element,\n Watch,\n Listen,\n h,\n Host,\n} from '@stencil/core';\nimport {\n choicePopupMinWidth,\n resolveChoicePopupAlignOffset,\n resolveCssLengthPx,\n resolveMotionTimeMs,\n TOKEN_CSS_LENGTHS,\n TOKEN_DEFAULTS,\n type ChoicePopupAnchorAlignment,\n} from '../../utils';\nimport { computeMenuPosition, type MenuAlign, type MenuSide } from './menu-position';\nimport type { MenuItemData, MenuSection } from './menu-types';\n\nexport type MenuSelectionMode = 'none' | 'single';\nimport {\n isMenuGradientPickerSection,\n isMenuPickerSection,\n isMenuSwatchPickerSection,\n} from './menu-types';\nimport {\n shellGradientPickerSections,\n type ShellGradientPreset,\n} from '../../shell/shell-gradient-presets';\n\n/** rAF retries while the popup mounts or the anchor resolves. */\nconst POSITION_RETRY_BUDGET = 8;\nconst MENU_FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled]):not([type=\"hidden\"])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(',');\n\nfunction snapshotMenuSections(sections: MenuSection[]): MenuSection[] {\n return sections.map(section => {\n if (isMenuGradientPickerSection(section)) return { ...section };\n if (isMenuSwatchPickerSection(section)) {\n return {\n ...section,\n options: section.options?.map(option => ({ ...option })),\n sections: section.sections?.map(swatchSection => ({\n ...swatchSection,\n options: swatchSection.options.map(option => ({ ...option })),\n })),\n };\n }\n return { ...section, items: section.items.map(item => ({ ...item })) };\n });\n}\n\n@Component({\n tag: 'ds-menu',\n styleUrl: 'Menu.css',\n scoped: true,\n})\nexport class Menu {\n @Element() el!: HTMLElement;\n\n @Prop({ mutable: true }) open: boolean = false;\n @Prop() items: MenuItemData[] = [];\n /** Give ordinary rows mutually-exclusive radio-menu semantics using isSelected. */\n @Prop() selectionMode: MenuSelectionMode = 'none';\n @Prop() sections: MenuSection[] = [];\n @Prop() side: MenuSide = 'bottom';\n @Prop() align: MenuAlign = 'start';\n /** Align choice-row edges to the anchor by default; use `popup-frame` only for custom frame geometry. */\n @Prop() anchorAlignment: ChoicePopupAnchorAlignment = 'choice-cell';\n /** Gap between anchor and menu — number (px) or TokoMo length (`var(--dimension-space-050)`, etc.). */\n @Prop() sideOffset: number | string = TOKEN_CSS_LENGTHS.space050;\n /** Cross-axis offset — number (px) or TokoMo length. */\n @Prop() alignOffset: number | string = 0;\n @Prop() menuWidth: string | undefined;\n @Prop() minWidth: string | undefined;\n /** External trigger element to position against. Set via JS: menuEl.anchor = buttonEl */\n @Prop() anchor: HTMLElement | undefined;\n /** ID of the external trigger element for positioning */\n @Prop() anchorId: string | undefined;\n /** Show a visible ring on the initially focused menu item. Use only when the opener was keyboard-driven. */\n @Prop() initialFocusVisible: boolean = false;\n /** Accessible name for the popup menu. */\n @Prop() menuLabel: string = 'Menu';\n\n @State() private shouldRender: boolean = false;\n @State() private closing: boolean = false;\n @State() private pos: { x: number; y: number } = { x: 0, y: 0 };\n @State() private focusedIndex: number = 0;\n @State() private positionReady: boolean = false;\n @State() private focusRingVisible: boolean = false;\n\n @Event() dsClose!: EventEmitter<void>;\n /** Emitted after the popup's exit motion is complete and its rendered content is removed. */\n @Event() dsAfterClose!: EventEmitter<void>;\n @Event() dsSelect!: EventEmitter<MenuItemData>;\n /** Emitted when a `gradient-picker` section swatch is chosen. */\n @Event() dsGradientSelect!: EventEmitter<ShellGradientPreset>;\n /** Emitted when a generic `swatch-picker` section option is chosen. */\n @Event() dsSwatchSelect!: EventEmitter<string>;\n\n private clickOutsideHandler: ((e: MouseEvent) => void) | null = null;\n private scrollResizeHandler: (() => void) | null = null;\n private closeTimer: ReturnType<typeof setTimeout> | null = null;\n private itemEls: HTMLElement[] = [];\n private positionRetryRaf: number | null = null;\n private livePositionRaf: number | null = null;\n private listenersReady = false;\n /** Last content actually painted while open; retained unchanged through exit motion. */\n private lastRenderedSections: MenuSection[] = [];\n private closingSections: MenuSection[] | null = null;\n\n componentDidLoad() {\n if (this.open) this.onOpenChange(true);\n }\n\n componentDidRender() {\n if (!this.shouldRender) return;\n const popup = this.el.querySelector<HTMLElement>('.menu-popup');\n if (!popup || typeof popup.showPopover !== 'function') return;\n if (!popup.matches(':popover-open')) popup.showPopover();\n }\n\n disconnectedCallback() {\n this.cancelPositionRetry();\n this.cancelLivePositionUpdate();\n this.teardownListeners();\n }\n\n @Watch('open')\n onOpenChange(isOpen: boolean) {\n if (isOpen) {\n this.teardownListeners();\n this.closingSections = null;\n this.shouldRender = true;\n this.closing = false;\n this.positionReady = false;\n this.listenersReady = false;\n this.focusRingVisible = this.initialFocusVisible;\n this.listenersReady = true;\n this.setupListeners();\n this.schedulePositionUpdate(() => {\n this.focusInitialItem();\n });\n } else if (this.shouldRender) {\n this.cancelPositionRetry();\n this.captureClosingSections();\n this.closing = true;\n this.teardownListeners();\n this.listenersReady = false;\n const closeAnimationMs = this.closeAnimationMs;\n if (closeAnimationMs <= 0) {\n this.finishClose();\n return;\n }\n this.closeTimer = setTimeout(() => {\n this.closeTimer = null;\n this.finishClose();\n }, closeAnimationMs);\n }\n }\n\n @Watch('anchor')\n @Watch('anchorId')\n onAnchorChange() {\n if (this.open) this.schedulePositionUpdate();\n }\n\n @Watch('side')\n @Watch('align')\n @Watch('anchorAlignment')\n @Watch('sideOffset')\n @Watch('alignOffset')\n onPositionPropsChange() {\n if (this.open) this.schedulePositionUpdate();\n }\n\n private get viewportPadPx(): number {\n return resolveCssLengthPx(TOKEN_DEFAULTS.space050, TOKEN_DEFAULTS.space050);\n }\n\n private get sideOffsetPx(): number {\n return resolveCssLengthPx(this.sideOffset, TOKEN_DEFAULTS.space050);\n }\n\n private get alignOffsetPx(): number {\n return resolveCssLengthPx(this.alignOffset, 0);\n }\n\n private get popupFallbackWidthPx(): number {\n return resolveCssLengthPx(TOKEN_DEFAULTS.menuWidthXs, TOKEN_DEFAULTS.menuWidthXs);\n }\n\n private get popupFallbackHeightPx(): number {\n return resolveCssLengthPx(TOKEN_DEFAULTS.menuFallbackHeight, TOKEN_DEFAULTS.menuFallbackHeight);\n }\n\n private get closeAnimationMs(): number {\n return resolveMotionTimeMs(TOKEN_DEFAULTS.motionShort2, TOKEN_DEFAULTS.animationDurationShort3);\n }\n\n private finishClose() {\n const popup = this.el.querySelector<HTMLElement>('.menu-popup');\n if (popup?.matches(':popover-open')) popup.hidePopover();\n this.shouldRender = false;\n this.closing = false;\n this.lastRenderedSections = [];\n this.closingSections = null;\n this.dsAfterClose.emit();\n }\n\n private captureClosingSections() {\n if (this.closingSections) return;\n const visibleSections = this.lastRenderedSections.length\n ? this.lastRenderedSections\n : this.activeSections;\n this.closingSections = snapshotMenuSections(visibleSections);\n }\n\n private get resolvedAnchor(): HTMLElement | null {\n if (this.anchor) return this.anchor;\n if (this.anchorId) return document.getElementById(this.anchorId);\n return null;\n }\n\n private get anchorFocusTarget(): HTMLElement | null {\n const anchor = this.resolvedAnchor;\n if (!anchor) return null;\n if (anchor.matches(MENU_FOCUSABLE_SELECTOR)) return anchor;\n return anchor.querySelector<HTMLElement>(MENU_FOCUSABLE_SELECTOR) ?? anchor;\n }\n\n private focusAnchor() {\n const anchor = this.resolvedAnchor as\n | (HTMLElement & { setFocus?: () => Promise<void> | void })\n | null;\n if (anchor?.setFocus) {\n anchor.setFocus();\n return;\n }\n this.anchorFocusTarget?.focus();\n }\n\n private moveFocusAfterTab(backwards: boolean) {\n const anchor = this.anchorFocusTarget;\n if (!anchor) return;\n if (backwards) {\n anchor.focus();\n return;\n }\n\n const candidates = Array.from(\n document.querySelectorAll<HTMLElement>(MENU_FOCUSABLE_SELECTOR)\n ).filter(\n element =>\n !element.closest('.menu-popup') &&\n !element.closest('[inert]') &&\n element.getClientRects().length > 0\n );\n const index = candidates.indexOf(anchor);\n (candidates[index + 1] ?? anchor).focus();\n }\n\n private compositeTabLeavesPopup(event: KeyboardEvent): boolean {\n const popup = this.el.querySelector<HTMLElement>('.menu-popup');\n if (!popup) return true;\n const focusables = Array.from(\n popup.querySelectorAll<HTMLElement>(MENU_FOCUSABLE_SELECTOR)\n ).filter(element => element.getClientRects().length > 0);\n const currentIndex = focusables.indexOf(event.target as HTMLElement);\n if (currentIndex < 0) return true;\n return event.shiftKey ? currentIndex === 0 : currentIndex === focusables.length - 1;\n }\n\n private get activeSections(): MenuSection[] {\n if (this.sections.length > 0) return this.sections;\n if (this.items.length > 0) return [{ items: this.items }];\n return [];\n }\n\n private get flatItems(): MenuItemData[] {\n return this.activeSections.flatMap(section =>\n isMenuPickerSection(section) ? [] : section.items\n );\n }\n\n /** Rich preference content is a non-modal dialog, not an ARIA action menu. */\n private get hasCompositeSections(): boolean {\n return this.activeSections.some(isMenuPickerSection);\n }\n\n private cancelPositionRetry() {\n if (this.positionRetryRaf !== null) {\n cancelAnimationFrame(this.positionRetryRaf);\n this.positionRetryRaf = null;\n }\n }\n\n private cancelLivePositionUpdate() {\n if (this.livePositionRaf !== null) {\n cancelAnimationFrame(this.livePositionRaf);\n this.livePositionRaf = null;\n }\n }\n\n /** Reposition after the current scroll/layout frame without hiding the open popup. */\n private scheduleLivePositionUpdate() {\n if (this.livePositionRaf !== null) return;\n this.livePositionRaf = requestAnimationFrame(() => {\n if (this.shouldRender && !this.closing) this.calculatePosition();\n // Scroll-driven owners such as ShellPage may commit their compact header\n // render in this frame. Re-read once after that render, then stop tracking.\n this.livePositionRaf = requestAnimationFrame(() => {\n this.livePositionRaf = null;\n if (this.shouldRender && !this.closing) this.calculatePosition();\n });\n });\n }\n\n /** Retry until anchor + popup exist — do not reveal at 0,0 on a failed first pass. */\n private schedulePositionUpdate(onReady?: () => void) {\n if (!this.open) return;\n\n this.cancelPositionRetry();\n this.positionReady = false;\n\n let remaining = POSITION_RETRY_BUDGET;\n\n const attempt = () => {\n this.positionRetryRaf = null;\n if (!this.open) return;\n\n if (this.calculatePosition()) {\n this.positionReady = true;\n onReady?.();\n return;\n }\n\n if (remaining > 0) {\n remaining -= 1;\n this.positionRetryRaf = requestAnimationFrame(attempt);\n }\n };\n\n this.positionRetryRaf = requestAnimationFrame(attempt);\n }\n\n /** @returns `true` when anchor and popup were found and `pos` was updated. */\n private calculatePosition(): boolean {\n const anchorEl = this.resolvedAnchor;\n if (!anchorEl) return false;\n const popup = this.el.querySelector('.menu-popup') as HTMLElement | null;\n if (!popup) return false;\n\n const anchorRect = anchorEl.getBoundingClientRect();\n const sectionInsetPx = this.viewportPadPx;\n if (!this.minWidth) {\n if (\n this.anchorAlignment === 'choice-cell' &&\n (this.side === 'top' || this.side === 'bottom')\n ) {\n popup.style.minWidth = `max(var(--dimension-menu-width-xs), ${choicePopupMinWidth(\n anchorRect.width,\n sectionInsetPx\n )}px)`;\n } else {\n popup.style.removeProperty('min-width');\n }\n }\n\n const next = computeMenuPosition({\n anchorRect,\n popupWidth: popup.offsetWidth || this.popupFallbackWidthPx,\n popupHeight: popup.offsetHeight || this.popupFallbackHeightPx,\n side: this.side,\n align: this.align,\n sideOffsetPx: this.sideOffsetPx,\n alignOffsetPx: resolveChoicePopupAlignOffset({\n align: this.align,\n alignOffsetPx: this.alignOffsetPx,\n sectionInsetPx,\n anchorAlignment: this.anchorAlignment,\n }),\n viewportPadPx: this.viewportPadPx,\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n });\n if (next.x !== this.pos.x || next.y !== this.pos.y) this.pos = next;\n return true;\n }\n\n /** Focus the selected item when present, otherwise the first enabled item. */\n private focusInitialItem() {\n if (this.hasCompositeSections) {\n requestAnimationFrame(() => {\n this.el.querySelector<HTMLElement>('.menu-popup [tabindex=\"0\"]')?.focus();\n });\n return;\n }\n\n const flat = this.flatItems;\n const selectedIdx = flat.findIndex(it => it.isSelected && !it.isInactive);\n const firstEnabledIdx = flat.findIndex(it => !it.isInactive);\n this.focusedIndex = selectedIdx >= 0 ? selectedIdx : firstEnabledIdx >= 0 ? firstEnabledIdx : 0;\n\n requestAnimationFrame(() => {\n const btns = this.el.querySelectorAll<HTMLElement>('.menu-item');\n btns[this.focusedIndex]?.focus();\n });\n }\n\n private setupListeners() {\n this.clickOutsideHandler = (e: MouseEvent) => {\n const t = e.target as Node;\n const popup = this.el.querySelector('.menu-popup');\n const anchorEl = this.resolvedAnchor;\n if (popup?.contains(t) || anchorEl?.contains(t)) return;\n this.close();\n };\n\n this.scrollResizeHandler = () => this.scheduleLivePositionUpdate();\n\n document.addEventListener('mousedown', this.clickOutsideHandler, true);\n window.addEventListener('scroll', this.scrollResizeHandler, true);\n window.addEventListener('resize', this.scrollResizeHandler);\n }\n\n private teardownListeners() {\n this.cancelLivePositionUpdate();\n if (this.clickOutsideHandler) {\n document.removeEventListener('mousedown', this.clickOutsideHandler, true);\n this.clickOutsideHandler = null;\n }\n if (this.scrollResizeHandler) {\n window.removeEventListener('scroll', this.scrollResizeHandler, true);\n window.removeEventListener('resize', this.scrollResizeHandler);\n this.scrollResizeHandler = null;\n }\n if (this.closeTimer) {\n clearTimeout(this.closeTimer);\n this.closeTimer = null;\n }\n }\n\n private close(restoreFocus = true) {\n this.captureClosingSections();\n if (restoreFocus) this.focusAnchor();\n this.dsClose.emit();\n this.open = false;\n this.onOpenChange(false);\n }\n\n @Listen('keydown')\n handleKeyDown(e: KeyboardEvent) {\n if (!this.shouldRender || this.closing) return;\n\n if (e.key === 'Escape') {\n e.preventDefault();\n this.close();\n return;\n }\n\n if (e.key === 'Tab') {\n if (this.hasCompositeSections && !this.compositeTabLeavesPopup(e)) return;\n e.preventDefault();\n this.close(false);\n this.moveFocusAfterTab(e.shiftKey);\n return;\n }\n\n if (this.hasCompositeSections) return;\n\n const flat = this.flatItems;\n const enabled = flat\n .map((it, i) => ({ it, i }))\n .filter(({ it }) => !it.isInactive)\n .map(({ i }) => i);\n if (!enabled.length) return;\n\n const cur = enabled.indexOf(this.focusedIndex);\n const safe = cur < 0 ? 0 : cur;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n e.stopPropagation();\n this.focusRingVisible = true;\n this.focusedIndex = enabled[(safe + 1) % enabled.length];\n this.focusItem(this.focusedIndex);\n break;\n case 'ArrowUp':\n e.preventDefault();\n e.stopPropagation();\n this.focusRingVisible = true;\n this.focusedIndex = enabled[(safe - 1 + enabled.length) % enabled.length];\n this.focusItem(this.focusedIndex);\n break;\n case 'Home':\n e.preventDefault();\n e.stopPropagation();\n this.focusRingVisible = true;\n this.focusedIndex = enabled[0];\n this.focusItem(this.focusedIndex);\n break;\n case 'End':\n e.preventDefault();\n e.stopPropagation();\n this.focusRingVisible = true;\n this.focusedIndex = enabled[enabled.length - 1];\n this.focusItem(this.focusedIndex);\n break;\n }\n }\n\n private focusItem(idx: number) {\n const btns = this.el.querySelectorAll<HTMLElement>('.menu-item');\n btns[idx]?.focus();\n }\n\n private handleItemClick(item: MenuItemData) {\n if (item.isInactive) return;\n // Consumers commonly change the item source while handling selection.\n // Capture first so the exit animation never paints the next menu context.\n this.captureClosingSections();\n this.dsSelect.emit(item);\n }\n\n private handleGradientSelect(preset: ShellGradientPreset) {\n this.dsGradientSelect.emit(preset);\n }\n\n private handleSwatchSelect(value: string) {\n this.dsSwatchSelect.emit(value);\n }\n\n render() {\n if (!this.shouldRender) return <Host style={{ display: 'contents' }} />;\n\n const sections = this.closing\n ? (this.closingSections ?? this.lastRenderedSections)\n : this.activeSections;\n const hasCompositeSections = sections.some(isMenuPickerSection);\n if (!this.closing) {\n this.lastRenderedSections = snapshotMenuSections(sections);\n this.closingSections = null;\n }\n let flatIdx = 0;\n\n const popupStyle: Record<string, string> = {\n position: 'fixed',\n left: '0',\n top: '0',\n transform: `translate(${Math.round(this.pos.x)}px, ${Math.round(this.pos.y)}px)`,\n zIndex: '9998',\n visibility: this.positionReady ? 'visible' : 'hidden',\n };\n\n if (this.menuWidth) popupStyle['width'] = this.menuWidth;\n if (this.minWidth) popupStyle['min-width'] = this.minWidth;\n\n return (\n <Host style={{ display: 'contents' }}>\n <div\n popover=\"manual\"\n class={{\n 'menu-popup': true,\n 'menu-popup--closing': this.closing,\n 'ds-choice-popup': true,\n 'ds-choice-popup--closing': this.closing,\n }}\n style={popupStyle}\n role={hasCompositeSections ? 'dialog' : 'menu'}\n aria-label={this.menuLabel}\n aria-orientation={hasCompositeSections ? undefined : 'vertical'}\n >\n <div class=\"ds-choice-list\">\n {sections.map((section, si) => (\n <div\n key={si}\n class={{\n 'menu-section': true,\n 'menu-section--divided': si < sections.length - 1,\n 'menu-section--gradient-picker': isMenuPickerSection(section),\n 'ds-choice-section': true,\n 'ds-choice-section--divided': si < sections.length - 1,\n }}\n role={section.header ? 'group' : undefined}\n aria-label={section.header}\n >\n {section.header && (\n <ds-text\n class=\"section-header ds-choice-section__header ds-control--md\"\n as=\"span\"\n variant=\"text-body-small\"\n emphasis\n color=\"primary\"\n aria-hidden=\"true\"\n >\n {section.header}\n </ds-text>\n )}\n {isMenuGradientPickerSection(section) ? (\n <ds-swatch-picker\n value={section.value}\n groupLabel={section.header ?? 'Shell gradient theme'}\n sections={shellGradientPickerSections()}\n onDsChange={(e: CustomEvent<string>) => {\n e.stopPropagation();\n this.handleGradientSelect(e.detail as ShellGradientPreset);\n }}\n />\n ) : isMenuSwatchPickerSection(section) ? (\n <ds-swatch-picker\n value={section.value}\n groupLabel={section.groupLabel ?? section.header ?? 'Swatch options'}\n options={section.options ?? []}\n sections={section.sections ?? []}\n onDsChange={(e: CustomEvent<string>) => {\n e.stopPropagation();\n this.handleSwatchSelect(e.detail);\n }}\n />\n ) : (\n section.items.map(item => {\n const idx = flatIdx++;\n const isFocused = this.focusedIndex === idx;\n const isRadioItem =\n !hasCompositeSections &&\n this.selectionMode === 'single' &&\n !item.showSwitch;\n return (\n <button\n key={idx}\n type=\"button\"\n class={{\n 'menu-item': true,\n 'ds-choice-item': true,\n 'ds-control--md': true,\n 'ds-focus-ring-inset': true,\n 'ds-focus-ring--visible': isFocused && this.focusRingVisible,\n 'ds-interaction-fill': !item.isInactive,\n 'ds-interaction-fill--selected': !!item.isSelected && !item.isInactive,\n 'menu-item--selected': !!item.isSelected,\n 'ds-control-inactive': !!item.isInactive,\n 'menu-item--destructive': !!item.isDestructive,\n 'menu-item--focused': isFocused,\n }}\n role={\n hasCompositeSections\n ? undefined\n : item.showSwitch\n ? 'menuitemcheckbox'\n : isRadioItem\n ? 'menuitemradio'\n : 'menuitem'\n }\n aria-checked={\n !hasCompositeSections && item.showSwitch\n ? String(!!item.switchValue)\n : isRadioItem\n ? String(!!item.isSelected)\n : undefined\n }\n aria-pressed={\n hasCompositeSections\n ? String(item.showSwitch ? !!item.switchValue : !!item.isSelected)\n : undefined\n }\n aria-current={\n !hasCompositeSections &&\n !item.showSwitch &&\n !isRadioItem &&\n item.isSelected\n ? 'true'\n : undefined\n }\n disabled={item.isInactive}\n tabIndex={hasCompositeSections ? 0 : isFocused ? 0 : -1}\n onMouseDown={() => {\n this.focusRingVisible = false;\n }}\n onClick={() => this.handleItemClick(item)}\n onFocus={() => {\n this.focusedIndex = idx;\n }}\n >\n {isRadioItem && (\n <span\n class=\"menu-item__radio-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <span\n class={{\n 'menu-item__radio': true,\n 'menu-item__radio--checked': !!item.isSelected,\n }}\n >\n {item.isSelected && <span class=\"menu-item__radio-dot\" />}\n </span>\n </span>\n )}\n <div class=\"menu-item__content ds-choice-item__content ds-interaction-fill__content\">\n <ds-text\n class=\"menu-item__label ds-choice-item__label\"\n as=\"span\"\n variant=\"text-body-medium\"\n color={item.isSelected ? 'primary' : 'secondary'}\n >\n {item.label}\n </ds-text>\n {item.subtext && (\n <ds-text\n class=\"menu-item__subtext ds-choice-item__subtext\"\n as=\"span\"\n variant=\"text-body-small\"\n color=\"secondary\"\n >\n {item.subtext}\n </ds-text>\n )}\n </div>\n {item.dot && (\n <span\n class=\"menu-item__dot-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-badge\n class=\"menu-item__dot\"\n variant=\"dot\"\n hasRing={false}\n label=\"\"\n />\n </span>\n )}\n {item.showSwitch && (\n <ds-switch\n class=\"menu-item__switch ds-interaction-fill__content\"\n size=\"md\"\n checked={!!item.switchValue}\n presentation\n />\n )}\n </button>\n );\n })\n )}\n </div>\n ))}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{h as e}from"./index.js";const s=({value:s,placeholder:t,ariaLabel:o,controls:a,activeDescendant:i,disabled:c=false,inputRef:n,clearLabel:l,onValueChange:r,onClear:d,onKeyDown:u})=>{let m=null;return e("div",{class:"select-search"},e("div",{class:"select-search__control ds-control--md"},e("ds-icon",{name:"MagnifyingGlass",size:"md",color:"inherit"}),e("input",{class:"ds-text--body-medium ds-text--regular",ref:e=>{m=e??null;n(m)},type:"search",value:s,placeholder:t,disabled:c,"aria-label":o??t,"aria-controls":a,"aria-activedescendant":i,onInput:e=>r(e.target.value),onKeyDown:u}),s&&!c&&e("ds-tooltip",{class:"select-search__clear-tooltip",label:`${l} ${t}`,side:"top",size:"sm"},e("ds-button-unfilled",{class:"select-search__clear",variant:"icon",size:"sm",icon:"CrossCircle",hasBorder:false,rounded:true,ariaLabel:`${l} ${t}`,onDsChange:e=>e.stopPropagation(),onDsClick:()=>{r("");d?.();requestAnimationFrame((()=>m?.focus()))}}))))};const t=({clearLabel:s,summary:t,onClear:o})=>e("div",{class:"ds-choice-footer"},e("div",{class:"ds-choice-footer__content ds-control--md"},t&&e("ds-text",{class:"ds-choice-footer__summary",as:"span",variant:"text-body-medium",color:"secondary"},t),e("button",{type:"button",class:"ds-choice-footer__clear ds-focus-ring",onClick:o},e("ds-text",{as:"span",variant:"text-body-medium",color:"inherit"},s))));const o=({id:s,option:t,selected:o,active:a,focusRingVisible:i,usesSubtext:c,leading:n,onHover:l,onSelect:r})=>e("div",{id:s,class:{"select-option":true,"ds-choice-item":true,"ds-control--md":true,"ds-focus-ring-inset":true,"ds-focus-ring--visible":a&&i,"ds-interaction-fill":!t.isInactive,"ds-interaction-fill--selected":o&&!t.isInactive,"ds-control-inactive":!!t.isInactive,"select-option--active":a},role:"option","aria-selected":String(o),"aria-disabled":t.isInactive?"true":undefined,onMouseDown:e=>e.preventDefault(),onMouseMove:()=>{if(!t.isInactive)l()},onClick:r},n,e("div",{class:"ds-choice-item__content ds-interaction-fill__content"},e("ds-text",{class:"ds-choice-item__label",as:"span",variant:"text-body-medium",color:o?"primary":"secondary"},t.label),c&&e("ds-text",{class:"ds-choice-item__subtext",as:"span",variant:"text-body-small",color:"secondary"},t.subtext?.trim()||"—")));export{s as C,o as a,t as b};
2
- //# sourceMappingURL=p-CUik7PCi.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["ChoiceSearch","value","placeholder","ariaLabel","controls","activeDescendant","disabled","inputRef","clearLabel","onValueChange","onClear","onKeyDown","inputElement","h","class","name","size","color","ref","element","type","onInput","event","target","label","side","variant","icon","hasBorder","rounded","onDsChange","stopPropagation","onDsClick","requestAnimationFrame","focus","ChoiceFooter","summary","as","onClick","ChoiceOptionRow","id","option","selected","active","focusRingVisible","usesSubtext","leading","onHover","onSelect","isInactive","role","String","undefined","onMouseDown","preventDefault","onMouseMove","subtext","trim"],"sources":["src/wc/utils/choice-list-parts.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-unused-vars -- Stencil's configured JSX factory requires h at compile time.\nimport { FunctionalComponent, h, VNode } from '@stencil/core';\nimport type { ChoiceOption } from './choice-list';\n\ninterface ChoiceSearchProps {\n value: string;\n placeholder: string;\n ariaLabel?: string;\n controls?: string;\n activeDescendant?: string;\n disabled?: boolean;\n inputRef: (element: HTMLInputElement | null) => void;\n clearLabel: string;\n onValueChange: (value: string) => void;\n onClear?: () => void;\n onKeyDown: (event: KeyboardEvent) => void;\n}\n\nexport const ChoiceSearch: FunctionalComponent<ChoiceSearchProps> = ({\n value,\n placeholder,\n ariaLabel,\n controls,\n activeDescendant,\n disabled = false,\n inputRef,\n clearLabel,\n onValueChange,\n onClear,\n onKeyDown,\n}) => {\n let inputElement: HTMLInputElement | null = null;\n\n return (\n <div class=\"select-search\">\n <div class=\"select-search__control ds-control--md\">\n <ds-icon name=\"MagnifyingGlass\" size=\"md\" color=\"inherit\" />\n <input\n class=\"ds-text--body-medium ds-text--regular\"\n ref={element => {\n inputElement = (element as HTMLInputElement) ?? null;\n inputRef(inputElement);\n }}\n type=\"search\"\n value={value}\n placeholder={placeholder}\n disabled={disabled}\n aria-label={ariaLabel ?? placeholder}\n aria-controls={controls}\n aria-activedescendant={activeDescendant}\n onInput={event => onValueChange((event.target as HTMLInputElement).value)}\n onKeyDown={onKeyDown}\n />\n {value && !disabled && (\n <ds-tooltip\n class=\"select-search__clear-tooltip\"\n label={`${clearLabel} ${placeholder}`}\n side=\"top\"\n size=\"sm\"\n >\n <ds-button-unfilled\n class=\"select-search__clear\"\n variant=\"icon\"\n size=\"sm\"\n icon=\"CrossCircle\"\n hasBorder={false}\n rounded\n ariaLabel={`${clearLabel} ${placeholder}`}\n onDsChange={event => event.stopPropagation()}\n onDsClick={() => {\n onValueChange('');\n onClear?.();\n requestAnimationFrame(() => inputElement?.focus());\n }}\n />\n </ds-tooltip>\n )}\n </div>\n </div>\n );\n};\n\ninterface ChoiceFooterProps {\n clearLabel: string;\n summary?: string;\n onClear: (event: MouseEvent) => void;\n}\n\nexport const ChoiceFooter: FunctionalComponent<ChoiceFooterProps> = ({\n clearLabel,\n summary,\n onClear,\n}) => (\n <div class=\"ds-choice-footer\">\n <div class=\"ds-choice-footer__content ds-control--md\">\n {summary && (\n <ds-text class=\"ds-choice-footer__summary\" as=\"span\" variant=\"text-body-medium\" color=\"secondary\">\n {summary}\n </ds-text>\n )}\n <button\n type=\"button\"\n class=\"ds-choice-footer__clear ds-focus-ring\"\n onClick={onClear}\n >\n <ds-text as=\"span\" variant=\"text-body-medium\" color=\"inherit\">\n {clearLabel}\n </ds-text>\n </button>\n </div>\n </div>\n);\n\ninterface ChoiceOptionRowProps {\n id: string;\n option: ChoiceOption;\n selected: boolean;\n active: boolean;\n focusRingVisible: boolean;\n usesSubtext: boolean;\n leading?: VNode;\n onHover: () => void;\n onSelect: () => void;\n}\n\nexport const ChoiceOptionRow: FunctionalComponent<ChoiceOptionRowProps> = ({\n id,\n option,\n selected,\n active,\n focusRingVisible,\n usesSubtext,\n leading,\n onHover,\n onSelect,\n}) => (\n <div\n id={id}\n class={{\n 'select-option': true,\n 'ds-choice-item': true,\n 'ds-control--md': true,\n 'ds-focus-ring-inset': true,\n 'ds-focus-ring--visible': active && focusRingVisible,\n 'ds-interaction-fill': !option.isInactive,\n 'ds-interaction-fill--selected': selected && !option.isInactive,\n 'ds-control-inactive': !!option.isInactive,\n 'select-option--active': active,\n }}\n role=\"option\"\n aria-selected={String(selected)}\n aria-disabled={option.isInactive ? 'true' : undefined}\n onMouseDown={event => event.preventDefault()}\n onMouseMove={() => {\n if (!option.isInactive) onHover();\n }}\n onClick={onSelect}\n >\n {leading}\n <div class=\"ds-choice-item__content ds-interaction-fill__content\">\n <ds-text\n class=\"ds-choice-item__label\"\n as=\"span\"\n variant=\"text-body-medium\"\n color={selected ? 'primary' : 'secondary'}\n >\n {option.label}\n </ds-text>\n {usesSubtext && (\n <ds-text class=\"ds-choice-item__subtext\" as=\"span\" variant=\"text-body-small\" color=\"secondary\">\n {option.subtext?.trim() || '—'}\n </ds-text>\n )}\n </div>\n </div>\n);\n"],"mappings":"+BAkBO,MAAMA,EAAuD,EAClEC,QACAC,cACAC,YACAC,WACAC,mBACAC,WAAW,MACXC,WACAC,aACAC,gBACAC,UACAC,gBAEA,IAAIC,EAAwC,KAE5C,OACEC,EAAA,OAAKC,MAAM,iBACTD,EAAA,OAAKC,MAAM,yCACTD,EAAA,WAASE,KAAK,kBAAkBC,KAAK,KAAKC,MAAM,YAChDJ,EAAA,SACEC,MAAM,wCACNI,IAAKC,IACHP,EAAgBO,GAAgC,KAChDZ,EAASK,EAAa,EAExBQ,KAAK,SACLnB,MAAOA,EACPC,YAAaA,EACbI,SAAUA,EAAQ,aACNH,GAAaD,EAAW,gBACrBE,EAAQ,wBACAC,EACvBgB,QAASC,GAASb,EAAea,EAAMC,OAA4BtB,OACnEU,UAAWA,IAEZV,IAAUK,GACTO,EAAA,cACEC,MAAM,+BACNU,MAAO,GAAGhB,KAAcN,IACxBuB,KAAK,MACLT,KAAK,MAELH,EAAA,sBACEC,MAAM,uBACNY,QAAQ,OACRV,KAAK,KACLW,KAAK,cACLC,UAAW,MACXC,QAAO,KACP1B,UAAW,GAAGK,KAAcN,IAC5B4B,WAAYR,GAASA,EAAMS,kBAC3BC,UAAW,KACTvB,EAAc,IACdC,MACAuB,uBAAsB,IAAMrB,GAAcsB,SAAQ,MAMxD,E,MAUGC,EAAuD,EAClE3B,aACA4B,UACA1B,aAEAG,EAAA,OAAKC,MAAM,oBACTD,EAAA,OAAKC,MAAM,4CACRsB,GACCvB,EAAA,WAASC,MAAM,4BAA4BuB,GAAG,OAAOX,QAAQ,mBAAmBT,MAAM,aACnFmB,GAGLvB,EAAA,UACEO,KAAK,SACLN,MAAM,wCACNwB,QAAS5B,GAETG,EAAA,WAASwB,GAAG,OAAOX,QAAQ,mBAAmBT,MAAM,WACjDT,MAmBJ,MAAM+B,EAA6D,EACxEC,KACAC,SACAC,WACAC,SACAC,mBACAC,cACAC,UACAC,UACAC,cAEAnC,EAAA,OACE2B,GAAIA,EACJ1B,MAAO,CACL,gBAAiB,KACjB,iBAAkB,KAClB,iBAAkB,KAClB,sBAAuB,KACvB,yBAA0B6B,GAAUC,EACpC,uBAAwBH,EAAOQ,WAC/B,gCAAiCP,IAAaD,EAAOQ,WACrD,wBAAyBR,EAAOQ,WAChC,wBAAyBN,GAE3BO,KAAK,SAAQ,gBACEC,OAAOT,GAAS,gBAChBD,EAAOQ,WAAa,OAASG,UAC5CC,YAAa/B,GAASA,EAAMgC,iBAC5BC,YAAa,KACX,IAAKd,EAAOQ,WAAYF,GAAS,EAEnCT,QAASU,GAERF,EACDjC,EAAA,OAAKC,MAAM,wDACTD,EAAA,WACEC,MAAM,wBACNuB,GAAG,OACHX,QAAQ,mBACRT,MAAOyB,EAAW,UAAY,aAE7BD,EAAOjB,OAETqB,GACChC,EAAA,WAASC,MAAM,0BAA0BuB,GAAG,OAAOX,QAAQ,kBAAkBT,MAAM,aAChFwB,EAAOe,SAASC,QAAU,c","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- function n(n,t){return n==null||t==null?NaN:n<t?-1:n>t?1:n>=t?0:NaN}function t(n,t){return n==null||t==null?NaN:t<n?-1:t>n?1:t>=n?0:NaN}function r(r){let i,u,a;if(r.length!==2){i=n;u=(t,e)=>n(r(t),e);a=(n,t)=>r(n)-t}else{i=r===n||r===t?r:e;u=r;a=r}function f(n,t,r=0,e=n.length){if(r<e){if(i(t,t)!==0)return e;do{const i=r+e>>>1;if(u(n[i],t)<0)r=i+1;else e=i}while(r<e)}return r}function o(n,t,r=0,e=n.length){if(r<e){if(i(t,t)!==0)return e;do{const i=r+e>>>1;if(u(n[i],t)<=0)r=i+1;else e=i}while(r<e)}return r}function s(n,t,r=0,e=n.length){const i=f(n,t,r,e-1);return i>r&&a(n[i-1],t)>-a(n[i],t)?i-1:i}return{left:f,center:s,right:o}}function e(){return 0}function i(n){return n===null?NaN:+n}const u=r(n);const a=u.right;r(i).center;class f extends Map{constructor(n,t=c){super();Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}});if(n!=null)for(const[t,r]of n)this.set(t,r)}get(n){return super.get(o(this,n))}has(n){return super.has(o(this,n))}set(n,t){return super.set(s(this,n),t)}delete(n){return super.delete(h(this,n))}}function o({_intern:n,_key:t},r){const e=t(r);return n.has(e)?n.get(e):r}function s({_intern:n,_key:t},r){const e=t(r);if(n.has(e))return n.get(e);n.set(e,r);return r}function h({_intern:n,_key:t},r){const e=t(r);if(n.has(e)){r=n.get(e);n.delete(e)}return r}function c(n){return n!==null&&typeof n==="object"?n.valueOf():n}const l=Math.sqrt(50),d=Math.sqrt(10),g=Math.sqrt(2);function M(n,t,r){const e=(t-n)/Math.max(0,r),i=Math.floor(Math.log10(e)),u=e/Math.pow(10,i),a=u>=l?10:u>=d?5:u>=g?2:1;let f,o,s;if(i<0){s=Math.pow(10,-i)/a;f=Math.round(n*s);o=Math.round(t*s);if(f/s<n)++f;if(o/s>t)--o;s=-s}else{s=Math.pow(10,i)*a;f=Math.round(n/s);o=Math.round(t/s);if(f*s<n)++f;if(o*s>t)--o}if(o<f&&.5<=r&&r<2)return M(n,t,r*2);return[f,o,s]}function v(n,t,r){t=+t,n=+n,r=+r;if(!(r>0))return[];if(n===t)return[n];const e=t<n,[i,u,a]=e?M(t,n,r):M(n,t,r);if(!(u>=i))return[];const f=u-i+1,o=new Array(f);if(e){if(a<0)for(let n=0;n<f;++n)o[n]=(u-n)/-a;else for(let n=0;n<f;++n)o[n]=(u-n)*a}else{if(a<0)for(let n=0;n<f;++n)o[n]=(i+n)/-a;else for(let n=0;n<f;++n)o[n]=(i+n)*a}return o}function w(n,t,r){t=+t,n=+n,r=+r;return M(n,t,r)[2]}function b(n,t,r){t=+t,n=+n,r=+r;const e=t<n,i=e?w(t,n,r):w(n,t,r);return(e?-1:1)*(i<0?1/-i:i)}function y(n,t){let r;if(t===undefined){for(const t of n){if(t!=null&&(r<t||r===undefined&&t>=t)){r=t}}}else{let e=-1;for(let i of n){if((i=t(i,++e,n))!=null&&(r<i||r===undefined&&i>=i)){r=i}}}return r}function p(n,t,r){n=+n,t=+t,r=(i=arguments.length)<2?(t=n,n=0,1):i<3?1:+r;var e=-1,i=Math.max(0,Math.ceil((t-n)/r))|0,u=new Array(i);while(++e<i){u[e]=n+e*r}return u}function m(n,t){switch(arguments.length){case 0:break;case 1:this.range(n);break;default:this.range(t).domain(n);break}return this}const N=Symbol("implicit");function k(){var n=new f,t=[],r=[],e=N;function i(i){let u=n.get(i);if(u===undefined){if(e!==N)return e;n.set(i,u=t.push(i)-1)}return r[u%r.length]}i.domain=function(r){if(!arguments.length)return t.slice();t=[],n=new f;for(const e of r){if(n.has(e))continue;n.set(e,t.push(e)-1)}return i};i.range=function(n){return arguments.length?(r=Array.from(n),i):r.slice()};i.unknown=function(n){return arguments.length?(e=n,i):e};i.copy=function(){return k(t,r).unknown(e)};m.apply(i,arguments);return i}function $(){var n=k().unknown(undefined),t=n.domain,r=n.range,e=0,i=1,u,a,f=false,o=0,s=0,h=.5;delete n.unknown;function c(){var n=t().length,c=i<e,l=c?i:e,d=c?e:i;u=(d-l)/Math.max(1,n-o+s*2);if(f)u=Math.floor(u);l+=(d-l-u*(n-o))*h;a=u*(1-o);if(f)l=Math.round(l),a=Math.round(a);var g=p(n).map((function(n){return l+u*n}));return r(c?g.reverse():g)}n.domain=function(n){return arguments.length?(t(n),c()):t()};n.range=function(n){return arguments.length?([e,i]=n,e=+e,i=+i,c()):[e,i]};n.rangeRound=function(n){return[e,i]=n,e=+e,i=+i,f=true,c()};n.bandwidth=function(){return a};n.step=function(){return u};n.round=function(n){return arguments.length?(f=!!n,c()):f};n.padding=function(n){return arguments.length?(o=Math.min(1,s=+n),c()):o};n.paddingInner=function(n){return arguments.length?(o=Math.min(1,n),c()):o};n.paddingOuter=function(n){return arguments.length?(s=+n,c()):s};n.align=function(n){return arguments.length?(h=Math.max(0,Math.min(1,n)),c()):h};n.copy=function(){return $(t(),[e,i]).round(f).paddingInner(o).paddingOuter(s).align(h)};return m.apply(c(),arguments)}function x(n){var t=n.copy;n.padding=n.paddingOuter;delete n.paddingInner;delete n.paddingOuter;n.copy=function(){return x(t())};return n}function A(){return x($.apply(null,arguments).paddingInner(1))}function E(n,t,r){n.prototype=t.prototype=r;r.constructor=n}function q(n,t){var r=Object.create(n.prototype);for(var e in t)r[e]=t[e];return r}function R(){}var _=.7;var j=1/_;var H="\\s*([+-]?\\d+)\\s*",z="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",S="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",D=/^#([0-9a-f]{3,8})$/,I=new RegExp(`^rgb\\(${H},${H},${H}\\)$`),O=new RegExp(`^rgb\\(${S},${S},${S}\\)$`),P=new RegExp(`^rgba\\(${H},${H},${H},${z}\\)$`),X=new RegExp(`^rgba\\(${S},${S},${S},${z}\\)$`),B=new RegExp(`^hsl\\(${z},${S},${S}\\)$`),F=new RegExp(`^hsla\\(${z},${S},${S},${z}\\)$`);var G={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};E(R,C,{copy(n){return Object.assign(new this.constructor,this,n)},displayable(){return this.rgb().displayable()},hex:T,formatHex:T,formatHex8:V,formatHsl:Y,formatRgb:Z,toString:Z});function T(){return this.rgb().formatHex()}function V(){return this.rgb().formatHex8()}function Y(){return fn(this).formatHsl()}function Z(){return this.rgb().formatRgb()}function C(n){var t,r;n=(n+"").trim().toLowerCase();return(t=D.exec(n))?(r=t[1].length,t=parseInt(t[1],16),r===6?J(t):r===3?new U(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?K(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?K(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=I.exec(n))?new U(t[1],t[2],t[3],1):(t=O.exec(n))?new U(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=P.exec(n))?K(t[1],t[2],t[3],t[4]):(t=X.exec(n))?K(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=B.exec(n))?an(t[1],t[2]/100,t[3]/100,1):(t=F.exec(n))?an(t[1],t[2]/100,t[3]/100,t[4]):G.hasOwnProperty(n)?J(G[n]):n==="transparent"?new U(NaN,NaN,NaN,0):null}function J(n){return new U(n>>16&255,n>>8&255,n&255,1)}function K(n,t,r,e){if(e<=0)n=t=r=NaN;return new U(n,t,r,e)}function L(n){if(!(n instanceof R))n=C(n);if(!n)return new U;n=n.rgb();return new U(n.r,n.g,n.b,n.opacity)}function Q(n,t,r,e){return arguments.length===1?L(n):new U(n,t,r,e==null?1:e)}function U(n,t,r,e){this.r=+n;this.g=+t;this.b=+r;this.opacity=+e}E(U,Q,q(R,{brighter(n){n=n==null?j:Math.pow(j,n);return new U(this.r*n,this.g*n,this.b*n,this.opacity)},darker(n){n=n==null?_:Math.pow(_,n);return new U(this.r*n,this.g*n,this.b*n,this.opacity)},rgb(){return this},clamp(){return new U(en(this.r),en(this.g),en(this.b),rn(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&(-.5<=this.g&&this.g<255.5)&&(-.5<=this.b&&this.b<255.5)&&(0<=this.opacity&&this.opacity<=1)},hex:W,formatHex:W,formatHex8:nn,formatRgb:tn,toString:tn}));function W(){return`#${un(this.r)}${un(this.g)}${un(this.b)}`}function nn(){return`#${un(this.r)}${un(this.g)}${un(this.b)}${un((isNaN(this.opacity)?1:this.opacity)*255)}`}function tn(){const n=rn(this.opacity);return`${n===1?"rgb(":"rgba("}${en(this.r)}, ${en(this.g)}, ${en(this.b)}${n===1?")":`, ${n})`}`}function rn(n){return isNaN(n)?1:Math.max(0,Math.min(1,n))}function en(n){return Math.max(0,Math.min(255,Math.round(n)||0))}function un(n){n=en(n);return(n<16?"0":"")+n.toString(16)}function an(n,t,r,e){if(e<=0)n=t=r=NaN;else if(r<=0||r>=1)n=t=NaN;else if(t<=0)n=NaN;return new sn(n,t,r,e)}function fn(n){if(n instanceof sn)return new sn(n.h,n.s,n.l,n.opacity);if(!(n instanceof R))n=C(n);if(!n)return new sn;if(n instanceof sn)return n;n=n.rgb();var t=n.r/255,r=n.g/255,e=n.b/255,i=Math.min(t,r,e),u=Math.max(t,r,e),a=NaN,f=u-i,o=(u+i)/2;if(f){if(t===u)a=(r-e)/f+(r<e)*6;else if(r===u)a=(e-t)/f+2;else a=(t-r)/f+4;f/=o<.5?u+i:2-u-i;a*=60}else{f=o>0&&o<1?0:a}return new sn(a,f,o,n.opacity)}function on(n,t,r,e){return arguments.length===1?fn(n):new sn(n,t,r,e==null?1:e)}function sn(n,t,r,e){this.h=+n;this.s=+t;this.l=+r;this.opacity=+e}E(sn,on,q(R,{brighter(n){n=n==null?j:Math.pow(j,n);return new sn(this.h,this.s,this.l*n,this.opacity)},darker(n){n=n==null?_:Math.pow(_,n);return new sn(this.h,this.s,this.l*n,this.opacity)},rgb(){var n=this.h%360+(this.h<0)*360,t=isNaN(n)||isNaN(this.s)?0:this.s,r=this.l,e=r+(r<.5?r:1-r)*t,i=2*r-e;return new U(ln(n>=240?n-240:n+120,i,e),ln(n,i,e),ln(n<120?n+240:n-120,i,e),this.opacity)},clamp(){return new sn(hn(this.h),cn(this.s),cn(this.l),rn(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&(0<=this.l&&this.l<=1)&&(0<=this.opacity&&this.opacity<=1)},formatHsl(){const n=rn(this.opacity);return`${n===1?"hsl(":"hsla("}${hn(this.h)}, ${cn(this.s)*100}%, ${cn(this.l)*100}%${n===1?")":`, ${n})`}`}}));function hn(n){n=(n||0)%360;return n<0?n+360:n}function cn(n){return Math.max(0,Math.min(1,n||0))}function ln(n,t,r){return(n<60?t+(r-t)*n/60:n<180?r:n<240?t+(r-t)*(240-n)/60:t)*255}var dn=n=>()=>n;function gn(n,t){return function(r){return n+r*t}}function Mn(n,t,r){return n=Math.pow(n,r),t=Math.pow(t,r)-n,r=1/r,function(e){return Math.pow(n+e*t,r)}}function vn(n){return(n=+n)===1?wn:function(t,r){return r-t?Mn(t,r,n):dn(isNaN(t)?r:t)}}function wn(n,t){var r=t-n;return r?gn(n,r):dn(isNaN(n)?t:n)}var bn=function n(t){var r=vn(t);function e(n,t){var e=r((n=Q(n)).r,(t=Q(t)).r),i=r(n.g,t.g),u=r(n.b,t.b),a=wn(n.opacity,t.opacity);return function(t){n.r=e(t);n.g=i(t);n.b=u(t);n.opacity=a(t);return n+""}}e.gamma=n;return e}(1);function yn(n,t){if(!t)t=[];var r=n?Math.min(t.length,n.length):0,e=t.slice(),i;return function(u){for(i=0;i<r;++i)e[i]=n[i]*(1-u)+t[i]*u;return e}}function pn(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}function mn(n,t){var r=t?t.length:0,e=n?Math.min(r,n.length):0,i=new Array(e),u=new Array(r),a;for(a=0;a<e;++a)i[a]=_n(n[a],t[a]);for(;a<r;++a)u[a]=t[a];return function(n){for(a=0;a<e;++a)u[a]=i[a](n);return u}}function Nn(n,t){var r=new Date;return n=+n,t=+t,function(e){return r.setTime(n*(1-e)+t*e),r}}function kn(n,t){return n=+n,t=+t,function(r){return n*(1-r)+t*r}}function $n(n,t){var r={},e={},i;if(n===null||typeof n!=="object")n={};if(t===null||typeof t!=="object")t={};for(i in t){if(i in n){r[i]=_n(n[i],t[i])}else{e[i]=t[i]}}return function(n){for(i in r)e[i]=r[i](n);return e}}var xn=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,An=new RegExp(xn.source,"g");function En(n){return function(){return n}}function qn(n){return function(t){return n(t)+""}}function Rn(n,t){var r=xn.lastIndex=An.lastIndex=0,e,i,u,a=-1,f=[],o=[];n=n+"",t=t+"";while((e=xn.exec(n))&&(i=An.exec(t))){if((u=i.index)>r){u=t.slice(r,u);if(f[a])f[a]+=u;else f[++a]=u}if((e=e[0])===(i=i[0])){if(f[a])f[a]+=i;else f[++a]=i}else{f[++a]=null;o.push({i:a,x:kn(e,i)})}r=An.lastIndex}if(r<t.length){u=t.slice(r);if(f[a])f[a]+=u;else f[++a]=u}return f.length<2?o[0]?qn(o[0].x):En(t):(t=o.length,function(n){for(var r=0,e;r<t;++r)f[(e=o[r]).i]=e.x(n);return f.join("")})}function _n(n,t){var r=typeof t,e;return t==null||r==="boolean"?dn(t):(r==="number"?kn:r==="string"?(e=C(t))?(t=e,bn):Rn:t instanceof C?bn:t instanceof Date?Nn:pn(t)?yn:Array.isArray(t)?mn:typeof t.valueOf!=="function"&&typeof t.toString!=="function"||isNaN(t)?$n:kn)(n,t)}function jn(n,t){return n=+n,t=+t,function(r){return Math.round(n*(1-r)+t*r)}}function Hn(n){return function(){return n}}function zn(n){return+n}var Sn=[0,1];function Dn(n){return n}function In(n,t){return(t-=n=+n)?function(r){return(r-n)/t}:Hn(isNaN(t)?NaN:.5)}function On(n,t){var r;if(n>t)r=n,n=t,t=r;return function(r){return Math.max(n,Math.min(t,r))}}function Pn(n,t,r){var e=n[0],i=n[1],u=t[0],a=t[1];if(i<e)e=In(i,e),u=r(a,u);else e=In(e,i),u=r(u,a);return function(n){return u(e(n))}}function Xn(n,t,r){var e=Math.min(n.length,t.length)-1,i=new Array(e),u=new Array(e),f=-1;if(n[e]<n[0]){n=n.slice().reverse();t=t.slice().reverse()}while(++f<e){i[f]=In(n[f],n[f+1]);u[f]=r(t[f],t[f+1])}return function(t){var r=a(n,t,1,e)-1;return u[r](i[r](t))}}function Bn(n,t){return t.domain(n.domain()).range(n.range()).interpolate(n.interpolate()).clamp(n.clamp()).unknown(n.unknown())}function Fn(){var n=Sn,t=Sn,r=_n,e,i,u,a=Dn,f,o,s;function h(){var r=Math.min(n.length,t.length);if(a!==Dn)a=On(n[0],n[r-1]);f=r>2?Xn:Pn;o=s=null;return c}function c(i){return i==null||isNaN(i=+i)?u:(o||(o=f(n.map(e),t,r)))(e(a(i)))}c.invert=function(r){return a(i((s||(s=f(t,n.map(e),kn)))(r)))};c.domain=function(t){return arguments.length?(n=Array.from(t,zn),h()):n.slice()};c.range=function(n){return arguments.length?(t=Array.from(n),h()):t.slice()};c.rangeRound=function(n){return t=Array.from(n),r=jn,h()};c.clamp=function(n){return arguments.length?(a=n?true:Dn,h()):a!==Dn};c.interpolate=function(n){return arguments.length?(r=n,h()):r};c.unknown=function(n){return arguments.length?(u=n,c):u};return function(n,t){e=n,i=t;return h()}}function Gn(){return Fn()(Dn,Dn)}function Tn(n){return Math.abs(n=Math.round(n))>=1e21?n.toLocaleString("en").replace(/,/g,""):n.toString(10)}function Vn(n,t){if(!isFinite(n)||n===0)return null;var r=(n=t?n.toExponential(t-1):n.toExponential()).indexOf("e"),e=n.slice(0,r);return[e.length>1?e[0]+e.slice(2):e,+n.slice(r+1)]}function Yn(n){return n=Vn(Math.abs(n)),n?n[1]:NaN}function Zn(n,t){return function(r,e){var i=r.length,u=[],a=0,f=n[0],o=0;while(i>0&&f>0){if(o+f+1>e)f=Math.max(1,e-o);u.push(r.substring(i-=f,i+f));if((o+=f+1)>e)break;f=n[a=(a+1)%n.length]}return u.reverse().join(t)}}function Cn(n){return function(t){return t.replace(/[0-9]/g,(function(t){return n[+t]}))}}var Jn=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Kn(n){if(!(t=Jn.exec(n)))throw new Error("invalid format: "+n);var t;return new Ln({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}Kn.prototype=Ln.prototype;function Ln(n){this.fill=n.fill===undefined?" ":n.fill+"";this.align=n.align===undefined?">":n.align+"";this.sign=n.sign===undefined?"-":n.sign+"";this.symbol=n.symbol===undefined?"":n.symbol+"";this.zero=!!n.zero;this.width=n.width===undefined?undefined:+n.width;this.comma=!!n.comma;this.precision=n.precision===undefined?undefined:+n.precision;this.trim=!!n.trim;this.type=n.type===undefined?"":n.type+""}Ln.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===undefined?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===undefined?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function Qn(n){n:for(var t=n.length,r=1,e=-1,i;r<t;++r){switch(n[r]){case".":e=i=r;break;case"0":if(e===0)e=r;i=r;break;default:if(!+n[r])break n;if(e>0)e=0;break}}return e>0?n.slice(0,e)+n.slice(i+1):n}var Un;function Wn(n,t){var r=Vn(n,t);if(!r)return Un=undefined,n.toPrecision(t);var e=r[0],i=r[1],u=i-(Un=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,a=e.length;return u===a?e:u>a?e+new Array(u-a+1).join("0"):u>0?e.slice(0,u)+"."+e.slice(u):"0."+new Array(1-u).join("0")+Vn(n,Math.max(0,t+u-1))[0]}function nt(n,t){var r=Vn(n,t);if(!r)return n+"";var e=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+e:e.length>i+1?e.slice(0,i+1)+"."+e.slice(i+1):e+new Array(i-e.length+2).join("0")}var tt={"%":(n,t)=>(n*100).toFixed(t),b:n=>Math.round(n).toString(2),c:n=>n+"",d:Tn,e:(n,t)=>n.toExponential(t),f:(n,t)=>n.toFixed(t),g:(n,t)=>n.toPrecision(t),o:n=>Math.round(n).toString(8),p:(n,t)=>nt(n*100,t),r:nt,s:Wn,X:n=>Math.round(n).toString(16).toUpperCase(),x:n=>Math.round(n).toString(16)};function rt(n){return n}var et=Array.prototype.map,it=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function ut(n){var t=n.grouping===undefined||n.thousands===undefined?rt:Zn(et.call(n.grouping,Number),n.thousands+""),r=n.currency===undefined?"":n.currency[0]+"",e=n.currency===undefined?"":n.currency[1]+"",i=n.decimal===undefined?".":n.decimal+"",u=n.numerals===undefined?rt:Cn(et.call(n.numerals,String)),a=n.percent===undefined?"%":n.percent+"",f=n.minus===undefined?"−":n.minus+"",o=n.nan===undefined?"NaN":n.nan+"";function s(n,s){n=Kn(n);var h=n.fill,c=n.align,l=n.sign,d=n.symbol,g=n.zero,M=n.width,v=n.comma,w=n.precision,b=n.trim,y=n.type;if(y==="n")v=true,y="g";else if(!tt[y])w===undefined&&(w=12),b=true,y="g";if(g||h==="0"&&c==="=")g=true,h="0",c="=";var p=(s&&s.prefix!==undefined?s.prefix:"")+(d==="$"?r:d==="#"&&/[boxX]/.test(y)?"0"+y.toLowerCase():""),m=(d==="$"?e:/[%p]/.test(y)?a:"")+(s&&s.suffix!==undefined?s.suffix:"");var N=tt[y],k=/[defgprs%]/.test(y);w=w===undefined?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function $(n){var r=p,e=m,a,s,d;if(y==="c"){e=N(n)+e;n=""}else{n=+n;var $=n<0||1/n<0;n=isNaN(n)?o:N(Math.abs(n),w);if(b)n=Qn(n);if($&&+n===0&&l!=="+")$=false;r=($?l==="("?l:f:l==="-"||l==="("?"":l)+r;e=(y==="s"&&!isNaN(n)&&Un!==undefined?it[8+Un/3]:"")+e+($&&l==="("?")":"");if(k){a=-1,s=n.length;while(++a<s){if(d=n.charCodeAt(a),48>d||d>57){e=(d===46?i+n.slice(a+1):n.slice(a))+e;n=n.slice(0,a);break}}}}if(v&&!g)n=t(n,Infinity);var x=r.length+n.length+e.length,A=x<M?new Array(M-x+1).join(h):"";if(v&&g)n=t(A+n,A.length?M-e.length:Infinity),A="";switch(c){case"<":n=r+n+e+A;break;case"=":n=r+A+n+e;break;case"^":n=A.slice(0,x=A.length>>1)+r+n+e+A.slice(x);break;default:n=A+r+n+e;break}return u(n)}$.toString=function(){return n+""};return $}function h(n,t){var r=Math.max(-8,Math.min(8,Math.floor(Yn(t)/3)))*3,e=Math.pow(10,-r),i=s((n=Kn(n),n.type="f",n),{suffix:it[8+r/3]});return function(n){return i(e*n)}}return{format:s,formatPrefix:h}}var at;var ft;var ot;st({thousands:",",grouping:[3],currency:["$",""]});function st(n){at=ut(n);ft=at.format;ot=at.formatPrefix;return at}function ht(n){return Math.max(0,-Yn(Math.abs(n)))}function ct(n,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Yn(t)/3)))*3-Yn(Math.abs(n)))}function lt(n,t){n=Math.abs(n),t=Math.abs(t)-n;return Math.max(0,Yn(t)-Yn(n))+1}function dt(n,t,r,e){var i=b(n,t,r),u;e=Kn(e==null?",f":e);switch(e.type){case"s":{var a=Math.max(Math.abs(n),Math.abs(t));if(e.precision==null&&!isNaN(u=ct(i,a)))e.precision=u;return ot(e,a)}case"":case"e":case"g":case"p":case"r":{if(e.precision==null&&!isNaN(u=lt(i,Math.max(Math.abs(n),Math.abs(t)))))e.precision=u-(e.type==="e");break}case"f":case"%":{if(e.precision==null&&!isNaN(u=ht(i)))e.precision=u-(e.type==="%")*2;break}}return ft(e)}function gt(n){var t=n.domain;n.ticks=function(n){var r=t();return v(r[0],r[r.length-1],n==null?10:n)};n.tickFormat=function(n,r){var e=t();return dt(e[0],e[e.length-1],n==null?10:n,r)};n.nice=function(r){if(r==null)r=10;var e=t();var i=0;var u=e.length-1;var a=e[i];var f=e[u];var o;var s;var h=10;if(f<a){s=a,a=f,f=s;s=i,i=u,u=s}while(h-- >0){s=w(a,f,r);if(s===o){e[i]=a;e[u]=f;return t(e)}else if(s>0){a=Math.floor(a/s)*s;f=Math.ceil(f/s)*s}else if(s<0){a=Math.ceil(a*s)/s;f=Math.floor(f*s)/s}else{break}o=s}return n};return n}function Mt(){var n=Gn();n.copy=function(){return Bn(n,Mt())};m.apply(n,arguments);return gt(n)}export{$ as b,Mt as l,y as m,A as p};
2
- //# sourceMappingURL=p-CzBnvtcz.js.map