@slotted/angular 0.1.0-beta.1 → 0.1.0-beta.10

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 (588) hide show
  1. package/README.md +4 -0
  2. package/docs/AGENTS.snippet.md +12 -0
  3. package/docs/alert.json +7 -1
  4. package/docs/alert.md +3 -3
  5. package/docs/app-shell.examples.md +1 -1
  6. package/docs/app-shell.json +5 -5
  7. package/docs/app-shell.md +2 -2
  8. package/docs/avatar.json +22 -1
  9. package/docs/avatar.md +5 -3
  10. package/docs/badge.json +7 -1
  11. package/docs/badge.md +3 -3
  12. package/docs/button-group.json +2 -0
  13. package/docs/button-group.md +1 -1
  14. package/docs/button.json +51 -11
  15. package/docs/button.md +10 -6
  16. package/docs/calendar.json +8 -1
  17. package/docs/calendar.md +1 -0
  18. package/docs/cascader.json +1 -0
  19. package/docs/cascader.md +1 -1
  20. package/docs/chart.examples.md +1 -1
  21. package/docs/chart.json +10 -1
  22. package/docs/chart.md +3 -2
  23. package/docs/checkbox.json +7 -0
  24. package/docs/checkbox.md +1 -0
  25. package/docs/code-block.json +92 -92
  26. package/docs/code-block.md +69 -69
  27. package/docs/combobox.json +1 -0
  28. package/docs/combobox.md +1 -1
  29. package/docs/currency-field.json +40 -1
  30. package/docs/currency-field.md +5 -1
  31. package/docs/data-grid.examples.md +2 -2
  32. package/docs/data-grid.json +24 -7
  33. package/docs/data-grid.md +1 -1
  34. package/docs/data-grid.props.md +6 -4
  35. package/docs/data-list.json +2 -1
  36. package/docs/data-list.md +1 -1
  37. package/docs/date-field.json +9 -1
  38. package/docs/date-field.md +3 -2
  39. package/docs/date-picker.examples.md +36 -0
  40. package/docs/date-picker.json +20 -5
  41. package/docs/date-picker.md +5 -4
  42. package/docs/datetime-field.json +1 -0
  43. package/docs/datetime-field.md +1 -1
  44. package/docs/dialog.examples.md +158 -136
  45. package/docs/dialog.json +35 -11
  46. package/docs/dialog.md +4 -2
  47. package/docs/dialog.props.md +1 -1
  48. package/docs/drawer.json +5 -0
  49. package/docs/drawer.md +1 -0
  50. package/docs/entity-picker.json +19 -4
  51. package/docs/entity-picker.md +8 -6
  52. package/docs/event-calendar.json +7 -0
  53. package/docs/event-calendar.md +1 -0
  54. package/docs/filter-bar.json +118 -118
  55. package/docs/filter-bar.md +79 -79
  56. package/docs/form.json +2 -1
  57. package/docs/form.md +1 -1
  58. package/docs/guidelines/README.md +27 -0
  59. package/docs/guidelines/async-feedback.md +129 -0
  60. package/docs/guidelines/browsing.md +74 -0
  61. package/docs/guidelines/builders.md +97 -0
  62. package/docs/guidelines/composition.md +143 -0
  63. package/docs/guidelines/conversations.md +59 -0
  64. package/docs/guidelines/errors-and-conflicts.md +71 -0
  65. package/docs/guidelines/forms.md +202 -0
  66. package/docs/guidelines/index.md +129 -0
  67. package/docs/guidelines/layout-alignment.md +95 -0
  68. package/docs/guidelines/ledgers.md +45 -0
  69. package/docs/guidelines/list-pages.md +206 -0
  70. package/docs/guidelines/overviews.md +76 -0
  71. package/docs/guidelines/own-elements.md +115 -0
  72. package/docs/guidelines/reading-permissions.md +55 -0
  73. package/docs/guidelines/record-pages.md +178 -0
  74. package/docs/guidelines/reports.md +123 -0
  75. package/docs/guidelines/shell-composition.md +94 -0
  76. package/docs/guidelines/workspaces.md +46 -0
  77. package/docs/icon.json +3 -1
  78. package/docs/icon.md +3 -3
  79. package/docs/index.md +12 -0
  80. package/docs/inline-message.json +14 -2
  81. package/docs/inline-message.md +4 -3
  82. package/docs/list-item.json +9 -1
  83. package/docs/list-item.md +3 -3
  84. package/docs/list.json +19 -1
  85. package/docs/list.md +3 -1
  86. package/docs/markdown.json +79 -79
  87. package/docs/markdown.md +65 -65
  88. package/docs/menu.json +12 -0
  89. package/docs/menu.md +2 -0
  90. package/docs/message.json +7 -1
  91. package/docs/message.md +3 -3
  92. package/docs/multi-select.json +1 -0
  93. package/docs/multi-select.md +1 -1
  94. package/docs/notification-center.json +4 -0
  95. package/docs/notification-center.md +2 -2
  96. package/docs/number-field.json +1 -0
  97. package/docs/number-field.md +1 -1
  98. package/docs/otp-input.json +1 -0
  99. package/docs/otp-input.md +1 -1
  100. package/docs/page-header.json +4 -3
  101. package/docs/page-header.md +2 -2
  102. package/docs/page.json +1 -0
  103. package/docs/page.md +1 -0
  104. package/docs/popover.json +1 -1
  105. package/docs/progress-indicator.json +4 -3
  106. package/docs/progress-indicator.md +4 -4
  107. package/docs/prompt-composer.json +41 -1
  108. package/docs/prompt-composer.md +5 -1
  109. package/docs/rating.json +5 -3
  110. package/docs/rating.md +5 -5
  111. package/docs/section.json +27 -15
  112. package/docs/section.md +11 -9
  113. package/docs/segmented-control.json +36 -12
  114. package/docs/segmented-control.md +17 -1
  115. package/docs/select.json +1 -0
  116. package/docs/select.md +1 -1
  117. package/docs/side-navigation.json +1 -0
  118. package/docs/side-navigation.md +1 -1
  119. package/docs/skills/build-own-element/SKILL.md +90 -0
  120. package/docs/skills/compose-screen/SKILL.md +95 -0
  121. package/docs/skills/index.md +9 -0
  122. package/docs/skills/review-screen/SKILL.md +77 -0
  123. package/docs/skills/theme-app/SKILL.md +87 -0
  124. package/docs/skills/waiting-states/SKILL.md +143 -0
  125. package/docs/sparkline.json +5 -2
  126. package/docs/sparkline.md +4 -4
  127. package/docs/split-button.json +4 -1
  128. package/docs/split-button.md +3 -3
  129. package/docs/stat-card.json +5 -1
  130. package/docs/stat-card.md +3 -3
  131. package/docs/table.examples.md +3 -3
  132. package/docs/table.json +85 -3
  133. package/docs/table.md +12 -1
  134. package/docs/tabs.json +17 -7
  135. package/docs/tabs.md +3 -2
  136. package/docs/tag.json +14 -4
  137. package/docs/tag.md +6 -6
  138. package/docs/tags-input.json +29 -2
  139. package/docs/tags-input.md +4 -1
  140. package/docs/text-field.json +2 -1
  141. package/docs/text-field.md +2 -2
  142. package/docs/textarea.json +1 -0
  143. package/docs/textarea.md +1 -1
  144. package/docs/time-field.json +1 -0
  145. package/docs/time-field.md +1 -1
  146. package/docs/timeline.json +138 -132
  147. package/docs/timeline.md +125 -125
  148. package/docs/toast.json +7 -1
  149. package/docs/toast.md +3 -3
  150. package/docs/toggle-group.json +14 -3
  151. package/docs/toggle-group.md +3 -3
  152. package/docs/toggle.json +12 -3
  153. package/docs/toggle.md +3 -3
  154. package/docs/tokens.md +467 -0
  155. package/docs/tour.json +1 -1
  156. package/docs/typography.json +4 -2
  157. package/docs/typography.md +4 -4
  158. package/fesm2022/slotted-angular-accordion.mjs +4 -2
  159. package/fesm2022/slotted-angular-accordion.mjs.map +1 -1
  160. package/fesm2022/slotted-angular-action-bar.mjs +22 -11
  161. package/fesm2022/slotted-angular-action-bar.mjs.map +1 -1
  162. package/fesm2022/slotted-angular-action-sheet.mjs +42 -29
  163. package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -1
  164. package/fesm2022/slotted-angular-alert.mjs +18 -11
  165. package/fesm2022/slotted-angular-alert.mjs.map +1 -1
  166. package/fesm2022/slotted-angular-app-shell.mjs +111 -61
  167. package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
  168. package/fesm2022/slotted-angular-aspect-ratio.mjs +4 -2
  169. package/fesm2022/slotted-angular-aspect-ratio.mjs.map +1 -1
  170. package/fesm2022/slotted-angular-attachment.mjs +31 -20
  171. package/fesm2022/slotted-angular-attachment.mjs.map +1 -1
  172. package/fesm2022/slotted-angular-avatar-group.mjs +9 -6
  173. package/fesm2022/slotted-angular-avatar-group.mjs.map +1 -1
  174. package/fesm2022/slotted-angular-avatar.mjs +14 -7
  175. package/fesm2022/slotted-angular-avatar.mjs.map +1 -1
  176. package/fesm2022/slotted-angular-badge.mjs +14 -10
  177. package/fesm2022/slotted-angular-badge.mjs.map +1 -1
  178. package/fesm2022/slotted-angular-breadcrumb.mjs +26 -18
  179. package/fesm2022/slotted-angular-breadcrumb.mjs.map +1 -1
  180. package/fesm2022/slotted-angular-button-group.mjs +7 -4
  181. package/fesm2022/slotted-angular-button-group.mjs.map +1 -1
  182. package/fesm2022/slotted-angular-button.mjs +90 -29
  183. package/fesm2022/slotted-angular-button.mjs.map +1 -1
  184. package/fesm2022/slotted-angular-calendar.mjs +235 -58
  185. package/fesm2022/slotted-angular-calendar.mjs.map +1 -1
  186. package/fesm2022/slotted-angular-card.mjs +18 -16
  187. package/fesm2022/slotted-angular-card.mjs.map +1 -1
  188. package/fesm2022/slotted-angular-carousel.mjs +22 -11
  189. package/fesm2022/slotted-angular-carousel.mjs.map +1 -1
  190. package/fesm2022/slotted-angular-cascader.mjs +166 -66
  191. package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
  192. package/fesm2022/slotted-angular-chart.mjs +53 -20
  193. package/fesm2022/slotted-angular-chart.mjs.map +1 -1
  194. package/fesm2022/slotted-angular-checkbox-group.mjs +5 -3
  195. package/fesm2022/slotted-angular-checkbox-group.mjs.map +1 -1
  196. package/fesm2022/slotted-angular-checkbox.mjs +23 -9
  197. package/fesm2022/slotted-angular-checkbox.mjs.map +1 -1
  198. package/fesm2022/slotted-angular-code-block.mjs +29 -15
  199. package/fesm2022/slotted-angular-code-block.mjs.map +1 -1
  200. package/fesm2022/slotted-angular-collapsible.mjs +20 -15
  201. package/fesm2022/slotted-angular-collapsible.mjs.map +1 -1
  202. package/fesm2022/slotted-angular-color-picker.mjs +77 -22
  203. package/fesm2022/slotted-angular-color-picker.mjs.map +1 -1
  204. package/fesm2022/slotted-angular-column-manager.mjs +68 -31
  205. package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
  206. package/fesm2022/slotted-angular-combobox.mjs +112 -39
  207. package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
  208. package/fesm2022/slotted-angular-command-palette.mjs +150 -54
  209. package/fesm2022/slotted-angular-command-palette.mjs.map +1 -1
  210. package/fesm2022/slotted-angular-container.mjs +6 -4
  211. package/fesm2022/slotted-angular-container.mjs.map +1 -1
  212. package/fesm2022/slotted-angular-context-menu.mjs +5 -4
  213. package/fesm2022/slotted-angular-context-menu.mjs.map +1 -1
  214. package/fesm2022/slotted-angular-currency-field.mjs +149 -32
  215. package/fesm2022/slotted-angular-currency-field.mjs.map +1 -1
  216. package/fesm2022/slotted-angular-dashboard-grid.mjs +142 -63
  217. package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
  218. package/fesm2022/slotted-angular-data-grid.mjs +354 -113
  219. package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
  220. package/fesm2022/slotted-angular-data-list.mjs +83 -50
  221. package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
  222. package/fesm2022/slotted-angular-date-field.mjs +74 -25
  223. package/fesm2022/slotted-angular-date-field.mjs.map +1 -1
  224. package/fesm2022/slotted-angular-date-picker.mjs +112 -40
  225. package/fesm2022/slotted-angular-date-picker.mjs.map +1 -1
  226. package/fesm2022/slotted-angular-date-range-picker.mjs +45 -22
  227. package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -1
  228. package/fesm2022/slotted-angular-datetime-field.mjs +48 -16
  229. package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -1
  230. package/fesm2022/slotted-angular-datetime-picker.mjs +41 -29
  231. package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -1
  232. package/fesm2022/slotted-angular-datetime-range-picker.mjs +115 -48
  233. package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -1
  234. package/fesm2022/slotted-angular-description-list.mjs +33 -19
  235. package/fesm2022/slotted-angular-description-list.mjs.map +1 -1
  236. package/fesm2022/slotted-angular-detail-panel.mjs +29 -18
  237. package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -1
  238. package/fesm2022/slotted-angular-dialog.mjs +72 -30
  239. package/fesm2022/slotted-angular-dialog.mjs.map +1 -1
  240. package/fesm2022/slotted-angular-divider.mjs +7 -5
  241. package/fesm2022/slotted-angular-divider.mjs.map +1 -1
  242. package/fesm2022/slotted-angular-drawer.mjs +53 -29
  243. package/fesm2022/slotted-angular-drawer.mjs.map +1 -1
  244. package/fesm2022/slotted-angular-entity-picker.mjs +468 -75
  245. package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -1
  246. package/fesm2022/slotted-angular-event-calendar.mjs +275 -108
  247. package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
  248. package/fesm2022/slotted-angular-field-group.mjs +14 -7
  249. package/fesm2022/slotted-angular-field-group.mjs.map +1 -1
  250. package/fesm2022/slotted-angular-field.mjs +35 -15
  251. package/fesm2022/slotted-angular-field.mjs.map +1 -1
  252. package/fesm2022/slotted-angular-filter-bar.mjs +112 -51
  253. package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
  254. package/fesm2022/slotted-angular-form.mjs +18 -10
  255. package/fesm2022/slotted-angular-form.mjs.map +1 -1
  256. package/fesm2022/slotted-angular-fullscreen.mjs +14 -8
  257. package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -1
  258. package/fesm2022/slotted-angular-grid.mjs +4 -2
  259. package/fesm2022/slotted-angular-grid.mjs.map +1 -1
  260. package/fesm2022/slotted-angular-highlight.mjs +5 -3
  261. package/fesm2022/slotted-angular-highlight.mjs.map +1 -1
  262. package/fesm2022/slotted-angular-hover-card.mjs +5 -4
  263. package/fesm2022/slotted-angular-hover-card.mjs.map +1 -1
  264. package/fesm2022/slotted-angular-icon.mjs +6 -3
  265. package/fesm2022/slotted-angular-icon.mjs.map +1 -1
  266. package/fesm2022/slotted-angular-image.mjs +13 -10
  267. package/fesm2022/slotted-angular-image.mjs.map +1 -1
  268. package/fesm2022/slotted-angular-import-export-center.mjs +167 -99
  269. package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -1
  270. package/fesm2022/slotted-angular-inline-message.mjs +88 -13
  271. package/fesm2022/slotted-angular-inline-message.mjs.map +1 -1
  272. package/fesm2022/slotted-angular-inline.mjs +4 -2
  273. package/fesm2022/slotted-angular-inline.mjs.map +1 -1
  274. package/fesm2022/slotted-angular-kbd.mjs +11 -7
  275. package/fesm2022/slotted-angular-kbd.mjs.map +1 -1
  276. package/fesm2022/slotted-angular-link.mjs +5 -3
  277. package/fesm2022/slotted-angular-link.mjs.map +1 -1
  278. package/fesm2022/slotted-angular-list-item.mjs +21 -18
  279. package/fesm2022/slotted-angular-list-item.mjs.map +1 -1
  280. package/fesm2022/slotted-angular-list.mjs +37 -22
  281. package/fesm2022/slotted-angular-list.mjs.map +1 -1
  282. package/fesm2022/slotted-angular-listbox.mjs +39 -21
  283. package/fesm2022/slotted-angular-listbox.mjs.map +1 -1
  284. package/fesm2022/slotted-angular-loading-overlay.mjs +59 -22
  285. package/fesm2022/slotted-angular-loading-overlay.mjs.map +1 -1
  286. package/fesm2022/slotted-angular-markdown.mjs +31 -19
  287. package/fesm2022/slotted-angular-markdown.mjs.map +1 -1
  288. package/fesm2022/slotted-angular-menu.mjs +51 -29
  289. package/fesm2022/slotted-angular-menu.mjs.map +1 -1
  290. package/fesm2022/slotted-angular-menubar.mjs +4 -2
  291. package/fesm2022/slotted-angular-menubar.mjs.map +1 -1
  292. package/fesm2022/slotted-angular-message-scroller.mjs +28 -15
  293. package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -1
  294. package/fesm2022/slotted-angular-message.mjs +113 -51
  295. package/fesm2022/slotted-angular-message.mjs.map +1 -1
  296. package/fesm2022/slotted-angular-multi-select.mjs +189 -87
  297. package/fesm2022/slotted-angular-multi-select.mjs.map +1 -1
  298. package/fesm2022/slotted-angular-navigation-menu.mjs +34 -26
  299. package/fesm2022/slotted-angular-navigation-menu.mjs.map +1 -1
  300. package/fesm2022/slotted-angular-notification-center.mjs +108 -65
  301. package/fesm2022/slotted-angular-notification-center.mjs.map +1 -1
  302. package/fesm2022/slotted-angular-number-field.mjs +23 -11
  303. package/fesm2022/slotted-angular-number-field.mjs.map +1 -1
  304. package/fesm2022/slotted-angular-otp-input.mjs +13 -8
  305. package/fesm2022/slotted-angular-otp-input.mjs.map +1 -1
  306. package/fesm2022/slotted-angular-page-header.mjs +75 -45
  307. package/fesm2022/slotted-angular-page-header.mjs.map +1 -1
  308. package/fesm2022/slotted-angular-page.mjs +38 -10
  309. package/fesm2022/slotted-angular-page.mjs.map +1 -1
  310. package/fesm2022/slotted-angular-pagination.mjs +35 -22
  311. package/fesm2022/slotted-angular-pagination.mjs.map +1 -1
  312. package/fesm2022/slotted-angular-popover.mjs +32 -19
  313. package/fesm2022/slotted-angular-popover.mjs.map +1 -1
  314. package/fesm2022/slotted-angular-progress-indicator.mjs +236 -52
  315. package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -1
  316. package/fesm2022/slotted-angular-prompt-composer.mjs +41 -20
  317. package/fesm2022/slotted-angular-prompt-composer.mjs.map +1 -1
  318. package/fesm2022/slotted-angular-prose.mjs +14 -11
  319. package/fesm2022/slotted-angular-prose.mjs.map +1 -1
  320. package/fesm2022/slotted-angular-radio-group.mjs +15 -9
  321. package/fesm2022/slotted-angular-radio-group.mjs.map +1 -1
  322. package/fesm2022/slotted-angular-rating.mjs +138 -82
  323. package/fesm2022/slotted-angular-rating.mjs.map +1 -1
  324. package/fesm2022/slotted-angular-result-state.mjs +16 -12
  325. package/fesm2022/slotted-angular-result-state.mjs.map +1 -1
  326. package/fesm2022/slotted-angular-saved-views.mjs +43 -16
  327. package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
  328. package/fesm2022/slotted-angular-scroll-area.mjs +13 -5
  329. package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -1
  330. package/fesm2022/slotted-angular-section.mjs +53 -18
  331. package/fesm2022/slotted-angular-section.mjs.map +1 -1
  332. package/fesm2022/slotted-angular-segmented-control.mjs +37 -11
  333. package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
  334. package/fesm2022/slotted-angular-select.mjs +184 -94
  335. package/fesm2022/slotted-angular-select.mjs.map +1 -1
  336. package/fesm2022/slotted-angular-side-navigation.mjs +46 -35
  337. package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -1
  338. package/fesm2022/slotted-angular-skeleton.mjs +32 -16
  339. package/fesm2022/slotted-angular-skeleton.mjs.map +1 -1
  340. package/fesm2022/slotted-angular-slider.mjs +31 -11
  341. package/fesm2022/slotted-angular-slider.mjs.map +1 -1
  342. package/fesm2022/slotted-angular-sparkline.mjs +41 -14
  343. package/fesm2022/slotted-angular-sparkline.mjs.map +1 -1
  344. package/fesm2022/slotted-angular-split-button.mjs +25 -11
  345. package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
  346. package/fesm2022/slotted-angular-splitter.mjs +11 -9
  347. package/fesm2022/slotted-angular-splitter.mjs.map +1 -1
  348. package/fesm2022/slotted-angular-stack.mjs +4 -2
  349. package/fesm2022/slotted-angular-stack.mjs.map +1 -1
  350. package/fesm2022/slotted-angular-stat-card.mjs +35 -28
  351. package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
  352. package/fesm2022/slotted-angular-status-indicator.mjs +22 -8
  353. package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -1
  354. package/fesm2022/slotted-angular-stepper.mjs +40 -15
  355. package/fesm2022/slotted-angular-stepper.mjs.map +1 -1
  356. package/fesm2022/slotted-angular-switch.mjs +15 -10
  357. package/fesm2022/slotted-angular-switch.mjs.map +1 -1
  358. package/fesm2022/slotted-angular-table-of-contents.mjs +29 -21
  359. package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -1
  360. package/fesm2022/slotted-angular-table.mjs +243 -73
  361. package/fesm2022/slotted-angular-table.mjs.map +1 -1
  362. package/fesm2022/slotted-angular-tabs.mjs +42 -18
  363. package/fesm2022/slotted-angular-tabs.mjs.map +1 -1
  364. package/fesm2022/slotted-angular-tag.mjs +19 -12
  365. package/fesm2022/slotted-angular-tag.mjs.map +1 -1
  366. package/fesm2022/slotted-angular-tags-input.mjs +253 -28
  367. package/fesm2022/slotted-angular-tags-input.mjs.map +1 -1
  368. package/fesm2022/slotted-angular-text-field.mjs +49 -15
  369. package/fesm2022/slotted-angular-text-field.mjs.map +1 -1
  370. package/fesm2022/slotted-angular-textarea.mjs +5 -3
  371. package/fesm2022/slotted-angular-textarea.mjs.map +1 -1
  372. package/fesm2022/slotted-angular-time-field.mjs +48 -14
  373. package/fesm2022/slotted-angular-time-field.mjs.map +1 -1
  374. package/fesm2022/slotted-angular-time-picker.mjs +32 -20
  375. package/fesm2022/slotted-angular-time-picker.mjs.map +1 -1
  376. package/fesm2022/slotted-angular-time-range-picker.mjs +113 -46
  377. package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -1
  378. package/fesm2022/slotted-angular-timeline.mjs +135 -64
  379. package/fesm2022/slotted-angular-timeline.mjs.map +1 -1
  380. package/fesm2022/slotted-angular-toast.mjs +43 -31
  381. package/fesm2022/slotted-angular-toast.mjs.map +1 -1
  382. package/fesm2022/slotted-angular-toggle-group.mjs +25 -8
  383. package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -1
  384. package/fesm2022/slotted-angular-toggle.mjs +9 -4
  385. package/fesm2022/slotted-angular-toggle.mjs.map +1 -1
  386. package/fesm2022/slotted-angular-toolbar.mjs +22 -11
  387. package/fesm2022/slotted-angular-toolbar.mjs.map +1 -1
  388. package/fesm2022/slotted-angular-tooltip.mjs +15 -6
  389. package/fesm2022/slotted-angular-tooltip.mjs.map +1 -1
  390. package/fesm2022/slotted-angular-top-navigation.mjs +64 -44
  391. package/fesm2022/slotted-angular-top-navigation.mjs.map +1 -1
  392. package/fesm2022/slotted-angular-tour.mjs +47 -22
  393. package/fesm2022/slotted-angular-tour.mjs.map +1 -1
  394. package/fesm2022/slotted-angular-transfer.mjs +69 -30
  395. package/fesm2022/slotted-angular-transfer.mjs.map +1 -1
  396. package/fesm2022/slotted-angular-tree.mjs +74 -26
  397. package/fesm2022/slotted-angular-tree.mjs.map +1 -1
  398. package/fesm2022/slotted-angular-typography.mjs +8 -4
  399. package/fesm2022/slotted-angular-typography.mjs.map +1 -1
  400. package/fesm2022/slotted-angular-upload.mjs +125 -57
  401. package/fesm2022/slotted-angular-upload.mjs.map +1 -1
  402. package/fesm2022/slotted-angular-visually-hidden.mjs +4 -2
  403. package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -1
  404. package/fesm2022/slotted-angular-wizard.mjs +163 -65
  405. package/fesm2022/slotted-angular-wizard.mjs.map +1 -1
  406. package/package.json +3 -3
  407. package/types/slotted-angular-accordion.d.ts.map +1 -1
  408. package/types/slotted-angular-action-bar.d.ts.map +1 -1
  409. package/types/slotted-angular-action-sheet.d.ts.map +1 -1
  410. package/types/slotted-angular-alert.d.ts +2 -2
  411. package/types/slotted-angular-alert.d.ts.map +1 -1
  412. package/types/slotted-angular-app-shell.d.ts +11 -3
  413. package/types/slotted-angular-app-shell.d.ts.map +1 -1
  414. package/types/slotted-angular-aspect-ratio.d.ts.map +1 -1
  415. package/types/slotted-angular-attachment.d.ts +1 -1
  416. package/types/slotted-angular-attachment.d.ts.map +1 -1
  417. package/types/slotted-angular-avatar-group.d.ts.map +1 -1
  418. package/types/slotted-angular-avatar.d.ts +11 -3
  419. package/types/slotted-angular-avatar.d.ts.map +1 -1
  420. package/types/slotted-angular-badge.d.ts +1 -1
  421. package/types/slotted-angular-badge.d.ts.map +1 -1
  422. package/types/slotted-angular-breadcrumb.d.ts.map +1 -1
  423. package/types/slotted-angular-button-group.d.ts +1 -1
  424. package/types/slotted-angular-button-group.d.ts.map +1 -1
  425. package/types/slotted-angular-button.d.ts +33 -13
  426. package/types/slotted-angular-button.d.ts.map +1 -1
  427. package/types/slotted-angular-calendar.d.ts +30 -2
  428. package/types/slotted-angular-calendar.d.ts.map +1 -1
  429. package/types/slotted-angular-card.d.ts.map +1 -1
  430. package/types/slotted-angular-carousel.d.ts.map +1 -1
  431. package/types/slotted-angular-cascader.d.ts.map +1 -1
  432. package/types/slotted-angular-chart.d.ts +10 -0
  433. package/types/slotted-angular-chart.d.ts.map +1 -1
  434. package/types/slotted-angular-checkbox-group.d.ts.map +1 -1
  435. package/types/slotted-angular-checkbox.d.ts +7 -1
  436. package/types/slotted-angular-checkbox.d.ts.map +1 -1
  437. package/types/slotted-angular-code-block.d.ts +1 -1
  438. package/types/slotted-angular-code-block.d.ts.map +1 -1
  439. package/types/slotted-angular-collapsible.d.ts +1 -1
  440. package/types/slotted-angular-collapsible.d.ts.map +1 -1
  441. package/types/slotted-angular-color-picker.d.ts.map +1 -1
  442. package/types/slotted-angular-column-manager.d.ts.map +1 -1
  443. package/types/slotted-angular-combobox.d.ts +5 -1
  444. package/types/slotted-angular-combobox.d.ts.map +1 -1
  445. package/types/slotted-angular-command-palette.d.ts +10 -1
  446. package/types/slotted-angular-command-palette.d.ts.map +1 -1
  447. package/types/slotted-angular-container.d.ts.map +1 -1
  448. package/types/slotted-angular-context-menu.d.ts.map +1 -1
  449. package/types/slotted-angular-currency-field.d.ts +63 -15
  450. package/types/slotted-angular-currency-field.d.ts.map +1 -1
  451. package/types/slotted-angular-dashboard-grid.d.ts.map +1 -1
  452. package/types/slotted-angular-data-grid.d.ts +49 -4
  453. package/types/slotted-angular-data-grid.d.ts.map +1 -1
  454. package/types/slotted-angular-data-list.d.ts.map +1 -1
  455. package/types/slotted-angular-date-field.d.ts +11 -1
  456. package/types/slotted-angular-date-field.d.ts.map +1 -1
  457. package/types/slotted-angular-date-picker.d.ts +38 -12
  458. package/types/slotted-angular-date-picker.d.ts.map +1 -1
  459. package/types/slotted-angular-date-range-picker.d.ts +0 -1
  460. package/types/slotted-angular-date-range-picker.d.ts.map +1 -1
  461. package/types/slotted-angular-datetime-field.d.ts.map +1 -1
  462. package/types/slotted-angular-datetime-picker.d.ts +0 -1
  463. package/types/slotted-angular-datetime-picker.d.ts.map +1 -1
  464. package/types/slotted-angular-datetime-range-picker.d.ts +0 -1
  465. package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -1
  466. package/types/slotted-angular-description-list.d.ts.map +1 -1
  467. package/types/slotted-angular-detail-panel.d.ts.map +1 -1
  468. package/types/slotted-angular-dialog.d.ts +10 -3
  469. package/types/slotted-angular-dialog.d.ts.map +1 -1
  470. package/types/slotted-angular-divider.d.ts.map +1 -1
  471. package/types/slotted-angular-drawer.d.ts +7 -1
  472. package/types/slotted-angular-drawer.d.ts.map +1 -1
  473. package/types/slotted-angular-entity-picker.d.ts +63 -15
  474. package/types/slotted-angular-entity-picker.d.ts.map +1 -1
  475. package/types/slotted-angular-event-calendar.d.ts +9 -2
  476. package/types/slotted-angular-event-calendar.d.ts.map +1 -1
  477. package/types/slotted-angular-field-group.d.ts.map +1 -1
  478. package/types/slotted-angular-field.d.ts.map +1 -1
  479. package/types/slotted-angular-filter-bar.d.ts.map +1 -1
  480. package/types/slotted-angular-form.d.ts.map +1 -1
  481. package/types/slotted-angular-fullscreen.d.ts.map +1 -1
  482. package/types/slotted-angular-grid.d.ts.map +1 -1
  483. package/types/slotted-angular-highlight.d.ts.map +1 -1
  484. package/types/slotted-angular-hover-card.d.ts.map +1 -1
  485. package/types/slotted-angular-icon.d.ts +2 -2
  486. package/types/slotted-angular-icon.d.ts.map +1 -1
  487. package/types/slotted-angular-image.d.ts.map +1 -1
  488. package/types/slotted-angular-import-export-center.d.ts.map +1 -1
  489. package/types/slotted-angular-inline-message.d.ts +25 -25
  490. package/types/slotted-angular-inline-message.d.ts.map +1 -1
  491. package/types/slotted-angular-inline.d.ts.map +1 -1
  492. package/types/slotted-angular-kbd.d.ts.map +1 -1
  493. package/types/slotted-angular-link.d.ts.map +1 -1
  494. package/types/slotted-angular-list-item.d.ts +1 -1
  495. package/types/slotted-angular-list-item.d.ts.map +1 -1
  496. package/types/slotted-angular-list.d.ts +42 -27
  497. package/types/slotted-angular-list.d.ts.map +1 -1
  498. package/types/slotted-angular-listbox.d.ts.map +1 -1
  499. package/types/slotted-angular-loading-overlay.d.ts.map +1 -1
  500. package/types/slotted-angular-markdown.d.ts.map +1 -1
  501. package/types/slotted-angular-menu.d.ts +11 -2
  502. package/types/slotted-angular-menu.d.ts.map +1 -1
  503. package/types/slotted-angular-menubar.d.ts.map +1 -1
  504. package/types/slotted-angular-message-scroller.d.ts.map +1 -1
  505. package/types/slotted-angular-message.d.ts +1 -1
  506. package/types/slotted-angular-message.d.ts.map +1 -1
  507. package/types/slotted-angular-multi-select.d.ts +15 -1
  508. package/types/slotted-angular-multi-select.d.ts.map +1 -1
  509. package/types/slotted-angular-navigation-menu.d.ts.map +1 -1
  510. package/types/slotted-angular-notification-center.d.ts +1 -1
  511. package/types/slotted-angular-notification-center.d.ts.map +1 -1
  512. package/types/slotted-angular-number-field.d.ts.map +1 -1
  513. package/types/slotted-angular-otp-input.d.ts.map +1 -1
  514. package/types/slotted-angular-page-header.d.ts +4 -4
  515. package/types/slotted-angular-page-header.d.ts.map +1 -1
  516. package/types/slotted-angular-page.d.ts.map +1 -1
  517. package/types/slotted-angular-pagination.d.ts.map +1 -1
  518. package/types/slotted-angular-popover.d.ts.map +1 -1
  519. package/types/slotted-angular-progress-indicator.d.ts +8 -1
  520. package/types/slotted-angular-progress-indicator.d.ts.map +1 -1
  521. package/types/slotted-angular-prompt-composer.d.ts +11 -2
  522. package/types/slotted-angular-prompt-composer.d.ts.map +1 -1
  523. package/types/slotted-angular-prose.d.ts.map +1 -1
  524. package/types/slotted-angular-radio-group.d.ts.map +1 -1
  525. package/types/slotted-angular-rating.d.ts +1 -1
  526. package/types/slotted-angular-rating.d.ts.map +1 -1
  527. package/types/slotted-angular-result-state.d.ts.map +1 -1
  528. package/types/slotted-angular-saved-views.d.ts.map +1 -1
  529. package/types/slotted-angular-scroll-area.d.ts.map +1 -1
  530. package/types/slotted-angular-section.d.ts +11 -3
  531. package/types/slotted-angular-section.d.ts.map +1 -1
  532. package/types/slotted-angular-segmented-control.d.ts +15 -2
  533. package/types/slotted-angular-segmented-control.d.ts.map +1 -1
  534. package/types/slotted-angular-select.d.ts +12 -2
  535. package/types/slotted-angular-select.d.ts.map +1 -1
  536. package/types/slotted-angular-side-navigation.d.ts.map +1 -1
  537. package/types/slotted-angular-skeleton.d.ts.map +1 -1
  538. package/types/slotted-angular-slider.d.ts.map +1 -1
  539. package/types/slotted-angular-sparkline.d.ts +7 -1
  540. package/types/slotted-angular-sparkline.d.ts.map +1 -1
  541. package/types/slotted-angular-split-button.d.ts +2 -2
  542. package/types/slotted-angular-split-button.d.ts.map +1 -1
  543. package/types/slotted-angular-splitter.d.ts.map +1 -1
  544. package/types/slotted-angular-stack.d.ts.map +1 -1
  545. package/types/slotted-angular-stat-card.d.ts +1 -1
  546. package/types/slotted-angular-stat-card.d.ts.map +1 -1
  547. package/types/slotted-angular-status-indicator.d.ts +1 -1
  548. package/types/slotted-angular-status-indicator.d.ts.map +1 -1
  549. package/types/slotted-angular-stepper.d.ts +1 -1
  550. package/types/slotted-angular-stepper.d.ts.map +1 -1
  551. package/types/slotted-angular-switch.d.ts.map +1 -1
  552. package/types/slotted-angular-table-of-contents.d.ts.map +1 -1
  553. package/types/slotted-angular-table.d.ts +63 -6
  554. package/types/slotted-angular-table.d.ts.map +1 -1
  555. package/types/slotted-angular-tabs.d.ts +3 -4
  556. package/types/slotted-angular-tabs.d.ts.map +1 -1
  557. package/types/slotted-angular-tag.d.ts +1 -1
  558. package/types/slotted-angular-tag.d.ts.map +1 -1
  559. package/types/slotted-angular-tags-input.d.ts +33 -1
  560. package/types/slotted-angular-tags-input.d.ts.map +1 -1
  561. package/types/slotted-angular-text-field.d.ts.map +1 -1
  562. package/types/slotted-angular-textarea.d.ts.map +1 -1
  563. package/types/slotted-angular-theme.d.ts +1 -1
  564. package/types/slotted-angular-time-field.d.ts.map +1 -1
  565. package/types/slotted-angular-time-picker.d.ts +0 -1
  566. package/types/slotted-angular-time-picker.d.ts.map +1 -1
  567. package/types/slotted-angular-time-range-picker.d.ts +0 -1
  568. package/types/slotted-angular-time-range-picker.d.ts.map +1 -1
  569. package/types/slotted-angular-timeline.d.ts +1 -1
  570. package/types/slotted-angular-timeline.d.ts.map +1 -1
  571. package/types/slotted-angular-toast.d.ts +3 -3
  572. package/types/slotted-angular-toast.d.ts.map +1 -1
  573. package/types/slotted-angular-toggle-group.d.ts +8 -2
  574. package/types/slotted-angular-toggle-group.d.ts.map +1 -1
  575. package/types/slotted-angular-toggle.d.ts +1 -1
  576. package/types/slotted-angular-toggle.d.ts.map +1 -1
  577. package/types/slotted-angular-toolbar.d.ts.map +1 -1
  578. package/types/slotted-angular-tooltip.d.ts.map +1 -1
  579. package/types/slotted-angular-top-navigation.d.ts.map +1 -1
  580. package/types/slotted-angular-tour.d.ts.map +1 -1
  581. package/types/slotted-angular-transfer.d.ts.map +1 -1
  582. package/types/slotted-angular-tree.d.ts.map +1 -1
  583. package/types/slotted-angular-typography.d.ts +1 -1
  584. package/types/slotted-angular-typography.d.ts.map +1 -1
  585. package/types/slotted-angular-upload.d.ts +2 -2
  586. package/types/slotted-angular-upload.d.ts.map +1 -1
  587. package/types/slotted-angular-visually-hidden.d.ts.map +1 -1
  588. package/types/slotted-angular-wizard.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"slotted-angular-tree.mjs","sources":["../../tree/src/tree-defaults.ts","../../tree/src/tree-context.ts","../../tree/src/tree-parts.ts","../../tree/src/tree.ts","../../tree/src/slotted-angular-tree.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\n\n/** The type step the tree and every row inside it sit at. */\nexport type TreeSize = 'sm' | 'md' | 'lg';\n\n/**\n * Whether the tree draws its own box. `framed` is the standalone control;\n * `plain` is what a panel that already has an edge renders inside itself.\n */\nexport type TreeVariant = 'plain' | 'framed';\n\n/** How many nodes may be chosen at once. */\nexport type TreeSelectionMode = 'none' | 'single' | 'multiple';\n\n/**\n * Which of the two models the pattern offers is in force. `toggle` is the\n * recommended one and holds no modifier; `replace` is the alternative.\n */\nexport type TreeSelectionBehavior = 'toggle' | 'replace';\n\n/**\n * How the selection is drawn, and which attribute states it. The pattern allows\n * `aria-selected` or `aria-checked` and never both; `auto` reads the mode\n * beside it, which is the convention the pattern's own note recommends.\n */\nexport type TreeSelectionIndicator = 'auto' | 'highlight' | 'checkbox' | 'none';\n\n/** Whether pressing a branch takes its descendants with it. */\nexport type TreeSelectionCascade = 'none' | 'descendants';\n\n/** What a press on the row does to a branch. */\nexport type TreeExpandOn = 'row' | 'expander';\n\n/**\n * How the keyboard's position is expressed. `auto` reads one fact — whether the\n * set is windowed — and answers `activedescendant` when it is, because a roving\n * tab stop cannot survive its own element being recycled.\n */\nexport type TreeFocusMode = 'auto' | 'roving' | 'activedescendant';\n\n/**\n * Whether the nodes are nested in `role=\"group\"` elements or laid flat with\n * their level stated. A window renders a slice and a slice cannot preserve\n * nesting, so `auto` answers `flat` while windowed.\n */\nexport type TreeStructure = 'auto' | 'nested' | 'flat';\n\n/** Where `scrollToKey` puts the node it reveals. */\nexport type TreeAlignment = 'start' | 'center' | 'end' | 'nearest';\n\nexport interface TreeDefaults {\n disallowEmptySelection: boolean;\n disallowSelectAll: boolean;\n expandOn: TreeExpandOn;\n focusMode: TreeFocusMode;\n guides: boolean;\n itemSize: number;\n loop: boolean;\n navigateDisabled: boolean;\n overscan: number;\n pageSize: number;\n selectOnFocus: boolean;\n selectionBehavior: TreeSelectionBehavior;\n selectionCascade: TreeSelectionCascade;\n selectionIndicator: TreeSelectionIndicator;\n selectionMode: TreeSelectionMode;\n size: TreeSize;\n structure: TreeStructure;\n typeahead: boolean;\n typeaheadTimeout: number;\n variant: TreeVariant;\n virtual: boolean;\n}\n\n/**\n * `expandOn` is `row` because the band is a larger target than any chevron and\n * it is what a file browser does. `selectionIndicator` is `auto` rather than a\n * mode, because the right mark depends on the mode beside it: a box for a set\n * the reader ticks, a highlight for the one thing they chose. `loop` is off,\n * for the reason `listbox` states.\n */\nconst FALLBACK: TreeDefaults = {\n disallowEmptySelection: false,\n disallowSelectAll: false,\n expandOn: 'row',\n focusMode: 'auto',\n guides: true,\n itemSize: 32,\n loop: false,\n navigateDisabled: false,\n overscan: 4,\n pageSize: 10,\n selectOnFocus: false,\n selectionBehavior: 'toggle',\n selectionCascade: 'none',\n selectionIndicator: 'auto',\n selectionMode: 'single',\n size: 'md',\n structure: 'auto',\n typeahead: true,\n typeaheadTimeout: 500,\n variant: 'plain',\n virtual: false,\n};\n\nexport const TREE_DEFAULTS = new InjectionToken<TreeDefaults>('slotted tree defaults', {\n providedIn: 'root',\n factory: () => FALLBACK,\n});\n\n/**\n * An application decides once how its trees behave, rather than repeating\n * twenty inputs on every hierarchy in a product. A tree that states any of them\n * itself still wins: an explicit input is never overridden by the token.\n */\nexport function provideTreeDefaults(defaults: Partial<TreeDefaults>) {\n return {\n provide: TREE_DEFAULTS,\n useFactory: (): TreeDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a tree behaves as here, before it states anything of its own. */\nexport function injectTreeDefaults(): TreeDefaults {\n return inject(TREE_DEFAULTS);\n}\n\n/**\n * `aria-activedescendant` names a node by its id, and a node's own label names\n * the node, so every node needs two ids and the same strings have to be\n * produced on the server and in the browser. A counter held by the injector\n * produces them; `Math.random` would not match for hydration.\n */\n@Injectable({ providedIn: 'root' })\nexport class SlTreeIdFactory {\n private count = 0;\n\n next() {\n this.count += 1;\n return `slotted-tree-${this.count}`;\n }\n}\n","import type { Signal } from '@angular/core';\n\nimport type { TreeExpandOn, TreeSelectionIndicator, TreeSelectionMode } from './tree-defaults';\n\n/**\n * What a part asks the tree around it.\n *\n * It is an abstract class rather than an interface so it can be the injection\n * token as well as the type, and it exists in a file of its own so the parts do\n * not import the component that renders them: the component's own template\n * applies the node component, and a direct import each way is a cycle.\n */\nexport abstract class SlTreeContext {\n abstract readonly indicatorMode: Signal<Exclude<TreeSelectionIndicator, 'auto'>>;\n abstract readonly selection: Signal<TreeSelectionMode>;\n abstract readonly expandOnRow: Signal<TreeExpandOn>;\n abstract readonly treeDisabled: Signal<boolean>;\n abstract readonly showGuides: Signal<boolean>;\n /** Whether this key is chosen. */\n abstract isSelected(key: string): boolean;\n /** Whether this branch is open. */\n abstract isExpanded(key: string): boolean;\n /** Whether this key is the one the keyboard is on. */\n abstract isActive(key: string): boolean;\n /** Whether this branch holds part of a selection and not the whole of it. */\n abstract isIndeterminate(key: string): boolean;\n /** Whether this collapsed branch holds a chosen descendant. */\n abstract holdsSelection(key: string): boolean;\n /** The id a node carries, so `aria-activedescendant` can name it. */\n abstract nodeId(key: string): string;\n /** The id of the node's own label, which is what names the node. */\n abstract labelId(key: string): string;\n /** The tab stop under the roving model, and `null` under the other one. */\n abstract nodeTabIndex(key: string): number | null;\n /**\n * The level, the size of the sibling group and the place in it. All three are\n * `null` unless the flat structure is in force, which is exactly when the\n * pattern requires them: with the nesting in the DOM the browser computes\n * them itself.\n */\n abstract levelOf(key: string): number | null;\n abstract setSizeOf(key: string): number | null;\n abstract posInSetOf(key: string): number | null;\n /** A press on a row, with the modifiers it was pressed with. */\n abstract press(key: string, event: MouseEvent): void;\n /** A press on the chevron, which only ever opens or closes. */\n abstract pressExpander(key: string, event: MouseEvent): void;\n /** A press on the box, which only ever selects. */\n abstract pressIndicator(key: string, event: MouseEvent): void;\n}\n","import {\n afterEveryRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n numberAttribute,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { Signal } from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\n\nimport { SlTreeContext } from './tree-context';\n\n/** The selector the tree reads its visible rows through, in DOM order. */\nexport const NODE_SELECTOR = \"[data-part='node']\";\n\n/**\n * One node, and the facts the tree reads back off it.\n *\n * The visible collection is read from the DOM rather than from a registry, as\n * `listbox` and `menu` already do: document order is reading order, a collapsed\n * branch renders no group and therefore contributes no rows, and nothing has to\n * be registered, unregistered or ordered by mount time. The flattening a tree\n * would otherwise need is the browser's own.\n *\n * `aria-disabled` and never the native attribute: the pattern needs a disabled\n * node to keep its place in the set, and `navigateDisabled` is what decides\n * whether the arrows land on it.\n */\n@Component({\n selector: 'li[slTreeNode]',\n standalone: true,\n exportAs: 'slTreeNode',\n imports: [SlGlyph, SlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `<div data-part=\"row\" (click)=\"onRowClick($event)\">\n @if (tree.showGuides() && depth() > 0) {\n <span data-part=\"guide\" aria-hidden=\"true\"></span>\n }\n @if (branch() && loading()) {\n <!-- The wait stands in the chevron's own cell, so a branch that starts\n fetching moves neither its own name nor the rows below it. -->\n <span data-part=\"loader\" data-ui=\"spinner\" aria-hidden=\"true\"></span>\n } @else {\n <span data-part=\"expander\" aria-hidden=\"true\" (click)=\"onExpanderClick($event)\">\n <!-- A leaf keeps the box and draws nothing in it. -->\n @if (branch()) {\n <span slIcon><svg slGlyph name=\"chevron-right\"></svg></span>\n }\n </span>\n }\n @if (tree.indicatorMode() === 'checkbox') {\n <!-- The dash outranks the check: a branch partly chosen shows the state\n its children are in. -->\n <span data-part=\"indicator\" aria-hidden=\"true\" (click)=\"onIndicatorClick($event)\"\n ><span slIcon><svg slGlyph [name]=\"indeterminate() ? 'minus' : 'check'\"></svg></span\n ></span>\n }\n <ng-content select=\"[slTreeIcon]\" />\n <span data-part=\"label\" [attr.id]=\"labelId()\"\n >{{ label() }}<ng-content select=\"[slTreeLabel]\"\n /></span>\n <ng-content select=\"[slTreeDescription]\" />\n <ng-content select=\"[slTreeMeta]\" />\n <ng-content select=\"[slTreeActions]\" />\n </div>\n @if (branch() && expanded()) {\n <!-- The group is placed only while the branch is open. One kept in the\n DOM and merely hidden would put every descendant of every closed\n branch into the reading order the root counts.\n\n The element is the consumer's rather than this template's, and the\n reason is the HTML parser: Angular parses a template as HTML, where\n an li closes the li before it, so a node written inside a node needs\n the list between them. React has no such rule and needs no such\n element, and the asymmetry is written in the design rather than\n levelled away. -->\n <ng-content select=\"[slTreeGroup]\" />\n }\n <ng-content />`,\n host: {\n 'data-part': 'node',\n role: 'treeitem',\n '[attr.id]': 'id()',\n '[attr.data-key]': 'value()',\n '[attr.data-depth]': 'depth()',\n '[style.--slotted-tree-depth]': 'depth()',\n '[style.--slotted-tree-row-offset.px]': 'offset()',\n '[attr.data-text-value]': 'textValue() ?? null',\n '[attr.data-branch]': \"branch() ? '' : null\",\n '[attr.data-expanded]': \"expanded() ? '' : null\",\n '[attr.data-selected]': \"selected() ? '' : null\",\n '[attr.data-selected-within]': \"holdsSelection() ? '' : null\",\n '[attr.data-indeterminate]': \"indeterminate() ? '' : null\",\n '[attr.data-current]': \"current() ? '' : null\",\n '[attr.data-disabled]': \"resolvedDisabled() ? '' : null\",\n '[attr.data-loading]': \"loading() ? '' : null\",\n '[attr.data-match]': 'match() ?? null',\n '[attr.data-pinned]': \"pinned() ? '' : null\",\n '[attr.aria-labelledby]': 'labelId()',\n '[attr.aria-expanded]': 'ariaExpanded()',\n '[attr.aria-selected]': 'ariaSelected()',\n '[attr.aria-checked]': 'ariaChecked()',\n '[attr.aria-disabled]': \"resolvedDisabled() ? 'true' : null\",\n '[attr.aria-level]': 'levelAttr()',\n '[attr.aria-setsize]': 'setSize()',\n '[attr.aria-posinset]': 'posInSet()',\n '[attr.tabindex]': 'tabIndex()',\n },\n})\nexport class SlTreeNode {\n /** The key this node selects and expands by. */\n readonly value = input.required<string>();\n /** The node's name, when it is a plain string. */\n readonly label = input('');\n /**\n * Whether this node has children that have not been rendered yet. A branch\n * says so before it can prove it, which is what makes lazy loading possible.\n */\n readonly hasChildren = input(false, { transform: booleanAttribute });\n /** Whether the children are on their way. Writes `aria-busy` on the group. */\n readonly loading = input(false, { transform: booleanAttribute });\n /** Unstated rather than `false`, so the node defers to the tree. */\n readonly disabled = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : booleanAttribute(state)),\n });\n /**\n * What typeahead matches and what a reader hears. Defaults to the label's own\n * text, which is wrong exactly when the label holds a mark or a number.\n */\n readonly textValue = input<string | undefined>(undefined);\n /** Whether a query matched this node's own name or one below it. */\n readonly match = input<'hit' | 'ancestor' | undefined>(undefined);\n /**\n * Rendered at its own place on the canvas whether or not the window covers\n * it. The tree pins the active node and the range anchor; nothing else sets\n * it, because an `aria-activedescendant` whose target has been recycled names\n * an id that is not in the document.\n */\n readonly pinned = input(false, { transform: booleanAttribute });\n /** Where the node sits on the canvas, in pixels. Windowed rows only. */\n readonly offset = input<number | undefined, number | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : numberAttribute(state)),\n });\n /**\n * How deep the node sits, stated only by the flat shape. Everywhere else the\n * markup says it: a node inside another is one level deeper, and the number\n * is a fact about the tree rather than one more thing a consumer can get\n * wrong.\n */\n readonly level = input<number | undefined, number | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : numberAttribute(state)),\n });\n\n protected readonly tree = inject(SlTreeContext);\n /**\n * The node this one is written inside, found through the element injector\n * rather than through a context signal: projected content keeps the injector\n * of the place it was declared, which is exactly the nesting the depth is\n * counted from.\n */\n private readonly parent = inject(SlTreeNode, { optional: true, skipSelf: true });\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n /**\n * The nodes this one is rendered inside, counted in the document once it is\n * attached. A template that calls itself declares every instance at the root,\n * so the injector finds no parent for any of them and the whole tree would\n * draw flat; the document still nests them, and so does the level the\n * platform reports.\n */\n private readonly renderedDepth = signal<number | null>(null);\n\n /**\n * The nodes written inside this one. Angular creates projected content with\n * the parent's own view and only decides where to place it, so the query\n * answers a branch that is closed and whose group is therefore not rendered —\n * which is what keeps a collapsed branch a branch.\n */\n private readonly childNodes = contentChildren(SlTreeNode, { descendants: true });\n\n /** A branch is a node that holds children or says it will. */\n protected readonly branch = computed(() => this.hasChildren() || this.childNodes().length > 0);\n /**\n * Annotated rather than inferred: the depth of a node reads the depth of the\n * node it is written inside, and an inferred type would be defined in terms\n * of itself.\n */\n readonly depth: Signal<number> = computed(\n () =>\n this.level() ?? this.renderedDepth() ?? (this.parent === null ? 0 : this.parent.depth() + 1),\n );\n protected readonly expanded = computed(() => this.branch() && this.tree.isExpanded(this.value()));\n protected readonly selected = computed(() => this.tree.isSelected(this.value()));\n protected readonly indeterminate = computed(() => this.tree.isIndeterminate(this.value()));\n protected readonly holdsSelection = computed(\n () => !this.expanded() && this.tree.holdsSelection(this.value()),\n );\n protected readonly current = computed(() => this.tree.isActive(this.value()));\n protected readonly id = computed(() => this.tree.nodeId(this.value()));\n protected readonly labelId = computed(() => this.tree.labelId(this.value()));\n protected readonly resolvedDisabled = computed(\n () => (this.disabled() ?? false) === true || this.tree.treeDisabled() === true,\n );\n protected readonly ariaExpanded = computed(() =>\n this.branch() ? (this.expanded() ? 'true' : 'false') : null,\n );\n private readonly chosen = computed(() =>\n this.tree.selection() === 'none' ? null : this.selected() ? 'true' : 'false',\n );\n protected readonly ariaSelected = computed(() =>\n this.tree.indicatorMode() === 'checkbox' ? null : this.chosen(),\n );\n protected readonly ariaChecked = computed(() =>\n this.tree.indicatorMode() === 'checkbox' ? this.chosen() : null,\n );\n /**\n * The level the node reports is the tree's answer and not the depth it was\n * handed: the depth places the row, and the property is written only where\n * the nesting no longer says it.\n */\n protected readonly levelAttr = computed(() => this.tree.levelOf(this.value()));\n protected readonly setSize = computed(() => this.tree.setSizeOf(this.value()));\n protected readonly posInSet = computed(() => this.tree.posInSetOf(this.value()));\n protected readonly tabIndex = computed(() => this.tree.nodeTabIndex(this.value()));\n\n constructor() {\n /*\n * Projected content is created with the parent's view, before a closed\n * branch has placed its group in the document, so one read at creation\n * finds no ancestor. The count waits until the node is attached, and stops\n * there: a view is never moved to another parent.\n */\n const measure = afterEveryRender({\n read: () => {\n const element = this.host.nativeElement;\n const root = element.closest(\"[data-ui='tree']\");\n if (root === null) return;\n let depth = 0;\n let node = element.parentElement?.closest(NODE_SELECTOR);\n while (node && root.contains(node)) {\n depth += 1;\n node = node.parentElement?.closest(NODE_SELECTOR);\n }\n this.renderedDepth.set(depth);\n measure.destroy();\n },\n });\n }\n\n protected onRowClick(event: MouseEvent) {\n if (this.resolvedDisabled()) return;\n this.tree.press(this.value(), event);\n }\n\n protected onExpanderClick(event: MouseEvent) {\n event.stopPropagation();\n if (!this.branch() || this.resolvedDisabled()) return;\n this.tree.pressExpander(this.value(), event);\n }\n\n protected onIndicatorClick(event: MouseEvent) {\n event.stopPropagation();\n if (this.resolvedDisabled()) return;\n this.tree.pressIndicator(this.value(), event);\n }\n}\n\n/**\n * The list a branch's children are written in.\n *\n * It exists because Angular parses a template as HTML: an `li` closes the `li`\n * before it, so a node written inside a node needs the list between them. The\n * node decides whether the group is placed; the consumer decides what element\n * it is.\n */\n@Directive({\n selector: 'ul[slTreeGroup]',\n standalone: true,\n host: {\n 'data-part': 'group',\n role: 'group',\n '[attr.aria-busy]': \"busy() ? 'true' : null\",\n },\n})\nexport class SlTreeGroup {\n /** Whether the children are still on their way. */\n readonly busy = input(false, { transform: booleanAttribute });\n}\n\n/** The node's leading picture, which the consumer owns whole. */\n@Directive({\n selector: '[slTreeIcon]',\n standalone: true,\n host: { 'data-part': 'icon', 'aria-hidden': 'true' },\n})\nexport class SlTreeIcon {}\n\n/** The node's name, when it is richer than a string. */\n@Directive({ selector: '[slTreeLabel]', standalone: true })\nexport class SlTreeLabel {}\n\n/** A second line under the name. */\n@Directive({\n selector: '[slTreeDescription]',\n standalone: true,\n host: { 'data-part': 'description' },\n})\nexport class SlTreeDescription {}\n\n/** The trailing count, size or badge. */\n@Directive({ selector: '[slTreeMeta]', standalone: true, host: { 'data-part': 'meta' } })\nexport class SlTreeMeta {}\n\n/** The trailing controls. They stay in the DOM and stay reachable. */\n@Directive({ selector: '[slTreeActions]', standalone: true, host: { 'data-part': 'actions' } })\nexport class SlTreeActions {}\n\n/** What the tree shows when it holds nothing. */\n@Directive({ selector: '[slTreeEmpty]', standalone: true, host: { 'data-part': 'empty' } })\nexport class SlTreeEmpty {}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n ElementRef,\n forwardRef,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type {\n AbstractControl,\n ControlValueAccessor,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport {\n cascadeSelection,\n createFilter,\n createTreeCollection,\n indeterminateKeys,\n moveIndex,\n nextSelection,\n virtualWindow,\n} from '@slotted/core/collection';\nimport type {\n MoveIntent,\n TreeCollection,\n TreeNode as TreeNodeData,\n} from '@slotted/core/collection';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport { createTypeahead, isPrintable } from '@slotted/core/typeahead';\nimport type { TypeaheadHandle } from '@slotted/core/typeahead';\n\nimport { SlTreeContext } from './tree-context';\nimport { injectTreeDefaults, SlTreeIdFactory } from './tree-defaults';\nimport type {\n TreeAlignment,\n TreeExpandOn,\n TreeFocusMode,\n TreeSelectionBehavior,\n TreeSelectionCascade,\n TreeSelectionIndicator,\n TreeSelectionMode,\n TreeSize,\n TreeStructure,\n TreeVariant,\n} from './tree-defaults';\nimport { NODE_SELECTOR, SlTreeGroup, SlTreeNode } from './tree-parts';\n\nexport type {\n TreeAlignment,\n TreeExpandOn,\n TreeFocusMode,\n TreeSelectionBehavior,\n TreeSelectionCascade,\n TreeSelectionIndicator,\n TreeSelectionMode,\n TreeSize,\n TreeStructure,\n TreeVariant,\n} from './tree-defaults';\n\n/**\n * What the tree holds: one key in `single` and `none`, a set of them in\n * `multiple`. The shape `listbox` settled, for the same reason.\n */\nexport type TreeValue = string | readonly string[] | null;\n\nexport type TreeChangeRequest = ChangeRequest<TreeValue>;\nexport type TreeExpansionRequest = ChangeRequest<readonly string[]>;\nexport type TreeActiveRequest = ChangeRequest<string | null>;\n\n/** One visible row, as the DOM reports it at the moment a key was pressed. */\ninterface Row {\n key: string;\n depth: number;\n branch: boolean;\n disabled: boolean;\n label: string;\n element: HTMLElement;\n}\n\n/** One row of the render plan the template walks. */\ninterface PlanNode {\n key: string;\n item: unknown;\n label: string;\n level: number;\n disabled: boolean;\n branch: boolean;\n loading: boolean;\n match: 'hit' | 'ancestor' | undefined;\n /** Where a pinned row sits on the canvas, or `undefined` for one in flow. */\n offset: number | undefined;\n children: PlanNode[];\n}\n\nfunction toKeys(value: TreeValue | undefined): readonly string[] {\n if (value === undefined || value === null) return [];\n return typeof value === 'string' ? [value] : value;\n}\n\nfunction same(a: readonly string[], b: readonly string[]) {\n return a.length === b.length && a.every((key, index) => key === b[index]);\n}\n\n/**\n * A hierarchy the reader opens, walks and chooses from.\n *\n * ── Where the visible list comes from ───────────────────────────────────\n *\n * From the DOM, in document order, which is the flattening a tree would\n * otherwise have to keep in step with the expanded set. A collapsed branch\n * renders no group and therefore contributes no rows, so what the keyboard\n * counts and what the reader sees cannot disagree.\n *\n * `nodes` is a second thing and not a replacement: it is the hierarchy the tree\n * holds, and it answers the three questions the DOM cannot — what is under a\n * branch that is closed, which a cascade needs; what every branch is, which\n * `expandAll` opens; and what matches a query, whose ancestors the filter\n * keeps.\n *\n * ── Three mutable values ────────────────────────────────────────────────\n *\n * The pattern is explicit that focus and selection are two: \"DOM focus (the\n * active element) is functionally distinct from the selected state\". Expansion\n * is the third and belongs to neither.\n */\n@Component({\n selector: '[slTree]',\n standalone: true,\n exportAs: 'slTree',\n imports: [NgTemplateOutlet, SlTreeGroup, SlTreeNode],\n styleUrls: ['../../../styles/src/tree/tree.css', '../../../styles/src/highlight/highlight.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { provide: SlTreeContext, useExisting: forwardRef(() => SlTree) },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlTree), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SlTree), multi: true },\n ],\n template: `<ul\n data-part=\"canvas\"\n role=\"tree\"\n #canvas\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.aria-multiselectable]=\"selection() === 'multiple' ? 'true' : null\"\n [attr.aria-activedescendant]=\"activeDescendant()\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n [attr.aria-disabled]=\"treeDisabled() ? 'true' : null\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n [attr.aria-required]=\"required() ? 'true' : null\"\n [attr.tabindex]=\"canvasTabIndex()\"\n [style.--_canvas-size]=\"canvasSize()\"\n [style.--_canvas-offset]=\"canvasOffset()\"\n (keydown)=\"onKeyDown($event)\"\n (focusin)=\"onFocusIn($event)\"\n >\n @if (plan(); as rows) {\n @for (node of rows; track node.key) {\n <ng-container\n [ngTemplateOutlet]=\"nodeRow\"\n [ngTemplateOutletContext]=\"{ $implicit: node }\"\n />\n }\n }\n <ng-content />\n </ul>\n @if (holdsNothing()) {\n <ng-content select=\"[slTreeEmpty]\" />\n }\n\n <ng-template #nodeRow let-node>\n <li\n slTreeNode\n [value]=\"node.key\"\n [label]=\"node.label\"\n [level]=\"node.level\"\n [hasChildren]=\"node.branch\"\n [disabled]=\"node.disabled\"\n [loading]=\"node.loading\"\n [match]=\"node.match\"\n [textValue]=\"node.label\"\n [pinned]=\"node.offset !== undefined\"\n [offset]=\"node.offset\"\n >\n @if (nodeContent(); as content) {\n <ng-container\n [ngTemplateOutlet]=\"content\"\n [ngTemplateOutletContext]=\"{ $implicit: node.item, key: node.key }\"\n />\n }\n @if (node.children.length > 0) {\n <ul slTreeGroup [busy]=\"node.loading\">\n @for (child of node.children; track child.key) {\n <ng-container\n [ngTemplateOutlet]=\"nodeRow\"\n [ngTemplateOutletContext]=\"{ $implicit: child }\"\n />\n }\n </ul>\n }\n </li>\n </ng-template>`,\n host: {\n 'data-ui': 'tree',\n 'data-part': 'root',\n '[attr.data-size]': 'size()',\n '[attr.data-variant]': 'variant()',\n '[attr.data-structure]': 'structureMode()',\n '[attr.data-indicator]': 'indicatorMode()',\n '[attr.data-expand-on]': 'expandOnRow()',\n '[attr.data-selection]': 'selection()',\n '[attr.data-focus-mode]': 'mode()',\n '[attr.data-guides]': 'showGuides() ? \"true\" : \"false\"',\n '[attr.data-disabled]': 'treeDisabled() ? \"\" : null',\n '[attr.data-readonly]': 'readOnly() ? \"\" : null',\n '[attr.data-invalid]': 'invalid() ? \"\" : null',\n '[attr.data-required]': 'required() ? \"\" : null',\n '[attr.data-loading]': 'loading() ? \"\" : null',\n '(scroll)': 'onScroll()',\n },\n})\nexport class SlTree implements SlTreeContext, ControlValueAccessor, Validator {\n /* ── The three values a reader moves ─────────────────────────────────── */\n\n readonly value = model<TreeValue>(null);\n readonly expandedKeys = model<readonly string[]>([]);\n readonly activeKey = model<string | null>(null);\n\n /** The request behind each move, carrying the reason a boolean cannot say. */\n readonly valueRequest = output<TreeChangeRequest>();\n readonly expandedKeysRequest = output<TreeExpansionRequest>();\n readonly activeKeyRequest = output<TreeActiveRequest>();\n /** A node was activated: pressed, or `Enter` on the keyboard. */\n readonly nodeActivate = output<{ key: string; reason: 'pointer' | 'keyboard' }>();\n\n /* ── The axes ────────────────────────────────────────────────────────── */\n\n private readonly defaults = injectTreeDefaults();\n\n readonly size = input<TreeSize>(this.defaults.size);\n readonly variant = input<TreeVariant>(this.defaults.variant);\n readonly structure = input<TreeStructure>(this.defaults.structure);\n readonly selectionMode = input<TreeSelectionMode>(this.defaults.selectionMode);\n readonly selectionBehavior = input<TreeSelectionBehavior>(this.defaults.selectionBehavior);\n readonly selectionIndicator = input<TreeSelectionIndicator>(this.defaults.selectionIndicator);\n readonly selectionCascade = input<TreeSelectionCascade>(this.defaults.selectionCascade);\n readonly expandOn = input<TreeExpandOn>(this.defaults.expandOn);\n readonly focusMode = input<TreeFocusMode>(this.defaults.focusMode);\n readonly guides = input(this.defaults.guides, { transform: booleanAttribute });\n readonly loop = input(this.defaults.loop, { transform: booleanAttribute });\n readonly typeahead = input(this.defaults.typeahead, { transform: booleanAttribute });\n readonly typeaheadTimeout = input(this.defaults.typeaheadTimeout, { transform: numberAttribute });\n readonly selectOnFocus = input(this.defaults.selectOnFocus, { transform: booleanAttribute });\n readonly navigateDisabled = input(this.defaults.navigateDisabled, {\n transform: booleanAttribute,\n });\n readonly disallowEmptySelection = input(this.defaults.disallowEmptySelection, {\n transform: booleanAttribute,\n });\n readonly disallowSelectAll = input(this.defaults.disallowSelectAll, {\n transform: booleanAttribute,\n });\n readonly pageSize = input(this.defaults.pageSize, { transform: numberAttribute });\n readonly virtual = input(this.defaults.virtual, { transform: booleanAttribute });\n readonly itemSize = input(this.defaults.itemSize, { transform: numberAttribute });\n readonly overscan = input(this.defaults.overscan, { transform: numberAttribute });\n\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly readOnly = input(false, { transform: booleanAttribute });\n readonly required = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n\n readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n readonly ariaLabelledBy = input<string | undefined>(undefined, { alias: 'aria-labelledby' });\n\n /* ── The hierarchy, when the tree was handed one ─────────────────────── */\n\n readonly nodes = input<readonly unknown[] | undefined>(undefined);\n readonly getKey = input<((node: never) => string) | undefined>(undefined);\n readonly getLabel = input<((node: never) => string) | undefined>(undefined);\n readonly getChildren = input<((node: never) => readonly unknown[] | undefined) | undefined>(\n undefined,\n );\n readonly getLevel = input<((node: never) => number) | undefined>(undefined);\n readonly hasChildren = input<((node: never) => boolean) | undefined>(undefined);\n readonly getChildrenCount = input<((node: never) => number | undefined) | undefined>(undefined);\n readonly isNodeDisabled = input<((node: never) => boolean) | undefined>(undefined);\n readonly isNodeLoading = input<((node: never) => boolean) | undefined>(undefined);\n /**\n * A query the tree filters by. The consumer owns the string and the control\n * it is typed into; the tree keeps the ancestors of every hit.\n */\n readonly query = input<string | undefined>(undefined);\n\n /** The row's content, re-rendered per node rather than projected once. */\n protected readonly nodeContent = contentChild<TemplateRef<unknown>>('slTreeNodeContent');\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly ids = inject(SlTreeIdFactory);\n private readonly base = this.ids.next();\n private readonly typeaheadHandle: TypeaheadHandle = createTypeahead({\n timeout: this.defaults.typeaheadTimeout,\n });\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n destroyRef.onDestroy(() => this.typeaheadHandle.destroy());\n\n /**\n * The viewport is measured as soon as there is one, and again whenever it\n * changes size — not only when the reader scrolls.\n *\n * Measuring on `scroll` alone left the window with a viewport of nought\n * until the first scroll, and a window of nought renders one row: a tree of\n * four thousand showed its first name and nothing else until the reader\n * nudged the wheel, at which point the rest appeared at once. It is the\n * kind of defect that only exists on the first paint, which is exactly\n * where a reader meets it.\n */\n afterNextRender(() => this.measure());\n\n const root = this.host.nativeElement;\n if (typeof ResizeObserver !== 'undefined') {\n const observer = new ResizeObserver(() => this.measure());\n observer.observe(root);\n destroyRef.onDestroy(() => observer.disconnect());\n }\n }\n\n private measure() {\n const root = this.host.nativeElement;\n this.viewportSize.set(root.clientHeight);\n this.scrollOffset.set(root.scrollTop);\n }\n\n /* ── What the axes resolve to ────────────────────────────────────────── */\n\n readonly selection = computed(() => this.selectionMode());\n readonly treeDisabled = computed(() => this.disabled() || this.formDisabled());\n readonly showGuides = computed(() => this.guides());\n readonly expandOnRow = computed(() => this.expandOn());\n\n /**\n * `auto` reads the mode beside it: a box for a set the reader ticks, a\n * highlight for the one thing they chose, and neither when nothing is\n * selectable. The pattern's own note recommends exactly this convention.\n */\n readonly indicatorMode = computed<Exclude<TreeSelectionIndicator, 'auto'>>(() => {\n const stated = this.selectionIndicator();\n if (stated !== 'auto') return stated;\n if (this.selection() === 'multiple') return 'checkbox';\n return this.selection() === 'single' ? 'highlight' : 'none';\n });\n\n /**\n * The flat shape is the windowed one, and it is the handed collection's\n * alone: a slice of rows cannot preserve nesting, and a node written in a\n * template cannot render its children as its own siblings.\n */\n protected readonly structureMode = computed<Exclude<TreeStructure, 'auto'>>(() => {\n if (this.collection() === undefined) return 'nested';\n const stated = this.structure();\n if (stated !== 'auto') return stated;\n return this.virtual() ? 'flat' : 'nested';\n });\n\n protected readonly mode = computed<'roving' | 'activedescendant'>(() => {\n const stated = this.focusMode();\n if (stated !== 'auto') return stated;\n return this.virtual() && this.collection() !== undefined ? 'activedescendant' : 'roving';\n });\n\n private readonly collection = computed<TreeCollection<unknown> | undefined>(() => {\n const held = this.nodes();\n const key = this.getKey();\n if (held === undefined || key === undefined) return undefined;\n const level = this.getLevel();\n return createTreeCollection<unknown>({\n ...(level === undefined ? { roots: held } : { items: held, getLevel: level as never }),\n getKey: key as never,\n ...(this.getLabel() === undefined ? {} : { getLabel: this.getLabel() as never }),\n ...(this.getChildren() === undefined ? {} : { getChildren: this.getChildren() as never }),\n ...(this.hasChildren() === undefined ? {} : { hasChildren: this.hasChildren() as never }),\n ...(this.getChildrenCount() === undefined\n ? {}\n : { getChildrenCount: this.getChildrenCount() as never }),\n ...(this.isNodeDisabled() === undefined\n ? {}\n : { isDisabled: this.isNodeDisabled() as never }),\n });\n });\n\n private readonly selected = computed(() => toKeys(this.value()));\n\n /* ── The filter ─────────────────────────────────────────────────────── */\n\n private readonly filtered = computed(() => {\n const held = this.collection();\n const query = this.query();\n if (held === undefined || query === undefined || query.trim() === '') return undefined;\n const filter = createFilter();\n const hits = new Set<string>();\n for (const node of held.nodes) if (filter.contains(node.label, query)) hits.add(node.key);\n const kept = new Set(hits);\n for (const key of hits) for (const ancestor of held.ancestorsOf(key)) kept.add(ancestor);\n return { hits, kept };\n });\n\n /* ── The window ─────────────────────────────────────────────────────── */\n\n private readonly viewportSize = signal(0);\n private readonly scrollOffset = signal(0);\n\n private readonly visible = computed<readonly TreeNodeData<unknown>[]>(() => {\n const held = this.collection();\n return held === undefined ? [] : held.visible(this.expandedKeys());\n });\n\n private readonly windowed = computed(() => this.virtual() && this.collection() !== undefined);\n\n private readonly slice = computed(() => {\n if (!this.windowed()) return undefined;\n const rows = this.visible();\n const activeIndex = rows.findIndex((node) => node.key === this.activeKey());\n const anchorIndex = rows.findIndex((node) => node.key === this.anchor);\n return virtualWindow({\n itemCount: rows.length,\n itemSize: this.itemSize(),\n overscan: this.overscan(),\n pinned: [activeIndex, anchorIndex].filter((index) => index !== -1),\n scrollOffset: this.scrollOffset(),\n viewportSize: this.viewportSize(),\n });\n });\n\n protected readonly canvasSize = computed(() => {\n const slice = this.slice();\n return slice === undefined ? null : `${slice.totalSize}px`;\n });\n\n protected readonly canvasOffset = computed(() => {\n const slice = this.slice();\n return slice === undefined ? null : `${slice.startOffset}px`;\n });\n\n protected onScroll() {\n this.measure();\n }\n\n /* ── The render plan ────────────────────────────────────────────────── */\n\n protected readonly plan = computed<PlanNode[]>(() => {\n const held = this.collection();\n if (held === undefined) return [];\n const label = (item: unknown) => {\n const read = this.getLabel();\n return read === undefined\n ? ((this.getKey() as never as (n: unknown) => string)(item) ?? '')\n : (read as never as (n: unknown) => string)(item);\n };\n const loading = this.isNodeLoading() as never as ((n: unknown) => boolean) | undefined;\n const filtered = this.filtered();\n const flat = this.structureMode() === 'flat';\n\n const entry = (node: TreeNodeData<unknown>, offset: number | undefined): PlanNode => ({\n key: node.key,\n item: node.item,\n label: label(node.item),\n level: node.level,\n disabled: node.disabled,\n branch: node.hasChildren,\n loading: loading?.(node.item) === true,\n match: filtered === undefined ? undefined : filtered.hits.has(node.key) ? 'hit' : 'ancestor',\n offset,\n children: [],\n });\n\n if (flat) {\n const rows = this.visible();\n const slice = this.slice();\n if (slice === undefined) return rows.map((node) => entry(node, undefined));\n const inside = rows\n .slice(slice.startIndex, slice.endIndex)\n .map((node) => entry(node, undefined));\n const pinned = [...slice.pinnedBefore, ...slice.pinnedAfter]\n .map((index) => ({ index, node: rows[index] }))\n .filter(\n (row): row is { index: number; node: TreeNodeData<unknown> } => row.node !== undefined,\n )\n .map((row) => entry(row.node, row.index * this.itemSize()));\n return [...pinned, ...inside];\n }\n\n const walk = (keys: readonly string[]): PlanNode[] =>\n keys\n .map((key) => held.nodeFor(key))\n .filter((node): node is TreeNodeData<unknown> => node !== undefined)\n .filter((node) => filtered === undefined || filtered.kept.has(node.key))\n .map((node) => {\n const row = entry(node, undefined);\n if (node.hasChildren && this.isExpanded(node.key)) row.children = walk(node.children);\n return row;\n });\n\n return walk(held.roots);\n });\n\n protected readonly holdsNothing = computed(() => {\n const held = this.collection();\n if (held === undefined) return false;\n const filtered = this.filtered();\n return held.nodes.length === 0 || (filtered !== undefined && filtered.kept.size === 0);\n });\n\n /* ── What every part reads ──────────────────────────────────────────── */\n\n private readonly positions = computed(() =>\n this.structureMode() === 'flat' ? this.collection() : undefined,\n );\n\n private readonly indeterminateSet = computed(() => {\n const held = this.collection();\n if (this.selectionCascade() !== 'descendants' || held === undefined) return new Set<string>();\n return new Set(indeterminateKeys(held, this.selected()));\n });\n\n isSelected(key: string) {\n return this.selected().includes(key);\n }\n\n /**\n * A branch the reader opened, or one a query is holding open.\n *\n * A filter that asked for the expansion instead would move the reader's own\n * set and have to put it back when the query emptied, and a reader who\n * cleared a search would find branches open that they never opened. Holding\n * the path open for as long as the query lasts keeps the set the reader owns\n * untouched, and keeps `aria-expanded` telling the truth about what is on\n * screen.\n */\n isExpanded(key: string) {\n if (this.expandedKeys().includes(key)) return true;\n const filtered = this.filtered();\n return filtered !== undefined && filtered.kept.has(key) && !filtered.hits.has(key);\n }\n\n isActive(key: string) {\n return this.activeKey() === key;\n }\n\n isIndeterminate(key: string) {\n return this.indeterminateSet().has(key);\n }\n\n holdsSelection(key: string) {\n const held = this.collection();\n if (held === undefined || this.isSelected(key)) return false;\n return held.descendantsOf(key).some((child) => this.isSelected(child));\n }\n\n nodeId(key: string) {\n return `${this.base}-node-${key}`;\n }\n\n labelId(key: string) {\n return `${this.base}-label-${key}`;\n }\n\n nodeTabIndex(key: string) {\n if (this.mode() === 'activedescendant') return null;\n if (this.activeKey() === null) return -1;\n return this.activeKey() === key ? 0 : -1;\n }\n\n levelOf(key: string) {\n const node = this.positions()?.nodeFor(key);\n return node === undefined ? null : node.level + 1;\n }\n\n setSizeOf(key: string) {\n return this.positions()?.nodeFor(key)?.setSize ?? null;\n }\n\n posInSetOf(key: string) {\n return this.positions()?.nodeFor(key)?.posInSet ?? null;\n }\n\n protected readonly activeDescendant = computed(() => {\n const key = this.activeKey();\n return this.mode() === 'activedescendant' && key !== null ? this.nodeId(key) : null;\n });\n\n protected readonly canvasTabIndex = computed(() =>\n this.mode() === 'activedescendant' || this.activeKey() === null ? 0 : -1,\n );\n\n /* ── The rows, read from the DOM ────────────────────────────────────── */\n\n private canvas(): HTMLElement | null {\n return this.host.nativeElement.querySelector(\"[data-part='canvas']\");\n }\n\n private readRows(): Row[] {\n const canvas = this.canvas();\n if (canvas === null) return [];\n return [...canvas.querySelectorAll<HTMLElement>(NODE_SELECTOR)].map((element) => ({\n key: element.dataset['key'] ?? '',\n depth: Number(element.dataset['depth'] ?? 0),\n branch: element.dataset['branch'] !== undefined,\n disabled: element.getAttribute('aria-disabled') === 'true',\n label:\n element.dataset['textValue'] ??\n element.querySelector(\"[data-part='label']\")?.textContent?.trim() ??\n '',\n element,\n }));\n }\n\n private parentOf(rows: readonly Row[], index: number) {\n const depth = rows[index]?.depth ?? 0;\n for (let step = index - 1; step >= 0; step -= 1) {\n if ((rows[step] as Row).depth < depth) return step;\n }\n return -1;\n }\n\n private renderedDescendants(rows: readonly Row[], index: number) {\n const depth = rows[index]?.depth ?? 0;\n const held: string[] = [];\n for (let step = index + 1; step < rows.length; step += 1) {\n const row = rows[step] as Row;\n if (row.depth <= depth) break;\n held.push(row.key);\n }\n return held;\n }\n\n /* ── Moving the three values ────────────────────────────────────────── */\n\n private anchor: string | undefined = undefined;\n\n private requestValue(\n keys: readonly string[],\n reason: TreeChangeRequest['reason'],\n source: unknown,\n ) {\n const outward = (held: readonly string[]): TreeValue =>\n this.selection() === 'multiple' ? held : (held[0] ?? null);\n let cancelled = false;\n const state = createControllable<readonly string[]>({\n initial: this.selected(),\n equals: same,\n onRequest: (request) => {\n const outwardRequest: TreeChangeRequest = {\n value: outward(request.value),\n previous: outward(request.previous),\n reason: request.reason,\n source: request.source,\n get cancelled() {\n return request.cancelled;\n },\n cancel: () => request.cancel(),\n };\n this.valueRequest.emit(outwardRequest);\n cancelled = request.cancelled;\n },\n });\n state.request(keys, reason, source);\n if (cancelled) return;\n this.value.set(outward(keys));\n this.onChange(outward(keys));\n this.onTouched();\n }\n\n private requestExpanded(\n keys: readonly string[],\n reason: TreeExpansionRequest['reason'],\n source: unknown,\n ) {\n let cancelled = false;\n const state = createControllable<readonly string[]>({\n initial: this.expandedKeys(),\n equals: same,\n onRequest: (request) => {\n this.expandedKeysRequest.emit(request);\n cancelled = request.cancelled;\n },\n });\n state.request(keys, reason, source);\n if (!cancelled) this.expandedKeys.set(keys);\n }\n\n private requestActive(key: string | null, reason: TreeActiveRequest['reason'], source: unknown) {\n let cancelled = false;\n const state = createControllable<string | null>({\n initial: this.activeKey(),\n onRequest: (request) => {\n this.activeKeyRequest.emit(request);\n cancelled = request.cancelled;\n },\n });\n state.request(key, reason, source);\n if (!cancelled) this.activeKey.set(key);\n }\n\n private setExpanded(\n key: string,\n open: boolean,\n reason: 'pointer' | 'keyboard' | 'programmatic',\n source: unknown,\n ) {\n const held = this.expandedKeys();\n if (held.includes(key) === open) return;\n const next = open ? [...held, key] : held.filter((candidate) => candidate !== key);\n\n /* Closing a branch that holds the active node moves the active node to the\n branch, and that request goes out first: a consumer that accepts one and\n refuses the other is left with a coherent pair, where the reverse order\n would strand the keyboard on an element the next render removes. */\n const active = this.activeKey();\n if (!open && active !== null && active !== key) {\n const rows = this.readRows();\n const index = rows.findIndex((row) => row.key === key);\n if (index !== -1 && this.renderedDescendants(rows, index).includes(active)) {\n this.requestActive(key, reason === 'programmatic' ? 'programmatic' : reason, source);\n }\n }\n this.requestExpanded(next, reason, source);\n }\n\n private applySelection(\n key: string,\n event: Event | undefined,\n intent: 'toggle' | 'replace' | 'range' | 'all' | 'clear',\n reason: 'pointer' | 'keyboard',\n ) {\n if (this.selection() === 'none' || this.readOnly()) return;\n const held = this.collection();\n const rows = this.readRows();\n\n if (\n this.selectionCascade() === 'descendants' &&\n held !== undefined &&\n (intent === 'toggle' || intent === 'replace')\n ) {\n const result = cascadeSelection({\n collection: held,\n selected: this.selected(),\n key,\n action: 'toggle',\n });\n if (result.changed) this.requestValue(result.selected, reason, event);\n return;\n }\n\n const result = nextSelection({\n action: intent,\n mode: this.selection(),\n behavior: this.selectionBehavior(),\n selected: this.selected(),\n keys: rows.filter((row) => !row.disabled).map((row) => row.key),\n key,\n anchor: this.anchor ?? key,\n disabled: (candidate) => rows.find((row) => row.key === candidate)?.disabled === true,\n disallowEmpty: this.disallowEmptySelection(),\n disallowSelectAll: this.disallowSelectAll(),\n });\n this.anchor = result.anchor;\n if (result.changed) this.requestValue(result.selected, reason, event);\n }\n\n /* ── The pointer ────────────────────────────────────────────────────── */\n\n press(key: string, event: MouseEvent) {\n if (this.treeDisabled()) return;\n const rows = this.readRows();\n const row = rows.find((candidate) => candidate.key === key);\n if (row === undefined || row.disabled) return;\n\n this.requestActive(key, 'pointer', event);\n if (row.branch && this.expandOn() === 'row') {\n this.setExpanded(key, !this.isExpanded(key), 'pointer', event);\n }\n if (this.selection() !== 'none') {\n const intent = event.shiftKey\n ? 'range'\n : event.ctrlKey || event.metaKey\n ? 'toggle'\n : this.selectionBehavior() === 'replace'\n ? 'replace'\n : 'toggle';\n this.applySelection(key, event, intent, 'pointer');\n }\n this.nodeActivate.emit({ key, reason: 'pointer' });\n }\n\n pressExpander(key: string, event: MouseEvent) {\n if (this.treeDisabled()) return;\n this.requestActive(key, 'pointer', event);\n this.setExpanded(key, !this.isExpanded(key), 'pointer', event);\n }\n\n pressIndicator(key: string, event: MouseEvent) {\n if (this.treeDisabled()) return;\n this.requestActive(key, 'pointer', event);\n this.applySelection(key, event, 'toggle', 'pointer');\n }\n\n /* ── The keyboard ───────────────────────────────────────────────────── */\n\n private moveTo(rows: readonly Row[], index: number, event: KeyboardEvent) {\n const row = rows[index];\n if (row === undefined) return;\n this.requestActive(row.key, 'keyboard', event);\n row.element.focus();\n if (this.selectOnFocus()) this.applySelection(row.key, event, 'replace', 'keyboard');\n }\n\n private move(rows: readonly Row[], intent: MoveIntent, event: KeyboardEvent) {\n const next = moveIndex({\n enabled: rows.map((row) => this.navigateDisabled() || !row.disabled),\n from: rows.findIndex((row) => row.key === this.activeKey()),\n intent,\n loop: this.loop(),\n page: this.pageSize(),\n });\n if (next !== -1) this.moveTo(rows, next, event);\n }\n\n protected onKeyDown(event: KeyboardEvent) {\n if (event.defaultPrevented || this.treeDisabled()) return;\n /* Arrow navigation stands down while focus is inside a control the reader\n is typing in, which is what makes an inline rename composable. */\n const target = event.target as HTMLElement;\n if (target.closest('input, textarea, [contenteditable=\"true\"]') !== null) return;\n\n const rows = this.readRows();\n if (rows.length === 0) return;\n const index = rows.findIndex((row) => row.key === this.activeKey());\n const row = index === -1 ? undefined : (rows[index] as Row);\n const canvas = this.canvas();\n const rtl = canvas !== null && getComputedStyle(canvas).direction === 'rtl';\n const forward = rtl ? 'ArrowLeft' : 'ArrowRight';\n const backward = rtl ? 'ArrowRight' : 'ArrowLeft';\n const take = () => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n take();\n const intent: MoveIntent = event.key === 'ArrowDown' ? 'next' : 'previous';\n if (event.shiftKey && this.selection() === 'multiple') {\n const next = moveIndex({\n enabled: rows.map((candidate) => this.navigateDisabled() || !candidate.disabled),\n from: index,\n intent,\n loop: this.loop(),\n });\n if (next !== -1) {\n this.moveTo(rows, next, event);\n this.applySelection((rows[next] as Row).key, event, 'toggle', 'keyboard');\n }\n return;\n }\n this.move(rows, intent, event);\n return;\n }\n\n if (event.key === 'Home' || event.key === 'End') {\n take();\n const edge = event.key === 'Home' ? 0 : rows.length - 1;\n if (event.ctrlKey && event.shiftKey && row !== undefined) {\n this.anchor = (rows[edge] as Row).key;\n this.applySelection(row.key, event, 'range', 'keyboard');\n return;\n }\n this.move(rows, event.key === 'Home' ? 'first' : 'last', event);\n return;\n }\n\n if (event.key === 'PageDown' || event.key === 'PageUp') {\n take();\n this.move(rows, event.key === 'PageDown' ? 'pageDown' : 'pageUp', event);\n return;\n }\n\n if (event.key === forward) {\n take();\n if (row === undefined || !row.branch) return;\n if (!this.isExpanded(row.key)) {\n this.setExpanded(row.key, true, 'keyboard', event);\n return;\n }\n if (index + 1 < rows.length && (rows[index + 1] as Row).depth > row.depth) {\n this.moveTo(rows, index + 1, event);\n }\n return;\n }\n\n if (event.key === backward) {\n take();\n if (row === undefined) return;\n if (row.branch && this.isExpanded(row.key)) {\n this.setExpanded(row.key, false, 'keyboard', event);\n return;\n }\n const parent = this.parentOf(rows, index);\n if (parent !== -1) this.moveTo(rows, parent, event);\n return;\n }\n\n if (event.key === 'Enter') {\n take();\n if (row === undefined) return;\n if (row.branch && this.expandOn() === 'row') {\n this.setExpanded(row.key, !this.isExpanded(row.key), 'keyboard', event);\n }\n if (this.selection() !== 'none') this.applySelection(row.key, event, 'replace', 'keyboard');\n this.nodeActivate.emit({ key: row.key, reason: 'keyboard' });\n return;\n }\n\n if (event.key === ' ') {\n take();\n if (row === undefined) return;\n this.applySelection(row.key, event, event.shiftKey ? 'range' : 'toggle', 'keyboard');\n return;\n }\n\n if ((event.key === 'a' || event.key === 'A') && (event.ctrlKey || event.metaKey)) {\n take();\n this.applySelection(row?.key ?? '', event, 'all', 'keyboard');\n return;\n }\n\n if (event.key === '*') {\n take();\n if (row === undefined) return;\n const parent = this.parentOf(rows, index);\n const siblings = rows\n .filter(\n (candidate, step) =>\n candidate.depth === row.depth && this.parentOf(rows, step) === parent,\n )\n .filter((candidate) => candidate.branch)\n .map((candidate) => candidate.key);\n const next = [...new Set([...this.expandedKeys(), ...siblings])];\n if (!same(next, this.expandedKeys())) this.requestExpanded(next, 'keyboard', event);\n return;\n }\n\n if (!this.typeahead() || !isPrintable(event.key) || event.ctrlKey || event.metaKey) return;\n const match = this.typeaheadHandle.match(\n event.key,\n rows.map((candidate) => candidate.label),\n index,\n );\n if (match === -1) return;\n take();\n this.moveTo(rows, match, event);\n }\n\n protected onFocusIn(event: FocusEvent) {\n if (event.target !== this.canvas() || this.mode() === 'activedescendant') return;\n const rows = this.readRows();\n /* The pattern: the selected node when there is one, otherwise the first. */\n const wanted =\n rows.find((row) => this.isSelected(row.key) && !row.disabled) ??\n rows.find((row) => !row.disabled);\n if (wanted === undefined) return;\n this.requestActive(wanted.key, 'keyboard', event);\n wanted.element.focus();\n }\n\n /* ── The imperative surface ─────────────────────────────────────────── */\n\n focus() {\n const rows = this.readRows();\n const wanted = rows.find((row) => row.key === this.activeKey()) ?? rows[0];\n (wanted?.element ?? this.canvas())?.focus();\n }\n\n expand(key: string) {\n const held = this.collection();\n const path = held === undefined ? [] : held.ancestorsOf(key);\n const next = [...new Set([...this.expandedKeys(), ...path, key])];\n if (!same(next, this.expandedKeys())) this.requestExpanded(next, 'programmatic', undefined);\n }\n\n collapse(key: string) {\n this.setExpanded(key, false, 'programmatic', undefined);\n }\n\n expandAll() {\n const held = this.collection();\n if (held === undefined) return;\n this.requestExpanded(held.branchKeys, 'programmatic', undefined);\n }\n\n collapseAll() {\n this.requestExpanded([], 'programmatic', undefined);\n }\n\n scrollToKey(key: string, align: TreeAlignment = 'nearest') {\n this.expand(key);\n const row = this.readRows().find((candidate) => candidate.key === key);\n row?.element.scrollIntoView({ block: align === 'nearest' ? 'nearest' : align });\n }\n\n /* ── Reactive Forms ─────────────────────────────────────────────────── */\n\n private readonly formDisabled = signal(false);\n private onChange: (value: TreeValue) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: TreeValue) {\n this.value.set(value ?? null);\n }\n\n registerOnChange(fn: (value: TreeValue) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(state: boolean) {\n this.formDisabled.set(state);\n }\n\n /**\n * The family owns validity only for `required`, which is the one rule it can\n * decide from the value alone: everything else about a hierarchy is the\n * consumer's own.\n */\n validate(control: AbstractControl): ValidationErrors | null {\n if (!this.required()) return null;\n return toKeys(control.value as TreeValue).length === 0 ? { required: true } : null;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;AA0EA;;;;;;AAMG;AACH,MAAM,QAAQ,GAAiB;AAC7B,IAAA,sBAAsB,EAAE,KAAK;AAC7B,IAAA,iBAAiB,EAAE,KAAK;AACxB,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,SAAS,EAAE,MAAM;AACjB,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,QAAQ,EAAE,EAAE;AACZ,IAAA,IAAI,EAAE,KAAK;AACX,IAAA,gBAAgB,EAAE,KAAK;AACvB,IAAA,QAAQ,EAAE,CAAC;AACX,IAAA,QAAQ,EAAE,EAAE;AACZ,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,iBAAiB,EAAE,QAAQ;AAC3B,IAAA,gBAAgB,EAAE,MAAM;AACxB,IAAA,kBAAkB,EAAE,MAAM;AAC1B,IAAA,aAAa,EAAE,QAAQ;AACvB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,SAAS,EAAE,MAAM;AACjB,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,gBAAgB,EAAE,GAAG;AACrB,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,OAAO,EAAE,KAAK;CACf;MAEY,aAAa,GAAG,IAAI,cAAc,CAAe,uBAAuB,EAAE;AACrF,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM,QAAQ;AACxB,CAAA;AAED;;;;AAIG;AACG,SAAU,mBAAmB,CAAC,QAA+B,EAAA;IACjE,OAAO;AACL,QAAA,OAAO,EAAE,aAAa;AACtB,QAAA,UAAU,EAAE,OAAqB,EAAE,GAAG,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC;KAC/D;AACH;AAEA;SACgB,kBAAkB,GAAA;AAChC,IAAA,OAAO,MAAM,CAAC,aAAa,CAAC;AAC9B;AAEA;;;;;AAKG;MAEU,eAAe,CAAA;IAClB,KAAK,GAAG,CAAC;IAEjB,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC;AACf,QAAA,OAAO,CAAA,aAAA,EAAgB,IAAI,CAAC,KAAK,EAAE;IACrC;uGANW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAf,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cADF,MAAM,EAAA,CAAA;;2FACnB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACjIlC;;;;;;;AAOG;MACmB,aAAa,CAAA;AAqClC;;AC7BD;AACO,MAAM,aAAa,GAAG,oBAAoB;AAEjD;;;;;;;;;;;;AAYG;MAmFU,UAAU,CAAA;;IAEZ,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAU;;IAEhC,KAAK,GAAG,KAAK,CAAC,EAAE;8EAAC;AAC1B;;;AAGG;IACM,WAAW,GAAG,KAAK,CAAC,KAAK,mFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;IAE3D,OAAO,GAAG,KAAK,CAAC,KAAK,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;AAEvD,IAAA,QAAQ,GAAG,KAAK,CAAoD,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,CAAA,EACpF,SAAS,EAAE,CAAC,KAAK,MAAM,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,GACjF;AACF;;;AAGG;IACM,SAAS,GAAG,KAAK,CAAqB,SAAS;kFAAC;;IAEhD,KAAK,GAAG,KAAK,CAAiC,SAAS;8EAAC;AACjE;;;;;AAKG;IACM,MAAM,GAAG,KAAK,CAAC,KAAK,8EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;;AAEtD,IAAA,MAAM,GAAG,KAAK,CAAkD,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,CAAA,EAChF,SAAS,EAAE,CAAC,KAAK,MAAM,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,GAChF;AACF;;;;;AAKG;AACM,IAAA,KAAK,GAAG,KAAK,CAAkD,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,OAAA,EAAA,8BAAA,EAAA,CAAA,EAC/E,SAAS,EAAE,CAAC,KAAK,MAAM,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,GAChF;AAEiB,IAAA,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC;AAC/C;;;;;AAKG;AACc,IAAA,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC/D,IAAA,IAAI,GAAG,MAAM,CAA0B,UAAU,CAAC;AACnE;;;;;;AAMG;IACc,aAAa,GAAG,MAAM,CAAgB,IAAI;sFAAC;AAE5D;;;;;AAKG;IACc,UAAU,GAAG,eAAe,CAAC,UAAU,kFAAI,WAAW,EAAE,IAAI,EAAA,CAAG;;AAG7D,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,CAAC;+EAAC;AAC9F;;;;AAIG;AACM,IAAA,KAAK,GAAmB,QAAQ,CACvC,MACE,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,CAAC,MAAM,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;8EAC/F;IACkB,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;iFAAC;AAC9E,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;iFAAC;AAC7D,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;sFAAC;IACvE,cAAc,GAAG,QAAQ,CAC1C,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;uFACjE;AACkB,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gFAAC;AAC1D,IAAA,EAAE,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;2EAAC;AACnD,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gFAAC;IACzD,gBAAgB,GAAG,QAAQ,CAC5C,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI;yFAC/E;AACkB,IAAA,YAAY,GAAG,QAAQ,CAAC,MACzC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,GAAG,MAAM,GAAG,OAAO,IAAI,IAAI;qFAC5D;AACgB,IAAA,MAAM,GAAG,QAAQ,CAAC,MACjC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,MAAM,GAAG,OAAO;+EAC7E;IACkB,YAAY,GAAG,QAAQ,CAAC,MACzC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE;qFAChE;IACkB,WAAW,GAAG,QAAQ,CAAC,MACxC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI;oFAChE;AACD;;;;AAIG;AACgB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;kFAAC;AAC3D,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gFAAC;AAC3D,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;iFAAC;AAC7D,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;iFAAC;AAElF,IAAA,WAAA,GAAA;AACE;;;;;AAKG;QACH,MAAM,OAAO,GAAG,gBAAgB,CAAC;YAC/B,IAAI,EAAE,MAAK;AACT,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa;gBACvC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC;gBAChD,IAAI,IAAI,KAAK,IAAI;oBAAE;gBACnB,IAAI,KAAK,GAAG,CAAC;gBACb,IAAI,IAAI,GAAG,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,aAAa,CAAC;gBACxD,OAAO,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;oBAClC,KAAK,IAAI,CAAC;oBACV,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,aAAa,CAAC;gBACnD;AACA,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;gBAC7B,OAAO,CAAC,OAAO,EAAE;YACnB,CAAC;AACF,SAAA,CAAC;IACJ;AAEU,IAAA,UAAU,CAAC,KAAiB,EAAA;QACpC,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAAE;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC;IACtC;AAEU,IAAA,eAAe,CAAC,KAAiB,EAAA;QACzC,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAAE;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC;IAC9C;AAEU,IAAA,gBAAgB,CAAC,KAAiB,EAAA;QAC1C,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAAE;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC;IAC/C;uGA1JW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,eAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,4BAAA,EAAA,SAAA,EAAA,oCAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,2BAAA,EAAA,8BAAA,EAAA,yBAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,gCAAA,EAAA,mBAAA,EAAA,uBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,oCAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,YAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAoEyB,UAAU,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA/I9C,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBA4CO,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA/CP,OAAO,oFAAE,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FA8Ed,UAAU,EAAA,UAAA,EAAA,CAAA;kBAlFtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;oBAC1B,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CO,kBAAA,CAAA;AACjB,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,iBAAiB,EAAE,SAAS;AAC5B,wBAAA,mBAAmB,EAAE,SAAS;AAC9B,wBAAA,8BAA8B,EAAE,SAAS;AACzC,wBAAA,sCAAsC,EAAE,UAAU;AAClD,wBAAA,wBAAwB,EAAE,qBAAqB;AAC/C,wBAAA,oBAAoB,EAAE,sBAAsB;AAC5C,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,6BAA6B,EAAE,8BAA8B;AAC7D,wBAAA,2BAA2B,EAAE,6BAA6B;AAC1D,wBAAA,qBAAqB,EAAE,uBAAuB;AAC9C,wBAAA,sBAAsB,EAAE,gCAAgC;AACxD,wBAAA,qBAAqB,EAAE,uBAAuB;AAC9C,wBAAA,mBAAmB,EAAE,iBAAiB;AACtC,wBAAA,oBAAoB,EAAE,sBAAsB;AAC5C,wBAAA,wBAAwB,EAAE,WAAW;AACrC,wBAAA,sBAAsB,EAAE,gBAAgB;AACxC,wBAAA,sBAAsB,EAAE,gBAAgB;AACxC,wBAAA,qBAAqB,EAAE,eAAe;AACtC,wBAAA,sBAAsB,EAAE,oCAAoC;AAC5D,wBAAA,mBAAmB,EAAE,aAAa;AAClC,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,sBAAsB,EAAE,YAAY;AACpC,wBAAA,iBAAiB,EAAE,YAAY;AAChC,qBAAA;AACF,iBAAA;AAqE+C,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,UAAU,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;AAyFjF;;;;;;;AAOG;MAUU,WAAW,CAAA;;IAEb,IAAI,GAAG,KAAK,CAAC,KAAK,4EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;uGAFlD,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBATvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,kBAAkB,EAAE,wBAAwB;AAC7C,qBAAA;AACF,iBAAA;;AAMD;MAMa,UAAU,CAAA;uGAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,MAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBALtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;oBAChB,IAAI,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE;AACrD,iBAAA;;AAGD;MAEa,WAAW,CAAA;uGAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,IAAI,EAAE;;AAG1D;MAMa,iBAAiB,CAAA;uGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE;AACrC,iBAAA;;AAGD;MAEa,UAAU,CAAA;uGAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE;;AAGxF;MAEa,aAAa,CAAA;uGAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,SAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE;;AAG9F;MAEa,WAAW,CAAA;uGAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,OAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE;;;ACxN1F,SAAS,MAAM,CAAC,KAA4B,EAAA;AAC1C,IAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;AAAE,QAAA,OAAO,EAAE;AACpD,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK;AACpD;AAEA,SAAS,IAAI,CAAC,CAAoB,EAAE,CAAoB,EAAA;IACtD,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;AAC3E;AAEA;;;;;;;;;;;;;;;;;;;;;AAqBG;MAiGU,MAAM,CAAA;;IAGR,KAAK,GAAG,KAAK,CAAY,IAAI;8EAAC;IAC9B,YAAY,GAAG,KAAK,CAAoB,EAAE;qFAAC;IAC3C,SAAS,GAAG,KAAK,CAAgB,IAAI;kFAAC;;IAGtC,YAAY,GAAG,MAAM,EAAqB;IAC1C,mBAAmB,GAAG,MAAM,EAAwB;IACpD,gBAAgB,GAAG,MAAM,EAAqB;;IAE9C,YAAY,GAAG,MAAM,EAAmD;;IAIhE,QAAQ,GAAG,kBAAkB,EAAE;AAEvC,IAAA,IAAI,GAAG,KAAK,CAAW,IAAI,CAAC,QAAQ,CAAC,IAAI;6EAAC;AAC1C,IAAA,OAAO,GAAG,KAAK,CAAc,IAAI,CAAC,QAAQ,CAAC,OAAO;gFAAC;AACnD,IAAA,SAAS,GAAG,KAAK,CAAgB,IAAI,CAAC,QAAQ,CAAC,SAAS;kFAAC;AACzD,IAAA,aAAa,GAAG,KAAK,CAAoB,IAAI,CAAC,QAAQ,CAAC,aAAa;sFAAC;AACrE,IAAA,iBAAiB,GAAG,KAAK,CAAwB,IAAI,CAAC,QAAQ,CAAC,iBAAiB;0FAAC;AACjF,IAAA,kBAAkB,GAAG,KAAK,CAAyB,IAAI,CAAC,QAAQ,CAAC,kBAAkB;2FAAC;AACpF,IAAA,gBAAgB,GAAG,KAAK,CAAuB,IAAI,CAAC,QAAQ,CAAC,gBAAgB;yFAAC;AAC9E,IAAA,QAAQ,GAAG,KAAK,CAAe,IAAI,CAAC,QAAQ,CAAC,QAAQ;iFAAC;AACtD,IAAA,SAAS,GAAG,KAAK,CAAgB,IAAI,CAAC,QAAQ,CAAC,SAAS;kFAAC;AACzD,IAAA,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,gBAAgB,GAAG;AACrE,IAAA,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,MAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,gBAAgB,GAAG;AACjE,IAAA,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,WAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,gBAAgB,GAAG;AAC3E,IAAA,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,eAAe,GAAG;AACxF,IAAA,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,gBAAgB,GAAG;AACnF,IAAA,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,8BAAA,EAAA,CAAA,EAC9D,SAAS,EAAE,gBAAgB,GAC3B;AACO,IAAA,sBAAsB,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,8BAAA,EAAA,CAAA,EAC1E,SAAS,EAAE,gBAAgB,GAC3B;AACO,IAAA,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,8BAAA,EAAA,CAAA,EAChE,SAAS,EAAE,gBAAgB,GAC3B;AACO,IAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,eAAe,GAAG;AACxE,IAAA,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,SAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,gBAAgB,GAAG;AACvE,IAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,eAAe,GAAG;AACxE,IAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,SAAS,EAAE,eAAe,GAAG;IAExE,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACxD,OAAO,GAAG,KAAK,CAAC,KAAK,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IACvD,OAAO,GAAG,KAAK,CAAC,KAAK,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAEvD,SAAS,GAAG,KAAK,CAAqB,SAAS,iFAAI,KAAK,EAAE,YAAY,EAAA,CAAG;IACzE,cAAc,GAAG,KAAK,CAAqB,SAAS,sFAAI,KAAK,EAAE,iBAAiB,EAAA,CAAG;;IAInF,KAAK,GAAG,KAAK,CAAiC,SAAS;8EAAC;IACxD,MAAM,GAAG,KAAK,CAAwC,SAAS;+EAAC;IAChE,QAAQ,GAAG,KAAK,CAAwC,SAAS;iFAAC;IAClE,WAAW,GAAG,KAAK,CAC1B,SAAS;oFACV;IACQ,QAAQ,GAAG,KAAK,CAAwC,SAAS;iFAAC;IAClE,WAAW,GAAG,KAAK,CAAyC,SAAS;oFAAC;IACtE,gBAAgB,GAAG,KAAK,CAAoD,SAAS;yFAAC;IACtF,cAAc,GAAG,KAAK,CAAyC,SAAS;uFAAC;IACzE,aAAa,GAAG,KAAK,CAAyC,SAAS;sFAAC;AACjF;;;AAGG;IACM,KAAK,GAAG,KAAK,CAAqB,SAAS;8EAAC;;IAGlC,WAAW,GAAG,YAAY,CAAuB,mBAAmB;oFAAC;AAEvE,IAAA,IAAI,GAAG,MAAM,CAA0B,UAAU,CAAC;AAClD,IAAA,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC;AAC7B,IAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;IACtB,eAAe,GAAoB,eAAe,CAAC;AAClE,QAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB;AACxC,KAAA,CAAC;AAEF,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACrC,QAAA,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;AAE1D;;;;;;;;;;AAUG;QACH,eAAe,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;AAErC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa;AACpC,QAAA,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE;AACzC,YAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;AACzD,YAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;YACtB,UAAU,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QACnD;IACF;IAEQ,OAAO,GAAA;AACb,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa;QACpC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;QACxC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;IACvC;;IAIS,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE;kFAAC;AAChD,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;qFAAC;IACrE,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE;mFAAC;IAC1C,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE;oFAAC;AAEtD;;;;AAIG;AACM,IAAA,aAAa,GAAG,QAAQ,CAA0C,MAAK;AAC9E,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,EAAE;QACxC,IAAI,MAAM,KAAK,MAAM;AAAE,YAAA,OAAO,MAAM;AACpC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,UAAU;AAAE,YAAA,OAAO,UAAU;AACtD,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,KAAK,QAAQ,GAAG,WAAW,GAAG,MAAM;IAC7D,CAAC;sFAAC;AAEF;;;;AAIG;AACgB,IAAA,aAAa,GAAG,QAAQ,CAAiC,MAAK;AAC/E,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,SAAS;AAAE,YAAA,OAAO,QAAQ;AACpD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;QAC/B,IAAI,MAAM,KAAK,MAAM;AAAE,YAAA,OAAO,MAAM;AACpC,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,QAAQ;IAC3C,CAAC;sFAAC;AAEiB,IAAA,IAAI,GAAG,QAAQ,CAAgC,MAAK;AACrE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;QAC/B,IAAI,MAAM,KAAK,MAAM;AAAE,YAAA,OAAO,MAAM;AACpC,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,SAAS,GAAG,kBAAkB,GAAG,QAAQ;IAC1F,CAAC;6EAAC;AAEe,IAAA,UAAU,GAAG,QAAQ,CAAsC,MAAK;AAC/E,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;AACzB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;AACzB,QAAA,IAAI,IAAI,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS;AAAE,YAAA,OAAO,SAAS;AAC7D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC7B,QAAA,OAAO,oBAAoB,CAAU;YACnC,IAAI,KAAK,KAAK,SAAS,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAc,EAAE,CAAC;AACtF,YAAA,MAAM,EAAE,GAAY;YACpB,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAW,EAAE,CAAC;YAChF,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAW,EAAE,CAAC;YACzF,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAW,EAAE,CAAC;AACzF,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK;AAC9B,kBAAE;kBACA,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAW,EAAE,CAAC;AAC3D,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE,KAAK;AAC5B,kBAAE;kBACA,EAAE,UAAU,EAAE,IAAI,CAAC,cAAc,EAAW,EAAE,CAAC;AACpD,SAAA,CAAC;IACJ,CAAC;mFAAC;AAEe,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;iFAAC;;AAI/C,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACxC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;AAC9B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;AAAE,YAAA,OAAO,SAAS;AACtF,QAAA,MAAM,MAAM,GAAG,YAAY,EAAE;AAC7B,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU;AAC9B,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;AAAE,gBAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;AACzF,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC;QAC1B,KAAK,MAAM,GAAG,IAAI,IAAI;YAAE,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AAAE,gBAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;AACxF,QAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;IACvB,CAAC;iFAAC;;IAIe,YAAY,GAAG,MAAM,CAAC,CAAC;qFAAC;IACxB,YAAY,GAAG,MAAM,CAAC,CAAC;qFAAC;AAExB,IAAA,OAAO,GAAG,QAAQ,CAAmC,MAAK;AACzE,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;AAC9B,QAAA,OAAO,IAAI,KAAK,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IACpE,CAAC;gFAAC;AAEe,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,SAAS;iFAAC;AAE5E,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,SAAS;AACtC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;AAC3E,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC;AACtE,QAAA,OAAO,aAAa,CAAC;YACnB,SAAS,EAAE,IAAI,CAAC,MAAM;AACtB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,MAAM,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC;AAClE,YAAA,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;AACjC,YAAA,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;AAClC,SAAA,CAAC;IACJ,CAAC;8EAAC;AAEiB,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,OAAO,KAAK,KAAK,SAAS,GAAG,IAAI,GAAG,CAAA,EAAG,KAAK,CAAC,SAAS,IAAI;IAC5D,CAAC;mFAAC;AAEiB,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC9C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,OAAO,KAAK,KAAK,SAAS,GAAG,IAAI,GAAG,CAAA,EAAG,KAAK,CAAC,WAAW,IAAI;IAC9D,CAAC;qFAAC;IAEQ,QAAQ,GAAA;QAChB,IAAI,CAAC,OAAO,EAAE;IAChB;;AAImB,IAAA,IAAI,GAAG,QAAQ,CAAa,MAAK;AAClD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;QAC9B,IAAI,IAAI,KAAK,SAAS;AAAE,YAAA,OAAO,EAAE;AACjC,QAAA,MAAM,KAAK,GAAG,CAAC,IAAa,KAAI;AAC9B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;YAC5B,OAAO,IAAI,KAAK;mBACV,IAAI,CAAC,MAAM,EAAsC,CAAC,IAAI,CAAC,IAAI,EAAE;AACjE,kBAAG,IAAwC,CAAC,IAAI,CAAC;AACrD,QAAA,CAAC;AACD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAoD;AACtF,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,KAAK,MAAM;QAE5C,MAAM,KAAK,GAAG,CAAC,IAA2B,EAAE,MAA0B,MAAgB;YACpF,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,WAAW;YACxB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI;AACtC,YAAA,KAAK,EAAE,QAAQ,KAAK,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,UAAU;YAC5F,MAAM;AACN,YAAA,QAAQ,EAAE,EAAE;AACb,SAAA,CAAC;QAEF,IAAI,IAAI,EAAE;AACR,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAC3B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;YAC1B,IAAI,KAAK,KAAK,SAAS;AAAE,gBAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC1E,MAAM,MAAM,GAAG;iBACZ,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ;AACtC,iBAAA,GAAG,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACxC,YAAA,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC,WAAW;AACxD,iBAAA,GAAG,CAAC,CAAC,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;iBAC7C,MAAM,CACL,CAAC,GAAG,KAA4D,GAAG,CAAC,IAAI,KAAK,SAAS;iBAEvF,GAAG,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7D,YAAA,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC;QAC/B;AAEA,QAAA,MAAM,IAAI,GAAG,CAAC,IAAuB,KACnC;AACG,aAAA,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;aAC9B,MAAM,CAAC,CAAC,IAAI,KAAoC,IAAI,KAAK,SAAS;aAClE,MAAM,CAAC,CAAC,IAAI,KAAK,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;AACtE,aAAA,GAAG,CAAC,CAAC,IAAI,KAAI;YACZ,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC;YAClC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACrF,YAAA,OAAO,GAAG;AACZ,QAAA,CAAC,CAAC;AAEN,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACzB,CAAC;6EAAC;AAEiB,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC9C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;QAC9B,IAAI,IAAI,KAAK,SAAS;AAAE,YAAA,OAAO,KAAK;AACpC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAChC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,KAAK,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC;IACxF,CAAC;qFAAC;;IAIe,SAAS,GAAG,QAAQ,CAAC,MACpC,IAAI,CAAC,aAAa,EAAE,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,SAAS;kFAChE;AAEgB,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAChD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;QAC9B,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,aAAa,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,GAAG,EAAU;AAC7F,QAAA,OAAO,IAAI,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;yFAAC;AAEF,IAAA,UAAU,CAAC,GAAW,EAAA;QACpB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC;IACtC;AAEA;;;;;;;;;AASG;AACH,IAAA,UAAU,CAAC,GAAW,EAAA;QACpB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,IAAI;AAClD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAChC,OAAO,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACpF;AAEA,IAAA,QAAQ,CAAC,GAAW,EAAA;AAClB,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG;IACjC;AAEA,IAAA,eAAe,CAAC,GAAW,EAAA;QACzB,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;IACzC;AAEA,IAAA,cAAc,CAAC,GAAW,EAAA;AACxB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;QAC9B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,KAAK;QAC5D,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACxE;AAEA,IAAA,MAAM,CAAC,GAAW,EAAA;AAChB,QAAA,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA,MAAA,EAAS,GAAG,EAAE;IACnC;AAEA,IAAA,OAAO,CAAC,GAAW,EAAA;AACjB,QAAA,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA,OAAA,EAAU,GAAG,EAAE;IACpC;AAEA,IAAA,YAAY,CAAC,GAAW,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,kBAAkB;AAAE,YAAA,OAAO,IAAI;AACnD,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI;YAAE,OAAO,CAAC,CAAC;AACxC,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1C;AAEA,IAAA,OAAO,CAAC,GAAW,EAAA;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC;AAC3C,QAAA,OAAO,IAAI,KAAK,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC;IACnD;AAEA,IAAA,SAAS,CAAC,GAAW,EAAA;AACnB,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI;IACxD;AAEA,IAAA,UAAU,CAAC,GAAW,EAAA;AACpB,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,QAAQ,IAAI,IAAI;IACzD;AAEmB,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAClD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE;QAC5B,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,kBAAkB,IAAI,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI;IACrF,CAAC;yFAAC;IAEiB,cAAc,GAAG,QAAQ,CAAC,MAC3C,IAAI,CAAC,IAAI,EAAE,KAAK,kBAAkB,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;uFACzE;;IAIO,MAAM,GAAA;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,sBAAsB,CAAC;IACtE;IAEQ,QAAQ,GAAA;AACd,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QAC5B,IAAI,MAAM,KAAK,IAAI;AAAE,YAAA,OAAO,EAAE;AAC9B,QAAA,OAAO,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAc,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,MAAM;YAChF,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE;YACjC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,SAAS;YAC/C,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,MAAM;AAC1D,YAAA,KAAK,EACH,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;gBAC5B,OAAO,CAAC,aAAa,CAAC,qBAAqB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE;gBACjE,EAAE;YACJ,OAAO;AACR,SAAA,CAAC,CAAC;IACL;IAEQ,QAAQ,CAAC,IAAoB,EAAE,KAAa,EAAA;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC;AACrC,QAAA,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE;AAC/C,YAAA,IAAK,IAAI,CAAC,IAAI,CAAS,CAAC,KAAK,GAAG,KAAK;AAAE,gBAAA,OAAO,IAAI;QACpD;QACA,OAAO,CAAC,CAAC;IACX;IAEQ,mBAAmB,CAAC,IAAoB,EAAE,KAAa,EAAA;QAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC;QACrC,MAAM,IAAI,GAAa,EAAE;AACzB,QAAA,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,EAAE;AACxD,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAQ;AAC7B,YAAA,IAAI,GAAG,CAAC,KAAK,IAAI,KAAK;gBAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QACpB;AACA,QAAA,OAAO,IAAI;IACb;;IAIQ,MAAM,GAAuB,SAAS;AAEtC,IAAA,YAAY,CAClB,IAAuB,EACvB,MAAmC,EACnC,MAAe,EAAA;AAEf,QAAA,MAAM,OAAO,GAAG,CAAC,IAAuB,KACtC,IAAI,CAAC,SAAS,EAAE,KAAK,UAAU,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAC5D,IAAI,SAAS,GAAG,KAAK;QACrB,MAAM,KAAK,GAAG,kBAAkB,CAAoB;AAClD,YAAA,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE;AACxB,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,SAAS,EAAE,CAAC,OAAO,KAAI;AACrB,gBAAA,MAAM,cAAc,GAAsB;AACxC,oBAAA,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;AAC7B,oBAAA,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;oBACnC,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,MAAM,EAAE,OAAO,CAAC,MAAM;AACtB,oBAAA,IAAI,SAAS,GAAA;wBACX,OAAO,OAAO,CAAC,SAAS;oBAC1B,CAAC;AACD,oBAAA,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE;iBAC/B;AACD,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;AACtC,gBAAA,SAAS,GAAG,OAAO,CAAC,SAAS;YAC/B,CAAC;AACF,SAAA,CAAC;QACF,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;AACnC,QAAA,IAAI,SAAS;YAAE;QACf,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,SAAS,EAAE;IAClB;AAEQ,IAAA,eAAe,CACrB,IAAuB,EACvB,MAAsC,EACtC,MAAe,EAAA;QAEf,IAAI,SAAS,GAAG,KAAK;QACrB,MAAM,KAAK,GAAG,kBAAkB,CAAoB;AAClD,YAAA,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE;AAC5B,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,SAAS,EAAE,CAAC,OAAO,KAAI;AACrB,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;AACtC,gBAAA,SAAS,GAAG,OAAO,CAAC,SAAS;YAC/B,CAAC;AACF,SAAA,CAAC;QACF,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;AACnC,QAAA,IAAI,CAAC,SAAS;AAAE,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;IAC7C;AAEQ,IAAA,aAAa,CAAC,GAAkB,EAAE,MAAmC,EAAE,MAAe,EAAA;QAC5F,IAAI,SAAS,GAAG,KAAK;QACrB,MAAM,KAAK,GAAG,kBAAkB,CAAgB;AAC9C,YAAA,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE;AACzB,YAAA,SAAS,EAAE,CAAC,OAAO,KAAI;AACrB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;AACnC,gBAAA,SAAS,GAAG,OAAO,CAAC,SAAS;YAC/B,CAAC;AACF,SAAA,CAAC;QACF,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC;AAClC,QAAA,IAAI,CAAC,SAAS;AAAE,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;IACzC;AAEQ,IAAA,WAAW,CACjB,GAAW,EACX,IAAa,EACb,MAA+C,EAC/C,MAAe,EAAA;AAEf,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;AAChC,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI;YAAE;AACjC,QAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,SAAS,KAAK,GAAG,CAAC;AAElF;;;AAGsE;AACtE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;QAC/B,IAAI,CAAC,IAAI,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,GAAG,EAAE;AAC9C,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC;AACtD,YAAA,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC1E,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,KAAK,cAAc,GAAG,cAAc,GAAG,MAAM,EAAE,MAAM,CAAC;YACtF;QACF;QACA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;IAC5C;AAEQ,IAAA,cAAc,CACpB,GAAW,EACX,KAAwB,EACxB,MAAwD,EACxD,MAA8B,EAAA;QAE9B,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AACpD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;AAC9B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AAE5B,QAAA,IACE,IAAI,CAAC,gBAAgB,EAAE,KAAK,aAAa;AACzC,YAAA,IAAI,KAAK,SAAS;aACjB,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,SAAS,CAAC,EAC7C;YACA,MAAM,MAAM,GAAG,gBAAgB,CAAC;AAC9B,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;gBACzB,GAAG;AACH,gBAAA,MAAM,EAAE,QAAQ;AACjB,aAAA,CAAC;YACF,IAAI,MAAM,CAAC,OAAO;gBAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC;YACrE;QACF;QAEA,MAAM,MAAM,GAAG,aAAa,CAAC;AAC3B,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE;AACtB,YAAA,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE;AAClC,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;YACzB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC;YAC/D,GAAG;AACH,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,GAAG;YAC1B,QAAQ,EAAE,CAAC,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,EAAE,QAAQ,KAAK,IAAI;AACrF,YAAA,aAAa,EAAE,IAAI,CAAC,sBAAsB,EAAE;AAC5C,YAAA,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE;AAC5C,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;QAC3B,IAAI,MAAM,CAAC,OAAO;YAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC;IACvE;;IAIA,KAAK,CAAC,GAAW,EAAE,KAAiB,EAAA;QAClC,IAAI,IAAI,CAAC,YAAY,EAAE;YAAE;AACzB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC;AAC3D,QAAA,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ;YAAE;QAEvC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC;QACzC,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK,EAAE;AAC3C,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC;QAChE;AACA,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,MAAM,EAAE;AAC/B,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC;AACnB,kBAAE;AACF,kBAAE,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC;AACvB,sBAAE;AACF,sBAAE,IAAI,CAAC,iBAAiB,EAAE,KAAK;AAC7B,0BAAE;0BACA,QAAQ;YAChB,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC;QACpD;AACA,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACpD;IAEA,aAAa,CAAC,GAAW,EAAE,KAAiB,EAAA;QAC1C,IAAI,IAAI,CAAC,YAAY,EAAE;YAAE;QACzB,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC;AACzC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC;IAChE;IAEA,cAAc,CAAC,GAAW,EAAE,KAAiB,EAAA;QAC3C,IAAI,IAAI,CAAC,YAAY,EAAE;YAAE;QACzB,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC;QACzC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC;IACtD;;AAIQ,IAAA,MAAM,CAAC,IAAoB,EAAE,KAAa,EAAE,KAAoB,EAAA;AACtE,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;QACvB,IAAI,GAAG,KAAK,SAAS;YAAE;QACvB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC;AAC9C,QAAA,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE;QACnB,IAAI,IAAI,CAAC,aAAa,EAAE;AAAE,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC;IACtF;AAEQ,IAAA,IAAI,CAAC,IAAoB,EAAE,MAAkB,EAAE,KAAoB,EAAA;QACzE,MAAM,IAAI,GAAG,SAAS,CAAC;AACrB,YAAA,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;AACpE,YAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3D,MAAM;AACN,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;AACtB,SAAA,CAAC;QACF,IAAI,IAAI,KAAK,CAAC,CAAC;YAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;IACjD;AAEU,IAAA,SAAS,CAAC,KAAoB,EAAA;AACtC,QAAA,IAAI,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,YAAY,EAAE;YAAE;AACnD;AACoE;AACpE,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,QAAA,IAAI,MAAM,CAAC,OAAO,CAAC,2CAA2C,CAAC,KAAK,IAAI;YAAE;AAE1E,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5B,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;AACnE,QAAA,MAAM,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC,GAAG,SAAS,GAAI,IAAI,CAAC,KAAK,CAAS;AAC3D,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,QAAA,MAAM,GAAG,GAAG,MAAM,KAAK,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,KAAK;QAC3E,MAAM,OAAO,GAAG,GAAG,GAAG,WAAW,GAAG,YAAY;QAChD,MAAM,QAAQ,GAAG,GAAG,GAAG,YAAY,GAAG,WAAW;QACjD,MAAM,IAAI,GAAG,MAAK;YAChB,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;AACzB,QAAA,CAAC;AAED,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;AACxD,YAAA,IAAI,EAAE;AACN,YAAA,MAAM,MAAM,GAAe,KAAK,CAAC,GAAG,KAAK,WAAW,GAAG,MAAM,GAAG,UAAU;YAC1E,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,UAAU,EAAE;gBACrD,MAAM,IAAI,GAAG,SAAS,CAAC;AACrB,oBAAA,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;AAChF,oBAAA,IAAI,EAAE,KAAK;oBACX,MAAM;AACN,oBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AAClB,iBAAA,CAAC;AACF,gBAAA,IAAI,IAAI,KAAK,CAAC,CAAC,EAAE;oBACf,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;AAC9B,oBAAA,IAAI,CAAC,cAAc,CAAE,IAAI,CAAC,IAAI,CAAS,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC;gBAC3E;gBACA;YACF;YACA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC;YAC9B;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;AAC/C,YAAA,IAAI,EAAE;AACN,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;AACvD,YAAA,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,IAAI,GAAG,KAAK,SAAS,EAAE;gBACxD,IAAI,CAAC,MAAM,GAAI,IAAI,CAAC,IAAI,CAAS,CAAC,GAAG;AACrC,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC;gBACxD;YACF;YACA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,KAAK,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,KAAK,CAAC;YAC/D;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,UAAU,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;AACtD,YAAA,IAAI,EAAE;YACN,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,KAAK,UAAU,GAAG,UAAU,GAAG,QAAQ,EAAE,KAAK,CAAC;YACxE;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;AACzB,YAAA,IAAI,EAAE;AACN,YAAA,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,MAAM;gBAAE;YACtC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC7B,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC;gBAClD;YACF;YACA,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,IAAK,IAAI,CAAC,KAAK,GAAG,CAAC,CAAS,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE;gBACzE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC;YACrC;YACA;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;AAC1B,YAAA,IAAI,EAAE;YACN,IAAI,GAAG,KAAK,SAAS;gBAAE;AACvB,YAAA,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC1C,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC;gBACnD;YACF;YACA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;YACzC,IAAI,MAAM,KAAK,CAAC,CAAC;gBAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC;YACnD;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;AACzB,YAAA,IAAI,EAAE;YACN,IAAI,GAAG,KAAK,SAAS;gBAAE;YACvB,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK,EAAE;gBAC3C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC;YACzE;AACA,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,MAAM;AAAE,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC;AAC3F,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;YAC5D;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;AACrB,YAAA,IAAI,EAAE;YACN,IAAI,GAAG,KAAK,SAAS;gBAAE;YACvB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,GAAG,OAAO,GAAG,QAAQ,EAAE,UAAU,CAAC;YACpF;QACF;QAEA,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE;AAChF,YAAA,IAAI,EAAE;AACN,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC;YAC7D;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;AACrB,YAAA,IAAI,EAAE;YACN,IAAI,GAAG,KAAK,SAAS;gBAAE;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;YACzC,MAAM,QAAQ,GAAG;iBACd,MAAM,CACL,CAAC,SAAS,EAAE,IAAI,KACd,SAAS,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,MAAM;iBAExE,MAAM,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,MAAM;iBACtC,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,GAAG,CAAC;AACpC,YAAA,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;gBAAE,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC;YACnF;QACF;QAEA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;YAAE;AACpF,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CACtC,KAAK,CAAC,GAAG,EACT,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,KAAK,CAAC,EACxC,KAAK,CACN;QACD,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE;AAClB,QAAA,IAAI,EAAE;QACN,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;IACjC;AAEU,IAAA,SAAS,CAAC,KAAiB,EAAA;AACnC,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,kBAAkB;YAAE;AAC1E,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;;QAE5B,MAAM,MAAM,GACV,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC7D,YAAA,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnC,IAAI,MAAM,KAAK,SAAS;YAAE;QAC1B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC;AACjD,QAAA,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;IACxB;;IAIA,KAAK,GAAA;AACH,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;AAC1E,QAAA,CAAC,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,EAAE;IAC7C;AAEA,IAAA,MAAM,CAAC,GAAW,EAAA;AAChB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;AAC9B,QAAA,MAAM,IAAI,GAAG,IAAI,KAAK,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;QAC5D,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;YAAE,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,CAAC;IAC7F;AAEA,IAAA,QAAQ,CAAC,GAAW,EAAA;QAClB,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC;IACzD;IAEA,SAAS,GAAA;AACP,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;QAC9B,IAAI,IAAI,KAAK,SAAS;YAAE;QACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,SAAS,CAAC;IAClE;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,cAAc,EAAE,SAAS,CAAC;IACrD;AAEA,IAAA,WAAW,CAAC,GAAW,EAAE,KAAA,GAAuB,SAAS,EAAA;AACvD,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC;QACtE,GAAG,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,KAAK,EAAE,CAAC;IACjF;;IAIiB,YAAY,GAAG,MAAM,CAAC,KAAK;qFAAC;AACrC,IAAA,QAAQ,GAA+B,MAAK,EAAE,CAAC;AAC/C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,KAAgB,EAAA;QACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC;IAC/B;AAEA,IAAA,gBAAgB,CAAC,EAA8B,EAAA;AAC7C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,KAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;IAC9B;AAEA;;;;AAIG;AACH,IAAA,QAAQ,CAAC,OAAwB,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,IAAI;QACjC,OAAO,MAAM,CAAC,OAAO,CAAC,KAAkB,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI;IACpF;uGApzBW,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAN,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAM,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,qCAAA,EAAA,oBAAA,EAAA,8BAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,SAAA,EAxFN;AACT,YAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,MAAM,CAAC,EAAE;AACjE,YAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAClF,YAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;SAC/E,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EACS,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+DO,kBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,mncAAA,EAAA,u8CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAxEP,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,WAAW,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FA4FxC,MAAM,EAAA,UAAA,EAAA,CAAA;kBAhGlB,SAAS;+BACE,UAAU,EAAA,UAAA,EACR,IAAI,EAAA,QAAA,EACN,QAAQ,WACT,CAAC,gBAAgB,EAAE,WAAW,EAAE,UAAU,CAAC,EAAA,eAAA,EAEnC,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,SAAA,EAC1B;AACT,wBAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,MAAO,CAAC,EAAE;AACjE,wBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AAClF,wBAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;qBAC/E,EAAA,QAAA,EACS,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBA+DO,EAAA,IAAA,EACX;AACJ,wBAAA,SAAS,EAAE,MAAM;AACjB,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,kBAAkB,EAAE,QAAQ;AAC5B,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,uBAAuB,EAAE,iBAAiB;AAC1C,wBAAA,uBAAuB,EAAE,iBAAiB;AAC1C,wBAAA,uBAAuB,EAAE,eAAe;AACxC,wBAAA,uBAAuB,EAAE,aAAa;AACtC,wBAAA,wBAAwB,EAAE,QAAQ;AAClC,wBAAA,oBAAoB,EAAE,iCAAiC;AACvD,wBAAA,sBAAsB,EAAE,4BAA4B;AACpD,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,qBAAqB,EAAE,uBAAuB;AAC9C,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,qBAAqB,EAAE,uBAAuB;AAC9C,wBAAA,UAAU,EAAE,YAAY;AACzB,qBAAA,EAAA,MAAA,EAAA,CAAA,mncAAA,EAAA,u8CAAA,CAAA,EAAA;uhJA6EmE,mBAAmB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACxTzF;;AAEG;;"}
