@ds-mo/ui 15.4.0 → 15.5.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 (477) hide show
  1. package/NOTICE +7 -1
  2. package/dist/.package-ready.json +1 -1
  3. package/dist/agent-patterns.json +1 -1
  4. package/dist/agent.json +64 -8
  5. package/dist/angular/boolean-value-accessor.js +3 -3
  6. package/dist/angular/ds-agent-activity.js +3 -3
  7. package/dist/angular/ds-agent-questionnaire.js +3 -3
  8. package/dist/angular/ds-agent-response.js +3 -3
  9. package/dist/angular/ds-agent-source-list.js +3 -3
  10. package/dist/angular/ds-agent-tool-call.js +3 -3
  11. package/dist/angular/ds-attachment-list.js +3 -3
  12. package/dist/angular/ds-avatar.js +3 -3
  13. package/dist/angular/ds-badge.js +3 -3
  14. package/dist/angular/ds-banner.js +3 -3
  15. package/dist/angular/ds-bar-action.js +3 -3
  16. package/dist/angular/ds-bar-nav.js +3 -3
  17. package/dist/angular/ds-bar-page-title.js +3 -3
  18. package/dist/angular/ds-bar-title.js +3 -3
  19. package/dist/angular/ds-bar-workflow.js +3 -3
  20. package/dist/angular/ds-breadcrumb.js +3 -3
  21. package/dist/angular/ds-button-filled.js +3 -3
  22. package/dist/angular/ds-button-inverted.js +3 -3
  23. package/dist/angular/ds-button-unfilled.js +3 -3
  24. package/dist/angular/ds-calendar.js +3 -3
  25. package/dist/angular/ds-card-action-center.js +3 -3
  26. package/dist/angular/ds-card-chart.js +3 -3
  27. package/dist/angular/ds-card-navigation.js +3 -3
  28. package/dist/angular/ds-card-overview.js +3 -3
  29. package/dist/angular/ds-card-setting.js +3 -3
  30. package/dist/angular/ds-card-settings-scope.js +3 -3
  31. package/dist/angular/ds-chart-legend.js +3 -3
  32. package/dist/angular/ds-chart.js +3 -3
  33. package/dist/angular/ds-checkbox-group.js +3 -3
  34. package/dist/angular/ds-checkbox.d.ts +1 -1
  35. package/dist/angular/ds-checkbox.js +5 -5
  36. package/dist/angular/ds-chip.js +3 -3
  37. package/dist/angular/ds-code-block.js +3 -3
  38. package/dist/angular/ds-conversation-list-item.js +3 -3
  39. package/dist/angular/ds-conversation-list-section.js +3 -3
  40. package/dist/angular/ds-conversation-list.js +3 -3
  41. package/dist/angular/ds-data-customize.js +3 -3
  42. package/dist/angular/ds-data-filter.js +3 -3
  43. package/dist/angular/ds-data-group.js +3 -3
  44. package/dist/angular/ds-data-preferences.js +3 -3
  45. package/dist/angular/ds-data-saved-views.js +3 -3
  46. package/dist/angular/ds-data-search.js +3 -3
  47. package/dist/angular/ds-data-sort.js +3 -3
  48. package/dist/angular/ds-data-toolbar.js +3 -3
  49. package/dist/angular/ds-divider.js +3 -3
  50. package/dist/angular/ds-empty-state.js +3 -3
  51. package/dist/angular/ds-field.js +3 -3
  52. package/dist/angular/ds-filter-menu.js +3 -3
  53. package/dist/angular/ds-icon.js +3 -3
  54. package/dist/angular/ds-inline-banner-settings.js +3 -3
  55. package/dist/angular/ds-input-date.js +3 -3
  56. package/dist/angular/ds-input-time.js +3 -3
  57. package/dist/angular/ds-input.js +3 -3
  58. package/dist/angular/ds-loader.js +3 -3
  59. package/dist/angular/ds-map-cluster-marker.js +3 -3
  60. package/dist/angular/ds-map-entity-marker.js +3 -3
  61. package/dist/angular/ds-markdown.js +3 -3
  62. package/dist/angular/ds-menu.js +3 -3
  63. package/dist/angular/ds-message-actions.js +3 -3
  64. package/dist/angular/ds-message-bubble.js +3 -3
  65. package/dist/angular/ds-message-composer.js +3 -3
  66. package/dist/angular/ds-message-scroller.js +3 -3
  67. package/dist/angular/ds-message.js +3 -3
  68. package/dist/angular/ds-mobile-bar-nav.js +3 -3
  69. package/dist/angular/ds-mobile-header.js +3 -3
  70. package/dist/angular/ds-mobile-section-switcher.js +3 -3
  71. package/dist/angular/ds-mobile-sheet-nav.js +3 -3
  72. package/dist/angular/ds-modal.js +3 -3
  73. package/dist/angular/ds-pagination.js +3 -3
  74. package/dist/angular/ds-panel-nav.js +3 -3
  75. package/dist/angular/ds-panel-sub-nav.js +3 -3
  76. package/dist/angular/ds-panel-tool-header.js +3 -3
  77. package/dist/angular/ds-panel-tool-search.js +3 -3
  78. package/dist/angular/ds-panel-tools.js +3 -3
  79. package/dist/angular/ds-paper-texture.js +3 -3
  80. package/dist/angular/ds-radio-tile.js +3 -3
  81. package/dist/angular/ds-radio.js +3 -3
  82. package/dist/angular/ds-score.js +3 -3
  83. package/dist/angular/ds-scroll-overlay.js +3 -3
  84. package/dist/angular/ds-select.d.ts +1 -1
  85. package/dist/angular/ds-select.js +5 -5
  86. package/dist/angular/ds-setting-row-checkbox.js +3 -3
  87. package/dist/angular/ds-setting-row-radio.js +3 -3
  88. package/dist/angular/ds-setting-row-toggle.js +3 -3
  89. package/dist/angular/ds-shell-app.js +3 -3
  90. package/dist/angular/ds-shell-page.js +3 -3
  91. package/dist/angular/ds-shell-tools.js +3 -3
  92. package/dist/angular/ds-skeleton.js +3 -3
  93. package/dist/angular/ds-slider.js +3 -3
  94. package/dist/angular/ds-swatch-picker.js +3 -3
  95. package/dist/angular/ds-switch.js +3 -3
  96. package/dist/angular/ds-tab-group.js +3 -3
  97. package/dist/angular/ds-table.d.ts +7 -1
  98. package/dist/angular/ds-table.js +13 -7
  99. package/dist/angular/ds-tag.js +3 -3
  100. package/dist/angular/ds-text.js +3 -3
  101. package/dist/angular/ds-textarea.js +3 -3
  102. package/dist/angular/ds-time-picker.js +3 -3
  103. package/dist/angular/ds-toast.js +3 -3
  104. package/dist/angular/ds-tooltip-chart.js +3 -3
  105. package/dist/angular/ds-tooltip.js +3 -3
  106. package/dist/angular/ds-typing-indicator.js +3 -3
  107. package/dist/angular/number-value-accessor.js +3 -3
  108. package/dist/angular/radio-value-accessor.js +3 -3
  109. package/dist/angular/select-value-accessor.js +3 -3
  110. package/dist/angular/text-value-accessor.js +3 -3
  111. package/dist/angular/value-accessor.js +3 -3
  112. package/dist/components/THIRD-PARTY-NOTICES +1791 -0
  113. package/dist/components/bundled-dependencies.json +478 -0
  114. package/dist/components/ds-agent-activity.js +1 -1
  115. package/dist/components/ds-agent-questionnaire.js +1 -1
  116. package/dist/components/ds-agent-response.js +1 -1
  117. package/dist/components/ds-agent-source-list.js +1 -1
  118. package/dist/components/ds-agent-tool-call.js +1 -1
  119. package/dist/components/ds-attachment-list.js +1 -1
  120. package/dist/components/ds-avatar.js +1 -1
  121. package/dist/components/ds-banner.js +1 -1
  122. package/dist/components/ds-banner.js.map +1 -1
  123. package/dist/components/ds-bar-nav.js +1 -1
  124. package/dist/components/ds-bar-page-title.js +1 -1
  125. package/dist/components/ds-bar-title.js +1 -1
  126. package/dist/components/ds-bar-workflow.js +1 -1
  127. package/dist/components/ds-breadcrumb.js +1 -1
  128. package/dist/components/ds-button-filled.js +1 -1
  129. package/dist/components/ds-button-inverted.js +1 -1
  130. package/dist/components/ds-button-unfilled.js +1 -1
  131. package/dist/components/ds-calendar.js +1 -1
  132. package/dist/components/ds-card-action-center.js +1 -1
  133. package/dist/components/ds-card-chart.js +1 -1
  134. package/dist/components/ds-card-navigation.js +1 -1
  135. package/dist/components/ds-card-overview.js +1 -1
  136. package/dist/components/ds-card-overview.js.map +1 -1
  137. package/dist/components/ds-card-setting.js +1 -1
  138. package/dist/components/ds-chart-legend.js +1 -1
  139. package/dist/components/ds-chart-legend.js.map +1 -1
  140. package/dist/components/ds-chart.js +1 -1
  141. package/dist/components/ds-chart.js.map +1 -1
  142. package/dist/components/ds-checkbox.js +1 -1
  143. package/dist/components/ds-chip.js +1 -1
  144. package/dist/components/ds-code-block.js +1 -1
  145. package/dist/components/ds-conversation-list.js +1 -1
  146. package/dist/components/ds-conversation-list.js.map +1 -1
  147. package/dist/components/ds-data-customize.js +1 -1
  148. package/dist/components/ds-data-filter.js +1 -1
  149. package/dist/components/ds-data-group.js +1 -1
  150. package/dist/components/ds-data-preferences.js +1 -1
  151. package/dist/components/ds-data-preferences.js.map +1 -1
  152. package/dist/components/ds-data-saved-views.js +1 -1
  153. package/dist/components/ds-data-search.js +1 -1
  154. package/dist/components/ds-data-sort.js +1 -1
  155. package/dist/components/ds-data-toolbar.js +1 -1
  156. package/dist/components/ds-divider.js +1 -1
  157. package/dist/components/ds-empty-state.js +1 -1
  158. package/dist/components/ds-filter-menu.js +1 -1
  159. package/dist/components/ds-icon.js +1 -1
  160. package/dist/components/ds-input-date.js +1 -1
  161. package/dist/components/ds-input-date.js.map +1 -1
  162. package/dist/components/ds-input-time.js +1 -1
  163. package/dist/components/ds-input-time.js.map +1 -1
  164. package/dist/components/ds-input.js +1 -1
  165. package/dist/components/ds-map-entity-marker.js +1 -1
  166. package/dist/components/ds-markdown.js +1 -1
  167. package/dist/components/ds-menu.js +1 -1
  168. package/dist/components/ds-message-actions.js +1 -1
  169. package/dist/components/ds-message-bubble.js +1 -1
  170. package/dist/components/ds-message-composer.js +1 -1
  171. package/dist/components/ds-message-scroller.js +1 -1
  172. package/dist/components/ds-message.js +1 -1
  173. package/dist/components/ds-mobile-bar-nav.js +1 -1
  174. package/dist/components/ds-mobile-header.js +1 -1
  175. package/dist/components/ds-mobile-section-switcher.js +1 -1
  176. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  177. package/dist/components/ds-modal.js +1 -1
  178. package/dist/components/ds-pagination.js +1 -1
  179. package/dist/components/ds-panel-nav.js +1 -1
  180. package/dist/components/ds-panel-sub-nav.js +1 -1
  181. package/dist/components/ds-panel-tool-header.js +1 -1
  182. package/dist/components/ds-panel-tool-search.js +1 -1
  183. package/dist/components/ds-panel-tools.js +1 -1
  184. package/dist/components/ds-radio-tile.js +1 -1
  185. package/dist/components/ds-radio-tile.js.map +1 -1
  186. package/dist/components/ds-radio.js +1 -1
  187. package/dist/components/ds-scroll-overlay.js +1 -1
  188. package/dist/components/ds-scroll-overlay.js.map +1 -1
  189. package/dist/components/ds-select.js +1 -1
  190. package/dist/components/ds-setting-row-toggle.js +1 -1
  191. package/dist/components/ds-shell-app.js +1 -1
  192. package/dist/components/ds-shell-app.js.map +1 -1
  193. package/dist/components/ds-shell-page.js +1 -1
  194. package/dist/components/ds-shell-tools.js +1 -1
  195. package/dist/components/ds-slider.js +1 -1
  196. package/dist/components/ds-slider.js.map +1 -1
  197. package/dist/components/ds-switch.js +1 -1
  198. package/dist/components/ds-tab-group.js +1 -1
  199. package/dist/components/ds-table.js +1 -1
  200. package/dist/components/ds-table.js.map +1 -1
  201. package/dist/components/ds-tag.js +1 -1
  202. package/dist/components/ds-textarea.js +1 -1
  203. package/dist/components/ds-textarea.js.map +1 -1
  204. package/dist/components/ds-time-picker.js +1 -1
  205. package/dist/components/ds-toast.js +1 -1
  206. package/dist/components/ds-tooltip-chart.js +1 -1
  207. package/dist/components/ds-tooltip.js +1 -1
  208. package/dist/components/p--STJbKuN.js +2 -0
  209. package/dist/components/p--STJbKuN.js.map +1 -0
  210. package/dist/components/{p-Co1rUdOR.js → p--pJyciTI.js} +2 -2
  211. package/dist/components/p--pJyciTI.js.map +1 -0
  212. package/dist/components/p-02k7d7BH.js +2 -0
  213. package/dist/components/p-02k7d7BH.js.map +1 -0
  214. package/dist/components/{p-CZNZTcYS.js → p-5-gQbIIz.js} +2 -2
  215. package/dist/components/{p-DRdoGSGX.js → p-7MwoWtTJ.js} +2 -2
  216. package/dist/components/p-B0uO3-Dp.js +2 -0
  217. package/dist/components/p-B0uO3-Dp.js.map +1 -0
  218. package/dist/components/p-B6TX55c5.js +2 -0
  219. package/dist/components/p-B6TX55c5.js.map +1 -0
  220. package/dist/components/p-B95UP66y.js +2 -0
  221. package/dist/components/p-B95UP66y.js.map +1 -0
  222. package/dist/components/p-BGSG6xIS.js +2 -0
  223. package/dist/components/p-BGSG6xIS.js.map +1 -0
  224. package/dist/components/p-BNarCFJZ.js +2 -0
  225. package/dist/components/p-BNarCFJZ.js.map +1 -0
  226. package/dist/components/{p-DJDbskZf.js → p-BO5URdZF.js} +2 -2
  227. package/dist/components/{p-DmSnHVW6.js → p-BVxK8ce0.js} +2 -2
  228. package/dist/components/{p-B0EpvBDs.js → p-BYeG0b5N.js} +2 -2
  229. package/dist/components/p-BcpIK9S6.js +2 -0
  230. package/dist/components/p-BcpIK9S6.js.map +1 -0
  231. package/dist/components/p-Bf-BphXP.js +2 -0
  232. package/dist/components/p-Bf-BphXP.js.map +1 -0
  233. package/dist/components/{p-Bk3poU91.js → p-BmIllmq2.js} +2 -2
  234. package/dist/components/p-BmIllmq2.js.map +1 -0
  235. package/dist/components/p-Bq_ypMSy.js +2 -0
  236. package/dist/components/p-Bq_ypMSy.js.map +1 -0
  237. package/dist/components/p-ByLH5RAD.js +2 -0
  238. package/dist/components/p-ByLH5RAD.js.map +1 -0
  239. package/dist/components/{p-DzvTC27M.js → p-C1ZfBbJ_.js} +2 -2
  240. package/dist/components/p-C1ZfBbJ_.js.map +1 -0
  241. package/dist/components/p-C1oczmAc.js +2 -0
  242. package/dist/components/p-C1oczmAc.js.map +1 -0
  243. package/dist/components/p-C5BBIDVm.js +2 -0
  244. package/dist/components/p-C5BBIDVm.js.map +1 -0
  245. package/dist/components/{p-CJ1NnOEW.js → p-CA3iQ1ME.js} +2 -2
  246. package/dist/components/p-CE6MaXBg.js +2 -0
  247. package/dist/components/p-CE6MaXBg.js.map +1 -0
  248. package/dist/components/p-CXGjCWSh.js +2 -0
  249. package/dist/components/p-CXGjCWSh.js.map +1 -0
  250. package/dist/components/{p-DYQa1DVF.js → p-C_9VGgPf.js} +2 -2
  251. package/dist/components/p-CbrDF2gA.js +2 -0
  252. package/dist/components/p-CbrDF2gA.js.map +1 -0
  253. package/dist/components/{p-7TVdPhGR.js → p-CgQB8Ct5.js} +2 -2
  254. package/dist/components/{p-D6FRqNhN.js → p-D-J7GgjY.js} +2 -2
  255. package/dist/components/{p-DSZPO06T.js → p-D9_iDlkT.js} +2 -2
  256. package/dist/components/{p-BwdnVqAY.js → p-DEYCF-oJ.js} +2 -2
  257. package/dist/components/p-DGVZhrMd.js +2 -0
  258. package/dist/components/p-DGVZhrMd.js.map +1 -0
  259. package/dist/components/{p-C8V4lkVy.js → p-DKGW3gRa.js} +2 -2
  260. package/dist/components/p-DPFg5d4_.js +2 -0
  261. package/dist/components/p-DPFg5d4_.js.map +1 -0
  262. package/dist/components/{p-C4huuwed.js → p-DR_8IPn9.js} +2 -2
  263. package/dist/components/p-DXL5D30P.js +2 -0
  264. package/dist/components/p-DXL5D30P.js.map +1 -0
  265. package/dist/components/{p-B0BQCVkq.js → p-D_iZPukF.js} +2 -2
  266. package/dist/components/{p-JBki_jyY.js → p-DfMTDFcE.js} +2 -2
  267. package/dist/components/{p-MOJmB6vX.js → p-Dg6hnCc2.js} +2 -2
  268. package/dist/components/{p-DXk1eml1.js → p-DjbT9kKm.js} +2 -2
  269. package/dist/components/p-Dka0lUI_.js +2 -0
  270. package/dist/components/p-Dka0lUI_.js.map +1 -0
  271. package/dist/components/p-DlsjHRU3.js +2 -0
  272. package/dist/components/p-DlsjHRU3.js.map +1 -0
  273. package/dist/components/{p-_IqSPt5V.js → p-Dr5rkAhe.js} +2 -2
  274. package/dist/components/p-DuCCuJKI.js +2 -0
  275. package/dist/components/p-DuCCuJKI.js.map +1 -0
  276. package/dist/components/{p-DIQiHX0q.js → p-DvGrsLgt.js} +2 -2
  277. package/dist/components/{p-Doa2blZT.js → p-PtxCwf5S.js} +2 -2
  278. package/dist/components/p-PzYJqN8B.js +2 -0
  279. package/dist/components/p-PzYJqN8B.js.map +1 -0
  280. package/dist/components/p-S1Ct3FJV.js +2 -0
  281. package/dist/components/p-S1Ct3FJV.js.map +1 -0
  282. package/dist/components/p-YC7UM4jH.js +2 -0
  283. package/dist/components/p-YC7UM4jH.js.map +1 -0
  284. package/dist/components/{p-B9TM6FqC.js → p-d76Ry5nh.js} +2 -2
  285. package/dist/components/p-ioGH5SoA.js +2 -0
  286. package/dist/components/p-ioGH5SoA.js.map +1 -0
  287. package/dist/components/p-jp7hwRtC.js +2 -0
  288. package/dist/components/p-jp7hwRtC.js.map +1 -0
  289. package/dist/components/{p-BFHpU-uU.js → p-kwS-vkau.js} +2 -2
  290. package/dist/components/{p-DjkUFlDW.js → p-pPtjNRqC.js} +3 -2
  291. package/dist/components/p-pPtjNRqC.js.map +1 -0
  292. package/dist/components/{p-B39iJO8F.js → p-rmPIcWED.js} +2 -2
  293. package/dist/components/p-t2Ebn8si.js +2 -0
  294. package/dist/components/p-t2Ebn8si.js.map +1 -0
  295. package/dist/components/p-wRhYxngW.js +2 -0
  296. package/dist/components/p-wRhYxngW.js.map +1 -0
  297. package/dist/docs/components.json +477 -82
  298. package/dist/lib/components/Icon/icon-cache.d.ts +6 -0
  299. package/dist/lib/utils/clock-time.d.ts +1 -0
  300. package/dist/lib/utils/date-filter-value.d.ts +2 -0
  301. package/dist/lib/utils/form-association.d.ts +2 -1
  302. package/dist/lib/utils/format-percentage.d.ts +1 -1
  303. package/dist/lib/utils/index.js +113 -93
  304. package/dist/lib/utils/index.js.map +4 -4
  305. package/dist/lib/utils/intl-formatters.d.ts +3 -0
  306. package/dist/lib/utils/resolve-css-length-px.d.ts +4 -3
  307. package/dist/lint/THIRD-PARTY-NOTICES +97 -40
  308. package/dist/lint/bundled-dependencies.json +162 -0
  309. package/dist/lint/index.js +1341 -1333
  310. package/dist/mcp/THIRD-PARTY-NOTICES +470 -0
  311. package/dist/mcp/bundled-dependencies.json +29 -0
  312. package/dist/mcp-data/registry/agent-tool-call.json +1 -1
  313. package/dist/mcp-data/registry/banner.json +1 -1
  314. package/dist/mcp-data/registry/bar-nav.json +1 -1
  315. package/dist/mcp-data/registry/bar-page-title.json +1 -1
  316. package/dist/mcp-data/registry/breadcrumb.json +1 -1
  317. package/dist/mcp-data/registry/calendar.json +4 -4
  318. package/dist/mcp-data/registry/card-overview.json +1 -1
  319. package/dist/mcp-data/registry/chart.json +3 -3
  320. package/dist/mcp-data/registry/checkbox.json +17 -1
  321. package/dist/mcp-data/registry/conversation-list.json +1 -1
  322. package/dist/mcp-data/registry/data-group.json +1 -1
  323. package/dist/mcp-data/registry/data-preferences.json +1 -1
  324. package/dist/mcp-data/registry/filter-menu.json +1 -1
  325. package/dist/mcp-data/registry/icon.json +6 -5
  326. package/dist/mcp-data/registry/input-date.json +1 -1
  327. package/dist/mcp-data/registry/input-time.json +1 -1
  328. package/dist/mcp-data/registry/markdown.json +1 -1
  329. package/dist/mcp-data/registry/menu.json +1 -1
  330. package/dist/mcp-data/registry/message.json +4 -4
  331. package/dist/mcp-data/registry/mobile-section-switcher.json +1 -1
  332. package/dist/mcp-data/registry/modal.json +1 -1
  333. package/dist/mcp-data/registry/panel-nav.json +1 -1
  334. package/dist/mcp-data/registry/radio-tile.json +1 -1
  335. package/dist/mcp-data/registry/radio.json +1 -1
  336. package/dist/mcp-data/registry/registry.json +63 -7
  337. package/dist/mcp-data/registry/scroll-overlay.json +1 -1
  338. package/dist/mcp-data/registry/select.json +70 -3
  339. package/dist/mcp-data/registry/shell-app.json +1 -1
  340. package/dist/mcp-data/registry/slider.json +3 -3
  341. package/dist/mcp-data/registry/switch.json +1 -1
  342. package/dist/mcp-data/registry/table.json +140 -14
  343. package/dist/mcp-data/registry/tooltip-chart.json +1 -1
  344. package/dist/react/ds-table.d.ts +3 -1
  345. package/dist/react/ds-table.js +2 -0
  346. package/dist/styles/table.css +405 -8
  347. package/dist/types/components/AgentToolCall/AgentToolCall.d.ts +3 -0
  348. package/dist/types/components/Banner/Banner.d.ts +1 -0
  349. package/dist/types/components/BarNav/BarNav.d.ts +4 -0
  350. package/dist/types/components/BarPageTitle/BarPageTitle.d.ts +4 -0
  351. package/dist/types/components/Breadcrumb/Breadcrumb.d.ts +5 -0
  352. package/dist/types/components/Calendar/Calendar.d.ts +2 -0
  353. package/dist/types/components/CardOverview/CardOverview.d.ts +3 -0
  354. package/dist/types/components/Chart/Chart.d.ts +7 -1
  355. package/dist/types/components/Checkbox/Checkbox.d.ts +3 -0
  356. package/dist/types/components/ConversationList/ConversationList.d.ts +3 -0
  357. package/dist/types/components/DataGroup/DataGroup.d.ts +3 -0
  358. package/dist/types/components/DataPreferences/DataPreferences.d.ts +1 -0
  359. package/dist/types/components/FilterMenu/FilterMenu.d.ts +1 -0
  360. package/dist/types/components/Icon/icon-cache.d.ts +6 -0
  361. package/dist/types/components/Icon/icon-svg.d.ts +10 -24
  362. package/dist/types/components/Markdown/Markdown.d.ts +4 -0
  363. package/dist/types/components/Menu/Menu.d.ts +3 -0
  364. package/dist/types/components/Message/Message.d.ts +1 -1
  365. package/dist/types/components/MobileSectionSwitcher/MobileSectionSwitcher.d.ts +5 -0
  366. package/dist/types/components/Modal/Modal.d.ts +3 -0
  367. package/dist/types/components/PanelNav/PanelNav.d.ts +8 -1
  368. package/dist/types/components/Radio/Radio.d.ts +1 -0
  369. package/dist/types/components/ScrollOverlay/ScrollOverlay.d.ts +1 -0
  370. package/dist/types/components/Select/Select.d.ts +8 -0
  371. package/dist/types/components/ShellApp/ShellApp.d.ts +3 -0
  372. package/dist/types/components/Slider/Slider.d.ts +1 -1
  373. package/dist/types/components/Switch/Switch.d.ts +2 -0
  374. package/dist/types/components/Table/Table.d.ts +35 -0
  375. package/dist/types/components/Table/index.d.ts +1 -1
  376. package/dist/types/components/Table/table-body-renderer.d.ts +1 -0
  377. package/dist/types/components/Table/table-cell-editor.d.ts +4 -0
  378. package/dist/types/components/Table/table-grid-model.d.ts +23 -0
  379. package/dist/types/components/Table/table-layout-controller.d.ts +1 -0
  380. package/dist/types/components/Table/table-model.d.ts +1 -1
  381. package/dist/types/components/Table/table-review-fixtures.d.ts +10 -0
  382. package/dist/types/components/Table/table-row-view.d.ts +11 -2
  383. package/dist/types/components/Table/table-skeleton-view.d.ts +3 -1
  384. package/dist/types/components/Table/table-structure.d.ts +38 -0
  385. package/dist/types/components/Table/table-types.d.ts +71 -1
  386. package/dist/types/components/Table/table-virtual-controller.d.ts +1 -0
  387. package/dist/types/components/TooltipChart/TooltipChart.d.ts +4 -0
  388. package/dist/types/components.d.ts +98 -12
  389. package/dist/types/shell/chrome-transition.d.ts +1 -0
  390. package/dist/types/utils/anchored-position-controller.d.ts +2 -0
  391. package/dist/types/utils/clock-time.d.ts +1 -0
  392. package/dist/types/utils/connection-tasks.d.ts +13 -0
  393. package/dist/types/utils/date-filter-value.d.ts +2 -0
  394. package/dist/types/utils/form-association.d.ts +2 -1
  395. package/dist/types/utils/format-percentage.d.ts +1 -1
  396. package/dist/types/utils/intl-formatters.d.ts +4 -0
  397. package/dist/types/utils/resolve-css-length-px.d.ts +4 -3
  398. package/dist/types/utils/select-controller.d.ts +1 -0
  399. package/dist/vue/THIRD-PARTY-NOTICES +14 -0
  400. package/dist/vue/bundled-dependencies.json +13 -0
  401. package/dist/vue/ds-checkbox.js +1 -0
  402. package/dist/vue/ds-select.js +4 -0
  403. package/dist/vue/ds-table.js +8 -0
  404. package/package.json +16 -11
  405. package/dist/components/p-B8ZonS3S.js +0 -2
  406. package/dist/components/p-B8ZonS3S.js.map +0 -1
  407. package/dist/components/p-BDdlJZyL.js +0 -2
  408. package/dist/components/p-BDdlJZyL.js.map +0 -1
  409. package/dist/components/p-BERXvOCf.js +0 -2
  410. package/dist/components/p-BERXvOCf.js.map +0 -1
  411. package/dist/components/p-BQspV5U7.js +0 -2
  412. package/dist/components/p-BQspV5U7.js.map +0 -1
  413. package/dist/components/p-BhjqYTiY.js +0 -2
  414. package/dist/components/p-BhjqYTiY.js.map +0 -1
  415. package/dist/components/p-BjtXYFhw.js +0 -2
  416. package/dist/components/p-BjtXYFhw.js.map +0 -1
  417. package/dist/components/p-Bk3poU91.js.map +0 -1
  418. package/dist/components/p-BxduVc5g.js +0 -2
  419. package/dist/components/p-BxduVc5g.js.map +0 -1
  420. package/dist/components/p-C0qN3PSb.js +0 -2
  421. package/dist/components/p-C0qN3PSb.js.map +0 -1
  422. package/dist/components/p-CPamUzaj.js +0 -2
  423. package/dist/components/p-CPamUzaj.js.map +0 -1
  424. package/dist/components/p-CUDocY23.js +0 -2
  425. package/dist/components/p-CUDocY23.js.map +0 -1
  426. package/dist/components/p-CX6ZxUQT.js +0 -2
  427. package/dist/components/p-CX6ZxUQT.js.map +0 -1
  428. package/dist/components/p-Cgn-BORA.js +0 -2
  429. package/dist/components/p-Cgn-BORA.js.map +0 -1
  430. package/dist/components/p-Ck1hgD6g.js +0 -2
  431. package/dist/components/p-Ck1hgD6g.js.map +0 -1
  432. package/dist/components/p-Co1rUdOR.js.map +0 -1
  433. package/dist/components/p-CochmPyg.js +0 -2
  434. package/dist/components/p-CochmPyg.js.map +0 -1
  435. package/dist/components/p-DCyJ3_PL.js +0 -2
  436. package/dist/components/p-DCyJ3_PL.js.map +0 -1
  437. package/dist/components/p-DVEx-Xg9.js +0 -2
  438. package/dist/components/p-DVEx-Xg9.js.map +0 -1
  439. package/dist/components/p-DYsE6HLk.js +0 -2
  440. package/dist/components/p-DYsE6HLk.js.map +0 -1
  441. package/dist/components/p-DebLYW7A.js +0 -2
  442. package/dist/components/p-DebLYW7A.js.map +0 -1
  443. package/dist/components/p-DjkUFlDW.js.map +0 -1
  444. package/dist/components/p-Dnt5xUBD.js +0 -2
  445. package/dist/components/p-Dnt5xUBD.js.map +0 -1
  446. package/dist/components/p-Dyqd-cub.js +0 -2
  447. package/dist/components/p-Dyqd-cub.js.map +0 -1
  448. package/dist/components/p-DzvTC27M.js.map +0 -1
  449. package/dist/components/p-g0jsfEXz.js +0 -2
  450. package/dist/components/p-g0jsfEXz.js.map +0 -1
  451. package/dist/components/p-pp1IQN4Z.js +0 -2
  452. package/dist/components/p-pp1IQN4Z.js.map +0 -1
  453. package/dist/components/p-rCeztgVn.js +0 -2
  454. package/dist/components/p-rCeztgVn.js.map +0 -1
  455. /package/dist/components/{p-CZNZTcYS.js.map → p-5-gQbIIz.js.map} +0 -0
  456. /package/dist/components/{p-DRdoGSGX.js.map → p-7MwoWtTJ.js.map} +0 -0
  457. /package/dist/components/{p-DJDbskZf.js.map → p-BO5URdZF.js.map} +0 -0
  458. /package/dist/components/{p-DmSnHVW6.js.map → p-BVxK8ce0.js.map} +0 -0
  459. /package/dist/components/{p-B0EpvBDs.js.map → p-BYeG0b5N.js.map} +0 -0
  460. /package/dist/components/{p-CJ1NnOEW.js.map → p-CA3iQ1ME.js.map} +0 -0
  461. /package/dist/components/{p-DYQa1DVF.js.map → p-C_9VGgPf.js.map} +0 -0
  462. /package/dist/components/{p-7TVdPhGR.js.map → p-CgQB8Ct5.js.map} +0 -0
  463. /package/dist/components/{p-D6FRqNhN.js.map → p-D-J7GgjY.js.map} +0 -0
  464. /package/dist/components/{p-DSZPO06T.js.map → p-D9_iDlkT.js.map} +0 -0
  465. /package/dist/components/{p-BwdnVqAY.js.map → p-DEYCF-oJ.js.map} +0 -0
  466. /package/dist/components/{p-C8V4lkVy.js.map → p-DKGW3gRa.js.map} +0 -0
  467. /package/dist/components/{p-C4huuwed.js.map → p-DR_8IPn9.js.map} +0 -0
  468. /package/dist/components/{p-B0BQCVkq.js.map → p-D_iZPukF.js.map} +0 -0
  469. /package/dist/components/{p-JBki_jyY.js.map → p-DfMTDFcE.js.map} +0 -0
  470. /package/dist/components/{p-MOJmB6vX.js.map → p-Dg6hnCc2.js.map} +0 -0
  471. /package/dist/components/{p-DXk1eml1.js.map → p-DjbT9kKm.js.map} +0 -0
  472. /package/dist/components/{p-_IqSPt5V.js.map → p-Dr5rkAhe.js.map} +0 -0
  473. /package/dist/components/{p-DIQiHX0q.js.map → p-DvGrsLgt.js.map} +0 -0
  474. /package/dist/components/{p-Doa2blZT.js.map → p-PtxCwf5S.js.map} +0 -0
  475. /package/dist/components/{p-B9TM6FqC.js.map → p-d76Ry5nh.js.map} +0 -0
  476. /package/dist/components/{p-BFHpU-uU.js.map → p-kwS-vkau.js.map} +0 -0
  477. /package/dist/components/{p-B39iJO8F.js.map → p-rmPIcWED.js.map} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ds-mo/ui",
