@ixfx/components 0.5.19 → 0.5.20

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 (217) hide show
  1. package/bundle/index.d.ts +95 -115
  2. package/bundle/index.d.ts.map +1 -1
  3. package/bundle/index.js +484 -325
  4. package/bundle/index.js.map +1 -1
  5. package/dist/ac-text.d.ts +7 -12
  6. package/dist/ac-text.d.ts.map +1 -1
  7. package/dist/ac-text.js +5 -4
  8. package/dist/ac-text.js.map +1 -1
  9. package/dist/{button-CphdEaZd.js → button-pcDaCemT.js} +2 -2
  10. package/dist/{button-CphdEaZd.js.map → button-pcDaCemT.js.map} +1 -1
  11. package/dist/button.d.ts +3 -2
  12. package/dist/button.d.ts.map +1 -1
  13. package/dist/button.js +1 -1
  14. package/dist/checkbox.d.ts +1 -0
  15. package/dist/checkbox.d.ts.map +1 -1
  16. package/dist/checkbox.js +2 -2
  17. package/dist/checkbox.js.map +1 -1
  18. package/dist/{colour-picker-37NyVenk.js → colour-picker-D43Q96r0.js} +28 -15
  19. package/dist/colour-picker-D43Q96r0.js.map +1 -0
  20. package/dist/colour-picker.d.ts +1 -1
  21. package/dist/colour-picker.js +1 -1
  22. package/dist/{crumb-navigation-BrB0r14u.js → crumb-navigation-Pif-kupA.js} +10 -9
  23. package/dist/{crumb-navigation-BrB0r14u.js.map → crumb-navigation-Pif-kupA.js.map} +1 -1
  24. package/dist/crumbs.d.ts +2 -4
  25. package/dist/crumbs.d.ts.map +1 -1
  26. package/dist/crumbs.js +1 -1
  27. package/dist/data-display.d.ts +2 -1
  28. package/dist/data-display.d.ts.map +1 -1
  29. package/dist/data-display.js +23 -25
  30. package/dist/data-display.js.map +1 -1
  31. package/dist/{decorate-VRK8rslU.js → decorate-DdjvVHS-.js} +2 -2
  32. package/dist/{decorate-VRK8rslU.js.map → decorate-DdjvVHS-.js.map} +1 -1
  33. package/dist/editable-label.d.ts +2 -1
  34. package/dist/editable-label.d.ts.map +1 -1
  35. package/dist/editable-label.js +2 -2
  36. package/dist/editable-label.js.map +1 -1
  37. package/dist/fallbacks-DEE1nCTt.js +406 -0
  38. package/dist/fallbacks-DEE1nCTt.js.map +1 -0
  39. package/dist/{hex-editor-Bk6rxhfg.js → hex-editor-B-UI4OZu.js} +8 -6
  40. package/dist/{hex-editor-Bk6rxhfg.js.map → hex-editor-B-UI4OZu.js.map} +1 -1
  41. package/dist/{hex-editor-Caq8vNQk.d.ts → hex-editor-CMIxtNgT.d.ts} +3 -2
  42. package/dist/hex-editor-CMIxtNgT.d.ts.map +1 -0
  43. package/dist/hex.d.ts +1 -1
  44. package/dist/hex.js +1 -1
  45. package/dist/highlight-B-eQrhhb.js.map +1 -1
  46. package/dist/{icon-BUwP1CZ1.d.ts → icon-Bd5BiU4b.d.ts} +4 -3
  47. package/dist/icon-Bd5BiU4b.d.ts.map +1 -0
  48. package/dist/{icon-DG9Lm3LT.js → icon-CK14NUcE.js} +5 -7
  49. package/dist/{icon-DG9Lm3LT.js.map → icon-CK14NUcE.js.map} +1 -1
  50. package/dist/icons.d.ts +2 -2
  51. package/dist/icons.js +1 -1
  52. package/dist/{incr-search-2pz21xtR.js → incr-search-CeERfijK.js} +6 -9
  53. package/dist/{incr-search-2pz21xtR.js.map → incr-search-CeERfijK.js.map} +1 -1
  54. package/dist/incr-search.d.ts +1 -1
  55. package/dist/incr-search.js +1 -1
  56. package/dist/{index-D9u_Q7-b.d.ts → index-BslNaMLo.d.ts} +3 -3
  57. package/dist/index-BslNaMLo.d.ts.map +1 -0
  58. package/dist/{index-DkhBGHgF.d.ts → index-Cdmrn0SZ.d.ts} +11 -11
  59. package/dist/index-Cdmrn0SZ.d.ts.map +1 -0
  60. package/dist/{index-BUB5SICW.d.ts → index-CkMIKEWp.d.ts} +4 -3
  61. package/dist/index-CkMIKEWp.d.ts.map +1 -0
  62. package/dist/{index-RqMh1i-O.d.ts → index-D87kRcEs.d.ts} +1 -2
  63. package/dist/index-D87kRcEs.d.ts.map +1 -0
  64. package/dist/{index-BKAlRgbq.d.ts → index-DrKRD8_a.d.ts} +7 -4
  65. package/dist/index-DrKRD8_a.d.ts.map +1 -0
  66. package/dist/{index-BeuCXtiO.d.ts → index-tX6fKF8m.d.ts} +3 -3
  67. package/dist/index-tX6fKF8m.d.ts.map +1 -0
  68. package/dist/index.d.ts +48 -53
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +126 -118
  71. package/dist/index.js.map +1 -1
  72. package/dist/interaction-_Y2qO3QI.js +1 -0
  73. package/dist/{labelled-input-base-hoKGwyKT.js → labelled-input-base-9K_w3oLj.js} +2 -2
  74. package/dist/{labelled-input-base-hoKGwyKT.js.map → labelled-input-base-9K_w3oLj.js.map} +1 -1
  75. package/dist/{labelled-input-base-Dp_9KP0G.d.ts → labelled-input-base-ORb1rGq6.d.ts} +3 -2
  76. package/dist/labelled-input-base-ORb1rGq6.d.ts.map +1 -0
  77. package/dist/labelled-radial-input.d.ts +5 -4
  78. package/dist/labelled-radial-input.d.ts.map +1 -1
  79. package/dist/labelled-radial-input.js +4 -4
  80. package/dist/labelled-radial-input.js.map +1 -1
  81. package/dist/labelled-range-input.d.ts +1 -1
  82. package/dist/labelled-range-input.js +2 -2
  83. package/dist/labelled-range-input.js.map +1 -1
  84. package/dist/led.d.ts +2 -2
  85. package/dist/led.d.ts.map +1 -1
  86. package/dist/led.js +3 -5
  87. package/dist/led.js.map +1 -1
  88. package/dist/{menu-CdwSe_XN.js → menu-BiFarLUA.js} +9 -8
  89. package/dist/{menu-CdwSe_XN.js.map → menu-BiFarLUA.js.map} +1 -1
  90. package/dist/{menu-item-BG5w7fi4.d.ts → menu-item-AtoP6bD4.d.ts} +4 -4
  91. package/dist/menu-item-AtoP6bD4.d.ts.map +1 -0
  92. package/dist/{menu-item-CrmUwIoJ.js → menu-item-yHSPV8nS.js} +10 -9
  93. package/dist/{menu-item-CrmUwIoJ.js.map → menu-item-yHSPV8nS.js.map} +1 -1
  94. package/dist/menu.d.ts +2 -2
  95. package/dist/menu.js +2 -2
  96. package/dist/miller.d.ts +5 -7
  97. package/dist/miller.d.ts.map +1 -1
  98. package/dist/miller.js +26 -24
  99. package/dist/miller.js.map +1 -1
  100. package/dist/narrowed-text.d.ts +2 -1
  101. package/dist/narrowed-text.d.ts.map +1 -1
  102. package/dist/narrowed-text.js +14 -15
  103. package/dist/narrowed-text.js.map +1 -1
  104. package/dist/panel.d.ts +1 -1
  105. package/dist/panel.d.ts.map +1 -1
  106. package/dist/panel.js +3 -3
  107. package/dist/panel.js.map +1 -1
  108. package/dist/plots.d.ts +1 -1
  109. package/dist/plots.js +1 -1
  110. package/dist/polar-pad.d.ts +2 -1
  111. package/dist/polar-pad.d.ts.map +1 -1
  112. package/dist/polar-pad.js +3 -3
  113. package/dist/polar-pad.js.map +1 -1
  114. package/dist/{radial-input-CVxGH-Cp.js → radial-input-C4f-2Bya.js} +15 -25
  115. package/dist/{radial-input-CVxGH-Cp.js.map → radial-input-C4f-2Bya.js.map} +1 -1
  116. package/dist/{radial-input-BhZeyyP-.d.ts → radial-input-Dhu5ZGP5.d.ts} +3 -2
  117. package/dist/radial-input-Dhu5ZGP5.d.ts.map +1 -0
  118. package/dist/radial-input.d.ts +1 -1
  119. package/dist/radial-input.js +1 -1
  120. package/dist/range-input.d.ts +3 -2
  121. package/dist/range-input.d.ts.map +1 -1
  122. package/dist/range-input.js +3 -3
  123. package/dist/range-input.js.map +1 -1
  124. package/dist/range.d.ts +3 -2
  125. package/dist/range.d.ts.map +1 -1
  126. package/dist/range.js +3 -3
  127. package/dist/range.js.map +1 -1
  128. package/dist/selecthorizontal.d.ts +2 -1
  129. package/dist/selecthorizontal.d.ts.map +1 -1
  130. package/dist/selecthorizontal.js +2 -2
  131. package/dist/selecthorizontal.js.map +1 -1
  132. package/dist/{slider-input-TidGhvXt.d.ts → slider-input-BEaztT-g.d.ts} +3 -2
  133. package/dist/slider-input-BEaztT-g.d.ts.map +1 -0
  134. package/dist/{slider-input-CzmSVgm7.js → slider-input-SW7e2Ac2.js} +28 -31
  135. package/dist/{slider-input-CzmSVgm7.js.map → slider-input-SW7e2Ac2.js.map} +1 -1
  136. package/dist/slider-input.d.ts +1 -1
  137. package/dist/slider-input.js +1 -1
  138. package/dist/snap-container.d.ts +2 -1
  139. package/dist/snap-container.d.ts.map +1 -1
  140. package/dist/snap-container.js +5 -6
  141. package/dist/snap-container.js.map +1 -1
  142. package/dist/split-layout.d.ts +2 -1
  143. package/dist/split-layout.d.ts.map +1 -1
  144. package/dist/split-layout.js +4 -6
  145. package/dist/split-layout.js.map +1 -1
  146. package/dist/swipe.d.ts +2 -1
  147. package/dist/swipe.d.ts.map +1 -1
  148. package/dist/swipe.js +4 -5
  149. package/dist/swipe.js.map +1 -1
  150. package/dist/{tab-list-Beuh2nom.d.ts → tab-list-B8v9KntS.d.ts} +4 -4
  151. package/dist/tab-list-B8v9KntS.d.ts.map +1 -0
  152. package/dist/{tab-list-mAoD6L0e.js → tab-list-CR0v53KJ.js} +3 -3
  153. package/dist/{tab-list-mAoD6L0e.js.map → tab-list-CR0v53KJ.js.map} +1 -1
  154. package/dist/tabs.d.ts +1 -1
  155. package/dist/tabs.js +1 -1
  156. package/dist/{tickled-controller-BF2Ea0DE.d.ts → tickled-controller-JDOR9B8V.d.ts} +9 -6
  157. package/dist/tickled-controller-JDOR9B8V.d.ts.map +1 -0
  158. package/dist/{tickled-styles-fNDdqf6l.js → tickled-styles-Bgo_Lpw-.js} +28 -28
  159. package/dist/tickled-styles-Bgo_Lpw-.js.map +1 -0
  160. package/dist/{timeline-B2fgDL4U.js → timeline-CdSI003L.js} +3 -3
  161. package/dist/{timeline-B2fgDL4U.js.map → timeline-CdSI003L.js.map} +1 -1
  162. package/dist/timeline.d.ts +1 -1
  163. package/dist/timeline.js +1 -1
  164. package/dist/{tooltip-BlvBUQxx.d.ts → tooltip-BMTSUPBU.d.ts} +3 -2
  165. package/dist/tooltip-BMTSUPBU.d.ts.map +1 -0
  166. package/dist/{tree-BtiiDX1a.js → tree-CqPhQRHo.js} +11 -10
  167. package/dist/{tree-BtiiDX1a.js.map → tree-CqPhQRHo.js.map} +1 -1
  168. package/dist/{tree-component-DQ9vzdy5.d.ts → tree-component-CDLO1ITF.d.ts} +124 -8
  169. package/dist/tree-component-CDLO1ITF.d.ts.map +1 -0
  170. package/dist/tree.d.ts +4 -9
  171. package/dist/tree.d.ts.map +1 -1
  172. package/dist/tree.js +1 -1
  173. package/dist/types-DSfbtHs3.d.ts +8 -0
  174. package/dist/types-DSfbtHs3.d.ts.map +1 -0
  175. package/dist/{wheel-nudge-DgMTRYlh.d.ts → wheel-nudge-C-ra_1os.d.ts} +2 -1
  176. package/dist/wheel-nudge-C-ra_1os.d.ts.map +1 -0
  177. package/dist/{wheel-nudge-BlSCe_hD.js → wheel-nudge-Dhzi5nHc.js} +2 -2
  178. package/dist/{wheel-nudge-BlSCe_hD.js.map → wheel-nudge-Dhzi5nHc.js.map} +1 -1
  179. package/dist/{xy-axis-CxHC8z5E.js → xy-axis-BpA2eJq6.js} +4 -6
  180. package/dist/{xy-axis-CxHC8z5E.js.map → xy-axis-BpA2eJq6.js.map} +1 -1
  181. package/dist/{xy-axis-5KhVTNoX.d.ts → xy-axis-CtDDQzGZ.d.ts} +6 -8
  182. package/dist/xy-axis-CtDDQzGZ.d.ts.map +1 -0
  183. package/dist/xy-pad.d.ts +2 -1
  184. package/dist/xy-pad.d.ts.map +1 -1
  185. package/dist/xy-pad.js +3 -3
  186. package/dist/xy-pad.js.map +1 -1
  187. package/docs-user/ac-token.md +7 -1
  188. package/docs-user/colour-picker.md +8 -4
  189. package/docs-user/menu.md +11 -8
  190. package/package.json +1 -1
  191. package/dist/colour-picker-37NyVenk.js.map +0 -1
  192. package/dist/fallbacks-DPgPEqo8.js +0 -218
  193. package/dist/fallbacks-DPgPEqo8.js.map +0 -1
  194. package/dist/hex-editor-Caq8vNQk.d.ts.map +0 -1
  195. package/dist/icon-BUwP1CZ1.d.ts.map +0 -1
  196. package/dist/index-BKAlRgbq.d.ts.map +0 -1
  197. package/dist/index-BUB5SICW.d.ts.map +0 -1
  198. package/dist/index-BeuCXtiO.d.ts.map +0 -1
  199. package/dist/index-D9u_Q7-b.d.ts.map +0 -1
  200. package/dist/index-DkhBGHgF.d.ts.map +0 -1
  201. package/dist/index-RqMh1i-O.d.ts.map +0 -1
  202. package/dist/interaction-D6efrBLo.js +0 -1
  203. package/dist/labelled-input-base-Dp_9KP0G.d.ts.map +0 -1
  204. package/dist/menu-item-BG5w7fi4.d.ts.map +0 -1
  205. package/dist/radial-input-BhZeyyP-.d.ts.map +0 -1
  206. package/dist/slider-input-TidGhvXt.d.ts.map +0 -1
  207. package/dist/tab-list-Beuh2nom.d.ts.map +0 -1
  208. package/dist/tickled-controller-BF2Ea0DE.d.ts.map +0 -1
  209. package/dist/tickled-styles-fNDdqf6l.js.map +0 -1
  210. package/dist/tooltip-BlvBUQxx.d.ts.map +0 -1
  211. package/dist/tree-component-DQ9vzdy5.d.ts.map +0 -1
  212. package/dist/types-DO3gt5vg.d.ts +0 -130
  213. package/dist/types-DO3gt5vg.d.ts.map +0 -1
  214. package/dist/wheel-nudge-DgMTRYlh.d.ts.map +0 -1
  215. package/dist/xy-axis-5KhVTNoX.d.ts.map +0 -1
  216. /package/bundle/{rolldown-runtime-D7D4PA-g.js → chunk-D7D4PA-g.js} +0 -0
  217. /package/dist/{rolldown-runtime-D7D4PA-g.js → chunk-D7D4PA-g.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"incr-search-2pz21xtR.js","names":["FzfAny","#el","#opts","#search","#labelMap","#onInput","#onKeydown","#unsub","#onStateChange"],"sources":["../src/incr-search/fuzzy.ts","../src/incr-search/ac-adapter.ts","../src/incr-search/incr-search.ts","../src/incr-search/controller-tree.ts","../src/incr-search/element-search.ts"],"sourcesContent":["import type { FuzzySearch, FuzzySearchOptions, IncrSearchResult } from './types.js';\nimport { Fzf } from 'fzf';\n\nfunction defaultSelector<T>(item: T): string {\n if (typeof item === `string`)\n return item;\n const r = item as Record<string, unknown>;\n if (typeof r.label === `string`)\n return r.label;\n if (typeof r.key === `string`)\n return r.key;\n if (typeof r.value === `string`)\n return r.value;\n return String(item);\n}\n\nexport function createFuzzySearch<T>(\n items: readonly T[],\n options: FuzzySearchOptions<T> = {},\n): FuzzySearch<T> {\n const selector = options.selector ?? defaultSelector<T>;\n // fzf uses a conditional SyncOptionsTuple<T> rest-parameter overload that TypeScript\n // cannot narrow through a spread when T is generic.\n const FzfAny = Fzf as new (list: readonly T[], opts: any) => { find: (q: string) => Array<{ item: T; positions: ReadonlySet<number>; score: number }> };\n const fzf = new FzfAny(items as readonly T[], { selector, ...(options.fzf ?? {}) });\n\n const find = (query: string): ReadonlyArray<IncrSearchResult<T>> => {\n if (!query.trim()) {\n return items.map(item => ({\n item,\n positions: new Set<number>(),\n score: 0,\n }));\n }\n return fzf.find(query).map(r => ({\n item: r.item,\n positions: r.positions,\n score: r.score,\n }));\n };\n\n return { find, items };\n}\n","import type { FuzzySearchOptions } from './types.js';\nimport { createFuzzySearch } from './fuzzy.js';\n\n/**\n * Creates an ixfx-ac-text-compatible `completionProvider` function from a\n * static item list. Uses synchronous fuzzy search wrapped in a Promise so it\n * fits the async provider signature.\n *\n * Each returned item has `positions` populated with matched character indices,\n * which `ixfx-ac-text` uses to render CSS Custom Highlights on the label.\n *\n * Empty query returns all items in original order (no positions).\n * A cancelled signal causes the returned promise to reject with an AbortError.\n */\nexport function createAcCompletionProvider<T extends { label: string }>(\n items: readonly T[],\n options: Pick<FuzzySearchOptions<T>, `selector`> = {},\n): (query: string, signal: AbortSignal) => Promise<Array<T & { positions: ReadonlySet<number> }>> {\n const selector = options.selector ?? ((item: T) => item.label);\n const fuzzy = createFuzzySearch(items, { selector });\n\n return (\n query: string,\n signal: AbortSignal,\n ): Promise<Array<T & { positions: ReadonlySet<number> }>> =>\n new Promise((resolve, reject) => {\n if (signal.aborted) {\n reject(new DOMException(`Aborted`, `AbortError`));\n return;\n }\n\n const results = fuzzy.find(query).map(r => ({ ...r.item, positions: r.positions }));\n\n if (signal.aborted) {\n reject(new DOMException(`Aborted`, `AbortError`));\n return;\n }\n\n resolve(results);\n });\n}\n","import type {\n IncrSearch,\n IncrSearchChangeCallback,\n IncrSearchOptions,\n IncrSearchState,\n} from './types.js';\nimport { createFuzzySearch } from './fuzzy.js';\n\nfunction buildState<T>(results: ReturnType<ReturnType<typeof createFuzzySearch<T>>[`find`]>, query: string): IncrSearchState<T> {\n const positionsByItem = new Map<T, ReadonlySet<number>>();\n for (const r of results) {\n positionsByItem.set(r.item, r.positions);\n }\n return Object.freeze({\n query,\n results: Object.freeze([...results]),\n positionsByItem,\n });\n}\n\nexport function createIncrSearch<T>(options: IncrSearchOptions<T> = {}): IncrSearch<T> {\n let items: readonly T[] = options.items ?? [];\n let query = ``;\n let fuzzy = createFuzzySearch(items, { selector: options.selector, fzf: options.fzf });\n let state: IncrSearchState<T> = buildState(fuzzy.find(query), query);\n let disposed = false;\n\n const observers = new Set<IncrSearchChangeCallback<T>>();\n\n if (options.onChange) {\n observers.add(options.onChange);\n }\n\n const notify = (s: IncrSearchState<T>): void => {\n for (const cb of observers) {\n cb(s);\n }\n };\n\n const run = async (q: string, signal?: AbortSignal): Promise<IncrSearchState<T>> => {\n // Yield to the microtask queue for a consistent async interface\n await Promise.resolve();\n if (signal?.aborted || disposed) {\n return state;\n }\n const results = fuzzy.find(q);\n if (signal?.aborted || disposed) {\n return state;\n }\n state = buildState(results, q);\n notify(state);\n return state;\n };\n\n return {\n get state() {\n return state;\n },\n\n async setItems(newItems: readonly T[], signal?: AbortSignal): Promise<void> {\n items = newItems;\n fuzzy = createFuzzySearch(items, { selector: options.selector, fzf: options.fzf });\n await run(query, signal);\n },\n\n async setQuery(q: string, signal?: AbortSignal): Promise<IncrSearchState<T>> {\n query = q;\n return run(q, signal);\n },\n\n async clearQuery(): Promise<void> {\n query = ``;\n await run(``, undefined);\n },\n\n onChange(cb: IncrSearchChangeCallback<T>): () => void {\n observers.add(cb);\n cb(state);\n return () => {\n observers.delete(cb);\n };\n },\n\n dispose(): void {\n disposed = true;\n observers.clear();\n items = [];\n },\n };\n}\n","import type { FzfOptions } from 'fzf';\nimport type { TreeSearchHost } from '../common/searchable.js';\nimport type { TreeNode } from '../common/types.js';\nimport type { IncrSearchState } from './types.js';\nimport { applyHighlights, buildHighlightTargets, clearHighlights } from './highlight.js';\nimport { createIncrSearch } from './incr-search.js';\n\nconst DEFAULT_HIGHLIGHT_KEY = `incr-search-highlight`;\n\nexport type IncrSearchTreeOptions = {\n selector: (item: { node: TreeNode; depth: number }) => string;\n /**\n * CSS selector for the label elements inside the shadow root.\n * Defaults to `.tree-label` (suitable for ixfx-tree-list).\n * Use `.label` for ixfx-miller-list.\n */\n labelSelector?: string;\n highlightKey?: string;\n input?: HTMLInputElement;\n fzf?: Partial<FzfOptions<{ node: TreeNode; depth: number }>>;\n};\n\ntype SearchItem = { node: TreeNode; depth: number };\n\n/**\n * Incremental-search controller for any component implementing `TreeSearchHost`\n * (i.e. `ixfx-tree-list`, `ixfx-miller-list`, `ixfx-crumb-navigation`).\n *\n * Replaces the previous separate `IncrSearchTreeController` / `IncrSearchMillerController`\n * classes — the unified `TreeFilterPredicate` (with depth) means one implementation works\n * for all tree-like components.\n *\n * @example Using with ixfx-tree-list:\n * ```typescript\n * const ctrl = new IncrSearchTreeController(myTreeList, {\n * selector: item => item.node.item.label,\n * });\n * ctrl.connect();\n * ```\n *\n * @example Using with ixfx-miller-list (different label selector):\n * ```typescript\n * const ctrl = new IncrSearchTreeController(myMillerList, {\n * selector: item => item.node.item.label,\n * labelSelector: '.label',\n * });\n * ctrl.connect();\n * ```\n */\nexport class IncrSearchTreeController {\n #el: TreeSearchHost;\n #opts: IncrSearchTreeOptions;\n #search: ReturnType<typeof createIncrSearch<SearchItem>>;\n #unsub: (() => void) | undefined;\n #labelMap = new Map<string, SearchItem>();\n\n constructor(el: TreeSearchHost, opts: IncrSearchTreeOptions) {\n this.#el = el;\n this.#opts = opts;\n this.#search = createIncrSearch<SearchItem>({\n selector: opts.selector,\n fzf: opts.fzf,\n });\n }\n\n connect(): void {\n this.disconnect();\n\n const items = this.#el.getNodes();\n for (const item of items) {\n this.#labelMap.set(this.#opts.selector(item), item);\n }\n void this.#search.setItems(items);\n\n if (this.#opts.input) {\n this.#opts.input.addEventListener(`input`, this.#onInput);\n this.#opts.input.addEventListener(`keydown`, this.#onKeydown);\n }\n\n this.#unsub = this.#search.onChange(state => this.#onStateChange(state));\n }\n\n disconnect(): void {\n if (this.#unsub) {\n this.#unsub();\n this.#unsub = undefined;\n }\n if (this.#opts.input) {\n this.#opts.input.removeEventListener(`input`, this.#onInput);\n this.#opts.input.removeEventListener(`keydown`, this.#onKeydown);\n }\n this.#el.filterPredicate = undefined;\n clearHighlights({ key: this.#opts.highlightKey ?? DEFAULT_HIGHLIGHT_KEY });\n this.#labelMap.clear();\n }\n\n async setQuery(query: string): Promise<void> {\n await this.#search.setQuery(query);\n }\n\n async clearQuery(): Promise<void> {\n await this.#search.clearQuery();\n }\n\n #onInput = () => {\n const value = this.#opts.input?.value ?? ``;\n void this.setQuery(value);\n };\n\n #onKeydown = (e: KeyboardEvent) => {\n if (e.key === `Escape` && this.#opts.input) {\n this.#opts.input.value = ``;\n void this.clearQuery();\n }\n };\n\n #onStateChange(state: IncrSearchState<SearchItem>): void {\n const matched = new Set(state.results.map(r => r.item.node.item.key));\n const hasQuery = state.query.trim().length > 0;\n this.#el.filterPredicate = hasQuery && matched.size > 0\n ? (node: TreeNode, _depth: number) => matched.has(node.item.key)\n : undefined;\n\n const key = this.#opts.highlightKey ?? DEFAULT_HIGHLIGHT_KEY;\n if (!this.#el.shadowRoot)\n return;\n\n if (!state.query.trim()) {\n clearHighlights({ key });\n return;\n }\n\n const labelSelector = this.#opts.labelSelector ?? `.tree-label`;\n const targets = buildHighlightTargets(\n this.#el.shadowRoot,\n labelSelector,\n state.positionsByItem,\n (labelEl) => {\n const text = labelEl.textContent ?? ``;\n return this.#labelMap.get(text);\n },\n labelEl => labelEl.textContent ?? ``,\n );\n applyHighlights(targets, { key });\n }\n}\n","import type {\n ElementIncrSearchOptions,\n IncrSearchChangeCallback,\n IncrSearchState,\n} from './types.js';\nimport { applyHighlights, buildHighlightTargets, clearHighlights } from './highlight.js';\nimport { createIncrSearch } from './incr-search.js';\n\ntype ElementItem = { readonly key: string; readonly label: string };\n\nconst defaultGetLabel = (el: Element): string => el.textContent?.trim() ?? ``;\n\nfunction defaultGetKey(el: Element): string {\n return el.getAttribute(`data-key`)\n ?? el.getAttribute(`data-value`)\n ?? el.textContent?.trim()\n ?? ``;\n}\n\nexport type ElementIncrSearch = {\n readonly setQuery: (query: string, signal?: AbortSignal) => Promise<void>;\n readonly clearQuery: () => Promise<void>;\n readonly refresh: () => void;\n readonly onChange: (cb: IncrSearchChangeCallback<ElementItem>) => () => void;\n readonly dispose: () => void;\n};\n\nexport function createElementIncrSearch(opts: ElementIncrSearchOptions): ElementIncrSearch {\n const {\n container,\n itemSelector,\n getLabel = defaultGetLabel,\n getKey = defaultGetKey,\n labelSelector,\n highlightKey,\n } = opts;\n\n // Map from key → element reference for highlight lookup\n let elementByKey = new Map<string, Element>();\n\n const search = createIncrSearch<ElementItem>({\n selector: item => item.label,\n fzf: opts.fzf,\n });\n\n const updateVisibility = (state: IncrSearchState<ElementItem>): void => {\n const matchedKeys = new Set(state.results.map(r => r.item.key));\n const hasQuery = state.query.trim().length > 0;\n\n for (const [key, el] of elementByKey) {\n (el as HTMLElement).hidden = hasQuery ? !matchedKeys.has(key) : false;\n }\n };\n\n const updateHighlights = (state: IncrSearchState<ElementItem>): void => {\n if (!state.query.trim()) {\n clearHighlights({ key: highlightKey });\n return;\n }\n\n const sel = labelSelector ?? itemSelector;\n const targets = buildHighlightTargets(\n container,\n sel,\n state.positionsByItem,\n (el) => {\n const key = getKey(el);\n // Find the ElementItem whose key matches this element's key\n const result = state.results.find(r => r.item.key === key);\n return result?.item;\n },\n el => getLabel(el),\n );\n applyHighlights(targets, { key: highlightKey });\n };\n\n const unsubscribeState = search.onChange((state) => {\n updateVisibility(state);\n updateHighlights(state);\n opts.onChange?.(state);\n });\n\n let refreshPending = false;\n\n const refresh = (): void => {\n if (refreshPending)\n return;\n refreshPending = true;\n void Promise.resolve().then(() => {\n refreshPending = false;\n elementByKey = new Map<string, Element>();\n const els = container.querySelectorAll(itemSelector);\n const items: ElementItem[] = [];\n for (const el of els) {\n const key = getKey(el);\n elementByKey.set(key, el);\n items.push({ key, label: getLabel(el) });\n }\n void search.setItems(items);\n });\n };\n\n const observer = new MutationObserver(() => refresh());\n observer.observe(container, { childList: true, subtree: false });\n\n refresh();\n\n return {\n async setQuery(query, signal) {\n await search.setQuery(query, signal);\n },\n\n async clearQuery() {\n await search.clearQuery();\n },\n\n refresh,\n\n onChange(cb) {\n return search.onChange(cb);\n },\n\n dispose() {\n observer.disconnect();\n unsubscribeState();\n search.dispose();\n clearHighlights({ key: highlightKey });\n },\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"incr-search-CeERfijK.js","names":["FzfAny","#el","#opts","#search","#labelMap","#onInput","#onKeydown","#unsub","#onStateChange"],"sources":["../src/incr-search/fuzzy.ts","../src/incr-search/ac-adapter.ts","../src/incr-search/incr-search.ts","../src/incr-search/controller-tree.ts","../src/incr-search/element-search.ts"],"sourcesContent":["import type { FuzzySearch, FuzzySearchOptions, IncrSearchResult } from './types.js';\nimport { Fzf } from 'fzf';\n\nfunction defaultSelector<T>(item: T): string {\n if (typeof item === `string`)\n return item;\n const r = item as Record<string, unknown>;\n if (typeof r.label === `string`)\n return r.label;\n if (typeof r.key === `string`)\n return r.key;\n if (typeof r.value === `string`)\n return r.value;\n return String(item);\n}\n\nexport function createFuzzySearch<T>(\n items: readonly T[],\n options: FuzzySearchOptions<T> = {},\n): FuzzySearch<T> {\n const selector = options.selector ?? defaultSelector<T>;\n // fzf uses a conditional SyncOptionsTuple<T> rest-parameter overload that TypeScript\n // cannot narrow through a spread when T is generic.\n const FzfAny = Fzf as new (list: readonly T[], opts: any) => { find: (q: string) => Array<{ item: T; positions: ReadonlySet<number>; score: number }> };\n const fzf = new FzfAny(items as readonly T[], { selector, ...(options.fzf ?? {}) });\n\n const find = (query: string): ReadonlyArray<IncrSearchResult<T>> => {\n if (!query.trim()) {\n return items.map(item => ({\n item,\n positions: new Set<number>(),\n score: 0,\n }));\n }\n return fzf.find(query).map(r => ({\n item: r.item,\n positions: r.positions,\n score: r.score,\n }));\n };\n\n return { find, items };\n}\n","import type { FuzzySearchOptions } from './types.js';\nimport { createFuzzySearch } from './fuzzy.js';\n\n/**\n * Creates an ixfx-ac-text-compatible `completionProvider` function from a\n * static item list. Uses synchronous fuzzy search wrapped in a Promise so it\n * fits the async provider signature.\n *\n * Each returned item has `positions` populated with matched character indices,\n * which `ixfx-ac-text` uses to render CSS Custom Highlights on the label.\n *\n * Empty query returns all items in original order (no positions).\n * A cancelled signal causes the returned promise to reject with an AbortError.\n */\nexport function createAcCompletionProvider<T extends { label: string }>(\n items: readonly T[],\n options: Pick<FuzzySearchOptions<T>, `selector`> = {},\n): (query: string, signal: AbortSignal) => Promise<Array<T & { positions: ReadonlySet<number> }>> {\n const selector = options.selector ?? ((item: T) => item.label);\n const fuzzy = createFuzzySearch(items, { selector });\n\n return (\n query: string,\n signal: AbortSignal,\n ): Promise<Array<T & { positions: ReadonlySet<number> }>> =>\n new Promise((resolve, reject) => {\n if (signal.aborted) {\n reject(new DOMException(`Aborted`, `AbortError`));\n return;\n }\n\n const results = fuzzy.find(query).map(r => ({ ...r.item, positions: r.positions }));\n\n if (signal.aborted) {\n reject(new DOMException(`Aborted`, `AbortError`));\n return;\n }\n\n resolve(results);\n });\n}\n","import type {\n IncrSearch,\n IncrSearchChangeCallback,\n IncrSearchOptions,\n IncrSearchState,\n} from './types.js';\nimport { createFuzzySearch } from './fuzzy.js';\n\nfunction buildState<T>(results: ReturnType<ReturnType<typeof createFuzzySearch<T>>[`find`]>, query: string): IncrSearchState<T> {\n const positionsByItem = new Map<T, ReadonlySet<number>>();\n for (const r of results) {\n positionsByItem.set(r.item, r.positions);\n }\n return Object.freeze({\n query,\n results: Object.freeze([...results]),\n positionsByItem,\n });\n}\n\nexport function createIncrSearch<T>(options: IncrSearchOptions<T> = {}): IncrSearch<T> {\n let items: readonly T[] = options.items ?? [];\n let query = ``;\n let fuzzy = createFuzzySearch(items, { selector: options.selector, fzf: options.fzf });\n let state: IncrSearchState<T> = buildState(fuzzy.find(query), query);\n let disposed = false;\n\n const observers = new Set<IncrSearchChangeCallback<T>>();\n\n if (options.onChange) {\n observers.add(options.onChange);\n }\n\n const notify = (s: IncrSearchState<T>): void => {\n for (const cb of observers) {\n cb(s);\n }\n };\n\n const run = async (q: string, signal?: AbortSignal): Promise<IncrSearchState<T>> => {\n // Yield to the microtask queue for a consistent async interface\n await Promise.resolve();\n if (signal?.aborted || disposed) {\n return state;\n }\n const results = fuzzy.find(q);\n if (signal?.aborted || disposed) {\n return state;\n }\n state = buildState(results, q);\n notify(state);\n return state;\n };\n\n return {\n get state() {\n return state;\n },\n\n async setItems(newItems: readonly T[], signal?: AbortSignal): Promise<void> {\n items = newItems;\n fuzzy = createFuzzySearch(items, { selector: options.selector, fzf: options.fzf });\n await run(query, signal);\n },\n\n async setQuery(q: string, signal?: AbortSignal): Promise<IncrSearchState<T>> {\n query = q;\n return run(q, signal);\n },\n\n async clearQuery(): Promise<void> {\n query = ``;\n await run(``, undefined);\n },\n\n onChange(cb: IncrSearchChangeCallback<T>): () => void {\n observers.add(cb);\n cb(state);\n return () => {\n observers.delete(cb);\n };\n },\n\n dispose(): void {\n disposed = true;\n observers.clear();\n items = [];\n },\n };\n}\n","import type { FzfOptions } from 'fzf';\nimport type { TreeSearchHost } from '../common/searchable.js';\nimport type { TreeNode } from '../common/types.js';\nimport type { IncrSearchState } from './types.js';\nimport { applyHighlights, buildHighlightTargets, clearHighlights } from './highlight.js';\nimport { createIncrSearch } from './incr-search.js';\n\nconst DEFAULT_HIGHLIGHT_KEY = `incr-search-highlight`;\n\nexport type IncrSearchTreeOptions = {\n selector: (item: { node: TreeNode; depth: number }) => string;\n /**\n * CSS selector for the label elements inside the shadow root.\n * Defaults to `.tree-label` (suitable for ixfx-tree-list).\n * Use `.label` for ixfx-miller-list.\n */\n labelSelector?: string;\n highlightKey?: string;\n input?: HTMLInputElement;\n fzf?: Partial<FzfOptions<{ node: TreeNode; depth: number }>>;\n};\n\ntype SearchItem = { node: TreeNode; depth: number };\n\n/**\n * Incremental-search controller for any component implementing `TreeSearchHost`\n * (i.e. `ixfx-tree-list`, `ixfx-miller-list`, `ixfx-crumb-navigation`).\n *\n * Replaces the previous separate `IncrSearchTreeController` / `IncrSearchMillerController`\n * classes — the unified `TreeFilterPredicate` (with depth) means one implementation works\n * for all tree-like components.\n *\n * @example Using with ixfx-tree-list:\n * ```typescript\n * const ctrl = new IncrSearchTreeController(myTreeList, {\n * selector: item => item.node.item.label,\n * });\n * ctrl.connect();\n * ```\n *\n * @example Using with ixfx-miller-list (different label selector):\n * ```typescript\n * const ctrl = new IncrSearchTreeController(myMillerList, {\n * selector: item => item.node.item.label,\n * labelSelector: '.label',\n * });\n * ctrl.connect();\n * ```\n */\nexport class IncrSearchTreeController {\n #el: TreeSearchHost;\n #opts: IncrSearchTreeOptions;\n #search: ReturnType<typeof createIncrSearch<SearchItem>>;\n #unsub: (() => void) | undefined;\n #labelMap = new Map<string, SearchItem>();\n\n constructor(el: TreeSearchHost, opts: IncrSearchTreeOptions) {\n this.#el = el;\n this.#opts = opts;\n this.#search = createIncrSearch<SearchItem>({\n selector: opts.selector,\n fzf: opts.fzf,\n });\n }\n\n connect(): void {\n this.disconnect();\n\n const items = this.#el.getNodes();\n for (const item of items) {\n this.#labelMap.set(this.#opts.selector(item), item);\n }\n void this.#search.setItems(items);\n\n if (this.#opts.input) {\n this.#opts.input.addEventListener(`input`, this.#onInput);\n this.#opts.input.addEventListener(`keydown`, this.#onKeydown);\n }\n\n this.#unsub = this.#search.onChange(state => this.#onStateChange(state));\n }\n\n disconnect(): void {\n if (this.#unsub) {\n this.#unsub();\n this.#unsub = undefined;\n }\n if (this.#opts.input) {\n this.#opts.input.removeEventListener(`input`, this.#onInput);\n this.#opts.input.removeEventListener(`keydown`, this.#onKeydown);\n }\n this.#el.filterPredicate = undefined;\n clearHighlights({ key: this.#opts.highlightKey ?? DEFAULT_HIGHLIGHT_KEY });\n this.#labelMap.clear();\n }\n\n async setQuery(query: string): Promise<void> {\n await this.#search.setQuery(query);\n }\n\n async clearQuery(): Promise<void> {\n await this.#search.clearQuery();\n }\n\n #onInput = () => {\n const value = this.#opts.input?.value ?? ``;\n void this.setQuery(value);\n };\n\n #onKeydown = (e: KeyboardEvent) => {\n if (e.key === `Escape` && this.#opts.input) {\n this.#opts.input.value = ``;\n void this.clearQuery();\n }\n };\n\n #onStateChange(state: IncrSearchState<SearchItem>): void {\n const matched = new Set(state.results.map(r => r.item.node.item.key));\n const hasQuery = state.query.trim().length > 0;\n this.#el.filterPredicate = hasQuery && matched.size > 0\n ? (node: TreeNode, _depth: number) => matched.has(node.item.key)\n : undefined;\n\n const key = this.#opts.highlightKey ?? DEFAULT_HIGHLIGHT_KEY;\n if (!this.#el.shadowRoot)\n return;\n\n if (!state.query.trim()) {\n clearHighlights({ key });\n return;\n }\n\n const labelSelector = this.#opts.labelSelector ?? `.tree-label`;\n const targets = buildHighlightTargets(\n this.#el.shadowRoot,\n labelSelector,\n state.positionsByItem,\n (labelEl) => {\n const text = labelEl.textContent ?? ``;\n return this.#labelMap.get(text);\n },\n labelEl => labelEl.textContent ?? ``,\n );\n applyHighlights(targets, { key });\n }\n}\n","import type {\n ElementIncrSearchOptions,\n IncrSearchChangeCallback,\n IncrSearchState,\n} from './types.js';\nimport { applyHighlights, buildHighlightTargets, clearHighlights } from './highlight.js';\nimport { createIncrSearch } from './incr-search.js';\n\ntype ElementItem = { readonly key: string; readonly label: string };\n\nconst defaultGetLabel = (el: Element): string => el.textContent?.trim() ?? ``;\n\nfunction defaultGetKey(el: Element): string {\n return el.getAttribute(`data-key`)\n ?? el.getAttribute(`data-value`)\n ?? el.textContent?.trim()\n ?? ``;\n}\n\nexport type ElementIncrSearch = {\n readonly setQuery: (query: string, signal?: AbortSignal) => Promise<void>;\n readonly clearQuery: () => Promise<void>;\n readonly refresh: () => void;\n readonly onChange: (cb: IncrSearchChangeCallback<ElementItem>) => () => void;\n readonly dispose: () => void;\n};\n\nexport function createElementIncrSearch(opts: ElementIncrSearchOptions): ElementIncrSearch {\n const {\n container,\n itemSelector,\n getLabel = defaultGetLabel,\n getKey = defaultGetKey,\n labelSelector,\n highlightKey,\n } = opts;\n\n // Map from key → element reference for highlight lookup\n let elementByKey = new Map<string, Element>();\n\n const search = createIncrSearch<ElementItem>({\n selector: item => item.label,\n fzf: opts.fzf,\n });\n\n const updateVisibility = (state: IncrSearchState<ElementItem>): void => {\n const matchedKeys = new Set(state.results.map(r => r.item.key));\n const hasQuery = state.query.trim().length > 0;\n\n for (const [key, el] of elementByKey) {\n (el as HTMLElement).hidden = hasQuery ? !matchedKeys.has(key) : false;\n }\n };\n\n const updateHighlights = (state: IncrSearchState<ElementItem>): void => {\n if (!state.query.trim()) {\n clearHighlights({ key: highlightKey });\n return;\n }\n\n const sel = labelSelector ?? itemSelector;\n const targets = buildHighlightTargets(\n container,\n sel,\n state.positionsByItem,\n (el) => {\n const key = getKey(el);\n // Find the ElementItem whose key matches this element's key\n const result = state.results.find(r => r.item.key === key);\n return result?.item;\n },\n el => getLabel(el),\n );\n applyHighlights(targets, { key: highlightKey });\n };\n\n const unsubscribeState = search.onChange((state) => {\n updateVisibility(state);\n updateHighlights(state);\n opts.onChange?.(state);\n });\n\n let refreshPending = false;\n\n const refresh = (): void => {\n if (refreshPending)\n return;\n refreshPending = true;\n void Promise.resolve().then(() => {\n refreshPending = false;\n elementByKey = new Map<string, Element>();\n const els = container.querySelectorAll(itemSelector);\n const items: ElementItem[] = [];\n for (const el of els) {\n const key = getKey(el);\n elementByKey.set(key, el);\n items.push({ key, label: getLabel(el) });\n }\n void search.setItems(items);\n });\n };\n\n const observer = new MutationObserver(() => refresh());\n observer.observe(container, { childList: true, subtree: false });\n\n refresh();\n\n return {\n async setQuery(query, signal) {\n await search.setQuery(query, signal);\n },\n\n async clearQuery() {\n await search.clearQuery();\n },\n\n refresh,\n\n onChange(cb) {\n return search.onChange(cb);\n },\n\n dispose() {\n observer.disconnect();\n unsubscribeState();\n search.dispose();\n clearHighlights({ key: highlightKey });\n },\n };\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { _ as IncrSearchChangeCallback, a as createFuzzySearch, b as IncrSearchState, c as IncrSearchTreeController, d as ElementIncrSearchOptions, f as FuzzySearch, g as IncrSearch, h as HighlightTarget, i as clearHighlights, l as IncrSearchTreeOptions, m as HighlightOptions, n as applyHighlights, o as ElementIncrSearch, p as FuzzySearchOptions, r as buildHighlightTargets, s as createElementIncrSearch, t as createIncrSearch, u as createAcCompletionProvider, v as IncrSearchOptions, y as IncrSearchResult } from "./index-D9u_Q7-b.js";
1
+ import { _ as IncrSearchChangeCallback, a as createFuzzySearch, b as IncrSearchState, c as IncrSearchTreeController, d as ElementIncrSearchOptions, f as FuzzySearch, g as IncrSearch, h as HighlightTarget, i as clearHighlights, l as IncrSearchTreeOptions, m as HighlightOptions, n as applyHighlights, o as ElementIncrSearch, p as FuzzySearchOptions, r as buildHighlightTargets, s as createElementIncrSearch, t as createIncrSearch, u as createAcCompletionProvider, v as IncrSearchOptions, y as IncrSearchResult } from "./index-BslNaMLo.js";
2
2
  export { type ElementIncrSearch, type ElementIncrSearchOptions, type FuzzySearch, type FuzzySearchOptions, type HighlightOptions, type HighlightTarget, type IncrSearch, type IncrSearchChangeCallback, IncrSearchTreeController as IncrSearchMillerController, IncrSearchTreeController, type IncrSearchTreeOptions as IncrSearchMillerOptions, type IncrSearchTreeOptions, type IncrSearchOptions, type IncrSearchResult, type IncrSearchState, applyHighlights, buildHighlightTargets, clearHighlights, createAcCompletionProvider, createElementIncrSearch, createFuzzySearch, createIncrSearch };
@@ -1,3 +1,3 @@
1
1
  import { n as buildHighlightTargets, r as clearHighlights, t as applyHighlights } from "./highlight-B-eQrhhb.js";
2
- import { a as createFuzzySearch, i as createAcCompletionProvider, n as IncrSearchTreeController, r as createIncrSearch, t as createElementIncrSearch } from "./incr-search-2pz21xtR.js";
2
+ import { a as createFuzzySearch, i as createAcCompletionProvider, n as IncrSearchTreeController, r as createIncrSearch, t as createElementIncrSearch } from "./incr-search-CeERfijK.js";
3
3
  export { IncrSearchTreeController as IncrSearchMillerController, IncrSearchTreeController, applyHighlights, buildHighlightTargets, clearHighlights, createAcCompletionProvider, createElementIncrSearch, createFuzzySearch, createIncrSearch };
@@ -1,6 +1,6 @@
1
- import { o as TreeNode } from "./types-DO3gt5vg.js";
2
- import { d as TreeSearchHost } from "./tree-component-DQ9vzdy5.js";
1
+ import { C as TreeNode, d as TreeSearchHost } from "./tree-component-CDLO1ITF.js";
3
2
  import { FzfOptions } from "fzf";
3
+
4
4
  //#region src/incr-search/types.d.ts
5
5
  type IncrSearchResult<T> = {
6
6
  readonly item: T;
@@ -157,4 +157,4 @@ declare function buildHighlightTargets<T>(root: ShadowRoot | Element, itemSelect
157
157
  declare function createIncrSearch<T>(options?: IncrSearchOptions<T>): IncrSearch<T>;
158
158
  //#endregion
159
159
  export { IncrSearchChangeCallback as _, createFuzzySearch as a, IncrSearchState as b, IncrSearchTreeController as c, ElementIncrSearchOptions as d, FuzzySearch as f, IncrSearch as g, HighlightTarget as h, clearHighlights as i, IncrSearchTreeOptions as l, HighlightOptions as m, applyHighlights as n, ElementIncrSearch as o, FuzzySearchOptions as p, buildHighlightTargets as r, createElementIncrSearch as s, createIncrSearch as t, createAcCompletionProvider as u, IncrSearchOptions as v, IncrSearchResult as y };
160
- //# sourceMappingURL=index-D9u_Q7-b.d.ts.map
160
+ //# sourceMappingURL=index-BslNaMLo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-BslNaMLo.d.ts","names":[],"sources":["../src/incr-search/types.ts","../src/incr-search/ac-adapter.ts","../src/incr-search/controller-tree.ts","../src/incr-search/element-search.ts","../src/incr-search/fuzzy.ts","../src/incr-search/highlight.ts","../src/incr-search/incr-search.ts"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import "./icon-BUwP1CZ1.js";
2
- import { o as TreeNode } from "./types-DO3gt5vg.js";
3
- import { i as MenuContainer, n as MenuTrigger, r as MenuTriggerCommandDetail, t as MenuItem } from "./menu-item-BG5w7fi4.js";
1
+ import { C as TreeNode } from "./tree-component-CDLO1ITF.js";
2
+ import { i as MenuContainer, n as MenuTrigger, r as MenuTriggerCommandDetail, t as MenuItem } from "./menu-item-AtoP6bD4.js";
4
3
  import { LitElement, TemplateResult } from "lit";
5
4
  import { CommandRegistry, KeyboardManager } from "@clinth/ui-commands";
5
+
6
6
  //#region src/menu/menu-bar.d.ts
7
7
  declare class MenuBar extends LitElement {
8
8
  private _openTrigger;
@@ -23,7 +23,7 @@ declare global {
23
23
  interface HTMLElementTagNameMap {
24
24
  'ixfx-menu-bar': MenuBar;
25
25
  }
26
- }
26
+ } //# sourceMappingURL=menu-bar.d.ts.map
27
27
  //#endregion
28
28
  //#region src/menu/menu-check-item.d.ts
29
29
  declare class MenuCheckItem extends LitElement {
@@ -48,7 +48,7 @@ declare global {
48
48
  interface HTMLElementTagNameMap {
49
49
  'ixfx-menu-check-item': MenuCheckItem;
50
50
  }
51
- }
51
+ } //# sourceMappingURL=menu-check-item.d.ts.map
52
52
  //#endregion
53
53
  //#region src/menu/menu-command-controller.d.ts
54
54
  declare class MenuCommandController {
@@ -106,7 +106,7 @@ declare global {
106
106
  interface HTMLElementTagNameMap {
107
107
  'ixfx-menu-sub-trigger': MenuSubTrigger;
108
108
  }
109
- }
109
+ } //# sourceMappingURL=menu-sub-trigger.d.ts.map
110
110
  //#endregion
111
111
  //#region src/menu/menu-separator.d.ts
112
112
  declare class MenuSeparator extends LitElement {
@@ -117,7 +117,7 @@ declare global {
117
117
  interface HTMLElementTagNameMap {
118
118
  'ixfx-menu-separator': MenuSeparator;
119
119
  }
120
- }
120
+ } //# sourceMappingURL=menu-separator.d.ts.map
121
121
  //#endregion
122
122
  //#region src/menu/menu-header.d.ts
123
123
  declare class MenuHeader extends LitElement {
@@ -129,7 +129,7 @@ declare global {
129
129
  interface HTMLElementTagNameMap {
130
130
  'ixfx-menu-header': MenuHeader;
131
131
  }
132
- }
132
+ } //# sourceMappingURL=menu-header.d.ts.map
133
133
  //#endregion
134
134
  //#region src/menu/menu-from-tree.d.ts
135
135
  type MenuFromTreeOptions = {
@@ -155,7 +155,7 @@ declare global {
155
155
  interface HTMLElementTagNameMap {
156
156
  'ixfx-menu-radio-item': MenuRadioItem;
157
157
  }
158
- }
158
+ } //# sourceMappingURL=menu-radio-item.d.ts.map
159
159
  //#endregion
160
160
  //#region src/menu/menu-radio-group.d.ts
161
161
  declare class MenuRadioGroup extends LitElement {
@@ -173,10 +173,10 @@ declare global {
173
173
  interface HTMLElementTagNameMap {
174
174
  'ixfx-menu-radio-group': MenuRadioGroup;
175
175
  }
176
- }
176
+ } //# sourceMappingURL=menu-radio-group.d.ts.map
177
177
  declare namespace index_d_exports {
178
178
  export { MenuBar, MenuCheckItem, MenuCommandController, MenuContainer, MenuFromTreeOptions, MenuHeader, MenuItem, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuSubTrigger, MenuTrigger, menuFromTree, menuFromTreeToElements };
179
179
  }
180
180
  //#endregion
181
181
  export { menuFromTree as a, MenuSeparator as c, MenuCheckItem as d, MenuBar as f, MenuFromTreeOptions as i, MenuSubTrigger as l, MenuRadioGroup as n, menuFromTreeToElements as o, MenuRadioItem as r, MenuHeader as s, index_d_exports as t, MenuCommandController as u };
182
- //# sourceMappingURL=index-DkhBGHgF.d.ts.map
182
+ //# sourceMappingURL=index-Cdmrn0SZ.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-Cdmrn0SZ.d.ts","names":[],"sources":["../src/menu/menu-bar.ts","../src/menu/menu-check-item.ts","../src/menu/menu-command-controller.ts","../src/menu/menu-sub-trigger.ts","../src/menu/menu-separator.ts","../src/menu/menu-header.ts","../src/menu/menu-from-tree.ts","../src/menu/menu-radio-item.ts","../src/menu/menu-radio-group.ts","../src/menu/index.ts"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import { t as LabelledInputBase } from "./labelled-input-base-Dp_9KP0G.js";
1
+ import { t as LabelledInputBase } from "./labelled-input-base-ORb1rGq6.js";
2
2
  import { CSSResultGroup } from "lit";
3
+
3
4
  //#region src/labelled-range-input/labelled-range-input.d.ts
4
5
  declare class LabelledRangeInput extends LabelledInputBase {
5
6
  readonly inputSelector = "ixfx-range-input";
@@ -18,7 +19,7 @@ declare global {
18
19
  interface HTMLElementTagNameMap {
19
20
  'ixfx-labelled-range-input': LabelledRangeInput;
20
21
  }
21
- }
22
+ } //# sourceMappingURL=labelled-range-input.d.ts.map
22
23
  //#endregion
23
24
  export { LabelledRangeInput as t };
24
- //# sourceMappingURL=index-BUB5SICW.d.ts.map
25
+ //# sourceMappingURL=index-CkMIKEWp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-CkMIKEWp.d.ts","names":[],"sources":["../src/labelled-range-input/labelled-range-input.ts"],"mappings":";;;;cAuEa,kBAAA,SAA2B,iBAAiB;EAAA,SAC9C,aAAA;EAEmB,WAAA;EACC,OAAA;EACyB,SAAA;EACQ,kBAAA;;EAEjC,UAAA;EAE2B,YAAA;EAAA,UAErC,qBAAA,kBAAqB,cAAA;EA2B/B,MAAA,kBAAM,cAAA;EAAA,OA2BR,MAAA,EAAQ,cAAA;AAAA;AAAA,QA2ET,MAAA;EAAA,UACI,qBAAA;IACR,2BAAA,EAA6B,kBAAkB;EAAA;AAAA"}
@@ -1,4 +1,3 @@
1
- import "./icon-BUwP1CZ1.js";
2
1
  //#region src/icons/defaults.d.ts
3
2
  /**
4
3
  * Chevron pointing down. Used for split-button dropdown toggle.
@@ -34,4 +33,4 @@ declare function hasIcon(name: string): boolean;
34
33
  declare function svgToDataUri(svg: string): string;
35
34
  //#endregion
36
35
  export { iconBus as a, ICON_CARET_RIGHT as c, ICON_CLOSE as d, hasIcon as i, ICON_CHECK as l, IconChangedEvent as n, registerIcon as o, getIcon as r, svgToDataUri as s, IconChangedDetail as t, ICON_CHEVRON_DOWN as u };
37
- //# sourceMappingURL=index-RqMh1i-O.d.ts.map
36
+ //# sourceMappingURL=index-D87kRcEs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-D87kRcEs.d.ts","names":[],"sources":["../src/icons/defaults.ts","../src/icons/registry.ts"],"mappings":";;;;AAMA;cAAa,iBAAA;;;AAAiB;AAM9B;cAAa,gBAAA;;;AAAgB;AAM7B;cAAa,UAAA;;;AAAU;AAMvB;cAAa,UAAA;;;cCtBA,OAAA,EAAO,WAAoB;AAAA,KAE5B,iBAAA;EAAA,SAA+B,IAAI;AAAA;AAAA,KACnC,gBAAA,GAAmB,WAAW,CAAC,iBAAA;AAAA,iBAE3B,YAAA,CAAa,IAAA,UAAc,GAAW;AAAA,iBAKtC,OAAA,CAAQ,IAAY;AAAA,iBAIpB,OAAA,CAAQ,IAAY;ADJpC;AAAA,iBCSgB,YAAA,CAAa,GAAW"}
@@ -1,6 +1,6 @@
1
- import "./index-BUB5SICW.js";
2
1
  import { CSSResultGroup, LitElement, PropertyValues } from "lit";
3
2
  import { Colour } from "@ixfx/visual";
3
+
4
4
  //#region src/colour-picker/types.d.ts
5
5
  /**
6
6
  * OKLCH colour value representation
@@ -10,6 +10,8 @@ type OklchValue = {
10
10
  readonly c: number;
11
11
  readonly h: number;
12
12
  readonly a?: number;
13
+ readonly unit: `scalar`;
14
+ readonly space: `oklch`;
13
15
  };
14
16
  /**
15
17
  * Event detail for colour picker input/change events
@@ -29,7 +31,7 @@ declare global {
29
31
  interface HTMLElementTagNameMap {
30
32
  'ixfx-colour-picker': ColourPicker;
31
33
  }
32
- }
34
+ } //# sourceMappingURL=types.d.ts.map
33
35
  //#endregion
34
36
  //#region src/colour-picker/colour-picker.d.ts
35
37
  declare class ColourPicker extends LitElement {
@@ -104,7 +106,7 @@ declare global {
104
106
  interface HTMLElementTagNameMap {
105
107
  'ixfx-colour-picker': ColourPicker;
106
108
  }
107
- }
109
+ } //# sourceMappingURL=colour-picker.d.ts.map
108
110
  //#endregion
109
111
  //#region src/colour-picker/colour-picker-popup.d.ts
110
112
  declare const PICKER_SIZES: {
@@ -157,6 +159,7 @@ declare class ColourPickerPopup extends LitElement {
157
159
  private _pendingConfirmed;
158
160
  constructor();
159
161
  get value(): string;
162
+ set value(colour: Colour.Colourish);
160
163
  private get _innerHidePreview();
161
164
  private get _pickerDimensions();
162
165
  setColour(colour: Colour.Colourish): void;
@@ -181,4 +184,4 @@ declare global {
181
184
  }
182
185
  //#endregion
183
186
  export { ColourPickerInputEvent as a, ColourPickerEventDetail as i, ColourPicker as n, OklchValue as o, ColourPickerChangeEvent as r, ColourPickerPopup as t };
184
- //# sourceMappingURL=index-BKAlRgbq.d.ts.map
187
+ //# sourceMappingURL=index-DrKRD8_a.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-DrKRD8_a.d.ts","names":[],"sources":["../src/colour-picker/types.ts","../src/colour-picker/colour-picker.ts","../src/colour-picker/colour-picker-popup.ts"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import { LitElement, PropertyValues } from "lit";
2
- import "@clinth/vcanvas";
3
2
  //#region src/timeline/types.d.ts
4
3
  type TimelineTrack = {
5
4
  readonly key: string;
@@ -234,7 +233,7 @@ declare global {
234
233
  interface HTMLElementTagNameMap {
235
234
  'ixfx-timeline-track-tab': TimelineTrackTabElement;
236
235
  }
237
- }
236
+ } //# sourceMappingURL=timeline-track-tabs.d.ts.map
238
237
  //#endregion
239
238
  //#region src/timeline/timeline-element.d.ts
240
239
  type VCanvasElement$1 = HTMLElement & {
@@ -382,6 +381,7 @@ type VCanvasElement = HTMLElement & {
382
381
  invalidateAll: () => void;
383
382
  invalidateRegion: (x: number, y: number, w: number, h: number) => void;
384
383
  };
384
+ /** Total pointer movement (px) before an axis drag activates */
385
385
  /**
386
386
  * Attaches pointer and keyboard interaction handlers to the timeline.
387
387
  * Returns a cleanup function.
@@ -392,4 +392,4 @@ declare function attachTimelineInteractions(host: IxfxTimelineElement, vcanvasEl
392
392
  declare const timelineStyles: import("lit").CSSResult;
393
393
  //#endregion
394
394
  export { TimelineTrackReorderEvent as A, TimelineEventResizeEvent as C, TimelineTickleChangeEvent as D, TimelineTickleChangeDetail as E, TrackHeightMode as F, TrackLayout as I, UserScale as L, TimelineTrackResizeEvent as M, TimelineTrackSelectDetail as N, TimelineTrack as O, TimelineTrackSelectEvent as P, ViewRange as R, TimelineEventResizeDetail as S, TimelineSelectionChangeEvent as T, TimelineDraggingEvent as _, CssVars as a, TimelineEventMoveDetail as b, resolveGrid as c, DragSnappingFn as d, DragTarget as f, TimelineDraggingDetail as g, TimelineDraggingCallbackDetail as h, TimelineTrackTabElement as i, TimelineTrackResizeDetail as j, TimelineTrackReorderDetail as k, TimelineController as l, GridResolution as m, attachTimelineInteractions as n, Rect as o, GridMode as p, IxfxTimelineElement as r, resolveCssVars as s, timelineStyles as t, TimelineControllerConfig as u, TimelineElementEventMap as v, TimelineSelectionChangeDetail as w, TimelineEventMoveEvent as x, TimelineEvent as y };
395
- //# sourceMappingURL=index-BeuCXtiO.d.ts.map
395
+ //# sourceMappingURL=index-tX6fKF8m.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-tX6fKF8m.d.ts","names":[],"sources":["../src/timeline/types.ts","../src/timeline/timeline-controller.ts","../src/timeline/timeline-draw.ts","../src/timeline/timeline-track-tabs.ts","../src/timeline/timeline-element.ts","../src/timeline/timeline-interactions.ts","../src/timeline/timeline-styles.ts"],"mappings":"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"}