@slotted/angular 0.1.0-beta.7 → 0.1.0-beta.9

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 (421) hide show
  1. package/docs/calendar.json +1 -1
  2. package/docs/code-block.json +92 -92
  3. package/docs/code-block.md +69 -69
  4. package/docs/currency-field.json +7 -0
  5. package/docs/currency-field.md +1 -0
  6. package/docs/data-grid.examples.md +1 -1
  7. package/docs/data-grid.json +21 -4
  8. package/docs/data-grid.md +1 -1
  9. package/docs/data-grid.props.md +5 -3
  10. package/docs/dialog.examples.md +138 -136
  11. package/docs/dialog.json +8 -8
  12. package/docs/filter-bar.json +118 -118
  13. package/docs/filter-bar.md +79 -79
  14. package/docs/guidelines/async-feedback.md +10 -0
  15. package/docs/guidelines/composition.md +11 -7
  16. package/docs/guidelines/index.md +6 -1
  17. package/docs/guidelines/list-pages.md +30 -0
  18. package/docs/guidelines/overviews.md +10 -0
  19. package/docs/markdown.json +79 -79
  20. package/docs/markdown.md +65 -65
  21. package/docs/page-header.json +1 -1
  22. package/docs/skills/compose-screen/SKILL.md +22 -10
  23. package/docs/skills/review-screen/SKILL.md +6 -0
  24. package/docs/skills/waiting-states/SKILL.md +4 -1
  25. package/docs/tags-input.json +28 -2
  26. package/docs/tags-input.md +4 -1
  27. package/docs/timeline.json +131 -131
  28. package/docs/timeline.md +123 -123
  29. package/fesm2022/slotted-angular-accordion.mjs +4 -2
  30. package/fesm2022/slotted-angular-accordion.mjs.map +1 -1
  31. package/fesm2022/slotted-angular-action-bar.mjs +21 -10
  32. package/fesm2022/slotted-angular-action-bar.mjs.map +1 -1
  33. package/fesm2022/slotted-angular-action-sheet.mjs +42 -29
  34. package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -1
  35. package/fesm2022/slotted-angular-alert.mjs +17 -11
  36. package/fesm2022/slotted-angular-alert.mjs.map +1 -1
  37. package/fesm2022/slotted-angular-app-shell.mjs +52 -40
  38. package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
  39. package/fesm2022/slotted-angular-aspect-ratio.mjs +4 -2
  40. package/fesm2022/slotted-angular-aspect-ratio.mjs.map +1 -1
  41. package/fesm2022/slotted-angular-attachment.mjs +31 -20
  42. package/fesm2022/slotted-angular-attachment.mjs.map +1 -1
  43. package/fesm2022/slotted-angular-avatar-group.mjs +9 -6
  44. package/fesm2022/slotted-angular-avatar-group.mjs.map +1 -1
  45. package/fesm2022/slotted-angular-avatar.mjs +9 -6
  46. package/fesm2022/slotted-angular-avatar.mjs.map +1 -1
  47. package/fesm2022/slotted-angular-badge.mjs +14 -10
  48. package/fesm2022/slotted-angular-badge.mjs.map +1 -1
  49. package/fesm2022/slotted-angular-breadcrumb.mjs +26 -18
  50. package/fesm2022/slotted-angular-breadcrumb.mjs.map +1 -1
  51. package/fesm2022/slotted-angular-button-group.mjs +7 -4
  52. package/fesm2022/slotted-angular-button-group.mjs.map +1 -1
  53. package/fesm2022/slotted-angular-button.mjs +53 -25
  54. package/fesm2022/slotted-angular-button.mjs.map +1 -1
  55. package/fesm2022/slotted-angular-calendar.mjs +82 -30
  56. package/fesm2022/slotted-angular-calendar.mjs.map +1 -1
  57. package/fesm2022/slotted-angular-card.mjs +18 -16
  58. package/fesm2022/slotted-angular-card.mjs.map +1 -1
  59. package/fesm2022/slotted-angular-carousel.mjs +22 -11
  60. package/fesm2022/slotted-angular-carousel.mjs.map +1 -1
  61. package/fesm2022/slotted-angular-cascader.mjs +158 -64
  62. package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
  63. package/fesm2022/slotted-angular-chart.mjs +4 -2
  64. package/fesm2022/slotted-angular-chart.mjs.map +1 -1
  65. package/fesm2022/slotted-angular-checkbox-group.mjs +5 -3
  66. package/fesm2022/slotted-angular-checkbox-group.mjs.map +1 -1
  67. package/fesm2022/slotted-angular-checkbox.mjs +13 -8
  68. package/fesm2022/slotted-angular-checkbox.mjs.map +1 -1
  69. package/fesm2022/slotted-angular-code-block.mjs +29 -15
  70. package/fesm2022/slotted-angular-code-block.mjs.map +1 -1
  71. package/fesm2022/slotted-angular-collapsible.mjs +20 -15
  72. package/fesm2022/slotted-angular-collapsible.mjs.map +1 -1
  73. package/fesm2022/slotted-angular-color-picker.mjs +77 -22
  74. package/fesm2022/slotted-angular-color-picker.mjs.map +1 -1
  75. package/fesm2022/slotted-angular-column-manager.mjs +68 -31
  76. package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
  77. package/fesm2022/slotted-angular-combobox.mjs +77 -31
  78. package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
  79. package/fesm2022/slotted-angular-command-palette.mjs +150 -54
  80. package/fesm2022/slotted-angular-command-palette.mjs.map +1 -1
  81. package/fesm2022/slotted-angular-container.mjs +6 -4
  82. package/fesm2022/slotted-angular-container.mjs.map +1 -1
  83. package/fesm2022/slotted-angular-context-menu.mjs +5 -4
  84. package/fesm2022/slotted-angular-context-menu.mjs.map +1 -1
  85. package/fesm2022/slotted-angular-currency-field.mjs +98 -32
  86. package/fesm2022/slotted-angular-currency-field.mjs.map +1 -1
  87. package/fesm2022/slotted-angular-dashboard-grid.mjs +127 -44
  88. package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
  89. package/fesm2022/slotted-angular-data-grid.mjs +309 -104
  90. package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
  91. package/fesm2022/slotted-angular-data-list.mjs +83 -50
  92. package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
  93. package/fesm2022/slotted-angular-date-field.mjs +40 -14
  94. package/fesm2022/slotted-angular-date-field.mjs.map +1 -1
  95. package/fesm2022/slotted-angular-date-picker.mjs +19 -9
  96. package/fesm2022/slotted-angular-date-picker.mjs.map +1 -1
  97. package/fesm2022/slotted-angular-date-range-picker.mjs +41 -16
  98. package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -1
  99. package/fesm2022/slotted-angular-datetime-field.mjs +48 -16
  100. package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -1
  101. package/fesm2022/slotted-angular-datetime-picker.mjs +37 -23
  102. package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -1
  103. package/fesm2022/slotted-angular-datetime-range-picker.mjs +111 -42
  104. package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -1
  105. package/fesm2022/slotted-angular-description-list.mjs +33 -19
  106. package/fesm2022/slotted-angular-description-list.mjs.map +1 -1
  107. package/fesm2022/slotted-angular-detail-panel.mjs +29 -18
  108. package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -1
  109. package/fesm2022/slotted-angular-dialog.mjs +61 -28
  110. package/fesm2022/slotted-angular-dialog.mjs.map +1 -1
  111. package/fesm2022/slotted-angular-divider.mjs +7 -5
  112. package/fesm2022/slotted-angular-divider.mjs.map +1 -1
  113. package/fesm2022/slotted-angular-drawer.mjs +38 -26
  114. package/fesm2022/slotted-angular-drawer.mjs.map +1 -1
  115. package/fesm2022/slotted-angular-entity-picker.mjs +195 -67
  116. package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -1
  117. package/fesm2022/slotted-angular-event-calendar.mjs +259 -102
  118. package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
  119. package/fesm2022/slotted-angular-field-group.mjs +14 -7
  120. package/fesm2022/slotted-angular-field-group.mjs.map +1 -1
  121. package/fesm2022/slotted-angular-field.mjs +35 -15
  122. package/fesm2022/slotted-angular-field.mjs.map +1 -1
  123. package/fesm2022/slotted-angular-filter-bar.mjs +104 -43
  124. package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
  125. package/fesm2022/slotted-angular-form.mjs +18 -10
  126. package/fesm2022/slotted-angular-form.mjs.map +1 -1
  127. package/fesm2022/slotted-angular-fullscreen.mjs +14 -8
  128. package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -1
  129. package/fesm2022/slotted-angular-grid.mjs +4 -2
  130. package/fesm2022/slotted-angular-grid.mjs.map +1 -1
  131. package/fesm2022/slotted-angular-highlight.mjs +5 -3
  132. package/fesm2022/slotted-angular-highlight.mjs.map +1 -1
  133. package/fesm2022/slotted-angular-hover-card.mjs +5 -4
  134. package/fesm2022/slotted-angular-hover-card.mjs.map +1 -1
  135. package/fesm2022/slotted-angular-icon.mjs +6 -3
  136. package/fesm2022/slotted-angular-icon.mjs.map +1 -1
  137. package/fesm2022/slotted-angular-image.mjs +13 -10
  138. package/fesm2022/slotted-angular-image.mjs.map +1 -1
  139. package/fesm2022/slotted-angular-import-export-center.mjs +167 -99
  140. package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -1
  141. package/fesm2022/slotted-angular-inline-message.mjs +10 -8
  142. package/fesm2022/slotted-angular-inline-message.mjs.map +1 -1
  143. package/fesm2022/slotted-angular-inline.mjs +4 -2
  144. package/fesm2022/slotted-angular-inline.mjs.map +1 -1
  145. package/fesm2022/slotted-angular-kbd.mjs +11 -7
  146. package/fesm2022/slotted-angular-kbd.mjs.map +1 -1
  147. package/fesm2022/slotted-angular-link.mjs +5 -3
  148. package/fesm2022/slotted-angular-link.mjs.map +1 -1
  149. package/fesm2022/slotted-angular-list-item.mjs +21 -18
  150. package/fesm2022/slotted-angular-list-item.mjs.map +1 -1
  151. package/fesm2022/slotted-angular-list.mjs +14 -10
  152. package/fesm2022/slotted-angular-list.mjs.map +1 -1
  153. package/fesm2022/slotted-angular-listbox.mjs +39 -21
  154. package/fesm2022/slotted-angular-listbox.mjs.map +1 -1
  155. package/fesm2022/slotted-angular-loading-overlay.mjs +59 -22
  156. package/fesm2022/slotted-angular-loading-overlay.mjs.map +1 -1
  157. package/fesm2022/slotted-angular-markdown.mjs +31 -19
  158. package/fesm2022/slotted-angular-markdown.mjs.map +1 -1
  159. package/fesm2022/slotted-angular-menu.mjs +41 -27
  160. package/fesm2022/slotted-angular-menu.mjs.map +1 -1
  161. package/fesm2022/slotted-angular-menubar.mjs +4 -2
  162. package/fesm2022/slotted-angular-menubar.mjs.map +1 -1
  163. package/fesm2022/slotted-angular-message-scroller.mjs +28 -15
  164. package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -1
  165. package/fesm2022/slotted-angular-message.mjs +113 -51
  166. package/fesm2022/slotted-angular-message.mjs.map +1 -1
  167. package/fesm2022/slotted-angular-multi-select.mjs +133 -57
  168. package/fesm2022/slotted-angular-multi-select.mjs.map +1 -1
  169. package/fesm2022/slotted-angular-navigation-menu.mjs +34 -26
  170. package/fesm2022/slotted-angular-navigation-menu.mjs.map +1 -1
  171. package/fesm2022/slotted-angular-notification-center.mjs +107 -65
  172. package/fesm2022/slotted-angular-notification-center.mjs.map +1 -1
  173. package/fesm2022/slotted-angular-number-field.mjs +23 -11
  174. package/fesm2022/slotted-angular-number-field.mjs.map +1 -1
  175. package/fesm2022/slotted-angular-otp-input.mjs +13 -8
  176. package/fesm2022/slotted-angular-otp-input.mjs.map +1 -1
  177. package/fesm2022/slotted-angular-page-header.mjs +72 -42
  178. package/fesm2022/slotted-angular-page-header.mjs.map +1 -1
  179. package/fesm2022/slotted-angular-page.mjs +18 -9
  180. package/fesm2022/slotted-angular-page.mjs.map +1 -1
  181. package/fesm2022/slotted-angular-pagination.mjs +35 -22
  182. package/fesm2022/slotted-angular-pagination.mjs.map +1 -1
  183. package/fesm2022/slotted-angular-popover.mjs +25 -18
  184. package/fesm2022/slotted-angular-popover.mjs.map +1 -1
  185. package/fesm2022/slotted-angular-progress-indicator.mjs +122 -30
  186. package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -1
  187. package/fesm2022/slotted-angular-prompt-composer.mjs +24 -18
  188. package/fesm2022/slotted-angular-prompt-composer.mjs.map +1 -1
  189. package/fesm2022/slotted-angular-prose.mjs +14 -11
  190. package/fesm2022/slotted-angular-prose.mjs.map +1 -1
  191. package/fesm2022/slotted-angular-radio-group.mjs +15 -9
  192. package/fesm2022/slotted-angular-radio-group.mjs.map +1 -1
  193. package/fesm2022/slotted-angular-rating.mjs +138 -82
  194. package/fesm2022/slotted-angular-rating.mjs.map +1 -1
  195. package/fesm2022/slotted-angular-result-state.mjs +16 -12
  196. package/fesm2022/slotted-angular-result-state.mjs.map +1 -1
  197. package/fesm2022/slotted-angular-saved-views.mjs +43 -16
  198. package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
  199. package/fesm2022/slotted-angular-scroll-area.mjs +9 -5
  200. package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -1
  201. package/fesm2022/slotted-angular-section.mjs +34 -15
  202. package/fesm2022/slotted-angular-section.mjs.map +1 -1
  203. package/fesm2022/slotted-angular-segmented-control.mjs +15 -9
  204. package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
  205. package/fesm2022/slotted-angular-select.mjs +135 -53
  206. package/fesm2022/slotted-angular-select.mjs.map +1 -1
  207. package/fesm2022/slotted-angular-side-navigation.mjs +46 -35
  208. package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -1
  209. package/fesm2022/slotted-angular-skeleton.mjs +32 -16
  210. package/fesm2022/slotted-angular-skeleton.mjs.map +1 -1
  211. package/fesm2022/slotted-angular-slider.mjs +31 -11
  212. package/fesm2022/slotted-angular-slider.mjs.map +1 -1
  213. package/fesm2022/slotted-angular-sparkline.mjs +29 -13
  214. package/fesm2022/slotted-angular-sparkline.mjs.map +1 -1
  215. package/fesm2022/slotted-angular-split-button.mjs +25 -11
  216. package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
  217. package/fesm2022/slotted-angular-splitter.mjs +11 -9
  218. package/fesm2022/slotted-angular-splitter.mjs.map +1 -1
  219. package/fesm2022/slotted-angular-stack.mjs +4 -2
  220. package/fesm2022/slotted-angular-stack.mjs.map +1 -1
  221. package/fesm2022/slotted-angular-stat-card.mjs +35 -28
  222. package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
  223. package/fesm2022/slotted-angular-status-indicator.mjs +22 -8
  224. package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -1
  225. package/fesm2022/slotted-angular-stepper.mjs +40 -15
  226. package/fesm2022/slotted-angular-stepper.mjs.map +1 -1
  227. package/fesm2022/slotted-angular-switch.mjs +15 -10
  228. package/fesm2022/slotted-angular-switch.mjs.map +1 -1
  229. package/fesm2022/slotted-angular-table-of-contents.mjs +29 -21
  230. package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -1
  231. package/fesm2022/slotted-angular-table.mjs +135 -72
  232. package/fesm2022/slotted-angular-table.mjs.map +1 -1
  233. package/fesm2022/slotted-angular-tabs.mjs +31 -14
  234. package/fesm2022/slotted-angular-tabs.mjs.map +1 -1
  235. package/fesm2022/slotted-angular-tag.mjs +19 -12
  236. package/fesm2022/slotted-angular-tag.mjs.map +1 -1
  237. package/fesm2022/slotted-angular-tags-input.mjs +253 -28
  238. package/fesm2022/slotted-angular-tags-input.mjs.map +1 -1
  239. package/fesm2022/slotted-angular-text-field.mjs +49 -15
  240. package/fesm2022/slotted-angular-text-field.mjs.map +1 -1
  241. package/fesm2022/slotted-angular-textarea.mjs +5 -3
  242. package/fesm2022/slotted-angular-textarea.mjs.map +1 -1
  243. package/fesm2022/slotted-angular-time-field.mjs +48 -14
  244. package/fesm2022/slotted-angular-time-field.mjs.map +1 -1
  245. package/fesm2022/slotted-angular-time-picker.mjs +28 -14
  246. package/fesm2022/slotted-angular-time-picker.mjs.map +1 -1
  247. package/fesm2022/slotted-angular-time-range-picker.mjs +109 -40
  248. package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -1
  249. package/fesm2022/slotted-angular-timeline.mjs +135 -64
  250. package/fesm2022/slotted-angular-timeline.mjs.map +1 -1
  251. package/fesm2022/slotted-angular-toast.mjs +42 -31
  252. package/fesm2022/slotted-angular-toast.mjs.map +1 -1
  253. package/fesm2022/slotted-angular-toggle-group.mjs +10 -6
  254. package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -1
  255. package/fesm2022/slotted-angular-toggle.mjs +9 -4
  256. package/fesm2022/slotted-angular-toggle.mjs.map +1 -1
  257. package/fesm2022/slotted-angular-toolbar.mjs +21 -10
  258. package/fesm2022/slotted-angular-toolbar.mjs.map +1 -1
  259. package/fesm2022/slotted-angular-tooltip.mjs +8 -5
  260. package/fesm2022/slotted-angular-tooltip.mjs.map +1 -1
  261. package/fesm2022/slotted-angular-top-navigation.mjs +64 -44
  262. package/fesm2022/slotted-angular-top-navigation.mjs.map +1 -1
  263. package/fesm2022/slotted-angular-tour.mjs +46 -21
  264. package/fesm2022/slotted-angular-tour.mjs.map +1 -1
  265. package/fesm2022/slotted-angular-transfer.mjs +69 -30
  266. package/fesm2022/slotted-angular-transfer.mjs.map +1 -1
  267. package/fesm2022/slotted-angular-tree.mjs +74 -26
  268. package/fesm2022/slotted-angular-tree.mjs.map +1 -1
  269. package/fesm2022/slotted-angular-typography.mjs +8 -4
  270. package/fesm2022/slotted-angular-typography.mjs.map +1 -1
  271. package/fesm2022/slotted-angular-upload.mjs +125 -57
  272. package/fesm2022/slotted-angular-upload.mjs.map +1 -1
  273. package/fesm2022/slotted-angular-visually-hidden.mjs +4 -2
  274. package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -1
  275. package/fesm2022/slotted-angular-wizard.mjs +163 -65
  276. package/fesm2022/slotted-angular-wizard.mjs.map +1 -1
  277. package/package.json +3 -3
  278. package/types/slotted-angular-accordion.d.ts.map +1 -1
  279. package/types/slotted-angular-action-bar.d.ts.map +1 -1
  280. package/types/slotted-angular-action-sheet.d.ts.map +1 -1
  281. package/types/slotted-angular-alert.d.ts +1 -1
  282. package/types/slotted-angular-alert.d.ts.map +1 -1
  283. package/types/slotted-angular-app-shell.d.ts.map +1 -1
  284. package/types/slotted-angular-aspect-ratio.d.ts.map +1 -1
  285. package/types/slotted-angular-attachment.d.ts +1 -1
  286. package/types/slotted-angular-attachment.d.ts.map +1 -1
  287. package/types/slotted-angular-avatar-group.d.ts.map +1 -1
  288. package/types/slotted-angular-avatar.d.ts.map +1 -1
  289. package/types/slotted-angular-badge.d.ts.map +1 -1
  290. package/types/slotted-angular-breadcrumb.d.ts.map +1 -1
  291. package/types/slotted-angular-button-group.d.ts.map +1 -1
  292. package/types/slotted-angular-button.d.ts.map +1 -1
  293. package/types/slotted-angular-calendar.d.ts +2 -0
  294. package/types/slotted-angular-calendar.d.ts.map +1 -1
  295. package/types/slotted-angular-card.d.ts.map +1 -1
  296. package/types/slotted-angular-carousel.d.ts.map +1 -1
  297. package/types/slotted-angular-cascader.d.ts.map +1 -1
  298. package/types/slotted-angular-chart.d.ts.map +1 -1
  299. package/types/slotted-angular-checkbox-group.d.ts.map +1 -1
  300. package/types/slotted-angular-checkbox.d.ts.map +1 -1
  301. package/types/slotted-angular-code-block.d.ts +1 -1
  302. package/types/slotted-angular-code-block.d.ts.map +1 -1
  303. package/types/slotted-angular-collapsible.d.ts +1 -1
  304. package/types/slotted-angular-collapsible.d.ts.map +1 -1
  305. package/types/slotted-angular-color-picker.d.ts.map +1 -1
  306. package/types/slotted-angular-column-manager.d.ts.map +1 -1
  307. package/types/slotted-angular-combobox.d.ts +1 -1
  308. package/types/slotted-angular-combobox.d.ts.map +1 -1
  309. package/types/slotted-angular-command-palette.d.ts +10 -1
  310. package/types/slotted-angular-command-palette.d.ts.map +1 -1
  311. package/types/slotted-angular-container.d.ts.map +1 -1
  312. package/types/slotted-angular-context-menu.d.ts.map +1 -1
  313. package/types/slotted-angular-currency-field.d.ts +39 -13
  314. package/types/slotted-angular-currency-field.d.ts.map +1 -1
  315. package/types/slotted-angular-dashboard-grid.d.ts.map +1 -1
  316. package/types/slotted-angular-data-grid.d.ts +26 -2
  317. package/types/slotted-angular-data-grid.d.ts.map +1 -1
  318. package/types/slotted-angular-data-list.d.ts.map +1 -1
  319. package/types/slotted-angular-date-field.d.ts.map +1 -1
  320. package/types/slotted-angular-date-picker.d.ts.map +1 -1
  321. package/types/slotted-angular-date-range-picker.d.ts.map +1 -1
  322. package/types/slotted-angular-datetime-field.d.ts.map +1 -1
  323. package/types/slotted-angular-datetime-picker.d.ts.map +1 -1
  324. package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -1
  325. package/types/slotted-angular-description-list.d.ts.map +1 -1
  326. package/types/slotted-angular-detail-panel.d.ts.map +1 -1
  327. package/types/slotted-angular-dialog.d.ts +2 -1
  328. package/types/slotted-angular-dialog.d.ts.map +1 -1
  329. package/types/slotted-angular-divider.d.ts.map +1 -1
  330. package/types/slotted-angular-drawer.d.ts.map +1 -1
  331. package/types/slotted-angular-entity-picker.d.ts.map +1 -1
  332. package/types/slotted-angular-event-calendar.d.ts.map +1 -1
  333. package/types/slotted-angular-field-group.d.ts.map +1 -1
  334. package/types/slotted-angular-field.d.ts.map +1 -1
  335. package/types/slotted-angular-filter-bar.d.ts.map +1 -1
  336. package/types/slotted-angular-form.d.ts.map +1 -1
  337. package/types/slotted-angular-fullscreen.d.ts.map +1 -1
  338. package/types/slotted-angular-grid.d.ts.map +1 -1
  339. package/types/slotted-angular-highlight.d.ts.map +1 -1
  340. package/types/slotted-angular-hover-card.d.ts.map +1 -1
  341. package/types/slotted-angular-icon.d.ts +1 -1
  342. package/types/slotted-angular-icon.d.ts.map +1 -1
  343. package/types/slotted-angular-image.d.ts.map +1 -1
  344. package/types/slotted-angular-import-export-center.d.ts.map +1 -1
  345. package/types/slotted-angular-inline-message.d.ts +1 -1
  346. package/types/slotted-angular-inline-message.d.ts.map +1 -1
  347. package/types/slotted-angular-inline.d.ts.map +1 -1
  348. package/types/slotted-angular-kbd.d.ts.map +1 -1
  349. package/types/slotted-angular-link.d.ts.map +1 -1
  350. package/types/slotted-angular-list-item.d.ts.map +1 -1
  351. package/types/slotted-angular-list.d.ts.map +1 -1
  352. package/types/slotted-angular-listbox.d.ts.map +1 -1
  353. package/types/slotted-angular-loading-overlay.d.ts.map +1 -1
  354. package/types/slotted-angular-markdown.d.ts.map +1 -1
  355. package/types/slotted-angular-menu.d.ts.map +1 -1
  356. package/types/slotted-angular-menubar.d.ts.map +1 -1
  357. package/types/slotted-angular-message-scroller.d.ts.map +1 -1
  358. package/types/slotted-angular-message.d.ts.map +1 -1
  359. package/types/slotted-angular-multi-select.d.ts +1 -1
  360. package/types/slotted-angular-multi-select.d.ts.map +1 -1
  361. package/types/slotted-angular-navigation-menu.d.ts.map +1 -1
  362. package/types/slotted-angular-notification-center.d.ts.map +1 -1
  363. package/types/slotted-angular-number-field.d.ts.map +1 -1
  364. package/types/slotted-angular-otp-input.d.ts.map +1 -1
  365. package/types/slotted-angular-page-header.d.ts +1 -1
  366. package/types/slotted-angular-page-header.d.ts.map +1 -1
  367. package/types/slotted-angular-page.d.ts.map +1 -1
  368. package/types/slotted-angular-pagination.d.ts.map +1 -1
  369. package/types/slotted-angular-popover.d.ts.map +1 -1
  370. package/types/slotted-angular-progress-indicator.d.ts.map +1 -1
  371. package/types/slotted-angular-prompt-composer.d.ts.map +1 -1
  372. package/types/slotted-angular-prose.d.ts.map +1 -1
  373. package/types/slotted-angular-radio-group.d.ts.map +1 -1
  374. package/types/slotted-angular-rating.d.ts.map +1 -1
  375. package/types/slotted-angular-result-state.d.ts.map +1 -1
  376. package/types/slotted-angular-saved-views.d.ts.map +1 -1
  377. package/types/slotted-angular-scroll-area.d.ts.map +1 -1
  378. package/types/slotted-angular-section.d.ts.map +1 -1
  379. package/types/slotted-angular-segmented-control.d.ts.map +1 -1
  380. package/types/slotted-angular-select.d.ts +1 -1
  381. package/types/slotted-angular-select.d.ts.map +1 -1
  382. package/types/slotted-angular-side-navigation.d.ts.map +1 -1
  383. package/types/slotted-angular-skeleton.d.ts.map +1 -1
  384. package/types/slotted-angular-slider.d.ts.map +1 -1
  385. package/types/slotted-angular-sparkline.d.ts.map +1 -1
  386. package/types/slotted-angular-split-button.d.ts.map +1 -1
  387. package/types/slotted-angular-splitter.d.ts.map +1 -1
  388. package/types/slotted-angular-stack.d.ts.map +1 -1
  389. package/types/slotted-angular-stat-card.d.ts.map +1 -1
  390. package/types/slotted-angular-status-indicator.d.ts +1 -1
  391. package/types/slotted-angular-status-indicator.d.ts.map +1 -1
  392. package/types/slotted-angular-stepper.d.ts +1 -1
  393. package/types/slotted-angular-stepper.d.ts.map +1 -1
  394. package/types/slotted-angular-switch.d.ts.map +1 -1
  395. package/types/slotted-angular-table-of-contents.d.ts.map +1 -1
  396. package/types/slotted-angular-table.d.ts.map +1 -1
  397. package/types/slotted-angular-tabs.d.ts.map +1 -1
  398. package/types/slotted-angular-tag.d.ts.map +1 -1
  399. package/types/slotted-angular-tags-input.d.ts +33 -1
  400. package/types/slotted-angular-tags-input.d.ts.map +1 -1
  401. package/types/slotted-angular-text-field.d.ts.map +1 -1
  402. package/types/slotted-angular-textarea.d.ts.map +1 -1
  403. package/types/slotted-angular-time-field.d.ts.map +1 -1
  404. package/types/slotted-angular-time-picker.d.ts.map +1 -1
  405. package/types/slotted-angular-time-range-picker.d.ts.map +1 -1
  406. package/types/slotted-angular-timeline.d.ts.map +1 -1
  407. package/types/slotted-angular-toast.d.ts +2 -2
  408. package/types/slotted-angular-toast.d.ts.map +1 -1
  409. package/types/slotted-angular-toggle-group.d.ts.map +1 -1
  410. package/types/slotted-angular-toggle.d.ts.map +1 -1
  411. package/types/slotted-angular-toolbar.d.ts.map +1 -1
  412. package/types/slotted-angular-tooltip.d.ts.map +1 -1
  413. package/types/slotted-angular-top-navigation.d.ts.map +1 -1
  414. package/types/slotted-angular-tour.d.ts.map +1 -1
  415. package/types/slotted-angular-transfer.d.ts.map +1 -1
  416. package/types/slotted-angular-tree.d.ts.map +1 -1
  417. package/types/slotted-angular-typography.d.ts.map +1 -1
  418. package/types/slotted-angular-upload.d.ts +2 -2
  419. package/types/slotted-angular-upload.d.ts.map +1 -1
  420. package/types/slotted-angular-visually-hidden.d.ts.map +1 -1
  421. package/types/slotted-angular-wizard.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"slotted-angular-split-button.mjs","sources":["../../split-button/src/split-button-defaults.ts","../../split-button/src/split-button.ts","../../split-button/src/split-button-parts.ts","../../split-button/src/slotted-angular-split-button.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { ButtonSize, ButtonTone, ButtonVariant } from '@slotted/angular/button';\n\n/**\n * What a split button paints itself as here, before it states anything of\n * its own. Every axis is optional: an unset one falls through to `button`'s\n * own token, which is where an application that paints every action at once\n * already set it, and then to the contract's defaults.\n */\nexport interface SplitButtonDefaults {\n size?: ButtonSize | undefined;\n tone?: ButtonTone | undefined;\n variant?: ButtonVariant | undefined;\n}\n\nexport const SPLIT_BUTTON_DEFAULTS = new InjectionToken<SplitButtonDefaults>(\n 'slotted split button defaults',\n { providedIn: 'root', factory: (): SplitButtonDefaults => ({}) },\n);\n\n/**\n * An application decides once how its split buttons are painted rather than\n * repeating three inputs on every one. A split button that states an axis\n * itself still wins.\n */\nexport function provideSplitButtonDefaults(defaults: SplitButtonDefaults) {\n return { provide: SPLIT_BUTTON_DEFAULTS, useValue: defaults };\n}\n\nexport function injectSplitButtonDefaults(): SplitButtonDefaults {\n return inject(SPLIT_BUTTON_DEFAULTS);\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n HostAttributeToken,\n inject,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { WritableSignal } from '@angular/core';\nimport { BUTTON_DEFAULTS_TOKEN } from '@slotted/angular/button';\nimport type {\n ButtonDefaults,\n ButtonSize,\n ButtonTone,\n ButtonVariant,\n} from '@slotted/angular/button';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\n\nimport { injectSplitButtonDefaults } from './split-button-defaults';\n\n/**\n * Why the remembered value moved. The menu's radio group produces exactly\n * these two, and the family surfaces them unchanged.\n */\nexport type SplitButtonValueReason = 'pointer' | 'keyboard';\n\n/**\n * The three axes the root hands down to both halves, through the button\n * family's own defaults token rather than through a second channel of this\n * family's invention — the mechanism `button-group` uses, and the reason an\n * explicit input on a half still wins. Getters, so a half's `computed` tracks\n * the root's signals.\n */\nfunction provideHalvesPaint() {\n return {\n provide: BUTTON_DEFAULTS_TOKEN,\n useFactory: (): ButtonDefaults => {\n const root = inject(SlSplitButton);\n return {\n get size() {\n return root.resolvedSize();\n },\n get tone() {\n return root.resolvedTone();\n },\n get variant() {\n return root.resolvedVariant();\n },\n };\n },\n };\n}\n\n/**\n * An action and the menu of its alternatives, joined into one shape.\n *\n * The root is a `group` of two `button`s: the primary, `SlButton` carrying\n * this family's part, and the menu trigger, `SlIconButton` carrying the\n * other and hosting `slMenuTriggerFor`. Each keeps its role, its state and\n * its own tab stop — every surveyed split button gives the pair two — and\n * the root hands them one appearance through `button`'s own token. The menu\n * is the consumer's own `sl-menu`, written inside the root, and nothing of\n * it is restated here.\n *\n * `remember` is the one decision the family adds. Off, the alternatives are\n * actions. On, the radio group carrying `slSplitButtonChoices` is bound to\n * the root's value, and the consumer renders the primary's label from that\n * value — the merge button whose strategy a repository remembers. A silent\n * update was refused because it changes what the next click does.\n */\n@Component({\n selector: '[slSplitButton]',\n standalone: true,\n exportAs: 'slSplitButton',\n template: '<ng-content></ng-content>',\n styleUrl: '../../../styles/src/split-button/split-button.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [provideHalvesPaint()],\n host: {\n 'data-ui': 'split-button',\n 'data-part': 'root',\n '[attr.role]': 'role',\n '[attr.data-tone]': 'resolvedTone()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-full-width]': 'fullWidth() ? \"\" : null',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-loading]': 'loading() ? \"\" : null',\n },\n})\nexport class SlSplitButton {\n readonly size = input<ButtonSize | undefined>(undefined);\n readonly tone = input<ButtonTone | undefined>(undefined);\n readonly variant = input<ButtonVariant | undefined>(undefined);\n /** The action takes the line; the menu trigger stays square. */\n readonly fullWidth = input(false, { transform: booleanAttribute });\n /** Takes both halves out. Each half keeps the native attribute for itself. */\n readonly disabled = input(false, { transform: booleanAttribute });\n /**\n * The action is in flight: the primary shows `button`'s indicator with its\n * width and name held, and the menu trigger is `aria-disabled` for the\n * duration — still in the tab sequence, still named, still painted — so a\n * second alternative cannot be chosen while the first runs.\n */\n readonly loading = input(false, { transform: booleanAttribute });\n /**\n * The choice in the menu becomes the action. Off, the menu's items are\n * actions; on, the items inside the radio group carrying\n * `slSplitButtonChoices` are bound to `value`.\n */\n readonly remember = input(false, { transform: booleanAttribute });\n\n /** The remembered value. Present at all puts it in controlled mode. */\n readonly value = input<string | undefined>(undefined);\n /** The value an uncontrolled split button remembers first, read once. */\n readonly defaultValue = input<string | undefined>(undefined);\n /**\n * One output for one transition, carrying the value, the value it\n * replaces, the reason, the originating event and `cancel()`.\n */\n readonly valueChange = output<ChangeRequest<string>>();\n\n private readonly defaults = injectSplitButtonDefaults();\n private readonly inherited = inject(BUTTON_DEFAULTS_TOKEN, { skipSelf: true });\n /**\n * A static attribute the consumer wrote survives the host binding, so a\n * root that is already inside a named group can give the role up with\n * `role=\"\"`, the way `button-group` lets it.\n */\n private readonly writtenRole = inject(new HostAttributeToken('role'), { optional: true });\n protected readonly role = this.writtenRole === '' ? null : (this.writtenRole ?? 'group');\n\n private readonly own: WritableSignal<string | undefined> = signal(undefined);\n\n /* Resolution: the input, the family's defaults, `button`'s defaults, then\n the contract's. */\n readonly resolvedSize = computed(\n () => this.size() ?? this.defaults.size ?? this.inherited.size ?? 'md',\n );\n readonly resolvedTone = computed(\n () => this.tone() ?? this.defaults.tone ?? this.inherited.tone ?? 'accent',\n );\n readonly resolvedVariant = computed(\n () => this.variant() ?? this.defaults.variant ?? this.inherited.variant ?? 'solid',\n );\n /** The remembered value, under `remember`; nothing otherwise. */\n readonly resolvedValue = computed(() =>\n this.remember() ? (this.value() ?? this.own() ?? this.defaultValue()) : undefined,\n );\n\n /** Asks the family to remember one alternative as the action. */\n select(next: string, reason: SplitButtonValueReason, source?: unknown): boolean {\n const state = createControllable<string>({\n controlled: this.value(),\n initial: this.resolvedValue() ?? '',\n onRequest: (request) => this.valueChange.emit(request),\n });\n const accepted = state.request(next, reason, source);\n if (accepted) this.own.set(next);\n return accepted;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport {\n blockActivation,\n BUTTON_WAIT,\n resolveInertness,\n resolveLoadingIndicator,\n SlButton,\n SlIconButton,\n} from '@slotted/angular/button';\nimport { SlMenuRadioGroup, SlMenuTrigger } from '@slotted/angular/menu';\n\nimport { SlSplitButton } from './split-button';\nimport type { SplitButtonValueReason } from './split-button';\n\n/**\n * The action: `SlButton`, carrying this family's part and folding the root's\n * `disabled` and `loading` into its own. The subclass restates the template\n * and the host binding for the part, and overrides the two resolvers the\n * parent reads its state through — everything else, from `slButtonStart` to\n * the indicator, is `SlButton`'s. `button` selects itself by `data-ui` alone\n * and reads no part on its root, so the part slot is free.\n */\n@Component({\n selector: 'button[slSplitButtonPrimary]',\n standalone: true,\n template: `<ng-content select=\"[slButtonStart]\"></ng-content\n ><span data-part=\"label\"><ng-content></ng-content></span\n ><ng-content select=\"[slButtonEnd]\"></ng-content>\n @if (waiting() && !hasVisualSlot()) {\n <span\n data-part=\"indicator\"\n data-ui=\"spinner\"\n role=\"progressbar\"\n [attr.aria-label]=\"t('loading')\"\n ></span>\n }`,\n styleUrls: [\n '../../../styles/src/button/button.css',\n '../../../styles/src/spinner/spinner.css',\n '../../../styles/src/split-button/split-button.css',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slSplitButtonPrimary',\n providers: [{ provide: BUTTON_WAIT, useExisting: forwardRef(() => SlSplitButtonPrimary) }],\n host: {\n '[attr.data-part]': '\"primary\"',\n '[attr.data-disabled]': 'stateAttribute(resolvedDisabled())',\n '[attr.data-loading]': 'stateAttribute(resolvedLoading())',\n },\n})\nexport class SlSplitButtonPrimary extends SlButton {\n private readonly split = inject(SlSplitButton);\n\n readonly resolvedDisabled = computed(() => this.disabled() || this.split.disabled());\n readonly resolvedLoading = computed(() => this.loading() || this.split.loading());\n\n protected override readonly inert = resolveInertness({\n disabled: this.resolvedDisabled,\n focusableWhenDisabled: this.focusableWhenDisabled,\n loading: this.resolvedLoading,\n });\n override readonly waiting = resolveLoadingIndicator(this.resolvedLoading, this.loadingDelay);\n}\n\n/**\n * The keys of the Menu Button pattern, which `slMenuTriggerFor` answers on\n * this element and which a busy trigger has to refuse before it does.\n */\nconst OPENING_KEYS = new Set(['ArrowDown', 'ArrowUp', 'Enter', ' ']);\n\n/**\n * The menu trigger: `SlIconButton` hosting `slMenuTriggerFor` and carrying\n * this family's part. It takes `aria-haspopup`, `aria-expanded`,\n * `aria-controls` and the four keys of the Menu Button pattern from `menu`,\n * and every tone, variant and size from `button`. The chevron is the\n * family's, the `chevron-down` Glyph element in the icon part, which `button`\n * sizes; content the consumer writes replaces it; the accessible name is the consumer's, and `SlIconButton`\n * refuses to render without one in development.\n *\n * `slMenuTriggerFor` is a host directive rather than a second attribute the\n * consumer writes beside this one, and the order is the point: a host\n * directive's bindings run before the host's, so the `data-part` and the\n * `data-disabled` this component binds win over the `null` the trigger\n * binds for a control that is neither a bar's item nor a submenu's. The\n * write-back `toolbar`'s overflow needs is not needed here.\n *\n * While the root is loading the trigger is busy: `aria-disabled`, still in\n * the tab sequence, still named, still painted — no `data-disabled`, so\n * `button` does not paint it unavailable beside an action still in its\n * tone. The click is refused in the capture phase by `button`'s own guard,\n * and the opening keys are refused the same way here, before the trigger's\n * own listener sees them.\n */\n@Component({\n selector: 'button[slSplitButtonMenuTrigger]',\n standalone: true,\n imports: [SlGlyph, SlIcon],\n /* The chevron is drawn unless the consumer wrote content of their own. */\n template: `<span data-part=\"icon\"\n ><ng-content\n ><span slIcon><svg slGlyph name=\"chevron-down\"></svg></span\n ></ng-content>\n @if (waiting()) {\n <span\n data-part=\"indicator\"\n data-ui=\"spinner\"\n role=\"progressbar\"\n [attr.aria-label]=\"t('loading')\"\n ></span>\n }\n </span>`,\n styleUrls: [\n '../../../styles/src/button/button.css',\n '../../../styles/src/spinner/spinner.css',\n '../../../styles/src/split-button/split-button.css',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slSplitButtonMenuTrigger',\n hostDirectives: [{ directive: SlMenuTrigger, inputs: ['slMenuTriggerFor'] }],\n host: {\n '[attr.data-part]': '\"menu-trigger\"',\n '[attr.data-disabled]': 'stateAttribute(resolvedDisabled())',\n '[attr.aria-disabled]': 'inert.ariaDisabled()',\n '[disabled]': 'inert.nativelyDisabled()',\n },\n})\nexport class SlSplitButtonMenuTrigger extends SlIconButton {\n private readonly split = inject(SlSplitButton);\n\n readonly resolvedDisabled = computed(() => this.disabled() || this.split.disabled());\n /** The action is in flight and the menu waits with it. */\n readonly busy = computed(() => this.split.loading());\n\n protected override readonly inert = resolveInertness({\n disabled: this.resolvedDisabled,\n focusableWhenDisabled: this.focusableWhenDisabled,\n loading: this.busy,\n });\n\n constructor() {\n super();\n const element = inject(ElementRef<HTMLButtonElement>).nativeElement;\n const listener = (event: KeyboardEvent) => {\n if (this.busy() && OPENING_KEYS.has(event.key)) blockActivation(event);\n };\n element.addEventListener('keydown', listener, { capture: true });\n inject(DestroyRef).onDestroy(() =>\n element.removeEventListener('keydown', listener, { capture: true }),\n );\n }\n}\n\n/**\n * The alternatives under `remember`: the consumer's `sl-menu-radio-group`,\n * bound both ways to the root's value. The group never owns the value — its\n * own request is cancelled once forwarded, and what it shows checked is\n * written back from the root, so a controlled root the consumer has not yet\n * moved shows nothing the consumer did not agree to. The DI tree is the\n * template tree, so the group finds the root above it however the layer is\n * portaled.\n */\n@Directive({\n selector: 'sl-menu-radio-group[slSplitButtonChoices]',\n standalone: true,\n exportAs: 'slSplitButtonChoices',\n})\nexport class SlSplitButtonChoices {\n private readonly group = inject(SlMenuRadioGroup, { self: true });\n private readonly split = inject(SlSplitButton);\n\n constructor() {\n if (!this.split.remember()) {\n throw new Error('slSplitButtonChoices needs a slSplitButton with `remember`.');\n }\n\n effect(() => {\n this.group.value.set(this.split.resolvedValue());\n });\n\n const subscription = this.group.valueChangeRequest.subscribe((request) => {\n this.split.select(request.value, request.reason as SplitButtonValueReason, request.source);\n request.cancel();\n });\n inject(DestroyRef).onDestroy(() => subscription.unsubscribe());\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slotted-angular-split-button.mjs","sources":["../../split-button/src/split-button-defaults.ts","../../split-button/src/split-button.ts","../../split-button/src/split-button-parts.ts","../../split-button/src/slotted-angular-split-button.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { ButtonSize, ButtonTone, ButtonVariant } from '@slotted/angular/button';\n\n/**\n * What a split button paints itself as here, before it states anything of\n * its own. Every axis is optional: an unset one falls through to `button`'s\n * own token, which is where an application that paints every action at once\n * already set it, and then to the contract's defaults.\n */\nexport interface SplitButtonDefaults {\n size?: ButtonSize | undefined;\n tone?: ButtonTone | undefined;\n variant?: ButtonVariant | undefined;\n}\n\nexport const SPLIT_BUTTON_DEFAULTS = new InjectionToken<SplitButtonDefaults>(\n 'slotted split button defaults',\n { providedIn: 'root', factory: (): SplitButtonDefaults => ({}) },\n);\n\n/**\n * An application decides once how its split buttons are painted rather than\n * repeating three inputs on every one. A split button that states an axis\n * itself still wins.\n */\nexport function provideSplitButtonDefaults(defaults: SplitButtonDefaults) {\n return { provide: SPLIT_BUTTON_DEFAULTS, useValue: defaults };\n}\n\nexport function injectSplitButtonDefaults(): SplitButtonDefaults {\n return inject(SPLIT_BUTTON_DEFAULTS);\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n HostAttributeToken,\n inject,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { WritableSignal } from '@angular/core';\nimport { BUTTON_DEFAULTS_TOKEN } from '@slotted/angular/button';\nimport type {\n ButtonDefaults,\n ButtonSize,\n ButtonTone,\n ButtonVariant,\n} from '@slotted/angular/button';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\n\nimport { injectSplitButtonDefaults } from './split-button-defaults';\n\n/**\n * Why the remembered value moved. The menu's radio group produces exactly\n * these two, and the family surfaces them unchanged.\n */\nexport type SplitButtonValueReason = 'pointer' | 'keyboard';\n\n/**\n * The three axes the root hands down to both halves, through the button\n * family's own defaults token rather than through a second channel of this\n * family's invention — the mechanism `button-group` uses, and the reason an\n * explicit input on a half still wins. Getters, so a half's `computed` tracks\n * the root's signals.\n */\nfunction provideHalvesPaint() {\n return {\n provide: BUTTON_DEFAULTS_TOKEN,\n useFactory: (): ButtonDefaults => {\n const root = inject(SlSplitButton);\n return {\n get size() {\n return root.resolvedSize();\n },\n get tone() {\n return root.resolvedTone();\n },\n get variant() {\n return root.resolvedVariant();\n },\n };\n },\n };\n}\n\n/**\n * An action and the menu of its alternatives, joined into one shape.\n *\n * The root is a `group` of two `button`s: the primary, `SlButton` carrying\n * this family's part, and the menu trigger, `SlIconButton` carrying the\n * other and hosting `slMenuTriggerFor`. Each keeps its role, its state and\n * its own tab stop — every surveyed split button gives the pair two — and\n * the root hands them one appearance through `button`'s own token. The menu\n * is the consumer's own `sl-menu`, written inside the root, and nothing of\n * it is restated here.\n *\n * `remember` is the one decision the family adds. Off, the alternatives are\n * actions. On, the radio group carrying `slSplitButtonChoices` is bound to\n * the root's value, and the consumer renders the primary's label from that\n * value — the merge button whose strategy a repository remembers. A silent\n * update was refused because it changes what the next click does.\n */\n@Component({\n selector: '[slSplitButton]',\n standalone: true,\n exportAs: 'slSplitButton',\n template: '<ng-content></ng-content>',\n styleUrl: '../../../styles/src/split-button/split-button.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [provideHalvesPaint()],\n host: {\n 'data-ui': 'split-button',\n 'data-ui-split-button': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.role]': 'role',\n '[attr.data-tone]': 'resolvedTone()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-full-width]': 'fullWidth() ? \"\" : null',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-loading]': 'loading() ? \"\" : null',\n },\n})\nexport class SlSplitButton {\n readonly size = input<ButtonSize | undefined>(undefined);\n readonly tone = input<ButtonTone | undefined>(undefined);\n readonly variant = input<ButtonVariant | undefined>(undefined);\n /** The action takes the line; the menu trigger stays square. */\n readonly fullWidth = input(false, { transform: booleanAttribute });\n /** Takes both halves out. Each half keeps the native attribute for itself. */\n readonly disabled = input(false, { transform: booleanAttribute });\n /**\n * The action is in flight: the primary shows `button`'s indicator with its\n * width and name held, and the menu trigger is `aria-disabled` for the\n * duration — still in the tab sequence, still named, still painted — so a\n * second alternative cannot be chosen while the first runs.\n */\n readonly loading = input(false, { transform: booleanAttribute });\n /**\n * The choice in the menu becomes the action. Off, the menu's items are\n * actions; on, the items inside the radio group carrying\n * `slSplitButtonChoices` are bound to `value`.\n */\n readonly remember = input(false, { transform: booleanAttribute });\n\n /** The remembered value. Present at all puts it in controlled mode. */\n readonly value = input<string | undefined>(undefined);\n /** The value an uncontrolled split button remembers first, read once. */\n readonly defaultValue = input<string | undefined>(undefined);\n /**\n * One output for one transition, carrying the value, the value it\n * replaces, the reason, the originating event and `cancel()`.\n */\n readonly valueChange = output<ChangeRequest<string>>();\n\n private readonly defaults = injectSplitButtonDefaults();\n private readonly inherited = inject(BUTTON_DEFAULTS_TOKEN, { skipSelf: true });\n /**\n * A static attribute the consumer wrote survives the host binding, so a\n * root that is already inside a named group can give the role up with\n * `role=\"\"`, the way `button-group` lets it.\n */\n private readonly writtenRole = inject(new HostAttributeToken('role'), { optional: true });\n protected readonly role = this.writtenRole === '' ? null : (this.writtenRole ?? 'group');\n\n private readonly own: WritableSignal<string | undefined> = signal(undefined);\n\n /* Resolution: the input, the family's defaults, `button`'s defaults, then\n the contract's. */\n readonly resolvedSize = computed(\n () => this.size() ?? this.defaults.size ?? this.inherited.size ?? 'md',\n );\n readonly resolvedTone = computed(\n () => this.tone() ?? this.defaults.tone ?? this.inherited.tone ?? 'accent',\n );\n readonly resolvedVariant = computed(\n () => this.variant() ?? this.defaults.variant ?? this.inherited.variant ?? 'solid',\n );\n /** The remembered value, under `remember`; nothing otherwise. */\n readonly resolvedValue = computed(() =>\n this.remember() ? (this.value() ?? this.own() ?? this.defaultValue()) : undefined,\n );\n\n /** Asks the family to remember one alternative as the action. */\n select(next: string, reason: SplitButtonValueReason, source?: unknown): boolean {\n const state = createControllable<string>({\n controlled: this.value(),\n initial: this.resolvedValue() ?? '',\n onRequest: (request) => this.valueChange.emit(request),\n });\n const accepted = state.request(next, reason, source);\n if (accepted) this.own.set(next);\n return accepted;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n forwardRef,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport {\n blockActivation,\n BUTTON_WAIT,\n resolveInertness,\n resolveLoadingIndicator,\n SlButton,\n SlIconButton,\n} from '@slotted/angular/button';\nimport { SlMenuRadioGroup, SlMenuTrigger } from '@slotted/angular/menu';\n\nimport { SlSplitButton } from './split-button';\nimport type { SplitButtonValueReason } from './split-button';\n\n/**\n * The action: `SlButton`, carrying this family's part and folding the root's\n * `disabled` and `loading` into its own. The subclass restates the template\n * and the host binding for the part, and overrides the two resolvers the\n * parent reads its state through — everything else, from `slButtonStart` to\n * the indicator, is `SlButton`'s. `button` selects itself by `data-ui` alone\n * and reads no part on its root, so the part slot is free.\n */\n@Component({\n selector: 'button[slSplitButtonPrimary]',\n standalone: true,\n template: `<ng-content select=\"[slButtonStart]\"></ng-content\n ><span data-part=\"label\" data-part-label=\"\"><ng-content></ng-content></span\n ><ng-content select=\"[slButtonEnd]\"></ng-content>\n @if (waiting() && !hasVisualSlot()) {\n <span\n data-part=\"indicator\"\n data-part-indicator=\"\"\n data-ui=\"spinner\"\n data-ui-spinner=\"\"\n role=\"progressbar\"\n [attr.aria-label]=\"t('loading')\"\n ></span>\n }`,\n styleUrls: [\n '../../../styles/src/button/button.css',\n '../../../styles/src/spinner/spinner.css',\n '../../../styles/src/split-button/split-button.css',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slSplitButtonPrimary',\n providers: [{ provide: BUTTON_WAIT, useExisting: forwardRef(() => SlSplitButtonPrimary) }],\n host: {\n '[attr.data-part]': '\"primary\"',\n '[attr.data-part-root]': 'null',\n '[attr.data-part-primary]': \"''\",\n '[attr.data-disabled]': 'stateAttribute(resolvedDisabled())',\n '[attr.data-loading]': 'stateAttribute(resolvedLoading())',\n },\n})\nexport class SlSplitButtonPrimary extends SlButton {\n private readonly split = inject(SlSplitButton);\n\n readonly resolvedDisabled = computed(() => this.disabled() || this.split.disabled());\n readonly resolvedLoading = computed(() => this.loading() || this.split.loading());\n\n protected override readonly inert = resolveInertness({\n disabled: this.resolvedDisabled,\n focusableWhenDisabled: this.focusableWhenDisabled,\n loading: this.resolvedLoading,\n });\n override readonly waiting = resolveLoadingIndicator(this.resolvedLoading, this.loadingDelay);\n}\n\n/**\n * The keys of the Menu Button pattern, which `slMenuTriggerFor` answers on\n * this element and which a busy trigger has to refuse before it does.\n */\nconst OPENING_KEYS = new Set(['ArrowDown', 'ArrowUp', 'Enter', ' ']);\n\n/**\n * The menu trigger: `SlIconButton` hosting `slMenuTriggerFor` and carrying\n * this family's part. It takes `aria-haspopup`, `aria-expanded`,\n * `aria-controls` and the four keys of the Menu Button pattern from `menu`,\n * and every tone, variant and size from `button`. The chevron is the\n * family's, the `chevron-down` Glyph element in the icon part, which `button`\n * sizes; content the consumer writes replaces it; the accessible name is the consumer's, and `SlIconButton`\n * refuses to render without one in development.\n *\n * `slMenuTriggerFor` is a host directive rather than a second attribute the\n * consumer writes beside this one, and the order is the point: a host\n * directive's bindings run before the host's, so the `data-part` and the\n * `data-disabled` this component binds win over the `null` the trigger\n * binds for a control that is neither a bar's item nor a submenu's. The\n * write-back `toolbar`'s overflow needs is not needed here.\n *\n * While the root is loading the trigger is busy: `aria-disabled`, still in\n * the tab sequence, still named, still painted — no `data-disabled`, so\n * `button` does not paint it unavailable beside an action still in its\n * tone. The click is refused in the capture phase by `button`'s own guard,\n * and the opening keys are refused the same way here, before the trigger's\n * own listener sees them.\n */\n@Component({\n selector: 'button[slSplitButtonMenuTrigger]',\n standalone: true,\n imports: [SlGlyph, SlIcon],\n /* The chevron is drawn unless the consumer wrote content of their own. */\n template: `<span data-part=\"icon\" data-part-icon=\"\"\n ><ng-content\n ><span slIcon><svg slGlyph name=\"chevron-down\"></svg></span\n ></ng-content>\n @if (waiting()) {\n <span\n data-part=\"indicator\"\n data-part-indicator=\"\"\n data-ui=\"spinner\"\n data-ui-spinner=\"\"\n role=\"progressbar\"\n [attr.aria-label]=\"t('loading')\"\n ></span>\n }\n </span>`,\n styleUrls: [\n '../../../styles/src/button/button.css',\n '../../../styles/src/spinner/spinner.css',\n '../../../styles/src/split-button/split-button.css',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'slSplitButtonMenuTrigger',\n hostDirectives: [{ directive: SlMenuTrigger, inputs: ['slMenuTriggerFor'] }],\n host: {\n '[attr.data-part]': '\"menu-trigger\"',\n '[attr.data-part-root]': 'null',\n '[attr.data-part-menu-trigger]': \"''\",\n '[attr.data-disabled]': 'stateAttribute(resolvedDisabled())',\n '[attr.aria-disabled]': 'inert.ariaDisabled()',\n '[disabled]': 'inert.nativelyDisabled()',\n },\n})\nexport class SlSplitButtonMenuTrigger extends SlIconButton {\n private readonly split = inject(SlSplitButton);\n\n readonly resolvedDisabled = computed(() => this.disabled() || this.split.disabled());\n /** The action is in flight and the menu waits with it. */\n readonly busy = computed(() => this.split.loading());\n\n protected override readonly inert = resolveInertness({\n disabled: this.resolvedDisabled,\n focusableWhenDisabled: this.focusableWhenDisabled,\n loading: this.busy,\n });\n\n constructor() {\n super();\n const element = inject(ElementRef<HTMLButtonElement>).nativeElement;\n const listener = (event: KeyboardEvent) => {\n if (this.busy() && OPENING_KEYS.has(event.key)) blockActivation(event);\n };\n element.addEventListener('keydown', listener, { capture: true });\n inject(DestroyRef).onDestroy(() =>\n element.removeEventListener('keydown', listener, { capture: true }),\n );\n }\n}\n\n/**\n * The alternatives under `remember`: the consumer's `sl-menu-radio-group`,\n * bound both ways to the root's value. The group never owns the value — its\n * own request is cancelled once forwarded, and what it shows checked is\n * written back from the root, so a controlled root the consumer has not yet\n * moved shows nothing the consumer did not agree to. The DI tree is the\n * template tree, so the group finds the root above it however the layer is\n * portaled.\n */\n@Directive({\n selector: 'sl-menu-radio-group[slSplitButtonChoices]',\n standalone: true,\n exportAs: 'slSplitButtonChoices',\n})\nexport class SlSplitButtonChoices {\n private readonly group = inject(SlMenuRadioGroup, { self: true });\n private readonly split = inject(SlSplitButton);\n\n constructor() {\n if (!this.split.remember()) {\n throw new Error('slSplitButtonChoices needs a slSplitButton with `remember`.');\n }\n\n effect(() => {\n this.group.value.set(this.split.resolvedValue());\n });\n\n const subscription = this.group.valueChangeRequest.subscribe((request) => {\n this.split.select(request.value, request.reason as SplitButtonValueReason, request.source);\n request.cancel();\n });\n inject(DestroyRef).onDestroy(() => subscription.unsubscribe());\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -475,21 +475,23 @@ class SlSplitter {
475
475
  this.requestValue(this.clamp(this.defaultValue()), 'pointer', event);
476
476
  }
477
477
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlSplitter, deps: [], target: i0.ɵɵFactoryTarget.Component });
478
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlSplitter, isStandalone: true, selector: "[slSplitter]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, collapsedValue: { classPropertyName: "collapsedValue", publicName: "collapsedValue", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, snapPoints: { classPropertyName: "snapPoints", publicName: "snapPoints", isSignal: true, isRequired: false, transformFunction: null }, for: { classPropertyName: "for", publicName: "for", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", collapsed: "collapsedChange", valueChangeRequest: "valueChangeRequest", collapsedChangeRequest: "collapsedChangeRequest", resizeEnd: "resizeEnd" }, host: { attributes: { "data-ui": "splitter", "data-part": "root" }, listeners: { "pointerdown": "onPointerDown($event)", "keydown": "onKeyDown($event)", "dblclick": "onDoubleClick($event)" }, properties: { "attr.role": "role()", "attr.tabindex": "tabIndex()", "attr.data-orientation": "resolvedOrientation()", "attr.data-dragging": "dragging() ? '' : null", "attr.data-disabled": "disabled() ? '' : null", "attr.data-expanded": "collapsible() && !collapsed() ? '' : null", "attr.aria-orientation": "ariaOrientation()", "attr.aria-valuenow": "ariaValueNow()", "attr.aria-valuemin": "ariaValueMin()", "attr.aria-valuemax": "ariaValueMax()", "attr.aria-controls": "ariaControls()", "attr.aria-disabled": "disabled() ? 'true' : null" } }, exportAs: ["slSplitter"], ngImport: i0, template: `
479
- <span data-part="line" aria-hidden="true"></span>
480
- <span data-part="grip" aria-hidden="true"></span>
481
- <span data-part="line" aria-hidden="true"></span>
482
- `, isInline: true, styles: ["@layer slotted.components{[data-ui=splitter]{--_track: var(--slotted-space-6, 1rem);--_reach: var(--slotted-target-min, 24px);--_line: var(--slotted-border-width-thin, 1px);--_line-length: var(--slotted-space-12, 4rem);--_gap: min(var(--slotted-space-9, 2rem), 12%);--_dot: var(--slotted-space-2, .25rem);--_rest: var(--slotted-splitter-line-color, var(--slotted-border-strong, ButtonBorder));--_active: var(--slotted-splitter-line-active-color, var(--slotted-text-muted, ButtonText));box-sizing:border-box;position:relative;display:flex;align-items:center;justify-content:center;gap:var(--_gap);flex-shrink:0;background:transparent;touch-action:none;transition:gap var(--slotted-control-transition-duration, var(--slotted-duration-short)) var(--slotted-control-transition-easing, var(--slotted-easing-standard))}[data-ui=splitter]:not([data-disabled]):hover,[data-ui=splitter]:not([data-disabled]):focus-visible,[data-ui=splitter][data-dragging]{--_gap: var(--slotted-space-4, .5rem)}[data-ui=splitter][data-orientation=vertical]{flex-direction:column;inline-size:var(--_track);align-self:stretch;cursor:col-resize}[data-ui=splitter][data-orientation=horizontal]{flex-direction:row;block-size:var(--_track);justify-self:stretch;cursor:row-resize}[data-ui=splitter]:before{content:\"\";position:absolute;--_overhang: calc((var(--_reach) - var(--_track)) / -2)}[data-ui=splitter][data-orientation=vertical]:before{inset-block:0;inset-inline:var(--_overhang)}[data-ui=splitter][data-orientation=horizontal]:before{inset-inline:0;inset-block:var(--_overhang)}[data-ui=splitter]>[data-part=line]{flex:0 1 min(var(--_line-length),20%);min-block-size:0;min-inline-size:0;border-radius:var(--slotted-radius-sm, 2px);transition:flex-basis var(--slotted-control-transition-duration, var(--slotted-duration-short)) var(--slotted-control-transition-easing, var(--slotted-easing-standard)),background-color var(--slotted-control-transition-duration, var(--slotted-duration-short)) var(--slotted-control-transition-easing, var(--slotted-easing-standard))}[data-ui=splitter][data-orientation=vertical]>[data-part=line]{inline-size:var(--_line)}[data-ui=splitter][data-orientation=horizontal]>[data-part=line]{block-size:var(--_line)}[data-ui=splitter][data-orientation=vertical]>[data-part=line]:first-child{background:linear-gradient(to bottom,transparent,var(--_rest))}[data-ui=splitter][data-orientation=vertical]>[data-part=line]:last-child{background:linear-gradient(to top,transparent,var(--_rest))}[data-ui=splitter][data-orientation=horizontal]>[data-part=line]:first-child{background:linear-gradient(to right,transparent,var(--_rest))}[data-ui=splitter][data-orientation=horizontal]>[data-part=line]:last-child{background:linear-gradient(to left,transparent,var(--_rest))}[data-ui=splitter]:not([data-disabled]):hover>[data-part=line],[data-ui=splitter]:not([data-disabled]):focus-visible>[data-part=line],[data-ui=splitter][data-dragging]>[data-part=line]{flex-basis:100%;background:var(--_active)}[data-ui=splitter]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:calc(-1 * var(--slotted-focus-ring-offset, 2px))}[data-ui=splitter]>[data-part=grip]{flex:none;color:var(--_rest);background-image:radial-gradient(circle at center,currentColor 40%,transparent 42%);background-size:var(--_dot) var(--_dot);background-repeat:repeat;transition:color var(--slotted-control-transition-duration, var(--slotted-duration-short)) var(--slotted-control-transition-easing, var(--slotted-easing-standard))}[data-ui=splitter][data-orientation=vertical]>[data-part=grip]{inline-size:calc(2 * var(--_dot));block-size:calc(3 * var(--_dot))}[data-ui=splitter][data-orientation=horizontal]>[data-part=grip]{inline-size:calc(3 * var(--_dot));block-size:calc(2 * var(--_dot))}[data-ui=splitter]:not([data-disabled]):hover>[data-part=grip],[data-ui=splitter]:not([data-disabled]):focus-visible>[data-part=grip],[data-ui=splitter][data-dragging]>[data-part=grip]{color:var(--_active)}[data-ui=splitter][data-disabled]{cursor:default;--_rest: var(--slotted-splitter-disabled-line-color, var(--slotted-disabled-border, GrayText))}@media(forced-colors:active){[data-ui=splitter]>[data-part=line]{background:ButtonBorder;forced-color-adjust:none}[data-ui=splitter]:not([data-disabled]):hover>[data-part=line],[data-ui=splitter][data-dragging]>[data-part=line]{background:ButtonText}[data-ui=splitter]>[data-part=grip]{background-image:none;background-color:ButtonBorder}[data-ui=splitter][data-disabled]>[data-part=line],[data-ui=splitter][data-disabled]>[data-part=grip]{background:GrayText}}@media(prefers-reduced-motion:reduce){[data-ui=splitter]>[data-part=line],[data-ui=splitter]>[data-part=grip]{transition-duration:var(--slotted-duration-instant)}}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
478
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlSplitter, isStandalone: true, selector: "[slSplitter]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, collapsedValue: { classPropertyName: "collapsedValue", publicName: "collapsedValue", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, snapPoints: { classPropertyName: "snapPoints", publicName: "snapPoints", isSignal: true, isRequired: false, transformFunction: null }, for: { classPropertyName: "for", publicName: "for", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", collapsed: "collapsedChange", valueChangeRequest: "valueChangeRequest", collapsedChangeRequest: "collapsedChangeRequest", resizeEnd: "resizeEnd" }, host: { attributes: { "data-ui": "splitter", "data-ui-splitter": "", "data-part": "root", "data-part-root": "" }, listeners: { "pointerdown": "onPointerDown($event)", "keydown": "onKeyDown($event)", "dblclick": "onDoubleClick($event)" }, properties: { "attr.role": "role()", "attr.tabindex": "tabIndex()", "attr.data-orientation": "resolvedOrientation()", "attr.data-dragging": "dragging() ? '' : null", "attr.data-disabled": "disabled() ? '' : null", "attr.data-expanded": "collapsible() && !collapsed() ? '' : null", "attr.aria-orientation": "ariaOrientation()", "attr.aria-valuenow": "ariaValueNow()", "attr.aria-valuemin": "ariaValueMin()", "attr.aria-valuemax": "ariaValueMax()", "attr.aria-controls": "ariaControls()", "attr.aria-disabled": "disabled() ? 'true' : null" } }, exportAs: ["slSplitter"], ngImport: i0, template: `
479
+ <span data-part="line" data-part-line="" aria-hidden="true"></span>
480
+ <span data-part="grip" data-part-grip="" aria-hidden="true"></span>
481
+ <span data-part="line" data-part-line="" aria-hidden="true"></span>
482
+ `, isInline: true, styles: ["@layer slotted.components{[data-ui-splitter]{--_track: var(--slotted-space-6, 1rem);--_reach: var(--slotted-target-min, 24px);--_line: var(--slotted-border-width-thin, 1px);--_line-length: var(--slotted-space-12, 4rem);--_gap: min(var(--slotted-space-9, 2rem), 12%);--_dot: var(--slotted-space-2, .25rem);--_rest: var(--slotted-splitter-line-color, var(--slotted-border-strong, ButtonBorder));--_active: var(--slotted-splitter-line-active-color, var(--slotted-text-muted, ButtonText));box-sizing:border-box;position:relative;display:flex;align-items:center;justify-content:center;gap:var(--_gap);flex-shrink:0;background:transparent;touch-action:none;transition:gap var(--slotted-control-transition-duration, var(--slotted-duration-short)) var(--slotted-control-transition-easing, var(--slotted-easing-standard))}[data-ui-splitter]:not([data-disabled]):hover,[data-ui-splitter]:not([data-disabled]):focus-visible,[data-ui-splitter][data-dragging]{--_gap: var(--slotted-space-4, .5rem)}[data-ui-splitter][data-orientation=vertical]{flex-direction:column;inline-size:var(--_track);align-self:stretch;cursor:col-resize}[data-ui-splitter][data-orientation=horizontal]{flex-direction:row;block-size:var(--_track);justify-self:stretch;cursor:row-resize}[data-ui-splitter]:before{content:\"\";position:absolute;--_overhang: calc((var(--_reach) - var(--_track)) / -2)}[data-ui-splitter][data-orientation=vertical]:before{inset-block:0;inset-inline:var(--_overhang)}[data-ui-splitter][data-orientation=horizontal]:before{inset-inline:0;inset-block:var(--_overhang)}[data-ui-splitter]>[data-part-line]{flex:0 1 min(var(--_line-length),20%);min-block-size:0;min-inline-size:0;border-radius:var(--slotted-radius-sm, 2px);transition:flex-basis var(--slotted-control-transition-duration, var(--slotted-duration-short)) var(--slotted-control-transition-easing, var(--slotted-easing-standard)),background-color var(--slotted-control-transition-duration, var(--slotted-duration-short)) var(--slotted-control-transition-easing, var(--slotted-easing-standard))}[data-ui-splitter][data-orientation=vertical]>[data-part-line]{inline-size:var(--_line)}[data-ui-splitter][data-orientation=horizontal]>[data-part-line]{block-size:var(--_line)}[data-ui-splitter][data-orientation=vertical]>[data-part-line]:first-child{background:linear-gradient(to bottom,transparent,var(--_rest))}[data-ui-splitter][data-orientation=vertical]>[data-part-line]:last-child{background:linear-gradient(to top,transparent,var(--_rest))}[data-ui-splitter][data-orientation=horizontal]>[data-part-line]:first-child{background:linear-gradient(to right,transparent,var(--_rest))}[data-ui-splitter][data-orientation=horizontal]>[data-part-line]:last-child{background:linear-gradient(to left,transparent,var(--_rest))}[data-ui-splitter]:not([data-disabled]):hover>[data-part-line],[data-ui-splitter]:not([data-disabled]):focus-visible>[data-part-line],[data-ui-splitter][data-dragging]>[data-part-line]{flex-basis:100%;background:var(--_active)}[data-ui-splitter]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:calc(-1 * var(--slotted-focus-ring-offset, 2px))}[data-ui-splitter]>[data-part-grip]{flex:none;color:var(--_rest);background-image:radial-gradient(circle at center,currentColor 40%,transparent 42%);background-size:var(--_dot) var(--_dot);background-repeat:repeat;transition:color var(--slotted-control-transition-duration, var(--slotted-duration-short)) var(--slotted-control-transition-easing, var(--slotted-easing-standard))}[data-ui-splitter][data-orientation=vertical]>[data-part-grip]{inline-size:calc(2 * var(--_dot));block-size:calc(3 * var(--_dot))}[data-ui-splitter][data-orientation=horizontal]>[data-part-grip]{inline-size:calc(3 * var(--_dot));block-size:calc(2 * var(--_dot))}[data-ui-splitter]:not([data-disabled]):hover>[data-part-grip],[data-ui-splitter]:not([data-disabled]):focus-visible>[data-part-grip],[data-ui-splitter][data-dragging]>[data-part-grip]{color:var(--_active)}[data-ui-splitter][data-disabled]{cursor:default;--_rest: var(--slotted-splitter-disabled-line-color, var(--slotted-disabled-border, GrayText))}@media(forced-colors:active){[data-ui-splitter]>[data-part-line]{background:ButtonBorder;forced-color-adjust:none}[data-ui-splitter]:not([data-disabled]):hover>[data-part-line],[data-ui-splitter][data-dragging]>[data-part-line]{background:ButtonText}[data-ui-splitter]>[data-part-grip]{background-image:none;background-color:ButtonBorder}[data-ui-splitter][data-disabled]>[data-part-line],[data-ui-splitter][data-disabled]>[data-part-grip]{background:GrayText}}@media(prefers-reduced-motion:reduce){[data-ui-splitter]>[data-part-line],[data-ui-splitter]>[data-part-grip]{transition-duration:var(--slotted-duration-instant)}}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
483
483
  }