3
- "version": "15.4.0",
3
+ "version": "15.5.0",
4
4
  "description": "CompoMo — composable web components styled with TokoMo design tokens",
5
5
  "keywords": [
6
6
  "web-components",
@@ -88,12 +88,15 @@
88
88
  ],
89
89
  "scripts": {
90
90
  "prebuild": "npm run clean && npm run clean:framework-proxies && node scripts/generate-icon-catalog.mjs",
91
- "pretypecheck": "node scripts/generate-icon-catalog.mjs",
91
+ "pretypecheck": "node scripts/generate-icon-catalog.mjs && npm run verify:authoring",
92
+ "component:new": "node scripts/create-component.mjs",
93
+ "verify:authoring": "node scripts/verify-component-authoring.mjs",
92
94
  "pretest": "node scripts/generate-icon-catalog.mjs",
93
- "build": "stencil build && node scripts/verify-framework-proxies.mjs && node scripts/patch-index-types.mjs && node scripts/verify-icons-externalized.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-lint.mjs && node scripts/build-mcp.mjs && node scripts/verify-framework-proxies.mjs && node scripts/write-build-stamp.mjs",
95
+ "build": "stencil build && node scripts/build-component-notices.mjs && node scripts/verify-framework-proxies.mjs && node scripts/patch-index-types.mjs && node scripts/verify-icons-externalized.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-lint.mjs && node scripts/build-mcp.mjs && node scripts/verify-framework-proxies.mjs && node scripts/write-build-stamp.mjs",
94
96
  "verify:pack": "node scripts/verify-framework-proxies.mjs && node scripts/verify-npm-pack.mjs && node scripts/verify-package-imports.mjs",
95
97
  "verify:local": "npm run format:check && npm run typecheck && npm run typecheck:storybook && npm run lint && npm test && npm run build && npm run agent:validate && npm run verify:pack",
96
98
  "verify:local:full": "npm run verify:local && npm run test:e2e:chromium",
99
+ "perf:measure": "node --import tsx/esm scripts/measure-performance.mjs && node scripts/measure-bundles.mjs",
97
100
  "test": "node --import tsx/esm --test tests/*.test.ts",
98
101
  "test:e2e": "npm run build && playwright test",
99
102
  "test:e2e:chromium": "playwright test --project=chromium",
@@ -165,10 +168,10 @@
165
168
  }
166
169
  },
167
170
  "devDependencies": {
168
- "@angular/compiler": "^22.0.7",
169
- "@angular/compiler-cli": "^22.0.7",
170
- "@angular/core": "^22.0.7",
171
- "@angular/forms": "^22.0.7",
171
+ "@angular/compiler": "^22.1.1",
172
+ "@angular/compiler-cli": "^22.1.1",
173
+ "@angular/core": "^22.1.1",
174
+ "@angular/forms": "^22.1.1",
172
175
  "@axe-core/playwright": "^4.12.1",
173
176
  "@csstools/css-calc": "^3.3.0",
174
177
  "@csstools/css-parser-algorithms": "^4.0.0",
@@ -199,10 +202,11 @@
199
202
  "@types/node": "^26.1.1",
200
203
  "@types/react": "^19.2.17",
201
204
  "@types/react-dom": "^19.2.3",
202
- "@vitest/browser-playwright": "^4.1.10",
205
+ "@types/sax": "^1.2.7",
206
+ "@vitest/browser-playwright": "^4.1.11",
203
207
  "ajv": "^8.20.0",
204
208
  "axe-core": "^4.12.1",
205
- "colord": "^2.9.3",
209
+ "colord": "^2.9.4",
206
210
  "concurrently": "^10.0.3",
207
211
  "css-tree": "^3.2.1",
208
212
  "esbuild": "^0.28.1",
@@ -224,7 +228,7 @@
224
228
  "typescript": "~6.0.3",
225
229
  "typescript-eslint": "^8.63.0",
226
230
  "vite": "^8.1.4",
227
- "vitest": "^4.1.10",
231
+ "vitest": "^4.1.11",
228
232
  "vue": "^3.5.41",
229
233
  "vue-router": "^5.2.0",
230
234
  "zod": "^4.4.3"
@@ -247,7 +251,8 @@
247
251
  "d3-shape": "^3.2.0",
248
252
  "mdast-util-from-markdown": "^2.0.3",
249
253
  "mdast-util-gfm": "^3.1.0",
250
- "micromark-extension-gfm": "^3.0.0"
254
+ "micromark-extension-gfm": "^3.0.0",
255
+ "sax": "^1.6.1"
251
256
  },
252
257
  "packageManager": "npm@11.12.1"
253
258
  }
