@ds-mo/ui 12.6.2 → 12.8.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 (360) hide show
  1. package/README.md +44 -115
  2. package/dist/.build-stamp +1 -1
  3. package/dist/agent-patterns.json +26 -11
  4. package/dist/agent.json +285 -49
  5. package/dist/angular/ds-button-filled.d.ts +1 -1
  6. package/dist/angular/ds-button-filled.js +3 -3
  7. package/dist/angular/ds-button-unfilled.d.ts +1 -1
  8. package/dist/angular/ds-button-unfilled.js +3 -3
  9. package/dist/angular/ds-card-overview.d.ts +19 -0
  10. package/dist/angular/ds-card-overview.js +42 -0
  11. package/dist/angular/ds-menu.d.ts +1 -1
  12. package/dist/angular/ds-menu.js +3 -3
  13. package/dist/angular/index.d.ts +1 -1
  14. package/dist/angular/index.js +1 -0
  15. package/dist/angular/proxies.d.ts +1 -0
  16. package/dist/angular/proxies.js +1 -0
  17. package/dist/components/ds-agent-activity.js +1 -1
  18. package/dist/components/ds-agent-response.js +1 -1
  19. package/dist/components/ds-agent-source-list.js +1 -1
  20. package/dist/components/ds-agent-tool-call.js +1 -1
  21. package/dist/components/ds-attachment-list.js +1 -1
  22. package/dist/components/ds-badge.js +1 -1
  23. package/dist/components/ds-bar-nav.js +1 -1
  24. package/dist/components/ds-bar-nav.js.map +1 -1
  25. package/dist/components/ds-bar-title.js +1 -1
  26. package/dist/components/ds-bar-title.js.map +1 -1
  27. package/dist/components/ds-bar-workflow.js +1 -1
  28. package/dist/components/ds-bar-workflow.js.map +1 -1
  29. package/dist/components/ds-breadcrumb.js +1 -1
  30. package/dist/components/ds-button-filled.js +1 -1
  31. package/dist/components/ds-button-unfilled.js +1 -1
  32. package/dist/components/ds-card-data-viz-bar.js +1 -1
  33. package/dist/components/ds-card-data-viz-bar.js.map +1 -1
  34. package/dist/components/ds-card-data-viz-donut.js +1 -1
  35. package/dist/components/ds-card-data-viz-donut.js.map +1 -1
  36. package/dist/components/ds-card-data-viz-line.js +1 -1
  37. package/dist/components/ds-card-data-viz-line.js.map +1 -1
  38. package/dist/components/ds-card-overview.d.ts +11 -0
  39. package/dist/components/ds-card-overview.js +2 -0
  40. package/dist/components/ds-card-overview.js.map +1 -0
  41. package/dist/components/ds-card-setting.js +1 -1
  42. package/dist/components/ds-card-setting.js.map +1 -1
  43. package/dist/components/ds-card-shell-data-viz.js +1 -1
  44. package/dist/components/ds-chart-bar-stacked.js +1 -1
  45. package/dist/components/ds-chart-bar-stacked.js.map +1 -1
  46. package/dist/components/ds-chart-bar.js +1 -1
  47. package/dist/components/ds-chart-bar.js.map +1 -1
  48. package/dist/components/ds-chart-donut.js +1 -1
  49. package/dist/components/ds-chart-donut.js.map +1 -1
  50. package/dist/components/ds-chart-legend.js +1 -1
  51. package/dist/components/ds-chart-line.js +1 -1
  52. package/dist/components/ds-chart-line.js.map +1 -1
  53. package/dist/components/ds-checkbox.js +1 -1
  54. package/dist/components/ds-chip.js +1 -1
  55. package/dist/components/ds-code-block.js +1 -1
  56. package/dist/components/ds-conversation-list-item.js +1 -1
  57. package/dist/components/ds-conversation-list-item.js.map +1 -1
  58. package/dist/components/ds-conversation-list-section.js +1 -1
  59. package/dist/components/ds-conversation-list.js +1 -1
  60. package/dist/components/ds-conversation-list.js.map +1 -1
  61. package/dist/components/ds-divider.js +1 -1
  62. package/dist/components/ds-empty-state.js +1 -1
  63. package/dist/components/ds-field.js +1 -1
  64. package/dist/components/ds-field.js.map +1 -1
  65. package/dist/components/ds-input.js +1 -1
  66. package/dist/components/ds-input.js.map +1 -1
  67. package/dist/components/ds-markdown.js +1 -1
  68. package/dist/components/ds-menu.js +1 -1
  69. package/dist/components/ds-message-bubble.js +1 -1
  70. package/dist/components/ds-message-composer.js +1 -1
  71. package/dist/components/ds-message-composer.js.map +1 -1
  72. package/dist/components/ds-message-scroller.js +1 -1
  73. package/dist/components/ds-message-scroller.js.map +1 -1
  74. package/dist/components/ds-message.js +1 -1
  75. package/dist/components/ds-mobile-bar-nav.js +1 -1
  76. package/dist/components/ds-mobile-bar-nav.js.map +1 -1
  77. package/dist/components/ds-mobile-header.js +1 -1
  78. package/dist/components/ds-mobile-section-switcher.js +1 -1
  79. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  80. package/dist/components/ds-mobile-sheet-nav.js.map +1 -1
  81. package/dist/components/ds-modal.js +1 -1
  82. package/dist/components/ds-modal.js.map +1 -1
  83. package/dist/components/ds-panel-nav.js +1 -1
  84. package/dist/components/ds-panel-nav.js.map +1 -1
  85. package/dist/components/ds-panel-sub-nav.js +1 -1
  86. package/dist/components/ds-panel-tool-header.js +1 -1
  87. package/dist/components/ds-panel-tool-search.js +1 -1
  88. package/dist/components/ds-panel-tool-search.js.map +1 -1
  89. package/dist/components/ds-panel-tools.js +1 -1
  90. package/dist/components/ds-radio.js +1 -1
  91. package/dist/components/ds-radio.js.map +1 -1
  92. package/dist/components/ds-scroll-overlay.js +1 -1
  93. package/dist/components/ds-select-multi.js +1 -1
  94. package/dist/components/ds-select-multi.js.map +1 -1
  95. package/dist/components/ds-select.js +1 -1
  96. package/dist/components/ds-select.js.map +1 -1
  97. package/dist/components/ds-shell-app.js +1 -1
  98. package/dist/components/ds-shell-app.js.map +1 -1
  99. package/dist/components/ds-shell-gradient-picker.js +1 -1
  100. package/dist/components/ds-shell-gradient-swatch.js +1 -1
  101. package/dist/components/ds-shell-page.js +1 -1
  102. package/dist/components/ds-shell-page.js.map +1 -1
  103. package/dist/components/ds-shell-tools.js +1 -1
  104. package/dist/components/ds-shell-tools.js.map +1 -1
  105. package/dist/components/ds-skeleton.js +1 -1
  106. package/dist/components/ds-skeleton.js.map +1 -1
  107. package/dist/components/ds-slider.js +1 -1
  108. package/dist/components/ds-slider.js.map +1 -1
  109. package/dist/components/ds-swatch-picker.js +1 -1
  110. package/dist/components/ds-switch.js +1 -1
  111. package/dist/components/ds-tab-group.js +1 -1
  112. package/dist/components/ds-tag.js +1 -1
  113. package/dist/components/ds-text.js +1 -1
  114. package/dist/components/ds-toast.js +1 -1
  115. package/dist/components/ds-toast.js.map +1 -1
  116. package/dist/components/ds-tooltip-data-viz.js +1 -1
  117. package/dist/components/ds-tooltip.js +1 -1
  118. package/dist/components/ds-typing-indicator.js +1 -1
  119. package/dist/components/p-2foAUsDN.js +2 -0
  120. package/dist/components/p-2foAUsDN.js.map +1 -0
  121. package/dist/components/{p-Ccj5Op6E.js → p-38PfdMkF.js} +2 -2
  122. package/dist/components/p-69lHhJiX.js +2 -0
  123. package/dist/components/p-69lHhJiX.js.map +1 -0
  124. package/dist/components/p-B6NvVdeO.js +2 -0
  125. package/dist/components/p-B6NvVdeO.js.map +1 -0
  126. package/dist/components/p-B6Vuayt6.js +2 -0
  127. package/dist/components/p-B6Vuayt6.js.map +1 -0
  128. package/dist/components/p-B6vE3ujd.js +2 -0
  129. package/dist/components/p-B6vE3ujd.js.map +1 -0
  130. package/dist/components/p-BBePKRHC.js +2 -0
  131. package/dist/components/p-BBePKRHC.js.map +1 -0
  132. package/dist/components/{p-CaRyxTMz.js → p-BFRMwl93.js} +2 -2
  133. package/dist/components/p-BKOlvCGS.js +2 -0
  134. package/dist/components/p-BKOlvCGS.js.map +1 -0
  135. package/dist/components/{p-C7bZ-jiU.js → p-BO5aqZcf.js} +2 -2
  136. package/dist/components/p-BX0BMhgz.js +2 -0
  137. package/dist/components/p-BX0BMhgz.js.map +1 -0
  138. package/dist/components/p-BXaieghV.js +2 -0
  139. package/dist/components/p-BXaieghV.js.map +1 -0
  140. package/dist/components/p-BlHzmszE.js +2 -0
  141. package/dist/components/{p-BkAMkjIR.js.map → p-BlHzmszE.js.map} +1 -1
  142. package/dist/components/p-By_s1wNN.js +2 -0
  143. package/dist/components/p-By_s1wNN.js.map +1 -0
  144. package/dist/components/p-C61yJkfr.js +2 -0
  145. package/dist/components/p-C61yJkfr.js.map +1 -0
  146. package/dist/components/{p-DXLWm4PF.js → p-CNgPwd11.js} +2 -2
  147. package/dist/components/p-CNjOyUQu.js +2 -0
  148. package/dist/components/p-CNjOyUQu.js.map +1 -0
  149. package/dist/components/{p-BwGnhInj.js → p-CPwpgUWT.js} +2 -2
  150. package/dist/components/p-CU2673IJ.js +2 -0
  151. package/dist/components/p-CU2673IJ.js.map +1 -0
  152. package/dist/components/{p-B9bxDfZV.js → p-CsX3ICz7.js} +2 -2
  153. package/dist/components/p-CuwopElg.js +2 -0
  154. package/dist/components/p-CuwopElg.js.map +1 -0
  155. package/dist/components/{p-D-xttdpn.js → p-D0e77tkd.js} +2 -2
  156. package/dist/components/p-D1bNvIpb.js +2 -0
  157. package/dist/components/p-D1bNvIpb.js.map +1 -0
  158. package/dist/components/{p-BwsGYxZx.js → p-D9u1_OEZ.js} +2 -2
  159. package/dist/components/{p-DQDpDYyF.js → p-DB9XJm2c.js} +2 -2
  160. package/dist/components/{p-CnHrJTD5.js → p-DIFUsoM-.js} +2 -2
  161. package/dist/components/p-DhKvqh5G.js +2 -0
  162. package/dist/components/p-DhKvqh5G.js.map +1 -0
  163. package/dist/components/p-DhLmoCe_.js +2 -0
  164. package/dist/components/p-DhLmoCe_.js.map +1 -0
  165. package/dist/components/p-DjbTFy2B.js +2 -0
  166. package/dist/components/p-DjbTFy2B.js.map +1 -0
  167. package/dist/components/{p-CWTih3Gc.js → p-DmAHufd5.js} +2 -2
  168. package/dist/components/p-DzM3SzPz.js +2 -0
  169. package/dist/components/p-DzM3SzPz.js.map +1 -0
  170. package/dist/components/{p-DqubRds2.js → p-G3qIxpQj.js} +2 -2
  171. package/dist/components/p-Re2kPrXm.js +2 -0
  172. package/dist/components/p-Re2kPrXm.js.map +1 -0
  173. package/dist/components/{p-DwX7UmLl.js → p-Utr23NC-.js} +2 -2
  174. package/dist/components/{p-DIoiApa-.js → p-Vdufoj7G.js} +2 -2
  175. package/dist/components/p-huw1oRbt.js +2 -0
  176. package/dist/components/p-huw1oRbt.js.map +1 -0
  177. package/dist/components/p-ukB-dPOK.js +2 -0
  178. package/dist/components/{p-BY0PzkUp.js.map → p-ukB-dPOK.js.map} +1 -1
  179. package/dist/components/p-yhj1lIPx.js +2 -0
  180. package/dist/docs/components.json +760 -87
  181. package/dist/lib/components/Menu/menu-position.d.ts +6 -6
  182. package/dist/lib/toast/toast-types.d.ts +3 -3
  183. package/dist/lib/utils/anchored-position.d.ts +34 -0
  184. package/dist/lib/utils/choice-popup-alignment.d.ts +2 -2
  185. package/dist/lib/utils/control-text.d.ts +3 -1
  186. package/dist/lib/utils/index.d.ts +3 -1
  187. package/dist/lib/utils/index.js +39 -0
  188. package/dist/lib/utils/index.js.map +3 -3
  189. package/dist/lib/utils/metric-change.d.ts +52 -0
  190. package/dist/lib/utils/token-defaults.d.ts +3 -0
  191. package/dist/mcp-data/registry/agent-activity.json +1 -1
  192. package/dist/mcp-data/registry/agent-response.json +1 -1
  193. package/dist/mcp-data/registry/agent-source-list.json +1 -1
  194. package/dist/mcp-data/registry/agent-tool-call.json +1 -1
  195. package/dist/mcp-data/registry/attachment-list.json +1 -1
  196. package/dist/mcp-data/registry/avatar.json +1 -1
  197. package/dist/mcp-data/registry/badge.json +1 -1
  198. package/dist/mcp-data/registry/bar-nav.json +3 -3
  199. package/dist/mcp-data/registry/bar-title.json +3 -3
  200. package/dist/mcp-data/registry/bar-workflow.json +3 -3
  201. package/dist/mcp-data/registry/breadcrumb.json +1 -1
  202. package/dist/mcp-data/registry/button-filled.json +125 -8
  203. package/dist/mcp-data/registry/button-unfilled.json +50 -5
  204. package/dist/mcp-data/registry/card-data-viz-bar.json +5 -4
  205. package/dist/mcp-data/registry/card-data-viz-donut.json +5 -3
  206. package/dist/mcp-data/registry/card-data-viz-line.json +5 -4
  207. package/dist/mcp-data/registry/card-overview.json +317 -0
  208. package/dist/mcp-data/registry/card-setting.json +3 -3
  209. package/dist/mcp-data/registry/card-shell-data-viz.json +3 -3
  210. package/dist/mcp-data/registry/chart-bar-stacked.json +14 -9
  211. package/dist/mcp-data/registry/chart-bar.json +15 -10
  212. package/dist/mcp-data/registry/chart-donut.json +3 -2
  213. package/dist/mcp-data/registry/chart-legend.json +1 -1
  214. package/dist/mcp-data/registry/chart-line.json +15 -10
  215. package/dist/mcp-data/registry/checkbox.json +10 -10
  216. package/dist/mcp-data/registry/chip.json +1 -1
  217. package/dist/mcp-data/registry/code-block.json +1 -1
  218. package/dist/mcp-data/registry/conversation-list-item.json +3 -3
  219. package/dist/mcp-data/registry/conversation-list-section.json +1 -1
  220. package/dist/mcp-data/registry/conversation-list.json +3 -3
  221. package/dist/mcp-data/registry/divider.json +1 -1
  222. package/dist/mcp-data/registry/empty-state.json +6 -2
  223. package/dist/mcp-data/registry/field.json +4 -3
  224. package/dist/mcp-data/registry/icon.json +1 -1
  225. package/dist/mcp-data/registry/input.json +9 -8
  226. package/dist/mcp-data/registry/loader.json +1 -1
  227. package/dist/mcp-data/registry/markdown.json +1 -1
  228. package/dist/mcp-data/registry/menu.json +24 -5
  229. package/dist/mcp-data/registry/message-bubble.json +1 -1
  230. package/dist/mcp-data/registry/message-composer.json +1 -1
  231. package/dist/mcp-data/registry/message-scroller.json +3 -3
  232. package/dist/mcp-data/registry/message.json +1 -1
  233. package/dist/mcp-data/registry/mobile-bar-nav.json +4 -4
  234. package/dist/mcp-data/registry/mobile-header.json +3 -3
  235. package/dist/mcp-data/registry/mobile-section-switcher.json +1 -1
  236. package/dist/mcp-data/registry/mobile-sheet-nav.json +6 -4
  237. package/dist/mcp-data/registry/modal.json +3 -3
  238. package/dist/mcp-data/registry/panel-nav.json +3 -3
  239. package/dist/mcp-data/registry/panel-sub-nav.json +1 -1
  240. package/dist/mcp-data/registry/panel-tool-header.json +3 -3
  241. package/dist/mcp-data/registry/panel-tool-search.json +3 -3
  242. package/dist/mcp-data/registry/panel-tools.json +4 -3
  243. package/dist/mcp-data/registry/radio.json +10 -10
  244. package/dist/mcp-data/registry/registry.json +288 -49
  245. package/dist/mcp-data/registry/scroll-overlay.json +1 -1
  246. package/dist/mcp-data/registry/select-multi.json +10 -8
  247. package/dist/mcp-data/registry/select.json +10 -8
  248. package/dist/mcp-data/registry/shell-app.json +3 -2
  249. package/dist/mcp-data/registry/shell-gradient-picker.json +1 -1
  250. package/dist/mcp-data/registry/shell-gradient-swatch.json +1 -1
  251. package/dist/mcp-data/registry/shell-page.json +5 -4
  252. package/dist/mcp-data/registry/shell-tools.json +2 -2
  253. package/dist/mcp-data/registry/skeleton.json +3 -3
  254. package/dist/mcp-data/registry/slider.json +4 -3
  255. package/dist/mcp-data/registry/swatch-picker.json +1 -1
  256. package/dist/mcp-data/registry/switch.json +8 -8
  257. package/dist/mcp-data/registry/tab-group.json +1 -1
  258. package/dist/mcp-data/registry/tag.json +1 -1
  259. package/dist/mcp-data/registry/text.json +1 -1
  260. package/dist/mcp-data/registry/toast.json +2 -2
  261. package/dist/mcp-data/registry/tooltip-data-viz.json +3 -1
  262. package/dist/mcp-data/registry/tooltip.json +3 -8
  263. package/dist/mcp-data/registry/typing-indicator.json +1 -1
  264. package/dist/react/components.d.ts +1 -0
  265. package/dist/react/components.js +1 -0
  266. package/dist/react/ds-card-overview.d.ts +12 -0
  267. package/dist/react/ds-card-overview.js +12 -0
  268. package/dist/styles/control-elevation.css +38 -2
  269. package/dist/types/components/ButtonFilled/ButtonFilled.d.ts +33 -1
  270. package/dist/types/components/ButtonUnfilled/ButtonUnfilled.d.ts +20 -0
  271. package/dist/types/components/CardOverview/CardOverview.d.ts +59 -0
  272. package/dist/types/components/CardOverview/card-overview-types.d.ts +32 -0
  273. package/dist/types/components/CardOverview/index.d.ts +2 -0
  274. package/dist/types/components/ChartBar/ChartBar.d.ts +11 -0
  275. package/dist/types/components/ChartBarStacked/ChartBarStacked.d.ts +11 -0
  276. package/dist/types/components/ChartLine/ChartLine.d.ts +11 -0
  277. package/dist/types/components/Checkbox/Checkbox.d.ts +1 -1
  278. package/dist/types/components/Input/Input.d.ts +1 -1
  279. package/dist/types/components/Menu/Menu.d.ts +11 -5
  280. package/dist/types/components/Menu/menu-position.d.ts +6 -6
  281. package/dist/types/components/MobileSheetNav/MobileSheetNav.d.ts +0 -1
  282. package/dist/types/components/Radio/Radio.d.ts +1 -1
  283. package/dist/types/components/Select/Select.d.ts +6 -23
  284. package/dist/types/components/SelectMulti/SelectMulti.d.ts +5 -20
  285. package/dist/types/components/ShellPage/ShellPage.d.ts +1 -0
  286. package/dist/types/components/ShellTools/ShellTools.d.ts +1 -0
  287. package/dist/types/components/Switch/Switch.d.ts +1 -1
  288. package/dist/types/components/Tooltip/Tooltip.d.ts +1 -4
  289. package/dist/types/components.d.ts +225 -4
  290. package/dist/types/toast/toast-types.d.ts +3 -3
  291. package/dist/types/utils/anchored-position-controller.d.ts +96 -0
  292. package/dist/types/utils/anchored-position.d.ts +35 -0
  293. package/dist/types/utils/cartesian-chart-layout.d.ts +13 -0
  294. package/dist/types/utils/chart-viewport-controller.d.ts +21 -0
  295. package/dist/types/utils/choice-list-parts.d.ts +4 -0
  296. package/dist/types/utils/choice-popup-alignment.d.ts +2 -2
  297. package/dist/types/utils/control-press.d.ts +9 -0
  298. package/dist/types/utils/control-text.d.ts +3 -1
  299. package/dist/types/utils/index.d.ts +3 -1
  300. package/dist/types/utils/metric-change.d.ts +53 -0
  301. package/dist/types/utils/select-controller.d.ts +67 -0
  302. package/dist/types/utils/token-defaults.d.ts +3 -0
  303. package/package.json +3 -3
  304. package/dist/components/p-B8C_yfLQ.js +0 -2
  305. package/dist/components/p-B8C_yfLQ.js.map +0 -1
  306. package/dist/components/p-B9xVWER6.js +0 -2
  307. package/dist/components/p-B9xVWER6.js.map +0 -1
  308. package/dist/components/p-BLea0TrP.js +0 -2
  309. package/dist/components/p-BLea0TrP.js.map +0 -1
  310. package/dist/components/p-BY0PzkUp.js +0 -2
  311. package/dist/components/p-BbgPGF2a.js +0 -2
  312. package/dist/components/p-BbgPGF2a.js.map +0 -1
  313. package/dist/components/p-BhC1YyId.js +0 -2
  314. package/dist/components/p-BhC1YyId.js.map +0 -1
  315. package/dist/components/p-BkAMkjIR.js +0 -2
  316. package/dist/components/p-C2ym_Ich.js +0 -2
  317. package/dist/components/p-C_ewSXTT.js +0 -2
  318. package/dist/components/p-C_ewSXTT.js.map +0 -1
  319. package/dist/components/p-CiqnkENu.js +0 -2
  320. package/dist/components/p-CiqnkENu.js.map +0 -1
  321. package/dist/components/p-Cx-ywr1e.js +0 -2
  322. package/dist/components/p-Cx-ywr1e.js.map +0 -1
  323. package/dist/components/p-CydY-v7X.js +0 -2
  324. package/dist/components/p-CydY-v7X.js.map +0 -1
  325. package/dist/components/p-DPME1wUJ.js +0 -2
  326. package/dist/components/p-DPME1wUJ.js.map +0 -1
  327. package/dist/components/p-DSa0Hnd3.js +0 -2
  328. package/dist/components/p-DSa0Hnd3.js.map +0 -1
  329. package/dist/components/p-DUlqUNbE.js +0 -2
  330. package/dist/components/p-DUlqUNbE.js.map +0 -1
  331. package/dist/components/p-DWdRSOBV.js +0 -2
  332. package/dist/components/p-DWdRSOBV.js.map +0 -1
  333. package/dist/components/p-DYcC5-R9.js +0 -2
  334. package/dist/components/p-DYcC5-R9.js.map +0 -1
  335. package/dist/components/p-DbpfpeQT.js +0 -2
  336. package/dist/components/p-DbpfpeQT.js.map +0 -1
  337. package/dist/components/p-Dg3xLna0.js +0 -2
  338. package/dist/components/p-Dg3xLna0.js.map +0 -1
  339. package/dist/components/p-DuFm-ieS.js +0 -2
  340. package/dist/components/p-DuFm-ieS.js.map +0 -1
  341. package/dist/components/p-uQhuDEVt.js +0 -2
  342. package/dist/components/p-uQhuDEVt.js.map +0 -1
  343. package/dist/lib/utils/anchored-popup.d.ts +0 -23
  344. package/dist/types/components/Tooltip/tooltip-position.d.ts +0 -21
  345. package/dist/types/utils/anchored-popup.d.ts +0 -24
  346. /package/dist/components/{p-Ccj5Op6E.js.map → p-38PfdMkF.js.map} +0 -0
  347. /package/dist/components/{p-CaRyxTMz.js.map → p-BFRMwl93.js.map} +0 -0
  348. /package/dist/components/{p-C7bZ-jiU.js.map → p-BO5aqZcf.js.map} +0 -0
  349. /package/dist/components/{p-DXLWm4PF.js.map → p-CNgPwd11.js.map} +0 -0
  350. /package/dist/components/{p-BwGnhInj.js.map → p-CPwpgUWT.js.map} +0 -0
  351. /package/dist/components/{p-B9bxDfZV.js.map → p-CsX3ICz7.js.map} +0 -0
  352. /package/dist/components/{p-D-xttdpn.js.map → p-D0e77tkd.js.map} +0 -0
  353. /package/dist/components/{p-BwsGYxZx.js.map → p-D9u1_OEZ.js.map} +0 -0
  354. /package/dist/components/{p-DQDpDYyF.js.map → p-DB9XJm2c.js.map} +0 -0
  355. /package/dist/components/{p-CnHrJTD5.js.map → p-DIFUsoM-.js.map} +0 -0
  356. /package/dist/components/{p-CWTih3Gc.js.map → p-DmAHufd5.js.map} +0 -0
  357. /package/dist/components/{p-DqubRds2.js.map → p-G3qIxpQj.js.map} +0 -0
  358. /package/dist/components/{p-DwX7UmLl.js.map → p-Utr23NC-.js.map} +0 -0
  359. /package/dist/components/{p-DIoiApa-.js.map → p-Vdufoj7G.js.map} +0 -0
  360. /package/dist/components/{p-C2ym_Ich.js.map → p-yhj1lIPx.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["resolvePromiseValue","value","input","resolved","description","ToastManagerImpl","constructor","this","records","listeners","Set","nextId","add","options","id","existingIndex","findIndex","record","title","trim","console","warn","current","updated","priority","transitionStatus","closeReason","undefined","updateKey","timerKey","filter","_","index","emit","update","updates","restartsTimer","Object","prototype","hasOwnProperty","call","type","map","recordIndex","close","reason","closing","onClose","toast","closeAll","promise","promiseValue","loading","timeout","success","error","failure","subscribe","listener","getSnapshot","delete","activate","find","candidate","remove","context","notifyRemove","onRemove","snapshot","createToastManager","defaultManagerKey","Symbol","for","globalScope","globalThis","existingManager","toastManager","toastCss","SWIPE_THRESHOLD","SWIPE_REVERSE_CANCEL_THRESHOLD","GLOBAL_STACK_HOVER","INTERACTIVE_SWIPE_SELECTOR","attachedManagers","WeakMap","connectedToastRegions","activeToastRegion","toastInstanceCounter","Toast","__stencil_proxyCustomElement","HTMLElement","registerHost","manager","defaultToastManager","limit","TOKEN_DEFAULTS","animationDelayLong2","label","closeLabel","avoidMobileShellBar","swipeDirections","expanded","keyboardActive","swipe","layoutVersion","instanceId","domIds","Map","timers","closeWatchdogs","closeFrames","closeEvents","activationFrames","pauseReasons","hoveredIds","heights","measuredUpdateKeys","anchoredPositions","dismissedSwipeDirections","observedElements","pendingRemovals","unsubscribe","attachedManager","previousFocus","resizeObserver","mutationObserver","layoutFrame","activeSwipe","nextDomId","connected","pendingHoverLeave","handleWindowBlur","pauseTimers","handleWindowFocus","resumeTimers","handleVisibilityChange","document","hidden","handleFocusIn","active","activeElement","matches","handleFocusOut","event","next","relatedTarget","Node","el","contains","size","handleDocumentKeyDown","key","eligible","Array","from","region","activeRecords","length","target","preventDefault","regionElement","focus","handleRegionKeyDown","positioner","closest","dataset","shiftKey","restorePreviousFocus","handleWindowResize","clear","scheduleLayout","requestAnimationFrame","measureLayout","connectedCallback","connect","componentDidLoad","ResizeObserver","MutationObserver","observe","body","childList","subtree","attachManager","window","addEventListener","componentDidRender","syncObservedElements","flushPendingRemovals","disconnectedCallback","detachManager","resetManagerState","disconnect","cancelAnimationFrame","removeEventListener","remaining","onManagerChange","onTimeoutChange","timer","values","handle","clearTimeout","syncTimers","attached","get","set","syncLifecycle","clearAllTimers","frame","querySelectorAll","anchor","resolveAnchor","element","has","unobserve","pending","splice","dsToastRemove","recordIds","hasEndingRecords","some","watchdog","keys","ensureDomId","clearToastTimer","beginRemoval","closeFrame","activeIds","duration","resolveToastTimeout","existing","startedAt","isPaused","startToastTimer","Math","max","resolveCssTimeMs","Date","now","setTimeout","wasPaused","dsToastClose","moveFocusAfterClose","resolveMotionTimeMs","motionShort3","animationDurationShort3","queueMicrotask","completeRemoval","push","handleAnimationComplete","bindAnimationCancel","handlePointerEnter","handlePointerLeave","querySelector","positionerElement","control","setFocus","handleAction","detail","originalEvent","dsToastAction","action","onAction","data","handlePointerDown","button","surface","currentTarget","setPointerCapture","pointerId","pointerType","startX","clientX","startY","clientY","maxDistance","cancelled","axis","x","y","handlePointerMove","dx","dy","abs","horizontal","direction","allowed","includes","rawDistance","distance","sqrt","signed","cancelSwipe","handlePointerUp","shouldDismiss","wasTouch","handlePointerCancel","touchAction","vertical","measureNaturalHeight","expandedWidth","previousWidth","style","width","previousTransition","transition","previousHeight","height","getBoundingClientRect","changed","needsHeightMeasurement","rect","sideOffset","resolveCssLengthPx","space050","alignOffset","position","computeTooltipPosition","anchorRect","popupWidth","popupHeight","side","align","sideOffsetPx","alignOffsetPx","viewportPadPx","space200","viewportWidth","innerWidth","viewportHeight","innerHeight","resolvedSide","getElementById","globalLayout","globalRecords","offset","visibleIndex","gap","layouts","forEach","domIndex","limited","renderToast","layout","domId","titleId","descriptionId","swipeDirection","anchored","anchoredPosition","hiddenHighPriority","focusTabIndex","toastHeight","h","ref","class","String","inert","zIndex","left","top","onAnimationEnd","role","onPointerDown","onPointerMove","onPointerUp","onPointerCancel","onPointerEnter","onPointerLeave","as","variant","color","textId","ariaLabel","hasBorder","onDsClick","icon","activeFill","render","globalLayouts","anchoredRecords","highPriority","Host","tabIndex","onFocusin","onFocusout","onKeyDown","Boolean","join"],"sources":["src/wc/toast/toast-manager.ts","src/wc/components/Toast/Toast.css?tag=ds-toast&encapsulation=scoped","src/wc/components/Toast/Toast.tsx"],"sourcesContent":["import type {\n ToastCloseContext,\n ToastCloseReason,\n ToastListener,\n ToastManager,\n ToastOptions,\n ToastPromiseOptions,\n ToastPromiseValue,\n ToastRecord,\n} from './toast-types';\n\nfunction resolvePromiseValue<Value, Data>(\n value:\n | ToastPromiseValue<Data>\n | ((input: Value) => ToastPromiseValue<Data>),\n input: Value,\n): ToastOptions<Data> {\n const resolved = typeof value === 'function' ? value(input) : value;\n return typeof resolved === 'string' ? { description: resolved } : resolved;\n}\n\nclass ToastManagerImpl<Data = unknown> implements ToastManager<Data> {\n private records: ToastRecord<Data>[] = [];\n private listeners = new Set<ToastListener<Data>>();\n private nextId = 0;\n\n add(options: ToastOptions<Data>): string {\n const id = options.id || `ds-toast-${++this.nextId}`;\n const existingIndex = this.records.findIndex(record => record.id === id);\n\n if (!options.title?.trim() && !options.description?.trim()) {\n console.warn(`[ds-toast] Toast \"${id}\" should provide a title or description.`);\n }\n\n if (existingIndex >= 0) {\n const current = this.records[existingIndex];\n const updated: ToastRecord<Data> = {\n ...current,\n ...options,\n id,\n priority: options.priority ?? current.priority,\n transitionStatus: 'active',\n closeReason: undefined,\n updateKey: current.updateKey + 1,\n timerKey: current.timerKey + 1,\n };\n this.records = [\n updated,\n ...this.records.filter((_, index) => index !== existingIndex),\n ];\n this.emit();\n return id;\n }\n\n const record: ToastRecord<Data> = {\n ...options,\n id,\n priority: options.priority ?? 'low',\n transitionStatus: 'starting',\n updateKey: 0,\n timerKey: 0,\n };\n this.records = [record, ...this.records];\n this.emit();\n return id;\n }\n\n update(id: string, updates: Partial<ToastOptions<Data>>): void {\n const index = this.records.findIndex(record => record.id === id);\n if (index < 0) return;\n const current = this.records[index];\n const restartsTimer =\n Object.prototype.hasOwnProperty.call(updates, 'timeout') ||\n (current.type === 'loading' && updates.type !== undefined && updates.type !== 'loading');\n const updated: ToastRecord<Data> = {\n ...current,\n ...updates,\n id,\n priority: updates.priority ?? current.priority,\n updateKey: current.updateKey + 1,\n timerKey: restartsTimer ? current.timerKey + 1 : current.timerKey,\n };\n this.records = this.records.map((record, recordIndex) =>\n recordIndex === index ? updated : record\n );\n this.emit();\n }\n\n close(id: string, reason: ToastCloseReason = 'programmatic'): void {\n const index = this.records.findIndex(record => record.id === id);\n if (index < 0 || this.records[index].transitionStatus === 'ending') return;\n\n const closing: ToastRecord<Data> = {\n ...this.records[index],\n transitionStatus: 'ending',\n closeReason: reason,\n };\n this.records = this.records.map((record, recordIndex) =>\n recordIndex === index ? closing : record\n );\n this.emit();\n closing.onClose?.({ id, reason, toast: closing });\n }\n\n closeAll(reason: ToastCloseReason = 'programmatic'): void {\n for (const record of [...this.records]) this.close(record.id, reason);\n }\n\n async promise<Value>(\n promiseValue: PromiseLike<Value>,\n options: ToastPromiseOptions<Value, Data>,\n ): Promise<Value> {\n const loading = resolvePromiseValue(options.loading, undefined as Value);\n const id = this.add({\n ...loading,\n type: loading.type ?? 'loading',\n timeout: 0,\n });\n\n try {\n const value = await promiseValue;\n const success = resolvePromiseValue(options.success, value);\n this.update(id, {\n ...success,\n type: success.type ?? 'success',\n timeout: success.timeout,\n });\n return value;\n } catch (error) {\n const failure = resolvePromiseValue(options.error, error);\n this.update(id, {\n ...failure,\n type: failure.type ?? 'error',\n timeout: failure.timeout,\n });\n throw error;\n }\n }\n\n subscribe(listener: ToastListener<Data>): () => void {\n this.listeners.add(listener);\n listener(this.getSnapshot());\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n getSnapshot(): readonly ToastRecord<Data>[] {\n return this.records.map(record => ({ ...record }));\n }\n\n activate(id: string): void {\n const record = this.records.find(candidate => candidate.id === id);\n if (!record || record.transitionStatus !== 'starting') return;\n this.records = this.records.map(candidate =>\n candidate.id === id\n ? { ...candidate, transitionStatus: 'active' }\n : candidate\n );\n this.emit();\n }\n\n remove(id: string): ToastCloseContext<Data> | null {\n const record = this.records.find(candidate => candidate.id === id);\n if (!record || record.transitionStatus !== 'ending') return null;\n const reason = record.closeReason ?? 'programmatic';\n this.records = this.records.filter(candidate => candidate.id !== id);\n this.emit();\n const context: ToastCloseContext<Data> = { id, reason, toast: record };\n return context;\n }\n\n notifyRemove(context: ToastCloseContext<Data>): void {\n const { toast } = context;\n toast.onRemove?.(context);\n }\n\n private emit(): void {\n const snapshot = this.getSnapshot();\n for (const listener of this.listeners) listener(snapshot);\n }\n}\n\nexport function createToastManager<Data = unknown>(): ToastManager<Data> {\n return new ToastManagerImpl<Data>();\n}\n\nconst defaultManagerKey = Symbol.for('@ds-mo/ui/default-toast-manager');\nconst globalScope = globalThis as typeof globalThis & Record<PropertyKey, unknown>;\nconst existingManager = globalScope[defaultManagerKey] as ToastManager | undefined;\n\nexport const toastManager: ToastManager =\n existingManager ?? createToastManager();\n\nif (!existingManager) globalScope[defaultManagerKey] = toastManager;\n","@import '../../utils/visually-hidden.css';\n\n:host {\n display: contents;\n}\n\n.toast-region {\n position: fixed;\n inset: 0;\n z-index: var(--dimension-z-index-floating);\n pointer-events: none;\n outline: none;\n}\n\n.toast-viewport {\n position: absolute;\n right: var(--dimension-space-200);\n bottom: var(--dimension-space-200);\n display: grid;\n width: min(\n var(--dimension-card-width-sm),\n calc(100vw - 2 * var(--dimension-space-200))\n );\n}\n\n@media (max-width: 767px) {\n :host([avoid-mobile-shell-bar]) .toast-viewport {\n bottom: calc(\n var(--dimension-space-200) +\n var(--dimension-stroke-width-012) +\n var(--dimension-space-100) +\n var(--dimension-size-500) +\n max(var(--dimension-space-100), env(safe-area-inset-bottom))\n );\n }\n}\n\n.toast-positioner {\n grid-area: 1 / 1;\n align-self: end;\n justify-self: center;\n width: 100%;\n pointer-events: auto;\n transform: translateY(\n calc(-1 * var(--toast-index) * var(--dimension-space-100))\n );\n transition:\n transform var(--effect-motion-short-3),\n width var(--effect-motion-short-3);\n}\n\n.toast-viewport:not([data-expanded]) .toast-positioner {\n width: calc(\n 100% - 2 * var(--toast-index) * var(--dimension-space-100)\n );\n}\n\n.toast-viewport[data-expanded] .toast-positioner {\n transform: translateY(calc(-1 * var(--toast-offset-y)));\n}\n\n.toast-positioner[data-limited] {\n visibility: hidden;\n pointer-events: none;\n}\n\n.toast-positioner--anchored {\n position: fixed;\n width: min(\n var(--dimension-card-width-sm),\n calc(100vw - 2 * var(--dimension-space-200))\n );\n transform: none;\n}\n\n.toast-positioner--anchored[data-positioned='false'] {\n visibility: hidden;\n}\n\n.toast-surface {\n position: relative;\n display: block;\n box-sizing: border-box;\n width: 100%;\n height: var(--toast-height, auto);\n padding: var(--dimension-space-200);\n overflow: hidden;\n color: var(--color-foreground-primary);\n background-color: var(--color-background-primary);\n border-radius: var(--dimension-radius-050);\n box-shadow: var(--effect-elevation-elevated-floating);\n transform: translate(\n var(--toast-swipe-movement-x),\n var(--toast-swipe-movement-y)\n );\n animation: toast-enter var(--effect-motion-short-2) both;\n}\n\n.toast-positioner--ending .toast-surface {\n animation: toast-exit var(--effect-motion-short-3) both;\n}\n\n.toast-surface--swiping {\n transition: none;\n user-select: none;\n}\n\n.toast-content {\n display: flex;\n flex-direction: column;\n min-width: 0;\n padding-inline-end: var(--dimension-size-500);\n transition: opacity var(--effect-motion-short-3);\n}\n\n.toast-copy {\n display: flex;\n flex-direction: column;\n min-width: 0;\n min-height: var(--typography-lineheight-md);\n margin-block: calc(-1 * var(--dimension-space-025));\n gap: var(--dimension-space-050);\n}\n\n.toast-title,\n.toast-description {\n min-width: 0;\n}\n\n.toast-action {\n align-self: start;\n margin-top: calc(\n var(--dimension-space-200) + var(--dimension-space-025)\n );\n}\n\n.toast-close {\n position: absolute;\n top: var(--dimension-space-100);\n right: var(--dimension-space-100);\n transition: opacity var(--effect-motion-short-3);\n}\n\n.toast-viewport:not([data-expanded]) .toast-positioner[data-behind] .toast-content,\n.toast-viewport:not([data-expanded]) .toast-positioner[data-behind] .toast-close {\n opacity: 0;\n}\n\n\n@keyframes toast-enter {\n from {\n opacity: 0;\n transform: translateY(var(--dimension-space-100));\n }\n\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes toast-exit {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .toast-positioner,\n .toast-surface,\n .toast-content,\n .toast-close,\n .toast-positioner--ending .toast-surface {\n transition: none;\n animation: none;\n }\n\n .toast-positioner--ending .toast-surface {\n opacity: 0;\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport {\n resolveCssLengthPx,\n resolveCssTimeMs,\n resolveMotionTimeMs,\n TOKEN_DEFAULTS,\n} from '../../utils';\nimport {\n toastManager as defaultToastManager,\n type ToastActionEventDetail,\n type ToastCloseContext,\n type ToastCloseEventDetail,\n type ToastEventDetail,\n type ToastManager,\n type ToastRecord,\n type ToastSwipeDirection,\n} from '../../toast';\nimport { computeTooltipPosition } from '../Tooltip/tooltip-position';\n\ninterface ToastTimer {\n timerKey: number;\n remaining: number;\n startedAt: number;\n handle: ReturnType<typeof setTimeout> | null;\n}\n\ninterface SwipeState {\n id: string;\n x: number;\n y: number;\n direction?: ToastSwipeDirection;\n}\n\ninterface AnchoredPosition {\n x: number;\n y: number;\n side: 'top' | 'right' | 'bottom' | 'left';\n}\n\ninterface ActiveSwipe {\n id: string;\n pointerId: number;\n pointerType: string;\n startX: number;\n startY: number;\n maxDistance: number;\n cancelled: boolean;\n axis: 'x' | 'y' | null;\n}\n\nconst SWIPE_THRESHOLD = 40;\nconst SWIPE_REVERSE_CANCEL_THRESHOLD = 10;\nconst GLOBAL_STACK_HOVER = '__global-stack__';\nconst INTERACTIVE_SWIPE_SELECTOR =\n 'button,a,input,textarea,select,[role=\"button\"],[data-ds-toast-swipe-ignore]';\n\nconst attachedManagers = new WeakMap<ToastManager, Toast>();\nconst connectedToastRegions = new Set<Toast>();\nlet activeToastRegion: Toast | null = null;\nlet toastInstanceCounter = 0;\n\n@Component({\n tag: 'ds-toast',\n styleUrl: 'Toast.css',\n scoped: true,\n})\nexport class Toast {\n @Element() el!: HTMLElement;\n\n /** Manager that supplies toast records. Assign as a JavaScript property. */\n @Prop() manager: ToastManager = defaultToastManager;\n /** Maximum visible global-stack records. Limited records remain mounted and inert. */\n @Prop() limit: number = 3;\n /** Default auto-dismiss delay. Use 0 for persistent records. */\n @Prop() timeout: number | string = TOKEN_DEFAULTS.animationDelayLong2;\n /** Accessible label for the notification region. */\n @Prop() label: string = 'Notifications';\n /** Localized accessible label for every toast close action. */\n @Prop() closeLabel: string = 'Close notification';\n /** Keep the global stack 16px above the persistent mobile shell bar below 768px. */\n @Prop({ attribute: 'avoid-mobile-shell-bar', reflect: true })\n avoidMobileShellBar: boolean = false;\n /** Allowed swipe-to-dismiss directions. Assign as a JavaScript property. */\n @Prop() swipeDirections: ToastSwipeDirection[] = ['down', 'right'];\n\n @State() private records: readonly ToastRecord[] = [];\n @State() private expanded = false;\n @State() private keyboardActive = false;\n @State() private swipe: SwipeState | null = null;\n @State() private layoutVersion = 0;\n\n @Event() dsToastClose!: EventEmitter<ToastCloseEventDetail>;\n @Event() dsToastRemove!: EventEmitter<ToastEventDetail>;\n @Event() dsToastAction!: EventEmitter<ToastActionEventDetail>;\n\n private readonly instanceId = ++toastInstanceCounter;\n private readonly domIds = new Map<string, number>();\n private readonly timers = new Map<string, ToastTimer>();\n private readonly closeWatchdogs = new Map<string, ReturnType<typeof setTimeout>>();\n private readonly closeFrames = new Map<string, number>();\n private readonly closeEvents = new Set<string>();\n private readonly activationFrames = new Map<string, number>();\n private readonly pauseReasons = new Set<string>();\n private readonly hoveredIds = new Set<string>();\n private readonly heights = new Map<string, number>();\n private readonly measuredUpdateKeys = new Map<string, number>();\n private readonly anchoredPositions = new Map<string, AnchoredPosition>();\n private readonly dismissedSwipeDirections = new Map<string, ToastSwipeDirection>();\n private readonly observedElements = new Set<Element>();\n private readonly pendingRemovals: Array<{\n manager: ToastManager;\n context: ToastCloseContext;\n }> = [];\n\n private unsubscribe: (() => void) | null = null;\n private attachedManager: ToastManager | null = null;\n private previousFocus: HTMLElement | null = null;\n private resizeObserver: ResizeObserver | null = null;\n private mutationObserver: MutationObserver | null = null;\n private layoutFrame: number | null = null;\n private activeSwipe: ActiveSwipe | null = null;\n private nextDomId = 0;\n private connected = false;\n private pendingHoverLeave = false;\n\n connectedCallback() {\n this.connect();\n }\n\n componentDidLoad() {\n this.connect();\n }\n\n private connect() {\n if (this.connected) return;\n this.connected = true;\n this.resizeObserver ??= new ResizeObserver(() => this.scheduleLayout());\n this.mutationObserver ??= new MutationObserver(() => this.scheduleLayout());\n this.mutationObserver.observe(document.body, { childList: true, subtree: true });\n if (!this.unsubscribe) this.attachManager(this.manager);\n window.addEventListener('blur', this.handleWindowBlur);\n window.addEventListener('focus', this.handleWindowFocus);\n window.addEventListener('resize', this.handleWindowResize);\n window.addEventListener('scroll', this.scheduleLayout, true);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n document.addEventListener('visibilitychange', this.handleVisibilityChange);\n connectedToastRegions.add(this);\n // eslint-disable-next-line @typescript-eslint/no-this-alias -- module coordinator tracks the active connected viewport\n if (!activeToastRegion) activeToastRegion = this;\n }\n\n componentDidRender() {\n this.syncObservedElements();\n this.flushPendingRemovals();\n this.scheduleLayout();\n }\n\n disconnectedCallback() {\n this.connected = false;\n this.flushPendingRemovals();\n this.detachManager();\n this.resetManagerState();\n this.resizeObserver?.disconnect();\n this.resizeObserver = null;\n this.mutationObserver?.disconnect();\n this.mutationObserver = null;\n this.observedElements.clear();\n if (this.layoutFrame !== null) cancelAnimationFrame(this.layoutFrame);\n this.layoutFrame = null;\n window.removeEventListener('blur', this.handleWindowBlur);\n window.removeEventListener('focus', this.handleWindowFocus);\n window.removeEventListener('resize', this.handleWindowResize);\n window.removeEventListener('scroll', this.scheduleLayout, true);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n document.removeEventListener('visibilitychange', this.handleVisibilityChange);\n connectedToastRegions.delete(this);\n if (activeToastRegion === this) {\n const remaining = Array.from(connectedToastRegions);\n activeToastRegion = remaining[remaining.length - 1] ?? null;\n }\n }\n\n @Watch('manager')\n onManagerChange(next: ToastManager) {\n this.detachManager();\n this.resetManagerState();\n if (this.connected) this.attachManager(next);\n }\n\n @Watch('timeout')\n onTimeoutChange() {\n for (const timer of this.timers.values()) {\n if (timer.handle) clearTimeout(timer.handle);\n }\n this.timers.clear();\n this.syncTimers();\n }\n\n private attachManager(manager: ToastManager) {\n const attached = attachedManagers.get(manager);\n if (attached && attached !== this) {\n console.warn('[ds-toast] A manager can control only one connected ds-toast instance.');\n return;\n }\n attachedManagers.set(manager, this);\n this.attachedManager = manager;\n this.unsubscribe = manager.subscribe(records => {\n this.records = records;\n this.syncLifecycle(records);\n this.scheduleLayout();\n });\n }\n\n private detachManager() {\n this.unsubscribe?.();\n this.unsubscribe = null;\n if (this.attachedManager && attachedManagers.get(this.attachedManager) === this) {\n attachedManagers.delete(this.attachedManager);\n }\n this.attachedManager = null;\n }\n\n private resetManagerState() {\n this.flushPendingRemovals();\n if (this.el.contains(document.activeElement)) this.restorePreviousFocus();\n this.clearAllTimers();\n for (const frame of this.activationFrames.values()) cancelAnimationFrame(frame);\n for (const frame of this.closeFrames.values()) cancelAnimationFrame(frame);\n this.activationFrames.clear();\n this.closeFrames.clear();\n this.closeEvents.clear();\n this.pauseReasons.clear();\n this.hoveredIds.clear();\n this.pendingHoverLeave = false;\n this.heights.clear();\n this.measuredUpdateKeys.clear();\n this.anchoredPositions.clear();\n this.dismissedSwipeDirections.clear();\n this.domIds.clear();\n this.activeSwipe = null;\n this.swipe = null;\n this.expanded = false;\n this.keyboardActive = false;\n this.records = [];\n this.resizeObserver?.disconnect();\n this.observedElements.clear();\n }\n\n private syncObservedElements() {\n const next = new Set<Element>(\n this.el.querySelectorAll<HTMLElement>('.toast-positioner'),\n );\n for (const record of this.records) {\n if (!record.positioner) continue;\n const anchor = this.resolveAnchor(record.positioner.anchor);\n if (anchor) next.add(anchor);\n }\n\n for (const element of this.observedElements) {\n if (!next.has(element)) {\n this.resizeObserver?.unobserve(element);\n this.observedElements.delete(element);\n }\n }\n for (const element of next) {\n if (this.observedElements.has(element)) continue;\n this.resizeObserver?.observe(element);\n this.observedElements.add(element);\n }\n }\n\n private flushPendingRemovals() {\n for (const pending of this.pendingRemovals.splice(0)) {\n pending.manager.notifyRemove(pending.context);\n this.dsToastRemove.emit({\n id: pending.context.id,\n toast: pending.context.toast,\n });\n }\n }\n\n private syncLifecycle(records: readonly ToastRecord[]) {\n const recordIds = new Set(records.map(record => record.id));\n for (const id of this.hoveredIds) {\n if (id !== GLOBAL_STACK_HOVER && !recordIds.has(id)) this.hoveredIds.delete(id);\n }\n const hasEndingRecords = records.some(\n record => record.transitionStatus === 'ending',\n );\n if (this.pendingHoverLeave && !hasEndingRecords && !this.hoveredIds.size) {\n this.pendingHoverLeave = false;\n this.expanded = false;\n this.resumeTimers('hover');\n } else if (!this.hoveredIds.size && !this.pendingHoverLeave) {\n this.resumeTimers('hover');\n }\n\n for (const [id, timer] of this.timers) {\n if (recordIds.has(id)) continue;\n if (timer.handle) clearTimeout(timer.handle);\n this.timers.delete(id);\n }\n\n for (const [id, watchdog] of this.closeWatchdogs) {\n if (recordIds.has(id)) continue;\n clearTimeout(watchdog);\n this.closeWatchdogs.delete(id);\n }\n\n for (const [id, frame] of this.activationFrames) {\n if (recordIds.has(id)) continue;\n cancelAnimationFrame(frame);\n this.activationFrames.delete(id);\n }\n\n for (const [id, frame] of this.closeFrames) {\n if (recordIds.has(id)) continue;\n cancelAnimationFrame(frame);\n this.closeFrames.delete(id);\n }\n\n for (const id of this.domIds.keys()) {\n if (recordIds.has(id)) continue;\n this.closeEvents.delete(id);\n this.domIds.delete(id);\n this.heights.delete(id);\n this.measuredUpdateKeys.delete(id);\n this.anchoredPositions.delete(id);\n this.dismissedSwipeDirections.delete(id);\n }\n\n for (const record of records) {\n this.ensureDomId(record.id);\n if (\n record.transitionStatus === 'starting' &&\n !this.activationFrames.has(record.id)\n ) {\n const manager = this.attachedManager;\n const frame = requestAnimationFrame(() => {\n this.activationFrames.delete(record.id);\n manager?.activate(record.id);\n });\n this.activationFrames.set(record.id, frame);\n }\n\n if (record.transitionStatus === 'ending') {\n this.clearToastTimer(record.id);\n this.beginRemoval(record);\n } else {\n const watchdog = this.closeWatchdogs.get(record.id);\n if (watchdog) clearTimeout(watchdog);\n this.closeWatchdogs.delete(record.id);\n const closeFrame = this.closeFrames.get(record.id);\n if (closeFrame) cancelAnimationFrame(closeFrame);\n this.closeFrames.delete(record.id);\n this.closeEvents.delete(record.id);\n }\n }\n\n this.syncTimers();\n }\n\n private syncTimers() {\n const activeIds = new Set<string>();\n for (const record of this.records) {\n if (record.transitionStatus !== 'active') continue;\n activeIds.add(record.id);\n const duration = this.resolveToastTimeout(record);\n if (duration <= 0) {\n this.clearToastTimer(record.id);\n continue;\n }\n\n const existing = this.timers.get(record.id);\n if (!existing || existing.timerKey !== record.timerKey) {\n this.clearToastTimer(record.id);\n this.timers.set(record.id, {\n timerKey: record.timerKey,\n remaining: duration,\n startedAt: 0,\n handle: null,\n });\n }\n if (!this.isPaused) this.startToastTimer(record.id);\n }\n\n for (const id of this.timers.keys()) {\n if (!activeIds.has(id)) this.clearToastTimer(id);\n }\n }\n\n private resolveToastTimeout(record: ToastRecord): number {\n const value = record.timeout ?? this.timeout;\n if (typeof value === 'number') return Math.max(0, value);\n return resolveCssTimeMs(value, TOKEN_DEFAULTS.animationDelayLong2);\n }\n\n private startToastTimer(id: string) {\n const timer = this.timers.get(id);\n if (!timer || timer.handle || timer.remaining <= 0) return;\n timer.startedAt = Date.now();\n timer.handle = setTimeout(() => {\n timer.handle = null;\n timer.remaining = 0;\n this.manager.close(id, 'timeout');\n }, timer.remaining);\n }\n\n private pauseTimers(reason: string) {\n const wasPaused = this.isPaused;\n this.pauseReasons.add(reason);\n if (wasPaused) return;\n const now = Date.now();\n for (const timer of this.timers.values()) {\n if (!timer.handle) continue;\n clearTimeout(timer.handle);\n timer.handle = null;\n timer.remaining = Math.max(0, timer.remaining - (now - timer.startedAt));\n }\n }\n\n private resumeTimers(reason: string) {\n this.pauseReasons.delete(reason);\n if (this.isPaused) return;\n for (const id of this.timers.keys()) this.startToastTimer(id);\n }\n\n private get isPaused(): boolean {\n return this.pauseReasons.size > 0;\n }\n\n private clearToastTimer(id: string) {\n const timer = this.timers.get(id);\n if (timer?.handle) clearTimeout(timer.handle);\n this.timers.delete(id);\n }\n\n private clearAllTimers() {\n for (const timer of this.timers.values()) {\n if (timer.handle) clearTimeout(timer.handle);\n }\n for (const watchdog of this.closeWatchdogs.values()) clearTimeout(watchdog);\n this.timers.clear();\n this.closeWatchdogs.clear();\n }\n\n private beginRemoval(record: ToastRecord) {\n if (!this.closeEvents.has(record.id)) {\n this.closeEvents.add(record.id);\n this.dsToastClose.emit({\n id: record.id,\n reason: record.closeReason ?? 'programmatic',\n toast: record,\n });\n this.moveFocusAfterClose(record.id);\n }\n if (\n this.closeWatchdogs.has(record.id) ||\n this.closeFrames.has(record.id)\n ) return;\n\n const duration = resolveMotionTimeMs(\n TOKEN_DEFAULTS.motionShort3,\n TOKEN_DEFAULTS.animationDurationShort3,\n );\n if (duration <= 0) {\n queueMicrotask(() => this.completeRemoval(record));\n return;\n }\n const frame = requestAnimationFrame(() => {\n this.closeFrames.delete(record.id);\n const current = this.records.find(candidate => candidate.id === record.id);\n if (!current || current.transitionStatus !== 'ending') return;\n this.closeWatchdogs.set(\n record.id,\n setTimeout(() => this.completeRemoval(current), duration),\n );\n });\n this.closeFrames.set(record.id, frame);\n }\n\n private completeRemoval(record: ToastRecord) {\n const current = this.records.find(candidate => candidate.id === record.id);\n if (!current || current.transitionStatus !== 'ending') return;\n const watchdog = this.closeWatchdogs.get(record.id);\n if (watchdog) clearTimeout(watchdog);\n this.closeWatchdogs.delete(record.id);\n const closeFrame = this.closeFrames.get(record.id);\n if (closeFrame) cancelAnimationFrame(closeFrame);\n this.closeFrames.delete(record.id);\n const manager = this.attachedManager;\n const context = manager?.remove(record.id);\n if (manager && context) this.pendingRemovals.push({ manager, context });\n }\n\n private handleAnimationComplete(record: ToastRecord) {\n if (record.transitionStatus === 'ending') this.completeRemoval(record);\n }\n\n private bindAnimationCancel(element: HTMLDivElement | undefined, id: string) {\n if (!element || element.dataset['cancelBound'] === 'true') return;\n element.dataset['cancelBound'] = 'true';\n element.addEventListener('animationcancel', () => {\n const record = this.records.find(candidate => candidate.id === id);\n if (record) this.handleAnimationComplete(record);\n });\n }\n\n private handleWindowBlur = () => this.pauseTimers('window');\n private handleWindowFocus = () => this.resumeTimers('window');\n private handleVisibilityChange = () => {\n if (document.hidden) this.pauseTimers('document');\n else this.resumeTimers('document');\n };\n\n private handlePointerEnter(id: string) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias -- pointer interaction selects the viewport that receives F6\n activeToastRegion = this;\n this.pendingHoverLeave = false;\n this.hoveredIds.add(id);\n this.expanded = true;\n this.pauseTimers('hover');\n }\n\n private handlePointerLeave(id: string) {\n this.hoveredIds.delete(id);\n if (this.hoveredIds.size) return;\n if (this.records.some(record => record.transitionStatus === 'ending')) {\n this.pendingHoverLeave = true;\n return;\n }\n this.expanded = false;\n this.resumeTimers('hover');\n }\n\n private handleFocusIn = () => {\n const active = document.activeElement;\n if (!(active instanceof HTMLElement) || !active.matches(':focus-visible')) return;\n // eslint-disable-next-line @typescript-eslint/no-this-alias -- module coordinator routes F6 to the last focused viewport\n activeToastRegion = this;\n this.keyboardActive = true;\n this.expanded = true;\n this.pauseTimers('focus');\n };\n\n private handleFocusOut = (event: FocusEvent) => {\n const next = event.relatedTarget;\n if (next instanceof Node && this.el.contains(next)) return;\n if (!this.keyboardActive) return;\n this.keyboardActive = false;\n this.expanded = this.hoveredIds.size > 0;\n this.resumeTimers('focus');\n };\n\n private handleDocumentKeyDown = (event: KeyboardEvent) => {\n if (event.key !== 'F6') return;\n const eligible = Array.from(connectedToastRegions).filter(\n region => region.activeRecords.length > 0,\n );\n const target =\n activeToastRegion && activeToastRegion.activeRecords.length\n ? activeToastRegion\n : eligible[eligible.length - 1];\n if (target !== this) return;\n event.preventDefault();\n if (!this.el.contains(document.activeElement)) {\n this.previousFocus = document.activeElement as HTMLElement | null;\n }\n this.keyboardActive = true;\n this.regionElement?.focus();\n };\n\n private handleRegionKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n const target = event.target as HTMLElement;\n const positioner = target.closest<HTMLElement>('.toast-positioner');\n const id = positioner?.dataset['toastId'] ?? this.activeRecords[0]?.id;\n if (id) {\n event.preventDefault();\n this.manager.close(id, 'escape');\n }\n return;\n }\n\n if (event.key === 'Tab' && event.shiftKey && event.target === this.regionElement) {\n event.preventDefault();\n this.restorePreviousFocus();\n }\n };\n\n private get regionElement(): HTMLElement | null {\n return this.el.querySelector<HTMLElement>('.toast-region');\n }\n\n private restorePreviousFocus() {\n this.previousFocus?.focus?.();\n this.previousFocus = null;\n this.keyboardActive = false;\n }\n\n private moveFocusAfterClose(id: string) {\n const active = document.activeElement;\n const closing = this.positionerElement(id);\n if (!active || !closing?.contains(active)) return;\n requestAnimationFrame(() => {\n const next = this.activeRecords.find(record => record.id !== id);\n const control = next\n ? this.positionerElement(next.id)?.querySelector<\n HTMLElement & { setFocus?: () => Promise<void> }\n >('ds-button-unfilled')\n : null;\n if (control?.setFocus) void control.setFocus();\n else if (next) this.regionElement?.focus();\n else this.restorePreviousFocus();\n });\n }\n\n private handleAction(record: ToastRecord, event: CustomEvent<MouseEvent>) {\n const detail: ToastActionEventDetail = {\n id: record.id,\n toast: record,\n originalEvent: event.detail,\n };\n this.dsToastAction.emit(detail);\n record.action?.onAction?.({\n id: record.id,\n data: record.data,\n manager: this.manager,\n originalEvent: event.detail,\n });\n }\n\n private handlePointerDown(record: ToastRecord, event: PointerEvent) {\n if (event.button !== 0) return;\n const target = event.target as Element;\n if (target.closest(INTERACTIVE_SWIPE_SELECTOR)) return;\n\n const surface = event.currentTarget as HTMLElement;\n surface.setPointerCapture(event.pointerId);\n this.activeSwipe = {\n id: record.id,\n pointerId: event.pointerId,\n pointerType: event.pointerType,\n startX: event.clientX,\n startY: event.clientY,\n maxDistance: 0,\n cancelled: false,\n axis: null,\n };\n this.swipe = { id: record.id, x: 0, y: 0 };\n if (event.pointerType === 'touch') this.pauseTimers('swipe');\n }\n\n private handlePointerMove(event: PointerEvent) {\n const active = this.activeSwipe;\n if (!active || active.pointerId !== event.pointerId || active.cancelled) return;\n const dx = event.clientX - active.startX;\n const dy = event.clientY - active.startY;\n if (!active.axis && Math.max(Math.abs(dx), Math.abs(dy)) > 1) {\n active.axis = Math.abs(dx) >= Math.abs(dy) ? 'x' : 'y';\n }\n if (!active.axis) return;\n const horizontal = active.axis === 'x';\n const direction: ToastSwipeDirection = horizontal\n ? dx >= 0 ? 'right' : 'left'\n : dy >= 0 ? 'down' : 'up';\n const allowed = this.swipeDirections.includes(direction);\n const rawDistance = horizontal ? Math.abs(dx) : Math.abs(dy);\n const distance = allowed ? rawDistance : Math.sqrt(rawDistance);\n const signed = (horizontal ? dx : dy) < 0 ? -distance : distance;\n const x = horizontal ? signed : 0;\n const y = horizontal ? 0 : signed;\n\n if (active.maxDistance - distance >= SWIPE_REVERSE_CANCEL_THRESHOLD) {\n active.cancelled = true;\n this.cancelSwipe();\n return;\n }\n active.maxDistance = Math.max(active.maxDistance, distance);\n if (rawDistance > 1) event.preventDefault();\n this.swipe = { id: active.id, x, y, direction: allowed ? direction : undefined };\n }\n\n private handlePointerUp(event: PointerEvent) {\n const active = this.activeSwipe;\n if (!active || active.pointerId !== event.pointerId) return;\n const swipe = this.swipe;\n const distance = swipe ? Math.max(Math.abs(swipe.x), Math.abs(swipe.y)) : 0;\n const shouldDismiss =\n !active.cancelled &&\n !!swipe?.direction &&\n distance >= SWIPE_THRESHOLD;\n const id = active.id;\n const wasTouch = active.pointerType === 'touch';\n this.activeSwipe = null;\n this.swipe = null;\n if (wasTouch) this.resumeTimers('swipe');\n if (shouldDismiss && swipe.direction) {\n this.dismissedSwipeDirections.set(id, swipe.direction);\n this.manager.close(id, 'swipe');\n }\n }\n\n private handlePointerCancel(event: PointerEvent) {\n if (this.activeSwipe?.pointerId !== event.pointerId) return;\n this.cancelSwipe();\n }\n\n private cancelSwipe() {\n const wasTouch = this.activeSwipe?.pointerType === 'touch';\n this.activeSwipe = null;\n this.swipe = null;\n if (wasTouch) this.resumeTimers('swipe');\n }\n\n private get touchAction(): string {\n const horizontal =\n this.swipeDirections.includes('left') || this.swipeDirections.includes('right');\n const vertical =\n this.swipeDirections.includes('up') || this.swipeDirections.includes('down');\n if (horizontal && vertical) return 'none';\n if (horizontal) return 'pan-y';\n if (vertical) return 'pan-x';\n return 'auto';\n }\n\n private handleWindowResize = () => {\n this.heights.clear();\n this.measuredUpdateKeys.clear();\n this.layoutVersion += 1;\n this.scheduleLayout();\n };\n\n private scheduleLayout = () => {\n if (this.layoutFrame !== null) return;\n this.layoutFrame = requestAnimationFrame(() => {\n this.layoutFrame = null;\n this.measureLayout();\n });\n };\n\n private measureNaturalHeight(element: HTMLElement, expandedWidth: boolean): number {\n const surface = element.querySelector<HTMLElement>('.toast-surface');\n if (!surface) return 0;\n const previousWidth = element.style.width;\n const previousTransition = element.style.transition;\n const previousHeight = surface.style.height;\n\n if (expandedWidth) {\n element.style.transition = 'none';\n element.style.width = '100%';\n }\n surface.style.height = 'auto';\n const height = surface.getBoundingClientRect().height;\n\n surface.style.height = previousHeight;\n if (expandedWidth) {\n element.style.width = previousWidth;\n element.getBoundingClientRect();\n element.style.transition = previousTransition;\n }\n return height;\n }\n\n private measureLayout() {\n let changed = false;\n for (const record of this.records) {\n const element = this.positionerElement(record.id);\n if (!element) continue;\n let height = this.heights.get(record.id) ?? 0;\n const needsHeightMeasurement =\n height <= 0 || this.measuredUpdateKeys.get(record.id) !== record.updateKey;\n if (needsHeightMeasurement) {\n height = this.measureNaturalHeight(element, !record.positioner);\n if (height > 0) {\n if (this.heights.get(record.id) !== height) changed = true;\n this.heights.set(record.id, height);\n this.measuredUpdateKeys.set(record.id, record.updateKey);\n }\n }\n\n if (!record.positioner) continue;\n const anchor = this.resolveAnchor(record.positioner.anchor);\n if (!anchor || height <= 0) {\n if (this.anchoredPositions.delete(record.id)) changed = true;\n continue;\n }\n const rect = element.getBoundingClientRect();\n const sideOffset = resolveCssLengthPx(\n record.positioner.sideOffset,\n TOKEN_DEFAULTS.space050,\n );\n const alignOffset = resolveCssLengthPx(record.positioner.alignOffset, 0);\n const position = computeTooltipPosition({\n anchorRect: anchor.getBoundingClientRect(),\n popupWidth: rect.width,\n popupHeight: height,\n side: record.positioner.side ?? 'top',\n align: record.positioner.align ?? 'center',\n sideOffsetPx: sideOffset,\n alignOffsetPx: alignOffset,\n viewportPadPx: resolveCssLengthPx(undefined, TOKEN_DEFAULTS.space200),\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n });\n const current = this.anchoredPositions.get(record.id);\n if (\n !current ||\n current.x !== position.x ||\n current.y !== position.y ||\n current.side !== position.resolvedSide\n ) {\n this.anchoredPositions.set(record.id, {\n x: position.x,\n y: position.y,\n side: position.resolvedSide,\n });\n changed = true;\n }\n }\n if (changed) this.layoutVersion += 1;\n }\n\n private resolveAnchor(anchor: HTMLElement | string): HTMLElement | null {\n return typeof anchor === 'string' ? document.getElementById(anchor) : anchor;\n }\n\n private positionerElement(id: string): HTMLElement | null {\n return (\n Array.from(this.el.querySelectorAll<HTMLElement>('.toast-positioner'))\n .find(element => element.dataset['toastId'] === id) ?? null\n );\n }\n\n private ensureDomId(id: string): number {\n const current = this.domIds.get(id);\n if (current) return current;\n const next = ++this.nextDomId;\n this.domIds.set(id, next);\n return next;\n }\n\n private get activeRecords(): ToastRecord[] {\n return this.records.filter(record => record.transitionStatus !== 'ending');\n }\n\n private globalLayout() {\n const globalRecords = this.records.filter(record => !record.positioner);\n let offset = 0;\n let visibleIndex = 0;\n const gap = resolveCssLengthPx(undefined, TOKEN_DEFAULTS.space200);\n const layouts = new Map<string, { index: number; offset: number; limited: boolean }>();\n\n globalRecords.forEach((record, domIndex) => {\n if (record.transitionStatus === 'ending') {\n layouts.set(record.id, { index: domIndex, offset, limited: false });\n return;\n }\n\n const limited = visibleIndex >= Math.max(1, this.limit);\n layouts.set(record.id, { index: visibleIndex, offset, limited });\n offset += (this.heights.get(record.id) ?? 0) + gap;\n visibleIndex += 1;\n });\n return layouts;\n }\n\n private renderToast(\n record: ToastRecord,\n layout: { index: number; offset: number; limited: boolean },\n ) {\n const domId = this.ensureDomId(record.id);\n const titleId = `ds-toast-${this.instanceId}-${domId}-title`;\n const descriptionId = `ds-toast-${this.instanceId}-${domId}-description`;\n const swipe = this.swipe?.id === record.id ? this.swipe : null;\n const swipeDirection = swipe?.direction ?? this.dismissedSwipeDirections.get(record.id);\n const anchored = !!record.positioner;\n const anchoredPosition = this.anchoredPositions.get(record.id);\n const hiddenHighPriority = record.priority === 'high' && !this.keyboardActive;\n const focusTabIndex = this.keyboardActive && !layout.limited ? 0 : -1;\n const toastHeight = this.heights.get(record.id);\n\n return (\n <div\n ref={(element?: HTMLDivElement) => this.bindAnimationCancel(element, record.id)}\n class={{\n 'toast-positioner': true,\n 'toast-positioner--anchored': anchored,\n 'toast-positioner--ending': record.transitionStatus === 'ending',\n }}\n data-toast-id={record.id}\n data-behind={!anchored && layout.index > 0 ? '' : undefined}\n data-limited={layout.limited ? '' : undefined}\n data-positioned={anchored ? String(!!anchoredPosition) : undefined}\n data-side={anchoredPosition?.side}\n inert={layout.limited ? true : undefined}\n aria-hidden={layout.limited ? 'true' : undefined}\n style={{\n '--toast-index': String(layout.index),\n '--toast-offset-y': `${layout.offset}px`,\n '--toast-height': toastHeight ? `${toastHeight}px` : undefined,\n zIndex: String(this.records.length - layout.index),\n left: anchoredPosition ? `${anchoredPosition.x}px` : undefined,\n top: anchoredPosition ? `${anchoredPosition.y}px` : undefined,\n }}\n onAnimationEnd={() => this.handleAnimationComplete(record)}\n >\n <div\n class={{\n 'toast-surface': true,\n 'toast-surface--swiping': !!swipe,\n }}\n role={record.priority === 'high' ? 'alertdialog' : 'dialog'}\n aria-modal=\"false\"\n aria-labelledby={\n record.title ? titleId : record.description ? descriptionId : undefined\n }\n aria-describedby={record.title && record.description ? descriptionId : undefined}\n aria-hidden={hiddenHighPriority ? 'true' : undefined}\n data-type={record.type}\n data-priority={record.priority}\n data-transition-status={record.transitionStatus}\n data-swiping={swipe ? '' : undefined}\n data-swipe-direction={swipeDirection}\n style={{\n '--toast-swipe-movement-x': `${swipe?.x ?? 0}px`,\n '--toast-swipe-movement-y': `${swipe?.y ?? 0}px`,\n touchAction: this.touchAction,\n }}\n onPointerDown={(event: PointerEvent) => this.handlePointerDown(record, event)}\n onPointerMove={(event: PointerEvent) => this.handlePointerMove(event)}\n onPointerUp={(event: PointerEvent) => this.handlePointerUp(event)}\n onPointerCancel={(event: PointerEvent) => this.handlePointerCancel(event)}\n onPointerEnter={\n anchored ? () => this.handlePointerEnter(record.id) : undefined\n }\n onPointerLeave={\n anchored ? () => this.handlePointerLeave(record.id) : undefined\n }\n >\n <div class=\"toast-content\">\n <div class=\"toast-copy\">\n {record.title && (\n <ds-text\n class=\"toast-title\"\n as=\"div\"\n variant=\"text-title-small\"\n color=\"primary\"\n textId={titleId}\n >\n {record.title}\n </ds-text>\n )}\n {record.description && (\n <ds-text\n class=\"toast-description\"\n as=\"div\"\n variant=\"text-body-medium\"\n color=\"secondary\"\n textId={descriptionId}\n >\n {record.description}\n </ds-text>\n )}\n </div>\n {record.action && (\n <ds-button-unfilled\n class=\"toast-action\"\n variant=\"label\"\n size=\"md\"\n type=\"button\"\n label={record.action.label}\n aria-label={record.action.ariaLabel}\n hasBorder\n focusTabIndex={focusTabIndex}\n aria-hidden={!this.keyboardActive ? 'true' : undefined}\n onDsClick={(event: CustomEvent<MouseEvent>) =>\n this.handleAction(record, event)\n }\n />\n )}\n </div>\n <ds-button-unfilled\n class=\"toast-close\"\n variant=\"icon\"\n size=\"md\"\n type=\"button\"\n icon=\"Cross\"\n aria-label={this.closeLabel}\n hasBorder={false}\n activeFill={false}\n focusTabIndex={focusTabIndex}\n aria-hidden={!this.keyboardActive ? 'true' : undefined}\n onDsClick={() => this.manager.close(record.id, 'close-button')}\n />\n </div>\n </div>\n );\n }\n\n render() {\n void this.layoutVersion;\n const globalLayouts = this.globalLayout();\n const globalRecords = this.records.filter(record => !record.positioner);\n const anchoredRecords = this.records.filter(record => !!record.positioner);\n const highPriority = this.records.filter(\n record =>\n record.priority === 'high' &&\n record.transitionStatus !== 'ending' &&\n !globalLayouts.get(record.id)?.limited,\n );\n\n return (\n <Host>\n <section\n class=\"toast-region\"\n role=\"region\"\n aria-label={this.label}\n aria-live=\"polite\"\n aria-atomic=\"false\"\n aria-relevant=\"additions text\"\n tabIndex={-1}\n onFocusin={this.handleFocusIn}\n onFocusout={(event: FocusEvent) => this.handleFocusOut(event)}\n onKeyDown={(event: KeyboardEvent) => this.handleRegionKeyDown(event)}\n >\n <div\n class=\"toast-viewport\"\n data-expanded={this.expanded ? '' : undefined}\n onPointerEnter={() => this.handlePointerEnter(GLOBAL_STACK_HOVER)}\n onPointerLeave={() => this.handlePointerLeave(GLOBAL_STACK_HOVER)}\n >\n {globalRecords.map(record =>\n this.renderToast(\n record,\n globalLayouts.get(record.id) ?? { index: 0, offset: 0, limited: false },\n )\n )}\n </div>\n <div class=\"toast-anchored-layer\">\n {anchoredRecords.map(record =>\n this.renderToast(record, { index: 0, offset: 0, limited: false })\n )}\n </div>\n <div class=\"toast-assertive-announcer ds-visually-hidden\">\n {highPriority.map(record => (\n <div role=\"alert\" aria-atomic=\"true\">\n {[record.title, record.description].filter(Boolean).join('. ')}\n </div>\n ))}\n </div>\n </section>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["resolvePromiseValue","value","input","resolved","description","ToastManagerImpl","constructor","this","records","listeners","Set","nextId","add","options","id","existingIndex","findIndex","record","title","trim","console","warn","current","updated","priority","transitionStatus","closeReason","undefined","updateKey","timerKey","filter","_","index","emit","update","updates","restartsTimer","Object","prototype","hasOwnProperty","call","type","map","recordIndex","close","reason","closing","onClose","toast","closeAll","promise","promiseValue","loading","timeout","success","error","failure","subscribe","listener","getSnapshot","delete","activate","find","candidate","remove","context","notifyRemove","onRemove","snapshot","createToastManager","defaultManagerKey","Symbol","for","globalScope","globalThis","existingManager","toastManager","toastCss","SWIPE_THRESHOLD","SWIPE_REVERSE_CANCEL_THRESHOLD","GLOBAL_STACK_HOVER","INTERACTIVE_SWIPE_SELECTOR","attachedManagers","WeakMap","connectedToastRegions","activeToastRegion","toastInstanceCounter","Toast","__stencil_proxyCustomElement","HTMLElement","registerHost","manager","defaultToastManager","limit","TOKEN_DEFAULTS","animationDelayLong2","label","closeLabel","avoidMobileShellBar","swipeDirections","expanded","keyboardActive","swipe","layoutVersion","instanceId","domIds","Map","timers","closeWatchdogs","closeFrames","closeEvents","activationFrames","pauseReasons","hoveredIds","heights","measuredUpdateKeys","anchoredPositions","dismissedSwipeDirections","observedElements","pendingRemovals","unsubscribe","attachedManager","previousFocus","resizeObserver","mutationObserver","layoutFrame","activeSwipe","nextDomId","connected","pendingHoverLeave","handleWindowBlur","pauseTimers","handleWindowFocus","resumeTimers","handleVisibilityChange","document","hidden","handleFocusIn","active","activeElement","matches","handleFocusOut","event","next","relatedTarget","Node","el","contains","size","handleDocumentKeyDown","key","eligible","Array","from","region","activeRecords","length","target","preventDefault","regionElement","focus","handleRegionKeyDown","positioner","closest","dataset","shiftKey","restorePreviousFocus","handleWindowResize","clear","scheduleLayout","requestAnimationFrame","measureLayout","connectedCallback","connect","componentDidLoad","ResizeObserver","MutationObserver","observe","body","childList","subtree","attachManager","window","addEventListener","componentDidRender","syncObservedElements","flushPendingRemovals","disconnectedCallback","detachManager","resetManagerState","disconnect","cancelAnimationFrame","removeEventListener","remaining","onManagerChange","onTimeoutChange","timer","values","handle","clearTimeout","syncTimers","attached","get","set","syncLifecycle","clearAllTimers","frame","querySelectorAll","anchor","resolveAnchor","element","has","unobserve","pending","splice","dsToastRemove","recordIds","hasEndingRecords","some","watchdog","keys","ensureDomId","clearToastTimer","beginRemoval","closeFrame","activeIds","duration","resolveToastTimeout","existing","startedAt","isPaused","startToastTimer","Math","max","resolveCssTimeMs","Date","now","setTimeout","wasPaused","dsToastClose","moveFocusAfterClose","resolveMotionTimeMs","motionShort3","animationDurationShort3","queueMicrotask","completeRemoval","push","handleAnimationComplete","bindAnimationCancel","handlePointerEnter","handlePointerLeave","querySelector","positionerElement","control","setFocus","handleAction","detail","originalEvent","dsToastAction","action","onAction","data","handlePointerDown","button","surface","currentTarget","setPointerCapture","pointerId","pointerType","startX","clientX","startY","clientY","maxDistance","cancelled","axis","x","y","handlePointerMove","dx","dy","abs","horizontal","direction","allowed","includes","rawDistance","distance","sqrt","signed","cancelSwipe","handlePointerUp","shouldDismiss","wasTouch","handlePointerCancel","touchAction","vertical","measureNaturalHeight","expandedWidth","previousWidth","style","width","previousTransition","transition","previousHeight","height","getBoundingClientRect","changed","needsHeightMeasurement","rect","sideOffset","resolveCssLengthPx","space050","alignOffset","position","computeAnchoredPosition","anchorRect","popupWidth","popupHeight","side","align","sideOffsetPx","alignOffsetPx","viewportPadPx","space200","viewportWidth","innerWidth","viewportHeight","innerHeight","resolvedSide","getElementById","globalLayout","globalRecords","offset","visibleIndex","gap","layouts","forEach","domIndex","limited","renderToast","layout","domId","titleId","descriptionId","swipeDirection","anchored","anchoredPosition","hiddenHighPriority","focusTabIndex","toastHeight","h","ref","class","String","inert","zIndex","left","top","onAnimationEnd","role","onPointerDown","onPointerMove","onPointerUp","onPointerCancel","onPointerEnter","onPointerLeave","as","variant","color","textId","ariaLabel","hasBorder","onDsClick","icon","activeFill","render","globalLayouts","anchoredRecords","highPriority","Host","tabIndex","onFocusin","onFocusout","onKeyDown","Boolean","join"],"sources":["src/wc/toast/toast-manager.ts","src/wc/components/Toast/Toast.css?tag=ds-toast&encapsulation=scoped","src/wc/components/Toast/Toast.tsx"],"sourcesContent":["import type {\n ToastCloseContext,\n ToastCloseReason,\n ToastListener,\n ToastManager,\n ToastOptions,\n ToastPromiseOptions,\n ToastPromiseValue,\n ToastRecord,\n} from './toast-types';\n\nfunction resolvePromiseValue<Value, Data>(\n value:\n | ToastPromiseValue<Data>\n | ((input: Value) => ToastPromiseValue<Data>),\n input: Value,\n): ToastOptions<Data> {\n const resolved = typeof value === 'function' ? value(input) : value;\n return typeof resolved === 'string' ? { description: resolved } : resolved;\n}\n\nclass ToastManagerImpl<Data = unknown> implements ToastManager<Data> {\n private records: ToastRecord<Data>[] = [];\n private listeners = new Set<ToastListener<Data>>();\n private nextId = 0;\n\n add(options: ToastOptions<Data>): string {\n const id = options.id || `ds-toast-${++this.nextId}`;\n const existingIndex = this.records.findIndex(record => record.id === id);\n\n if (!options.title?.trim() && !options.description?.trim()) {\n console.warn(`[ds-toast] Toast \"${id}\" should provide a title or description.`);\n }\n\n if (existingIndex >= 0) {\n const current = this.records[existingIndex];\n const updated: ToastRecord<Data> = {\n ...current,\n ...options,\n id,\n priority: options.priority ?? current.priority,\n transitionStatus: 'active',\n closeReason: undefined,\n updateKey: current.updateKey + 1,\n timerKey: current.timerKey + 1,\n };\n this.records = [\n updated,\n ...this.records.filter((_, index) => index !== existingIndex),\n ];\n this.emit();\n return id;\n }\n\n const record: ToastRecord<Data> = {\n ...options,\n id,\n priority: options.priority ?? 'low',\n transitionStatus: 'starting',\n updateKey: 0,\n timerKey: 0,\n };\n this.records = [record, ...this.records];\n this.emit();\n return id;\n }\n\n update(id: string, updates: Partial<ToastOptions<Data>>): void {\n const index = this.records.findIndex(record => record.id === id);\n if (index < 0) return;\n const current = this.records[index];\n const restartsTimer =\n Object.prototype.hasOwnProperty.call(updates, 'timeout') ||\n (current.type === 'loading' && updates.type !== undefined && updates.type !== 'loading');\n const updated: ToastRecord<Data> = {\n ...current,\n ...updates,\n id,\n priority: updates.priority ?? current.priority,\n updateKey: current.updateKey + 1,\n timerKey: restartsTimer ? current.timerKey + 1 : current.timerKey,\n };\n this.records = this.records.map((record, recordIndex) =>\n recordIndex === index ? updated : record\n );\n this.emit();\n }\n\n close(id: string, reason: ToastCloseReason = 'programmatic'): void {\n const index = this.records.findIndex(record => record.id === id);\n if (index < 0 || this.records[index].transitionStatus === 'ending') return;\n\n const closing: ToastRecord<Data> = {\n ...this.records[index],\n transitionStatus: 'ending',\n closeReason: reason,\n };\n this.records = this.records.map((record, recordIndex) =>\n recordIndex === index ? closing : record\n );\n this.emit();\n closing.onClose?.({ id, reason, toast: closing });\n }\n\n closeAll(reason: ToastCloseReason = 'programmatic'): void {\n for (const record of [...this.records]) this.close(record.id, reason);\n }\n\n async promise<Value>(\n promiseValue: PromiseLike<Value>,\n options: ToastPromiseOptions<Value, Data>,\n ): Promise<Value> {\n const loading = resolvePromiseValue(options.loading, undefined as Value);\n const id = this.add({\n ...loading,\n type: loading.type ?? 'loading',\n timeout: 0,\n });\n\n try {\n const value = await promiseValue;\n const success = resolvePromiseValue(options.success, value);\n this.update(id, {\n ...success,\n type: success.type ?? 'success',\n timeout: success.timeout,\n });\n return value;\n } catch (error) {\n const failure = resolvePromiseValue(options.error, error);\n this.update(id, {\n ...failure,\n type: failure.type ?? 'error',\n timeout: failure.timeout,\n });\n throw error;\n }\n }\n\n subscribe(listener: ToastListener<Data>): () => void {\n this.listeners.add(listener);\n listener(this.getSnapshot());\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n getSnapshot(): readonly ToastRecord<Data>[] {\n return this.records.map(record => ({ ...record }));\n }\n\n activate(id: string): void {\n const record = this.records.find(candidate => candidate.id === id);\n if (!record || record.transitionStatus !== 'starting') return;\n this.records = this.records.map(candidate =>\n candidate.id === id\n ? { ...candidate, transitionStatus: 'active' }\n : candidate\n );\n this.emit();\n }\n\n remove(id: string): ToastCloseContext<Data> | null {\n const record = this.records.find(candidate => candidate.id === id);\n if (!record || record.transitionStatus !== 'ending') return null;\n const reason = record.closeReason ?? 'programmatic';\n this.records = this.records.filter(candidate => candidate.id !== id);\n this.emit();\n const context: ToastCloseContext<Data> = { id, reason, toast: record };\n return context;\n }\n\n notifyRemove(context: ToastCloseContext<Data>): void {\n const { toast } = context;\n toast.onRemove?.(context);\n }\n\n private emit(): void {\n const snapshot = this.getSnapshot();\n for (const listener of this.listeners) listener(snapshot);\n }\n}\n\nexport function createToastManager<Data = unknown>(): ToastManager<Data> {\n return new ToastManagerImpl<Data>();\n}\n\nconst defaultManagerKey = Symbol.for('@ds-mo/ui/default-toast-manager');\nconst globalScope = globalThis as typeof globalThis & Record<PropertyKey, unknown>;\nconst existingManager = globalScope[defaultManagerKey] as ToastManager | undefined;\n\nexport const toastManager: ToastManager =\n existingManager ?? createToastManager();\n\nif (!existingManager) globalScope[defaultManagerKey] = toastManager;\n","@import '../../utils/visually-hidden.css';\n\n:host {\n display: contents;\n}\n\n.toast-region {\n position: fixed;\n inset: 0;\n z-index: var(--dimension-z-index-floating);\n pointer-events: none;\n outline: none;\n}\n\n.toast-viewport {\n position: absolute;\n right: var(--dimension-space-200);\n bottom: var(--dimension-space-200);\n display: grid;\n width: min(\n var(--dimension-card-width-sm),\n calc(100vw - 2 * var(--dimension-space-200))\n );\n}\n\n@media (max-width: 767px) {\n :host([avoid-mobile-shell-bar]) .toast-viewport {\n bottom: calc(\n var(--dimension-space-200) +\n var(--dimension-stroke-width-012) +\n var(--dimension-space-100) +\n var(--dimension-size-500) +\n max(var(--dimension-space-100), env(safe-area-inset-bottom))\n );\n }\n}\n\n.toast-positioner {\n grid-area: 1 / 1;\n align-self: end;\n justify-self: center;\n width: 100%;\n pointer-events: auto;\n transform: translateY(\n calc(-1 * var(--toast-index) * var(--dimension-space-100))\n );\n transition:\n transform var(--effect-motion-short-3),\n width var(--effect-motion-short-3);\n}\n\n.toast-viewport:not([data-expanded]) .toast-positioner {\n width: calc(\n 100% - 2 * var(--toast-index) * var(--dimension-space-100)\n );\n}\n\n.toast-viewport[data-expanded] .toast-positioner {\n transform: translateY(calc(-1 * var(--toast-offset-y)));\n}\n\n.toast-positioner[data-limited] {\n visibility: hidden;\n pointer-events: none;\n}\n\n.toast-positioner--anchored {\n position: fixed;\n width: min(\n var(--dimension-card-width-sm),\n calc(100vw - 2 * var(--dimension-space-200))\n );\n transform: none;\n}\n\n.toast-positioner--anchored[data-positioned='false'] {\n visibility: hidden;\n}\n\n.toast-surface {\n position: relative;\n display: block;\n box-sizing: border-box;\n width: 100%;\n height: var(--toast-height, auto);\n padding: var(--dimension-space-200);\n overflow: hidden;\n color: var(--color-foreground-primary);\n background-color: var(--color-background-primary);\n border-radius: var(--dimension-radius-050);\n box-shadow: var(--effect-elevation-elevated-floating);\n transform: translate(\n var(--toast-swipe-movement-x),\n var(--toast-swipe-movement-y)\n );\n animation: toast-enter var(--effect-motion-short-2) both;\n}\n\n.toast-positioner--ending .toast-surface {\n animation: toast-exit var(--effect-motion-short-3) both;\n}\n\n.toast-surface--swiping {\n transition: none;\n user-select: none;\n}\n\n.toast-content {\n display: flex;\n flex-direction: column;\n min-width: 0;\n padding-inline-end: var(--dimension-size-500);\n transition: opacity var(--effect-motion-short-3);\n}\n\n.toast-copy {\n display: flex;\n flex-direction: column;\n min-width: 0;\n min-height: var(--typography-lineheight-md);\n margin-block: calc(-1 * var(--dimension-space-025));\n gap: var(--dimension-space-050);\n}\n\n.toast-title,\n.toast-description {\n min-width: 0;\n}\n\n.toast-action {\n align-self: start;\n margin-top: calc(\n var(--dimension-space-200) + var(--dimension-space-025)\n );\n}\n\n.toast-close {\n position: absolute;\n top: var(--dimension-space-100);\n right: var(--dimension-space-100);\n transition: opacity var(--effect-motion-short-3);\n}\n\n.toast-viewport:not([data-expanded]) .toast-positioner[data-behind] .toast-content,\n.toast-viewport:not([data-expanded]) .toast-positioner[data-behind] .toast-close {\n opacity: 0;\n}\n\n\n@keyframes toast-enter {\n from {\n opacity: 0;\n transform: translateY(var(--dimension-space-100));\n }\n\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes toast-exit {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .toast-positioner,\n .toast-surface,\n .toast-content,\n .toast-close,\n .toast-positioner--ending .toast-surface {\n transition: none;\n animation: none;\n }\n\n .toast-positioner--ending .toast-surface {\n opacity: 0;\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport {\n resolveCssLengthPx,\n resolveCssTimeMs,\n resolveMotionTimeMs,\n TOKEN_DEFAULTS,\n} from '../../utils';\nimport {\n toastManager as defaultToastManager,\n type ToastActionEventDetail,\n type ToastCloseContext,\n type ToastCloseEventDetail,\n type ToastEventDetail,\n type ToastManager,\n type ToastRecord,\n type ToastSwipeDirection,\n} from '../../toast';\nimport { computeAnchoredPosition } from '../../utils/anchored-position';\n\ninterface ToastTimer {\n timerKey: number;\n remaining: number;\n startedAt: number;\n handle: ReturnType<typeof setTimeout> | null;\n}\n\ninterface SwipeState {\n id: string;\n x: number;\n y: number;\n direction?: ToastSwipeDirection;\n}\n\ninterface AnchoredPosition {\n x: number;\n y: number;\n side: 'top' | 'right' | 'bottom' | 'left';\n}\n\ninterface ActiveSwipe {\n id: string;\n pointerId: number;\n pointerType: string;\n startX: number;\n startY: number;\n maxDistance: number;\n cancelled: boolean;\n axis: 'x' | 'y' | null;\n}\n\nconst SWIPE_THRESHOLD = 40;\nconst SWIPE_REVERSE_CANCEL_THRESHOLD = 10;\nconst GLOBAL_STACK_HOVER = '__global-stack__';\nconst INTERACTIVE_SWIPE_SELECTOR =\n 'button,a,input,textarea,select,[role=\"button\"],[data-ds-toast-swipe-ignore]';\n\nconst attachedManagers = new WeakMap<ToastManager, Toast>();\nconst connectedToastRegions = new Set<Toast>();\nlet activeToastRegion: Toast | null = null;\nlet toastInstanceCounter = 0;\n\n@Component({\n tag: 'ds-toast',\n styleUrl: 'Toast.css',\n scoped: true,\n})\nexport class Toast {\n @Element() el!: HTMLElement;\n\n /** Manager that supplies toast records. Assign as a JavaScript property. */\n @Prop() manager: ToastManager = defaultToastManager;\n /** Maximum visible global-stack records. Limited records remain mounted and inert. */\n @Prop() limit: number = 3;\n /** Default auto-dismiss delay. Use 0 for persistent records. */\n @Prop() timeout: number | string = TOKEN_DEFAULTS.animationDelayLong2;\n /** Accessible label for the notification region. */\n @Prop() label: string = 'Notifications';\n /** Localized accessible label for every toast close action. */\n @Prop() closeLabel: string = 'Close notification';\n /** Keep the global stack 16px above the persistent mobile shell bar below 768px. */\n @Prop({ attribute: 'avoid-mobile-shell-bar', reflect: true })\n avoidMobileShellBar: boolean = false;\n /** Allowed swipe-to-dismiss directions. Assign as a JavaScript property. */\n @Prop() swipeDirections: ToastSwipeDirection[] = ['down', 'right'];\n\n @State() private records: readonly ToastRecord[] = [];\n @State() private expanded = false;\n @State() private keyboardActive = false;\n @State() private swipe: SwipeState | null = null;\n @State() private layoutVersion = 0;\n\n @Event() dsToastClose!: EventEmitter<ToastCloseEventDetail>;\n @Event() dsToastRemove!: EventEmitter<ToastEventDetail>;\n @Event() dsToastAction!: EventEmitter<ToastActionEventDetail>;\n\n private readonly instanceId = ++toastInstanceCounter;\n private readonly domIds = new Map<string, number>();\n private readonly timers = new Map<string, ToastTimer>();\n private readonly closeWatchdogs = new Map<string, ReturnType<typeof setTimeout>>();\n private readonly closeFrames = new Map<string, number>();\n private readonly closeEvents = new Set<string>();\n private readonly activationFrames = new Map<string, number>();\n private readonly pauseReasons = new Set<string>();\n private readonly hoveredIds = new Set<string>();\n private readonly heights = new Map<string, number>();\n private readonly measuredUpdateKeys = new Map<string, number>();\n private readonly anchoredPositions = new Map<string, AnchoredPosition>();\n private readonly dismissedSwipeDirections = new Map<string, ToastSwipeDirection>();\n private readonly observedElements = new Set<Element>();\n private readonly pendingRemovals: Array<{\n manager: ToastManager;\n context: ToastCloseContext;\n }> = [];\n\n private unsubscribe: (() => void) | null = null;\n private attachedManager: ToastManager | null = null;\n private previousFocus: HTMLElement | null = null;\n private resizeObserver: ResizeObserver | null = null;\n private mutationObserver: MutationObserver | null = null;\n private layoutFrame: number | null = null;\n private activeSwipe: ActiveSwipe | null = null;\n private nextDomId = 0;\n private connected = false;\n private pendingHoverLeave = false;\n\n connectedCallback() {\n this.connect();\n }\n\n componentDidLoad() {\n this.connect();\n }\n\n private connect() {\n if (this.connected) return;\n this.connected = true;\n this.resizeObserver ??= new ResizeObserver(() => this.scheduleLayout());\n this.mutationObserver ??= new MutationObserver(() => this.scheduleLayout());\n this.mutationObserver.observe(document.body, { childList: true, subtree: true });\n if (!this.unsubscribe) this.attachManager(this.manager);\n window.addEventListener('blur', this.handleWindowBlur);\n window.addEventListener('focus', this.handleWindowFocus);\n window.addEventListener('resize', this.handleWindowResize);\n window.addEventListener('scroll', this.scheduleLayout, true);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n document.addEventListener('visibilitychange', this.handleVisibilityChange);\n connectedToastRegions.add(this);\n // eslint-disable-next-line @typescript-eslint/no-this-alias -- module coordinator tracks the active connected viewport\n if (!activeToastRegion) activeToastRegion = this;\n }\n\n componentDidRender() {\n this.syncObservedElements();\n this.flushPendingRemovals();\n this.scheduleLayout();\n }\n\n disconnectedCallback() {\n this.connected = false;\n this.flushPendingRemovals();\n this.detachManager();\n this.resetManagerState();\n this.resizeObserver?.disconnect();\n this.resizeObserver = null;\n this.mutationObserver?.disconnect();\n this.mutationObserver = null;\n this.observedElements.clear();\n if (this.layoutFrame !== null) cancelAnimationFrame(this.layoutFrame);\n this.layoutFrame = null;\n window.removeEventListener('blur', this.handleWindowBlur);\n window.removeEventListener('focus', this.handleWindowFocus);\n window.removeEventListener('resize', this.handleWindowResize);\n window.removeEventListener('scroll', this.scheduleLayout, true);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n document.removeEventListener('visibilitychange', this.handleVisibilityChange);\n connectedToastRegions.delete(this);\n if (activeToastRegion === this) {\n const remaining = Array.from(connectedToastRegions);\n activeToastRegion = remaining[remaining.length - 1] ?? null;\n }\n }\n\n @Watch('manager')\n onManagerChange(next: ToastManager) {\n this.detachManager();\n this.resetManagerState();\n if (this.connected) this.attachManager(next);\n }\n\n @Watch('timeout')\n onTimeoutChange() {\n for (const timer of this.timers.values()) {\n if (timer.handle) clearTimeout(timer.handle);\n }\n this.timers.clear();\n this.syncTimers();\n }\n\n private attachManager(manager: ToastManager) {\n const attached = attachedManagers.get(manager);\n if (attached && attached !== this) {\n console.warn('[ds-toast] A manager can control only one connected ds-toast instance.');\n return;\n }\n attachedManagers.set(manager, this);\n this.attachedManager = manager;\n this.unsubscribe = manager.subscribe(records => {\n this.records = records;\n this.syncLifecycle(records);\n this.scheduleLayout();\n });\n }\n\n private detachManager() {\n this.unsubscribe?.();\n this.unsubscribe = null;\n if (this.attachedManager && attachedManagers.get(this.attachedManager) === this) {\n attachedManagers.delete(this.attachedManager);\n }\n this.attachedManager = null;\n }\n\n private resetManagerState() {\n this.flushPendingRemovals();\n if (this.el.contains(document.activeElement)) this.restorePreviousFocus();\n this.clearAllTimers();\n for (const frame of this.activationFrames.values()) cancelAnimationFrame(frame);\n for (const frame of this.closeFrames.values()) cancelAnimationFrame(frame);\n this.activationFrames.clear();\n this.closeFrames.clear();\n this.closeEvents.clear();\n this.pauseReasons.clear();\n this.hoveredIds.clear();\n this.pendingHoverLeave = false;\n this.heights.clear();\n this.measuredUpdateKeys.clear();\n this.anchoredPositions.clear();\n this.dismissedSwipeDirections.clear();\n this.domIds.clear();\n this.activeSwipe = null;\n this.swipe = null;\n this.expanded = false;\n this.keyboardActive = false;\n this.records = [];\n this.resizeObserver?.disconnect();\n this.observedElements.clear();\n }\n\n private syncObservedElements() {\n const next = new Set<Element>(\n this.el.querySelectorAll<HTMLElement>('.toast-positioner'),\n );\n for (const record of this.records) {\n if (!record.positioner) continue;\n const anchor = this.resolveAnchor(record.positioner.anchor);\n if (anchor) next.add(anchor);\n }\n\n for (const element of this.observedElements) {\n if (!next.has(element)) {\n this.resizeObserver?.unobserve(element);\n this.observedElements.delete(element);\n }\n }\n for (const element of next) {\n if (this.observedElements.has(element)) continue;\n this.resizeObserver?.observe(element);\n this.observedElements.add(element);\n }\n }\n\n private flushPendingRemovals() {\n for (const pending of this.pendingRemovals.splice(0)) {\n pending.manager.notifyRemove(pending.context);\n this.dsToastRemove.emit({\n id: pending.context.id,\n toast: pending.context.toast,\n });\n }\n }\n\n private syncLifecycle(records: readonly ToastRecord[]) {\n const recordIds = new Set(records.map(record => record.id));\n for (const id of this.hoveredIds) {\n if (id !== GLOBAL_STACK_HOVER && !recordIds.has(id)) this.hoveredIds.delete(id);\n }\n const hasEndingRecords = records.some(\n record => record.transitionStatus === 'ending',\n );\n if (this.pendingHoverLeave && !hasEndingRecords && !this.hoveredIds.size) {\n this.pendingHoverLeave = false;\n this.expanded = false;\n this.resumeTimers('hover');\n } else if (!this.hoveredIds.size && !this.pendingHoverLeave) {\n this.resumeTimers('hover');\n }\n\n for (const [id, timer] of this.timers) {\n if (recordIds.has(id)) continue;\n if (timer.handle) clearTimeout(timer.handle);\n this.timers.delete(id);\n }\n\n for (const [id, watchdog] of this.closeWatchdogs) {\n if (recordIds.has(id)) continue;\n clearTimeout(watchdog);\n this.closeWatchdogs.delete(id);\n }\n\n for (const [id, frame] of this.activationFrames) {\n if (recordIds.has(id)) continue;\n cancelAnimationFrame(frame);\n this.activationFrames.delete(id);\n }\n\n for (const [id, frame] of this.closeFrames) {\n if (recordIds.has(id)) continue;\n cancelAnimationFrame(frame);\n this.closeFrames.delete(id);\n }\n\n for (const id of this.domIds.keys()) {\n if (recordIds.has(id)) continue;\n this.closeEvents.delete(id);\n this.domIds.delete(id);\n this.heights.delete(id);\n this.measuredUpdateKeys.delete(id);\n this.anchoredPositions.delete(id);\n this.dismissedSwipeDirections.delete(id);\n }\n\n for (const record of records) {\n this.ensureDomId(record.id);\n if (\n record.transitionStatus === 'starting' &&\n !this.activationFrames.has(record.id)\n ) {\n const manager = this.attachedManager;\n const frame = requestAnimationFrame(() => {\n this.activationFrames.delete(record.id);\n manager?.activate(record.id);\n });\n this.activationFrames.set(record.id, frame);\n }\n\n if (record.transitionStatus === 'ending') {\n this.clearToastTimer(record.id);\n this.beginRemoval(record);\n } else {\n const watchdog = this.closeWatchdogs.get(record.id);\n if (watchdog) clearTimeout(watchdog);\n this.closeWatchdogs.delete(record.id);\n const closeFrame = this.closeFrames.get(record.id);\n if (closeFrame) cancelAnimationFrame(closeFrame);\n this.closeFrames.delete(record.id);\n this.closeEvents.delete(record.id);\n }\n }\n\n this.syncTimers();\n }\n\n private syncTimers() {\n const activeIds = new Set<string>();\n for (const record of this.records) {\n if (record.transitionStatus !== 'active') continue;\n activeIds.add(record.id);\n const duration = this.resolveToastTimeout(record);\n if (duration <= 0) {\n this.clearToastTimer(record.id);\n continue;\n }\n\n const existing = this.timers.get(record.id);\n if (!existing || existing.timerKey !== record.timerKey) {\n this.clearToastTimer(record.id);\n this.timers.set(record.id, {\n timerKey: record.timerKey,\n remaining: duration,\n startedAt: 0,\n handle: null,\n });\n }\n if (!this.isPaused) this.startToastTimer(record.id);\n }\n\n for (const id of this.timers.keys()) {\n if (!activeIds.has(id)) this.clearToastTimer(id);\n }\n }\n\n private resolveToastTimeout(record: ToastRecord): number {\n const value = record.timeout ?? this.timeout;\n if (typeof value === 'number') return Math.max(0, value);\n return resolveCssTimeMs(value, TOKEN_DEFAULTS.animationDelayLong2);\n }\n\n private startToastTimer(id: string) {\n const timer = this.timers.get(id);\n if (!timer || timer.handle || timer.remaining <= 0) return;\n timer.startedAt = Date.now();\n timer.handle = setTimeout(() => {\n timer.handle = null;\n timer.remaining = 0;\n this.manager.close(id, 'timeout');\n }, timer.remaining);\n }\n\n private pauseTimers(reason: string) {\n const wasPaused = this.isPaused;\n this.pauseReasons.add(reason);\n if (wasPaused) return;\n const now = Date.now();\n for (const timer of this.timers.values()) {\n if (!timer.handle) continue;\n clearTimeout(timer.handle);\n timer.handle = null;\n timer.remaining = Math.max(0, timer.remaining - (now - timer.startedAt));\n }\n }\n\n private resumeTimers(reason: string) {\n this.pauseReasons.delete(reason);\n if (this.isPaused) return;\n for (const id of this.timers.keys()) this.startToastTimer(id);\n }\n\n private get isPaused(): boolean {\n return this.pauseReasons.size > 0;\n }\n\n private clearToastTimer(id: string) {\n const timer = this.timers.get(id);\n if (timer?.handle) clearTimeout(timer.handle);\n this.timers.delete(id);\n }\n\n private clearAllTimers() {\n for (const timer of this.timers.values()) {\n if (timer.handle) clearTimeout(timer.handle);\n }\n for (const watchdog of this.closeWatchdogs.values()) clearTimeout(watchdog);\n this.timers.clear();\n this.closeWatchdogs.clear();\n }\n\n private beginRemoval(record: ToastRecord) {\n if (!this.closeEvents.has(record.id)) {\n this.closeEvents.add(record.id);\n this.dsToastClose.emit({\n id: record.id,\n reason: record.closeReason ?? 'programmatic',\n toast: record,\n });\n this.moveFocusAfterClose(record.id);\n }\n if (\n this.closeWatchdogs.has(record.id) ||\n this.closeFrames.has(record.id)\n ) return;\n\n const duration = resolveMotionTimeMs(\n TOKEN_DEFAULTS.motionShort3,\n TOKEN_DEFAULTS.animationDurationShort3,\n );\n if (duration <= 0) {\n queueMicrotask(() => this.completeRemoval(record));\n return;\n }\n const frame = requestAnimationFrame(() => {\n this.closeFrames.delete(record.id);\n const current = this.records.find(candidate => candidate.id === record.id);\n if (!current || current.transitionStatus !== 'ending') return;\n this.closeWatchdogs.set(\n record.id,\n setTimeout(() => this.completeRemoval(current), duration),\n );\n });\n this.closeFrames.set(record.id, frame);\n }\n\n private completeRemoval(record: ToastRecord) {\n const current = this.records.find(candidate => candidate.id === record.id);\n if (!current || current.transitionStatus !== 'ending') return;\n const watchdog = this.closeWatchdogs.get(record.id);\n if (watchdog) clearTimeout(watchdog);\n this.closeWatchdogs.delete(record.id);\n const closeFrame = this.closeFrames.get(record.id);\n if (closeFrame) cancelAnimationFrame(closeFrame);\n this.closeFrames.delete(record.id);\n const manager = this.attachedManager;\n const context = manager?.remove(record.id);\n if (manager && context) this.pendingRemovals.push({ manager, context });\n }\n\n private handleAnimationComplete(record: ToastRecord) {\n if (record.transitionStatus === 'ending') this.completeRemoval(record);\n }\n\n private bindAnimationCancel(element: HTMLDivElement | undefined, id: string) {\n if (!element || element.dataset['cancelBound'] === 'true') return;\n element.dataset['cancelBound'] = 'true';\n element.addEventListener('animationcancel', () => {\n const record = this.records.find(candidate => candidate.id === id);\n if (record) this.handleAnimationComplete(record);\n });\n }\n\n private handleWindowBlur = () => this.pauseTimers('window');\n private handleWindowFocus = () => this.resumeTimers('window');\n private handleVisibilityChange = () => {\n if (document.hidden) this.pauseTimers('document');\n else this.resumeTimers('document');\n };\n\n private handlePointerEnter(id: string) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias -- pointer interaction selects the viewport that receives F6\n activeToastRegion = this;\n this.pendingHoverLeave = false;\n this.hoveredIds.add(id);\n this.expanded = true;\n this.pauseTimers('hover');\n }\n\n private handlePointerLeave(id: string) {\n this.hoveredIds.delete(id);\n if (this.hoveredIds.size) return;\n if (this.records.some(record => record.transitionStatus === 'ending')) {\n this.pendingHoverLeave = true;\n return;\n }\n this.expanded = false;\n this.resumeTimers('hover');\n }\n\n private handleFocusIn = () => {\n const active = document.activeElement;\n if (!(active instanceof HTMLElement) || !active.matches(':focus-visible')) return;\n // eslint-disable-next-line @typescript-eslint/no-this-alias -- module coordinator routes F6 to the last focused viewport\n activeToastRegion = this;\n this.keyboardActive = true;\n this.expanded = true;\n this.pauseTimers('focus');\n };\n\n private handleFocusOut = (event: FocusEvent) => {\n const next = event.relatedTarget;\n if (next instanceof Node && this.el.contains(next)) return;\n if (!this.keyboardActive) return;\n this.keyboardActive = false;\n this.expanded = this.hoveredIds.size > 0;\n this.resumeTimers('focus');\n };\n\n private handleDocumentKeyDown = (event: KeyboardEvent) => {\n if (event.key !== 'F6') return;\n const eligible = Array.from(connectedToastRegions).filter(\n region => region.activeRecords.length > 0,\n );\n const target =\n activeToastRegion && activeToastRegion.activeRecords.length\n ? activeToastRegion\n : eligible[eligible.length - 1];\n if (target !== this) return;\n event.preventDefault();\n if (!this.el.contains(document.activeElement)) {\n this.previousFocus = document.activeElement as HTMLElement | null;\n }\n this.keyboardActive = true;\n this.regionElement?.focus();\n };\n\n private handleRegionKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n const target = event.target as HTMLElement;\n const positioner = target.closest<HTMLElement>('.toast-positioner');\n const id = positioner?.dataset['toastId'] ?? this.activeRecords[0]?.id;\n if (id) {\n event.preventDefault();\n this.manager.close(id, 'escape');\n }\n return;\n }\n\n if (event.key === 'Tab' && event.shiftKey && event.target === this.regionElement) {\n event.preventDefault();\n this.restorePreviousFocus();\n }\n };\n\n private get regionElement(): HTMLElement | null {\n return this.el.querySelector<HTMLElement>('.toast-region');\n }\n\n private restorePreviousFocus() {\n this.previousFocus?.focus?.();\n this.previousFocus = null;\n this.keyboardActive = false;\n }\n\n private moveFocusAfterClose(id: string) {\n const active = document.activeElement;\n const closing = this.positionerElement(id);\n if (!active || !closing?.contains(active)) return;\n requestAnimationFrame(() => {\n const next = this.activeRecords.find(record => record.id !== id);\n const control = next\n ? this.positionerElement(next.id)?.querySelector<\n HTMLElement & { setFocus?: () => Promise<void> }\n >('ds-button-unfilled')\n : null;\n if (control?.setFocus) void control.setFocus();\n else if (next) this.regionElement?.focus();\n else this.restorePreviousFocus();\n });\n }\n\n private handleAction(record: ToastRecord, event: CustomEvent<MouseEvent>) {\n const detail: ToastActionEventDetail = {\n id: record.id,\n toast: record,\n originalEvent: event.detail,\n };\n this.dsToastAction.emit(detail);\n record.action?.onAction?.({\n id: record.id,\n data: record.data,\n manager: this.manager,\n originalEvent: event.detail,\n });\n }\n\n private handlePointerDown(record: ToastRecord, event: PointerEvent) {\n if (event.button !== 0) return;\n const target = event.target as Element;\n if (target.closest(INTERACTIVE_SWIPE_SELECTOR)) return;\n\n const surface = event.currentTarget as HTMLElement;\n surface.setPointerCapture(event.pointerId);\n this.activeSwipe = {\n id: record.id,\n pointerId: event.pointerId,\n pointerType: event.pointerType,\n startX: event.clientX,\n startY: event.clientY,\n maxDistance: 0,\n cancelled: false,\n axis: null,\n };\n this.swipe = { id: record.id, x: 0, y: 0 };\n if (event.pointerType === 'touch') this.pauseTimers('swipe');\n }\n\n private handlePointerMove(event: PointerEvent) {\n const active = this.activeSwipe;\n if (!active || active.pointerId !== event.pointerId || active.cancelled) return;\n const dx = event.clientX - active.startX;\n const dy = event.clientY - active.startY;\n if (!active.axis && Math.max(Math.abs(dx), Math.abs(dy)) > 1) {\n active.axis = Math.abs(dx) >= Math.abs(dy) ? 'x' : 'y';\n }\n if (!active.axis) return;\n const horizontal = active.axis === 'x';\n const direction: ToastSwipeDirection = horizontal\n ? dx >= 0 ? 'right' : 'left'\n : dy >= 0 ? 'down' : 'up';\n const allowed = this.swipeDirections.includes(direction);\n const rawDistance = horizontal ? Math.abs(dx) : Math.abs(dy);\n const distance = allowed ? rawDistance : Math.sqrt(rawDistance);\n const signed = (horizontal ? dx : dy) < 0 ? -distance : distance;\n const x = horizontal ? signed : 0;\n const y = horizontal ? 0 : signed;\n\n if (active.maxDistance - distance >= SWIPE_REVERSE_CANCEL_THRESHOLD) {\n active.cancelled = true;\n this.cancelSwipe();\n return;\n }\n active.maxDistance = Math.max(active.maxDistance, distance);\n if (rawDistance > 1) event.preventDefault();\n this.swipe = { id: active.id, x, y, direction: allowed ? direction : undefined };\n }\n\n private handlePointerUp(event: PointerEvent) {\n const active = this.activeSwipe;\n if (!active || active.pointerId !== event.pointerId) return;\n const swipe = this.swipe;\n const distance = swipe ? Math.max(Math.abs(swipe.x), Math.abs(swipe.y)) : 0;\n const shouldDismiss =\n !active.cancelled &&\n !!swipe?.direction &&\n distance >= SWIPE_THRESHOLD;\n const id = active.id;\n const wasTouch = active.pointerType === 'touch';\n this.activeSwipe = null;\n this.swipe = null;\n if (wasTouch) this.resumeTimers('swipe');\n if (shouldDismiss && swipe.direction) {\n this.dismissedSwipeDirections.set(id, swipe.direction);\n this.manager.close(id, 'swipe');\n }\n }\n\n private handlePointerCancel(event: PointerEvent) {\n if (this.activeSwipe?.pointerId !== event.pointerId) return;\n this.cancelSwipe();\n }\n\n private cancelSwipe() {\n const wasTouch = this.activeSwipe?.pointerType === 'touch';\n this.activeSwipe = null;\n this.swipe = null;\n if (wasTouch) this.resumeTimers('swipe');\n }\n\n private get touchAction(): string {\n const horizontal =\n this.swipeDirections.includes('left') || this.swipeDirections.includes('right');\n const vertical =\n this.swipeDirections.includes('up') || this.swipeDirections.includes('down');\n if (horizontal && vertical) return 'none';\n if (horizontal) return 'pan-y';\n if (vertical) return 'pan-x';\n return 'auto';\n }\n\n private handleWindowResize = () => {\n this.heights.clear();\n this.measuredUpdateKeys.clear();\n this.layoutVersion += 1;\n this.scheduleLayout();\n };\n\n private scheduleLayout = () => {\n if (this.layoutFrame !== null) return;\n this.layoutFrame = requestAnimationFrame(() => {\n this.layoutFrame = null;\n this.measureLayout();\n });\n };\n\n private measureNaturalHeight(element: HTMLElement, expandedWidth: boolean): number {\n const surface = element.querySelector<HTMLElement>('.toast-surface');\n if (!surface) return 0;\n const previousWidth = element.style.width;\n const previousTransition = element.style.transition;\n const previousHeight = surface.style.height;\n\n if (expandedWidth) {\n element.style.transition = 'none';\n element.style.width = '100%';\n }\n surface.style.height = 'auto';\n const height = surface.getBoundingClientRect().height;\n\n surface.style.height = previousHeight;\n if (expandedWidth) {\n element.style.width = previousWidth;\n element.getBoundingClientRect();\n element.style.transition = previousTransition;\n }\n return height;\n }\n\n private measureLayout() {\n let changed = false;\n for (const record of this.records) {\n const element = this.positionerElement(record.id);\n if (!element) continue;\n let height = this.heights.get(record.id) ?? 0;\n const needsHeightMeasurement =\n height <= 0 || this.measuredUpdateKeys.get(record.id) !== record.updateKey;\n if (needsHeightMeasurement) {\n height = this.measureNaturalHeight(element, !record.positioner);\n if (height > 0) {\n if (this.heights.get(record.id) !== height) changed = true;\n this.heights.set(record.id, height);\n this.measuredUpdateKeys.set(record.id, record.updateKey);\n }\n }\n\n if (!record.positioner) continue;\n const anchor = this.resolveAnchor(record.positioner.anchor);\n if (!anchor || height <= 0) {\n if (this.anchoredPositions.delete(record.id)) changed = true;\n continue;\n }\n const rect = element.getBoundingClientRect();\n const sideOffset = resolveCssLengthPx(\n record.positioner.sideOffset,\n TOKEN_DEFAULTS.space050,\n );\n const alignOffset = resolveCssLengthPx(record.positioner.alignOffset, 0);\n const position = computeAnchoredPosition({\n anchorRect: anchor.getBoundingClientRect(),\n popupWidth: rect.width,\n popupHeight: height,\n side: record.positioner.side ?? 'top',\n align: record.positioner.align ?? 'center',\n sideOffsetPx: sideOffset,\n alignOffsetPx: alignOffset,\n viewportPadPx: resolveCssLengthPx(undefined, TOKEN_DEFAULTS.space200),\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n });\n const current = this.anchoredPositions.get(record.id);\n if (\n !current ||\n current.x !== position.x ||\n current.y !== position.y ||\n current.side !== position.resolvedSide\n ) {\n this.anchoredPositions.set(record.id, {\n x: position.x,\n y: position.y,\n side: position.resolvedSide,\n });\n changed = true;\n }\n }\n if (changed) this.layoutVersion += 1;\n }\n\n private resolveAnchor(anchor: HTMLElement | string): HTMLElement | null {\n return typeof anchor === 'string' ? document.getElementById(anchor) : anchor;\n }\n\n private positionerElement(id: string): HTMLElement | null {\n return (\n Array.from(this.el.querySelectorAll<HTMLElement>('.toast-positioner'))\n .find(element => element.dataset['toastId'] === id) ?? null\n );\n }\n\n private ensureDomId(id: string): number {\n const current = this.domIds.get(id);\n if (current) return current;\n const next = ++this.nextDomId;\n this.domIds.set(id, next);\n return next;\n }\n\n private get activeRecords(): ToastRecord[] {\n return this.records.filter(record => record.transitionStatus !== 'ending');\n }\n\n private globalLayout() {\n const globalRecords = this.records.filter(record => !record.positioner);\n let offset = 0;\n let visibleIndex = 0;\n const gap = resolveCssLengthPx(undefined, TOKEN_DEFAULTS.space200);\n const layouts = new Map<string, { index: number; offset: number; limited: boolean }>();\n\n globalRecords.forEach((record, domIndex) => {\n if (record.transitionStatus === 'ending') {\n layouts.set(record.id, { index: domIndex, offset, limited: false });\n return;\n }\n\n const limited = visibleIndex >= Math.max(1, this.limit);\n layouts.set(record.id, { index: visibleIndex, offset, limited });\n offset += (this.heights.get(record.id) ?? 0) + gap;\n visibleIndex += 1;\n });\n return layouts;\n }\n\n private renderToast(\n record: ToastRecord,\n layout: { index: number; offset: number; limited: boolean },\n ) {\n const domId = this.ensureDomId(record.id);\n const titleId = `ds-toast-${this.instanceId}-${domId}-title`;\n const descriptionId = `ds-toast-${this.instanceId}-${domId}-description`;\n const swipe = this.swipe?.id === record.id ? this.swipe : null;\n const swipeDirection = swipe?.direction ?? this.dismissedSwipeDirections.get(record.id);\n const anchored = !!record.positioner;\n const anchoredPosition = this.anchoredPositions.get(record.id);\n const hiddenHighPriority = record.priority === 'high' && !this.keyboardActive;\n const focusTabIndex = this.keyboardActive && !layout.limited ? 0 : -1;\n const toastHeight = this.heights.get(record.id);\n\n return (\n <div\n ref={(element?: HTMLDivElement) => this.bindAnimationCancel(element, record.id)}\n class={{\n 'toast-positioner': true,\n 'toast-positioner--anchored': anchored,\n 'toast-positioner--ending': record.transitionStatus === 'ending',\n }}\n data-toast-id={record.id}\n data-behind={!anchored && layout.index > 0 ? '' : undefined}\n data-limited={layout.limited ? '' : undefined}\n data-positioned={anchored ? String(!!anchoredPosition) : undefined}\n data-side={anchoredPosition?.side}\n inert={layout.limited ? true : undefined}\n aria-hidden={layout.limited ? 'true' : undefined}\n style={{\n '--toast-index': String(layout.index),\n '--toast-offset-y': `${layout.offset}px`,\n '--toast-height': toastHeight ? `${toastHeight}px` : undefined,\n zIndex: String(this.records.length - layout.index),\n left: anchoredPosition ? `${anchoredPosition.x}px` : undefined,\n top: anchoredPosition ? `${anchoredPosition.y}px` : undefined,\n }}\n onAnimationEnd={() => this.handleAnimationComplete(record)}\n >\n <div\n class={{\n 'toast-surface': true,\n 'toast-surface--swiping': !!swipe,\n }}\n role={record.priority === 'high' ? 'alertdialog' : 'dialog'}\n aria-modal=\"false\"\n aria-labelledby={\n record.title ? titleId : record.description ? descriptionId : undefined\n }\n aria-describedby={record.title && record.description ? descriptionId : undefined}\n aria-hidden={hiddenHighPriority ? 'true' : undefined}\n data-type={record.type}\n data-priority={record.priority}\n data-transition-status={record.transitionStatus}\n data-swiping={swipe ? '' : undefined}\n data-swipe-direction={swipeDirection}\n style={{\n '--toast-swipe-movement-x': `${swipe?.x ?? 0}px`,\n '--toast-swipe-movement-y': `${swipe?.y ?? 0}px`,\n touchAction: this.touchAction,\n }}\n onPointerDown={(event: PointerEvent) => this.handlePointerDown(record, event)}\n onPointerMove={(event: PointerEvent) => this.handlePointerMove(event)}\n onPointerUp={(event: PointerEvent) => this.handlePointerUp(event)}\n onPointerCancel={(event: PointerEvent) => this.handlePointerCancel(event)}\n onPointerEnter={\n anchored ? () => this.handlePointerEnter(record.id) : undefined\n }\n onPointerLeave={\n anchored ? () => this.handlePointerLeave(record.id) : undefined\n }\n >\n <div class=\"toast-content\">\n <div class=\"toast-copy\">\n {record.title && (\n <ds-text\n class=\"toast-title\"\n as=\"div\"\n variant=\"text-title-small\"\n color=\"primary\"\n textId={titleId}\n >\n {record.title}\n </ds-text>\n )}\n {record.description && (\n <ds-text\n class=\"toast-description\"\n as=\"div\"\n variant=\"text-body-medium\"\n color=\"secondary\"\n textId={descriptionId}\n >\n {record.description}\n </ds-text>\n )}\n </div>\n {record.action && (\n <ds-button-unfilled\n class=\"toast-action\"\n variant=\"label\"\n size=\"md\"\n type=\"button\"\n label={record.action.label}\n aria-label={record.action.ariaLabel}\n hasBorder\n focusTabIndex={focusTabIndex}\n aria-hidden={!this.keyboardActive ? 'true' : undefined}\n onDsClick={(event: CustomEvent<MouseEvent>) =>\n this.handleAction(record, event)\n }\n />\n )}\n </div>\n <ds-button-unfilled\n class=\"toast-close\"\n variant=\"icon\"\n size=\"md\"\n type=\"button\"\n icon=\"Cross\"\n aria-label={this.closeLabel}\n hasBorder={false}\n activeFill={false}\n focusTabIndex={focusTabIndex}\n aria-hidden={!this.keyboardActive ? 'true' : undefined}\n onDsClick={() => this.manager.close(record.id, 'close-button')}\n />\n </div>\n </div>\n );\n }\n\n render() {\n void this.layoutVersion;\n const globalLayouts = this.globalLayout();\n const globalRecords = this.records.filter(record => !record.positioner);\n const anchoredRecords = this.records.filter(record => !!record.positioner);\n const highPriority = this.records.filter(\n record =>\n record.priority === 'high' &&\n record.transitionStatus !== 'ending' &&\n !globalLayouts.get(record.id)?.limited,\n );\n\n return (\n <Host>\n <section\n class=\"toast-region\"\n role=\"region\"\n aria-label={this.label}\n aria-live=\"polite\"\n aria-atomic=\"false\"\n aria-relevant=\"additions text\"\n tabIndex={-1}\n onFocusin={this.handleFocusIn}\n onFocusout={(event: FocusEvent) => this.handleFocusOut(event)}\n onKeyDown={(event: KeyboardEvent) => this.handleRegionKeyDown(event)}\n >\n <div\n class=\"toast-viewport\"\n data-expanded={this.expanded ? '' : undefined}\n onPointerEnter={() => this.handlePointerEnter(GLOBAL_STACK_HOVER)}\n onPointerLeave={() => this.handlePointerLeave(GLOBAL_STACK_HOVER)}\n >\n {globalRecords.map(record =>\n this.renderToast(\n record,\n globalLayouts.get(record.id) ?? { index: 0, offset: 0, limited: false },\n )\n )}\n </div>\n <div class=\"toast-anchored-layer\">\n {anchoredRecords.map(record =>\n this.renderToast(record, { index: 0, offset: 0, limited: false })\n )}\n </div>\n <div class=\"toast-assertive-announcer ds-visually-hidden\">\n {highPriority.map(record => (\n <div role=\"alert\" aria-atomic=\"true\">\n {[record.title, record.description].filter(Boolean).join('. ')}\n </div>\n ))}\n </div>\n </section>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{T as o,d as s}from"./p-BkAMkjIR.js";const t=o;const p=s;export{t as DsTooltipDataViz,p as defineCustomElement};
1
+ import{T as s,d as o}from"./p-BlHzmszE.js";const t=s;const m=o;export{t as DsTooltipDataViz,m as defineCustomElement};
2
2
  //# sourceMappingURL=ds-tooltip-data-viz.js.map
@@ -1,2 +1,2 @@
1
- import{T as o,d as s}from"./p-DWdRSOBV.js";const t=o;const p=s;export{t as DsTooltip,p as defineCustomElement};
1
+ import{T as o,d as s}from"./p-69lHhJiX.js";const t=o;const p=s;export{t as DsTooltip,p as defineCustomElement};
2
2
  //# sourceMappingURL=ds-tooltip.js.map
@@ -1,2 +1,2 @@
1
- import{p as t,H as s,h as e,a as i,t as n}from"./index.js";import{d as a}from"./p-BwGnhInj.js";const o=()=>`.sc-ds-typing-indicator-h{display:block;width:100%;min-width:0;box-sizing:border-box}`;const r=t(class t extends s{constructor(t){super();if(t!==false){this.__registerHost()}this.label="Typing..."}render(){return e(i,{key:"3525aa06ebd7573414476b74e223b7cbf526aac9",role:"status","aria-live":"polite","aria-atomic":"true"},e("ds-text",{key:"07670b56441812f53e73ecf98155f370d31b1875",as:"span",variant:"text-body-medium",color:"secondary",shimmer:true},this.label))}static get style(){return o()}},[2,"ds-typing-indicator",{label:[1]}]);function c(){if(typeof customElements==="undefined"){return}const t=["ds-typing-indicator","ds-text"];t.forEach((t=>{switch(t){case"ds-typing-indicator":if(!customElements.get(n(t))){customElements.define(n(t),r)}break;case"ds-text":if(!customElements.get(n(t))){a()}break}}))}c();const d=r;const m=c;export{d as DsTypingIndicator,m as defineCustomElement};
1
+ import{p as t,H as s,h as e,a as i,t as a}from"./index.js";import{d as n}from"./p-CPwpgUWT.js";const o=()=>`.sc-ds-typing-indicator-h{display:block;width:100%;min-width:0;box-sizing:border-box}`;const r=t(class t extends s{constructor(t){super();if(t!==false){this.__registerHost()}this.label="Typing..."}render(){return e(i,{key:"5f4e656b682a0de17d9188c303f68b5aabaa8eab",role:"status","aria-live":"polite","aria-atomic":"true"},e("ds-text",{key:"8f73adf2fb2463ab17607850f0021586a946bba7",as:"span",variant:"text-body-medium",color:"secondary",shimmer:true},this.label))}static get style(){return o()}},[2,"ds-typing-indicator",{label:[1]}]);function c(){if(typeof customElements==="undefined"){return}const t=["ds-typing-indicator","ds-text"];t.forEach((t=>{switch(t){case"ds-typing-indicator":if(!customElements.get(a(t))){customElements.define(a(t),r)}break;case"ds-text":if(!customElements.get(a(t))){n()}break}}))}c();const d=r;const m=c;export{d as DsTypingIndicator,m as defineCustomElement};
2
2
  //# sourceMappingURL=ds-typing-indicator.js.map
@@ -0,0 +1,2 @@
1
+ import{r as n}from"./p-BJMRBHKW.js";import{T as t}from"./p-BBePKRHC.js";function r(n,t){return n==null||t==null?NaN:n<t?-1:n>t?1:n>=t?0:NaN}function e(n,t){return n==null||t==null?NaN:t<n?-1:t>n?1:t>=n?0:NaN}function i(n){let t,i,a;if(n.length!==2){t=r;i=(t,e)=>r(n(t),e);a=(t,r)=>n(t)-r}else{t=n===r||n===e?n:u;i=n;a=n}function f(n,r,e=0,u=n.length){if(e<u){if(t(r,r)!==0)return u;do{const t=e+u>>>1;if(i(n[t],r)<0)e=t+1;else u=t}while(e<u)}return e}function o(n,r,e=0,u=n.length){if(e<u){if(t(r,r)!==0)return u;do{const t=e+u>>>1;if(i(n[t],r)<=0)e=t+1;else u=t}while(e<u)}return e}function s(n,t,r=0,e=n.length){const i=f(n,t,r,e-1);return i>r&&a(n[i-1],t)>-a(n[i],t)?i-1:i}return{left:f,center:s,right:o}}function u(){return 0}function a(n){return n===null?NaN:+n}const f=i(r);const o=f.right;i(a).center;class s extends Map{constructor(n,t=d){super();Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}});if(n!=null)for(const[t,r]of n)this.set(t,r)}get(n){return super.get(h(this,n))}has(n){return super.has(h(this,n))}set(n,t){return super.set(c(this,n),t)}delete(n){return super.delete(l(this,n))}}function h({_intern:n,_key:t},r){const e=t(r);return n.has(e)?n.get(e):r}function c({_intern:n,_key:t},r){const e=t(r);if(n.has(e))return n.get(e);n.set(e,r);return r}function l({_intern:n,_key:t},r){const e=t(r);if(n.has(e)){r=n.get(e);n.delete(e)}return r}function d(n){return n!==null&&typeof n==="object"?n.valueOf():n}const g=Math.sqrt(50),M=Math.sqrt(10),v=Math.sqrt(2);function w(n,t,r){const e=(t-n)/Math.max(0,r),i=Math.floor(Math.log10(e)),u=e/Math.pow(10,i),a=u>=g?10:u>=M?5:u>=v?2:1;let f,o,s;if(i<0){s=Math.pow(10,-i)/a;f=Math.round(n*s);o=Math.round(t*s);if(f/s<n)++f;if(o/s>t)--o;s=-s}else{s=Math.pow(10,i)*a;f=Math.round(n/s);o=Math.round(t/s);if(f*s<n)++f;if(o*s>t)--o}if(o<f&&.5<=r&&r<2)return w(n,t,r*2);return[f,o,s]}function b(n,t,r){t=+t,n=+n,r=+r;if(!(r>0))return[];if(n===t)return[n];const e=t<n,[i,u,a]=e?w(t,n,r):w(n,t,r);if(!(u>=i))return[];const f=u-i+1,o=new Array(f);if(e){if(a<0)for(let n=0;n<f;++n)o[n]=(u-n)/-a;else for(let n=0;n<f;++n)o[n]=(u-n)*a}else{if(a<0)for(let n=0;n<f;++n)o[n]=(i+n)/-a;else for(let n=0;n<f;++n)o[n]=(i+n)*a}return o}function y(n,t,r){t=+t,n=+n,r=+r;return w(n,t,r)[2]}function p(n,t,r){t=+t,n=+n,r=+r;const e=t<n,i=e?y(t,n,r):y(n,t,r);return(e?-1:1)*(i<0?1/-i:i)}function m(n,t,r){n=+n,t=+t,r=(i=arguments.length)<2?(t=n,n=0,1):i<3?1:+r;var e=-1,i=Math.max(0,Math.ceil((t-n)/r))|0,u=new Array(i);while(++e<i){u[e]=n+e*r}return u}function N(n,t){switch(arguments.length){case 0:break;case 1:this.range(n);break;default:this.range(t).domain(n);break}return this}const k=Symbol("implicit");function $(){var n=new s,t=[],r=[],e=k;function i(i){let u=n.get(i);if(u===undefined){if(e!==k)return e;n.set(i,u=t.push(i)-1)}return r[u%r.length]}i.domain=function(r){if(!arguments.length)return t.slice();t=[],n=new s;for(const e of r){if(n.has(e))continue;n.set(e,t.push(e)-1)}return i};i.range=function(n){return arguments.length?(r=Array.from(n),i):r.slice()};i.unknown=function(n){return arguments.length?(e=n,i):e};i.copy=function(){return $(t,r).unknown(e)};N.apply(i,arguments);return i}function x(){var n=$().unknown(undefined),t=n.domain,r=n.range,e=0,i=1,u,a,f=false,o=0,s=0,h=.5;delete n.unknown;function c(){var n=t().length,c=i<e,l=c?i:e,d=c?e:i;u=(d-l)/Math.max(1,n-o+s*2);if(f)u=Math.floor(u);l+=(d-l-u*(n-o))*h;a=u*(1-o);if(f)l=Math.round(l),a=Math.round(a);var g=m(n).map((function(n){return l+u*n}));return r(c?g.reverse():g)}n.domain=function(n){return arguments.length?(t(n),c()):t()};n.range=function(n){return arguments.length?([e,i]=n,e=+e,i=+i,c()):[e,i]};n.rangeRound=function(n){return[e,i]=n,e=+e,i=+i,f=true,c()};n.bandwidth=function(){return a};n.step=function(){return u};n.round=function(n){return arguments.length?(f=!!n,c()):f};n.padding=function(n){return arguments.length?(o=Math.min(1,s=+n),c()):o};n.paddingInner=function(n){return arguments.length?(o=Math.min(1,n),c()):o};n.paddingOuter=function(n){return arguments.length?(s=+n,c()):s};n.align=function(n){return arguments.length?(h=Math.max(0,Math.min(1,n)),c()):h};n.copy=function(){return x(t(),[e,i]).round(f).paddingInner(o).paddingOuter(s).align(h)};return N.apply(c(),arguments)}function A(n){var t=n.copy;n.padding=n.paddingOuter;delete n.paddingInner;delete n.paddingOuter;n.copy=function(){return A(t())};return n}function R(){return A(x.apply(null,arguments).paddingInner(1))}function E(n,t,r){n.prototype=t.prototype=r;r.constructor=n}function j(n,t){var r=Object.create(n.prototype);for(var e in t)r[e]=t[e];return r}function q(){}var H=.7;var _=1/H;var z="\\s*([+-]?\\d+)\\s*",O="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",B="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",S=/^#([0-9a-f]{3,8})$/,D=new RegExp(`^rgb\\(${z},${z},${z}\\)$`),I=new RegExp(`^rgb\\(${B},${B},${B}\\)$`),P=new RegExp(`^rgba\\(${z},${z},${z},${O}\\)$`),C=new RegExp(`^rgba\\(${B},${B},${B},${O}\\)$`),G=new RegExp(`^hsl\\(${O},${B},${B}\\)$`),K=new RegExp(`^hsla\\(${O},${B},${B},${O}\\)$`);var L={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};E(q,V,{copy(n){return Object.assign(new this.constructor,this,n)},displayable(){return this.rgb().displayable()},hex:T,formatHex:T,formatHex8:X,formatHsl:F,formatRgb:J,toString:J});function T(){return this.rgb().formatHex()}function X(){return this.rgb().formatHex8()}function F(){return on(this).formatHsl()}function J(){return this.rgb().formatRgb()}function V(n){var t,r;n=(n+"").trim().toLowerCase();return(t=S.exec(n))?(r=t[1].length,t=parseInt(t[1],16),r===6?W(t):r===3?new U(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?Y(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?Y(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=D.exec(n))?new U(t[1],t[2],t[3],1):(t=I.exec(n))?new U(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=P.exec(n))?Y(t[1],t[2],t[3],t[4]):(t=C.exec(n))?Y(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=G.exec(n))?fn(t[1],t[2]/100,t[3]/100,1):(t=K.exec(n))?fn(t[1],t[2]/100,t[3]/100,t[4]):L.hasOwnProperty(n)?W(L[n]):n==="transparent"?new U(NaN,NaN,NaN,0):null}function W(n){return new U(n>>16&255,n>>8&255,n&255,1)}function Y(n,t,r,e){if(e<=0)n=t=r=NaN;return new U(n,t,r,e)}function Z(n){if(!(n instanceof q))n=V(n);if(!n)return new U;n=n.rgb();return new U(n.r,n.g,n.b,n.opacity)}function Q(n,t,r,e){return arguments.length===1?Z(n):new U(n,t,r,e==null?1:e)}function U(n,t,r,e){this.r=+n;this.g=+t;this.b=+r;this.opacity=+e}E(U,Q,j(q,{brighter(n){n=n==null?_:Math.pow(_,n);return new U(this.r*n,this.g*n,this.b*n,this.opacity)},darker(n){n=n==null?H:Math.pow(H,n);return new U(this.r*n,this.g*n,this.b*n,this.opacity)},rgb(){return this},clamp(){return new U(un(this.r),un(this.g),un(this.b),en(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&(-.5<=this.g&&this.g<255.5)&&(-.5<=this.b&&this.b<255.5)&&(0<=this.opacity&&this.opacity<=1)},hex:nn,formatHex:nn,formatHex8:tn,formatRgb:rn,toString:rn}));function nn(){return`#${an(this.r)}${an(this.g)}${an(this.b)}`}function tn(){return`#${an(this.r)}${an(this.g)}${an(this.b)}${an((isNaN(this.opacity)?1:this.opacity)*255)}`}function rn(){const n=en(this.opacity);return`${n===1?"rgb(":"rgba("}${un(this.r)}, ${un(this.g)}, ${un(this.b)}${n===1?")":`, ${n})`}`}function en(n){return isNaN(n)?1:Math.max(0,Math.min(1,n))}function un(n){return Math.max(0,Math.min(255,Math.round(n)||0))}function an(n){n=un(n);return(n<16?"0":"")+n.toString(16)}function fn(n,t,r,e){if(e<=0)n=t=r=NaN;else if(r<=0||r>=1)n=t=NaN;else if(t<=0)n=NaN;return new hn(n,t,r,e)}function on(n){if(n instanceof hn)return new hn(n.h,n.s,n.l,n.opacity);if(!(n instanceof q))n=V(n);if(!n)return new hn;if(n instanceof hn)return n;n=n.rgb();var t=n.r/255,r=n.g/255,e=n.b/255,i=Math.min(t,r,e),u=Math.max(t,r,e),a=NaN,f=u-i,o=(u+i)/2;if(f){if(t===u)a=(r-e)/f+(r<e)*6;else if(r===u)a=(e-t)/f+2;else a=(t-r)/f+4;f/=o<.5?u+i:2-u-i;a*=60}else{f=o>0&&o<1?0:a}return new hn(a,f,o,n.opacity)}function sn(n,t,r,e){return arguments.length===1?on(n):new hn(n,t,r,e==null?1:e)}function hn(n,t,r,e){this.h=+n;this.s=+t;this.l=+r;this.opacity=+e}E(hn,sn,j(q,{brighter(n){n=n==null?_:Math.pow(_,n);return new hn(this.h,this.s,this.l*n,this.opacity)},darker(n){n=n==null?H:Math.pow(H,n);return new hn(this.h,this.s,this.l*n,this.opacity)},rgb(){var n=this.h%360+(this.h<0)*360,t=isNaN(n)||isNaN(this.s)?0:this.s,r=this.l,e=r+(r<.5?r:1-r)*t,i=2*r-e;return new U(dn(n>=240?n-240:n+120,i,e),dn(n,i,e),dn(n<120?n+240:n-120,i,e),this.opacity)},clamp(){return new hn(cn(this.h),ln(this.s),ln(this.l),en(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&(0<=this.l&&this.l<=1)&&(0<=this.opacity&&this.opacity<=1)},formatHsl(){const n=en(this.opacity);return`${n===1?"hsl(":"hsla("}${cn(this.h)}, ${ln(this.s)*100}%, ${ln(this.l)*100}%${n===1?")":`, ${n})`}`}}));function cn(n){n=(n||0)%360;return n<0?n+360:n}function ln(n){return Math.max(0,Math.min(1,n||0))}function dn(n,t,r){return(n<60?t+(r-t)*n/60:n<180?r:n<240?t+(r-t)*(240-n)/60:t)*255}var gn=n=>()=>n;function Mn(n,t){return function(r){return n+r*t}}function vn(n,t,r){return n=Math.pow(n,r),t=Math.pow(t,r)-n,r=1/r,function(e){return Math.pow(n+e*t,r)}}function wn(n){return(n=+n)===1?bn:function(t,r){return r-t?vn(t,r,n):gn(isNaN(t)?r:t)}}function bn(n,t){var r=t-n;return r?Mn(n,r):gn(isNaN(n)?t:n)}var yn=function n(t){var r=wn(t);function e(n,t){var e=r((n=Q(n)).r,(t=Q(t)).r),i=r(n.g,t.g),u=r(n.b,t.b),a=bn(n.opacity,t.opacity);return function(t){n.r=e(t);n.g=i(t);n.b=u(t);n.opacity=a(t);return n+""}}e.gamma=n;return e}(1);function pn(n,t){if(!t)t=[];var r=n?Math.min(t.length,n.length):0,e=t.slice(),i;return function(u){for(i=0;i<r;++i)e[i]=n[i]*(1-u)+t[i]*u;return e}}function mn(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}function Nn(n,t){var r=t?t.length:0,e=n?Math.min(r,n.length):0,i=new Array(e),u=new Array(r),a;for(a=0;a<e;++a)i[a]=Hn(n[a],t[a]);for(;a<r;++a)u[a]=t[a];return function(n){for(a=0;a<e;++a)u[a]=i[a](n);return u}}function kn(n,t){var r=new Date;return n=+n,t=+t,function(e){return r.setTime(n*(1-e)+t*e),r}}function $n(n,t){return n=+n,t=+t,function(r){return n*(1-r)+t*r}}function xn(n,t){var r={},e={},i;if(n===null||typeof n!=="object")n={};if(t===null||typeof t!=="object")t={};for(i in t){if(i in n){r[i]=Hn(n[i],t[i])}else{e[i]=t[i]}}return function(n){for(i in r)e[i]=r[i](n);return e}}var An=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Rn=new RegExp(An.source,"g");function En(n){return function(){return n}}function jn(n){return function(t){return n(t)+""}}function qn(n,t){var r=An.lastIndex=Rn.lastIndex=0,e,i,u,a=-1,f=[],o=[];n=n+"",t=t+"";while((e=An.exec(n))&&(i=Rn.exec(t))){if((u=i.index)>r){u=t.slice(r,u);if(f[a])f[a]+=u;else f[++a]=u}if((e=e[0])===(i=i[0])){if(f[a])f[a]+=i;else f[++a]=i}else{f[++a]=null;o.push({i:a,x:$n(e,i)})}r=Rn.lastIndex}if(r<t.length){u=t.slice(r);if(f[a])f[a]+=u;else f[++a]=u}return f.length<2?o[0]?jn(o[0].x):En(t):(t=o.length,function(n){for(var r=0,e;r<t;++r)f[(e=o[r]).i]=e.x(n);return f.join("")})}function Hn(n,t){var r=typeof t,e;return t==null||r==="boolean"?gn(t):(r==="number"?$n:r==="string"?(e=V(t))?(t=e,yn):qn:t instanceof V?yn:t instanceof Date?kn:mn(t)?pn:Array.isArray(t)?Nn:typeof t.valueOf!=="function"&&typeof t.toString!=="function"||isNaN(t)?xn:$n)(n,t)}function _n(n,t){return n=+n,t=+t,function(r){return Math.round(n*(1-r)+t*r)}}function zn(n){return function(){return n}}function On(n){return+n}var Bn=[0,1];function Sn(n){return n}function Dn(n,t){return(t-=n=+n)?function(r){return(r-n)/t}:zn(isNaN(t)?NaN:.5)}function In(n,t){var r;if(n>t)r=n,n=t,t=r;return function(r){return Math.max(n,Math.min(t,r))}}function Pn(n,t,r){var e=n[0],i=n[1],u=t[0],a=t[1];if(i<e)e=Dn(i,e),u=r(a,u);else e=Dn(e,i),u=r(u,a);return function(n){return u(e(n))}}function Cn(n,t,r){var e=Math.min(n.length,t.length)-1,i=new Array(e),u=new Array(e),a=-1;if(n[e]<n[0]){n=n.slice().reverse();t=t.slice().reverse()}while(++a<e){i[a]=Dn(n[a],n[a+1]);u[a]=r(t[a],t[a+1])}return function(t){var r=o(n,t,1,e)-1;return u[r](i[r](t))}}function Gn(n,t){return t.domain(n.domain()).range(n.range()).interpolate(n.interpolate()).clamp(n.clamp()).unknown(n.unknown())}function Kn(){var n=Bn,t=Bn,r=Hn,e,i,u,a=Sn,f,o,s;function h(){var r=Math.min(n.length,t.length);if(a!==Sn)a=In(n[0],n[r-1]);f=r>2?Cn:Pn;o=s=null;return c}function c(i){return i==null||isNaN(i=+i)?u:(o||(o=f(n.map(e),t,r)))(e(a(i)))}c.invert=function(r){return a(i((s||(s=f(t,n.map(e),$n)))(r)))};c.domain=function(t){return arguments.length?(n=Array.from(t,On),h()):n.slice()};c.range=function(n){return arguments.length?(t=Array.from(n),h()):t.slice()};c.rangeRound=function(n){return t=Array.from(n),r=_n,h()};c.clamp=function(n){return arguments.length?(a=n?true:Sn,h()):a!==Sn};c.interpolate=function(n){return arguments.length?(r=n,h()):r};c.unknown=function(n){return arguments.length?(u=n,c):u};return function(n,t){e=n,i=t;return h()}}function Ln(){return Kn()(Sn,Sn)}function Tn(n){return Math.abs(n=Math.round(n))>=1e21?n.toLocaleString("en").replace(/,/g,""):n.toString(10)}function Xn(n,t){if(!isFinite(n)||n===0)return null;var r=(n=t?n.toExponential(t-1):n.toExponential()).indexOf("e"),e=n.slice(0,r);return[e.length>1?e[0]+e.slice(2):e,+n.slice(r+1)]}function Fn(n){return n=Xn(Math.abs(n)),n?n[1]:NaN}function Jn(n,t){return function(r,e){var i=r.length,u=[],a=0,f=n[0],o=0;while(i>0&&f>0){if(o+f+1>e)f=Math.max(1,e-o);u.push(r.substring(i-=f,i+f));if((o+=f+1)>e)break;f=n[a=(a+1)%n.length]}return u.reverse().join(t)}}function Vn(n){return function(t){return t.replace(/[0-9]/g,(function(t){return n[+t]}))}}var Wn=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Yn(n){if(!(t=Wn.exec(n)))throw new Error("invalid format: "+n);var t;return new Zn({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}Yn.prototype=Zn.prototype;function Zn(n){this.fill=n.fill===undefined?" ":n.fill+"";this.align=n.align===undefined?">":n.align+"";this.sign=n.sign===undefined?"-":n.sign+"";this.symbol=n.symbol===undefined?"":n.symbol+"";this.zero=!!n.zero;this.width=n.width===undefined?undefined:+n.width;this.comma=!!n.comma;this.precision=n.precision===undefined?undefined:+n.precision;this.trim=!!n.trim;this.type=n.type===undefined?"":n.type+""}Zn.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===undefined?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===undefined?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function Qn(n){n:for(var t=n.length,r=1,e=-1,i;r<t;++r){switch(n[r]){case".":e=i=r;break;case"0":if(e===0)e=r;i=r;break;default:if(!+n[r])break n;if(e>0)e=0;break}}return e>0?n.slice(0,e)+n.slice(i+1):n}var Un;function nt(n,t){var r=Xn(n,t);if(!r)return Un=undefined,n.toPrecision(t);var e=r[0],i=r[1],u=i-(Un=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,a=e.length;return u===a?e:u>a?e+new Array(u-a+1).join("0"):u>0?e.slice(0,u)+"."+e.slice(u):"0."+new Array(1-u).join("0")+Xn(n,Math.max(0,t+u-1))[0]}function tt(n,t){var r=Xn(n,t);if(!r)return n+"";var e=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+e:e.length>i+1?e.slice(0,i+1)+"."+e.slice(i+1):e+new Array(i-e.length+2).join("0")}var rt={"%":(n,t)=>(n*100).toFixed(t),b:n=>Math.round(n).toString(2),c:n=>n+"",d:Tn,e:(n,t)=>n.toExponential(t),f:(n,t)=>n.toFixed(t),g:(n,t)=>n.toPrecision(t),o:n=>Math.round(n).toString(8),p:(n,t)=>tt(n*100,t),r:tt,s:nt,X:n=>Math.round(n).toString(16).toUpperCase(),x:n=>Math.round(n).toString(16)};function et(n){return n}var it=Array.prototype.map,ut=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function at(n){var t=n.grouping===undefined||n.thousands===undefined?et:Jn(it.call(n.grouping,Number),n.thousands+""),r=n.currency===undefined?"":n.currency[0]+"",e=n.currency===undefined?"":n.currency[1]+"",i=n.decimal===undefined?".":n.decimal+"",u=n.numerals===undefined?et:Vn(it.call(n.numerals,String)),a=n.percent===undefined?"%":n.percent+"",f=n.minus===undefined?"−":n.minus+"",o=n.nan===undefined?"NaN":n.nan+"";function s(n,s){n=Yn(n);var h=n.fill,c=n.align,l=n.sign,d=n.symbol,g=n.zero,M=n.width,v=n.comma,w=n.precision,b=n.trim,y=n.type;if(y==="n")v=true,y="g";else if(!rt[y])w===undefined&&(w=12),b=true,y="g";if(g||h==="0"&&c==="=")g=true,h="0",c="=";var p=(s&&s.prefix!==undefined?s.prefix:"")+(d==="$"?r:d==="#"&&/[boxX]/.test(y)?"0"+y.toLowerCase():""),m=(d==="$"?e:/[%p]/.test(y)?a:"")+(s&&s.suffix!==undefined?s.suffix:"");var N=rt[y],k=/[defgprs%]/.test(y);w=w===undefined?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function $(n){var r=p,e=m,a,s,d;if(y==="c"){e=N(n)+e;n=""}else{n=+n;var $=n<0||1/n<0;n=isNaN(n)?o:N(Math.abs(n),w);if(b)n=Qn(n);if($&&+n===0&&l!=="+")$=false;r=($?l==="("?l:f:l==="-"||l==="("?"":l)+r;e=(y==="s"&&!isNaN(n)&&Un!==undefined?ut[8+Un/3]:"")+e+($&&l==="("?")":"");if(k){a=-1,s=n.length;while(++a<s){if(d=n.charCodeAt(a),48>d||d>57){e=(d===46?i+n.slice(a+1):n.slice(a))+e;n=n.slice(0,a);break}}}}if(v&&!g)n=t(n,Infinity);var x=r.length+n.length+e.length,A=x<M?new Array(M-x+1).join(h):"";if(v&&g)n=t(A+n,A.length?M-e.length:Infinity),A="";switch(c){case"<":n=r+n+e+A;break;case"=":n=r+A+n+e;break;case"^":n=A.slice(0,x=A.length>>1)+r+n+e+A.slice(x);break;default:n=A+r+n+e;break}return u(n)}$.toString=function(){return n+""};return $}function h(n,t){var r=Math.max(-8,Math.min(8,Math.floor(Fn(t)/3)))*3,e=Math.pow(10,-r),i=s((n=Yn(n),n.type="f",n),{suffix:ut[8+r/3]});return function(n){return i(e*n)}}return{format:s,formatPrefix:h}}var ft;var ot;var st;ht({thousands:",",grouping:[3],currency:["$",""]});function ht(n){ft=at(n);ot=ft.format;st=ft.formatPrefix;return ft}function ct(n){return Math.max(0,-Fn(Math.abs(n)))}function lt(n,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Fn(t)/3)))*3-Fn(Math.abs(n)))}function dt(n,t){n=Math.abs(n),t=Math.abs(t)-n;return Math.max(0,Fn(t)-Fn(n))+1}function gt(n,t,r,e){var i=p(n,t,r),u;e=Yn(e==null?",f":e);switch(e.type){case"s":{var a=Math.max(Math.abs(n),Math.abs(t));if(e.precision==null&&!isNaN(u=lt(i,a)))e.precision=u;return st(e,a)}case"":case"e":case"g":case"p":case"r":{if(e.precision==null&&!isNaN(u=dt(i,Math.max(Math.abs(n),Math.abs(t)))))e.precision=u-(e.type==="e");break}case"f":case"%":{if(e.precision==null&&!isNaN(u=ct(i)))e.precision=u-(e.type==="%")*2;break}}return ot(e)}function Mt(n){var t=n.domain;n.ticks=function(n){var r=t();return b(r[0],r[r.length-1],n==null?10:n)};n.tickFormat=function(n,r){var e=t();return gt(e[0],e[e.length-1],n==null?10:n,r)};n.nice=function(r){if(r==null)r=10;var e=t();var i=0;var u=e.length-1;var a=e[i];var f=e[u];var o;var s;var h=10;if(f<a){s=a,a=f,f=s;s=i,i=u,u=s}while(h-- >0){s=y(a,f,r);if(s===o){e[i]=a;e[u]=f;return t(e)}else if(s>0){a=Math.floor(a/s)*s;f=Math.ceil(f/s)*s}else if(s<0){a=Math.ceil(a*s)/s;f=Math.floor(f*s)/s}else{break}o=s}return n};return n}function vt(){var n=Ln();n.copy=function(){return Gn(n,vt())};N.apply(n,arguments);return Mt(n)}function wt(){const r=n(t.space100,8);const e=n(t.space200,16);return{margin:{top:e,right:e,bottom:n(t.space300,24),left:n(t.space400,32)},axisLabelGap:r,categoryLabelOffset:e}}const bt=n=>Math.max(1,Math.round(n*100)/100);class yt{constructor(n,t){this.target=n;this.onResize=t;this.resizeObserver=null}connect(){this.disconnect();if(typeof ResizeObserver!=="undefined"){this.resizeObserver=new ResizeObserver((n=>{const t=n[0];if(!t)return;this.update(t.contentRect.width,t.contentRect.height)}));this.resizeObserver.observe(this.target)}this.measure()}measure(){const n=this.target.getBoundingClientRect();this.update(n.width,n.height)}disconnect(){this.resizeObserver?.disconnect();this.resizeObserver=null}update(n,t){if(!(n>0)||!(t>0))return;this.onResize({width:bt(n),height:bt(t)})}}export{yt as C,x as b,vt as l,R as p,wt as r};
2
+ //# sourceMappingURL=p-2foAUsDN.js.map