484
484
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlSplitter, decorators: [{
485
485
  type: Component,
486
486
  args: [{ selector: '[slSplitter]', standalone: true, exportAs: 'slSplitter', template: `
487
- <span data-part="line" aria-hidden="true"></span>
488
- <span data-part="grip" aria-hidden="true"></span>
489
- <span data-part="line" aria-hidden="true"></span>
487
+ <span data-part="line" data-part-line="" aria-hidden="true"></span>
488
+ <span data-part="grip" data-part-grip="" aria-hidden="true"></span>
489
+ <span data-part="line" data-part-line="" aria-hidden="true"></span>
490
490
  `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
491
491
  'data-ui': 'splitter',
492
+ 'data-ui-splitter': '',
492
493
  'data-part': 'root',
494
+ 'data-part-root': '',
493
495
  '[attr.role]': 'role()',
494
496
  '[attr.tabindex]': 'tabIndex()',
495
497
  '[attr.data-orientation]': 'resolvedOrientation()',
@@ -505,7 +507,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
505
507
  '(pointerdown)': 'onPointerDown($event)',
506
508
  '(keydown)': 'onKeyDown($event)',
507
509
  '(dblclick)': 'onDoubleClick($event)',
508
- }, styles: ["@layer slotted.components{[data-ui=splitter]{--_track: var(--slotted-space-6, 1rem);--_reach: var(--slotted-target-min, 24px);--_line: var(--slotted-border-width-thin, 1px);--_line-length: var(--slotted-space-12, 4rem);--_gap: min(var(--slotted-space-9, 2rem), 12%);--_dot: var(--slotted-space-2, .25rem);--_rest: var(--slotted-splitter-line-color, var(--slotted-border-strong, ButtonBorder));--_active: var(--slotted-splitter-line-active-color, var(--slotted-text-muted, ButtonText));box-sizing:border-box;position:relative;display:flex;align-items:center;justify-content:center;gap:var(--_gap);flex-shrink:0;background:transparent;touch-action:none;transition:gap var(--slotted-control-transition-duration, var(--slotted-duration-short)) var(--slotted-control-transition-easing, var(--slotted-easing-standard))}[data-ui=splitter]:not([data-disabled]):hover,[data-ui=splitter]:not([data-disabled]):focus-visible,[data-ui=splitter][data-dragging]{--_gap: var(--slotted-space-4, .5rem)}[data-ui=splitter][data-orientation=vertical]{flex-direction:column;inline-size:var(--_track);align-self:stretch;cursor:col-resize}[data-ui=splitter][data-orientation=horizontal]{flex-direction:row;block-size:var(--_track);justify-self:stretch;cursor:row-resize}[data-ui=splitter]:before{content:\"\";position:absolute;--_overhang: calc((var(--_reach) - var(--_track)) / -2)}[data-ui=splitter][data-orientation=vertical]:before{inset-block:0;inset-inline:var(--_overhang)}[data-ui=splitter][data-orientation=horizontal]:before{inset-inline:0;inset-block:var(--_overhang)}[data-ui=splitter]>[data-part=line]{flex:0 1 min(var(--_line-length),20%);min-block-size:0;min-inline-size:0;border-radius:var(--slotted-radius-sm, 2px);transition:flex-basis var(--slotted-control-transition-duration, var(--slotted-duration-short)) var(--slotted-control-transition-easing, var(--slotted-easing-standard)),background-color var(--slotted-control-transition-duration, var(--slotted-duration-short)) var(--slotted-control-transition-easing, var(--slotted-easing-standard))}[data-ui=splitter][data-orientation=vertical]>[data-part=line]{inline-size:var(--_line)}[data-ui=splitter][data-orientation=horizontal]>[data-part=line]{block-size:var(--_line)}[data-ui=splitter][data-orientation=vertical]>[data-part=line]:first-child{background:linear-gradient(to bottom,transparent,var(--_rest))}[data-ui=splitter][data-orientation=vertical]>[data-part=line]:last-child{background:linear-gradient(to top,transparent,var(--_rest))}[data-ui=splitter][data-orientation=horizontal]>[data-part=line]:first-child{background:linear-gradient(to right,transparent,var(--_rest))}[data-ui=splitter][data-orientation=horizontal]>[data-part=line]:last-child{background:linear-gradient(to left,transparent,var(--_rest))}[data-ui=splitter]:not([data-disabled]):hover>[data-part=line],[data-ui=splitter]:not([data-disabled]):focus-visible>[data-part=line],[data-ui=splitter][data-dragging]>[data-part=line]{flex-basis:100%;background:var(--_active)}[data-ui=splitter]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:calc(-1 * var(--slotted-focus-ring-offset, 2px))}[data-ui=splitter]>[data-part=grip]{flex:none;color:var(--_rest);background-image:radial-gradient(circle at center,currentColor 40%,transparent 42%);background-size:var(--_dot) var(--_dot);background-repeat:repeat;transition:color var(--slotted-control-transition-duration, var(--slotted-duration-short)) var(--slotted-control-transition-easing, var(--slotted-easing-standard))}[data-ui=splitter][data-orientation=vertical]>[data-part=grip]{inline-size:calc(2 * var(--_dot));block-size:calc(3 * var(--_dot))}[data-ui=splitter][data-orientation=horizontal]>[data-part=grip]{inline-size:calc(3 * var(--_dot));block-size:calc(2 * var(--_dot))}[data-ui=splitter]:not([data-disabled]):hover>[data-part=grip],[data-ui=splitter]:not([data-disabled]):focus-visible>[data-part=grip],[data-ui=splitter][data-dragging]>[data-part=grip]{color:var(--_active)}[data-ui=splitter][data-disabled]{cursor:default;--_rest: var(--slotted-splitter-disabled-line-color, var(--slotted-disabled-border, GrayText))}@media(forced-colors:active){[data-ui=splitter]>[data-part=line]{background:ButtonBorder;forced-color-adjust:none}[data-ui=splitter]:not([data-disabled]):hover>[data-part=line],[data-ui=splitter][data-dragging]>[data-part=line]{background:ButtonText}[data-ui=splitter]>[data-part=grip]{background-image:none;background-color:ButtonBorder}[data-ui=splitter][data-disabled]>[data-part=line],[data-ui=splitter][data-disabled]>[data-part=grip]{background:GrayText}}@media(prefers-reduced-motion:reduce){[data-ui=splitter]>[data-part=line],[data-ui=splitter]>[data-part=grip]{transition-duration:var(--slotted-duration-instant)}}}\n"] }]
510
+ }, styles: ["@layer slotted.components{[data-ui-splitter]{--_track: var(--slotted-space-6, 1rem);--_reach: var(--slotted-target-min, 24px);--_line: var(--slotted-border-width-thin, 1px);--_line-length: var(--slotted-space-12, 4rem);--_gap: min(var(--slotted-space-9, 2rem), 12%);--_dot: var(--slotted-space-2, .25rem);--_rest: var(--slotted-splitter-line-color, var(--slotted-border-strong, ButtonBorder));--_active: var(--slotted-splitter-line-active-color, var(--slotted-text-muted, ButtonText));box-sizing:border-box;position:relative;display:flex;align-items:center;justify-content:center;gap:var(--_gap);flex-shrink:0;background:transparent;touch-action:none;transition:gap var(--slotted-control-transition-duration, var(--slotted-duration-short)) var(--slotted-control-transition-easing, var(--slotted-easing-standard))}[data-ui-splitter]:not([data-disabled]):hover,[data-ui-splitter]:not([data-disabled]):focus-visible,[data-ui-splitter][data-dragging]{--_gap: var(--slotted-space-4, .5rem)}[data-ui-splitter][data-orientation=vertical]{flex-direction:column;inline-size:var(--_track);align-self:stretch;cursor:col-resize}[data-ui-splitter][data-orientation=horizontal]{flex-direction:row;block-size:var(--_track);justify-self:stretch;cursor:row-resize}[data-ui-splitter]:before{content:\"\";position:absolute;--_overhang: calc((var(--_reach) - var(--_track)) / -2)}[data-ui-splitter][data-orientation=vertical]:before{inset-block:0;inset-inline:var(--_overhang)}[data-ui-splitter][data-orientation=horizontal]:before{inset-inline:0;inset-block:var(--_overhang)}[data-ui-splitter]>[data-part-line]{flex:0 1 min(var(--_line-length),20%);min-block-size:0;min-inline-size:0;border-radius:var(--slotted-radius-sm, 2px);transition:flex-basis var(--slotted-control-transition-duration, var(--slotted-duration-short)) var(--slotted-control-transition-easing, var(--slotted-easing-standard)),background-color var(--slotted-control-transition-duration, var(--slotted-duration-short)) var(--slotted-control-transition-easing, var(--slotted-easing-standard))}[data-ui-splitter][data-orientation=vertical]>[data-part-line]{inline-size:var(--_line)}[data-ui-splitter][data-orientation=horizontal]>[data-part-line]{block-size:var(--_line)}[data-ui-splitter][data-orientation=vertical]>[data-part-line]:first-child{background:linear-gradient(to bottom,transparent,var(--_rest))}[data-ui-splitter][data-orientation=vertical]>[data-part-line]:last-child{background:linear-gradient(to top,transparent,var(--_rest))}[data-ui-splitter][data-orientation=horizontal]>[data-part-line]:first-child{background:linear-gradient(to right,transparent,var(--_rest))}[data-ui-splitter][data-orientation=horizontal]>[data-part-line]:last-child{background:linear-gradient(to left,transparent,var(--_rest))}[data-ui-splitter]:not([data-disabled]):hover>[data-part-line],[data-ui-splitter]:not([data-disabled]):focus-visible>[data-part-line],[data-ui-splitter][data-dragging]>[data-part-line]{flex-basis:100%;background:var(--_active)}[data-ui-splitter]:focus-visible{outline:var(--slotted-focus-ring-width, 2px) solid var(--slotted-focus-ring-color, Highlight);outline-offset:calc(-1 * var(--slotted-focus-ring-offset, 2px))}[data-ui-splitter]>[data-part-grip]{flex:none;color:var(--_rest);background-image:radial-gradient(circle at center,currentColor 40%,transparent 42%);background-size:var(--_dot) var(--_dot);background-repeat:repeat;transition:color var(--slotted-control-transition-duration, var(--slotted-duration-short)) var(--slotted-control-transition-easing, var(--slotted-easing-standard))}[data-ui-splitter][data-orientation=vertical]>[data-part-grip]{inline-size:calc(2 * var(--_dot));block-size:calc(3 * var(--_dot))}[data-ui-splitter][data-orientation=horizontal]>[data-part-grip]{inline-size:calc(3 * var(--_dot));block-size:calc(2 * var(--_dot))}[data-ui-splitter]:not([data-disabled]):hover>[data-part-grip],[data-ui-splitter]:not([data-disabled]):focus-visible>[data-part-grip],[data-ui-splitter][data-dragging]>[data-part-grip]{color:var(--_active)}[data-ui-splitter][data-disabled]{cursor:default;--_rest: var(--slotted-splitter-disabled-line-color, var(--slotted-disabled-border, GrayText))}@media(forced-colors:active){[data-ui-splitter]>[data-part-line]{background:ButtonBorder;forced-color-adjust:none}[data-ui-splitter]:not([data-disabled]):hover>[data-part-line],[data-ui-splitter][data-dragging]>[data-part-line]{background:ButtonText}[data-ui-splitter]>[data-part-grip]{background-image:none;background-color:ButtonBorder}[data-ui-splitter][data-disabled]>[data-part-line],[data-ui-splitter][data-disabled]>[data-part-grip]{background:GrayText}}@media(prefers-reduced-motion:reduce){[data-ui-splitter]>[data-part-line],[data-ui-splitter]>[data-part-grip]{transition-duration:var(--slotted-duration-instant)}}}\n"] }]
509
511
  }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], collapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsed", required: false }] }, { type: i0.Output, args: ["collapsedChange"] }], defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], collapsedValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsedValue", required: false }] }], collapsible: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsible", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], snapPoints: [{ type: i0.Input, args: [{ isSignal: true, alias: "snapPoints", required: false }] }], for: [{ type: i0.Input, args: [{ isSignal: true, alias: "for", required: false }] }], valueChangeRequest: [{ type: i0.Output, args: ["valueChangeRequest"] }], collapsedChangeRequest: [{ type: i0.Output, args: ["collapsedChangeRequest"] }], resizeEnd: [{ type: i0.Output, args: ["resizeEnd"] }] } });
