@ixfx/components 0.2.4 → 0.2.5

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 (717) hide show
  1. package/bundle/index.d.ts +130 -130
  2. package/bundle/index.d.ts.map +1 -1
  3. package/bundle/index.js +2196 -2196
  4. package/bundle/index.js.map +1 -1
  5. package/dist/ac-text.d.ts +97 -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-DgKUzE5o.js} +49 -3
  10. package/dist/button-DgKUzE5o.js.map +1 -0
  11. package/dist/button.d.ts +21 -0
  12. package/dist/button.d.ts.map +1 -0
  13. package/dist/button.js +3 -0
  14. package/dist/checkbox.d.ts +27 -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-Bw-AZoWx.js +922 -0
  22. package/dist/colour-picker-Bw-AZoWx.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 +92 -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 +23 -18
  30. package/dist/data-display.d.ts.map +1 -1
  31. package/dist/data-display.js +82 -108
  32. package/dist/data-display.js.map +1 -1
  33. package/dist/decorate-BZbkqIhA.js +9 -0
  34. package/dist/defaults-FEZaGiYZ.js +38 -0
  35. package/dist/defaults-FEZaGiYZ.js.map +1 -0
  36. package/dist/dist-By5URG0Y.js +1290 -0
  37. package/dist/dist-By5URG0Y.js.map +1 -0
  38. package/dist/dist-D7kJgnSE.js +1039 -0
  39. package/dist/dist-D7kJgnSE.js.map +1 -0
  40. package/dist/editable-label.d.ts +71 -0
  41. package/dist/editable-label.d.ts.map +1 -0
  42. package/dist/editable-label.js +279 -0
  43. package/dist/editable-label.js.map +1 -0
  44. package/dist/hex-editor-Gib1Grg2.d.ts +131 -0
  45. package/dist/hex-editor-Gib1Grg2.d.ts.map +1 -0
  46. package/dist/hex-editor-Wd6ZtZA2.js +1147 -0
  47. package/dist/hex-editor-Wd6ZtZA2.js.map +1 -0
  48. package/dist/hex.d.ts +2 -0
  49. package/dist/hex.js +2 -0
  50. package/dist/highlight-CAjwQ4GE.js +50 -0
  51. package/dist/highlight-CAjwQ4GE.js.map +1 -0
  52. package/dist/icon-BR5aTIiP.js +100 -0
  53. package/dist/icon-BR5aTIiP.js.map +1 -0
  54. package/dist/icon-DQKdfR7U.d.ts +36 -0
  55. package/dist/icon-DQKdfR7U.d.ts.map +1 -0
  56. package/dist/icons.d.ts +3 -0
  57. package/dist/icons.js +9 -0
  58. package/dist/icons.js.map +1 -0
  59. package/dist/incr-search-BjCNClnC.js +311 -0
  60. package/dist/incr-search-BjCNClnC.js.map +1 -0
  61. package/dist/incr-search.d.ts +2 -0
  62. package/dist/incr-search.js +3 -0
  63. package/dist/index-B1hNR7Z9.d.ts +36 -0
  64. package/dist/index-B1hNR7Z9.d.ts.map +1 -0
  65. package/dist/index-C5dK8RZa.d.ts +23 -0
  66. package/dist/index-C5dK8RZa.d.ts.map +1 -0
  67. package/dist/index-C9iBN908.d.ts +160 -0
  68. package/dist/index-C9iBN908.d.ts.map +1 -0
  69. package/dist/index-CPVcTTXo.d.ts +396 -0
  70. package/dist/index-CPVcTTXo.d.ts.map +1 -0
  71. package/dist/index-CQxanqXF.d.ts +183 -0
  72. package/dist/index-CQxanqXF.d.ts.map +1 -0
  73. package/dist/index-CpbBI3n7.d.ts +1239 -0
  74. package/dist/index-CpbBI3n7.d.ts.map +1 -0
  75. package/dist/index.d.ts +422 -53
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +5729 -54
  78. package/dist/index.js.map +1 -1
  79. package/dist/interaction-CQDQJf2Q.js +1 -0
  80. package/dist/keyboard-De_vOHLg.js +20 -0
  81. package/dist/keyboard-De_vOHLg.js.map +1 -0
  82. package/dist/labelled-input-base-DS6-6C0r.js +155 -0
  83. package/dist/labelled-input-base-DS6-6C0r.js.map +1 -0
  84. package/dist/labelled-input-base-DnRh4reU.d.ts +43 -0
  85. package/dist/labelled-input-base-DnRh4reU.d.ts.map +1 -0
  86. package/dist/labelled-radial-input.d.ts +34 -0
  87. package/dist/labelled-radial-input.d.ts.map +1 -0
  88. package/dist/labelled-radial-input.js +188 -0
  89. package/dist/labelled-radial-input.js.map +1 -0
  90. package/dist/labelled-range-input.d.ts +2 -0
  91. package/dist/{labelled-range-input/labelled-range-input.js → labelled-range-input.js} +40 -45
  92. package/dist/labelled-range-input.js.map +1 -0
  93. package/dist/led.d.ts +21 -16
  94. package/dist/led.d.ts.map +1 -1
  95. package/dist/led.js +70 -78
  96. package/dist/led.js.map +1 -1
  97. package/dist/menu-BV6UFx_z.js +813 -0
  98. package/dist/menu-BV6UFx_z.js.map +1 -0
  99. package/dist/menu-item-Cikacp4F.d.ts +128 -0
  100. package/dist/menu-item-Cikacp4F.d.ts.map +1 -0
  101. package/dist/menu-item-DEzL_Yjk.js +766 -0
  102. package/dist/menu-item-DEzL_Yjk.js.map +1 -0
  103. package/dist/menu.d.ts +3 -0
  104. package/dist/menu.js +3 -0
  105. package/dist/miller.d.ts +324 -0
  106. package/dist/miller.d.ts.map +1 -0
  107. package/dist/miller.js +1343 -0
  108. package/dist/miller.js.map +1 -0
  109. package/dist/narrowed-text.d.ts +72 -0
  110. package/dist/narrowed-text.d.ts.map +1 -0
  111. package/dist/narrowed-text.js +571 -0
  112. package/dist/narrowed-text.js.map +1 -0
  113. package/dist/panel.d.ts +43 -0
  114. package/dist/panel.d.ts.map +1 -0
  115. package/dist/{panel/panel.js → panel.js} +82 -91
  116. package/dist/panel.js.map +1 -0
  117. package/dist/plots.d.ts +2 -0
  118. package/dist/plots.js +2 -0
  119. package/dist/polar-pad.d.ts +67 -0
  120. package/dist/polar-pad.d.ts.map +1 -0
  121. package/dist/polar-pad.js +537 -0
  122. package/dist/polar-pad.js.map +1 -0
  123. package/dist/popup-Ddx9LCzY.js +24 -0
  124. package/dist/popup-Ddx9LCzY.js.map +1 -0
  125. package/dist/prominence-CreDBdCs.js +98 -0
  126. package/dist/prominence-CreDBdCs.js.map +1 -0
  127. package/dist/radial-input-CNJ8asY2.js +849 -0
  128. package/dist/radial-input-CNJ8asY2.js.map +1 -0
  129. package/dist/radial-input-xSTd4kEz.d.ts +70 -0
  130. package/dist/radial-input-xSTd4kEz.d.ts.map +1 -0
  131. package/dist/radial-input.d.ts +2 -0
  132. package/dist/radial-input.js +2 -0
  133. package/dist/range-input.d.ts +43 -0
  134. package/dist/range-input.d.ts.map +1 -0
  135. package/dist/{range-input/range-input.js → range-input.js} +155 -168
  136. package/dist/range-input.js.map +1 -0
  137. package/dist/range.d.ts +28 -0
  138. package/dist/range.d.ts.map +1 -0
  139. package/dist/range.js +136 -0
  140. package/dist/range.js.map +1 -0
  141. package/dist/registry-CZEB1YI9.js +21 -0
  142. package/dist/registry-CZEB1YI9.js.map +1 -0
  143. package/dist/selecthorizontal.d.ts +13 -8
  144. package/dist/selecthorizontal.d.ts.map +1 -1
  145. package/dist/selecthorizontal.js +19 -23
  146. package/dist/selecthorizontal.js.map +1 -1
  147. package/dist/snap-container.d.ts +50 -0
  148. package/dist/snap-container.d.ts.map +1 -0
  149. package/dist/snap-container.js +297 -0
  150. package/dist/snap-container.js.map +1 -0
  151. package/dist/{split-layout/split-layout.d.ts → split-layout.d.ts} +30 -25
  152. package/dist/split-layout.d.ts.map +1 -0
  153. package/dist/split-layout.js +545 -0
  154. package/dist/split-layout.js.map +1 -0
  155. package/dist/style.css +133 -0
  156. package/dist/swipe.d.ts +48 -0
  157. package/dist/swipe.d.ts.map +1 -0
  158. package/dist/swipe.js +204 -0
  159. package/dist/swipe.js.map +1 -0
  160. package/dist/tab-list-CFF7uSYH.d.ts +66 -0
  161. package/dist/tab-list-CFF7uSYH.d.ts.map +1 -0
  162. package/dist/tabs.d.ts +2 -0
  163. package/dist/tabs.js +203 -0
  164. package/dist/tabs.js.map +1 -0
  165. package/dist/tickled-controller-Cq1Va0rR.d.ts +218 -0
  166. package/dist/tickled-controller-Cq1Va0rR.d.ts.map +1 -0
  167. package/dist/tickled-styles-Bg3QbcrD.js +327 -0
  168. package/dist/tickled-styles-Bg3QbcrD.js.map +1 -0
  169. package/dist/timeline-DBWJsSjd.js +1748 -0
  170. package/dist/timeline-DBWJsSjd.js.map +1 -0
  171. package/dist/timeline.d.ts +2 -0
  172. package/dist/timeline.js +2 -0
  173. package/dist/{styles/tooltip.js → tooltip-DMxmBNky.js} +6 -2
  174. package/dist/tooltip-DMxmBNky.js.map +1 -0
  175. package/dist/tooltip-kfUBWYVB.d.ts +26 -0
  176. package/dist/tooltip-kfUBWYVB.d.ts.map +1 -0
  177. package/dist/tree-component-CQpoPo4s.d.ts +326 -0
  178. package/dist/tree-component-CQpoPo4s.d.ts.map +1 -0
  179. package/dist/tree-data-model-DGvRVOFY.js +190 -0
  180. package/dist/tree-data-model-DGvRVOFY.js.map +1 -0
  181. package/dist/tree.d.ts +100 -0
  182. package/dist/tree.d.ts.map +1 -0
  183. package/dist/tree.js +1144 -0
  184. package/dist/tree.js.map +1 -0
  185. package/dist/types-BKaqnpwx.d.ts +8 -0
  186. package/dist/types-BKaqnpwx.d.ts.map +1 -0
  187. package/dist/xy-axis-BANbgrI5.js +6243 -0
  188. package/dist/xy-axis-BANbgrI5.js.map +1 -0
  189. package/dist/xy-axis-CIFok7MF.d.ts +141 -0
  190. package/dist/xy-axis-CIFok7MF.d.ts.map +1 -0
  191. package/dist/xy-pad.d.ts +74 -110
  192. package/dist/xy-pad.d.ts.map +1 -1
  193. package/dist/xy-pad.js +300 -320
  194. package/dist/xy-pad.js.map +1 -1
  195. package/package.json +10 -18
  196. package/dist/ac-text/ac-text.d.ts +0 -99
  197. package/dist/ac-text/ac-text.d.ts.map +0 -1
  198. package/dist/ac-text/ac-text.js +0 -571
  199. package/dist/ac-text/ac-text.js.map +0 -1
  200. package/dist/button/button-styles.d.ts +0 -2
  201. package/dist/button/button-styles.d.ts.map +0 -1
  202. package/dist/button/button-styles.js.map +0 -1
  203. package/dist/button/button.d.ts +0 -16
  204. package/dist/button/button.d.ts.map +0 -1
  205. package/dist/button/button.js +0 -58
  206. package/dist/button/button.js.map +0 -1
  207. package/dist/button/radio-group.d.ts +0 -44
  208. package/dist/button/radio-group.d.ts.map +0 -1
  209. package/dist/button/radio-group.js +0 -385
  210. package/dist/button/radio-group.js.map +0 -1
  211. package/dist/button/split-button.d.ts +0 -59
  212. package/dist/button/split-button.d.ts.map +0 -1
  213. package/dist/button/split-button.js +0 -480
  214. package/dist/button/split-button.js.map +0 -1
  215. package/dist/button/types.d.ts +0 -18
  216. package/dist/button/types.d.ts.map +0 -1
  217. package/dist/button/types.js +0 -2
  218. package/dist/button/types.js.map +0 -1
  219. package/dist/colour-picker/colour-picker-popup.d.ts +0 -102
  220. package/dist/colour-picker/colour-picker-popup.d.ts.map +0 -1
  221. package/dist/colour-picker/colour-picker-popup.js +0 -399
  222. package/dist/colour-picker/colour-picker-popup.js.map +0 -1
  223. package/dist/colour-picker/colour-picker.d.ts +0 -100
  224. package/dist/colour-picker/colour-picker.d.ts.map +0 -1
  225. package/dist/colour-picker/colour-picker.js +0 -567
  226. package/dist/colour-picker/colour-picker.js.map +0 -1
  227. package/dist/colour-picker/index.d.ts +0 -4
  228. package/dist/colour-picker/index.d.ts.map +0 -1
  229. package/dist/colour-picker/index.js +0 -3
  230. package/dist/colour-picker/index.js.map +0 -1
  231. package/dist/colour-picker/styles.d.ts +0 -2
  232. package/dist/colour-picker/styles.d.ts.map +0 -1
  233. package/dist/colour-picker/styles.js +0 -139
  234. package/dist/colour-picker/styles.js.map +0 -1
  235. package/dist/colour-picker/types.d.ts +0 -33
  236. package/dist/colour-picker/types.d.ts.map +0 -1
  237. package/dist/colour-picker/types.js +0 -2
  238. package/dist/colour-picker/types.js.map +0 -1
  239. package/dist/colour-picker/util.d.ts +0 -15
  240. package/dist/colour-picker/util.d.ts.map +0 -1
  241. package/dist/colour-picker/util.js +0 -35
  242. package/dist/colour-picker/util.js.map +0 -1
  243. package/dist/common/searchable.d.ts +0 -9
  244. package/dist/common/searchable.d.ts.map +0 -1
  245. package/dist/common/searchable.js +0 -9
  246. package/dist/common/searchable.js.map +0 -1
  247. package/dist/common/tree-component.d.ts +0 -172
  248. package/dist/common/tree-component.d.ts.map +0 -1
  249. package/dist/common/tree-component.js +0 -8
  250. package/dist/common/tree-component.js.map +0 -1
  251. package/dist/common/tree-data-model.d.ts +0 -100
  252. package/dist/common/tree-data-model.d.ts.map +0 -1
  253. package/dist/common/tree-data-model.js +0 -207
  254. package/dist/common/tree-data-model.js.map +0 -1
  255. package/dist/common/tree-item.d.ts +0 -7
  256. package/dist/common/tree-item.d.ts.map +0 -1
  257. package/dist/common/tree-item.js +0 -2
  258. package/dist/common/tree-item.js.map +0 -1
  259. package/dist/common/types.d.ts +0 -69
  260. package/dist/common/types.d.ts.map +0 -1
  261. package/dist/common/types.js +0 -6
  262. package/dist/common/types.js.map +0 -1
  263. package/dist/crumbs/crumb-navigation.d.ts +0 -96
  264. package/dist/crumbs/crumb-navigation.d.ts.map +0 -1
  265. package/dist/crumbs/crumb-navigation.js +0 -911
  266. package/dist/crumbs/crumb-navigation.js.map +0 -1
  267. package/dist/crumbs/crumb-path-controller.d.ts +0 -18
  268. package/dist/crumbs/crumb-path-controller.d.ts.map +0 -1
  269. package/dist/crumbs/crumb-path-controller.js +0 -81
  270. package/dist/crumbs/crumb-path-controller.js.map +0 -1
  271. package/dist/crumbs/crumb-path.d.ts +0 -65
  272. package/dist/crumbs/crumb-path.d.ts.map +0 -1
  273. package/dist/crumbs/crumb-path.js +0 -691
  274. package/dist/crumbs/crumb-path.js.map +0 -1
  275. package/dist/editable-label/editable-label.d.ts +0 -98
  276. package/dist/editable-label/editable-label.d.ts.map +0 -1
  277. package/dist/editable-label/editable-label.js +0 -348
  278. package/dist/editable-label/editable-label.js.map +0 -1
  279. package/dist/editable-label/editable-number.d.ts +0 -96
  280. package/dist/editable-label/editable-number.d.ts.map +0 -1
  281. package/dist/editable-label/editable-number.js +0 -702
  282. package/dist/editable-label/editable-number.js.map +0 -1
  283. package/dist/hex/colour.d.ts +0 -6
  284. package/dist/hex/colour.d.ts.map +0 -1
  285. package/dist/hex/colour.js +0 -33
  286. package/dist/hex/colour.js.map +0 -1
  287. package/dist/hex/data.d.ts +0 -18
  288. package/dist/hex/data.d.ts.map +0 -1
  289. package/dist/hex/data.js +0 -61
  290. package/dist/hex/data.js.map +0 -1
  291. package/dist/hex/diff.d.ts +0 -14
  292. package/dist/hex/diff.d.ts.map +0 -1
  293. package/dist/hex/diff.js +0 -31
  294. package/dist/hex/diff.js.map +0 -1
  295. package/dist/hex/hex-editor.d.ts +0 -101
  296. package/dist/hex/hex-editor.d.ts.map +0 -1
  297. package/dist/hex/hex-editor.js +0 -894
  298. package/dist/hex/hex-editor.js.map +0 -1
  299. package/dist/hex/selection.d.ts +0 -11
  300. package/dist/hex/selection.d.ts.map +0 -1
  301. package/dist/hex/selection.js +0 -218
  302. package/dist/hex/selection.js.map +0 -1
  303. package/dist/hex/types.d.ts +0 -34
  304. package/dist/hex/types.d.ts.map +0 -1
  305. package/dist/hex/types.js +0 -4
  306. package/dist/hex/types.js.map +0 -1
  307. package/dist/icons/defaults.d.ts +0 -27
  308. package/dist/icons/defaults.d.ts.map +0 -1
  309. package/dist/icons/defaults.js +0 -34
  310. package/dist/icons/defaults.js.map +0 -1
  311. package/dist/icons/icon.d.ts +0 -31
  312. package/dist/icons/icon.d.ts.map +0 -1
  313. package/dist/icons/icon.js +0 -125
  314. package/dist/icons/icon.js.map +0 -1
  315. package/dist/icons/index.d.ts +0 -5
  316. package/dist/icons/index.d.ts.map +0 -1
  317. package/dist/icons/index.js +0 -6
  318. package/dist/icons/index.js.map +0 -1
  319. package/dist/icons/registry.d.ts +0 -11
  320. package/dist/icons/registry.d.ts.map +0 -1
  321. package/dist/icons/registry.js +0 -17
  322. package/dist/icons/registry.js.map +0 -1
  323. package/dist/incr-search/ac-adapter.d.ts +0 -18
  324. package/dist/incr-search/ac-adapter.d.ts.map +0 -1
  325. package/dist/incr-search/ac-adapter.js +0 -29
  326. package/dist/incr-search/ac-adapter.js.map +0 -1
  327. package/dist/incr-search/controller-miller.d.ts +0 -9
  328. package/dist/incr-search/controller-miller.d.ts.map +0 -1
  329. package/dist/incr-search/controller-miller.js +0 -8
  330. package/dist/incr-search/controller-miller.js.map +0 -1
  331. package/dist/incr-search/controller-tree.d.ts +0 -55
  332. package/dist/incr-search/controller-tree.d.ts.map +0 -1
  333. package/dist/incr-search/controller-tree.js +0 -106
  334. package/dist/incr-search/controller-tree.js.map +0 -1
  335. package/dist/incr-search/element-search.d.ts +0 -15
  336. package/dist/incr-search/element-search.d.ts.map +0 -1
  337. package/dist/incr-search/element-search.js +0 -82
  338. package/dist/incr-search/element-search.js.map +0 -1
  339. package/dist/incr-search/fuzzy.d.ts +0 -3
  340. package/dist/incr-search/fuzzy.d.ts.map +0 -1
  341. package/dist/incr-search/fuzzy.js +0 -37
  342. package/dist/incr-search/fuzzy.js.map +0 -1
  343. package/dist/incr-search/highlight.d.ts +0 -5
  344. package/dist/incr-search/highlight.d.ts.map +0 -1
  345. package/dist/incr-search/highlight.js +0 -54
  346. package/dist/incr-search/highlight.js.map +0 -1
  347. package/dist/incr-search/incr-search.d.ts +0 -3
  348. package/dist/incr-search/incr-search.d.ts.map +0 -1
  349. package/dist/incr-search/incr-search.js +0 -73
  350. package/dist/incr-search/incr-search.js.map +0 -1
  351. package/dist/incr-search/index.d.ts +0 -12
  352. package/dist/incr-search/index.d.ts.map +0 -1
  353. package/dist/incr-search/index.js +0 -8
  354. package/dist/incr-search/index.js.map +0 -1
  355. package/dist/incr-search/types.d.ts +0 -59
  356. package/dist/incr-search/types.d.ts.map +0 -1
  357. package/dist/incr-search/types.js +0 -2
  358. package/dist/incr-search/types.js.map +0 -1
  359. package/dist/interaction/index.d.ts +0 -10
  360. package/dist/interaction/index.d.ts.map +0 -1
  361. package/dist/interaction/index.js +0 -10
  362. package/dist/interaction/index.js.map +0 -1
  363. package/dist/interaction/tickled-controller.d.ts +0 -186
  364. package/dist/interaction/tickled-controller.d.ts.map +0 -1
  365. package/dist/interaction/tickled-controller.js +0 -256
  366. package/dist/interaction/tickled-controller.js.map +0 -1
  367. package/dist/interaction/tickled-styles.d.ts +0 -53
  368. package/dist/interaction/tickled-styles.d.ts.map +0 -1
  369. package/dist/interaction/tickled-styles.js +0 -106
  370. package/dist/interaction/tickled-styles.js.map +0 -1
  371. package/dist/interaction/tree-keyboard-controller.d.ts +0 -30
  372. package/dist/interaction/tree-keyboard-controller.d.ts.map +0 -1
  373. package/dist/interaction/tree-keyboard-controller.js +0 -105
  374. package/dist/interaction/tree-keyboard-controller.js.map +0 -1
  375. package/dist/keyboard.d.ts +0 -16
  376. package/dist/keyboard.d.ts.map +0 -1
  377. package/dist/keyboard.js +0 -22
  378. package/dist/keyboard.js.map +0 -1
  379. package/dist/labelled-radial-input/index.d.ts +0 -2
  380. package/dist/labelled-radial-input/index.d.ts.map +0 -1
  381. package/dist/labelled-radial-input/index.js +0 -2
  382. package/dist/labelled-radial-input/index.js.map +0 -1
  383. package/dist/labelled-radial-input/labelled-radial-input.d.ts +0 -77
  384. package/dist/labelled-radial-input/labelled-radial-input.d.ts.map +0 -1
  385. package/dist/labelled-radial-input/labelled-radial-input.js +0 -214
  386. package/dist/labelled-radial-input/labelled-radial-input.js.map +0 -1
  387. package/dist/labelled-range-input/index.d.ts +0 -2
  388. package/dist/labelled-range-input/index.d.ts.map +0 -1
  389. package/dist/labelled-range-input/index.js +0 -2
  390. package/dist/labelled-range-input/index.js.map +0 -1
  391. package/dist/labelled-range-input/labelled-range-input.d.ts +0 -80
  392. package/dist/labelled-range-input/labelled-range-input.d.ts.map +0 -1
  393. package/dist/labelled-range-input/labelled-range-input.js.map +0 -1
  394. package/dist/menu/index.d.ts +0 -14
  395. package/dist/menu/index.d.ts.map +0 -1
  396. package/dist/menu/index.js +0 -13
  397. package/dist/menu/index.js.map +0 -1
  398. package/dist/menu/menu-bar.d.ts +0 -23
  399. package/dist/menu/menu-bar.d.ts.map +0 -1
  400. package/dist/menu/menu-bar.js +0 -110
  401. package/dist/menu/menu-bar.js.map +0 -1
  402. package/dist/menu/menu-check-item.d.ts +0 -33
  403. package/dist/menu/menu-check-item.d.ts.map +0 -1
  404. package/dist/menu/menu-check-item.js +0 -175
  405. package/dist/menu/menu-check-item.js.map +0 -1
  406. package/dist/menu/menu-command-controller.d.ts +0 -14
  407. package/dist/menu/menu-command-controller.d.ts.map +0 -1
  408. package/dist/menu/menu-command-controller.js +0 -22
  409. package/dist/menu/menu-command-controller.js.map +0 -1
  410. package/dist/menu/menu-container.d.ts +0 -36
  411. package/dist/menu/menu-container.d.ts.map +0 -1
  412. package/dist/menu/menu-container.js +0 -351
  413. package/dist/menu/menu-container.js.map +0 -1
  414. package/dist/menu/menu-from-tree.d.ts +0 -17
  415. package/dist/menu/menu-from-tree.d.ts.map +0 -1
  416. package/dist/menu/menu-from-tree.js +0 -103
  417. package/dist/menu/menu-from-tree.js.map +0 -1
  418. package/dist/menu/menu-header.d.ts +0 -12
  419. package/dist/menu/menu-header.d.ts.map +0 -1
  420. package/dist/menu/menu-header.js +0 -36
  421. package/dist/menu/menu-header.js.map +0 -1
  422. package/dist/menu/menu-item.d.ts +0 -41
  423. package/dist/menu/menu-item.d.ts.map +0 -1
  424. package/dist/menu/menu-item.js +0 -240
  425. package/dist/menu/menu-item.js.map +0 -1
  426. package/dist/menu/menu-radio-group.d.ts +0 -24
  427. package/dist/menu/menu-radio-group.d.ts.map +0 -1
  428. package/dist/menu/menu-radio-group.js +0 -71
  429. package/dist/menu/menu-radio-group.js.map +0 -1
  430. package/dist/menu/menu-radio-item.d.ts +0 -22
  431. package/dist/menu/menu-radio-item.d.ts.map +0 -1
  432. package/dist/menu/menu-radio-item.js +0 -116
  433. package/dist/menu/menu-radio-item.js.map +0 -1
  434. package/dist/menu/menu-separator.d.ts +0 -11
  435. package/dist/menu/menu-separator.d.ts.map +0 -1
  436. package/dist/menu/menu-separator.js +0 -29
  437. package/dist/menu/menu-separator.js.map +0 -1
  438. package/dist/menu/menu-sub-trigger.d.ts +0 -46
  439. package/dist/menu/menu-sub-trigger.d.ts.map +0 -1
  440. package/dist/menu/menu-sub-trigger.js +0 -302
  441. package/dist/menu/menu-sub-trigger.js.map +0 -1
  442. package/dist/menu/menu-trigger.d.ts +0 -57
  443. package/dist/menu/menu-trigger.d.ts.map +0 -1
  444. package/dist/menu/menu-trigger.js +0 -351
  445. package/dist/menu/menu-trigger.js.map +0 -1
  446. package/dist/miller/index.d.ts +0 -5
  447. package/dist/miller/index.d.ts.map +0 -1
  448. package/dist/miller/index.js +0 -5
  449. package/dist/miller/index.js.map +0 -1
  450. package/dist/miller/miller-base.d.ts +0 -184
  451. package/dist/miller/miller-base.d.ts.map +0 -1
  452. package/dist/miller/miller-base.js +0 -1249
  453. package/dist/miller/miller-base.js.map +0 -1
  454. package/dist/miller/miller-list.d.ts +0 -30
  455. package/dist/miller/miller-list.d.ts.map +0 -1
  456. package/dist/miller/miller-list.js +0 -192
  457. package/dist/miller/miller-list.js.map +0 -1
  458. package/dist/miller/miller-tree-controller.d.ts +0 -58
  459. package/dist/miller/miller-tree-controller.d.ts.map +0 -1
  460. package/dist/miller/miller-tree-controller.js +0 -134
  461. package/dist/miller/miller-tree-controller.js.map +0 -1
  462. package/dist/miller/types.d.ts +0 -63
  463. package/dist/miller/types.d.ts.map +0 -1
  464. package/dist/miller/types.js +0 -6
  465. package/dist/miller/types.js.map +0 -1
  466. package/dist/mixins/labelled-input-base.d.ts +0 -38
  467. package/dist/mixins/labelled-input-base.d.ts.map +0 -1
  468. package/dist/mixins/labelled-input-base.js +0 -171
  469. package/dist/mixins/labelled-input-base.js.map +0 -1
  470. package/dist/mixins/labelled-input-util.d.ts +0 -3
  471. package/dist/mixins/labelled-input-util.d.ts.map +0 -1
  472. package/dist/mixins/labelled-input-util.js +0 -10
  473. package/dist/mixins/labelled-input-util.js.map +0 -1
  474. package/dist/my-element.d.ts +0 -14
  475. package/dist/my-element.d.ts.map +0 -1
  476. package/dist/my-element.js +0 -44
  477. package/dist/my-element.js.map +0 -1
  478. package/dist/narrowed-text/index.d.ts +0 -3
  479. package/dist/narrowed-text/index.d.ts.map +0 -1
  480. package/dist/narrowed-text/index.js +0 -3
  481. package/dist/narrowed-text/index.js.map +0 -1
  482. package/dist/narrowed-text/narrowed-text.d.ts +0 -48
  483. package/dist/narrowed-text/narrowed-text.d.ts.map +0 -1
  484. package/dist/narrowed-text/narrowed-text.js +0 -668
  485. package/dist/narrowed-text/narrowed-text.js.map +0 -1
  486. package/dist/narrowed-text/types.d.ts +0 -20
  487. package/dist/narrowed-text/types.d.ts.map +0 -1
  488. package/dist/narrowed-text/types.js +0 -2
  489. package/dist/narrowed-text/types.js.map +0 -1
  490. package/dist/panel/panel-group.d.ts +0 -23
  491. package/dist/panel/panel-group.d.ts.map +0 -1
  492. package/dist/panel/panel-group.js +0 -109
  493. package/dist/panel/panel-group.js.map +0 -1
  494. package/dist/panel/panel.d.ts +0 -39
  495. package/dist/panel/panel.d.ts.map +0 -1
  496. package/dist/panel/panel.js.map +0 -1
  497. package/dist/plots/colour-map.d.ts +0 -31
  498. package/dist/plots/colour-map.d.ts.map +0 -1
  499. package/dist/plots/colour-map.js +0 -133
  500. package/dist/plots/colour-map.js.map +0 -1
  501. package/dist/plots/data.d.ts +0 -27
  502. package/dist/plots/data.d.ts.map +0 -1
  503. package/dist/plots/data.js +0 -47
  504. package/dist/plots/data.js.map +0 -1
  505. package/dist/plots/single-axis.d.ts +0 -41
  506. package/dist/plots/single-axis.d.ts.map +0 -1
  507. package/dist/plots/single-axis.js +0 -428
  508. package/dist/plots/single-axis.js.map +0 -1
  509. package/dist/plots/svg-utils.d.ts +0 -12
  510. package/dist/plots/svg-utils.d.ts.map +0 -1
  511. package/dist/plots/svg-utils.js +0 -64
  512. package/dist/plots/svg-utils.js.map +0 -1
  513. package/dist/plots/xy-axis.d.ts +0 -42
  514. package/dist/plots/xy-axis.d.ts.map +0 -1
  515. package/dist/plots/xy-axis.js +0 -307
  516. package/dist/plots/xy-axis.js.map +0 -1
  517. package/dist/polar-pad/polar-pad.d.ts +0 -132
  518. package/dist/polar-pad/polar-pad.d.ts.map +0 -1
  519. package/dist/polar-pad/polar-pad.js +0 -598
  520. package/dist/polar-pad/polar-pad.js.map +0 -1
  521. package/dist/radial-input/radial-input.d.ts +0 -45
  522. package/dist/radial-input/radial-input.d.ts.map +0 -1
  523. package/dist/radial-input/radial-input.js +0 -692
  524. package/dist/radial-input/radial-input.js.map +0 -1
  525. package/dist/radial-input/svg-utils.d.ts +0 -147
  526. package/dist/radial-input/svg-utils.d.ts.map +0 -1
  527. package/dist/radial-input/svg-utils.js +0 -346
  528. package/dist/radial-input/svg-utils.js.map +0 -1
  529. package/dist/radial-input/types.d.ts +0 -25
  530. package/dist/radial-input/types.d.ts.map +0 -1
  531. package/dist/radial-input/types.js +0 -5
  532. package/dist/radial-input/types.js.map +0 -1
  533. package/dist/range/range-multi.d.ts +0 -62
  534. package/dist/range/range-multi.d.ts.map +0 -1
  535. package/dist/range/range-multi.js +0 -652
  536. package/dist/range/range-multi.js.map +0 -1
  537. package/dist/range/range.d.ts +0 -23
  538. package/dist/range/range.d.ts.map +0 -1
  539. package/dist/range/range.js +0 -153
  540. package/dist/range/range.js.map +0 -1
  541. package/dist/range-input/index.d.ts +0 -2
  542. package/dist/range-input/index.d.ts.map +0 -1
  543. package/dist/range-input/index.js +0 -2
  544. package/dist/range-input/index.js.map +0 -1
  545. package/dist/range-input/range-input.d.ts +0 -92
  546. package/dist/range-input/range-input.d.ts.map +0 -1
  547. package/dist/range-input/range-input.js.map +0 -1
  548. package/dist/snap-container/snap-container.d.ts +0 -45
  549. package/dist/snap-container/snap-container.d.ts.map +0 -1
  550. package/dist/snap-container/snap-container.js +0 -352
  551. package/dist/snap-container/snap-container.js.map +0 -1
  552. package/dist/split-layout/split-layout.d.ts.map +0 -1
  553. package/dist/split-layout/split-layout.js +0 -674
  554. package/dist/split-layout/split-layout.js.map +0 -1
  555. package/dist/styles/popup.d.ts +0 -11
  556. package/dist/styles/popup.d.ts.map +0 -1
  557. package/dist/styles/popup.js +0 -20
  558. package/dist/styles/popup.js.map +0 -1
  559. package/dist/styles/prominence.d.ts +0 -58
  560. package/dist/styles/prominence.d.ts.map +0 -1
  561. package/dist/styles/prominence.js +0 -94
  562. package/dist/styles/prominence.js.map +0 -1
  563. package/dist/styles/tooltip.d.ts +0 -2
  564. package/dist/styles/tooltip.d.ts.map +0 -1
  565. package/dist/styles/tooltip.js.map +0 -1
  566. package/dist/svg-edit-label.d.ts +0 -2
  567. package/dist/svg-edit-label.d.ts.map +0 -1
  568. package/dist/svg-edit-label.js +0 -110
  569. package/dist/svg-edit-label.js.map +0 -1
  570. package/dist/swipe/index.d.ts +0 -2
  571. package/dist/swipe/index.d.ts.map +0 -1
  572. package/dist/swipe/index.js +0 -2
  573. package/dist/swipe/index.js.map +0 -1
  574. package/dist/swipe/swipe.d.ts +0 -65
  575. package/dist/swipe/swipe.d.ts.map +0 -1
  576. package/dist/swipe/swipe.js +0 -229
  577. package/dist/swipe/swipe.js.map +0 -1
  578. package/dist/tabs/tab-layout-item.d.ts +0 -10
  579. package/dist/tabs/tab-layout-item.d.ts.map +0 -1
  580. package/dist/tabs/tab-layout-item.js +0 -20
  581. package/dist/tabs/tab-layout-item.js.map +0 -1
  582. package/dist/tabs/tab-layout.d.ts +0 -10
  583. package/dist/tabs/tab-layout.d.ts.map +0 -1
  584. package/dist/tabs/tab-layout.js +0 -25
  585. package/dist/tabs/tab-layout.js.map +0 -1
  586. package/dist/tabs/tab-list-item.d.ts +0 -34
  587. package/dist/tabs/tab-list-item.d.ts.map +0 -1
  588. package/dist/tabs/tab-list-item.js +0 -195
  589. package/dist/tabs/tab-list-item.js.map +0 -1
  590. package/dist/tabs/tab-list.d.ts +0 -31
  591. package/dist/tabs/tab-list.d.ts.map +0 -1
  592. package/dist/tabs/tab-list.js +0 -257
  593. package/dist/tabs/tab-list.js.map +0 -1
  594. package/dist/tabs/tab-panel.d.ts +0 -11
  595. package/dist/tabs/tab-panel.d.ts.map +0 -1
  596. package/dist/tabs/tab-panel.js +0 -30
  597. package/dist/tabs/tab-panel.js.map +0 -1
  598. package/dist/tabs/tab-panels.d.ts +0 -30
  599. package/dist/tabs/tab-panels.d.ts.map +0 -1
  600. package/dist/tabs/tab-panels.js +0 -80
  601. package/dist/tabs/tab-panels.js.map +0 -1
  602. package/dist/timeline/index.d.ts +0 -9
  603. package/dist/timeline/index.d.ts.map +0 -1
  604. package/dist/timeline/index.js +0 -8
  605. package/dist/timeline/index.js.map +0 -1
  606. package/dist/timeline/timeline-controller.d.ts +0 -48
  607. package/dist/timeline/timeline-controller.d.ts.map +0 -1
  608. package/dist/timeline/timeline-controller.js +0 -81
  609. package/dist/timeline/timeline-controller.js.map +0 -1
  610. package/dist/timeline/timeline-draw.d.ts +0 -28
  611. package/dist/timeline/timeline-draw.d.ts.map +0 -1
  612. package/dist/timeline/timeline-draw.js +0 -330
  613. package/dist/timeline/timeline-draw.js.map +0 -1
  614. package/dist/timeline/timeline-element.d.ts +0 -140
  615. package/dist/timeline/timeline-element.d.ts.map +0 -1
  616. package/dist/timeline/timeline-element.js +0 -888
  617. package/dist/timeline/timeline-element.js.map +0 -1
  618. package/dist/timeline/timeline-interactions.d.ts +0 -40
  619. package/dist/timeline/timeline-interactions.d.ts.map +0 -1
  620. package/dist/timeline/timeline-interactions.js +0 -393
  621. package/dist/timeline/timeline-interactions.js.map +0 -1
  622. package/dist/timeline/timeline-styles.d.ts +0 -2
  623. package/dist/timeline/timeline-styles.d.ts.map +0 -1
  624. package/dist/timeline/timeline-styles.js +0 -153
  625. package/dist/timeline/timeline-styles.js.map +0 -1
  626. package/dist/timeline/timeline-track-tabs.d.ts +0 -30
  627. package/dist/timeline/timeline-track-tabs.d.ts.map +0 -1
  628. package/dist/timeline/timeline-track-tabs.js +0 -204
  629. package/dist/timeline/timeline-track-tabs.js.map +0 -1
  630. package/dist/timeline/types.d.ts +0 -144
  631. package/dist/timeline/types.d.ts.map +0 -1
  632. package/dist/timeline/types.js +0 -3
  633. package/dist/timeline/types.js.map +0 -1
  634. package/dist/tree/index.d.ts +0 -5
  635. package/dist/tree/index.d.ts.map +0 -1
  636. package/dist/tree/index.js +0 -5
  637. package/dist/tree/index.js.map +0 -1
  638. package/dist/tree/tree-base.d.ts +0 -70
  639. package/dist/tree/tree-base.d.ts.map +0 -1
  640. package/dist/tree/tree-base.js +0 -1028
  641. package/dist/tree/tree-base.js.map +0 -1
  642. package/dist/tree/tree-controller.d.ts +0 -14
  643. package/dist/tree/tree-controller.d.ts.map +0 -1
  644. package/dist/tree/tree-controller.js +0 -96
  645. package/dist/tree/tree-controller.js.map +0 -1
  646. package/dist/tree/tree-list.d.ts +0 -20
  647. package/dist/tree/tree-list.d.ts.map +0 -1
  648. package/dist/tree/tree-list.js +0 -174
  649. package/dist/tree/tree-list.js.map +0 -1
  650. package/dist/tree/types.d.ts +0 -14
  651. package/dist/tree/types.d.ts.map +0 -1
  652. package/dist/tree/types.js +0 -7
  653. package/dist/tree/types.js.map +0 -1
  654. package/dist/util/checkbox.d.ts +0 -2
  655. package/dist/util/checkbox.d.ts.map +0 -1
  656. package/dist/util/checkbox.js +0 -69
  657. package/dist/util/checkbox.js.map +0 -1
  658. package/dist/util/circle-arc.d.ts +0 -34
  659. package/dist/util/circle-arc.d.ts.map +0 -1
  660. package/dist/util/circle-arc.js +0 -85
  661. package/dist/util/circle-arc.js.map +0 -1
  662. package/dist/util/clamp.d.ts +0 -4
  663. package/dist/util/clamp.d.ts.map +0 -1
  664. package/dist/util/clamp.js +0 -23
  665. package/dist/util/clamp.js.map +0 -1
  666. package/dist/util/compare.d.ts +0 -53
  667. package/dist/util/compare.d.ts.map +0 -1
  668. package/dist/util/compare.js +0 -91
  669. package/dist/util/compare.js.map +0 -1
  670. package/dist/util/content-editable.d.ts +0 -2
  671. package/dist/util/content-editable.d.ts.map +0 -1
  672. package/dist/util/content-editable.js +0 -13
  673. package/dist/util/content-editable.js.map +0 -1
  674. package/dist/util/coordinates.d.ts +0 -3
  675. package/dist/util/coordinates.d.ts.map +0 -1
  676. package/dist/util/coordinates.js +0 -11
  677. package/dist/util/coordinates.js.map +0 -1
  678. package/dist/util/drag.d.ts +0 -16
  679. package/dist/util/drag.d.ts.map +0 -1
  680. package/dist/util/drag.js +0 -20
  681. package/dist/util/drag.js.map +0 -1
  682. package/dist/util/is-numeric.d.ts +0 -2
  683. package/dist/util/is-numeric.d.ts.map +0 -1
  684. package/dist/util/is-numeric.js +0 -9
  685. package/dist/util/is-numeric.js.map +0 -1
  686. package/dist/util/key-value.d.ts +0 -5
  687. package/dist/util/key-value.d.ts.map +0 -1
  688. package/dist/util/key-value.js +0 -29
  689. package/dist/util/key-value.js.map +0 -1
  690. package/dist/util/near.d.ts +0 -2
  691. package/dist/util/near.d.ts.map +0 -1
  692. package/dist/util/near.js +0 -6
  693. package/dist/util/near.js.map +0 -1
  694. package/dist/util/primitive-types.d.ts +0 -6
  695. package/dist/util/primitive-types.d.ts.map +0 -1
  696. package/dist/util/primitive-types.js +0 -2
  697. package/dist/util/primitive-types.js.map +0 -1
  698. package/dist/util/svg-editable-text.d.ts +0 -26
  699. package/dist/util/svg-editable-text.d.ts.map +0 -1
  700. package/dist/util/svg-editable-text.js +0 -119
  701. package/dist/util/svg-editable-text.js.map +0 -1
  702. package/dist/util/time.d.ts +0 -2
  703. package/dist/util/time.d.ts.map +0 -1
  704. package/dist/util/time.js +0 -2
  705. package/dist/util/time.js.map +0 -1
  706. package/dist/util/tooltip-controller.d.ts +0 -10
  707. package/dist/util/tooltip-controller.d.ts.map +0 -1
  708. package/dist/util/tooltip-controller.js +0 -237
  709. package/dist/util/tooltip-controller.js.map +0 -1
  710. package/dist/util/tooltip.d.ts +0 -21
  711. package/dist/util/tooltip.d.ts.map +0 -1
  712. package/dist/util/tooltip.js +0 -98
  713. package/dist/util/tooltip.js.map +0 -1
  714. package/dist/util/value-drag.d.ts +0 -33
  715. package/dist/util/value-drag.d.ts.map +0 -1
  716. package/dist/util/value-drag.js +0 -154
  717. package/dist/util/value-drag.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crumbs.js","names":["#getTickledItems","#onTickled","#onMenuKeyNav","#currentOpenTrigger","#menuOpenedByKeyboard","#findPath","#hasChildOptions","#shiftFocusToNarrowedText","#handleOpenCaretMenu","#handleEnter","#shiftFocusToPath","#pendingNode","#propagateInputModeToMenu","#setSelected","#modelUnsubscribe","#runLayoutUpdate","#previousSelectionKey","#scrollToValue","#pendingController","#abortPending","#invokeLoadChildren","#onChildClick","#findNodePath","#onLabelClick","#onSegmentMenuCommand","#renderChildOptions","#onFocus","#onBlur","#onKeyDown","#onHostClick","#onMenuTriggerClose","#onMenuCommand","#getChildOptionsWidth","#onNarrowedTextChange","#onNarrowedTextBlur","#onNarrowedTextShiftTab"],"sources":["../src/crumbs/crumb-navigation.ts"],"sourcesContent":["import type { PropertyValues } from 'lit';\nimport type { LoadChildrenCallback, TreeNode } from '../tree/types.js';\nimport type {\n TreeComponent,\n TreeSelectDetail,\n TreeTickleDetail,\n} from '../common/tree-component.js';\nimport type {\n TreeExclusivity,\n TreeFilterPredicate,\n TreeSelectionFilter,\n} from '../common/types.js';\nimport { TreeDataModel } from '../common/tree-data-model.js';\nimport { TickledController, tickledStyles, tickledItemStyles } from '../interaction/index.js';\nimport { css, html, LitElement, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport type { MenuTrigger } from '../menu/menu-trigger.js';\nimport '../menu/menu-trigger.js';\nimport '../menu/menu-container.js';\nimport '../menu/menu-item.js';\nimport '../narrowed-text/index.js';\n\n/** @deprecated Use TreeSelectDetail from src/common/tree-component.ts */\nexport type CrumbNavigationChangeDetail = {\n readonly selected: TreeNode;\n readonly previous: TreeNode | undefined;\n};\n\nexport type CrumbNavigationChangeEvent = CustomEvent<CrumbNavigationChangeDetail>;\n\nexport type CrumbNavigationItemClickDetail = { node: TreeNode; depth: number };\nexport type CrumbNavigationItemClickEvent = CustomEvent<CrumbNavigationItemClickDetail>;\n\nexport type CrumbNavigationExpandDetail = { node: TreeNode; depth: number };\nexport type CrumbNavigationExpandEvent = CustomEvent<CrumbNavigationExpandDetail>;\n\n/**\n * Breadcrumb navigation with lazy-loading support.\n *\n * Uses the same `TreeNode` / `TreeItem` data model as `ixfx-tree-list`,\n * so the two components can be swapped with minimal code changes.\n *\n * Events\n * - `navigate`: fired when user clicks a breadcrumb label. detail: `{ node: TreeNode }`\n * - `change`: fired when selected node changes. detail: `{ selected: TreeNode, previous: TreeNode | undefined }`\n * - `expand`: fired when user clicks a caret whose node has no children yet.\n * detail: `{ node: TreeNode, depth: number, signal: AbortSignal }`\n * Populate `node.children` then call `requestUpdate()` on the element.\n *\n * CSS variables\n * --text-highlight: var(--accent); // highlight on mouse hover\n * --separator: var(--surface-muted-text); // text colour of separator character\n * --padding-s: var(--space-xs); // padding between items\n */\n@customElement(`ixfx-crumb-navigation`)\nexport class CrumbNavigationElement extends LitElement implements TreeComponent {\n @property({ type: Object })\n root: TreeNode | undefined;\n\n @property({ attribute: false })\n model: TreeDataModel | undefined;\n\n @property({ type: Object })\n selectedNode: TreeNode | undefined;\n\n @state()\n private _selectedNodes = new Set<TreeNode>();\n\n get selectedNodes(): ReadonlySet<TreeNode> {\n return this._selectedNodes;\n }\n\n /** Callback to lazily load children for a node. When set, replaces event-based lazy loading. */\n @property({ attribute: false })\n loadChildren: LoadChildrenCallback | undefined;\n\n @property({ attribute: false })\n filterPredicate: TreeFilterPredicate | undefined;\n\n @property({ reflect: true, attribute: 'exclusivity' })\n exclusivity: TreeExclusivity = 'none';\n\n @property({ reflect: true, attribute: 'selection-filter' })\n selectionFilter: TreeSelectionFilter = 'leaf';\n\n @state()\n private _openIdx = -1;\n\n @state()\n private _isFocused = false;\n\n @state()\n private _menuOpen = false;\n\n @state()\n private _focusOnNarrowedText = false;\n\n @property({ reflect: true, attribute: 'input-mode' })\n inputMode: string = '';\n\n #pendingNode: TreeNode | undefined;\n #pendingController: AbortController | undefined;\n #modelUnsubscribe: (() => void) | undefined;\n\n #previousSelectionKey = ``;\n #menuOpenedByKeyboard = false;\n #currentOpenTrigger: MenuTrigger | null = null;\n\n private tickled = new TickledController<number>(this, {\n getItems: () => this.#getTickledItems(),\n onTickle: (index) => {\n if (index !== undefined) {\n this.#onTickled(index);\n }\n },\n });\n\n #getTickledItems() {\n const r = this.root;\n const sel = this.selectedNode;\n if (!r || !sel) return [];\n\n const pathNodes = this.#findPath(r, sel) ?? [r];\n const items: Array<{ id: number; enabled: boolean }> = [];\n\n pathNodes.forEach((_node, i) => {\n items.push({ id: i, enabled: true });\n });\n\n if (this.#hasChildOptions()) {\n items.push({ id: pathNodes.length, enabled: true });\n }\n\n return items;\n }\n\n #onTickled(index: number) {\n const r = this.root;\n const sel = this.selectedNode;\n if (!r || !sel) return;\n\n const pathNodes = this.#findPath(r, sel) ?? [r];\n const hasChildOptions = this.#hasChildOptions();\n\n if (index < pathNodes.length) {\n this._openIdx = index;\n } else if (hasChildOptions && index === pathNodes.length) {\n this._openIdx = pathNodes.length - 1;\n }\n }\n\n #hasChildOptions(): boolean {\n const s = this.selectedNode;\n if (s === undefined) return false;\n\n const isPending = this.#pendingNode === s;\n const children = s.children ?? [];\n\n return children.length > 0 || isPending;\n }\n\n #onFocus = (): void => {\n this._isFocused = true;\n };\n\n #onBlur = (): void => {\n this._isFocused = false;\n };\n\n #onHostClick = (): void => {\n this.shadowRoot?.querySelector<HTMLElement>(`.host-container`)?.focus();\n };\n\n #handleOpenCaretMenu() {\n const currentTickled = this.tickled.tickledId;\n if (currentTickled === undefined) return;\n\n const r = this.root;\n const sel = this.selectedNode;\n if (!r || !sel) return;\n\n const pathNodes = this.#findPath(r, sel) ?? [r];\n\n // For non-last segments: open the inline caret menu for that segment\n if (currentTickled < pathNodes.length - 1) {\n const segments = this.shadowRoot?.querySelectorAll<HTMLElement>(`.crumb-segment`);\n const trigger = segments?.[currentTickled]?.querySelector<MenuTrigger>(`.caret ixfx-menu-trigger`);\n if (trigger) {\n this.#menuOpenedByKeyboard = true;\n this.#currentOpenTrigger = trigger;\n document.addEventListener(`keydown`, this.#onMenuKeyNav, { capture: true });\n trigger.openMenu();\n this.#propagateInputModeToMenu();\n return;\n }\n }\n\n // Last segment or the child-options separator: open the child-options menu\n if (this.#hasChildOptions()) {\n const trigger = this.shadowRoot?.querySelector<MenuTrigger>(`#child-options-trigger`);\n if (trigger) {\n this.#menuOpenedByKeyboard = true;\n this.#currentOpenTrigger = trigger;\n document.addEventListener(`keydown`, this.#onMenuKeyNav, { capture: true });\n trigger.openMenu();\n this.#propagateInputModeToMenu();\n }\n }\n }\n\n #propagateInputModeToMenu(): void {\n const inputMode = this.tickled.inputMode;\n requestAnimationFrame(() => {\n const container = this.#currentOpenTrigger?.querySelector(`ixfx-menu-container`);\n if (container) {\n container.setAttribute(`data-input-mode`, inputMode);\n }\n });\n }\n\n#onMenuTriggerClose = (): void => {\n document.removeEventListener(`keydown`, this.#onMenuKeyNav, { capture: true });\n this.#currentOpenTrigger = null;\n this.#menuOpenedByKeyboard = false;\n requestAnimationFrame(() => {\n this.shadowRoot?.querySelector<HTMLElement>(`.host-container`)?.focus();\n });\n };\n\n #onMenuKeyNav = (e: KeyboardEvent): void => {\n // Only handle ArrowLeft/ArrowRight - close menu and navigate to previous/next breadcrumb segment\n // ArrowDown/ArrowUp should pass through to let the menu handle them\n const container = this.#currentOpenTrigger?.querySelector(`ixfx-menu-container`);\n if (!container || !this.#currentOpenTrigger?.isOpen) return;\n\n switch (e.key) {\n case `ArrowLeft`:\n case `ArrowRight`: {\n e.preventDefault();\n e.stopPropagation();\n this.#currentOpenTrigger.closeMenu();\n const r = this.root;\n const sel = this.selectedNode;\n if (!r || !sel) break;\n const pathNodes = this.#findPath(r, sel) ?? [r];\n const totalItems = pathNodes.length + (this.#hasChildOptions() ? 1 : 0);\n const currentTickled = this.tickled.tickledId ?? -1;\n if (e.key === `ArrowLeft`) {\n if (currentTickled > 0) {\n this.tickled.handleKeyboardNavigation(`previous`);\n }\n } else {\n if (currentTickled < totalItems - 1) {\n this.tickled.handleKeyboardNavigation(`next`);\n }\n }\n break;\n }\n }\n };\n\n #onKeyDown = (e: KeyboardEvent): void => {\n const r = this.root;\n const sel = this.selectedNode;\n if (!r || !sel) return;\n\n const pathNodes = this.#findPath(r, sel) ?? [r];\n const totalItems = pathNodes.length + (this.#hasChildOptions() ? 1 : 0);\n const currentTickled = this.tickled.tickledId ?? -1;\n\n switch (e.key) {\n case `ArrowRight`: {\n e.preventDefault();\n if (currentTickled < totalItems - 1) {\n this.tickled.handleKeyboardNavigation(`next`);\n } else if (currentTickled === totalItems - 1) {\n this.#shiftFocusToNarrowedText();\n }\n break;\n }\n case `ArrowLeft`: {\n e.preventDefault();\n if (currentTickled > 0) {\n this.tickled.handleKeyboardNavigation(`previous`);\n }\n break;\n }\n case `ArrowDown`:\n case `ArrowUp`: {\n if (this.tickled.tickledId !== undefined) {\n e.preventDefault();\n if (this.#currentOpenTrigger?.isOpen) {\n // Menu is already open - dispatch ArrowDown to the popover element for it to handle\n const container = this.#currentOpenTrigger.querySelector(`ixfx-menu-container`);\n const popover = container?.shadowRoot?.querySelector(`.popover`);\n if (popover) {\n popover.dispatchEvent(new KeyboardEvent(`keydown`, { key: e.key, bubbles: true }));\n }\n } else {\n this.#handleOpenCaretMenu();\n }\n }\n break;\n }\n case `Enter`: {\n e.preventDefault();\n this.#handleEnter();\n break;\n }\n case `Escape`: {\n e.preventDefault();\n this._menuOpen = false;\n this.tickled.clearTickled();\n this.blur();\n break;\n }\n case `Tab`: {\n if (e.shiftKey) {\n e.preventDefault();\n this.#shiftFocusToPath();\n } else if (currentTickled === totalItems - 1) {\n e.preventDefault();\n this._menuOpen = false;\n this._focusOnNarrowedText = true;\n const narrowedText = this.shadowRoot?.querySelector(`ixfx-narrowed-text`);\n if (narrowedText) {\n narrowedText.focus();\n }\n }\n break;\n }\n }\n };\n\n #handleEnter() {\n const r = this.root;\n const sel = this.selectedNode;\n if (!r || !sel) return;\n\n const pathNodes = this.#findPath(r, sel) ?? [r];\n const hasChildOptions = this.#hasChildOptions();\n const currentTickled = this.tickled.tickledId ?? -1;\n\n if (currentTickled < pathNodes.length) {\n const node = pathNodes[currentTickled];\n this.#setSelected(node);\n this._menuOpen = false;\n this.dispatchEvent(new CustomEvent<CrumbNavigationItemClickDetail>(`item-click`, {\n detail: { node, depth: currentTickled },\n bubbles: true,\n composed: true,\n }));\n } else if (hasChildOptions && currentTickled === pathNodes.length) {\n this._menuOpen = true;\n this.#menuOpenedByKeyboard = true;\n const trigger = this.shadowRoot?.querySelector<MenuTrigger>(`#child-options-trigger`);\n if (trigger) {\n this.#currentOpenTrigger = trigger;\n document.addEventListener(`keydown`, this.#onMenuKeyNav, { capture: true });\n trigger.openMenu();\n this.#propagateInputModeToMenu();\n }\n }\n }\n\n #shiftFocusToNarrowedText() {\n const narrowedText = this.shadowRoot?.querySelector(`ixfx-narrowed-text`);\n if (narrowedText) {\n this._focusOnNarrowedText = true;\n narrowedText.focus();\n }\n }\n\n #shiftFocusToPath() {\n this._focusOnNarrowedText = false;\n const hostContainer = this.shadowRoot?.querySelector<HTMLElement>(`.host-container`);\n if (hostContainer) {\n hostContainer.focus();\n }\n }\n\n #onNarrowedTextBlur = (): void => {\n this._focusOnNarrowedText = false;\n this.#shiftFocusToPath();\n }\n\n #onNarrowedTextShiftTab = (): void => {\n this._focusOnNarrowedText = false;\n this.#shiftFocusToPath();\n }\n\n // --- TreeComponent methods ---\n\n select(node: TreeNode): void {\n this.#setSelected(node);\n }\n\n deselect(_node: TreeNode): void {\n // Crumb navigation is single-selection; deselect navigates to parent or root\n }\n\n clearSelection(): void {\n if (this.root) this.#setSelected(this.root);\n }\n\n getNodes(): ReadonlyArray<{ node: TreeNode; depth: number }> {\n if (!this.root) return [];\n const result: Array<{ node: TreeNode; depth: number }> = [];\n const visit = (node: TreeNode, depth: number) => {\n result.push({ node, depth });\n if (node.children) {\n for (const child of node.children) visit(child, depth + 1);\n }\n };\n for (const child of this.root.children ?? []) visit(child, 0);\n return result;\n }\n\n // --- Lifecycle ---\n\n override updated(changedProps: PropertyValues): void {\n if (changedProps.has(`model`)) {\n this.#modelUnsubscribe?.();\n this.#modelUnsubscribe = undefined;\n const model = this.model;\n if (model) {\n this.root = model.root;\n this.#modelUnsubscribe = model._subscribe(event => {\n if (event.type === 'root') {\n this.root = event.root;\n this.requestUpdate();\n }\n });\n }\n }\n this.#runLayoutUpdate(changedProps);\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this.#modelUnsubscribe?.();\n this.#modelUnsubscribe = undefined;\n document.removeEventListener(`keydown`, this.#onMenuKeyNav, { capture: true });\n this.#currentOpenTrigger = null;\n }\n\n #runLayoutUpdate(_changedProperties: PropertyValues): void {\n if (!this.shadowRoot)\n return;\n\n const hsiElement: HTMLElement | null = this.shadowRoot.querySelector(`.horiz-select-items`);\n if (!hsiElement)\n return;\n\n const ulElement: HTMLElement | null = hsiElement.querySelector(`ul`);\n if (!ulElement)\n return;\n\n const menuTrigger: HTMLElement | null = this.shadowRoot.querySelector(`ixfx-menu-trigger`);\n if (!menuTrigger)\n return;\n\n if (ulElement.getBoundingClientRect().width > hsiElement.getBoundingClientRect().width) {\n menuTrigger.style.display = `inline-flex`;\n } else {\n menuTrigger.style.display = `none`;\n }\n\n for (const li of ulElement.querySelectorAll(`li`)) {\n const key = li.getAttribute(`data-key`) ?? ``;\n if (key === this.#previousSelectionKey) {\n this.#scrollToValue(li);\n break;\n }\n }\n\n }\n\n #scrollToValue(li: HTMLLIElement) {\n let l = li.offsetLeft;\n\n const ul = li.parentElement;\n if (!ul)\n return;\n l -= ul.offsetLeft;\n\n const horizSelectItems = ul.parentElement;\n if (!horizSelectItems)\n return;\n horizSelectItems.scroll({ left: l, top: 0, behavior: `smooth` });\n\n const horizSelect = horizSelectItems.parentElement;\n if (!horizSelect)\n return;\n horizSelect.style.minWidth = `${li.getBoundingClientRect().width}px`;\n }\n\n #abortPending() {\n if (this.#pendingController) {\n this.#pendingController.abort();\n this.#pendingController = undefined;\n this.#pendingNode = undefined;\n }\n }\n\n #findPath(node: TreeNode, target: TreeNode, acc: TreeNode[] = []): TreeNode[] | undefined {\n const path = [...acc, node];\n if (node === target)\n return path;\n if (!node.children)\n return undefined;\n for (const child of node.children) {\n const result = this.#findPath(child, target, path);\n if (result)\n return result;\n }\n return undefined;\n }\n\n #setSelected(node: TreeNode) {\n const previous = this.selectedNode;\n if (previous) {\n this.#previousSelectionKey = previous.item?.key ?? ``;\n } else {\n this.#previousSelectionKey = ``;\n }\n const previousSet: ReadonlySet<TreeNode> = previous ? new Set([previous]) : new Set();\n this.selectedNode = node;\n this._selectedNodes = new Set([node]);\n\n this.dispatchEvent(new CustomEvent<TreeSelectDetail>(`select`, {\n detail: { selected: new Set([node]), previous: previousSet },\n bubbles: true,\n composed: true,\n }));\n }\n\n #onLabelClick(node: TreeNode, depth: number) {\n this._openIdx = -1;\n this.#setSelected(node);\n this.dispatchEvent(new CustomEvent<CrumbNavigationItemClickDetail>(`item-click`, {\n detail: { node, depth },\n bubbles: true,\n composed: true,\n }));\n }\n\n #onCaretClick(node: TreeNode, depth: number, e: MouseEvent) {\n e.preventDefault();\n e.stopPropagation();\n\n if (this._openIdx === depth) {\n this._openIdx = -1;\n return;\n }\n this._openIdx = depth;\n\n if (node.children === undefined && this.#pendingNode !== node) {\n this.#abortPending();\n this.#pendingNode = node;\n const controller = new AbortController();\n this.#pendingController = controller;\n\n if (this.loadChildren) {\n this.#invokeLoadChildren(node, depth, controller).catch(() => {});\n }\n }\n\n this.requestUpdate();\n }\n\n async #invokeLoadChildren(node: TreeNode, depth: number, controller: AbortController): Promise<void> {\n try {\n const result = this.loadChildren!(node, depth, controller.signal);\n const children = result instanceof Promise ? await result : result;\n if (controller.signal.aborted) return;\n node.children = children;\n this.#pendingNode = undefined;\n this.#pendingController = undefined;\n this.dispatchEvent(new CustomEvent<CrumbNavigationExpandDetail>(`expand`, {\n detail: { node, depth },\n bubbles: true,\n composed: true,\n }));\n this.requestUpdate();\n } catch (err) {\n if (controller.signal.aborted) return;\n node.children = [];\n this.#pendingNode = undefined;\n this.#pendingController = undefined;\n this.requestUpdate();\n }\n }\n\n #onSegmentMenuCommand(e: CustomEvent, node: TreeNode, depth: number) {\n const key = e.detail.command;\n const child = node.children?.find(c => c.item.key === key);\n if (child) {\n this.#onChildClick(child, depth + 1);\n }\n }\n\n #onChildClick(node: TreeNode, depth: number) {\n this._openIdx = -1;\n this.#setSelected(node);\n this.dispatchEvent(new CustomEvent<CrumbNavigationItemClickDetail>(`item-click`, {\n detail: { node, depth },\n bubbles: true,\n composed: true,\n }));\n }\n\n /** Navigate to a node by key path. Returns false if any key is not found in already-loaded children. */\n navigateTo(keys: readonly string[]): boolean {\n if (!this.root?.children) return false;\n let current: TreeNode | undefined = this.root;\n for (const key of keys) {\n const found: TreeNode | undefined = current?.children?.find(n => n.item.key === key);\n if (!found) return false;\n current = found;\n }\n if (current && current !== this.root) {\n this.#setSelected(current);\n }\n return true;\n }\n\n /** Navigate to the first node matching the predicate. Returns false if not found. */\n navigateToNode(predicate: (node: TreeNode) => boolean): boolean {\n if (!this.root) return false;\n const keyPath = this.#findNodePath(this.root.children ?? [], predicate);\n if (!keyPath) return false;\n return this.navigateTo(keyPath);\n }\n\n #findNodePath(\n nodes: TreeNode[],\n predicate: (node: TreeNode) => boolean,\n prefix: string[] = [],\n ): string[] | undefined {\n for (const node of nodes) {\n const path = [...prefix, node.item.key];\n if (predicate(node)) return path;\n if (node.children?.length) {\n const result = this.#findNodePath(node.children, predicate, path);\n if (result) return result;\n }\n }\n return undefined;\n }\n\n #onMenuCommand(e: CustomEvent) {\n const node = this.selectedNode;\n if (!node?.children)\n return;\n\n const key = e.detail.command;\n const child = node.children.find(c => c.item.key === key);\n if (child) {\n const depth = this.root ? (this.#findPath(this.root, node)?.length ?? 1) : 1;\n this.#onChildClick(child, depth);\n }\n }\n\n render() {\n const r = this.root;\n const sel = this.selectedNode;\n\n if (!r || !sel) {\n return html``;\n }\n\n this.inputMode = this.tickled.inputMode;\n\n const pathNodes = this.#findPath(r, sel) ?? [r];\n const hasChildOptions = this.#hasChildOptions();\n\n const parts = pathNodes.map((node, i) => {\n const isLast = i === pathNodes.length - 1;\n const isPending = this.#pendingNode === node;\n const isOpen = this._openIdx === i;\n const hasChildren = node.item.isLeaf !== true && (node.children === undefined || node.children.length > 0);\n const showCaret = !isLast && hasChildren;\n const isTickled = this.tickled.isTickled(i);\n\n const menuItems = (node.children ?? []).map(c => html`\n <ixfx-menu-item \n label=\"${c.item.label}\" \n command=\"${c.item.key}\"\n icon-name=\"${c.item.icon ?? nothing}\"\n ></ixfx-menu-item>\n `);\n\n return html`\n <div class=\"item crumb-segment ${isTickled ? `tickled` : ``}\"\n @pointerenter=${() => {\n this.tickled.handlePointerEnter(i);\n this.dispatchEvent(new CustomEvent<TreeTickleDetail>(`tickle`, { detail: { node, depth: i }, bubbles: true, composed: true }));\n }}\n >\n <span class=\"label\" @click=${() => this.#onLabelClick(node, i)}>${node.item.label}</span>\n ${showCaret\n ? html`\n <span class=\"caret ${isOpen ? `open` : ``} ${isPending ? `pending` : ``}\">\n ${isPending\n ? html`<span class=\"loading-spinner\"></span>`\n : html`\n <ixfx-menu-trigger mode=\"trigger\" label=\"›\" @menu-command=${(e: CustomEvent) => this.#onSegmentMenuCommand(e, node, i)}>\n <ixfx-menu-container slot=\"menu\">\n ${menuItems}\n </ixfx-menu-container>\n </ixfx-menu-trigger>\n `\n }\n </span>\n `\n : nothing\n }\n </div>\n `;\n });\n\n const childOptions = this.#renderChildOptions();\n const isLastItemTickled = this.tickled.isTickled(pathNodes.length);\n return html`\n <div\n class=\"host-container\"\n tabindex=\"0\"\n @focus=${this.#onFocus}\n @blur=${this.#onBlur}\n @keydown=${this.#onKeyDown}\n @click=${this.#onHostClick}\n @menu-trigger-close=${this.#onMenuTriggerClose}\n @pointerleave=${(e: PointerEvent) => this.tickled.handlePointerLeave(e)}\n >\n <div class=\"parts\">${parts}</div>\n ${childOptions\n ? html`\n <ixfx-menu-trigger\n id=\"child-options-trigger\"\n class=\"item separator-trigger ${isLastItemTickled ? `tickled` : ``}\"\n mode=\"trigger\"\n label=\"›\"\n @menu-command=${this.#onMenuCommand}\n @pointerenter=${() => this.tickled.handlePointerEnter(pathNodes.length)}\n >\n <ixfx-menu-container slot=\"menu\">\n ${(this.selectedNode?.children ?? []).map(c => html`\n <ixfx-menu-item \n label=\"${c.item.label}\" \n command=\"${c.item.key}\"\n icon-name=\"${c.item.icon ?? nothing}\"\n ></ixfx-menu-item>\n `)}\n </ixfx-menu-container>\n </ixfx-menu-trigger>\n `\n : nothing}\n ${childOptions}\n </div>\n `;\n }\n\n #renderChildOptions() {\n const s = this.selectedNode;\n if (s === undefined) {\n return nothing;\n }\n\n const isPending = this.#pendingNode === s;\n const children = s.children ?? [];\n\n if (children.length === 0 && !isPending) {\n return nothing;\n }\n\n if (isPending) {\n return html`\n <div class=\"horiz-select\">\n <div class=\"horiz-select-items\">\n <span class=\"loading-spinner\"></span>\n </div>\n </div>\n `;\n }\n\n return html`\n <ixfx-narrowed-text\n class=\"horiz-select\"\n selection-mode=\"single\"\n orientation=\"horizontal\"\n nowrap\n width=${this.#getChildOptionsWidth()}\n @change=${this.#onNarrowedTextChange}\n @narrowed-text-blur=${this.#onNarrowedTextBlur}\n @narrowed-text-shift-tab=${this.#onNarrowedTextShiftTab}\n >\n ${children.map(c => html`\n <span data-value=\"${c.item.key}\" data-label=\"${c.item.label}\"></span>\n `)}\n </ixfx-narrowed-text>\n `;\n }\n\n #onNarrowedTextChange(e: CustomEvent) {\n const detail = e.detail as { item: { value: string } };\n const node = this.selectedNode;\n if (!node?.children) return;\n\n const child = node.children.find(c => c.item.key === detail.item.value);\n if (child) {\n const depth = this.root ? (this.#findPath(this.root, node)?.length ?? 1) : 1;\n this.#onChildClick(child, depth);\n }\n }\n\n #getChildOptionsWidth(): string {\n return `var(--child-options-width, 50ch)`;\n }\n\n static styles = [tickledStyles, tickledItemStyles, css`\n :host {\n --text-highlight: var(--accent);\n --separator: var(--surface-muted-text);\n --padding-s: var(--space-xs);\n display: flex;\n overflow: scroll;\n width: 100%;\n scroll-snap-type: x mandatory;\n scrollbar-width: none;\n\n /* Breadcrumb tickled overrides — no layout shift: keep transparent border at rest */\n --item-padding: 0;\n }\n\n :host(.focused) {\n outline: none;\n }\n\n :host([input-mode=\"keyboard\"]) .host-container {\n outline: 2px solid var(--accent);\n outline-offset: 2px;\n }\n\n .host-container {\n display: flex;\n width: 100%;\n outline: none;\n }\n\n .parts {\n display: flex;\n }\n\n .crumb-segment {\n display: flex;\n align-items: center;\n }\n\n .label {\n cursor: pointer;\n margin-right: var(--padding-s);\n white-space: nowrap;\n }\n\n .caret {\n position: relative;\n cursor: pointer;\n padding: var(--padding-m);\n margin-left: var(--padding-s);\n margin-right: var(--padding-s);\n color: var(--separator);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease-in-out;\n }\n\n .caret.open {\n background: color-mix(in srgb, var(--surface-5) 40%, transparent);\n }\n\n .caret.pending {\n display: inline-flex;\n }\n\n .caret > ixfx-menu-trigger {\n display: inline-flex;\n margin: 0;\n --_trigger-hover-bg: transparent;\n --_trigger-hover-opacity: 0.6;\n }\n\n .caret > ixfx-menu-trigger::part(base) {\n background: none;\n border: none;\n color: inherit;\n padding: 0;\n cursor: pointer;\n font-size: inherit;\n line-height: 1;\n }\n\n .caret > ixfx-menu-trigger::part(base):hover {\n background: none;\n opacity: 0.6;\n }\n\n .separator {\n margin-left: var(--padding-s);\n margin-right: var(--padding-s);\n color: var(--separator);\n }\n\n .separator-trigger {\n display: inline-flex;\n margin-left: var(--padding-s);\n margin-right: var(--padding-s);\n --_trigger-hover-bg: transparent;\n --_trigger-hover-opacity: 0.6;\n }\n\n .separator-trigger::part(base) {\n background: none;\n border: none;\n color: var(--separator);\n padding: 0;\n cursor: pointer;\n font-size: inherit;\n line-height: 1;\n }\n\n .separator-trigger::part(base):hover {\n background: none;\n opacity: 0.6;\n }\n\n .separator-trigger.tickled::part(base) {\n }\n\n ixfx-menu-trigger {\n display: none;\n }\n\n .horiz-select > ixfx-menu-trigger {\n display: inline-flex;\n }\n\n .horiz-select {\n display: flex;\n min-width: 5ch;\n }\n\n .loading-spinner {\n display: inline-block;\n width: 12px;\n height: 12px;\n border: 2px solid var(--surface-5);\n border-top-color: var(--accent);\n border-radius: 50%;\n animation: crumb-spin 0.7s linear infinite;\n }\n\n @keyframes crumb-spin {\n to { transform: rotate(360deg); }\n }\n\n ::slotted(*), option {\n user-select: none;\n scroll-snap-align: start;\n }\n `];\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ixfx-crumb-navigation\": CrumbNavigationElement;\n }\n}\n\nimport type {\n TreeActivateEvent,\n TreeComponentEventMap,\n TreeExpandEvent,\n TreeItemClickEvent,\n TreeSelectEvent,\n TreeTickleEvent,\n} from '../common/tree-component.js';\n\nexport interface CrumbNavigationElementEventMap extends TreeComponentEventMap {\n 'item-click': TreeItemClickEvent;\n 'expand': TreeExpandEvent;\n 'select': TreeSelectEvent;\n 'tickle': TreeTickleEvent;\n 'activate': TreeActivateEvent;\n}\n\nexport interface CrumbNavigationElement {\n addEventListener<K extends keyof CrumbNavigationElementEventMap>(\n type: K,\n listener: (this: CrumbNavigationElement, event: CrumbNavigationElementEventMap[K]) => void,\n options?: boolean | AddEventListenerOptions\n ): void;\n addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void;\n}\n"],"mappings":"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"}
