@ixfx/components 0.2.4 → 0.2.6

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 (718) hide show
  1. package/bundle/index.d.ts +285 -159
  2. package/bundle/index.d.ts.map +1 -1
  3. package/bundle/index.js +3291 -2485
  4. package/bundle/index.js.map +1 -1
  5. package/dist/ac-text.d.ts +96 -0
  6. package/dist/ac-text.d.ts.map +1 -0
  7. package/dist/ac-text.js +484 -0
  8. package/dist/ac-text.js.map +1 -0
  9. package/dist/{button/button-styles.js → button-B9ztaKyl.js} +49 -3
  10. package/dist/button-B9ztaKyl.js.map +1 -0
  11. package/dist/button.d.ts +20 -0
  12. package/dist/button.d.ts.map +1 -0
  13. package/dist/button.js +3 -0
  14. package/dist/checkbox.d.ts +26 -57
  15. package/dist/checkbox.d.ts.map +1 -1
  16. package/dist/checkbox.js +74 -88
  17. package/dist/checkbox.js.map +1 -1
  18. package/dist/chunk-pbuEa-1d.js +13 -0
  19. package/dist/colour-C3MQIjFJ-BJV-QC-3.js +4138 -0
  20. package/dist/colour-C3MQIjFJ-BJV-QC-3.js.map +1 -0
  21. package/dist/colour-picker-BNqDz4wK.js +922 -0
  22. package/dist/colour-picker-BNqDz4wK.js.map +1 -0
  23. package/dist/colour-picker.d.ts +2 -0
  24. package/dist/colour-picker.js +2 -0
  25. package/dist/crumbs.d.ts +91 -0
  26. package/dist/crumbs.d.ts.map +1 -0
  27. package/dist/crumbs.js +789 -0
  28. package/dist/crumbs.js.map +1 -0
  29. package/dist/data-display.d.ts +22 -18
  30. package/dist/data-display.d.ts.map +1 -1
  31. package/dist/data-display.js +81 -108
  32. package/dist/data-display.js.map +1 -1
  33. package/dist/decorate-O4m1U4l3.js +25 -0
  34. package/dist/decorate-O4m1U4l3.js.map +1 -0
  35. package/dist/defaults-FEZaGiYZ.js +38 -0
  36. package/dist/defaults-FEZaGiYZ.js.map +1 -0
  37. package/dist/dist-By5URG0Y.js +1290 -0
  38. package/dist/dist-By5URG0Y.js.map +1 -0
  39. package/dist/dist-D7kJgnSE.js +1039 -0
  40. package/dist/dist-D7kJgnSE.js.map +1 -0
  41. package/dist/editable-label.d.ts +71 -0
  42. package/dist/editable-label.d.ts.map +1 -0
  43. package/dist/editable-label.js +279 -0
  44. package/dist/editable-label.js.map +1 -0
  45. package/dist/hex-editor-2_s0Ua5t.d.ts +130 -0
  46. package/dist/hex-editor-2_s0Ua5t.d.ts.map +1 -0
  47. package/dist/hex-editor-gH3mteMr.js +1147 -0
  48. package/dist/hex-editor-gH3mteMr.js.map +1 -0
  49. package/dist/hex.d.ts +2 -0
  50. package/dist/hex.js +2 -0
  51. package/dist/highlight-CAjwQ4GE.js +50 -0
  52. package/dist/highlight-CAjwQ4GE.js.map +1 -0
  53. package/dist/icon-CYACf6o8.js +100 -0
  54. package/dist/icon-CYACf6o8.js.map +1 -0
  55. package/dist/icon-CeTDJhC7.d.ts +35 -0
  56. package/dist/icon-CeTDJhC7.d.ts.map +1 -0
  57. package/dist/icons.d.ts +3 -0
  58. package/dist/icons.js +9 -0
  59. package/dist/icons.js.map +1 -0
  60. package/dist/incr-search-BZawvrfl.js +311 -0
  61. package/dist/incr-search-BZawvrfl.js.map +1 -0
  62. package/dist/incr-search.d.ts +2 -0
  63. package/dist/incr-search.js +3 -0
  64. package/dist/index-B1hNR7Z9.d.ts +36 -0
  65. package/dist/index-B1hNR7Z9.d.ts.map +1 -0
  66. package/dist/index-CnL9krsH.d.ts +1238 -0
  67. package/dist/index-CnL9krsH.d.ts.map +1 -0
  68. package/dist/index-CwGkb9s1.d.ts +395 -0
  69. package/dist/index-CwGkb9s1.d.ts.map +1 -0
  70. package/dist/index-DrQjA8Gs.d.ts +22 -0
  71. package/dist/index-DrQjA8Gs.d.ts.map +1 -0
  72. package/dist/index-V2cJorlA.d.ts +160 -0
  73. package/dist/index-V2cJorlA.d.ts.map +1 -0
  74. package/dist/index-kY5gxbkI.d.ts +182 -0
  75. package/dist/index-kY5gxbkI.d.ts.map +1 -0
  76. package/dist/index.d.ts +540 -53
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +6519 -54
  79. package/dist/index.js.map +1 -1
  80. package/dist/interaction-CQDQJf2Q.js +1 -0
  81. package/dist/keyboard-De_vOHLg.js +20 -0
  82. package/dist/keyboard-De_vOHLg.js.map +1 -0
  83. package/dist/labelled-input-base-BvgH7ldm.js +155 -0
  84. package/dist/labelled-input-base-BvgH7ldm.js.map +1 -0
  85. package/dist/labelled-input-base-D-Y7agky.d.ts +42 -0
  86. package/dist/labelled-input-base-D-Y7agky.d.ts.map +1 -0
  87. package/dist/labelled-radial-input.d.ts +33 -0
  88. package/dist/labelled-radial-input.d.ts.map +1 -0
  89. package/dist/labelled-radial-input.js +188 -0
  90. package/dist/labelled-radial-input.js.map +1 -0
  91. package/dist/labelled-range-input.d.ts +2 -0
  92. package/dist/{labelled-range-input/labelled-range-input.js → labelled-range-input.js} +40 -45
  93. package/dist/labelled-range-input.js.map +1 -0
  94. package/dist/led.d.ts +20 -16
  95. package/dist/led.d.ts.map +1 -1
  96. package/dist/led.js +71 -79
  97. package/dist/led.js.map +1 -1
  98. package/dist/menu-C3eANB5M.js +813 -0
  99. package/dist/menu-C3eANB5M.js.map +1 -0
  100. package/dist/menu-item-6IU5weHi.js +766 -0
  101. package/dist/menu-item-6IU5weHi.js.map +1 -0
  102. package/dist/menu-item-ClQF2DKN.d.ts +127 -0
  103. package/dist/menu-item-ClQF2DKN.d.ts.map +1 -0
  104. package/dist/menu.d.ts +3 -0
  105. package/dist/menu.js +3 -0
  106. package/dist/miller.d.ts +323 -0
  107. package/dist/miller.d.ts.map +1 -0
  108. package/dist/miller.js +1343 -0
  109. package/dist/miller.js.map +1 -0
  110. package/dist/narrowed-text.d.ts +71 -0
  111. package/dist/narrowed-text.d.ts.map +1 -0
  112. package/dist/narrowed-text.js +571 -0
  113. package/dist/narrowed-text.js.map +1 -0
  114. package/dist/panel.d.ts +42 -0
  115. package/dist/panel.d.ts.map +1 -0
  116. package/dist/{panel/panel.js → panel.js} +82 -91
  117. package/dist/panel.js.map +1 -0
  118. package/dist/plots.d.ts +2 -0
  119. package/dist/plots.js +2 -0
  120. package/dist/polar-pad.d.ts +66 -0
  121. package/dist/polar-pad.d.ts.map +1 -0
  122. package/dist/polar-pad.js +537 -0
  123. package/dist/polar-pad.js.map +1 -0
  124. package/dist/popup-Ddx9LCzY.js +24 -0
  125. package/dist/popup-Ddx9LCzY.js.map +1 -0
  126. package/dist/prominence-CreDBdCs.js +98 -0
  127. package/dist/prominence-CreDBdCs.js.map +1 -0
  128. package/dist/radial-input-Dbc6fgCK.js +849 -0
  129. package/dist/radial-input-Dbc6fgCK.js.map +1 -0
  130. package/dist/radial-input-LUSBEycd.d.ts +69 -0
  131. package/dist/radial-input-LUSBEycd.d.ts.map +1 -0
  132. package/dist/radial-input.d.ts +2 -0
  133. package/dist/radial-input.js +2 -0
  134. package/dist/range-input.d.ts +42 -0
  135. package/dist/range-input.d.ts.map +1 -0
  136. package/dist/{range-input/range-input.js → range-input.js} +155 -168
  137. package/dist/range-input.js.map +1 -0
  138. package/dist/range.d.ts +27 -0
  139. package/dist/range.d.ts.map +1 -0
  140. package/dist/range.js +136 -0
  141. package/dist/range.js.map +1 -0
  142. package/dist/registry-CZEB1YI9.js +21 -0
  143. package/dist/registry-CZEB1YI9.js.map +1 -0
  144. package/dist/selecthorizontal.d.ts +12 -8
  145. package/dist/selecthorizontal.d.ts.map +1 -1
  146. package/dist/selecthorizontal.js +20 -24
  147. package/dist/selecthorizontal.js.map +1 -1
  148. package/dist/snap-container.d.ts +49 -0
  149. package/dist/snap-container.d.ts.map +1 -0
  150. package/dist/snap-container.js +297 -0
  151. package/dist/snap-container.js.map +1 -0
  152. package/dist/{split-layout/split-layout.d.ts → split-layout.d.ts} +29 -25
  153. package/dist/split-layout.d.ts.map +1 -0
  154. package/dist/split-layout.js +545 -0
  155. package/dist/split-layout.js.map +1 -0
  156. package/dist/style.css +133 -0
  157. package/dist/swipe.d.ts +48 -0
  158. package/dist/swipe.d.ts.map +1 -0
  159. package/dist/swipe.js +204 -0
  160. package/dist/swipe.js.map +1 -0
  161. package/dist/tab-list-BnqISNvO.d.ts +65 -0
  162. package/dist/tab-list-BnqISNvO.d.ts.map +1 -0
  163. package/dist/tabs.d.ts +2 -0
  164. package/dist/tabs.js +203 -0
  165. package/dist/tabs.js.map +1 -0
  166. package/dist/tickled-controller-Cq1Va0rR.d.ts +218 -0
  167. package/dist/tickled-controller-Cq1Va0rR.d.ts.map +1 -0
  168. package/dist/tickled-styles-Bg3QbcrD.js +327 -0
  169. package/dist/tickled-styles-Bg3QbcrD.js.map +1 -0
  170. package/dist/timeline-B62Sz6J_.js +1748 -0
  171. package/dist/timeline-B62Sz6J_.js.map +1 -0
  172. package/dist/timeline.d.ts +2 -0
  173. package/dist/timeline.js +2 -0
  174. package/dist/tooltip-CwGfb4lp.d.ts +25 -0
  175. package/dist/tooltip-CwGfb4lp.d.ts.map +1 -0
  176. package/dist/{styles/tooltip.js → tooltip-DMxmBNky.js} +6 -2
  177. package/dist/tooltip-DMxmBNky.js.map +1 -0
  178. package/dist/tree-component-CQpoPo4s.d.ts +326 -0
  179. package/dist/tree-component-CQpoPo4s.d.ts.map +1 -0
  180. package/dist/tree-data-model-DGvRVOFY.js +190 -0
  181. package/dist/tree-data-model-DGvRVOFY.js.map +1 -0
  182. package/dist/tree.d.ts +99 -0
  183. package/dist/tree.d.ts.map +1 -0
  184. package/dist/tree.js +1144 -0
  185. package/dist/tree.js.map +1 -0
  186. package/dist/types-BKaqnpwx.d.ts +8 -0
  187. package/dist/types-BKaqnpwx.d.ts.map +1 -0
  188. package/dist/xy-axis-C7fNxDwY.js +6243 -0
  189. package/dist/xy-axis-C7fNxDwY.js.map +1 -0
  190. package/dist/xy-axis-D9uwpGTT.d.ts +140 -0
  191. package/dist/xy-axis-D9uwpGTT.d.ts.map +1 -0
  192. package/dist/xy-pad.d.ts +73 -110
  193. package/dist/xy-pad.d.ts.map +1 -1
  194. package/dist/xy-pad.js +300 -320
  195. package/dist/xy-pad.js.map +1 -1
  196. package/package.json +24 -28
  197. package/dist/ac-text/ac-text.d.ts +0 -99
  198. package/dist/ac-text/ac-text.d.ts.map +0 -1
  199. package/dist/ac-text/ac-text.js +0 -571
  200. package/dist/ac-text/ac-text.js.map +0 -1
  201. package/dist/button/button-styles.d.ts +0 -2
  202. package/dist/button/button-styles.d.ts.map +0 -1
  203. package/dist/button/button-styles.js.map +0 -1
  204. package/dist/button/button.d.ts +0 -16
  205. package/dist/button/button.d.ts.map +0 -1
  206. package/dist/button/button.js +0 -58
  207. package/dist/button/button.js.map +0 -1
  208. package/dist/button/radio-group.d.ts +0 -44
  209. package/dist/button/radio-group.d.ts.map +0 -1
  210. package/dist/button/radio-group.js +0 -385
  211. package/dist/button/radio-group.js.map +0 -1
  212. package/dist/button/split-button.d.ts +0 -59
  213. package/dist/button/split-button.d.ts.map +0 -1
  214. package/dist/button/split-button.js +0 -480
  215. package/dist/button/split-button.js.map +0 -1
  216. package/dist/button/types.d.ts +0 -18
  217. package/dist/button/types.d.ts.map +0 -1
  218. package/dist/button/types.js +0 -2
  219. package/dist/button/types.js.map +0 -1
  220. package/dist/colour-picker/colour-picker-popup.d.ts +0 -102
  221. package/dist/colour-picker/colour-picker-popup.d.ts.map +0 -1
  222. package/dist/colour-picker/colour-picker-popup.js +0 -399
  223. package/dist/colour-picker/colour-picker-popup.js.map +0 -1
  224. package/dist/colour-picker/colour-picker.d.ts +0 -100
  225. package/dist/colour-picker/colour-picker.d.ts.map +0 -1
  226. package/dist/colour-picker/colour-picker.js +0 -567
  227. package/dist/colour-picker/colour-picker.js.map +0 -1
  228. package/dist/colour-picker/index.d.ts +0 -4
  229. package/dist/colour-picker/index.d.ts.map +0 -1
  230. package/dist/colour-picker/index.js +0 -3
  231. package/dist/colour-picker/index.js.map +0 -1
  232. package/dist/colour-picker/styles.d.ts +0 -2
  233. package/dist/colour-picker/styles.d.ts.map +0 -1
  234. package/dist/colour-picker/styles.js +0 -139
  235. package/dist/colour-picker/styles.js.map +0 -1
  236. package/dist/colour-picker/types.d.ts +0 -33
  237. package/dist/colour-picker/types.d.ts.map +0 -1
  238. package/dist/colour-picker/types.js +0 -2
  239. package/dist/colour-picker/types.js.map +0 -1
  240. package/dist/colour-picker/util.d.ts +0 -15
  241. package/dist/colour-picker/util.d.ts.map +0 -1
  242. package/dist/colour-picker/util.js +0 -35
  243. package/dist/colour-picker/util.js.map +0 -1
  244. package/dist/common/searchable.d.ts +0 -9
  245. package/dist/common/searchable.d.ts.map +0 -1
  246. package/dist/common/searchable.js +0 -9
  247. package/dist/common/searchable.js.map +0 -1
  248. package/dist/common/tree-component.d.ts +0 -172
  249. package/dist/common/tree-component.d.ts.map +0 -1
  250. package/dist/common/tree-component.js +0 -8
  251. package/dist/common/tree-component.js.map +0 -1
  252. package/dist/common/tree-data-model.d.ts +0 -100
  253. package/dist/common/tree-data-model.d.ts.map +0 -1
  254. package/dist/common/tree-data-model.js +0 -207
  255. package/dist/common/tree-data-model.js.map +0 -1
  256. package/dist/common/tree-item.d.ts +0 -7
  257. package/dist/common/tree-item.d.ts.map +0 -1
  258. package/dist/common/tree-item.js +0 -2
  259. package/dist/common/tree-item.js.map +0 -1
  260. package/dist/common/types.d.ts +0 -69
  261. package/dist/common/types.d.ts.map +0 -1
  262. package/dist/common/types.js +0 -6
  263. package/dist/common/types.js.map +0 -1
  264. package/dist/crumbs/crumb-navigation.d.ts +0 -96
  265. package/dist/crumbs/crumb-navigation.d.ts.map +0 -1
  266. package/dist/crumbs/crumb-navigation.js +0 -911
  267. package/dist/crumbs/crumb-navigation.js.map +0 -1
  268. package/dist/crumbs/crumb-path-controller.d.ts +0 -18
  269. package/dist/crumbs/crumb-path-controller.d.ts.map +0 -1
  270. package/dist/crumbs/crumb-path-controller.js +0 -81
  271. package/dist/crumbs/crumb-path-controller.js.map +0 -1
  272. package/dist/crumbs/crumb-path.d.ts +0 -65
  273. package/dist/crumbs/crumb-path.d.ts.map +0 -1
  274. package/dist/crumbs/crumb-path.js +0 -691
  275. package/dist/crumbs/crumb-path.js.map +0 -1
  276. package/dist/editable-label/editable-label.d.ts +0 -98
  277. package/dist/editable-label/editable-label.d.ts.map +0 -1
  278. package/dist/editable-label/editable-label.js +0 -348
  279. package/dist/editable-label/editable-label.js.map +0 -1
  280. package/dist/editable-label/editable-number.d.ts +0 -96
  281. package/dist/editable-label/editable-number.d.ts.map +0 -1
  282. package/dist/editable-label/editable-number.js +0 -702
  283. package/dist/editable-label/editable-number.js.map +0 -1
  284. package/dist/hex/colour.d.ts +0 -6
  285. package/dist/hex/colour.d.ts.map +0 -1
  286. package/dist/hex/colour.js +0 -33
  287. package/dist/hex/colour.js.map +0 -1
  288. package/dist/hex/data.d.ts +0 -18
  289. package/dist/hex/data.d.ts.map +0 -1
  290. package/dist/hex/data.js +0 -61
  291. package/dist/hex/data.js.map +0 -1
  292. package/dist/hex/diff.d.ts +0 -14
  293. package/dist/hex/diff.d.ts.map +0 -1
  294. package/dist/hex/diff.js +0 -31
  295. package/dist/hex/diff.js.map +0 -1
  296. package/dist/hex/hex-editor.d.ts +0 -101
  297. package/dist/hex/hex-editor.d.ts.map +0 -1
  298. package/dist/hex/hex-editor.js +0 -894
  299. package/dist/hex/hex-editor.js.map +0 -1
  300. package/dist/hex/selection.d.ts +0 -11
  301. package/dist/hex/selection.d.ts.map +0 -1
  302. package/dist/hex/selection.js +0 -218
  303. package/dist/hex/selection.js.map +0 -1
  304. package/dist/hex/types.d.ts +0 -34
  305. package/dist/hex/types.d.ts.map +0 -1
  306. package/dist/hex/types.js +0 -4
  307. package/dist/hex/types.js.map +0 -1
  308. package/dist/icons/defaults.d.ts +0 -27
  309. package/dist/icons/defaults.d.ts.map +0 -1
  310. package/dist/icons/defaults.js +0 -34
  311. package/dist/icons/defaults.js.map +0 -1
  312. package/dist/icons/icon.d.ts +0 -31
  313. package/dist/icons/icon.d.ts.map +0 -1
  314. package/dist/icons/icon.js +0 -125
  315. package/dist/icons/icon.js.map +0 -1
  316. package/dist/icons/index.d.ts +0 -5
  317. package/dist/icons/index.d.ts.map +0 -1
  318. package/dist/icons/index.js +0 -6
  319. package/dist/icons/index.js.map +0 -1
  320. package/dist/icons/registry.d.ts +0 -11
  321. package/dist/icons/registry.d.ts.map +0 -1
  322. package/dist/icons/registry.js +0 -17
  323. package/dist/icons/registry.js.map +0 -1
  324. package/dist/incr-search/ac-adapter.d.ts +0 -18
  325. package/dist/incr-search/ac-adapter.d.ts.map +0 -1
  326. package/dist/incr-search/ac-adapter.js +0 -29
  327. package/dist/incr-search/ac-adapter.js.map +0 -1
  328. package/dist/incr-search/controller-miller.d.ts +0 -9
  329. package/dist/incr-search/controller-miller.d.ts.map +0 -1
  330. package/dist/incr-search/controller-miller.js +0 -8
  331. package/dist/incr-search/controller-miller.js.map +0 -1
  332. package/dist/incr-search/controller-tree.d.ts +0 -55
  333. package/dist/incr-search/controller-tree.d.ts.map +0 -1
  334. package/dist/incr-search/controller-tree.js +0 -106
  335. package/dist/incr-search/controller-tree.js.map +0 -1
  336. package/dist/incr-search/element-search.d.ts +0 -15
  337. package/dist/incr-search/element-search.d.ts.map +0 -1
  338. package/dist/incr-search/element-search.js +0 -82
  339. package/dist/incr-search/element-search.js.map +0 -1
  340. package/dist/incr-search/fuzzy.d.ts +0 -3
  341. package/dist/incr-search/fuzzy.d.ts.map +0 -1
  342. package/dist/incr-search/fuzzy.js +0 -37
  343. package/dist/incr-search/fuzzy.js.map +0 -1
  344. package/dist/incr-search/highlight.d.ts +0 -5
  345. package/dist/incr-search/highlight.d.ts.map +0 -1
  346. package/dist/incr-search/highlight.js +0 -54
  347. package/dist/incr-search/highlight.js.map +0 -1
  348. package/dist/incr-search/incr-search.d.ts +0 -3
  349. package/dist/incr-search/incr-search.d.ts.map +0 -1
  350. package/dist/incr-search/incr-search.js +0 -73
  351. package/dist/incr-search/incr-search.js.map +0 -1
  352. package/dist/incr-search/index.d.ts +0 -12
  353. package/dist/incr-search/index.d.ts.map +0 -1
  354. package/dist/incr-search/index.js +0 -8
  355. package/dist/incr-search/index.js.map +0 -1
  356. package/dist/incr-search/types.d.ts +0 -59
  357. package/dist/incr-search/types.d.ts.map +0 -1
  358. package/dist/incr-search/types.js +0 -2
  359. package/dist/incr-search/types.js.map +0 -1
  360. package/dist/interaction/index.d.ts +0 -10
  361. package/dist/interaction/index.d.ts.map +0 -1
  362. package/dist/interaction/index.js +0 -10
  363. package/dist/interaction/index.js.map +0 -1
  364. package/dist/interaction/tickled-controller.d.ts +0 -186
  365. package/dist/interaction/tickled-controller.d.ts.map +0 -1
  366. package/dist/interaction/tickled-controller.js +0 -256
  367. package/dist/interaction/tickled-controller.js.map +0 -1
  368. package/dist/interaction/tickled-styles.d.ts +0 -53
  369. package/dist/interaction/tickled-styles.d.ts.map +0 -1
  370. package/dist/interaction/tickled-styles.js +0 -106
  371. package/dist/interaction/tickled-styles.js.map +0 -1
  372. package/dist/interaction/tree-keyboard-controller.d.ts +0 -30
  373. package/dist/interaction/tree-keyboard-controller.d.ts.map +0 -1
  374. package/dist/interaction/tree-keyboard-controller.js +0 -105
  375. package/dist/interaction/tree-keyboard-controller.js.map +0 -1
  376. package/dist/keyboard.d.ts +0 -16
  377. package/dist/keyboard.d.ts.map +0 -1
  378. package/dist/keyboard.js +0 -22
  379. package/dist/keyboard.js.map +0 -1
  380. package/dist/labelled-radial-input/index.d.ts +0 -2
  381. package/dist/labelled-radial-input/index.d.ts.map +0 -1
  382. package/dist/labelled-radial-input/index.js +0 -2
  383. package/dist/labelled-radial-input/index.js.map +0 -1
  384. package/dist/labelled-radial-input/labelled-radial-input.d.ts +0 -77
  385. package/dist/labelled-radial-input/labelled-radial-input.d.ts.map +0 -1
  386. package/dist/labelled-radial-input/labelled-radial-input.js +0 -214
  387. package/dist/labelled-radial-input/labelled-radial-input.js.map +0 -1
  388. package/dist/labelled-range-input/index.d.ts +0 -2
  389. package/dist/labelled-range-input/index.d.ts.map +0 -1
  390. package/dist/labelled-range-input/index.js +0 -2
  391. package/dist/labelled-range-input/index.js.map +0 -1
  392. package/dist/labelled-range-input/labelled-range-input.d.ts +0 -80
  393. package/dist/labelled-range-input/labelled-range-input.d.ts.map +0 -1
  394. package/dist/labelled-range-input/labelled-range-input.js.map +0 -1
  395. package/dist/menu/index.d.ts +0 -14
  396. package/dist/menu/index.d.ts.map +0 -1
  397. package/dist/menu/index.js +0 -13
  398. package/dist/menu/index.js.map +0 -1
  399. package/dist/menu/menu-bar.d.ts +0 -23
  400. package/dist/menu/menu-bar.d.ts.map +0 -1
  401. package/dist/menu/menu-bar.js +0 -110
  402. package/dist/menu/menu-bar.js.map +0 -1
  403. package/dist/menu/menu-check-item.d.ts +0 -33
  404. package/dist/menu/menu-check-item.d.ts.map +0 -1
  405. package/dist/menu/menu-check-item.js +0 -175
  406. package/dist/menu/menu-check-item.js.map +0 -1
  407. package/dist/menu/menu-command-controller.d.ts +0 -14
  408. package/dist/menu/menu-command-controller.d.ts.map +0 -1
  409. package/dist/menu/menu-command-controller.js +0 -22
  410. package/dist/menu/menu-command-controller.js.map +0 -1
  411. package/dist/menu/menu-container.d.ts +0 -36
  412. package/dist/menu/menu-container.d.ts.map +0 -1
  413. package/dist/menu/menu-container.js +0 -351
  414. package/dist/menu/menu-container.js.map +0 -1
  415. package/dist/menu/menu-from-tree.d.ts +0 -17
  416. package/dist/menu/menu-from-tree.d.ts.map +0 -1
  417. package/dist/menu/menu-from-tree.js +0 -103
  418. package/dist/menu/menu-from-tree.js.map +0 -1
  419. package/dist/menu/menu-header.d.ts +0 -12
  420. package/dist/menu/menu-header.d.ts.map +0 -1
  421. package/dist/menu/menu-header.js +0 -36
  422. package/dist/menu/menu-header.js.map +0 -1
  423. package/dist/menu/menu-item.d.ts +0 -41
  424. package/dist/menu/menu-item.d.ts.map +0 -1
  425. package/dist/menu/menu-item.js +0 -240
  426. package/dist/menu/menu-item.js.map +0 -1
  427. package/dist/menu/menu-radio-group.d.ts +0 -24
  428. package/dist/menu/menu-radio-group.d.ts.map +0 -1
  429. package/dist/menu/menu-radio-group.js +0 -71
  430. package/dist/menu/menu-radio-group.js.map +0 -1
  431. package/dist/menu/menu-radio-item.d.ts +0 -22
  432. package/dist/menu/menu-radio-item.d.ts.map +0 -1
  433. package/dist/menu/menu-radio-item.js +0 -116
  434. package/dist/menu/menu-radio-item.js.map +0 -1
  435. package/dist/menu/menu-separator.d.ts +0 -11
  436. package/dist/menu/menu-separator.d.ts.map +0 -1
  437. package/dist/menu/menu-separator.js +0 -29
  438. package/dist/menu/menu-separator.js.map +0 -1
  439. package/dist/menu/menu-sub-trigger.d.ts +0 -46
  440. package/dist/menu/menu-sub-trigger.d.ts.map +0 -1
  441. package/dist/menu/menu-sub-trigger.js +0 -302
  442. package/dist/menu/menu-sub-trigger.js.map +0 -1
  443. package/dist/menu/menu-trigger.d.ts +0 -57
  444. package/dist/menu/menu-trigger.d.ts.map +0 -1
  445. package/dist/menu/menu-trigger.js +0 -351
  446. package/dist/menu/menu-trigger.js.map +0 -1
  447. package/dist/miller/index.d.ts +0 -5
  448. package/dist/miller/index.d.ts.map +0 -1
  449. package/dist/miller/index.js +0 -5
  450. package/dist/miller/index.js.map +0 -1
  451. package/dist/miller/miller-base.d.ts +0 -184
  452. package/dist/miller/miller-base.d.ts.map +0 -1
  453. package/dist/miller/miller-base.js +0 -1249
  454. package/dist/miller/miller-base.js.map +0 -1
  455. package/dist/miller/miller-list.d.ts +0 -30
  456. package/dist/miller/miller-list.d.ts.map +0 -1
  457. package/dist/miller/miller-list.js +0 -192
  458. package/dist/miller/miller-list.js.map +0 -1
  459. package/dist/miller/miller-tree-controller.d.ts +0 -58
  460. package/dist/miller/miller-tree-controller.d.ts.map +0 -1
  461. package/dist/miller/miller-tree-controller.js +0 -134
  462. package/dist/miller/miller-tree-controller.js.map +0 -1
  463. package/dist/miller/types.d.ts +0 -63
  464. package/dist/miller/types.d.ts.map +0 -1
  465. package/dist/miller/types.js +0 -6
  466. package/dist/miller/types.js.map +0 -1
  467. package/dist/mixins/labelled-input-base.d.ts +0 -38
  468. package/dist/mixins/labelled-input-base.d.ts.map +0 -1
  469. package/dist/mixins/labelled-input-base.js +0 -171
  470. package/dist/mixins/labelled-input-base.js.map +0 -1
  471. package/dist/mixins/labelled-input-util.d.ts +0 -3
  472. package/dist/mixins/labelled-input-util.d.ts.map +0 -1
  473. package/dist/mixins/labelled-input-util.js +0 -10
  474. package/dist/mixins/labelled-input-util.js.map +0 -1
  475. package/dist/my-element.d.ts +0 -14
  476. package/dist/my-element.d.ts.map +0 -1
  477. package/dist/my-element.js +0 -44
  478. package/dist/my-element.js.map +0 -1
  479. package/dist/narrowed-text/index.d.ts +0 -3
  480. package/dist/narrowed-text/index.d.ts.map +0 -1
  481. package/dist/narrowed-text/index.js +0 -3
  482. package/dist/narrowed-text/index.js.map +0 -1
  483. package/dist/narrowed-text/narrowed-text.d.ts +0 -48
  484. package/dist/narrowed-text/narrowed-text.d.ts.map +0 -1
  485. package/dist/narrowed-text/narrowed-text.js +0 -668
  486. package/dist/narrowed-text/narrowed-text.js.map +0 -1
  487. package/dist/narrowed-text/types.d.ts +0 -20
  488. package/dist/narrowed-text/types.d.ts.map +0 -1
  489. package/dist/narrowed-text/types.js +0 -2
  490. package/dist/narrowed-text/types.js.map +0 -1
  491. package/dist/panel/panel-group.d.ts +0 -23
  492. package/dist/panel/panel-group.d.ts.map +0 -1
  493. package/dist/panel/panel-group.js +0 -109
  494. package/dist/panel/panel-group.js.map +0 -1
  495. package/dist/panel/panel.d.ts +0 -39
  496. package/dist/panel/panel.d.ts.map +0 -1
  497. package/dist/panel/panel.js.map +0 -1
  498. package/dist/plots/colour-map.d.ts +0 -31
  499. package/dist/plots/colour-map.d.ts.map +0 -1
  500. package/dist/plots/colour-map.js +0 -133
  501. package/dist/plots/colour-map.js.map +0 -1
  502. package/dist/plots/data.d.ts +0 -27
  503. package/dist/plots/data.d.ts.map +0 -1
  504. package/dist/plots/data.js +0 -47
  505. package/dist/plots/data.js.map +0 -1
  506. package/dist/plots/single-axis.d.ts +0 -41
  507. package/dist/plots/single-axis.d.ts.map +0 -1
  508. package/dist/plots/single-axis.js +0 -428
  509. package/dist/plots/single-axis.js.map +0 -1
  510. package/dist/plots/svg-utils.d.ts +0 -12
  511. package/dist/plots/svg-utils.d.ts.map +0 -1
  512. package/dist/plots/svg-utils.js +0 -64
  513. package/dist/plots/svg-utils.js.map +0 -1
  514. package/dist/plots/xy-axis.d.ts +0 -42
  515. package/dist/plots/xy-axis.d.ts.map +0 -1
  516. package/dist/plots/xy-axis.js +0 -307
  517. package/dist/plots/xy-axis.js.map +0 -1
  518. package/dist/polar-pad/polar-pad.d.ts +0 -132
  519. package/dist/polar-pad/polar-pad.d.ts.map +0 -1
  520. package/dist/polar-pad/polar-pad.js +0 -598
  521. package/dist/polar-pad/polar-pad.js.map +0 -1
  522. package/dist/radial-input/radial-input.d.ts +0 -45
  523. package/dist/radial-input/radial-input.d.ts.map +0 -1
  524. package/dist/radial-input/radial-input.js +0 -692
  525. package/dist/radial-input/radial-input.js.map +0 -1
  526. package/dist/radial-input/svg-utils.d.ts +0 -147
  527. package/dist/radial-input/svg-utils.d.ts.map +0 -1
  528. package/dist/radial-input/svg-utils.js +0 -346
  529. package/dist/radial-input/svg-utils.js.map +0 -1
  530. package/dist/radial-input/types.d.ts +0 -25
  531. package/dist/radial-input/types.d.ts.map +0 -1
  532. package/dist/radial-input/types.js +0 -5
  533. package/dist/radial-input/types.js.map +0 -1
  534. package/dist/range/range-multi.d.ts +0 -62
  535. package/dist/range/range-multi.d.ts.map +0 -1
  536. package/dist/range/range-multi.js +0 -652
  537. package/dist/range/range-multi.js.map +0 -1
  538. package/dist/range/range.d.ts +0 -23
  539. package/dist/range/range.d.ts.map +0 -1
  540. package/dist/range/range.js +0 -153
  541. package/dist/range/range.js.map +0 -1
  542. package/dist/range-input/index.d.ts +0 -2
  543. package/dist/range-input/index.d.ts.map +0 -1
  544. package/dist/range-input/index.js +0 -2
  545. package/dist/range-input/index.js.map +0 -1
  546. package/dist/range-input/range-input.d.ts +0 -92
  547. package/dist/range-input/range-input.d.ts.map +0 -1
  548. package/dist/range-input/range-input.js.map +0 -1
  549. package/dist/snap-container/snap-container.d.ts +0 -45
  550. package/dist/snap-container/snap-container.d.ts.map +0 -1
  551. package/dist/snap-container/snap-container.js +0 -352
  552. package/dist/snap-container/snap-container.js.map +0 -1
  553. package/dist/split-layout/split-layout.d.ts.map +0 -1
  554. package/dist/split-layout/split-layout.js +0 -674
  555. package/dist/split-layout/split-layout.js.map +0 -1
  556. package/dist/styles/popup.d.ts +0 -11
  557. package/dist/styles/popup.d.ts.map +0 -1
  558. package/dist/styles/popup.js +0 -20
  559. package/dist/styles/popup.js.map +0 -1
  560. package/dist/styles/prominence.d.ts +0 -58
  561. package/dist/styles/prominence.d.ts.map +0 -1
  562. package/dist/styles/prominence.js +0 -94
  563. package/dist/styles/prominence.js.map +0 -1
  564. package/dist/styles/tooltip.d.ts +0 -2
  565. package/dist/styles/tooltip.d.ts.map +0 -1
  566. package/dist/styles/tooltip.js.map +0 -1
  567. package/dist/svg-edit-label.d.ts +0 -2
  568. package/dist/svg-edit-label.d.ts.map +0 -1
  569. package/dist/svg-edit-label.js +0 -110
  570. package/dist/svg-edit-label.js.map +0 -1
  571. package/dist/swipe/index.d.ts +0 -2
  572. package/dist/swipe/index.d.ts.map +0 -1
  573. package/dist/swipe/index.js +0 -2
  574. package/dist/swipe/index.js.map +0 -1
  575. package/dist/swipe/swipe.d.ts +0 -65
  576. package/dist/swipe/swipe.d.ts.map +0 -1
  577. package/dist/swipe/swipe.js +0 -229
  578. package/dist/swipe/swipe.js.map +0 -1
  579. package/dist/tabs/tab-layout-item.d.ts +0 -10
  580. package/dist/tabs/tab-layout-item.d.ts.map +0 -1
  581. package/dist/tabs/tab-layout-item.js +0 -20
  582. package/dist/tabs/tab-layout-item.js.map +0 -1
  583. package/dist/tabs/tab-layout.d.ts +0 -10
  584. package/dist/tabs/tab-layout.d.ts.map +0 -1
  585. package/dist/tabs/tab-layout.js +0 -25
  586. package/dist/tabs/tab-layout.js.map +0 -1
  587. package/dist/tabs/tab-list-item.d.ts +0 -34
  588. package/dist/tabs/tab-list-item.d.ts.map +0 -1
  589. package/dist/tabs/tab-list-item.js +0 -195
  590. package/dist/tabs/tab-list-item.js.map +0 -1
  591. package/dist/tabs/tab-list.d.ts +0 -31
  592. package/dist/tabs/tab-list.d.ts.map +0 -1
  593. package/dist/tabs/tab-list.js +0 -257
  594. package/dist/tabs/tab-list.js.map +0 -1
  595. package/dist/tabs/tab-panel.d.ts +0 -11
  596. package/dist/tabs/tab-panel.d.ts.map +0 -1
  597. package/dist/tabs/tab-panel.js +0 -30
  598. package/dist/tabs/tab-panel.js.map +0 -1
  599. package/dist/tabs/tab-panels.d.ts +0 -30
  600. package/dist/tabs/tab-panels.d.ts.map +0 -1
  601. package/dist/tabs/tab-panels.js +0 -80
  602. package/dist/tabs/tab-panels.js.map +0 -1
  603. package/dist/timeline/index.d.ts +0 -9
  604. package/dist/timeline/index.d.ts.map +0 -1
  605. package/dist/timeline/index.js +0 -8
  606. package/dist/timeline/index.js.map +0 -1
  607. package/dist/timeline/timeline-controller.d.ts +0 -48
  608. package/dist/timeline/timeline-controller.d.ts.map +0 -1
  609. package/dist/timeline/timeline-controller.js +0 -81
  610. package/dist/timeline/timeline-controller.js.map +0 -1
  611. package/dist/timeline/timeline-draw.d.ts +0 -28
  612. package/dist/timeline/timeline-draw.d.ts.map +0 -1
  613. package/dist/timeline/timeline-draw.js +0 -330
  614. package/dist/timeline/timeline-draw.js.map +0 -1
  615. package/dist/timeline/timeline-element.d.ts +0 -140
  616. package/dist/timeline/timeline-element.d.ts.map +0 -1
  617. package/dist/timeline/timeline-element.js +0 -888
  618. package/dist/timeline/timeline-element.js.map +0 -1
  619. package/dist/timeline/timeline-interactions.d.ts +0 -40
  620. package/dist/timeline/timeline-interactions.d.ts.map +0 -1
  621. package/dist/timeline/timeline-interactions.js +0 -393
  622. package/dist/timeline/timeline-interactions.js.map +0 -1
  623. package/dist/timeline/timeline-styles.d.ts +0 -2
  624. package/dist/timeline/timeline-styles.d.ts.map +0 -1
  625. package/dist/timeline/timeline-styles.js +0 -153
  626. package/dist/timeline/timeline-styles.js.map +0 -1
  627. package/dist/timeline/timeline-track-tabs.d.ts +0 -30
  628. package/dist/timeline/timeline-track-tabs.d.ts.map +0 -1
  629. package/dist/timeline/timeline-track-tabs.js +0 -204
  630. package/dist/timeline/timeline-track-tabs.js.map +0 -1
  631. package/dist/timeline/types.d.ts +0 -144
  632. package/dist/timeline/types.d.ts.map +0 -1
  633. package/dist/timeline/types.js +0 -3
  634. package/dist/timeline/types.js.map +0 -1
  635. package/dist/tree/index.d.ts +0 -5
  636. package/dist/tree/index.d.ts.map +0 -1
  637. package/dist/tree/index.js +0 -5
  638. package/dist/tree/index.js.map +0 -1
  639. package/dist/tree/tree-base.d.ts +0 -70
  640. package/dist/tree/tree-base.d.ts.map +0 -1
  641. package/dist/tree/tree-base.js +0 -1028
  642. package/dist/tree/tree-base.js.map +0 -1
  643. package/dist/tree/tree-controller.d.ts +0 -14
  644. package/dist/tree/tree-controller.d.ts.map +0 -1
  645. package/dist/tree/tree-controller.js +0 -96
  646. package/dist/tree/tree-controller.js.map +0 -1
  647. package/dist/tree/tree-list.d.ts +0 -20
  648. package/dist/tree/tree-list.d.ts.map +0 -1
  649. package/dist/tree/tree-list.js +0 -174
  650. package/dist/tree/tree-list.js.map +0 -1
  651. package/dist/tree/types.d.ts +0 -14
  652. package/dist/tree/types.d.ts.map +0 -1
  653. package/dist/tree/types.js +0 -7
  654. package/dist/tree/types.js.map +0 -1
  655. package/dist/util/checkbox.d.ts +0 -2
  656. package/dist/util/checkbox.d.ts.map +0 -1
  657. package/dist/util/checkbox.js +0 -69
  658. package/dist/util/checkbox.js.map +0 -1
  659. package/dist/util/circle-arc.d.ts +0 -34
  660. package/dist/util/circle-arc.d.ts.map +0 -1
  661. package/dist/util/circle-arc.js +0 -85
  662. package/dist/util/circle-arc.js.map +0 -1
  663. package/dist/util/clamp.d.ts +0 -4
  664. package/dist/util/clamp.d.ts.map +0 -1
  665. package/dist/util/clamp.js +0 -23
  666. package/dist/util/clamp.js.map +0 -1
  667. package/dist/util/compare.d.ts +0 -53
  668. package/dist/util/compare.d.ts.map +0 -1
  669. package/dist/util/compare.js +0 -91
  670. package/dist/util/compare.js.map +0 -1
  671. package/dist/util/content-editable.d.ts +0 -2
  672. package/dist/util/content-editable.d.ts.map +0 -1
  673. package/dist/util/content-editable.js +0 -13
  674. package/dist/util/content-editable.js.map +0 -1
  675. package/dist/util/coordinates.d.ts +0 -3
  676. package/dist/util/coordinates.d.ts.map +0 -1
  677. package/dist/util/coordinates.js +0 -11
  678. package/dist/util/coordinates.js.map +0 -1
  679. package/dist/util/drag.d.ts +0 -16
  680. package/dist/util/drag.d.ts.map +0 -1
  681. package/dist/util/drag.js +0 -20
  682. package/dist/util/drag.js.map +0 -1
  683. package/dist/util/is-numeric.d.ts +0 -2
  684. package/dist/util/is-numeric.d.ts.map +0 -1
  685. package/dist/util/is-numeric.js +0 -9
  686. package/dist/util/is-numeric.js.map +0 -1
  687. package/dist/util/key-value.d.ts +0 -5
  688. package/dist/util/key-value.d.ts.map +0 -1
  689. package/dist/util/key-value.js +0 -29
  690. package/dist/util/key-value.js.map +0 -1
  691. package/dist/util/near.d.ts +0 -2
  692. package/dist/util/near.d.ts.map +0 -1
  693. package/dist/util/near.js +0 -6
  694. package/dist/util/near.js.map +0 -1
  695. package/dist/util/primitive-types.d.ts +0 -6
  696. package/dist/util/primitive-types.d.ts.map +0 -1
  697. package/dist/util/primitive-types.js +0 -2
  698. package/dist/util/primitive-types.js.map +0 -1
  699. package/dist/util/svg-editable-text.d.ts +0 -26
  700. package/dist/util/svg-editable-text.d.ts.map +0 -1
  701. package/dist/util/svg-editable-text.js +0 -119
  702. package/dist/util/svg-editable-text.js.map +0 -1
  703. package/dist/util/time.d.ts +0 -2
  704. package/dist/util/time.d.ts.map +0 -1
  705. package/dist/util/time.js +0 -2
  706. package/dist/util/time.js.map +0 -1
  707. package/dist/util/tooltip-controller.d.ts +0 -10
  708. package/dist/util/tooltip-controller.d.ts.map +0 -1
  709. package/dist/util/tooltip-controller.js +0 -237
  710. package/dist/util/tooltip-controller.js.map +0 -1
  711. package/dist/util/tooltip.d.ts +0 -21
  712. package/dist/util/tooltip.d.ts.map +0 -1
  713. package/dist/util/tooltip.js +0 -98
  714. package/dist/util/tooltip.js.map +0 -1
  715. package/dist/util/value-drag.d.ts +0 -33
  716. package/dist/util/value-drag.d.ts.map +0 -1
  717. package/dist/util/value-drag.js +0 -154
  718. package/dist/util/value-drag.js.map +0 -1