510
512
 
511
513
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"slotted-angular-splitter.mjs","sources":["../../splitter/src/splitter-defaults.ts","../../splitter/src/splitter.ts","../../splitter/src/slotted-angular-splitter.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\n\n/**\n * Which way the bar's own line runs.\n *\n * The family holds no panels, so there is nothing else for `orientation` to\n * describe and `aria-orientation` takes the same value. A family that held\n * panels would have to say which of the two the word means — the panes are side\n * by side while the separator between them is vertical — and the two readings\n * are perpendicular. Here they cannot disagree.\n */\nexport type SplitterOrientation = 'vertical' | 'horizontal';\n\n/**\n * A limit on how far the bar goes: a fraction of the container in `[0, 1]`, or\n * any CSS length resolved against the container at the moment of the clamp.\n *\n * Both, because both are real. Zag, Ark, PrimeNG and allotment are\n * percentage-only — Zag states the limitation outright — and none of them can\n * express \"this navigation panel never goes below two hundred pixels\", which is\n * the commonest constraint the family has.\n */\nexport type SplitterLimit = number | string;\n\n/** Why the bar moved. */\nexport type SplitterValueReason = 'pointer' | 'keyboard' | 'programmatic';\n\ninterface Request<Value> {\n readonly value: Value;\n readonly previous: Value;\n readonly reason: SplitterValueReason;\n readonly source?: unknown;\n readonly cancelled: boolean;\n cancel(): void;\n}\n\n/** The request the bar emits before its position moves. */\nexport type SplitterValueRequest = Request<number>;\n\n/** The request the bar emits before it collapses or comes back. */\nexport type SplitterCollapsedRequest = Request<boolean>;\n\nexport interface SplitterDefaults {\n orientation: SplitterOrientation;\n min: SplitterLimit;\n max: SplitterLimit;\n collapsedValue: number;\n}\n\nconst FALLBACK: SplitterDefaults = {\n collapsedValue: 0,\n max: 1,\n min: 0,\n orientation: 'vertical',\n};\n\nexport const SPLITTER_DEFAULTS = new InjectionToken<SplitterDefaults>('slotted splitter defaults', {\n providedIn: 'root',\n factory: () => FALLBACK,\n});\n\n/**\n * An application decides once how far its bars may travel, rather than\n * repeating the same floor on every one in a product. A workspace whose\n * navigation never goes below two hundred pixels says so here and nowhere else.\n *\n * None of the seven surveyed implementations has an equivalent: each takes its\n * limits per instance, so a product changing its floor changes every call site.\n */\nexport function provideSplitterDefaults(defaults: Partial<SplitterDefaults>) {\n return {\n provide: SPLITTER_DEFAULTS,\n useFactory: (): SplitterDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a splitter is here, before it states anything of its own. */\nexport function injectSplitterDefaults(): SplitterDefaults {\n return inject(SPLITTER_DEFAULTS);\n}\n\n/**\n * Application-scoped rather than module-scoped, for the reason `field` records:\n * a module-level counter produces colliding sequences when two applications\n * render in one server process, and the server and the client sequences must\n * match for hydration.\n */\n@Injectable({ providedIn: 'root' })\nexport class SlSplitterIdFactory {\n private count = 0;\n\n next() {\n this.count += 1;\n return `slotted-splitter-${this.count}`;\n }\n}\n","import {\n anchorsAtStart,\n EXTENT_LARGE_STEP_PX,\n EXTENT_STEP_PX,\n extentAtPoint,\n extentBounds,\n extentFromLength,\n holdResizeGesture,\n measureLength,\n nearestSnap,\n stepAmountFromPixels,\n stepExtent,\n} from '@slotted/core/extent';\nimport { createControllable } from '@slotted/core/state';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n model,\n output,\n signal,\n untracked,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { injectSplitterDefaults, SlSplitterIdFactory } from './splitter-defaults';\nimport type {\n SplitterCollapsedRequest,\n SplitterLimit,\n SplitterOrientation,\n SplitterValueReason,\n SplitterValueRequest,\n} from './splitter-defaults';\n\nconst NO_SNAP_POINTS: readonly number[] = [];\n\n/**\n * A focusable separator between two regions the consumer owns.\n *\n * It holds the position, the limits, the stops, the keyboard and the whole ARIA\n * contract of the WAI-ARIA Window Splitter pattern. It holds no layout: the\n * fraction is written as `--slotted-splitter-value` on the element `for` names,\n * and a rule in the consumer's own stylesheet turns it into a measure. A\n * separator that sized the boxes beside it would be deciding a layout it was\n * only handed a position in.\n *\n * A directive on the consumer's own element rather than a component with a tag\n * of its own, because the bar sits inside a layout the consumer wrote and the\n * element it should be is theirs to choose.\n */\n@Component({\n selector: '[slSplitter]',\n standalone: true,\n exportAs: 'slSplitter',\n template: `\n <span data-part=\"line\" aria-hidden=\"true\"></span>\n <span data-part=\"grip\" aria-hidden=\"true\"></span>\n <span data-part=\"line\" aria-hidden=\"true\"></span>\n `,\n styleUrl: '../../../styles/src/splitter/splitter.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'splitter',\n 'data-part': 'root',\n '[attr.role]': 'role()',\n '[attr.tabindex]': 'tabIndex()',\n '[attr.data-orientation]': 'resolvedOrientation()',\n '[attr.data-dragging]': \"dragging() ? '' : null\",\n '[attr.data-disabled]': \"disabled() ? '' : null\",\n '[attr.data-expanded]': \"collapsible() && !collapsed() ? '' : null\",\n '[attr.aria-orientation]': 'ariaOrientation()',\n '[attr.aria-valuenow]': 'ariaValueNow()',\n '[attr.aria-valuemin]': 'ariaValueMin()',\n '[attr.aria-valuemax]': 'ariaValueMax()',\n '[attr.aria-controls]': 'ariaControls()',\n '[attr.aria-disabled]': \"disabled() ? 'true' : null\",\n '(pointerdown)': 'onPointerDown($event)',\n '(keydown)': 'onKeyDown($event)',\n '(dblclick)': 'onDoubleClick($event)',\n },\n})\nexport class SlSplitter {\n /** The fraction of the container taken by the region before the bar. */\n readonly value = model<number>(0.5);\n /** Whether the region before the bar is collapsed. */\n readonly collapsed = model<boolean>(false);\n /**\n * Where a double click and `reset()` return the bar, inside the limits. Not\n * the value the bar was opened at: a layout restored from storage is where\n * the reader left it, never where a reset should go.\n */\n readonly defaultValue = input<number>(0.5);\n\n readonly orientation = input<SplitterOrientation | undefined>(undefined);\n readonly min = input<SplitterLimit | undefined>(undefined);\n readonly max = input<SplitterLimit | undefined>(undefined);\n readonly collapsedValue = input<number | undefined>(undefined);\n readonly collapsible = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly snapPoints = input<readonly number[]>(NO_SNAP_POINTS);\n\n /**\n * The element the bar sizes. A template reference rather than a ref:\n * `[for]=\"aside\"` with `#aside` on the element.\n *\n * Omitted, the bar takes its own previous element sibling, which is what the\n * DOM already says and what the React binding does too.\n */\n readonly for = input<HTMLElement | undefined>(undefined);\n\n /** The cancellable requests, before anything commits. */\n readonly valueChangeRequest = output<SplitterValueRequest>();\n readonly collapsedChangeRequest = output<SplitterCollapsedRequest>();\n\n /**\n * Fires once, when a drag settles. `value` moves throughout one, so a\n * consumer saving a layout saves once here rather than sixty times there.\n */\n readonly resizeEnd = output<number>();\n\n private readonly defaults = injectSplitterDefaults();\n private readonly element = inject(ElementRef<HTMLElement>).nativeElement as HTMLElement;\n private readonly ids = inject(SlSplitterIdFactory);\n private readonly destroyRef = inject(DestroyRef);\n\n /**\n * What the consumer wrote on the element themselves. Read once, before the\n * host bindings run, because a binding that resolves to `null` removes the\n * attribute rather than leaving the consumer's value in place — the rule\n * `menu` records and `toolbar` learned the hard way.\n */\n private readonly ownRole = inject(new HostAttributeToken('role'), { optional: true });\n private readonly ownTabIndex = inject(new HostAttributeToken('tabindex'), { optional: true });\n private readonly ownControls = inject(new HostAttributeToken('aria-controls'), {\n optional: true,\n });\n\n protected readonly dragging = signal(false);\n private readonly regionId = signal<string | undefined>(undefined);\n /** The fraction to come back to after a collapse; the value at the moment of the collapse. */\n private restore = 0.5;\n private release: (() => void) | null = null;\n\n protected readonly resolvedOrientation = computed(\n () => this.orientation() ?? this.defaults.orientation,\n );\n protected readonly role = computed(() => this.ownRole ?? 'separator');\n protected readonly tabIndex = computed(() => this.ownTabIndex ?? '0');\n protected readonly ariaOrientation = computed(() =>\n this.resolvedOrientation() === 'vertical' ? 'vertical' : null,\n );\n protected readonly ariaControls = computed(() => this.ownControls ?? this.regionId() ?? null);\n protected readonly ariaValueNow = computed(() => Math.round(this.value() * 100));\n protected readonly ariaValueMin = computed(() => Math.round(this.bounds().min * 100));\n protected readonly ariaValueMax = computed(() => Math.round(this.bounds().max * 100));\n\n /**\n * A signal the geometry can invalidate. The limits depend on the container's\n * measure, which no signal can see change, so the observer below bumps this\n * and every computed that reads it recomputes.\n */\n private readonly measured = signal(0);\n\n constructor() {\n /**\n * Guarded, because `ResizeObserver` is absent from a server render and from\n * jsdom. Unguarded, every page carrying a splitter threw before it rendered a\n * character — which is what the first run of `splitter.spec.ts` reported,\n * eighteen failures deep, all from this one line.\n *\n * The container is read after the first render, not here: a bar that is the\n * first node of an `@if` or `@for` block is built before the block is placed\n * in the document, so its parent is still null in the constructor, and its\n * limits kept the measure of whatever box they were first computed against.\n * A render the server does never runs this, and has no pointer to move the\n * bar with.\n */\n let observer: ResizeObserver | null = null;\n afterNextRender(() => {\n const container = this.container();\n if (typeof ResizeObserver === 'undefined' || container === null) return;\n observer = new ResizeObserver(() => this.measured.update((count) => count + 1));\n observer.observe(container);\n });\n\n this.destroyRef.onDestroy(() => {\n observer?.disconnect();\n this.release?.();\n });\n\n /**\n * The fraction, published where CSS can read it. This is what replaces the\n * layout the family does not hold: a consumer writes\n * `inline-size: calc(var(--slotted-splitter-value) * 100%)` once and never\n * holds the number in a component at all.\n */\n effect(() => {\n const target = this.sized();\n if (target === null) return;\n\n target.style.setProperty('--slotted-splitter-value', String(this.value()));\n if (target.id === '') target.id = this.ids.next();\n this.regionId.set(target.id);\n });\n\n /**\n * The contract's `extent.clamped`: the reported value is always the\n * clamped one. Limits move under a value — a length limit when the\n * container is resized, a fraction when the consumer binds another — and a\n * value restored from another window's layout can lie outside them, so the\n * bar brings it back inside, as a programmatic request. A collapsed region\n * stands below its floor on purpose and is left there.\n */\n effect(() => {\n const { min, max } = this.bounds();\n const value = this.value();\n if (this.collapsed() || this.dragging()) return;\n const held = Math.min(Math.max(value, min), max);\n if (held !== value) untracked(() => this.requestValue(held, 'programmatic', undefined));\n });\n }\n\n /** A fraction brought inside the limits as they resolve now. */\n private clamp(value: number) {\n const { min, max } = this.bounds();\n return Math.min(Math.max(value, min), max);\n }\n\n /** The box the fraction is a fraction *of*: whatever holds the bar. */\n private container(): HTMLElement | null {\n return this.element.parentElement;\n }\n\n /** The element the bar sizes, announces, and writes the fraction on. */\n private sized(): HTMLElement | null {\n const named = this.for();\n if (named !== undefined) return named;\n const previous = this.element.previousElementSibling;\n return previous instanceof HTMLElement ? previous : null;\n }\n\n private geometry() {\n const box = this.container();\n const rect = box?.getBoundingClientRect();\n const span =\n rect === undefined ? 0 : this.resolvedOrientation() === 'vertical' ? rect.width : rect.height;\n const rtl = box !== null && getComputedStyle(box).direction === 'rtl';\n return { box, rect, rtl, span };\n }\n\n /**\n * The bar's own axis, in the vocabulary `@slotted/core/extent` speaks. The\n * region the bar sizes is the one before it, so it is anchored at the\n * container's first edge on that axis.\n */\n private side() {\n return this.resolvedOrientation() === 'vertical' ? ('start' as const) : ('top' as const);\n }\n\n /**\n * A limit as a fraction. A number is already one; a string is a CSS length,\n * and only the browser knows what `18rem` or `25%` come to — so it is\n * measured where it will be used rather than parsed here.\n */\n private resolve(limit: SplitterLimit, box: HTMLElement | null, span: number, fallback: number) {\n if (typeof limit === 'number') return Math.min(Math.max(limit, 0), 1);\n if (box === null || span <= 0) return fallback;\n return extentFromLength({ pixels: measureLength(limit, box, span), span });\n }\n\n protected readonly bounds = computed(() => {\n this.measured();\n const { box, span } = this.geometry();\n const low = this.resolve(this.min() ?? this.defaults.min, box, span, 0);\n const high = this.resolve(this.max() ?? this.defaults.max, box, span, 1);\n /* A max below the min is the consumer's arithmetic, not a crash: the pair\n is ordered rather than trusted, so the range always exists. */\n return extentBounds(this.snapPoints(), Math.min(low, high), Math.max(low, high));\n });\n\n private requestValue(next: number, reason: SplitterValueReason, source: unknown) {\n if (next === this.value()) return;\n\n const state = createControllable<number>({\n initial: this.value(),\n onRequest: (raw) => {\n this.valueChangeRequest.emit({\n get cancelled() {\n return raw.cancelled;\n },\n cancel: () => raw.cancel(),\n previous: raw.previous,\n reason,\n source: raw.source,\n value: raw.value,\n });\n },\n });\n\n /**\n * The return value, and not a flag read inside `onRequest`. A flag\n * assigned there is assigned *before* the consumer has been handed the\n * request and had the chance to refuse it, so it always reads `false` and\n * the refusal never lands — which is exactly what `splitter.spec.ts`\n * reported: a cancelled move that moved anyway.\n */\n if (!state.request(next, reason, source)) return;\n this.value.set(next);\n }\n\n private requestCollapsed(next: boolean, reason: SplitterValueReason, source: unknown) {\n if (next === this.collapsed()) return false;\n\n const state = createControllable<boolean>({\n initial: this.collapsed(),\n onRequest: (raw) => {\n this.collapsedChangeRequest.emit({\n get cancelled() {\n return raw.cancelled;\n },\n cancel: () => raw.cancel(),\n previous: raw.previous,\n reason,\n source: raw.source,\n value: raw.value,\n });\n },\n });\n\n if (!state.request(next, reason, source)) return false;\n this.collapsed.set(next);\n return true;\n }\n\n /**\n * `Enter`, from the pattern: \"If the primary pane is not collapsed, collapses\n * the pane. If the pane is collapsed, restores the splitter to its previous\n * position.\"\n *\n * Both halves move together: a collapse that changed the state and not the\n * measure would leave the bar where it was, and a restore that changed the\n * measure and not the state would leave a region that is open and says it is\n * not.\n */\n private toggle(reason: SplitterValueReason, source: unknown) {\n if (!this.collapsible()) return;\n\n if (this.collapsed()) {\n if (this.requestCollapsed(false, reason, source))\n this.requestValue(this.restore, reason, source);\n return;\n }\n\n this.restore = this.value();\n if (this.requestCollapsed(true, reason, source)) {\n this.requestValue(this.collapsedValue() ?? this.defaults.collapsedValue, reason, source);\n }\n }\n\n /** Collapses to `collapsedValue`, carrying `programmatic`. */\n collapse() {\n if (!this.collapsible() || this.collapsed()) return;\n this.toggle('programmatic', undefined);\n }\n\n /** Restores the fraction held before the collapse. */\n expand() {\n if (!this.collapsed()) return;\n this.toggle('programmatic', undefined);\n }\n\n /** Returns the bar to `defaultValue`, inside the limits, which is what a double click does. */\n reset() {\n this.requestValue(this.clamp(this.defaultValue()), 'programmatic', undefined);\n }\n\n /** Moves focus to the bar. */\n focus() {\n this.element.focus();\n }\n\n protected onPointerDown(event: PointerEvent) {\n if (event.defaultPrevented || this.disabled() || event.button !== 0) return;\n\n const { rtl, span } = this.geometry();\n if (span <= 0) return;\n\n this.element.setPointerCapture(event.pointerId);\n this.dragging.set(true);\n this.release = holdResizeGesture(\n this.element.ownerDocument,\n this.resolvedOrientation() === 'vertical' ? 'col-resize' : 'row-resize',\n );\n\n const side = this.side();\n\n const at = (point: PointerEvent) => {\n const live = this.container()?.getBoundingClientRect();\n if (live === undefined) return undefined;\n return extentAtPoint({\n point: { x: point.clientX, y: point.clientY },\n rect: live,\n rtl,\n side,\n });\n };\n\n /*\n * Where on the bar the hand took it, as a fraction: the bar keeps that point\n * under the pointer for the whole drag. Read as an absolute position, a bar\n * taken a few pixels from the edge it marks leapt those pixels on the first\n * move — and a bar whose region is followed by a gap leapt the gap.\n */\n const grab = (at(event) ?? this.value()) - this.value();\n\n const move = (moved: PointerEvent) => {\n const raw = at(moved);\n if (raw === undefined) return;\n this.requestValue(this.clamp(raw - grab), 'pointer', moved);\n };\n\n const up = (ended: PointerEvent) => {\n this.element.removeEventListener('pointermove', move);\n this.element.removeEventListener('pointerup', up);\n this.element.removeEventListener('pointercancel', up);\n this.release?.();\n this.release = null;\n this.dragging.set(false);\n\n /* The stop nearest where the hand left it, and only then: a drag that\n snapped on every move would fight the hand rather than help it. */\n const stops = this.snapPoints();\n const raw = at(ended);\n if (stops.length > 0 && raw !== undefined) {\n const snapped = this.clamp(nearestSnap(raw - grab, stops));\n this.requestValue(snapped, 'pointer', ended);\n this.resizeEnd.emit(snapped);\n return;\n }\n\n this.resizeEnd.emit(this.value());\n };\n\n this.element.addEventListener('pointermove', move);\n this.element.addEventListener('pointerup', up);\n this.element.addEventListener('pointercancel', up);\n }\n\n protected onKeyDown(event: KeyboardEvent) {\n if (event.defaultPrevented || this.disabled()) return;\n\n if (event.key === 'Enter') {\n if (!this.collapsible()) return;\n event.preventDefault();\n this.toggle('keyboard', event);\n return;\n }\n\n const { rect, rtl } = this.geometry();\n if (rect === undefined) return;\n\n const side = this.side();\n const grows = anchorsAtStart(side, rtl) ? 1 : -1;\n const vertical = this.resolvedOrientation() === 'vertical';\n const limits = this.bounds();\n\n /* The cross axis is left to the page, so a document that scrolls still\n scrolls while the separator holds focus. */\n const direction =\n event.key === (vertical ? 'ArrowRight' : 'ArrowDown')\n ? (grows as 1 | -1)\n : event.key === (vertical ? 'ArrowLeft' : 'ArrowUp')\n ? (-grows as 1 | -1)\n : undefined;\n\n if (direction !== undefined) {\n event.preventDefault();\n this.requestValue(\n stepExtent({\n amount: stepAmountFromPixels({\n pixels: event.shiftKey ? EXTENT_LARGE_STEP_PX : EXTENT_STEP_PX,\n rect,\n side,\n }),\n direction,\n fraction: this.value(),\n max: limits.max,\n min: limits.min,\n snapPoints: this.snapPoints(),\n }),\n 'keyboard',\n event,\n );\n return;\n }\n\n if (event.key === 'Home') {\n event.preventDefault();\n this.requestValue(limits.min, 'keyboard', event);\n return;\n }\n\n if (event.key === 'End') {\n event.preventDefault();\n this.requestValue(limits.max, 'keyboard', event);\n }\n }\n\n protected onDoubleClick(event: MouseEvent) {\n if (event.defaultPrevented || this.disabled()) return;\n this.requestValue(this.clamp(this.defaultValue()), 'pointer', event);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slotted-angular-splitter.mjs","sources":["../../splitter/src/splitter-defaults.ts","../../splitter/src/splitter.ts","../../splitter/src/slotted-angular-splitter.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\n\n/**\n * Which way the bar's own line runs.\n *\n * The family holds no panels, so there is nothing else for `orientation` to\n * describe and `aria-orientation` takes the same value. A family that held\n * panels would have to say which of the two the word means — the panes are side\n * by side while the separator between them is vertical — and the two readings\n * are perpendicular. Here they cannot disagree.\n */\nexport type SplitterOrientation = 'vertical' | 'horizontal';\n\n/**\n * A limit on how far the bar goes: a fraction of the container in `[0, 1]`, or\n * any CSS length resolved against the container at the moment of the clamp.\n *\n * Both, because both are real. Zag, Ark, PrimeNG and allotment are\n * percentage-only — Zag states the limitation outright — and none of them can\n * express \"this navigation panel never goes below two hundred pixels\", which is\n * the commonest constraint the family has.\n */\nexport type SplitterLimit = number | string;\n\n/** Why the bar moved. */\nexport type SplitterValueReason = 'pointer' | 'keyboard' | 'programmatic';\n\ninterface Request<Value> {\n readonly value: Value;\n readonly previous: Value;\n readonly reason: SplitterValueReason;\n readonly source?: unknown;\n readonly cancelled: boolean;\n cancel(): void;\n}\n\n/** The request the bar emits before its position moves. */\nexport type SplitterValueRequest = Request<number>;\n\n/** The request the bar emits before it collapses or comes back. */\nexport type SplitterCollapsedRequest = Request<boolean>;\n\nexport interface SplitterDefaults {\n orientation: SplitterOrientation;\n min: SplitterLimit;\n max: SplitterLimit;\n collapsedValue: number;\n}\n\nconst FALLBACK: SplitterDefaults = {\n collapsedValue: 0,\n max: 1,\n min: 0,\n orientation: 'vertical',\n};\n\nexport const SPLITTER_DEFAULTS = new InjectionToken<SplitterDefaults>('slotted splitter defaults', {\n providedIn: 'root',\n factory: () => FALLBACK,\n});\n\n/**\n * An application decides once how far its bars may travel, rather than\n * repeating the same floor on every one in a product. A workspace whose\n * navigation never goes below two hundred pixels says so here and nowhere else.\n *\n * None of the seven surveyed implementations has an equivalent: each takes its\n * limits per instance, so a product changing its floor changes every call site.\n */\nexport function provideSplitterDefaults(defaults: Partial<SplitterDefaults>) {\n return {\n provide: SPLITTER_DEFAULTS,\n useFactory: (): SplitterDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a splitter is here, before it states anything of its own. */\nexport function injectSplitterDefaults(): SplitterDefaults {\n return inject(SPLITTER_DEFAULTS);\n}\n\n/**\n * Application-scoped rather than module-scoped, for the reason `field` records:\n * a module-level counter produces colliding sequences when two applications\n * render in one server process, and the server and the client sequences must\n * match for hydration.\n */\n@Injectable({ providedIn: 'root' })\nexport class SlSplitterIdFactory {\n private count = 0;\n\n next() {\n this.count += 1;\n return `slotted-splitter-${this.count}`;\n }\n}\n","import {\n anchorsAtStart,\n EXTENT_LARGE_STEP_PX,\n EXTENT_STEP_PX,\n extentAtPoint,\n extentBounds,\n extentFromLength,\n holdResizeGesture,\n measureLength,\n nearestSnap,\n stepAmountFromPixels,\n stepExtent,\n} from '@slotted/core/extent';\nimport { createControllable } from '@slotted/core/state';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n HostAttributeToken,\n inject,\n input,\n model,\n output,\n signal,\n untracked,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { injectSplitterDefaults, SlSplitterIdFactory } from './splitter-defaults';\nimport type {\n SplitterCollapsedRequest,\n SplitterLimit,\n SplitterOrientation,\n SplitterValueReason,\n SplitterValueRequest,\n} from './splitter-defaults';\n\nconst NO_SNAP_POINTS: readonly number[] = [];\n\n/**\n * A focusable separator between two regions the consumer owns.\n *\n * It holds the position, the limits, the stops, the keyboard and the whole ARIA\n * contract of the WAI-ARIA Window Splitter pattern. It holds no layout: the\n * fraction is written as `--slotted-splitter-value` on the element `for` names,\n * and a rule in the consumer's own stylesheet turns it into a measure. A\n * separator that sized the boxes beside it would be deciding a layout it was\n * only handed a position in.\n *\n * A directive on the consumer's own element rather than a component with a tag\n * of its own, because the bar sits inside a layout the consumer wrote and the\n * element it should be is theirs to choose.\n */\n@Component({\n selector: '[slSplitter]',\n standalone: true,\n exportAs: 'slSplitter',\n template: `\n <span data-part=\"line\" data-part-line=\"\" aria-hidden=\"true\"></span>\n <span data-part=\"grip\" data-part-grip=\"\" aria-hidden=\"true\"></span>\n <span data-part=\"line\" data-part-line=\"\" aria-hidden=\"true\"></span>\n `,\n styleUrl: '../../../styles/src/splitter/splitter.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'splitter',\n 'data-ui-splitter': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.role]': 'role()',\n '[attr.tabindex]': 'tabIndex()',\n '[attr.data-orientation]': 'resolvedOrientation()',\n '[attr.data-dragging]': \"dragging() ? '' : null\",\n '[attr.data-disabled]': \"disabled() ? '' : null\",\n '[attr.data-expanded]': \"collapsible() && !collapsed() ? '' : null\",\n '[attr.aria-orientation]': 'ariaOrientation()',\n '[attr.aria-valuenow]': 'ariaValueNow()',\n '[attr.aria-valuemin]': 'ariaValueMin()',\n '[attr.aria-valuemax]': 'ariaValueMax()',\n '[attr.aria-controls]': 'ariaControls()',\n '[attr.aria-disabled]': \"disabled() ? 'true' : null\",\n '(pointerdown)': 'onPointerDown($event)',\n '(keydown)': 'onKeyDown($event)',\n '(dblclick)': 'onDoubleClick($event)',\n },\n})\nexport class SlSplitter {\n /** The fraction of the container taken by the region before the bar. */\n readonly value = model<number>(0.5);\n /** Whether the region before the bar is collapsed. */\n readonly collapsed = model<boolean>(false);\n /**\n * Where a double click and `reset()` return the bar, inside the limits. Not\n * the value the bar was opened at: a layout restored from storage is where\n * the reader left it, never where a reset should go.\n */\n readonly defaultValue = input<number>(0.5);\n\n readonly orientation = input<SplitterOrientation | undefined>(undefined);\n readonly min = input<SplitterLimit | undefined>(undefined);\n readonly max = input<SplitterLimit | undefined>(undefined);\n readonly collapsedValue = input<number | undefined>(undefined);\n readonly collapsible = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly snapPoints = input<readonly number[]>(NO_SNAP_POINTS);\n\n /**\n * The element the bar sizes. A template reference rather than a ref:\n * `[for]=\"aside\"` with `#aside` on the element.\n *\n * Omitted, the bar takes its own previous element sibling, which is what the\n * DOM already says and what the React binding does too.\n */\n readonly for = input<HTMLElement | undefined>(undefined);\n\n /** The cancellable requests, before anything commits. */\n readonly valueChangeRequest = output<SplitterValueRequest>();\n readonly collapsedChangeRequest = output<SplitterCollapsedRequest>();\n\n /**\n * Fires once, when a drag settles. `value` moves throughout one, so a\n * consumer saving a layout saves once here rather than sixty times there.\n */\n readonly resizeEnd = output<number>();\n\n private readonly defaults = injectSplitterDefaults();\n private readonly element = inject(ElementRef<HTMLElement>).nativeElement as HTMLElement;\n private readonly ids = inject(SlSplitterIdFactory);\n private readonly destroyRef = inject(DestroyRef);\n\n /**\n * What the consumer wrote on the element themselves. Read once, before the\n * host bindings run, because a binding that resolves to `null` removes the\n * attribute rather than leaving the consumer's value in place — the rule\n * `menu` records and `toolbar` learned the hard way.\n */\n private readonly ownRole = inject(new HostAttributeToken('role'), { optional: true });\n private readonly ownTabIndex = inject(new HostAttributeToken('tabindex'), { optional: true });\n private readonly ownControls = inject(new HostAttributeToken('aria-controls'), {\n optional: true,\n });\n\n protected readonly dragging = signal(false);\n private readonly regionId = signal<string | undefined>(undefined);\n /** The fraction to come back to after a collapse; the value at the moment of the collapse. */\n private restore = 0.5;\n private release: (() => void) | null = null;\n\n protected readonly resolvedOrientation = computed(\n () => this.orientation() ?? this.defaults.orientation,\n );\n protected readonly role = computed(() => this.ownRole ?? 'separator');\n protected readonly tabIndex = computed(() => this.ownTabIndex ?? '0');\n protected readonly ariaOrientation = computed(() =>\n this.resolvedOrientation() === 'vertical' ? 'vertical' : null,\n );\n protected readonly ariaControls = computed(() => this.ownControls ?? this.regionId() ?? null);\n protected readonly ariaValueNow = computed(() => Math.round(this.value() * 100));\n protected readonly ariaValueMin = computed(() => Math.round(this.bounds().min * 100));\n protected readonly ariaValueMax = computed(() => Math.round(this.bounds().max * 100));\n\n /**\n * A signal the geometry can invalidate. The limits depend on the container's\n * measure, which no signal can see change, so the observer below bumps this\n * and every computed that reads it recomputes.\n */\n private readonly measured = signal(0);\n\n constructor() {\n /**\n * Guarded, because `ResizeObserver` is absent from a server render and from\n * jsdom. Unguarded, every page carrying a splitter threw before it rendered a\n * character — which is what the first run of `splitter.spec.ts` reported,\n * eighteen failures deep, all from this one line.\n *\n * The container is read after the first render, not here: a bar that is the\n * first node of an `@if` or `@for` block is built before the block is placed\n * in the document, so its parent is still null in the constructor, and its\n * limits kept the measure of whatever box they were first computed against.\n * A render the server does never runs this, and has no pointer to move the\n * bar with.\n */\n let observer: ResizeObserver | null = null;\n afterNextRender(() => {\n const container = this.container();\n if (typeof ResizeObserver === 'undefined' || container === null) return;\n observer = new ResizeObserver(() => this.measured.update((count) => count + 1));\n observer.observe(container);\n });\n\n this.destroyRef.onDestroy(() => {\n observer?.disconnect();\n this.release?.();\n });\n\n /**\n * The fraction, published where CSS can read it. This is what replaces the\n * layout the family does not hold: a consumer writes\n * `inline-size: calc(var(--slotted-splitter-value) * 100%)` once and never\n * holds the number in a component at all.\n */\n effect(() => {\n const target = this.sized();\n if (target === null) return;\n\n target.style.setProperty('--slotted-splitter-value', String(this.value()));\n if (target.id === '') target.id = this.ids.next();\n this.regionId.set(target.id);\n });\n\n /**\n * The contract's `extent.clamped`: the reported value is always the\n * clamped one. Limits move under a value — a length limit when the\n * container is resized, a fraction when the consumer binds another — and a\n * value restored from another window's layout can lie outside them, so the\n * bar brings it back inside, as a programmatic request. A collapsed region\n * stands below its floor on purpose and is left there.\n */\n effect(() => {\n const { min, max } = this.bounds();\n const value = this.value();\n if (this.collapsed() || this.dragging()) return;\n const held = Math.min(Math.max(value, min), max);\n if (held !== value) untracked(() => this.requestValue(held, 'programmatic', undefined));\n });\n }\n\n /** A fraction brought inside the limits as they resolve now. */\n private clamp(value: number) {\n const { min, max } = this.bounds();\n return Math.min(Math.max(value, min), max);\n }\n\n /** The box the fraction is a fraction *of*: whatever holds the bar. */\n private container(): HTMLElement | null {\n return this.element.parentElement;\n }\n\n /** The element the bar sizes, announces, and writes the fraction on. */\n private sized(): HTMLElement | null {\n const named = this.for();\n if (named !== undefined) return named;\n const previous = this.element.previousElementSibling;\n return previous instanceof HTMLElement ? previous : null;\n }\n\n private geometry() {\n const box = this.container();\n const rect = box?.getBoundingClientRect();\n const span =\n rect === undefined ? 0 : this.resolvedOrientation() === 'vertical' ? rect.width : rect.height;\n const rtl = box !== null && getComputedStyle(box).direction === 'rtl';\n return { box, rect, rtl, span };\n }\n\n /**\n * The bar's own axis, in the vocabulary `@slotted/core/extent` speaks. The\n * region the bar sizes is the one before it, so it is anchored at the\n * container's first edge on that axis.\n */\n private side() {\n return this.resolvedOrientation() === 'vertical' ? ('start' as const) : ('top' as const);\n }\n\n /**\n * A limit as a fraction. A number is already one; a string is a CSS length,\n * and only the browser knows what `18rem` or `25%` come to — so it is\n * measured where it will be used rather than parsed here.\n */\n private resolve(limit: SplitterLimit, box: HTMLElement | null, span: number, fallback: number) {\n if (typeof limit === 'number') return Math.min(Math.max(limit, 0), 1);\n if (box === null || span <= 0) return fallback;\n return extentFromLength({ pixels: measureLength(limit, box, span), span });\n }\n\n protected readonly bounds = computed(() => {\n this.measured();\n const { box, span } = this.geometry();\n const low = this.resolve(this.min() ?? this.defaults.min, box, span, 0);\n const high = this.resolve(this.max() ?? this.defaults.max, box, span, 1);\n /* A max below the min is the consumer's arithmetic, not a crash: the pair\n is ordered rather than trusted, so the range always exists. */\n return extentBounds(this.snapPoints(), Math.min(low, high), Math.max(low, high));\n });\n\n private requestValue(next: number, reason: SplitterValueReason, source: unknown) {\n if (next === this.value()) return;\n\n const state = createControllable<number>({\n initial: this.value(),\n onRequest: (raw) => {\n this.valueChangeRequest.emit({\n get cancelled() {\n return raw.cancelled;\n },\n cancel: () => raw.cancel(),\n previous: raw.previous,\n reason,\n source: raw.source,\n value: raw.value,\n });\n },\n });\n\n /**\n * The return value, and not a flag read inside `onRequest`. A flag\n * assigned there is assigned *before* the consumer has been handed the\n * request and had the chance to refuse it, so it always reads `false` and\n * the refusal never lands — which is exactly what `splitter.spec.ts`\n * reported: a cancelled move that moved anyway.\n */\n if (!state.request(next, reason, source)) return;\n this.value.set(next);\n }\n\n private requestCollapsed(next: boolean, reason: SplitterValueReason, source: unknown) {\n if (next === this.collapsed()) return false;\n\n const state = createControllable<boolean>({\n initial: this.collapsed(),\n onRequest: (raw) => {\n this.collapsedChangeRequest.emit({\n get cancelled() {\n return raw.cancelled;\n },\n cancel: () => raw.cancel(),\n previous: raw.previous,\n reason,\n source: raw.source,\n value: raw.value,\n });\n },\n });\n\n if (!state.request(next, reason, source)) return false;\n this.collapsed.set(next);\n return true;\n }\n\n /**\n * `Enter`, from the pattern: \"If the primary pane is not collapsed, collapses\n * the pane. If the pane is collapsed, restores the splitter to its previous\n * position.\"\n *\n * Both halves move together: a collapse that changed the state and not the\n * measure would leave the bar where it was, and a restore that changed the\n * measure and not the state would leave a region that is open and says it is\n * not.\n */\n private toggle(reason: SplitterValueReason, source: unknown) {\n if (!this.collapsible()) return;\n\n if (this.collapsed()) {\n if (this.requestCollapsed(false, reason, source))\n this.requestValue(this.restore, reason, source);\n return;\n }\n\n this.restore = this.value();\n if (this.requestCollapsed(true, reason, source)) {\n this.requestValue(this.collapsedValue() ?? this.defaults.collapsedValue, reason, source);\n }\n }\n\n /** Collapses to `collapsedValue`, carrying `programmatic`. */\n collapse() {\n if (!this.collapsible() || this.collapsed()) return;\n this.toggle('programmatic', undefined);\n }\n\n /** Restores the fraction held before the collapse. */\n expand() {\n if (!this.collapsed()) return;\n this.toggle('programmatic', undefined);\n }\n\n /** Returns the bar to `defaultValue`, inside the limits, which is what a double click does. */\n reset() {\n this.requestValue(this.clamp(this.defaultValue()), 'programmatic', undefined);\n }\n\n /** Moves focus to the bar. */\n focus() {\n this.element.focus();\n }\n\n protected onPointerDown(event: PointerEvent) {\n if (event.defaultPrevented || this.disabled() || event.button !== 0) return;\n\n const { rtl, span } = this.geometry();\n if (span <= 0) return;\n\n this.element.setPointerCapture(event.pointerId);\n this.dragging.set(true);\n this.release = holdResizeGesture(\n this.element.ownerDocument,\n this.resolvedOrientation() === 'vertical' ? 'col-resize' : 'row-resize',\n );\n\n const side = this.side();\n\n const at = (point: PointerEvent) => {\n const live = this.container()?.getBoundingClientRect();\n if (live === undefined) return undefined;\n return extentAtPoint({\n point: { x: point.clientX, y: point.clientY },\n rect: live,\n rtl,\n side,\n });\n };\n\n /*\n * Where on the bar the hand took it, as a fraction: the bar keeps that point\n * under the pointer for the whole drag. Read as an absolute position, a bar\n * taken a few pixels from the edge it marks leapt those pixels on the first\n * move — and a bar whose region is followed by a gap leapt the gap.\n */\n const grab = (at(event) ?? this.value()) - this.value();\n\n const move = (moved: PointerEvent) => {\n const raw = at(moved);\n if (raw === undefined) return;\n this.requestValue(this.clamp(raw - grab), 'pointer', moved);\n };\n\n const up = (ended: PointerEvent) => {\n this.element.removeEventListener('pointermove', move);\n this.element.removeEventListener('pointerup', up);\n this.element.removeEventListener('pointercancel', up);\n this.release?.();\n this.release = null;\n this.dragging.set(false);\n\n /* The stop nearest where the hand left it, and only then: a drag that\n snapped on every move would fight the hand rather than help it. */\n const stops = this.snapPoints();\n const raw = at(ended);\n if (stops.length > 0 && raw !== undefined) {\n const snapped = this.clamp(nearestSnap(raw - grab, stops));\n this.requestValue(snapped, 'pointer', ended);\n this.resizeEnd.emit(snapped);\n return;\n }\n\n this.resizeEnd.emit(this.value());\n };\n\n this.element.addEventListener('pointermove', move);\n this.element.addEventListener('pointerup', up);\n this.element.addEventListener('pointercancel', up);\n }\n\n protected onKeyDown(event: KeyboardEvent) {\n if (event.defaultPrevented || this.disabled()) return;\n\n if (event.key === 'Enter') {\n if (!this.collapsible()) return;\n event.preventDefault();\n this.toggle('keyboard', event);\n return;\n }\n\n const { rect, rtl } = this.geometry();\n if (rect === undefined) return;\n\n const side = this.side();\n const grows = anchorsAtStart(side, rtl) ? 1 : -1;\n const vertical = this.resolvedOrientation() === 'vertical';\n const limits = this.bounds();\n\n /* The cross axis is left to the page, so a document that scrolls still\n scrolls while the separator holds focus. */\n const direction =\n event.key === (vertical ? 'ArrowRight' : 'ArrowDown')\n ? (grows as 1 | -1)\n : event.key === (vertical ? 'ArrowLeft' : 'ArrowUp')\n ? (-grows as 1 | -1)\n : undefined;\n\n if (direction !== undefined) {\n event.preventDefault();\n this.requestValue(\n stepExtent({\n amount: stepAmountFromPixels({\n pixels: event.shiftKey ? EXTENT_LARGE_STEP_PX : EXTENT_STEP_PX,\n rect,\n side,\n }),\n direction,\n fraction: this.value(),\n max: limits.max,\n min: limits.min,\n snapPoints: this.snapPoints(),\n }),\n 'keyboard',\n event,\n );\n return;\n }\n\n if (event.key === 'Home') {\n event.preventDefault();\n this.requestValue(limits.min, 'keyboard', event);\n return;\n }\n\n if (event.key === 'End') {\n event.preventDefault();\n this.requestValue(limits.max, 'keyboard', event);\n }\n }\n\n protected onDoubleClick(event: MouseEvent) {\n if (event.defaultPrevented || this.disabled()) return;\n this.requestValue(this.clamp(this.defaultValue()), 'pointer', event);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -24,20 +24,22 @@ class SlStack {
24
24
  justify = input(/* @ts-ignore */
25
25
  ...(ngDevMode ? [undefined, { debugName: "justify" }] : /* istanbul ignore next */ []));
26
26
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlStack, deps: [], target: i0.ɵɵFactoryTarget.Component });
27
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlStack, isStandalone: true, selector: "[slStack]", inputs: { align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, gap: { classPropertyName: "gap", publicName: "gap", isSignal: true, isRequired: false, transformFunction: null }, justify: { classPropertyName: "justify", publicName: "justify", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-ui": "stack", "data-part": "root" }, properties: { "attr.data-gap": "gap() ?? null", "attr.data-align": "align() ?? null", "attr.align": "null", "attr.data-justify": "justify() ?? null" } }, exportAs: ["slStack"], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: ["@layer slotted.components{[data-ui=stack]{--_gap: var(--slotted-space-6, 1rem);display:flex;flex-direction:column;gap:var(--_gap);min-inline-size:0}[data-ui=stack][data-gap=\"0\"]{--_gap: 0}[data-ui=stack][data-gap=\"1\"]{--_gap: var(--slotted-space-1, .125rem)}[data-ui=stack][data-gap=\"2\"]{--_gap: var(--slotted-space-2, .25rem)}[data-ui=stack][data-gap=\"3\"]{--_gap: var(--slotted-space-3, .375rem)}[data-ui=stack][data-gap=\"4\"]{--_gap: var(--slotted-space-4, .5rem)}[data-ui=stack][data-gap=\"5\"]{--_gap: var(--slotted-space-5, .75rem)}[data-ui=stack][data-gap=\"6\"]{--_gap: var(--slotted-space-6, 1rem)}[data-ui=stack][data-gap=\"7\"]{--_gap: var(--slotted-space-7, 1.25rem)}[data-ui=stack][data-gap=\"8\"]{--_gap: var(--slotted-space-8, 1.5rem)}[data-ui=stack][data-gap=\"9\"]{--_gap: var(--slotted-space-9, 2rem)}[data-ui=stack][data-gap=\"10\"]{--_gap: var(--slotted-space-10, 2.5rem)}[data-ui=stack][data-gap=\"11\"]{--_gap: var(--slotted-space-11, 3rem)}[data-ui=stack][data-gap=\"12\"]{--_gap: var(--slotted-space-12, 4rem)}[data-ui=stack][data-align=start]{align-items:start}[data-ui=stack][data-align=center]{align-items:center}[data-ui=stack][data-align=end]{align-items:end}[data-ui=stack][data-align=stretch]{align-items:stretch}[data-ui=stack][data-justify=start]{justify-content:start}[data-ui=stack][data-justify=center]{justify-content:center}[data-ui=stack][data-justify=end]{justify-content:end}[data-ui=stack][data-justify=between]{justify-content:space-between}[data-ui=stack][data-justify=around]{justify-content:space-around}[data-ui=stack][data-justify=evenly]{justify-content:space-evenly}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
27
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: SlStack, isStandalone: true, selector: "[slStack]", inputs: { align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, gap: { classPropertyName: "gap", publicName: "gap", isSignal: true, isRequired: false, transformFunction: null }, justify: { classPropertyName: "justify", publicName: "justify", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-ui": "stack", "data-ui-stack": "", "data-part": "root", "data-part-root": "" }, properties: { "attr.data-gap": "gap() ?? null", "attr.data-align": "align() ?? null", "attr.align": "null", "attr.data-justify": "justify() ?? null" } }, exportAs: ["slStack"], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: ["@layer slotted.components{[data-ui-stack]{--_gap: var(--slotted-space-6, 1rem);display:flex;flex-direction:column;gap:var(--_gap);min-inline-size:0}[data-ui-stack][data-gap=\"0\"]{--_gap: 0}[data-ui-stack][data-gap=\"1\"]{--_gap: var(--slotted-space-1, .125rem)}[data-ui-stack][data-gap=\"2\"]{--_gap: var(--slotted-space-2, .25rem)}[data-ui-stack][data-gap=\"3\"]{--_gap: var(--slotted-space-3, .375rem)}[data-ui-stack][data-gap=\"4\"]{--_gap: var(--slotted-space-4, .5rem)}[data-ui-stack][data-gap=\"5\"]{--_gap: var(--slotted-space-5, .75rem)}[data-ui-stack][data-gap=\"6\"]{--_gap: var(--slotted-space-6, 1rem)}[data-ui-stack][data-gap=\"7\"]{--_gap: var(--slotted-space-7, 1.25rem)}[data-ui-stack][data-gap=\"8\"]{--_gap: var(--slotted-space-8, 1.5rem)}[data-ui-stack][data-gap=\"9\"]{--_gap: var(--slotted-space-9, 2rem)}[data-ui-stack][data-gap=\"10\"]{--_gap: var(--slotted-space-10, 2.5rem)}[data-ui-stack][data-gap=\"11\"]{--_gap: var(--slotted-space-11, 3rem)}[data-ui-stack][data-gap=\"12\"]{--_gap: var(--slotted-space-12, 4rem)}[data-ui-stack][data-align=start]{align-items:start}[data-ui-stack][data-align=center]{align-items:center}[data-ui-stack][data-align=end]{align-items:end}[data-ui-stack][data-align=stretch]{align-items:stretch}[data-ui-stack][data-justify=start]{justify-content:start}[data-ui-stack][data-justify=center]{justify-content:center}[data-ui-stack][data-justify=end]{justify-content:end}[data-ui-stack][data-justify=between]{justify-content:space-between}[data-ui-stack][data-justify=around]{justify-content:space-around}[data-ui-stack][data-justify=evenly]{justify-content:space-evenly}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
28
28
  }
29
29
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SlStack, decorators: [{
30
30
  type: Component,
31
31
  args: [{ selector: '[slStack]', standalone: true, exportAs: 'slStack', template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
32
32
  'data-ui': 'stack',
33
+ 'data-ui-stack': '',
33
34
  'data-part': 'root',
35
+ 'data-part-root': '',
34
36
  '[attr.data-gap]': 'gap() ?? null',
35
37
  '[attr.data-align]': 'align() ?? null',
36
38
  /* `align` is also an obsolete HTML attribute a browser still honours on a
37
39
  div, centring its text; written statically for the input it would stay. */
38
40
  '[attr.align]': 'null',
39
41
  '[attr.data-justify]': 'justify() ?? null',
40
- }, styles: ["@layer slotted.components{[data-ui=stack]{--_gap: var(--slotted-space-6, 1rem);display:flex;flex-direction:column;gap:var(--_gap);min-inline-size:0}[data-ui=stack][data-gap=\"0\"]{--_gap: 0}[data-ui=stack][data-gap=\"1\"]{--_gap: var(--slotted-space-1, .125rem)}[data-ui=stack][data-gap=\"2\"]{--_gap: var(--slotted-space-2, .25rem)}[data-ui=stack][data-gap=\"3\"]{--_gap: var(--slotted-space-3, .375rem)}[data-ui=stack][data-gap=\"4\"]{--_gap: var(--slotted-space-4, .5rem)}[data-ui=stack][data-gap=\"5\"]{--_gap: var(--slotted-space-5, .75rem)}[data-ui=stack][data-gap=\"6\"]{--_gap: var(--slotted-space-6, 1rem)}[data-ui=stack][data-gap=\"7\"]{--_gap: var(--slotted-space-7, 1.25rem)}[data-ui=stack][data-gap=\"8\"]{--_gap: var(--slotted-space-8, 1.5rem)}[data-ui=stack][data-gap=\"9\"]{--_gap: var(--slotted-space-9, 2rem)}[data-ui=stack][data-gap=\"10\"]{--_gap: var(--slotted-space-10, 2.5rem)}[data-ui=stack][data-gap=\"11\"]{--_gap: var(--slotted-space-11, 3rem)}[data-ui=stack][data-gap=\"12\"]{--_gap: var(--slotted-space-12, 4rem)}[data-ui=stack][data-align=start]{align-items:start}[data-ui=stack][data-align=center]{align-items:center}[data-ui=stack][data-align=end]{align-items:end}[data-ui=stack][data-align=stretch]{align-items:stretch}[data-ui=stack][data-justify=start]{justify-content:start}[data-ui=stack][data-justify=center]{justify-content:center}[data-ui=stack][data-justify=end]{justify-content:end}[data-ui=stack][data-justify=between]{justify-content:space-between}[data-ui=stack][data-justify=around]{justify-content:space-around}[data-ui=stack][data-justify=evenly]{justify-content:space-evenly}}\n"] }]
42
+ }, styles: ["@layer slotted.components{[data-ui-stack]{--_gap: var(--slotted-space-6, 1rem);display:flex;flex-direction:column;gap:var(--_gap);min-inline-size:0}[data-ui-stack][data-gap=\"0\"]{--_gap: 0}[data-ui-stack][data-gap=\"1\"]{--_gap: var(--slotted-space-1, .125rem)}[data-ui-stack][data-gap=\"2\"]{--_gap: var(--slotted-space-2, .25rem)}[data-ui-stack][data-gap=\"3\"]{--_gap: var(--slotted-space-3, .375rem)}[data-ui-stack][data-gap=\"4\"]{--_gap: var(--slotted-space-4, .5rem)}[data-ui-stack][data-gap=\"5\"]{--_gap: var(--slotted-space-5, .75rem)}[data-ui-stack][data-gap=\"6\"]{--_gap: var(--slotted-space-6, 1rem)}[data-ui-stack][data-gap=\"7\"]{--_gap: var(--slotted-space-7, 1.25rem)}[data-ui-stack][data-gap=\"8\"]{--_gap: var(--slotted-space-8, 1.5rem)}[data-ui-stack][data-gap=\"9\"]{--_gap: var(--slotted-space-9, 2rem)}[data-ui-stack][data-gap=\"10\"]{--_gap: var(--slotted-space-10, 2.5rem)}[data-ui-stack][data-gap=\"11\"]{--_gap: var(--slotted-space-11, 3rem)}[data-ui-stack][data-gap=\"12\"]{--_gap: var(--slotted-space-12, 4rem)}[data-ui-stack][data-align=start]{align-items:start}[data-ui-stack][data-align=center]{align-items:center}[data-ui-stack][data-align=end]{align-items:end}[data-ui-stack][data-align=stretch]{align-items:stretch}[data-ui-stack][data-justify=start]{justify-content:start}[data-ui-stack][data-justify=center]{justify-content:center}[data-ui-stack][data-justify=end]{justify-content:end}[data-ui-stack][data-justify=between]{justify-content:space-between}[data-ui-stack][data-justify=around]{justify-content:space-around}[data-ui-stack][data-justify=evenly]{justify-content:space-evenly}}\n"] }]
41
43
  }], propDecorators: { align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], gap: [{ type: i0.Input, args: [{ isSignal: true, alias: "gap", required: false }] }], justify: [{ type: i0.Input, args: [{ isSignal: true, alias: "justify", required: false }] }] } });
