@ixfx/components 0.2.2 → 0.2.4

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 (579) hide show
  1. package/LICENSE +1 -1
  2. package/bundle/chunk-pbuEa-1d.js +13 -0
  3. package/bundle/index.d.ts +4702 -569
  4. package/bundle/index.d.ts.map +1 -1
  5. package/bundle/index.js +34929 -2802
  6. package/bundle/index.js.map +1 -1
  7. package/bundle/style.css +133 -0
  8. package/dist/ac-text/ac-text.d.ts +99 -0
  9. package/dist/ac-text/ac-text.d.ts.map +1 -0
  10. package/dist/ac-text/ac-text.js +571 -0
  11. package/dist/ac-text/ac-text.js.map +1 -0
  12. package/dist/button/button-styles.d.ts +2 -0
  13. package/dist/button/button-styles.d.ts.map +1 -0
  14. package/dist/button/button-styles.js +75 -0
  15. package/dist/button/button-styles.js.map +1 -0
  16. package/dist/button/button.d.ts +16 -0
  17. package/dist/button/button.d.ts.map +1 -0
  18. package/dist/button/button.js +58 -0
  19. package/dist/button/button.js.map +1 -0
  20. package/dist/button/radio-group.d.ts +44 -0
  21. package/dist/button/radio-group.d.ts.map +1 -0
  22. package/dist/button/radio-group.js +385 -0
  23. package/dist/button/radio-group.js.map +1 -0
  24. package/dist/button/split-button.d.ts +59 -0
  25. package/dist/button/split-button.d.ts.map +1 -0
  26. package/dist/button/split-button.js +480 -0
  27. package/dist/button/split-button.js.map +1 -0
  28. package/dist/button/types.d.ts +18 -0
  29. package/dist/button/types.d.ts.map +1 -0
  30. package/dist/button/types.js +2 -0
  31. package/dist/button/types.js.map +1 -0
  32. package/dist/checkbox.d.ts +64 -0
  33. package/dist/checkbox.d.ts.map +1 -0
  34. package/dist/checkbox.js +265 -0
  35. package/dist/checkbox.js.map +1 -0
  36. package/dist/colour-picker/colour-picker-popup.d.ts +102 -0
  37. package/dist/colour-picker/colour-picker-popup.d.ts.map +1 -0
  38. package/dist/colour-picker/colour-picker-popup.js +399 -0
  39. package/dist/colour-picker/colour-picker-popup.js.map +1 -0
  40. package/dist/colour-picker/colour-picker.d.ts +100 -0
  41. package/dist/colour-picker/colour-picker.d.ts.map +1 -0
  42. package/dist/colour-picker/colour-picker.js +567 -0
  43. package/dist/colour-picker/colour-picker.js.map +1 -0
  44. package/dist/colour-picker/index.d.ts +4 -0
  45. package/dist/colour-picker/index.d.ts.map +1 -0
  46. package/dist/colour-picker/index.js +3 -0
  47. package/dist/colour-picker/index.js.map +1 -0
  48. package/dist/colour-picker/styles.d.ts +2 -0
  49. package/dist/colour-picker/styles.d.ts.map +1 -0
  50. package/dist/colour-picker/styles.js +139 -0
  51. package/dist/colour-picker/styles.js.map +1 -0
  52. package/dist/colour-picker/types.d.ts +33 -0
  53. package/dist/colour-picker/types.d.ts.map +1 -0
  54. package/dist/colour-picker/types.js +2 -0
  55. package/dist/colour-picker/types.js.map +1 -0
  56. package/dist/colour-picker/util.d.ts +15 -0
  57. package/dist/colour-picker/util.d.ts.map +1 -0
  58. package/dist/colour-picker/util.js +35 -0
  59. package/dist/colour-picker/util.js.map +1 -0
  60. package/dist/common/searchable.d.ts +9 -0
  61. package/dist/common/searchable.d.ts.map +1 -0
  62. package/dist/common/searchable.js +9 -0
  63. package/dist/common/searchable.js.map +1 -0
  64. package/dist/common/tree-component.d.ts +172 -0
  65. package/dist/common/tree-component.d.ts.map +1 -0
  66. package/dist/common/tree-component.js +8 -0
  67. package/dist/common/tree-component.js.map +1 -0
  68. package/dist/common/tree-data-model.d.ts +100 -0
  69. package/dist/common/tree-data-model.d.ts.map +1 -0
  70. package/dist/common/tree-data-model.js +207 -0
  71. package/dist/common/tree-data-model.js.map +1 -0
  72. package/dist/common/tree-item.d.ts +7 -0
  73. package/dist/common/tree-item.d.ts.map +1 -0
  74. package/dist/common/tree-item.js +2 -0
  75. package/dist/common/tree-item.js.map +1 -0
  76. package/dist/common/types.d.ts +69 -0
  77. package/dist/common/types.d.ts.map +1 -0
  78. package/dist/common/types.js +6 -0
  79. package/dist/common/types.js.map +1 -0
  80. package/dist/crumbs/crumb-navigation.d.ts +96 -0
  81. package/dist/crumbs/crumb-navigation.d.ts.map +1 -0
  82. package/dist/crumbs/crumb-navigation.js +911 -0
  83. package/dist/crumbs/crumb-navigation.js.map +1 -0
  84. package/dist/crumbs/crumb-path-controller.d.ts +18 -0
  85. package/dist/crumbs/crumb-path-controller.d.ts.map +1 -0
  86. package/dist/crumbs/crumb-path-controller.js +81 -0
  87. package/dist/crumbs/crumb-path-controller.js.map +1 -0
  88. package/dist/crumbs/crumb-path.d.ts +65 -0
  89. package/dist/crumbs/crumb-path.d.ts.map +1 -0
  90. package/dist/crumbs/crumb-path.js +691 -0
  91. package/dist/crumbs/crumb-path.js.map +1 -0
  92. package/dist/data-display.d.ts +10 -3
  93. package/dist/data-display.d.ts.map +1 -1
  94. package/dist/data-display.js +45 -28
  95. package/dist/data-display.js.map +1 -1
  96. package/dist/editable-label/editable-label.d.ts +98 -0
  97. package/dist/editable-label/editable-label.d.ts.map +1 -0
  98. package/dist/editable-label/editable-label.js +348 -0
  99. package/dist/editable-label/editable-label.js.map +1 -0
  100. package/dist/editable-label/editable-number.d.ts +96 -0
  101. package/dist/editable-label/editable-number.d.ts.map +1 -0
  102. package/dist/editable-label/editable-number.js +702 -0
  103. package/dist/editable-label/editable-number.js.map +1 -0
  104. package/dist/hex/colour.d.ts +6 -0
  105. package/dist/hex/colour.d.ts.map +1 -0
  106. package/dist/hex/colour.js +33 -0
  107. package/dist/hex/colour.js.map +1 -0
  108. package/dist/hex/data.d.ts +18 -0
  109. package/dist/hex/data.d.ts.map +1 -0
  110. package/dist/hex/data.js +61 -0
  111. package/dist/hex/data.js.map +1 -0
  112. package/dist/hex/diff.d.ts +14 -0
  113. package/dist/hex/diff.d.ts.map +1 -0
  114. package/dist/hex/diff.js +31 -0
  115. package/dist/hex/diff.js.map +1 -0
  116. package/dist/hex/hex-editor.d.ts +101 -0
  117. package/dist/hex/hex-editor.d.ts.map +1 -0
  118. package/dist/hex/hex-editor.js +894 -0
  119. package/dist/hex/hex-editor.js.map +1 -0
  120. package/dist/hex/selection.d.ts +11 -0
  121. package/dist/hex/selection.d.ts.map +1 -0
  122. package/dist/hex/selection.js +218 -0
  123. package/dist/hex/selection.js.map +1 -0
  124. package/dist/hex/types.d.ts +34 -0
  125. package/dist/hex/types.d.ts.map +1 -0
  126. package/dist/hex/types.js +4 -0
  127. package/dist/hex/types.js.map +1 -0
  128. package/dist/icons/defaults.d.ts +27 -0
  129. package/dist/icons/defaults.d.ts.map +1 -0
  130. package/dist/icons/defaults.js +34 -0
  131. package/dist/icons/defaults.js.map +1 -0
  132. package/dist/icons/icon.d.ts +31 -0
  133. package/dist/icons/icon.d.ts.map +1 -0
  134. package/dist/icons/icon.js +125 -0
  135. package/dist/icons/icon.js.map +1 -0
  136. package/dist/icons/index.d.ts +5 -0
  137. package/dist/icons/index.d.ts.map +1 -0
  138. package/dist/icons/index.js +6 -0
  139. package/dist/icons/index.js.map +1 -0
  140. package/dist/icons/registry.d.ts +11 -0
  141. package/dist/icons/registry.d.ts.map +1 -0
  142. package/dist/icons/registry.js +17 -0
  143. package/dist/icons/registry.js.map +1 -0
  144. package/dist/incr-search/ac-adapter.d.ts +18 -0
  145. package/dist/incr-search/ac-adapter.d.ts.map +1 -0
  146. package/dist/incr-search/ac-adapter.js +29 -0
  147. package/dist/incr-search/ac-adapter.js.map +1 -0
  148. package/dist/incr-search/controller-miller.d.ts +9 -0
  149. package/dist/incr-search/controller-miller.d.ts.map +1 -0
  150. package/dist/incr-search/controller-miller.js +8 -0
  151. package/dist/incr-search/controller-miller.js.map +1 -0
  152. package/dist/incr-search/controller-tree.d.ts +55 -0
  153. package/dist/incr-search/controller-tree.d.ts.map +1 -0
  154. package/dist/incr-search/controller-tree.js +106 -0
  155. package/dist/incr-search/controller-tree.js.map +1 -0
  156. package/dist/incr-search/element-search.d.ts +15 -0
  157. package/dist/incr-search/element-search.d.ts.map +1 -0
  158. package/dist/incr-search/element-search.js +82 -0
  159. package/dist/incr-search/element-search.js.map +1 -0
  160. package/dist/incr-search/fuzzy.d.ts +3 -0
  161. package/dist/incr-search/fuzzy.d.ts.map +1 -0
  162. package/dist/incr-search/fuzzy.js +37 -0
  163. package/dist/incr-search/fuzzy.js.map +1 -0
  164. package/dist/incr-search/highlight.d.ts +5 -0
  165. package/dist/incr-search/highlight.d.ts.map +1 -0
  166. package/dist/incr-search/highlight.js +54 -0
  167. package/dist/incr-search/highlight.js.map +1 -0
  168. package/dist/incr-search/incr-search.d.ts +3 -0
  169. package/dist/incr-search/incr-search.d.ts.map +1 -0
  170. package/dist/incr-search/incr-search.js +73 -0
  171. package/dist/incr-search/incr-search.js.map +1 -0
  172. package/dist/incr-search/index.d.ts +12 -0
  173. package/dist/incr-search/index.d.ts.map +1 -0
  174. package/dist/incr-search/index.js +8 -0
  175. package/dist/incr-search/index.js.map +1 -0
  176. package/dist/incr-search/types.d.ts +59 -0
  177. package/dist/incr-search/types.d.ts.map +1 -0
  178. package/dist/incr-search/types.js +2 -0
  179. package/dist/incr-search/types.js.map +1 -0
  180. package/dist/index.d.ts +49 -9
  181. package/dist/index.d.ts.map +1 -1
  182. package/dist/index.js +50 -10
  183. package/dist/index.js.map +1 -1
  184. package/dist/interaction/index.d.ts +10 -0
  185. package/dist/interaction/index.d.ts.map +1 -0
  186. package/dist/interaction/index.js +10 -0
  187. package/dist/interaction/index.js.map +1 -0
  188. package/dist/interaction/tickled-controller.d.ts +186 -0
  189. package/dist/interaction/tickled-controller.d.ts.map +1 -0
  190. package/dist/interaction/tickled-controller.js +256 -0
  191. package/dist/interaction/tickled-controller.js.map +1 -0
  192. package/dist/interaction/tickled-styles.d.ts +53 -0
  193. package/dist/interaction/tickled-styles.d.ts.map +1 -0
  194. package/dist/interaction/tickled-styles.js +106 -0
  195. package/dist/interaction/tickled-styles.js.map +1 -0
  196. package/dist/interaction/tree-keyboard-controller.d.ts +30 -0
  197. package/dist/interaction/tree-keyboard-controller.d.ts.map +1 -0
  198. package/dist/interaction/tree-keyboard-controller.js +105 -0
  199. package/dist/interaction/tree-keyboard-controller.js.map +1 -0
  200. package/dist/keyboard.d.ts +16 -0
  201. package/dist/keyboard.d.ts.map +1 -0
  202. package/dist/keyboard.js +22 -0
  203. package/dist/keyboard.js.map +1 -0
  204. package/dist/labelled-radial-input/index.d.ts +2 -0
  205. package/dist/labelled-radial-input/index.d.ts.map +1 -0
  206. package/dist/labelled-radial-input/index.js +2 -0
  207. package/dist/labelled-radial-input/index.js.map +1 -0
  208. package/dist/labelled-radial-input/labelled-radial-input.d.ts +77 -0
  209. package/dist/labelled-radial-input/labelled-radial-input.d.ts.map +1 -0
  210. package/dist/labelled-radial-input/labelled-radial-input.js +214 -0
  211. package/dist/labelled-radial-input/labelled-radial-input.js.map +1 -0
  212. package/dist/labelled-range-input/index.d.ts +2 -0
  213. package/dist/labelled-range-input/index.d.ts.map +1 -0
  214. package/dist/labelled-range-input/index.js +2 -0
  215. package/dist/labelled-range-input/index.js.map +1 -0
  216. package/dist/labelled-range-input/labelled-range-input.d.ts +80 -0
  217. package/dist/labelled-range-input/labelled-range-input.d.ts.map +1 -0
  218. package/dist/labelled-range-input/labelled-range-input.js +137 -0
  219. package/dist/labelled-range-input/labelled-range-input.js.map +1 -0
  220. package/dist/led.d.ts +20 -0
  221. package/dist/led.d.ts.map +1 -0
  222. package/dist/led.js +100 -0
  223. package/dist/led.js.map +1 -0
  224. package/dist/menu/index.d.ts +14 -0
  225. package/dist/menu/index.d.ts.map +1 -0
  226. package/dist/menu/index.js +13 -0
  227. package/dist/menu/index.js.map +1 -0
  228. package/dist/menu/menu-bar.d.ts +23 -0
  229. package/dist/menu/menu-bar.d.ts.map +1 -0
  230. package/dist/menu/menu-bar.js +110 -0
  231. package/dist/menu/menu-bar.js.map +1 -0
  232. package/dist/menu/menu-check-item.d.ts +33 -0
  233. package/dist/menu/menu-check-item.d.ts.map +1 -0
  234. package/dist/menu/menu-check-item.js +175 -0
  235. package/dist/menu/menu-check-item.js.map +1 -0
  236. package/dist/menu/menu-command-controller.d.ts +14 -0
  237. package/dist/menu/menu-command-controller.d.ts.map +1 -0
  238. package/dist/menu/menu-command-controller.js +22 -0
  239. package/dist/menu/menu-command-controller.js.map +1 -0
  240. package/dist/menu/menu-container.d.ts +36 -0
  241. package/dist/menu/menu-container.d.ts.map +1 -0
  242. package/dist/menu/menu-container.js +351 -0
  243. package/dist/menu/menu-container.js.map +1 -0
  244. package/dist/menu/menu-from-tree.d.ts +17 -0
  245. package/dist/menu/menu-from-tree.d.ts.map +1 -0
  246. package/dist/menu/menu-from-tree.js +103 -0
  247. package/dist/menu/menu-from-tree.js.map +1 -0
  248. package/dist/menu/menu-header.d.ts +12 -0
  249. package/dist/menu/menu-header.d.ts.map +1 -0
  250. package/dist/menu/menu-header.js +36 -0
  251. package/dist/menu/menu-header.js.map +1 -0
  252. package/dist/menu/menu-item.d.ts +41 -0
  253. package/dist/menu/menu-item.d.ts.map +1 -0
  254. package/dist/menu/menu-item.js +240 -0
  255. package/dist/menu/menu-item.js.map +1 -0
  256. package/dist/menu/menu-radio-group.d.ts +24 -0
  257. package/dist/menu/menu-radio-group.d.ts.map +1 -0
  258. package/dist/menu/menu-radio-group.js +71 -0
  259. package/dist/menu/menu-radio-group.js.map +1 -0
  260. package/dist/menu/menu-radio-item.d.ts +22 -0
  261. package/dist/menu/menu-radio-item.d.ts.map +1 -0
  262. package/dist/menu/menu-radio-item.js +116 -0
  263. package/dist/menu/menu-radio-item.js.map +1 -0
  264. package/dist/menu/menu-separator.d.ts +11 -0
  265. package/dist/menu/menu-separator.d.ts.map +1 -0
  266. package/dist/menu/menu-separator.js +29 -0
  267. package/dist/menu/menu-separator.js.map +1 -0
  268. package/dist/menu/menu-sub-trigger.d.ts +46 -0
  269. package/dist/menu/menu-sub-trigger.d.ts.map +1 -0
  270. package/dist/menu/menu-sub-trigger.js +302 -0
  271. package/dist/menu/menu-sub-trigger.js.map +1 -0
  272. package/dist/menu/menu-trigger.d.ts +57 -0
  273. package/dist/menu/menu-trigger.d.ts.map +1 -0
  274. package/dist/menu/menu-trigger.js +351 -0
  275. package/dist/menu/menu-trigger.js.map +1 -0
  276. package/dist/miller/index.d.ts +5 -0
  277. package/dist/miller/index.d.ts.map +1 -0
  278. package/dist/miller/index.js +5 -0
  279. package/dist/miller/index.js.map +1 -0
  280. package/dist/miller/miller-base.d.ts +184 -0
  281. package/dist/miller/miller-base.d.ts.map +1 -0
  282. package/dist/miller/miller-base.js +1249 -0
  283. package/dist/miller/miller-base.js.map +1 -0
  284. package/dist/miller/miller-list.d.ts +30 -0
  285. package/dist/miller/miller-list.d.ts.map +1 -0
  286. package/dist/miller/miller-list.js +192 -0
  287. package/dist/miller/miller-list.js.map +1 -0
  288. package/dist/miller/miller-tree-controller.d.ts +58 -0
  289. package/dist/miller/miller-tree-controller.d.ts.map +1 -0
  290. package/dist/miller/miller-tree-controller.js +134 -0
  291. package/dist/miller/miller-tree-controller.js.map +1 -0
  292. package/dist/miller/types.d.ts +63 -0
  293. package/dist/miller/types.d.ts.map +1 -0
  294. package/dist/miller/types.js +6 -0
  295. package/dist/miller/types.js.map +1 -0
  296. package/dist/mixins/labelled-input-base.d.ts +38 -0
  297. package/dist/mixins/labelled-input-base.d.ts.map +1 -0
  298. package/dist/mixins/labelled-input-base.js +171 -0
  299. package/dist/mixins/labelled-input-base.js.map +1 -0
  300. package/dist/mixins/labelled-input-util.d.ts +3 -0
  301. package/dist/mixins/labelled-input-util.d.ts.map +1 -0
  302. package/dist/mixins/labelled-input-util.js +10 -0
  303. package/dist/mixins/labelled-input-util.js.map +1 -0
  304. package/dist/my-element.d.ts.map +1 -1
  305. package/dist/my-element.js +1 -1
  306. package/dist/my-element.js.map +1 -1
  307. package/dist/narrowed-text/index.d.ts +3 -0
  308. package/dist/narrowed-text/index.d.ts.map +1 -0
  309. package/dist/narrowed-text/index.js +3 -0
  310. package/dist/narrowed-text/index.js.map +1 -0
  311. package/dist/narrowed-text/narrowed-text.d.ts +48 -0
  312. package/dist/narrowed-text/narrowed-text.d.ts.map +1 -0
  313. package/dist/narrowed-text/narrowed-text.js +668 -0
  314. package/dist/narrowed-text/narrowed-text.js.map +1 -0
  315. package/dist/narrowed-text/types.d.ts +20 -0
  316. package/dist/narrowed-text/types.d.ts.map +1 -0
  317. package/dist/narrowed-text/types.js +2 -0
  318. package/dist/narrowed-text/types.js.map +1 -0
  319. package/dist/panel/panel-group.d.ts +23 -0
  320. package/dist/panel/panel-group.d.ts.map +1 -0
  321. package/dist/panel/panel-group.js +109 -0
  322. package/dist/panel/panel-group.js.map +1 -0
  323. package/dist/panel/panel.d.ts +39 -0
  324. package/dist/panel/panel.d.ts.map +1 -0
  325. package/dist/panel/panel.js +417 -0
  326. package/dist/panel/panel.js.map +1 -0
  327. package/dist/plots/colour-map.d.ts +31 -0
  328. package/dist/plots/colour-map.d.ts.map +1 -0
  329. package/dist/plots/colour-map.js +133 -0
  330. package/dist/plots/colour-map.js.map +1 -0
  331. package/dist/plots/data.d.ts +27 -0
  332. package/dist/plots/data.d.ts.map +1 -0
  333. package/dist/plots/data.js +47 -0
  334. package/dist/plots/data.js.map +1 -0
  335. package/dist/plots/single-axis.d.ts +41 -0
  336. package/dist/plots/single-axis.d.ts.map +1 -0
  337. package/dist/plots/single-axis.js +428 -0
  338. package/dist/plots/single-axis.js.map +1 -0
  339. package/dist/plots/svg-utils.d.ts +12 -0
  340. package/dist/plots/svg-utils.d.ts.map +1 -0
  341. package/dist/plots/svg-utils.js +64 -0
  342. package/dist/plots/svg-utils.js.map +1 -0
  343. package/dist/plots/xy-axis.d.ts +42 -0
  344. package/dist/plots/xy-axis.d.ts.map +1 -0
  345. package/dist/plots/xy-axis.js +307 -0
  346. package/dist/plots/xy-axis.js.map +1 -0
  347. package/dist/polar-pad/polar-pad.d.ts +132 -0
  348. package/dist/polar-pad/polar-pad.d.ts.map +1 -0
  349. package/dist/polar-pad/polar-pad.js +598 -0
  350. package/dist/polar-pad/polar-pad.js.map +1 -0
  351. package/dist/radial-input/radial-input.d.ts +45 -0
  352. package/dist/radial-input/radial-input.d.ts.map +1 -0
  353. package/dist/radial-input/radial-input.js +692 -0
  354. package/dist/radial-input/radial-input.js.map +1 -0
  355. package/dist/radial-input/svg-utils.d.ts +147 -0
  356. package/dist/radial-input/svg-utils.d.ts.map +1 -0
  357. package/dist/radial-input/svg-utils.js +346 -0
  358. package/dist/radial-input/svg-utils.js.map +1 -0
  359. package/dist/radial-input/types.d.ts +25 -0
  360. package/dist/radial-input/types.d.ts.map +1 -0
  361. package/dist/radial-input/types.js +5 -0
  362. package/dist/radial-input/types.js.map +1 -0
  363. package/dist/range/range-multi.d.ts +62 -0
  364. package/dist/range/range-multi.d.ts.map +1 -0
  365. package/dist/range/range-multi.js +652 -0
  366. package/dist/range/range-multi.js.map +1 -0
  367. package/dist/range/range.d.ts +23 -0
  368. package/dist/range/range.d.ts.map +1 -0
  369. package/dist/range/range.js +153 -0
  370. package/dist/range/range.js.map +1 -0
  371. package/dist/range-input/index.d.ts +2 -0
  372. package/dist/range-input/index.d.ts.map +1 -0
  373. package/dist/range-input/index.js +2 -0
  374. package/dist/range-input/index.js.map +1 -0
  375. package/dist/range-input/range-input.d.ts +92 -0
  376. package/dist/range-input/range-input.d.ts.map +1 -0
  377. package/dist/range-input/range-input.js +472 -0
  378. package/dist/range-input/range-input.js.map +1 -0
  379. package/dist/selecthorizontal.d.ts +1 -1
  380. package/dist/selecthorizontal.d.ts.map +1 -1
  381. package/dist/selecthorizontal.js +3 -3
  382. package/dist/selecthorizontal.js.map +1 -1
  383. package/dist/snap-container/snap-container.d.ts +45 -0
  384. package/dist/snap-container/snap-container.d.ts.map +1 -0
  385. package/dist/snap-container/snap-container.js +352 -0
  386. package/dist/snap-container/snap-container.js.map +1 -0
  387. package/dist/split-layout/split-layout.d.ts +25 -9
  388. package/dist/split-layout/split-layout.d.ts.map +1 -1
  389. package/dist/split-layout/split-layout.js +520 -66
  390. package/dist/split-layout/split-layout.js.map +1 -1
  391. package/dist/styles/popup.d.ts +11 -0
  392. package/dist/styles/popup.d.ts.map +1 -0
  393. package/dist/styles/popup.js +20 -0
  394. package/dist/styles/popup.js.map +1 -0
  395. package/dist/styles/prominence.d.ts +58 -0
  396. package/dist/styles/prominence.d.ts.map +1 -0
  397. package/dist/styles/prominence.js +94 -0
  398. package/dist/styles/prominence.js.map +1 -0
  399. package/dist/styles/tooltip.d.ts +2 -0
  400. package/dist/styles/tooltip.d.ts.map +1 -0
  401. package/dist/styles/tooltip.js +100 -0
  402. package/dist/styles/tooltip.js.map +1 -0
  403. package/dist/svg-edit-label.js +1 -1
  404. package/dist/svg-edit-label.js.map +1 -1
  405. package/dist/swipe/index.d.ts +2 -0
  406. package/dist/swipe/index.d.ts.map +1 -0
  407. package/dist/swipe/index.js +2 -0
  408. package/dist/swipe/index.js.map +1 -0
  409. package/dist/swipe/swipe.d.ts +65 -0
  410. package/dist/swipe/swipe.d.ts.map +1 -0
  411. package/dist/swipe/swipe.js +229 -0
  412. package/dist/swipe/swipe.js.map +1 -0
  413. package/dist/tabs/tab-layout-item.d.ts.map +1 -1
  414. package/dist/tabs/tab-layout-item.js +1 -1
  415. package/dist/tabs/tab-layout-item.js.map +1 -1
  416. package/dist/tabs/tab-layout.d.ts.map +1 -1
  417. package/dist/tabs/tab-layout.js +1 -1
  418. package/dist/tabs/tab-layout.js.map +1 -1
  419. package/dist/tabs/tab-list-item.d.ts +22 -6
  420. package/dist/tabs/tab-list-item.d.ts.map +1 -1
  421. package/dist/tabs/tab-list-item.js +174 -42
  422. package/dist/tabs/tab-list-item.js.map +1 -1
  423. package/dist/tabs/tab-list.d.ts +15 -5
  424. package/dist/tabs/tab-list.d.ts.map +1 -1
  425. package/dist/tabs/tab-list.js +159 -50
  426. package/dist/tabs/tab-list.js.map +1 -1
  427. package/dist/tabs/tab-panel.d.ts +1 -1
  428. package/dist/tabs/tab-panel.d.ts.map +1 -1
  429. package/dist/tabs/tab-panel.js +2 -2
  430. package/dist/tabs/tab-panel.js.map +1 -1
  431. package/dist/tabs/tab-panels.d.ts +3 -3
  432. package/dist/tabs/tab-panels.d.ts.map +1 -1
  433. package/dist/tabs/tab-panels.js +6 -6
  434. package/dist/tabs/tab-panels.js.map +1 -1
  435. package/dist/timeline/index.d.ts +9 -0
  436. package/dist/timeline/index.d.ts.map +1 -0
  437. package/dist/timeline/index.js +8 -0
  438. package/dist/timeline/index.js.map +1 -0
  439. package/dist/timeline/timeline-controller.d.ts +48 -0
  440. package/dist/timeline/timeline-controller.d.ts.map +1 -0
  441. package/dist/timeline/timeline-controller.js +81 -0
  442. package/dist/timeline/timeline-controller.js.map +1 -0
  443. package/dist/timeline/timeline-draw.d.ts +28 -0
  444. package/dist/timeline/timeline-draw.d.ts.map +1 -0
  445. package/dist/timeline/timeline-draw.js +330 -0
  446. package/dist/timeline/timeline-draw.js.map +1 -0
  447. package/dist/timeline/timeline-element.d.ts +140 -0
  448. package/dist/timeline/timeline-element.d.ts.map +1 -0
  449. package/dist/timeline/timeline-element.js +888 -0
  450. package/dist/timeline/timeline-element.js.map +1 -0
  451. package/dist/timeline/timeline-interactions.d.ts +40 -0
  452. package/dist/timeline/timeline-interactions.d.ts.map +1 -0
  453. package/dist/timeline/timeline-interactions.js +393 -0
  454. package/dist/timeline/timeline-interactions.js.map +1 -0
  455. package/dist/timeline/timeline-styles.d.ts +2 -0
  456. package/dist/timeline/timeline-styles.d.ts.map +1 -0
  457. package/dist/timeline/timeline-styles.js +153 -0
  458. package/dist/timeline/timeline-styles.js.map +1 -0
  459. package/dist/timeline/timeline-track-tabs.d.ts +30 -0
  460. package/dist/timeline/timeline-track-tabs.d.ts.map +1 -0
  461. package/dist/timeline/timeline-track-tabs.js +204 -0
  462. package/dist/timeline/timeline-track-tabs.js.map +1 -0
  463. package/dist/timeline/types.d.ts +144 -0
  464. package/dist/timeline/types.d.ts.map +1 -0
  465. package/dist/timeline/types.js +3 -0
  466. package/dist/timeline/types.js.map +1 -0
  467. package/dist/tree/index.d.ts +5 -0
  468. package/dist/tree/index.d.ts.map +1 -0
  469. package/dist/tree/index.js +5 -0
  470. package/dist/tree/index.js.map +1 -0
  471. package/dist/tree/tree-base.d.ts +70 -0
  472. package/dist/tree/tree-base.d.ts.map +1 -0
  473. package/dist/tree/tree-base.js +1028 -0
  474. package/dist/tree/tree-base.js.map +1 -0
  475. package/dist/tree/tree-controller.d.ts +14 -0
  476. package/dist/tree/tree-controller.d.ts.map +1 -0
  477. package/dist/tree/tree-controller.js +96 -0
  478. package/dist/tree/tree-controller.js.map +1 -0
  479. package/dist/tree/tree-list.d.ts +20 -0
  480. package/dist/tree/tree-list.d.ts.map +1 -0
  481. package/dist/tree/tree-list.js +174 -0
  482. package/dist/tree/tree-list.js.map +1 -0
  483. package/dist/tree/types.d.ts +14 -0
  484. package/dist/tree/types.d.ts.map +1 -0
  485. package/dist/tree/types.js +7 -0
  486. package/dist/tree/types.js.map +1 -0
  487. package/dist/util/checkbox.d.ts +2 -0
  488. package/dist/util/checkbox.d.ts.map +1 -0
  489. package/dist/util/checkbox.js +69 -0
  490. package/dist/util/checkbox.js.map +1 -0
  491. package/dist/util/circle-arc.d.ts +6 -6
  492. package/dist/util/circle-arc.d.ts.map +1 -1
  493. package/dist/util/circle-arc.js +28 -20
  494. package/dist/util/circle-arc.js.map +1 -1
  495. package/dist/util/clamp.d.ts +4 -0
  496. package/dist/util/clamp.d.ts.map +1 -0
  497. package/dist/util/clamp.js +23 -0
  498. package/dist/util/clamp.js.map +1 -0
  499. package/dist/util/compare.d.ts +8 -8
  500. package/dist/util/compare.d.ts.map +1 -1
  501. package/dist/util/compare.js +13 -13
  502. package/dist/util/compare.js.map +1 -1
  503. package/dist/util/content-editable.d.ts +1 -1
  504. package/dist/util/content-editable.d.ts.map +1 -1
  505. package/dist/util/content-editable.js +2 -2
  506. package/dist/util/content-editable.js.map +1 -1
  507. package/dist/util/coordinates.d.ts +3 -0
  508. package/dist/util/coordinates.d.ts.map +1 -0
  509. package/dist/util/coordinates.js +11 -0
  510. package/dist/util/coordinates.js.map +1 -0
  511. package/dist/util/drag.d.ts +16 -0
  512. package/dist/util/drag.d.ts.map +1 -0
  513. package/dist/util/drag.js +20 -0
  514. package/dist/util/drag.js.map +1 -0
  515. package/dist/util/is-numeric.d.ts +2 -0
  516. package/dist/util/is-numeric.d.ts.map +1 -0
  517. package/dist/util/is-numeric.js +9 -0
  518. package/dist/util/is-numeric.js.map +1 -0
  519. package/dist/util/key-value.d.ts +2 -2
  520. package/dist/util/key-value.d.ts.map +1 -1
  521. package/dist/util/key-value.js +4 -5
  522. package/dist/util/key-value.js.map +1 -1
  523. package/dist/util/near.d.ts +2 -0
  524. package/dist/util/near.d.ts.map +1 -0
  525. package/dist/util/near.js +6 -0
  526. package/dist/util/near.js.map +1 -0
  527. package/dist/util/svg-editable-text.d.ts +6 -2
  528. package/dist/util/svg-editable-text.d.ts.map +1 -1
  529. package/dist/util/svg-editable-text.js +5 -7
  530. package/dist/util/svg-editable-text.js.map +1 -1
  531. package/dist/util/time.d.ts.map +1 -1
  532. package/dist/util/time.js +1 -1
  533. package/dist/util/time.js.map +1 -1
  534. package/dist/util/tooltip-controller.d.ts +10 -0
  535. package/dist/util/tooltip-controller.d.ts.map +1 -0
  536. package/dist/util/tooltip-controller.js +237 -0
  537. package/dist/util/tooltip-controller.js.map +1 -0
  538. package/dist/util/tooltip.d.ts +21 -0
  539. package/dist/util/tooltip.d.ts.map +1 -0
  540. package/dist/util/tooltip.js +98 -0
  541. package/dist/util/tooltip.js.map +1 -0
  542. package/dist/util/value-drag.d.ts +33 -0
  543. package/dist/util/value-drag.d.ts.map +1 -0
  544. package/dist/util/value-drag.js +154 -0
  545. package/dist/util/value-drag.js.map +1 -0
  546. package/dist/xy-pad.d.ts +117 -0
  547. package/dist/xy-pad.d.ts.map +1 -0
  548. package/dist/xy-pad.js +455 -0
  549. package/dist/xy-pad.js.map +1 -0
  550. package/package.json +47 -30
  551. package/README.md +0 -14
  552. package/dist/charts/frequency-histogram-plot.d.ts +0 -33
  553. package/dist/charts/frequency-histogram-plot.d.ts.map +0 -1
  554. package/dist/charts/frequency-histogram-plot.js +0 -54
  555. package/dist/charts/frequency-histogram-plot.js.map +0 -1
  556. package/dist/charts/histogram-vis.d.ts +0 -57
  557. package/dist/charts/histogram-vis.d.ts.map +0 -1
  558. package/dist/charts/histogram-vis.js +0 -222
  559. package/dist/charts/histogram-vis.js.map +0 -1
  560. package/dist/charts/plot.d.ts +0 -199
  561. package/dist/charts/plot.d.ts.map +0 -1
  562. package/dist/charts/plot.js +0 -916
  563. package/dist/charts/plot.js.map +0 -1
  564. package/dist/crumb-nav.d.ts +0 -41
  565. package/dist/crumb-nav.d.ts.map +0 -1
  566. package/dist/crumb-nav.js +0 -198
  567. package/dist/crumb-nav.js.map +0 -1
  568. package/dist/crumb-navigation.d.ts +0 -30
  569. package/dist/crumb-navigation.d.ts.map +0 -1
  570. package/dist/crumb-navigation.js +0 -307
  571. package/dist/crumb-navigation.js.map +0 -1
  572. package/dist/dial.d.ts +0 -89
  573. package/dist/dial.d.ts.map +0 -1
  574. package/dist/dial.js +0 -506
  575. package/dist/dial.js.map +0 -1
  576. package/dist/util/drag-controller.d.ts +0 -13
  577. package/dist/util/drag-controller.d.ts.map +0 -1
  578. package/dist/util/drag-controller.js +0 -21
  579. package/dist/util/drag-controller.js.map +0 -1
