@ixfx/components 0.6.1 → 0.7.0

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 (196) hide show
  1. package/bundle/index.d.ts +1599 -602
  2. package/bundle/index.d.ts.map +1 -1
  3. package/bundle/index.js +21238 -16114
  4. package/bundle/index.js.map +1 -1
  5. package/bundle/style.css +1 -1
  6. package/dist/ac-text.d.ts +1 -1
  7. package/dist/ac-text.js +3 -2
  8. package/dist/ac-text.js.map +1 -1
  9. package/dist/{ac-token-DVbmHmky.d.ts → ac-token-BAa6ke09.d.ts} +2 -2
  10. package/dist/{ac-token-DVbmHmky.d.ts.map → ac-token-BAa6ke09.d.ts.map} +1 -1
  11. package/dist/ac-token.d.ts +1 -1
  12. package/dist/ac-token.js +3 -2
  13. package/dist/ac-token.js.map +1 -1
  14. package/dist/{button-Bn0BuLpO.js → button-Dat2yHAU.js} +4 -3
  15. package/dist/button-Dat2yHAU.js.map +1 -0
  16. package/dist/button.d.ts +1 -1
  17. package/dist/button.d.ts.map +1 -1
  18. package/dist/button.js +1 -1
  19. package/dist/checkbox.js +1 -1
  20. package/dist/{colour-picker-0stHB90J.js → colour-picker-BSDBL-QL.js} +4 -3
  21. package/dist/{colour-picker-0stHB90J.js.map → colour-picker-BSDBL-QL.js.map} +1 -1
  22. package/dist/colour-picker.d.ts +1 -1
  23. package/dist/colour-picker.js +1 -1
  24. package/dist/crumbs.d.ts +1 -1
  25. package/dist/crumbs.js +4 -2
  26. package/dist/crumbs.js.map +1 -1
  27. package/dist/data-display.js +1 -1
  28. package/dist/{data-grid-BeAkORz2.d.ts → data-grid-C8qIo1-u.d.ts} +2 -2
  29. package/dist/{data-grid-BeAkORz2.d.ts.map → data-grid-C8qIo1-u.d.ts.map} +1 -1
  30. package/dist/data-grid.d.ts +1 -1
  31. package/dist/data-grid.js +4 -2
  32. package/dist/data-grid.js.map +1 -1
  33. package/dist/{defaults-BCiDhZbF.js → defaults-BkWCPJFL.js} +3 -20
  34. package/dist/defaults-BkWCPJFL.js.map +1 -0
  35. package/dist/editable-label-rzXkjf1H.d.ts +75 -0
  36. package/dist/editable-label-rzXkjf1H.d.ts.map +1 -0
  37. package/dist/editable-label.d.ts +2 -75
  38. package/dist/editable-label.js +2 -1
  39. package/dist/editable-label.js.map +1 -1
  40. package/dist/{fallbacks-DEE1nCTt.js → fallbacks-DNI9xt0F.js} +2 -2
  41. package/dist/{fallbacks-DEE1nCTt.js.map → fallbacks-DNI9xt0F.js.map} +1 -1
  42. package/dist/{grouped-item-lister-CNLMgdIr.d.ts → grouped-item-lister-DnWB-eFT.d.ts} +3 -3
  43. package/dist/{grouped-item-lister-CNLMgdIr.d.ts.map → grouped-item-lister-DnWB-eFT.d.ts.map} +1 -1
  44. package/dist/grouped-item-lister.d.ts +1 -1
  45. package/dist/{icons-Bm2ByQ3s.js → icon-CvnPanhA.js} +3 -6
  46. package/dist/icon-CvnPanhA.js.map +1 -0
  47. package/dist/{icon-BUwP1CZ1.d.ts → icon-DpA9x2Ve.d.ts} +2 -2
  48. package/dist/icon-DpA9x2Ve.d.ts.map +1 -0
  49. package/dist/icons.d.ts +2 -2
  50. package/dist/icons.js +8 -2
  51. package/dist/icons.js.map +1 -0
  52. package/dist/{index-RqMh1i-O.d.ts → index-BtGFYfaK.d.ts} +2 -2
  53. package/dist/{index-RqMh1i-O.d.ts.map → index-BtGFYfaK.d.ts.map} +1 -1
  54. package/dist/index-CG2vIgPv.d.ts +101 -0
  55. package/dist/index-CG2vIgPv.d.ts.map +1 -0
  56. package/dist/{index-ovq_GTdl.d.ts → index-CKtLhgYj.d.ts} +3 -3
  57. package/dist/{index-ovq_GTdl.d.ts.map → index-CKtLhgYj.d.ts.map} +1 -1
  58. package/dist/{index-BUB5SICW.d.ts → index-CoqtMSd9.d.ts} +2 -2
  59. package/dist/{index-BUB5SICW.d.ts.map → index-CoqtMSd9.d.ts.map} +1 -1
  60. package/dist/{index-BOUaDIW-.d.ts → index-tq6f8007.d.ts} +2 -2
  61. package/dist/{index-BOUaDIW-.d.ts.map → index-tq6f8007.d.ts.map} +1 -1
  62. package/dist/index.d.ts +828 -116
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +5498 -2237
  65. package/dist/index.js.map +1 -1
  66. package/dist/interaction-D5XdKzbR.js +2 -0
  67. package/dist/{labelled-input-base-Dp_9KP0G.d.ts → labelled-input-base-DiTme1JO.d.ts} +2 -2
  68. package/dist/{labelled-input-base-Dp_9KP0G.d.ts.map → labelled-input-base-DiTme1JO.d.ts.map} +1 -1
  69. package/dist/labelled-radial-input.d.ts +3 -3
  70. package/dist/labelled-radial-input.d.ts.map +1 -1
  71. package/dist/labelled-radial-input.js +2 -1
  72. package/dist/labelled-radial-input.js.map +1 -1
  73. package/dist/labelled-range-input.d.ts +1 -1
  74. package/dist/labelled-slider-input-DzigjMwP.js +808 -0
  75. package/dist/labelled-slider-input-DzigjMwP.js.map +1 -0
  76. package/dist/labelled-slider-input.d.ts +2 -0
  77. package/dist/labelled-slider-input.js +2 -0
  78. package/dist/{types-DlVNJez_.d.ts → list-selection-types-DSuRNWpx.d.ts} +10 -2
  79. package/dist/list-selection-types-DSuRNWpx.d.ts.map +1 -0
  80. package/dist/menu-BjRvlgPy.js +825 -0
  81. package/dist/menu-BjRvlgPy.js.map +1 -0
  82. package/dist/menu-item-B-zYrTTi.js +797 -0
  83. package/dist/menu-item-B-zYrTTi.js.map +1 -0
  84. package/dist/{menu-item-BG5w7fi4.d.ts → menu-item-Bs2MYyHq.d.ts} +2 -2
  85. package/dist/{menu-item-BG5w7fi4.d.ts.map → menu-item-Bs2MYyHq.d.ts.map} +1 -1
  86. package/dist/menu.d.ts +2 -2
  87. package/dist/menu.js +2 -1
  88. package/dist/miller.d.ts +1 -1
  89. package/dist/miller.js +3 -2
  90. package/dist/miller.js.map +1 -1
  91. package/dist/narrowed-text.js +4 -2
  92. package/dist/narrowed-text.js.map +1 -1
  93. package/dist/notifier.js +3 -2
  94. package/dist/notifier.js.map +1 -1
  95. package/dist/panel.d.ts +13 -13
  96. package/dist/panel.d.ts.map +1 -1
  97. package/dist/panel.js +37 -253
  98. package/dist/panel.js.map +1 -1
  99. package/dist/plots.js +1 -1
  100. package/dist/polar-pad.d.ts +1 -1
  101. package/dist/polar-pad.js +1 -1
  102. package/dist/{radial-input-BhZeyyP-.d.ts → radial-input-DXMN55Nz.d.ts} +2 -2
  103. package/dist/{radial-input-BhZeyyP-.d.ts.map → radial-input-DXMN55Nz.d.ts.map} +1 -1
  104. package/dist/{radial-input-Dk8Wydp5.js → radial-input-Dp5qz0ly.js} +2 -2
  105. package/dist/{radial-input-Dk8Wydp5.js.map → radial-input-Dp5qz0ly.js.map} +1 -1
  106. package/dist/radial-input.d.ts +1 -1
  107. package/dist/radial-input.js +1 -1
  108. package/dist/range-input.d.ts +1 -1
  109. package/dist/range-input.js +1 -1
  110. package/dist/range.d.ts +1 -1
  111. package/dist/range.js +1 -1
  112. package/dist/registry-CkW7q09Q.js +21 -0
  113. package/dist/registry-CkW7q09Q.js.map +1 -0
  114. package/dist/select-horiz.d.ts +1 -1
  115. package/dist/select-horiz.js +3 -2
  116. package/dist/select-horiz.js.map +1 -1
  117. package/dist/{slider-input-TidGhvXt.d.ts → slider-input-BfRUW2ZB.d.ts} +17 -4
  118. package/dist/slider-input-BfRUW2ZB.d.ts.map +1 -0
  119. package/dist/{slider-input-CT4gcF-o.js → slider-input-De4eoT11.js} +382 -67
  120. package/dist/slider-input-De4eoT11.js.map +1 -0
  121. package/dist/slider-input.d.ts +1 -1
  122. package/dist/slider-input.js +1 -1
  123. package/dist/snackbar.js +1 -1
  124. package/dist/split-layout-BFSbUZQv.js +969 -0
  125. package/dist/split-layout-BFSbUZQv.js.map +1 -0
  126. package/dist/split-layout-JK3xWVX2.d.ts +179 -0
  127. package/dist/split-layout-JK3xWVX2.d.ts.map +1 -0
  128. package/dist/split-layout.d.ts +2 -60
  129. package/dist/split-layout.js +1 -617
  130. package/dist/style.css +1 -1
  131. package/dist/swipe.d.ts +1 -1
  132. package/dist/swipe.js +1 -1
  133. package/dist/{tab-list-Beuh2nom.d.ts → tab-list-MPwq_1Jj.d.ts} +3 -2
  134. package/dist/tab-list-MPwq_1Jj.d.ts.map +1 -0
  135. package/dist/tabs.d.ts +1 -1
  136. package/dist/tabs.js +96 -14
  137. package/dist/tabs.js.map +1 -1
  138. package/dist/{tickled-controller-BtevrRLV.d.ts → tickled-controller-CRzdIEjJ.d.ts} +7 -1
  139. package/dist/tickled-controller-CRzdIEjJ.d.ts.map +1 -0
  140. package/dist/{tickled-controller-DkAU-0qL.js → tickled-controller-h9GmJ_bU.js} +8 -2
  141. package/dist/tickled-controller-h9GmJ_bU.js.map +1 -0
  142. package/dist/titlebar-DaCfpliv.d.ts +50 -0
  143. package/dist/titlebar-DaCfpliv.d.ts.map +1 -0
  144. package/dist/titlebar.d.ts +2 -0
  145. package/dist/titlebar.js +324 -0
  146. package/dist/titlebar.js.map +1 -0
  147. package/dist/{tree-BO6BXI2b.js → tree-Ch4W8qXQ.js} +4 -3
  148. package/dist/{tree-BO6BXI2b.js.map → tree-Ch4W8qXQ.js.map} +1 -1
  149. package/dist/tree.d.ts +1 -1
  150. package/dist/tree.js +1 -1
  151. package/dist/vertical-list-ClnqTkF3.js +814 -0
  152. package/dist/vertical-list-ClnqTkF3.js.map +1 -0
  153. package/dist/vertical-list.d.ts +8 -9
  154. package/dist/vertical-list.d.ts.map +1 -1
  155. package/dist/vertical-list.js +1 -736
  156. package/dist/wheel-nudge-BlSCe_hD.js.map +1 -1
  157. package/dist/{wheel-nudge-DgMTRYlh.d.ts → wheel-nudge-DGrNzWuE.d.ts} +3 -3
  158. package/dist/wheel-nudge-DGrNzWuE.d.ts.map +1 -0
  159. package/dist/{xy-axis-B6yMjckW.js → xy-axis-CxHC8z5E.js} +109 -3
  160. package/dist/xy-axis-CxHC8z5E.js.map +1 -0
  161. package/dist/xy-pad.d.ts +1 -1
  162. package/dist/xy-pad.js +1 -1
  163. package/docs-user/README.md +5 -0
  164. package/docs-user/detail-list.md +398 -0
  165. package/docs-user/dock.md +310 -0
  166. package/docs-user/index.json +28 -3
  167. package/docs-user/labelled-slider-input.md +198 -0
  168. package/docs-user/llms.txt +6 -1
  169. package/docs-user/panel.md +20 -1
  170. package/docs-user/slider-input.md +55 -15
  171. package/docs-user/split-layout.md +136 -170
  172. package/docs-user/tabs.md +34 -0
  173. package/docs-user/titlebar.md +102 -0
  174. package/docs-user/toolbar.md +95 -22
  175. package/docs-user/twosplit-layout.md +254 -0
  176. package/docs-user/user-catalog.md +8 -1
  177. package/llms.txt +6 -1
  178. package/package.json +2 -2
  179. package/dist/button-Bn0BuLpO.js.map +0 -1
  180. package/dist/defaults-BCiDhZbF.js.map +0 -1
  181. package/dist/editable-label.d.ts.map +0 -1
  182. package/dist/icon-BUwP1CZ1.d.ts.map +0 -1
  183. package/dist/icons-Bm2ByQ3s.js.map +0 -1
  184. package/dist/menu-DIfU70AA.js +0 -1609
  185. package/dist/menu-DIfU70AA.js.map +0 -1
  186. package/dist/slider-input-CT4gcF-o.js.map +0 -1
  187. package/dist/slider-input-TidGhvXt.d.ts.map +0 -1
  188. package/dist/split-layout.d.ts.map +0 -1
  189. package/dist/split-layout.js.map +0 -1
  190. package/dist/tab-list-Beuh2nom.d.ts.map +0 -1
  191. package/dist/tickled-controller-BtevrRLV.d.ts.map +0 -1
  192. package/dist/tickled-controller-DkAU-0qL.js.map +0 -1
  193. package/dist/types-DlVNJez_.d.ts.map +0 -1
  194. package/dist/vertical-list.js.map +0 -1
  195. package/dist/wheel-nudge-DgMTRYlh.d.ts.map +0 -1
  196. package/dist/xy-axis-B6yMjckW.js.map +0 -1
package/bundle/index.d.ts CHANGED
@@ -2934,6 +2934,1050 @@ interface DataGridElement {
2934
2934
  removeEventListener: (<K extends keyof DataGridElementEventMap>(type: K, listener: (this: DataGridElement, event: DataGridElementEventMap[K]) => void, options?: boolean | EventListenerOptions) => void) & ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions) => void);
2935
2935
  }
2936
2936
  //#endregion