42
44
 
43
45
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"slotted-angular-stack.mjs","sources":["../../stack/src/stack.ts","../../stack/src/slotted-angular-stack.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\n\n/**\n * A step on the space scale. Separation is chosen from the scale rather than\n * stated as a length, so a theme retunes every layout at once and no component\n * invents a rhythm of its own. `0` is the absence of separation.\n */\nexport type StackGap = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n\n/** Across the flow, which for a stack is the inline axis. */\nexport type StackAlign = 'start' | 'center' | 'end' | 'stretch';\n\n/** Along the flow, which for a stack is the block axis. */\nexport type StackJustify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\n\n/**\n * Stack arranges its children along the block axis and separates them by one\n * step of the space scale. It paints nothing and adds no semantics: the element\n * is the one the consumer wrote, so a list stays a list and a form stays a form.\n *\n * An axis reaches the stylesheet only when someone decided it. The base rule\n * already carries the family default, and a layout is the most numerous element\n * in a document.\n *\n * There is no input that reverses the children. The order they are written in\n * is the order they are read in, by a screen reader and by the Tab key alike.\n */\n@Component({\n selector: '[slStack]',\n standalone: true,\n exportAs: 'slStack',\n template: '<ng-content></ng-content>',\n styleUrl: '../../../styles/src/stack/stack.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'stack',\n 'data-part': 'root',\n '[attr.data-gap]': 'gap() ?? null',\n '[attr.data-align]': 'align() ?? null',\n /* `align` is also an obsolete HTML attribute a browser still honours on a\n div, centring its text; written statically for the input it would stay. */\n '[attr.align]': 'null',\n '[attr.data-justify]': 'justify() ?? null',\n },\n})\nexport class SlStack {\n /** Positions children across the flow. Absent, they stretch. */\n readonly align = input<StackAlign>();\n /** Separation between children, as a step on the space scale. */\n readonly gap = input<StackGap>();\n /** Positions children along the flow; needs a block size to distribute. */\n readonly justify = input<StackJustify>();\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAeA;;;;;;;;;;;AAWG;MAoBU,OAAO,CAAA;;AAET,IAAA,KAAK,GAAG,KAAK;yFAAc;;AAE3B,IAAA,GAAG,GAAG,KAAK;uFAAY;;AAEvB,IAAA,OAAO,GAAG,KAAK;2FAAgB;uGAN7B,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAP,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,OAAO,2qBAfR,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6lDAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAe1B,OAAO,EAAA,UAAA,EAAA,CAAA;kBAnBnB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,QAAA,EACN,SAAS,YACT,2BAA2B,EAAA,eAAA,EAEpB,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,SAAS,EAAE,OAAO;AAClB,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,iBAAiB,EAAE,eAAe;AAClC,wBAAA,mBAAmB,EAAE,iBAAiB;AACtC;AAC6E;AAC7E,wBAAA,cAAc,EAAE,MAAM;AACtB,wBAAA,qBAAqB,EAAE,mBAAmB;AAC3C,qBAAA,EAAA,MAAA,EAAA,CAAA,6lDAAA,CAAA,EAAA;;;AC5CH;;AAEG;;"}
1
+ {"version":3,"file":"slotted-angular-stack.mjs","sources":["../../stack/src/stack.ts","../../stack/src/slotted-angular-stack.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\n\n/**\n * A step on the space scale. Separation is chosen from the scale rather than\n * stated as a length, so a theme retunes every layout at once and no component\n * invents a rhythm of its own. `0` is the absence of separation.\n */\nexport type StackGap = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n\n/** Across the flow, which for a stack is the inline axis. */\nexport type StackAlign = 'start' | 'center' | 'end' | 'stretch';\n\n/** Along the flow, which for a stack is the block axis. */\nexport type StackJustify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\n\n/**\n * Stack arranges its children along the block axis and separates them by one\n * step of the space scale. It paints nothing and adds no semantics: the element\n * is the one the consumer wrote, so a list stays a list and a form stays a form.\n *\n * An axis reaches the stylesheet only when someone decided it. The base rule\n * already carries the family default, and a layout is the most numerous element\n * in a document.\n *\n * There is no input that reverses the children. The order they are written in\n * is the order they are read in, by a screen reader and by the Tab key alike.\n */\n@Component({\n selector: '[slStack]',\n standalone: true,\n exportAs: 'slStack',\n template: '<ng-content></ng-content>',\n styleUrl: '../../../styles/src/stack/stack.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-ui': 'stack',\n 'data-ui-stack': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.data-gap]': 'gap() ?? null',\n '[attr.data-align]': 'align() ?? null',\n /* `align` is also an obsolete HTML attribute a browser still honours on a\n div, centring its text; written statically for the input it would stay. */\n '[attr.align]': 'null',\n '[attr.data-justify]': 'justify() ?? null',\n },\n})\nexport class SlStack {\n /** Positions children across the flow. Absent, they stretch. */\n readonly align = input<StackAlign>();\n /** Separation between children, as a step on the space scale. */\n readonly gap = input<StackGap>();\n /** Positions children along the flow; needs a block size to distribute. */\n readonly justify = input<StackJustify>();\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAeA;;;;;;;;;;;AAWG;MAsBU,OAAO,CAAA;;AAET,IAAA,KAAK,GAAG,KAAK;yFAAc;;AAE3B,IAAA,GAAG,GAAG,KAAK;uFAAY;;AAEvB,IAAA,OAAO,GAAG,KAAK;2FAAgB;uGAN7B,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAP,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,OAAO,stBAjBR,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6lDAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAiB1B,OAAO,EAAA,UAAA,EAAA,CAAA;kBArBnB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,QAAA,EACN,SAAS,YACT,2BAA2B,EAAA,eAAA,EAEpB,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,SAAS,EAAE,OAAO;AAClB,wBAAA,eAAe,EAAE,EAAE;AACnB,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,gBAAgB,EAAE,EAAE;AACpB,wBAAA,iBAAiB,EAAE,eAAe;AAClC,wBAAA,mBAAmB,EAAE,iBAAiB;AACtC;AAC6E;AAC7E,wBAAA,cAAc,EAAE,MAAM;AACtB,wBAAA,qBAAqB,EAAE,mBAAmB;AAC3C,qBAAA,EAAA,MAAA,EAAA,CAAA,6lDAAA,CAAA,EAAA;;;AC9CH;;AAEG;;"}