@@ -0,0 +1,256 @@
1
+ /**
2
+ * ReactiveController that manages "tickled" state for interactive lists.
3
+ *
4
+ * A "tickled" item is one that is under active attention via hover (mouse mode)
5
+ * or keyboard focus (keyboard mode). Only one item can be tickled at a time.
6
+ *
7
+ * The input mode determines which mechanism controls tickled state:
8
+ * - Mouse mode: hover controls tickled, keyboard navigation ignored
9
+ * - Keyboard mode: keyboard navigation controls tickled, hover ignored
10
+ *
11
+ * Last interaction wins - any mouse hover switches to mouse mode, any keyboard
12
+ * navigation switches to keyboard mode.
13
+ *
14
+ * ## Global Mouse Tracking
15
+ *
16
+ * This controller uses a singleton global `pointermove` listener to track actual
17
+ * mouse movement. This prevents `pointerenter` events caused by content scrolling
18
+ * from incorrectly switching to mouse mode when the user is actually using keyboard
19
+ * navigation.
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * class MyList extends LitElement {
24
+ * private tickled = new TickledController(this, {
25
+ * getItems: () => this.items.map((item, i) => ({ id: i, enabled: !item.disabled })),
26
+ * onTickle: (id) => {
27
+ * // Optional: perform side effect when item is tickled
28
+ * console.log('Tickled item:', id);
29
+ * }
30
+ * });
31
+ *
32
+ * render() {
33
+ * return html`
34
+ * <ul @pointerleave=${(e) => this.tickled.handlePointerLeave(e)}>
35
+ * ${this.items.map((item, i) => html`
36
+ * <li
37
+ * class="item ${this.tickled.isTickled(i) ? 'tickled' : ''}"
38
+ * @pointerenter=${() => this.tickled.handlePointerEnter(i)}
39
+ * >${item.label}</li>
40
+ * `)}
41
+ * </ul>
42
+ * `;
43
+ * }
44
+ *
45
+ * private handleKeyDown(e: KeyboardEvent) {
46
+ * if (e.key === 'ArrowDown') {
47
+ * this.tickled.handleKeyboardNavigation('next');
48
+ * } else if (e.key === 'ArrowUp') {
49
+ * this.tickled.handleKeyboardNavigation('previous');
50
+ * }
51
+ * }
52
+ * }
53
+ * ```
54
+ */
55
+ export class TickledController {
56
+ static { this._lastMouseClientX = Number.NaN; }
57
+ static { this._lastMouseClientY = Number.NaN; }
58
+ static { this._mouseMovedSinceKeyboard = true; }
59
+ static { this._globalListenerAttached = false; }
60
+ constructor(host, config) {
61
+ this._tickledId = undefined;
62
+ this.host = host;
63
+ this.config = config;
64
+ this._inputMode = config.initialInputMode ?? `mouse`;
65
+ host.addController(this);
66
+ }
67
+ hostConnected() {
68
+ if (!TickledController._globalListenerAttached) {
69
+ document.addEventListener(`pointermove`, (e) => {
70
+ TickledController.handleGlobalPointerMove(e.clientX, e.clientY);
71
+ }, { passive: true });
72
+ TickledController._globalListenerAttached = true;
73
+ }
74
+ }
75
+ hostDisconnected() {
76
+ // No-op: global listener persists for the lifetime of the page
77
+ }
78
+ /**
79
+ * Get the current input mode
80
+ */
81
+ get inputMode() {
82
+ return this._inputMode;
83
+ }
84
+ /**
85
+ * Get the currently tickled item id
86
+ */
87
+ get tickledId() {
88
+ return this._tickledId;
89
+ }
90
+ /**
91
+ * Check if a specific item is tickled
92
+ */
93
+ isTickled(id) {
94
+ return this._tickledId === id;
95
+ }
96
+ /**
97
+ * Handle global pointer move event.
98
+ * Called automatically by the global listener.
99
+ * Tracks mouse movement to distinguish real hover from content scrolling.
100
+ */
101
+ static handleGlobalPointerMove(clientX, clientY) {
102
+ if (!Number.isNaN(TickledController._lastMouseClientX)) {
103
+ if (clientX !== TickledController._lastMouseClientX
104
+ || clientY !== TickledController._lastMouseClientY) {
105
+ TickledController._mouseMovedSinceKeyboard = true;
106
+ }
107
+ }
108
+ TickledController._lastMouseClientX = clientX;
109
+ TickledController._lastMouseClientY = clientY;
110
+ }
111
+ /**
112
+ * Check if actual mouse movement has occurred since last keyboard interaction.
113
+ * Used to distinguish real hover/leave from content-scrolling-induced events.
114
+ */
115
+ static get hasMouseMovedSinceKeyboard() {
116
+ return TickledController._mouseMovedSinceKeyboard;
117
+ }
118
+ /**
119
+ * Handle pointer enter event on an item (mouse hover).
120
+ * Only processes if actual mouse movement is detected (not content scrolling).
121
+ * Switches to mouse mode and tickles the item.
122
+ */
123
+ handlePointerEnter(id) {
124
+ if (!TickledController._mouseMovedSinceKeyboard) {
125
+ return;
126
+ }
127
+ const items = this.config.getItems();
128
+ const item = items.find(item => item.id === id);
129
+ if (item && item.enabled === false) {
130
+ return;
131
+ }
132
+ const modeChanged = this._inputMode !== `mouse`;
133
+ this._inputMode = `mouse`;
134
+ const previousId = this._tickledId;
135
+ this._tickledId = id;
136
+ this.host.requestUpdate();
137
+ if (previousId !== id && this.config.onTickle) {
138
+ this.config.onTickle(id);
139
+ }
140
+ if ((previousId !== id || modeChanged) && this.config.onStateChange) {
141
+ this.config.onStateChange();
142
+ }
143
+ }
144
+ /**
145
+ * Handle pointer leave event on an item.
146
+ * Only clears tickled state if actual mouse movement is detected.
147
+ * @param _e The pointer event (not used, but kept for API compatibility)
148
+ */
149
+ handlePointerLeave(_e) {
150
+ if (TickledController._mouseMovedSinceKeyboard) {
151
+ this.clearTickled();
152
+ }
153
+ }
154
+ /**
155
+ * Handle keyboard navigation.
156
+ * Switches to keyboard mode and moves tickled state.
157
+ *
158
+ * @param direction - 'next', 'previous', 'first', 'last', or specific id
159
+ */
160
+ handleKeyboardNavigation(direction) {
161
+ const modeChanged = this._inputMode !== `keyboard`;
162
+ this._inputMode = `keyboard`;
163
+ const items = this.config.getItems();
164
+ const enabledItems = items.filter(item => item.enabled !== false);
165
+ if (enabledItems.length === 0) {
166
+ return;
167
+ }
168
+ let newId;
169
+ if (direction === `first`) {
170
+ newId = enabledItems[0].id;
171
+ }
172
+ else if (direction === `last`) {
173
+ newId = enabledItems.at(-1)?.id;
174
+ }
175
+ else if (direction === `next` || direction === `previous`) {
176
+ const currentIndex = enabledItems.findIndex(item => item.id === this._tickledId);
177
+ if (currentIndex === -1) {
178
+ newId = direction === `next` ? enabledItems[0].id : enabledItems.at(-1)?.id;
179
+ }
180
+ else {
181
+ const delta = direction === `next` ? 1 : -1;
182
+ const newIndex = currentIndex + delta;
183
+ if (newIndex >= 0 && newIndex < enabledItems.length) {
184
+ newId = enabledItems[newIndex].id;
185
+ }
186
+ // If newIndex is out of bounds, keep current tickled item
187
+ }
188
+ }
189
+ else {
190
+ const item = enabledItems.find(item => item.id === direction);
191
+ if (item) {
192
+ newId = item.id;
193
+ }
194
+ }
195
+ if (newId !== undefined) {
196
+ const previousId = this._tickledId;
197
+ this._tickledId = newId;
198
+ this.host.requestUpdate();
199
+ if (previousId !== newId && this.config.onTickle) {
200
+ this.config.onTickle(newId);
201
+ }
202
+ if ((previousId !== newId || modeChanged) && this.config.onStateChange) {
203
+ this.config.onStateChange();
204
+ }
205
+ }
206
+ }
207
+ /**
208
+ * Manually set the tickled item (useful for programmatic control).
209
+ * Does NOT change input mode.
210
+ */
211
+ setTickled(id) {
212
+ const previousId = this._tickledId;
213
+ this._tickledId = id;
214
+ this.host.requestUpdate();
215
+ if (previousId !== id && this.config.onTickle) {
216
+ this.config.onTickle(id);
217
+ }
218
+ if (previousId !== id && this.config.onStateChange) {
219
+ this.config.onStateChange();
220
+ }
221
+ }
222
+ /**
223
+ * Clear the tickled state (e.g., on pointer leave).
224
+ * Note: For pointer leave events, prefer using handlePointerLeave() which
225
+ * checks for actual mouse movement.
226
+ */
227
+ clearTickled() {
228
+ if (this._tickledId !== undefined) {
229
+ this._tickledId = undefined;
230
+ this.host.requestUpdate();
231
+ if (this.config.onTickle) {
232
+ this.config.onTickle(undefined);
233
+ }
234
+ if (this.config.onStateChange) {
235
+ this.config.onStateChange();
236
+ }
237
+ }
238
+ }
239
+ /**
240
+ * Manually set the input mode.
241
+ * When switching to keyboard mode, resets the mouse movement tracking.
242
+ */
243
+ setInputMode(mode) {
244
+ if (this._inputMode !== mode) {
245
+ this._inputMode = mode;
246
+ this.host.requestUpdate();
247
+ if (mode === `keyboard`) {
248
+ TickledController._mouseMovedSinceKeyboard = false;
249
+ }
250
+ if (this.config.onStateChange) {
251
+ this.config.onStateChange();
252
+ }
253
+ }
254
+ }
255
+ }
256
+ //# sourceMappingURL=tickled-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tickled-controller.js","sourceRoot":"","sources":["../../src/interaction/tickled-controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Shared CSS styles for tickled interaction pattern.
3
+ *
4
+ * Tickled state is controlled via the `.tickled` CSS class (applied by TickledController).
5
+ * The `tickledItemStyles` provides base styling that all tickled components should use.
6
+ *
7
+ * ## CSS Variable Contract
8
+ *
9
+ * **Style variables (default values defined in `tickledItemStyles`):**
10
+ * - `--item-bg`: Default background (default: transparent)
11
+ * - `--item-bg-tickled`: Background when tickled (default: rgba(0, 0, 0, 0.06))
12
+ * - `--item-bg-selected`: Background when selected (default: rgba(25, 118, 210, 1))
13
+ * - `--item-bg-selected-tickled`: Background when selected AND tickled (default: rgba(21, 101, 192, 1))
14
+ * - `--item-border`: Border style (default: 1px solid transparent)
15
+ * - `--item-border-tickled`: Border when tickled (default: 1px solid var(--accent))
16
+ * - `--item-border-selected`: Border when selected (default: 1px solid rgba(25, 118, 210, 1))
17
+ * - `--item-text-tickled`: Text color when tickled (default: inherit)
18
+ * - `--item-text-selected`: Text color when selected (default: #fff)
19
+ * - `--item-padding`: Item padding (default: 4px 8px)
20
+ * - `--item-border-radius`: Border radius (default: 4px)
21
+ * - `--item-icon-spacing`: Gap between icon and text (default: 4px)
22
+ *
23
+ * ## Usage
24
+ *
25
+ * Components should import both `tickledStyles` and `tickledItemStyles`:
26
+ *
27
+ * ```ts
28
+ * import { tickledStyles, tickledItemStyles } from '../interaction/index.js';
29
+ *
30
+ * class MyComponent extends LitElement {
31
+ * static styles = [
32
+ * tickledStyles,
33
+ * tickledItemStyles,
34
+ * css`
35
+ * :host {
36
+ * --item-bg-tickled: #e0e0e0;
37
+ * --item-bg-selected: #1976d2;
38
+ * }
39
+ * `
40
+ * ];
41
+ * }
42
+ * ```
43
+ */
44
+ export declare const tickledStyles: import("lit").CSSResult;
45
+ /**
46
+ * Shared item styling for tickled components.
47
+ *
48
+ * Provides base styles for interactive items with tickled and selected states.
49
+ * Components should import this in addition to `tickledStyles` and can override
50
+ * CSS variables to customize appearance.
51
+ */
52
+ export declare const tickledItemStyles: import("lit").CSSResult;
53
+ //# sourceMappingURL=tickled-styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tickled-styles.d.ts","sourceRoot":"","sources":["../../src/interaction/tickled-styles.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,eAAO,MAAM,aAAa,yBAIzB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,yBAgD7B,CAAC"}
@@ -0,0 +1,106 @@
1
+ import { css } from 'lit';
2
+ /**
3
+ * Shared CSS styles for tickled interaction pattern.
4
+ *
5
+ * Tickled state is controlled via the `.tickled` CSS class (applied by TickledController).
6
+ * The `tickledItemStyles` provides base styling that all tickled components should use.
7
+ *
8
+ * ## CSS Variable Contract
9
+ *
10
+ * **Style variables (default values defined in `tickledItemStyles`):**
11
+ * - `--item-bg`: Default background (default: transparent)
12
+ * - `--item-bg-tickled`: Background when tickled (default: rgba(0, 0, 0, 0.06))
13
+ * - `--item-bg-selected`: Background when selected (default: rgba(25, 118, 210, 1))
14
+ * - `--item-bg-selected-tickled`: Background when selected AND tickled (default: rgba(21, 101, 192, 1))
15
+ * - `--item-border`: Border style (default: 1px solid transparent)
16
+ * - `--item-border-tickled`: Border when tickled (default: 1px solid var(--accent))
17
+ * - `--item-border-selected`: Border when selected (default: 1px solid rgba(25, 118, 210, 1))
18
+ * - `--item-text-tickled`: Text color when tickled (default: inherit)
19
+ * - `--item-text-selected`: Text color when selected (default: #fff)
20
+ * - `--item-padding`: Item padding (default: 4px 8px)
21
+ * - `--item-border-radius`: Border radius (default: 4px)
22
+ * - `--item-icon-spacing`: Gap between icon and text (default: 4px)
23
+ *
24
+ * ## Usage
25
+ *
26
+ * Components should import both `tickledStyles` and `tickledItemStyles`:
27
+ *
28
+ * ```ts
29
+ * import { tickledStyles, tickledItemStyles } from '../interaction/index.js';
30
+ *
31
+ * class MyComponent extends LitElement {
32
+ * static styles = [
33
+ * tickledStyles,
34
+ * tickledItemStyles,
35
+ * css`
36
+ * :host {
37
+ * --item-bg-tickled: #e0e0e0;
38
+ * --item-bg-selected: #1976d2;
39
+ * }
40
+ * `
41
+ * ];
42
+ * }
43
+ * ```
44
+ */
45
+ export const tickledStyles = css `
46
+ /**
47
+ * No suppression needed - tickled styling is always active.
48
+ */
49
+ `;
50
+ /**
51
+ * Shared item styling for tickled components.
52
+ *
53
+ * Provides base styles for interactive items with tickled and selected states.
54
+ * Components should import this in addition to `tickledStyles` and can override
55
+ * CSS variables to customize appearance.
56
+ */
57
+ export const tickledItemStyles = css `
58
+ :host {
59
+ --item-bg: transparent;
60
+ --item-bg-tickled: rgba(0, 0, 0, 0.06);
61
+ --item-bg-selected: rgba(25, 118, 210, 1);
62
+ --item-bg-selected-tickled: rgba(21, 101, 192, 1);
63
+ --item-border: 1px solid transparent;
64
+ --item-border-tickled: 1px solid var(--accent);
65
+ --item-border-selected: 1px solid rgba(25, 118, 210, 1);
66
+ --item-text: inherit;
67
+ --item-text-tickled: inherit;
68
+ --item-text-selected: #fff;
69
+ --item-padding: 4px 8px;
70
+ --item-border-radius: 4px;
71
+ --item-icon-spacing: 4px;
72
+ }
73
+
74
+ .item {
75
+ display: inline-flex;
76
+ align-items: center;
77
+ gap: var(--item-icon-spacing);
78
+ padding: var(--item-padding);
79
+ background: var(--item-bg);
80
+ border: var(--item-border);
81
+ border-radius: var(--item-border-radius);
82
+ cursor: pointer;
83
+ user-select: none;
84
+ white-space: nowrap;
85
+ transition: background var(--transition, 0.1s ease-out), border-color var(--transition, 0.1s ease-out);
86
+ }
87
+
88
+ .item.tickled {
89
+ background: var(--item-bg-tickled);
90
+ border-color: var(--item-border-tickled);
91
+ color: var(--item-text-tickled);
92
+ }
93
+
94
+ .item.selected {
95
+ background: var(--item-bg-selected);
96
+ border-color: var(--item-border-selected);
97
+ color: var(--item-text-selected);
98
+ }
99
+
100
+ .item.selected.tickled {
101
+ background: var(--item-bg-selected-tickled);
102
+ outline: 2px dashed var(--surface-3);
103
+ outline-offset: -2px;
104
+ }
105
+ `;
106
+ //# sourceMappingURL=tickled-styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tickled-styles.js","sourceRoot":"","sources":["../../src/interaction/tickled-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAA;;;;CAI/B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDnC,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { ReactiveController, ReactiveControllerHost } from 'lit';
2
+ import type { TickledController, TickledItem } from './tickled-controller.js';
3
+ export type TreeKeyboardNavItemId = string;
4
+ export type TreeKeyboardNavCallbacks = {
5
+ getItems: () => ReadonlyArray<TickledItem<TreeKeyboardNavItemId>>;
6
+ onExpand: (id: TreeKeyboardNavItemId) => void;
7
+ onCollapse: (id: TreeKeyboardNavItemId) => void;
8
+ onActivate: (id: TreeKeyboardNavItemId) => void;
9
+ onSelect?: (id: TreeKeyboardNavItemId) => void;
10
+ onEscape?: () => void;
11
+ isLeaf: (id: TreeKeyboardNavItemId) => boolean;
12
+ isExpanded: (id: TreeKeyboardNavItemId) => boolean;
13
+ getParentId?: (id: TreeKeyboardNavItemId) => TreeKeyboardNavItemId | undefined;
14
+ };
15
+ export type TreeKeyboardNavControllerConfig = {
16
+ callbacks: TreeKeyboardNavCallbacks;
17
+ disableKeyboardNavigation?: () => boolean;
18
+ };
19
+ export declare class TreeKeyboardNavController implements ReactiveController {
20
+ #private;
21
+ private host;
22
+ private tickled;
23
+ private callbacks;
24
+ private disableKeyboardNavigation;
25
+ constructor(host: ReactiveControllerHost, tickled: TickledController<TreeKeyboardNavItemId>, config: TreeKeyboardNavControllerConfig);
26
+ hostConnected(): void;
27
+ hostDisconnected(): void;
28
+ handleKeyDown: (event: KeyboardEvent) => void;
29
+ }
30
+ //# sourceMappingURL=tree-keyboard-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-keyboard-controller.d.ts","sourceRoot":"","sources":["../../src/interaction/tree-keyboard-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,KAAK,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE9E,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAE3C,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,MAAM,aAAa,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAClE,QAAQ,EAAE,CAAC,EAAE,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC9C,UAAU,EAAE,CAAC,EAAE,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAChD,UAAU,EAAE,CAAC,EAAE,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAChD,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,EAAE,CAAC,EAAE,EAAE,qBAAqB,KAAK,OAAO,CAAC;IAC/C,UAAU,EAAE,CAAC,EAAE,EAAE,qBAAqB,KAAK,OAAO,CAAC;IACnD,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,qBAAqB,KAAK,qBAAqB,GAAG,SAAS,CAAC;CAChF,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,SAAS,EAAE,wBAAwB,CAAC;IACpC,yBAAyB,CAAC,EAAE,MAAM,OAAO,CAAC;CAC3C,CAAC;AAEF,qBAAa,yBAA0B,YAAW,kBAAkB;;IAClE,OAAO,CAAC,IAAI,CAAyB;IACrC,OAAO,CAAC,OAAO,CAA2C;IAC1D,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,yBAAyB,CAAgB;gBAErC,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,iBAAiB,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,+BAA+B;IAQpI,aAAa,IAAI,IAAI;IAErB,gBAAgB,IAAI,IAAI;IAExB,aAAa,GAAI,OAAO,aAAa,KAAG,IAAI,CAqC1C;CA8DH"}
@@ -0,0 +1,105 @@
1
+ export class TreeKeyboardNavController {
2
+ constructor(host, tickled, config) {
3
+ this.handleKeyDown = (event) => {
4
+ if (this.disableKeyboardNavigation()) {
5
+ return;
6
+ }
7
+ const { key } = event;
8
+ if ([`ArrowDown`, `ArrowUp`, `ArrowLeft`, `ArrowRight`, `Enter`, `Escape`].includes(key)) {
9
+ this.tickled.setInputMode(`keyboard`);
10
+ }
11
+ switch (key) {
12
+ case `ArrowDown`:
13
+ event.preventDefault();
14
+ this.#handleArrowDown();
15
+ break;
16
+ case `ArrowUp`:
17
+ event.preventDefault();
18
+ this.#handleArrowUp();
19
+ break;
20
+ case `ArrowRight`:
21
+ event.preventDefault();
22
+ this.#handleArrowRight();
23
+ break;
24
+ case `ArrowLeft`:
25
+ event.preventDefault();
26
+ this.#handleArrowLeft();
27
+ break;
28
+ case `Enter`:
29
+ event.preventDefault();
30
+ this.#handleEnter();
31
+ break;
32
+ case `Escape`:
33
+ event.preventDefault();
34
+ this.callbacks.onEscape?.();
35
+ break;
36
+ }
37
+ };
38
+ this.host = host;
39
+ this.tickled = tickled;
40
+ this.callbacks = config.callbacks;
41
+ this.disableKeyboardNavigation = config.disableKeyboardNavigation ?? (() => false);
42
+ host.addController(this);
43
+ }
44
+ hostConnected() { }
45
+ hostDisconnected() { }
46
+ #handleArrowDown() {
47
+ this.tickled.handleKeyboardNavigation(`next`);
48
+ }
49
+ #handleArrowUp() {
50
+ this.tickled.handleKeyboardNavigation(`previous`);
51
+ }
52
+ #handleArrowRight() {
53
+ const currentId = this.tickled.tickledId;
54
+ if (!currentId)
55
+ return;
56
+ if (this.callbacks.isLeaf(currentId)) {
57
+ return;
58
+ }
59
+ if (!this.callbacks.isExpanded(currentId)) {
60
+ this.callbacks.onExpand(currentId);
61
+ this.tickled.setTickled(currentId);
62
+ }
63
+ else {
64
+ const items = this.callbacks.getItems();
65
+ const currentIdx = items.findIndex(item => item.id === currentId);
66
+ if (currentIdx !== -1 && currentIdx + 1 < items.length) {
67
+ const nextItem = items[currentIdx + 1];
68
+ if (nextItem.enabled !== false) {
69
+ this.tickled.setTickled(nextItem.id);
70
+ }
71
+ }
72
+ }
73
+ }
74
+ #handleArrowLeft() {
75
+ const currentId = this.tickled.tickledId;
76
+ if (!currentId)
77
+ return;
78
+ if (this.callbacks.isLeaf(currentId)) {
79
+ const parentId = this.callbacks.getParentId?.(currentId);
80
+ if (parentId) {
81
+ this.tickled.setTickled(parentId);
82
+ if (this.callbacks.isExpanded(parentId)) {
83
+ this.callbacks.onCollapse(parentId);
84
+ }
85
+ }
86
+ }
87
+ else if (this.callbacks.isExpanded(currentId)) {
88
+ this.callbacks.onCollapse(currentId);
89
+ }
90
+ else {
91
+ const parentId = this.callbacks.getParentId?.(currentId);
92
+ if (parentId) {
93
+ this.tickled.setTickled(parentId);
94
+ }
95
+ }
96
+ }
97
+ #handleEnter() {
98
+ const currentId = this.tickled.tickledId;
99
+ if (!currentId)
100
+ return;
101
+ this.callbacks.onActivate(currentId);
102
+ this.callbacks.onSelect?.(currentId);
103
+ }
104
+ }
105
+ //# sourceMappingURL=tree-keyboard-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-keyboard-controller.js","sourceRoot":"","sources":["../../src/interaction/tree-keyboard-controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Keyboard interaction constants
3
+ */
4
+ export declare const KEY_STEP_DIVISOR = 10;
5
+ /**
6
+ * Resolve the effective keyboard nudge step for a single numeric axis.
7
+ *
8
+ * Priority: stops (quantised grid) > explicit step > percentage of range.
9
+ *
10
+ * @param range max - min for the axis
11
+ * @param stops number of quantised divisions (undefined or ≤1 = ignored)
12
+ * @param step explicit absolute step size (undefined = ignored)
13
+ * @param defaultFraction fraction of range used when neither stops nor step is set (default 0.1 = 10%)
14
+ */
15
+ export declare function resolveStep(range: number, stops: number | undefined, step: number | undefined, defaultFraction?: number): number;
16
+ //# sourceMappingURL=keyboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../src/keyboard.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,eAAe,SAAM,GACpB,MAAM,CAIR"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Keyboard interaction constants
3
+ */
4
+ export const KEY_STEP_DIVISOR = 10;
5
+ /**
6
+ * Resolve the effective keyboard nudge step for a single numeric axis.
7
+ *
8
+ * Priority: stops (quantised grid) > explicit step > percentage of range.
9
+ *
10
+ * @param range max - min for the axis
11
+ * @param stops number of quantised divisions (undefined or ≤1 = ignored)
12
+ * @param step explicit absolute step size (undefined = ignored)
13
+ * @param defaultFraction fraction of range used when neither stops nor step is set (default 0.1 = 10%)
14
+ */
15
+ export function resolveStep(range, stops, step, defaultFraction = 0.1) {
16
+ if (stops !== undefined && stops > 1)
17
+ return range / stops;
18
+ if (step !== undefined)
19
+ return step;
20
+ return range * defaultFraction;
21
+ }
22
+ //# sourceMappingURL=keyboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../src/keyboard.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAEnC;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CACzB,KAAa,EACb,KAAyB,EACzB,IAAwB,EACxB,eAAe,GAAG,GAAG;IAErB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,KAAK,GAAG,KAAK,CAAC;IAC3D,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,KAAK,GAAG,eAAe,CAAC;AACjC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './labelled-radial-input.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/labelled-radial-input/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './labelled-radial-input.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/labelled-radial-input/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC"}