snice 4.8.0 → 4.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (315) hide show
  1. package/adapters/react/camera-annotate.d.ts +27 -0
  2. package/adapters/react/camera-annotate.d.ts.map +1 -0
  3. package/adapters/react/camera-annotate.js +24 -0
  4. package/adapters/react/camera-annotate.js.map +1 -0
  5. package/adapters/react/camera-annotate.tsx +35 -0
  6. package/adapters/react/candlestick.d.ts +34 -0
  7. package/adapters/react/candlestick.d.ts.map +1 -0
  8. package/adapters/react/candlestick.js +24 -0
  9. package/adapters/react/candlestick.js.map +1 -0
  10. package/adapters/react/candlestick.tsx +42 -0
  11. package/adapters/react/components.d.ts +14 -0
  12. package/adapters/react/components.d.ts.map +1 -1
  13. package/adapters/react/components.js +7 -0
  14. package/adapters/react/components.js.map +1 -1
  15. package/adapters/react/components.ts +14 -0
  16. package/adapters/react/funnel.d.ts +31 -0
  17. package/adapters/react/funnel.d.ts.map +1 -0
  18. package/adapters/react/funnel.js +24 -0
  19. package/adapters/react/funnel.js.map +1 -0
  20. package/adapters/react/funnel.tsx +39 -0
  21. package/adapters/react/network-graph.d.ts +32 -0
  22. package/adapters/react/network-graph.d.ts.map +1 -0
  23. package/adapters/react/network-graph.js +24 -0
  24. package/adapters/react/network-graph.js.map +1 -0
  25. package/adapters/react/network-graph.tsx +40 -0
  26. package/adapters/react/sankey.d.ts +31 -0
  27. package/adapters/react/sankey.d.ts.map +1 -0
  28. package/adapters/react/sankey.js +24 -0
  29. package/adapters/react/sankey.js.map +1 -0
  30. package/adapters/react/sankey.tsx +39 -0
  31. package/adapters/react/time-range-picker.d.ts +33 -0
  32. package/adapters/react/time-range-picker.d.ts.map +1 -0
  33. package/adapters/react/time-range-picker.js +24 -0
  34. package/adapters/react/time-range-picker.js.map +1 -0
  35. package/adapters/react/time-range-picker.tsx +41 -0
  36. package/adapters/react/treemap.d.ts +30 -0
  37. package/adapters/react/treemap.d.ts.map +1 -0
  38. package/adapters/react/treemap.js +24 -0
  39. package/adapters/react/treemap.js.map +1 -0
  40. package/adapters/react/treemap.tsx +38 -0
  41. package/adapters/react/virtual-scroller.d.ts +1 -0
  42. package/adapters/react/virtual-scroller.d.ts.map +1 -1
  43. package/adapters/react/virtual-scroller.js +1 -1
  44. package/adapters/react/virtual-scroller.js.map +1 -1
  45. package/adapters/react/virtual-scroller.tsx +2 -1
  46. package/dist/cdn/accordion/snice-accordion.js +1 -1
  47. package/dist/cdn/accordion/snice-accordion.min.js +1 -1
  48. package/dist/cdn/alert/snice-alert.js +1 -1
  49. package/dist/cdn/alert/snice-alert.min.js +1 -1
  50. package/dist/cdn/audio-recorder/snice-audio-recorder.js +1 -1
  51. package/dist/cdn/audio-recorder/snice-audio-recorder.min.js +1 -1
  52. package/dist/cdn/avatar/snice-avatar.js +1 -1
  53. package/dist/cdn/avatar/snice-avatar.min.js +1 -1
  54. package/dist/cdn/badge/snice-badge.js +1 -1
  55. package/dist/cdn/badge/snice-badge.min.js +1 -1
  56. package/dist/cdn/banner/snice-banner.js +1 -1
  57. package/dist/cdn/banner/snice-banner.min.js +1 -1
  58. package/dist/cdn/breadcrumbs/snice-breadcrumbs.js +2 -2
  59. package/dist/cdn/breadcrumbs/snice-breadcrumbs.js.map +1 -1
  60. package/dist/cdn/breadcrumbs/snice-breadcrumbs.min.js +13 -13
  61. package/dist/cdn/breadcrumbs/snice-breadcrumbs.min.js.map +1 -1
  62. package/dist/cdn/button/snice-button.js +1 -1
  63. package/dist/cdn/button/snice-button.min.js +1 -1
  64. package/dist/cdn/calendar/snice-calendar.js +1 -1
  65. package/dist/cdn/calendar/snice-calendar.min.js +1 -1
  66. package/dist/cdn/camera/snice-camera.js +1 -1
  67. package/dist/cdn/camera/snice-camera.min.js +1 -1
  68. package/dist/cdn/camera-annotate/README.md +27 -0
  69. package/dist/cdn/camera-annotate/snice-camera-annotate.js +730 -0
  70. package/dist/cdn/camera-annotate/snice-camera-annotate.js.map +1 -0
  71. package/dist/cdn/camera-annotate/snice-camera-annotate.min.js +144 -0
  72. package/dist/cdn/camera-annotate/snice-camera-annotate.min.js.map +1 -0
  73. package/dist/cdn/candlestick/README.md +27 -0
  74. package/dist/cdn/candlestick/snice-candlestick.js +717 -0
  75. package/dist/cdn/candlestick/snice-candlestick.js.map +1 -0
  76. package/dist/cdn/candlestick/snice-candlestick.min.js +22 -0
  77. package/dist/cdn/candlestick/snice-candlestick.min.js.map +1 -0
  78. package/dist/cdn/card/snice-card.js +1 -1
  79. package/dist/cdn/card/snice-card.min.js +1 -1
  80. package/dist/cdn/carousel/snice-carousel.js +1 -1
  81. package/dist/cdn/carousel/snice-carousel.min.js +1 -1
  82. package/dist/cdn/chart/snice-chart.js +1 -1
  83. package/dist/cdn/chart/snice-chart.min.js +1 -1
  84. package/dist/cdn/chat/snice-chat.js +1 -1
  85. package/dist/cdn/chat/snice-chat.min.js +1 -1
  86. package/dist/cdn/checkbox/snice-checkbox.js +1 -1
  87. package/dist/cdn/checkbox/snice-checkbox.min.js +1 -1
  88. package/dist/cdn/chip/snice-chip.js +1 -1
  89. package/dist/cdn/chip/snice-chip.min.js +1 -1
  90. package/dist/cdn/code-block/snice-code-block.js +1 -1
  91. package/dist/cdn/code-block/snice-code-block.min.js +1 -1
  92. package/dist/cdn/color-display/snice-color-display.js +1 -1
  93. package/dist/cdn/color-display/snice-color-display.min.js +1 -1
  94. package/dist/cdn/color-picker/snice-color-picker.js +1 -1
  95. package/dist/cdn/color-picker/snice-color-picker.min.js +1 -1
  96. package/dist/cdn/command-palette/snice-command-palette.js +1 -1
  97. package/dist/cdn/command-palette/snice-command-palette.min.js +1 -1
  98. package/dist/cdn/date-picker/snice-date-picker.js +1 -1
  99. package/dist/cdn/date-picker/snice-date-picker.min.js +1 -1
  100. package/dist/cdn/divider/snice-divider.js +1 -1
  101. package/dist/cdn/divider/snice-divider.min.js +1 -1
  102. package/dist/cdn/doc/snice-doc.js +1 -1
  103. package/dist/cdn/doc/snice-doc.min.js +1 -1
  104. package/dist/cdn/draw/snice-draw.js +1 -1
  105. package/dist/cdn/draw/snice-draw.min.js +1 -1
  106. package/dist/cdn/drawer/snice-drawer.js +1 -1
  107. package/dist/cdn/drawer/snice-drawer.min.js +1 -1
  108. package/dist/cdn/empty-state/snice-empty-state.js +1 -1
  109. package/dist/cdn/empty-state/snice-empty-state.min.js +1 -1
  110. package/dist/cdn/file-gallery/snice-file-gallery.js +1 -1
  111. package/dist/cdn/file-gallery/snice-file-gallery.min.js +1 -1
  112. package/dist/cdn/file-upload/snice-file-upload.js +1 -1
  113. package/dist/cdn/file-upload/snice-file-upload.min.js +1 -1
  114. package/dist/cdn/funnel/README.md +27 -0
  115. package/dist/cdn/funnel/snice-funnel.js +424 -0
  116. package/dist/cdn/funnel/snice-funnel.js.map +1 -0
  117. package/dist/cdn/funnel/snice-funnel.min.js +20 -0
  118. package/dist/cdn/funnel/snice-funnel.min.js.map +1 -0
  119. package/dist/cdn/gauge/snice-gauge.js +1 -1
  120. package/dist/cdn/gauge/snice-gauge.min.js +1 -1
  121. package/dist/cdn/heatmap/snice-heatmap.js +1 -1
  122. package/dist/cdn/heatmap/snice-heatmap.min.js +1 -1
  123. package/dist/cdn/image/snice-image.js +1 -1
  124. package/dist/cdn/image/snice-image.min.js +1 -1
  125. package/dist/cdn/input/snice-input.js +1 -1
  126. package/dist/cdn/input/snice-input.min.js +1 -1
  127. package/dist/cdn/kanban/snice-kanban.js +1 -1
  128. package/dist/cdn/kanban/snice-kanban.min.js +1 -1
  129. package/dist/cdn/kpi/snice-kpi.js +1 -1
  130. package/dist/cdn/kpi/snice-kpi.min.js +1 -1
  131. package/dist/cdn/layout/README.md +2 -2
  132. package/dist/cdn/layout/snice-layout.js +23 -6
  133. package/dist/cdn/layout/snice-layout.js.map +1 -1
  134. package/dist/cdn/layout/snice-layout.min.js +2 -2
  135. package/dist/cdn/layout/snice-layout.min.js.map +1 -1
  136. package/dist/cdn/link/snice-link.js +1 -1
  137. package/dist/cdn/link/snice-link.min.js +1 -1
  138. package/dist/cdn/link-preview/snice-link-preview.js +1 -1
  139. package/dist/cdn/link-preview/snice-link-preview.min.js +1 -1
  140. package/dist/cdn/list/README.md +6 -2
  141. package/dist/cdn/list/snice-list.js +87 -10
  142. package/dist/cdn/list/snice-list.js.map +1 -1
  143. package/dist/cdn/list/snice-list.min.js +20 -6
  144. package/dist/cdn/list/snice-list.min.js.map +1 -1
  145. package/dist/cdn/location/snice-location.js +1 -1
  146. package/dist/cdn/location/snice-location.min.js +1 -1
  147. package/dist/cdn/login/snice-login.js +1 -1
  148. package/dist/cdn/login/snice-login.min.js +1 -1
  149. package/dist/cdn/masonry/snice-masonry.js +1 -1
  150. package/dist/cdn/masonry/snice-masonry.min.js +1 -1
  151. package/dist/cdn/menu/snice-menu.js +1 -1
  152. package/dist/cdn/menu/snice-menu.min.js +1 -1
  153. package/dist/cdn/modal/snice-modal.js +1 -1
  154. package/dist/cdn/modal/snice-modal.min.js +1 -1
  155. package/dist/cdn/music-player/snice-music-player.js +1 -1
  156. package/dist/cdn/music-player/snice-music-player.min.js +1 -1
  157. package/dist/cdn/nav/README.md +2 -2
  158. package/dist/cdn/nav/snice-nav.js +23 -6
  159. package/dist/cdn/nav/snice-nav.js.map +1 -1
  160. package/dist/cdn/nav/snice-nav.min.js +2 -2
  161. package/dist/cdn/nav/snice-nav.min.js.map +1 -1
  162. package/dist/cdn/network-graph/README.md +27 -0
  163. package/dist/cdn/network-graph/snice-network-graph.js +788 -0
  164. package/dist/cdn/network-graph/snice-network-graph.js.map +1 -0
  165. package/dist/cdn/network-graph/snice-network-graph.min.js +13 -0
  166. package/dist/cdn/network-graph/snice-network-graph.min.js.map +1 -0
  167. package/dist/cdn/pagination/README.md +2 -2
  168. package/dist/cdn/pagination/snice-pagination.js +13 -13
  169. package/dist/cdn/pagination/snice-pagination.js.map +1 -1
  170. package/dist/cdn/pagination/snice-pagination.min.js +14 -14
  171. package/dist/cdn/pagination/snice-pagination.min.js.map +1 -1
  172. package/dist/cdn/paint/snice-paint.js +1 -1
  173. package/dist/cdn/paint/snice-paint.min.js +1 -1
  174. package/dist/cdn/progress/snice-progress.js +1 -1
  175. package/dist/cdn/progress/snice-progress.min.js +1 -1
  176. package/dist/cdn/qr-code/snice-qr-code.js +1 -1
  177. package/dist/cdn/qr-code/snice-qr-code.min.js +1 -1
  178. package/dist/cdn/qr-reader/snice-qr-reader.js +1 -1
  179. package/dist/cdn/qr-reader/snice-qr-reader.min.js +1 -1
  180. package/dist/cdn/radio/snice-radio.js +1 -1
  181. package/dist/cdn/radio/snice-radio.min.js +1 -1
  182. package/dist/cdn/runtime/snice-runtime.esm.js +3 -3
  183. package/dist/cdn/runtime/snice-runtime.esm.js.map +1 -1
  184. package/dist/cdn/runtime/snice-runtime.esm.min.js +3 -3
  185. package/dist/cdn/runtime/snice-runtime.esm.min.js.map +1 -1
  186. package/dist/cdn/runtime/snice-runtime.js +3 -3
  187. package/dist/cdn/runtime/snice-runtime.js.map +1 -1
  188. package/dist/cdn/runtime/snice-runtime.min.js +3 -3
  189. package/dist/cdn/runtime/snice-runtime.min.js.map +1 -1
  190. package/dist/cdn/sankey/README.md +27 -0
  191. package/dist/cdn/sankey/snice-sankey.js +679 -0
  192. package/dist/cdn/sankey/snice-sankey.js.map +1 -0
  193. package/dist/cdn/sankey/snice-sankey.min.js +21 -0
  194. package/dist/cdn/sankey/snice-sankey.min.js.map +1 -0
  195. package/dist/cdn/select/snice-select.js +1 -1
  196. package/dist/cdn/select/snice-select.min.js +1 -1
  197. package/dist/cdn/skeleton/snice-skeleton.js +1 -1
  198. package/dist/cdn/skeleton/snice-skeleton.min.js +1 -1
  199. package/dist/cdn/slider/snice-slider.js +1 -1
  200. package/dist/cdn/slider/snice-slider.min.js +1 -1
  201. package/dist/cdn/sparkline/snice-sparkline.js +1 -1
  202. package/dist/cdn/sparkline/snice-sparkline.min.js +1 -1
  203. package/dist/cdn/spinner/snice-spinner.js +1 -1
  204. package/dist/cdn/spinner/snice-spinner.min.js +1 -1
  205. package/dist/cdn/split-pane/snice-split-pane.js +1 -1
  206. package/dist/cdn/split-pane/snice-split-pane.min.js +1 -1
  207. package/dist/cdn/stepper/README.md +6 -2
  208. package/dist/cdn/stepper/snice-stepper.js +77 -10
  209. package/dist/cdn/stepper/snice-stepper.js.map +1 -1
  210. package/dist/cdn/stepper/snice-stepper.min.js +13 -9
  211. package/dist/cdn/stepper/snice-stepper.min.js.map +1 -1
  212. package/dist/cdn/switch/snice-switch.js +1 -1
  213. package/dist/cdn/switch/snice-switch.min.js +1 -1
  214. package/dist/cdn/table/snice-table.js +1 -1
  215. package/dist/cdn/table/snice-table.min.js +1 -1
  216. package/dist/cdn/tabs/snice-tabs.js +1 -1
  217. package/dist/cdn/tabs/snice-tabs.min.js +1 -1
  218. package/dist/cdn/terminal/snice-terminal.js +1 -1
  219. package/dist/cdn/terminal/snice-terminal.min.js +1 -1
  220. package/dist/cdn/textarea/snice-textarea.js +1 -1
  221. package/dist/cdn/textarea/snice-textarea.min.js +1 -1
  222. package/dist/cdn/time-range-picker/README.md +27 -0
  223. package/dist/cdn/time-range-picker/snice-time-range-picker.js +635 -0
  224. package/dist/cdn/time-range-picker/snice-time-range-picker.js.map +1 -0
  225. package/dist/cdn/time-range-picker/snice-time-range-picker.min.js +34 -0
  226. package/dist/cdn/time-range-picker/snice-time-range-picker.min.js.map +1 -0
  227. package/dist/cdn/timeline/snice-timeline.js +1 -1
  228. package/dist/cdn/timeline/snice-timeline.min.js +1 -1
  229. package/dist/cdn/timer/snice-timer.js +1 -1
  230. package/dist/cdn/timer/snice-timer.min.js +1 -1
  231. package/dist/cdn/toast/snice-toast.js +1 -1
  232. package/dist/cdn/toast/snice-toast.min.js +1 -1
  233. package/dist/cdn/tooltip/snice-tooltip.js +1 -1
  234. package/dist/cdn/tooltip/snice-tooltip.min.js +1 -1
  235. package/dist/cdn/tree/README.md +5 -1
  236. package/dist/cdn/tree/snice-tree.js +4 -8
  237. package/dist/cdn/tree/snice-tree.js.map +1 -1
  238. package/dist/cdn/tree/snice-tree.min.js +5 -5
  239. package/dist/cdn/tree/snice-tree.min.js.map +1 -1
  240. package/dist/cdn/treemap/README.md +27 -0
  241. package/dist/cdn/treemap/snice-treemap.js +522 -0
  242. package/dist/cdn/treemap/snice-treemap.js.map +1 -0
  243. package/dist/cdn/treemap/snice-treemap.min.js +14 -0
  244. package/dist/cdn/treemap/snice-treemap.min.js.map +1 -0
  245. package/dist/cdn/virtual-scroller/README.md +2 -2
  246. package/dist/cdn/virtual-scroller/snice-virtual-scroller.js +47 -16
  247. package/dist/cdn/virtual-scroller/snice-virtual-scroller.js.map +1 -1
  248. package/dist/cdn/virtual-scroller/snice-virtual-scroller.min.js +9 -9
  249. package/dist/cdn/virtual-scroller/snice-virtual-scroller.min.js.map +1 -1
  250. package/dist/components/breadcrumbs/snice-breadcrumbs.js +1 -1
  251. package/dist/components/breadcrumbs/snice-breadcrumbs.js.map +1 -1
  252. package/dist/components/camera-annotate/snice-camera-annotate.d.ts +68 -0
  253. package/dist/components/camera-annotate/snice-camera-annotate.js +663 -0
  254. package/dist/components/camera-annotate/snice-camera-annotate.js.map +1 -0
  255. package/dist/components/camera-annotate/snice-camera-annotate.types.d.ts +50 -0
  256. package/dist/components/candlestick/snice-candlestick.d.ts +78 -0
  257. package/dist/components/candlestick/snice-candlestick.js +650 -0
  258. package/dist/components/candlestick/snice-candlestick.js.map +1 -0
  259. package/dist/components/candlestick/snice-candlestick.types.d.ts +40 -0
  260. package/dist/components/funnel/snice-funnel.d.ts +37 -0
  261. package/dist/components/funnel/snice-funnel.js +357 -0
  262. package/dist/components/funnel/snice-funnel.js.map +1 -0
  263. package/dist/components/funnel/snice-funnel.types.d.ts +28 -0
  264. package/dist/components/list/snice-list-item.d.ts +2 -0
  265. package/dist/components/list/snice-list-item.js +20 -2
  266. package/dist/components/list/snice-list-item.js.map +1 -1
  267. package/dist/components/nav/snice-nav.js +22 -5
  268. package/dist/components/nav/snice-nav.js.map +1 -1
  269. package/dist/components/network-graph/snice-network-graph.d.ts +80 -0
  270. package/dist/components/network-graph/snice-network-graph.js +721 -0
  271. package/dist/components/network-graph/snice-network-graph.js.map +1 -0
  272. package/dist/components/network-graph/snice-network-graph.types.d.ts +49 -0
  273. package/dist/components/pagination/snice-pagination.js +12 -12
  274. package/dist/components/sankey/snice-sankey.d.ts +46 -0
  275. package/dist/components/sankey/snice-sankey.js +612 -0
  276. package/dist/components/sankey/snice-sankey.js.map +1 -0
  277. package/dist/components/sankey/snice-sankey.types.d.ts +59 -0
  278. package/dist/components/stepper/snice-stepper.js +9 -3
  279. package/dist/components/stepper/snice-stepper.js.map +1 -1
  280. package/dist/components/time-range-picker/snice-time-range-picker.d.ts +67 -0
  281. package/dist/components/time-range-picker/snice-time-range-picker.js +568 -0
  282. package/dist/components/time-range-picker/snice-time-range-picker.js.map +1 -0
  283. package/dist/components/time-range-picker/snice-time-range-picker.types.d.ts +39 -0
  284. package/dist/components/treemap/snice-treemap.d.ts +49 -0
  285. package/dist/components/treemap/snice-treemap.js +455 -0
  286. package/dist/components/treemap/snice-treemap.js.map +1 -0
  287. package/dist/components/treemap/snice-treemap.types.d.ts +42 -0
  288. package/dist/components/virtual-scroller/snice-virtual-scroller.d.ts +5 -0
  289. package/dist/components/virtual-scroller/snice-virtual-scroller.js +47 -16
  290. package/dist/components/virtual-scroller/snice-virtual-scroller.js.map +1 -1
  291. package/dist/index.cjs +1 -1
  292. package/dist/index.cjs.map +1 -1
  293. package/dist/index.esm.js +1 -1
  294. package/dist/index.esm.js.map +1 -1
  295. package/dist/index.iife.js +1 -1
  296. package/dist/index.iife.js.map +1 -1
  297. package/dist/symbols.cjs +1 -1
  298. package/dist/symbols.esm.js +1 -1
  299. package/dist/transitions.cjs +1 -1
  300. package/dist/transitions.esm.js +1 -1
  301. package/docs/ai/components/camera-annotate.md +82 -0
  302. package/docs/ai/components/candlestick.md +79 -0
  303. package/docs/ai/components/funnel.md +86 -0
  304. package/docs/ai/components/network-graph.md +87 -0
  305. package/docs/ai/components/sankey.md +63 -0
  306. package/docs/ai/components/time-range-picker.md +78 -0
  307. package/docs/ai/components/treemap.md +78 -0
  308. package/docs/components/camera-annotate.md +186 -0
  309. package/docs/components/candlestick.md +196 -0
  310. package/docs/components/funnel.md +191 -0
  311. package/docs/components/network-graph.md +215 -0
  312. package/docs/components/sankey.md +201 -0
  313. package/docs/components/time-range-picker.md +213 -0
  314. package/docs/components/treemap.md +198 -0
  315. package/package.json +1 -1