@@ -0,0 +1,326 @@
1
+ //#region src/common/types.d.ts
2
+ /**
3
+ * Canonical shared types for all tree-like components (ixfx-tree-list, ixfx-miller-list,
4
+ * ixfx-crumb-navigation). Import from here rather than from individual component packages.
5
+ */
6
+ /** A single node's display data. */
7
+ type TreeItem = {
8
+ /** Unique identifier within the tree. */key: string; /** Visible label text. */
9
+ label: string; /** When true the node cannot have children and will not show an expand affordance. */
10
+ isLeaf?: boolean; /** Arbitrary application data associated with this node. */
11
+ data?: unknown; /** Icon name passed to an icon component, if icons are enabled. */
12
+ icon?: string; /** Tooltip text shown on hover. */
13
+ tooltip?: string; /** Optional string value, e.g. for use as a command/route. */
14
+ value?: string;
15
+ };
16
+ /** A node in the tree, potentially containing lazily-loaded children. */
17
+ type TreeNode = {
18
+ item: TreeItem;
19
+ /**
20
+ * Child nodes.
21
+ * - `undefined` = children not yet loaded (component will call loadChildren if set)
22
+ * - `[]` = confirmed leaf / empty branch
23
+ * - non-empty array = loaded children
24
+ */
25
+ children?: TreeNode[];
26
+ };
27
+ /**
28
+ * Callback invoked when a node's children need to be loaded.
29
+ * The AbortSignal is cancelled if the request is superseded (e.g. node collapsed before load completes).
30
+ */
31
+ type LoadChildrenCallback = (node: TreeNode, depth: number, signal: AbortSignal) => TreeNode[] | Promise<TreeNode[]>;
32
+ /**
33
+ * Predicate used by search/filter controllers to determine whether a node should be visible.
34
+ * Receives depth so column-scoped filtering (e.g. in ixfx-miller-list) is possible.
35
+ * Tree implementations that do not need depth can simply ignore the parameter.
36
+ */
37
+ type TreeFilterPredicate = (node: TreeNode, depth: number) => boolean;
38
+ /**
39
+ * Controls how expanding a node affects its siblings.
40
+ * - `'none'` — no constraint; any number of nodes may be expanded simultaneously
41
+ * - `'depth'` — only one sibling at the same depth may be expanded at a time (accordion)
42
+ * - `'global'` — only one node anywhere in the tree may be expanded at a time
43
+ */
44
+ type TreeExclusivity = 'none' | 'depth' | 'global';
45
+ /**
46
+ * Restricts which kinds of nodes may enter the selection.
47
+ * Applied as a guard in all interaction modes.
48
+ * - `'none'` — no node can be selected (read-only / display-only)
49
+ * - `'leaf'` — only leaf nodes are selectable
50
+ * - `'branch'` — only branch nodes (nodes with children) are selectable
51
+ * - `'all'` — both leaf and branch nodes are selectable
52
+ */
53
+ type TreeSelectionFilter = 'none' | 'leaf' | 'branch' | 'all';
54
+ /**
55
+ * Controls how pointer and keyboard gestures map to selection changes.
56
+ * - `'implicit'` — single selection that follows the click; clicking always selects + toggles expand
57
+ * - `'standard'` — single click selects+toggles; Ctrl/Cmd+click toggles item; Shift+click range-selects
58
+ * - `'manual'` — component never auto-selects; use `select()`/`deselect()`/`clearSelection()` to drive state
59
+ * - `'checked'` — checkboxes on every item; checkbox click toggles selection recursively; row click only expands/collapses
60
+ * - `'vscode'` — like `standard` for clicks; Shift+arrow uses snapshot-based toggle-range
61
+ */
62
+ type TreeInteractionMode = 'implicit' | 'standard' | 'manual' | 'checked' | 'vscode';
63
+ //#endregion
64
+ //#region src/common/tree-data-model.d.ts
65
+ type InvalidateEvent = {
66
+ type: 'invalidate';
67
+ key: string;
68
+ };
69
+ type RootEvent = {
70
+ type: 'root';
71
+ root: TreeNode;
72
+ };
73
+ type ModelEvent = InvalidateEvent | RootEvent;
74
+ type ModelSubscriber = (event: ModelEvent) => void;
75
+ type TreeDataModelOptions = {
76
+ /** The initial root node. Required. */root: TreeNode;
77
+ /**
78
+ * Optional callback for lazily loading children.
79
+ * If omitted, nodes with `children === undefined` are treated as empty branches.
80
+ */
81
+ loadChildren?: LoadChildrenCallback;
82
+ };
83
+ /**
84
+ * Manages tree data for tree-like components.
85
+ *
86
+ * Handles two concerns:
87
+ * 1. **Lazy loading** — caches children fetched via `loadChildren` and can invalidate
88
+ * specific branches so they are re-fetched on next expand.
89
+ * 2. **Structural mutations** — convenience methods to add, remove, update, or move
90
+ * nodes. Each mutation produces a new immutable root and notifies connected components.
91
+ *
92
+ * Assign an instance to a component's `model` property instead of setting `root`/`loadChildren`
93
+ * directly. The same model instance can be shared across multiple components.
94
+ *
95
+ * @example
96
+ * ```typescript
97
+ * const model = new TreeDataModel({
98
+ * root: { item: { key: 'root', label: 'Root' }, children: [] },
99
+ * loadChildren: async (node, depth, signal) => fetchChildren(node.item.key),
100
+ * });
101
+ * myTreeList.model = model;
102
+ * myMillerList.model = model;
103
+ *
104
+ * // Later — invalidate a branch to force a re-fetch on next expand:
105
+ * model.invalidate('some-key');
106
+ * ```
107
+ */
108
+ declare class TreeDataModel {
109
+ #private;
110
+ constructor(options: TreeDataModelOptions);
111
+ /** The current immutable root snapshot. */
112
+ get root(): TreeNode;
113
+ /**
114
+ * Replace the entire root with a new immutable snapshot.
115
+ * All cached children are cleared. Connected components re-render.
116
+ */
117
+ setRoot(root: TreeNode): void;
118
+ /**
119
+ * Returns children for the given node.
120
+ * If children are cached, they are returned immediately (as a resolved Promise).
121
+ * Otherwise the `loadChildren` callback is invoked and the result is cached.
122
+ * If no `loadChildren` is set and no cache entry exists, returns `[]`.
123
+ *
124
+ * Called by components internally — not typically called by application code.
125
+ */
126
+ getChildren(node: TreeNode, depth: number, signal: AbortSignal): Promise<TreeNode[]>;
127
+ /**
128
+ * Clears the cached children for the node with the given key.
129
+ * Connected components will collapse that node (if currently expanded), so that
130
+ * the next expand triggers a fresh `loadChildren` call.
131
+ */
132
+ invalidate(key: string): void;
133
+ /**
134
+ * Adds `node` as a child of the node identified by `parentKey`.
135
+ * Returns the new root (connected components are notified automatically).
136
+ */
137
+ addNode(parentKey: string, node: TreeNode): TreeNode;
138
+ /**
139
+ * Removes the node with the given key and all its descendants.
140
+ * Returns the new root (connected components are notified automatically).
141
+ */
142
+ removeNode(key: string): TreeNode;
143
+ /**
144
+ * Applies a partial update to the `item` of the node with the given key.
145
+ * Returns the new root (connected components are notified automatically).
146
+ */
147
+ updateItem(key: string, patch: Partial<TreeItem>): TreeNode;
148
+ /**
149
+ * Moves the node with the given key to become a child of `newParentKey`.
150
+ * Returns the new root (connected components are notified automatically).
151
+ */
152
+ moveNode(key: string, newParentKey: string): TreeNode;
153
+ /**
154
+ * Subscribe to model events. Returns an unsubscribe function.
155
+ * Components call this when the `model` property is set, and unsubscribe when it is unset.
156
+ *
157
+ * @internal
158
+ */
159
+ _subscribe(callback: ModelSubscriber): () => void;
160
+ }
161
+ //#endregion
162
+ //#region src/common/tree-component.d.ts
163
+ /**
164
+ * Fired when the selection set changes by any means (click, keyboard, programmatic).
165
+ * Event name: `select`
166
+ */
167
+ type TreeSelectDetail = {
168
+ /** The new selection set. */readonly selected: ReadonlySet<TreeNode>; /** The previous selection set (empty set if there was no prior selection). */
169
+ readonly previous: ReadonlySet<TreeNode>;
170
+ };
171
+ /**
172
+ * Fired when an item enters cursor focus — either the pointer hovers over it, or
173
+ * the keyboard navigation cursor moves to it.
174
+ * Event name: `tickle`
175
+ */
176
+ type TreeTickleDetail = {
177
+ readonly node: TreeNode;
178
+ readonly depth: number;
179
+ };
180
+ /**
181
+ * Fired when the user explicitly activates an item (Enter key or double-click).
182
+ * Event name: `activate`
183
+ */
184
+ type TreeActivateDetail = {
185
+ readonly node: TreeNode;
186
+ readonly depth: number;
187
+ };
188
+ /**
189
+ * Fired when the user clicks an item (raw pointer event, before any selection change).
190
+ * Event name: `item-click`
191
+ */
192
+ type TreeItemClickDetail = {
193
+ readonly node: TreeNode;
194
+ readonly depth: number;
195
+ };
196
+ /**
197
+ * Fired when a node or column is expanded.
198
+ * Event name: `expand`
199
+ */
200
+ type TreeExpandDetail = {
201
+ readonly node: TreeNode;
202
+ readonly depth: number;
203
+ };
204
+ /**
205
+ * Fired when a node or column is collapsed.
206
+ * Event name: `collapse`
207
+ */
208
+ type TreeCollapseDetail = {
209
+ readonly node: TreeNode;
210
+ readonly depth: number;
211
+ };
212
+ type TreeSelectEvent = CustomEvent<TreeSelectDetail>;
213
+ type TreeTickleEvent = CustomEvent<TreeTickleDetail>;
214
+ type TreeActivateEvent = CustomEvent<TreeActivateDetail>;
215
+ type TreeItemClickEvent = CustomEvent<TreeItemClickDetail>;
216
+ type TreeExpandEvent = CustomEvent<TreeExpandDetail>;
217
+ type TreeCollapseEvent = CustomEvent<TreeCollapseDetail>;
218
+ interface TreeComponentEventMap {
219
+ 'select': TreeSelectEvent;
220
+ 'tickle': TreeTickleEvent;
221
+ 'activate': TreeActivateEvent;
222
+ 'item-click': TreeItemClickEvent;
223
+ 'expand': TreeExpandEvent;
224
+ 'collapse': TreeCollapseEvent;
225
+ }
226
+ /**
227
+ * The common interface all tree-like components must implement.
228
+ *
229
+ * Use this interface when writing controllers or utilities that should work
230
+ * across different tree component implementations.
231
+ *
232
+ * @example Writing a controller that works with any tree component:
233
+ * ```typescript
234
+ * function attachMyController(component: TreeComponent) {
235
+ * component.addEventListener('select', e => console.log(e.detail.selected));
236
+ * }
237
+ * ```
238
+ */
239
+ interface TreeComponent extends EventTarget {
240
+ /**
241
+ * Root node of the tree.
242
+ * Set this directly for static/fully-known trees.
243
+ * Use `model` for lazy-loaded or programmatically mutated trees.
244
+ */
245
+ root: TreeNode | undefined;
246
+ /**
247
+ * Optional data model providing lazy loading, caching, and mutation helpers.
248
+ * When set, the component uses `model.getChildren()` instead of `loadChildren`,
249
+ * and re-renders when the model notifies of root or invalidation changes.
250
+ * `model` takes precedence over `loadChildren` when both are set.
251
+ */
252
+ model: TreeDataModel | undefined;
253
+ /**
254
+ * Callback for lazily loading children of a node.
255
+ * Superseded by `model` when both are set.
256
+ * Kept for backwards compatibility and simple use-cases.
257
+ */
258
+ loadChildren: LoadChildrenCallback | undefined;
259
+ /**
260
+ * The primary/most-recently selected node, or `undefined` if nothing is selected.
261
+ * In multi-selection modes (e.g. `interactionMode='standard'` with Ctrl+click) this is the most recently added node.
262
+ */
263
+ selectedNode: TreeNode | undefined;
264
+ /**
265
+ * The full selection set. Always in sync with `selectedNode`.
266
+ * Empty set when nothing is selected.
267
+ */
268
+ readonly selectedNodes: ReadonlySet<TreeNode>;
269
+ /**
270
+ * Restricts which kinds of nodes may be selected. Applied as a guard in all interaction modes.
271
+ * Reflected as the `selection-filter` attribute.
272
+ * @default 'leaf'
273
+ */
274
+ selectionFilter: TreeSelectionFilter;
275
+ /**
276
+ * Predicate used by search/filter controllers.
277
+ * When set, nodes for which the predicate returns `false` (and which have no
278
+ * matching descendants) are hidden from the rendered output.
279
+ */
280
+ filterPredicate: TreeFilterPredicate | undefined;
281
+ /**
282
+ * Controls how expanding one node affects other expanded nodes.
283
+ * Reflected as the `exclusivity` attribute.
284
+ * @default 'none'
285
+ */
286
+ exclusivity: TreeExclusivity;
287
+ /** Select `node`, replacing any current selection. Respects `selectionFilter` — no-op if the node is not selectable. */
288
+ select(node: TreeNode): void;
289
+ /** Remove `node` from the selection. */
290
+ deselect(node: TreeNode): void;
291
+ /** Clear the entire selection. */
292
+ clearSelection(): void;
293
+ /**
294
+ * Expand ancestors and select the node reached by following `keys` from the root's children.
295
+ * Returns `true` if the path was found and applied.
296
+ */
297
+ navigateTo(keys: readonly string[]): boolean;
298
+ /**
299
+ * Expand ancestors and select the first node for which `predicate` returns `true`.
300
+ * Returns `true` if a matching node was found.
301
+ */
302
+ navigateToNode(predicate: (node: TreeNode) => boolean): boolean;
303
+ /**
304
+ * Returns all nodes currently visible in the rendered output, in render order,
305
+ * with their depth (0-based, root's children are depth 0).
306
+ */
307
+ getNodes(): ReadonlyArray<{
308
+ node: TreeNode;
309
+ depth: number;
310
+ }>;
311
+ }
312
+ /**
313
+ * Extended interface used by search/filter controllers.
314
+ * Both TreeBaseElement and MillerBaseElement implement this.
315
+ *
316
+ * Replaces the previous separate `TreeSearchHost` / `MillerSearchHost` types
317
+ * in `searchable.ts`. The unified `filterPredicate` signature (with `depth`)
318
+ * allows a single search controller implementation to work with all tree components.
319
+ */
320
+ interface TreeSearchHost extends TreeComponent {
321
+ readonly shadowRoot: ShadowRoot | null;
322
+ readonly updateComplete: Promise<boolean>;
323
+ }
324
+ //#endregion
325
+ export { TreeNode as C, TreeItem as S, TreeDataModelOptions as _, TreeComponent as a, TreeFilterPredicate as b, TreeExpandEvent as c, TreeSearchHost as d, TreeSelectDetail as f, TreeDataModel as g, TreeTickleEvent as h, TreeCollapseEvent as i, TreeItemClickDetail as l, TreeTickleDetail as m, TreeActivateEvent as n, TreeComponentEventMap as o, TreeSelectEvent as p, TreeCollapseDetail as r, TreeExpandDetail as s, TreeActivateDetail as t, TreeItemClickEvent as u, LoadChildrenCallback as v, TreeSelectionFilter as w, TreeInteractionMode as x, TreeExclusivity as y };
326
+ //# sourceMappingURL=tree-component-CQpoPo4s.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-component-CQpoPo4s.d.ts","names":[],"sources":["../src/common/types.ts","../src/common/tree-data-model.ts","../src/common/tree-component.ts"],"mappings":"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"}
@@ -0,0 +1,190 @@
1
+ //#region src/common/tree-data-model.ts
2
+ function findNode(root, key) {
3
+ if (root.item.key === key) return root;
4
+ if (!root.children) return void 0;
5
+ for (const child of root.children) {
6
+ const found = findNode(child, key);
7
+ if (found) return found;
8
+ }
9
+ }
10
+ /** Return a new root with the node at `key` replaced by `replacer(node)`. */
11
+ function mapNode(root, key, replacer) {
12
+ if (root.item.key === key) return replacer(root);
13
+ if (!root.children) return root;
14
+ return {
15
+ item: root.item,
16
+ children: root.children.map((c) => mapNode(c, key, replacer))
17
+ };
18
+ }
19
+ /** Return a new root with `newChild` appended to the children of the node at `parentKey`. */
20
+ function addChildTo(root, parentKey, newChild) {
21
+ return mapNode(root, parentKey, (parent) => ({
22
+ item: parent.item,
23
+ children: [...parent.children ?? [], newChild]
24
+ }));
25
+ }
26
+ /** Return a new root with the node at `key` removed (along with all its descendants). */
27
+ function removeNodeFrom(root, key) {
28
+ if (!root.children) return root;
29
+ return {
30
+ item: root.item,
31
+ children: root.children.filter((c) => c.item.key !== key).map((c) => removeNodeFrom(c, key))
32
+ };
33
+ }
34
+ /** Return a new root with the node at `key` moved to become a child of `newParentKey`. */
35
+ function moveNodeTo(root, key, newParentKey) {
36
+ const target = findNode(root, key);
37
+ if (!target) return root;
38
+ return addChildTo(removeNodeFrom(root, key), newParentKey, target);
39
+ }
40
+ /**
41
+ * Manages tree data for tree-like components.
42
+ *
43
+ * Handles two concerns:
44
+ * 1. **Lazy loading** — caches children fetched via `loadChildren` and can invalidate
45
+ * specific branches so they are re-fetched on next expand.
46
+ * 2. **Structural mutations** — convenience methods to add, remove, update, or move
47
+ * nodes. Each mutation produces a new immutable root and notifies connected components.
48
+ *
49
+ * Assign an instance to a component's `model` property instead of setting `root`/`loadChildren`
50
+ * directly. The same model instance can be shared across multiple components.
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * const model = new TreeDataModel({
55
+ * root: { item: { key: 'root', label: 'Root' }, children: [] },
56
+ * loadChildren: async (node, depth, signal) => fetchChildren(node.item.key),
57
+ * });
58
+ * myTreeList.model = model;
59
+ * myMillerList.model = model;
60
+ *
61
+ * // Later — invalidate a branch to force a re-fetch on next expand:
62
+ * model.invalidate('some-key');
63
+ * ```
64
+ */
65
+ var TreeDataModel = class {
66
+ #root;
67
+ #loadChildren;
68
+ #cache = /* @__PURE__ */ new Map();
69
+ #subscribers = /* @__PURE__ */ new Set();
70
+ constructor(options) {
71
+ this.#root = options.root;
72
+ this.#loadChildren = options.loadChildren;
73
+ }
74
+ /** The current immutable root snapshot. */
75
+ get root() {
76
+ return this.#root;
77
+ }
78
+ /**
79
+ * Replace the entire root with a new immutable snapshot.
80
+ * All cached children are cleared. Connected components re-render.
81
+ */
82
+ setRoot(root) {
83
+ this.#root = root;
84
+ this.#cache.clear();
85
+ this.#notify({
86
+ type: "root",
87
+ root
88
+ });
89
+ }
90
+ /**
91
+ * Returns children for the given node.
92
+ * If children are cached, they are returned immediately (as a resolved Promise).
93
+ * Otherwise the `loadChildren` callback is invoked and the result is cached.
94
+ * If no `loadChildren` is set and no cache entry exists, returns `[]`.
95
+ *
96
+ * Called by components internally — not typically called by application code.
97
+ */
98
+ async getChildren(node, depth, signal) {
99
+ const key = node.item.key;
100
+ if (this.#cache.has(key)) return this.#cache.get(key);
101
+ if (!this.#loadChildren) return [];
102
+ const result = await this.#loadChildren(node, depth, signal);
103
+ if (!signal.aborted) this.#cache.set(key, result);
104
+ return result;
105
+ }
106
+ /**
107
+ * Clears the cached children for the node with the given key.
108
+ * Connected components will collapse that node (if currently expanded), so that
109
+ * the next expand triggers a fresh `loadChildren` call.
110
+ */
111
+ invalidate(key) {
112
+ this.#cache.delete(key);
113
+ this.#notify({
114
+ type: "invalidate",
115
+ key
116
+ });
117
+ }
118
+ /**
119
+ * Adds `node` as a child of the node identified by `parentKey`.
120
+ * Returns the new root (connected components are notified automatically).
121
+ */
122
+ addNode(parentKey, node) {
123
+ this.#root = addChildTo(this.#root, parentKey, node);
124
+ this.#notify({
125
+ type: "root",
126
+ root: this.#root
127
+ });
128
+ return this.#root;
129
+ }
130
+ /**
131
+ * Removes the node with the given key and all its descendants.
132
+ * Returns the new root (connected components are notified automatically).
133
+ */
134
+ removeNode(key) {
135
+ this.#cache.delete(key);
136
+ this.#root = removeNodeFrom(this.#root, key);
137
+ this.#notify({
138
+ type: "root",
139
+ root: this.#root
140
+ });
141
+ return this.#root;
142
+ }
143
+ /**
144
+ * Applies a partial update to the `item` of the node with the given key.
145
+ * Returns the new root (connected components are notified automatically).
146
+ */
147
+ updateItem(key, patch) {
148
+ this.#root = mapNode(this.#root, key, (n) => ({
149
+ item: {
150
+ ...n.item,
151
+ ...patch
152
+ },
153
+ children: n.children
154
+ }));
155
+ this.#notify({
156
+ type: "root",
157
+ root: this.#root
158
+ });
159
+ return this.#root;
160
+ }
161
+ /**
162
+ * Moves the node with the given key to become a child of `newParentKey`.
163
+ * Returns the new root (connected components are notified automatically).
164
+ */
165
+ moveNode(key, newParentKey) {
166
+ this.#root = moveNodeTo(this.#root, key, newParentKey);
167
+ this.#notify({
168
+ type: "root",
169
+ root: this.#root
170
+ });
171
+ return this.#root;
172
+ }
173
+ /**
174
+ * Subscribe to model events. Returns an unsubscribe function.
175
+ * Components call this when the `model` property is set, and unsubscribe when it is unset.
176
+ *
177
+ * @internal
178
+ */
179
+ _subscribe(callback) {
180
+ this.#subscribers.add(callback);
181
+ return () => this.#subscribers.delete(callback);
182
+ }
183
+ #notify(event) {
184
+ for (const sub of this.#subscribers) sub(event);
185
+ }
186
+ };
187
+ //#endregion
188
+ export { TreeDataModel as t };
189
+
190
+ //# sourceMappingURL=tree-data-model-DGvRVOFY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-data-model-DGvRVOFY.js","names":["#root","#loadChildren","#cache","#notify","#subscribers"],"sources":["../src/common/tree-data-model.ts"],"sourcesContent":["import type { LoadChildrenCallback, TreeItem, TreeNode } from './types.js';\n\n// ---------------------------------------------------------------------------\n// Subscription event types (internal — not part of the public API)\n// ---------------------------------------------------------------------------\n\ntype InvalidateEvent = { type: 'invalidate'; key: string };\ntype RootEvent = { type: 'root'; root: TreeNode };\ntype ModelEvent = InvalidateEvent | RootEvent;\n\ntype ModelSubscriber = (event: ModelEvent) => void;\n\n// ---------------------------------------------------------------------------\n// Pure tree-mutation helpers (functional, produce new roots)\n// ---------------------------------------------------------------------------\n\nfunction cloneNode(node: TreeNode): TreeNode {\n if (node.children === undefined) return { item: { ...node.item } };\n return { item: { ...node.item }, children: node.children.map(cloneNode) };\n}\n\nfunction findNode(root: TreeNode, key: string): TreeNode | undefined {\n if (root.item.key === key) return root;\n if (!root.children) return undefined;\n for (const child of root.children) {\n const found = findNode(child, key);\n if (found) return found;\n }\n return undefined;\n}\n\n/** Return a new root with the node at `key` replaced by `replacer(node)`. */\nfunction mapNode(root: TreeNode, key: string, replacer: (n: TreeNode) => TreeNode): TreeNode {\n if (root.item.key === key) return replacer(root);\n if (!root.children) return root;\n return { item: root.item, children: root.children.map(c => mapNode(c, key, replacer)) };\n}\n\n/** Return a new root with `newChild` appended to the children of the node at `parentKey`. */\nfunction addChildTo(root: TreeNode, parentKey: string, newChild: TreeNode): TreeNode {\n return mapNode(root, parentKey, parent => ({\n item: parent.item,\n children: [...(parent.children ?? []), newChild],\n }));\n}\n\n/** Return a new root with the node at `key` removed (along with all its descendants). */\nfunction removeNodeFrom(root: TreeNode, key: string): TreeNode {\n if (!root.children) return root;\n return {\n item: root.item,\n children: root.children\n .filter(c => c.item.key !== key)\n .map(c => removeNodeFrom(c, key)),\n };\n}\n\n/** Return a new root with the node at `key` moved to become a child of `newParentKey`. */\nfunction moveNodeTo(root: TreeNode, key: string, newParentKey: string): TreeNode {\n const target = findNode(root, key);\n if (!target) return root;\n const withoutTarget = removeNodeFrom(root, key);\n return addChildTo(withoutTarget, newParentKey, target);\n}\n\n// ---------------------------------------------------------------------------\n// TreeDataModelOptions\n// ---------------------------------------------------------------------------\n\nexport type TreeDataModelOptions = {\n /** The initial root node. Required. */\n root: TreeNode;\n /**\n * Optional callback for lazily loading children.\n * If omitted, nodes with `children === undefined` are treated as empty branches.\n */\n loadChildren?: LoadChildrenCallback;\n};\n\n// ---------------------------------------------------------------------------\n// TreeDataModel\n// ---------------------------------------------------------------------------\n\n/**\n * Manages tree data for tree-like components.\n *\n * Handles two concerns:\n * 1. **Lazy loading** — caches children fetched via `loadChildren` and can invalidate\n * specific branches so they are re-fetched on next expand.\n * 2. **Structural mutations** — convenience methods to add, remove, update, or move\n * nodes. Each mutation produces a new immutable root and notifies connected components.\n *\n * Assign an instance to a component's `model` property instead of setting `root`/`loadChildren`\n * directly. The same model instance can be shared across multiple components.\n *\n * @example\n * ```typescript\n * const model = new TreeDataModel({\n * root: { item: { key: 'root', label: 'Root' }, children: [] },\n * loadChildren: async (node, depth, signal) => fetchChildren(node.item.key),\n * });\n * myTreeList.model = model;\n * myMillerList.model = model;\n *\n * // Later — invalidate a branch to force a re-fetch on next expand:\n * model.invalidate('some-key');\n * ```\n */\nexport class TreeDataModel {\n #root: TreeNode;\n #loadChildren: LoadChildrenCallback | undefined;\n #cache = new Map<string, TreeNode[]>();\n #subscribers = new Set<ModelSubscriber>();\n\n constructor(options: TreeDataModelOptions) {\n this.#root = options.root;\n this.#loadChildren = options.loadChildren;\n }\n\n // ---------------------------------------------------------------------------\n // Root\n // ---------------------------------------------------------------------------\n\n /** The current immutable root snapshot. */\n get root(): TreeNode {\n return this.#root;\n }\n\n /**\n * Replace the entire root with a new immutable snapshot.\n * All cached children are cleared. Connected components re-render.\n */\n setRoot(root: TreeNode): void {\n this.#root = root;\n this.#cache.clear();\n this.#notify({ type: 'root', root });\n }\n\n // ---------------------------------------------------------------------------\n // Child loading\n // ---------------------------------------------------------------------------\n\n /**\n * Returns children for the given node.\n * If children are cached, they are returned immediately (as a resolved Promise).\n * Otherwise the `loadChildren` callback is invoked and the result is cached.\n * If no `loadChildren` is set and no cache entry exists, returns `[]`.\n *\n * Called by components internally — not typically called by application code.\n */\n async getChildren(node: TreeNode, depth: number, signal: AbortSignal): Promise<TreeNode[]> {\n const key = node.item.key;\n if (this.#cache.has(key)) {\n return this.#cache.get(key)!;\n }\n if (!this.#loadChildren) {\n return [];\n }\n const result = await this.#loadChildren(node, depth, signal);\n if (!signal.aborted) {\n this.#cache.set(key, result);\n }\n return result;\n }\n\n // ---------------------------------------------------------------------------\n // Cache invalidation\n // ---------------------------------------------------------------------------\n\n /**\n * Clears the cached children for the node with the given key.\n * Connected components will collapse that node (if currently expanded), so that\n * the next expand triggers a fresh `loadChildren` call.\n */\n invalidate(key: string): void {\n this.#cache.delete(key);\n this.#notify({ type: 'invalidate', key });\n }\n\n // ---------------------------------------------------------------------------\n // Convenience mutators\n // ---------------------------------------------------------------------------\n\n /**\n * Adds `node` as a child of the node identified by `parentKey`.\n * Returns the new root (connected components are notified automatically).\n */\n addNode(parentKey: string, node: TreeNode): TreeNode {\n this.#root = addChildTo(this.#root, parentKey, node);\n this.#notify({ type: 'root', root: this.#root });\n return this.#root;\n }\n\n /**\n * Removes the node with the given key and all its descendants.\n * Returns the new root (connected components are notified automatically).\n */\n removeNode(key: string): TreeNode {\n this.#cache.delete(key);\n this.#root = removeNodeFrom(this.#root, key);\n this.#notify({ type: 'root', root: this.#root });\n return this.#root;\n }\n\n /**\n * Applies a partial update to the `item` of the node with the given key.\n * Returns the new root (connected components are notified automatically).\n */\n updateItem(key: string, patch: Partial<TreeItem>): TreeNode {\n this.#root = mapNode(this.#root, key, n => ({\n item: { ...n.item, ...patch },\n children: n.children,\n }));\n this.#notify({ type: 'root', root: this.#root });\n return this.#root;\n }\n\n /**\n * Moves the node with the given key to become a child of `newParentKey`.\n * Returns the new root (connected components are notified automatically).\n */\n moveNode(key: string, newParentKey: string): TreeNode {\n this.#root = moveNodeTo(this.#root, key, newParentKey);\n this.#notify({ type: 'root', root: this.#root });\n return this.#root;\n }\n\n // ---------------------------------------------------------------------------\n // Internal subscription (used by components — not part of the public API)\n // ---------------------------------------------------------------------------\n\n /**\n * Subscribe to model events. Returns an unsubscribe function.\n * Components call this when the `model` property is set, and unsubscribe when it is unset.\n *\n * @internal\n */\n _subscribe(callback: ModelSubscriber): () => void {\n this.#subscribers.add(callback);\n return () => this.#subscribers.delete(callback);\n }\n\n #notify(event: ModelEvent): void {\n for (const sub of this.#subscribers) {\n sub(event);\n }\n }\n}\n"],"mappings":"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"}
package/dist/tree.d.ts ADDED
@@ -0,0 +1,99 @@
1
+ import { n as TraversableTree, t as TickledController } from "./tickled-controller-Cq1Va0rR.js";
2
+ import { C as TreeNode, S as TreeItem, _ as TreeDataModelOptions, a as TreeComponent, b as TreeFilterPredicate, c as TreeExpandEvent, d as TreeSearchHost, f as TreeSelectDetail, g as TreeDataModel, h as TreeTickleEvent, i as TreeCollapseEvent, l as TreeItemClickDetail, m as TreeTickleDetail, n as TreeActivateEvent, o as TreeComponentEventMap, p as TreeSelectEvent, r as TreeCollapseDetail, s as TreeExpandDetail, t as TreeActivateDetail, u as TreeItemClickEvent, v as LoadChildrenCallback, w as TreeSelectionFilter, x as TreeInteractionMode, y as TreeExclusivity } from "./tree-component-CQpoPo4s.js";
3
+ import { t as TreeConfig } from "./types-BKaqnpwx.js";
4
+ import { LitElement, PropertyValues, TemplateResult, nothing } from "lit";
5
+
6
+ //#region src/tree/tree-base.d.ts
7
+ declare class TreeBaseElement extends LitElement implements TreeComponent, TreeSearchHost {
8
+ #private;
9
+ root: TreeNode | undefined;
10
+ model: TreeDataModel | undefined;
11
+ /** Callback to lazily load children for a node. Superseded by `model` when both are set. */
12
+ loadChildren: LoadChildrenCallback | undefined;
13
+ exclusivity: TreeExclusivity;
14
+ selectionFilter: TreeSelectionFilter;
15
+ /** Controls how pointer/keyboard gestures map to selection changes. Default: `'standard'`. */
16
+ interactionMode: TreeInteractionMode;
17
+ selectedNode: TreeNode | undefined;
18
+ protected _selectedNodes: Set<TreeNode>;
19
+ get selectedNodes(): ReadonlySet<TreeNode>;
20
+ filterPredicate: TreeFilterPredicate | undefined;
21
+ disableKeyboardNavigation: boolean;
22
+ protected _expandedKeys: Set<string>;
23
+ protected tickled: TickledController<string>;
24
+ protected _focusedDepth: number;
25
+ updated(changedProps: PropertyValues): void;
26
+ connectedCallback(): void;
27
+ disconnectedCallback(): void;
28
+ getConfig(): TreeConfig;
29
+ setConfig(config: Partial<TreeConfig>): void;
30
+ select(node: TreeNode): void;
31
+ deselect(node: TreeNode): void;
32
+ clearSelection(): void;
33
+ navigateTo(keys: readonly string[]): boolean;
34
+ navigateToNode(predicate: (node: TreeNode) => boolean): boolean;
35
+ getNodes(): ReadonlyArray<{
36
+ node: TreeNode;
37
+ depth: number;
38
+ }>;
39
+ protected renderNodeContent(node: TreeNode, _depth: number): TemplateResult | typeof nothing;
40
+ protected _handleItemClick(node: TreeNode, depth: number, event?: MouseEvent): void;
41
+ protected _handleCheckboxClick(event: MouseEvent, node: TreeNode, _depth: number): void;
42
+ protected _isSelected(node: TreeNode): boolean;
43
+ protected _isFocused(node: TreeNode): boolean;
44
+ protected _isExpanded(node: TreeNode): boolean;
45
+ protected get _pendingNode(): TreeNode | undefined;
46
+ protected renderLoadingIndicator(): TemplateResult | typeof nothing;
47
+ protected render(): TemplateResult<1>;
48
+ protected _renderNode(node: TreeNode, depth: number): TemplateResult;
49
+ static styles: import("lit").CSSResult[];
50
+ }
51
+ declare global {
52
+ interface HTMLElementTagNameMap {
53
+ 'ixfx-tree-base': TreeBaseElement;
54
+ }
55
+ }
56
+ interface TreeBaseElementEventMap extends TreeComponentEventMap {
57
+ 'item-click': TreeItemClickEvent;
58
+ 'expand': TreeExpandEvent;
59
+ 'collapse': TreeCollapseEvent;
60
+ 'select': TreeSelectEvent;
61
+ 'tickle': TreeTickleEvent;
62
+ 'activate': TreeActivateEvent;
63
+ }
64
+ interface TreeBaseElement {
65
+ addEventListener: (<K extends keyof TreeBaseElementEventMap>(type: K, listener: (this: TreeBaseElement, event: TreeBaseElementEventMap[K]) => void, options?: boolean | AddEventListenerOptions) => void) & ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);
66
+ removeEventListener: (<K extends keyof TreeBaseElementEventMap>(type: K, listener: (this: TreeBaseElement, event: TreeBaseElementEventMap[K]) => void, options?: boolean | EventListenerOptions) => void) & ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions) => void);
67
+ }
68
+ //#endregion
69
+ //#region src/tree/tree-controller.d.ts
70
+ type TreeControllerOptions<T> = {
71
+ valueToItem: (value: T, node: TraversableTree<T>) => TreeItem;
72
+ };
73
+ declare class TreeController<T> {
74
+ #private;
75
+ constructor(root: TraversableTree<T>, element: TreeBaseElement, options: TreeControllerOptions<T>);
76
+ connect(): void;
77
+ disconnect(): void;
78
+ navigateToValue(predicate: (value: T) => boolean): boolean;
79
+ }
80
+ //#endregion
81
+ //#region src/tree/tree-list.d.ts
82
+ declare class TreeListElement extends TreeBaseElement {
83
+ #private;
84
+ protected render(): TemplateResult<1>;
85
+ protected renderNodeContent(node: TreeNode, depth: number): TemplateResult;
86
+ protected _renderNode(node: TreeNode, depth: number): TemplateResult;
87
+ static styles: import("lit").CSSResult[];
88
+ }
89
+ declare global {
90
+ interface HTMLElementTagNameMap {
91
+ 'ixfx-tree-list': TreeListElement;
92
+ }
93
+ }
94
+ interface TreeListElement {
95
+ addEventListener: (<K extends keyof TreeBaseElementEventMap>(type: K, listener: (this: TreeListElement, event: TreeBaseElementEventMap[K]) => void, options?: boolean | AddEventListenerOptions) => void) & ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);
96
+ }
97
+ //#endregion
98
+ export { type LoadChildrenCallback, type TreeActivateDetail, type TreeActivateEvent, TreeBaseElement, TreeBaseElementEventMap, type TreeCollapseDetail, type TreeCollapseEvent, type TreeComponentEventMap, TreeConfig, TreeController, TreeControllerOptions, TreeDataModel, type TreeDataModelOptions, type TreeExclusivity, type TreeExpandDetail, type TreeExpandEvent, type TreeFilterPredicate, type TreeItem, type TreeItemClickDetail, type TreeItemClickEvent, TreeListElement, type TreeNode, type TreeSelectDetail, type TreeSelectEvent, type TreeSelectionFilter, type TreeTickleDetail, type TreeTickleEvent };
99
+ //# sourceMappingURL=tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.d.ts","names":[],"sources":["../src/tree/tree-base.ts","../src/tree/tree-controller.ts","../src/tree/tree-list.ts"],"mappings":"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"}