@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,97 @@
1
+ import * as _$lit from "lit";
2
+ import { LitElement, PropertyValues } from "lit";
3
+
4
+ //#region src/ac-text/ac-text.d.ts
5
+ type AcTextItem = {
6
+ readonly label: string;
7
+ readonly subLabel?: string;
8
+ readonly icon?: string;
9
+ readonly key?: string;
10
+ readonly data?: unknown; /** When true, Tab-accept will not append `tabSuffix`. */
11
+ readonly isLeaf?: boolean; /** Character positions within label that matched the query, used for CSS highlight rendering. */
12
+ readonly positions?: ReadonlySet<number>;
13
+ };
14
+ type AcTextSelectDetail = {
15
+ readonly item: AcTextItem;
16
+ readonly query: string;
17
+ };
18
+ type AcTextSelectEvent = CustomEvent<AcTextSelectDetail>;
19
+ /**
20
+ * Fired when the user commits a value — either by pressing Enter on typed text
21
+ * or by selecting an item from the autocomplete popup (keyboard or click).
22
+ */
23
+ type AcTextChangeDetail = {
24
+ /** The committed text value (typed text, or the selected item's label). */readonly value: string;
25
+ /**
26
+ * The item key. For autocomplete items: `item.key ?? item.label`.
27
+ * For plain typed text: the text itself.
28
+ */
29
+ readonly key: string; /** The item's `data` payload. Only present for autocomplete selections. */
30
+ readonly data?: unknown; /** Whether the commit came from plain typed text or an autocomplete selection. */
31
+ readonly source: `text` | `autocomplete`;
32
+ };
33
+ type AcTextChangeEvent = CustomEvent<AcTextChangeDetail>;
34
+ type AcTextCompletionProvider = (query: string, signal: AbortSignal) => Promise<AcTextItem[]> | AcTextItem[];
35
+ /**
36
+ * VS Code command-palette style autocomplete text input.
37
+ *
38
+ * Set `completionProvider` to a function that returns matching items for a
39
+ * given query string. Results are shown in a popup that only exists in the
40
+ * DOM while the input has focus.
41
+ *
42
+ * @fires {AcTextSelectEvent} ac-select — when an autocomplete item is selected
43
+ * @fires {AcTextChangeEvent} change — when the user commits a value (Enter on typed text or autocomplete selection)
44
+ *
45
+ * @example
46
+ * ```html
47
+ * <ixfx-ac-text placeholder="Search commands…"></ixfx-ac-text>
48
+ * ```
49
+ * ```ts
50
+ * el.completionProvider = async (query) => commands.filter(c =>
51
+ * c.label.toLowerCase().includes(query.toLowerCase())
52
+ * );
53
+ * el.addEventListener('change', e => console.log(e.detail));
54
+ * ```
55
+ */
56
+ declare class AcTextElement extends LitElement {
57
+ #private;
58
+ /** Provides completion results for a query string. */
59
+ completionProvider: AcTextCompletionProvider | undefined;
60
+ /** Placeholder text for the input. */
61
+ placeholder: string;
62
+ /** Maximum number of query results to cache (LRU). */
63
+ cacheSize: number;
64
+ /** Debounce delay in ms before invoking the provider after keystroke. */
65
+ debounceMs: number;
66
+ /**
67
+ * Pre-populate the input with this value. Updated externally after construction is ignored
68
+ * unless the input is not currently focused.
69
+ */
70
+ value: string;
71
+ /**
72
+ * String appended to the label when Tab is used to accept a suggestion.
73
+ * Useful for path-style inputs where Tab-accepting a segment should add the separator.
74
+ */
75
+ tabSuffix: string;
76
+ private _query;
77
+ private _results;
78
+ private _isOpen;
79
+ private _isLoading;
80
+ private tickled;
81
+ constructor();
82
+ disconnectedCallback(): void;
83
+ protected updated(changedProps: PropertyValues): void;
84
+ focus(options?: FocusOptions, selectionStart?: number, selectionEnd?: number): void;
85
+ focusWithValue(value: string, selectionStart?: number, selectionEnd?: number): void;
86
+ selectRange(start: number, end?: number): void;
87
+ protected render(): _$lit.TemplateResult<1>;
88
+ static styles: _$lit.CSSResult[];
89
+ }
90
+ declare global {
91
+ interface HTMLElementTagNameMap {
92
+ 'ixfx-ac-text': AcTextElement;
93
+ }
94
+ } //# sourceMappingURL=ac-text.d.ts.map
95
+ //#endregion
96
+ export { AcTextChangeDetail, AcTextChangeEvent, AcTextCompletionProvider, AcTextElement, AcTextItem, AcTextSelectDetail, AcTextSelectEvent };
97
+ //# sourceMappingURL=ac-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ac-text.d.ts","names":[],"sources":["../src/ac-text/ac-text.ts"],"mappings":";;;;KAaY,UAAA;EAAA,SACD,KAAA;EAAA,SACA,QAAA;EAAA,SACA,IAAA;EAAA,SACA,GAAA;EAAA,SACA,IAAA,YAJA;EAAA,SAMA,MAAA,YAJA;EAAA,SAMA,SAAA,GAAY,WAAA;AAAA;AAAA,KAGX,kBAAA;EAAA,SACD,IAAA,EAAM,UAAA;EAAA,SACN,KAAA;AAAA;AAAA,KAGC,iBAAA,GAAoB,WAAA,CAAY,kBAAA;AAL5C;;;;AAAA,KAWY,kBAAA;EAVK,oFAYN,KAAA;EAXK;;AAGhB;;EAHgB,SAgBL,GAAA,UAbqB;EAAA,SAerB,IAAA,YATC;EAAA,SAWD,MAAA;AAAA;AAAA,KAGC,iBAAA,GAAoB,WAAA,CAAY,kBAAA;AAAA,KAEhC,wBAAA,IACP,KAAA,UAAe,MAAA,EAAQ,WAAA,KAAgB,OAAA,CAAQ,UAAA,MAAgB,UAAA;;;;;;AAHpE;;;;;AAEA;;;;;;;;;;;cAoDa,aAAA,SAAsB,UAAA;EAAA;EAnDiB;EAsDlD,kBAAA,EAAoB,wBAAA;EAtDwD;EA0D5E,WAAA;EAPW;EAWX,SAAA;;EAIA,UAAA;EAwCyC;;;;EAjCzC,KAAA;EAtB2C;;;;EA6B3C,SAAA;EAAA,QAEiB,MAAA;EAAA,QACA,QAAA;EAAA,QACA,OAAA;EAAA,QACA,UAAA;EAAA,QAET,OAAA;;EAaC,oBAAA,CAAA;EAAA,UAMU,OAAA,CAAQ,YAAA,EAAc,cAAA;EAiChC,KAAA,CAAM,OAAA,GAAU,YAAA,EAAc,cAAA,WAAyB,YAAA;EAWhE,cAAA,CAAe,KAAA,UAAe,cAAA,WAAyB,YAAA;EAavD,WAAA,CAAY,KAAA,UAAe,GAAA;EAAA,UAmPR,MAAA,CAAA,GA3QkB,KAAA,CA2QZ,cAAA;EAAA,OA6BT,MAAA,EA7BS,KAAA,CA6BH,SAAA;AAAA;AAAA,QAgJhB,MAAA;EAAA,UACI,qBAAA;IACR,cAAA,EAAgB,aAAA;EAAA;AAAA"}
@@ -0,0 +1,484 @@
1
+ import { r as clearHighlights, t as applyHighlights } from "./highlight-CAjwQ4GE.js";
2
+ import { n as tickledStyles, r as TickledController } from "./tickled-styles-Bg3QbcrD.js";
3
+ import { t as __decorate } from "./decorate-BZbkqIhA.js";
4
+ import "./icon-BR5aTIiP.js";
5
+ import { LitElement, css, html, nothing } from "lit";
6
+ import { customElement, property, state } from "lit/decorators.js";
7
+ //#region src/ac-text/ac-text.ts
8
+ const HIGHLIGHT_KEY = `ac-text-highlight`;
9
+ function makeLruCache(maxSize) {
10
+ const map = /* @__PURE__ */ new Map();
11
+ return {
12
+ get: (key) => map.get(key),
13
+ set: (key, value) => {
14
+ if (map.has(key)) map.delete(key);
15
+ map.set(key, value);
16
+ if (map.size > maxSize) map.delete(map.keys().next().value);
17
+ },
18
+ has: (key) => map.has(key),
19
+ clear: () => map.clear()
20
+ };
21
+ }
22
+ let AcTextElement = class AcTextElement extends LitElement {
23
+ #cache;
24
+ #debounceTimer;
25
+ #abortController;
26
+ constructor() {
27
+ super();
28
+ this.placeholder = ``;
29
+ this.cacheSize = 20;
30
+ this.debounceMs = 150;
31
+ this.value = ``;
32
+ this.tabSuffix = ``;
33
+ this._query = ``;
34
+ this._results = [];
35
+ this._isOpen = false;
36
+ this._isLoading = false;
37
+ this.tickled = new TickledController(this, { getItems: () => this._results.map((_, i) => ({
38
+ id: i,
39
+ enabled: true
40
+ })) });
41
+ this.#cache = makeLruCache(20);
42
+ this.#onFocus = () => {
43
+ this._isOpen = true;
44
+ if (this._query.trim()) this.#triggerQuery(this._query);
45
+ };
46
+ this.#onBlur = () => {
47
+ this.#cancelPending();
48
+ this._isOpen = false;
49
+ this.tickled.clearTickled();
50
+ };
51
+ this.#onInput = (e) => {
52
+ const input = e.target;
53
+ this._query = input.value;
54
+ if (this.#debounceTimer !== void 0) clearTimeout(this.#debounceTimer);
55
+ if (!this._query.trim()) {
56
+ this._results = [];
57
+ this.tickled.clearTickled();
58
+ this._isLoading = false;
59
+ this._isOpen = false;
60
+ return;
61
+ }
62
+ this._isOpen = true;
63
+ this.#debounceTimer = setTimeout(() => {
64
+ this.#triggerQuery(this._query);
65
+ }, this.debounceMs);
66
+ };
67
+ this.#onKeyDown = (e) => {
68
+ switch (e.key) {
69
+ case `ArrowDown`:
70
+ if (!this._isOpen) return;
71
+ e.preventDefault();
72
+ if (this._results.length === 0) return;
73
+ this.tickled.handleKeyboardNavigation(`next`);
74
+ this.#scrollActiveIntoView();
75
+ break;
76
+ case `ArrowUp`:
77
+ if (!this._isOpen) return;
78
+ e.preventDefault();
79
+ if (this._results.length === 0) return;
80
+ this.tickled.handleKeyboardNavigation(`previous`);
81
+ this.#scrollActiveIntoView();
82
+ break;
83
+ case `Enter`: {
84
+ const tickledIndex = this.tickled.tickledId ?? -1;
85
+ if (this._isOpen && tickledIndex >= 0 && this._results[tickledIndex]) {
86
+ e.preventDefault();
87
+ this.#selectItem(this._results[tickledIndex]);
88
+ } else if (this._query.trim()) {
89
+ e.preventDefault();
90
+ this.#commitText(this._query);
91
+ }
92
+ break;
93
+ }
94
+ case `Tab`: {
95
+ const tickledIndex = this.tickled.tickledId ?? -1;
96
+ if (this._isOpen && tickledIndex >= 0 && this._results[tickledIndex]) {
97
+ e.preventDefault();
98
+ const tabItem = this._results[tickledIndex];
99
+ this._query = tabItem.label + (tabItem.isLeaf ? `` : this.tabSuffix);
100
+ this.tickled.clearTickled();
101
+ this.#triggerQuery(this._query);
102
+ }
103
+ break;
104
+ }
105
+ case `Escape`:
106
+ if (!this._isOpen) return;
107
+ e.preventDefault();
108
+ this.#closePopup();
109
+ break;
110
+ }
111
+ };
112
+ this.#onItemPointerDown = (e, item) => {
113
+ e.preventDefault();
114
+ this.#selectItem(item);
115
+ };
116
+ this.#cache = makeLruCache(this.cacheSize);
117
+ }
118
+ disconnectedCallback() {
119
+ super.disconnectedCallback();
120
+ this.#cancelPending();
121
+ clearHighlights({ key: HIGHLIGHT_KEY });
122
+ }
123
+ updated(changedProps) {
124
+ if (changedProps.has(`completionProvider`)) this.#cache.clear();
125
+ if (changedProps.has(`cacheSize`)) this.#cache = makeLruCache(this.cacheSize);
126
+ if (changedProps.has(`value`)) {
127
+ const input = this.shadowRoot?.querySelector(`input`);
128
+ if (!input || document.activeElement !== input) this._query = this.value;
129
+ }
130
+ this.#applyHighlights();
131
+ }
132
+ #applyHighlights() {
133
+ if (!this._isOpen || !this.shadowRoot) {
134
+ clearHighlights({ key: HIGHLIGHT_KEY });
135
+ return;
136
+ }
137
+ const labelEls = this.shadowRoot.querySelectorAll(`.item-label`);
138
+ const targets = [];
139
+ labelEls.forEach((el, index) => {
140
+ const positions = this._results[index]?.positions;
141
+ if (!positions?.size) return;
142
+ targets.push({
143
+ element: el,
144
+ text: this._results[index].label,
145
+ positions
146
+ });
147
+ });
148
+ applyHighlights(targets, { key: HIGHLIGHT_KEY });
149
+ }
150
+ focus(options, selectionStart, selectionEnd) {
151
+ const input = this.shadowRoot?.querySelector(`input`);
152
+ if (!input) return;
153
+ input.focus(options);
154
+ const start = selectionStart ?? input.value.length;
155
+ const end = selectionEnd ?? input.value.length;
156
+ input.setSelectionRange(start, end);
157
+ input.scrollLeft = input.scrollWidth;
158
+ }
159
+ focusWithValue(value, selectionStart, selectionEnd) {
160
+ this._query = value;
161
+ this.updateComplete.then(() => {
162
+ const input = this.shadowRoot?.querySelector(`input`);
163
+ if (!input) return;
164
+ input.focus();
165
+ const start = selectionStart ?? input.value.length;
166
+ const end = selectionEnd ?? input.value.length;
167
+ input.setSelectionRange(start, end);
168
+ });
169
+ }
170
+ selectRange(start, end) {
171
+ const input = this.shadowRoot?.querySelector(`input`);
172
+ if (!input) return;
173
+ const endPos = end ?? input.value.length;
174
+ input.setSelectionRange(start, endPos);
175
+ }
176
+ #onFocus;
177
+ #onBlur;
178
+ #onInput;
179
+ #onKeyDown;
180
+ /** pointerdown beats blur — prevents popup vanishing before click registers */
181
+ #onItemPointerDown;
182
+ #triggerQuery(query) {
183
+ if (!this.completionProvider) return;
184
+ const cached = this.#cache.get(query);
185
+ if (cached !== void 0) {
186
+ this._results = cached;
187
+ this.tickled.clearTickled();
188
+ this._isLoading = false;
189
+ return;
190
+ }
191
+ this.#abortController?.abort();
192
+ this.#abortController = new AbortController();
193
+ const { signal } = this.#abortController;
194
+ this._isLoading = true;
195
+ Promise.resolve(this.completionProvider(query, signal)).then((results) => {
196
+ if (signal.aborted) return;
197
+ this.#cache.set(query, results);
198
+ this._results = results;
199
+ this.tickled.clearTickled();
200
+ this._isLoading = false;
201
+ }).catch((err) => {
202
+ if (signal.aborted) return;
203
+ console.error(`[ixfx-ac-text] completionProvider error:`, err);
204
+ this._results = [];
205
+ this._isLoading = false;
206
+ });
207
+ }
208
+ #selectItem(item) {
209
+ this.dispatchEvent(new CustomEvent(`ac-select`, {
210
+ detail: {
211
+ item,
212
+ query: this._query
213
+ },
214
+ bubbles: true,
215
+ composed: true
216
+ }));
217
+ this.dispatchEvent(new CustomEvent(`change`, {
218
+ detail: {
219
+ value: item.label,
220
+ key: item.key ?? item.label,
221
+ data: item.data,
222
+ source: `autocomplete`
223
+ },
224
+ bubbles: true,
225
+ composed: true
226
+ }));
227
+ this._query = item.label;
228
+ this._isOpen = false;
229
+ this.tickled.clearTickled();
230
+ }
231
+ #commitText(text) {
232
+ this.dispatchEvent(new CustomEvent(`change`, {
233
+ detail: {
234
+ value: text,
235
+ key: text,
236
+ source: `text`
237
+ },
238
+ bubbles: true,
239
+ composed: true
240
+ }));
241
+ this._isOpen = false;
242
+ this.tickled.clearTickled();
243
+ }
244
+ #closePopup() {
245
+ this._isOpen = false;
246
+ this.tickled.clearTickled();
247
+ clearHighlights({ key: HIGHLIGHT_KEY });
248
+ }
249
+ #cancelPending() {
250
+ if (this.#debounceTimer !== void 0) {
251
+ clearTimeout(this.#debounceTimer);
252
+ this.#debounceTimer = void 0;
253
+ }
254
+ this.#abortController?.abort();
255
+ this.#abortController = void 0;
256
+ this._isLoading = false;
257
+ }
258
+ #scrollActiveIntoView() {
259
+ this.updateComplete.then(() => {
260
+ (this.shadowRoot?.querySelector(`.item.tickled`))?.scrollIntoView({ block: `nearest` });
261
+ });
262
+ }
263
+ #renderItem(item, index) {
264
+ const isTickled = this.tickled.isTickled(index);
265
+ return html`
266
+ <div
267
+ class="item ${isTickled ? `tickled` : ``}"
268
+ role="option"
269
+ id="ac-item-${index}"
270
+ aria-selected=${isTickled}
271
+ @pointerenter=${() => this.tickled.handlePointerEnter(index)}
272
+ @pointerdown=${(e) => this.#onItemPointerDown(e, item)}
273
+ >
274
+ ${item.icon ? html`<ixfx-icon class="item-icon" name=${item.icon}></ixfx-icon>` : nothing}
275
+ <span class="item-label">${item.label}</span>
276
+ ${item.subLabel ? html`<span class="item-sublabel">${item.subLabel}</span>` : nothing}
277
+ </div>
278
+ `;
279
+ }
280
+ #renderPopup() {
281
+ const showEmpty = !this._isLoading && this._results.length === 0;
282
+ return html`
283
+ <div
284
+ class="popup"
285
+ role="listbox"
286
+ aria-label="Suggestions"
287
+ data-input-mode=${this.tickled.inputMode}
288
+ @pointerleave=${(e) => this.tickled.handlePointerLeave(e)}
289
+ >
290
+ ${showEmpty ? html`<div class="no-results">No matching results</div>` : this._results.map((item, i) => this.#renderItem(item, i))}
291
+ </div>
292
+ `;
293
+ }
294
+ render() {
295
+ const tickledIndex = this.tickled.tickledId ?? -1;
296
+ const activeDescendant = tickledIndex >= 0 ? `ac-item-${tickledIndex}` : void 0;
297
+ return html`
298
+ <div class="input-wrapper">
299
+ <input
300
+ type="text"
301
+ .value=${this._query}
302
+ placeholder=${this.placeholder || nothing}
303
+ autocomplete="off"
304
+ spellcheck="false"
305
+ role="combobox"
306
+ aria-autocomplete="list"
307
+ aria-expanded=${this._isOpen}
308
+ aria-activedescendant=${activeDescendant ?? nothing}
309
+ @input=${this.#onInput}
310
+ @keydown=${this.#onKeyDown}
311
+ @focus=${this.#onFocus}
312
+ @blur=${this.#onBlur}
313
+ >
314
+ ${this._isLoading ? html`<span class="spinner" aria-hidden="true"></span>` : nothing}
315
+ </div>
316
+ ${this._isOpen ? this.#renderPopup() : nothing}
317
+ `;
318
+ }
319
+ static {
320
+ this.styles = [tickledStyles, css`
321
+ :host {
322
+ display: block;
323
+ position: relative;
324
+ font-family: var(--font-family, system-ui, sans-serif);
325
+ font-size: var(--text-m, 12px);
326
+ color: var(--surface-2-text);
327
+ }
328
+
329
+ /* ---- Input ---- */
330
+
331
+ .input-wrapper {
332
+ display: flex;
333
+ align-items: center;
334
+ position: relative;
335
+ }
336
+
337
+ input {
338
+ appearance: none;
339
+ width: 100%;
340
+ box-sizing: border-box;
341
+ padding: var(--ac-input-padding, var(--space-m, 8px) var(--space-l, 12px));
342
+ background: var(--ac-input-background, var(--surface-3, var(--surface-2)));
343
+ color: var(--surface-2-text);
344
+ border: var(--ac-input-border, var(--border));
345
+ border-radius: var(--ac-input-border-radius, var(--radius-m, 4px));
346
+ font: inherit;
347
+ caret-color: var(--accent);
348
+ outline: none;
349
+ transition: border-color var(--transition, 0.15s ease-out);
350
+ }
351
+
352
+ input:focus {
353
+ border-color: var(--accent);
354
+ }
355
+
356
+ input::placeholder {
357
+ color: var(--surface-muted-text);
358
+ }
359
+
360
+ /* ---- Spinner ---- */
361
+
362
+ .spinner {
363
+ position: absolute;
364
+ right: var(--space-m, 8px);
365
+ width: 12px;
366
+ height: 12px;
367
+ border: 2px solid var(--surface-5);
368
+ border-top-color: var(--accent);
369
+ border-radius: 50%;
370
+ animation: ac-spin 0.7s linear infinite;
371
+ flex-shrink: 0;
372
+ pointer-events: none;
373
+ }
374
+
375
+ @keyframes ac-spin {
376
+ to { transform: rotate(360deg); }
377
+ }
378
+
379
+ /* ---- Popup ---- */
380
+
381
+ .popup {
382
+ position: absolute;
383
+ top: calc(100% + 2px);
384
+ left: 0;
385
+ right: 0;
386
+ z-index: 100;
387
+ background: var(--surface-3, var(--surface-2));
388
+ border: var(--border);
389
+ border-radius: var(--radius-m, 4px);
390
+ box-shadow: var(--shadow-l, 0 4px 24px rgba(0, 0, 0, 0.5));
391
+ padding: var(--space-xs, 3px) 0;
392
+ max-height: 280px;
393
+ overflow-y: auto;
394
+ font-size: var(--ac-popup-font-size, var(--text-s, 11px));
395
+ }
396
+
397
+ /* ---- Items ---- */
398
+
399
+ .item {
400
+ display: flex;
401
+ align-items: center;
402
+ gap: var(--space-m, 8px);
403
+ padding: var(--space-xs, 3px) var(--space-l, 12px);
404
+ cursor: pointer;
405
+ border-radius: var(--radius-s, 3px);
406
+ margin: 0 var(--space-xs, 3px);
407
+ transition: background var(--transition, 0.1s ease-out);
408
+ user-select: none;
409
+ white-space: nowrap;
410
+ min-height: 28px;
411
+ }
412
+
413
+
414
+
415
+ .item.tickled {
416
+ background: var(--_item-focused-bg, var(--accent));
417
+ color: var(--accent-text, #fff);
418
+ }
419
+
420
+ .item.tickled .item-sublabel {
421
+ color: color-mix(in srgb, var(--accent-text, #fff) 70%, transparent);
422
+ }
423
+
424
+ .item-icon {
425
+ flex-shrink: 0;
426
+ width: 1em;
427
+ height: 1em;
428
+ }
429
+
430
+ .item-label {
431
+ flex: 1;
432
+ overflow: hidden;
433
+ text-overflow: ellipsis;
434
+ }
435
+
436
+ .item-sublabel {
437
+ flex-shrink: 0;
438
+ margin-left: auto;
439
+ color: var(--surface-muted-text);
440
+ font-size: var(--text-s, 11px);
441
+ }
442
+
443
+ ::highlight(ac-text-highlight) {
444
+ background: var(--ac-highlight-background, var(--accent));
445
+ color: var(--ac-highlight-color, var(--accent-text, #fff));
446
+ border-radius: 2px;
447
+ padding: 0 1px;
448
+ }
449
+
450
+ /* ---- Empty state ---- */
451
+
452
+ .no-results {
453
+ padding: var(--space-m, 8px) var(--space-l, 12px);
454
+ color: var(--surface-muted-text);
455
+ font-style: italic;
456
+ font-size: var(--text-s, 11px);
457
+ }
458
+ `];
459
+ }
460
+ };
461
+ __decorate([property({ type: Object })], AcTextElement.prototype, "completionProvider", void 0);
462
+ __decorate([property({ type: String })], AcTextElement.prototype, "placeholder", void 0);
463
+ __decorate([property({
464
+ type: Number,
465
+ attribute: `cache-size`
466
+ })], AcTextElement.prototype, "cacheSize", void 0);
467
+ __decorate([property({
468
+ type: Number,
469
+ attribute: `debounce-ms`
470
+ })], AcTextElement.prototype, "debounceMs", void 0);
471
+ __decorate([property({ type: String })], AcTextElement.prototype, "value", void 0);
472
+ __decorate([property({
473
+ type: String,
474
+ attribute: `tab-suffix`
475
+ })], AcTextElement.prototype, "tabSuffix", void 0);
476
+ __decorate([state()], AcTextElement.prototype, "_query", void 0);
477
+ __decorate([state()], AcTextElement.prototype, "_results", void 0);
478
+ __decorate([state()], AcTextElement.prototype, "_isOpen", void 0);
479
+ __decorate([state()], AcTextElement.prototype, "_isLoading", void 0);
480
+ AcTextElement = __decorate([customElement(`ixfx-ac-text`)], AcTextElement);
481
+ //#endregion
482
+ export { AcTextElement };
483
+
484
+ //# sourceMappingURL=ac-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ac-text.js","names":["#triggerQuery","#cancelPending","#debounceTimer","#scrollActiveIntoView","#selectItem","#commitText","#closePopup","#cache","#applyHighlights","#abortController","#onItemPointerDown","#renderItem","#onInput","#onKeyDown","#onFocus","#onBlur","#renderPopup"],"sources":["../src/ac-text/ac-text.ts"],"sourcesContent":["import type { PropertyValues } from 'lit';\nimport type { HighlightTarget } from '../incr-search/types.js';\nimport { css, html, LitElement, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { applyHighlights, clearHighlights } from '../incr-search/highlight.js';\nimport { TickledController } from '../interaction/tickled-controller.js';\nimport { tickledStyles } from '../interaction/tickled-styles.js';\nimport '../icons/icon.js';\n\nconst HIGHLIGHT_KEY = `ac-text-highlight`;\n\n// ---- Public types ----\n\nexport type AcTextItem = {\n readonly label: string;\n readonly subLabel?: string;\n readonly icon?: string;\n readonly key?: string;\n readonly data?: unknown;\n /** When true, Tab-accept will not append `tabSuffix`. */\n readonly isLeaf?: boolean;\n /** Character positions within label that matched the query, used for CSS highlight rendering. */\n readonly positions?: ReadonlySet<number>;\n};\n\nexport type AcTextSelectDetail = {\n readonly item: AcTextItem;\n readonly query: string;\n};\n\nexport type AcTextSelectEvent = CustomEvent<AcTextSelectDetail>;\n\n/**\n * Fired when the user commits a value — either by pressing Enter on typed text\n * or by selecting an item from the autocomplete popup (keyboard or click).\n */\nexport type AcTextChangeDetail = {\n /** The committed text value (typed text, or the selected item's label). */\n readonly value: string;\n /**\n * The item key. For autocomplete items: `item.key ?? item.label`.\n * For plain typed text: the text itself.\n */\n readonly key: string;\n /** The item's `data` payload. Only present for autocomplete selections. */\n readonly data?: unknown;\n /** Whether the commit came from plain typed text or an autocomplete selection. */\n readonly source: `text` | `autocomplete`;\n};\n\nexport type AcTextChangeEvent = CustomEvent<AcTextChangeDetail>;\n\nexport type AcTextCompletionProvider\n = (query: string, signal: AbortSignal) => Promise<AcTextItem[]> | AcTextItem[];\n\n// ---- LRU cache ----\n\ntype LruCache<K, V> = {\n get: (key: K) => V | undefined;\n set: (key: K, value: V) => void;\n has: (key: K) => boolean;\n clear: () => void;\n};\n\nfunction makeLruCache<K, V>(maxSize: number): LruCache<K, V> {\n const map = new Map<K, V>();\n return {\n get: (key: K) => map.get(key),\n set: (key: K, value: V) => {\n if (map.has(key))\n map.delete(key);\n map.set(key, value);\n if (map.size > maxSize)\n map.delete(map.keys().next().value!);\n },\n has: (key: K) => map.has(key),\n clear: () => map.clear(),\n };\n}\n\n// ---- Component ----\n\n/**\n * VS Code command-palette style autocomplete text input.\n *\n * Set `completionProvider` to a function that returns matching items for a\n * given query string. Results are shown in a popup that only exists in the\n * DOM while the input has focus.\n *\n * @fires {AcTextSelectEvent} ac-select — when an autocomplete item is selected\n * @fires {AcTextChangeEvent} change — when the user commits a value (Enter on typed text or autocomplete selection)\n *\n * @example\n * ```html\n * <ixfx-ac-text placeholder=\"Search commands…\"></ixfx-ac-text>\n * ```\n * ```ts\n * el.completionProvider = async (query) => commands.filter(c =>\n * c.label.toLowerCase().includes(query.toLowerCase())\n * );\n * el.addEventListener('change', e => console.log(e.detail));\n * ```\n */\n@customElement(`ixfx-ac-text`)\nexport class AcTextElement extends LitElement {\n /** Provides completion results for a query string. */\n @property({ type: Object })\n completionProvider: AcTextCompletionProvider | undefined;\n\n /** Placeholder text for the input. */\n @property({ type: String })\n placeholder = ``;\n\n /** Maximum number of query results to cache (LRU). */\n @property({ type: Number, attribute: `cache-size` })\n cacheSize = 20;\n\n /** Debounce delay in ms before invoking the provider after keystroke. */\n @property({ type: Number, attribute: `debounce-ms` })\n debounceMs = 150;\n\n /**\n * Pre-populate the input with this value. Updated externally after construction is ignored\n * unless the input is not currently focused.\n */\n @property({ type: String })\n value = ``;\n\n /**\n * String appended to the label when Tab is used to accept a suggestion.\n * Useful for path-style inputs where Tab-accepting a segment should add the separator.\n */\n @property({ type: String, attribute: `tab-suffix` })\n tabSuffix = ``;\n\n @state() private _query = ``;\n @state() private _results: AcTextItem[] = [];\n @state() private _isOpen = false;\n @state() private _isLoading = false;\n\n private tickled = new TickledController<number>(this, {\n getItems: () => this._results.map((_, i) => ({ id: i, enabled: true })),\n });\n\n #cache: LruCache<string, AcTextItem[]> = makeLruCache(20);\n #debounceTimer: ReturnType<typeof setTimeout> | undefined;\n #abortController: AbortController | undefined;\n\n constructor() {\n super();\n this.#cache = makeLruCache(this.cacheSize);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#cancelPending();\n clearHighlights({ key: HIGHLIGHT_KEY });\n }\n\n protected override updated(changedProps: PropertyValues): void {\n if (changedProps.has(`completionProvider`)) {\n this.#cache.clear();\n }\n if (changedProps.has(`cacheSize`)) {\n this.#cache = makeLruCache(this.cacheSize);\n }\n if (changedProps.has(`value`)) {\n // Only sync when the input isn't focused (avoid clobbering user typing)\n const input = this.shadowRoot?.querySelector(`input`);\n if (!input || document.activeElement !== input) {\n this._query = this.value;\n }\n }\n this.#applyHighlights();\n }\n\n #applyHighlights(): void {\n if (!this._isOpen || !this.shadowRoot) {\n clearHighlights({ key: HIGHLIGHT_KEY });\n return;\n }\n const labelEls = this.shadowRoot.querySelectorAll(`.item-label`);\n const targets: HighlightTarget[] = [];\n labelEls.forEach((el, index) => {\n const positions = this._results[index]?.positions;\n if (!positions?.size)\n return;\n targets.push({ element: el, text: this._results[index].label, positions });\n });\n applyHighlights(targets, { key: HIGHLIGHT_KEY });\n }\n\n override focus(options?: FocusOptions, selectionStart?: number, selectionEnd?: number): void {\n const input = this.shadowRoot?.querySelector(`input`) as HTMLInputElement | null;\n if (!input)\n return;\n input.focus(options);\n const start = selectionStart ?? input.value.length;\n const end = selectionEnd ?? input.value.length;\n input.setSelectionRange(start, end);\n input.scrollLeft = input.scrollWidth;\n }\n\n focusWithValue(value: string, selectionStart?: number, selectionEnd?: number): void {\n this._query = value;\n this.updateComplete.then(() => {\n const input = this.shadowRoot?.querySelector(`input`) as HTMLInputElement | null;\n if (!input)\n return;\n input.focus();\n const start = selectionStart ?? input.value.length;\n const end = selectionEnd ?? input.value.length;\n input.setSelectionRange(start, end);\n });\n }\n\n selectRange(start: number, end?: number): void {\n const input = this.shadowRoot?.querySelector(`input`) as HTMLInputElement | null;\n if (!input)\n return;\n const endPos = end ?? input.value.length;\n input.setSelectionRange(start, endPos);\n }\n\n // ---- Handlers ----\n\n #onFocus = (): void => {\n this._isOpen = true;\n if (this._query.trim()) {\n this.#triggerQuery(this._query);\n }\n };\n\n #onBlur = (): void => {\n this.#cancelPending();\n this._isOpen = false;\n this.tickled.clearTickled();\n };\n\n #onInput = (e: Event): void => {\n const input = e.target as HTMLInputElement;\n this._query = input.value;\n\n if (this.#debounceTimer !== undefined) {\n clearTimeout(this.#debounceTimer);\n }\n\n if (!this._query.trim()) {\n this._results = [];\n this.tickled.clearTickled();\n this._isLoading = false;\n this._isOpen = false;\n return;\n }\n\n this._isOpen = true;\n this.#debounceTimer = setTimeout(() => {\n this.#triggerQuery(this._query);\n }, this.debounceMs);\n };\n\n #onKeyDown = (e: KeyboardEvent): void => {\n switch (e.key) {\n case `ArrowDown`: {\n if (!this._isOpen)\n return;\n e.preventDefault();\n if (this._results.length === 0)\n return;\n this.tickled.handleKeyboardNavigation(`next`);\n this.#scrollActiveIntoView();\n break;\n }\n case `ArrowUp`: {\n if (!this._isOpen)\n return;\n e.preventDefault();\n if (this._results.length === 0)\n return;\n this.tickled.handleKeyboardNavigation(`previous`);\n this.#scrollActiveIntoView();\n break;\n }\n case `Enter`: {\n const tickledIndex = this.tickled.tickledId ?? -1;\n if (this._isOpen && tickledIndex >= 0 && this._results[tickledIndex]) {\n // Autocomplete selection via keyboard\n e.preventDefault();\n this.#selectItem(this._results[tickledIndex]);\n } else if (this._query.trim()) {\n // Plain text commit\n e.preventDefault();\n this.#commitText(this._query);\n }\n break;\n }\n case `Tab`: {\n const tickledIndex = this.tickled.tickledId ?? -1;\n if (this._isOpen && tickledIndex >= 0 && this._results[tickledIndex]) {\n e.preventDefault();\n const tabItem = this._results[tickledIndex];\n this._query = tabItem.label + (tabItem.isLeaf ? `` : this.tabSuffix);\n this.tickled.clearTickled();\n this.#triggerQuery(this._query);\n }\n break;\n }\n case `Escape`: {\n if (!this._isOpen)\n return;\n e.preventDefault();\n this.#closePopup();\n break;\n }\n }\n };\n\n /** pointerdown beats blur — prevents popup vanishing before click registers */\n #onItemPointerDown = (e: PointerEvent, item: AcTextItem): void => {\n e.preventDefault();\n this.#selectItem(item);\n };\n\n // ---- Internal logic ----\n\n #triggerQuery(query: string): void {\n if (!this.completionProvider)\n return;\n\n const cached = this.#cache.get(query);\n if (cached !== undefined) {\n this._results = cached;\n this.tickled.clearTickled();\n this._isLoading = false;\n return;\n }\n\n // Cancel any in-flight request\n this.#abortController?.abort();\n this.#abortController = new AbortController();\n const { signal } = this.#abortController;\n\n this._isLoading = true;\n\n Promise.resolve(this.completionProvider(query, signal))\n .then((results) => {\n if (signal.aborted)\n return;\n this.#cache.set(query, results);\n this._results = results;\n this.tickled.clearTickled();\n this._isLoading = false;\n })\n .catch((err) => {\n if (signal.aborted)\n return;\n console.error(`[ixfx-ac-text] completionProvider error:`, err);\n this._results = [];\n this._isLoading = false;\n });\n }\n\n #selectItem(item: AcTextItem): void {\n this.dispatchEvent(new CustomEvent<AcTextSelectDetail>(`ac-select`, {\n detail: { item, query: this._query },\n bubbles: true,\n composed: true,\n }));\n this.dispatchEvent(new CustomEvent<AcTextChangeDetail>(`change`, {\n detail: {\n value: item.label,\n key: item.key ?? item.label,\n data: item.data,\n source: `autocomplete`,\n },\n bubbles: true,\n composed: true,\n }));\n this._query = item.label;\n this._isOpen = false;\n this.tickled.clearTickled();\n }\n\n #commitText(text: string): void {\n this.dispatchEvent(new CustomEvent<AcTextChangeDetail>(`change`, {\n detail: {\n value: text,\n key: text,\n source: `text`,\n },\n bubbles: true,\n composed: true,\n }));\n this._isOpen = false;\n this.tickled.clearTickled();\n }\n\n #closePopup(): void {\n this._isOpen = false;\n this.tickled.clearTickled();\n clearHighlights({ key: HIGHLIGHT_KEY });\n }\n\n #cancelPending(): void {\n if (this.#debounceTimer !== undefined) {\n clearTimeout(this.#debounceTimer);\n this.#debounceTimer = undefined;\n }\n this.#abortController?.abort();\n this.#abortController = undefined;\n this._isLoading = false;\n }\n\n #scrollActiveIntoView(): void {\n // After Lit renders the new tickled item, scroll it into view\n this.updateComplete.then(() => {\n const item = this.shadowRoot?.querySelector(`.item.tickled`);\n item?.scrollIntoView({ block: `nearest` });\n });\n }\n\n // ---- Render helpers ----\n\n #renderItem(item: AcTextItem, index: number) {\n const isTickled = this.tickled.isTickled(index);\n return html`\n <div\n class=\"item ${isTickled ? `tickled` : ``}\"\n role=\"option\"\n id=\"ac-item-${index}\"\n aria-selected=${isTickled}\n @pointerenter=${() => this.tickled.handlePointerEnter(index)}\n @pointerdown=${(e: PointerEvent) => this.#onItemPointerDown(e, item)}\n >\n ${item.icon ? html`<ixfx-icon class=\"item-icon\" name=${item.icon}></ixfx-icon>` : nothing}\n <span class=\"item-label\">${item.label}</span>\n ${item.subLabel ? html`<span class=\"item-sublabel\">${item.subLabel}</span>` : nothing}\n </div>\n `;\n }\n\n #renderPopup() {\n const showEmpty = !this._isLoading && this._results.length === 0;\n return html`\n <div\n class=\"popup\"\n role=\"listbox\"\n aria-label=\"Suggestions\"\n data-input-mode=${this.tickled.inputMode}\n @pointerleave=${(e: PointerEvent) => this.tickled.handlePointerLeave(e)}\n >\n ${showEmpty\n ? html`<div class=\"no-results\">No matching results</div>`\n : this._results.map((item, i) => this.#renderItem(item, i))\n }\n </div>\n `;\n }\n\n protected override render() {\n const tickledIndex = this.tickled.tickledId ?? -1;\n const activeDescendant = tickledIndex >= 0 ? `ac-item-${tickledIndex}` : undefined;\n return html`\n <div class=\"input-wrapper\">\n <input\n type=\"text\"\n .value=${this._query}\n placeholder=${this.placeholder || nothing}\n autocomplete=\"off\"\n spellcheck=\"false\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded=${this._isOpen}\n aria-activedescendant=${activeDescendant ?? nothing}\n @input=${this.#onInput}\n @keydown=${this.#onKeyDown}\n @focus=${this.#onFocus}\n @blur=${this.#onBlur}\n >\n ${this._isLoading\n ? html`<span class=\"spinner\" aria-hidden=\"true\"></span>`\n : nothing\n }\n </div>\n ${this._isOpen ? this.#renderPopup() : nothing}\n `;\n }\n\n static override styles = [\n tickledStyles,\n css`\n :host {\n display: block;\n position: relative;\n font-family: var(--font-family, system-ui, sans-serif);\n font-size: var(--text-m, 12px);\n color: var(--surface-2-text);\n }\n\n /* ---- Input ---- */\n\n .input-wrapper {\n display: flex;\n align-items: center;\n position: relative;\n }\n\n input {\n appearance: none;\n width: 100%;\n box-sizing: border-box;\n padding: var(--ac-input-padding, var(--space-m, 8px) var(--space-l, 12px));\n background: var(--ac-input-background, var(--surface-3, var(--surface-2)));\n color: var(--surface-2-text);\n border: var(--ac-input-border, var(--border));\n border-radius: var(--ac-input-border-radius, var(--radius-m, 4px));\n font: inherit;\n caret-color: var(--accent);\n outline: none;\n transition: border-color var(--transition, 0.15s ease-out);\n }\n\n input:focus {\n border-color: var(--accent);\n }\n\n input::placeholder {\n color: var(--surface-muted-text);\n }\n\n /* ---- Spinner ---- */\n\n .spinner {\n position: absolute;\n right: var(--space-m, 8px);\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: ac-spin 0.7s linear infinite;\n flex-shrink: 0;\n pointer-events: none;\n }\n\n @keyframes ac-spin {\n to { transform: rotate(360deg); }\n }\n\n /* ---- Popup ---- */\n\n .popup {\n position: absolute;\n top: calc(100% + 2px);\n left: 0;\n right: 0;\n z-index: 100;\n background: var(--surface-3, var(--surface-2));\n border: var(--border);\n border-radius: var(--radius-m, 4px);\n box-shadow: var(--shadow-l, 0 4px 24px rgba(0, 0, 0, 0.5));\n padding: var(--space-xs, 3px) 0;\n max-height: 280px;\n overflow-y: auto;\n font-size: var(--ac-popup-font-size, var(--text-s, 11px));\n }\n\n /* ---- Items ---- */\n\n .item {\n display: flex;\n align-items: center;\n gap: var(--space-m, 8px);\n padding: var(--space-xs, 3px) var(--space-l, 12px);\n cursor: pointer;\n border-radius: var(--radius-s, 3px);\n margin: 0 var(--space-xs, 3px);\n transition: background var(--transition, 0.1s ease-out);\n user-select: none;\n white-space: nowrap;\n min-height: 28px;\n }\n\n \n\n .item.tickled {\n background: var(--_item-focused-bg, var(--accent));\n color: var(--accent-text, #fff);\n }\n\n .item.tickled .item-sublabel {\n color: color-mix(in srgb, var(--accent-text, #fff) 70%, transparent);\n }\n\n .item-icon {\n flex-shrink: 0;\n width: 1em;\n height: 1em;\n }\n\n .item-label {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .item-sublabel {\n flex-shrink: 0;\n margin-left: auto;\n color: var(--surface-muted-text);\n font-size: var(--text-s, 11px);\n }\n\n ::highlight(ac-text-highlight) {\n background: var(--ac-highlight-background, var(--accent));\n color: var(--ac-highlight-color, var(--accent-text, #fff));\n border-radius: 2px;\n padding: 0 1px;\n }\n\n /* ---- Empty state ---- */\n\n .no-results {\n padding: var(--space-m, 8px) var(--space-l, 12px);\n color: var(--surface-muted-text);\n font-style: italic;\n font-size: var(--text-s, 11px);\n }\n `,\n ];\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ixfx-ac-text': AcTextElement;\n }\n}\n"],"mappings":"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"}