@@ -1,11 +1,11 @@
1
1
  /*!
2
- * snice v4.7.0
2
+ * snice v4.8.0
3
3
  * Imperative TypeScript framework for building vanilla web components with decorators, differential rendering, routing, and controllers. No virtual DOM, no build complexity.
4
4
  * (c) 2024
5
5
  * Released under the MIT License.
6
6
  */
7
- void 0===globalThis.Snice&&console.warn("[snice] snice-runtime.min.js must be loaded before snice-tree.min.js");var SniceTree=function(e,t){"use strict";function i(e,t,i,s,n,a){function o(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var c,d=s.kind,l="getter"===d?"get":"setter"===d?"set":"value",r=!t&&e?s.static?e:e.prototype:null,h=t||(r?Object.getOwnPropertyDescriptor(r,s.name):{}),p=!1,m=i.length-1;m>=0;m--){var u={};for(var b in s)u[b]="access"===b?{}:s[b];for(var b in s.access)u.access[b]=s.access[b];u.addInitializer=function(e){if(p)throw new TypeError("Cannot add initializers after decoration has completed");a.push(o(e||null))};var g=(0,i[m])("accessor"===d?{get:h.get,set:h.set}:h[l],u);if("accessor"===d){if(void 0===g)continue;if(null===g||"object"!=typeof g)throw new TypeError("Object expected");(c=o(g.get))&&(h.get=c),(c=o(g.set))&&(h.set=c),(c=o(g.init))&&n.unshift(c)}else(c=o(g))&&("field"===d?n.unshift(c):h[l]=c)}r&&Object.defineProperty(r,s.name,h),p=!0}function s(e,t,i){for(var s=arguments.length>2,n=0;n<t.length;n++)i=s?t[n].call(e,i):t[n].call(e);return s?i:void 0}"function"==typeof SuppressedError&&SuppressedError;(()=>{let e,n,a,o,c,d,l,r,h,p,m,u,b,g,k,v,y,f,x,w,_,C=[t.element("snice-checkbox")],S=[],E=HTMLElement,N=[],I=[],z=[],L=[],A=[],R=[],M=[],q=[],T=[],$=[],O=[],F=[],B=[],j=[],D=[],H=[],P=[],K=[],U=[],V=[],X=[],G=[],J=[],Q=[],W=[],Y=[],Z=[],ee=[],te=[];(class extends E{static{n=this}static{const ie="function"==typeof Symbol&&Symbol.metadata?Object.create(E[Symbol.metadata]??null):void 0;a=[t.property({type:Boolean})],o=[t.property({type:Boolean})],c=[t.property({type:Boolean})],d=[t.property({type:Boolean})],l=[t.property({type:Boolean})],r=[t.property({type:Boolean})],h=[t.property({})],p=[t.property({})],m=[t.property({})],u=[t.property({})],b=[t.query(".checkbox-input")],g=[t.query(".checkbox")],k=[t.query(".checkbox-label")],v=[t.query(".checkbox-wrapper")],y=[t.on("click")],f=[t.render()],x=[t.watch("checked")],w=[t.watch("indeterminate")],_=[t.styles()],i(this,null,y,{kind:"method",name:"handleCheckboxClick",static:!1,private:!1,access:{has:e=>"handleCheckboxClick"in e,get:e=>e.handleCheckboxClick},metadata:ie},null,N),i(this,null,f,{kind:"method",name:"render",static:!1,private:!1,access:{has:e=>"render"in e,get:e=>e.render},metadata:ie},null,N),i(this,null,x,{kind:"method",name:"handleCheckedChange",static:!1,private:!1,access:{has:e=>"handleCheckedChange"in e,get:e=>e.handleCheckedChange},metadata:ie},null,N),i(this,null,w,{kind:"method",name:"handleIndeterminateChange",static:!1,private:!1,access:{has:e=>"handleIndeterminateChange"in e,get:e=>e.handleIndeterminateChange},metadata:ie},null,N),i(this,null,_,{kind:"method",name:"styles",static:!1,private:!1,access:{has:e=>"styles"in e,get:e=>e.styles},metadata:ie},null,N),i(null,null,a,{kind:"field",name:"checked",static:!1,private:!1,access:{has:e=>"checked"in e,get:e=>e.checked,set:(e,t)=>{e.checked=t}},metadata:ie},I,z),i(null,null,o,{kind:"field",name:"indeterminate",static:!1,private:!1,access:{has:e=>"indeterminate"in e,get:e=>e.indeterminate,set:(e,t)=>{e.indeterminate=t}},metadata:ie},L,A),i(null,null,c,{kind:"field",name:"disabled",static:!1,private:!1,access:{has:e=>"disabled"in e,get:e=>e.disabled,set:(e,t)=>{e.disabled=t}},metadata:ie},R,M),i(null,null,d,{kind:"field",name:"loading",static:!1,private:!1,access:{has:e=>"loading"in e,get:e=>e.loading,set:(e,t)=>{e.loading=t}},metadata:ie},q,T),i(null,null,l,{kind:"field",name:"required",static:!1,private:!1,access:{has:e=>"required"in e,get:e=>e.required,set:(e,t)=>{e.required=t}},metadata:ie},$,O),i(null,null,r,{kind:"field",name:"invalid",static:!1,private:!1,access:{has:e=>"invalid"in e,get:e=>e.invalid,set:(e,t)=>{e.invalid=t}},metadata:ie},F,B),i(null,null,h,{kind:"field",name:"size",static:!1,private:!1,access:{has:e=>"size"in e,get:e=>e.size,set:(e,t)=>{e.size=t}},metadata:ie},j,D),i(null,null,p,{kind:"field",name:"name",static:!1,private:!1,access:{has:e=>"name"in e,get:e=>e.name,set:(e,t)=>{e.name=t}},metadata:ie},H,P),i(null,null,m,{kind:"field",name:"value",static:!1,private:!1,access:{has:e=>"value"in e,get:e=>e.value,set:(e,t)=>{e.value=t}},metadata:ie},K,U),i(null,null,u,{kind:"field",name:"label",static:!1,private:!1,access:{has:e=>"label"in e,get:e=>e.label,set:(e,t)=>{e.label=t}},metadata:ie},V,X),i(null,null,b,{kind:"field",name:"input",static:!1,private:!1,access:{has:e=>"input"in e,get:e=>e.input,set:(e,t)=>{e.input=t}},metadata:ie},G,J),i(null,null,g,{kind:"field",name:"checkbox",static:!1,private:!1,access:{has:e=>"checkbox"in e,get:e=>e.checkbox,set:(e,t)=>{e.checkbox=t}},metadata:ie},Q,W),i(null,null,k,{kind:"field",name:"labelElement",static:!1,private:!1,access:{has:e=>"labelElement"in e,get:e=>e.labelElement,set:(e,t)=>{e.labelElement=t}},metadata:ie},Y,Z),i(null,null,v,{kind:"field",name:"wrapper",static:!1,private:!1,access:{has:e=>"wrapper"in e,get:e=>e.wrapper,set:(e,t)=>{e.wrapper=t}},metadata:ie},ee,te),i(null,e={value:n},C,{kind:"class",name:n.name,metadata:ie},null,S),n=e.value,ie&&Object.defineProperty(n,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:ie}),s(n,S)}handleCheckboxClick(){this.disabled||this.loading||this.toggle()}render(){const e=`checkbox-wrapper${this.disabled?" checkbox-wrapper--disabled":""}${this.loading?" checkbox-wrapper--loading":""}`,i=`checkbox checkbox--${this.size}${this.invalid?" checkbox--invalid":""}${this.indeterminate?" checkbox--indeterminate":""}${this.loading?" checkbox--loading":""}`,s=`checkbox-label checkbox-label--${this.size}${this.required?" checkbox-label--required":""}`;return t.html`
8
- <label class="${e}" @change="${e=>this.handleInternalChange(e)}">
7
+ void 0===globalThis.Snice&&console.warn("[snice] snice-runtime.min.js must be loaded before snice-tree.min.js"),function(e){"use strict";function t(e,t,i,s,n,a){function o(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var c,d=s.kind,l="getter"===d?"get":"setter"===d?"set":"value",r=!t&&e?s.static?e:e.prototype:null,h=t||(r?Object.getOwnPropertyDescriptor(r,s.name):{}),p=!1,m=i.length-1;m>=0;m--){var u={};for(var b in s)u[b]="access"===b?{}:s[b];for(var b in s.access)u.access[b]=s.access[b];u.addInitializer=function(e){if(p)throw new TypeError("Cannot add initializers after decoration has completed");a.push(o(e||null))};var g=(0,i[m])("accessor"===d?{get:h.get,set:h.set}:h[l],u);if("accessor"===d){if(void 0===g)continue;if(null===g||"object"!=typeof g)throw new TypeError("Object expected");(c=o(g.get))&&(h.get=c),(c=o(g.set))&&(h.set=c),(c=o(g.init))&&n.unshift(c)}else(c=o(g))&&("field"===d?n.unshift(c):h[l]=c)}r&&Object.defineProperty(r,s.name,h),p=!0}function i(e,t,i){for(var s=arguments.length>2,n=0;n<t.length;n++)i=s?t[n].call(e,i):t[n].call(e);return s?i:void 0}"function"==typeof SuppressedError&&SuppressedError;(()=>{let s,n,a,o,c,d,l,r,h,p,m,u,b,g,k,v,y,f,x,w,_,C=[e.element("snice-checkbox")],S=[],E=HTMLElement,N=[],I=[],z=[],L=[],A=[],R=[],M=[],q=[],T=[],$=[],O=[],F=[],B=[],j=[],D=[],H=[],P=[],K=[],U=[],V=[],X=[],G=[],J=[],Q=[],W=[],Y=[],Z=[],ee=[],te=[];(class extends E{static{n=this}static{const ie="function"==typeof Symbol&&Symbol.metadata?Object.create(E[Symbol.metadata]??null):void 0;a=[e.property({type:Boolean})],o=[e.property({type:Boolean})],c=[e.property({type:Boolean})],d=[e.property({type:Boolean})],l=[e.property({type:Boolean})],r=[e.property({type:Boolean})],h=[e.property({})],p=[e.property({})],m=[e.property({})],u=[e.property({})],b=[e.query(".checkbox-input")],g=[e.query(".checkbox")],k=[e.query(".checkbox-label")],v=[e.query(".checkbox-wrapper")],y=[e.on("click")],f=[e.render()],x=[e.watch("checked")],w=[e.watch("indeterminate")],_=[e.styles()],t(this,null,y,{kind:"method",name:"handleCheckboxClick",static:!1,private:!1,access:{has:e=>"handleCheckboxClick"in e,get:e=>e.handleCheckboxClick},metadata:ie},null,N),t(this,null,f,{kind:"method",name:"render",static:!1,private:!1,access:{has:e=>"render"in e,get:e=>e.render},metadata:ie},null,N),t(this,null,x,{kind:"method",name:"handleCheckedChange",static:!1,private:!1,access:{has:e=>"handleCheckedChange"in e,get:e=>e.handleCheckedChange},metadata:ie},null,N),t(this,null,w,{kind:"method",name:"handleIndeterminateChange",static:!1,private:!1,access:{has:e=>"handleIndeterminateChange"in e,get:e=>e.handleIndeterminateChange},metadata:ie},null,N),t(this,null,_,{kind:"method",name:"styles",static:!1,private:!1,access:{has:e=>"styles"in e,get:e=>e.styles},metadata:ie},null,N),t(null,null,a,{kind:"field",name:"checked",static:!1,private:!1,access:{has:e=>"checked"in e,get:e=>e.checked,set:(e,t)=>{e.checked=t}},metadata:ie},I,z),t(null,null,o,{kind:"field",name:"indeterminate",static:!1,private:!1,access:{has:e=>"indeterminate"in e,get:e=>e.indeterminate,set:(e,t)=>{e.indeterminate=t}},metadata:ie},L,A),t(null,null,c,{kind:"field",name:"disabled",static:!1,private:!1,access:{has:e=>"disabled"in e,get:e=>e.disabled,set:(e,t)=>{e.disabled=t}},metadata:ie},R,M),t(null,null,d,{kind:"field",name:"loading",static:!1,private:!1,access:{has:e=>"loading"in e,get:e=>e.loading,set:(e,t)=>{e.loading=t}},metadata:ie},q,T),t(null,null,l,{kind:"field",name:"required",static:!1,private:!1,access:{has:e=>"required"in e,get:e=>e.required,set:(e,t)=>{e.required=t}},metadata:ie},$,O),t(null,null,r,{kind:"field",name:"invalid",static:!1,private:!1,access:{has:e=>"invalid"in e,get:e=>e.invalid,set:(e,t)=>{e.invalid=t}},metadata:ie},F,B),t(null,null,h,{kind:"field",name:"size",static:!1,private:!1,access:{has:e=>"size"in e,get:e=>e.size,set:(e,t)=>{e.size=t}},metadata:ie},j,D),t(null,null,p,{kind:"field",name:"name",static:!1,private:!1,access:{has:e=>"name"in e,get:e=>e.name,set:(e,t)=>{e.name=t}},metadata:ie},H,P),t(null,null,m,{kind:"field",name:"value",static:!1,private:!1,access:{has:e=>"value"in e,get:e=>e.value,set:(e,t)=>{e.value=t}},metadata:ie},K,U),t(null,null,u,{kind:"field",name:"label",static:!1,private:!1,access:{has:e=>"label"in e,get:e=>e.label,set:(e,t)=>{e.label=t}},metadata:ie},V,X),t(null,null,b,{kind:"field",name:"input",static:!1,private:!1,access:{has:e=>"input"in e,get:e=>e.input,set:(e,t)=>{e.input=t}},metadata:ie},G,J),t(null,null,g,{kind:"field",name:"checkbox",static:!1,private:!1,access:{has:e=>"checkbox"in e,get:e=>e.checkbox,set:(e,t)=>{e.checkbox=t}},metadata:ie},Q,W),t(null,null,k,{kind:"field",name:"labelElement",static:!1,private:!1,access:{has:e=>"labelElement"in e,get:e=>e.labelElement,set:(e,t)=>{e.labelElement=t}},metadata:ie},Y,Z),t(null,null,v,{kind:"field",name:"wrapper",static:!1,private:!1,access:{has:e=>"wrapper"in e,get:e=>e.wrapper,set:(e,t)=>{e.wrapper=t}},metadata:ie},ee,te),t(null,s={value:n},C,{kind:"class",name:n.name,metadata:ie},null,S),n=s.value,ie&&Object.defineProperty(n,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:ie}),i(n,S)}handleCheckboxClick(){this.disabled||this.loading||this.toggle()}render(){const t=`checkbox-wrapper${this.disabled?" checkbox-wrapper--disabled":""}${this.loading?" checkbox-wrapper--loading":""}`,i=`checkbox checkbox--${this.size}${this.invalid?" checkbox--invalid":""}${this.indeterminate?" checkbox--indeterminate":""}${this.loading?" checkbox--loading":""}`,s=`checkbox-label checkbox-label--${this.size}${this.required?" checkbox-label--required":""}`;return e.html`
8
+ <label class="${t}" @change="${e=>this.handleInternalChange(e)}">
9
9
  <input
10
10
  type="checkbox"
11
11
  class="checkbox-input"
@@ -40,7 +40,7 @@ void 0===globalThis.Snice&&console.warn("[snice] snice-runtime.min.js must be lo
40
40
  </span>
41
41
  </if>
42
42
  </label>
43
- `}handleInternalChange(e){const t=e.target;"checkbox"===t.type&&(this.checked=t.checked,this.indeterminate=!1,this.dispatchEvent(new CustomEvent("checkbox-change",{bubbles:!0,composed:!0,detail:{checked:this.checked,indeterminate:this.indeterminate,checkbox:this}})))}handleCheckedChange(){this.input&&(this.input.checked=this.checked)}handleIndeterminateChange(){this.input&&(this.input.indeterminate=this.indeterminate)}styles(){return t.css`${":host{display:inline-block;font-family:var(--snice-font-family)}.checkbox-wrapper{display:inline-flex;align-items:center;position:relative;cursor:pointer;user-select:none;min-height:1.25rem}.checkbox-wrapper--disabled{cursor:not-allowed;opacity:.6}.checkbox-input{position:absolute;opacity:0;left:0;top:0;width:100%;height:100%;margin:0;cursor:pointer;z-index:1;pointer-events:all}.checkbox{position:relative;display:inline-flex;align-items:center;justify-content:center;background:var(--snice-color-background-input);border:2px solid var(--snice-color-border);border-radius:var(--snice-border-radius-sm);transition:all var(--snice-transition-fast) ease}.checkbox--small{width:1rem;height:1rem}.checkbox--medium{width:1.25rem;height:1.25rem}.checkbox--large{width:1.5rem;height:1.5rem}.checkbox-input:checked~.checkbox{background:var(--snice-color-primary);border-color:var(--snice-color-primary)}.checkbox-input:focus-visible~.checkbox{box-shadow:0 0 0 3px var(--snice-focus-ring-color);outline:2px solid var(--snice-color-primary);outline-offset:2px}.checkbox-input:disabled~.checkbox{background:var(--snice-color-background-secondary);border-color:var(--snice-color-border)}.checkbox-input:disabled:checked~.checkbox{background:var(--snice-color-text-secondary);border-color:var(--snice-color-text-secondary)}.checkbox--invalid{border-color:var(--snice-color-danger)}.checkbox-input:checked~.checkbox--invalid{background:var(--snice-color-danger);border-color:var(--snice-color-danger)}.checkbox-icon{position:absolute;display:none;color:var(--snice-color-text-inverse)}.checkbox-input:checked~.checkbox .checkbox-icon--check{display:block}.checkbox--indeterminate .checkbox-icon--check{display:none!important}.checkbox--indeterminate .checkbox-icon--indeterminate{display:block!important}.checkbox--small .checkbox-icon{width:.75rem;height:.75rem}.checkbox--medium .checkbox-icon{width:.875rem;height:.875rem}.checkbox--large .checkbox-icon{width:1.125rem;height:1.125rem}.checkbox-label{margin-left:.5rem;color:var(--snice-color-text);cursor:pointer}.checkbox-label--small{font-size:var(--snice-font-size-sm)}.checkbox-label--medium{font-size:var(--snice-font-size-md)}.checkbox-label--large{font-size:var(--snice-font-size-lg)}.checkbox-wrapper--disabled .checkbox-label{color:var(--snice-color-text-secondary);cursor:not-allowed}.checkbox-label--required::after{content:' *';color:var(--snice-color-danger)}.checkbox-wrapper:not(.checkbox-wrapper--disabled):hover .checkbox{border-color:var(--snice-color-primary)}.checkbox-wrapper:not(.checkbox-wrapper--disabled):hover .checkbox-input:checked~.checkbox{background:var(--snice-color-primary-hover);border-color:var(--snice-color-primary-hover)}.checkbox-wrapper--loading{cursor:wait;opacity:.7}.checkbox--loading{cursor:wait}.checkbox-spinner{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;width:100%;height:100%;pointer-events:none}.checkbox-spinner::after{content:'';display:block;width:.75em;height:.75em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:.6s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}"}`}focus(){this.input?.focus()}blur(){this.input?.blur()}click(){this.input?.click()}toggle(){this.checked=!this.checked,this.indeterminate=!1,this.dispatchEvent(new CustomEvent("checkbox-change",{bubbles:!0,composed:!0,detail:{checked:this.checked,indeterminate:this.indeterminate,checkbox:this}}))}setIndeterminate(){this.indeterminate=!0,this.checked=!1,this.dispatchEvent(new CustomEvent("checkbox-change",{bubbles:!0,composed:!0,detail:{checked:this.checked,indeterminate:this.indeterminate,checkbox:this}}))}constructor(){super(...arguments),this.checked=(s(this,N),s(this,I,!1)),this.indeterminate=(s(this,z),s(this,L,!1)),this.disabled=(s(this,A),s(this,R,!1)),this.loading=(s(this,M),s(this,q,!1)),this.required=(s(this,T),s(this,$,!1)),this.invalid=(s(this,O),s(this,F,!1)),this.size=(s(this,B),s(this,j,"medium")),this.name=(s(this,D),s(this,H,"")),this.value=(s(this,P),s(this,K,"on")),this.label=(s(this,U),s(this,V,"")),this.input=(s(this,X),s(this,G,void 0)),this.checkbox=(s(this,J),s(this,Q,void 0)),this.labelElement=(s(this,W),s(this,Y,void 0)),this.wrapper=(s(this,Z),s(this,ee,void 0)),s(this,te)}})})();(()=>{let e,n,a,o,c,d,l,r,h=[t.element("snice-spinner")],p=[],m=HTMLElement,u=[],b=[],g=[],k=[],v=[],y=[],f=[],x=[],w=[];(class extends m{static{n=this}static{const _="function"==typeof Symbol&&Symbol.metadata?Object.create(m[Symbol.metadata]??null):void 0;a=[t.property({})],o=[t.property({})],c=[t.property({})],d=[t.property({type:Number})],l=[t.render()],r=[t.styles()],i(this,null,l,{kind:"method",name:"render",static:!1,private:!1,access:{has:e=>"render"in e,get:e=>e.render},metadata:_},null,u),i(this,null,r,{kind:"method",name:"styles",static:!1,private:!1,access:{has:e=>"styles"in e,get:e=>e.styles},metadata:_},null,u),i(null,null,a,{kind:"field",name:"size",static:!1,private:!1,access:{has:e=>"size"in e,get:e=>e.size,set:(e,t)=>{e.size=t}},metadata:_},b,g),i(null,null,o,{kind:"field",name:"color",static:!1,private:!1,access:{has:e=>"color"in e,get:e=>e.color,set:(e,t)=>{e.color=t}},metadata:_},k,v),i(null,null,c,{kind:"field",name:"label",static:!1,private:!1,access:{has:e=>"label"in e,get:e=>e.label,set:(e,t)=>{e.label=t}},metadata:_},y,f),i(null,null,d,{kind:"field",name:"thickness",static:!1,private:!1,access:{has:e=>"thickness"in e,get:e=>e.thickness,set:(e,t)=>{e.thickness=t}},metadata:_},x,w),i(null,e={value:n},h,{kind:"class",name:n.name,metadata:_},null,p),n=e.value,_&&Object.defineProperty(n,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:_}),s(n,p)}render(){const e=this.getSizeValue(),i=(e-2*this.thickness)/2,s=2*i*Math.PI,n=e/2,a=e/2,o=`0 0 ${e} ${e}`;return t.html`
43
+ `}handleInternalChange(e){const t=e.target;"checkbox"===t.type&&(this.checked=t.checked,this.indeterminate=!1,this.dispatchEvent(new CustomEvent("checkbox-change",{bubbles:!0,composed:!0,detail:{checked:this.checked,indeterminate:this.indeterminate,checkbox:this}})))}handleCheckedChange(){this.input&&(this.input.checked=this.checked)}handleIndeterminateChange(){this.input&&(this.input.indeterminate=this.indeterminate)}styles(){return e.css`${":host{display:inline-block;font-family:var(--snice-font-family)}.checkbox-wrapper{display:inline-flex;align-items:center;position:relative;cursor:pointer;user-select:none;min-height:1.25rem}.checkbox-wrapper--disabled{cursor:not-allowed;opacity:.6}.checkbox-input{position:absolute;opacity:0;left:0;top:0;width:100%;height:100%;margin:0;cursor:pointer;z-index:1;pointer-events:all}.checkbox{position:relative;display:inline-flex;align-items:center;justify-content:center;background:var(--snice-color-background-input);border:2px solid var(--snice-color-border);border-radius:var(--snice-border-radius-sm);transition:all var(--snice-transition-fast) ease}.checkbox--small{width:1rem;height:1rem}.checkbox--medium{width:1.25rem;height:1.25rem}.checkbox--large{width:1.5rem;height:1.5rem}.checkbox-input:checked~.checkbox{background:var(--snice-color-primary);border-color:var(--snice-color-primary)}.checkbox-input:focus-visible~.checkbox{box-shadow:0 0 0 3px var(--snice-focus-ring-color);outline:2px solid var(--snice-color-primary);outline-offset:2px}.checkbox-input:disabled~.checkbox{background:var(--snice-color-background-secondary);border-color:var(--snice-color-border)}.checkbox-input:disabled:checked~.checkbox{background:var(--snice-color-text-secondary);border-color:var(--snice-color-text-secondary)}.checkbox--invalid{border-color:var(--snice-color-danger)}.checkbox-input:checked~.checkbox--invalid{background:var(--snice-color-danger);border-color:var(--snice-color-danger)}.checkbox-icon{position:absolute;display:none;color:var(--snice-color-text-inverse)}.checkbox-input:checked~.checkbox .checkbox-icon--check{display:block}.checkbox--indeterminate .checkbox-icon--check{display:none!important}.checkbox--indeterminate .checkbox-icon--indeterminate{display:block!important}.checkbox--small .checkbox-icon{width:.75rem;height:.75rem}.checkbox--medium .checkbox-icon{width:.875rem;height:.875rem}.checkbox--large .checkbox-icon{width:1.125rem;height:1.125rem}.checkbox-label{margin-left:.5rem;color:var(--snice-color-text);cursor:pointer}.checkbox-label--small{font-size:var(--snice-font-size-sm)}.checkbox-label--medium{font-size:var(--snice-font-size-md)}.checkbox-label--large{font-size:var(--snice-font-size-lg)}.checkbox-wrapper--disabled .checkbox-label{color:var(--snice-color-text-secondary);cursor:not-allowed}.checkbox-label--required::after{content:' *';color:var(--snice-color-danger)}.checkbox-wrapper:not(.checkbox-wrapper--disabled):hover .checkbox{border-color:var(--snice-color-primary)}.checkbox-wrapper:not(.checkbox-wrapper--disabled):hover .checkbox-input:checked~.checkbox{background:var(--snice-color-primary-hover);border-color:var(--snice-color-primary-hover)}.checkbox-wrapper--loading{cursor:wait;opacity:.7}.checkbox--loading{cursor:wait}.checkbox-spinner{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;width:100%;height:100%;pointer-events:none}.checkbox-spinner::after{content:'';display:block;width:.75em;height:.75em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:.6s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}"}`}focus(){this.input?.focus()}blur(){this.input?.blur()}click(){this.input?.click()}toggle(){this.checked=!this.checked,this.indeterminate=!1,this.dispatchEvent(new CustomEvent("checkbox-change",{bubbles:!0,composed:!0,detail:{checked:this.checked,indeterminate:this.indeterminate,checkbox:this}}))}setIndeterminate(){this.indeterminate=!0,this.checked=!1,this.dispatchEvent(new CustomEvent("checkbox-change",{bubbles:!0,composed:!0,detail:{checked:this.checked,indeterminate:this.indeterminate,checkbox:this}}))}constructor(){super(...arguments),this.checked=(i(this,N),i(this,I,!1)),this.indeterminate=(i(this,z),i(this,L,!1)),this.disabled=(i(this,A),i(this,R,!1)),this.loading=(i(this,M),i(this,q,!1)),this.required=(i(this,T),i(this,$,!1)),this.invalid=(i(this,O),i(this,F,!1)),this.size=(i(this,B),i(this,j,"medium")),this.name=(i(this,D),i(this,H,"")),this.value=(i(this,P),i(this,K,"on")),this.label=(i(this,U),i(this,V,"")),this.input=(i(this,X),i(this,G,void 0)),this.checkbox=(i(this,J),i(this,Q,void 0)),this.labelElement=(i(this,W),i(this,Y,void 0)),this.wrapper=(i(this,Z),i(this,ee,void 0)),i(this,te)}})})();(()=>{let s,n,a,o,c,d,l,r,h=[e.element("snice-spinner")],p=[],m=HTMLElement,u=[],b=[],g=[],k=[],v=[],y=[],f=[],x=[],w=[];(class extends m{static{n=this}static{const _="function"==typeof Symbol&&Symbol.metadata?Object.create(m[Symbol.metadata]??null):void 0;a=[e.property({})],o=[e.property({})],c=[e.property({})],d=[e.property({type:Number})],l=[e.render()],r=[e.styles()],t(this,null,l,{kind:"method",name:"render",static:!1,private:!1,access:{has:e=>"render"in e,get:e=>e.render},metadata:_},null,u),t(this,null,r,{kind:"method",name:"styles",static:!1,private:!1,access:{has:e=>"styles"in e,get:e=>e.styles},metadata:_},null,u),t(null,null,a,{kind:"field",name:"size",static:!1,private:!1,access:{has:e=>"size"in e,get:e=>e.size,set:(e,t)=>{e.size=t}},metadata:_},b,g),t(null,null,o,{kind:"field",name:"color",static:!1,private:!1,access:{has:e=>"color"in e,get:e=>e.color,set:(e,t)=>{e.color=t}},metadata:_},k,v),t(null,null,c,{kind:"field",name:"label",static:!1,private:!1,access:{has:e=>"label"in e,get:e=>e.label,set:(e,t)=>{e.label=t}},metadata:_},y,f),t(null,null,d,{kind:"field",name:"thickness",static:!1,private:!1,access:{has:e=>"thickness"in e,get:e=>e.thickness,set:(e,t)=>{e.thickness=t}},metadata:_},x,w),t(null,s={value:n},h,{kind:"class",name:n.name,metadata:_},null,p),n=s.value,_&&Object.defineProperty(n,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:_}),i(n,p)}render(){const t=this.getSizeValue(),i=(t-2*this.thickness)/2,s=2*i*Math.PI,n=t/2,a=t/2,o=`0 0 ${t} ${t}`;return e.html`
44
44
  <div class="spinner" role="status" aria-label="${this.label||"Loading"}">
45
45
  <svg
46
46
  class="spinner__circle"
@@ -66,5 +66,5 @@ void 0===globalThis.Snice&&console.warn("[snice] snice-runtime.min.js must be lo
66
66
  <span class="spinner__label">${this.label}</span>
67
67
  </if>
68
68
  </div>
69
- `}styles(){return t.css`${":host{--spinner-size:2.5rem;--spinner-stroke:4px;--spinner-color:var(--snice-color-primary, rgb(59 130 246));display:inline-block;width:var(--spinner-size);height:var(--spinner-size);font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);contain:layout style paint}:host([size=small]){--spinner-size:1.5rem;--spinner-stroke:3px}:host([size=medium]){--spinner-size:2.5rem;--spinner-stroke:4px}:host([size=large]){--spinner-size:3.5rem;--spinner-stroke:5px}:host([size=xl]){--spinner-size:5rem;--spinner-stroke:6px}:host([color=primary]){--spinner-color:var(--snice-color-primary, rgb(59 130 246))}:host([color=success]){--spinner-color:var(--snice-color-success, rgb(16 185 129))}:host([color=warning]){--spinner-color:var(--snice-color-warning, rgb(245 158 11))}:host([color=error]){--spinner-color:var(--snice-color-danger, rgb(239 68 68))}:host([color=info]){--spinner-color:var(--snice-color-info, rgb(99 102 241))}.spinner{position:relative;width:100%;height:100%}.spinner__circle{transform:rotate(-90deg);width:100%;height:100%;animation:2s linear infinite spinner-rotate}.spinner__circle-bar,.spinner__circle-bg{fill:none;stroke-width:var(--spinner-stroke);shape-rendering:geometricPrecision;vector-effect:non-scaling-stroke}.spinner__circle-bg{stroke:var(--spinner-color);opacity:.2}.spinner__circle-bar{stroke:var(--spinner-color);stroke-linecap:round;animation:1.5s ease-in-out infinite spinner-dash}@keyframes spinner-rotate{100%{transform:rotate(270deg)}}@keyframes spinner-dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}.spinner__label{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:var(--snice-font-size-xs, .625rem);font-weight:var(--snice-font-weight-semibold,600);color:var(--spinner-color);white-space:nowrap;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:host([size=small]) .spinner__label{font-size:.5rem}:host([size=medium]) .spinner__label{font-size:var(--snice-font-size-xs, .625rem)}:host([size=large]) .spinner__label{font-size:var(--snice-font-size-sm, .75rem)}:host([size=xl]) .spinner__label{font-size:var(--snice-font-size-sm, .875rem)}"}`}getSizeValue(){switch(this.size){case"small":return 24;case"medium":default:return 40;case"large":return 56;case"xl":return 80}}constructor(){super(...arguments),this.size=(s(this,u),s(this,b,"medium")),this.color=(s(this,g),s(this,k,"primary")),this.label=(s(this,v),s(this,y,"")),this.thickness=(s(this,f),s(this,x,4)),s(this,w)}})})();(()=>{let e,n,a,o,c,d,l,r,h,p,m,u,b,g,k,v,y,f,x,w,_=[t.element("snice-tree-item")],C=[],S=HTMLElement,E=[],N=[],I=[],z=[],L=[],A=[],R=[],M=[],q=[],T=[],$=[],O=[],F=[],B=[],j=[],D=[],H=[];(class extends S{static{n=this}static{const P="function"==typeof Symbol&&Symbol.metadata?Object.create(S[Symbol.metadata]??null):void 0;a=[t.property({type:Number})],o=[t.property({type:Boolean})],c=[t.property({type:Boolean})],d=[t.property({type:Boolean})],l=[t.property({type:Boolean,attribute:"show-checkbox"})],r=[t.property({type:Boolean,attribute:"show-icon"})],h=[t.property({type:Boolean})],p=[t.property({type:Boolean})],m=[t.watch("expanded")],u=[t.watch("selected")],b=[t.watch("checked")],g=[t.watch("indeterminate")],k=[t.watch("loading")],v=[t.dispatch("tree-item-toggle",{bubbles:!0,composed:!0})],y=[t.dispatch("tree-item-select",{bubbles:!0,composed:!0})],f=[t.dispatch("tree-item-check",{bubbles:!0,composed:!0})],x=[t.dispatch("tree-item-lazy-load",{bubbles:!0,composed:!0})],w=[t.ready()],i(this,null,m,{kind:"method",name:"handleExpandedChange",static:!1,private:!1,access:{has:e=>"handleExpandedChange"in e,get:e=>e.handleExpandedChange},metadata:P},null,E),i(this,null,u,{kind:"method",name:"handleSelectedChange",static:!1,private:!1,access:{has:e=>"handleSelectedChange"in e,get:e=>e.handleSelectedChange},metadata:P},null,E),i(this,null,b,{kind:"method",name:"handleCheckedChange",static:!1,private:!1,access:{has:e=>"handleCheckedChange"in e,get:e=>e.handleCheckedChange},metadata:P},null,E),i(this,null,g,{kind:"method",name:"handleIndeterminateChange",static:!1,private:!1,access:{has:e=>"handleIndeterminateChange"in e,get:e=>e.handleIndeterminateChange},metadata:P},null,E),i(this,null,k,{kind:"method",name:"handleLoadingChange",static:!1,private:!1,access:{has:e=>"handleLoadingChange"in e,get:e=>e.handleLoadingChange},metadata:P},null,E),i(this,null,v,{kind:"method",name:"dispatchToggleEvent",static:!1,private:!1,access:{has:e=>"dispatchToggleEvent"in e,get:e=>e.dispatchToggleEvent},metadata:P},null,E),i(this,null,y,{kind:"method",name:"dispatchSelectEvent",static:!1,private:!1,access:{has:e=>"dispatchSelectEvent"in e,get:e=>e.dispatchSelectEvent},metadata:P},null,E),i(this,null,f,{kind:"method",name:"dispatchCheckEvent",static:!1,private:!1,access:{has:e=>"dispatchCheckEvent"in e,get:e=>e.dispatchCheckEvent},metadata:P},null,E),i(this,null,x,{kind:"method",name:"dispatchLazyLoadEvent",static:!1,private:!1,access:{has:e=>"dispatchLazyLoadEvent"in e,get:e=>e.dispatchLazyLoadEvent},metadata:P},null,E),i(this,null,w,{kind:"method",name:"init",static:!1,private:!1,access:{has:e=>"init"in e,get:e=>e.init},metadata:P},null,E),i(null,null,a,{kind:"field",name:"_version",static:!1,private:!1,access:{has:e=>"_version"in e,get:e=>e._version,set:(e,t)=>{e._version=t}},metadata:P},N,I),i(null,null,o,{kind:"field",name:"expanded",static:!1,private:!1,access:{has:e=>"expanded"in e,get:e=>e.expanded,set:(e,t)=>{e.expanded=t}},metadata:P},z,L),i(null,null,c,{kind:"field",name:"selected",static:!1,private:!1,access:{has:e=>"selected"in e,get:e=>e.selected,set:(e,t)=>{e.selected=t}},metadata:P},A,R),i(null,null,d,{kind:"field",name:"checked",static:!1,private:!1,access:{has:e=>"checked"in e,get:e=>e.checked,set:(e,t)=>{e.checked=t}},metadata:P},M,q),i(null,null,l,{kind:"field",name:"showCheckbox",static:!1,private:!1,access:{has:e=>"showCheckbox"in e,get:e=>e.showCheckbox,set:(e,t)=>{e.showCheckbox=t}},metadata:P},T,$),i(null,null,r,{kind:"field",name:"showIcon",static:!1,private:!1,access:{has:e=>"showIcon"in e,get:e=>e.showIcon,set:(e,t)=>{e.showIcon=t}},metadata:P},O,F),i(null,null,h,{kind:"field",name:"loading",static:!1,private:!1,access:{has:e=>"loading"in e,get:e=>e.loading,set:(e,t)=>{e.loading=t}},metadata:P},B,j),i(null,null,p,{kind:"field",name:"indeterminate",static:!1,private:!1,access:{has:e=>"indeterminate"in e,get:e=>e.indeterminate,set:(e,t)=>{e.indeterminate=t}},metadata:P},D,H),i(null,e={value:n},_,{kind:"class",name:n.name,metadata:P},null,C),n=e.value,P&&Object.defineProperty(n,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:P}),s(n,C)}get node(){return this._node}get level(){return this._level}get hasChildren(){return!!(this._node.children&&this._node.children.length>0)||!!this._node.lazy}setNode(e,t){this._node=e,this._level=t,void 0!==e.expanded&&(this.expanded=e.expanded),void 0!==e.selected&&(this.selected=e.selected),void 0!==e.checked&&(this.checked=e.checked),void 0!==e.indeterminate&&(this.indeterminate=e.indeterminate),this.updateDOM(),requestAnimationFrame(()=>{requestAnimationFrame(()=>{this.updateChildTreeItems()})})}handleExpandedChange(){this.shadowRoot&&this.updateExpandedState()}handleSelectedChange(){this.shadowRoot&&this.updateSelectedState()}handleCheckedChange(){this.shadowRoot&&this.updateCheckboxState()}handleIndeterminateChange(){this.shadowRoot&&this.updateCheckboxState()}handleLoadingChange(){this.shadowRoot&&this.updateLoadingState()}updateChildTreeItems(){if(!this.shadowRoot||!this.hasChildren)return;const e=this.shadowRoot.querySelectorAll(".tree-item__children > snice-tree-item");this.node.children?.forEach((t,i)=>{e[i]&&e[i].setNode&&e[i].setNode(t,this.level+1)})}dispatchToggleEvent(){return{nodeId:this.node.id,expanded:this.expanded}}dispatchSelectEvent(){return{nodeId:this.node.id,selected:this.selected}}dispatchCheckEvent(){return{nodeId:this.node.id,checked:this.checked}}dispatchLazyLoadEvent(){return{nodeId:this.node.id,node:this.node}}init(){this.renderTemplate(),this.updateDOM()}renderTemplate(){const e='\n <style>:host{display:block}.tree-item{position:relative;user-select:none}.tree-item__content{display:flex;align-items:center;gap:var(--snice-spacing-xs,.5rem);padding:var(--snice-spacing-xs,.5rem) var(--snice-spacing-sm,.75rem);padding-left:calc(var(--tree-level,0) * var(--snice-spacing-xl,1.5rem) + var(--snice-spacing-sm,.75rem));cursor:pointer;border-radius:var(--snice-border-radius-md,.25rem);transition:background-color var(--snice-transition-fast, 150ms) ease;position:relative;background-color:transparent}.tree-item__content:hover{background-color:var(--snice-color-background-hover,rgb(var(--snice-color-gray-100)))}.tree-item__content:focus{outline:2px solid var(--snice-color-primary,rgb(var(--snice-color-blue-600)));outline-offset:-2px}.tree-item__content--selected{background-color:var(--snice-color-primary-subtle,rgb(var(--snice-color-blue-50)))}.tree-item__content--selected:hover{background-color:var(--snice-color-primary-subtle-hover,rgb(var(--snice-color-blue-100)))}.tree-item__content--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.tree-item__expander{width:1.25rem;height:1.25rem;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:transform .2s;cursor:pointer}.tree-item__expander--expanded{transform:rotate(90deg)}.tree-item__expander--hidden{visibility:hidden}.tree-item__expander svg{width:1rem;height:1rem;fill:currentColor}.tree-item__checkbox{display:flex;align-items:center;flex-shrink:0;height:1.25rem}.tree-item__checkbox snice-checkbox{display:flex;align-items:center}.tree-item__icon{flex-shrink:0;width:1.25rem;height:1.25rem;display:flex;align-items:center;justify-content:center}.tree-item__icon-image{width:100%;height:100%;object-fit:contain}.tree-item__label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.25rem;align-self:center}.tree-item__children{overflow:hidden;max-height:0;opacity:0;transition:max-height .25s cubic-bezier(.4, 0, .2, 1),opacity .25s cubic-bezier(.4, 0, .2, 1)}.tree-item__children--expanded{max-height:10000px;opacity:1;transition:max-height .25s cubic-bezier(.4, 0, .2, 1),opacity .25s cubic-bezier(.4, 0, .2, 1)}.tree-item__loading{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;flex-shrink:0}</style>\n <div class="tree-item">\n <div\n class="tree-item__content"\n part="content"\n role="treeitem"\n tabindex="0">\n\n <div class="tree-item__loading" part="loading" style="display: none;">\n <snice-spinner size="small"></snice-spinner>\n </div>\n\n <div class="tree-item__expander" part="expander">\n <svg viewBox="0 0 24 24"><path d="M9 6l6 6-6 6"/></svg>\n </div>\n\n <div class="tree-item__checkbox" part="checkbox" style="display: none;">\n <snice-checkbox size="small"></snice-checkbox>\n </div>\n\n <div class="tree-item__icon" part="icon" style="display: none;"></div>\n\n <div class="tree-item__label" part="label"></div>\n </div>\n\n <div class="tree-item__children" part="children" role="group"></div>\n </div>\n ';this.shadowRoot?this.shadowRoot.innerHTML=e:this.attachShadow({mode:"open"}).innerHTML=e;const t=this.shadowRoot.querySelector(".tree-item__content"),i=this.shadowRoot.querySelector(".tree-item__expander");t?.addEventListener("click",e=>this.handleContentClick(e)),t?.addEventListener("keydown",e=>this.handleKeydown(e)),i?.addEventListener("click",e=>{e.stopPropagation(),this.toggle()}),requestAnimationFrame(()=>{const e=this.shadowRoot.querySelector("snice-checkbox");e?.addEventListener("checkbox-change",e=>this.handleCheckboxChangeEvent(e))})}updateDOM(){if(!this.shadowRoot)return;const e=this.shadowRoot.querySelector(".tree-item"),t=this.shadowRoot.querySelector(".tree-item__content"),i=this.shadowRoot.querySelector(".tree-item__label"),s=this.shadowRoot.querySelector(".tree-item__icon");e&&e.style.setProperty("--tree-level",this.level.toString()),i&&(i.textContent=this.node.label||""),s&&this.showIcon?this.node.iconImage?(s.innerHTML=`<img class="tree-item__icon-image" src="${this.node.iconImage}" alt="" part="icon-image">`,s.style.display=""):this.node.icon?(s.innerHTML=`<span part="icon-text">${this.node.icon}</span>`,s.style.display=""):s.style.display="none":s&&(s.style.display="none"),t&&(t.setAttribute("tabindex",this.node.disabled?"-1":"0"),t.setAttribute("aria-selected",this.selected.toString()),t.setAttribute("aria-disabled",(this.node.disabled||!1).toString()),t.setAttribute("aria-busy",this.loading.toString()),this.hasChildren?t.setAttribute("aria-expanded",this.expanded.toString()):t.removeAttribute("aria-expanded")),this.updateExpandedState(),this.updateSelectedState(),this.updateCheckboxState(),this.updateLoadingState(),this.updateChildrenDOM()}updateExpandedState(){if(!this.shadowRoot)return;const e=this.shadowRoot.querySelector(".tree-item__expander"),t=this.shadowRoot.querySelector(".tree-item__children"),i=this.shadowRoot.querySelector(".tree-item__content");e&&(e.classList.toggle("tree-item__expander--expanded",this.expanded),e.classList.toggle("tree-item__expander--hidden",!this.hasChildren)),t&&t.classList.toggle("tree-item__children--expanded",this.expanded),i&&this.hasChildren&&i.setAttribute("aria-expanded",this.expanded.toString())}updateSelectedState(){if(!this.shadowRoot)return;const e=this.shadowRoot.querySelector(".tree-item__content");e&&(e.classList.toggle("tree-item__content--selected",this.selected),e.setAttribute("aria-selected",this.selected.toString()))}updateCheckboxState(){if(!this.shadowRoot)return;const e=this.shadowRoot.querySelector(".tree-item__checkbox"),t=this.shadowRoot.querySelector("snice-checkbox");e&&(e.style.display=this.showCheckbox?"":"none"),t&&requestAnimationFrame(()=>{t.checked=this.checked,t.indeterminate=this.indeterminate,t.disabled=this.node.disabled||!1})}updateLoadingState(){if(!this.shadowRoot)return;const e=this.shadowRoot.querySelector(".tree-item__loading"),t=this.shadowRoot.querySelector(".tree-item__expander");e&&t&&(e.style.display=this.loading?"":"none",t.style.display=this.loading?"none":"")}updateChildrenDOM(){if(!this.shadowRoot||!this.hasChildren)return;const e=this.shadowRoot.querySelector(".tree-item__children");e&&(e.innerHTML="",this.node.children?.forEach(t=>{const i=document.createElement("snice-tree-item");this.showCheckbox&&i.setAttribute("show-checkbox",""),this.showIcon&&i.setAttribute("show-icon",""),e.appendChild(i)}),requestAnimationFrame(()=>{this.updateChildTreeItems()}))}handleContentClick(e){this.node.disabled||(this.selected?this.deselect():this.select())}handleKeydown(e){this.node.disabled||("Enter"===e.key||" "===e.key?(e.preventDefault(),this.selected?this.deselect():this.select()):"ArrowRight"===e.key?(e.preventDefault(),this.hasChildren&&!this.expanded&&this.expand()):"ArrowLeft"===e.key&&(e.preventDefault(),this.hasChildren&&this.expanded&&this.collapse()))}handleCheckboxChangeEvent(e){e.stopPropagation();const t=e.detail.checked;this.checked=t,this.node.checked=t,this.dispatchEvent(new CustomEvent("tree-item-check",{bubbles:!0,composed:!0,detail:{nodeId:this.node.id,checked:this.checked}}))}expand(){if(this.hasChildren&&!this.expanded){if(this.node.lazy&&(!this.node.children||0===this.node.children.length))return this.loading=!0,void this.dispatchLazyLoadEvent();this.expanded=!0,this.dispatchToggleEvent()}}finishLoading(){this.loading=!1,this.expanded=!0,this.dispatchToggleEvent()}collapse(){this.hasChildren&&this.expanded&&(this.expanded=!1,this.dispatchToggleEvent())}toggle(){this.expanded?this.collapse():this.expand()}select(){this.node.disabled||(this.selected=!0,this.updateSelectedState(),this.dispatchSelectEvent())}deselect(){this.selected=!1,this.updateSelectedState(),this.dispatchSelectEvent()}check(){this.node.disabled||(this.checked=!0,this.dispatchCheckEvent())}uncheck(){this.checked=!1,this.dispatchCheckEvent()}constructor(){super(...arguments),this._node=(s(this,E),{id:"",label:""}),this._level=0,this._version=s(this,N,0),this.expanded=(s(this,I),s(this,z,!1)),this.selected=(s(this,L),s(this,A,!1)),this.checked=(s(this,R),s(this,M,!1)),this.showCheckbox=(s(this,q),s(this,T,!1)),this.showIcon=(s(this,$),s(this,O,!0)),this.loading=(s(this,F),s(this,B,!1)),this.indeterminate=(s(this,j),s(this,D,!1)),s(this,H)}})})();let n=(()=>{let e,n,a,o,c,d,l,r,h,p,m,u,b,g,k,v,y,f,x,w,_,C,S,E,N,I,z,L=[t.element("snice-tree")],A=[],R=HTMLElement,M=[],q=[],T=[],$=[],O=[],F=[],B=[],j=[],D=[],H=[],P=[],K=[],U=[],V=[],X=[],G=[],J=[],Q=[],W=[];return class extends R{static{n=this}constructor(){super(...arguments),this.selectable=(s(this,M),s(this,q,!0)),this.selectionMode=(s(this,T),s(this,$,"single")),this.showCheckboxes=(s(this,O),s(this,F,!1)),this.showIcons=(s(this,B),s(this,j,!0)),this.expandOnClick=(s(this,D),s(this,H,!1)),this.nodes=(s(this,P),s(this,K,[])),this.selectedNodes=(s(this,U),s(this,V,[])),this.checkedNodes=(s(this,X),s(this,G,[])),this.nodeMap=(s(this,J),new Map),this.treeItems=s(this,Q,void 0),this.lastFocusedItem=(s(this,W),null),this.loadingNodeIds=new Set}static{const Y="function"==typeof Symbol&&Symbol.metadata?Object.create(R[Symbol.metadata]??null):void 0;a=[t.property({type:Boolean})],o=[t.property({})],c=[t.property({type:Boolean,attribute:"show-checkboxes"})],d=[t.property({type:Boolean,attribute:"show-icons"})],l=[t.property({type:Boolean,attribute:"expand-on-click"})],r=[t.property({type:Array})],h=[t.property({type:Array,attribute:"selected-nodes"})],p=[t.property({type:Array,attribute:"checked-nodes"})],m=[t.queryAll("snice-tree-item")],u=[t.ready()],b=[t.watch("nodes")],g=[t.watch("selectedNodes")],k=[t.watch("checkedNodes")],v=[t.on("tree-item-toggle")],y=[t.on("tree-item-select")],f=[t.on("tree-item-check")],x=[t.on("tree-item-lazy-load")],w=[t.dispatch("tree-node-expand",{bubbles:!0,composed:!0})],_=[t.dispatch("tree-node-collapse",{bubbles:!0,composed:!0})],C=[t.dispatch("tree-node-select",{bubbles:!0,composed:!0})],S=[t.dispatch("tree-node-check",{bubbles:!0,composed:!0})],E=[t.dispatch("tree-node-lazy-load",{bubbles:!0,composed:!0})],N=[t.on("keydown")],I=[t.on("focusin")],z=[t.on("focusout")],i(this,null,u,{kind:"method",name:"init",static:!1,private:!1,access:{has:e=>"init"in e,get:e=>e.init},metadata:Y},null,M),i(this,null,b,{kind:"method",name:"handleNodesChange",static:!1,private:!1,access:{has:e=>"handleNodesChange"in e,get:e=>e.handleNodesChange},metadata:Y},null,M),i(this,null,g,{kind:"method",name:"handleSelectedNodesChange",static:!1,private:!1,access:{has:e=>"handleSelectedNodesChange"in e,get:e=>e.handleSelectedNodesChange},metadata:Y},null,M),i(this,null,k,{kind:"method",name:"handleCheckedNodesChange",static:!1,private:!1,access:{has:e=>"handleCheckedNodesChange"in e,get:e=>e.handleCheckedNodesChange},metadata:Y},null,M),i(this,null,v,{kind:"method",name:"handleItemToggle",static:!1,private:!1,access:{has:e=>"handleItemToggle"in e,get:e=>e.handleItemToggle},metadata:Y},null,M),i(this,null,y,{kind:"method",name:"handleItemSelect",static:!1,private:!1,access:{has:e=>"handleItemSelect"in e,get:e=>e.handleItemSelect},metadata:Y},null,M),i(this,null,f,{kind:"method",name:"handleItemCheck",static:!1,private:!1,access:{has:e=>"handleItemCheck"in e,get:e=>e.handleItemCheck},metadata:Y},null,M),i(this,null,x,{kind:"method",name:"handleLazyLoad",static:!1,private:!1,access:{has:e=>"handleLazyLoad"in e,get:e=>e.handleLazyLoad},metadata:Y},null,M),i(this,null,w,{kind:"method",name:"dispatchExpandEvent",static:!1,private:!1,access:{has:e=>"dispatchExpandEvent"in e,get:e=>e.dispatchExpandEvent},metadata:Y},null,M),i(this,null,_,{kind:"method",name:"dispatchCollapseEvent",static:!1,private:!1,access:{has:e=>"dispatchCollapseEvent"in e,get:e=>e.dispatchCollapseEvent},metadata:Y},null,M),i(this,null,C,{kind:"method",name:"dispatchSelectEvent",static:!1,private:!1,access:{has:e=>"dispatchSelectEvent"in e,get:e=>e.dispatchSelectEvent},metadata:Y},null,M),i(this,null,S,{kind:"method",name:"dispatchCheckEvent",static:!1,private:!1,access:{has:e=>"dispatchCheckEvent"in e,get:e=>e.dispatchCheckEvent},metadata:Y},null,M),i(this,null,E,{kind:"method",name:"dispatchLazyLoadEvent",static:!1,private:!1,access:{has:e=>"dispatchLazyLoadEvent"in e,get:e=>e.dispatchLazyLoadEvent},metadata:Y},null,M),i(this,null,N,{kind:"method",name:"handleKeyDown",static:!1,private:!1,access:{has:e=>"handleKeyDown"in e,get:e=>e.handleKeyDown},metadata:Y},null,M),i(this,null,I,{kind:"method",name:"handleFocusIn",static:!1,private:!1,access:{has:e=>"handleFocusIn"in e,get:e=>e.handleFocusIn},metadata:Y},null,M),i(this,null,z,{kind:"method",name:"handleFocusOut",static:!1,private:!1,access:{has:e=>"handleFocusOut"in e,get:e=>e.handleFocusOut},metadata:Y},null,M),i(null,null,a,{kind:"field",name:"selectable",static:!1,private:!1,access:{has:e=>"selectable"in e,get:e=>e.selectable,set:(e,t)=>{e.selectable=t}},metadata:Y},q,T),i(null,null,o,{kind:"field",name:"selectionMode",static:!1,private:!1,access:{has:e=>"selectionMode"in e,get:e=>e.selectionMode,set:(e,t)=>{e.selectionMode=t}},metadata:Y},$,O),i(null,null,c,{kind:"field",name:"showCheckboxes",static:!1,private:!1,access:{has:e=>"showCheckboxes"in e,get:e=>e.showCheckboxes,set:(e,t)=>{e.showCheckboxes=t}},metadata:Y},F,B),i(null,null,d,{kind:"field",name:"showIcons",static:!1,private:!1,access:{has:e=>"showIcons"in e,get:e=>e.showIcons,set:(e,t)=>{e.showIcons=t}},metadata:Y},j,D),i(null,null,l,{kind:"field",name:"expandOnClick",static:!1,private:!1,access:{has:e=>"expandOnClick"in e,get:e=>e.expandOnClick,set:(e,t)=>{e.expandOnClick=t}},metadata:Y},H,P),i(null,null,r,{kind:"field",name:"nodes",static:!1,private:!1,access:{has:e=>"nodes"in e,get:e=>e.nodes,set:(e,t)=>{e.nodes=t}},metadata:Y},K,U),i(null,null,h,{kind:"field",name:"selectedNodes",static:!1,private:!1,access:{has:e=>"selectedNodes"in e,get:e=>e.selectedNodes,set:(e,t)=>{e.selectedNodes=t}},metadata:Y},V,X),i(null,null,p,{kind:"field",name:"checkedNodes",static:!1,private:!1,access:{has:e=>"checkedNodes"in e,get:e=>e.checkedNodes,set:(e,t)=>{e.checkedNodes=t}},metadata:Y},G,J),i(null,null,m,{kind:"field",name:"treeItems",static:!1,private:!1,access:{has:e=>"treeItems"in e,get:e=>e.treeItems,set:(e,t)=>{e.treeItems=t}},metadata:Y},Q,W),i(null,e={value:n},L,{kind:"class",name:n.name,metadata:Y},null,A),n=e.value,Y&&Object.defineProperty(n,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:Y}),s(n,A)}init(){this.buildNodeMap(),this.syncNodeStates(),this.renderTemplate(),this.setAttribute("role","tree"),this.setAttribute("tabindex","0"),"multiple"===this.selectionMode&&this.setAttribute("aria-multiselectable","true"),this.updateTreeItems()}renderTemplate(){this.shadowRoot||this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML='\n <style>:host{display:block}.tree{font-family:var(--snice-font-family, system-ui, -apple-system, sans-serif);font-size:var(--snice-font-size-base, 1rem);color:var(--snice-color-text,rgb(23 23 23));background-color:var(--snice-color-background,rgb(255 255 255));border:1px solid var(--snice-color-border,rgb(226 226 226));border-radius:var(--snice-border-radius-md,.375rem);overflow:auto;max-height:var(--tree-max-height,100%)}.tree__content{padding:var(--snice-spacing-xs,.5rem)}.tree--no-border{border:none}.tree__empty{padding:var(--snice-spacing-lg,1.5rem);text-align:center;color:var(--snice-color-text-muted,rgb(115 115 115));font-style:italic}</style>\n <div class="tree" part="container" role="tree">\n <div class="tree__content" part="content"></div>\n </div>\n '}handleNodesChange(){this.buildNodeMap(),this.syncNodeStates(),this.trackLoadingNodes(),this.updateTreeItemsDOM(),requestAnimationFrame(()=>{this.restoreLoadingState(),requestAnimationFrame(()=>{this.finishLoadingNodes()})})}trackLoadingNodes(){const e=t=>{if(t&&t.node&&(t.loading&&this.loadingNodeIds.add(t.node.id),t.shadowRoot)){t.shadowRoot.querySelectorAll(".tree-item__children > snice-tree-item").forEach(t=>e(t))}},t=this.shadowRoot?.querySelectorAll(".tree__content > snice-tree-item");t?.forEach(t=>e(t))}restoreLoadingState(){const e=t=>{if(t&&t.node&&(this.loadingNodeIds.has(t.node.id)&&(t.loading=!0),t.shadowRoot)){t.shadowRoot.querySelectorAll(".tree-item__children > snice-tree-item").forEach(t=>e(t))}},t=this.shadowRoot?.querySelectorAll(".tree__content > snice-tree-item");t?.forEach(t=>e(t))}updateTreeItemsDOM(){if(!this.shadowRoot)return;const e=this.shadowRoot.querySelector(".tree__content");e&&(e.innerHTML="",this.nodes.forEach(t=>{const i=document.createElement("snice-tree-item");this.showCheckboxes&&i.setAttribute("show-checkbox",""),this.showIcons&&i.setAttribute("show-icon",""),e.appendChild(i)}),this.updateTreeItems())}updateTreeItems(){requestAnimationFrame(()=>{if(this.treeItems&&0!==this.treeItems.length)this.treeItems.forEach((e,t)=>{this.nodes[t]&&e.setNode&&e.setNode(this.nodes[t],0)});else{const e=this.shadowRoot?.querySelectorAll(":scope > .tree > .tree__content > snice-tree-item");e&&e.forEach((e,t)=>{this.nodes[t]&&e.setNode&&e.setNode(this.nodes[t],0)})}})}handleSelectedNodesChange(){this.syncNodeStates(),requestAnimationFrame(()=>{this.updateSelectedStatesOnly()})}handleCheckedNodesChange(){this.syncNodeStates(),requestAnimationFrame(()=>{this.updateCheckboxStatesOnly()})}buildNodeMap(){this.nodeMap.clear();const e=t=>{for(const i of t)this.nodeMap.set(i.id,i),i.children&&e(i.children)};e(this.nodes)}syncNodeStates(){for(const[e,t]of this.nodeMap.entries())t.selected=this.selectedNodes.includes(e),t.checked=this.checkedNodes.includes(e)}handleItemToggle(e){const t=e,{nodeId:i,expanded:s}=t.detail,n=this.nodeMap.get(i);n&&(n.expanded=s,s?this.dispatchExpandEvent(i,n):this.dispatchCollapseEvent(i,n))}handleItemSelect(e){const t=e,{nodeId:i,selected:s}=t.detail,n=this.nodeMap.get(i);n&&this.selectable&&"none"!==this.selectionMode&&("single"===this.selectionMode?(this.deselectAllNodes(),s?(n.selected=!0,this.selectedNodes=[i]):(n.selected=!1,this.selectedNodes=[]),this.updateSelectedStatesOnly()):(s?(n.selected=!0,this.selectedNodes.includes(i)||(this.selectedNodes=[...this.selectedNodes,i])):(n.selected=!1,this.selectedNodes=this.selectedNodes.filter(e=>e!==i)),this.updateSelectedStatesOnly()),this.dispatchSelectEvent(i,n))}deselectAllNodes(){const e=t=>{for(const i of t)i.selected=!1,i.children&&e(i.children)};e(this.nodes)}handleItemCheck(e){const t=e,{nodeId:i,checked:s}=t.detail,n=this.nodeMap.get(i);n&&(this.syncCheckboxes(n,s),this.dispatchCheckEvent(i,n,s))}syncCheckboxes(e,t){const i=(e,t)=>{if(e.checked=t,t&&!this.checkedNodes.includes(e.id)?this.checkedNodes=[...this.checkedNodes,e.id]:t||(this.checkedNodes=this.checkedNodes.filter(t=>t!==e.id)),e.children)for(const s of e.children)s.disabled||i(s,t)},s=e=>{const t=this.findParentNode(e.id);if(!t)return;const i=t.children||[],n=i.filter(e=>e.checked&&!e.disabled),a=i.filter(e=>!e.checked&&!e.disabled&&!e.indeterminate),o=n.length===i.filter(e=>!e.disabled).length,c=a.length===i.filter(e=>!e.disabled).length;t.checked=o,t.indeterminate=!o&&!c,t.checked&&!this.checkedNodes.includes(t.id)?this.checkedNodes=[...this.checkedNodes,t.id]:t.checked||t.indeterminate||(this.checkedNodes=this.checkedNodes.filter(e=>e!==t.id)),s(t)};i(e,t),s(e),this.updateCheckboxStatesOnly()}updateCheckboxStatesOnly(){const e=t=>{if(!t||!t.node)return;const i=this.nodeMap.get(t.node.id);if(i&&(t.checked!==i.checked&&(t.checked=i.checked),t.indeterminate!==i.indeterminate&&(t.indeterminate=i.indeterminate),t.shadowRoot)){t.shadowRoot.querySelectorAll(".tree-item__children > snice-tree-item").forEach(t=>e(t))}},t=this.shadowRoot?.querySelectorAll(".tree__content > snice-tree-item");t?.forEach(t=>e(t))}updateSelectedStatesOnly(){const e=t=>{if(!t||!t.node)return;const i=this.nodeMap.get(t.node.id);if(i){if(t.selected=i.selected,t.shadowRoot){const e=t.shadowRoot.querySelector(".tree-item__content");e&&(i.selected?e.classList.add("tree-item__content--selected"):e.classList.remove("tree-item__content--selected"),e.setAttribute("aria-selected",(i.selected??!1).toString()))}if(t.shadowRoot){t.shadowRoot.querySelectorAll(".tree-item__children > snice-tree-item").forEach(t=>e(t))}}},t=this.shadowRoot?.querySelectorAll(".tree__content > snice-tree-item");t?.forEach(t=>e(t))}finishLoadingNodes(){const e=t=>{if(t&&t.node&&(t.loading&&t.node.children&&t.node.children.length>0&&(t.finishLoading(),this.loadingNodeIds.delete(t.node.id)),t.shadowRoot)){t.shadowRoot.querySelectorAll(".tree-item__children > snice-tree-item").forEach(t=>e(t))}},t=this.shadowRoot?.querySelectorAll(".tree__content > snice-tree-item");t?.forEach(t=>e(t))}findParentNode(e){const t=(e,i)=>{for(const s of e)if(s.children){if(s.children.some(e=>e.id===i))return s;const e=t(s.children,i);if(e)return e}return null};return t(this.nodes,e)}handleLazyLoad(e){const t=e,{nodeId:i,node:s}=t.detail;this.dispatchLazyLoadEvent(i,s)}dispatchExpandEvent(e,t){return{nodeId:e,node:t,tree:this}}dispatchCollapseEvent(e,t){return{nodeId:e,node:t,tree:this}}dispatchSelectEvent(e,t){return{nodeId:e,node:t,selectedNodes:this.getSelectedNodes(),tree:this}}dispatchCheckEvent(e,t,i){return{nodeId:e,node:t,checked:i,checkedNodes:this.getCheckedNodes(),tree:this}}dispatchLazyLoadEvent(e,t){return{nodeId:e,node:t,tree:this}}handleKeyDown(e){if(!["ArrowDown","ArrowUp","ArrowRight","ArrowLeft","Home","End","Enter"," "].includes(e.key))return;const t=e.target;if("INPUT"===t.tagName||"TEXTAREA"===t.tagName)return;const i=this.getFocusableItems();if(0===i.length)return;e.preventDefault();const s=i.findIndex(e=>e.matches(":focus")),n=i[s],a=e=>{const t=Math.max(0,Math.min(e,i.length-1));i[t]?.focus()};"ArrowDown"===e.key?a(s+1):"ArrowUp"===e.key?a(s-1):"ArrowRight"===e.key?n&&n.expand&&n.expand():"ArrowLeft"===e.key?n&&n.collapse&&n.collapse():"Home"===e.key?a(0):"End"===e.key?a(i.length-1):"Enter"!==e.key&&" "!==e.key||n&&n.select&&n.select()}handleFocusIn(e){const t=e.target;if(t===this){const e=this.getFocusableItems(),t=this.lastFocusedItem||e[0];return void t?.focus()}"SNICE-TREE-ITEM"===t.tagName&&(this.lastFocusedItem&&this.lastFocusedItem.setAttribute("tabindex","-1"),this.lastFocusedItem=t,this.setAttribute("tabindex","-1"),t.setAttribute("tabindex","0"))}handleFocusOut(e){const t=e.relatedTarget;t&&this.contains(t)||this.setAttribute("tabindex","0")}getFocusableItems(){const e=Array.from(this.shadowRoot?.querySelectorAll("snice-tree-item")||[]),t=new Set;return e.filter(e=>{const i=e.node?.disabled;if(i)return!1;let s=e.parentElement;for(;s&&s!==this;){if("SNICE-TREE-ITEM"===s.tagName){if(!s.expanded)return t.add(e),!1}s=s.parentElement}return!t.has(e)})}expandNode(e){const t=this.nodeMap.get(e);t&&t.children&&(t.expanded=!0,this.nodes=[...this.nodes],this.dispatchExpandEvent(e,t))}collapseNode(e){const t=this.nodeMap.get(e);t&&t.children&&(t.expanded=!1,this.nodes=[...this.nodes],this.dispatchCollapseEvent(e,t))}toggleNode(e){const t=this.nodeMap.get(e);t&&t.children&&(t.expanded?this.collapseNode(e):this.expandNode(e))}expandAll(){const e=t=>{for(const i of t)i.children&&i.children.length>0&&(i.expanded=!0,e(i.children))};e(this.nodes),this.nodes=[...this.nodes]}collapseAll(){const e=t=>{for(const i of t)i.expanded=!1,i.children&&e(i.children)};e(this.nodes),this.nodes=[...this.nodes]}selectNode(e){if(!this.selectable||"none"===this.selectionMode)return;const t=this.nodeMap.get(e);t&&("single"===this.selectionMode?this.selectedNodes=[e]:this.selectedNodes.includes(e)||(this.selectedNodes=[...this.selectedNodes,e]),this.dispatchSelectEvent(e,t))}deselectNode(e){const t=this.nodeMap.get(e);t&&(this.selectedNodes=this.selectedNodes.filter(t=>t!==e),this.dispatchSelectEvent(e,t))}toggleSelection(e){this.selectedNodes.includes(e)?this.deselectNode(e):this.selectNode(e)}checkNode(e){const t=this.nodeMap.get(e);t&&(this.checkedNodes.includes(e)||(this.checkedNodes=[...this.checkedNodes,e]),this.dispatchCheckEvent(e,t,!0))}uncheckNode(e){const t=this.nodeMap.get(e);t&&(this.checkedNodes=this.checkedNodes.filter(t=>t!==e),this.dispatchCheckEvent(e,t,!1))}toggleCheck(e){this.checkedNodes.includes(e)?this.uncheckNode(e):this.checkNode(e)}getNode(e){return this.nodeMap.get(e)}getSelectedNodes(){return this.selectedNodes.map(e=>this.nodeMap.get(e)).filter(Boolean)}getCheckedNodes(){return this.checkedNodes.map(e=>this.nodeMap.get(e)).filter(Boolean)}updateNode(e,t){const i=s=>s.map(s=>{if(s.id===e)return{...s,...t};if(s.children){const e=i(s.children);if(e!==s.children)return{...s,children:e}}return s});this.nodes=i(this.nodes)}},n})();return e.SniceTree=n,e}({},Snice);
69
+ `}styles(){return e.css`${":host{--spinner-size:2.5rem;--spinner-stroke:4px;--spinner-color:var(--snice-color-primary, rgb(59 130 246));display:inline-block;width:var(--spinner-size);height:var(--spinner-size);font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);contain:layout style paint}:host([size=small]){--spinner-size:1.5rem;--spinner-stroke:3px}:host([size=medium]){--spinner-size:2.5rem;--spinner-stroke:4px}:host([size=large]){--spinner-size:3.5rem;--spinner-stroke:5px}:host([size=xl]){--spinner-size:5rem;--spinner-stroke:6px}:host([color=primary]){--spinner-color:var(--snice-color-primary, rgb(59 130 246))}:host([color=success]){--spinner-color:var(--snice-color-success, rgb(16 185 129))}:host([color=warning]){--spinner-color:var(--snice-color-warning, rgb(245 158 11))}:host([color=error]){--spinner-color:var(--snice-color-danger, rgb(239 68 68))}:host([color=info]){--spinner-color:var(--snice-color-info, rgb(99 102 241))}.spinner{position:relative;width:100%;height:100%}.spinner__circle{transform:rotate(-90deg);width:100%;height:100%;animation:2s linear infinite spinner-rotate}.spinner__circle-bar,.spinner__circle-bg{fill:none;stroke-width:var(--spinner-stroke);shape-rendering:geometricPrecision;vector-effect:non-scaling-stroke}.spinner__circle-bg{stroke:var(--spinner-color);opacity:.2}.spinner__circle-bar{stroke:var(--spinner-color);stroke-linecap:round;animation:1.5s ease-in-out infinite spinner-dash}@keyframes spinner-rotate{100%{transform:rotate(270deg)}}@keyframes spinner-dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}.spinner__label{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:var(--snice-font-size-xs, .625rem);font-weight:var(--snice-font-weight-semibold,600);color:var(--spinner-color);white-space:nowrap;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:host([size=small]) .spinner__label{font-size:.5rem}:host([size=medium]) .spinner__label{font-size:var(--snice-font-size-xs, .625rem)}:host([size=large]) .spinner__label{font-size:var(--snice-font-size-sm, .75rem)}:host([size=xl]) .spinner__label{font-size:var(--snice-font-size-sm, .875rem)}"}`}getSizeValue(){switch(this.size){case"small":return 24;case"medium":default:return 40;case"large":return 56;case"xl":return 80}}constructor(){super(...arguments),this.size=(i(this,u),i(this,b,"medium")),this.color=(i(this,g),i(this,k,"primary")),this.label=(i(this,v),i(this,y,"")),this.thickness=(i(this,f),i(this,x,4)),i(this,w)}})})();(()=>{let s,n,a,o,c,d,l,r,h,p,m,u,b,g,k,v,y,f,x,w,_=[e.element("snice-tree-item")],C=[],S=HTMLElement,E=[],N=[],I=[],z=[],L=[],A=[],R=[],M=[],q=[],T=[],$=[],O=[],F=[],B=[],j=[],D=[],H=[];(class extends S{static{n=this}static{const P="function"==typeof Symbol&&Symbol.metadata?Object.create(S[Symbol.metadata]??null):void 0;a=[e.property({type:Number})],o=[e.property({type:Boolean})],c=[e.property({type:Boolean})],d=[e.property({type:Boolean})],l=[e.property({type:Boolean,attribute:"show-checkbox"})],r=[e.property({type:Boolean,attribute:"show-icon"})],h=[e.property({type:Boolean})],p=[e.property({type:Boolean})],m=[e.watch("expanded")],u=[e.watch("selected")],b=[e.watch("checked")],g=[e.watch("indeterminate")],k=[e.watch("loading")],v=[e.dispatch("tree-item-toggle",{bubbles:!0,composed:!0})],y=[e.dispatch("tree-item-select",{bubbles:!0,composed:!0})],f=[e.dispatch("tree-item-check",{bubbles:!0,composed:!0})],x=[e.dispatch("tree-item-lazy-load",{bubbles:!0,composed:!0})],w=[e.ready()],t(this,null,m,{kind:"method",name:"handleExpandedChange",static:!1,private:!1,access:{has:e=>"handleExpandedChange"in e,get:e=>e.handleExpandedChange},metadata:P},null,E),t(this,null,u,{kind:"method",name:"handleSelectedChange",static:!1,private:!1,access:{has:e=>"handleSelectedChange"in e,get:e=>e.handleSelectedChange},metadata:P},null,E),t(this,null,b,{kind:"method",name:"handleCheckedChange",static:!1,private:!1,access:{has:e=>"handleCheckedChange"in e,get:e=>e.handleCheckedChange},metadata:P},null,E),t(this,null,g,{kind:"method",name:"handleIndeterminateChange",static:!1,private:!1,access:{has:e=>"handleIndeterminateChange"in e,get:e=>e.handleIndeterminateChange},metadata:P},null,E),t(this,null,k,{kind:"method",name:"handleLoadingChange",static:!1,private:!1,access:{has:e=>"handleLoadingChange"in e,get:e=>e.handleLoadingChange},metadata:P},null,E),t(this,null,v,{kind:"method",name:"dispatchToggleEvent",static:!1,private:!1,access:{has:e=>"dispatchToggleEvent"in e,get:e=>e.dispatchToggleEvent},metadata:P},null,E),t(this,null,y,{kind:"method",name:"dispatchSelectEvent",static:!1,private:!1,access:{has:e=>"dispatchSelectEvent"in e,get:e=>e.dispatchSelectEvent},metadata:P},null,E),t(this,null,f,{kind:"method",name:"dispatchCheckEvent",static:!1,private:!1,access:{has:e=>"dispatchCheckEvent"in e,get:e=>e.dispatchCheckEvent},metadata:P},null,E),t(this,null,x,{kind:"method",name:"dispatchLazyLoadEvent",static:!1,private:!1,access:{has:e=>"dispatchLazyLoadEvent"in e,get:e=>e.dispatchLazyLoadEvent},metadata:P},null,E),t(this,null,w,{kind:"method",name:"init",static:!1,private:!1,access:{has:e=>"init"in e,get:e=>e.init},metadata:P},null,E),t(null,null,a,{kind:"field",name:"_version",static:!1,private:!1,access:{has:e=>"_version"in e,get:e=>e._version,set:(e,t)=>{e._version=t}},metadata:P},N,I),t(null,null,o,{kind:"field",name:"expanded",static:!1,private:!1,access:{has:e=>"expanded"in e,get:e=>e.expanded,set:(e,t)=>{e.expanded=t}},metadata:P},z,L),t(null,null,c,{kind:"field",name:"selected",static:!1,private:!1,access:{has:e=>"selected"in e,get:e=>e.selected,set:(e,t)=>{e.selected=t}},metadata:P},A,R),t(null,null,d,{kind:"field",name:"checked",static:!1,private:!1,access:{has:e=>"checked"in e,get:e=>e.checked,set:(e,t)=>{e.checked=t}},metadata:P},M,q),t(null,null,l,{kind:"field",name:"showCheckbox",static:!1,private:!1,access:{has:e=>"showCheckbox"in e,get:e=>e.showCheckbox,set:(e,t)=>{e.showCheckbox=t}},metadata:P},T,$),t(null,null,r,{kind:"field",name:"showIcon",static:!1,private:!1,access:{has:e=>"showIcon"in e,get:e=>e.showIcon,set:(e,t)=>{e.showIcon=t}},metadata:P},O,F),t(null,null,h,{kind:"field",name:"loading",static:!1,private:!1,access:{has:e=>"loading"in e,get:e=>e.loading,set:(e,t)=>{e.loading=t}},metadata:P},B,j),t(null,null,p,{kind:"field",name:"indeterminate",static:!1,private:!1,access:{has:e=>"indeterminate"in e,get:e=>e.indeterminate,set:(e,t)=>{e.indeterminate=t}},metadata:P},D,H),t(null,s={value:n},_,{kind:"class",name:n.name,metadata:P},null,C),n=s.value,P&&Object.defineProperty(n,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:P}),i(n,C)}get node(){return this._node}get level(){return this._level}get hasChildren(){return!!(this._node.children&&this._node.children.length>0)||!!this._node.lazy}setNode(e,t){this._node=e,this._level=t,void 0!==e.expanded&&(this.expanded=e.expanded),void 0!==e.selected&&(this.selected=e.selected),void 0!==e.checked&&(this.checked=e.checked),void 0!==e.indeterminate&&(this.indeterminate=e.indeterminate),this.updateDOM(),requestAnimationFrame(()=>{requestAnimationFrame(()=>{this.updateChildTreeItems()})})}handleExpandedChange(){this.shadowRoot&&this.updateExpandedState()}handleSelectedChange(){this.shadowRoot&&this.updateSelectedState()}handleCheckedChange(){this.shadowRoot&&this.updateCheckboxState()}handleIndeterminateChange(){this.shadowRoot&&this.updateCheckboxState()}handleLoadingChange(){this.shadowRoot&&this.updateLoadingState()}updateChildTreeItems(){if(!this.shadowRoot||!this.hasChildren)return;const e=this.shadowRoot.querySelectorAll(".tree-item__children > snice-tree-item");this.node.children?.forEach((t,i)=>{e[i]&&e[i].setNode&&e[i].setNode(t,this.level+1)})}dispatchToggleEvent(){return{nodeId:this.node.id,expanded:this.expanded}}dispatchSelectEvent(){return{nodeId:this.node.id,selected:this.selected}}dispatchCheckEvent(){return{nodeId:this.node.id,checked:this.checked}}dispatchLazyLoadEvent(){return{nodeId:this.node.id,node:this.node}}init(){this.renderTemplate(),this.updateDOM()}renderTemplate(){const e='\n <style>:host{display:block}.tree-item{position:relative;user-select:none}.tree-item__content{display:flex;align-items:center;gap:var(--snice-spacing-xs,.5rem);padding:var(--snice-spacing-xs,.5rem) var(--snice-spacing-sm,.75rem);padding-left:calc(var(--tree-level,0) * var(--snice-spacing-xl,1.5rem) + var(--snice-spacing-sm,.75rem));cursor:pointer;border-radius:var(--snice-border-radius-md,.25rem);transition:background-color var(--snice-transition-fast, 150ms) ease;position:relative;background-color:transparent}.tree-item__content:hover{background-color:var(--snice-color-background-hover,rgb(var(--snice-color-gray-100)))}.tree-item__content:focus{outline:2px solid var(--snice-color-primary,rgb(var(--snice-color-blue-600)));outline-offset:-2px}.tree-item__content--selected{background-color:var(--snice-color-primary-subtle,rgb(var(--snice-color-blue-50)))}.tree-item__content--selected:hover{background-color:var(--snice-color-primary-subtle-hover,rgb(var(--snice-color-blue-100)))}.tree-item__content--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.tree-item__expander{width:1.25rem;height:1.25rem;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:transform .2s;cursor:pointer}.tree-item__expander--expanded{transform:rotate(90deg)}.tree-item__expander--hidden{visibility:hidden}.tree-item__expander svg{width:1rem;height:1rem;fill:currentColor}.tree-item__checkbox{display:flex;align-items:center;flex-shrink:0;height:1.25rem}.tree-item__checkbox snice-checkbox{display:flex;align-items:center}.tree-item__icon{flex-shrink:0;width:1.25rem;height:1.25rem;display:flex;align-items:center;justify-content:center}.tree-item__icon-image{width:100%;height:100%;object-fit:contain}.tree-item__label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.25rem;align-self:center}.tree-item__children{overflow:hidden;max-height:0;opacity:0;transition:max-height .25s cubic-bezier(.4, 0, .2, 1),opacity .25s cubic-bezier(.4, 0, .2, 1)}.tree-item__children--expanded{max-height:10000px;opacity:1;transition:max-height .25s cubic-bezier(.4, 0, .2, 1),opacity .25s cubic-bezier(.4, 0, .2, 1)}.tree-item__loading{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;flex-shrink:0}</style>\n <div class="tree-item">\n <div\n class="tree-item__content"\n part="content"\n role="treeitem"\n tabindex="0">\n\n <div class="tree-item__loading" part="loading" style="display: none;">\n <snice-spinner size="small"></snice-spinner>\n </div>\n\n <div class="tree-item__expander" part="expander">\n <svg viewBox="0 0 24 24"><path d="M9 6l6 6-6 6"/></svg>\n </div>\n\n <div class="tree-item__checkbox" part="checkbox" style="display: none;">\n <snice-checkbox size="small"></snice-checkbox>\n </div>\n\n <div class="tree-item__icon" part="icon" style="display: none;"></div>\n\n <div class="tree-item__label" part="label"></div>\n </div>\n\n <div class="tree-item__children" part="children" role="group"></div>\n </div>\n ';this.shadowRoot?this.shadowRoot.innerHTML=e:this.attachShadow({mode:"open"}).innerHTML=e;const t=this.shadowRoot.querySelector(".tree-item__content"),i=this.shadowRoot.querySelector(".tree-item__expander");t?.addEventListener("click",e=>this.handleContentClick(e)),t?.addEventListener("keydown",e=>this.handleKeydown(e)),i?.addEventListener("click",e=>{e.stopPropagation(),this.toggle()}),requestAnimationFrame(()=>{const e=this.shadowRoot.querySelector("snice-checkbox");e?.addEventListener("checkbox-change",e=>this.handleCheckboxChangeEvent(e))})}updateDOM(){if(!this.shadowRoot)return;const e=this.shadowRoot.querySelector(".tree-item"),t=this.shadowRoot.querySelector(".tree-item__content"),i=this.shadowRoot.querySelector(".tree-item__label"),s=this.shadowRoot.querySelector(".tree-item__icon");e&&e.style.setProperty("--tree-level",this.level.toString()),i&&(i.textContent=this.node.label||""),s&&this.showIcon?this.node.iconImage?(s.innerHTML=`<img class="tree-item__icon-image" src="${this.node.iconImage}" alt="" part="icon-image">`,s.style.display=""):this.node.icon?(s.innerHTML=`<span part="icon-text">${this.node.icon}</span>`,s.style.display=""):s.style.display="none":s&&(s.style.display="none"),t&&(t.setAttribute("tabindex",this.node.disabled?"-1":"0"),t.setAttribute("aria-selected",this.selected.toString()),t.setAttribute("aria-disabled",(this.node.disabled||!1).toString()),t.setAttribute("aria-busy",this.loading.toString()),this.hasChildren?t.setAttribute("aria-expanded",this.expanded.toString()):t.removeAttribute("aria-expanded")),this.updateExpandedState(),this.updateSelectedState(),this.updateCheckboxState(),this.updateLoadingState(),this.updateChildrenDOM()}updateExpandedState(){if(!this.shadowRoot)return;const e=this.shadowRoot.querySelector(".tree-item__expander"),t=this.shadowRoot.querySelector(".tree-item__children"),i=this.shadowRoot.querySelector(".tree-item__content");e&&(e.classList.toggle("tree-item__expander--expanded",this.expanded),e.classList.toggle("tree-item__expander--hidden",!this.hasChildren)),t&&t.classList.toggle("tree-item__children--expanded",this.expanded),i&&this.hasChildren&&i.setAttribute("aria-expanded",this.expanded.toString())}updateSelectedState(){if(!this.shadowRoot)return;const e=this.shadowRoot.querySelector(".tree-item__content");e&&(e.classList.toggle("tree-item__content--selected",this.selected),e.setAttribute("aria-selected",this.selected.toString()))}updateCheckboxState(){if(!this.shadowRoot)return;const e=this.shadowRoot.querySelector(".tree-item__checkbox"),t=this.shadowRoot.querySelector("snice-checkbox");e&&(e.style.display=this.showCheckbox?"":"none"),t&&requestAnimationFrame(()=>{t.checked=this.checked,t.indeterminate=this.indeterminate,t.disabled=this.node.disabled||!1})}updateLoadingState(){if(!this.shadowRoot)return;const e=this.shadowRoot.querySelector(".tree-item__loading"),t=this.shadowRoot.querySelector(".tree-item__expander");e&&t&&(e.style.display=this.loading?"":"none",t.style.display=this.loading?"none":"")}updateChildrenDOM(){if(!this.shadowRoot||!this.hasChildren)return;const e=this.shadowRoot.querySelector(".tree-item__children");e&&(e.innerHTML="",this.node.children?.forEach(t=>{const i=document.createElement("snice-tree-item");this.showCheckbox&&i.setAttribute("show-checkbox",""),this.showIcon&&i.setAttribute("show-icon",""),e.appendChild(i)}),requestAnimationFrame(()=>{this.updateChildTreeItems()}))}handleContentClick(e){this.node.disabled||(this.selected?this.deselect():this.select())}handleKeydown(e){this.node.disabled||("Enter"===e.key||" "===e.key?(e.preventDefault(),this.selected?this.deselect():this.select()):"ArrowRight"===e.key?(e.preventDefault(),this.hasChildren&&!this.expanded&&this.expand()):"ArrowLeft"===e.key&&(e.preventDefault(),this.hasChildren&&this.expanded&&this.collapse()))}handleCheckboxChangeEvent(e){e.stopPropagation();const t=e.detail.checked;this.checked=t,this.node.checked=t,this.dispatchEvent(new CustomEvent("tree-item-check",{bubbles:!0,composed:!0,detail:{nodeId:this.node.id,checked:this.checked}}))}expand(){if(this.hasChildren&&!this.expanded){if(this.node.lazy&&(!this.node.children||0===this.node.children.length))return this.loading=!0,void this.dispatchLazyLoadEvent();this.expanded=!0,this.dispatchToggleEvent()}}finishLoading(){this.loading=!1,this.expanded=!0,this.dispatchToggleEvent()}collapse(){this.hasChildren&&this.expanded&&(this.expanded=!1,this.dispatchToggleEvent())}toggle(){this.expanded?this.collapse():this.expand()}select(){this.node.disabled||(this.selected=!0,this.updateSelectedState(),this.dispatchSelectEvent())}deselect(){this.selected=!1,this.updateSelectedState(),this.dispatchSelectEvent()}check(){this.node.disabled||(this.checked=!0,this.dispatchCheckEvent())}uncheck(){this.checked=!1,this.dispatchCheckEvent()}constructor(){super(...arguments),this._node=(i(this,E),{id:"",label:""}),this._level=0,this._version=i(this,N,0),this.expanded=(i(this,I),i(this,z,!1)),this.selected=(i(this,L),i(this,A,!1)),this.checked=(i(this,R),i(this,M,!1)),this.showCheckbox=(i(this,q),i(this,T,!1)),this.showIcon=(i(this,$),i(this,O,!0)),this.loading=(i(this,F),i(this,B,!1)),this.indeterminate=(i(this,j),i(this,D,!1)),i(this,H)}})})();(()=>{let s,n,a,o,c,d,l,r,h,p,m,u,b,g,k,v,y,f,x,w,_,C,S,E,N,I,z,L=[e.element("snice-tree")],A=[],R=HTMLElement,M=[],q=[],T=[],$=[],O=[],F=[],B=[],j=[],D=[],H=[],P=[],K=[],U=[],V=[],X=[],G=[],J=[],Q=[],W=[];(class extends R{static{n=this}constructor(){super(...arguments),this.selectable=(i(this,M),i(this,q,!0)),this.selectionMode=(i(this,T),i(this,$,"single")),this.showCheckboxes=(i(this,O),i(this,F,!1)),this.showIcons=(i(this,B),i(this,j,!0)),this.expandOnClick=(i(this,D),i(this,H,!1)),this.nodes=(i(this,P),i(this,K,[])),this.selectedNodes=(i(this,U),i(this,V,[])),this.checkedNodes=(i(this,X),i(this,G,[])),this.nodeMap=(i(this,J),new Map),this.treeItems=i(this,Q,void 0),this.lastFocusedItem=(i(this,W),null),this.loadingNodeIds=new Set}static{const Y="function"==typeof Symbol&&Symbol.metadata?Object.create(R[Symbol.metadata]??null):void 0;a=[e.property({type:Boolean})],o=[e.property({})],c=[e.property({type:Boolean,attribute:"show-checkboxes"})],d=[e.property({type:Boolean,attribute:"show-icons"})],l=[e.property({type:Boolean,attribute:"expand-on-click"})],r=[e.property({type:Array})],h=[e.property({type:Array,attribute:"selected-nodes"})],p=[e.property({type:Array,attribute:"checked-nodes"})],m=[e.queryAll("snice-tree-item")],u=[e.ready()],b=[e.watch("nodes")],g=[e.watch("selectedNodes")],k=[e.watch("checkedNodes")],v=[e.on("tree-item-toggle")],y=[e.on("tree-item-select")],f=[e.on("tree-item-check")],x=[e.on("tree-item-lazy-load")],w=[e.dispatch("tree-node-expand",{bubbles:!0,composed:!0})],_=[e.dispatch("tree-node-collapse",{bubbles:!0,composed:!0})],C=[e.dispatch("tree-node-select",{bubbles:!0,composed:!0})],S=[e.dispatch("tree-node-check",{bubbles:!0,composed:!0})],E=[e.dispatch("tree-node-lazy-load",{bubbles:!0,composed:!0})],N=[e.on("keydown")],I=[e.on("focusin")],z=[e.on("focusout")],t(this,null,u,{kind:"method",name:"init",static:!1,private:!1,access:{has:e=>"init"in e,get:e=>e.init},metadata:Y},null,M),t(this,null,b,{kind:"method",name:"handleNodesChange",static:!1,private:!1,access:{has:e=>"handleNodesChange"in e,get:e=>e.handleNodesChange},metadata:Y},null,M),t(this,null,g,{kind:"method",name:"handleSelectedNodesChange",static:!1,private:!1,access:{has:e=>"handleSelectedNodesChange"in e,get:e=>e.handleSelectedNodesChange},metadata:Y},null,M),t(this,null,k,{kind:"method",name:"handleCheckedNodesChange",static:!1,private:!1,access:{has:e=>"handleCheckedNodesChange"in e,get:e=>e.handleCheckedNodesChange},metadata:Y},null,M),t(this,null,v,{kind:"method",name:"handleItemToggle",static:!1,private:!1,access:{has:e=>"handleItemToggle"in e,get:e=>e.handleItemToggle},metadata:Y},null,M),t(this,null,y,{kind:"method",name:"handleItemSelect",static:!1,private:!1,access:{has:e=>"handleItemSelect"in e,get:e=>e.handleItemSelect},metadata:Y},null,M),t(this,null,f,{kind:"method",name:"handleItemCheck",static:!1,private:!1,access:{has:e=>"handleItemCheck"in e,get:e=>e.handleItemCheck},metadata:Y},null,M),t(this,null,x,{kind:"method",name:"handleLazyLoad",static:!1,private:!1,access:{has:e=>"handleLazyLoad"in e,get:e=>e.handleLazyLoad},metadata:Y},null,M),t(this,null,w,{kind:"method",name:"dispatchExpandEvent",static:!1,private:!1,access:{has:e=>"dispatchExpandEvent"in e,get:e=>e.dispatchExpandEvent},metadata:Y},null,M),t(this,null,_,{kind:"method",name:"dispatchCollapseEvent",static:!1,private:!1,access:{has:e=>"dispatchCollapseEvent"in e,get:e=>e.dispatchCollapseEvent},metadata:Y},null,M),t(this,null,C,{kind:"method",name:"dispatchSelectEvent",static:!1,private:!1,access:{has:e=>"dispatchSelectEvent"in e,get:e=>e.dispatchSelectEvent},metadata:Y},null,M),t(this,null,S,{kind:"method",name:"dispatchCheckEvent",static:!1,private:!1,access:{has:e=>"dispatchCheckEvent"in e,get:e=>e.dispatchCheckEvent},metadata:Y},null,M),t(this,null,E,{kind:"method",name:"dispatchLazyLoadEvent",static:!1,private:!1,access:{has:e=>"dispatchLazyLoadEvent"in e,get:e=>e.dispatchLazyLoadEvent},metadata:Y},null,M),t(this,null,N,{kind:"method",name:"handleKeyDown",static:!1,private:!1,access:{has:e=>"handleKeyDown"in e,get:e=>e.handleKeyDown},metadata:Y},null,M),t(this,null,I,{kind:"method",name:"handleFocusIn",static:!1,private:!1,access:{has:e=>"handleFocusIn"in e,get:e=>e.handleFocusIn},metadata:Y},null,M),t(this,null,z,{kind:"method",name:"handleFocusOut",static:!1,private:!1,access:{has:e=>"handleFocusOut"in e,get:e=>e.handleFocusOut},metadata:Y},null,M),t(null,null,a,{kind:"field",name:"selectable",static:!1,private:!1,access:{has:e=>"selectable"in e,get:e=>e.selectable,set:(e,t)=>{e.selectable=t}},metadata:Y},q,T),t(null,null,o,{kind:"field",name:"selectionMode",static:!1,private:!1,access:{has:e=>"selectionMode"in e,get:e=>e.selectionMode,set:(e,t)=>{e.selectionMode=t}},metadata:Y},$,O),t(null,null,c,{kind:"field",name:"showCheckboxes",static:!1,private:!1,access:{has:e=>"showCheckboxes"in e,get:e=>e.showCheckboxes,set:(e,t)=>{e.showCheckboxes=t}},metadata:Y},F,B),t(null,null,d,{kind:"field",name:"showIcons",static:!1,private:!1,access:{has:e=>"showIcons"in e,get:e=>e.showIcons,set:(e,t)=>{e.showIcons=t}},metadata:Y},j,D),t(null,null,l,{kind:"field",name:"expandOnClick",static:!1,private:!1,access:{has:e=>"expandOnClick"in e,get:e=>e.expandOnClick,set:(e,t)=>{e.expandOnClick=t}},metadata:Y},H,P),t(null,null,r,{kind:"field",name:"nodes",static:!1,private:!1,access:{has:e=>"nodes"in e,get:e=>e.nodes,set:(e,t)=>{e.nodes=t}},metadata:Y},K,U),t(null,null,h,{kind:"field",name:"selectedNodes",static:!1,private:!1,access:{has:e=>"selectedNodes"in e,get:e=>e.selectedNodes,set:(e,t)=>{e.selectedNodes=t}},metadata:Y},V,X),t(null,null,p,{kind:"field",name:"checkedNodes",static:!1,private:!1,access:{has:e=>"checkedNodes"in e,get:e=>e.checkedNodes,set:(e,t)=>{e.checkedNodes=t}},metadata:Y},G,J),t(null,null,m,{kind:"field",name:"treeItems",static:!1,private:!1,access:{has:e=>"treeItems"in e,get:e=>e.treeItems,set:(e,t)=>{e.treeItems=t}},metadata:Y},Q,W),t(null,s={value:n},L,{kind:"class",name:n.name,metadata:Y},null,A),n=s.value,Y&&Object.defineProperty(n,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:Y}),i(n,A)}init(){this.buildNodeMap(),this.syncNodeStates(),this.renderTemplate(),this.setAttribute("role","tree"),this.setAttribute("tabindex","0"),"multiple"===this.selectionMode&&this.setAttribute("aria-multiselectable","true"),this.updateTreeItems()}renderTemplate(){this.shadowRoot||this.attachShadow({mode:"open"}),this.shadowRoot.innerHTML='\n <style>:host{display:block}.tree{font-family:var(--snice-font-family, system-ui, -apple-system, sans-serif);font-size:var(--snice-font-size-base, 1rem);color:var(--snice-color-text,rgb(23 23 23));background-color:var(--snice-color-background,rgb(255 255 255));border:1px solid var(--snice-color-border,rgb(226 226 226));border-radius:var(--snice-border-radius-md,.375rem);overflow:auto;max-height:var(--tree-max-height,100%)}.tree__content{padding:var(--snice-spacing-xs,.5rem)}.tree--no-border{border:none}.tree__empty{padding:var(--snice-spacing-lg,1.5rem);text-align:center;color:var(--snice-color-text-muted,rgb(115 115 115));font-style:italic}</style>\n <div class="tree" part="container" role="tree">\n <div class="tree__content" part="content"></div>\n </div>\n '}handleNodesChange(){this.buildNodeMap(),this.syncNodeStates(),this.trackLoadingNodes(),this.updateTreeItemsDOM(),requestAnimationFrame(()=>{this.restoreLoadingState(),requestAnimationFrame(()=>{this.finishLoadingNodes()})})}trackLoadingNodes(){const e=t=>{if(t&&t.node&&(t.loading&&this.loadingNodeIds.add(t.node.id),t.shadowRoot)){t.shadowRoot.querySelectorAll(".tree-item__children > snice-tree-item").forEach(t=>e(t))}},t=this.shadowRoot?.querySelectorAll(".tree__content > snice-tree-item");t?.forEach(t=>e(t))}restoreLoadingState(){const e=t=>{if(t&&t.node&&(this.loadingNodeIds.has(t.node.id)&&(t.loading=!0),t.shadowRoot)){t.shadowRoot.querySelectorAll(".tree-item__children > snice-tree-item").forEach(t=>e(t))}},t=this.shadowRoot?.querySelectorAll(".tree__content > snice-tree-item");t?.forEach(t=>e(t))}updateTreeItemsDOM(){if(!this.shadowRoot)return;const e=this.shadowRoot.querySelector(".tree__content");e&&(e.innerHTML="",this.nodes.forEach(t=>{const i=document.createElement("snice-tree-item");this.showCheckboxes&&i.setAttribute("show-checkbox",""),this.showIcons&&i.setAttribute("show-icon",""),e.appendChild(i)}),this.updateTreeItems())}updateTreeItems(){requestAnimationFrame(()=>{if(this.treeItems&&0!==this.treeItems.length)this.treeItems.forEach((e,t)=>{this.nodes[t]&&e.setNode&&e.setNode(this.nodes[t],0)});else{const e=this.shadowRoot?.querySelectorAll(":scope > .tree > .tree__content > snice-tree-item");e&&e.forEach((e,t)=>{this.nodes[t]&&e.setNode&&e.setNode(this.nodes[t],0)})}})}handleSelectedNodesChange(){this.syncNodeStates(),requestAnimationFrame(()=>{this.updateSelectedStatesOnly()})}handleCheckedNodesChange(){this.syncNodeStates(),requestAnimationFrame(()=>{this.updateCheckboxStatesOnly()})}buildNodeMap(){this.nodeMap.clear();const e=t=>{for(const i of t)this.nodeMap.set(i.id,i),i.children&&e(i.children)};e(this.nodes)}syncNodeStates(){for(const[e,t]of this.nodeMap.entries())t.selected=this.selectedNodes.includes(e),t.checked=this.checkedNodes.includes(e)}handleItemToggle(e){const t=e,{nodeId:i,expanded:s}=t.detail,n=this.nodeMap.get(i);n&&(n.expanded=s,s?this.dispatchExpandEvent(i,n):this.dispatchCollapseEvent(i,n))}handleItemSelect(e){const t=e,{nodeId:i,selected:s}=t.detail,n=this.nodeMap.get(i);n&&this.selectable&&"none"!==this.selectionMode&&("single"===this.selectionMode?(this.deselectAllNodes(),s?(n.selected=!0,this.selectedNodes=[i]):(n.selected=!1,this.selectedNodes=[]),this.updateSelectedStatesOnly()):(s?(n.selected=!0,this.selectedNodes.includes(i)||(this.selectedNodes=[...this.selectedNodes,i])):(n.selected=!1,this.selectedNodes=this.selectedNodes.filter(e=>e!==i)),this.updateSelectedStatesOnly()),this.dispatchSelectEvent(i,n))}deselectAllNodes(){const e=t=>{for(const i of t)i.selected=!1,i.children&&e(i.children)};e(this.nodes)}handleItemCheck(e){const t=e,{nodeId:i,checked:s}=t.detail,n=this.nodeMap.get(i);n&&(this.syncCheckboxes(n,s),this.dispatchCheckEvent(i,n,s))}syncCheckboxes(e,t){const i=(e,t)=>{if(e.checked=t,t&&!this.checkedNodes.includes(e.id)?this.checkedNodes=[...this.checkedNodes,e.id]:t||(this.checkedNodes=this.checkedNodes.filter(t=>t!==e.id)),e.children)for(const s of e.children)s.disabled||i(s,t)},s=e=>{const t=this.findParentNode(e.id);if(!t)return;const i=t.children||[],n=i.filter(e=>e.checked&&!e.disabled),a=i.filter(e=>!e.checked&&!e.disabled&&!e.indeterminate),o=n.length===i.filter(e=>!e.disabled).length,c=a.length===i.filter(e=>!e.disabled).length;t.checked=o,t.indeterminate=!o&&!c,t.checked&&!this.checkedNodes.includes(t.id)?this.checkedNodes=[...this.checkedNodes,t.id]:t.checked||t.indeterminate||(this.checkedNodes=this.checkedNodes.filter(e=>e!==t.id)),s(t)};i(e,t),s(e),this.updateCheckboxStatesOnly()}updateCheckboxStatesOnly(){const e=t=>{if(!t||!t.node)return;const i=this.nodeMap.get(t.node.id);if(i&&(t.checked!==i.checked&&(t.checked=i.checked),t.indeterminate!==i.indeterminate&&(t.indeterminate=i.indeterminate),t.shadowRoot)){t.shadowRoot.querySelectorAll(".tree-item__children > snice-tree-item").forEach(t=>e(t))}},t=this.shadowRoot?.querySelectorAll(".tree__content > snice-tree-item");t?.forEach(t=>e(t))}updateSelectedStatesOnly(){const e=t=>{if(!t||!t.node)return;const i=this.nodeMap.get(t.node.id);if(i){if(t.selected=i.selected,t.shadowRoot){const e=t.shadowRoot.querySelector(".tree-item__content");e&&(i.selected?e.classList.add("tree-item__content--selected"):e.classList.remove("tree-item__content--selected"),e.setAttribute("aria-selected",(i.selected??!1).toString()))}if(t.shadowRoot){t.shadowRoot.querySelectorAll(".tree-item__children > snice-tree-item").forEach(t=>e(t))}}},t=this.shadowRoot?.querySelectorAll(".tree__content > snice-tree-item");t?.forEach(t=>e(t))}finishLoadingNodes(){const e=t=>{if(t&&t.node&&(t.loading&&t.node.children&&t.node.children.length>0&&(t.finishLoading(),this.loadingNodeIds.delete(t.node.id)),t.shadowRoot)){t.shadowRoot.querySelectorAll(".tree-item__children > snice-tree-item").forEach(t=>e(t))}},t=this.shadowRoot?.querySelectorAll(".tree__content > snice-tree-item");t?.forEach(t=>e(t))}findParentNode(e){const t=(e,i)=>{for(const s of e)if(s.children){if(s.children.some(e=>e.id===i))return s;const e=t(s.children,i);if(e)return e}return null};return t(this.nodes,e)}handleLazyLoad(e){const t=e,{nodeId:i,node:s}=t.detail;this.dispatchLazyLoadEvent(i,s)}dispatchExpandEvent(e,t){return{nodeId:e,node:t,tree:this}}dispatchCollapseEvent(e,t){return{nodeId:e,node:t,tree:this}}dispatchSelectEvent(e,t){return{nodeId:e,node:t,selectedNodes:this.getSelectedNodes(),tree:this}}dispatchCheckEvent(e,t,i){return{nodeId:e,node:t,checked:i,checkedNodes:this.getCheckedNodes(),tree:this}}dispatchLazyLoadEvent(e,t){return{nodeId:e,node:t,tree:this}}handleKeyDown(e){if(!["ArrowDown","ArrowUp","ArrowRight","ArrowLeft","Home","End","Enter"," "].includes(e.key))return;const t=e.target;if("INPUT"===t.tagName||"TEXTAREA"===t.tagName)return;const i=this.getFocusableItems();if(0===i.length)return;e.preventDefault();const s=i.findIndex(e=>e.matches(":focus")),n=i[s],a=e=>{const t=Math.max(0,Math.min(e,i.length-1));i[t]?.focus()};"ArrowDown"===e.key?a(s+1):"ArrowUp"===e.key?a(s-1):"ArrowRight"===e.key?n&&n.expand&&n.expand():"ArrowLeft"===e.key?n&&n.collapse&&n.collapse():"Home"===e.key?a(0):"End"===e.key?a(i.length-1):"Enter"!==e.key&&" "!==e.key||n&&n.select&&n.select()}handleFocusIn(e){const t=e.target;if(t===this){const e=this.getFocusableItems(),t=this.lastFocusedItem||e[0];return void t?.focus()}"SNICE-TREE-ITEM"===t.tagName&&(this.lastFocusedItem&&this.lastFocusedItem.setAttribute("tabindex","-1"),this.lastFocusedItem=t,this.setAttribute("tabindex","-1"),t.setAttribute("tabindex","0"))}handleFocusOut(e){const t=e.relatedTarget;t&&this.contains(t)||this.setAttribute("tabindex","0")}getFocusableItems(){const e=Array.from(this.shadowRoot?.querySelectorAll("snice-tree-item")||[]),t=new Set;return e.filter(e=>{const i=e.node?.disabled;if(i)return!1;let s=e.parentElement;for(;s&&s!==this;){if("SNICE-TREE-ITEM"===s.tagName){if(!s.expanded)return t.add(e),!1}s=s.parentElement}return!t.has(e)})}expandNode(e){const t=this.nodeMap.get(e);t&&t.children&&(t.expanded=!0,this.nodes=[...this.nodes],this.dispatchExpandEvent(e,t))}collapseNode(e){const t=this.nodeMap.get(e);t&&t.children&&(t.expanded=!1,this.nodes=[...this.nodes],this.dispatchCollapseEvent(e,t))}toggleNode(e){const t=this.nodeMap.get(e);t&&t.children&&(t.expanded?this.collapseNode(e):this.expandNode(e))}expandAll(){const e=t=>{for(const i of t)i.children&&i.children.length>0&&(i.expanded=!0,e(i.children))};e(this.nodes),this.nodes=[...this.nodes]}collapseAll(){const e=t=>{for(const i of t)i.expanded=!1,i.children&&e(i.children)};e(this.nodes),this.nodes=[...this.nodes]}selectNode(e){if(!this.selectable||"none"===this.selectionMode)return;const t=this.nodeMap.get(e);t&&("single"===this.selectionMode?this.selectedNodes=[e]:this.selectedNodes.includes(e)||(this.selectedNodes=[...this.selectedNodes,e]),this.dispatchSelectEvent(e,t))}deselectNode(e){const t=this.nodeMap.get(e);t&&(this.selectedNodes=this.selectedNodes.filter(t=>t!==e),this.dispatchSelectEvent(e,t))}toggleSelection(e){this.selectedNodes.includes(e)?this.deselectNode(e):this.selectNode(e)}checkNode(e){const t=this.nodeMap.get(e);t&&(this.checkedNodes.includes(e)||(this.checkedNodes=[...this.checkedNodes,e]),this.dispatchCheckEvent(e,t,!0))}uncheckNode(e){const t=this.nodeMap.get(e);t&&(this.checkedNodes=this.checkedNodes.filter(t=>t!==e),this.dispatchCheckEvent(e,t,!1))}toggleCheck(e){this.checkedNodes.includes(e)?this.uncheckNode(e):this.checkNode(e)}getNode(e){return this.nodeMap.get(e)}getSelectedNodes(){return this.selectedNodes.map(e=>this.nodeMap.get(e)).filter(Boolean)}getCheckedNodes(){return this.checkedNodes.map(e=>this.nodeMap.get(e)).filter(Boolean)}updateNode(e,t){const i=s=>s.map(s=>{if(s.id===e)return{...s,...t};if(s.children){const e=i(s.children);if(e!==s.children)return{...s,children:e}}return s});this.nodes=i(this.nodes)}})})()}(Snice);
70
70
  //# sourceMappingURL=snice-tree.min.js.map