2937
+ //#region src/interaction/list-selection-types.d.ts
2938
+ /**
2939
+ * Shared list selection types.
2940
+ *
2941
+ * Used by every list-flavoured component (`ixfx-vertical-list`,
2942
+ * `ixfx-detail-list`, …) so selection semantics and events stay identical
2943
+ * across them. Historically lived in `src/vertical-list/types.ts`, which
2944
+ * still re-exports everything from here for backwards compatibility.
2945
+ */
2946
+ type ListSelectionMode = `none` | `single` | `multiple`;
2947
+ /**
2948
+ * Controls how pointer and keyboard gestures map to selection changes.
2949
+ *
2950
+ * - `implicit` — click always replaces selection (no modifier support)
2951
+ * - `standard` — click replaces; Ctrl/Cmd+click toggles; Shift+click range-selects (multiple only)
2952
+ * - `manual` — no auto-selection; drive state via select()/deselect()/clearSelection()
2953
+ * - `checked` — every click toggles; implies multiple selection regardless of selectionMode
2954
+ * - `sticky` — every tap/click toggles (no checkbox column); implies multiple selection, for touchscreens
2955
+ * - `vscode` — like standard for clicks; Shift+Arrow extends range from the keyboard anchor
2956
+ *
2957
+ * Switching interactionMode clears the current selection.
2958
+ */
2959
+ type ListInteractionMode = `implicit` | `standard` | `manual` | `checked` | `sticky` | `vscode`;
2960
+ type ListSelectDetail = {
2961
+ readonly selected: ReadonlySet<Element>;
2962
+ readonly previous: ReadonlySet<Element>;
2963
+ };
2964
+ type ListTickleDetail = {
2965
+ readonly item: Element;
2966
+ };
2967
+ type ListActivateDetail = {
2968
+ readonly item: Element;
2969
+ };
2970
+ type ListItemClickDetail = {
2971
+ readonly item: Element;
2972
+ };
2973
+ type ListSelectEvent = CustomEvent<ListSelectDetail>;
2974
+ type ListTickleEvent = CustomEvent<ListTickleDetail>;
2975
+ type ListActivateEvent = CustomEvent<ListActivateDetail>;
2976
+ type ListItemClickEvent = CustomEvent<ListItemClickDetail>;
2977
+ interface ListElementEventMap {
2978
+ 'list-select': ListSelectEvent;
2979
+ 'list-tickle': ListTickleEvent;
2980
+ 'list-activate': ListActivateEvent;
2981
+ 'list-item-click': ListItemClickEvent;
2982
+ }
2983
+ //#endregion
2984
+ //#region src/vertical-list/vertical-list.d.ts
2985
+ interface CustomCheckboxOptions {
2986
+ renderer: (checked: boolean) => unknown;
2987
+ margin?: string;
2988
+ width?: string;
2989
+ }
2990
+ interface AddItemOptions {
2991
+ /**
2992
+ * In `checked` interaction mode, adds the item without a checkbox column and
2993
+ * without the ability to be checked/selected. Equivalent to setting the
2994
+ * `not-checked` attribute on the item. Ignored outside `checked` mode.
2995
+ */
2996
+ notChecked?: boolean;
2997
+ }
2998
+ declare class VerticalListElement extends LitElement {
2999
+ #private;
3000
+ selectionMode: ListSelectionMode;
3001
+ interactionMode: ListInteractionMode;
3002
+ filterPredicate: ((el: Element) => boolean) | undefined;
3003
+ /**
3004
+ * Whether keyboard navigation wraps from last to first and vice versa.
3005
+ * - 'stop' (default): navigation stops at the boundary
3006
+ * - 'wrap': navigation wraps around
3007
+ */
3008
+ itemWrap: `stop` | `wrap`;
3009
+ /**
3010
+ * Optional renderer for the checkbox shown in `checked` interactionMode.
3011
+ * Receives the current `checked` state and returns a Lit template result.
3012
+ *
3013
+ * When set, the per-row checkbox becomes a `<span role="checkbox">` whose
3014
+ * contents are whatever this returns (rendered with `lit`'s `render()`).
3015
+ * When unset, a native `<input type="checkbox">` is used.
3016
+ *
3017
+ * @example
3018
+ * list.checkboxRenderer = (checked) => checked
3019
+ * ? html`<svg viewBox="0 0 16 16" width="14" height="14"
3020
+ * fill="none" stroke="currentColor" stroke-width="2"
3021
+ * stroke-linecap="round" stroke-linejoin="round"
3022
+ * style="opacity:0.5">
3023
+ * <polyline points="3,8 7,12 13,4" />
3024
+ * </svg>`
3025
+ * : html``;
3026
+ */
3027
+ checkboxRenderer: ((checked: boolean) => unknown) | CustomCheckboxOptions | undefined;
3028
+ private _searchVisible;
3029
+ private _searchQuery;
3030
+ private _searchInputEl;
3031
+ private readonly selection;
3032
+ private tickled;
3033
+ connectedCallback(): void;
3034
+ disconnectedCallback(): void;
3035
+ firstUpdated(): void;
3036
+ updated(changed: PropertyValues): void;
3037
+ /** The most recently selected item, or `undefined` if nothing is selected. */
3038
+ get selectedItem(): Element | undefined;
3039
+ /** The full current selection set (read-only). */
3040
+ get selectedItems(): ReadonlySet<Element>;
3041
+ addItem(item: Element | string, options?: AddItemOptions): void;
3042
+ removeItem(item: Element): void;
3043
+ clearItems(): void;
3044
+ /**
3045
+ * Replace the entire item list in one call.
3046
+ * Equivalent to `clearItems()` followed by `addItem()` for each element.
3047
+ * Preserves `interactionMode` checkbox wrapping.
3048
+ */
3049
+ setItems(items: readonly Element[]): void;
3050
+ /**
3051
+ * Dispatch a command to this list. No-op by default.
3052
+ * Intended for use with `ixfx-grouped-item-lister`'s `dispatch()` method,
3053
+ * which forwards commands to all sub-components.
3054
+ */
3055
+ dispatch(_commandId: CommandId, _args?: Record<string, unknown>): void;
3056
+ select(item: Element): void;
3057
+ selectMany(items: Iterable<Element>): void;
3058
+ deselect(item: Element): void;
3059
+ clearSelection(): void;
3060
+ selectAll(): void;
3061
+ selectedFilter(kind: `selected` | `checked` | `either`): Generator<Element>;
3062
+ private _getVisibleItems;
3063
+ private _isCheckable;
3064
+ private _syncItemStates;
3065
+ private _syncCheckboxes;
3066
+ /**
3067
+ * Native checkbox cell: a span that stretches to the row's full cross-axis
3068
+ * (so the entire column height is a click target) with a real `<input>`
3069
+ * centred inside. The span owns the click; the input is purely visual and
3070
+ * has `pointer-events:none` so a single click produces one toggle.
3071
+ */
3072
+ private _createNativeCheckboxCell;
3073
+ /**
3074
+ * Custom checkbox cell: same shape as the native cell (a stretching span)
3075
+ * so behaviour is identical. The renderer's content goes inside.
3076
+ */
3077
+ private _createCustomCheckbox;
3078
+ private _findListItem;
3079
+ private _dispatch;
3080
+ private _openSearch;
3081
+ private _closeSearch;
3082
+ private _onPointerOver;
3083
+ private _onPointerLeave;
3084
+ private _onKeyDown;
3085
+ private _onClick;
3086
+ private _onDblClick;
3087
+ private _activateItem;
3088
+ private _onSearchInput;
3089
+ private _onSearchKeydown;
3090
+ static styles: CSSResult[];
3091
+ render(): TemplateResult<1>;
3092
+ }
3093
+ declare global {
3094
+ interface HTMLElementTagNameMap {
3095
+ 'ixfx-vertical-list': VerticalListElement;
3096
+ }
3097
+ interface HTMLElementEventMap extends ListElementEventMap {}
3098
+ }
3099
+ //#endregion
3100
+ //#region src/detail-list/types.d.ts
3101
+ /** Sort direction applied to the item columns. */
3102
+ type DetailSortMode = `none` | `ascending` | `descending`;
3103
+ /** Per-item view of a row passed to `sortComparator`. */
3104
+ type DetailSortItem = {
3105
+ readonly element: HTMLElement;
3106
+ readonly data: unknown;
3107
+ readonly label: string;
3108
+ };
3109
+ /** Custom comparator — return negative when `a` sorts before `b`. */
3110
+ type DetailSortComparator = (a: DetailSortItem, b: DetailSortItem) => number;
3111
+ /** Turns one object item into row content — a plain string or a DOM node. */
3112
+ type DetailFormatter = (item: unknown, index: number) => string | Node;
3113
+ //#endregion
3114
+ //#region src/detail-list/detail-list.d.ts
3115
+ /**
3116
+ * A list that scales horizontally, not vertically.
3117
+ *
3118
+ * Items are laid out in equal-width columns; they flow top→bottom down a
3119
+ * column, then wrap to the top of the next column to the right. The
3120
+ * component has a fixed vertical extent and scrolls horizontally.
3121
+ *
3122
+ * Selection semantics match `ixfx-vertical-list` — same modes, same
3123
+ * `list-*` events, same keyboard gestures — but navigation is a 2-D grid
3124
+ * (Up/Down move within a column, Left/Right jump columns).
3125
+ *
3126
+ * Items come from any of three sources (later writes win):
3127
+ * 1. declarative `<li>` children in light DOM,
3128
+ * 2. `addItem()` / `setItems()`,
3129
+ * 3. an `items` array of objects rendered via `displayProperty` /
3130
+ * `formatter`, optionally streamed in via a `provider`.
3131
+ */
3132
+ declare class DetailListElement extends LitElement {
3133
+ #private;
3134
+ selectionMode: ListSelectionMode;
3135
+ interactionMode: ListInteractionMode;
3136
+ sort: DetailSortMode;
3137
+ sortBy: string;
3138
+ sortComparator: DetailSortComparator | undefined;
3139
+ items: readonly unknown[];
3140
+ provider: IDataProvider<void, unknown> | undefined;
3141
+ displayProperty: string;
3142
+ formatter: DetailFormatter | undefined;
3143
+ iconProperty: string;
3144
+ keyProperty: string;
3145
+ filterPredicate: ((el: Element) => boolean) | undefined;
3146
+ /**
3147
+ * Whether keyboard navigation wraps from last to first and vice versa.
3148
+ * - 'stop' (default): navigation stops at the boundary
3149
+ * - 'wrap': navigation wraps around
3150
+ */
3151
+ itemWrap: `stop` | `wrap`;
3152
+ /** Optional renderer for the checkbox shown in `checked` interactionMode. */
3153
+ checkboxRenderer: ((checked: boolean) => unknown) | CustomCheckboxOptions | undefined;
3154
+ private _searchVisible;
3155
+ private _searchQuery;
3156
+ private _searchInputEl;
3157
+ private _listEl;
3158
+ private readonly selection;
3159
+ private tickled;
3160
+ connectedCallback(): void;
3161
+ disconnectedCallback(): void;
3162
+ firstUpdated(): void;
3163
+ updated(changed: PropertyValues): void;
3164
+ /** The most recently selected item, or `undefined` if nothing is selected. */
3165
+ get selectedItem(): Element | undefined;
3166
+ /** The full current selection set (read-only). */
3167
+ get selectedItems(): ReadonlySet<Element>;
3168
+ /**
3169
+ * Force an immediate geometry recompute. Called automatically on resize,
3170
+ * DOM changes, sort/filter/search changes — only needed when layout is
3171
+ * changed by outside forces (e.g. an external font load).
3172
+ */
3173
+ refreshLayout(): void;
3174
+ addItem(item: Element | string, options?: AddItemOptions): void;
3175
+ removeItem(item: Element): void;
3176
+ clearItems(): void;
3177
+ /**
3178
+ * Replace the entire item list in one call.
3179
+ * Equivalent to `clearItems()` followed by `addItem()` for each element.
3180
+ */
3181
+ setItems(items: readonly Element[]): void;
3182
+ /**
3183
+ * Get the source object behind an `<li>` built from an `items` array or
3184
+ * provider. Returns `undefined` for declarative / programmatic elements.
3185
+ */
3186
+ getItemData(item: HTMLLIElement): unknown;
3187
+ /** Dispatch a command to this list. No-op by default (grouped-lister parity). */
3188
+ dispatch(_commandId: CommandId, _args?: Record<string, unknown>): void;
3189
+ select(item: Element): void;
3190
+ selectMany(items: Iterable<Element>): void;
3191
+ deselect(item: Element): void;
3192
+ clearSelection(): void;
3193
+ selectAll(): void;
3194
+ selectedFilter(kind: `selected` | `checked` | `either`): Generator<Element>;
3195
+ private _getVisibleItems;
3196
+ private _isCheckable;
3197
+ private _setLabel;
3198
+ private _syncItemStates;
3199
+ private _syncCheckboxes;
3200
+ /**
3201
+ * Native checkbox cell: a span that stretches to the row's full cross-axis
3202
+ * (so the entire column height is a click target) with a real `<input>`
3203
+ * centred inside. The span owns the click; the input is purely visual and
3204
+ * has `pointer-events:none` so a single click produces one toggle.
3205
+ */
3206
+ private _createNativeCheckboxCell;
3207
+ /** Custom checkbox cell: same shape as the native cell; renderer content inside. */
3208
+ private _createCustomCheckbox;
3209
+ private _findListItem;
3210
+ private _dispatch;
3211
+ private _openSearch;
3212
+ private _closeSearch;
3213
+ private _onPointerOver;
3214
+ private _onPointerLeave;
3215
+ private _onKeyDown;
3216
+ private _onClick;
3217
+ private _onDblClick;
3218
+ private _onWheel;
3219
+ private _activateItem;
3220
+ private _onSearchInput;
3221
+ private _onSearchKeydown;
3222
+ static styles: CSSResult[];
3223
+ render(): TemplateResult<1>;
3224
+ }
3225
+ declare global {
3226
+ interface HTMLElementTagNameMap {
3227
+ 'ixfx-detail-list': DetailListElement;
3228
+ }
3229
+ interface HTMLElementEventMap extends ListElementEventMap {}
3230
+ }
3231
+ //#endregion
3232
+ //#region src/titlebar/titlebar.d.ts
3233
+ type TitlebarOrientation = `horizontal` | `vertical`;
3234
+ type TitlebarVariant = `titlebar` | `midline`;
3235
+ type TitlebarToggleInteraction = `implicit` | `explicit` | `disabled`;
3236
+ interface TitlebarToggleDetail {
3237
+ readonly collapsed: boolean;
3238
+ }
3239
+ type TitlebarToggleEvent = CustomEvent<TitlebarToggleDetail>;
3240
+ type TitlebarCloseEvent = CustomEvent<void>;
3241
+ interface TitlebarElementEventMap {
3242
+ toggle: TitlebarToggleEvent;
3243
+ close: TitlebarCloseEvent;
3244
+ }
3245
+ /**
3246
+ * Standalone titlebar chrome: title, icon, toolbar slot, close button and
3247
+ * optional collapse/expand caret. Extracted from `ixfx-panel`.
3248
+ *
3249
+ * Collapsing is opt-in via `collapsible`. When absent, no caret is shown and
3250
+ * `toggle-interaction` is inert. `close` is fired without removing the
3251
+ * element — the host decides what closing means.
3252
+ */
3253
+ declare class TitlebarElement extends LitElement {
3254
+ title: string;
3255
+ iconName: string;
3256
+ orientation: TitlebarOrientation;
3257
+ variant: TitlebarVariant;
3258
+ closable: boolean;
3259
+ /** Show the collapse/expand caret and enable toggle behaviour. */
3260
+ collapsible: boolean;
3261
+ collapsed: boolean;
3262
+ toggleInteraction: TitlebarToggleInteraction;
3263
+ private _onToggleClick;
3264
+ private _onCloseClick;
3265
+ private _getCaretIcon;
3266
+ protected render(): TemplateResult<1>;
3267
+ static styles: CSSResult[];
3268
+ }
3269
+ declare global {
3270
+ interface HTMLElementTagNameMap {
3271
+ 'ixfx-titlebar': TitlebarElement;
3272
+ }
3273
+ }
3274
+ interface TitlebarElement {
3275
+ addEventListener: (<K extends keyof TitlebarElementEventMap>(type: K, listener: (this: TitlebarElement, event: TitlebarElementEventMap[K]) => void, options?: boolean | AddEventListenerOptions) => void) & ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);
3276
+ }
3277
+ //#endregion
3278
+ //#region src/dock/types.d.ts
3279
+ /** Axis values used by `ixfx-split-layout` — stored verbatim in the model. */
3280
+ type DockAxis = `row` | `column`;
3281
+ type DockLayout = {
3282
+ readonly version: 1;
3283
+ readonly root: DockNode;
3284
+ };
3285
+ type DockNode = DockSplitNode | DockStackNode;
3286
+ /**
3287
+ * N-ary split node, rendered as a single `ixfx-split-layout`.
3288
+ * `direction` uses the element's flexbox sense: `row` places children
3289
+ * side-by-side, `column` stacks them vertically.
3290
+ */
3291
+ interface DockSplitNode {
3292
+ kind: `split`;
3293
+ direction: DockAxis;
3294
+ /** Flex weights, parallel to `children`. Need not sum to 1. */
3295
+ sizes: number[];
3296
+ /** Two or more children (post-normalize). */
3297
+ children: DockNode[];
3298
+ }
3299
+ interface DockStackNode {
3300
+ kind: `stack`;
3301
+ /** Panel-ids in tab order. */
3302
+ panels: string[];
3303
+ /** Active panel-id (empty when the stack is empty). */
3304
+ active: string;
3305
+ /** Whole stack collapsed to its titlebar / strip. */
3306
+ collapsed?: boolean;
3307
+ /** Size to restore into the parent split on expand. */
3308
+ preCollapseSize?: string;
3309
+ }
3310
+ type DockOperation = `tabs` | `split-horizontal` | `split-vertical`;
3311
+ interface DockPanelDragStartDetail {
3312
+ readonly panelId: string;
3313
+ readonly pointerId: number;
3314
+ readonly clientX: number;
3315
+ readonly clientY: number;
3316
+ }
3317
+ type DockPanelDragStartEvent = CustomEvent<DockPanelDragStartDetail>;
3318
+ interface DockChangeDetail {
3319
+ readonly layout: DockLayout;
3320
+ }
3321
+ type DockChangeEvent = CustomEvent<DockChangeDetail>;
3322
+ interface DockPanelAddedDetail {
3323
+ readonly panelId: string;
3324
+ }
3325
+ type DockPanelAddedEvent = CustomEvent<DockPanelAddedDetail>;
3326
+ interface DockPanelRemovedDetail {
3327
+ readonly panelId: string;
3328
+ }
3329
+ type DockPanelRemovedEvent = CustomEvent<DockPanelRemovedDetail>;
3330
+ interface DockPanelActivatedDetail {
3331
+ readonly panelId: string;
3332
+ }
3333
+ type DockPanelActivatedEvent = CustomEvent<DockPanelActivatedDetail>;
3334
+ type DockPanelInit = {
3335
+ panelId: string;
3336
+ title?: string;
3337
+ iconName?: string;
3338
+ closable?: boolean;
3339
+ collapsible?: boolean;
3340
+ };
3341
+ /**
3342
+ * Plain, structured-clone-safe description of a panel. Enough to recreate an
3343
+ * `ixfx-dock-panel` in another document / process (e.g. a new Electron
3344
+ * `BrowserWindow`). `contentHTML` is a best-effort capture of the panel's
3345
+ * light-DOM markup at snapshot time — apps whose panels hold live state or
3346
+ * framework-managed DOM should rebuild the body from their own model instead
3347
+ * and ignore this field.
3348
+ */
3349
+ interface DockPanelSnapshot {
3350
+ panelId: string;
3351
+ title: string;
3352
+ iconName: string;
3353
+ closable: boolean;
3354
+ collapsible: boolean;
3355
+ /** The panel's `accepts` restriction token string (may be empty). */
3356
+ accepts: string;
3357
+ /** Best-effort `innerHTML` of the panel element at capture time. */
3358
+ contentHTML: string;
3359
+ }
3360
+ /**
3361
+ * Serializable result of hit-testing a point against a host — what a drop
3362
+ * there would do. Returned by `queryDropTarget()` / `previewExternalDrop()`
3363
+ * so a coordinator (in-page or over IPC) can reason about the outcome without
3364
+ * a live `DockDropZone` (which carries element references).
3365
+ */
3366
+ interface DockDropTarget {
3367
+ operation: DockOperation;
3368
+ /** Path of the target stack in the host model; `[]` = the host root. */
3369
+ targetPath: number[];
3370
+ side: `before` | `after`;
3371
+ /** Tab insertion index for `tabs` drops. */
3372
+ gapIndex?: number;
3373
+ }
3374
+ interface DockPanelTearOutDetail {
3375
+ readonly panelId: string;
3376
+ /** Snapshot captured from the source panel at release. */
3377
+ readonly snapshot: DockPanelSnapshot;
3378
+ /** Pointer position in the source window's viewport at release. */
3379
+ readonly clientX: number;
3380
+ readonly clientY: number;
3381
+ /** Pointer position in screen coordinates at release — for window placement. */
3382
+ readonly screenX: number;
3383
+ readonly screenY: number;
3384
+ }
3385
+ type DockPanelTearOutEvent = CustomEvent<DockPanelTearOutDetail>;
3386
+ interface DockDragBoundaryDetail {
3387
+ readonly panelId: string;
3388
+ readonly clientX: number;
3389
+ readonly clientY: number;
3390
+ readonly screenX: number;
3391
+ readonly screenY: number;
3392
+ }
3393
+ /** `dock-panel-drag-out` / `dock-panel-drag-in`. */
3394
+ type DockDragBoundaryEvent = CustomEvent<DockDragBoundaryDetail>;
3395
+ //#endregion
3396
+ //#region src/dock/dock-panel.d.ts
3397
+ interface DockPanelElementEventMap {
3398
+ 'dock-panel-drag-start': DockPanelDragStartEvent;
3399
+ 'toggle': TitlebarToggleEvent;
3400
+ 'close': TitlebarCloseEvent;
3401
+ }
3402
+ /**
3403
+ * Leaf content + metadata + drag handle. Renders `ixfx-titlebar` chrome when
3404
+ * standalone (`presentation="solo"`) and content only when docked
3405
+ * (`presentation="tabbed"` — the host's tab strip carries the title chrome).
3406
+ * Adds `panel-id` and the titlebar drag handle. Works standalone outside a
3407
+ * host (the drag-start event has no listener and is inert).
3408
+ */
3409
+ declare class DockPanelElement extends LitElement {
3410
+ /** Stable identity: model key, slot name suffix, serialization id. */
3411
+ panelId: string;
3412
+ title: string;
3413
+ iconName: string;
3414
+ closable: boolean;
3415
+ collapsible: boolean;
3416
+ /**
3417
+ * Per-panel restriction when this panel is itself a drop target (solo
3418
+ * leaf). Space-separated `tabs` / `horizontal` / `vertical` / `all`;
3419
+ * `none` rejects everything; default is unrestricted.
3420
+ */
3421
+ accepts: string;
3422
+ /**
3423
+ * Host-controlled. Docked panels are always `tabbed` (content only — the
3424
+ * leaf's tab strip carries the title chrome). `solo` (full titlebar chrome)
3425
+ * applies to panels outside a host or not currently docked.
3426
+ */
3427
+ presentation: `solo` | `tabbed`;
3428
+ /** Solo-mode collapse state, mirrored from the titlebar. */
3429
+ private _collapsed;
3430
+ private _dragPointerId;
3431
+ private _dragStartX;
3432
+ private _dragStartY;
3433
+ private _dragStarted;
3434
+ connectedCallback(): void;
3435
+ disconnectedCallback(): void;
3436
+ private _onPointerDown;
3437
+ private _onPointerMove;
3438
+ private _onPointerUp;
3439
+ private _teardownDragListeners;
3440
+ /** Clicks that begin on the close / caret buttons or the toolbar are not drags. */
3441
+ private _isDragHandle;
3442
+ private _dispatchDragStart;
3443
+ private _onTitlebarToggle;
3444
+ private _onTitlebarClose;
3445
+ protected render(): TemplateResult<1>;
3446
+ static styles: CSSResult[];
3447
+ }
3448
+ declare global {
3449
+ interface HTMLElementTagNameMap {
3450
+ 'ixfx-dock-panel': DockPanelElement;
3451
+ }
3452
+ }
3453
+ interface DockPanelElement {
3454
+ addEventListener: (<K extends keyof DockPanelElementEventMap>(type: K, listener: (this: DockPanelElement, event: DockPanelElementEventMap[K]) => void, options?: boolean | AddEventListenerOptions) => void) & ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);
3455
+ }
3456
+ //#endregion
3457
+ //#region src/split-layout/types.d.ts
3458
+ type Axis = `row` | `column`;
3459
+ type WhenSmall = `prevent` | `collapse` | `close`;
3460
+ interface PanelNode {
3461
+ kind: `panel`;
3462
+ id: string;
3463
+ el: HTMLElement;
3464
+ weight: number;
3465
+ fixedPx: number | null;
3466
+ minPx: number;
3467
+ maxPx: number | null;
3468
+ whenSmall: WhenSmall;
3469
+ collapsed: boolean;
3470
+ restoreWeight: number;
3471
+ }
3472
+ interface GroupNode {
3473
+ kind: `group`;
3474
+ id: string;
3475
+ el: HTMLElement | null;
3476
+ axis: Axis;
3477
+ children: LayoutNode[];
3478
+ weight: number;
3479
+ fixedPx: number | null;
3480
+ }
3481
+ type LayoutNode = PanelNode | GroupNode;
3482
+ interface SnapshotNode {
3483
+ kind: `panel` | `group`;
3484
+ id: string;
3485
+ weight?: number;
3486
+ collapsed?: boolean;
3487
+ children?: SnapshotNode[];
3488
+ }
3489
+ interface LayoutSnapshot {
3490
+ version: 1;
3491
+ root: SnapshotNode;
3492
+ }
3493
+ interface PanelInfo {
3494
+ id: string;
3495
+ el: HTMLElement;
3496
+ index: number;
3497
+ path: string;
3498
+ weight: number;
3499
+ collapsed: boolean;
3500
+ min: number;
3501
+ max: number | null;
3502
+ whenSmall: WhenSmall;
3503
+ }
3504
+ interface SplitResizeDetail {
3505
+ sizes: Record<string, number>;
3506
+ groupId: string;
3507
+ }
3508
+ type SplitResizeEvent = CustomEvent<SplitResizeDetail>;
3509
+ interface SplitCollapseDetail {
3510
+ id: string;
3511
+ index: number;
3512
+ }
3513
+ type SplitCollapseEvent = CustomEvent<SplitCollapseDetail>;
3514
+ interface SplitExpandDetail {
3515
+ id: string;
3516
+ index: number;
3517
+ }
3518
+ type SplitExpandEvent = CustomEvent<SplitExpandDetail>;
3519
+ interface SplitCloseDetail {
3520
+ id: string;
3521
+ index: number;
3522
+ }
3523
+ type SplitCloseEvent = CustomEvent<SplitCloseDetail>;
3524
+ interface SplitChangeDetail {
3525
+ layout: LayoutSnapshot;
3526
+ }
3527
+ type SplitChangeEvent = CustomEvent<SplitChangeDetail>;
3528
+ interface SplitLayoutElementEventMap {
3529
+ 'ixfx-split-resize': SplitResizeEvent;
3530
+ 'ixfx-split-collapse': SplitCollapseEvent;
3531
+ 'ixfx-split-expand': SplitExpandEvent;
3532
+ 'ixfx-split-close': SplitCloseEvent;
3533
+ 'ixfx-split-change': SplitChangeEvent;
3534
+ }
3535
+ //#endregion
3536
+ //#region src/split-layout/split-panel.d.ts
3537
+ declare class SplitPanelElement extends LitElement {
3538
+ id: string;
3539
+ size: string;
3540
+ weight: string;
3541
+ fixed: string;
3542
+ min: string;
3543
+ max: string;
3544
+ whenSmall: string;
3545
+ collapsed: boolean;
3546
+ snap: string;
3547
+ render(): TemplateResult<1>;
3548
+ static styles: CSSResult[];
3549
+ }
3550
+ declare global {
3551
+ interface HTMLElementTagNameMap {
3552
+ 'ixfx-split-panel': SplitPanelElement;
3553
+ }
3554
+ }
3555
+ //#endregion
3556
+ //#region src/split-layout/split-layout.d.ts
3557
+ declare class SplitLayoutElement extends LitElement {
3558
+ direction: Axis;
3559
+ sizes: string;
3560
+ gutterSize: string;
3561
+ snap: string;
3562
+ private _model;
3563
+ private _resizing;
3564
+ private _groupEl?;
3565
+ private _observer;
3566
+ private _applyingOwnMutation;
3567
+ private _dragStructurallyChanged;
3568
+ private _dragMachine;
3569
+ connectedCallback(): void;
3570
+ disconnectedCallback(): void;
3571
+ firstUpdated(): void;
3572
+ private _setupObserver;
3573
+ private _rebuildModel;
3574
+ get panels(): PanelInfo[];
3575
+ getLayout(): LayoutSnapshot | null;
3576
+ setLayout(s: LayoutSnapshot): void;
3577
+ getSizes(_groupId?: string): Record<string, number>;
3578
+ setSizes(weights: number[] | Record<string, number>, _groupId?: string): void;
3579
+ collapse(idOrEl: string | HTMLElement): void;
3580
+ expand(idOrEl: string | HTMLElement): void;
3581
+ toggle(idOrEl: string | HTMLElement): void;
3582
+ closePanel(idOrEl: string | HTMLElement): boolean;
3583
+ /**
3584
+ * Bounding rects of the gutter elements, in gutter index order. lets
3585
+ * callers (e.g. dock junction handles) hit-test gutters without reaching
3586
+ * into the shadow DOM.
3587
+ */
3588
+ getGutterRects(): DOMRect[];
3589
+ /**
3590
+ * Programmatically begin dragging the gutter at `gutterIndex`, as if the
3591
+ * user had pressed on it at (`clientX`, `clientY`). The drag then follows
3592
+ * the pointer `pointerId` until pointerup, exactly like a native gutter
3593
+ * drag. Returns false when the index is out of range or the layout isn't
3594
+ * ready. Intended for composite resize affordances — e.g. a junction handle
3595
+ * that starts this drag alongside perpendicular drags on other layouts.
3596
+ */
3597
+ beginGutterDrag(gutterIndex: number, pointerId: number, clientX: number, clientY: number): boolean;
3598
+ private _setCollapsedState;
3599
+ private _reindexSlots;
3600
+ private _findPanel;
3601
+ private _setFlexibleWeight;
3602
+ private _snapPx;
3603
+ private _collapsedPx;
3604
+ private _handleDragStart;
3605
+ private _handleDragMove;
3606
+ private _handleDragEnd;
3607
+ private _snapshotTracks;
3608
+ private _reseedDragState;
3609
+ private _onGutterPointerDown;
3610
+ private _onPointerMove;
3611
+ private _onPointerUp;
3612
+ private _emitResize;
3613
+ private _emitChange;
3614
+ protected render(): typeof nothing | TemplateResult<1>;
3615
+ private _getTrackSizes;
3616
+ private _resolveTracks;
3617
+ private _renderGutter;
3618
+ static styles: CSSResult[];
3619
+ }
3620
+ declare global {
3621
+ interface HTMLElementTagNameMap {
3622
+ 'ixfx-split-layout': SplitLayoutElement;
3623
+ }
3624
+ interface HTMLElementEventMap {
3625
+ 'ixfx-split-resize': CustomEvent<SplitResizeDetail>;
3626
+ 'ixfx-split-collapse': CustomEvent<SplitCollapseDetail>;
3627
+ 'ixfx-split-expand': CustomEvent<SplitExpandDetail>;
3628
+ 'ixfx-split-close': CustomEvent<SplitCloseDetail>;
3629
+ 'ixfx-split-change': CustomEvent<SplitChangeDetail>;
3630
+ }
3631
+ }
3632
+ //#endregion
3633
+ //#region src/tabs/tab-list-item.d.ts
3634
+ /**
3635
+ * CSS vars (can be overridden per-instance):
3636
+ * --selected-colour: text colour when selected
3637
+ * --selected-border-width: border width
3638
+ * --ixfx-tab-padding: vertical padding for the tab content (default: var(--space-m))
3639
+ * --ixfx-tab-padding-horizontal: horizontal padding (default: same as --ixfx-tab-padding)
3640
+ */
3641
+ declare class TabListItemElement extends LitElement {
3642
+ closeable: boolean;
3643
+ hideLabels: boolean;
3644
+ iconName: string | undefined;
3645
+ description: string | undefined;
3646
+ commandActive: string | undefined;
3647
+ registry: CommandRegistry<unknown> | undefined;
3648
+ private _compact;
3649
+ private _hasToolbarContent;
3650
+ private _resizeObserver?;
3651
+ private _commandCleanup?;
3652
+ connectedCallback(): void;
3653
+ disconnectedCallback(): void;
3654
+ updated(changed: PropertyValues): void;
3655
+ private _syncTooltipAttrs;
3656
+ private _syncCommandListener;
3657
+ private _onToolbarSlotChange;
3658
+ private _updateToolbarContent;
3659
+ firstUpdated(): void;
3660
+ render(): TemplateResult<1>;
3661
+ private _onCloseClick;
3662
+ static styles: CSSResult[];
3663
+ }
3664
+ declare global {
3665
+ interface HTMLElementTagNameMap {
3666
+ "ixfx-tab-list-item": TabListItemElement;
3667
+ }
3668
+ }
3669
+ //#endregion
3670
+ //#region src/tabs/tab-list.d.ts
3671
+ /**
3672
+ * Events
3673
+ * 'change' - new tab selected { previous:string, selected:string, for:string }
3674
+ * 'reorder' - tab moved within the list { id:string, fromIndex:number, toIndex:number }
3675
+ */
3676
+ type TabListChangeDetail = {
3677
+ readonly previous: string | undefined;
3678
+ readonly selected: string;
3679
+ readonly for: string;
3680
+ };
3681
+ type TabListChangeEvent = CustomEvent<TabListChangeDetail>;
3682
+ type TabListReorderDetail = {
3683
+ readonly id: string;
3684
+ readonly fromIndex: number;
3685
+ readonly toIndex: number;
3686
+ };
3687
+ type TabListReorderEvent = CustomEvent<TabListReorderDetail>;
3688
+ type TabListDragMode = `off` | `reorder`;
3689
+ declare class TabListElement extends LitElement {
3690
+ #private;
3691
+ orientation: `horizontal` | `vertical-stack` | `vertical-side`;
3692
+ flip: boolean;
3693
+ scrollable: boolean;
3694
+ hideLabels: boolean;
3695
+ shrink: boolean;
3696
+ dragMode: TabListDragMode;
3697
+ render(): TemplateResult<1>;
3698
+ firstUpdated(): void;
3699
+ updated(changedProperties: PropertyValues): void;
3700
+ getSelectedElement(): TabListItemElement | undefined;
3701
+ selectElement(el: HTMLElement): void;
3702
+ static styles: CSSResult[];
3703
+ }
3704
+ declare global {
3705
+ interface HTMLElementTagNameMap {
3706
+ "ixfx-tab-list": TabListElement;
3707
+ }
3708
+ }
3709
+ //#endregion
3710
+ //#region src/dock/dock-host.d.ts
3711
+ interface DockHostElementEventMap {
3712
+ 'dock-change': DockChangeEvent;
3713
+ 'dock-panel-added': DockPanelAddedEvent;
3714
+ 'dock-panel-removed': DockPanelRemovedEvent;
3715
+ 'dock-panel-activated': DockPanelActivatedEvent;
3716
+ 'dock-panel-drag-start': DockPanelDragStartEvent;
3717
+ /** Panel released outside every host — request to move it to a new window. */
3718
+ 'dock-panel-tear-out': DockPanelTearOutEvent;
3719
+ /** Drag pointer left every host's bounds during a drag. */
3720
+ 'dock-panel-drag-out': DockDragBoundaryEvent;
3721
+ /** Drag pointer re-entered a host's bounds after being outside. */
3722
+ 'dock-panel-drag-in': DockDragBoundaryEvent;
3723
+ }
3724
+ declare class DockHostElement extends LitElement {
3725
+ /** Initial layout as `DockLayout` JSON. Absent ⇒ all pooled panels go into one root stack. */
3726
+ layout: string | null;
3727
+ /**
3728
+ * Space-separated drop operations this host allows: `tabs`, `horizontal`,
3729
+ * `vertical`, and convenience `all`. `""` / `none` ⇒ nothing may be dropped.
3730
+ */
3731
+ accepts: string;
3732
+ /** Finest-grained veto, consulted per candidate zone. */
3733
+ canAccept: ((panelId: string, op: DockOperation) => boolean) | undefined;
3734
+ private _model;
3735
+ private _pool;
3736
+ private _dropZone;
3737
+ private _dragActive;
3738
+ private _junctions;
3739
+ /** panelId → toolbar nodes currently moved out into a tab item. */
3740
+ private _toolbarsOut;
3741
+ private _tabDragPending;
3742
+ private _junctionsKey;
3743
+ private _junctionsRaf;
3744
+ private _hostResizeObserver;
3745
+ connectedCallback(): void;
3746
+ disconnectedCallback(): void;
3747
+ private _onDragStart;
3748
+ willUpdate(changed: Map<string, unknown>): void;
3749
+ updated(changed: Map<string, unknown>): void;
3750
+ private _buildInitialModel;
3751
+ /** Ensure every pooled panel element appears in the model (appended to the first stack). */
3752
+ private _mergePoolIntoModel;
3753
+ private _scanPanels;
3754
+ private _findPanelEl;
3755
+ private _firstStack;
3756
+ private _appendPanelToFirstStack;
3757
+ private _onPoolSlotChange;
3758
+ private _syncPool;
3759
+ /** Serialize the current layout, folding live split weights from the DOM. */
3760
+ saveLayout(): DockLayout;
3761
+ loadLayout(layout: DockLayout): void;
3762
+ addPanel(panel: DockPanelElement | DockPanelInit, target?: {
3763
+ stack?: string;
3764
+ index?: number;
3765
+ op?: DockOperation;
3766
+ }): void;
3767
+ removePanel(panelId: string): boolean;
3768
+ activatePanel(panelId: string): boolean;
3769
+ getPanelIds(): string[];
3770
+ /**
3771
+ * Capture a structured-clone-safe {@link DockPanelSnapshot} of a panel
3772
+ * (identity, chrome attributes, and a best-effort `innerHTML`). Returns
3773
+ * null when no such panel element is known to this host.
3774
+ */
3775
+ getPanelSnapshot(panelId: string): DockPanelSnapshot | null;
3776
+ /**
3777
+ * {@link getPanelSnapshot} + {@link removePanel} in one step: take the
3778
+ * snapshot, then drop the panel (and its element) from this host. Call this
3779
+ * from a `dock-panel-tear-out` handler once the receiving window has
3780
+ * recreated the panel.
3781
+ */
3782
+ detachPanel(panelId: string): DockPanelSnapshot | null;
3783
+ /**
3784
+ * Hit-test viewport coordinates against this host and return a plain,
3785
+ * serializable {@link DockDropTarget} (no element references) — or null when
3786
+ * the point is outside the host or the resulting zone is disallowed by
3787
+ * `accepts` / `canAccept`. Pure query: no model mutation, no overlay.
3788
+ *
3789
+ * `panelId` is passed to `canAccept`; use any stable id for an external
3790
+ * panel (defaults to `"__external__"`).
3791
+ */
3792
+ queryDropTarget(clientX: number, clientY: number, panelId?: string): DockDropTarget | null;
3793
+ /**
3794
+ * Like {@link queryDropTarget}, but also shows the drop overlay so an
3795
+ * external (cross-window) drag gets the same visual feedback as an in-page
3796
+ * one. Call on every pointer update from the outer coordinator, then
3797
+ * {@link endExternalDrop} when the drag leaves or ends.
3798
+ */
3799
+ previewExternalDrop(clientX: number, clientY: number, panelId?: string): DockDropTarget | null;
3800
+ /** Clear any overlay left by {@link previewExternalDrop}. */
3801
+ endExternalDrop(): void;
3802
+ /**
3803
+ * Recreate a panel from a {@link DockPanelSnapshot} (or a bare
3804
+ * {@link DockPanelInit}) and dock it. With `at` viewport coordinates the
3805
+ * panel lands where a drop there would put it (respecting `accepts` /
3806
+ * `canAccept`); without them, or when the point misses the host, it goes
3807
+ * into the first stack. Returns the created element, or null when a panel
3808
+ * with that id is already docked here.
3809
+ */
3810
+ acceptExternalPanel(snapshot: DockPanelSnapshot | DockPanelInit, at?: {
3811
+ clientX: number;
3812
+ clientY: number;
3813
+ }): DockPanelElement | null;
3814
+ /**
3815
+ * Hit-test a pointer position against this host's leaves and edges. Returns
3816
+ * a zone with rects relative to the host, or null when the pointer is
3817
+ * outside the host or the candidate zone is disallowed.
3818
+ */
3819
+ computeDropZone(clientX: number, clientY: number, panelId: string): DockDropZone | null;
3820
+ private _zoneAllowed;
3821
+ /**
3822
+ * Apply a drop. `sourceHost` differs from `this` when the drag crossed
3823
+ * hosts; the panel element is adopted into this host first.
3824
+ */
3825
+ handleDrop(panelId: string, zone: DockDropZone, sourceHost?: DockHostElement): void;
3826
+ /**
3827
+ * Move `panelId` (already present somewhere in the model) to the position
3828
+ * described by `zone`. Shared by in-page drops and external panel adoption.
3829
+ */
3830
+ private _applyZone;
3831
+ /**
3832
+ * Move a panel element out of this host into `target`, dropping it from
3833
+ * this host's model. Used for cross-host drags.
3834
+ */
3835
+ releasePanel(panelId: string, target: DockHostElement): void;
3836
+ /** Adopt a panel element from another host (the one sanctioned reparent). */
3837
+ adoptPanelElement(el: DockPanelElement): void;
3838
+ setDragActive(active: boolean): void;
3839
+ setDropZone(zone: DockDropZone | null): void;
3840
+ private _scheduleJunctions;
3841
+ /**
3842
+ * Find points where a parent split's gutter line meets a nested split's
3843
+ * gutter (T and + crossings). Each junction handle starts both gutter drags
3844
+ * at once, like a corner resize in VS Code.
3845
+ */
3846
+ private _computeJunctions;
3847
+ private _onJunctionPointerDown;
3848
+ /** Fold live weights from each rendered `ixfx-split-layout` into the model. */
3849
+ private _foldLiveWeights;
3850
+ private _onSplitWeightsChanged;
3851
+ private _onSplitCollapsed;
3852
+ private _onSplitClose;
3853
+ private _onTabChange;
3854
+ private _onStripPointerDown;
3855
+ private _onTabDragMove;
3856
+ private _onTabDragUp;
3857
+ private _teardownTabDragListeners;
3858
+ /** After a dock drag from a tab/titlebar, swallow the trailing click so it cannot re-select or toggle. */
3859
+ private _suppressNextClick;
3860
+ private _splitStack;
3861
+ private _removeFromModel;
3862
+ /** Normalize, re-render, and announce the structural change. */
3863
+ private _commit;
3864
+ private _syncSlots;
3865
+ /**
3866
+ * Per-panel toolbar routing: docked panels render content-only, so the
3867
+ * active panel's toolbar nodes live in its generated tab item (shown
3868
+ * right-aligned while active). Node moves preserve element state. Panels
3869
+ * outside the model keep their toolbar in their own (solo) chrome.
3870
+ */
3871
+ private _syncToolbars;
3872
+ private _returnToolbar;
3873
+ private _returnAllToolbars;
3874
+ private _emitChange;
3875
+ protected render(): TemplateResult<1>;
3876
+ private _renderNode;
3877
+ private _renderSplit;
3878
+ private _renderLeaf;
3879
+ private _renderTabItem;
3880
+ private _stripCaretRect;
3881
+ static styles: CSSResult[];
3882
+ }
3883
+ declare global {
3884
+ interface HTMLElementTagNameMap {
3885
+ 'ixfx-dock-host': DockHostElement;
3886
+ }
3887
+ }
3888
+ interface DockHostElement {
3889
+ addEventListener: (<K extends keyof DockHostElementEventMap>(type: K, listener: (this: DockHostElement, event: DockHostElementEventMap[K]) => void, options?: boolean | AddEventListenerOptions) => void) & ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);
3890
+ }
3891
+ //#endregion
3892
+ //#region src/dock/dock-drag.d.ts
3893
+ interface Rect$1 {
3894
+ readonly x: number;
3895
+ readonly y: number;
3896
+ readonly w: number;
3897
+ readonly h: number;
3898
+ }
3899
+ interface DockDropZone {
3900
+ /** Host whose model would receive the drop. */
3901
+ readonly host: DockHostElement;
3902
+ readonly operation: DockOperation;
3903
+ /** Path of the target stack (`[]` = the host root). */
3904
+ readonly targetPath: number[];
3905
+ readonly side: `before` | `after`;
3906
+ /** Insert position for `tabs` drops (panel index in the target stack). */
3907
+ readonly gapIndex?: number;
3908
+ /** Highlight rect, relative to the host. */
3909
+ readonly rect: Rect$1;
3910
+ /** Optional insertion caret for strip gaps, relative to the host. */
3911
+ readonly caretRect?: Rect$1;
3912
+ }
3913
+ /** True when the point lies within the bounding box of any registered host. */
3914
+ declare function pointerOverAnyHost(clientX: number, clientY: number): boolean;
3915
+ declare function isDragging(): boolean;
3916
+ declare function getActiveDragPanelId(): string | null;
3917
+ //#endregion
3918
+ //#region src/dock/dock-model.d.ts
3919
+ /**
3920
+ * The dock model is a plain mutable tree owned exclusively by the host
3921
+ * element. Mutators below change the tree in place; the host calls
3922
+ * `normalize(root)` then `requestUpdate()` after batching mutations.
3923
+ */
3924
+ declare function isSplit(node: DockNode): node is DockSplitNode;
3925
+ declare function isStack(node: DockNode): node is DockStackNode;
3926
+ declare function createEmptyStack(): DockStackNode;
3927
+ declare function createEmptyLayout(): DockLayout;
3928
+ declare function createStack(panels: string[], active?: string): DockStackNode;
3929
+ declare function createSplit(direction: DockAxis, children: DockNode[], sizes?: number[]): DockSplitNode;
3930
+ /**
3931
+ * Runs after every mutation:
3932
+ * - stack `active` fixed to a member of `panels` (or `''` when empty)
3933
+ * - empty stacks removed from their parent split (and their `sizes` entry)
3934
+ * - splits with ≤1 child replaced by that child (spliced into the parent)
3935
+ * - a child split whose direction equals its parent's is flattened into it,
3936
+ * spreading its sizes across the slot it vacated
3937
+ * - `sizes` kept parallel to `children` (padded with the mean weight)
3938
+ * - an empty root collapses to a single empty stack
3939
+ */
3940
+ declare function normalize(root: DockNode): DockNode;
3941
+ declare function findNode(root: DockNode, path: number[]): DockNode | null;
3942
+ /** Parent split of the node at `path`; null when path is empty or malformed. */
3943
+ declare function findParentOf(root: DockNode, path: number[]): DockSplitNode | null;
3944
+ /** Path of the stack containing `panelId`, or null. */
3945
+ declare function findStackOf(root: DockNode, panelId: string): number[] | null;
3946
+ declare function collectPanelIds(root: DockNode): string[];
3947
+ /**
3948
+ * Paths of every stack leaf, in tree order. `[]` is the root itself when it
3949
+ * is a stack.
3950
+ */
3951
+ declare function collectStackPaths(root: DockNode): number[][];
3952
+ declare function addPanelToStack(stack: DockStackNode, panelId: string, index?: number): void;
3953
+ declare function removePanelFromStack(stack: DockStackNode, panelId: string): void;
3954
+ declare function setActive(stack: DockStackNode, panelId: string): boolean;
3955
+ /**
3956
+ * Insert `node` beside the child at `targetPath`, into the parent split when
3957
+ * its direction matches `direction`, otherwise wrap the target in a new split.
3958
+ * `side` selects before/after; the neighbour's weight is split 50/50.
3959
+ * Returns the path of the inserted node, or null.
3960
+ */
3961
+ declare function insertBeside(root: DockNode, targetPath: number[], direction: DockAxis, newNode: DockNode, side: `before` | `after`): number[] | null;
3962
+ /**
3963
+ * Wrap the whole root in a new split of `direction`, replacing it in place so
3964
+ * the caller's reference stays valid. Returns true on success.
3965
+ */
3966
+ declare function wrapRoot(root: DockNode, direction: DockAxis, newNode: DockNode, side: `before` | `after`): boolean;
3967
+ /**
3968
+ * Remove the stack at `stackPath` from the tree. Its panels are moved into
3969
+ * `fallbackStack` (if given and still attached) so they are not silently
3970
+ * lost; otherwise they are dropped from the model (elements return to the
3971
+ * pool). Returns the removed stack.
3972
+ */
3973
+ declare function extractStack(root: DockNode, stackPath: number[], fallbackStack?: DockStackNode): DockStackNode | null;
3974
+ declare function serializeLayout(root: DockNode): DockLayout;
3975
+ /**
3976
+ * Parse layout JSON, validate loosely, and normalize. Returns null when the
3977
+ * JSON is malformed or the root is missing/invalid.
3978
+ */
3979
+ declare function parseLayout(json: string): DockLayout | null;
3980
+ //#endregion
2937
3981
  //#region src/editable-label/editable-label.d.ts
