@threadlabs/looma 0.1.23 → 0.1.25

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 (309) hide show
  1. package/dist/chunk-HNFCGIBP.js +8 -0
  2. package/dist/chunk-NB6DBRXQ.js +323 -0
  3. package/dist/{chunk-GDMQKT5F.js → chunk-UY423IKN.js} +33 -30
  4. package/dist/cjs/controlled-state-BFya8rAX.js +9 -0
  5. package/dist/cjs/icons-BAdjrnhS.js +680 -0
  6. package/dist/cjs/loader.cjs.js +1 -1
  7. package/dist/cjs/looma.cjs.js +1 -1
  8. package/dist/cjs/ui-affordance-scope.cjs.entry.js +1 -1
  9. package/dist/cjs/ui-avatar-group.cjs.entry.js +9 -17
  10. package/dist/cjs/ui-avatar.cjs.entry.js +2 -2
  11. package/dist/cjs/ui-badge.cjs.entry.js +2 -2
  12. package/dist/cjs/ui-button.cjs.entry.js +1 -1
  13. package/dist/cjs/ui-callout.cjs.entry.js +27 -0
  14. package/dist/cjs/ui-checkbox.cjs.entry.js +13 -7
  15. package/dist/cjs/{ui-combobox.cjs.entry.js → ui-chip_2.cjs.entry.js} +29 -4
  16. package/dist/cjs/ui-context-menu.cjs.entry.js +1 -1
  17. package/dist/cjs/ui-dialog.cjs.entry.js +44 -8
  18. package/dist/cjs/ui-disclosure.cjs.entry.js +9 -6
  19. package/dist/cjs/ui-editable.cjs.entry.js +100 -0
  20. package/dist/cjs/ui-floating-action-button.cjs.entry.js +1 -1
  21. package/dist/cjs/ui-form-field.cjs.entry.js +59 -4
  22. package/dist/cjs/ui-icon-button.cjs.entry.js +1 -1
  23. package/dist/cjs/ui-input.cjs.entry.js +1 -1
  24. package/dist/cjs/ui-menu-item.cjs.entry.js +2 -2
  25. package/dist/cjs/ui-menu.cjs.entry.js +14 -9
  26. package/dist/cjs/ui-multi-combobox.cjs.entry.js +158 -0
  27. package/dist/cjs/ui-popover.cjs.entry.js +10 -7
  28. package/dist/cjs/ui-radio-group.cjs.entry.js +1 -1
  29. package/dist/cjs/ui-radio.cjs.entry.js +16 -7
  30. package/dist/cjs/ui-search-result-row.cjs.entry.js +1 -1
  31. package/dist/cjs/ui-search-shell.cjs.entry.js +1 -1
  32. package/dist/cjs/ui-select.cjs.entry.js +1 -1
  33. package/dist/cjs/ui-switch.cjs.entry.js +19 -10
  34. package/dist/cjs/ui-tabs.cjs.entry.js +10 -9
  35. package/dist/cjs/ui-textarea.cjs.entry.js +1 -1
  36. package/dist/cjs/ui-toast-region.cjs.entry.js +30 -19
  37. package/dist/cjs/ui-tooltip.cjs.entry.js +12 -8
  38. package/dist/cjs/ui-top-bar.cjs.entry.js +1 -1
  39. package/dist/cjs/ui-tree-item.cjs.entry.js +54 -617
  40. package/dist/cjs/ui-tree.cjs.entry.js +123 -11
  41. package/dist/collection/collection-manifest.json +4 -0
  42. package/dist/collection/components/ui-affordance-scope/ui-affordance-scope.js +1 -1
  43. package/dist/collection/components/ui-avatar/ui-avatar.css +4 -4
  44. package/dist/collection/components/ui-avatar/ui-avatar.js +1 -1
  45. package/dist/collection/components/ui-avatar-group/ui-avatar-group.css +2 -2
  46. package/dist/collection/components/ui-avatar-group/ui-avatar-group.js +8 -16
  47. package/dist/collection/components/ui-badge/ui-badge.css +64 -48
  48. package/dist/collection/components/ui-badge/ui-badge.js +1 -1
  49. package/dist/collection/components/ui-button/ui-button.js +1 -1
  50. package/dist/collection/components/ui-callout/ui-callout.css +74 -0
  51. package/dist/collection/components/ui-callout/ui-callout.js +59 -0
  52. package/dist/collection/components/ui-checkbox/ui-checkbox.js +16 -11
  53. package/dist/collection/components/ui-chip/ui-chip.css +47 -0
  54. package/dist/collection/components/ui-chip/ui-chip.js +67 -0
  55. package/dist/collection/components/ui-combobox/ui-combobox.js +49 -4
  56. package/dist/collection/components/ui-context-menu/ui-context-menu.js +1 -1
  57. package/dist/collection/components/ui-dialog/ui-dialog.js +49 -13
  58. package/dist/collection/components/ui-disclosure/ui-disclosure.js +12 -10
  59. package/dist/collection/components/ui-editable/ui-editable.css +2 -0
  60. package/dist/collection/components/ui-editable/ui-editable.js +196 -0
  61. package/dist/collection/components/ui-floating-action-button/ui-floating-action-button.js +1 -1
  62. package/dist/collection/components/ui-form-field/ui-form-field.js +59 -4
  63. package/dist/collection/components/ui-icon-button/ui-icon-button.js +1 -1
  64. package/dist/collection/components/ui-input/ui-input.js +1 -1
  65. package/dist/collection/components/ui-menu/ui-menu.css +12 -23
  66. package/dist/collection/components/ui-menu/ui-menu.js +16 -12
  67. package/dist/collection/components/ui-menu-item/ui-menu-item.css +9 -3
  68. package/dist/collection/components/ui-menu-item/ui-menu-item.js +1 -1
  69. package/dist/collection/components/ui-multi-combobox/ui-multi-combobox.css +29 -0
  70. package/dist/collection/components/ui-multi-combobox/ui-multi-combobox.js +503 -0
  71. package/dist/collection/components/ui-popover/ui-popover.css +14 -5
  72. package/dist/collection/components/ui-popover/ui-popover.js +12 -10
  73. package/dist/collection/components/ui-radio/ui-radio.js +24 -11
  74. package/dist/collection/components/ui-radio-group/ui-radio-group.js +1 -1
  75. package/dist/collection/components/ui-search-result-row/ui-search-result-row.js +1 -1
  76. package/dist/collection/components/ui-search-shell/ui-search-shell.js +1 -1
  77. package/dist/collection/components/ui-select/ui-select.js +1 -1
  78. package/dist/collection/components/ui-switch/ui-switch.js +22 -14
  79. package/dist/collection/components/ui-tabs/ui-tabs.js +13 -13
  80. package/dist/collection/components/ui-textarea/ui-textarea.js +1 -1
  81. package/dist/collection/components/ui-toast-region/ui-toast-region.js +30 -19
  82. package/dist/collection/components/ui-tooltip/ui-tooltip.css +16 -7
  83. package/dist/collection/components/ui-tooltip/ui-tooltip.js +14 -11
  84. package/dist/collection/components/ui-top-bar/ui-top-bar.js +1 -1
  85. package/dist/collection/components/ui-tree/ui-tree.css +2 -1
  86. package/dist/collection/components/ui-tree/ui-tree.js +122 -10
  87. package/dist/collection/components/ui-tree-item/ui-tree-item.js +61 -44
  88. package/dist/collection/field/editable.js +1 -0
  89. package/dist/collection/field/multi-combobox.js +1 -0
  90. package/dist/collection/icons.js +6 -1
  91. package/dist/collection/utils/controlled-state.js +4 -0
  92. package/dist/components/index.d.ts +8 -0
  93. package/dist/components/index.js +1 -1
  94. package/dist/components/p-B9CzOHvE.js +1 -0
  95. package/dist/components/p-BMgIcOh-.js +1 -0
  96. package/dist/components/p-BVteuP_d.js +1 -0
  97. package/dist/components/p-BnGhGgTH.js +1 -0
  98. package/dist/components/p-C6p-ygxq.js +1 -0
  99. package/dist/components/p-CoFximGM.js +13 -0
  100. package/dist/components/ui-affordance-scope.js +1 -1
  101. package/dist/components/ui-avatar-group.js +1 -1
  102. package/dist/components/ui-avatar.js +1 -1
  103. package/dist/components/ui-badge.js +1 -1
  104. package/dist/components/ui-button.js +1 -1
  105. package/dist/components/ui-callout.d.ts +11 -0
  106. package/dist/components/ui-callout.js +1 -0
  107. package/dist/components/ui-checkbox.js +1 -1
  108. package/dist/components/ui-chip.d.ts +11 -0
  109. package/dist/components/ui-chip.js +1 -0
  110. package/dist/components/ui-combobox.js +1 -1
  111. package/dist/components/ui-context-menu.js +1 -1
  112. package/dist/components/ui-dialog.js +1 -1
  113. package/dist/components/ui-disclosure.js +1 -1
  114. package/dist/components/ui-editable.d.ts +11 -0
  115. package/dist/components/ui-editable.js +1 -0
  116. package/dist/components/ui-floating-action-button.js +1 -1
  117. package/dist/components/ui-form-field.js +1 -1
  118. package/dist/components/ui-icon-button.js +1 -1
  119. package/dist/components/ui-input.js +1 -1
  120. package/dist/components/ui-menu-item.js +1 -1
  121. package/dist/components/ui-menu.js +1 -1
  122. package/dist/components/ui-multi-combobox.d.ts +11 -0
  123. package/dist/components/ui-multi-combobox.js +1 -0
  124. package/dist/components/ui-popover.js +1 -1
  125. package/dist/components/ui-radio-group.js +1 -1
  126. package/dist/components/ui-radio.js +1 -1
  127. package/dist/components/ui-search-result-row.js +1 -1
  128. package/dist/components/ui-search-shell.js +1 -1
  129. package/dist/components/ui-select.js +1 -1
  130. package/dist/components/ui-switch.js +1 -1
  131. package/dist/components/ui-tabs.js +1 -1
  132. package/dist/components/ui-textarea.js +1 -1
  133. package/dist/components/ui-toast-region.js +1 -1
  134. package/dist/components/ui-tooltip.js +1 -1
  135. package/dist/components/ui-top-bar.js +1 -1
  136. package/dist/components/ui-tree-item.js +1 -13
  137. package/dist/components/ui-tree.js +1 -1
  138. package/dist/esm/controlled-state-BnGhGgTH.js +6 -0
  139. package/dist/esm/icons-CoFximGM.js +678 -0
  140. package/dist/esm/loader.js +1 -1
  141. package/dist/esm/looma.js +1 -1
  142. package/dist/esm/ui-affordance-scope.entry.js +1 -1
  143. package/dist/esm/ui-avatar-group.entry.js +9 -17
  144. package/dist/esm/ui-avatar.entry.js +2 -2
  145. package/dist/esm/ui-badge.entry.js +2 -2
  146. package/dist/esm/ui-button.entry.js +1 -1
  147. package/dist/esm/ui-callout.entry.js +25 -0
  148. package/dist/esm/ui-checkbox.entry.js +13 -7
  149. package/dist/esm/{ui-combobox.entry.js → ui-chip_2.entry.js} +30 -6
  150. package/dist/esm/ui-context-menu.entry.js +1 -1
  151. package/dist/esm/ui-dialog.entry.js +44 -8
  152. package/dist/esm/ui-disclosure.entry.js +9 -6
  153. package/dist/esm/ui-editable.entry.js +98 -0
  154. package/dist/esm/ui-floating-action-button.entry.js +1 -1
  155. package/dist/esm/ui-form-field.entry.js +59 -4
  156. package/dist/esm/ui-icon-button.entry.js +1 -1
  157. package/dist/esm/ui-input.entry.js +1 -1
  158. package/dist/esm/ui-menu-item.entry.js +2 -2
  159. package/dist/esm/ui-menu.entry.js +14 -9
  160. package/dist/esm/ui-multi-combobox.entry.js +156 -0
  161. package/dist/esm/ui-popover.entry.js +10 -7
  162. package/dist/esm/ui-radio-group.entry.js +1 -1
  163. package/dist/esm/ui-radio.entry.js +16 -7
  164. package/dist/esm/ui-search-result-row.entry.js +1 -1
  165. package/dist/esm/ui-search-shell.entry.js +1 -1
  166. package/dist/esm/ui-select.entry.js +1 -1
  167. package/dist/esm/ui-switch.entry.js +19 -10
  168. package/dist/esm/ui-tabs.entry.js +10 -9
  169. package/dist/esm/ui-textarea.entry.js +1 -1
  170. package/dist/esm/ui-toast-region.entry.js +30 -19
  171. package/dist/esm/ui-tooltip.entry.js +12 -8
  172. package/dist/esm/ui-top-bar.entry.js +1 -1
  173. package/dist/esm/ui-tree-item.entry.js +54 -617
  174. package/dist/esm/ui-tree.entry.js +123 -11
  175. package/dist/index.cjs +1552 -894
  176. package/dist/index.d.cts +23 -1
  177. package/dist/index.d.ts +23 -1
  178. package/dist/index.js +12 -2
  179. package/dist/looma/looma.esm.js +1 -1
  180. package/dist/looma/p-08f80207.entry.js +1 -0
  181. package/dist/looma/{p-ed368426.entry.js → p-0e1741cb.entry.js} +1 -1
  182. package/dist/looma/p-0ef4bf13.entry.js +1 -0
  183. package/dist/looma/{p-7e0bb7f6.entry.js → p-166f8593.entry.js} +1 -1
  184. package/dist/looma/p-262a542c.entry.js +1 -0
  185. package/dist/looma/{p-13347631.entry.js → p-26d357ae.entry.js} +1 -1
  186. package/dist/looma/p-30f01909.entry.js +1 -0
  187. package/dist/looma/p-393e3e02.entry.js +1 -0
  188. package/dist/looma/p-3a44b9f9.entry.js +1 -0
  189. package/dist/looma/p-558d4f5b.entry.js +1 -0
  190. package/dist/looma/{p-5a87b59d.entry.js → p-5780cefa.entry.js} +1 -1
  191. package/dist/looma/p-5a7261e1.entry.js +1 -0
  192. package/dist/looma/p-5fdcee1d.entry.js +1 -0
  193. package/dist/looma/{p-add36e74.entry.js → p-72338f53.entry.js} +1 -1
  194. package/dist/looma/p-7319c147.entry.js +1 -0
  195. package/dist/looma/p-78b7e466.entry.js +1 -0
  196. package/dist/looma/{p-a90d2821.entry.js → p-7ab661ec.entry.js} +1 -1
  197. package/dist/looma/p-7eb04f09.entry.js +1 -0
  198. package/dist/looma/{p-69a5557b.entry.js → p-81c533f5.entry.js} +1 -1
  199. package/dist/looma/p-87f501cf.entry.js +1 -0
  200. package/dist/looma/p-89e71bbb.entry.js +1 -0
  201. package/dist/looma/{p-8b8840b8.entry.js → p-92cd1841.entry.js} +1 -1
  202. package/dist/looma/{p-f0487ff3.entry.js → p-95eb3b58.entry.js} +1 -1
  203. package/dist/looma/p-96ec4d7a.entry.js +1 -0
  204. package/dist/looma/p-9d2662ca.entry.js +1 -0
  205. package/dist/looma/p-BnGhGgTH.js +1 -0
  206. package/dist/looma/p-CoFximGM.js +13 -0
  207. package/dist/looma/p-add67e4c.entry.js +1 -0
  208. package/dist/looma/p-b6c776fb.entry.js +1 -0
  209. package/dist/looma/p-bcb1b47b.entry.js +1 -0
  210. package/dist/looma/p-d56571a2.entry.js +1 -0
  211. package/dist/looma/{p-582973b5.entry.js → p-d62da01d.entry.js} +1 -1
  212. package/dist/looma/{p-f74e5546.entry.js → p-dbcb479c.entry.js} +1 -1
  213. package/dist/looma/p-e14024bf.entry.js +1 -0
  214. package/dist/looma/{p-5da09f47.entry.js → p-fc180770.entry.js} +1 -1
  215. package/dist/types/components/ui-avatar-group/ui-avatar-group.d.ts +1 -2
  216. package/dist/types/components/ui-callout/ui-callout.d.ts +6 -0
  217. package/dist/types/components/ui-checkbox/ui-checkbox.d.ts +2 -1
  218. package/dist/types/components/ui-chip/ui-chip.d.ts +8 -0
  219. package/dist/types/components/ui-combobox/ui-combobox.d.ts +4 -0
  220. package/dist/types/components/ui-dialog/ui-dialog.d.ts +7 -1
  221. package/dist/types/components/ui-disclosure/ui-disclosure.d.ts +2 -1
  222. package/dist/types/components/ui-editable/ui-editable.d.ts +24 -0
  223. package/dist/types/components/ui-form-field/ui-form-field.d.ts +8 -0
  224. package/dist/types/components/ui-menu/ui-menu.d.ts +2 -1
  225. package/dist/types/components/ui-multi-combobox/ui-multi-combobox.d.ts +47 -0
  226. package/dist/types/components/ui-popover/ui-popover.d.ts +2 -1
  227. package/dist/types/components/ui-radio/ui-radio.d.ts +4 -1
  228. package/dist/types/components/ui-switch/ui-switch.d.ts +2 -1
  229. package/dist/types/components/ui-tabs/ui-tabs.d.ts +2 -1
  230. package/dist/types/components/ui-toast-region/ui-toast-region.d.ts +3 -1
  231. package/dist/types/components/ui-tooltip/ui-tooltip.d.ts +2 -1
  232. package/dist/types/components/ui-tree/ui-tree.d.ts +12 -0
  233. package/dist/types/components/ui-tree-item/ui-tree-item.d.ts +11 -7
  234. package/dist/types/components.d.ts +343 -46
  235. package/dist/types/field/editable.d.ts +5 -0
  236. package/dist/types/field/multi-combobox.d.ts +11 -0
  237. package/dist/types/icons.d.ts +5 -0
  238. package/dist/types/utils/controlled-state.d.ts +4 -0
  239. package/dist/{ui-affordance-scope.entry-VO4C2MZX.js → ui-affordance-scope.entry-VSSP52ZP.js} +2 -2
  240. package/dist/ui-avatar-group.entry-JMCLL6FW.js +51 -0
  241. package/dist/{ui-avatar.entry-T6FU6ZYM.js → ui-avatar.entry-X2YQ3QPG.js} +3 -3
  242. package/dist/ui-badge.entry-OJ6FJJKL.js +22 -0
  243. package/dist/{ui-button.entry-7UXMUGHN.js → ui-button.entry-ZN6JLND7.js} +2 -2
  244. package/dist/ui-callout.entry-7K6NXQ7U.js +32 -0
  245. package/dist/{ui-checkbox.entry-DMZJB3RE.js → ui-checkbox.entry-GUYRVU6O.js} +17 -8
  246. package/dist/{ui-combobox.entry-ZCTPXEES.js → ui-chip_2.entry-M2DOTIGY.js} +32 -7
  247. package/dist/{ui-context-menu.entry-2WMCBGCP.js → ui-context-menu.entry-BM7FHOUJ.js} +5 -5
  248. package/dist/{ui-dialog.entry-WO23XOSW.js → ui-dialog.entry-AZAD37CG.js} +50 -12
  249. package/dist/{ui-disclosure.entry-USX7OUEW.js → ui-disclosure.entry-XDPGKMBK.js} +13 -7
  250. package/dist/ui-editable.entry-S3TE6KFT.js +110 -0
  251. package/dist/{ui-floating-action-button.entry-MXDIN7MV.js → ui-floating-action-button.entry-U7HGA3CS.js} +2 -2
  252. package/dist/ui-form-field.entry-C2ZSP3TM.js +120 -0
  253. package/dist/{ui-icon-button.entry-MJUNXHBU.js → ui-icon-button.entry-P6H2LY7D.js} +2 -2
  254. package/dist/{ui-input.entry-AWG63YIG.js → ui-input.entry-GTNQJCQ2.js} +2 -2
  255. package/dist/ui-menu-item.entry-2HWOGUO5.js +22 -0
  256. package/dist/{ui-menu.entry-IT3GW5TL.js → ui-menu.entry-NZ7ER54K.js} +22 -14
  257. package/dist/ui-multi-combobox.entry-DZ5LLSVQ.js +167 -0
  258. package/dist/{ui-popover.entry-ZQQB4N6E.js → ui-popover.entry-ZOEQMUWG.js} +17 -11
  259. package/dist/{ui-radio-group.entry-V7PCTS7I.js → ui-radio-group.entry-QCQ46EK5.js} +2 -2
  260. package/dist/{ui-radio.entry-JYH6TQBI.js → ui-radio.entry-QAATWUYT.js} +20 -8
  261. package/dist/{ui-search-result-row.entry-JBNYXXUN.js → ui-search-result-row.entry-2I3DH2OT.js} +2 -2
  262. package/dist/{ui-search-shell.entry-TEAWE76O.js → ui-search-shell.entry-7RS55ORF.js} +2 -2
  263. package/dist/{ui-select.entry-F3A6TE2U.js → ui-select.entry-6O4KD4G7.js} +2 -2
  264. package/dist/{ui-switch.entry-MJIICMP2.js → ui-switch.entry-DY5PSHCQ.js} +23 -11
  265. package/dist/{ui-tabs.entry-6REFIUHV.js → ui-tabs.entry-6X56UOUE.js} +14 -10
  266. package/dist/{ui-textarea.entry-OJTXCED7.js → ui-textarea.entry-RDYP6O77.js} +2 -2
  267. package/dist/{ui-toast-region.entry-NOFXLKPS.js → ui-toast-region.entry-EBY42KS5.js} +32 -23
  268. package/dist/{ui-tooltip.entry-COWTWVHX.js → ui-tooltip.entry-PLXMPOKV.js} +19 -12
  269. package/dist/{ui-top-bar.entry-PIAWXJNV.js → ui-top-bar.entry-QKE2DLVD.js} +2 -2
  270. package/dist/ui-tree-item.entry-TC6YWIC6.js +145 -0
  271. package/dist/{ui-tree.entry-XYI3ZFAZ.js → ui-tree.entry-UL6UHCUT.js} +114 -12
  272. package/editor/{chunk-QCOYOVQL.js → chunk-B5WVJOPV.js} +113 -97
  273. package/editor/extensions/index.d.ts +14 -6
  274. package/editor/extensions/index.js +1 -1
  275. package/editor/index.js +1 -1
  276. package/editor.css +37 -20
  277. package/package.json +1 -1
  278. package/styles.css +10 -0
  279. package/tokens.css +3 -0
  280. package/vue/{chunk-JLW23USW.js → chunk-GXQY27K2.js} +112 -17
  281. package/vue/editor/index.d.ts +5 -15
  282. package/vue/editor/index.js +1 -1
  283. package/vue/index.d.ts +442 -116
  284. package/vue/index.js +9 -1
  285. package/dist/components/p-CaietZcq.js +0 -1
  286. package/dist/components/p-DHd18bK7.js +0 -1
  287. package/dist/looma/p-14c081cf.entry.js +0 -1
  288. package/dist/looma/p-25366205.entry.js +0 -1
  289. package/dist/looma/p-2e3aa869.entry.js +0 -1
  290. package/dist/looma/p-40fe7fee.entry.js +0 -1
  291. package/dist/looma/p-446cda76.entry.js +0 -1
  292. package/dist/looma/p-4fc1b005.entry.js +0 -13
  293. package/dist/looma/p-6a8a4736.entry.js +0 -1
  294. package/dist/looma/p-6bf4038b.entry.js +0 -1
  295. package/dist/looma/p-8204fee6.entry.js +0 -1
  296. package/dist/looma/p-8238e0dc.entry.js +0 -1
  297. package/dist/looma/p-99d88efb.entry.js +0 -1
  298. package/dist/looma/p-a27669b1.entry.js +0 -1
  299. package/dist/looma/p-a6ee76b7.entry.js +0 -1
  300. package/dist/looma/p-b6398a6b.entry.js +0 -1
  301. package/dist/looma/p-d50faaff.entry.js +0 -1
  302. package/dist/looma/p-d77278ce.entry.js +0 -1
  303. package/dist/looma/p-d9ec13b7.entry.js +0 -1
  304. package/dist/looma/p-ecf8005f.entry.js +0 -1
  305. package/dist/ui-avatar-group.entry-TAXJRIIU.js +0 -59
  306. package/dist/ui-badge.entry-MZFYNBMJ.js +0 -22
  307. package/dist/ui-form-field.entry-7ZCMEHPY.js +0 -67
  308. package/dist/ui-menu-item.entry-HFTWG62N.js +0 -22
  309. package/dist/ui-tree-item.entry-BSEWNL2O.js +0 -389