@@ -1,22 +1,27 @@
1
- import { LitElement } from 'lit';
2
- export type FormattingOptions = {
3
- readonly precision?: number;
4
- readonly roundNumbers?: number;
1
+ import * as _$lit from "lit";
2
+ import { LitElement } from "lit";
3
+
4
+ //#region src/data-display.d.ts
5
+ type FormattingOptions = {
6
+ readonly precision?: number;
7
+ readonly roundNumbers?: number;
5
8
  };
6
- export declare class DataDisplayComponent extends LitElement {
7
- static styles: import("lit").CSSResult;
8
- previousValue: Record<string, unknown> | undefined;
9
- _container: HTMLElement;
10
- constructor();
11
- connectedCallback(): void;
12
- formatValue(v: unknown, options?: FormattingOptions): string;
13
- displayData(o: Record<string, unknown> | unknown[]): void;
14
- getOrCreate(path: string, init?: (parent: HTMLElement) => void): HTMLElement;
15
- updateData(value: Record<string, unknown>): void;
9
+ declare class DataDisplayComponent extends LitElement {
10
+ static styles: _$lit.CSSResult;
11
+ previousValue: Record<string, unknown> | undefined;
12
+ _container: HTMLElement;
13
+ constructor();
14
+ connectedCallback(): void;
15
+ formatValue(v: unknown, options?: FormattingOptions): string;
16
+ displayData(o: Record<string, unknown> | unknown[]): void;
17
+ getOrCreate(path: string, init?: (parent: HTMLElement) => void): HTMLElement;
18
+ updateData(value: Record<string, unknown>): void;
16
19
  }
17
20
  declare global {
18
- interface HTMLElementTagNameMap {
19
- 'ixfx-data-display': DataDisplayComponent;
20
- }
21
- }
21
+ interface HTMLElementTagNameMap {
22
+ 'ixfx-data-display': DataDisplayComponent;
23
+ }
24
+ } //# sourceMappingURL=data-display.d.ts.map
25
+ //#endregion
26
+ export { DataDisplayComponent, FormattingOptions };
22
27
  //# sourceMappingURL=data-display.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-display.d.ts","sourceRoot":"","sources":["../src/data-display.ts"],"names":[],"mappings":"AAGA,OAAO,EAAO,UAAU,EAAE,MAAM,KAAK,CAAC;AAGtC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,qBACa,oBAAqB,SAAQ,UAAU;IAClD,OAAgB,MAAM,0BAgBpB;IAEF,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IACnD,UAAU,EAAE,WAAW,CAAC;;IAOf,iBAAiB;IAK1B,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM;IAoBhE,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE;IA8ClD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,GAAG,WAAW;IAa5E,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAQ1C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,oBAAoB,CAAC;KAC3C;CACF"}
1
+ {"version":3,"file":"data-display.d.ts","names":[],"sources":["../src/data-display.ts"],"mappings":";;;;KAMY,iBAAA;EAAA,SACD,SAAA;EAAA,SACA,YAAA;AAAA;AAAA,cAIE,oBAAA,SAA6B,UAAA;EAAA,OACxB,MAAA,EADgB,KAAA,CACV,SAAA;EAkBtB,aAAA,EAAe,MAAA;EACf,UAAA,EAAY,WAAA;;EAOH,iBAAA,CAAA;EAKT,WAAA,CAAY,CAAA,WAAY,OAAA,GAAS,iBAAA;EAoBjC,WAAA,CAAY,CAAA,EAAG,MAAA;EA8Cf,WAAA,CAAY,IAAA,UAAc,IAAA,IAAQ,MAAA,EAAQ,WAAA,YAAuB,WAAA;EAajE,UAAA,CAAW,KAAA,EAAO,MAAA;AAAA;AAAA,QAUZ,MAAA;EAAA,UACI,qBAAA;IACR,mBAAA,EAAqB,oBAAA;EAAA;AAAA"}
@@ -1,17 +1,16 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var DataDisplayComponent_1;
8
- import { Records } from "@ixfx/core";
9
- import { round } from "@ixfx/numbers";
10
- import { css, LitElement } from 'lit';
11
- import { customElement } from 'lit/decorators.js';
1
+ import { t as __decorate } from "./decorate-BZbkqIhA.js";
2
+ import { c as round } from "./dist-D7kJgnSE.js";
3
+ import { i as records_exports } from "./dist-By5URG0Y.js";
4
+ import { LitElement, css } from "lit";
5
+ import { customElement } from "lit/decorators.js";
6
+ //#region src/data-display.ts
7
+ var _DataDisplayComponent;
12
8
  let DataDisplayComponent = class DataDisplayComponent extends LitElement {
13
- static { DataDisplayComponent_1 = this; }
14
- static { this.styles = css `
9
+ static {
10
+ _DataDisplayComponent = this;
11
+ }
12
+ static {
13
+ this.styles = css`
15
14
  :host {
16
15
  display: block;
17
16
  }
@@ -27,101 +26,76 @@ let DataDisplayComponent = class DataDisplayComponent extends LitElement {
27
26
  div {
28
27
  border: var(--border-subtle);
29
28
  }
30
- `; }
31
- constructor() {
32
- super();
33
- this._container = document.createElement(`section`);
34
- }
35
- connectedCallback() {
36
- super.connectedCallback();
37
- this.renderRoot.append(this._container);
38
- }
39
- formatValue(v, options = {}) {
40
- if (v === null)
41
- return `(null)`;
42
- if (v === undefined)
43
- return `(undefined)`;
44
- if (typeof v === `boolean`)
45
- return v ? `true` : `false`;
46
- if (typeof v === `string`)
47
- return `"${v}"`;
48
- if (typeof v === `number`) {
49
- let vAsNumber = v;
50
- if (options.roundNumbers !== undefined)
51
- vAsNumber = round(options.roundNumbers, v);
52
- if (options.precision !== undefined)
53
- return vAsNumber.toFixed(options.precision);
54
- return vAsNumber.toString();
55
- }
56
- return JSON.stringify(v);
57
- }
58
- displayData(o) {
59
- if (o === null) {
60
- this.innerHTML = ``;
61
- return;
62
- }
63
- for (const [key, value] of Object.entries(o)) {
64
- const domKey = `path-${key}`;
65
- if (typeof value === `object`) {
66
- const element = this.getOrCreate(domKey, (parent) => {
67
- parent.classList.add(`row`, `nested`);
68
- const label = document.createElement(`label`);
69
- label.textContent = key;
70
- const valueElement = new DataDisplayComponent_1();
71
- parent.append(label, valueElement);
72
- });
73
- const valueElement = element.querySelector(`ixfx-data-display`);
74
- if (valueElement !== null) {
75
- valueElement.updateData(value);
76
- }
77
- }
78
- else {
79
- const element = this.getOrCreate(domKey, (parent) => {
80
- parent.classList.add(`row`);
81
- const label = document.createElement(`label`);
82
- label.textContent = key;
83
- const valueElement = document.createElement(`div`);
84
- valueElement.textContent = this.formatValue(value);
85
- parent.append(label, valueElement);
86
- });
87
- const valueElement = element.querySelector(`div`);
88
- if (valueElement === null) {
89
- console.warn(`data-display.displayData Unexpected case?`);
90
- // debugger;
91
- }
92
- else {
93
- valueElement.innerHTML = this.formatValue(value);
94
- }
95
- }
96
- }
97
- // const paths = getFieldPaths(o);
98
- // console.log(`paths: ${ JSON.stringify(paths) }`);
99
- // for (const path of paths) {
100
- // }
101
- }
102
- getOrCreate(path, init) {
103
- const element = this.renderRoot.querySelector(`#${path}`);
104
- if (element !== null)
105
- return element;
106
- const elementCreated = document.createElement(`div`);
107
- elementCreated.id = path;
108
- if (init)
109
- init(elementCreated);
110
- this._container.append(elementCreated);
111
- return elementCreated;
112
- }
113
- updateData(value) {
114
- if (this.previousValue === undefined) {
115
- this.displayData(value);
116
- }
117
- else {
118
- this.displayData(Records.changedProperties(this.previousValue, value));
119
- }
120
- this.previousValue = value;
121
- }
29
+ `;
30
+ }
31
+ constructor() {
32
+ super();
33
+ this._container = document.createElement(`section`);
34
+ }
35
+ connectedCallback() {
36
+ super.connectedCallback();
37
+ this.renderRoot.append(this._container);
38
+ }
39
+ formatValue(v, options = {}) {
40
+ if (v === null) return `(null)`;
41
+ if (v === void 0) return `(undefined)`;
42
+ if (typeof v === `boolean`) return v ? `true` : `false`;
43
+ if (typeof v === `string`) return `"${v}"`;
44
+ if (typeof v === `number`) {
45
+ let vAsNumber = v;
46
+ if (options.roundNumbers !== void 0) vAsNumber = round(options.roundNumbers, v);
47
+ if (options.precision !== void 0) return vAsNumber.toFixed(options.precision);
48
+ return vAsNumber.toString();
49
+ }
50
+ return JSON.stringify(v);
51
+ }
52
+ displayData(o) {
53
+ if (o === null) {
54
+ this.innerHTML = ``;
55
+ return;
56
+ }
57
+ for (const [key, value] of Object.entries(o)) {
58
+ const domKey = `path-${key}`;
59
+ if (typeof value === `object`) {
60
+ const valueElement = this.getOrCreate(domKey, (parent) => {
61
+ parent.classList.add(`row`, `nested`);
62
+ const label = document.createElement(`label`);
63
+ label.textContent = key;
64
+ const valueElement = new _DataDisplayComponent();
65
+ parent.append(label, valueElement);
66
+ }).querySelector(`ixfx-data-display`);
67
+ if (valueElement !== null) valueElement.updateData(value);
68
+ } else {
69
+ const valueElement = this.getOrCreate(domKey, (parent) => {
70
+ parent.classList.add(`row`);
71
+ const label = document.createElement(`label`);
72
+ label.textContent = key;
73
+ const valueElement = document.createElement(`div`);
74
+ valueElement.textContent = this.formatValue(value);
75
+ parent.append(label, valueElement);
76
+ }).querySelector(`div`);
77
+ if (valueElement === null) console.warn(`data-display.displayData Unexpected case?`);
78
+ else valueElement.innerHTML = this.formatValue(value);
79
+ }
80
+ }
81
+ }
82
+ getOrCreate(path, init) {
83
+ const element = this.renderRoot.querySelector(`#${path}`);
84
+ if (element !== null) return element;
85
+ const elementCreated = document.createElement(`div`);
86
+ elementCreated.id = path;
87
+ if (init) init(elementCreated);
88
+ this._container.append(elementCreated);
89
+ return elementCreated;
90
+ }
91
+ updateData(value) {
92
+ if (this.previousValue === void 0) this.displayData(value);
93
+ else this.displayData(records_exports.changedProperties(this.previousValue, value));
94
+ this.previousValue = value;
95
+ }
122
96
  };
123
- DataDisplayComponent = DataDisplayComponent_1 = __decorate([
124
- customElement(`ixfx-data-display`)
125
- ], DataDisplayComponent);
97
+ DataDisplayComponent = _DataDisplayComponent = __decorate([customElement(`ixfx-data-display`)], DataDisplayComponent);
98
+ //#endregion
126
99
  export { DataDisplayComponent };
100
+
127
101
  //# sourceMappingURL=data-display.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-display.js","sourceRoot":"","sources":["../src/data-display.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-display.js","names":["Records"],"sources":["../src/data-display.ts"],"sourcesContent":["import { Records } from \"@ixfx/core\";\nimport { round } from \"@ixfx/numbers\";\n\nimport { css, LitElement } from 'lit';\nimport { customElement } from 'lit/decorators.js';\n\nexport type FormattingOptions = {\n readonly precision?: number;\n readonly roundNumbers?: number;\n};\n\n@customElement(`ixfx-data-display`)\nexport class DataDisplayComponent extends LitElement {\n static override styles = css`\n :host {\n display: block;\n }\n section {\n background: var(--surface-3);\n color: var(--surface-2-text);\n border: var(--border);\n padding: var(--space-m);\n font-family: var(--font-mono);\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n }\n div {\n border: var(--border-subtle);\n }\n `;\n\n previousValue: Record<string, unknown> | undefined;\n _container: HTMLElement;\n\n constructor() {\n super();\n this._container = document.createElement(`section`);\n }\n\n override connectedCallback() {\n super.connectedCallback();\n this.renderRoot.append(this._container);\n }\n\n formatValue(v: unknown, options: FormattingOptions = {}): string {\n if (v === null)\n return `(null)`;\n if (v === undefined)\n return `(undefined)`;\n if (typeof v === `boolean`)\n return v ? `true` : `false`;\n if (typeof v === `string`)\n return `\"${v}\"`;\n if (typeof v === `number`) {\n let vAsNumber = v;\n if (options.roundNumbers !== undefined)\n vAsNumber = round(options.roundNumbers, v);\n if (options.precision !== undefined)\n return vAsNumber.toFixed(options.precision);\n return vAsNumber.toString();\n }\n return JSON.stringify(v);\n }\n\n displayData(o: Record<string, unknown> | unknown[]) {\n if (o === null) {\n this.innerHTML = ``;\n return;\n }\n for (const [key, value] of Object.entries(o)) {\n const domKey = `path-${key}`;\n if (typeof value === `object`) {\n const element = this.getOrCreate(domKey, (parent) => {\n parent.classList.add(`row`, `nested`);\n const label = document.createElement(`label`);\n label.textContent = key;\n const valueElement = new DataDisplayComponent();\n parent.append(label, valueElement);\n });\n const valueElement = element.querySelector<DataDisplayComponent>(`ixfx-data-display`);\n if (valueElement !== null) {\n valueElement.updateData(value as Record<string, unknown>);\n }\n } else {\n const element = this.getOrCreate(domKey, (parent) => {\n parent.classList.add(`row`);\n const label = document.createElement(`label`);\n label.textContent = key;\n const valueElement = document.createElement(`div`);\n valueElement.textContent = this.formatValue(value);\n parent.append(label, valueElement);\n });\n const valueElement = element.querySelector(`div`);\n if (valueElement === null) {\n console.warn(`data-display.displayData Unexpected case?`);\n // debugger;\n } else {\n valueElement.innerHTML = this.formatValue(value);\n }\n }\n }\n\n // const paths = getFieldPaths(o);\n // console.log(`paths: ${ JSON.stringify(paths) }`);\n\n // for (const path of paths) {\n\n // }\n }\n\n getOrCreate(path: string, init?: (parent: HTMLElement) => void): HTMLElement {\n const element = this.renderRoot.querySelector(`#${path}`) as HTMLElement | null;\n if (element !== null)\n return element;\n\n const elementCreated = document.createElement(`div`);\n elementCreated.id = path;\n if (init)\n init(elementCreated);\n this._container.append(elementCreated);\n return elementCreated;\n }\n\n updateData(value: Record<string, unknown>) {\n if (this.previousValue === undefined) {\n this.displayData(value);\n } else {\n this.displayData(Records.changedProperties(this.previousValue, value));\n }\n this.previousValue = value;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ixfx-data-display': DataDisplayComponent;\n }\n}"],"mappings":";;;;;;;AAYO,IAAA,uBAAA,MAAM,6BAA6B,WAAW;;;;;gBAC1B,GAAG;;;;;;;;;;;;;;;;;;CAqB5B,cAAc;AACZ,SAAO;AACP,OAAK,aAAa,SAAS,cAAc,UAAU;;CAGrD,oBAA6B;AAC3B,QAAM,mBAAmB;AACzB,OAAK,WAAW,OAAO,KAAK,WAAW;;CAGzC,YAAY,GAAY,UAA6B,EAAE,EAAU;AAC/D,MAAI,MAAM,KACR,QAAO;AACT,MAAI,MAAM,KAAA,EACR,QAAO;AACT,MAAI,OAAO,MAAM,UACf,QAAO,IAAI,SAAS;AACtB,MAAI,OAAO,MAAM,SACf,QAAO,IAAI,EAAE;AACf,MAAI,OAAO,MAAM,UAAU;GACzB,IAAI,YAAY;AAChB,OAAI,QAAQ,iBAAiB,KAAA,EAC3B,aAAY,MAAM,QAAQ,cAAc,EAAE;AAC5C,OAAI,QAAQ,cAAc,KAAA,EACxB,QAAO,UAAU,QAAQ,QAAQ,UAAU;AAC7C,UAAO,UAAU,UAAU;;AAE7B,SAAO,KAAK,UAAU,EAAE;;CAG1B,YAAY,GAAwC;AAClD,MAAI,MAAM,MAAM;AACd,QAAK,YAAY;AACjB;;AAEF,OAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,EAAE,EAAE;GAC5C,MAAM,SAAS,QAAQ;AACvB,OAAI,OAAO,UAAU,UAAU;IAQ7B,MAAM,eAPU,KAAK,YAAY,SAAS,WAAW;AACnD,YAAO,UAAU,IAAI,OAAO,SAAS;KACrC,MAAM,QAAQ,SAAS,cAAc,QAAQ;AAC7C,WAAM,cAAc;KACpB,MAAM,eAAe,IAAA,uBAA0B;AAC/C,YAAO,OAAO,OAAO,aAAa;MAER,CAAC,cAAoC,oBAAoB;AACrF,QAAI,iBAAiB,KACnB,cAAa,WAAW,MAAiC;UAEtD;IASL,MAAM,eARU,KAAK,YAAY,SAAS,WAAW;AACnD,YAAO,UAAU,IAAI,MAAM;KAC3B,MAAM,QAAQ,SAAS,cAAc,QAAQ;AAC7C,WAAM,cAAc;KACpB,MAAM,eAAe,SAAS,cAAc,MAAM;AAClD,kBAAa,cAAc,KAAK,YAAY,MAAM;AAClD,YAAO,OAAO,OAAO,aAAa;MAER,CAAC,cAAc,MAAM;AACjD,QAAI,iBAAiB,KACnB,SAAQ,KAAK,4CAA4C;QAGzD,cAAa,YAAY,KAAK,YAAY,MAAM;;;;CAaxD,YAAY,MAAc,MAAmD;EAC3E,MAAM,UAAU,KAAK,WAAW,cAAc,IAAI,OAAO;AACzD,MAAI,YAAY,KACd,QAAO;EAET,MAAM,iBAAiB,SAAS,cAAc,MAAM;AACpD,iBAAe,KAAK;AACpB,MAAI,KACF,MAAK,eAAe;AACtB,OAAK,WAAW,OAAO,eAAe;AACtC,SAAO;;CAGT,WAAW,OAAgC;AACzC,MAAI,KAAK,kBAAkB,KAAA,EACzB,MAAK,YAAY,MAAM;MAEvB,MAAK,YAAYA,gBAAQ,kBAAkB,KAAK,eAAe,MAAM,CAAC;AAExE,OAAK,gBAAgB;;;2DAtHxB,cAAc,oBAAoB,CAAA,EAAA,qBAAA"}
@@ -0,0 +1,9 @@
1
+ //#region \0@oxc-project+runtime@0.127.0/helpers/decorate.js
2
+ function __decorate(decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ }
8
+ //#endregion
9
+ export { __decorate as t };
@@ -0,0 +1,38 @@
1
+ import { i as registerIcon } from "./registry-CZEB1YI9.js";
2
+ //#region src/icons/defaults.ts
3
+ /**
4
+ * Chevron pointing down. Used for split-button dropdown toggle.
5
+ * fill="currentColor" so it inherits CSS color.
6
+ */
7
+ const ICON_CHEVRON_DOWN = `<svg viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z"/></svg>`;
8
+ /**
9
+ * Caret pointing right. Used for tree-basic expand indicator as a CSS mask.
10
+ * fill="black" is correct for CSS mask-image use (shape only, color comes from background-color).
11
+ */
12
+ const ICON_CARET_RIGHT = `<svg viewBox="0 0 24 24" fill="black" xmlns="http://www.w3.org/2000/svg"><path d="M10 7l6 5-6 5V7z"/></svg>`;
13
+ /**
14
+ * Checkmark. Useful for menu-check-item or confirmation states.
15
+ * fill="currentColor" so it inherits CSS color.
16
+ */
17
+ const ICON_CHECK = `<svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z"/></svg>`;
18
+ /**
19
+ * Close / X icon. Useful for dialogs, notifications, dismissible elements.
20
+ * fill="currentColor" so it inherits CSS color.
21
+ */
22
+ const ICON_CLOSE = `<svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>`;
23
+ /**
24
+ * Chevron pointing right. Used for split-button switcher toggle.
25
+ * fill="currentColor" so it inherits CSS color.
26
+ */
27
+ const ICON_CHEVRON_RIGHT = `<svg viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"><path d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"/></svg>`;
28
+ function registerDefaults() {
29
+ registerIcon(`chevron-down`, ICON_CHEVRON_DOWN);
30
+ registerIcon(`chevron-right`, ICON_CHEVRON_RIGHT);
31
+ registerIcon(`caret-right`, ICON_CARET_RIGHT);
32
+ registerIcon(`check`, ICON_CHECK);
33
+ registerIcon(`close`, ICON_CLOSE);
34
+ }
35
+ //#endregion
36
+ export { registerDefaults as a, ICON_CLOSE as i, ICON_CHECK as n, ICON_CHEVRON_DOWN as r, ICON_CARET_RIGHT as t };
37
+
38
+ //# sourceMappingURL=defaults-FEZaGiYZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults-FEZaGiYZ.js","names":[],"sources":["../src/icons/defaults.ts"],"sourcesContent":["import { registerIcon } from './registry.js';\n\n/**\n * Chevron pointing down. Used for split-button dropdown toggle.\n * fill=\"currentColor\" so it inherits CSS color.\n */\nexport const ICON_CHEVRON_DOWN = `<svg viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z\"/></svg>`;\n\n/**\n * Caret pointing right. Used for tree-basic expand indicator as a CSS mask.\n * fill=\"black\" is correct for CSS mask-image use (shape only, color comes from background-color).\n */\nexport const ICON_CARET_RIGHT = `<svg viewBox=\"0 0 24 24\" fill=\"black\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10 7l6 5-6 5V7z\"/></svg>`;\n\n/**\n * Checkmark. Useful for menu-check-item or confirmation states.\n * fill=\"currentColor\" so it inherits CSS color.\n */\nexport const ICON_CHECK = `<svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z\"/></svg>`;\n\n/**\n * Close / X icon. Useful for dialogs, notifications, dismissible elements.\n * fill=\"currentColor\" so it inherits CSS color.\n */\nexport const ICON_CLOSE = `<svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z\"/></svg>`;\n\n/**\n * Chevron pointing right. Used for split-button switcher toggle.\n * fill=\"currentColor\" so it inherits CSS color.\n */\nexport const ICON_CHEVRON_RIGHT = `<svg viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\"/></svg>`;\n\nexport function registerDefaults(): void {\n registerIcon(`chevron-down`, ICON_CHEVRON_DOWN);\n registerIcon(`chevron-right`, ICON_CHEVRON_RIGHT);\n registerIcon(`caret-right`, ICON_CARET_RIGHT);\n registerIcon(`check`, ICON_CHECK);\n registerIcon(`close`, ICON_CLOSE);\n}\n"],"mappings":";;;;;;AAMA,MAAa,oBAAoB;;;;;AAMjC,MAAa,mBAAmB;;;;;AAMhC,MAAa,aAAa;;;;;AAM1B,MAAa,aAAa;;;;;AAM1B,MAAa,qBAAqB;AAElC,SAAgB,mBAAyB;AACvC,cAAa,gBAAgB,kBAAkB;AAC/C,cAAa,iBAAiB,mBAAmB;AACjD,cAAa,eAAe,iBAAiB;AAC7C,cAAa,SAAS,WAAW;AACjC,cAAa,SAAS,WAAW"}