2938
3982
  type EditableMode = `label` | `editor`;
2939
3983
  type EntryMode = `free` | `text` | `number` | `percent`;
@@ -3023,8 +4067,8 @@ type WheelDirection = 1 | -1;
3023
4067
  * (e.g. editable-number rejects while the user is typing).
3024
4068
  */
3025
4069
  interface WheelNudgeConsumer {
3026
- _applyWheelDelta(direction: WheelDirection, event: WheelEvent): void;
3027
- _shouldHandleWheel(): boolean;
4070
+ _applyWheelDelta: (direction: WheelDirection, event: WheelEvent) => void;
4071
+ _shouldHandleWheel: () => boolean;
3028
4072
  }
3029
4073
  /**
3030
4074
  * Internal: the surface a {@link WheelNudgeMixin}-decorated class exposes to
@@ -3148,45 +4192,6 @@ declare global {
3148
4192
  }
3149
4193
  }
3150
4194
  //#endregion
3151
- //#region src/vertical-list/types.d.ts
3152
- type ListSelectionMode = `none` | `single` | `multiple`;
3153
- /**
3154
- * Controls how pointer and keyboard gestures map to selection changes.
3155
- *
3156
- * - `implicit` — click always replaces selection (no modifier support)
3157
- * - `standard` — click replaces; Ctrl/Cmd+click toggles; Shift+click range-selects (multiple only)
3158
- * - `manual` — no auto-selection; drive state via select()/deselect()/clearSelection()
3159
- * - `checked` — every click toggles; implies multiple selection regardless of selectionMode
3160
- * - `sticky` — every tap/click toggles (no checkbox column); implies multiple selection, for touchscreens
3161
- * - `vscode` — like standard for clicks; Shift+Arrow extends range from the keyboard anchor
3162
- *
3163
- * Switching interactionMode clears the current selection.
3164
- */
3165
- type ListInteractionMode = `implicit` | `standard` | `manual` | `checked` | `sticky` | `vscode`;
3166
- type ListSelectDetail = {
3167
- readonly selected: ReadonlySet<Element>;
3168
- readonly previous: ReadonlySet<Element>;
3169
- };
3170
- type ListTickleDetail = {
3171
- readonly item: Element;
3172
- };
3173
- type ListActivateDetail = {
3174
- readonly item: Element;
3175
- };
3176
- type ListItemClickDetail = {
3177
- readonly item: Element;
3178
- };
3179
- type ListSelectEvent = CustomEvent<ListSelectDetail>;
3180
- type ListTickleEvent = CustomEvent<ListTickleDetail>;
3181
- type ListActivateEvent = CustomEvent<ListActivateDetail>;
3182
- type ListItemClickEvent = CustomEvent<ListItemClickDetail>;
3183
- interface ListElementEventMap {
3184
- 'list-select': ListSelectEvent;
3185
- 'list-tickle': ListTickleEvent;
3186
- 'list-activate': ListActivateEvent;
3187
- 'list-item-click': ListItemClickEvent;
3188
- }
3189
- //#endregion
3190
4195
  //#region src/grouped-item-lister/types.d.ts