@@ -1,2 +0,0 @@
1
- const t={top:"bottom",right:"left",bottom:"top",left:"right"};function i(t,i){const{anchorRect:s,popupWidth:n,popupHeight:e,align:h,sideOffsetPx:r,alignOffsetPx:o}=t;if(i==="top"||i==="bottom"){return{x:h==="start"?s.left+o:h==="end"?s.right-n+o:s.left+s.width/2-n/2+o,y:i==="top"?s.top-e-r:s.bottom+r}}return{x:i==="left"?s.left-n-r:s.right+r,y:h==="start"?s.top+o:h==="end"?s.bottom-e+o:s.top+s.height/2-e/2+o}}function s(t){const i=t.collisionRect??{top:0,left:0,right:t.viewportWidth,bottom:t.viewportHeight};return{top:i.top+t.viewportPadPx,left:i.left+t.viewportPadPx,right:i.right-t.viewportPadPx,bottom:i.bottom-t.viewportPadPx}}function n(t,i,n){const{popupWidth:e,popupHeight:h}=t;const r=s(t);if(i==="top"||i==="bottom"){return Math.max(r.top-n.y,0)+Math.max(n.y+h-r.bottom,0)}return Math.max(r.left-n.x,0)+Math.max(n.x+e-r.right,0)}function e(t,i,s,n){const e=Math.max(s,n-i);return Math.min(Math.max(t,s),e)}function h(h){const r=s(h);const o=i(h,h.side);const u=t[h.side];const a=i(h,u);const l=n(h,h.side,o);const c=n(h,u,a);const f=l>0&&c<l;const m=f?u:h.side;const d=f?a:o;const p=m==="top"?h.anchorRect.top-r.top-h.sideOffsetPx:m==="bottom"?r.bottom-h.anchorRect.bottom-h.sideOffsetPx:r.bottom-r.top;return{x:e(d.x,h.popupWidth,r.left,r.right),y:e(d.y,h.popupHeight,r.top,r.bottom),resolvedSide:m,availableHeight:Math.max(0,p)}}const r=8;class o{constructor(t){this.scrollResizeHandler=null;this.resizeObserver=null;this.retryRaf=null;this.liveRaf=null;this.anchorMotionRaf=null;this.activeAnchorMotions=0;this.ownerDocument=null;this.last=null;this.isReady=false;this.anchorMotionStartHandler=t=>{if(!this.eventCanMoveAnchor(t))return;this.activeAnchorMotions+=1;this.scheduleAnchorMotionUpdate()};this.anchorMotionEndHandler=t=>{if(!this.eventCanMoveAnchor(t))return;this.activeAnchorMotions=Math.max(0,this.activeAnchorMotions-1);this.scheduleAnchorMotionUpdate()};this.options=t}get ready(){return this.isReady}observe(){this.bindListeners()}unobserve(){this.unbindListeners();this.cancel();this.last=null;this.isReady=false}schedule(t){this.cancelRetry();this.isReady=false;let i=this.options.retryBudget??r;const s=()=>{this.retryRaf=null;if(this.update()){this.isReady=true;this.options.onReady?.();t?.();return}if(i>0){i-=1;this.retryRaf=requestAnimationFrame(s)}};this.retryRaf=requestAnimationFrame(s)}update(){const t=this.options.getAnchor();if(!t)return false;const i=this.options.getPopup();if(!i)return false;this.observeResizeTargets();if(this.options.topLayer&&typeof i.showPopover==="function"&&!i.matches(":popover-open")){try{i.showPopover()}catch{return false}}const s=this.options.measure(t,i);if(!s)return false;const n=h(s);if(!this.last||this.last.x!==n.x||this.last.y!==n.y||this.last.resolvedSide!==n.resolvedSide||this.last.availableHeight!==n.availableHeight){this.last=n;this.options.apply(n)}return true}scheduleLiveUpdate(){const t=this.options.liveUpdate??"sync";if(t==="sync"){this.update();return}if(this.liveRaf!==null)return;if(t==="frame"){this.liveRaf=requestAnimationFrame((()=>{this.liveRaf=null;this.update()}));return}this.liveRaf=requestAnimationFrame((()=>{this.update();this.liveRaf=requestAnimationFrame((()=>{this.liveRaf=null;this.update()}))}))}cancel(){this.cancelRetry();if(this.liveRaf!==null){cancelAnimationFrame(this.liveRaf);this.liveRaf=null}if(this.anchorMotionRaf!==null){cancelAnimationFrame(this.anchorMotionRaf);this.anchorMotionRaf=null}}cancelRetry(){if(this.retryRaf===null)return;cancelAnimationFrame(this.retryRaf);this.retryRaf=null}bindListeners(){this.unbindListeners();this.scrollResizeHandler=()=>this.scheduleLiveUpdate();window.addEventListener("scroll",this.scrollResizeHandler,true);window.addEventListener("resize",this.scrollResizeHandler);if(this.options.observeResize&&typeof ResizeObserver!=="undefined"){this.resizeObserver=new ResizeObserver((()=>this.scheduleLiveUpdate()));this.observeResizeTargets()}if(this.options.observeAnchorMotion){this.ownerDocument=this.options.getAnchor()?.ownerDocument??this.options.getOwnerDocument?.()??null;this.ownerDocument?.addEventListener("transitionrun",this.anchorMotionStartHandler,true);this.ownerDocument?.addEventListener("transitionend",this.anchorMotionEndHandler,true);this.ownerDocument?.addEventListener("transitioncancel",this.anchorMotionEndHandler,true);this.ownerDocument?.addEventListener("animationstart",this.anchorMotionStartHandler,true);this.ownerDocument?.addEventListener("animationend",this.anchorMotionEndHandler,true);this.ownerDocument?.addEventListener("animationcancel",this.anchorMotionEndHandler,true)}}unbindListeners(){if(this.scrollResizeHandler){window.removeEventListener("scroll",this.scrollResizeHandler,true);window.removeEventListener("resize",this.scrollResizeHandler);this.scrollResizeHandler=null}this.resizeObserver?.disconnect();this.resizeObserver=null;this.ownerDocument?.removeEventListener("transitionrun",this.anchorMotionStartHandler,true);this.ownerDocument?.removeEventListener("transitionend",this.anchorMotionEndHandler,true);this.ownerDocument?.removeEventListener("transitioncancel",this.anchorMotionEndHandler,true);this.ownerDocument?.removeEventListener("animationstart",this.anchorMotionStartHandler,true);this.ownerDocument?.removeEventListener("animationend",this.anchorMotionEndHandler,true);this.ownerDocument?.removeEventListener("animationcancel",this.anchorMotionEndHandler,true);this.ownerDocument=null;this.activeAnchorMotions=0}eventCanMoveAnchor(t){const i=this.options.getAnchor();const s=t.target;if(!i||!(s instanceof Element))return false;return s===i||s.contains(i)}scheduleAnchorMotionUpdate(){if(this.anchorMotionRaf!==null)return;const t=()=>{this.anchorMotionRaf=null;this.update();if(this.activeAnchorMotions<=0||!this.options.getAnchor()?.isConnected){this.activeAnchorMotions=0;return}this.anchorMotionRaf=requestAnimationFrame(t)};this.anchorMotionRaf=requestAnimationFrame(t)}observeResizeTargets(){if(!this.resizeObserver)return;const t=this.options.getPopup();if(t)this.resizeObserver.observe(t);const i=this.options.getAnchor();if(i)this.resizeObserver.observe(i)}}const u="data-ds-overlay-boundary";function a(t){if(t.assignedSlot)return t.assignedSlot;if(t.parentElement)return t.parentElement;const i=t.getRootNode();return i instanceof ShadowRoot?i.host:null}function l(t){let i=t;while(i){if(i instanceof HTMLElement&&i.hasAttribute(u)){return i}i=a(i)}return null}function c(t,i){if(i==="viewport")return undefined;return(i??l(t))?.getBoundingClientRect()}export{o as A,u as a,h as c,c as r};
2
- //# sourceMappingURL=p-B8ZonS3S.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["OPPOSITE_SIDE","top","right","bottom","left","rawPosition","input","side","anchorRect","anchor","popupWidth","popupHeight","align","sideOffsetPx","alignOffsetPx","x","width","y","height","collisionBounds","boundary","collisionRect","viewportWidth","viewportHeight","viewportPadPx","mainAxisOverflow","position","bounds","Math","max","clampToBounds","value","size","minimum","maximumEdge","maximum","min","computeAnchoredPosition","preferred","oppositeSide","opposite","preferredOverflow","oppositeOverflow","useOpposite","resolvedSide","availableHeight","POSITION_RETRY_BUDGET","AnchoredPositionController","constructor","options","this","scrollResizeHandler","resizeObserver","retryRaf","liveRaf","anchorMotionRaf","activeAnchorMotions","ownerDocument","last","isReady","anchorMotionStartHandler","event","eventCanMoveAnchor","scheduleAnchorMotionUpdate","anchorMotionEndHandler","ready","observe","bindListeners","unobserve","unbindListeners","cancel","schedule","onReady","cancelRetry","remaining","retryBudget","attempt","update","requestAnimationFrame","getAnchor","popup","getPopup","observeResizeTargets","topLayer","showPopover","matches","measure","next","apply","scheduleLiveUpdate","mode","liveUpdate","cancelAnimationFrame","window","addEventListener","observeResize","ResizeObserver","observeAnchorMotion","getOwnerDocument","removeEventListener","disconnect","target","Element","contains","tick","isConnected","ANCHORED_OVERLAY_BOUNDARY_ATTRIBUTE","composedParentElement","element","assignedSlot","parentElement","root","getRootNode","ShadowRoot","host","findAnchoredOverlayBoundary","current","HTMLElement","hasAttribute","resolveAnchoredOverlayBoundaryRect","explicitBoundary","undefined","getBoundingClientRect"],"sources":["src/wc/utils/anchored-position.ts","src/wc/utils/anchored-position-controller.ts","src/wc/utils/anchored-overlay-boundary.ts"],"sourcesContent":["export type AnchoredSide = 'top' | 'right' | 'bottom' | 'left';\nexport type AnchoredAlign = 'start' | 'center' | 'end';\n\nexport type AnchoredCollisionRect = Pick<\n DOMRectReadOnly,\n 'top' | 'left' | 'right' | 'bottom' | 'width' | 'height'\n>;\n\nexport interface AnchoredPositionInput {\n anchorRect: Pick<DOMRectReadOnly, 'top' | 'left' | 'right' | 'bottom' | 'width' | 'height'>;\n popupWidth: number;\n popupHeight: number;\n side: AnchoredSide;\n align: AnchoredAlign;\n sideOffsetPx: number;\n alignOffsetPx: number;\n viewportPadPx: number;\n viewportWidth: number;\n viewportHeight: number;\n /** Optional page or panel collision rectangle in viewport-fixed coordinates. */\n collisionRect?: AnchoredCollisionRect;\n}\n\nexport interface AnchoredPosition {\n x: number;\n y: number;\n /** Side actually used, which differs from the request when placement flipped. */\n resolvedSide: AnchoredSide;\n /** Vertical room available on the resolved side inside the padded viewport. */\n availableHeight: number;\n}\n\nconst OPPOSITE_SIDE: Record<AnchoredSide, AnchoredSide> = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right',\n};\n\n/** Unclamped coordinates for one candidate side. */\nfunction rawPosition(\n input: AnchoredPositionInput,\n side: AnchoredSide\n): Pick<AnchoredPosition, 'x' | 'y'> {\n const { anchorRect: anchor, popupWidth, popupHeight, align, sideOffsetPx, alignOffsetPx } = input;\n\n if (side === 'top' || side === 'bottom') {\n return {\n x:\n align === 'start'\n ? anchor.left + alignOffsetPx\n : align === 'end'\n ? anchor.right - popupWidth + alignOffsetPx\n : anchor.left + anchor.width / 2 - popupWidth / 2 + alignOffsetPx,\n y: side === 'top' ? anchor.top - popupHeight - sideOffsetPx : anchor.bottom + sideOffsetPx,\n };\n }\n\n return {\n x: side === 'left' ? anchor.left - popupWidth - sideOffsetPx : anchor.right + sideOffsetPx,\n y:\n align === 'start'\n ? anchor.top + alignOffsetPx\n : align === 'end'\n ? anchor.bottom - popupHeight + alignOffsetPx\n : anchor.top + anchor.height / 2 - popupHeight / 2 + alignOffsetPx,\n };\n}\n\n/** Total main-axis spill past the padded viewport for a candidate position. */\nfunction collisionBounds(input: AnchoredPositionInput) {\n const boundary = input.collisionRect ?? {\n top: 0,\n left: 0,\n right: input.viewportWidth,\n bottom: input.viewportHeight,\n };\n return {\n top: boundary.top + input.viewportPadPx,\n left: boundary.left + input.viewportPadPx,\n right: boundary.right - input.viewportPadPx,\n bottom: boundary.bottom - input.viewportPadPx,\n };\n}\n\nfunction mainAxisOverflow(\n input: AnchoredPositionInput,\n side: AnchoredSide,\n position: Pick<AnchoredPosition, 'x' | 'y'>\n): number {\n const { popupWidth, popupHeight } = input;\n const bounds = collisionBounds(input);\n\n if (side === 'top' || side === 'bottom') {\n return (\n Math.max(bounds.top - position.y, 0) + Math.max(position.y + popupHeight - bounds.bottom, 0)\n );\n }\n\n return (\n Math.max(bounds.left - position.x, 0) + Math.max(position.x + popupWidth - bounds.right, 0)\n );\n}\n\nfunction clampToBounds(value: number, size: number, minimum: number, maximumEdge: number): number {\n const maximum = Math.max(minimum, maximumEdge - size);\n return Math.min(Math.max(value, minimum), maximum);\n}\n\n/**\n * Pure viewport-fixed anchored-popup layout math shared by every element-anchored\n * overlay: menus, selects, tooltips, and anchored toasts.\n *\n * `side` is preferred. When the popup spills past the padded collision boundary and\n * the opposite side spills less, placement flips on the main axis; the result is\n * then clamped into that boundary on both axes. The viewport is the fallback when\n * no page or panel collision rectangle is supplied. Cross-axis `align` is applied\n * before clamping so `alignOffsetPx` stays an additive nudge.\n *\n * Callers own their own anchor semantics — inner-cell alignment offsets and\n * minimum widths belong to the calling component, not here.\n * @see choice-popup-alignment.ts for the choice-cell alignment transform.\n */\nexport function computeAnchoredPosition(input: AnchoredPositionInput): AnchoredPosition {\n const bounds = collisionBounds(input);\n const preferred = rawPosition(input, input.side);\n const oppositeSide = OPPOSITE_SIDE[input.side];\n const opposite = rawPosition(input, oppositeSide);\n const preferredOverflow = mainAxisOverflow(input, input.side, preferred);\n const oppositeOverflow = mainAxisOverflow(input, oppositeSide, opposite);\n const useOpposite = preferredOverflow > 0 && oppositeOverflow < preferredOverflow;\n const resolvedSide = useOpposite ? oppositeSide : input.side;\n const position = useOpposite ? opposite : preferred;\n const availableHeight =\n resolvedSide === 'top'\n ? input.anchorRect.top - bounds.top - input.sideOffsetPx\n : resolvedSide === 'bottom'\n ? bounds.bottom - input.anchorRect.bottom - input.sideOffsetPx\n : bounds.bottom - bounds.top;\n\n return {\n x: clampToBounds(position.x, input.popupWidth, bounds.left, bounds.right),\n y: clampToBounds(position.y, input.popupHeight, bounds.top, bounds.bottom),\n resolvedSide,\n availableHeight: Math.max(0, availableHeight),\n };\n}\n","import {\n computeAnchoredPosition,\n type AnchoredPosition,\n type AnchoredPositionInput,\n} from './anchored-position';\n\n/** Frames to wait for an anchor and popup to become measurable before giving up. */\nconst POSITION_RETRY_BUDGET = 8;\n\n/**\n * How the scroll/resize path reschedules. Each consumer family measured\n * differently before consolidation, and the differences are preserved verbatim\n * so placement timing is unchanged.\n *\n * - `sync` — measure inside the listener. Selects.\n * - `frame` — coalesce and measure on the next frame. Tooltips.\n * - `double-frame` — coalesce, measure next frame, then measure once more the\n * frame after. Scroll-driven owners such as ShellPage commit a compact-header\n * render in the frame after the scroll event, so a single frame reads a stale\n * anchor rect. Menus.\n */\nexport type AnchoredLiveUpdateMode = 'sync' | 'frame' | 'double-frame';\n\nexport interface AnchoredPositionControllerOptions {\n /** Resolve the anchor at measure time; positioning retries while this is null. */\n getAnchor: () => HTMLElement | null;\n /** Resolve the popup at measure time; positioning retries while this is null. */\n getPopup: () => HTMLElement | null;\n /** Stable owner fallback when framework bindings assign open before anchor. */\n getOwnerDocument?: () => Document | null;\n /**\n * Build the layout input for one measurement pass.\n *\n * The owning component keeps its own anchor semantics here — inner-cell align\n * offsets, minimum widths, and token resolution stay with the component rather\n * than moving into this controller. Return `null` when the component's own\n * guards say the popup is not measurable yet, which schedules a retry.\n */\n measure: (anchor: HTMLElement, popup: HTMLElement) => AnchoredPositionInput | null;\n /** Commit a changed position. Not called when the result is unchanged. */\n apply: (position: AnchoredPosition) => void;\n /**\n * Move a `popover=\"manual\"` popup into the native top layer before measuring.\n *\n * Use this for popups that remain in their owner's DOM tree. The top layer\n * gives `position: fixed` viewport coordinates even when an application\n * ancestor establishes a fixed-position containing block through containment,\n * transforms, or filters.\n */\n topLayer?: boolean;\n /** Fired once per `start()` when the first measurement succeeds. */\n onReady?: () => void;\n /** Scroll/resize behavior. Defaults to `sync`. */\n liveUpdate?: AnchoredLiveUpdateMode;\n /**\n * Re-measure when the popup or anchor resizes. Tooltips need this because the\n * label's `ds-text` upgrade changes the measured width after mount.\n */\n observeResize?: boolean;\n /**\n * Follow CSS transitions or animations that move the anchor without resizing\n * it. The observer only runs a measurement loop while related motion is active.\n */\n observeAnchorMotion?: boolean;\n retryBudget?: number;\n}\n\n/**\n * Lifecycle owner for an element-anchored popup: listener binding, measurement\n * retries, frame coalescing, and teardown.\n *\n * Pairs with `computeAnchoredPosition`, which owns the geometry. Split this way\n * because the geometry is pure and exhaustively testable while the lifecycle is\n * timing-dependent; keeping them separate means the risky half lives in exactly\n * one place.\n *\n * Not suitable for overlays that place several popups in one shared pass — Toast\n * positions N anchored records inside a single layout commit and keeps its own\n * scheduler, using only the geometry function.\n */\nexport class AnchoredPositionController {\n private readonly options: AnchoredPositionControllerOptions;\n private scrollResizeHandler: (() => void) | null = null;\n private resizeObserver: ResizeObserver | null = null;\n private retryRaf: number | null = null;\n private liveRaf: number | null = null;\n private anchorMotionRaf: number | null = null;\n private activeAnchorMotions = 0;\n private ownerDocument: Document | null = null;\n private last: AnchoredPosition | null = null;\n private isReady = false;\n private readonly anchorMotionStartHandler = (event: Event) => {\n if (!this.eventCanMoveAnchor(event)) return;\n this.activeAnchorMotions += 1;\n this.scheduleAnchorMotionUpdate();\n };\n private readonly anchorMotionEndHandler = (event: Event) => {\n if (!this.eventCanMoveAnchor(event)) return;\n this.activeAnchorMotions = Math.max(0, this.activeAnchorMotions - 1);\n this.scheduleAnchorMotionUpdate();\n };\n\n constructor(options: AnchoredPositionControllerOptions) {\n this.options = options;\n }\n\n /** `true` once a measurement has succeeded, for gating popup reveal. */\n get ready(): boolean {\n return this.isReady;\n }\n\n /**\n * Bind scroll/resize tracking for an opening popup.\n *\n * Deliberately does not schedule placement: every consumer binds listeners and\n * then schedules in its own order, and folding both into one call produced two\n * overlapping retry loops. Call `schedule()` or `update()` separately.\n */\n observe(): void {\n this.bindListeners();\n }\n\n /** Unbind tracking, cancel pending frames, and clear the cached position. */\n unobserve(): void {\n this.unbindListeners();\n this.cancel();\n this.last = null;\n this.isReady = false;\n }\n\n /**\n * Retry measurement each frame until it succeeds or the budget runs out, so a\n * popup is never revealed at 0,0 after a failed first pass.\n */\n schedule(onReady?: () => void): void {\n this.cancelRetry();\n this.isReady = false;\n\n let remaining = this.options.retryBudget ?? POSITION_RETRY_BUDGET;\n\n const attempt = () => {\n this.retryRaf = null;\n if (this.update()) {\n this.isReady = true;\n this.options.onReady?.();\n onReady?.();\n return;\n }\n if (remaining > 0) {\n remaining -= 1;\n this.retryRaf = requestAnimationFrame(attempt);\n }\n };\n\n this.retryRaf = requestAnimationFrame(attempt);\n }\n\n /** Measure and commit once. @returns `false` when the popup is not measurable. */\n update(): boolean {\n const anchor = this.options.getAnchor();\n if (!anchor) return false;\n const popup = this.options.getPopup();\n if (!popup) return false;\n this.observeResizeTargets();\n\n if (\n this.options.topLayer &&\n typeof popup.showPopover === 'function' &&\n !popup.matches(':popover-open')\n ) {\n try {\n popup.showPopover();\n } catch {\n // The popup may not be connected yet. The scheduled retry will try again\n // on the next frame instead of measuring it in the wrong coordinate space.\n return false;\n }\n }\n\n const input = this.options.measure(anchor, popup);\n if (!input) return false;\n\n const next = computeAnchoredPosition(input);\n if (\n !this.last ||\n this.last.x !== next.x ||\n this.last.y !== next.y ||\n this.last.resolvedSide !== next.resolvedSide ||\n this.last.availableHeight !== next.availableHeight\n ) {\n this.last = next;\n this.options.apply(next);\n }\n return true;\n }\n\n /** Reposition an already-open popup without hiding it. */\n scheduleLiveUpdate(): void {\n const mode = this.options.liveUpdate ?? 'sync';\n if (mode === 'sync') {\n this.update();\n return;\n }\n\n if (this.liveRaf !== null) return;\n\n if (mode === 'frame') {\n this.liveRaf = requestAnimationFrame(() => {\n this.liveRaf = null;\n this.update();\n });\n return;\n }\n\n // double-frame stays coalesced until the second frame resolves.\n this.liveRaf = requestAnimationFrame(() => {\n this.update();\n this.liveRaf = requestAnimationFrame(() => {\n this.liveRaf = null;\n this.update();\n });\n });\n }\n\n /** Cancel pending retry and live frames without unbinding listeners. */\n cancel(): void {\n this.cancelRetry();\n if (this.liveRaf !== null) {\n cancelAnimationFrame(this.liveRaf);\n this.liveRaf = null;\n }\n if (this.anchorMotionRaf !== null) {\n cancelAnimationFrame(this.anchorMotionRaf);\n this.anchorMotionRaf = null;\n }\n }\n\n private cancelRetry(): void {\n if (this.retryRaf === null) return;\n cancelAnimationFrame(this.retryRaf);\n this.retryRaf = null;\n }\n\n private bindListeners(): void {\n this.unbindListeners();\n this.scrollResizeHandler = () => this.scheduleLiveUpdate();\n // Capture phase so scrolling inside any ancestor repositions the popup.\n window.addEventListener('scroll', this.scrollResizeHandler, true);\n window.addEventListener('resize', this.scrollResizeHandler);\n\n if (this.options.observeResize && typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver(() => this.scheduleLiveUpdate());\n this.observeResizeTargets();\n }\n\n if (this.options.observeAnchorMotion) {\n this.ownerDocument =\n this.options.getAnchor()?.ownerDocument ?? this.options.getOwnerDocument?.() ?? null;\n this.ownerDocument?.addEventListener('transitionrun', this.anchorMotionStartHandler, true);\n this.ownerDocument?.addEventListener('transitionend', this.anchorMotionEndHandler, true);\n this.ownerDocument?.addEventListener('transitioncancel', this.anchorMotionEndHandler, true);\n this.ownerDocument?.addEventListener('animationstart', this.anchorMotionStartHandler, true);\n this.ownerDocument?.addEventListener('animationend', this.anchorMotionEndHandler, true);\n this.ownerDocument?.addEventListener('animationcancel', this.anchorMotionEndHandler, true);\n }\n }\n\n private unbindListeners(): void {\n if (this.scrollResizeHandler) {\n window.removeEventListener('scroll', this.scrollResizeHandler, true);\n window.removeEventListener('resize', this.scrollResizeHandler);\n this.scrollResizeHandler = null;\n }\n this.resizeObserver?.disconnect();\n this.resizeObserver = null;\n this.ownerDocument?.removeEventListener('transitionrun', this.anchorMotionStartHandler, true);\n this.ownerDocument?.removeEventListener('transitionend', this.anchorMotionEndHandler, true);\n this.ownerDocument?.removeEventListener('transitioncancel', this.anchorMotionEndHandler, true);\n this.ownerDocument?.removeEventListener('animationstart', this.anchorMotionStartHandler, true);\n this.ownerDocument?.removeEventListener('animationend', this.anchorMotionEndHandler, true);\n this.ownerDocument?.removeEventListener('animationcancel', this.anchorMotionEndHandler, true);\n this.ownerDocument = null;\n this.activeAnchorMotions = 0;\n }\n\n private eventCanMoveAnchor(event: Event): boolean {\n const anchor = this.options.getAnchor();\n const target = event.target;\n if (!anchor || !(target instanceof Element)) return false;\n // Motion on the anchor or one of its layout ancestors can move its rect.\n // Descendant-only animation is irrelevant unless it resizes the anchor,\n // which the ResizeObserver path already covers.\n return target === anchor || target.contains(anchor);\n }\n\n private scheduleAnchorMotionUpdate(): void {\n if (this.anchorMotionRaf !== null) return;\n const tick = () => {\n this.anchorMotionRaf = null;\n this.update();\n if (this.activeAnchorMotions <= 0 || !this.options.getAnchor()?.isConnected) {\n this.activeAnchorMotions = 0;\n return;\n }\n this.anchorMotionRaf = requestAnimationFrame(tick);\n };\n this.anchorMotionRaf = requestAnimationFrame(tick);\n }\n\n /**\n * Re-attach the resize observer after the popup remounts. Safe to call\n * repeatedly; `ResizeObserver.observe` ignores duplicate targets.\n */\n observeResizeTargets(): void {\n if (!this.resizeObserver) return;\n const popup = this.options.getPopup();\n if (popup) this.resizeObserver.observe(popup);\n const anchor = this.options.getAnchor();\n if (anchor) this.resizeObserver.observe(anchor);\n }\n}\n","import type { AnchoredCollisionRect } from './anchored-position';\n\n/** Attribute placed on a page or panel whose visible rectangle owns anchored overlays. */\nexport const ANCHORED_OVERLAY_BOUNDARY_ATTRIBUTE = 'data-ds-overlay-boundary';\n\n/** An element-owned collision rectangle, or an explicit escape to the viewport. */\nexport type AnchoredOverlayBoundary = HTMLElement | 'viewport';\n\nfunction composedParentElement(element: Element): Element | null {\n if (element.assignedSlot) return element.assignedSlot;\n if (element.parentElement) return element.parentElement;\n const root = element.getRootNode();\n return root instanceof ShadowRoot ? root.host : null;\n}\n\n/**\n * Find the nearest collision owner through light DOM, assigned slots, and open\n * shadow roots. The popup may live in the top layer or a body portal; ownership\n * follows its anchor instead of the popup's rendering location.\n */\nexport function findAnchoredOverlayBoundary(anchor: Element): HTMLElement | null {\n let current: Element | null = anchor;\n while (current) {\n if (\n current instanceof HTMLElement &&\n current.hasAttribute(ANCHORED_OVERLAY_BOUNDARY_ATTRIBUTE)\n ) {\n return current;\n }\n current = composedParentElement(current);\n }\n return null;\n}\n\n/** Resolve an explicit owner first, then the nearest composed-tree boundary. */\nexport function resolveAnchoredOverlayBoundaryRect(\n anchor: Element,\n explicitBoundary?: AnchoredOverlayBoundary\n): AnchoredCollisionRect | undefined {\n if (explicitBoundary === 'viewport') return undefined;\n return (explicitBoundary ?? findAnchoredOverlayBoundary(anchor))?.getBoundingClientRect();\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{p as o,H as i,c as e,h as s,a as t,t as r}from"./index.js";import{A as a,r as d}from"./p-B8ZonS3S.js";import{A as n}from"./p-CwUXroLs.js";import{b as c,d as l,C as u}from"./p-BwdnVqAY.js";import{d as p}from"./p-CwdRaJER.js";import{d as h}from"./p-D6FRqNhN.js";import{d as g}from"./p-JBki_jyY.js";import{d as f}from"./p-B0BQCVkq.js";import{d as v}from"./p-CZNZTcYS.js";import{d as m}from"./p-DjkUFlDW.js";import{d as b}from"./p-0XTyQNRG.js";import{d as x}from"./p-D8OWhnID.js";import{d as w}from"./p-DIQiHX0q.js";import{r as y}from"./p-CochmPyg.js";import{r as _}from"./p-DhKvqh5G.js";import{b as k,T as z,a as C}from"./p-CeXf9-X3.js";const j=()=>`.sc-ds-data-group-h,.sc-ds-data-group:where(.ds-table),.sc-ds-data-group:where(.tooltip-popup),.sc-ds-data-group:where(.ds-radius){--ds-radius-control:var(--dimension-radius-025);--ds-radius-card:var(--dimension-radius-050);--ds-radius-modal:var(--dimension-radius-050);--ds-radius-menu:var(--dimension-radius-075);--ds-radius-tooltip-control:var(--dimension-radius-025);--ds-radius-tooltip-menu:var(--dimension-radius-075);--ds-radius-table:var(--dimension-radius-050)}@media (forced-colors: active){.sc-ds-data-group:root,.sc-ds-data-group-h,.ds-forced-colors-scope.sc-ds-data-group{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.sc-ds-data-group-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-data-group-h,.ds-focus-ring.sc-ds-data-group,.ds-focus-ring-inset.sc-ds-data-group-h,.ds-focus-ring-inset.sc-ds-data-group{outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.ds-focus-ring.sc-ds-data-group-h:focus-visible,.ds-focus-ring.sc-ds-data-group: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-data-group-h,.ds-focus-ring.ds-focus-ring--visible.sc-ds-data-group{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-data-group-h:focus-visible,.ds-focus-ring-inset.sc-ds-data-group:focus-visible{outline:none}.ds-focus-ring-inset.sc-ds-data-group-h:focus-visible::after,.ds-focus-ring-inset.sc-ds-data-group: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-data-group-h,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-data-group{outline:none}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-data-group-h::after,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-data-group::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}@media (forced-colors: active){.sc-ds-data-group-h{--ds-focus-ring-color:var(--ds-forced-color-selected)}}@media (forced-colors: active){.sc-ds-data-group:root,.sc-ds-data-group-h,.ds-forced-colors-scope.sc-ds-data-group{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}@media (forced-colors: active){.sc-ds-data-group:root,.sc-ds-data-group-h,.ds-forced-colors-scope.sc-ds-data-group{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.ds-interaction-fill.sc-ds-data-group-h,.ds-interaction-fill.sc-ds-data-group{position:var(--ds-interaction-position, relative);z-index:var(--ds-interaction-z-index, 0);cursor:default;--ds-interaction-hover:var(--color-interaction-hover);--ds-interaction-pressed:var(--color-interaction-pressed);--ds-interaction-active:var(--color-interaction-active-brand);--ds-interaction-border-width:0px;--ds-interaction-border-color:transparent;--ds-interaction-divider-width:0px;--ds-interaction-divider-color:transparent;--ds-interaction-divider-inline-start-width:0px;--ds-interaction-divider-inline-start-color:transparent;--ds-interaction-divider-inline-end-width:0px;--ds-interaction-divider-inline-end-color:transparent}.ds-interaction-fill.sc-ds-data-group-h::before,.ds-interaction-fill.sc-ds-data-group::before,.ds-interaction-fill.sc-ds-data-group-h::after,.ds-interaction-fill.sc-ds-data-group::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none;cursor:inherit;transition:none}.ds-interaction-fill.sc-ds-data-group-h::before,.ds-interaction-fill.sc-ds-data-group::before{z-index:1}.ds-interaction-fill.sc-ds-data-group-h::after,.ds-interaction-fill.sc-ds-data-group::after{z-index:3;box-shadow:inset 0 calc(-1 * var(--ds-interaction-divider-width)) 0 var(--ds-interaction-divider-color), inset var(--ds-interaction-divider-inline-start-width) 0 0 var(--ds-interaction-divider-inline-start-color), inset calc(-1 * var(--ds-interaction-divider-inline-end-width)) 0 0 var(--ds-interaction-divider-inline-end-color), inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color)}.ds-interaction-fill--bordered.sc-ds-data-group-h,.ds-interaction-fill--bordered.sc-ds-data-group{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--color-border-secondary)}.ds-interaction-fill--selected.sc-ds-data-group-h::before,.ds-interaction-fill--selected.sc-ds-data-group::before{background:var(--ds-interaction-active)}.ds-interaction-fill--selected.sc-ds-data-group-h,.ds-interaction-fill--selected.sc-ds-data-group{--ds-interaction-dot-ring:var(--ds-interaction-active)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-data-group-h:hover:not(:disabled)::after,.ds-interaction-fill.sc-ds-data-group:hover:not(:disabled)::after{background:var(--ds-interaction-hover)}}.ds-interaction-fill.sc-ds-data-group-h:active:not(:disabled)::after,.ds-interaction-fill.sc-ds-data-group:active:not(:disabled)::after{background:var(--ds-interaction-pressed)}.ds-interaction-fill--grouped.sc-ds-data-group-h::after,.ds-interaction-fill--grouped.sc-ds-data-group::after,.ds-interaction-fill--grouped.sc-ds-data-group-h:active:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-data-group:active:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill--grouped.sc-ds-data-group-h:hover:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-data-group:hover:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}}.ds-interaction-fill--grouped.sc-ds-data-group-h,.ds-interaction-fill--grouped.sc-ds-data-group{--ds-interaction-divider-width:var(--ds-interaction-group-divider-width, 0px);--ds-interaction-divider-color:var(--ds-interaction-group-divider-color, transparent);--ds-interaction-divider-inline-start-width:var( --ds-interaction-group-divider-inline-start-width, 0px );--ds-interaction-divider-inline-start-color:var( --ds-interaction-group-divider-inline-start-color, transparent );--ds-interaction-divider-inline-end-width:var( --ds-interaction-group-divider-inline-end-width, 0px );--ds-interaction-divider-inline-end-color:var( --ds-interaction-group-divider-inline-end-color, transparent )}.ds-interaction-fill.sc-ds-data-group-h>.ds-interaction-fill__content.sc-ds-data-group,.ds-interaction-fill.sc-ds-data-group>.ds-interaction-fill__content.sc-ds-data-group,.ds-interaction-fill__content.sc-ds-data-group{position:relative;z-index:2;cursor:inherit}.ds-interaction-fill--on-faint.sc-ds-data-group-h,.ds-interaction-fill--on-faint.sc-ds-data-group{--ds-interaction-active:var(--color-interaction-active)}.ds-interaction-fill--on-medium.sc-ds-data-group-h,.ds-interaction-fill--on-medium.sc-ds-data-group{--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-data-group-h,.ds-interaction-fill--on-bold.sc-ds-data-group{--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-data-group-h,.ds-interaction-fill--on-strong.sc-ds-data-group{--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-data-group-h,.ds-interaction-fill--on-translucent.sc-ds-data-group{--ds-interaction-hover:var(--color-translucent-interaction-hover);--ds-interaction-pressed:var(--color-translucent-interaction-pressed);--ds-interaction-active:var(--color-translucent-interaction-active-brand);--ds-focus-ring-color:var(--color-translucent-interaction-focus)}.ds-interaction-fill--on-inverted.sc-ds-data-group-h,.ds-interaction-fill--on-inverted.sc-ds-data-group{--ds-interaction-hover:var(--color-inverted-interaction-hover);--ds-interaction-pressed:var(--color-inverted-interaction-pressed);--ds-interaction-active:var(--color-inverted-interaction-active-brand);--ds-focus-ring-color:var(--color-inverted-interaction-focus)}.ds-interaction-fill--on-media.sc-ds-data-group-h,.ds-interaction-fill--on-media.sc-ds-data-group{--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-data-group-h,.ds-interaction-fill--on-always-dark.sc-ds-data-group{--ds-interaction-hover:var(--color-always-dark-interaction-hover);--ds-interaction-pressed:var(--color-always-dark-interaction-pressed);--ds-interaction-active:var(--color-always-dark-interaction-active-brand);--ds-focus-ring-color:var(--color-always-dark-interaction-focus)}.ds-interaction-fill--on-chrome.sc-ds-data-group-h,.ds-interaction-fill--on-chrome.sc-ds-data-group{--ds-interaction-hover:var(--color-chrome-interaction-hover);--ds-interaction-pressed:var(--color-chrome-interaction-pressed);--ds-interaction-active:var(--color-chrome-interaction-active);--ds-focus-ring-color:var(--color-chrome-interaction-focus)}.ds-interaction-fill--on-navigation.sc-ds-data-group-h,.ds-interaction-fill--on-navigation.sc-ds-data-group{--ds-interaction-hover:var(--color-navigation-interaction-hover);--ds-interaction-pressed:var(--color-navigation-interaction-pressed);--ds-interaction-active:var(--color-navigation-interaction-active);--ds-focus-ring-color:var(--color-navigation-interaction-focus)}.ds-interaction-fill.ds-interaction-fill--surface-open.sc-ds-data-group-h:not(:disabled)::after,.ds-interaction-fill.ds-interaction-fill--surface-open.sc-ds-data-group:not(:disabled)::after{background:var(--ds-interaction-pressed)}@media (forced-colors: active){.ds-interaction-fill.sc-ds-data-group-h::after,.ds-interaction-fill.sc-ds-data-group::after{box-shadow:none;outline:var(--ds-interaction-border-width) solid var(--ds-forced-color-control-boundary);outline-offset:calc(-1 * var(--ds-interaction-border-width))}.ds-interaction-fill--surface-open.sc-ds-data-group-h:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill--surface-open.sc-ds-data-group:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after{outline:var(--dimension-stroke-width-025) dashed var(--ds-forced-color-control-boundary);outline-offset:calc(-1 * var(--dimension-stroke-width-025))}.ds-interaction-fill--selected.sc-ds-data-group-h::before,.ds-interaction-fill--selected.sc-ds-data-group::before{background:transparent;outline:var(--dimension-stroke-width-025) solid var(--ds-forced-color-selected);outline-offset:calc(-1 * var(--dimension-stroke-width-025))}}@media (forced-colors: active) and (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-data-group-h:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill.sc-ds-data-group:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after{outline-color:var(--ds-forced-color-selected);outline-width:var(--dimension-stroke-width-012)}}@media (forced-colors: active){.sc-ds-data-group:root,.sc-ds-data-group-h,.ds-forced-colors-scope.sc-ds-data-group{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.ds-control-inactive.sc-ds-data-group-h,.ds-control-inactive.sc-ds-data-group{opacity:var(--effect-opacity-medium);pointer-events:none;cursor:not-allowed}@media (forced-colors: active){.ds-control-inactive.sc-ds-data-group-h,.ds-control-inactive.sc-ds-data-group{color:var(--ds-forced-color-disabled);opacity:1}}.ds-control--lg.sc-ds-data-group,.ds-control--lg.sc-ds-data-group-h,.ds-control--md.sc-ds-data-group-h,.ds-control--md.sc-ds-data-group,.ds-control--sm.sc-ds-data-group-h,.ds-control--sm.sc-ds-data-group,.ds-control--xs.sc-ds-data-group-h,.ds-control--xs.sc-ds-data-group{--ds-control-radius:var(--ds-radius-control)}.ds-control--lg.sc-ds-data-group-h,.ds-control--lg.sc-ds-data-group{--ds-control-height:var(--dimension-size-500);--ds-control-icon:var(--dimension-iconography-lg);--ds-control-padding-inline:var(--dimension-space-100);--ds-control-label-inset:var(--dimension-space-050);--ds-control-gap:var(--dimension-space-050)}.ds-control--md.sc-ds-data-group-h,.ds-control--md.sc-ds-data-group{--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-data-group-h,.ds-control--sm.sc-ds-data-group{--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-data-group-h,.ds-control--xs.sc-ds-data-group{--ds-control-height:var(--dimension-size-200);--ds-control-icon:var(--dimension-iconography-xs);--ds-control-padding-inline:var(--dimension-space-025);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:0}.ds-chrome-space--sm.sc-ds-data-group-h,.ds-chrome-space--sm.sc-ds-data-group{--ds-chrome-padding:var(--dimension-space-050);--ds-chrome-gap:var(--dimension-space-050)}.ds-chrome-space--md.sc-ds-data-group-h,.ds-chrome-space--md.sc-ds-data-group{--ds-chrome-padding:var(--dimension-space-100);--ds-chrome-gap:var(--dimension-space-100)}.ds-chrome-space--lg.sc-ds-data-group-h,.ds-chrome-space--lg.sc-ds-data-group{--ds-chrome-padding:var(--dimension-space-200);--ds-chrome-gap:var(--dimension-space-200)}.ds-chrome-row.sc-ds-data-group-h,.ds-chrome-row.sc-ds-data-group,.ds-chrome-column.sc-ds-data-group-h,.ds-chrome-column.sc-ds-data-group,.ds-chrome-grid.sc-ds-data-group-h,.ds-chrome-grid.sc-ds-data-group{display:flex;box-sizing:border-box;gap:var(--ds-chrome-gap, var(--dimension-space-100));padding:var(--ds-chrome-padding, var(--dimension-space-100))}.ds-chrome-row.sc-ds-data-group-h,.ds-chrome-row.sc-ds-data-group{flex-direction:row;align-items:center}.ds-chrome-column.sc-ds-data-group-h,.ds-chrome-column.sc-ds-data-group{flex-direction:column}.ds-chrome-grid.sc-ds-data-group-h,.ds-chrome-grid.sc-ds-data-group{display:grid;align-items:center}.ds-control-frame.sc-ds-data-group{display:inline-flex;align-items:center;box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400));padding-inline:var(--ds-control-padding-inline, var(--dimension-space-075));gap:var(--ds-control-gap, var(--dimension-space-050));border-radius:var(--ds-control-radius, var(--dimension-radius-025))}.ds-control-section-heading.sc-ds-data-group{display:flex;align-items:center;box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400));padding-inline:calc( var(--ds-control-padding-inline, var(--dimension-space-075)) + var(--ds-control-label-inset, var(--dimension-space-025)) )}.ds-control-icon-box.sc-ds-data-group{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ds-control-icon, var(--dimension-iconography-md));height:var(--ds-control-icon, var(--dimension-iconography-md))}.ds-control-label-box.sc-ds-data-group{min-width:0;padding-inline:var(--ds-control-label-inset, var(--dimension-space-025))}.ds-control-label-dot.sc-ds-data-group{position:relative;padding-inline-end:calc( var(--ds-control-label-inset, var(--dimension-space-025)) + var(--ds-control-gap, var(--dimension-space-050)) )}.ds-control-label-dot__badge.sc-ds-data-group{position:absolute;inset-block-start:0;inset-inline-end:0;pointer-events:none}.ds-empty-region.sc-ds-data-group{display:flex;flex:1 1 auto;align-items:center;justify-content:center;box-sizing:border-box;min-width:0;min-height:0}.ds-empty-region--padded.sc-ds-data-group{padding:var(--dimension-space-200)}.sc-ds-data-group:where(.ds-text-decoration,.ds-text-action).sc-ds-data-group{text-decoration-color:var(--ds-text-decoration-color, var(--color-foreground-tertiary));text-decoration-thickness:var(--ds-text-decoration-thickness, var(--dimension-stroke-width-012));text-underline-offset:var(--ds-text-decoration-offset, var(--dimension-space-025))}.ds-text-action.sc-ds-data-group{--ds-text-action-foreground:var(--color-foreground-bold-brand);--ds-text-decoration-color:var(--ds-text-action-foreground);color:var(--ds-text-action-foreground);text-decoration-line:none}.ds-text-action--on-medium.sc-ds-data-group{--ds-text-action-foreground:var(--color-foreground-on-medium-background-primary);--ds-text-decoration-color:var(--color-foreground-on-medium-background-secondary);text-decoration-line:underline}.ds-text-action--on-strong.sc-ds-data-group{--ds-text-action-foreground:var(--color-foreground-on-strong-background-primary);--ds-text-decoration-color:var(--color-foreground-on-strong-background-secondary);text-decoration-line:underline}.ds-text-action--on-bold.sc-ds-data-group{--ds-text-action-foreground:var(--color-foreground-on-bold-background-primary);--ds-text-decoration-color:var(--color-foreground-on-bold-background-secondary);text-decoration-line:underline}@media (hover: hover) and (pointer: fine){.ds-text-action.sc-ds-data-group:hover{text-decoration-line:underline}}@media (forced-colors: active){.ds-text-action.sc-ds-data-group{text-decoration-line:underline;text-decoration-color:currentcolor}}.ds-choice-popup.sc-ds-data-group{box-sizing:border-box;display:flex;flex-direction:column;min-width:var(--ds-choice-popup-min-inline-size, 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(--ds-radius-menu);box-shadow:var(--effect-shadow-elevated-floating);color:var(--color-foreground-secondary);animation:dsChoiceFadeIn var(--effect-motion-short-2) forwards;backface-visibility:hidden;will-change:transform;text-align:start}.ds-choice-popup.sc-ds-data-group::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-data-group{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-data-group{animation:none;opacity:1}.ds-choice-popup--closing.sc-ds-data-group{opacity:0}}@media (forced-colors: active){.ds-choice-popup.sc-ds-data-group{outline:var(--dimension-stroke-width-012) solid var(--ds-forced-color-content);outline-offset:calc(-1 * var(--dimension-stroke-width-012))}.ds-choice-popup.sc-ds-data-group::after{box-shadow:none}}.ds-choice-list.sc-ds-data-group{display:flex;flex-direction:column;min-height:0;overflow-y:auto;overscroll-behavior:contain}.ds-choice-section--divided.sc-ds-data-group{border-bottom:var(--dimension-stroke-width-015) solid var(--color-border-tertiary)}ds-text.ds-choice-section__header.sc-ds-data-group{text-align:start;-webkit-user-select:none;user-select:none}.ds-choice-section--headed-after-first.sc-ds-data-group{margin-block-start:var(--dimension-space-050)}.select-option-row.sc-ds-data-group{display:flex;flex-direction:column;min-width:0}.ds-choice-item.sc-ds-data-group{width:100%;border:none;border-radius:var(--ds-control-radius, var(--dimension-radius-025));background:transparent;cursor:default;-webkit-user-select:none;user-select:none;text-align:left;color:inherit}.ds-choice-item.sc-ds-data-group: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.ds-control--xs.sc-ds-data-group:has(.ds-choice-item__subtext){padding-block:0}.ds-choice-item__content.sc-ds-data-group{display:flex;flex:1;flex-direction:column;gap:var(--dimension-space-025);min-width:0}ds-text.ds-choice-item__label.sc-ds-data-group{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}ds-text.ds-choice-item__subtext.sc-ds-data-group{display:-webkit-box;overflow:hidden;white-space:normal;-webkit-box-orient:vertical;-webkit-line-clamp:2}.ds-choice-item__icon.sc-ds-data-group,.ds-choice-item__suffix.sc-ds-data-group{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-item.ds-interaction-fill--selected.sc-ds-data-group .ds-choice-item__icon.sc-ds-data-group{color:var(--color-foreground-primary)}.ds-choice-item__tag.sc-ds-data-group{flex-shrink:0;pointer-events:none}.ds-choice-empty.sc-ds-data-group,.ds-choice-loading.sc-ds-data-group{min-height:var(--dimension-size-600);padding:var(--dimension-space-100)}.ds-choice-footer.sc-ds-data-group{position:relative;box-sizing:border-box;padding-block:var(--dimension-space-050)}.ds-choice-footer.sc-ds-data-group::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-data-group{display:flex;align-items:center;justify-content:space-between;column-gap:var(--dimension-space-050);box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400))}.ds-choice-footer__summary.sc-ds-data-group,.ds-choice-footer__summary-measure.sc-ds-data-group,.ds-choice-footer__clear.sc-ds-data-group ds-text.sc-ds-data-group,.ds-choice-footer__action.sc-ds-data-group ds-text.sc-ds-data-group{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__summary.sc-ds-data-group,.ds-choice-footer__summary-measure.sc-ds-data-group,.ds-choice-footer__clear.sc-ds-data-group,.ds-choice-footer__action.sc-ds-data-group{white-space:nowrap}.ds-choice-footer__summary-measure.sc-ds-data-group{position:absolute;visibility:hidden;pointer-events:none}.ds-choice-footer__clear.sc-ds-data-group,.ds-choice-footer__action.sc-ds-data-group{appearance:none;display:inline-flex;align-items:center;padding:0;border:0;border-radius:var(--dimension-radius-025);background:transparent;cursor:default}@media (forced-colors: active){.ds-choice-section--divided.sc-ds-data-group{border-bottom-color:var(--ds-forced-color-content)}.ds-choice-footer.sc-ds-data-group::before{background-color:var(--ds-forced-color-content)}}.ds-control-frame.sc-ds-data-group{display:inline-flex;align-items:center;box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400));padding-inline:var(--ds-control-padding-inline, var(--dimension-space-075));gap:var(--ds-control-gap, var(--dimension-space-050));border-radius:var(--ds-control-radius, var(--dimension-radius-025))}.ds-control-section-heading.sc-ds-data-group{display:flex;align-items:center;box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400));padding-inline:calc( var(--ds-control-padding-inline, var(--dimension-space-075)) + var(--ds-control-label-inset, var(--dimension-space-025)) )}.ds-control-icon-box.sc-ds-data-group{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ds-control-icon, var(--dimension-iconography-md));height:var(--ds-control-icon, var(--dimension-iconography-md))}.ds-control-label-box.sc-ds-data-group{min-width:0;padding-inline:var(--ds-control-label-inset, var(--dimension-space-025))}.ds-control-label-dot.sc-ds-data-group{position:relative;padding-inline-end:calc( var(--ds-control-label-inset, var(--dimension-space-025)) + var(--ds-control-gap, var(--dimension-space-050)) )}.ds-control-label-dot__badge.sc-ds-data-group{position:absolute;inset-block-start:0;inset-inline-end:0;pointer-events:none}.ds-table-caption-control.sc-ds-data-group-h{--ds-choice-popup-min-inline-size:var(--dimension-menu-width-xs)}.ds-table-caption-control.ds-table-caption-control--compact.sc-ds-data-group-h{flex:0 0 auto;width:var(--ds-control-height, var(--dimension-size-400));height:var(--ds-control-height, var(--dimension-size-400));min-width:var(--ds-control-height, var(--dimension-size-400));min-height:var(--ds-control-height, var(--dimension-size-400));max-width:var(--ds-control-height, var(--dimension-size-400));inline-size:var(--ds-control-height, var(--dimension-size-400));min-inline-size:var(--ds-control-height, var(--dimension-size-400));max-inline-size:var(--ds-control-height, var(--dimension-size-400))}.ds-table-caption-control.ds-table-caption-control--compact.sc-ds-data-group-h .trigger.sc-ds-data-group{justify-content:center;inline-size:100%;min-inline-size:100%;height:100%;padding-inline:0}.ds-table-caption-control.ds-table-caption-control--compact.sc-ds-data-group-h .trigger--has-value.sc-ds-data-group:not(.trigger--label-placeholder){--ds-select-prefix-fg:var(--ds-select-fg-active)}@container ds-table (max-width: 899px){.sc-ds-data-group-h.ds-table-caption-control{flex:0 0 auto;inline-size:var(--ds-control-height, var(--dimension-size-400));min-inline-size:var(--ds-control-height, var(--dimension-size-400));max-inline-size:var(--ds-control-height, var(--dimension-size-400))}.sc-ds-data-group-h.ds-table-caption-control .trigger{justify-content:center;inline-size:100%;min-inline-size:100%;padding-inline:0}.sc-ds-data-group-h.ds-table-caption-control .trigger--has-value:not(.trigger--label-placeholder){--ds-select-prefix-fg:var(--ds-select-fg-active)}}.sc-ds-data-group-h{display:inline-flex;min-inline-size:0;max-inline-size:var(--dimension-menu-width-xs)}[hidden].sc-ds-data-group-h{display:none}.data-group__body.sc-ds-data-group{display:grid;grid-template-columns:var(--dimension-menu-width-xs) var(--dimension-menu-width-sm);min-height:calc(var(--dimension-size-800) * 4 + var(--dimension-space-150));max-height:calc(100vh - var(--dimension-size-800) - var(--dimension-size-600))}.data-group__data-pane.sc-ds-data-group,.data-group__order-pane.sc-ds-data-group{display:flex;min-width:0;min-height:0;flex-direction:column}.data-group__data-pane.sc-ds-data-group{border-inline-end:var(--dimension-stroke-width-012) solid var(--color-border-tertiary)}.data-group__list.sc-ds-data-group{flex:1 1 auto}.data-group__empty.sc-ds-data-group{flex:1 1 auto}.data-group__footer.sc-ds-data-group{flex:0 0 auto}.data-group__footer.sc-ds-data-group .ds-choice-footer__content.sc-ds-data-group{justify-content:flex-start}.data-group__footer[aria-hidden='true'].sc-ds-data-group::before{visibility:hidden}.data-group__footer[aria-hidden='true'].sc-ds-data-group .ds-choice-footer__content.sc-ds-data-group{visibility:hidden}@media (forced-colors: active){.data-group__data-pane.sc-ds-data-group{border-inline-end-color:var(--ds-forced-color-content)}}.data-preferences-embedded.sc-ds-data-group{display:flex;flex-direction:column;min-width:0;min-height:0;color:var(--color-foreground-secondary)}.sc-ds-data-group-h:has(.data-preferences-embedded){display:block;max-inline-size:none}.data-preferences-embedded.sc-ds-data-group .data-group__body.sc-ds-data-group{grid-template-columns:min(var(--dimension-menu-width-xs), 40%) minmax(0, 1fr)}.data-group-vertical.sc-ds-data-group-h .data-group__body.sc-ds-data-group{grid-template-columns:minmax(0, 1fr)}.data-group-vertical.sc-ds-data-group-h .data-group__data-pane.sc-ds-data-group{border-inline-end:0}.data-group-vertical.sc-ds-data-group-h .data-group__footer.sc-ds-data-group{display:none}`;const T=[{label:"Ascending",direction:"asc"},{label:"Descending",direction:"desc"}];let D=0;const E=o(class o extends i{constructor(o){super();if(o!==false){this.__registerHost()}this.dsGroupChange=e(this,"dsGroupChange",7);this.dsClear=e(this,"dsClear",7);this.dsOpenChange=e(this,"dsOpenChange",7);this.hasBorder=true;this.vertical=false;this.embedded=false;this.options=[];this.grouping=null;this.ariaLabel=null;this.open=false;this.emptyMessage="Select a group to choose its order.";this.clearLabel="Clear";this.shouldRender=false;this.closing=false;this.positionReady=false;this.pos={x:0,y:0};this.focusRingVisible=false;this.componentId=`ds-data-group-${++D}`;this.triggerId=`${this.componentId}-trigger`;this.popupId=`${this.componentId}-popup`;this.triggerElement=null;this.pendingInitialFocusVisible=false;this.closeTimer=null;this.position=new a({getAnchor:()=>this.triggerElement,getPopup:()=>this.el.querySelector(".data-group-popup"),getOwnerDocument:()=>this.el.ownerDocument,measure:(o,i)=>{if(!this.open)return null;const e=y(z.space050,z.space050);return{anchorRect:o.getBoundingClientRect(),popupWidth:i.offsetWidth||this.popupFallbackWidth,popupHeight:i.offsetHeight||this.popupFallbackHeight,side:"bottom",align:"end",sideOffsetPx:y(C.space050,z.space050),alignOffsetPx:_({align:"end",alignOffsetPx:0,sectionInsetPx:e}),viewportPadPx:y(z.space050,z.space050),viewportWidth:window.innerWidth,viewportHeight:window.innerHeight,collisionRect:d(o)}},apply:({x:o,y:i})=>{this.pos={x:o,y:i}},onReady:()=>{this.positionReady=true},liveUpdate:"double-frame",observeResize:true,topLayer:true});this.interaction=new n({getAnchor:()=>this.triggerElement,getPopup:()=>this.el.querySelector(".data-group-popup"),getOwnerDocument:()=>this.el.ownerDocument,onOutsideActivation:()=>this.close()})}componentDidLoad(){if(this.open)this.onOpenChange(true)}disconnectedCallback(){this.position.unobserve();this.interaction.disconnect();if(this.closeTimer)clearTimeout(this.closeTimer)}onOpenChange(o){if(this.embedded)return;if(o){this.teardown();this.shouldRender=true;this.closing=false;this.positionReady=false;this.focusRingVisible=this.pendingInitialFocusVisible;this.interaction.connect();this.position.observe();this.position.schedule((()=>this.focusInitialDataPoint()));return}if(!this.shouldRender)return;this.position.cancel();this.closing=true;this.interaction.disconnect();this.position.unobserve();const i=k(z.motionShort2,z.animationDurationShort3);if(i<=0)this.finishClose();else this.closeTimer=setTimeout((()=>this.finishClose()),i)}handleKeyDown(o){if(this.embedded&&(o.key==="Escape"||o.key==="Tab"))return;if(!this.shouldRender&&!this.embedded||this.closing)return;if(o.key==="Escape"){o.preventDefault();this.close();return}if(o.key!=="Tab"||!this.interaction.tabLeavesPopup(o))return;o.preventDefault();this.close(false);this.interaction.moveFocusAfterTab(o.shiftKey)}get popupFallbackWidth(){return y(z.menuWidthLg,z.menuWidthLg)}get popupFallbackHeight(){return y(z.menuFallbackHeight,z.menuFallbackHeight)}teardown(){this.position.unobserve();this.interaction.disconnect();if(this.closeTimer){clearTimeout(this.closeTimer);this.closeTimer=null}}toggle(o=false){if(this.open){this.close();return}this.pendingInitialFocusVisible=o;this.open=true;this.dsOpenChange.emit(true);this.onOpenChange(true)}close(o=true){if(o)this.interaction.focusAnchor();this.open=false;this.dsOpenChange.emit(false);this.onOpenChange(false)}finishClose(){const o=this.el.querySelector(".data-group-popup");if(o?.matches(":popover-open"))o.hidePopover();this.shouldRender=false;this.closing=false;this.closeTimer=null}focusInitialDataPoint(){requestAnimationFrame((()=>{const o=this.grouping?this.el.querySelector(`[data-group-value="${CSS.escape(this.grouping.fieldId)}"] [role="option"]`):null;const i=o??this.el.querySelector('[data-group-value] [role="option"]:not([aria-disabled="true"])');i?.focus();this.pendingInitialFocusVisible=false}))}selectData(o){if(o.value==="__none__"){this.dsClear.emit();return}if(o.isInactive)return;if(this.grouping?.fieldId===o.value){this.dsGroupChange.emit({...this.grouping});return}const i=o.orderOptions?.[0];this.dsGroupChange.emit({fieldId:o.value,direction:i?.direction??"asc",...i?.orderBy?{orderBy:i.orderBy}:{}})}get activeOrderOptions(){const o=this.options.find((o=>o.value===this.grouping?.fieldId))?.orderOptions;return o?.length?o:T}get selectedOrderIndex(){if(!this.grouping)return-1;const o=this.activeOrderOptions.findIndex((o=>o.direction===this.grouping?.direction&&o.orderBy===this.grouping?.orderBy));if(o>=0)return o;if(this.grouping.orderBy===undefined){return this.activeOrderOptions.findIndex((o=>o.direction===this.grouping?.direction))}return-1}selectOrder(o,i){if(!this.grouping||this.selectedOrderIndex===i)return;const e={fieldId:this.grouping.fieldId,direction:o.direction};if(o.orderBy)e.orderBy=o.orderBy;this.dsGroupChange.emit(e)}moveFocus(o,i,e,s){if(s&&(o.key==="ArrowLeft"||o.key==="ArrowRight")){o.preventDefault();this.focusRingVisible=true;this.el.querySelector(s)?.focus();return}if(!["ArrowDown","ArrowUp","Home","End"].includes(o.key))return;o.preventDefault();const t=Array.from(this.el.querySelectorAll(i)).filter((o=>o.getAttribute("aria-disabled")!=="true"));if(!t.length)return;let r;if(o.key==="Home")r=0;else if(o.key==="End")r=t.length-1;else r=(e+(o.key==="ArrowDown"?1:-1)+t.length)%t.length;this.focusRingVisible=true;t[r]?.focus()}renderDataOption(o,i){const e=o.value==="__none__"?!this.grouping:o.value===this.grouping?.fieldId;return s(u,{id:`${this.componentId}-data-${i}`,option:{...o},selected:e,active:e,focusRingVisible:this.focusRingVisible,usesSubtext:Boolean(o.description),tabIndex:e||!this.grouping&&i===0?0:-1,onHover:()=>{this.focusRingVisible=false},onSelect:()=>this.selectData(o),onKeyDown:i=>{if(i.key==="Enter"||i.key===" "){i.preventDefault();this.selectData(o);return}this.moveFocus(i,'[data-group-value] [role="option"]',this.options.filter((o=>!o.isInactive)).findIndex((i=>i.value===o.value)),this.grouping?`[data-group-order-index="${this.selectedOrderIndex}"] [role="option"]`:undefined)}})}renderOrder(o,i){const e=i===this.selectedOrderIndex;return s(u,{id:`${this.componentId}-order-${i}`,option:{label:o.label,value:String(i)},selected:e,active:e,focusRingVisible:this.focusRingVisible,usesSubtext:false,tabIndex:e?0:-1,onHover:()=>{this.focusRingVisible=false},onSelect:()=>this.selectOrder(o,i),onKeyDown:e=>{if(e.key==="Enter"||e.key===" "){e.preventDefault();this.selectOrder(o,i);return}this.moveFocus(e,'[data-group-order-index] [role="option"]',i,`[data-group-value="${CSS.escape(this.grouping?.fieldId??"")}"] [role="option"]`)}})}render(){const o=this.ariaLabel?.trim()||"Group table";const i={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"};return s(t,{key:"66d18c2207e975e1120b18a377b50a94f909f3ac",class:{"data-group-vertical":this.vertical},hidden:this.options.length===0?true:undefined},this.options.length&&!this.embedded?s("ds-button-unfilled",{hasBorder:this.hasBorder,ref:o=>{this.triggerElement=o??null},id:this.triggerId,variant:"icon-label",size:"md",icon:"SectionList",label:"Group",labelEmphasis:false,pressScale:false,"aria-label":o,haspopup:"dialog",collapseLabel:true,expanded:this.open,surfaceOpen:this.open||this.closing,controls:this.popupId,onDsClick:o=>this.toggle(o.detail.detail===0)}):null,this.shouldRender||this.embedded?s("div",{id:this.popupId,popover:this.embedded?undefined:"manual",class:{"data-group-popup":true,"ds-choice-popup":!this.embedded,"data-preferences-embedded":this.embedded,"ds-choice-popup--closing":this.closing},style:this.embedded?undefined:i,role:"dialog","aria-label":o},s("div",{class:"data-group__body"},s("div",{class:"data-group__data-pane"},s(c,{heading:"Data",ariaLabel:"Group data",className:"data-group__list"},this.vertical&&this.renderDataOption({label:"No grouping",value:"__none__"},-1),this.options.map(((o,i)=>s("div",{"data-group-value":o.value},this.renderDataOption(o,i))))),s("div",{hidden:this.vertical,class:"data-group__footer ds-choice-footer","aria-hidden":!this.grouping?"true":undefined},s("div",{class:"ds-choice-footer__content ds-control--md"},this.grouping?s("button",{class:"ds-choice-footer__clear ds-text-action ds-focus-ring",type:"button",onClick:()=>this.dsClear.emit()},s("ds-text",{as:"span",variant:"text-body-medium",color:"inherit"},this.clearLabel)):null))),s("div",{class:"data-group__order-pane"},this.grouping?s(c,{heading:"Order",ariaLabel:"Group order",className:"data-group__list"},this.activeOrderOptions.map(((o,i)=>s("div",{"data-group-order-index":i},this.renderOrder(o,i))))):s("div",{class:"data-group__empty ds-choice-empty ds-empty-region"},s("ds-empty-state",{body:this.emptyMessage}))))):null)}get el(){return this}static get watchers(){return{open:[{onOpenChange:0}]}}static get style(){return j()}},[2,"ds-data-group",{hasBorder:[4,"has-border"],vertical:[4],embedded:[4],options:[16],grouping:[16],ariaLabel:[1,"aria-label"],open:[1028],emptyMessage:[1,"empty-message"],clearLabel:[1,"clear-label"],shouldRender:[32],closing:[32],positionReady:[32],pos:[32],focusRingVisible:[32]},[[0,"keydown","handleKeyDown"]],{open:[{onOpenChange:0}]}]);function O(){if(typeof customElements==="undefined"){return}const o=["ds-data-group","ds-badge","ds-button-unfilled","ds-chip","ds-divider","ds-empty-state","ds-icon","ds-input","ds-loader","ds-text","ds-tooltip"];o.forEach((o=>{switch(o){case"ds-data-group":if(!customElements.get(r(o))){customElements.define(r(o),E)}break;case"ds-badge":if(!customElements.get(r(o))){p()}break;case"ds-button-unfilled":if(!customElements.get(r(o))){h()}break;case"ds-chip":if(!customElements.get(r(o))){g()}break;case"ds-divider":if(!customElements.get(r(o))){f()}break;case"ds-empty-state":if(!customElements.get(r(o))){v()}break;case"ds-icon":if(!customElements.get(r(o))){m()}break;case"ds-input":if(!customElements.get(r(o))){l()}break;case"ds-loader":if(!customElements.get(r(o))){b()}break;case"ds-text":if(!customElements.get(r(o))){x()}break;case"ds-tooltip":if(!customElements.get(r(o))){w()}break}}))}O();export{E as D,O as d};
2
- //# sourceMappingURL=p-BDdlJZyL.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["dataGroupCss","DEFAULT_ORDER_OPTIONS","label","direction","tableGroupSeq","DataGroup","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","hasBorder","vertical","embedded","options","grouping","ariaLabel","open","emptyMessage","clearLabel","shouldRender","closing","positionReady","pos","x","y","focusRingVisible","componentId","triggerId","popupId","triggerElement","pendingInitialFocusVisible","closeTimer","position","AnchoredPositionController","getAnchor","getPopup","el","querySelector","getOwnerDocument","ownerDocument","measure","anchor","popup","sectionInsetPx","resolveCssLengthPx","TOKEN_DEFAULTS","space050","anchorRect","getBoundingClientRect","popupWidth","offsetWidth","popupFallbackWidth","popupHeight","offsetHeight","popupFallbackHeight","side","align","sideOffsetPx","TOKEN_CSS_LENGTHS","alignOffsetPx","resolveChoicePopupAlignOffset","viewportPadPx","viewportWidth","window","innerWidth","viewportHeight","innerHeight","collisionRect","resolveAnchoredOverlayBoundaryRect","apply","onReady","liveUpdate","observeResize","topLayer","interaction","AnchoredOverlayInteractionController","onOutsideActivation","close","componentDidLoad","onOpenChange","disconnectedCallback","unobserve","disconnect","clearTimeout","isOpen","teardown","connect","observe","schedule","focusInitialDataPoint","cancel","duration","resolveMotionTimeMs","motionShort2","animationDurationShort3","finishClose","setTimeout","handleKeyDown","event","key","preventDefault","tabLeavesPopup","moveFocusAfterTab","shiftKey","menuWidthLg","menuFallbackHeight","toggle","fromKeyboard","dsOpenChange","emit","restoreFocus","focusAnchor","matches","hidePopover","requestAnimationFrame","selected","CSS","escape","fieldId","initial","focus","selectData","option","value","dsClear","isInactive","dsGroupChange","initialOrder","orderOptions","orderBy","activeOrderOptions","configured","find","length","selectedOrderIndex","exact","findIndex","undefined","selectOrder","index","moveFocus","selector","currentIndex","oppositeSelector","includes","items","Array","from","querySelectorAll","filter","item","getAttribute","next","renderDataOption","h","ChoiceOptionRow","id","active","usesSubtext","Boolean","description","tabIndex","onHover","onSelect","onKeyDown","candidate","renderOrder","String","render","name","trim","popupStyle","left","top","transform","Math","round","zIndex","visibility","Host","class","hidden","ref","element","variant","size","icon","labelEmphasis","pressScale","haspopup","collapseLabel","expanded","surfaceOpen","controls","onDsClick","detail","popover","style","role","ChoiceListSection","heading","className","map","type","onClick","as","color","body"],"sources":["src/wc/components/DataGroup/DataGroup.css?tag=ds-data-group&encapsulation=scoped","src/wc/components/DataGroup/DataGroup.tsx"],"sourcesContent":["@import '../../utils/radius.css';\n@import '../../utils/choice-list.css';\n@import '../../utils/control-parts.css';\n@import '../../utils/table-caption-control.css';\n\n:host {\n display: inline-flex;\n min-inline-size: 0;\n max-inline-size: var(--dimension-menu-width-xs);\n}\n\n:host([hidden]) {\n display: none;\n}\n\n.data-group__body {\n display: grid;\n grid-template-columns: var(--dimension-menu-width-xs) var(--dimension-menu-width-sm);\n min-height: calc(var(--dimension-size-800) * 4 + var(--dimension-space-150));\n max-height: calc(100vh - var(--dimension-size-800) - var(--dimension-size-600));\n}\n\n.data-group__data-pane,\n.data-group__order-pane {\n display: flex;\n min-width: 0;\n min-height: 0;\n flex-direction: column;\n}\n\n.data-group__data-pane {\n border-inline-end: var(--dimension-stroke-width-012) solid var(--color-border-tertiary);\n}\n\n.data-group__list {\n flex: 1 1 auto;\n}\n\n.data-group__empty {\n flex: 1 1 auto;\n}\n\n.data-group__footer {\n flex: 0 0 auto;\n}\n\n.data-group__footer .ds-choice-footer__content {\n justify-content: flex-start;\n}\n\n.data-group__footer[aria-hidden='true']::before {\n visibility: hidden;\n}\n\n.data-group__footer[aria-hidden='true'] .ds-choice-footer__content {\n visibility: hidden;\n}\n\n@media (forced-colors: active) {\n .data-group__data-pane {\n border-inline-end-color: var(--ds-forced-color-content);\n }\n}\n\n.data-preferences-embedded {\n display: flex;\n flex-direction: column;\n min-width: 0;\n min-height: 0;\n color: var(--color-foreground-secondary);\n}\n\n:host:has(.data-preferences-embedded) {\n display: block;\n max-inline-size: none;\n}\n.data-preferences-embedded .data-group__body {\n grid-template-columns: min(var(--dimension-menu-width-xs), 40%) minmax(0, 1fr);\n}\n\n:host(.data-group-vertical) .data-group__body {\n grid-template-columns: minmax(0, 1fr);\n}\n:host(.data-group-vertical) .data-group__data-pane {\n border-inline-end: 0;\n}\n\n:host(.data-group-vertical) .data-group__footer {\n display: none;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport {\n resolveChoicePopupAlignOffset,\n resolveCssLengthPx,\n resolveMotionTimeMs,\n TOKEN_CSS_LENGTHS,\n TOKEN_DEFAULTS,\n} from '../../utils';\nimport { AnchoredPositionController } from '../../utils/anchored-position-controller';\nimport { AnchoredOverlayInteractionController } from '../../utils/anchored-overlay-interaction-controller';\nimport { resolveAnchoredOverlayBoundaryRect } from '../../utils/anchored-overlay-boundary';\nimport { ChoiceListSection, ChoiceOptionRow } from '../../utils/choice-list-parts';\nimport type { DataGroupingState, DataSortDirection } from '../Table/table-types';\n\nexport interface TableGroupOrderOption {\n label: string;\n direction: DataSortDirection;\n /** Optional application-owned data point used to order the group sections. */\n orderBy?: string;\n}\n\nexport interface DataGroupOption {\n label: string;\n value: string;\n description?: string;\n isInactive?: boolean;\n /** Product-owned order choices for this grouping data point. */\n orderOptions?: TableGroupOrderOption[];\n}\n\nconst DEFAULT_ORDER_OPTIONS: TableGroupOrderOption[] = [\n { label: 'Ascending', direction: 'asc' },\n { label: 'Descending', direction: 'desc' },\n];\n\nlet tableGroupSeq = 0;\n\n@Component({\n tag: 'ds-data-group',\n styleUrl: 'DataGroup.css',\n scoped: true,\n})\nexport class DataGroup {\n @Element() private el!: HTMLElement;\n\n /** Product-owned data points that may group the table. */\n /** Render content inside a parent-owned surface; the parent owns dismissal and positioning. */\n /** Show the trigger border. */\n @Prop() hasBorder: boolean = true;\n @Prop() vertical: boolean = false;\n @Prop() embedded: boolean = false;\n @Prop() options: DataGroupOption[] = [];\n /** Controlled grouping field and the order of its group sections. */\n @Prop() grouping: DataGroupingState | null = null;\n /** Accessible name for the trigger and non-modal dialog. */\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | null = null;\n /** Controlled popup visibility. */\n @Prop({ mutable: true }) open = false;\n /** Empty message kept in the order pane until a grouping data point is selected. */\n @Prop() emptyMessage = 'Select a group to choose its order.';\n /** Clear action label. */\n @Prop() clearLabel = 'Clear';\n\n /** Requests replacement of the complete controlled grouping state. */\n @Event() dsGroupChange!: EventEmitter<DataGroupingState>;\n /** Requests removal of the controlled grouping state. */\n @Event() dsClear!: EventEmitter<void>;\n /** Reports controlled popup visibility changes. */\n @Event() dsOpenChange!: EventEmitter<boolean>;\n\n @State() private shouldRender = false;\n @State() private closing = false;\n @State() private positionReady = false;\n @State() private pos = { x: 0, y: 0 };\n @State() private focusRingVisible = false;\n\n private readonly componentId = `ds-data-group-${++tableGroupSeq}`;\n private readonly triggerId = `${this.componentId}-trigger`;\n private readonly popupId = `${this.componentId}-popup`;\n private triggerElement: HTMLElement | null = null;\n private pendingInitialFocusVisible = false;\n private closeTimer: ReturnType<typeof setTimeout> | null = null;\n\n private readonly position = new AnchoredPositionController({\n getAnchor: () => this.triggerElement,\n getPopup: () => this.el.querySelector<HTMLElement>('.data-group-popup'),\n getOwnerDocument: () => this.el.ownerDocument,\n measure: (anchor, popup) => {\n if (!this.open) return null;\n const sectionInsetPx = resolveCssLengthPx(TOKEN_DEFAULTS.space050, TOKEN_DEFAULTS.space050);\n return {\n anchorRect: anchor.getBoundingClientRect(),\n popupWidth: popup.offsetWidth || this.popupFallbackWidth,\n popupHeight: popup.offsetHeight || this.popupFallbackHeight,\n side: 'bottom',\n align: 'end',\n sideOffsetPx: resolveCssLengthPx(TOKEN_CSS_LENGTHS.space050, TOKEN_DEFAULTS.space050),\n alignOffsetPx: resolveChoicePopupAlignOffset({\n align: 'end',\n alignOffsetPx: 0,\n sectionInsetPx,\n }),\n viewportPadPx: resolveCssLengthPx(TOKEN_DEFAULTS.space050, TOKEN_DEFAULTS.space050),\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n collisionRect: resolveAnchoredOverlayBoundaryRect(anchor),\n };\n },\n apply: ({ x, y }) => {\n this.pos = { x, y };\n },\n onReady: () => {\n this.positionReady = true;\n },\n liveUpdate: 'double-frame',\n observeResize: true,\n topLayer: true,\n });\n\n private readonly interaction = new AnchoredOverlayInteractionController({\n getAnchor: () => this.triggerElement,\n getPopup: () => this.el.querySelector<HTMLElement>('.data-group-popup'),\n getOwnerDocument: () => this.el.ownerDocument,\n onOutsideActivation: () => this.close(),\n });\n\n componentDidLoad() {\n if (this.open) this.onOpenChange(true);\n }\n\n disconnectedCallback() {\n this.position.unobserve();\n this.interaction.disconnect();\n if (this.closeTimer) clearTimeout(this.closeTimer);\n }\n\n @Watch('open')\n onOpenChange(isOpen: boolean) {\n if (this.embedded) return;\n if (isOpen) {\n this.teardown();\n this.shouldRender = true;\n this.closing = false;\n this.positionReady = false;\n this.focusRingVisible = this.pendingInitialFocusVisible;\n this.interaction.connect();\n this.position.observe();\n this.position.schedule(() => this.focusInitialDataPoint());\n return;\n }\n if (!this.shouldRender) return;\n this.position.cancel();\n this.closing = true;\n this.interaction.disconnect();\n this.position.unobserve();\n const duration = resolveMotionTimeMs(\n TOKEN_DEFAULTS.motionShort2,\n TOKEN_DEFAULTS.animationDurationShort3\n );\n if (duration <= 0) this.finishClose();\n else this.closeTimer = setTimeout(() => this.finishClose(), duration);\n }\n\n @Listen('keydown')\n handleKeyDown(event: KeyboardEvent) {\n if (this.embedded && (event.key === 'Escape' || event.key === 'Tab')) return;\n if ((!this.shouldRender && !this.embedded) || this.closing) return;\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n return;\n }\n if (event.key !== 'Tab' || !this.interaction.tabLeavesPopup(event)) return;\n event.preventDefault();\n this.close(false);\n this.interaction.moveFocusAfterTab(event.shiftKey);\n }\n\n private get popupFallbackWidth(): number {\n return resolveCssLengthPx(TOKEN_DEFAULTS.menuWidthLg, TOKEN_DEFAULTS.menuWidthLg);\n }\n\n private get popupFallbackHeight(): number {\n return resolveCssLengthPx(TOKEN_DEFAULTS.menuFallbackHeight, TOKEN_DEFAULTS.menuFallbackHeight);\n }\n\n private teardown() {\n this.position.unobserve();\n this.interaction.disconnect();\n if (this.closeTimer) {\n clearTimeout(this.closeTimer);\n this.closeTimer = null;\n }\n }\n\n private toggle(fromKeyboard = false) {\n if (this.open) {\n this.close();\n return;\n }\n this.pendingInitialFocusVisible = fromKeyboard;\n this.open = true;\n this.dsOpenChange.emit(true);\n this.onOpenChange(true);\n }\n\n private close(restoreFocus = true) {\n if (restoreFocus) this.interaction.focusAnchor();\n this.open = false;\n this.dsOpenChange.emit(false);\n this.onOpenChange(false);\n }\n\n private finishClose() {\n const popup = this.el.querySelector<HTMLElement>('.data-group-popup');\n if (popup?.matches(':popover-open')) popup.hidePopover();\n this.shouldRender = false;\n this.closing = false;\n this.closeTimer = null;\n }\n\n private focusInitialDataPoint() {\n requestAnimationFrame(() => {\n const selected = this.grouping\n ? this.el.querySelector<HTMLElement>(\n `[data-group-value=\"${CSS.escape(this.grouping.fieldId)}\"] [role=\"option\"]`\n )\n : null;\n const initial =\n selected ??\n this.el.querySelector<HTMLElement>(\n '[data-group-value] [role=\"option\"]:not([aria-disabled=\"true\"])'\n );\n initial?.focus();\n this.pendingInitialFocusVisible = false;\n });\n }\n\n private selectData(option: DataGroupOption) {\n if (option.value === '__none__') {\n this.dsClear.emit();\n return;\n }\n if (option.isInactive) return;\n if (this.grouping?.fieldId === option.value) {\n this.dsGroupChange.emit({ ...this.grouping });\n return;\n }\n const initialOrder = option.orderOptions?.[0];\n this.dsGroupChange.emit({\n fieldId: option.value,\n direction: initialOrder?.direction ?? 'asc',\n ...(initialOrder?.orderBy ? { orderBy: initialOrder.orderBy } : {}),\n });\n }\n\n private get activeOrderOptions(): TableGroupOrderOption[] {\n const configured = this.options.find(\n option => option.value === this.grouping?.fieldId\n )?.orderOptions;\n return configured?.length ? configured : DEFAULT_ORDER_OPTIONS;\n }\n\n private get selectedOrderIndex(): number {\n if (!this.grouping) return -1;\n const exact = this.activeOrderOptions.findIndex(\n option =>\n option.direction === this.grouping?.direction && option.orderBy === this.grouping?.orderBy\n );\n if (exact >= 0) return exact;\n if (this.grouping.orderBy === undefined) {\n return this.activeOrderOptions.findIndex(\n option => option.direction === this.grouping?.direction\n );\n }\n return -1;\n }\n\n private selectOrder(option: TableGroupOrderOption, index: number) {\n if (!this.grouping || this.selectedOrderIndex === index) return;\n const grouping: DataGroupingState = {\n fieldId: this.grouping.fieldId,\n direction: option.direction,\n };\n if (option.orderBy) grouping.orderBy = option.orderBy;\n this.dsGroupChange.emit(grouping);\n }\n\n private moveFocus(\n event: KeyboardEvent,\n selector: string,\n currentIndex: number,\n oppositeSelector?: string\n ) {\n if (oppositeSelector && (event.key === 'ArrowLeft' || event.key === 'ArrowRight')) {\n event.preventDefault();\n this.focusRingVisible = true;\n this.el.querySelector<HTMLElement>(oppositeSelector)?.focus();\n return;\n }\n if (!['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) return;\n event.preventDefault();\n const items = Array.from(this.el.querySelectorAll<HTMLElement>(selector)).filter(\n item => item.getAttribute('aria-disabled') !== 'true'\n );\n if (!items.length) return;\n let next: number;\n if (event.key === 'Home') next = 0;\n else if (event.key === 'End') next = items.length - 1;\n else next = (currentIndex + (event.key === 'ArrowDown' ? 1 : -1) + items.length) % items.length;\n this.focusRingVisible = true;\n items[next]?.focus();\n }\n\n private renderDataOption(option: DataGroupOption, index: number) {\n const selected =\n option.value === '__none__' ? !this.grouping : option.value === this.grouping?.fieldId;\n return (\n <ChoiceOptionRow\n id={`${this.componentId}-data-${index}`}\n option={{ ...option }}\n selected={selected}\n active={selected}\n focusRingVisible={this.focusRingVisible}\n usesSubtext={Boolean(option.description)}\n tabIndex={selected || (!this.grouping && index === 0) ? 0 : -1}\n onHover={() => {\n this.focusRingVisible = false;\n }}\n onSelect={() => this.selectData(option)}\n onKeyDown={(event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.selectData(option);\n return;\n }\n this.moveFocus(\n event,\n '[data-group-value] [role=\"option\"]',\n this.options\n .filter(candidate => !candidate.isInactive)\n .findIndex(candidate => candidate.value === option.value),\n this.grouping\n ? `[data-group-order-index=\"${this.selectedOrderIndex}\"] [role=\"option\"]`\n : undefined\n );\n }}\n />\n );\n }\n\n private renderOrder(option: TableGroupOrderOption, index: number) {\n const selected = index === this.selectedOrderIndex;\n return (\n <ChoiceOptionRow\n id={`${this.componentId}-order-${index}`}\n option={{ label: option.label, value: String(index) }}\n selected={selected}\n active={selected}\n focusRingVisible={this.focusRingVisible}\n usesSubtext={false}\n tabIndex={selected ? 0 : -1}\n onHover={() => {\n this.focusRingVisible = false;\n }}\n onSelect={() => this.selectOrder(option, index)}\n onKeyDown={(event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.selectOrder(option, index);\n return;\n }\n this.moveFocus(\n event,\n '[data-group-order-index] [role=\"option\"]',\n index,\n `[data-group-value=\"${CSS.escape(this.grouping?.fieldId ?? '')}\"] [role=\"option\"]`\n );\n }}\n />\n );\n }\n\n render() {\n const name = this.ariaLabel?.trim() || 'Group table';\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 return (\n <Host\n class={{ 'data-group-vertical': this.vertical }}\n hidden={this.options.length === 0 ? true : undefined}\n >\n {this.options.length && !this.embedded ? (\n <ds-button-unfilled\n hasBorder={this.hasBorder}\n ref={element => {\n this.triggerElement = (element as HTMLElement) ?? null;\n }}\n id={this.triggerId}\n variant=\"icon-label\"\n size=\"md\"\n icon=\"SectionList\"\n label=\"Group\"\n labelEmphasis={false}\n pressScale={false}\n aria-label={name}\n haspopup=\"dialog\"\n collapseLabel={true}\n expanded={this.open}\n surfaceOpen={this.open || this.closing}\n controls={this.popupId}\n onDsClick={(event: CustomEvent<MouseEvent>) => this.toggle(event.detail.detail === 0)}\n />\n ) : null}\n\n {this.shouldRender || this.embedded ? (\n <div\n id={this.popupId}\n popover={this.embedded ? undefined : 'manual'}\n class={{\n 'data-group-popup': true,\n 'ds-choice-popup': !this.embedded,\n 'data-preferences-embedded': this.embedded,\n 'ds-choice-popup--closing': this.closing,\n }}\n style={this.embedded ? undefined : popupStyle}\n role=\"dialog\"\n aria-label={name}\n >\n <div class=\"data-group__body\">\n <div class=\"data-group__data-pane\">\n <ChoiceListSection\n heading=\"Data\"\n ariaLabel=\"Group data\"\n className=\"data-group__list\"\n >\n {this.vertical &&\n this.renderDataOption({ label: 'No grouping', value: '__none__' }, -1)}\n {this.options.map((option, index) => (\n <div data-group-value={option.value}>\n {this.renderDataOption(option, index)}\n </div>\n ))}\n </ChoiceListSection>\n <div\n hidden={this.vertical}\n class=\"data-group__footer ds-choice-footer\"\n aria-hidden={!this.grouping ? 'true' : undefined}\n >\n <div class=\"ds-choice-footer__content ds-control--md\">\n {this.grouping ? (\n <button\n class=\"ds-choice-footer__clear ds-text-action ds-focus-ring\"\n type=\"button\"\n onClick={() => this.dsClear.emit()}\n >\n <ds-text as=\"span\" variant=\"text-body-medium\" color=\"inherit\">\n {this.clearLabel}\n </ds-text>\n </button>\n ) : null}\n </div>\n </div>\n </div>\n\n <div class=\"data-group__order-pane\">\n {this.grouping ? (\n <ChoiceListSection\n heading=\"Order\"\n ariaLabel=\"Group order\"\n className=\"data-group__list\"\n >\n {this.activeOrderOptions.map((option, index) => (\n <div data-group-order-index={index}>{this.renderOrder(option, index)}</div>\n ))}\n </ChoiceListSection>\n ) : (\n <div class=\"data-group__empty ds-choice-empty ds-empty-region\">\n <ds-empty-state body={this.emptyMessage} />\n </div>\n )}\n </div>\n </div>\n </div>\n ) : null}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{p as o,H as t,h as s,a as i,t as r}from"./index.js";import{d as a}from"./p-D8OWhnID.js";import{T as e,r as c}from"./p-CeXf9-X3.js";import{C as n,a as d}from"./p-CuwopElg.js";const l=()=>`.sc-ds-tooltip-chart-h,.sc-ds-tooltip-chart:where(.ds-table),.sc-ds-tooltip-chart:where(.tooltip-popup),.sc-ds-tooltip-chart:where(.ds-radius){--ds-radius-control:var(--dimension-radius-025);--ds-radius-card:var(--dimension-radius-050);--ds-radius-modal:var(--dimension-radius-050);--ds-radius-menu:var(--dimension-radius-075);--ds-radius-tooltip-control:var(--dimension-radius-025);--ds-radius-tooltip-menu:var(--dimension-radius-075);--ds-radius-table:var(--dimension-radius-050)}.ds-control--lg.sc-ds-tooltip-chart,.ds-control--lg.sc-ds-tooltip-chart-h,.ds-control--md.sc-ds-tooltip-chart-h,.ds-control--md.sc-ds-tooltip-chart,.ds-control--sm.sc-ds-tooltip-chart-h,.ds-control--sm.sc-ds-tooltip-chart,.ds-control--xs.sc-ds-tooltip-chart-h,.ds-control--xs.sc-ds-tooltip-chart{--ds-control-radius:var(--ds-radius-control)}.ds-control--lg.sc-ds-tooltip-chart-h,.ds-control--lg.sc-ds-tooltip-chart{--ds-control-height:var(--dimension-size-500);--ds-control-icon:var(--dimension-iconography-lg);--ds-control-padding-inline:var(--dimension-space-100);--ds-control-label-inset:var(--dimension-space-050);--ds-control-gap:var(--dimension-space-050)}.ds-control--md.sc-ds-tooltip-chart-h,.ds-control--md.sc-ds-tooltip-chart{--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-tooltip-chart-h,.ds-control--sm.sc-ds-tooltip-chart{--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-tooltip-chart-h,.ds-control--xs.sc-ds-tooltip-chart{--ds-control-height:var(--dimension-size-200);--ds-control-icon:var(--dimension-iconography-xs);--ds-control-padding-inline:var(--dimension-space-025);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:0}.ds-control-frame.sc-ds-tooltip-chart{display:inline-flex;align-items:center;box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400));padding-inline:var(--ds-control-padding-inline, var(--dimension-space-075));gap:var(--ds-control-gap, var(--dimension-space-050));border-radius:var(--ds-control-radius, var(--dimension-radius-025))}.ds-control-section-heading.sc-ds-tooltip-chart{display:flex;align-items:center;box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400));padding-inline:calc( var(--ds-control-padding-inline, var(--dimension-space-075)) + var(--ds-control-label-inset, var(--dimension-space-025)) )}.ds-control-icon-box.sc-ds-tooltip-chart{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ds-control-icon, var(--dimension-iconography-md));height:var(--ds-control-icon, var(--dimension-iconography-md))}.ds-control-label-box.sc-ds-tooltip-chart{min-width:0;padding-inline:var(--ds-control-label-inset, var(--dimension-space-025))}.ds-control-label-dot.sc-ds-tooltip-chart{position:relative;padding-inline-end:calc( var(--ds-control-label-inset, var(--dimension-space-025)) + var(--ds-control-gap, var(--dimension-space-050)) )}.ds-control-label-dot__badge.sc-ds-tooltip-chart{position:absolute;inset-block-start:0;inset-inline-end:0;pointer-events:none}.ds-chrome-space--sm.sc-ds-tooltip-chart-h,.ds-chrome-space--sm.sc-ds-tooltip-chart{--ds-chrome-padding:var(--dimension-space-050);--ds-chrome-gap:var(--dimension-space-050)}.ds-chrome-space--md.sc-ds-tooltip-chart-h,.ds-chrome-space--md.sc-ds-tooltip-chart{--ds-chrome-padding:var(--dimension-space-100);--ds-chrome-gap:var(--dimension-space-100)}.ds-chrome-space--lg.sc-ds-tooltip-chart-h,.ds-chrome-space--lg.sc-ds-tooltip-chart{--ds-chrome-padding:var(--dimension-space-200);--ds-chrome-gap:var(--dimension-space-200)}.ds-chrome-row.sc-ds-tooltip-chart-h,.ds-chrome-row.sc-ds-tooltip-chart,.ds-chrome-column.sc-ds-tooltip-chart-h,.ds-chrome-column.sc-ds-tooltip-chart,.ds-chrome-grid.sc-ds-tooltip-chart-h,.ds-chrome-grid.sc-ds-tooltip-chart{display:flex;box-sizing:border-box;gap:var(--ds-chrome-gap, var(--dimension-space-100));padding:var(--ds-chrome-padding, var(--dimension-space-100))}.ds-chrome-row.sc-ds-tooltip-chart-h,.ds-chrome-row.sc-ds-tooltip-chart{flex-direction:row;align-items:center}.ds-chrome-column.sc-ds-tooltip-chart-h,.ds-chrome-column.sc-ds-tooltip-chart{flex-direction:column}.ds-chrome-grid.sc-ds-tooltip-chart-h,.ds-chrome-grid.sc-ds-tooltip-chart{display:grid;align-items:center}@media (forced-colors: active){.sc-ds-tooltip-chart:root,.sc-ds-tooltip-chart-h,.ds-forced-colors-scope.sc-ds-tooltip-chart{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.sc-ds-tooltip-chart-h{position:absolute;z-index:var(--dimension-z-index-tooltip);background-color:var(--color-translucent-translucent);backdrop-filter:blur(var(--effect-blur-md));-webkit-backdrop-filter:blur(var(--effect-blur-md));border-radius:var(--ds-radius-tooltip-menu);box-shadow:var(--effect-elevation-elevated-floating);white-space:nowrap;pointer-events:none;opacity:0}.tooltip-chart--visible.sc-ds-tooltip-chart-h{animation:tooltip-chart-fade-in var(--effect-motion-short-2) forwards}.tooltip-chart__item.sc-ds-tooltip-chart{width:100%;border-radius:var(--ds-control-radius, var(--dimension-radius-025))}.tooltip-chart__items.sc-ds-tooltip-chart{display:contents}.tooltip-chart__swatch-box.sc-ds-tooltip-chart{pointer-events:none}.tooltip-chart__swatch.sc-ds-tooltip-chart{width:var(--dimension-size-100);height:var(--dimension-size-100);flex:none;border-radius:var(--dimension-radius-half);background:var(--ds-tooltip-chart-swatch)}.tooltip-chart__value.sc-ds-tooltip-chart{margin-inline-start:auto;text-align:end}.tooltip-chart__label.sc-ds-tooltip-chart,.tooltip-chart__value.sc-ds-tooltip-chart{flex:none}@keyframes tooltip-chart-fade-in{from{opacity:0}to{opacity:1}}@media (prefers-reduced-motion: reduce){.tooltip-chart--visible.sc-ds-tooltip-chart-h{animation:none;opacity:1}}@media (forced-colors: active){.sc-ds-tooltip-chart-h{box-shadow:none;outline:var(--dimension-stroke-width-012) solid var(--ds-forced-color-content);outline-offset:calc(-1 * var(--dimension-stroke-width-012))}}`;const h=12;const p=8;const m=o(class o extends t{constructor(o){super();if(o!==false){this.__registerHost()}this.value="";this.label="";this.x=0;this.y=0;this.delay=e.animationDelayInstant;this.side="right";this.align="bottom";this.visible=false;this.delayTimer=null}componentDidLoad(){this.scheduleShow();this.calculatePlacement()}disconnectedCallback(){this.clearDelayTimer()}onAnchorChange(){requestAnimationFrame((()=>this.calculatePlacement()))}onDelayChange(){if(!this.visible)this.scheduleShow()}get showDelayMs(){return c(this.delay,e.animationDelayInstant)}clearDelayTimer(){if(this.delayTimer){clearTimeout(this.delayTimer);this.delayTimer=null}}scheduleShow(){this.clearDelayTimer();this.visible=false;const o=this.showDelayMs;if(o<=0){this.visible=true;return}this.delayTimer=setTimeout((()=>{this.delayTimer=null;this.visible=true;requestAnimationFrame((()=>this.calculatePlacement()))}),o)}calculatePlacement(){const o=this.el.getBoundingClientRect();if(!o.width||!o.height)return;const t=o.right>window.innerWidth-p?"left":"right";const s=o.bottom>window.innerHeight-p?"top":"bottom";if(t!==this.side)this.side=t;if(s!==this.align)this.align=s}render(){const o=this.side==="right"?`${h}px`:`calc(-100% - ${h}px)`;const t=this.align==="bottom"?`${h}px`:`calc(-100% - ${h}px)`;const r=this.items??[{label:this.label,value:this.value}];const a=r.some((o=>Boolean(o.color)));return s(i,{key:"45f8ba5cfe0bef9d954e3374a8fd2272f503d28a",class:{"tooltip-chart":true,"tooltip-chart--visible":this.visible,"ds-chrome-column":true,"ds-chrome-space--sm":true},style:{left:`${this.x}px`,top:`${this.y}px`,transform:`translate(${o}, ${t})`}},this.heading&&s("ds-text",{key:"0483fb7fb3a4faa6c1595e715a5b10866f6fddfd",class:"tooltip-chart__heading ds-control-section-heading ds-control--md",as:"span",variant:d.md,emphasis:true,color:"var(--color-foreground-primary)"},this.heading),s("div",{key:"ceb4ca5142a4a0171f2440e6f05abed3c594fdc6",class:"tooltip-chart__items"},r.map(((o,t)=>s("div",{class:"tooltip-chart__item ds-control-frame ds-control--md",key:`${o.label}-${t}`},a&&s("span",{class:"tooltip-chart__swatch-box ds-control-icon-box","aria-hidden":"true"},o.color&&s("span",{class:"tooltip-chart__swatch",style:{"--ds-tooltip-chart-swatch":o.color}})),s("ds-text",{class:"tooltip-chart__label ds-control-label-box",as:"span",variant:n.md,color:"var(--color-foreground-secondary)"},o.label),s("ds-text",{class:"tooltip-chart__value ds-control-label-box",as:"span",variant:n.md,emphasis:true,color:"var(--color-foreground-primary)"},o.value))))))}get el(){return this}static get watchers(){return{x:[{onAnchorChange:0}],y:[{onAnchorChange:0}],delay:[{onDelayChange:0}]}}static get style(){return l()}},[2,"ds-tooltip-chart",{value:[8],label:[1],heading:[1],items:[16],x:[2],y:[2],delay:[8],side:[32],align:[32],visible:[32]},undefined,{x:[{onAnchorChange:0}],y:[{onAnchorChange:0}],delay:[{onDelayChange:0}]}]);function v(){if(typeof customElements==="undefined"){return}const o=["ds-tooltip-chart","ds-text"];o.forEach((o=>{switch(o){case"ds-tooltip-chart":if(!customElements.get(r(o))){customElements.define(r(o),m)}break;case"ds-text":if(!customElements.get(r(o))){a()}break}}))}v();export{m as T,v as d};
2
- //# sourceMappingURL=p-BERXvOCf.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["tooltipChartCss","CURSOR_OFFSET_PX","VIEWPORT_PAD_PX","TooltipChart","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","value","label","x","y","delay","TOKEN_DEFAULTS","animationDelayInstant","side","align","visible","delayTimer","componentDidLoad","scheduleShow","calculatePlacement","disconnectedCallback","clearDelayTimer","onAnchorChange","requestAnimationFrame","onDelayChange","showDelayMs","resolveCssTimeMs","clearTimeout","ms","setTimeout","rect","el","getBoundingClientRect","width","height","nextSide","right","window","innerWidth","nextAlign","bottom","innerHeight","render","translateX","translateY","rows","items","usesSwatches","some","item","Boolean","color","h","Host","key","class","style","left","top","transform","heading","as","variant","CONTROL_SUPPORTING_TEXT_VARIANT","md","emphasis","map","index","CONTROL_TEXT_VARIANT"],"sources":["src/wc/components/TooltipChart/TooltipChart.css?tag=ds-tooltip-chart&encapsulation=scoped","src/wc/components/TooltipChart/TooltipChart.tsx"],"sourcesContent":["@import '../../utils/radius.css';\n@import '../../utils/control-density.css';\n@import '../../utils/control-parts.css';\n@import '../../utils/chrome-layout.css';\n@import '../../utils/forced-colors.css';\n\n:host {\n position: absolute;\n z-index: var(--dimension-z-index-tooltip);\n background-color: var(--color-translucent-translucent);\n backdrop-filter: blur(var(--effect-blur-md));\n -webkit-backdrop-filter: blur(var(--effect-blur-md));\n border-radius: var(--ds-radius-tooltip-menu);\n box-shadow: var(--effect-elevation-elevated-floating);\n white-space: nowrap;\n pointer-events: none;\n opacity: 0;\n}\n\n:host(.tooltip-chart--visible) {\n animation: tooltip-chart-fade-in var(--effect-motion-short-2) forwards;\n}\n\n.tooltip-chart__item {\n width: 100%;\n border-radius: var(--ds-control-radius, var(--dimension-radius-025));\n}\n\n.tooltip-chart__items {\n display: contents;\n}\n\n.tooltip-chart__swatch-box {\n pointer-events: none;\n}\n\n.tooltip-chart__swatch {\n width: var(--dimension-size-100);\n height: var(--dimension-size-100);\n flex: none;\n border-radius: var(--dimension-radius-half);\n background: var(--ds-tooltip-chart-swatch);\n}\n\n.tooltip-chart__value {\n margin-inline-start: auto;\n text-align: end;\n}\n\n.tooltip-chart__label,\n.tooltip-chart__value {\n flex: none;\n}\n\n@keyframes tooltip-chart-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n :host(.tooltip-chart--visible) {\n animation: none;\n opacity: 1;\n }\n}\n\n@media (forced-colors: active) {\n :host {\n box-shadow: none;\n outline: var(--dimension-stroke-width-012) solid var(--ds-forced-color-content);\n outline-offset: calc(-1 * var(--dimension-stroke-width-012));\n }\n}\n","import { Component, Prop, State, Element, Watch, h, Host } from '@stencil/core';\nimport {\n CONTROL_SUPPORTING_TEXT_VARIANT,\n CONTROL_TEXT_VARIANT,\n resolveCssTimeMs,\n TOKEN_DEFAULTS,\n} from '../../utils';\n\nconst CURSOR_OFFSET_PX = 12;\nconst VIEWPORT_PAD_PX = 8;\n\nexport type TooltipChartSide = 'left' | 'right';\nexport type TooltipChartAlign = 'top' | 'bottom';\n\nexport interface TooltipChartItem {\n label: string;\n value: string | number;\n color?: string;\n}\n\n/**\n * Positioned value/label callout for chart hover interactions (bar, line point,\n * polar arc, …). A composition may suppress it when a visible legend already\n * surfaces the same value.\n * Unlike `ds-tooltip`, this doesn't bind to a slotted anchor element —\n * charts hover-highlight data that lives inside an SVG, so the chart itself computes\n * the anchor point (e.g. the cursor position while hovering) and passes it in as `x`/`y`.\n *\n * Renders `position: absolute` — place inside a `position: relative` chart wrapper,\n * with `x`/`y` as pixel coordinates within that wrapper. Defaults to sitting below-right\n * of the anchor (matching cursor-following tooltips), flipping to whichever side/edge\n * keeps it on-screen.\n *\n * Mount (or remount) when a hover session starts so `delay` applies once per hover;\n * keep the instance mounted while the cursor moves so tracking stays instant.\n */\n@Component({\n tag: 'ds-tooltip-chart',\n styleUrl: 'TooltipChart.css',\n scoped: true,\n})\nexport class TooltipChart {\n @Element() el!: HTMLElement;\n\n @Prop() value: string | number = '';\n @Prop() label: string = '';\n /** Optional heading for grouped chart focus. */\n @Prop() heading?: string;\n /** Multi-row content. When supplied, this replaces the legacy label/value row. */\n @Prop() items?: TooltipChartItem[];\n /** Anchor point in px, relative to the nearest `position: relative` ancestor — e.g. the cursor. */\n @Prop() x: number = 0;\n @Prop() y: number = 0;\n\n /**\n * Show delay after mount before the callout appears.\n * Default: `--effect-animation-delay-instant` (0ms). Accepts a number (ms)\n * or a TokoMo time token / `var(--effect-animation-delay-*)`. Charts need\n * immediate feedback while scrubbing; prefer the default. Mount once per\n * hover session so any non-zero delay runs once, then track `x`/`y` instantly.\n */\n @Prop() delay: number | string = TOKEN_DEFAULTS.animationDelayInstant;\n\n @State() private side: TooltipChartSide = 'right';\n @State() private align: TooltipChartAlign = 'bottom';\n @State() private visible: boolean = false;\n\n private delayTimer: ReturnType<typeof setTimeout> | null = null;\n\n componentDidLoad() {\n this.scheduleShow();\n this.calculatePlacement();\n }\n\n disconnectedCallback() {\n this.clearDelayTimer();\n }\n\n @Watch('x')\n @Watch('y')\n onAnchorChange() {\n requestAnimationFrame(() => this.calculatePlacement());\n }\n\n @Watch('delay')\n onDelayChange() {\n if (!this.visible) this.scheduleShow();\n }\n\n private get showDelayMs(): number {\n return resolveCssTimeMs(this.delay, TOKEN_DEFAULTS.animationDelayInstant);\n }\n\n private clearDelayTimer() {\n if (this.delayTimer) {\n clearTimeout(this.delayTimer);\n this.delayTimer = null;\n }\n }\n\n private scheduleShow() {\n this.clearDelayTimer();\n this.visible = false;\n const ms = this.showDelayMs;\n if (ms <= 0) {\n this.visible = true;\n return;\n }\n this.delayTimer = setTimeout(() => {\n this.delayTimer = null;\n this.visible = true;\n requestAnimationFrame(() => this.calculatePlacement());\n }, ms);\n }\n\n private calculatePlacement() {\n const rect = this.el.getBoundingClientRect();\n if (!rect.width || !rect.height) return;\n\n const nextSide: TooltipChartSide =\n rect.right > window.innerWidth - VIEWPORT_PAD_PX ? 'left' : 'right';\n const nextAlign: TooltipChartAlign =\n rect.bottom > window.innerHeight - VIEWPORT_PAD_PX ? 'top' : 'bottom';\n\n if (nextSide !== this.side) this.side = nextSide;\n if (nextAlign !== this.align) this.align = nextAlign;\n }\n\n render() {\n const translateX =\n this.side === 'right' ? `${CURSOR_OFFSET_PX}px` : `calc(-100% - ${CURSOR_OFFSET_PX}px)`;\n const translateY =\n this.align === 'bottom' ? `${CURSOR_OFFSET_PX}px` : `calc(-100% - ${CURSOR_OFFSET_PX}px)`;\n const rows = this.items ?? [{ label: this.label, value: this.value }];\n const usesSwatches = rows.some(item => Boolean(item.color));\n\n return (\n <Host\n class={{\n 'tooltip-chart': true,\n 'tooltip-chart--visible': this.visible,\n 'ds-chrome-column': true,\n 'ds-chrome-space--sm': true,\n }}\n style={{\n left: `${this.x}px`,\n top: `${this.y}px`,\n transform: `translate(${translateX}, ${translateY})`,\n }}\n >\n {this.heading && (\n <ds-text\n class=\"tooltip-chart__heading ds-control-section-heading ds-control--md\"\n as=\"span\"\n variant={CONTROL_SUPPORTING_TEXT_VARIANT.md}\n emphasis\n color=\"var(--color-foreground-primary)\"\n >\n {this.heading}\n </ds-text>\n )}\n <div class=\"tooltip-chart__items\">\n {rows.map((item, index) => (\n <div\n class=\"tooltip-chart__item ds-control-frame ds-control--md\"\n key={`${item.label}-${index}`}\n >\n {usesSwatches && (\n <span class=\"tooltip-chart__swatch-box ds-control-icon-box\" aria-hidden=\"true\">\n {item.color && (\n <span\n class=\"tooltip-chart__swatch\"\n style={{ '--ds-tooltip-chart-swatch': item.color }}\n />\n )}\n </span>\n )}\n <ds-text\n class=\"tooltip-chart__label ds-control-label-box\"\n as=\"span\"\n variant={CONTROL_TEXT_VARIANT.md}\n color=\"var(--color-foreground-secondary)\"\n >\n {item.label}\n </ds-text>\n <ds-text\n class=\"tooltip-chart__value ds-control-label-box\"\n as=\"span\"\n variant={CONTROL_TEXT_VARIANT.md}\n emphasis\n color=\"var(--color-foreground-primary)\"\n >\n {item.value}\n </ds-text>\n </div>\n ))}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{p as e,H as s,h as r,a as o,t as a}from"./index.js";import{d}from"./p-CwdRaJER.js";import{d as t}from"./p-D6FRqNhN.js";import{d as n}from"./p-B0EpvBDs.js";import{d as i}from"./p-DjkUFlDW.js";import{d as c}from"./p-0XTyQNRG.js";import{d as h}from"./p-D8OWhnID.js";import{d as m}from"./p-DIQiHX0q.js";import{r as l}from"./p-rCeztgVn.js";const p=()=>`.sc-ds-markdown:where(.ds-prose){display:block;box-sizing:border-box;max-inline-size:100%;min-inline-size:0;color:inherit;overflow-wrap:anywhere}.sc-ds-markdown:where(.ds-prose)>:where(h1,h2.sc-ds-markdown,h3.sc-ds-markdown,h4.sc-ds-markdown,h5.sc-ds-markdown,h6.sc-ds-markdown,p.sc-ds-markdown,ul.sc-ds-markdown,ol.sc-ds-markdown,dl.sc-ds-markdown,blockquote).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{max-inline-size:var(--ds-prose-text-max-inline-size, 100%)}.sc-ds-markdown:where(.ds-prose) :where(p,ul.sc-ds-markdown,ol.sc-ds-markdown,dl.sc-ds-markdown,blockquote.sc-ds-markdown,figure.sc-ds-markdown,figcaption.sc-ds-markdown,table).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin:0;color:inherit;font-family:var(--typography-font-family-ui);font-size:var(--typography-fontsize-md);font-weight:var(--typography-weight-regular);line-height:var(--typography-lineheight-md);letter-spacing:var(--typography-letterspacing-negative-half)}.sc-ds-markdown:where(.ds-prose) :where(h1,h2.sc-ds-markdown,h3.sc-ds-markdown,h4.sc-ds-markdown,h5.sc-ds-markdown,h6).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin:0;color:var(--color-foreground-primary);font-family:var(--typography-font-family-ui);font-weight:var(--typography-weight-semibold)}.sc-ds-markdown:where(.ds-prose) :where(h1,h2).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{font-size:var(--typography-fontsize-xl);line-height:var(--typography-lineheight-xl);letter-spacing:var(--typography-letterspacing-negative-double)}.sc-ds-markdown:where(.ds-prose) :where(h3,h4).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{font-size:var(--typography-fontsize-md);line-height:var(--typography-lineheight-md);font-weight:var(--typography-weight-medium);letter-spacing:var(--typography-letterspacing-negative-half)}.sc-ds-markdown:where(.ds-prose) :where(h2):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{font-size:var(--typography-fontsize-lg);line-height:var(--typography-lineheight-lg);letter-spacing:var(--typography-letterspacing-negative)}.sc-ds-markdown:where(.ds-prose) :where(h5,h6).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{font-size:var(--typography-fontsize-md);line-height:var(--typography-lineheight-md);letter-spacing:var(--typography-letterspacing-negative)}.sc-ds-markdown:where(.ds-prose)>.sc-ds-markdown:where(*+*){margin-block-start:var(--dimension-space-150)}.sc-ds-markdown:where(.ds-prose)>:where(*)+:where(h1,h2.sc-ds-markdown,h3.sc-ds-markdown,h4.sc-ds-markdown,h5.sc-ds-markdown,h6).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-block-start:var(--dimension-space-200)}.sc-ds-markdown:where(.ds-prose)>:where(h1,h2.sc-ds-markdown,h3.sc-ds-markdown,h4.sc-ds-markdown,h5.sc-ds-markdown,h6).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown+.sc-ds-markdown:where(*){margin-block-start:var(--dimension-space-100)}.sc-ds-markdown:where(.ds-prose) :where(blockquote,li.sc-ds-markdown,dd)>.sc-ds-markdown:where(*+*):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-block-start:var(--dimension-space-050)}.sc-ds-markdown:where(.ds-prose) :where(li+li.sc-ds-markdown,dt+dd).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-block-start:var(--dimension-space-050)}.sc-ds-markdown:where(.ds-prose) :where(ul,ol).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{padding-inline-start:var(--dimension-space-300)}.sc-ds-markdown:where(.ds-prose) :where(ol>li):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{padding-block-end:var(--dimension-space-100)}.sc-ds-markdown:where(.ds-prose) :where(ol>li:has(>:is(h3,h4).sc-ds-markdown:first-child)):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown::marker{color:var(--color-foreground-primary);font-size:var(--typography-fontsize-md);font-weight:var(--typography-weight-medium)}.sc-ds-markdown:where(.ds-prose) :where(li>ul.sc-ds-markdown,li>ol).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-block-start:var(--dimension-space-050)}.sc-ds-markdown:where(.ds-prose) :where(li>input[type='checkbox']):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-inline-end:var(--dimension-space-050)}.sc-ds-markdown:where(.ds-prose) :where(blockquote):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{padding-inline-start:var(--dimension-space-150);border-inline-start:var(--dimension-stroke-width-025) solid var(--color-border-secondary);color:var(--color-foreground-secondary)}.sc-ds-markdown:where(.ds-prose) :where(strong,b).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{font-weight:var(--typography-weight-medium)}.sc-ds-markdown:where(.ds-prose) :where(h1,h2.sc-ds-markdown,h3.sc-ds-markdown,h4.sc-ds-markdown,h5.sc-ds-markdown,h6) .sc-ds-markdown:where(strong,b).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{font-weight:inherit}.sc-ds-markdown:where(.ds-prose) :where(a):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{color:var(--color-foreground-bold-brand);text-decoration-line:none;text-decoration-color:currentcolor;text-decoration-thickness:var(--ds-text-decoration-thickness, var(--dimension-stroke-width-012));text-underline-offset:var(--ds-text-decoration-offset, var(--dimension-space-025))}@media (hover: hover) and (pointer: fine){.sc-ds-markdown:where(.ds-prose) :where(a):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown:hover{text-decoration-line:underline}}@media (forced-colors: active){.sc-ds-markdown:where(.ds-prose) :where(a):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{text-decoration-line:underline}}.sc-ds-markdown:where(.ds-prose) :where(code):not(:where(pre code.sc-ds-markdown,[data-ds-prose='off'].sc-ds-markdown,[data-ds-prose='off'] *)).sc-ds-markdown{padding:var(--dimension-space-012) var(--dimension-space-025);border-radius:var(--dimension-radius-025);background:var(--color-background-secondary);font-family:var( --typography-font-family-code, 'Fira Code', ui-monospace, 'SFMono-Regular', 'Cascadia Code', 'Roboto Mono', Menlo, Monaco, Consolas, 'Liberation Mono', monospace );font-size:var(--typography-fontsize-sm);font-variant-ligatures:var(--ds-code-font-variant-ligatures, normal);font-weight:var(--typography-weight-regular);line-height:var(--typography-lineheight-sm);letter-spacing:var(--typography-letterspacing-none)}.sc-ds-markdown:where(.ds-prose) :where(pre):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{box-sizing:border-box;max-inline-size:100%;min-inline-size:0;margin:0;padding:var(--dimension-space-150);overflow:auto;border-radius:var(--dimension-radius-050);background:var(--color-background-strong-neutral);color:var(--color-foreground-faint-neutral);font-family:var( --typography-font-family-code, 'Fira Code', ui-monospace, 'SFMono-Regular', 'Cascadia Code', 'Roboto Mono', Menlo, Monaco, Consolas, 'Liberation Mono', monospace );font-size:var(--typography-fontsize-sm);font-variant-ligatures:var(--ds-code-font-variant-ligatures, normal);font-weight:var(--typography-weight-regular);line-height:var(--typography-lineheight-sm);letter-spacing:var(--typography-letterspacing-none);tab-size:2}.sc-ds-markdown:where(.ds-prose) :where(pre code):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{padding:0;background:transparent;color:inherit;font:inherit;letter-spacing:inherit;white-space:pre}.sc-ds-markdown:where(.ds-prose) :where(hr):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin:0;border:0;border-block-start:var(--dimension-stroke-width-012) solid var(--color-border-tertiary)}.sc-ds-markdown:where(.ds-prose__table-scroll){box-sizing:border-box;max-inline-size:100%;min-inline-size:0;overflow-x:auto}.sc-ds-markdown:where(.ds-prose) :where(table):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{inline-size:100%;border-collapse:collapse}.sc-ds-markdown:where(.ds-prose) :where(th,td).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{padding:var(--dimension-space-075);border:var(--dimension-stroke-width-012) solid var(--color-border-tertiary);text-align:start;vertical-align:top;overflow-wrap:anywhere}.sc-ds-markdown:where(.ds-prose) :where(th):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{color:var(--color-foreground-primary);font-weight:var(--typography-weight-medium)}.sc-ds-markdown:where(.ds-prose) :where(img,video.sc-ds-markdown,svg).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{max-inline-size:100%;block-size:auto}.sc-ds-markdown:where(.ds-prose) :where(figcaption):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-block-start:var(--dimension-space-050);color:var(--color-foreground-secondary);font-size:var(--typography-fontsize-sm);line-height:var(--typography-lineheight-sm);letter-spacing:var(--typography-letterspacing-none)}.sc-ds-markdown-h{display:block;min-width:0;color:inherit;box-sizing:border-box;-webkit-user-select:text;user-select:text}`;let w;function f(){w??(w=Promise.all([import("./p-BjtXYFhw.js"),import("./p-DVsje4AY.js"),import("./p-gidVv1FX.js")]).then((([e,s,r])=>({fromMarkdown:e.fromMarkdown,gfmFromMarkdown:s.gfmFromMarkdown,gfm:r.gfm}))));return w}const k=e(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.content="";this.streaming=false;this.tree=null;this.parseRevision=0}componentWillLoad(){if(typeof document!=="undefined")return this.parse()}disconnectedCallback(){this.parseRevision+=1;if(this.parseFrame&&typeof cancelAnimationFrame==="function"){cancelAnimationFrame(this.parseFrame)}}scheduleParse(){if(typeof requestAnimationFrame!=="function")return;if(this.parseFrame)cancelAnimationFrame(this.parseFrame);this.parseFrame=requestAnimationFrame((()=>{this.parseFrame=undefined;void this.parse()}))}async parse(){const e=++this.parseRevision;try{const{fromMarkdown:s,gfmFromMarkdown:r,gfm:o}=await f();const a=s(this.content,{extensions:[o()],mdastExtensions:[r()]});if(e===this.parseRevision)this.tree=a}catch{if(e===this.parseRevision)this.tree=null}}children(e){if(!("children"in e))return[];return e.children.map((e=>this.renderNode(e)))}renderNode(e){switch(e.type){case"root":return this.children(e);case"text":return r("span",{class:"markdown__text"},e.value);case"paragraph":return r("p",{class:"markdown__paragraph"},this.children(e));case"heading":{const s=`h${e.depth}`;return r(s,{class:"markdown__heading"},this.children(e))}case"strong":return r("strong",{class:"markdown__strong"},this.children(e));case"emphasis":return r("em",{class:"markdown__emphasis"},this.children(e));case"delete":return r("del",{class:"markdown__delete"},this.children(e));case"blockquote":return r("blockquote",{class:"markdown__blockquote"},this.children(e));case"break":return r("br",{class:"markdown__break"});case"thematicBreak":return r("hr",{class:"markdown__thematic-break"});case"inlineCode":return r("code",{class:"markdown__inline-code"},e.value);case"code":return r("ds-code-block",{class:"markdown__code-block","data-ds-prose":"off",code:e.value,language:e.lang??"",filename:e.meta??""});case"link":{const s=l(e.url,{protocols:["http:","https:","mailto:"]});return s?r("a",{class:"markdown__link",href:s,target:"_blank",rel:"noopener noreferrer"},this.children(e)):this.children(e)}case"list":{const s=e.ordered?"ol":"ul";return r(s,{class:"markdown__list",start:e.ordered&&e.start?e.start:undefined},this.children(e))}case"listItem":return r("li",{class:"markdown__list-item"},typeof e.checked==="boolean"?r("input",{class:"markdown__task-indicator",type:"checkbox",checked:e.checked,disabled:true,"aria-hidden":"true",tabIndex:-1}):null,this.children(e));case"table":{const[s,...o]=e.children;return r("div",{class:"markdown__table-wrap ds-prose__table-scroll",tabIndex:0},r("table",{class:"markdown__table"},s?r("thead",{class:"markdown__table-head"},r("tr",{class:"markdown__table-row"},s.children.map((e=>r("th",{class:"markdown__table-heading",scope:"col"},this.children(e)))))):null,r("tbody",{class:"markdown__table-body"},o.map((e=>this.renderNode(e))))))}case"tableRow":return r("tr",{class:"markdown__table-row"},this.children(e));case"tableCell":return r("td",{class:"markdown__table-cell"},this.children(e));case"image":{const s=l(e.url,{protocols:["http:","https:","mailto:"]});return s?r("a",{class:"markdown__image-link",href:s,target:"_blank",rel:"noopener noreferrer"},e.alt||"View image"):e.alt||null}case"html":case"definition":case"footnoteDefinition":return null;case"footnoteReference":return r("sup",{class:"markdown__footnote"},e.label);default:return this.children(e)}}render(){return r(o,{key:"33a8886206a5e7f06dcf53fb9510f5944b981af6","aria-busy":this.streaming?"true":undefined},r("div",{key:"119c1dc415fe6b9539bc6137c437438ce935f408",class:"markdown ds-prose"},this.tree?this.renderNode(this.tree):r("p",{class:"markdown__paragraph"},r("span",{class:"markdown__text"},this.content))))}static get watchers(){return{content:[{scheduleParse:0}]}}static get style(){return p()}},[2,"ds-markdown",{content:[1],streaming:[4],tree:[32]},undefined,{content:[{scheduleParse:0}]}]);function g(){if(typeof customElements==="undefined"){return}const e=["ds-markdown","ds-badge","ds-button-unfilled","ds-code-block","ds-icon","ds-loader","ds-text","ds-tooltip"];e.forEach((e=>{switch(e){case"ds-markdown":if(!customElements.get(a(e))){customElements.define(a(e),k)}break;case"ds-badge":if(!customElements.get(a(e))){d()}break;case"ds-button-unfilled":if(!customElements.get(a(e))){t()}break;case"ds-code-block":if(!customElements.get(a(e))){n()}break;case"ds-icon":if(!customElements.get(a(e))){i()}break;case"ds-loader":if(!customElements.get(a(e))){c()}break;case"ds-text":if(!customElements.get(a(e))){h()}break;case"ds-tooltip":if(!customElements.get(a(e))){m()}break}}))}g();export{k as M,g as d};
2
- //# sourceMappingURL=p-BQspV5U7.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["markdownCss","parserPromise","loadParser","Promise","all","import","then","fromMarkdownModule","gfmFromMarkdownModule","gfmModule","fromMarkdown","gfmFromMarkdown","gfm","Markdown","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","content","streaming","tree","parseRevision","componentWillLoad","document","parse","disconnectedCallback","parseFrame","cancelAnimationFrame","scheduleParse","requestAnimationFrame","undefined","revision","extensions","mdastExtensions","children","node","map","child","renderNode","type","h","class","value","Tag","depth","code","language","lang","filename","meta","href","resolveSafeUrl","url","protocols","target","rel","ordered","start","checked","disabled","tabIndex","heading","rows","cell","scope","row","alt","label","render","Host","key"],"sources":["src/wc/components/Markdown/Markdown.css?tag=ds-markdown&encapsulation=scoped","src/wc/components/Markdown/Markdown.tsx"],"sourcesContent":["@import '../../styles/prose.css';\n\n:host {\n display: block;\n min-width: 0;\n color: inherit;\n box-sizing: border-box;\n -webkit-user-select: text;\n user-select: text;\n}\n","import { Component, h, Host, Prop, State, VNode, Watch } from '@stencil/core';\nimport type { Nodes, Root } from 'mdast';\nimport { resolveSafeUrl } from '../../utils';\n\ntype MarkdownRender = VNode | string | null | MarkdownRender[];\ntype MarkdownParser = {\n fromMarkdown: typeof import('mdast-util-from-markdown').fromMarkdown;\n gfmFromMarkdown: typeof import('mdast-util-gfm').gfmFromMarkdown;\n gfm: typeof import('micromark-extension-gfm').gfm;\n};\n\nlet parserPromise: Promise<MarkdownParser> | undefined;\n\nfunction loadParser(): Promise<MarkdownParser> {\n parserPromise ??= Promise.all([\n import('mdast-util-from-markdown'),\n import('mdast-util-gfm'),\n import('micromark-extension-gfm'),\n ]).then(([fromMarkdownModule, gfmFromMarkdownModule, gfmModule]) => ({\n fromMarkdown: fromMarkdownModule.fromMarkdown,\n gfmFromMarkdown: gfmFromMarkdownModule.gfmFromMarkdown,\n gfm: gfmModule.gfm,\n }));\n return parserPromise;\n}\n\n@Component({\n tag: 'ds-markdown',\n styleUrl: 'Markdown.css',\n scoped: true,\n})\nexport class Markdown {\n @Prop() content: string = '';\n @Prop() streaming: boolean = false;\n\n @State() private tree: Root | null = null;\n private parseFrame?: number;\n private parseRevision = 0;\n\n componentWillLoad() {\n // The browser-targeted named-character decoder used by the Markdown parser\n // creates a DOM element when its module is evaluated. Keep public package\n // imports server-safe by loading that parser only in a browser context.\n if (typeof document !== 'undefined') return this.parse();\n }\n\n disconnectedCallback() {\n this.parseRevision += 1;\n if (this.parseFrame && typeof cancelAnimationFrame === 'function') {\n cancelAnimationFrame(this.parseFrame);\n }\n }\n\n @Watch('content')\n scheduleParse() {\n if (typeof requestAnimationFrame !== 'function') return;\n if (this.parseFrame) cancelAnimationFrame(this.parseFrame);\n this.parseFrame = requestAnimationFrame(() => {\n this.parseFrame = undefined;\n void this.parse();\n });\n }\n\n private async parse() {\n const revision = ++this.parseRevision;\n try {\n const { fromMarkdown, gfmFromMarkdown, gfm } = await loadParser();\n const tree = fromMarkdown(this.content, {\n extensions: [gfm()],\n mdastExtensions: [gfmFromMarkdown()],\n });\n if (revision === this.parseRevision) this.tree = tree;\n } catch {\n if (revision === this.parseRevision) this.tree = null;\n }\n }\n\n private children(node: Nodes): MarkdownRender[] {\n if (!('children' in node)) return [];\n return node.children.map(child => this.renderNode(child));\n }\n\n private renderNode(node: Nodes): MarkdownRender {\n switch (node.type) {\n case 'root':\n return this.children(node);\n case 'text':\n // Keep prose text on an element boundary. Besides giving streaming updates a\n // stable render target, this avoids axe-core treating a bare Stencil text\n // vnode as an element while it generates a contrast-result selector.\n return <span class=\"markdown__text\">{node.value}</span>;\n case 'paragraph':\n return <p class=\"markdown__paragraph\">{this.children(node)}</p>;\n case 'heading': {\n const Tag = `h${node.depth}`;\n return <Tag class=\"markdown__heading\">{this.children(node)}</Tag>;\n }\n case 'strong':\n return <strong class=\"markdown__strong\">{this.children(node)}</strong>;\n case 'emphasis':\n return <em class=\"markdown__emphasis\">{this.children(node)}</em>;\n case 'delete':\n return <del class=\"markdown__delete\">{this.children(node)}</del>;\n case 'blockquote':\n return <blockquote class=\"markdown__blockquote\">{this.children(node)}</blockquote>;\n case 'break':\n return <br class=\"markdown__break\" />;\n case 'thematicBreak':\n return <hr class=\"markdown__thematic-break\" />;\n case 'inlineCode':\n return <code class=\"markdown__inline-code\">{node.value}</code>;\n case 'code':\n return (\n <ds-code-block\n class=\"markdown__code-block\"\n data-ds-prose=\"off\"\n code={node.value}\n language={node.lang ?? ''}\n filename={node.meta ?? ''}\n />\n );\n case 'link': {\n const href = resolveSafeUrl(node.url, {\n protocols: ['http:', 'https:', 'mailto:'],\n });\n return href ? (\n <a class=\"markdown__link\" href={href} target=\"_blank\" rel=\"noopener noreferrer\">\n {this.children(node)}\n </a>\n ) : (\n this.children(node)\n );\n }\n case 'list': {\n const Tag = node.ordered ? 'ol' : 'ul';\n return (\n <Tag class=\"markdown__list\" start={node.ordered && node.start ? node.start : undefined}>\n {this.children(node)}\n </Tag>\n );\n }\n case 'listItem':\n return (\n <li class=\"markdown__list-item\">\n {typeof node.checked === 'boolean' ? (\n <input\n class=\"markdown__task-indicator\"\n type=\"checkbox\"\n checked={node.checked}\n disabled\n aria-hidden=\"true\"\n tabIndex={-1}\n />\n ) : null}\n {this.children(node)}\n </li>\n );\n case 'table': {\n const [heading, ...rows] = node.children;\n return (\n <div class=\"markdown__table-wrap ds-prose__table-scroll\" tabIndex={0}>\n <table class=\"markdown__table\">\n {heading ? (\n <thead class=\"markdown__table-head\">\n <tr class=\"markdown__table-row\">\n {heading.children.map(cell => (\n <th class=\"markdown__table-heading\" scope=\"col\">\n {this.children(cell)}\n </th>\n ))}\n </tr>\n </thead>\n ) : null}\n <tbody class=\"markdown__table-body\">{rows.map(row => this.renderNode(row))}</tbody>\n </table>\n </div>\n );\n }\n case 'tableRow':\n return <tr class=\"markdown__table-row\">{this.children(node)}</tr>;\n case 'tableCell':\n return <td class=\"markdown__table-cell\">{this.children(node)}</td>;\n case 'image': {\n const href = resolveSafeUrl(node.url, {\n protocols: ['http:', 'https:', 'mailto:'],\n });\n return href ? (\n <a class=\"markdown__image-link\" href={href} target=\"_blank\" rel=\"noopener noreferrer\">\n {node.alt || 'View image'}\n </a>\n ) : (\n node.alt || null\n );\n }\n case 'html':\n case 'definition':\n case 'footnoteDefinition':\n return null;\n case 'footnoteReference':\n return <sup class=\"markdown__footnote\">{node.label}</sup>;\n default:\n return this.children(node);\n }\n }\n\n render() {\n return (\n <Host aria-busy={this.streaming ? 'true' : undefined}>\n <div class=\"markdown ds-prose\">\n {this.tree ? (\n this.renderNode(this.tree)\n ) : (\n <p class=\"markdown__paragraph\">\n <span class=\"markdown__text\">{this.content}</span>\n </p>\n )}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}