1
+ {"version":3,"file":"slotted-angular-tree.mjs","sources":["../../tree/src/tree-defaults.ts","../../tree/src/tree-context.ts","../../tree/src/tree-parts.ts","../../tree/src/tree.ts","../../tree/src/slotted-angular-tree.ts"],"sourcesContent":["import { inject, Injectable, InjectionToken } from '@angular/core';\n\n/** The type step the tree and every row inside it sit at. */\nexport type TreeSize = 'sm' | 'md' | 'lg';\n\n/**\n * Whether the tree draws its own box. `framed` is the standalone control;\n * `plain` is what a panel that already has an edge renders inside itself.\n */\nexport type TreeVariant = 'plain' | 'framed';\n\n/** How many nodes may be chosen at once. */\nexport type TreeSelectionMode = 'none' | 'single' | 'multiple';\n\n/**\n * Which of the two models the pattern offers is in force. `toggle` is the\n * recommended one and holds no modifier; `replace` is the alternative.\n */\nexport type TreeSelectionBehavior = 'toggle' | 'replace';\n\n/**\n * How the selection is drawn, and which attribute states it. The pattern allows\n * `aria-selected` or `aria-checked` and never both; `auto` reads the mode\n * beside it, which is the convention the pattern's own note recommends.\n */\nexport type TreeSelectionIndicator = 'auto' | 'highlight' | 'checkbox' | 'none';\n\n/** Whether pressing a branch takes its descendants with it. */\nexport type TreeSelectionCascade = 'none' | 'descendants';\n\n/** What a press on the row does to a branch. */\nexport type TreeExpandOn = 'row' | 'expander';\n\n/**\n * How the keyboard's position is expressed. `auto` reads one fact — whether the\n * set is windowed — and answers `activedescendant` when it is, because a roving\n * tab stop cannot survive its own element being recycled.\n */\nexport type TreeFocusMode = 'auto' | 'roving' | 'activedescendant';\n\n/**\n * Whether the nodes are nested in `role=\"group\"` elements or laid flat with\n * their level stated. A window renders a slice and a slice cannot preserve\n * nesting, so `auto` answers `flat` while windowed.\n */\nexport type TreeStructure = 'auto' | 'nested' | 'flat';\n\n/** Where `scrollToKey` puts the node it reveals. */\nexport type TreeAlignment = 'start' | 'center' | 'end' | 'nearest';\n\nexport interface TreeDefaults {\n disallowEmptySelection: boolean;\n disallowSelectAll: boolean;\n expandOn: TreeExpandOn;\n focusMode: TreeFocusMode;\n guides: boolean;\n itemSize: number;\n loop: boolean;\n navigateDisabled: boolean;\n overscan: number;\n pageSize: number;\n selectOnFocus: boolean;\n selectionBehavior: TreeSelectionBehavior;\n selectionCascade: TreeSelectionCascade;\n selectionIndicator: TreeSelectionIndicator;\n selectionMode: TreeSelectionMode;\n size: TreeSize;\n structure: TreeStructure;\n typeahead: boolean;\n typeaheadTimeout: number;\n variant: TreeVariant;\n virtual: boolean;\n}\n\n/**\n * `expandOn` is `row` because the band is a larger target than any chevron and\n * it is what a file browser does. `selectionIndicator` is `auto` rather than a\n * mode, because the right mark depends on the mode beside it: a box for a set\n * the reader ticks, a highlight for the one thing they chose. `loop` is off,\n * for the reason `listbox` states.\n */\nconst FALLBACK: TreeDefaults = {\n disallowEmptySelection: false,\n disallowSelectAll: false,\n expandOn: 'row',\n focusMode: 'auto',\n guides: true,\n itemSize: 32,\n loop: false,\n navigateDisabled: false,\n overscan: 4,\n pageSize: 10,\n selectOnFocus: false,\n selectionBehavior: 'toggle',\n selectionCascade: 'none',\n selectionIndicator: 'auto',\n selectionMode: 'single',\n size: 'md',\n structure: 'auto',\n typeahead: true,\n typeaheadTimeout: 500,\n variant: 'plain',\n virtual: false,\n};\n\nexport const TREE_DEFAULTS = new InjectionToken<TreeDefaults>('slotted tree defaults', {\n providedIn: 'root',\n factory: () => FALLBACK,\n});\n\n/**\n * An application decides once how its trees behave, rather than repeating\n * twenty inputs on every hierarchy in a product. A tree that states any of them\n * itself still wins: an explicit input is never overridden by the token.\n */\nexport function provideTreeDefaults(defaults: Partial<TreeDefaults>) {\n return {\n provide: TREE_DEFAULTS,\n useFactory: (): TreeDefaults => ({ ...FALLBACK, ...defaults }),\n };\n}\n\n/** What a tree behaves as here, before it states anything of its own. */\nexport function injectTreeDefaults(): TreeDefaults {\n return inject(TREE_DEFAULTS);\n}\n\n/**\n * `aria-activedescendant` names a node by its id, and a node's own label names\n * the node, so every node needs two ids and the same strings have to be\n * produced on the server and in the browser. A counter held by the injector\n * produces them; `Math.random` would not match for hydration.\n */\n@Injectable({ providedIn: 'root' })\nexport class SlTreeIdFactory {\n private count = 0;\n\n next() {\n this.count += 1;\n return `slotted-tree-${this.count}`;\n }\n}\n","import type { Signal } from '@angular/core';\n\nimport type { TreeExpandOn, TreeSelectionIndicator, TreeSelectionMode } from './tree-defaults';\n\n/**\n * What a part asks the tree around it.\n *\n * It is an abstract class rather than an interface so it can be the injection\n * token as well as the type, and it exists in a file of its own so the parts do\n * not import the component that renders them: the component's own template\n * applies the node component, and a direct import each way is a cycle.\n */\nexport abstract class SlTreeContext {\n abstract readonly indicatorMode: Signal<Exclude<TreeSelectionIndicator, 'auto'>>;\n abstract readonly selection: Signal<TreeSelectionMode>;\n abstract readonly expandOnRow: Signal<TreeExpandOn>;\n abstract readonly treeDisabled: Signal<boolean>;\n abstract readonly showGuides: Signal<boolean>;\n /** Whether this key is chosen. */\n abstract isSelected(key: string): boolean;\n /** Whether this branch is open. */\n abstract isExpanded(key: string): boolean;\n /** Whether this key is the one the keyboard is on. */\n abstract isActive(key: string): boolean;\n /** Whether this branch holds part of a selection and not the whole of it. */\n abstract isIndeterminate(key: string): boolean;\n /** Whether this collapsed branch holds a chosen descendant. */\n abstract holdsSelection(key: string): boolean;\n /** The id a node carries, so `aria-activedescendant` can name it. */\n abstract nodeId(key: string): string;\n /** The id of the node's own label, which is what names the node. */\n abstract labelId(key: string): string;\n /** The tab stop under the roving model, and `null` under the other one. */\n abstract nodeTabIndex(key: string): number | null;\n /**\n * The level, the size of the sibling group and the place in it. All three are\n * `null` unless the flat structure is in force, which is exactly when the\n * pattern requires them: with the nesting in the DOM the browser computes\n * them itself.\n */\n abstract levelOf(key: string): number | null;\n abstract setSizeOf(key: string): number | null;\n abstract posInSetOf(key: string): number | null;\n /** A press on a row, with the modifiers it was pressed with. */\n abstract press(key: string, event: MouseEvent): void;\n /** A press on the chevron, which only ever opens or closes. */\n abstract pressExpander(key: string, event: MouseEvent): void;\n /** A press on the box, which only ever selects. */\n abstract pressIndicator(key: string, event: MouseEvent): void;\n}\n","import {\n afterEveryRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n Directive,\n ElementRef,\n inject,\n input,\n numberAttribute,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { Signal } from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\n\nimport { SlTreeContext } from './tree-context';\n\n/** The selector the tree reads its visible rows through, in DOM order. */\nexport const NODE_SELECTOR = \"[data-part='node']\";\n\n/**\n * One node, and the facts the tree reads back off it.\n *\n * The visible collection is read from the DOM rather than from a registry, as\n * `listbox` and `menu` already do: document order is reading order, a collapsed\n * branch renders no group and therefore contributes no rows, and nothing has to\n * be registered, unregistered or ordered by mount time. The flattening a tree\n * would otherwise need is the browser's own.\n *\n * `aria-disabled` and never the native attribute: the pattern needs a disabled\n * node to keep its place in the set, and `navigateDisabled` is what decides\n * whether the arrows land on it.\n */\n@Component({\n selector: 'li[slTreeNode]',\n standalone: true,\n exportAs: 'slTreeNode',\n imports: [SlGlyph, SlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `<div data-part=\"row\" data-part-row=\"\" (click)=\"onRowClick($event)\">\n @if (tree.showGuides() && depth() > 0) {\n <span data-part=\"guide\" data-part-guide=\"\" aria-hidden=\"true\"></span>\n }\n @if (branch() && loading()) {\n <!-- The wait stands in the chevron's own cell, so a branch that starts\n fetching moves neither its own name nor the rows below it. -->\n <span\n data-part=\"loader\"\n data-part-loader=\"\"\n data-ui=\"spinner\"\n data-ui-spinner=\"\"\n aria-hidden=\"true\"\n ></span>\n } @else {\n <span\n data-part=\"expander\"\n data-part-expander=\"\"\n aria-hidden=\"true\"\n (click)=\"onExpanderClick($event)\"\n >\n <!-- A leaf keeps the box and draws nothing in it. -->\n @if (branch()) {\n <span slIcon><svg slGlyph name=\"chevron-right\"></svg></span>\n }\n </span>\n }\n @if (tree.indicatorMode() === 'checkbox') {\n <!-- The dash outranks the check: a branch partly chosen shows the state\n its children are in. -->\n <span\n data-part=\"indicator\"\n data-part-indicator=\"\"\n aria-hidden=\"true\"\n (click)=\"onIndicatorClick($event)\"\n ><span slIcon><svg slGlyph [name]=\"indeterminate() ? 'minus' : 'check'\"></svg></span\n ></span>\n }\n <ng-content select=\"[slTreeIcon]\" />\n <span data-part=\"label\" data-part-label=\"\" [attr.id]=\"labelId()\"\n >{{ label() }}<ng-content select=\"[slTreeLabel]\"\n /></span>\n <ng-content select=\"[slTreeDescription]\" />\n <ng-content select=\"[slTreeMeta]\" />\n <ng-content select=\"[slTreeActions]\" />\n </div>\n @if (branch() && expanded()) {\n <!-- The group is placed only while the branch is open. One kept in the\n DOM and merely hidden would put every descendant of every closed\n branch into the reading order the root counts.\n\n The element is the consumer's rather than this template's, and the\n reason is the HTML parser: Angular parses a template as HTML, where\n an li closes the li before it, so a node written inside a node needs\n the list between them. React has no such rule and needs no such\n element, and the asymmetry is written in the design rather than\n levelled away. -->\n <ng-content select=\"[slTreeGroup]\" />\n }\n <ng-content />`,\n host: {\n 'data-part': 'node',\n 'data-part-node': '',\n role: 'treeitem',\n '[attr.id]': 'id()',\n '[attr.data-key]': 'value()',\n '[attr.data-depth]': 'depth()',\n '[style.--slotted-tree-depth]': 'depth()',\n '[style.--slotted-tree-row-offset.px]': 'offset()',\n '[attr.data-text-value]': 'textValue() ?? null',\n '[attr.data-branch]': \"branch() ? '' : null\",\n '[attr.data-expanded]': \"expanded() ? '' : null\",\n '[attr.data-selected]': \"selected() ? '' : null\",\n '[attr.data-selected-within]': \"holdsSelection() ? '' : null\",\n '[attr.data-indeterminate]': \"indeterminate() ? '' : null\",\n '[attr.data-current]': \"current() ? '' : null\",\n '[attr.data-disabled]': \"resolvedDisabled() ? '' : null\",\n '[attr.data-loading]': \"loading() ? '' : null\",\n '[attr.data-match]': 'match() ?? null',\n '[attr.data-pinned]': \"pinned() ? '' : null\",\n '[attr.aria-labelledby]': 'labelId()',\n '[attr.aria-expanded]': 'ariaExpanded()',\n '[attr.aria-selected]': 'ariaSelected()',\n '[attr.aria-checked]': 'ariaChecked()',\n '[attr.aria-disabled]': \"resolvedDisabled() ? 'true' : null\",\n '[attr.aria-level]': 'levelAttr()',\n '[attr.aria-setsize]': 'setSize()',\n '[attr.aria-posinset]': 'posInSet()',\n '[attr.tabindex]': 'tabIndex()',\n },\n})\nexport class SlTreeNode {\n /** The key this node selects and expands by. */\n readonly value = input.required<string>();\n /** The node's name, when it is a plain string. */\n readonly label = input('');\n /**\n * Whether this node has children that have not been rendered yet. A branch\n * says so before it can prove it, which is what makes lazy loading possible.\n */\n readonly hasChildren = input(false, { transform: booleanAttribute });\n /** Whether the children are on their way. Writes `aria-busy` on the group. */\n readonly loading = input(false, { transform: booleanAttribute });\n /** Unstated rather than `false`, so the node defers to the tree. */\n readonly disabled = input<boolean | undefined, boolean | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : booleanAttribute(state)),\n });\n /**\n * What typeahead matches and what a reader hears. Defaults to the label's own\n * text, which is wrong exactly when the label holds a mark or a number.\n */\n readonly textValue = input<string | undefined>(undefined);\n /** Whether a query matched this node's own name or one below it. */\n readonly match = input<'hit' | 'ancestor' | undefined>(undefined);\n /**\n * Rendered at its own place on the canvas whether or not the window covers\n * it. The tree pins the active node and the range anchor; nothing else sets\n * it, because an `aria-activedescendant` whose target has been recycled names\n * an id that is not in the document.\n */\n readonly pinned = input(false, { transform: booleanAttribute });\n /** Where the node sits on the canvas, in pixels. Windowed rows only. */\n readonly offset = input<number | undefined, number | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : numberAttribute(state)),\n });\n /**\n * How deep the node sits, stated only by the flat shape. Everywhere else the\n * markup says it: a node inside another is one level deeper, and the number\n * is a fact about the tree rather than one more thing a consumer can get\n * wrong.\n */\n readonly level = input<number | undefined, number | string | undefined>(undefined, {\n transform: (state) => (state === undefined ? undefined : numberAttribute(state)),\n });\n\n protected readonly tree = inject(SlTreeContext);\n /**\n * The node this one is written inside, found through the element injector\n * rather than through a context signal: projected content keeps the injector\n * of the place it was declared, which is exactly the nesting the depth is\n * counted from.\n */\n private readonly parent = inject(SlTreeNode, { optional: true, skipSelf: true });\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n /**\n * The nodes this one is rendered inside, counted in the document once it is\n * attached. A template that calls itself declares every instance at the root,\n * so the injector finds no parent for any of them and the whole tree would\n * draw flat; the document still nests them, and so does the level the\n * platform reports.\n */\n private readonly renderedDepth = signal<number | null>(null);\n\n /**\n * The nodes written inside this one. Angular creates projected content with\n * the parent's own view and only decides where to place it, so the query\n * answers a branch that is closed and whose group is therefore not rendered —\n * which is what keeps a collapsed branch a branch.\n */\n private readonly childNodes = contentChildren(SlTreeNode, { descendants: true });\n\n /** A branch is a node that holds children or says it will. */\n protected readonly branch = computed(() => this.hasChildren() || this.childNodes().length > 0);\n /**\n * Annotated rather than inferred: the depth of a node reads the depth of the\n * node it is written inside, and an inferred type would be defined in terms\n * of itself.\n */\n readonly depth: Signal<number> = computed(\n () =>\n this.level() ?? this.renderedDepth() ?? (this.parent === null ? 0 : this.parent.depth() + 1),\n );\n protected readonly expanded = computed(() => this.branch() && this.tree.isExpanded(this.value()));\n protected readonly selected = computed(() => this.tree.isSelected(this.value()));\n protected readonly indeterminate = computed(() => this.tree.isIndeterminate(this.value()));\n protected readonly holdsSelection = computed(\n () => !this.expanded() && this.tree.holdsSelection(this.value()),\n );\n protected readonly current = computed(() => this.tree.isActive(this.value()));\n protected readonly id = computed(() => this.tree.nodeId(this.value()));\n protected readonly labelId = computed(() => this.tree.labelId(this.value()));\n protected readonly resolvedDisabled = computed(\n () => (this.disabled() ?? false) === true || this.tree.treeDisabled() === true,\n );\n protected readonly ariaExpanded = computed(() =>\n this.branch() ? (this.expanded() ? 'true' : 'false') : null,\n );\n private readonly chosen = computed(() =>\n this.tree.selection() === 'none' ? null : this.selected() ? 'true' : 'false',\n );\n protected readonly ariaSelected = computed(() =>\n this.tree.indicatorMode() === 'checkbox' ? null : this.chosen(),\n );\n protected readonly ariaChecked = computed(() =>\n this.tree.indicatorMode() === 'checkbox' ? this.chosen() : null,\n );\n /**\n * The level the node reports is the tree's answer and not the depth it was\n * handed: the depth places the row, and the property is written only where\n * the nesting no longer says it.\n */\n protected readonly levelAttr = computed(() => this.tree.levelOf(this.value()));\n protected readonly setSize = computed(() => this.tree.setSizeOf(this.value()));\n protected readonly posInSet = computed(() => this.tree.posInSetOf(this.value()));\n protected readonly tabIndex = computed(() => this.tree.nodeTabIndex(this.value()));\n\n constructor() {\n /*\n * Projected content is created with the parent's view, before a closed\n * branch has placed its group in the document, so one read at creation\n * finds no ancestor. The count waits until the node is attached, and stops\n * there: a view is never moved to another parent.\n */\n const measure = afterEveryRender({\n read: () => {\n const element = this.host.nativeElement;\n const root = element.closest(\"[data-ui='tree']\");\n if (root === null) return;\n let depth = 0;\n let node = element.parentElement?.closest(NODE_SELECTOR);\n while (node && root.contains(node)) {\n depth += 1;\n node = node.parentElement?.closest(NODE_SELECTOR);\n }\n this.renderedDepth.set(depth);\n measure.destroy();\n },\n });\n }\n\n protected onRowClick(event: MouseEvent) {\n if (this.resolvedDisabled()) return;\n this.tree.press(this.value(), event);\n }\n\n protected onExpanderClick(event: MouseEvent) {\n event.stopPropagation();\n if (!this.branch() || this.resolvedDisabled()) return;\n this.tree.pressExpander(this.value(), event);\n }\n\n protected onIndicatorClick(event: MouseEvent) {\n event.stopPropagation();\n if (this.resolvedDisabled()) return;\n this.tree.pressIndicator(this.value(), event);\n }\n}\n\n/**\n * The list a branch's children are written in.\n *\n * It exists because Angular parses a template as HTML: an `li` closes the `li`\n * before it, so a node written inside a node needs the list between them. The\n * node decides whether the group is placed; the consumer decides what element\n * it is.\n */\n@Directive({\n selector: 'ul[slTreeGroup]',\n standalone: true,\n host: {\n 'data-part': 'group',\n 'data-part-group': '',\n role: 'group',\n '[attr.aria-busy]': \"busy() ? 'true' : null\",\n },\n})\nexport class SlTreeGroup {\n /** Whether the children are still on their way. */\n readonly busy = input(false, { transform: booleanAttribute });\n}\n\n/** The node's leading picture, which the consumer owns whole. */\n@Directive({\n selector: '[slTreeIcon]',\n standalone: true,\n host: { 'data-part': 'icon', 'data-part-icon': '', 'aria-hidden': 'true' },\n})\nexport class SlTreeIcon {}\n\n/** The node's name, when it is richer than a string. */\n@Directive({ selector: '[slTreeLabel]', standalone: true })\nexport class SlTreeLabel {}\n\n/** A second line under the name. */\n@Directive({\n selector: '[slTreeDescription]',\n standalone: true,\n host: { 'data-part': 'description', 'data-part-description': '' },\n})\nexport class SlTreeDescription {}\n\n/** The trailing count, size or badge. */\n@Directive({\n selector: '[slTreeMeta]',\n standalone: true,\n host: { 'data-part': 'meta', 'data-part-meta': '' },\n})\nexport class SlTreeMeta {}\n\n/** The trailing controls. They stay in the DOM and stay reachable. */\n@Directive({\n selector: '[slTreeActions]',\n standalone: true,\n host: { 'data-part': 'actions', 'data-part-actions': '' },\n})\nexport class SlTreeActions {}\n\n/** What the tree shows when it holds nothing. */\n@Directive({\n selector: '[slTreeEmpty]',\n standalone: true,\n host: { 'data-part': 'empty', 'data-part-empty': '' },\n})\nexport class SlTreeEmpty {}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n ElementRef,\n forwardRef,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type {\n AbstractControl,\n ControlValueAccessor,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport {\n cascadeSelection,\n createFilter,\n createTreeCollection,\n indeterminateKeys,\n moveIndex,\n nextSelection,\n virtualWindow,\n} from '@slotted/core/collection';\nimport type {\n MoveIntent,\n TreeCollection,\n TreeNode as TreeNodeData,\n} from '@slotted/core/collection';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport { createTypeahead, isPrintable } from '@slotted/core/typeahead';\nimport type { TypeaheadHandle } from '@slotted/core/typeahead';\n\nimport { SlTreeContext } from './tree-context';\nimport { injectTreeDefaults, SlTreeIdFactory } from './tree-defaults';\nimport type {\n TreeAlignment,\n TreeExpandOn,\n TreeFocusMode,\n TreeSelectionBehavior,\n TreeSelectionCascade,\n TreeSelectionIndicator,\n TreeSelectionMode,\n TreeSize,\n TreeStructure,\n TreeVariant,\n} from './tree-defaults';\nimport { NODE_SELECTOR, SlTreeGroup, SlTreeNode } from './tree-parts';\n\nexport type {\n TreeAlignment,\n TreeExpandOn,\n TreeFocusMode,\n TreeSelectionBehavior,\n TreeSelectionCascade,\n TreeSelectionIndicator,\n TreeSelectionMode,\n TreeSize,\n TreeStructure,\n TreeVariant,\n} from './tree-defaults';\n\n/**\n * What the tree holds: one key in `single` and `none`, a set of them in\n * `multiple`. The shape `listbox` settled, for the same reason.\n */\nexport type TreeValue = string | readonly string[] | null;\n\nexport type TreeChangeRequest = ChangeRequest<TreeValue>;\nexport type TreeExpansionRequest = ChangeRequest<readonly string[]>;\nexport type TreeActiveRequest = ChangeRequest<string | null>;\n\n/** One visible row, as the DOM reports it at the moment a key was pressed. */\ninterface Row {\n key: string;\n depth: number;\n branch: boolean;\n disabled: boolean;\n label: string;\n element: HTMLElement;\n}\n\n/** One row of the render plan the template walks. */\ninterface PlanNode {\n key: string;\n item: unknown;\n label: string;\n level: number;\n disabled: boolean;\n branch: boolean;\n loading: boolean;\n match: 'hit' | 'ancestor' | undefined;\n /** Where a pinned row sits on the canvas, or `undefined` for one in flow. */\n offset: number | undefined;\n children: PlanNode[];\n}\n\nfunction toKeys(value: TreeValue | undefined): readonly string[] {\n if (value === undefined || value === null) return [];\n return typeof value === 'string' ? [value] : value;\n}\n\nfunction same(a: readonly string[], b: readonly string[]) {\n return a.length === b.length && a.every((key, index) => key === b[index]);\n}\n\n/**\n * A hierarchy the reader opens, walks and chooses from.\n *\n * ── Where the visible list comes from ───────────────────────────────────\n *\n * From the DOM, in document order, which is the flattening a tree would\n * otherwise have to keep in step with the expanded set. A collapsed branch\n * renders no group and therefore contributes no rows, so what the keyboard\n * counts and what the reader sees cannot disagree.\n *\n * `nodes` is a second thing and not a replacement: it is the hierarchy the tree\n * holds, and it answers the three questions the DOM cannot — what is under a\n * branch that is closed, which a cascade needs; what every branch is, which\n * `expandAll` opens; and what matches a query, whose ancestors the filter\n * keeps.\n *\n * ── Three mutable values ────────────────────────────────────────────────\n *\n * The pattern is explicit that focus and selection are two: \"DOM focus (the\n * active element) is functionally distinct from the selected state\". Expansion\n * is the third and belongs to neither.\n */\n@Component({\n selector: '[slTree]',\n standalone: true,\n exportAs: 'slTree',\n imports: [NgTemplateOutlet, SlTreeGroup, SlTreeNode],\n styleUrls: ['../../../styles/src/tree/tree.css', '../../../styles/src/highlight/highlight.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n { provide: SlTreeContext, useExisting: forwardRef(() => SlTree) },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlTree), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SlTree), multi: true },\n ],\n template: `<ul\n data-part=\"canvas\"\n data-part-canvas=\"\"\n role=\"tree\"\n #canvas\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.aria-multiselectable]=\"selection() === 'multiple' ? 'true' : null\"\n [attr.aria-activedescendant]=\"activeDescendant()\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n [attr.aria-disabled]=\"treeDisabled() ? 'true' : null\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n [attr.aria-required]=\"required() ? 'true' : null\"\n [attr.tabindex]=\"canvasTabIndex()\"\n [style.--_canvas-size]=\"canvasSize()\"\n [style.--_canvas-offset]=\"canvasOffset()\"\n (keydown)=\"onKeyDown($event)\"\n (focusin)=\"onFocusIn($event)\"\n >\n @if (plan(); as rows) {\n @for (node of rows; track node.key) {\n <ng-container\n [ngTemplateOutlet]=\"nodeRow\"\n [ngTemplateOutletContext]=\"{ $implicit: node }\"\n />\n }\n }\n <ng-content />\n </ul>\n @if (holdsNothing()) {\n <ng-content select=\"[slTreeEmpty]\" />\n }\n\n <ng-template #nodeRow let-node>\n <li\n slTreeNode\n [value]=\"node.key\"\n [label]=\"node.label\"\n [level]=\"node.level\"\n [hasChildren]=\"node.branch\"\n [disabled]=\"node.disabled\"\n [loading]=\"node.loading\"\n [match]=\"node.match\"\n [textValue]=\"node.label\"\n [pinned]=\"node.offset !== undefined\"\n [offset]=\"node.offset\"\n >\n @if (nodeContent(); as content) {\n <ng-container\n [ngTemplateOutlet]=\"content\"\n [ngTemplateOutletContext]=\"{ $implicit: node.item, key: node.key }\"\n />\n }\n @if (node.children.length > 0) {\n <ul slTreeGroup [busy]=\"node.loading\">\n @for (child of node.children; track child.key) {\n <ng-container\n [ngTemplateOutlet]=\"nodeRow\"\n [ngTemplateOutletContext]=\"{ $implicit: child }\"\n />\n }\n </ul>\n }\n </li>\n </ng-template>`,\n host: {\n 'data-ui': 'tree',\n 'data-ui-tree': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.data-size]': 'size()',\n '[attr.data-variant]': 'variant()',\n '[attr.data-structure]': 'structureMode()',\n '[attr.data-indicator]': 'indicatorMode()',\n '[attr.data-expand-on]': 'expandOnRow()',\n '[attr.data-selection]': 'selection()',\n '[attr.data-focus-mode]': 'mode()',\n '[attr.data-guides]': 'showGuides() ? \"true\" : \"false\"',\n '[attr.data-disabled]': 'treeDisabled() ? \"\" : null',\n '[attr.data-readonly]': 'readOnly() ? \"\" : null',\n '[attr.data-invalid]': 'invalid() ? \"\" : null',\n '[attr.data-required]': 'required() ? \"\" : null',\n '[attr.data-loading]': 'loading() ? \"\" : null',\n '(scroll)': 'onScroll()',\n },\n})\nexport class SlTree implements SlTreeContext, ControlValueAccessor, Validator {\n /* ── The three values a reader moves ─────────────────────────────────── */\n\n readonly value = model<TreeValue>(null);\n readonly expandedKeys = model<readonly string[]>([]);\n readonly activeKey = model<string | null>(null);\n\n /** The request behind each move, carrying the reason a boolean cannot say. */\n readonly valueRequest = output<TreeChangeRequest>();\n readonly expandedKeysRequest = output<TreeExpansionRequest>();\n readonly activeKeyRequest = output<TreeActiveRequest>();\n /** A node was activated: pressed, or `Enter` on the keyboard. */\n readonly nodeActivate = output<{ key: string; reason: 'pointer' | 'keyboard' }>();\n\n /* ── The axes ────────────────────────────────────────────────────────── */\n\n private readonly defaults = injectTreeDefaults();\n\n readonly size = input<TreeSize>(this.defaults.size);\n readonly variant = input<TreeVariant>(this.defaults.variant);\n readonly structure = input<TreeStructure>(this.defaults.structure);\n readonly selectionMode = input<TreeSelectionMode>(this.defaults.selectionMode);\n readonly selectionBehavior = input<TreeSelectionBehavior>(this.defaults.selectionBehavior);\n readonly selectionIndicator = input<TreeSelectionIndicator>(this.defaults.selectionIndicator);\n readonly selectionCascade = input<TreeSelectionCascade>(this.defaults.selectionCascade);\n readonly expandOn = input<TreeExpandOn>(this.defaults.expandOn);\n readonly focusMode = input<TreeFocusMode>(this.defaults.focusMode);\n readonly guides = input(this.defaults.guides, { transform: booleanAttribute });\n readonly loop = input(this.defaults.loop, { transform: booleanAttribute });\n readonly typeahead = input(this.defaults.typeahead, { transform: booleanAttribute });\n readonly typeaheadTimeout = input(this.defaults.typeaheadTimeout, { transform: numberAttribute });\n readonly selectOnFocus = input(this.defaults.selectOnFocus, { transform: booleanAttribute });\n readonly navigateDisabled = input(this.defaults.navigateDisabled, {\n transform: booleanAttribute,\n });\n readonly disallowEmptySelection = input(this.defaults.disallowEmptySelection, {\n transform: booleanAttribute,\n });\n readonly disallowSelectAll = input(this.defaults.disallowSelectAll, {\n transform: booleanAttribute,\n });\n readonly pageSize = input(this.defaults.pageSize, { transform: numberAttribute });\n readonly virtual = input(this.defaults.virtual, { transform: booleanAttribute });\n readonly itemSize = input(this.defaults.itemSize, { transform: numberAttribute });\n readonly overscan = input(this.defaults.overscan, { transform: numberAttribute });\n\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly readOnly = input(false, { transform: booleanAttribute });\n readonly required = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n\n readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n readonly ariaLabelledBy = input<string | undefined>(undefined, { alias: 'aria-labelledby' });\n\n /* ── The hierarchy, when the tree was handed one ─────────────────────── */\n\n readonly nodes = input<readonly unknown[] | undefined>(undefined);\n readonly getKey = input<((node: never) => string) | undefined>(undefined);\n readonly getLabel = input<((node: never) => string) | undefined>(undefined);\n readonly getChildren = input<((node: never) => readonly unknown[] | undefined) | undefined>(\n undefined,\n );\n readonly getLevel = input<((node: never) => number) | undefined>(undefined);\n readonly hasChildren = input<((node: never) => boolean) | undefined>(undefined);\n readonly getChildrenCount = input<((node: never) => number | undefined) | undefined>(undefined);\n readonly isNodeDisabled = input<((node: never) => boolean) | undefined>(undefined);\n readonly isNodeLoading = input<((node: never) => boolean) | undefined>(undefined);\n /**\n * A query the tree filters by. The consumer owns the string and the control\n * it is typed into; the tree keeps the ancestors of every hit.\n */\n readonly query = input<string | undefined>(undefined);\n\n /** The row's content, re-rendered per node rather than projected once. */\n protected readonly nodeContent = contentChild<TemplateRef<unknown>>('slTreeNodeContent');\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly ids = inject(SlTreeIdFactory);\n private readonly base = this.ids.next();\n private readonly typeaheadHandle: TypeaheadHandle = createTypeahead({\n timeout: this.defaults.typeaheadTimeout,\n });\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n destroyRef.onDestroy(() => this.typeaheadHandle.destroy());\n\n /**\n * The viewport is measured as soon as there is one, and again whenever it\n * changes size — not only when the reader scrolls.\n *\n * Measuring on `scroll` alone left the window with a viewport of nought\n * until the first scroll, and a window of nought renders one row: a tree of\n * four thousand showed its first name and nothing else until the reader\n * nudged the wheel, at which point the rest appeared at once. It is the\n * kind of defect that only exists on the first paint, which is exactly\n * where a reader meets it.\n */\n afterNextRender(() => this.measure());\n\n const root = this.host.nativeElement;\n if (typeof ResizeObserver !== 'undefined') {\n const observer = new ResizeObserver(() => this.measure());\n observer.observe(root);\n destroyRef.onDestroy(() => observer.disconnect());\n }\n }\n\n private measure() {\n const root = this.host.nativeElement;\n this.viewportSize.set(root.clientHeight);\n this.scrollOffset.set(root.scrollTop);\n }\n\n /* ── What the axes resolve to ────────────────────────────────────────── */\n\n readonly selection = computed(() => this.selectionMode());\n readonly treeDisabled = computed(() => this.disabled() || this.formDisabled());\n readonly showGuides = computed(() => this.guides());\n readonly expandOnRow = computed(() => this.expandOn());\n\n /**\n * `auto` reads the mode beside it: a box for a set the reader ticks, a\n * highlight for the one thing they chose, and neither when nothing is\n * selectable. The pattern's own note recommends exactly this convention.\n */\n readonly indicatorMode = computed<Exclude<TreeSelectionIndicator, 'auto'>>(() => {\n const stated = this.selectionIndicator();\n if (stated !== 'auto') return stated;\n if (this.selection() === 'multiple') return 'checkbox';\n return this.selection() === 'single' ? 'highlight' : 'none';\n });\n\n /**\n * The flat shape is the windowed one, and it is the handed collection's\n * alone: a slice of rows cannot preserve nesting, and a node written in a\n * template cannot render its children as its own siblings.\n */\n protected readonly structureMode = computed<Exclude<TreeStructure, 'auto'>>(() => {\n if (this.collection() === undefined) return 'nested';\n const stated = this.structure();\n if (stated !== 'auto') return stated;\n return this.virtual() ? 'flat' : 'nested';\n });\n\n protected readonly mode = computed<'roving' | 'activedescendant'>(() => {\n const stated = this.focusMode();\n if (stated !== 'auto') return stated;\n return this.virtual() && this.collection() !== undefined ? 'activedescendant' : 'roving';\n });\n\n private readonly collection = computed<TreeCollection<unknown> | undefined>(() => {\n const held = this.nodes();\n const key = this.getKey();\n if (held === undefined || key === undefined) return undefined;\n const level = this.getLevel();\n return createTreeCollection<unknown>({\n ...(level === undefined ? { roots: held } : { items: held, getLevel: level as never }),\n getKey: key as never,\n ...(this.getLabel() === undefined ? {} : { getLabel: this.getLabel() as never }),\n ...(this.getChildren() === undefined ? {} : { getChildren: this.getChildren() as never }),\n ...(this.hasChildren() === undefined ? {} : { hasChildren: this.hasChildren() as never }),\n ...(this.getChildrenCount() === undefined\n ? {}\n : { getChildrenCount: this.getChildrenCount() as never }),\n ...(this.isNodeDisabled() === undefined\n ? {}\n : { isDisabled: this.isNodeDisabled() as never }),\n });\n });\n\n private readonly selected = computed(() => toKeys(this.value()));\n\n /* ── The filter ─────────────────────────────────────────────────────── */\n\n private readonly filtered = computed(() => {\n const held = this.collection();\n const query = this.query();\n if (held === undefined || query === undefined || query.trim() === '') return undefined;\n const filter = createFilter();\n const hits = new Set<string>();\n for (const node of held.nodes) if (filter.contains(node.label, query)) hits.add(node.key);\n const kept = new Set(hits);\n for (const key of hits) for (const ancestor of held.ancestorsOf(key)) kept.add(ancestor);\n return { hits, kept };\n });\n\n /* ── The window ─────────────────────────────────────────────────────── */\n\n private readonly viewportSize = signal(0);\n private readonly scrollOffset = signal(0);\n\n private readonly visible = computed<readonly TreeNodeData<unknown>[]>(() => {\n const held = this.collection();\n return held === undefined ? [] : held.visible(this.expandedKeys());\n });\n\n private readonly windowed = computed(() => this.virtual() && this.collection() !== undefined);\n\n private readonly slice = computed(() => {\n if (!this.windowed()) return undefined;\n const rows = this.visible();\n const activeIndex = rows.findIndex((node) => node.key === this.activeKey());\n const anchorIndex = rows.findIndex((node) => node.key === this.anchor);\n return virtualWindow({\n itemCount: rows.length,\n itemSize: this.itemSize(),\n overscan: this.overscan(),\n pinned: [activeIndex, anchorIndex].filter((index) => index !== -1),\n scrollOffset: this.scrollOffset(),\n viewportSize: this.viewportSize(),\n });\n });\n\n protected readonly canvasSize = computed(() => {\n const slice = this.slice();\n return slice === undefined ? null : `${slice.totalSize}px`;\n });\n\n protected readonly canvasOffset = computed(() => {\n const slice = this.slice();\n return slice === undefined ? null : `${slice.startOffset}px`;\n });\n\n protected onScroll() {\n this.measure();\n }\n\n /* ── The render plan ────────────────────────────────────────────────── */\n\n protected readonly plan = computed<PlanNode[]>(() => {\n const held = this.collection();\n if (held === undefined) return [];\n const label = (item: unknown) => {\n const read = this.getLabel();\n return read === undefined\n ? ((this.getKey() as never as (n: unknown) => string)(item) ?? '')\n : (read as never as (n: unknown) => string)(item);\n };\n const loading = this.isNodeLoading() as never as ((n: unknown) => boolean) | undefined;\n const filtered = this.filtered();\n const flat = this.structureMode() === 'flat';\n\n const entry = (node: TreeNodeData<unknown>, offset: number | undefined): PlanNode => ({\n key: node.key,\n item: node.item,\n label: label(node.item),\n level: node.level,\n disabled: node.disabled,\n branch: node.hasChildren,\n loading: loading?.(node.item) === true,\n match: filtered === undefined ? undefined : filtered.hits.has(node.key) ? 'hit' : 'ancestor',\n offset,\n children: [],\n });\n\n if (flat) {\n const rows = this.visible();\n const slice = this.slice();\n if (slice === undefined) return rows.map((node) => entry(node, undefined));\n const inside = rows\n .slice(slice.startIndex, slice.endIndex)\n .map((node) => entry(node, undefined));\n const pinned = [...slice.pinnedBefore, ...slice.pinnedAfter]\n .map((index) => ({ index, node: rows[index] }))\n .filter(\n (row): row is { index: number; node: TreeNodeData<unknown> } => row.node !== undefined,\n )\n .map((row) => entry(row.node, row.index * this.itemSize()));\n return [...pinned, ...inside];\n }\n\n const walk = (keys: readonly string[]): PlanNode[] =>\n keys\n .map((key) => held.nodeFor(key))\n .filter((node): node is TreeNodeData<unknown> => node !== undefined)\n .filter((node) => filtered === undefined || filtered.kept.has(node.key))\n .map((node) => {\n const row = entry(node, undefined);\n if (node.hasChildren && this.isExpanded(node.key)) row.children = walk(node.children);\n return row;\n });\n\n return walk(held.roots);\n });\n\n protected readonly holdsNothing = computed(() => {\n const held = this.collection();\n if (held === undefined) return false;\n const filtered = this.filtered();\n return held.nodes.length === 0 || (filtered !== undefined && filtered.kept.size === 0);\n });\n\n /* ── What every part reads ──────────────────────────────────────────── */\n\n private readonly positions = computed(() =>\n this.structureMode() === 'flat' ? this.collection() : undefined,\n );\n\n private readonly indeterminateSet = computed(() => {\n const held = this.collection();\n if (this.selectionCascade() !== 'descendants' || held === undefined) return new Set<string>();\n return new Set(indeterminateKeys(held, this.selected()));\n });\n\n isSelected(key: string) {\n return this.selected().includes(key);\n }\n\n /**\n * A branch the reader opened, or one a query is holding open.\n *\n * A filter that asked for the expansion instead would move the reader's own\n * set and have to put it back when the query emptied, and a reader who\n * cleared a search would find branches open that they never opened. Holding\n * the path open for as long as the query lasts keeps the set the reader owns\n * untouched, and keeps `aria-expanded` telling the truth about what is on\n * screen.\n */\n isExpanded(key: string) {\n if (this.expandedKeys().includes(key)) return true;\n const filtered = this.filtered();\n return filtered !== undefined && filtered.kept.has(key) && !filtered.hits.has(key);\n }\n\n isActive(key: string) {\n return this.activeKey() === key;\n }\n\n isIndeterminate(key: string) {\n return this.indeterminateSet().has(key);\n }\n\n holdsSelection(key: string) {\n const held = this.collection();\n if (held === undefined || this.isSelected(key)) return false;\n return held.descendantsOf(key).some((child) => this.isSelected(child));\n }\n\n nodeId(key: string) {\n return `${this.base}-node-${key}`;\n }\n\n labelId(key: string) {\n return `${this.base}-label-${key}`;\n }\n\n nodeTabIndex(key: string) {\n if (this.mode() === 'activedescendant') return null;\n if (this.activeKey() === null) return -1;\n return this.activeKey() === key ? 0 : -1;\n }\n\n levelOf(key: string) {\n const node = this.positions()?.nodeFor(key);\n return node === undefined ? null : node.level + 1;\n }\n\n setSizeOf(key: string) {\n return this.positions()?.nodeFor(key)?.setSize ?? null;\n }\n\n posInSetOf(key: string) {\n return this.positions()?.nodeFor(key)?.posInSet ?? null;\n }\n\n protected readonly activeDescendant = computed(() => {\n const key = this.activeKey();\n return this.mode() === 'activedescendant' && key !== null ? this.nodeId(key) : null;\n });\n\n protected readonly canvasTabIndex = computed(() =>\n this.mode() === 'activedescendant' || this.activeKey() === null ? 0 : -1,\n );\n\n /* ── The rows, read from the DOM ────────────────────────────────────── */\n\n private canvas(): HTMLElement | null {\n return this.host.nativeElement.querySelector(\"[data-part='canvas']\");\n }\n\n private readRows(): Row[] {\n const canvas = this.canvas();\n if (canvas === null) return [];\n return [...canvas.querySelectorAll<HTMLElement>(NODE_SELECTOR)].map((element) => ({\n key: element.dataset['key'] ?? '',\n depth: Number(element.dataset['depth'] ?? 0),\n branch: element.dataset['branch'] !== undefined,\n disabled: element.getAttribute('aria-disabled') === 'true',\n label:\n element.dataset['textValue'] ??\n element.querySelector(\"[data-part='label']\")?.textContent?.trim() ??\n '',\n element,\n }));\n }\n\n private parentOf(rows: readonly Row[], index: number) {\n const depth = rows[index]?.depth ?? 0;\n for (let step = index - 1; step >= 0; step -= 1) {\n if ((rows[step] as Row).depth < depth) return step;\n }\n return -1;\n }\n\n private renderedDescendants(rows: readonly Row[], index: number) {\n const depth = rows[index]?.depth ?? 0;\n const held: string[] = [];\n for (let step = index + 1; step < rows.length; step += 1) {\n const row = rows[step] as Row;\n if (row.depth <= depth) break;\n held.push(row.key);\n }\n return held;\n }\n\n /* ── Moving the three values ────────────────────────────────────────── */\n\n private anchor: string | undefined = undefined;\n\n private requestValue(\n keys: readonly string[],\n reason: TreeChangeRequest['reason'],\n source: unknown,\n ) {\n const outward = (held: readonly string[]): TreeValue =>\n this.selection() === 'multiple' ? held : (held[0] ?? null);\n let cancelled = false;\n const state = createControllable<readonly string[]>({\n initial: this.selected(),\n equals: same,\n onRequest: (request) => {\n const outwardRequest: TreeChangeRequest = {\n value: outward(request.value),\n previous: outward(request.previous),\n reason: request.reason,\n source: request.source,\n get cancelled() {\n return request.cancelled;\n },\n cancel: () => request.cancel(),\n };\n this.valueRequest.emit(outwardRequest);\n cancelled = request.cancelled;\n },\n });\n state.request(keys, reason, source);\n if (cancelled) return;\n this.value.set(outward(keys));\n this.onChange(outward(keys));\n this.onTouched();\n }\n\n private requestExpanded(\n keys: readonly string[],\n reason: TreeExpansionRequest['reason'],\n source: unknown,\n ) {\n let cancelled = false;\n const state = createControllable<readonly string[]>({\n initial: this.expandedKeys(),\n equals: same,\n onRequest: (request) => {\n this.expandedKeysRequest.emit(request);\n cancelled = request.cancelled;\n },\n });\n state.request(keys, reason, source);\n if (!cancelled) this.expandedKeys.set(keys);\n }\n\n private requestActive(key: string | null, reason: TreeActiveRequest['reason'], source: unknown) {\n let cancelled = false;\n const state = createControllable<string | null>({\n initial: this.activeKey(),\n onRequest: (request) => {\n this.activeKeyRequest.emit(request);\n cancelled = request.cancelled;\n },\n });\n state.request(key, reason, source);\n if (!cancelled) this.activeKey.set(key);\n }\n\n private setExpanded(\n key: string,\n open: boolean,\n reason: 'pointer' | 'keyboard' | 'programmatic',\n source: unknown,\n ) {\n const held = this.expandedKeys();\n if (held.includes(key) === open) return;\n const next = open ? [...held, key] : held.filter((candidate) => candidate !== key);\n\n /* Closing a branch that holds the active node moves the active node to the\n branch, and that request goes out first: a consumer that accepts one and\n refuses the other is left with a coherent pair, where the reverse order\n would strand the keyboard on an element the next render removes. */\n const active = this.activeKey();\n if (!open && active !== null && active !== key) {\n const rows = this.readRows();\n const index = rows.findIndex((row) => row.key === key);\n if (index !== -1 && this.renderedDescendants(rows, index).includes(active)) {\n this.requestActive(key, reason === 'programmatic' ? 'programmatic' : reason, source);\n }\n }\n this.requestExpanded(next, reason, source);\n }\n\n private applySelection(\n key: string,\n event: Event | undefined,\n intent: 'toggle' | 'replace' | 'range' | 'all' | 'clear',\n reason: 'pointer' | 'keyboard',\n ) {\n if (this.selection() === 'none' || this.readOnly()) return;\n const held = this.collection();\n const rows = this.readRows();\n\n if (\n this.selectionCascade() === 'descendants' &&\n held !== undefined &&\n (intent === 'toggle' || intent === 'replace')\n ) {\n const result = cascadeSelection({\n collection: held,\n selected: this.selected(),\n key,\n action: 'toggle',\n });\n if (result.changed) this.requestValue(result.selected, reason, event);\n return;\n }\n\n const result = nextSelection({\n action: intent,\n mode: this.selection(),\n behavior: this.selectionBehavior(),\n selected: this.selected(),\n keys: rows.filter((row) => !row.disabled).map((row) => row.key),\n key,\n anchor: this.anchor ?? key,\n disabled: (candidate) => rows.find((row) => row.key === candidate)?.disabled === true,\n disallowEmpty: this.disallowEmptySelection(),\n disallowSelectAll: this.disallowSelectAll(),\n });\n this.anchor = result.anchor;\n if (result.changed) this.requestValue(result.selected, reason, event);\n }\n\n /* ── The pointer ────────────────────────────────────────────────────── */\n\n press(key: string, event: MouseEvent) {\n if (this.treeDisabled()) return;\n const rows = this.readRows();\n const row = rows.find((candidate) => candidate.key === key);\n if (row === undefined || row.disabled) return;\n\n this.requestActive(key, 'pointer', event);\n if (row.branch && this.expandOn() === 'row') {\n this.setExpanded(key, !this.isExpanded(key), 'pointer', event);\n }\n if (this.selection() !== 'none') {\n const intent = event.shiftKey\n ? 'range'\n : event.ctrlKey || event.metaKey\n ? 'toggle'\n : this.selectionBehavior() === 'replace'\n ? 'replace'\n : 'toggle';\n this.applySelection(key, event, intent, 'pointer');\n }\n this.nodeActivate.emit({ key, reason: 'pointer' });\n }\n\n pressExpander(key: string, event: MouseEvent) {\n if (this.treeDisabled()) return;\n this.requestActive(key, 'pointer', event);\n this.setExpanded(key, !this.isExpanded(key), 'pointer', event);\n }\n\n pressIndicator(key: string, event: MouseEvent) {\n if (this.treeDisabled()) return;\n this.requestActive(key, 'pointer', event);\n this.applySelection(key, event, 'toggle', 'pointer');\n }\n\n /* ── The keyboard ───────────────────────────────────────────────────── */\n\n private moveTo(rows: readonly Row[], index: number, event: KeyboardEvent) {\n const row = rows[index];\n if (row === undefined) return;\n this.requestActive(row.key, 'keyboard', event);\n row.element.focus();\n if (this.selectOnFocus()) this.applySelection(row.key, event, 'replace', 'keyboard');\n }\n\n private move(rows: readonly Row[], intent: MoveIntent, event: KeyboardEvent) {\n const next = moveIndex({\n enabled: rows.map((row) => this.navigateDisabled() || !row.disabled),\n from: rows.findIndex((row) => row.key === this.activeKey()),\n intent,\n loop: this.loop(),\n page: this.pageSize(),\n });\n if (next !== -1) this.moveTo(rows, next, event);\n }\n\n protected onKeyDown(event: KeyboardEvent) {\n if (event.defaultPrevented || this.treeDisabled()) return;\n /* Arrow navigation stands down while focus is inside a control the reader\n is typing in, which is what makes an inline rename composable. */\n const target = event.target as HTMLElement;\n if (target.closest('input, textarea, [contenteditable=\"true\"]') !== null) return;\n\n const rows = this.readRows();\n if (rows.length === 0) return;\n const index = rows.findIndex((row) => row.key === this.activeKey());\n const row = index === -1 ? undefined : (rows[index] as Row);\n const canvas = this.canvas();\n const rtl = canvas !== null && getComputedStyle(canvas).direction === 'rtl';\n const forward = rtl ? 'ArrowLeft' : 'ArrowRight';\n const backward = rtl ? 'ArrowRight' : 'ArrowLeft';\n const take = () => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n take();\n const intent: MoveIntent = event.key === 'ArrowDown' ? 'next' : 'previous';\n if (event.shiftKey && this.selection() === 'multiple') {\n const next = moveIndex({\n enabled: rows.map((candidate) => this.navigateDisabled() || !candidate.disabled),\n from: index,\n intent,\n loop: this.loop(),\n });\n if (next !== -1) {\n this.moveTo(rows, next, event);\n this.applySelection((rows[next] as Row).key, event, 'toggle', 'keyboard');\n }\n return;\n }\n this.move(rows, intent, event);\n return;\n }\n\n if (event.key === 'Home' || event.key === 'End') {\n take();\n const edge = event.key === 'Home' ? 0 : rows.length - 1;\n if (event.ctrlKey && event.shiftKey && row !== undefined) {\n this.anchor = (rows[edge] as Row).key;\n this.applySelection(row.key, event, 'range', 'keyboard');\n return;\n }\n this.move(rows, event.key === 'Home' ? 'first' : 'last', event);\n return;\n }\n\n if (event.key === 'PageDown' || event.key === 'PageUp') {\n take();\n this.move(rows, event.key === 'PageDown' ? 'pageDown' : 'pageUp', event);\n return;\n }\n\n if (event.key === forward) {\n take();\n if (row === undefined || !row.branch) return;\n if (!this.isExpanded(row.key)) {\n this.setExpanded(row.key, true, 'keyboard', event);\n return;\n }\n if (index + 1 < rows.length && (rows[index + 1] as Row).depth > row.depth) {\n this.moveTo(rows, index + 1, event);\n }\n return;\n }\n\n if (event.key === backward) {\n take();\n if (row === undefined) return;\n if (row.branch && this.isExpanded(row.key)) {\n this.setExpanded(row.key, false, 'keyboard', event);\n return;\n }\n const parent = this.parentOf(rows, index);\n if (parent !== -1) this.moveTo(rows, parent, event);\n return;\n }\n\n if (event.key === 'Enter') {\n take();\n if (row === undefined) return;\n if (row.branch && this.expandOn() === 'row') {\n this.setExpanded(row.key, !this.isExpanded(row.key), 'keyboard', event);\n }\n if (this.selection() !== 'none') this.applySelection(row.key, event, 'replace', 'keyboard');\n this.nodeActivate.emit({ key: row.key, reason: 'keyboard' });\n return;\n }\n\n if (event.key === ' ') {\n take();\n if (row === undefined) return;\n this.applySelection(row.key, event, event.shiftKey ? 'range' : 'toggle', 'keyboard');\n return;\n }\n\n if ((event.key === 'a' || event.key === 'A') && (event.ctrlKey || event.metaKey)) {\n take();\n this.applySelection(row?.key ?? '', event, 'all', 'keyboard');\n return;\n }\n\n if (event.key === '*') {\n take();\n if (row === undefined) return;\n const parent = this.parentOf(rows, index);\n const siblings = rows\n .filter(\n (candidate, step) =>\n candidate.depth === row.depth && this.parentOf(rows, step) === parent,\n )\n .filter((candidate) => candidate.branch)\n .map((candidate) => candidate.key);\n const next = [...new Set([...this.expandedKeys(), ...siblings])];\n if (!same(next, this.expandedKeys())) this.requestExpanded(next, 'keyboard', event);\n return;\n }\n\n if (!this.typeahead() || !isPrintable(event.key) || event.ctrlKey || event.metaKey) return;\n const match = this.typeaheadHandle.match(\n event.key,\n rows.map((candidate) => candidate.label),\n index,\n );\n if (match === -1) return;\n take();\n this.moveTo(rows, match, event);\n }\n\n protected onFocusIn(event: FocusEvent) {\n if (event.target !== this.canvas() || this.mode() === 'activedescendant') return;\n const rows = this.readRows();\n /* The pattern: the selected node when there is one, otherwise the first. */\n const wanted =\n rows.find((row) => this.isSelected(row.key) && !row.disabled) ??\n rows.find((row) => !row.disabled);\n if (wanted === undefined) return;\n this.requestActive(wanted.key, 'keyboard', event);\n wanted.element.focus();\n }\n\n /* ── The imperative surface ─────────────────────────────────────────── */\n\n focus() {\n const rows = this.readRows();\n const wanted = rows.find((row) => row.key === this.activeKey()) ?? rows[0];\n (wanted?.element ?? this.canvas())?.focus();\n }\n\n expand(key: string) {\n const held = this.collection();\n const path = held === undefined ? [] : held.ancestorsOf(key);\n const next = [...new Set([...this.expandedKeys(), ...path, key])];\n if (!same(next, this.expandedKeys())) this.requestExpanded(next, 'programmatic', undefined);\n }\n\n collapse(key: string) {\n this.setExpanded(key, false, 'programmatic', undefined);\n }\n\n expandAll() {\n const held = this.collection();\n if (held === undefined) return;\n this.requestExpanded(held.branchKeys, 'programmatic', undefined);\n }\n\n collapseAll() {\n this.requestExpanded([], 'programmatic', undefined);\n }\n\n scrollToKey(key: string, align: TreeAlignment = 'nearest') {\n this.expand(key);\n const row = this.readRows().find((candidate) => candidate.key === key);\n row?.element.scrollIntoView({ block: align === 'nearest' ? 'nearest' : align });\n }\n\n /* ── Reactive Forms ─────────────────────────────────────────────────── */\n\n private readonly formDisabled = signal(false);\n private onChange: (value: TreeValue) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: TreeValue) {\n this.value.set(value ?? null);\n }\n\n registerOnChange(fn: (value: TreeValue) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(state: boolean) {\n this.formDisabled.set(state);\n }\n\n /**\n * The family owns validity only for `required`, which is the one rule it can\n * decide from the value alone: everything else about a hierarchy is the\n * consumer's own.\n */\n validate(control: AbstractControl): ValidationErrors | null {\n if (!this.required()) return null;\n return toKeys(control.value as TreeValue).length === 0 ? { required: true } : null;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}