@@ -2,606 +2,7 @@
2
2
 
3
3
  var index = require('./index-BHG9Rpil.js');
4
4
  var events = require('./events-TcQIzpNv.js');
5
-
6
- /**
7
- * @license lucide v0.554.0 - ISC
8
- *
9
- * This source code is licensed under the ISC license.
10
- * See the LICENSE file in the root directory of this source tree.
11
- */
12
-
13
- const Bold = [
14
- ["path", { d: "M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8" }]
15
- ];
16
-
17
- /**
18
- * @license lucide v0.554.0 - ISC
19
- *
20
- * This source code is licensed under the ISC license.
21
- * See the LICENSE file in the root directory of this source tree.
22
- */
23
-
24
- const Braces = [
25
- ["path", { d: "M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1" }],
26
- ["path", { d: "M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1" }]
27
- ];
28
-
29
- /**
30
- * @license lucide v0.554.0 - ISC
31
- *
32
- * This source code is licensed under the ISC license.
33
- * See the LICENSE file in the root directory of this source tree.
34
- */
35
-
36
- const ChevronDown = [["path", { d: "m6 9 6 6 6-6" }]];
37
-
38
- /**
39
- * @license lucide v0.554.0 - ISC
40
- *
41
- * This source code is licensed under the ISC license.
42
- * See the LICENSE file in the root directory of this source tree.
43
- */
44
-
45
- const ChevronLeft = [["path", { d: "m15 18-6-6 6-6" }]];
46
-
47
- /**
48
- * @license lucide v0.554.0 - ISC
49
- *
50
- * This source code is licensed under the ISC license.
51
- * See the LICENSE file in the root directory of this source tree.
52
- */
53
-
54
- const CodeXml = [
55
- ["path", { d: "m18 16 4-4-4-4" }],
56
- ["path", { d: "m6 8-4 4 4 4" }],
57
- ["path", { d: "m14.5 4-5 16" }]
58
- ];
59
-
60
- /**
61
- * @license lucide v0.554.0 - ISC
62
- *
63
- * This source code is licensed under the ISC license.
64
- * See the LICENSE file in the root directory of this source tree.
65
- */
66
-
67
- const Columns3 = [
68
- ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2" }],
69
- ["path", { d: "M9 3v18" }],
70
- ["path", { d: "M15 3v18" }]
71
- ];
72
-
73
- /**
74
- * @license lucide v0.554.0 - ISC
75
- *
76
- * This source code is licensed under the ISC license.
77
- * See the LICENSE file in the root directory of this source tree.
78
- */
79
-
80
- const Ellipsis = [
81
- ["circle", { cx: "12", cy: "12", r: "1" }],
82
- ["circle", { cx: "19", cy: "12", r: "1" }],
83
- ["circle", { cx: "5", cy: "12", r: "1" }]
84
- ];
85
-
86
- /**
87
- * @license lucide v0.554.0 - ISC
88
- *
89
- * This source code is licensed under the ISC license.
90
- * See the LICENSE file in the root directory of this source tree.
91
- */
92
-
93
- const Eraser = [
94
- [
95
- "path",
96
- {
97
- d: "M21 21H8a2 2 0 0 1-1.42-.587l-3.994-3.999a2 2 0 0 1 0-2.828l10-10a2 2 0 0 1 2.829 0l5.999 6a2 2 0 0 1 0 2.828L12.834 21"
98
- }
99
- ],
100
- ["path", { d: "m5.082 11.09 8.828 8.828" }]
101
- ];
102
-
103
- /**
104
- * @license lucide v0.554.0 - ISC
105
- *
106
- * This source code is licensed under the ISC license.
107
- * See the LICENSE file in the root directory of this source tree.
108
- */
109
-
110
- const GripHorizontal = [
111
- ["circle", { cx: "12", cy: "9", r: "1" }],
112
- ["circle", { cx: "19", cy: "9", r: "1" }],
113
- ["circle", { cx: "5", cy: "9", r: "1" }],
114
- ["circle", { cx: "12", cy: "15", r: "1" }],
115
- ["circle", { cx: "19", cy: "15", r: "1" }],
116
- ["circle", { cx: "5", cy: "15", r: "1" }]
117
- ];
118
-
119
- /**
120
- * @license lucide v0.554.0 - ISC
121
- *
122
- * This source code is licensed under the ISC license.
123
- * See the LICENSE file in the root directory of this source tree.
124
- */
125
-
126
- const GripVertical = [
127
- ["circle", { cx: "9", cy: "12", r: "1" }],
128
- ["circle", { cx: "9", cy: "5", r: "1" }],
129
- ["circle", { cx: "9", cy: "19", r: "1" }],
130
- ["circle", { cx: "15", cy: "12", r: "1" }],
131
- ["circle", { cx: "15", cy: "5", r: "1" }],
132
- ["circle", { cx: "15", cy: "19", r: "1" }]
133
- ];
134
-
135
- /**
136
- * @license lucide v0.554.0 - ISC
137
- *
138
- * This source code is licensed under the ISC license.
139
- * See the LICENSE file in the root directory of this source tree.
140
- */
141
-
142
- const Heading1 = [
143
- ["path", { d: "M4 12h8" }],
144
- ["path", { d: "M4 18V6" }],
145
- ["path", { d: "M12 18V6" }],
146
- ["path", { d: "m17 12 3-2v8" }]
147
- ];
148
-
149
- /**
150
- * @license lucide v0.554.0 - ISC
151
- *
152
- * This source code is licensed under the ISC license.
153
- * See the LICENSE file in the root directory of this source tree.
154
- */
155
-
156
- const Heading2 = [
157
- ["path", { d: "M4 12h8" }],
158
- ["path", { d: "M4 18V6" }],
159
- ["path", { d: "M12 18V6" }],
160
- ["path", { d: "M21 18h-4c0-4 4-3 4-6 0-1.5-2-2.5-4-1" }]
161
- ];
162
-
163
- /**
164
- * @license lucide v0.554.0 - ISC
165
- *
166
- * This source code is licensed under the ISC license.
167
- * See the LICENSE file in the root directory of this source tree.
168
- */
169
-
170
- const Heading3 = [
171
- ["path", { d: "M4 12h8" }],
172
- ["path", { d: "M4 18V6" }],
173
- ["path", { d: "M12 18V6" }],
174
- ["path", { d: "M17.5 10.5c1.7-1 3.5 0 3.5 1.5a2 2 0 0 1-2 2" }],
175
- ["path", { d: "M17 17.5c2 1.5 4 .3 4-1.5a2 2 0 0 0-2-2" }]
176
- ];
177
-
178
- /**
179
- * @license lucide v0.554.0 - ISC
180
- *
181
- * This source code is licensed under the ISC license.
182
- * See the LICENSE file in the root directory of this source tree.
183
- */
184
-
185
- const Highlighter = [
186
- ["path", { d: "m9 11-6 6v3h9l3-3" }],
187
- ["path", { d: "m22 12-4.6 4.6a2 2 0 0 1-2.8 0l-5.2-5.2a2 2 0 0 1 0-2.8L14 4" }]
188
- ];
189
-
190
- /**
191
- * @license lucide v0.554.0 - ISC
192
- *
193
- * This source code is licensed under the ISC license.
194
- * See the LICENSE file in the root directory of this source tree.
195
- */
196
-
197
- const Image = [
198
- ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2" }],
199
- ["circle", { cx: "9", cy: "9", r: "2" }],
200
- ["path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21" }]
201
- ];
202
-
203
- /**
204
- * @license lucide v0.554.0 - ISC
205
- *
206
- * This source code is licensed under the ISC license.
207
- * See the LICENSE file in the root directory of this source tree.
208
- */
209
-
210
- const Italic = [
211
- ["line", { x1: "19", x2: "10", y1: "4", y2: "4" }],
212
- ["line", { x1: "14", x2: "5", y1: "20", y2: "20" }],
213
- ["line", { x1: "15", x2: "9", y1: "4", y2: "20" }]
214
- ];
215
-
216
- /**
217
- * @license lucide v0.554.0 - ISC
218
- *
219
- * This source code is licensed under the ISC license.
220
- * See the LICENSE file in the root directory of this source tree.
221
- */
222
-
223
- const ListOrdered = [
224
- ["path", { d: "M11 5h10" }],
225
- ["path", { d: "M11 12h10" }],
226
- ["path", { d: "M11 19h10" }],
227
- ["path", { d: "M4 4h1v5" }],
228
- ["path", { d: "M4 9h2" }],
229
- ["path", { d: "M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02" }]
230
- ];
231
-
232
- /**
233
- * @license lucide v0.554.0 - ISC
234
- *
235
- * This source code is licensed under the ISC license.
236
- * See the LICENSE file in the root directory of this source tree.
237
- */
238
-
239
- const ListTodo = [
240
- ["path", { d: "M13 5h8" }],
241
- ["path", { d: "M13 12h8" }],
242
- ["path", { d: "M13 19h8" }],
243
- ["path", { d: "m3 17 2 2 4-4" }],
244
- ["rect", { x: "3", y: "4", width: "6", height: "6", rx: "1" }]
245
- ];
246
-
247
- /**
248
- * @license lucide v0.554.0 - ISC
249
- *
250
- * This source code is licensed under the ISC license.
251
- * See the LICENSE file in the root directory of this source tree.
252
- */
253
-
254
- const List = [
255
- ["path", { d: "M3 5h.01" }],
256
- ["path", { d: "M3 12h.01" }],
257
- ["path", { d: "M3 19h.01" }],
258
- ["path", { d: "M8 5h13" }],
259
- ["path", { d: "M8 12h13" }],
260
- ["path", { d: "M8 19h13" }]
261
- ];
262
-
263
- /**
264
- * @license lucide v0.554.0 - ISC
265
- *
266
- * This source code is licensed under the ISC license.
267
- * See the LICENSE file in the root directory of this source tree.
268
- */
269
-
270
- const Merge = [
271
- ["path", { d: "m8 6 4-4 4 4" }],
272
- ["path", { d: "M12 2v10.3a4 4 0 0 1-1.172 2.872L4 22" }],
273
- ["path", { d: "m20 22-5-5" }]
274
- ];
275
-
276
- /**
277
- * @license lucide v0.554.0 - ISC
278
- *
279
- * This source code is licensed under the ISC license.
280
- * See the LICENSE file in the root directory of this source tree.
281
- */
282
-
283
- const Minus = [["path", { d: "M5 12h14" }]];
284
-
285
- /**
286
- * @license lucide v0.554.0 - ISC
287
- *
288
- * This source code is licensed under the ISC license.
289
- * See the LICENSE file in the root directory of this source tree.
290
- */
291
-
292
- const PaintBucket = [
293
- ["path", { d: "m19 11-8-8-8.6 8.6a2 2 0 0 0 0 2.8l5.2 5.2c.8.8 2 .8 2.8 0L19 11Z" }],
294
- ["path", { d: "m5 2 5 5" }],
295
- ["path", { d: "M2 13h15" }],
296
- ["path", { d: "M22 20a2 2 0 1 1-4 0c0-1.6 1.7-2.4 2-4 .3 1.6 2 2.4 2 4Z" }]
297
- ];
298
-
299
- /**
300
- * @license lucide v0.554.0 - ISC
301
- *
302
- * This source code is licensed under the ISC license.
303
- * See the LICENSE file in the root directory of this source tree.
304
- */
305
-
306
- const PanelBottom = [
307
- ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2" }],
308
- ["path", { d: "M3 15h18" }]
309
- ];
310
-
311
- /**
312
- * @license lucide v0.554.0 - ISC
313
- *
314
- * This source code is licensed under the ISC license.
315
- * See the LICENSE file in the root directory of this source tree.
316
- */
317
-
318
- const PanelLeft = [
319
- ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2" }],
320
- ["path", { d: "M9 3v18" }]
321
- ];
322
-
323
- /**
324
- * @license lucide v0.554.0 - ISC
325
- *
326
- * This source code is licensed under the ISC license.
327
- * See the LICENSE file in the root directory of this source tree.
328
- */
329
-
330
- const PanelRight = [
331
- ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2" }],
332
- ["path", { d: "M15 3v18" }]
333
- ];
334
-
335
- /**
336
- * @license lucide v0.554.0 - ISC
337
- *
338
- * This source code is licensed under the ISC license.
339
- * See the LICENSE file in the root directory of this source tree.
340
- */
341
-
342
- const PanelTop = [
343
- ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2" }],
344
- ["path", { d: "M3 9h18" }]
345
- ];
346
-
347
- /**
348
- * @license lucide v0.554.0 - ISC
349
- *
350
- * This source code is licensed under the ISC license.
351
- * See the LICENSE file in the root directory of this source tree.
352
- */
353
-
354
- const Pilcrow = [
355
- ["path", { d: "M13 4v16" }],
356
- ["path", { d: "M17 4v16" }],
357
- ["path", { d: "M19 4H9.5a4.5 4.5 0 0 0 0 9H13" }]
358
- ];
359
-
360
- /**
361
- * @license lucide v0.554.0 - ISC
362
- *
363
- * This source code is licensed under the ISC license.
364
- * See the LICENSE file in the root directory of this source tree.
365
- */
366
-
367
- const Plus = [
368
- ["path", { d: "M5 12h14" }],
369
- ["path", { d: "M12 5v14" }]
370
- ];
371
-
372
- /**
373
- * @license lucide v0.554.0 - ISC
374
- *
375
- * This source code is licensed under the ISC license.
376
- * See the LICENSE file in the root directory of this source tree.
377
- */
378
-
379
- const Quote = [
380
- [
381
- "path",
382
- {
383
- d: "M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z"
384
- }
385
- ],
386
- [
387
- "path",
388
- {
389
- d: "M5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z"
390
- }
391
- ]
392
- ];
393
-
394
- /**
395
- * @license lucide v0.554.0 - ISC
396
- *
397
- * This source code is licensed under the ISC license.
398
- * See the LICENSE file in the root directory of this source tree.
399
- */
400
-
401
- const Redo2 = [
402
- ["path", { d: "m15 14 5-5-5-5" }],
403
- ["path", { d: "M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13" }]
404
- ];
405
-
406
- /**
407
- * @license lucide v0.554.0 - ISC
408
- *
409
- * This source code is licensed under the ISC license.
410
- * See the LICENSE file in the root directory of this source tree.
411
- */
412
-
413
- const Rows3 = [
414
- ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2" }],
415
- ["path", { d: "M21 9H3" }],
416
- ["path", { d: "M21 15H3" }]
417
- ];
418
-
419
- /**
420
- * @license lucide v0.554.0 - ISC
421
- *
422
- * This source code is licensed under the ISC license.
423
- * See the LICENSE file in the root directory of this source tree.
424
- */
425
-
426
- const Split = [
427
- ["path", { d: "M16 3h5v5" }],
428
- ["path", { d: "M8 3H3v5" }],
429
- ["path", { d: "M12 22v-8.3a4 4 0 0 0-1.172-2.872L3 3" }],
430
- ["path", { d: "m15 9 6-6" }]
431
- ];
432
-
433
- /**
434
- * @license lucide v0.554.0 - ISC
435
- *
436
- * This source code is licensed under the ISC license.
437
- * See the LICENSE file in the root directory of this source tree.
438
- */
439
-
440
- const Strikethrough = [
441
- ["path", { d: "M16 4H9a3 3 0 0 0-2.83 4" }],
442
- ["path", { d: "M14 12a4 4 0 0 1 0 8H6" }],
443
- ["line", { x1: "4", x2: "20", y1: "12", y2: "12" }]
444
- ];
445
-
446
- /**
447
- * @license lucide v0.554.0 - ISC
448
- *
449
- * This source code is licensed under the ISC license.
450
- * See the LICENSE file in the root directory of this source tree.
451
- */
452
-
453
- const Table2 = [
454
- [
455
- "path",
456
- {
457
- d: "M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18"
458
- }
459
- ]
460
- ];
461
-
462
- /**
463
- * @license lucide v0.554.0 - ISC
464
- *
465
- * This source code is licensed under the ISC license.
466
- * See the LICENSE file in the root directory of this source tree.
467
- */
468
-
469
- const TextAlignCenter = [
470
- ["path", { d: "M21 5H3" }],
471
- ["path", { d: "M17 12H7" }],
472
- ["path", { d: "M19 19H5" }]
473
- ];
474
-
475
- /**
476
- * @license lucide v0.554.0 - ISC
477
- *
478
- * This source code is licensed under the ISC license.
479
- * See the LICENSE file in the root directory of this source tree.
480
- */
481
-
482
- const TextAlignEnd = [
483
- ["path", { d: "M21 5H3" }],
484
- ["path", { d: "M21 12H9" }],
485
- ["path", { d: "M21 19H7" }]
486
- ];
487
-
488
- /**
489
- * @license lucide v0.554.0 - ISC
490
- *
491
- * This source code is licensed under the ISC license.
492
- * See the LICENSE file in the root directory of this source tree.
493
- */
494
-
495
- const TextAlignStart = [
496
- ["path", { d: "M21 5H3" }],
497
- ["path", { d: "M15 12H3" }],
498
- ["path", { d: "M17 19H3" }]
499
- ];
500
-
501
- /**
502
- * @license lucide v0.554.0 - ISC
503
- *
504
- * This source code is licensed under the ISC license.
505
- * See the LICENSE file in the root directory of this source tree.
506
- */
507
-
508
- const Trash2 = [
509
- ["path", { d: "M10 11v6" }],
510
- ["path", { d: "M14 11v6" }],
511
- ["path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6" }],
512
- ["path", { d: "M3 6h18" }],
513
- ["path", { d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" }]
514
- ];
515
-
516
- /**
517
- * @license lucide v0.554.0 - ISC
518
- *
519
- * This source code is licensed under the ISC license.
520
- * See the LICENSE file in the root directory of this source tree.
521
- */
522
-
523
- const Underline = [
524
- ["path", { d: "M6 4v6a6 6 0 0 0 12 0V4" }],
525
- ["line", { x1: "4", x2: "20", y1: "20", y2: "20" }]
526
- ];
527
-
528
- /**
529
- * @license lucide v0.554.0 - ISC
530
- *
531
- * This source code is licensed under the ISC license.
532
- * See the LICENSE file in the root directory of this source tree.
533
- */
534
-
535
- const Undo2 = [
536
- ["path", { d: "M9 14 4 9l5-5" }],
537
- ["path", { d: "M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11" }]
538
- ];
539
-
540
- /** The opinionated Lucide set used by Looma's shipped interaction surfaces. */
541
- const LOOMA_ICONS = {
542
- 'align-center': TextAlignCenter,
543
- 'align-left': TextAlignStart,
544
- 'align-right': TextAlignEnd,
545
- bold: Bold,
546
- braces: Braces,
547
- 'chevron-down': ChevronDown,
548
- 'chevron-left': ChevronLeft,
549
- 'code-xml': CodeXml,
550
- columns: Columns3,
551
- ellipsis: Ellipsis,
552
- eraser: Eraser,
553
- 'grip-horizontal': GripHorizontal,
554
- 'grip-vertical': GripVertical,
555
- 'heading-1': Heading1,
556
- 'heading-2': Heading2,
557
- 'heading-3': Heading3,
558
- highlighter: Highlighter,
559
- image: Image,
560
- italic: Italic,
561
- list: List,
562
- 'list-ordered': ListOrdered,
563
- 'list-todo': ListTodo,
564
- merge: Merge,
565
- minus: Minus,
566
- 'paint-bucket': PaintBucket,
567
- 'panel-bottom': PanelBottom,
568
- 'panel-left': PanelLeft,
569
- 'panel-right': PanelRight,
570
- 'panel-top': PanelTop,
571
- pilcrow: Pilcrow,
572
- plus: Plus,
573
- quote: Quote,
574
- redo: Redo2,
575
- rows: Rows3,
576
- split: Split,
577
- strikethrough: Strikethrough,
578
- table: Table2,
579
- trash: Trash2,
580
- underline: Underline,
581
- undo: Undo2,
582
- };
583
- function serializeAttributes(attributes) {
584
- return Object.entries(attributes)
585
- .map(([name, value]) => ` ${name}="${escapeAttribute(value)}"`)
586
- .join('');
587
- }
588
- function escapeAttribute(value) {
589
- return String(value).replaceAll('&', '&').replaceAll('"', '"');
590
- }
591
- function serializeIconNode(node) {
592
- const [tag, attributes] = node;
593
- return `<${tag}${serializeAttributes(attributes)}></${tag}>`;
594
- }
595
- /** Creates consistent, currentColor-driven SVG markup for framework-neutral components. */
596
- function loomaIconMarkup(name, className = 'looma-icon') {
597
- return [
598
- `<svg class="${escapeAttribute(className)}" data-looma-icon="${name}" aria-hidden="true" focusable="false"`,
599
- ' viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"',
600
- ' stroke-linecap="round" stroke-linejoin="round">',
601
- LOOMA_ICONS[name].map(serializeIconNode).join(''),
602
- '</svg>',
603
- ].join('');
604
- }
5
+ var icons = require('./icons-BAdjrnhS.js');
605
6
 
606
7
  const uiTreeItemCss = () => `:host{--ui-tree-indent:16px;--ui-tree-row-min-height:32px;--ui-tree-drop-color:var(--ui-accent-solid);position:relative;display:block;min-inline-size:0;margin-inline-start:calc(var(--ui-tree-item-depth, 0) * var(--ui-tree-indent))}.row{position:relative;display:grid;grid-template-columns:20px auto minmax(0, 1fr) auto;align-items:center;min-block-size:var(--ui-tree-row-min-height);min-inline-size:0;font-size:var(--ui-tree-font-size, var(--ui-font-size-ui, 0.9375rem));border-radius:var(--ui-radius-md);color:var(--ui-text-secondary);transition:background-color var(--ui-motion-fast) var(--ui-motion-ease), color var(--ui-motion-fast) var(--ui-motion-ease), opacity var(--ui-motion-fast) var(--ui-motion-ease), box-shadow var(--ui-motion-fast) var(--ui-motion-ease), min-block-size var(--ui-motion-base) var(--ui-motion-ease)}.row:hover,:host([data-selected]) .row,.row:focus-within{color:var(--ui-text-primary);background:var(--ui-surface-muted)}:host([data-disabled]) .row{opacity:0.55}:host([data-dragging]) .row{opacity:0.42}:host(:focus){outline:none}:host(:focus-visible) .row{box-shadow:0 0 0 2px var(--ui-focus-ring)}:host([data-drop-position='inside']) .row{background:var(--ui-accent-subtle);box-shadow:inset 0 0 0 1px var(--ui-tree-drop-color)}.disclosure,.disclosure-spacer{grid-column:1;grid-row:1;inline-size:20px;block-size:28px}.disclosure{display:grid;place-items:center;padding:0;color:var(--ui-text-muted);background:transparent;border:0;border-radius:var(--ui-radius-sm);cursor:pointer}.disclosure:hover{color:var(--ui-text-primary);background:var(--ui-surface-elevated)}.disclosure-icon{display:block;inline-size:14px;block-size:14px;transform:rotate(-90deg);transition:transform var(--ui-motion-fast) var(--ui-motion-ease)}.disclosure-icon--expanded{transform:rotate(0deg)}.disclosure-icon :is(svg),.drag-handle :is(svg){display:block;inline-size:100%;block-size:100%}.leading{display:none}.leading:has(*){display:inline-grid;place-items:center;grid-column:2;grid-row:1;inline-size:16px;block-size:16px;margin-inline-start:var(--ui-space-1)}.label{grid-column:3;grid-row:1;min-inline-size:0;padding:var(--ui-space-1) var(--ui-space-2)}.actions{grid-column:4;grid-row:1;display:inline-flex;align-items:center;min-inline-size:0}.drag-handle{position:absolute;z-index:2;inset-block-start:50%;inset-inline-start:-22px;inline-size:20px;block-size:32px;display:grid;place-items:center;padding:7px 3px;color:var(--ui-text-muted);background:var(--ui-surface-elevated);border:1px solid transparent;border-radius:var(--ui-radius-sm);cursor:grab;opacity:0;pointer-events:none;transform:translateY(-50%);transition:opacity var(--ui-motion-fast) var(--ui-motion-ease)}.row:hover .drag-handle,.drag-handle:focus-visible,:host([data-dragging]) .drag-handle{opacity:1;pointer-events:auto}.drag-handle:active{cursor:grabbing}.drop-indicator{position:absolute;z-index:3;inset-inline:1px;display:none;block-size:2px;border-radius:999px;background:var(--ui-tree-drop-color);pointer-events:none}.drop-indicator::before,.drop-indicator::after{content:'';position:absolute;inset-block-start:50%;inline-size:7px;block-size:7px;border:2px solid var(--ui-tree-drop-color);border-radius:999px;background:var(--ui-surface-elevated);transform:translateY(-50%)}.drop-indicator::before{inset-inline-start:-1px}.drop-indicator::after{inset-inline-end:-1px}:host([data-drop-position='before']) .row-drop-indicator{display:block;inset-block-start:-1px}:host([data-drop-position='after']) .subtree-drop-indicator{display:block;inset-block-end:-1px}.children[hidden]{display:none}:host-context(html[data-ui-input-modality='touch']){--ui-tree-row-min-height:44px}:host-context(html[data-ui-input-modality='touch']) .drag-handle{display:none}@media (prefers-reduced-motion: reduce){.row,.disclosure-icon,.drag-handle{transition:none}}`;
607
8
 
@@ -614,11 +15,9 @@ const UITreeItem = class {
614
15
  itemId = '';
615
16
  /** Accessible name used by the disclosure and drag handle. */
616
17
  label = '';
617
- /** One-based visual and semantic nesting level. */
618
- depth = 1;
619
- /** Application hierarchy depth used for drop constraints. Defaults to visual depth. */
18
+ /** Application hierarchy depth override used for drop constraints. Defaults to structural nesting. */
620
19
  dropDepth;
621
- /** Deepest descendant distance, used with the tree's max-depth drop constraint. */
20
+ /** Virtualized-tree descendant-depth override for the tree's max-depth drop constraint. */
622
21
  subtreeDepth;
623
22
  /** Whether this item accepts children and exposes disclosure behavior. */
624
23
  container = false;
@@ -630,37 +29,74 @@ const UITreeItem = class {
630
29
  dropScope = '';
631
30
  /** Comma-separated drag kinds accepted as children. Empty accepts every kind. */
632
31
  accepts = '';
633
- /** Initial controlled expansion value. */
634
- expanded = false;
32
+ /** Controlled expansion value. When omitted, `default-expanded` initializes uncontrolled state. */
33
+ expanded;
635
34
  /** Initial uncontrolled expansion value. */
636
35
  defaultExpanded = false;
637
36
  selected = false;
638
37
  disabled = false;
639
38
  internalExpanded = false;
39
+ structuralLevel = 1;
40
+ tabStop = false;
640
41
  syncExpandedFromProp() {
641
- this.internalExpanded = this.expanded;
42
+ // A defined prop owns the rendered state; clearing it resumes the current
43
+ // uncontrolled state instead of replaying the initial default.
44
+ if (this.expanded !== undefined)
45
+ this.internalExpanded = this.expanded;
642
46
  }
643
47
  componentWillLoad() {
644
- this.internalExpanded = this.expanded || this.defaultExpanded;
48
+ this.internalExpanded = this.expanded ?? this.defaultExpanded;
49
+ this.updateStructuralLevel();
645
50
  }
646
- componentDidLoad() {
51
+ connectedCallback() {
647
52
  this.host.addEventListener('ui-tree-auto-expand', this.onAutoExpand);
53
+ this.host.addEventListener('ui-tree-structure-sync', this.updateStructuralLevel);
54
+ this.host.addEventListener('ui-tree-roving-tab-stop', this.onRovingTabStop);
55
+ this.host.addEventListener('ui-tree-request-expanded', this.onExpansionRequest);
648
56
  }
649
57
  disconnectedCallback() {
650
58
  this.host.removeEventListener('ui-tree-auto-expand', this.onAutoExpand);
59
+ this.host.removeEventListener('ui-tree-structure-sync', this.updateStructuralLevel);
60
+ this.host.removeEventListener('ui-tree-roving-tab-stop', this.onRovingTabStop);
61
+ this.host.removeEventListener('ui-tree-request-expanded', this.onExpansionRequest);
651
62
  }
63
+ updateStructuralLevel = () => {
64
+ const tree = this.host.closest('ui-tree');
65
+ let ancestor = this.host.parentElement?.closest('ui-tree-item') ?? null;
66
+ let level = 1;
67
+ while (ancestor && tree?.contains(ancestor)) {
68
+ level += 1;
69
+ ancestor = ancestor.parentElement?.closest('ui-tree-item') ?? null;
70
+ }
71
+ if (this.structuralLevel !== level)
72
+ this.structuralLevel = level;
73
+ };
652
74
  setExpanded(expanded, trigger) {
653
- if (!this.container || this.disabled || this.internalExpanded === expanded)
75
+ const current = this.isExpanded();
76
+ if (!this.container || this.disabled || current === expanded)
654
77
  return;
655
- this.internalExpanded = expanded;
78
+ if (this.expanded === undefined)
79
+ this.internalExpanded = expanded;
656
80
  events.dispatchDetail(this.host, 'expand', { id: this.itemId, expanded, trigger });
81
+ this.host.dispatchEvent(new CustomEvent('ui-tree-expansion-change'));
82
+ }
83
+ isExpanded() {
84
+ return this.expanded ?? this.internalExpanded;
657
85
  }
658
86
  onAutoExpand = () => {
659
87
  this.setExpanded(true, 'pointer');
660
88
  };
89
+ onRovingTabStop = (event) => {
90
+ this.tabStop = Boolean(event.detail?.active) && !this.disabled;
91
+ };
92
+ onExpansionRequest = (event) => {
93
+ const detail = event.detail;
94
+ if (typeof detail?.expanded === 'boolean')
95
+ this.setExpanded(detail.expanded, detail.trigger ?? 'keyboard');
96
+ };
661
97
  onDisclosureClick = (event) => {
662
98
  event.stopPropagation();
663
- this.setExpanded(!this.internalExpanded, events.eventToTrigger(event));
99
+ this.setExpanded(!this.isExpanded(), events.eventToTrigger(event));
664
100
  };
665
101
  onDisclosureKeydown = (event) => {
666
102
  if (event.key !== 'ArrowRight' && event.key !== 'ArrowLeft')
@@ -676,16 +112,17 @@ const UITreeItem = class {
676
112
  const interactive = path.some((node) => node instanceof HTMLElement && (node.matches('a, button, input, select, textarea, [role="button"], [role="link"]')
677
113
  || node.getAttribute('slot') === 'actions'));
678
114
  if (!interactive)
679
- this.setExpanded(!this.internalExpanded, events.eventToTrigger(event));
115
+ this.setExpanded(!this.isExpanded(), events.eventToTrigger(event));
680
116
  };
681
117
  render() {
682
- const level = Math.max(1, Math.floor(this.depth));
683
- const disclosureLabel = `${this.internalExpanded ? 'Collapse' : 'Expand'} ${this.label || 'item'}`;
118
+ const level = this.structuralLevel;
119
+ const expanded = this.isExpanded();
120
+ const disclosureLabel = `${expanded ? 'Collapse' : 'Expand'} ${this.label || 'item'}`;
684
121
  const dragLabel = `Drag ${this.label || 'item'} to reorder`;
685
- return (index.h(index.Host, { key: '606f5fdac8a95489d0c62cd7d4918c6d5d0c759e', role: "treeitem", "aria-level": String(level), "aria-expanded": this.container ? String(this.internalExpanded) : undefined, "aria-selected": String(this.selected), "aria-disabled": this.disabled ? 'true' : undefined, "data-container": this.container ? '' : undefined, "data-selected": this.selected ? '' : undefined, "data-disabled": this.disabled ? '' : undefined, "data-drag-type": this.dragType || 'item', "data-drop-scope": this.dropScope || undefined, "data-accepts": this.accepts || undefined, tabIndex: this.disabled ? -1 : 0, style: {
122
+ return (index.h(index.Host, { key: 'f092fa9586a39aba1a9629ba42e52f8fbc10de05', role: "treeitem", "aria-label": this.label || undefined, "aria-level": String(level), "aria-expanded": this.container ? String(expanded) : undefined, "aria-selected": String(this.selected), "aria-disabled": this.disabled ? 'true' : undefined, "data-container": this.container ? '' : undefined, "data-selected": this.selected ? '' : undefined, "data-disabled": this.disabled ? '' : undefined, "data-drag-type": this.dragType || 'item', "data-drop-scope": this.dropScope || undefined, "data-accepts": this.accepts || undefined, tabIndex: this.disabled || !this.tabStop ? -1 : 0, style: {
686
123
  '--ui-tree-item-depth': String(level - 1),
687
124
  'margin-inline-start': level > 1 ? 'var(--ui-tree-indent, 16px)' : '0px',
688
- } }, index.h("div", { key: '2b4bb03d4b24ef668f22b08e803f7f43c2d63ae5', class: "row", part: "row", onClick: this.onRowClick }, this.sortable && !this.disabled ? (index.h("button", { class: "drag-handle", part: "drag-handle", type: "button", draggable: true, "aria-label": dragLabel, title: dragLabel }, index.h("span", { innerHTML: loomaIconMarkup('grip-vertical') }))) : null, this.container ? (index.h("button", { class: "disclosure", part: "disclosure", type: "button", "aria-label": disclosureLabel, "aria-expanded": String(this.internalExpanded), disabled: this.disabled, onClick: this.onDisclosureClick, onKeyDown: this.onDisclosureKeydown }, index.h("span", { class: { 'disclosure-icon': true, 'disclosure-icon--expanded': this.internalExpanded }, innerHTML: loomaIconMarkup('chevron-down') }))) : index.h("span", { class: "disclosure-spacer", "aria-hidden": "true" }), index.h("span", { key: 'e7b935158e35cdc6518bdd73d54c42dcfa211aee', class: "leading", part: "leading" }, index.h("slot", { key: '8448462349fd23b8be0fb673fc6e101bf94beaa7', name: "leading" })), index.h("span", { key: 'e0b6338e1ec9ec043446e42c5f03724adf7e1862', class: "label", part: "label" }, index.h("slot", { key: 'ed44e6f2ce3466c28d2b87fc7511399ecc339255' })), index.h("span", { key: '2aea78227904fe23cfc4b8e14852a4601e3cc34b', class: "actions", part: "actions" }, index.h("slot", { key: '7c6549008c2a54c3ea6fcdf9e0fdbe445d379922', name: "actions" })), index.h("span", { key: '05166ba04765bc518d6b95ca7ae5a67c4394d1bf', class: "drop-indicator row-drop-indicator", part: "drop-indicator", "aria-hidden": "true" })), this.container ? (index.h("div", { class: "children", part: "children", role: "group", hidden: !this.internalExpanded }, index.h("slot", { name: "children" }))) : null, index.h("span", { key: '7381d6e9e2a8f94695f29e73194b1603d79cefb9', class: "drop-indicator subtree-drop-indicator", part: "drop-indicator", "aria-hidden": "true" })));
125
+ } }, index.h("div", { key: '2f16d97219ba9ec9e37688d97ad9144508aa1ed5', class: "row", part: "row", onClick: this.onRowClick }, this.sortable && !this.disabled ? (index.h("button", { class: "drag-handle", part: "drag-handle", type: "button", draggable: true, "aria-label": dragLabel, title: dragLabel }, index.h("span", { innerHTML: icons.loomaIconMarkup('grip-vertical') }))) : null, this.container ? (index.h("button", { class: "disclosure", part: "disclosure", type: "button", "aria-label": disclosureLabel, "aria-expanded": String(expanded), disabled: this.disabled, onClick: this.onDisclosureClick, onKeyDown: this.onDisclosureKeydown }, index.h("span", { class: { 'disclosure-icon': true, 'disclosure-icon--expanded': expanded }, innerHTML: icons.loomaIconMarkup('chevron-down') }))) : index.h("span", { class: "disclosure-spacer", "aria-hidden": "true" }), index.h("span", { key: 'd984631c891df304edb3e1dc5bcd19af3ad8e20d', class: "leading", part: "leading" }, index.h("slot", { key: '81a0e055859df5d4daaa6dac39013b23dcc2831b', name: "leading" })), index.h("span", { key: '3ae295523d5a3b9feaa9bfaa16d807349e37d78b', class: "label", part: "label" }, index.h("slot", { key: 'db8503a41d087d283074a41e76fa872ff4b2a707' })), index.h("span", { key: 'ac5b5db7128b31a9263b912bd64cd90ac640eaeb', class: "actions", part: "actions" }, index.h("slot", { key: 'c8842a5d80215ec297688c86f6bfe9b4d9bed333', name: "actions" })), index.h("span", { key: 'b7f239bc16867678291850ad61a5cd752d6a7425', class: "drop-indicator row-drop-indicator", part: "drop-indicator", "aria-hidden": "true" })), this.container ? (index.h("div", { class: "children", part: "children", role: "group", hidden: !expanded }, index.h("slot", { name: "children" }))) : null, index.h("span", { key: '2a5f448db2f4f363a34a1a950785e0ee12cc9938', class: "drop-indicator subtree-drop-indicator", part: "drop-indicator", "aria-hidden": "true" })));
689
126
  }
690
127
  static get watchers() { return {
691
128
  "expanded": [{