3191
4196
  /**
3192
4197
  * Fired when the selection set changes by any means.
@@ -3269,14 +4274,13 @@ interface GroupedItemListerElementEventMap<T> {
3269
4274
  }
3270
4275
  //#endregion
3271
4276
  //#region src/panel/panel.d.ts
3272
- type PanelOrientation = `horizontal` | `vertical`;
3273
- type PanelVariant = `titlebar` | `midline`;
3274
- type PanelToggleInteraction = `implicit` | `explicit` | `disabled`;
3275
- interface PanelToggleDetail {
3276
- readonly collapsed: boolean;
3277
- }
3278
- type PanelToggleEvent = CustomEvent<PanelToggleDetail>;
3279
- type PanelCloseEvent = CustomEvent<void>;
4277
+ /** Backwards-compatible aliases: canonical types now live in `../titlebar/titlebar.js`. */
4278
+ type PanelOrientation = TitlebarOrientation;
4279
+ type PanelVariant = TitlebarVariant;
4280
+ type PanelToggleInteraction = TitlebarToggleInteraction;
4281
+ type PanelToggleDetail = TitlebarToggleDetail;
4282
+ type PanelToggleEvent = TitlebarToggleEvent;
4283
+ type PanelCloseEvent = TitlebarCloseEvent;
3280
4284
  interface PanelElementEventMap {
3281
4285
  toggle: PanelToggleEvent;
3282
4286
  close: PanelCloseEvent;
@@ -3285,15 +4289,16 @@ declare class PanelElement extends LitElement {
3285
4289
  collapsed: boolean;
3286
4290
  orientation: PanelOrientation;
3287
4291
  closable: boolean;
4292
+ /** Show the collapse/expand caret and enable toggle behaviour. Defaults to true so existing panels stay collapsible. */
4293
+ collapsible: boolean;
3288
4294
  title: string;
3289
4295
  iconName: string;
3290
4296
  toggleInteraction: PanelToggleInteraction;
3291
4297
  variant: PanelVariant;
3292
- private _isVertical;
3293
- private _onToggleClick;
4298
+ /** Suppress the titlebar entirely (content-only chrome, e.g. dock tabbed mode). */
4299
+ hideTitlebar: boolean;
4300
+ private _onTitlebarToggle;
3294
4301
  private _onCloseClick;
3295
- private _getCaretIcon;
3296
- protected updated(changed: Map<string, unknown>): void;
3297
4302
  protected render(): TemplateResult<1>;
3298
4303
  static styles: CSSResult[];
3299
4304
  }
@@ -3398,6 +4403,12 @@ type TickledControllerConfig<T> = {
3398
4403
  * Optional initial input mode (defaults to 'mouse')
3399
4404
  */
3400
4405
  initialInputMode?: InputMode;
4406
+ /**
4407
+ * Whether keyboard navigation wraps from last to first and vice versa.
4408
+ * - 'stop' (default): navigation stops at the boundary
4409
+ * - 'wrap': navigation wraps around
4410
+ */
4411
+ itemWrap?: `stop` | `wrap`;
3401
4412
  };
3402
4413
  /**
3403
4414
  * ReactiveController that manages "tickled" state for interactive lists.
@@ -3613,200 +4624,83 @@ declare class TreeListElement extends TreeBaseElement {
3613
4624
  * : html`<svg viewBox="0 0 16 16" width="14" height="14"
3614
4625
  * fill="none" stroke="currentColor" stroke-width="2"
3615
4626
  * stroke-linecap="round" stroke-linejoin="round"
3616
- * style="opacity:${state === `indeterminate` ? 0.35 : 0.6}">
3617
- * <polyline points="3,8 7,12 13,4" />
3618
- * </svg>`;
3619
- */
3620
- checkboxRenderer: ((state: TreeCheckboxState) => unknown) | undefined;
3621
- protected render(): TemplateResult<1>;
3622
- protected renderNodeContent(node: TreeNode, depth: number): TemplateResult;
3623
- protected _renderNode(node: TreeNode, depth: number): TemplateResult;
3624
- static styles: CSSResult[];
3625
- }
3626
- declare global {
3627
- interface HTMLElementTagNameMap {
3628
- 'ixfx-tree-list': TreeListElement;
3629
- }
3630
- }
3631
- interface TreeListElement {
3632
- addEventListener: (<K extends keyof TreeBaseElementEventMap>(type: K, listener: (this: TreeListElement, event: TreeBaseElementEventMap[K]) => void, options?: boolean | AddEventListenerOptions) => void) & ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);
3633
- }
3634
- //#endregion
3635
- //#region src/grouped-item-lister/tree-list-adapter.d.ts
3636
- type TreeListAdapterOptions<T> = {
3637
- /**
3638
- * Returns the direct children of an item to build the tree hierarchy.
3639
- * Omit for flat item lists — all items become leaf nodes at the root level.
3640
- */
3641
- getChildren?: (item: T) => readonly T[];
3642
- /** Forwarded to the inner ixfx-tree-list. Default: `'standard'`. */
3643
- interactionMode?: TreeInteractionMode;
3644
- /**
3645
- * Controls which node types are selectable.
3646
- * Forwarded to the inner ixfx-tree-list. Default: `'all'`.
3647
- */
3648
- selectionFilter?: TreeSelectionFilter;
3649
- /**
3650
- * Controls how expanding one node affects its siblings.
3651
- * Forwarded to the inner ixfx-tree-list. Default: `'none'`.
3652
- */
3653
- exclusivity?: TreeExclusivity;
3654
- /**
3655
- * Called when a command is dispatched via `ixfx-grouped-item-lister.dispatch()`.
3656
- * Receives the inner `TreeBaseElement` (undefined until the first `setItems()` call)
3657
- * so the handler can sort, filter, or otherwise manipulate the tree directly.
3658
- */
3659
- onDispatch?: (commandId: CommandId, args: Record<string, unknown> | undefined, tree: TreeBaseElement | undefined) => void;
3660
- };
3661
- /**
3662
- * Creates an `HTMLElement` that implements `IGroupedSubComponent<T>` by wrapping
3663
- * an `ixfx-tree-list` internally.
3664
- *
3665
- * `toTreeItem` converts each item `T` to display metadata (`key`, `label`, etc).
3666
- * The adapter stores the original `T` in `TreeItem.data` and uses it to map
3667
- * tree-node selections back to typed values.
3668
- *
3669
- * Unlike `createVerticalListAdapter`, items can be hierarchical: provide
3670
- * `options.getChildren` to return each item's children and the adapter will
3671
- * recursively build the `TreeNode` tree. Omit it for a flat list of leaf nodes.
3672
- *
3673
- * The four interface events (`select`, `activate`, `item-click`, `tickle`) are
3674
- * intercepted at the tree level, re-typed from `TreeNode` → `T`, and re-dispatched
3675
- * on the adapter element so `ixfx-grouped-item-lister` can identify the source.
3676
- *
3677
- * @example Flat item list:
3678
- * ```ts
3679
- * lister.factory = () =>
3680
- * createTreeListAdapter<FileItem>(item => ({ key: item.id, label: item.name, isLeaf: true }));
3681
- * ```
3682
- *
3683
- * @example Hierarchical items:
3684
- * ```ts
3685
- * lister.factory = () =>
3686
- * createTreeListAdapter<Category>(
3687
- * cat => ({ key: cat.id, label: cat.name }),
3688
- * { getChildren: cat => cat.subCategories },
3689
- * );
3690
- * ```
3691
- */
3692
- declare function createTreeListAdapter<T>(toTreeItem: (item: T) => Omit<TreeItem, `data`>, options?: TreeListAdapterOptions<T>): HTMLElement & IGroupedSubComponent<T>;
3693
- //#endregion
3694
- //#region src/vertical-list/vertical-list.d.ts
3695
- interface CustomCheckboxOptions {
3696
- renderer: (checked: boolean) => unknown;
3697
- margin?: string;
3698
- width?: string;
3699
- }
3700
- interface AddItemOptions {
3701
- /**
3702
- * In `checked` interaction mode, adds the item without a checkbox column and
3703
- * without the ability to be checked/selected. Equivalent to setting the
3704
- * `not-checked` attribute on the item. Ignored outside `checked` mode.
3705
- */
3706
- notChecked?: boolean;
3707
- }
3708
- declare class VerticalListElement extends LitElement {
3709
- #private;
3710
- selectionMode: ListSelectionMode;
3711
- interactionMode: ListInteractionMode;
3712
- filterPredicate: ((el: Element) => boolean) | undefined;
3713
- /**
3714
- * Optional renderer for the checkbox shown in `checked` interactionMode.
3715
- * Receives the current `checked` state and returns a Lit template result.
3716
- *
3717
- * When set, the per-row checkbox becomes a `<span role="checkbox">` whose
3718
- * contents are whatever this returns (rendered with `lit`'s `render()`).
3719
- * When unset, a native `<input type="checkbox">` is used.
3720
- *
3721
- * @example
3722
- * list.checkboxRenderer = (checked) => checked
3723
- * ? html`<svg viewBox="0 0 16 16" width="14" height="14"
3724
- * fill="none" stroke="currentColor" stroke-width="2"
3725
- * stroke-linecap="round" stroke-linejoin="round"
3726
- * style="opacity:0.5">
3727
- * <polyline points="3,8 7,12 13,4" />
3728
- * </svg>`
3729
- * : html``;
3730
- */
3731
- checkboxRenderer: ((checked: boolean) => unknown) | CustomCheckboxOptions | undefined;
3732
- private _selectedItems;
3733
- private _searchVisible;
3734
- private _searchQuery;
3735
- private _searchInputEl;
3736
- private tickled;
3737
- connectedCallback(): void;
3738
- disconnectedCallback(): void;
3739
- firstUpdated(): void;
3740
- updated(changed: PropertyValues): void;
3741
- /** The most recently selected item, or `undefined` if nothing is selected. */
3742
- get selectedItem(): Element | undefined;
3743
- /** The full current selection set (read-only). */
3744
- get selectedItems(): ReadonlySet<Element>;
3745
- addItem(item: Element | string, options?: AddItemOptions): void;
3746
- removeItem(item: Element): void;
3747
- clearItems(): void;
3748
- /**
3749
- * Replace the entire item list in one call.
3750
- * Equivalent to `clearItems()` followed by `addItem()` for each element.
3751
- * Preserves `interactionMode` checkbox wrapping.
3752
- */
3753
- setItems(items: readonly Element[]): void;
3754
- /**
3755
- * Dispatch a command to this list. No-op by default.
3756
- * Intended for use with `ixfx-grouped-item-lister`'s `dispatch()` method,
3757
- * which forwards commands to all sub-components.
3758
- */
3759
- dispatch(_commandId: CommandId, _args?: Record<string, unknown>): void;
3760
- select(item: Element): void;
3761
- selectMany(items: Iterable<Element>): void;
3762
- deselect(item: Element): void;
3763
- clearSelection(): void;
3764
- selectAll(): void;
3765
- selectedFilter(kind: `selected` | `checked` | `either`): Generator<Element>;
3766
- private _replaceSelection;
3767
- private _toggleItem;
3768
- private _rangeSelectTo;
3769
- private _clearSelection;
3770
- private _selectAll;
3771
- private _handleClickSelection;
3772
- private _handleSpaceKey;
3773
- private _getVisibleItems;
3774
- private _isCheckable;
3775
- private _syncItemStates;
3776
- private _syncCheckboxes;
3777
- /**
3778
- * Native checkbox cell: a span that stretches to the row's full cross-axis
3779
- * (so the entire column height is a click target) with a real `<input>`
3780
- * centred inside. The span owns the click; the input is purely visual and
3781
- * has `pointer-events:none` so a single click produces one toggle.
3782
- */
3783
- private _createNativeCheckboxCell;
3784
- /**
3785
- * Custom checkbox cell: same shape as the native cell (a stretching span)
3786
- * so behaviour is identical. The renderer's content goes inside.
3787
- */
3788
- private _createCustomCheckbox;
3789
- private _findListItem;
3790
- private _dispatch;
3791
- private _openSearch;
3792
- private _closeSearch;
3793
- private _onPointerOver;
3794
- private _onPointerLeave;
3795
- private _onKeyDown;
3796
- private _onClick;
3797
- private _onDblClick;
3798
- private _activateItem;
3799
- private _onSearchInput;
3800
- private _onSearchKeydown;
4627
+ * style="opacity:${state === `indeterminate` ? 0.35 : 0.6}">
4628
+ * <polyline points="3,8 7,12 13,4" />
4629
+ * </svg>`;
4630
+ */
4631
+ checkboxRenderer: ((state: TreeCheckboxState) => unknown) | undefined;
4632
+ protected render(): TemplateResult<1>;
4633
+ protected renderNodeContent(node: TreeNode, depth: number): TemplateResult;
4634
+ protected _renderNode(node: TreeNode, depth: number): TemplateResult;
3801
4635
  static styles: CSSResult[];
3802
- render(): TemplateResult<1>;
3803
4636
  }
3804
4637
  declare global {
3805
4638
  interface HTMLElementTagNameMap {
3806
- 'ixfx-vertical-list': VerticalListElement;
4639
+ 'ixfx-tree-list': TreeListElement;
3807
4640
  }
3808
- interface HTMLElementEventMap extends ListElementEventMap {}
3809
4641
  }
4642
+ interface TreeListElement {
4643
+ addEventListener: (<K extends keyof TreeBaseElementEventMap>(type: K, listener: (this: TreeListElement, event: TreeBaseElementEventMap[K]) => void, options?: boolean | AddEventListenerOptions) => void) & ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);
4644
+ }
4645
+ //#endregion
4646
+ //#region src/grouped-item-lister/tree-list-adapter.d.ts
4647
+ type TreeListAdapterOptions<T> = {
4648
+ /**
4649
+ * Returns the direct children of an item to build the tree hierarchy.
4650
+ * Omit for flat item lists — all items become leaf nodes at the root level.
4651
+ */
4652
+ getChildren?: (item: T) => readonly T[];
4653
+ /** Forwarded to the inner ixfx-tree-list. Default: `'standard'`. */
4654
+ interactionMode?: TreeInteractionMode;
4655
+ /**
4656
+ * Controls which node types are selectable.
4657
+ * Forwarded to the inner ixfx-tree-list. Default: `'all'`.
4658
+ */
4659
+ selectionFilter?: TreeSelectionFilter;
4660
+ /**
4661
+ * Controls how expanding one node affects its siblings.
4662
+ * Forwarded to the inner ixfx-tree-list. Default: `'none'`.
4663
+ */
4664
+ exclusivity?: TreeExclusivity;
4665
+ /**
4666
+ * Called when a command is dispatched via `ixfx-grouped-item-lister.dispatch()`.
4667
+ * Receives the inner `TreeBaseElement` (undefined until the first `setItems()` call)
4668
+ * so the handler can sort, filter, or otherwise manipulate the tree directly.
4669
+ */
4670
+ onDispatch?: (commandId: CommandId, args: Record<string, unknown> | undefined, tree: TreeBaseElement | undefined) => void;
4671
+ };
4672
+ /**
4673
+ * Creates an `HTMLElement` that implements `IGroupedSubComponent<T>` by wrapping
4674
+ * an `ixfx-tree-list` internally.
4675
+ *
4676
+ * `toTreeItem` converts each item `T` to display metadata (`key`, `label`, etc).
4677
+ * The adapter stores the original `T` in `TreeItem.data` and uses it to map
4678
+ * tree-node selections back to typed values.
4679
+ *
4680
+ * Unlike `createVerticalListAdapter`, items can be hierarchical: provide
4681
+ * `options.getChildren` to return each item's children and the adapter will
4682
+ * recursively build the `TreeNode` tree. Omit it for a flat list of leaf nodes.
4683
+ *
4684
+ * The four interface events (`select`, `activate`, `item-click`, `tickle`) are
4685
+ * intercepted at the tree level, re-typed from `TreeNode` → `T`, and re-dispatched
4686
+ * on the adapter element so `ixfx-grouped-item-lister` can identify the source.
4687
+ *
4688
+ * @example Flat item list:
4689
+ * ```ts
4690
+ * lister.factory = () =>
4691
+ * createTreeListAdapter<FileItem>(item => ({ key: item.id, label: item.name, isLeaf: true }));
4692
+ * ```
4693
+ *
4694
+ * @example Hierarchical items:
4695
+ * ```ts
4696
+ * lister.factory = () =>
4697
+ * createTreeListAdapter<Category>(
4698
+ * cat => ({ key: cat.id, label: cat.name }),
4699
+ * { getChildren: cat => cat.subCategories },
4700
+ * );
4701
+ * ```
4702
+ */
4703
+ declare function createTreeListAdapter<T>(toTreeItem: (item: T) => Omit<TreeItem, `data`>, options?: TreeListAdapterOptions<T>): HTMLElement & IGroupedSubComponent<T>;
3810
4704
  //#endregion
3811
4705
  //#region src/grouped-item-lister/vertical-list-adapter.d.ts
3812
4706
  type VerticalListAdapterOptions = {
@@ -4231,41 +5125,233 @@ declare class RadialInputElement extends RadialInputElement_base {
4231
5125
  render(): unknown;
4232
5126
  protected updated(changed: PropertyValues): void;
4233
5127
  disconnectedCallback(): void;
4234
- firstUpdated(): void;
5128
+ firstUpdated(): void;
5129
+ static styles: CSSResult[];
5130
+ }
5131
+ declare global {
5132
+ interface HTMLElementTagNameMap {
5133
+ 'ixfx-radial-input': RadialInputElement;
5134
+ }
5135
+ }
5136
+ //#endregion
5137
+ //#region src/labelled-radial-input/labelled-radial-input.d.ts
5138
+ declare class LabelledRadialInput extends LabelledInputBase {
5139
+ readonly inputSelector = "ixfx-radial-input";
5140
+ max: number;
5141
+ step: number;
5142
+ radius: number;
5143
+ flatten: number;
5144
+ markerStyle: MarkerStyle;
5145
+ wedge: boolean;
5146
+ valueMode: ValueMode;
5147
+ tooltip: boolean;
5148
+ flip: boolean;
5149
+ aspectRatioThreshold: number;
5150
+ /** Pass-through: enables wheel-on-hover for the inner dial and editable-number. */
5151
+ lighttouch: boolean;
5152
+ private _isWide;
5153
+ private _getEffectivePrecision;
5154
+ protected _handleResize(entries: ResizeObserverEntry[]): void;
5155
+ protected _renderEditableNumber(): typeof nothing | TemplateResult<1>;
5156
+ render(): TemplateResult<1>;
5157
+ private _getTooltipValue;
5158
+ static styles: CSSResultGroup;
5159
+ }
5160
+ declare global {
5161
+ interface HTMLElementTagNameMap {
5162
+ 'ixfx-labelled-radial-input': LabelledRadialInput;
5163
+ }
5164
+ }
5165
+ //#endregion
5166
+ //#region src/slider-input/types.d.ts
5167
+ /**
5168
+ * Type definitions for slider-input component
5169
+ */
5170
+ type SliderOrientation = `horizontal` | `vertical`;
5171
+ type SliderMarkerStyle = `needle` | `dot` | `triangle` | `none`;
5172
+ type SliderSingleStyle = `range` | `bipolar` | `unipolar`;
5173
+ type SliderValueMode = `single` | `dual` | `triple`;
5174
+ type SliderCrossover = `none` | `allow`;
5175
+ type SliderValueDrag = `none` | `stop` | `flex`;
5176
+ /**
5177
+ * Behaviour for the middle (C) handle in triple mode when the A/B span
5178
+ * changes. `none` (default) keeps C in place and only clamps it when it
5179
+ * falls outside the new [A, B] band. `proportional` keeps C at the same
5180
+ * fractional position within the band as the band moves or resizes.
5181
+ */
5182
+ type SliderValueCFollow = `none` | `proportional`;
5183
+ type SliderLaneType = `value` | `fixed` | `anchored`;
5184
+ type SliderHandleKey = `a` | `b` | `c`;
5185
+ /**
5186
+ * Per-lane data. Mirrors radial-input's shape with the difference that
5187
+ * `type: 'value'` lanes track a *range* (valueMin/valueMax) rather than a
5188
+ * single value, while `type: 'anchored'` lanes keep a single value (0..1
5189
+ * length).
5190
+ */
5191
+ interface SliderLaneData {
5192
+ key: string;
5193
+ type: SliderLaneType;
5194
+ /**
5195
+ * Used when type === 'anchored': length (0..1) of the lane symmetrically
5196
+ * centered on the current value.
5197
+ */
5198
+ value?: number;
5199
+ /** Used when type === 'value': lower end of the lane band (0..1). */
5200
+ valueMin?: number;
5201
+ /** Used when type === 'value': upper end of the lane band (0..1). */
5202
+ valueMax?: number;
5203
+ /** Perpendicular offset from the track centreline (-1..1 scale relative to the cross axis). */
5204
+ offset: number;
5205
+ /** Stroke thickness as a fraction of the cross axis (0..1). */
5206
+ width: number;
5207
+ }
5208
+ /**
5209
+ * Identifies which field(s) of a dual/triple-mode detail changed.
5210
+ * `both` is reserved for length-drag (value-drag) gestures.
5211
+ */
5212
+ type SliderChangedField = `min` | `max` | `c` | `both`;
5213
+ /**
5214
+ * In single mode, `value` is the single handle's value and the min/max/c
5215
+ * fields are undefined. In dual/triple mode, `value` is set to `valueMax`
5216
+ * (the "B"/upper handle) for parity with native `<input type="range">`
5217
+ * two-thumb patterns where a single `value` is ambiguous — consumers
5218
+ * wanting min/max should use `valueMin`/`valueMax` directly.
5219
+ */
5220
+ interface SliderInputInputDetail {
5221
+ readonly value: number;
5222
+ readonly valueRelative: number;
5223
+ /** Lower handle value (dual/triple modes only). */
5224
+ readonly valueMin?: number;
5225
+ /** Upper handle value (dual/triple modes only). */
5226
+ readonly valueMax?: number;
5227
+ readonly valueMinRelative?: number;
5228
+ readonly valueMaxRelative?: number;
5229
+ /** Triple-mode middle handle value. */
5230
+ readonly valueC?: number;
5231
+ readonly valueCRelative?: number;
5232
+ /** Which field this particular event resulted from. */
5233
+ readonly changed?: SliderChangedField;
5234
+ }
5235
+ interface SliderInputChangeDetail {
5236
+ readonly value: number;
5237
+ readonly valueRelative: number;
5238
+ readonly previousValue: number;
5239
+ readonly valueMin?: number;
5240
+ readonly valueMax?: number;
5241
+ readonly previousValueMin?: number;
5242
+ readonly previousValueMax?: number;
5243
+ readonly valueC?: number;
5244
+ readonly previousValueC?: number;
5245
+ readonly changed?: SliderChangedField;
5246
+ }
5247
+ type SliderInputInputEvent = CustomEvent<SliderInputInputDetail>;
5248
+ type SliderInputChangeEvent = CustomEvent<SliderInputChangeDetail>;
5249
+ interface SliderInputElementEventMap {
5250
+ input: SliderInputInputEvent;
5251
+ change: SliderInputChangeEvent;
5252
+ }
5253
+ //#endregion
5254
+ //#region src/slider-input/slider-input.d.ts
5255
+ declare const SliderInputElement_base: (new (...args: any[]) => WheelNudgeConsumerType<LitElement>) & typeof LitElement;
5256
+ declare class SliderInputElement extends SliderInputElement_base {
5257
+ #private;
5258
+ valueA: number;
5259
+ valueB: number;
5260
+ /**
5261
+ * Triple-mode middle handle. `undefined` until first willUpdate, then
5262
+ * defaulted to the midpoint of valueA/valueB (matching radial-input's
5263
+ * deferred lane-correction pattern).
5264
+ */
5265
+ valueC: number | undefined;
5266
+ min: number;
5267
+ max: number;
5268
+ step: number | undefined;
5269
+ stops: number | undefined;
5270
+ valueMode: SliderValueMode;
5271
+ singleStyle: SliderSingleStyle;
5272
+ orientation: SliderOrientation;
5273
+ markerStyle: SliderMarkerStyle;
5274
+ /**
5275
+ * Optional marker-style override for the C handle in triple mode. Lets
5276
+ * consumers give C a different shape (e.g. dot) from the global
5277
+ * `markerStyle` applied to A/B.
5278
+ */
5279
+ markerStyleC: SliderMarkerStyle | undefined;
5280
+ crossover: SliderCrossover;
5281
+ valueDrag: SliderValueDrag;
5282
+ /**
5283
+ * In triple mode, how the C handle reacts when A or B moves the [A, B]
5284
+ * band. `none` (default): C keeps its value unless pushed outside the
5285
+ * new band. `proportional`: C is re-anchored at the same fractional
5286
+ * position it had within the *old* band, so it moves with A/B.
5287
+ */
5288
+ valueCFollow: SliderValueCFollow;
5289
+ valueMin: number;
5290
+ disabled: boolean;
5291
+ /**
5292
+ * Swipe-to-draw gesture, mirroring `ixfx-range-input[swipeable]`.
5293
+ * When active, pressing down on the slider or entering it while the
5294
+ * pointer is pressed sets the value from the cursor coordinate.
5295
+ * Pointer capture is NOT held, so the cursor can move to adjacent
5296
+ * swipeable sliders and update them too (step-sequencer style).
5297
+ * Leaving the slider (above/below for horizontal, left/right for
5298
+ * vertical) freezes the value; re-entering re-engages.
5299
+ *
5300
+ * Single mode sets value-A directly. Dual/triple modes move the
5301
+ * nearest handle to the cursor.
5302
+ */
5303
+ swipeable: boolean;
5304
+ constructor();
5305
+ connectedCallback(): void;
5306
+ addLane(key: string, options?: {
5307
+ value?: number;
5308
+ valueMin?: number;
5309
+ valueMax?: number;
5310
+ type?: SliderLaneType;
5311
+ offset?: number;
5312
+ width?: number;
5313
+ }): void;
5314
+ setLaneValue(key: string, value: number): void;
5315
+ setLaneRange(key: string, valueMin: number, valueMax: number): void;
5316
+ removeLane(key: string): void;
5317
+ getLanes(): ReadonlyMap<string, SliderLaneData>;
5318
+ getLane(key: string): SliderLaneData | undefined;
5319
+ _applyWheelDelta(direction: WheelDirection, event: WheelEvent): void;
5320
+ protected willUpdate(changed: PropertyValues): void;
5321
+ render(): unknown;
5322
+ protected updated(changed: PropertyValues): void;
5323
+ disconnectedCallback(): void;
4235
5324
  static styles: CSSResult[];
4236
5325
  }
4237
5326
  declare global {
4238
5327
  interface HTMLElementTagNameMap {
4239
- 'ixfx-radial-input': RadialInputElement;
5328
+ 'ixfx-slider-input': SliderInputElement;
4240
5329
  }
4241
5330
  }
5331
+ interface SliderInputElement {
5332
+ addEventListener: (<K extends keyof SliderInputElementEventMap>(type: K, listener: (this: SliderInputElement, event: SliderInputElementEventMap[K]) => void, options?: boolean | AddEventListenerOptions) => void) & ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);
5333
+ }
4242
5334
  //#endregion
4243
- //#region src/labelled-radial-input/labelled-radial-input.d.ts
4244
- declare class LabelledRadialInput extends LabelledInputBase {
4245
- readonly inputSelector = "ixfx-radial-input";
4246
- max: number;
4247
- step: number;
4248
- radius: number;
4249
- flatten: number;
4250
- markerStyle: MarkerStyle;
4251
- wedge: boolean;
4252
- valueMode: ValueMode;
4253
- tooltip: boolean;
4254
- flip: boolean;
4255
- aspectRatioThreshold: number;
4256
- /** Pass-through: enables wheel-on-hover for the inner dial and editable-number. */
5335
+ //#region src/labelled-slider-input/labelled-slider-input.d.ts
5336
+ declare class LabelledSliderInput extends LabelledInputBase {
5337
+ readonly inputSelector = "ixfx-slider-input";
5338
+ orientation: `horizontal` | `vertical`;
5339
+ singleStyle: SliderSingleStyle;
5340
+ markerStyle: SliderMarkerStyle;
5341
+ stops: number | undefined;
5342
+ disabled: boolean;
5343
+ swipeable: boolean;
5344
+ /** Pass-through: enables wheel-on-hover for the inner slider and editable-number. */
4257
5345
  lighttouch: boolean;
4258
- private _isWide;
4259
- private _getEffectivePrecision;
4260
- protected _handleResize(entries: ResizeObserverEntry[]): void;
4261
- protected _renderEditableNumber(): typeof nothing | TemplateResult<1>;
5346
+ switchHeight: number;
5347
+ protected _renderEditableNumber(): TemplateResult<1>;
5348
+ protected _syncValue(v: number): void;
4262
5349
  render(): TemplateResult<1>;
4263
- private _getTooltipValue;
4264
5350
  static styles: CSSResultGroup;
4265
5351
  }
4266
5352
  declare global {
4267
5353
  interface HTMLElementTagNameMap {
4268
- 'ixfx-labelled-radial-input': LabelledRadialInput;
5354
+ 'ixfx-labelled-slider-input': LabelledSliderInput;
4269
5355
  }
4270
5356
  }
4271
5357
  //#endregion
@@ -4707,6 +5793,7 @@ declare class PanelGroupElement extends LitElement {
4707
5793
  orientation: PanelGroupOrientation;
4708
5794
  variant: PanelVariant;
4709
5795
  toggleInteraction: PanelToggleInteraction;
5796
+ collapsible: boolean;
4710
5797
  allowMultiple: boolean;
4711
5798
  gap: string;
4712
5799
  private _panels;
@@ -5431,161 +6518,90 @@ declare class SelectHorizElement extends SelectHorizElement_base {
5431
6518
  private _emitChange;
5432
6519
  }
5433
6520
  //#endregion
5434
- //#region src/slider-input/types.d.ts
5435
- /**
5436
- * Type definitions for slider-input component
5437
- */
5438
- type SliderOrientation = `horizontal` | `vertical`;
5439
- type SliderMarkerStyle = `needle` | `dot` | `triangle` | `none`;
5440
- type SliderSingleStyle = `range` | `bipolar` | `unipolar`;
5441
- type SliderValueMode = `single` | `dual` | `triple`;
5442
- type SliderCrossover = `none` | `allow`;
5443
- type SliderValueDrag = `none` | `stop` | `flex`;
5444
- /**
5445
- * Behaviour for the middle (C) handle in triple mode when the A/B span
5446
- * changes. `none` (default) keeps C in place and only clamps it when it
5447
- * falls outside the new [A, B] band. `proportional` keeps C at the same
5448
- * fractional position within the band as the band moves or resizes.
5449
- */
5450
- type SliderValueCFollow = `none` | `proportional`;
5451
- type SliderLaneType = `value` | `fixed` | `anchored`;
5452
- type SliderHandleKey = `a` | `b` | `c`;
5453
- /**
5454
- * Per-lane data. Mirrors radial-input's shape with the difference that
5455
- * `type: 'value'` lanes track a *range* (valueMin/valueMax) rather than a
5456
- * single value, while `type: 'anchored'` lanes keep a single value (0..1
5457
- * length).
5458
- */
5459
- interface SliderLaneData {
5460
- key: string;
5461
- type: SliderLaneType;
5462
- /**
5463
- * Used when type === 'anchored': length (0..1) of the lane symmetrically
5464
- * centered on the current value.
5465
- */
5466
- value?: number;
5467
- /** Used when type === 'value': lower end of the lane band (0..1). */
5468
- valueMin?: number;
5469
- /** Used when type === 'value': upper end of the lane band (0..1). */
5470
- valueMax?: number;
5471
- /** Perpendicular offset from the track centreline (-1..1 scale relative to CROSS). */
5472
- offset: number;
5473
- /** Stroke thickness as a fraction of the CROSS dimension (0..1). */
5474
- width: number;
5475
- }
6521
+ //#region src/sliding-number/sliding-number.d.ts
5476
6522
  /**
5477
- * Identifies which field(s) of a dual/triple-mode detail changed.
5478
- * `both` is reserved for length-drag (value-drag) gestures.
6523
+ * Digit-roll direction.
6524
+ * - `auto` inferred from whether the value went up or down (default)
6525
+ * - `up` / `down` — force the reels to always spin one way
6526
+ * - `none` — take the shortest path
5479
6527
  */
5480
- type SliderChangedField = `min` | `max` | `c` | `both`;
6528
+ type SlidingNumberTrend = `auto` | `up` | `down` | `none` | `increasing` | `decreasing`;
5481
6529
  /**
5482
- * In single mode, `value` is the single handle's value and the min/max/c
5483
- * fields are undefined. In dual/triple mode, `value` is set to `valueMax`
5484
- * (the "B"/upper handle) for parity with native `<input type="range">`
5485
- * two-thumb patterns where a single `value` is ambiguous — consumers
5486
- * wanting min/max should use `valueMin`/`valueMax` directly.
6530
+ * `ixfx-sliding-number` an animated number readout. When `value` changes each
6531
+ * digit rolls vertically to its new figure (odometer / slot-machine style),
6532
+ * digits that appear or disappear slide + fade, and the whole thing stays lined
6533
+ * up on the decimal point.
6534
+ *
6535
+ * Inspired by [NumberFlow](https://number-flow.barvian.me/): configurable
6536
+ * timings, a `trend` to bias roll direction, decimal alignment, and `::part()`
6537
+ * hooks for styling.
6538
+ *
6539
+ * ```html
6540
+ * <ixfx-sliding-number value="1234.5"></ixfx-sliding-number>
6541
+ * <ixfx-sliding-number value="19.99" prefix="$" format='{"minimumFractionDigits":2}'></ixfx-sliding-number>
6542
+ * ```
6543
+ *
6544
+ * ### CSS variables
6545
+ * | Variable | Default | Purpose |
6546
+ * |---|---|---|
6547
+ * | `--sliding-number-spin-duration` | `0.7s` | Time for a digit reel to roll |
6548
+ * | `--sliding-number-spin-easing` | `cubic-bezier(.16,1,.3,1)` | Easing for the roll |
6549
+ * | `--sliding-number-transform-duration` | `0.5s` | Time for digits to slide in/out as the number grows/shrinks |
6550
+ * | `--sliding-number-transform-easing` | `cubic-bezier(.16,1,.3,1)` | Easing for that slide |
6551
+ * | `--sliding-number-opacity-duration` | `0.35s` | Fade time for entering/leaving digits |
6552
+ * | `--sliding-number-digit-width` | `1ch` | Column width of a single digit |
6553
+ *
6554
+ * ### Parts
6555
+ * `prefix`, `suffix`, `number`, `integer`, `fraction`, `digit`, `symbol`.
5487
6556
  */
5488
- interface SliderInputInputDetail {
5489
- readonly value: number;
5490
- readonly valueRelative: number;
5491
- /** Lower handle value (dual/triple modes only). */
5492
- readonly valueMin?: number;
5493
- /** Upper handle value (dual/triple modes only). */
5494
- readonly valueMax?: number;
5495
- readonly valueMinRelative?: number;
5496
- readonly valueMaxRelative?: number;
5497
- /** Triple-mode middle handle value. */
5498
- readonly valueC?: number;
5499
- readonly valueCRelative?: number;
5500
- /** Which field this particular event resulted from. */
5501
- readonly changed?: SliderChangedField;
5502
- }
5503
- interface SliderInputChangeDetail {
5504
- readonly value: number;
5505
- readonly valueRelative: number;
5506
- readonly previousValue: number;
5507
- readonly valueMin?: number;
5508
- readonly valueMax?: number;
5509
- readonly previousValueMin?: number;
5510
- readonly previousValueMax?: number;
5511
- readonly valueC?: number;
5512
- readonly previousValueC?: number;
5513
- readonly changed?: SliderChangedField;
5514
- }
5515
- type SliderInputInputEvent = CustomEvent<SliderInputInputDetail>;
5516
- type SliderInputChangeEvent = CustomEvent<SliderInputChangeDetail>;
5517
- interface SliderInputElementEventMap {
5518
- input: SliderInputInputEvent;
5519
- change: SliderInputChangeEvent;
5520
- }
5521
- //#endregion
5522
- //#region src/slider-input/slider-input.d.ts
5523
- declare const SliderInputElement_base: (new (...args: any[]) => WheelNudgeConsumerType<LitElement>) & typeof LitElement;
5524
- declare class SliderInputElement extends SliderInputElement_base {
5525
- #private;
5526
- valueA: number;
5527
- valueB: number;
5528
- /**
5529
- * Triple-mode middle handle. `undefined` until first willUpdate, then
5530
- * defaulted to the midpoint of valueA/valueB (matching radial-input's
5531
- * deferred lane-correction pattern).
5532
- */
5533
- valueC: number | undefined;
5534
- min: number;
5535
- max: number;
5536
- step: number | undefined;
5537
- stops: number | undefined;
5538
- valueMode: SliderValueMode;
5539
- singleStyle: SliderSingleStyle;
5540
- orientation: SliderOrientation;
5541
- markerStyle: SliderMarkerStyle;
5542
- /**
5543
- * Optional marker-style override for the C handle in triple mode. Lets
5544
- * consumers give C a different shape (e.g. dot) from the global
5545
- * `markerStyle` applied to A/B.
5546
- */
5547
- markerStyleC: SliderMarkerStyle | undefined;
5548
- crossover: SliderCrossover;
5549
- valueDrag: SliderValueDrag;
5550
- /**
5551
- * In triple mode, how the C handle reacts when A or B moves the [A, B]
5552
- * band. `none` (default): C keeps its value unless pushed outside the
5553
- * new band. `proportional`: C is re-anchored at the same fractional
5554
- * position it had within the *old* band, so it moves with A/B.
5555
- */
5556
- valueCFollow: SliderValueCFollow;
5557
- valueMin: number;
5558
- disabled: boolean;
5559
- constructor();
6557
+ declare class SlidingNumberElement extends LitElement {
6558
+ /** The number to display. */
6559
+ value: number;
6560
+ /** BCP-47 locale(s) passed to `Intl.NumberFormat`. */
6561
+ locales: string | undefined;
6562
+ /**
6563
+ * `Intl.NumberFormat` options. As an attribute, pass JSON:
6564
+ * `format='{"style":"currency","currency":"USD"}'`.
6565
+ */
6566
+ format: Intl.NumberFormatOptions | undefined;
6567
+ /** Static text shown before the number. */
6568
+ prefix: string;
6569
+ /** Static text shown after the number. */
6570
+ suffix: string;
6571
+ /** Which way the digit reels roll. */
6572
+ trend: SlidingNumberTrend;
6573
+ /** Add the `no-animate` attribute to render every change instantly. */
6574
+ noAnimate: boolean;
6575
+ /** Honour `prefers-reduced-motion: reduce` (default `true`; set the property to `false` to override). */
6576
+ respectMotionPreference: boolean;
6577
+ private _cells;
6578
+ private _formatted;
6579
+ private _ready;
6580
+ private _prevValue;
6581
+ private _pendingSpins;
6582
+ private _pendingDir;
6583
+ private _reelAnims;
6584
+ private _reapTimer;
5560
6585
  connectedCallback(): void;
5561
- addLane(key: string, options?: {
5562
- value?: number;
5563
- valueMin?: number;
5564
- valueMax?: number;
5565
- type?: SliderLaneType;
5566
- offset?: number;
5567
- width?: number;
5568
- }): void;
5569
- setLaneValue(key: string, value: number): void;
5570
- setLaneRange(key: string, valueMin: number, valueMax: number): void;
5571
- removeLane(key: string): void;
5572
- getLanes(): ReadonlyMap<string, SliderLaneData>;
5573
- getLane(key: string): SliderLaneData | undefined;
5574
- _applyWheelDelta(direction: WheelDirection, event: WheelEvent): void;
5575
- protected willUpdate(changed: PropertyValues): void;
5576
- render(): unknown;
5577
- protected updated(changed: PropertyValues): void;
5578
6586
  disconnectedCallback(): void;
5579
- static styles: CSSResult[];
6587
+ private _motionOK;
6588
+ private _timing;
6589
+ private _numberFormat;
6590
+ private _resolveDir;
6591
+ /** Split the formatted value into positioned cells. */
6592
+ private _buildCells;
6593
+ protected willUpdate(changed: PropertyValues): void;
6594
+ protected updated(): void;
6595
+ private _spin;
6596
+ private _renderCell;
6597
+ protected render(): TemplateResult<1>;
6598
+ static styles: CSSResult;
5580
6599
  }
5581
6600
  declare global {
5582
6601
  interface HTMLElementTagNameMap {
5583
- 'ixfx-slider-input': SliderInputElement;
6602
+ 'ixfx-sliding-number': SlidingNumberElement;
5584
6603
  }
5585
6604
  }
5586
- interface SliderInputElement {
5587
- addEventListener: (<K extends keyof SliderInputElementEventMap>(type: K, listener: (this: SliderInputElement, event: SliderInputElementEventMap[K]) => void, options?: boolean | AddEventListenerOptions) => void) & ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);
5588
- }
5589
6605
  //#endregion
5590
6606
  //#region src/snackbar/snackbar.d.ts
5591
6607
  type SnackbarMode = `explicit` | `manual` | `implicit`;
@@ -5674,76 +6690,37 @@ declare class SnapContainer extends LitElement {
5674
6690
  }
5675
6691
  type SnapChangeDetail = {
5676
6692
  readonly previousSnap: number;
5677
- readonly newSnap: number;
5678
- };
5679
- type SnapChangeEvent = CustomEvent<SnapChangeDetail>;
5680
- type SnapInputDetail = {
5681
- readonly index: number;
5682
- };
5683
- type SnapInputEvent = CustomEvent<SnapInputDetail>;
5684
- declare global {
5685
- interface HTMLElementTagNameMap {
5686
- 'ixfx-snap-container': SnapContainer;
5687
- }
5688
- }
5689
- //#endregion
5690
- //#region src/split-layout/split-layout.d.ts
5691
- /**
5692
- * Lays out two elements within a container, with a bar to resize them
5693
- * proportionally.
5694
- *
5695
- * Events
5696
- * ixfx-split-collapsed: Dispatched when a panel is collapsed/uncollapsed via drag.
5697
- * detail: { panel: 'A' | 'B', collapsed: boolean }
5698
- *
5699
- * Attributes
5700
- * layout: `vertical`|`horizontal`
5701
- * sizeA/B: CSS size of section A or B. Can use relative or absolute values
5702
- * fixedA/B: If _true_ size will be calculated in pixels. By default (_false_) it uses % of whole
5703
- * collapsible: If _true_, panels can be collapsed by dragging to edge (default: false)
5704
- * minSizeA/B: Minimum size for panel A or B (e.g., "100px" or "20%"). Default: none
5705
- * maxSizeA/B: Maximum size for panel A or B (e.g., "200px" or "80%"). Default: none
5706
- *
5707
- * CSS variables
5708
- * --handle-size: 2px; // Width/height of split bar
5709
- * --handle-colour: var(--surface-5); // Colour of handle
5710
- * --handle-hover-colour: var(--surface-6); // Colour of handle when hovering
5711
- * --handle-active-colour: var(--accent); // Colour of handle when being used
5712
- * --handle-bg: var(--handle-colour); // Background of grab handle rectangle
5713
- * --handle-grab-colour: var(--surface-muted-text); // Colour of grab handle dots
5714
- * --handle-grab-dot-size: 3px; // Diameter of grab handle dots
5715
- * --handle-grab-size: 16px; // Length of grab handle
5716
- * --handle-grab-thickness: 8px; // Thickness of grab handle
5717
- */
5718
- declare class SplitLayoutElement extends LitElement {
5719
- #private;
5720
- layout: `vertical` | `horizontal`;
5721
- sizeA: string;
5722
- sizeB: string;
5723
- fixedA: boolean;
5724
- fixedB: boolean;
5725
- collapsible: boolean;
5726
- collapsedA: boolean;
5727
- collapsedB: boolean;
5728
- minSizeA: string;
5729
- maxSizeA: string;
5730
- minSizeB: string;
5731
- maxSizeB: string;
5732
- private _hasCorner;
5733
- private get showGrabHandle();
5734
- disconnectedCallback(): void;
5735
- firstUpdated(): void;
5736
- updated(changedProperties: Map<string, unknown>): void;
5737
- getZone(): HTMLElement | undefined;
5738
- render(): TemplateResult<1>;
5739
- static styles: CSSResult[];
5740
- }
6693
+ readonly newSnap: number;
6694
+ };
6695
+ type SnapChangeEvent = CustomEvent<SnapChangeDetail>;
6696
+ type SnapInputDetail = {
6697
+ readonly index: number;
6698
+ };
6699
+ type SnapInputEvent = CustomEvent<SnapInputDetail>;
5741
6700
  declare global {
5742
6701
  interface HTMLElementTagNameMap {
5743
- "ixfx-split-layout": SplitLayoutElement;
6702
+ 'ixfx-snap-container': SnapContainer;
5744
6703
  }
5745
6704
  }
5746
6705
  //#endregion
6706
+ //#region src/split-layout/split-model.d.ts
6707
+ declare function buildModel(rootEl: HTMLElement): GroupNode;
6708
+ declare function normalise(group: GroupNode): GroupNode;
6709
+ interface DistributeResult {
6710
+ sizesPx: number[];
6711
+ belowMin: number[];
6712
+ }
6713
+ declare function distribute(sizesPx: number[], gutterIndex: number, deltaPx: number, constraints: Array<{
6714
+ minPx: number;
6715
+ maxPx: number | null;
6716
+ fixedPx: number | null;
6717
+ whenSmall: WhenSmall;
6718
+ }>): DistributeResult;
6719
+ declare function resolveTracks(group: GroupNode, _containerPx: number): string;
6720
+ declare function toSnapshot(group: GroupNode): LayoutSnapshot;
6721
+ declare function applySnapshot(group: GroupNode, snapshot: LayoutSnapshot): GroupNode;
6722
+ declare function walk(group: GroupNode, visitor: (node: LayoutNode, path: number[]) => void): void;
6723
+ //#endregion
5747
6724
  //#region src/swipe/swipe.d.ts
5748
6725
  type SwipeInputDetail = {
5749
6726
  readonly value: number;
@@ -5797,135 +6774,6 @@ declare class SwipeElement extends SwipeElement_base {
5797
6774
  render(): ReturnType<typeof html>;
5798
6775
  }
5799
6776
  //#endregion
5800
- //#region src/toolbar/types.d.ts
5801
- type ToolbarOrientation = 'horizontal' | 'vertical-left' | 'vertical-right';
5802
- type ToolbarLayout = 'one-line' | 'wrap';
5803
- type ToolbarVerticalWriting = 'auto' | 'up' | 'down' | 'none';
5804
- //#endregion
5805
- //#region src/toolbar/toolbar.d.ts
5806
- declare class ToolbarElement extends LitElement {
5807
- orientation: ToolbarOrientation;
5808
- layout: ToolbarLayout;
5809
- verticalWriting: ToolbarVerticalWriting;
5810
- showGroupLabels: boolean;
5811
- invisibleGroups: boolean;
5812
- private _overflowCount;
5813
- private _ro;
5814
- private static _cnt;
5815
- private _anchor;
5816
- /** Natural size of items, captured while they are measurable in the main slot. */
5817
- private _sizes;
5818
- private _measureQueued;
5819
- private _inner;
5820
- private _popover;
5821
- private _slot;
5822
- static styles: CSSResult[];
5823
- connectedCallback(): void;
5824
- protected firstUpdated(): void;
5825
- protected updated(changed: Map<string, unknown>): void;
5826
- private _updateGroupLabels;
5827
- disconnectedCallback(): void;
5828
- /** Coalesce measure passes into one per frame; prevents slotchange feedback loops. */
5829
- private _scheduleMeasure;
5830
- private _measure;
5831
- private _toggleOverflow;
5832
- protected render(): TemplateResult<1>;
5833
- }
5834
- declare global {
5835
- interface HTMLElementTagNameMap {
5836
- 'ixfx-toolbar': ToolbarElement;
5837
- }
5838
- }
5839
- //#endregion
5840
- //#region src/toolbar/toolbar-group.d.ts
5841
- declare class ToolbarGroupElement extends LitElement {
5842
- label: string;
5843
- grow: boolean;
5844
- static styles: CSSResult[];
5845
- protected render(): TemplateResult<1>;
5846
- }
5847
- declare global {
5848
- interface HTMLElementTagNameMap {
5849
- 'ixfx-toolbar-group': ToolbarGroupElement;
5850
- }
5851
- }
5852
- //#endregion
5853
- //#region src/tabs/tab-list-item.d.ts
5854
- /**
5855
- * CSS vars (can be overridden per-instance):
5856
- * --selected-colour: text colour when selected
5857
- * --selected-border-width: border width
5858
- * --ixfx-tab-padding: vertical padding for the tab content (default: var(--space-m))
5859
- * --ixfx-tab-padding-horizontal: horizontal padding (default: same as --ixfx-tab-padding)
5860
- */
5861
- declare class TabListItemElement extends LitElement {
5862
- closeable: boolean;
5863
- hideLabels: boolean;
5864
- iconName: string | undefined;
5865
- description: string | undefined;
5866
- commandActive: string | undefined;
5867
- registry: CommandRegistry<unknown> | undefined;
5868
- private _compact;
5869
- private _hasToolbarContent;
5870
- private _resizeObserver?;
5871
- private _commandCleanup?;
5872
- connectedCallback(): void;
5873
- disconnectedCallback(): void;
5874
- updated(changed: PropertyValues): void;
5875
- private _syncTooltipAttrs;
5876
- private _syncCommandListener;
5877
- private _onToolbarSlotChange;
5878
- private _updateToolbarContent;
5879
- firstUpdated(): void;
5880
- render(): TemplateResult<1>;
5881
- private _onCloseClick;
5882
- static styles: CSSResult[];
5883
- }
5884
- declare global {
5885
- interface HTMLElementTagNameMap {
5886
- "ixfx-tab-list-item": TabListItemElement;
5887
- }
5888
- }
5889
- //#endregion
5890
- //#region src/tabs/tab-list.d.ts
5891
- /**
5892
- * Events
5893
- * 'change' - new tab selected { previous:string, selected:string, for:string }
5894
- * 'reorder' - tab moved within the list { id:string, fromIndex:number, toIndex:number }
5895
- */
5896
- type TabListChangeDetail = {
5897
- readonly previous: string | undefined;
5898
- readonly selected: string;
5899
- readonly for: string;
5900
- };
5901
- type TabListChangeEvent = CustomEvent<TabListChangeDetail>;
5902
- type TabListReorderDetail = {
5903
- readonly id: string;
5904
- readonly fromIndex: number;
5905
- readonly toIndex: number;
5906
- };
5907
- type TabListReorderEvent = CustomEvent<TabListReorderDetail>;
5908
- type TabListDragMode = `off` | `reorder`;
5909
- declare class TabListElement extends LitElement {
5910
- #private;
5911
- orientation: `horizontal` | `vertical-stack` | `vertical-side`;
5912
- flip: boolean;
5913
- scrollable: boolean;
5914
- hideLabels: boolean;
5915
- dragMode: TabListDragMode;
5916
- render(): TemplateResult<1>;
5917
- firstUpdated(): void;
5918
- updated(changedProperties: PropertyValues): void;
5919
- getSelectedElement(): TabListItemElement | undefined;
5920
- selectElement(el: HTMLElement): void;
5921
- static styles: CSSResult[];
5922
- }
5923
- declare global {
5924
- interface HTMLElementTagNameMap {
5925
- "ixfx-tab-list": TabListElement;
5926
- }
5927
- }
5928
- //#endregion
5929
6777
  //#region src/tabs/tab-panel.d.ts
5930
6778
  declare class TabPanelElement extends LitElement {
5931
6779
  render(): TemplateResult<1>;
@@ -6067,6 +6915,43 @@ declare class TabController {
6067
6915
  setTabIcon(sel: string | TabListItemElement, iconName?: string): boolean;
6068
6916
  }
6069
6917
  //#endregion
6918
+ //#region src/text-shimmer/text-shimmer.d.ts
6919
+ /**
6920
+ * `ixfx-text-shimmer` — a label whose text is dimmed at rest, with a band of
6921
+ * brighter colour that sweeps horizontally across it on a loop. Useful as a
6922
+ * lightweight "still working…" indicator (as seen in Claude Code / Codex).
6923
+ *
6924
+ * Content comes from the `text` property, or failing that the default slot:
6925
+ * ```html
6926
+ * <ixfx-text-shimmer text="Thinking…"></ixfx-text-shimmer>
6927
+ * <ixfx-text-shimmer>Reticulating splines…</ixfx-text-shimmer>
6928
+ * ```
6929
+ *
6930
+ * CSS variables (set on the element or an ancestor):
6931
+ * | Variable | Default | Purpose |
6932
+ * |---|---|---|
6933
+ * | `--text-shimmer-color` | `var(--surface-3-text)` | Resting / base text colour |
6934
+ * | `--text-shimmer-gradient-color` | `var(--surface-2-text)` | Colour of the moving highlight |
6935
+ * | `--text-shimmer-duration` | `2s` | Time for one sweep |
6936
+ * | `--text-shimmer-spread` | `15%` | Half-width of the highlight band along the sweep track (larger = wider, softer) |
6937
+ *
6938
+ * Add the `paused` attribute to stop the sweep and show flat base colour.
6939
+ * Respects `prefers-reduced-motion`.
6940
+ */
6941
+ declare class TextShimmerElement extends LitElement {
6942
+ /** Text to display. When empty, the default slot is used instead. */
6943
+ text: string;
6944
+ /** When set, the sweep stops and the text shows flat base colour. */
6945
+ paused: boolean;
6946
+ protected render(): TemplateResult<1>;
6947
+ static styles: CSSResult;
6948
+ }
6949
+ declare global {
6950
+ interface HTMLElementTagNameMap {
6951
+ 'ixfx-text-shimmer': TextShimmerElement;
6952
+ }
6953
+ }
6954
+ //#endregion
6070
6955
  //#region src/timeline/types.d.ts
6071
6956
  type TimelineTrack = {
6072
6957
  readonly key: string;
@@ -6458,6 +7343,61 @@ declare function attachTimelineInteractions(host: IxfxTimelineElement, vcanvasEl
6458
7343
  //#region src/timeline/timeline-styles.d.ts
6459
7344
  declare const timelineStyles: CSSResult;
6460
7345
  //#endregion
7346
+ //#region src/toolbar/toolbar-group.d.ts
7347
+ declare class ToolbarGroupElement extends LitElement {
7348
+ label: string;
7349
+ grow: boolean;
7350
+ static styles: CSSResult[];
7351
+ protected render(): TemplateResult<1>;
7352
+ }
7353
+ declare global {
7354
+ interface HTMLElementTagNameMap {
7355
+ 'ixfx-toolbar-group': ToolbarGroupElement;
7356
+ }
7357
+ }
7358
+ //#endregion
7359
+ //#region src/toolbar/types.d.ts
7360
+ type ToolbarOrientation = `horizontal` | `vertical-left` | `vertical-right`;
7361
+ type ToolbarLayout = `one-line` | `wrap`;
7362
+ type ToolbarVerticalWriting = `auto` | `up` | `down` | `none`;
7363
+ type ToolbarAlign = `near` | `far`;
7364
+ //#endregion
7365
+ //#region src/toolbar/toolbar.d.ts
7366
+ declare class ToolbarElement extends LitElement {
7367
+ orientation: ToolbarOrientation;
7368
+ layout: ToolbarLayout;
7369
+ verticalWriting: ToolbarVerticalWriting;
7370
+ toolbarAlign: ToolbarAlign;
7371
+ showGroupLabels: boolean;
7372
+ invisibleGroups: boolean;
7373
+ private _overflowCount;
7374
+ private _ro;
7375
+ private static _cnt;
7376
+ private _anchor;
7377
+ /** Natural size of items, captured while they are measurable in the main slot. */
7378
+ private _sizes;
7379
+ private _measureQueued;
7380
+ private _inner;
7381
+ private _popover;
7382
+ private _slot;
7383
+ static styles: CSSResult[];
7384
+ connectedCallback(): void;
7385
+ protected firstUpdated(): void;
7386
+ protected updated(changed: Map<string, unknown>): void;
7387
+ private _updateGroupLabels;
7388
+ disconnectedCallback(): void;
7389
+ /** Coalesce measure passes into one per frame; prevents slotchange feedback loops. */
7390
+ private _scheduleMeasure;
7391
+ private _measure;
7392
+ private _toggleOverflow;
7393
+ protected render(): TemplateResult<1>;
7394
+ }
7395
+ declare global {
7396
+ interface HTMLElementTagNameMap {
7397
+ 'ixfx-toolbar': ToolbarElement;
7398
+ }
7399
+ }
7400
+ //#endregion
6461
7401
  //#region src/transitory-label/transitory-label.d.ts
6462
7402
  type Effect = `slide-right` | `slide-left` | `slide-up` | `slide-down` | `fade` | `character-swap`;
6463
7403
  declare class TransitoryLabelElement extends LitElement {
@@ -6497,6 +7437,63 @@ declare class TreeController<T> {
6497
7437
  navigateToValue(predicate: (value: T) => boolean): boolean;
6498
7438
  }
6499
7439
  //#endregion
7440
+ //#region src/twosplit-layout/split-layout.d.ts
7441
+ /**
7442
+ * Lays out two elements within a container, with a bar to resize them
7443
+ * proportionally.
7444
+ *
7445
+ * Events
7446
+ * ixfx-split-collapsed: Dispatched when a panel is collapsed/uncollapsed via drag.
7447
+ * detail: { panel: 'A' | 'B', collapsed: boolean }
7448
+ *
7449
+ * Attributes
7450
+ * layout: `vertical`|`horizontal`
7451
+ * sizeA/B: CSS size of section A or B. Can use relative or absolute values
7452
+ * fixedA/B: If _true_ size will be calculated in pixels. By default (_false_) it uses % of whole
7453
+ * collapsible: If _true_, panels can be collapsed by dragging to edge (default: false)
7454
+ * minSizeA/B: Minimum size for panel A or B (e.g., "100px" or "20%"). Default: none
7455
+ * maxSizeA/B: Maximum size for panel A or B (e.g., "200px" or "80%"). Default: none
7456
+ *
7457
+ * CSS variables
7458
+ * --handle-size: 2px; // Width/height of split bar
7459
+ * --handle-colour: var(--surface-5); // Colour of handle
7460
+ * --handle-hover-colour: var(--surface-6); // Colour of handle when hovering
7461
+ * --handle-active-colour: var(--accent); // Colour of handle when being used
7462
+ * --handle-bg: var(--handle-colour); // Background of grab handle rectangle
7463
+ * --handle-grab-colour: var(--surface-muted-text); // Colour of grab handle dots
7464
+ * --handle-grab-dot-size: 3px; // Diameter of grab handle dots
7465
+ * --handle-grab-size: 16px; // Length of grab handle
7466
+ * --handle-grab-thickness: 8px; // Thickness of grab handle
7467
+ */
7468
+ declare class TwoSplitLayoutElement extends LitElement {
7469
+ #private;
7470
+ layout: `vertical` | `horizontal`;
7471
+ sizeA: string;
7472
+ sizeB: string;
7473
+ fixedA: boolean;
7474
+ fixedB: boolean;
7475
+ collapsible: boolean;
7476
+ collapsedA: boolean;
7477
+ collapsedB: boolean;
7478
+ minSizeA: string;
7479
+ maxSizeA: string;
7480
+ minSizeB: string;
7481
+ maxSizeB: string;
7482
+ private _hasCorner;
7483
+ private get showGrabHandle();
7484
+ disconnectedCallback(): void;
7485
+ firstUpdated(): void;
7486
+ updated(changedProperties: Map<string, unknown>): void;
7487
+ getZone(): HTMLElement | undefined;
7488
+ render(): TemplateResult<1>;
7489
+ static styles: CSSResult[];
7490
+ }
7491
+ declare global {
7492
+ interface HTMLElementTagNameMap {
7493
+ "ixfx-twosplit-layout": TwoSplitLayoutElement;
7494
+ }
7495
+ }
7496
+ //#endregion
6500
7497
  //#region src/util/checkbox.d.ts
6501
7498
  declare function monitorIndeterminate(targetElOrQuery: string | HTMLElement, watchedElsOrQueries: Array<string | HTMLElement>): () => void;
6502
7499
  //#endregion
@@ -6590,5 +7587,5 @@ interface XyPad {
6590
7587
  //#region src/index.d.ts
6591
7588
  declare function init(): void;
6592
7589
  //#endregion
6593
- export { AcTextChangeDetail, AcTextChangeEvent, AcTextCompletionProvider, AcTextElement, AcTextItem, AcTextSelectDetail, AcTextSelectEvent, type AcTokenAddDetail, type AcTokenAddEvent, AcTokenElement, type AcTokenElementEventMap, type AcTokenItem, type AcTokenRemoveDetail, type AcTokenRemoveEvent, type AcTokenizerFn, type AcTokensChangeDetail, type AcTokensChangeEvent, AddItemOptions, ButtonElement, Checkbox, CheckboxChangeDetail, CheckboxChangeEvent, CheckboxEventMap, ClickSnapMode, ColourMapConfig, ColourMode, ColourPicker, type ColourPickerChangeEvent, type ColourPickerEventDetail, type ColourPickerInputEvent, ColourPickerPopup, ColourResult, ConfigEntry, ContiguousSelectEventDetail, CrossoverBehaviour, CrumbNavChangeDetail, CrumbNavChangeEvent, CrumbNavExpandDetail, CrumbNavExpandEvent, CrumbNavNavigateDetail, CrumbNavNavigateEvent, CrumbNavigationChangeDetail, CrumbNavigationChangeEvent, CrumbNavigationElement, CrumbNavigationElementEventMap, CrumbNavigationExpandDetail, CrumbNavigationExpandEvent, CrumbNavigationItemClickDetail, CrumbNavigationItemClickEvent, CrumbPathController, CrumbPathControllerOptions, CrumbPathElement, CrumbPathElementEventMap, CrumbSegment, CrumbSiblingLookupFn, type CssVars, CustomCheckboxOptions, DataBatch, DataController, DataControllerOptions, DataDisplayComponent, DataGridCellClickDetail, DataGridCellClickEvent, DataGridCellEditDetail, DataGridCellEditEvent, DataGridColumnReorderDetail, DataGridColumnReorderEvent, DataGridColumnResizeDetail, DataGridColumnResizeEvent, DataGridColumnVisibilityDetail, DataGridColumnVisibilityEvent, DataGridElement, DataGridElementEventMap, DataGridGroupChangeDetail, DataGridGroupChangeEvent, DataGridSelectDetail, DataGridSelectEvent, DataGridSortDetail, DataGridSortEvent, DataProviderResult, DisplayTextLogic, DragSnappingFn, DragTarget, EditableLabel, EditableLabelChangeDetail, EditableLabelChangeEvent, EditableMode, EditableNumber, Effect, type ElementIncrSearch, type ElementIncrSearchOptions, Endpoints, EntryMode, FormElement, FormGroupElement, FormPartElement, FormatValueForHuman, FormattingOptions, type FuzzySearch, type FuzzySearchOptions, FuzzySearchResult, GridMode, GridResolution, GroupedItemListerElement, type GroupedItemListerElementEventMap, type GroupedSelectDetail, type GroupedSelectEvent, HexChangeDetail, HexChangeEvent, type HighlightOptions, type HighlightTarget, ICON_CARET_RIGHT, ICON_CHECK, ICON_CHEVRON_DOWN, ICON_CLOSE, IDataProvider, type IGroupedSubComponent, type IGroupedSubComponentEventMap, type IconChangedDetail, type IconChangedEvent, type IncrSearch, type IncrSearchChangeCallback, IncrSearchTreeController as IncrSearchMillerController, IncrSearchTreeController, type IncrSearchTreeOptions as IncrSearchMillerOptions, type IncrSearchTreeOptions, type IncrSearchOptions, type IncrSearchResult, type IncrSearchState, ItemsProvider, IxfxHexEditorElement, IxfxIconElement, IxfxRatingElement, IxfxTimelineElement, LabelledRadialInput, LabelledRangeInput, LaneData, LaneType, LedElement, type ListActivateDetail, type ListActivateEvent, type ListElementEventMap, type ListInteractionMode, type ListItemClickDetail, type ListItemClickEvent, type ListSelectDetail, type ListSelectEvent, type ListSelectionMode, type ListTickleDetail, type ListTickleEvent, LoadChildrenCallback, MarkerStyle, index_d_exports as Menu, type TreeActivateDetail as MillerActivateDetail, TreeActivateDetail, type TreeActivateEvent as MillerActivateEvent, TreeActivateEvent, MillerBaseElement, MillerBaseElementEventMap, type TreeCollapseDetail as MillerCollapseDetail, TreeCollapseDetail, type TreeCollapseEvent as MillerCollapseEvent, TreeCollapseEvent, MillerConfig, type TreeExpandDetail as MillerExpandDetail, TreeExpandDetail, type TreeExpandEvent as MillerExpandEvent, TreeExpandEvent, MillerHeaderClickDetail, MillerHeaderClickEvent, MillerHeaderRightClickDetail, MillerHeaderRightClickEvent, type TreeItem as MillerItem, TreeItem, type TreeItemClickDetail as MillerItemClickDetail, TreeItemClickDetail, type TreeItemClickEvent as MillerItemClickEvent, TreeItemClickEvent, MillerItemDblClickDetail, MillerItemDblClickEvent, MillerItemRightClickDetail, MillerItemRightClickEvent, MillerItemState, MillerListElement, type TreeNode as MillerNode, TreeNode, type TreeSelectDetail as MillerSelectDetail, TreeSelectDetail, type TreeSelectEvent as MillerSelectEvent, TreeSelectEvent, MillerSelectionMode, type TreeTickleDetail as MillerTickleDetail, TreeTickleDetail, type TreeTickleEvent as MillerTickleEvent, TreeTickleEvent, MillerTreeController, MillerTreeControllerOptions, NarrowedTextChangeDetail, NarrowedTextChangeEvent, NarrowedTextElement, NarrowedTextItem, NoneSelectEventDetail, Notification, NotificationContent, NotificationManager, NotificationPillElement, NotificationPillElementEventMap, NotificationRenderer, NotificationRendererHooks, NotificationType, NotifierOptions, type OklchValue, Orientation, PanelCloseEvent, PanelElement, PanelElementEventMap, PanelGroupElement, PanelGroupOrientation, PanelOrientation, PanelToggleDetail, PanelToggleEvent, PanelToggleInteraction, PanelVariant, PillPosition, PillQueueDisplay, PillRendererOptions, PillSafeArea, PillTapDetail, PillTapEvent, PlotDataSeries, PlotDataSeriesOptions, PlotHistogram, PlotHistogramBucketClickDetail, PlotHistogramBucketClickEvent, PlotHistogramElementEventMap, PlotHistogramOrientation, PlotHistogramValueTooltips, PlotMultiAxis, PlotMultiAxisDataPointClickDetail, PlotMultiAxisDataPointClickEvent, PlotMultiAxisElementEventMap, PlotMultiAxisLayout, PlotSingleAxis, PlotSingleAxisElementEventMap, PlotSingleAxisPointerMoveDetail, PlotSingleAxisPointerMoveEvent, PlotXyAxis, PolarPad, PolarPadInputDetail, PolarPadInputEvent, PopupItem, RadialInputChangeDetail, RadialInputChangeEvent, RadialInputElement, RadialInputInputDetail, RadialInputInputEvent, RadioGroup, RadioGroupChangeDetail, RadioGroupChangeEvent, RadioGroupMode, RadioItem, RangeElement, RangeInput, RangeMultiElement, RangeMultiInputDetail, RangeMultiInputEvent, RatingChangeDetail, RatingChangeEvent, RatingElement, RatingElementEventMap, RatingInputEvent, RatingVariant, type Rect, RectangularSelectEventDetail, RendererStyle, ResizeMode, SelectEventDetail, SelectHorizChangeDetail, SelectHorizChangeEvent, SelectHorizElement, SelectHorizEventMap, SelectionMode, SingleAxisAgeStyle, SingleAxisDrawStyle, SingleSelectEventDetail, SliderChangedField, SliderCrossover, SliderHandleKey, SliderInputChangeDetail, SliderInputChangeEvent, SliderInputElement, SliderInputElementEventMap, SliderInputInputDetail, SliderInputInputEvent, SliderLaneData, SliderLaneType, SliderMarkerStyle, SliderOrientation, SliderSingleStyle, SliderValueCFollow, SliderValueDrag, SliderValueMode, SnackbarDismiss, SnackbarElement, SnackbarMode, SnackbarPlacement, SnapChangeDetail, SnapChangeEvent, SnapContainer, SnapInputDetail, SnapInputEvent, SnapLogic, SortCompareFn, SplitButton, SplitButtonMode, SplitButtonSelectDetail, SplitButtonSelectEvent, SplitLayoutElement, type SubComponentActivateDetail, type SubComponentActivateEvent, type SubComponentFactory, type SubComponentItemClickDetail, type SubComponentItemClickEvent, type SubComponentSelectDetail, type SubComponentSelectEvent, type SubComponentTickleDetail, type SubComponentTickleEvent, SwipeElement, SwipeElementEventMap, SwipeInputDetail, SwipeInputEvent, SwitcherItem, Tab, TabAddOptions, TabController, TabControllerOptions, TabListChangeDetail, TabListChangeEvent, TabListDragMode, TabListElement, TabListItemElement, TabListReorderDetail, TabListReorderEvent, TabPanelElement, TabPanelsElement, TimelineController, TimelineControllerConfig, TimelineDraggingCallbackDetail, TimelineDraggingDetail, TimelineDraggingEvent, TimelineElementEventMap, TimelineEvent, TimelineEventMoveDetail, TimelineEventMoveEvent, TimelineEventResizeDetail, TimelineEventResizeEvent, TimelineSelectionChangeDetail, TimelineSelectionChangeEvent, TimelineTickleChangeDetail, TimelineTickleChangeEvent, TimelineTrack, TimelineTrackReorderDetail, TimelineTrackReorderEvent, TimelineTrackResizeDetail, TimelineTrackResizeEvent, TimelineTrackSelectDetail, TimelineTrackSelectEvent, TimelineTrackTabElement, ToolbarElement, ToolbarGroupElement, TooltipElement, TooltipOrientations, TrackHeightMode, TrackLayout, TransitoryLabelElement, TreeBaseElement, TreeBaseElementEventMap, TreeCheckboxState, TreeComponent, TreeComponentEventMap, TreeConfig, TreeController, TreeControllerOptions, TreeDataModel, TreeDataModelOptions, TreeExclusivity, TreeFilterPredicate, TreeInteractionMode, TreeListAdapterOptions, TreeListElement, TreeSearchHost, TreeSelectionFilter, UserScale, ValueMode, VerticalListAdapterOptions, VerticalListElement, ViewRange, XyAgeStyle, XyDrawStyle, XyPad, XyPadEventMap, XyPadInputDetail, XyPadInputEvent, applyAgeModification, applyHighlights, attachTimelineInteractions, buildHighlightTargets, clearHighlights, collectDataResult, computeColour, createAcCompletionProvider, createElementIncrSearch, createFuzzySearch, createIncrSearch, createPillRenderer, createTreeListAdapter, createVerticalListAdapter, getIcon, hasIcon, iconBus, init, monitorIndeterminate, parseColourScaleAttr, readBaseColour, registerIcon, resolveCssVars, resolveGrid, svgToDataUri, timelineStyles };
7590
+ export { AcTextChangeDetail, AcTextChangeEvent, AcTextCompletionProvider, AcTextElement, AcTextItem, AcTextSelectDetail, AcTextSelectEvent, type AcTokenAddDetail, type AcTokenAddEvent, AcTokenElement, type AcTokenElementEventMap, type AcTokenItem, type AcTokenRemoveDetail, type AcTokenRemoveEvent, type AcTokenizerFn, type AcTokensChangeDetail, type AcTokensChangeEvent, AddItemOptions, Axis, ButtonElement, Checkbox, CheckboxChangeDetail, CheckboxChangeEvent, CheckboxEventMap, ClickSnapMode, ColourMapConfig, ColourMode, ColourPicker, type ColourPickerChangeEvent, type ColourPickerEventDetail, type ColourPickerInputEvent, ColourPickerPopup, ColourResult, ConfigEntry, ContiguousSelectEventDetail, CrossoverBehaviour, CrumbNavChangeDetail, CrumbNavChangeEvent, CrumbNavExpandDetail, CrumbNavExpandEvent, CrumbNavNavigateDetail, CrumbNavNavigateEvent, CrumbNavigationChangeDetail, CrumbNavigationChangeEvent, CrumbNavigationElement, CrumbNavigationElementEventMap, CrumbNavigationExpandDetail, CrumbNavigationExpandEvent, CrumbNavigationItemClickDetail, CrumbNavigationItemClickEvent, CrumbPathController, CrumbPathControllerOptions, CrumbPathElement, CrumbPathElementEventMap, CrumbSegment, CrumbSiblingLookupFn, type CssVars, CustomCheckboxOptions, DataBatch, DataController, DataControllerOptions, DataDisplayComponent, DataGridCellClickDetail, DataGridCellClickEvent, DataGridCellEditDetail, DataGridCellEditEvent, DataGridColumnReorderDetail, DataGridColumnReorderEvent, DataGridColumnResizeDetail, DataGridColumnResizeEvent, DataGridColumnVisibilityDetail, DataGridColumnVisibilityEvent, DataGridElement, DataGridElementEventMap, DataGridGroupChangeDetail, DataGridGroupChangeEvent, DataGridSelectDetail, DataGridSelectEvent, DataGridSortDetail, DataGridSortEvent, DataProviderResult, type DetailFormatter, DetailListElement, type DetailSortComparator, type DetailSortItem, type DetailSortMode, DisplayTextLogic, DistributeResult, DockAxis, DockChangeDetail, DockChangeEvent, DockDragBoundaryDetail, DockDragBoundaryEvent, DockDropTarget, type DockDropZone, DockHostElement, DockHostElementEventMap, DockLayout, DockNode, DockOperation, DockPanelActivatedDetail, DockPanelActivatedEvent, DockPanelAddedDetail, DockPanelAddedEvent, DockPanelDragStartDetail, DockPanelDragStartEvent, DockPanelElement, DockPanelElementEventMap, DockPanelInit, DockPanelRemovedDetail, DockPanelRemovedEvent, DockPanelSnapshot, DockPanelTearOutDetail, DockPanelTearOutEvent, DockSplitNode, DockStackNode, DragSnappingFn, DragTarget, EditableLabel, EditableLabelChangeDetail, EditableLabelChangeEvent, EditableMode, EditableNumber, Effect, type ElementIncrSearch, type ElementIncrSearchOptions, Endpoints, EntryMode, FormElement, FormGroupElement, FormPartElement, FormatValueForHuman, FormattingOptions, type FuzzySearch, type FuzzySearchOptions, FuzzySearchResult, GridMode, GridResolution, GroupNode, GroupedItemListerElement, type GroupedItemListerElementEventMap, type GroupedSelectDetail, type GroupedSelectEvent, HexChangeDetail, HexChangeEvent, type HighlightOptions, type HighlightTarget, ICON_CARET_RIGHT, ICON_CHECK, ICON_CHEVRON_DOWN, ICON_CLOSE, IDataProvider, type IGroupedSubComponent, type IGroupedSubComponentEventMap, type IconChangedDetail, type IconChangedEvent, type IncrSearch, type IncrSearchChangeCallback, IncrSearchTreeController as IncrSearchMillerController, IncrSearchTreeController, type IncrSearchTreeOptions as IncrSearchMillerOptions, type IncrSearchTreeOptions, type IncrSearchOptions, type IncrSearchResult, type IncrSearchState, ItemsProvider, IxfxHexEditorElement, IxfxIconElement, IxfxRatingElement, IxfxTimelineElement, LabelledRadialInput, LabelledRangeInput, LabelledSliderInput, LaneData, LaneType, LayoutNode, LayoutSnapshot, LedElement, type ListActivateDetail, type ListActivateEvent, type ListElementEventMap, type ListInteractionMode, type ListItemClickDetail, type ListItemClickEvent, type ListSelectDetail, type ListSelectEvent, type ListSelectionMode, type ListTickleDetail, type ListTickleEvent, LoadChildrenCallback, MarkerStyle, index_d_exports as Menu, type TreeActivateDetail as MillerActivateDetail, TreeActivateDetail, type TreeActivateEvent as MillerActivateEvent, TreeActivateEvent, MillerBaseElement, MillerBaseElementEventMap, type TreeCollapseDetail as MillerCollapseDetail, TreeCollapseDetail, type TreeCollapseEvent as MillerCollapseEvent, TreeCollapseEvent, MillerConfig, type TreeExpandDetail as MillerExpandDetail, TreeExpandDetail, type TreeExpandEvent as MillerExpandEvent, TreeExpandEvent, MillerHeaderClickDetail, MillerHeaderClickEvent, MillerHeaderRightClickDetail, MillerHeaderRightClickEvent, type TreeItem as MillerItem, TreeItem, type TreeItemClickDetail as MillerItemClickDetail, TreeItemClickDetail, type TreeItemClickEvent as MillerItemClickEvent, TreeItemClickEvent, MillerItemDblClickDetail, MillerItemDblClickEvent, MillerItemRightClickDetail, MillerItemRightClickEvent, MillerItemState, MillerListElement, type TreeNode as MillerNode, TreeNode, type TreeSelectDetail as MillerSelectDetail, TreeSelectDetail, type TreeSelectEvent as MillerSelectEvent, TreeSelectEvent, MillerSelectionMode, type TreeTickleDetail as MillerTickleDetail, TreeTickleDetail, type TreeTickleEvent as MillerTickleEvent, TreeTickleEvent, MillerTreeController, MillerTreeControllerOptions, NarrowedTextChangeDetail, NarrowedTextChangeEvent, NarrowedTextElement, NarrowedTextItem, NoneSelectEventDetail, Notification, NotificationContent, NotificationManager, NotificationPillElement, NotificationPillElementEventMap, NotificationRenderer, NotificationRendererHooks, NotificationType, NotifierOptions, type OklchValue, Orientation, PanelCloseEvent, PanelElement, PanelElementEventMap, PanelGroupElement, PanelGroupOrientation, PanelInfo, PanelNode, PanelOrientation, PanelToggleDetail, PanelToggleEvent, PanelToggleInteraction, PanelVariant, PillPosition, PillQueueDisplay, PillRendererOptions, PillSafeArea, PillTapDetail, PillTapEvent, PlotDataSeries, PlotDataSeriesOptions, PlotHistogram, PlotHistogramBucketClickDetail, PlotHistogramBucketClickEvent, PlotHistogramElementEventMap, PlotHistogramOrientation, PlotHistogramValueTooltips, PlotMultiAxis, PlotMultiAxisDataPointClickDetail, PlotMultiAxisDataPointClickEvent, PlotMultiAxisElementEventMap, PlotMultiAxisLayout, PlotSingleAxis, PlotSingleAxisElementEventMap, PlotSingleAxisPointerMoveDetail, PlotSingleAxisPointerMoveEvent, PlotXyAxis, PolarPad, PolarPadInputDetail, PolarPadInputEvent, PopupItem, RadialInputChangeDetail, RadialInputChangeEvent, RadialInputElement, RadialInputInputDetail, RadialInputInputEvent, RadioGroup, RadioGroupChangeDetail, RadioGroupChangeEvent, RadioGroupMode, RadioItem, RangeElement, RangeInput, RangeMultiElement, RangeMultiInputDetail, RangeMultiInputEvent, RatingChangeDetail, RatingChangeEvent, RatingElement, RatingElementEventMap, RatingInputEvent, RatingVariant, type Rect, RectangularSelectEventDetail, RendererStyle, ResizeMode, SelectEventDetail, SelectHorizChangeDetail, SelectHorizChangeEvent, SelectHorizElement, SelectHorizEventMap, SelectionMode, SingleAxisAgeStyle, SingleAxisDrawStyle, SingleSelectEventDetail, SliderChangedField, SliderCrossover, SliderHandleKey, SliderInputChangeDetail, SliderInputChangeEvent, SliderInputElement, SliderInputElementEventMap, SliderInputInputDetail, SliderInputInputEvent, SliderLaneData, SliderLaneType, SliderMarkerStyle, SliderOrientation, SliderSingleStyle, SliderValueCFollow, SliderValueDrag, SliderValueMode, SlidingNumberElement, SlidingNumberTrend, SnackbarDismiss, SnackbarElement, SnackbarMode, SnackbarPlacement, SnapChangeDetail, SnapChangeEvent, SnapContainer, SnapInputDetail, SnapInputEvent, SnapLogic, SnapshotNode, SortCompareFn, SplitButton, SplitButtonMode, SplitButtonSelectDetail, SplitButtonSelectEvent, SplitChangeDetail, SplitChangeEvent, SplitCloseDetail, SplitCloseEvent, SplitCollapseDetail, SplitCollapseEvent, SplitExpandDetail, SplitExpandEvent, SplitLayoutElement, SplitLayoutElementEventMap, SplitPanelElement, SplitResizeDetail, SplitResizeEvent, type SubComponentActivateDetail, type SubComponentActivateEvent, type SubComponentFactory, type SubComponentItemClickDetail, type SubComponentItemClickEvent, type SubComponentSelectDetail, type SubComponentSelectEvent, type SubComponentTickleDetail, type SubComponentTickleEvent, SwipeElement, SwipeElementEventMap, SwipeInputDetail, SwipeInputEvent, SwitcherItem, Tab, TabAddOptions, TabController, TabControllerOptions, TabListChangeDetail, TabListChangeEvent, TabListDragMode, TabListElement, TabListItemElement, TabListReorderDetail, TabListReorderEvent, TabPanelElement, TabPanelsElement, TextShimmerElement, TimelineController, TimelineControllerConfig, TimelineDraggingCallbackDetail, TimelineDraggingDetail, TimelineDraggingEvent, TimelineElementEventMap, TimelineEvent, TimelineEventMoveDetail, TimelineEventMoveEvent, TimelineEventResizeDetail, TimelineEventResizeEvent, TimelineSelectionChangeDetail, TimelineSelectionChangeEvent, TimelineTickleChangeDetail, TimelineTickleChangeEvent, TimelineTrack, TimelineTrackReorderDetail, TimelineTrackReorderEvent, TimelineTrackResizeDetail, TimelineTrackResizeEvent, TimelineTrackSelectDetail, TimelineTrackSelectEvent, TimelineTrackTabElement, TitlebarCloseEvent, TitlebarElement, TitlebarElementEventMap, TitlebarOrientation, TitlebarToggleDetail, TitlebarToggleEvent, TitlebarToggleInteraction, TitlebarVariant, ToolbarAlign, ToolbarElement, ToolbarGroupElement, ToolbarLayout, ToolbarOrientation, ToolbarVerticalWriting, TooltipElement, TooltipOrientations, TrackHeightMode, TrackLayout, TransitoryLabelElement, TreeBaseElement, TreeBaseElementEventMap, TreeCheckboxState, TreeComponent, TreeComponentEventMap, TreeConfig, TreeController, TreeControllerOptions, TreeDataModel, TreeDataModelOptions, TreeExclusivity, TreeFilterPredicate, TreeInteractionMode, TreeListAdapterOptions, TreeListElement, TreeSearchHost, TreeSelectionFilter, TwoSplitLayoutElement, UserScale, ValueMode, VerticalListAdapterOptions, VerticalListElement, ViewRange, WhenSmall, XyAgeStyle, XyDrawStyle, XyPad, XyPadEventMap, XyPadInputDetail, XyPadInputEvent, addPanelToStack, applyAgeModification, applyHighlights, applySnapshot, attachTimelineInteractions, buildHighlightTargets, buildModel, clearHighlights, collectDataResult, collectPanelIds, collectStackPaths, computeColour, createAcCompletionProvider, createElementIncrSearch, createEmptyLayout, createEmptyStack, createFuzzySearch, createIncrSearch, createPillRenderer, createSplit, createStack, createTreeListAdapter, createVerticalListAdapter, distribute, extractStack, findNode, findParentOf, findStackOf, getActiveDragPanelId, getIcon, hasIcon, iconBus, init, insertBeside, isDragging, isSplit, isStack, monitorIndeterminate, normalise, normalize, parseColourScaleAttr, parseLayout, pointerOverAnyHost, readBaseColour, registerIcon, removePanelFromStack, resolveCssVars, resolveGrid, resolveTracks, serializeLayout, setActive, svgToDataUri, timelineStyles, toSnapshot, walk, wrapRoot };
6594
7591
  //# sourceMappingURL=index.d.ts.map