@ixfx/components 0.7.3 → 0.7.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/index.d.ts +1355 -526
- package/bundle/index.d.ts.map +1 -1
- package/bundle/index.js +3277 -384
- package/bundle/index.js.map +1 -1
- package/dist/ac-text.d.ts +1 -1
- package/dist/ac-text.js +1 -1
- package/dist/{ac-token-TCLAZeVg.d.ts → ac-token--_vCHXWw.d.ts} +2 -2
- package/dist/{ac-token-TCLAZeVg.d.ts.map → ac-token--_vCHXWw.d.ts.map} +1 -1
- package/dist/ac-token.d.ts +1 -1
- package/dist/ac-token.js +2 -2
- package/dist/button.d.ts +1 -1
- package/dist/button.d.ts.map +1 -1
- package/dist/colour-picker.d.ts +1 -1
- package/dist/crumbs.d.ts +6 -2
- package/dist/crumbs.d.ts.map +1 -1
- package/dist/crumbs.js +13 -3
- package/dist/crumbs.js.map +1 -1
- package/dist/{data-grid-Db4QpnII.d.ts → data-grid-CtJ35v8L.d.ts} +59 -2
- package/dist/data-grid-CtJ35v8L.d.ts.map +1 -0
- package/dist/data-grid.d.ts +1 -1
- package/dist/data-grid.js +268 -14
- package/dist/data-grid.js.map +1 -1
- package/dist/detail-list-BS5dRDda.d.ts +175 -0
- package/dist/detail-list-BS5dRDda.d.ts.map +1 -0
- package/dist/detail-list.d.ts +3 -0
- package/dist/detail-list.js +1031 -0
- package/dist/detail-list.js.map +1 -0
- package/dist/grid-list-D-GbghSH.d.ts +321 -0
- package/dist/grid-list-D-GbghSH.d.ts.map +1 -0
- package/dist/grid-list.d.ts +3 -0
- package/dist/grid-list.js +994 -0
- package/dist/grid-list.js.map +1 -0
- package/dist/{grouped-item-lister-BWlC9S4e.d.ts → grouped-item-lister-fdZHVxFM.d.ts} +3 -3
- package/dist/{grouped-item-lister-BWlC9S4e.d.ts.map → grouped-item-lister-fdZHVxFM.d.ts.map} +1 -1
- package/dist/grouped-item-lister.d.ts +1 -1
- package/dist/{icon-DR_3rSyZ.d.ts → icon-CDGprSdE.d.ts} +2 -2
- package/dist/icon-CDGprSdE.d.ts.map +1 -0
- package/dist/icons.d.ts +2 -2
- package/dist/incr-search-DpbSJtgj.js +962 -0
- package/dist/incr-search-DpbSJtgj.js.map +1 -0
- package/dist/incr-search.d.ts +2 -2
- package/dist/incr-search.js +2 -3
- package/dist/{index-C59-JEPl.d.ts → index-9AhaHIT2.d.ts} +3 -3
- package/dist/{index-C59-JEPl.d.ts.map → index-9AhaHIT2.d.ts.map} +1 -1
- package/dist/index-CBS4z1v-.d.ts +365 -0
- package/dist/index-CBS4z1v-.d.ts.map +1 -0
- package/dist/{index-DsjpDksO.d.ts → index-CS9yM8L-.d.ts} +2 -2
- package/dist/{index-DsjpDksO.d.ts.map → index-CS9yM8L-.d.ts.map} +1 -1
- package/dist/{index-BUB5SICW.d.ts → index-CoqtMSd9.d.ts} +2 -2
- package/dist/{index-BUB5SICW.d.ts.map → index-CoqtMSd9.d.ts.map} +1 -1
- package/dist/{index-CJ5fshD3.d.ts → index-UvnoZUAo.d.ts} +2 -2
- package/dist/{index-CJ5fshD3.d.ts.map → index-UvnoZUAo.d.ts.map} +1 -1
- package/dist/{index-BOUaDIW-.d.ts → index-tq6f8007.d.ts} +2 -2
- package/dist/{index-BOUaDIW-.d.ts.map → index-tq6f8007.d.ts.map} +1 -1
- package/dist/index.d.ts +188 -243
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +376 -1004
- package/dist/index.js.map +1 -1
- package/dist/interaction-Cr13azbM.js +3 -0
- package/dist/{labelled-input-base-Dp_9KP0G.d.ts → labelled-input-base-DiTme1JO.d.ts} +2 -2
- package/dist/{labelled-input-base-Dp_9KP0G.d.ts.map → labelled-input-base-DiTme1JO.d.ts.map} +1 -1
- package/dist/labelled-radial-input.d.ts +2 -2
- package/dist/labelled-radial-input.d.ts.map +1 -1
- package/dist/labelled-range-input.d.ts +1 -1
- package/dist/labelled-slider-input.d.ts +1 -1
- package/dist/list-item-animation-DuiwgN3l.js +112 -0
- package/dist/list-item-animation-DuiwgN3l.js.map +1 -0
- package/dist/list-selection-controller-DTFI40li.js +264 -0
- package/dist/list-selection-controller-DTFI40li.js.map +1 -0
- package/dist/{list-selection-types-DSuRNWpx.d.ts → list-selection-types-B5ioL-dG.d.ts} +6 -1
- package/dist/list-selection-types-B5ioL-dG.d.ts.map +1 -0
- package/dist/{menu-DMzjkVnK.js → menu-Bg90Qr0B.js} +3 -3
- package/dist/{menu-DMzjkVnK.js.map → menu-Bg90Qr0B.js.map} +1 -1
- package/dist/{menu-item-D2S4i8u1.js → menu-item-Bx-Fs7jq.js} +3 -3
- package/dist/{menu-item-D2S4i8u1.js.map → menu-item-Bx-Fs7jq.js.map} +1 -1
- package/dist/{menu-item-ZmkXNjek.d.ts → menu-item-CZi9vy5O.d.ts} +2 -2
- package/dist/{menu-item-ZmkXNjek.d.ts.map → menu-item-CZi9vy5O.d.ts.map} +1 -1
- package/dist/menu.d.ts +2 -2
- package/dist/menu.js +2 -2
- package/dist/miller.d.ts +82 -4
- package/dist/miller.d.ts.map +1 -1
- package/dist/miller.js +329 -70
- package/dist/miller.js.map +1 -1
- package/dist/narrowed-text.js +3 -4
- package/dist/narrowed-text.js.map +1 -1
- package/dist/panel.d.ts +1 -1
- package/dist/plots.js +1 -1
- package/dist/select-horiz.js +2 -2
- package/dist/{split-layout-C5SYbDrq.d.ts → split-layout-JK3xWVX2.d.ts} +2 -2
- package/dist/{split-layout-C5SYbDrq.d.ts.map → split-layout-JK3xWVX2.d.ts.map} +1 -1
- package/dist/split-layout.d.ts +1 -1
- package/dist/{tab-list-DbMIL520.d.ts → tab-list-CGyPt07Z.d.ts} +2 -2
- package/dist/{tab-list-DbMIL520.d.ts.map → tab-list-CGyPt07Z.d.ts.map} +1 -1
- package/dist/tabs.d.ts +1 -1
- package/dist/{tickled-controller-Ds1DMyG7.d.ts → tickled-controller-Bn3YdQsM.d.ts} +12 -1
- package/dist/{tickled-controller-Ds1DMyG7.d.ts.map → tickled-controller-Bn3YdQsM.d.ts.map} +1 -1
- package/dist/{tickled-controller-h9GmJ_bU.js → tickled-controller-C66DgJHl.js} +16 -1
- package/dist/tickled-controller-C66DgJHl.js.map +1 -0
- package/dist/{titlebar-B23MrIbI.d.ts → titlebar-Bj5pfdw_.d.ts} +2 -2
- package/dist/{titlebar-B23MrIbI.d.ts.map → titlebar-Bj5pfdw_.d.ts.map} +1 -1
- package/dist/titlebar.d.ts +1 -1
- package/dist/{tree-Ch4W8qXQ.js → tree-DAii2A1g.js} +190 -29
- package/dist/tree-DAii2A1g.js.map +1 -0
- package/dist/{tree-component-BvV4muxx.d.ts → tree-component-F6qZ0Gdv.d.ts} +9 -1
- package/dist/{tree-component-BvV4muxx.d.ts.map → tree-component-F6qZ0Gdv.d.ts.map} +1 -1
- package/dist/tree.d.ts +28 -4
- package/dist/tree.d.ts.map +1 -1
- package/dist/tree.js +1 -1
- package/dist/vertical-list-DwtCPy1b.d.ts +143 -0
- package/dist/vertical-list-DwtCPy1b.d.ts.map +1 -0
- package/dist/vertical-list.d.ts +3 -121
- package/dist/vertical-list.js +642 -1
- package/dist/vertical-list.js.map +1 -0
- package/dist/{xy-axis-DWizs0bt.js → xy-axis-VrX8dmvS.js} +2 -2
- package/dist/{xy-axis-DWizs0bt.js.map → xy-axis-VrX8dmvS.js.map} +1 -1
- package/docs-user/README.md +1 -0
- package/docs-user/data-grid.md +70 -2
- package/docs-user/detail-list.md +39 -1
- package/docs-user/grid-list.md +298 -0
- package/docs-user/incr-search.md +12 -2
- package/docs-user/index.json +7 -2
- package/docs-user/llms.txt +1 -0
- package/docs-user/tree.md +35 -1
- package/docs-user/vertical-list.md +58 -2
- package/llms.txt +1 -0
- package/package.json +17 -2
- package/dist/data-grid-Db4QpnII.d.ts.map +0 -1
- package/dist/element-search-Y8SRfPGM.js +0 -185
- package/dist/element-search-Y8SRfPGM.js.map +0 -1
- package/dist/icon-DR_3rSyZ.d.ts.map +0 -1
- package/dist/incr-search-vCzuao-2.js +0 -137
- package/dist/incr-search-vCzuao-2.js.map +0 -1
- package/dist/index-Cu5i8zZY.d.ts +0 -160
- package/dist/index-Cu5i8zZY.d.ts.map +0 -1
- package/dist/interaction-D5XdKzbR.js +0 -2
- package/dist/list-selection-types-DSuRNWpx.d.ts.map +0 -1
- package/dist/tickled-controller-h9GmJ_bU.js.map +0 -1
- package/dist/tree-Ch4W8qXQ.js.map +0 -1
- package/dist/vertical-list-B4w_ksJk.js +0 -814
- package/dist/vertical-list-B4w_ksJk.js.map +0 -1
- package/dist/vertical-list.d.ts.map +0 -1
package/bundle/index.d.ts
CHANGED
|
@@ -2223,6 +2223,14 @@ interface TreeComponent extends EventTarget {
|
|
|
2223
2223
|
* Returns `true` if a matching node was found.
|
|
2224
2224
|
*/
|
|
2225
2225
|
navigateToNode: (predicate: (node: TreeNode) => boolean) => boolean;
|
|
2226
|
+
/**
|
|
2227
|
+
* Expand ancestors of the node with `key` and move the keyboard cursor to it,
|
|
2228
|
+
* scrolling it into view — **without** changing the selection. Returns `true`
|
|
2229
|
+
* if the node was found. Used by incremental-search "navigate" mode.
|
|
2230
|
+
*/
|
|
2231
|
+
revealKey: (key: string) => boolean;
|
|
2232
|
+
/** Replace the selection with `nodes` (subject to `selectionFilter`). Used by incremental-search "select" mode. */
|
|
2233
|
+
selectMany: (nodes: Iterable<TreeNode>) => void;
|
|
2226
2234
|
/**
|
|
2227
2235
|
* Returns all nodes currently visible in the rendered output, in render order,
|
|
2228
2236
|
* with their depth (0-based, root's children are depth 0).
|
|
@@ -2411,6 +2419,10 @@ declare class CrumbNavigationElement extends LitElement implements TreeComponent
|
|
|
2411
2419
|
navigateTo(keys: readonly string[]): boolean;
|
|
2412
2420
|
/** Navigate to the first node matching the predicate. Returns false if not found. */
|
|
2413
2421
|
navigateToNode(predicate: (node: TreeNode) => boolean): boolean;
|
|
2422
|
+
/** `TreeComponent` parity — a crumb path always follows the selection, so this just navigates to `key`. */
|
|
2423
|
+
revealKey(key: string): boolean;
|
|
2424
|
+
/** `TreeComponent` parity — a crumb path is a single selection, so only the last node is kept. */
|
|
2425
|
+
selectMany(nodes: Iterable<TreeNode>): void;
|
|
2414
2426
|
render(): TemplateResult<1>;
|
|
2415
2427
|
static styles: CSSResult[];
|
|
2416
2428
|
}
|
|
@@ -2590,6 +2602,366 @@ type BuiltInFormatterOptions = {
|
|
|
2590
2602
|
type DataGridGetRowKey<R> = (row: R, index: number) => string;
|
|
2591
2603
|
type DataGridGroupBy<R> = string | ((row: R) => string);
|
|
2592
2604
|
type DataGridGroupLabel = (groupKey: string, rows: readonly unknown[]) => string;
|
|
2605
|
+
/** Whether the data-grid renders its built-in header column/group menu. */
|
|
2606
|
+
type DataGridColumnMenu = `auto` | `none`;
|
|
2607
|
+
//#endregion
|
|
2608
|
+
//#region src/incr-search/types.d.ts
|
|
2609
|
+
type IncrSearchResult<T> = {
|
|
2610
|
+
readonly item: T;
|
|
2611
|
+
readonly positions: ReadonlySet<number>;
|
|
2612
|
+
readonly score: number;
|
|
2613
|
+
};
|
|
2614
|
+
type IncrSearchState<T> = {
|
|
2615
|
+
readonly query: string;
|
|
2616
|
+
readonly results: ReadonlyArray<IncrSearchResult<T>>;
|
|
2617
|
+
readonly positionsByItem: ReadonlyMap<T, ReadonlySet<number>>;
|
|
2618
|
+
};
|
|
2619
|
+
type IncrSearchChangeCallback<T> = (state: IncrSearchState<T>) => void;
|
|
2620
|
+
type IncrSearchOptions<T> = {
|
|
2621
|
+
readonly items?: readonly T[];
|
|
2622
|
+
readonly selector?: (item: T) => string;
|
|
2623
|
+
readonly fzf?: Partial<FzfOptions<T>>;
|
|
2624
|
+
readonly onChange?: IncrSearchChangeCallback<T>;
|
|
2625
|
+
};
|
|
2626
|
+
type IncrSearch<T> = {
|
|
2627
|
+
readonly setItems: (items: readonly T[], signal?: AbortSignal) => Promise<void>;
|
|
2628
|
+
readonly setQuery: (query: string, signal?: AbortSignal) => Promise<IncrSearchState<T>>;
|
|
2629
|
+
readonly clearQuery: () => Promise<void>;
|
|
2630
|
+
readonly state: IncrSearchState<T>;
|
|
2631
|
+
readonly onChange: (cb: IncrSearchChangeCallback<T>) => () => void;
|
|
2632
|
+
readonly dispose: () => void;
|
|
2633
|
+
};
|
|
2634
|
+
type FuzzySearchOptions<T> = {
|
|
2635
|
+
readonly selector?: (item: T) => string;
|
|
2636
|
+
readonly fzf?: Partial<FzfOptions<T>>;
|
|
2637
|
+
};
|
|
2638
|
+
type FuzzySearch<T> = {
|
|
2639
|
+
readonly find: (query: string) => ReadonlyArray<IncrSearchResult<T>>;
|
|
2640
|
+
readonly items: readonly T[];
|
|
2641
|
+
};
|
|
2642
|
+
type HighlightTarget = {
|
|
2643
|
+
readonly element: Element;
|
|
2644
|
+
readonly text?: string;
|
|
2645
|
+
readonly positions: ReadonlySet<number>;
|
|
2646
|
+
};
|
|
2647
|
+
type HighlightOptions = {
|
|
2648
|
+
readonly key?: string;
|
|
2649
|
+
};
|
|
2650
|
+
type ElementIncrSearchOptions = {
|
|
2651
|
+
readonly container: Element;
|
|
2652
|
+
readonly itemSelector: string;
|
|
2653
|
+
readonly getLabel?: (el: Element) => string;
|
|
2654
|
+
readonly getKey?: (el: Element) => string;
|
|
2655
|
+
readonly labelSelector?: string;
|
|
2656
|
+
readonly highlightKey?: string;
|
|
2657
|
+
readonly fzf?: Partial<FzfOptions<{
|
|
2658
|
+
key: string;
|
|
2659
|
+
label: string;
|
|
2660
|
+
}>>;
|
|
2661
|
+
readonly onChange?: IncrSearchChangeCallback<{
|
|
2662
|
+
key: string;
|
|
2663
|
+
label: string;
|
|
2664
|
+
}>;
|
|
2665
|
+
};
|
|
2666
|
+
//#endregion
|
|
2667
|
+
//#region src/incr-search/ac-adapter.d.ts
|
|
2668
|
+
/**
|
|
2669
|
+
* Creates an ixfx-ac-text-compatible `completionProvider` function from a
|
|
2670
|
+
* static item list. Uses synchronous fuzzy search wrapped in a Promise so it
|
|
2671
|
+
* fits the async provider signature.
|
|
2672
|
+
*
|
|
2673
|
+
* Each returned item has `positions` populated with matched character indices,
|
|
2674
|
+
* which `ixfx-ac-text` uses to render CSS Custom Highlights on the label.
|
|
2675
|
+
*
|
|
2676
|
+
* Empty query returns all items in original order (no positions).
|
|
2677
|
+
* A cancelled signal causes the returned promise to reject with an AbortError.
|
|
2678
|
+
*/
|
|
2679
|
+
declare function createAcCompletionProvider<T extends {
|
|
2680
|
+
label: string;
|
|
2681
|
+
}>(items: readonly T[], options?: Pick<FuzzySearchOptions<T>, `selector`>): (query: string, signal: AbortSignal) => Promise<Array<T & {
|
|
2682
|
+
positions: ReadonlySet<number>;
|
|
2683
|
+
}>>;
|
|
2684
|
+
//#endregion
|
|
2685
|
+
//#region src/incr-search/controller-tree.d.ts
|
|
2686
|
+
type IncrSearchTreeOptions = {
|
|
2687
|
+
selector: (item: {
|
|
2688
|
+
node: TreeNode;
|
|
2689
|
+
depth: number;
|
|
2690
|
+
}) => string;
|
|
2691
|
+
/**
|
|
2692
|
+
* CSS selector for the label elements inside the shadow root.
|
|
2693
|
+
* Defaults to `.tree-label` (suitable for ixfx-tree-list).
|
|
2694
|
+
* Use `.label` for ixfx-miller-list.
|
|
2695
|
+
*/
|
|
2696
|
+
labelSelector?: string;
|
|
2697
|
+
highlightKey?: string;
|
|
2698
|
+
input?: HTMLInputElement;
|
|
2699
|
+
fzf?: Partial<FzfOptions<{
|
|
2700
|
+
node: TreeNode;
|
|
2701
|
+
depth: number;
|
|
2702
|
+
}>>;
|
|
2703
|
+
};
|
|
2704
|
+
/**
|
|
2705
|
+
* External-input filter-search controller for `TreeSearchHost` components.
|
|
2706
|
+
*
|
|
2707
|
+
* @deprecated `ixfx-tree-list` / `ixfx-miller-list` now have a built-in
|
|
2708
|
+
* incremental-search popover with navigate / select / filter modes — invoke
|
|
2709
|
+
* `el.registry.invoke('list.search.filter')` (see `docs/infra-incremental.md`)
|
|
2710
|
+
* instead of wiring an external `<input>`. This class remains for existing
|
|
2711
|
+
* consumers and covers filter mode only.
|
|
2712
|
+
*
|
|
2713
|
+
* @example Using with ixfx-tree-list:
|
|
2714
|
+
* ```typescript
|
|
2715
|
+
* const ctrl = new IncrSearchTreeController(myTreeList, {
|
|
2716
|
+
* selector: item => item.node.item.label,
|
|
2717
|
+
* });
|
|
2718
|
+
* ctrl.connect();
|
|
2719
|
+
* ```
|
|
2720
|
+
*
|
|
2721
|
+
* @example Using with ixfx-miller-list (different label selector):
|
|
2722
|
+
* ```typescript
|
|
2723
|
+
* const ctrl = new IncrSearchTreeController(myMillerList, {
|
|
2724
|
+
* selector: item => item.node.item.label,
|
|
2725
|
+
* labelSelector: '.label',
|
|
2726
|
+
* });
|
|
2727
|
+
* ctrl.connect();
|
|
2728
|
+
* ```
|
|
2729
|
+
*/
|
|
2730
|
+
declare class IncrSearchTreeController {
|
|
2731
|
+
#private;
|
|
2732
|
+
constructor(el: TreeSearchHost, opts: IncrSearchTreeOptions);
|
|
2733
|
+
connect(): void;
|
|
2734
|
+
disconnect(): void;
|
|
2735
|
+
setQuery(query: string): Promise<void>;
|
|
2736
|
+
clearQuery(): Promise<void>;
|
|
2737
|
+
}
|
|
2738
|
+
//#endregion
|
|
2739
|
+
//#region src/incr-search/list-search-controller.d.ts
|
|
2740
|
+
/**
|
|
2741
|
+
* The three things incremental search can do to a list / tree component. See
|
|
2742
|
+
* `docs/infra-incremental.md`.
|
|
2743
|
+
*
|
|
2744
|
+
* - `navigate` — move the cursor to the best match; ↑/↓ cycle between matches;
|
|
2745
|
+
* Enter activates the current match and closes.
|
|
2746
|
+
* - `select` — (re)select every item whose label matches, live as you type.
|
|
2747
|
+
* - `filter` — hide items that don't match; restored when the popover closes.
|
|
2748
|
+
*/
|
|
2749
|
+
type ListSearchMode = `navigate` | `select` | `filter`;
|
|
2750
|
+
/** Canonical order — used for the switch-row and to normalise a requested set. */
|
|
2751
|
+
declare const LIST_SEARCH_MODES: readonly ListSearchMode[];
|
|
2752
|
+
type SearchItem = {
|
|
2753
|
+
readonly key: string;
|
|
2754
|
+
readonly label: string;
|
|
2755
|
+
};
|
|
2756
|
+
/**
|
|
2757
|
+
* Everything {@link ListSearchController} needs to drive a specific host. One is
|
|
2758
|
+
* supplied per component; `createElementListSearchAdapter` and
|
|
2759
|
+
* `createTreeListSearchAdapter` cover the common shapes.
|
|
2760
|
+
*/
|
|
2761
|
+
interface ListSearchAdapter<TItem> {
|
|
2762
|
+
/** All searchable items, in display order. */
|
|
2763
|
+
getItems: () => readonly TItem[];
|
|
2764
|
+
/** Text matched against the query. */
|
|
2765
|
+
getLabel: (item: TItem) => string;
|
|
2766
|
+
/** Stable identity for an item. */
|
|
2767
|
+
getKey: (item: TItem) => string;
|
|
2768
|
+
/** `navigate`: move the cursor to `item` and reveal it. `undefined` = no-op. */
|
|
2769
|
+
focusItem: (item: TItem | undefined) => void;
|
|
2770
|
+
/** `navigate` + Enter: activate `item` (falls back to `focusItem`). */
|
|
2771
|
+
activateItem?: (item: TItem) => void;
|
|
2772
|
+
/** `select` / "Select matches": replace the selection with `items`. */
|
|
2773
|
+
selectItems: (items: readonly TItem[]) => void;
|
|
2774
|
+
/** `filter`: hide items whose key is not in `matchedKeys`; `undefined` clears the filter. */
|
|
2775
|
+
applyFilter: (matchedKeys: ReadonlySet<string> | undefined) => void;
|
|
2776
|
+
/** Where matched-character highlights are painted (usually the shadow root). */
|
|
2777
|
+
highlightRoot?: () => ShadowRoot | Element | null | undefined;
|
|
2778
|
+
/** CSS selector for the label elements inside {@link highlightRoot}. */
|
|
2779
|
+
highlightSelector?: string;
|
|
2780
|
+
/** Given a label element, the key of the item it belongs to. */
|
|
2781
|
+
highlightKeyOf?: (labelEl: Element) => string | undefined;
|
|
2782
|
+
/** Text of a label element as fzf saw it (defaults to `el.textContent`). */
|
|
2783
|
+
highlightText?: (labelEl: Element) => string;
|
|
2784
|
+
/** `CSS.highlights` registry key. Defaults to `incr-search-highlight`. */
|
|
2785
|
+
highlightKey?: string;
|
|
2786
|
+
/** Element whose child-list mutations should trigger a `refresh()`. */
|
|
2787
|
+
container?: () => Element | null | undefined;
|
|
2788
|
+
}
|
|
2789
|
+
interface ListSearchControllerOptions<TItem> {
|
|
2790
|
+
adapter: ListSearchAdapter<TItem>;
|
|
2791
|
+
/**
|
|
2792
|
+
* Modes this instance offers, as entry points and as in-popover switch
|
|
2793
|
+
* targets. The controller intersects this with {@link LIST_SEARCH_MODES}, so
|
|
2794
|
+
* pass the intersection of the component's own capability and any
|
|
2795
|
+
* consumer-set `search-modes`. Empty ⇒ search disabled. Default: all three.
|
|
2796
|
+
*/
|
|
2797
|
+
modes?: readonly ListSearchMode[];
|
|
2798
|
+
fzf?: Partial<FzfOptions<SearchItem>>;
|
|
2799
|
+
placeholder?: string;
|
|
2800
|
+
}
|
|
2801
|
+
type ListSearchHost = ReactiveControllerHost & HTMLElement & {
|
|
2802
|
+
renderRoot?: DocumentFragment | HTMLElement;
|
|
2803
|
+
};
|
|
2804
|
+
/**
|
|
2805
|
+
* Shared brain for the three-mode incremental-search popover. A Lit
|
|
2806
|
+
* `ReactiveController`: the host adds `listSearchStyles` to `static styles`,
|
|
2807
|
+
* drops `${controller.renderField()}` into `render()`, and registers the
|
|
2808
|
+
* commands with {@link registerListSearchCommands}. See `docs/infra-incremental.md`.
|
|
2809
|
+
*/
|
|
2810
|
+
declare class ListSearchController<TItem> implements ReactiveController {
|
|
2811
|
+
#private;
|
|
2812
|
+
constructor(host: ListSearchHost, options: ListSearchControllerOptions<TItem>);
|
|
2813
|
+
/** `false` when no modes are available — the host should register no commands and render no field. */
|
|
2814
|
+
get enabled(): boolean;
|
|
2815
|
+
/** The modes actually offered (component capability ∩ consumer request). */
|
|
2816
|
+
get registeredModes(): readonly ListSearchMode[];
|
|
2817
|
+
/**
|
|
2818
|
+
* Replace the offered mode set (normalised to {@link LIST_SEARCH_MODES}
|
|
2819
|
+
* order). If the current mode is dropped the popover closes and falls back to
|
|
2820
|
+
* the first remaining mode. Callers should re-run
|
|
2821
|
+
* {@link registerListSearchCommands} afterwards.
|
|
2822
|
+
*/
|
|
2823
|
+
setModes(modes: readonly ListSearchMode[]): void;
|
|
2824
|
+
get isOpen(): boolean;
|
|
2825
|
+
get mode(): ListSearchMode;
|
|
2826
|
+
get query(): string;
|
|
2827
|
+
get matchCount(): number;
|
|
2828
|
+
get matchIndex(): number;
|
|
2829
|
+
hostConnected(): void;
|
|
2830
|
+
hostDisconnected(): void;
|
|
2831
|
+
/** Open the popover in `mode` (clamped to the available set). */
|
|
2832
|
+
open(mode: ListSearchMode): void;
|
|
2833
|
+
/** Close the popover, restoring any live filter. Selection / cursor stay put. */
|
|
2834
|
+
close(): void;
|
|
2835
|
+
setQuery(query: string): void;
|
|
2836
|
+
/** Re-interpret the current query under a new mode (undoing the old mode's effect). */
|
|
2837
|
+
switchMode(next: ListSearchMode): void;
|
|
2838
|
+
/** One-shot: turn the current match set into the selection, staying in the current mode. */
|
|
2839
|
+
selectMatches(): void;
|
|
2840
|
+
nextMatch(): void;
|
|
2841
|
+
prevMatch(): void;
|
|
2842
|
+
/** Enter: in `navigate` activate the current match; then close. */
|
|
2843
|
+
commit(): void;
|
|
2844
|
+
/** Rebuild the searchable item set from the adapter. Called on open and on container mutation. */
|
|
2845
|
+
refresh(): void;
|
|
2846
|
+
/** Popover markup. Pair with `listSearchStyles` in the host's `static styles`. */
|
|
2847
|
+
renderField(): TemplateResult | typeof nothing;
|
|
2848
|
+
}
|
|
2849
|
+
//#endregion
|
|
2850
|
+
//#region src/incr-search/element-list-search-adapter.d.ts
|
|
2851
|
+
/**
|
|
2852
|
+
* The slice of a list component the element adapter drives. `ixfx-grid-list`,
|
|
2853
|
+
* `ixfx-vertical-list` and `ixfx-detail-list` all satisfy it.
|
|
2854
|
+
*/
|
|
2855
|
+
interface ElementListSearchHost extends HTMLElement {
|
|
2856
|
+
focusKey: (key: string) => void;
|
|
2857
|
+
selectKeys: (keys: Iterable<string>) => void;
|
|
2858
|
+
}
|
|
2859
|
+
interface ElementListSearchAdapterOptions {
|
|
2860
|
+
/** Selector for item elements, relative to the host. Default `:scope > *`. */
|
|
2861
|
+
itemSelector?: string;
|
|
2862
|
+
getLabel?: (el: Element) => string;
|
|
2863
|
+
getKey?: (el: Element) => string;
|
|
2864
|
+
/** `CSS.highlights` registry key for matched-character highlights. */
|
|
2865
|
+
highlightKey?: string;
|
|
2866
|
+
}
|
|
2867
|
+
/**
|
|
2868
|
+
* A {@link ListSearchAdapter} over the light-DOM item elements of a list
|
|
2869
|
+
* component. Filter mode toggles `hidden` (only on elements it hid itself, so a
|
|
2870
|
+
* consumer's own `hidden` items are left alone). Highlights are painted on the
|
|
2871
|
+
* item elements in the light DOM — the consuming page styles
|
|
2872
|
+
* `::highlight(<highlightKey>)`. See `docs/infra-incremental.md`.
|
|
2873
|
+
*/
|
|
2874
|
+
declare function createElementListSearchAdapter(host: ElementListSearchHost, options?: ElementListSearchAdapterOptions): ListSearchAdapter<Element>;
|
|
2875
|
+
//#endregion
|
|
2876
|
+
//#region src/incr-search/element-search.d.ts
|
|
2877
|
+
type ElementItem = {
|
|
2878
|
+
readonly key: string;
|
|
2879
|
+
readonly label: string;
|
|
2880
|
+
};
|
|
2881
|
+
type ElementIncrSearch = {
|
|
2882
|
+
readonly setQuery: (query: string, signal?: AbortSignal) => Promise<void>;
|
|
2883
|
+
readonly clearQuery: () => Promise<void>;
|
|
2884
|
+
readonly refresh: () => void;
|
|
2885
|
+
readonly onChange: (cb: IncrSearchChangeCallback<ElementItem>) => () => void;
|
|
2886
|
+
readonly dispose: () => void;
|
|
2887
|
+
};
|
|
2888
|
+
/**
|
|
2889
|
+
* DOM filter-search over a container's item elements (sets `hidden` on
|
|
2890
|
+
* non-matches, applies highlights).
|
|
2891
|
+
*
|
|
2892
|
+
* @deprecated The list components (`ixfx-grid-list`, `ixfx-vertical-list`,
|
|
2893
|
+
* `ixfx-detail-list`, …) now have a built-in navigate / select / filter search
|
|
2894
|
+
* popover — see `docs/infra-incremental.md` and `ListSearchController`. Kept for
|
|
2895
|
+
* standalone / non-component use.
|
|
2896
|
+
*/
|
|
2897
|
+
declare function createElementIncrSearch(opts: ElementIncrSearchOptions): ElementIncrSearch;
|
|
2898
|
+
//#endregion
|
|
2899
|
+
//#region src/incr-search/fuzzy.d.ts
|
|
2900
|
+
declare function createFuzzySearch<T>(items: readonly T[], options?: FuzzySearchOptions<T>): FuzzySearch<T>;
|
|
2901
|
+
//#endregion
|
|
2902
|
+
//#region src/incr-search/highlight.d.ts
|
|
2903
|
+
declare function applyHighlights(targets: readonly HighlightTarget[], options?: HighlightOptions): void;
|
|
2904
|
+
declare function clearHighlights(options?: HighlightOptions): void;
|
|
2905
|
+
declare function buildHighlightTargets<T>(root: ShadowRoot | Element, itemSelector: string, positionsByItem: ReadonlyMap<T, ReadonlySet<number>>, getItem: (el: Element) => T | undefined, getText: (el: Element) => string): HighlightTarget[];
|
|
2906
|
+
//#endregion
|
|
2907
|
+
//#region src/incr-search/incr-search.d.ts
|
|
2908
|
+
declare function createIncrSearch<T>(options?: IncrSearchOptions<T>): IncrSearch<T>;
|
|
2909
|
+
//#endregion
|
|
2910
|
+
//#region src/incr-search/list-search-commands.d.ts
|
|
2911
|
+
/** Command ids registered by {@link registerListSearchCommands}, keyed by mode. */
|
|
2912
|
+
declare const LIST_SEARCH_COMMAND_IDS: Readonly<Record<ListSearchMode, string>>;
|
|
2913
|
+
interface RegisterListSearchCommandsOptions {
|
|
2914
|
+
/**
|
|
2915
|
+
* Prefix for command ids, e.g. `grid-list` ⇒ `grid-list.search.filter`. When
|
|
2916
|
+
* omitted the shared ids from {@link LIST_SEARCH_COMMAND_IDS} are used so a
|
|
2917
|
+
* single dispatch (`ixfx-grouped-item-lister.dispatch('list.search.filter')`)
|
|
2918
|
+
* fans out to every list.
|
|
2919
|
+
*/
|
|
2920
|
+
idPrefix?: string;
|
|
2921
|
+
}
|
|
2922
|
+
/**
|
|
2923
|
+
* Register one command per mode the controller offers (see
|
|
2924
|
+
* `controller.registeredModes`). Each command opens the search popover in its
|
|
2925
|
+
* mode. Returns a function that unregisters them again — call it from
|
|
2926
|
+
* `disconnectedCallback`. See `docs/infra-incremental.md`.
|
|
2927
|
+
*/
|
|
2928
|
+
declare function registerListSearchCommands<T>(registry: CommandRegistry<unknown>, controller: ListSearchController<T>, options?: RegisterListSearchCommandsOptions): () => void;
|
|
2929
|
+
//#endregion
|
|
2930
|
+
//#region src/incr-search/list-search-styles.d.ts
|
|
2931
|
+
/**
|
|
2932
|
+
* Styles for the incremental-search popover rendered by
|
|
2933
|
+
* `ListSearchController.renderField()`. Add to a component's `static styles`;
|
|
2934
|
+
* the class names are the contract between this fragment and `renderField()`.
|
|
2935
|
+
*
|
|
2936
|
+
* The host must give the popover a positioned ancestor (a wrapper with
|
|
2937
|
+
* `position: relative`, or `:host { position: relative }`). Tunables:
|
|
2938
|
+
* `--list-search-inset` (default `8px`) offsets it from the top-right corner.
|
|
2939
|
+
*
|
|
2940
|
+
* See `docs/infra-incremental.md`.
|
|
2941
|
+
*/
|
|
2942
|
+
declare const listSearchStyles: CSSResult;
|
|
2943
|
+
//#endregion
|
|
2944
|
+
//#region src/incr-search/tree-list-search-adapter.d.ts
|
|
2945
|
+
type TreeSearchItem = {
|
|
2946
|
+
node: TreeNode;
|
|
2947
|
+
depth: number;
|
|
2948
|
+
};
|
|
2949
|
+
interface TreeListSearchAdapterOptions {
|
|
2950
|
+
/** Label-element selector inside the shadow root. Default `.tree-label`; `ixfx-miller-list` uses `.label`. */
|
|
2951
|
+
labelSelector?: string;
|
|
2952
|
+
/** `CSS.highlights` registry key for matched-character highlights. */
|
|
2953
|
+
highlightKey?: string;
|
|
2954
|
+
getLabel?: (item: TreeSearchItem) => string;
|
|
2955
|
+
}
|
|
2956
|
+
/**
|
|
2957
|
+
* A {@link ListSearchAdapter} over any `TreeSearchHost` (`ixfx-tree-list`,
|
|
2958
|
+
* `ixfx-miller-list`, `ixfx-crumb-navigation`). Navigate reveals the match
|
|
2959
|
+
* (expands its ancestors, moves the cursor); select drives `selectMany`; filter
|
|
2960
|
+
* sets `filterPredicate`. The item set is the whole tree — `getNodes()` returns
|
|
2961
|
+
* every node regardless of expansion or an active filter — so refining a query
|
|
2962
|
+
* can always re-surface a node. See `docs/infra-incremental.md`.
|
|
2963
|
+
*/
|
|
2964
|
+
declare function createTreeListSearchAdapter(host: TreeSearchHost, options?: TreeListSearchAdapterOptions): ListSearchAdapter<TreeSearchItem>;
|
|
2593
2965
|
//#endregion
|
|
2594
2966
|
//#region src/menu/menu-bar.d.ts
|
|
2595
2967
|
declare class MenuBar extends LitElement {
|
|
@@ -2822,6 +3194,7 @@ interface DataGridElementEventMap {
|
|
|
2822
3194
|
'datagrid-group-change': DataGridGroupChangeEvent;
|
|
2823
3195
|
}
|
|
2824
3196
|
declare class DataGridElement extends LitElement {
|
|
3197
|
+
#private;
|
|
2825
3198
|
static styles: CSSResult[];
|
|
2826
3199
|
columns: DataGridColumn[];
|
|
2827
3200
|
rows: unknown[];
|
|
@@ -2839,7 +3212,27 @@ declare class DataGridElement extends LitElement {
|
|
|
2839
3212
|
/** Columns keys that can be grouped by; undefined = all groupable columns */
|
|
2840
3213
|
groupableColumns: string[] | undefined;
|
|
2841
3214
|
crossGroupSelection: boolean;
|
|
3215
|
+
/**
|
|
3216
|
+
* `auto` (default): render the built-in header column/group menu.
|
|
3217
|
+
* `none`: don't render it — for hosts that supply their own column UI via
|
|
3218
|
+
* `column.visible` + `datagrid-column-visibility`.
|
|
3219
|
+
*/
|
|
3220
|
+
columnMenu: DataGridColumnMenu;
|
|
2842
3221
|
globalFormatter?: GlobalFormatter;
|
|
3222
|
+
/**
|
|
3223
|
+
* Predicate used by incremental filter-search (and callable directly). Rows
|
|
3224
|
+
* for which it returns `false` are dropped from the flat list — hidden from
|
|
3225
|
+
* view and navigation.
|
|
3226
|
+
*/
|
|
3227
|
+
filterPredicate?: (row: unknown) => boolean;
|
|
3228
|
+
/** Text a row is matched against by incremental search. Default: its visible cells joined by a space. */
|
|
3229
|
+
rowSearchText?: (row: unknown) => string;
|
|
3230
|
+
/**
|
|
3231
|
+
* Space-separated subset of `navigate select filter` — limits which
|
|
3232
|
+
* incremental-search modes are offered. Unset ⇒ all three; empty ⇒ search
|
|
3233
|
+
* disabled. See `docs/infra-incremental.md`.
|
|
3234
|
+
*/
|
|
3235
|
+
searchModes: string | undefined;
|
|
2843
3236
|
private _columnFormatters;
|
|
2844
3237
|
private _selectedKeys;
|
|
2845
3238
|
private _scrollTop;
|
|
@@ -2858,6 +3251,10 @@ declare class DataGridElement extends LitElement {
|
|
|
2858
3251
|
private _sortedRows;
|
|
2859
3252
|
private _flat;
|
|
2860
3253
|
private _flatKeys;
|
|
3254
|
+
/** Incremental search (navigate / select / filter). See `docs/infra-incremental.md`. */
|
|
3255
|
+
readonly search: ListSearchController<unknown>;
|
|
3256
|
+
/** Command registry carrying this grid's `list.search.*` commands. */
|
|
3257
|
+
get registry(): CommandRegistry<unknown> | undefined;
|
|
2861
3258
|
private _visibleColumns;
|
|
2862
3259
|
private _colOffsets;
|
|
2863
3260
|
private _colWidthSum;
|
|
@@ -2865,6 +3262,11 @@ declare class DataGridElement extends LitElement {
|
|
|
2865
3262
|
private _drag;
|
|
2866
3263
|
connectedCallback(): void;
|
|
2867
3264
|
disconnectedCallback(): void;
|
|
3265
|
+
/**
|
|
3266
|
+
* Dispatch a command to this grid — routes through the command registry so
|
|
3267
|
+
* `list.search.*` (and any other registered commands) work.
|
|
3268
|
+
*/
|
|
3269
|
+
dispatch(commandId: CommandId, args?: Record<string, unknown>): void;
|
|
2868
3270
|
private _onFocusOut;
|
|
2869
3271
|
protected firstUpdated(): void;
|
|
2870
3272
|
protected updated(changed: Map<string, unknown>): void;
|
|
@@ -2883,6 +3285,29 @@ declare class DataGridElement extends LitElement {
|
|
|
2883
3285
|
private _anchorKey;
|
|
2884
3286
|
private _scrollRowIntoView;
|
|
2885
3287
|
private _getRowForKey;
|
|
3288
|
+
/** The selected row keys (read-only). */
|
|
3289
|
+
get selectedKeys(): ReadonlySet<string>;
|
|
3290
|
+
/** Replace the selection with these row keys (clamped to known rows). */
|
|
3291
|
+
set selectedKeys(keys: Iterable<string>);
|
|
3292
|
+
/**
|
|
3293
|
+
* Replace the selection with the given row keys. Unknown keys are dropped;
|
|
3294
|
+
* in a single-select mode only the last surviving key is kept;
|
|
3295
|
+
* `selectionMode="none"` clears. Fires `datagrid-select` with the previous
|
|
3296
|
+
* set when the selection actually changes.
|
|
3297
|
+
*/
|
|
3298
|
+
selectKeys(keys: Iterable<string>): void;
|
|
3299
|
+
/** The row key under the cursor, or `undefined`. */
|
|
3300
|
+
get tickledKey(): string | undefined;
|
|
3301
|
+
/** Move the cursor to this row key and scroll it into view. */
|
|
3302
|
+
tickleRow(key: string): void;
|
|
3303
|
+
/**
|
|
3304
|
+
* Append rows without the full O(n log n) rebuild that reassigning `rows`
|
|
3305
|
+
* incurs. `rows` still gets a new array reference (reactivity is preserved),
|
|
3306
|
+
* but the derived arrays are extended over the appended slice only. When a
|
|
3307
|
+
* sort is active the new rows show unsorted for one frame, then a single
|
|
3308
|
+
* coalesced re-sort runs. Scroll position, selection and cursor are kept.
|
|
3309
|
+
*/
|
|
3310
|
+
appendRows(rows: readonly unknown[]): void;
|
|
2886
3311
|
private _replaceSelection;
|
|
2887
3312
|
private _toggleSelection;
|
|
2888
3313
|
private _rangeSelectTo;
|
|
@@ -2925,6 +3350,69 @@ interface DataGridElement {
|
|
|
2925
3350
|
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);
|
|
2926
3351
|
}
|
|
2927
3352
|
//#endregion
|
|
3353
|
+
//#region src/data-table/data-table.d.ts
|
|
3354
|
+
type DataTableRow = {
|
|
3355
|
+
label: string;
|
|
3356
|
+
value: string | number | boolean | Node | TemplateResult;
|
|
3357
|
+
fullWidth?: boolean;
|
|
3358
|
+
detail?: string | TemplateResult;
|
|
3359
|
+
id?: string;
|
|
3360
|
+
};
|
|
3361
|
+
type DataTableRowClickDetail = {
|
|
3362
|
+
readonly row: DataTableRow;
|
|
3363
|
+
readonly index: number;
|
|
3364
|
+
readonly selected: boolean;
|
|
3365
|
+
};
|
|
3366
|
+
type DataTableRowClickEvent = CustomEvent<DataTableRowClickDetail>;
|
|
3367
|
+
interface DataTableElementEventMap {
|
|
3368
|
+
'data-table-row-click': DataTableRowClickEvent;
|
|
3369
|
+
}
|
|
3370
|
+
declare class DataTableElement extends LitElement {
|
|
3371
|
+
#private;
|
|
3372
|
+
static styles: CSSResult[];
|
|
3373
|
+
rows: readonly DataTableRow[];
|
|
3374
|
+
selectedIndex: number | undefined;
|
|
3375
|
+
/**
|
|
3376
|
+
* How long (ms) the pointer must rest on a hovered row before its detail
|
|
3377
|
+
* panel is revealed. The tickled highlight itself appears immediately on
|
|
3378
|
+
* hover; only the detail panel is debounced. Clicking a row reveals its
|
|
3379
|
+
* detail straight away, ignoring this delay.
|
|
3380
|
+
*/
|
|
3381
|
+
tickleDelay: number;
|
|
3382
|
+
/**
|
|
3383
|
+
* Table layout.
|
|
3384
|
+
* - `auto` (default): responsive — widens to multiple pair-columns on wide
|
|
3385
|
+
* containers, and stacks key above value once narrower than
|
|
3386
|
+
* {@link narrowBreakpoint}.
|
|
3387
|
+
* - `rows`: always stacked (key above value), regardless of width.
|
|
3388
|
+
* - `columns`: always a two-column key/value grid, regardless of width.
|
|
3389
|
+
*/
|
|
3390
|
+
layout: `auto` | `rows` | `columns`;
|
|
3391
|
+
/**
|
|
3392
|
+
* Inline width (px) at or below which the `auto` layout switches to its
|
|
3393
|
+
* stacked, key-above-value form. Ignored when {@link layout} is locked.
|
|
3394
|
+
*/
|
|
3395
|
+
narrowBreakpoint: number;
|
|
3396
|
+
private _tickled;
|
|
3397
|
+
/** Index of the row whose detail panel is currently revealed, if any. */
|
|
3398
|
+
private _detailIndex;
|
|
3399
|
+
/** Whether the table is currently rendering in its stacked form. */
|
|
3400
|
+
private _stacked;
|
|
3401
|
+
connectedCallback(): void;
|
|
3402
|
+
disconnectedCallback(): void;
|
|
3403
|
+
willUpdate(changed: PropertyValues<this>): void;
|
|
3404
|
+
render(): ReturnType<typeof html>;
|
|
3405
|
+
}
|
|
3406
|
+
declare global {
|
|
3407
|
+
interface HTMLElementTagNameMap {
|
|
3408
|
+
'ixfx-data-table': DataTableElement;
|
|
3409
|
+
}
|
|
3410
|
+
}
|
|
3411
|
+
interface DataTableElement {
|
|
3412
|
+
addEventListener<K extends keyof DataTableElementEventMap>(type: K, listener: (this: DataTableElement, event: DataTableElementEventMap[K]) => void, options?: boolean | AddEventListenerOptions): void;
|
|
3413
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
3414
|
+
}
|
|
3415
|
+
//#endregion
|
|
2928
3416
|
//#region src/interaction/list-selection-types.d.ts
|
|
2929
3417
|
/**
|
|
2930
3418
|
* Shared list selection types.
|
|
@@ -2951,6 +3439,11 @@ type ListInteractionMode = `implicit` | `standard` | `manual` | `checked` | `sti
|
|
|
2951
3439
|
type ListSelectDetail = {
|
|
2952
3440
|
readonly selected: ReadonlySet<Element>;
|
|
2953
3441
|
readonly previous: ReadonlySet<Element>;
|
|
3442
|
+
/**
|
|
3443
|
+
* The selection as stable key strings (`data-key` / `data-value`). Empty
|
|
3444
|
+
* when items carry no key. Additive to `selected`.
|
|
3445
|
+
*/
|
|
3446
|
+
readonly selectedKeys: ReadonlySet<string>;
|
|
2954
3447
|
};
|
|
2955
3448
|
type ListTickleDetail = {
|
|
2956
3449
|
readonly item: Element;
|
|
@@ -3016,21 +3509,34 @@ declare class VerticalListElement extends LitElement {
|
|
|
3016
3509
|
* : html``;
|
|
3017
3510
|
*/
|
|
3018
3511
|
checkboxRenderer: ((checked: boolean) => unknown) | CustomCheckboxOptions | undefined;
|
|
3019
|
-
|
|
3020
|
-
|
|
3021
|
-
|
|
3512
|
+
/**
|
|
3513
|
+
* Space-separated subset of `navigate select filter` — limits which
|
|
3514
|
+
* incremental-search modes are offered. Unset ⇒ all three; empty ⇒ search
|
|
3515
|
+
* disabled. See `docs/infra-incremental.md`.
|
|
3516
|
+
*/
|
|
3517
|
+
searchModes: string | undefined;
|
|
3022
3518
|
private readonly selection;
|
|
3023
3519
|
private tickled;
|
|
3520
|
+
/** Incremental search (navigate / select / filter). See `docs/infra-incremental.md`. */
|
|
3521
|
+
readonly search: ListSearchController<Element>;
|
|
3522
|
+
/** Command registry carrying this list's `list.search.*` commands. */
|
|
3523
|
+
get registry(): CommandRegistry<unknown> | undefined;
|
|
3024
3524
|
connectedCallback(): void;
|
|
3025
3525
|
disconnectedCallback(): void;
|
|
3026
|
-
firstUpdated(): void;
|
|
3027
3526
|
updated(changed: PropertyValues): void;
|
|
3028
3527
|
/** The most recently selected item, or `undefined` if nothing is selected. */
|
|
3029
3528
|
get selectedItem(): Element | undefined;
|
|
3030
3529
|
/** The full current selection set (read-only). */
|
|
3031
3530
|
get selectedItems(): ReadonlySet<Element>;
|
|
3032
3531
|
addItem(item: Element | string, options?: AddItemOptions): void;
|
|
3033
|
-
|
|
3532
|
+
/**
|
|
3533
|
+
* Collapse + fade `item` out, then detach it. The rows below slide up to
|
|
3534
|
+
* close the gap. Resolves once the element has actually been removed.
|
|
3535
|
+
* Under `prefers-reduced-motion: reduce` it's removed immediately.
|
|
3536
|
+
*/
|
|
3537
|
+
removeItem(item: Element): Promise<void>;
|
|
3538
|
+
/** {@link removeItem} for several items at once. */
|
|
3539
|
+
removeItems(items: Iterable<Element>): Promise<void>;
|
|
3034
3540
|
clearItems(): void;
|
|
3035
3541
|
/**
|
|
3036
3542
|
* Replace the entire item list in one call.
|
|
@@ -3039,16 +3545,28 @@ declare class VerticalListElement extends LitElement {
|
|
|
3039
3545
|
*/
|
|
3040
3546
|
setItems(items: readonly Element[]): void;
|
|
3041
3547
|
/**
|
|
3042
|
-
* Dispatch a command to this list
|
|
3043
|
-
*
|
|
3044
|
-
*
|
|
3548
|
+
* Dispatch a command to this list — used by `ixfx-grouped-item-lister` to
|
|
3549
|
+
* forward commands to all sub-components. Routes through the command registry
|
|
3550
|
+
* (so `list.search.*` and any other registered commands work).
|
|
3045
3551
|
*/
|
|
3046
|
-
dispatch(
|
|
3552
|
+
dispatch(commandId: CommandId, args?: Record<string, unknown>): void;
|
|
3047
3553
|
select(item: Element): void;
|
|
3048
3554
|
selectMany(items: Iterable<Element>): void;
|
|
3049
3555
|
deselect(item: Element): void;
|
|
3050
3556
|
clearSelection(): void;
|
|
3051
3557
|
selectAll(): void;
|
|
3558
|
+
/** The selection as stable `data-key` / `data-value` strings. */
|
|
3559
|
+
get selectedKeys(): ReadonlySet<string>;
|
|
3560
|
+
/** The key of the item under the cursor, or `undefined`. */
|
|
3561
|
+
get tickledKey(): string | undefined;
|
|
3562
|
+
/** Replace the selection with the items carrying these keys (unknown keys ignored). */
|
|
3563
|
+
selectKeys(keys: Iterable<string>): void;
|
|
3564
|
+
/** Add items by key to the selection (multi-select modes only). */
|
|
3565
|
+
addSelectedKeys(keys: Iterable<string>): void;
|
|
3566
|
+
/** Remove items by key from the selection. */
|
|
3567
|
+
removeSelectedKeys(keys: Iterable<string>): void;
|
|
3568
|
+
/** Move the cursor to the item with this key and scroll it into view. */
|
|
3569
|
+
focusKey(key: string): void;
|
|
3052
3570
|
selectedFilter(kind: `selected` | `checked` | `either`): Generator<Element>;
|
|
3053
3571
|
private _getVisibleItems;
|
|
3054
3572
|
private _isCheckable;
|
|
@@ -3068,16 +3586,12 @@ declare class VerticalListElement extends LitElement {
|
|
|
3068
3586
|
private _createCustomCheckbox;
|
|
3069
3587
|
private _findListItem;
|
|
3070
3588
|
private _dispatch;
|
|
3071
|
-
private _openSearch;
|
|
3072
|
-
private _closeSearch;
|
|
3073
3589
|
private _onPointerOver;
|
|
3074
3590
|
private _onPointerLeave;
|
|
3075
3591
|
private _onKeyDown;
|
|
3076
3592
|
private _onClick;
|
|
3077
3593
|
private _onDblClick;
|
|
3078
3594
|
private _activateItem;
|
|
3079
|
-
private _onSearchInput;
|
|
3080
|
-
private _onSearchKeydown;
|
|
3081
3595
|
static styles: CSSResult[];
|
|
3082
3596
|
render(): TemplateResult<1>;
|
|
3083
3597
|
}
|
|
@@ -3142,12 +3656,19 @@ declare class DetailListElement extends LitElement {
|
|
|
3142
3656
|
itemWrap: `stop` | `wrap`;
|
|
3143
3657
|
/** Optional renderer for the checkbox shown in `checked` interactionMode. */
|
|
3144
3658
|
checkboxRenderer: ((checked: boolean) => unknown) | CustomCheckboxOptions | undefined;
|
|
3145
|
-
|
|
3146
|
-
|
|
3147
|
-
|
|
3659
|
+
/**
|
|
3660
|
+
* Space-separated subset of `navigate select filter` — limits which
|
|
3661
|
+
* incremental-search modes are offered. Unset ⇒ all three; empty ⇒ search
|
|
3662
|
+
* disabled. See `docs/infra-incremental.md`.
|
|
3663
|
+
*/
|
|
3664
|
+
searchModes: string | undefined;
|
|
3148
3665
|
private _listEl;
|
|
3149
3666
|
private readonly selection;
|
|
3150
3667
|
private tickled;
|
|
3668
|
+
/** Incremental search (navigate / select / filter). See `docs/infra-incremental.md`. */
|
|
3669
|
+
readonly search: ListSearchController<Element>;
|
|
3670
|
+
/** Command registry carrying this list's `list.search.*` commands. */
|
|
3671
|
+
get registry(): CommandRegistry<unknown> | undefined;
|
|
3151
3672
|
connectedCallback(): void;
|
|
3152
3673
|
disconnectedCallback(): void;
|
|
3153
3674
|
firstUpdated(): void;
|
|
@@ -3163,8 +3684,14 @@ declare class DetailListElement extends LitElement {
|
|
|
3163
3684
|
*/
|
|
3164
3685
|
refreshLayout(): void;
|
|
3165
3686
|
addItem(item: Element | string, options?: AddItemOptions): void;
|
|
3166
|
-
|
|
3167
|
-
|
|
3687
|
+
/**
|
|
3688
|
+
* Collapse + fade `item` out, then detach it; the rows after it slide up to
|
|
3689
|
+
* close the gap. Resolves once removed. Immediate under reduced motion.
|
|
3690
|
+
*/
|
|
3691
|
+
removeItem(item: Element): Promise<void>;
|
|
3692
|
+
/** {@link removeItem} for several items at once. */
|
|
3693
|
+
removeItems(items: Iterable<Element>): Promise<void>;
|
|
3694
|
+
clearItems(): void;
|
|
3168
3695
|
/**
|
|
3169
3696
|
* Replace the entire item list in one call.
|
|
3170
3697
|
* Equivalent to `clearItems()` followed by `addItem()` for each element.
|
|
@@ -3175,13 +3702,29 @@ declare class DetailListElement extends LitElement {
|
|
|
3175
3702
|
* provider. Returns `undefined` for declarative / programmatic elements.
|
|
3176
3703
|
*/
|
|
3177
3704
|
getItemData(item: HTMLLIElement): unknown;
|
|
3178
|
-
/**
|
|
3179
|
-
|
|
3705
|
+
/**
|
|
3706
|
+
* Dispatch a command to this list — used by `ixfx-grouped-item-lister` to
|
|
3707
|
+
* forward commands. Routes through the command registry (so `list.search.*`
|
|
3708
|
+
* and any other registered commands work).
|
|
3709
|
+
*/
|
|
3710
|
+
dispatch(commandId: CommandId, args?: Record<string, unknown>): void;
|
|
3180
3711
|
select(item: Element): void;
|
|
3181
3712
|
selectMany(items: Iterable<Element>): void;
|
|
3182
3713
|
deselect(item: Element): void;
|
|
3183
3714
|
clearSelection(): void;
|
|
3184
3715
|
selectAll(): void;
|
|
3716
|
+
/** The selection as stable `data-key` / `data-value` strings. */
|
|
3717
|
+
get selectedKeys(): ReadonlySet<string>;
|
|
3718
|
+
/** The key of the item under the cursor, or `undefined`. */
|
|
3719
|
+
get tickledKey(): string | undefined;
|
|
3720
|
+
/** Replace the selection with the items carrying these keys (unknown keys ignored). */
|
|
3721
|
+
selectKeys(keys: Iterable<string>): void;
|
|
3722
|
+
/** Add items by key to the selection (multi-select modes only). */
|
|
3723
|
+
addSelectedKeys(keys: Iterable<string>): void;
|
|
3724
|
+
/** Remove items by key from the selection. */
|
|
3725
|
+
removeSelectedKeys(keys: Iterable<string>): void;
|
|
3726
|
+
/** Move the cursor to the item with this key and scroll it into view. */
|
|
3727
|
+
focusKey(key: string): void;
|
|
3185
3728
|
selectedFilter(kind: `selected` | `checked` | `either`): Generator<Element>;
|
|
3186
3729
|
private _getVisibleItems;
|
|
3187
3730
|
/**
|
|
@@ -3208,8 +3751,6 @@ declare class DetailListElement extends LitElement {
|
|
|
3208
3751
|
private _createCustomCheckbox;
|
|
3209
3752
|
private _findListItem;
|
|
3210
3753
|
private _dispatch;
|
|
3211
|
-
private _openSearch;
|
|
3212
|
-
private _closeSearch;
|
|
3213
3754
|
private _onPointerOver;
|
|
3214
3755
|
private _onPointerLeave;
|
|
3215
3756
|
private _onKeyDown;
|
|
@@ -3217,8 +3758,6 @@ declare class DetailListElement extends LitElement {
|
|
|
3217
3758
|
private _onDblClick;
|
|
3218
3759
|
private _onWheel;
|
|
3219
3760
|
private _activateItem;
|
|
3220
|
-
private _onSearchInput;
|
|
3221
|
-
private _onSearchKeydown;
|
|
3222
3761
|
static styles: CSSResult[];
|
|
3223
3762
|
render(): TemplateResult<1>;
|
|
3224
3763
|
}
|
|
@@ -4406,198 +4945,250 @@ declare global {
|
|
|
4406
4945
|
}
|
|
4407
4946
|
}
|
|
4408
4947
|
//#endregion
|
|
4409
|
-
//#region src/
|
|
4410
|
-
/**
|
|
4411
|
-
* Fired when the selection set changes by any means.
|
|
4412
|
-
* Event name: `select`
|
|
4413
|
-
*/
|
|
4414
|
-
type SubComponentSelectDetail<T> = {
|
|
4415
|
-
readonly selected: ReadonlySet<T>;
|
|
4416
|
-
readonly previous: ReadonlySet<T>;
|
|
4417
|
-
};
|
|
4418
|
-
/**
|
|
4419
|
-
* Fired when an item is explicitly activated (double-click or Enter key).
|
|
4420
|
-
* Event name: `activate`
|
|
4421
|
-
*/
|
|
4422
|
-
type SubComponentActivateDetail<T> = {
|
|
4423
|
-
readonly item: T;
|
|
4424
|
-
};
|
|
4425
|
-
/**
|
|
4426
|
-
* Fired on a raw pointer click before any selection change.
|
|
4427
|
-
* Event name: `item-click`
|
|
4428
|
-
*/
|
|
4429
|
-
type SubComponentItemClickDetail<T> = {
|
|
4430
|
-
readonly item: T;
|
|
4431
|
-
};
|
|
4432
|
-
/**
|
|
4433
|
-
* Fired when the pointer hovers over an item or the keyboard cursor moves to it.
|
|
4434
|
-
* Event name: `tickle`
|
|
4435
|
-
*/
|
|
4436
|
-
type SubComponentTickleDetail<T> = {
|
|
4437
|
-
readonly item: T;
|
|
4438
|
-
};
|
|
4439
|
-
type SubComponentSelectEvent<T> = CustomEvent<SubComponentSelectDetail<T>>;
|
|
4440
|
-
type SubComponentActivateEvent<T> = CustomEvent<SubComponentActivateDetail<T>>;
|
|
4441
|
-
type SubComponentItemClickEvent<T> = CustomEvent<SubComponentItemClickDetail<T>>;
|
|
4442
|
-
type SubComponentTickleEvent<T> = CustomEvent<SubComponentTickleDetail<T>>;
|
|
4443
|
-
interface IGroupedSubComponentEventMap<T> {
|
|
4444
|
-
'select': SubComponentSelectEvent<T>;
|
|
4445
|
-
'activate': SubComponentActivateEvent<T>;
|
|
4446
|
-
'item-click': SubComponentItemClickEvent<T>;
|
|
4447
|
-
'tickle': SubComponentTickleEvent<T>;
|
|
4448
|
-
}
|
|
4948
|
+
//#region src/grid-list/types.d.ts
|
|
4449
4949
|
/**
|
|
4450
|
-
*
|
|
4451
|
-
*
|
|
4452
|
-
*
|
|
4453
|
-
*
|
|
4950
|
+
* How the caption relates to the cell's content.
|
|
4951
|
+
* - `hidden`: no caption is rendered.
|
|
4952
|
+
* - `separate`: content sits in a square; the caption is a detached label
|
|
4953
|
+
* below it. Square and caption are highlighted separately, like macOS
|
|
4954
|
+
* Finder icon view.
|
|
4955
|
+
* - `under` (default): the whole cell is one box — content on top, caption in
|
|
4956
|
+
* its own strip below it, inside the same box. One selection outline.
|
|
4957
|
+
* - `overlaid`: the caption floats on top of the content (see
|
|
4958
|
+
* `GridListCaptionPosition` / `GridListCaptionBackdrop`).
|
|
4454
4959
|
*/
|
|
4455
|
-
|
|
4456
|
-
|
|
4457
|
-
|
|
4458
|
-
|
|
4459
|
-
|
|
4460
|
-
/** The current selection set. */
|
|
4461
|
-
readonly selectedItems: ReadonlySet<T>;
|
|
4462
|
-
/** Controls how many items can be selected simultaneously. */
|
|
4463
|
-
selectionMode: ListSelectionMode;
|
|
4464
|
-
/**
|
|
4465
|
-
* Forward a command (e.g. sort-order change) to this sub-component.
|
|
4466
|
-
* Uses `CommandId` from `@clinth/ui-commands` for interoperability.
|
|
4467
|
-
*/
|
|
4468
|
-
dispatch: (commandId: CommandId, args?: Record<string, unknown>) => void;
|
|
4469
|
-
addEventListener: (<K extends keyof IGroupedSubComponentEventMap<T>>(type: K, listener: (event: IGroupedSubComponentEventMap<T>[K]) => void, options?: boolean | AddEventListenerOptions) => void) & ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);
|
|
4470
|
-
}
|
|
4960
|
+
type GridListCaptionStyle = `hidden` | `separate` | `under` | `overlaid`;
|
|
4961
|
+
/** Horizontal alignment of caption text (`middle` is the default). */
|
|
4962
|
+
type GridListCaptionAlign = `left` | `middle` | `right`;
|
|
4963
|
+
/** Vertical placement of an `overlaid` caption (`bottom` is the default). */
|
|
4964
|
+
type GridListCaptionPosition = `top` | `middle` | `bottom`;
|
|
4471
4965
|
/**
|
|
4472
|
-
*
|
|
4473
|
-
*
|
|
4966
|
+
* Backdrop behind an `overlaid` caption.
|
|
4967
|
+
* - `scrim` (default): flat translucent panel.
|
|
4968
|
+
* - `gradient`: translucent gradient fading away from the caption edge.
|
|
4969
|
+
* - `blur`: frosted / backdrop-blurred panel.
|
|
4970
|
+
* - `none`: no panel — caption text only, with a shadow for legibility.
|
|
4474
4971
|
*/
|
|
4475
|
-
type
|
|
4972
|
+
type GridListCaptionBackdrop = `scrim` | `gradient` | `blur` | `none`;
|
|
4476
4973
|
/**
|
|
4477
|
-
*
|
|
4478
|
-
*
|
|
4479
|
-
*
|
|
4974
|
+
* Layout / scroll direction.
|
|
4975
|
+
* - `grid` (default): items wrap across as many columns as fit and the list
|
|
4976
|
+
* scrolls vertically.
|
|
4977
|
+
* - `row`: a single row of items that scrolls horizontally.
|
|
4978
|
+
* - `column`: a single column of items that scrolls vertically.
|
|
4480
4979
|
*/
|
|
4481
|
-
type
|
|
4482
|
-
|
|
4483
|
-
readonly
|
|
4484
|
-
|
|
4485
|
-
|
|
4486
|
-
|
|
4487
|
-
'grouped-select': GroupedSelectEvent<T>;
|
|
4488
|
-
}
|
|
4489
|
-
//#endregion
|
|
4490
|
-
//#region src/panel/panel.d.ts
|
|
4491
|
-
/** Backwards-compatible aliases: canonical types now live in `../titlebar/titlebar.js`. */
|
|
4492
|
-
type PanelOrientation = TitlebarOrientation;
|
|
4493
|
-
type PanelVariant = TitlebarVariant;
|
|
4494
|
-
type PanelToggleInteraction = TitlebarToggleInteraction;
|
|
4495
|
-
type PanelToggleDetail = TitlebarToggleDetail;
|
|
4496
|
-
type PanelToggleEvent = TitlebarToggleEvent;
|
|
4497
|
-
type PanelCloseEvent = TitlebarCloseEvent;
|
|
4498
|
-
interface PanelElementEventMap {
|
|
4499
|
-
toggle: PanelToggleEvent;
|
|
4500
|
-
close: PanelCloseEvent;
|
|
4501
|
-
}
|
|
4502
|
-
declare class PanelElement extends LitElement {
|
|
4503
|
-
collapsed: boolean;
|
|
4504
|
-
orientation: PanelOrientation;
|
|
4505
|
-
closable: boolean;
|
|
4506
|
-
/** Show the collapse/expand caret and enable toggle behaviour. Defaults to true so existing panels stay collapsible. */
|
|
4507
|
-
collapsible: boolean;
|
|
4508
|
-
title: string;
|
|
4509
|
-
iconName: string;
|
|
4510
|
-
toggleInteraction: PanelToggleInteraction;
|
|
4511
|
-
variant: PanelVariant;
|
|
4512
|
-
/** Suppress the titlebar entirely (content-only chrome, e.g. dock tabbed mode). */
|
|
4513
|
-
hideTitlebar: boolean;
|
|
4514
|
-
private _onTitlebarToggle;
|
|
4515
|
-
private _onCloseClick;
|
|
4516
|
-
protected render(): TemplateResult<1>;
|
|
4517
|
-
static styles: CSSResult[];
|
|
4980
|
+
type GridListOrientation = `grid` | `row` | `column`;
|
|
4981
|
+
interface GridListSelectDetail {
|
|
4982
|
+
readonly selected: ReadonlySet<Element>;
|
|
4983
|
+
readonly previous: ReadonlySet<Element>;
|
|
4984
|
+
/** The selection as stable `data-key` / `data-value` strings. */
|
|
4985
|
+
readonly selectedKeys: ReadonlySet<string>;
|
|
4518
4986
|
}
|
|
4519
|
-
|
|
4520
|
-
|
|
4521
|
-
|
|
4522
|
-
}
|
|
4987
|
+
type GridListSelectEvent = CustomEvent<GridListSelectDetail>;
|
|
4988
|
+
interface GridListActivateDetail {
|
|
4989
|
+
readonly item: Element;
|
|
4523
4990
|
}
|
|
4524
|
-
|
|
4525
|
-
|
|
4991
|
+
type GridListActivateEvent = CustomEvent<GridListActivateDetail>;
|
|
4992
|
+
interface GridListItemClickDetail {
|
|
4993
|
+
readonly item: Element;
|
|
4526
4994
|
}
|
|
4527
|
-
|
|
4528
|
-
|
|
4529
|
-
|
|
4530
|
-
#private;
|
|
4531
|
-
grouped: boolean;
|
|
4532
|
-
crossGroupSelection: boolean;
|
|
4533
|
-
get groupBy(): ((item: T) => string) | undefined;
|
|
4534
|
-
set groupBy(value: ((item: T) => string) | undefined);
|
|
4535
|
-
get factory(): SubComponentFactory<T> | undefined;
|
|
4536
|
-
set factory(value: SubComponentFactory<T> | undefined);
|
|
4537
|
-
get provider(): IDataProvider<void, T> | undefined;
|
|
4538
|
-
set provider(value: IDataProvider<void, T> | undefined);
|
|
4539
|
-
/** The union of all selected items across every sub-component. */
|
|
4540
|
-
get selectedItems(): ReadonlySet<T>;
|
|
4541
|
-
/**
|
|
4542
|
-
* Forward a command to all live sub-components.
|
|
4543
|
-
* Use this to propagate changes like sort order, filter state, or view mode.
|
|
4544
|
-
*/
|
|
4545
|
-
dispatch(commandId: CommandId, args?: Record<string, unknown>): void;
|
|
4546
|
-
protected createRenderRoot(): this;
|
|
4547
|
-
connectedCallback(): void;
|
|
4548
|
-
disconnectedCallback(): void;
|
|
4549
|
-
protected updated(changed: PropertyValues): void;
|
|
4550
|
-
protected render(): typeof nothing | TemplateResult<1>;
|
|
4995
|
+
type GridListItemClickEvent = CustomEvent<GridListItemClickDetail>;
|
|
4996
|
+
interface GridListTickleDetail {
|
|
4997
|
+
readonly item: Element;
|
|
4551
4998
|
}
|
|
4552
|
-
|
|
4553
|
-
|
|
4554
|
-
|
|
4555
|
-
|
|
4999
|
+
type GridListTickleEvent = CustomEvent<GridListTickleDetail>;
|
|
5000
|
+
interface GridListElementEventMap {
|
|
5001
|
+
'list-select': GridListSelectEvent;
|
|
5002
|
+
'list-activate': GridListActivateEvent;
|
|
5003
|
+
'list-item-click': GridListItemClickEvent;
|
|
5004
|
+
'list-tickle': GridListTickleEvent;
|
|
4556
5005
|
}
|
|
4557
|
-
|
|
4558
|
-
|
|
5006
|
+
type GridListViewportChangeDetail = {
|
|
5007
|
+
readonly visibleKeys: string[];
|
|
5008
|
+
};
|
|
5009
|
+
type GridListViewportChangeEvent = CustomEvent<GridListViewportChangeDetail>;
|
|
5010
|
+
interface GridListFullElementEventMap extends GridListElementEventMap {
|
|
5011
|
+
'grid-list-viewport-change': GridListViewportChangeEvent;
|
|
4559
5012
|
}
|
|
4560
5013
|
//#endregion
|
|
4561
|
-
//#region src/interaction/
|
|
5014
|
+
//#region src/interaction/list-selection-controller.d.ts
|
|
5015
|
+
/** Modifier state needed to route a click gesture per interaction mode. */
|
|
5016
|
+
type ListSelectionGesture = {
|
|
5017
|
+
readonly ctrlKey: boolean;
|
|
5018
|
+
readonly metaKey: boolean;
|
|
5019
|
+
readonly shiftKey: boolean;
|
|
5020
|
+
};
|
|
5021
|
+
type ListSelectionModes = {
|
|
5022
|
+
readonly selectionMode: ListSelectionMode;
|
|
5023
|
+
readonly interactionMode: ListInteractionMode;
|
|
5024
|
+
};
|
|
4562
5025
|
/**
|
|
4563
|
-
*
|
|
5026
|
+
* Configuration supplied by the host component.
|
|
5027
|
+
*
|
|
5028
|
+
* The controller owns selection *state* only — everything DOM- or
|
|
5029
|
+
* component-specific is expressed through these callbacks.
|
|
4564
5030
|
*/
|
|
4565
|
-
type
|
|
5031
|
+
type ListSelectionControllerConfig<T> = {
|
|
5032
|
+
/** Visible items in navigation order — used for range selection and select-all. */
|
|
5033
|
+
readonly getOrderedItems: () => readonly T[];
|
|
5034
|
+
/** Whether an item may join the selection (e.g. reject `not-checked` rows). */
|
|
5035
|
+
readonly isSelectable: (item: T) => boolean;
|
|
5036
|
+
/** Current modes; read on every gesture so property changes apply immediately. */
|
|
5037
|
+
readonly getModes: () => ListSelectionModes;
|
|
4566
5038
|
/**
|
|
4567
|
-
*
|
|
5039
|
+
* Fired after every selection change. The host syncs DOM state
|
|
5040
|
+
* (`data-selected` / `data-checked`), dispatches `list-select`, and
|
|
5041
|
+
* requests an update.
|
|
4568
5042
|
*/
|
|
4569
|
-
readonly
|
|
5043
|
+
readonly onChange: (selected: ReadonlySet<T>, previous: ReadonlySet<T>) => void;
|
|
4570
5044
|
/**
|
|
4571
|
-
*
|
|
5045
|
+
* Optional: derive a stable string key for an item. Enables `selectedKeys`
|
|
5046
|
+
* and `selectKeys()`. When omitted, `selectedKeys` is always empty.
|
|
4572
5047
|
*/
|
|
4573
|
-
readonly
|
|
5048
|
+
readonly getKey?: (item: T) => string | undefined;
|
|
4574
5049
|
};
|
|
5050
|
+
/** Whether the interaction mode allows building a multi-item selection. */
|
|
5051
|
+
declare function isMultiMode(mode: ListInteractionMode): boolean;
|
|
4575
5052
|
/**
|
|
4576
|
-
*
|
|
4577
|
-
|
|
4578
|
-
|
|
4579
|
-
|
|
4580
|
-
*
|
|
5053
|
+
* Generic selection state machine shared by list components.
|
|
5054
|
+
*
|
|
5055
|
+
* Owns the selected set plus the range-selection anchor, the selection
|
|
5056
|
+
* primitives (`replace` / `toggle` / `rangeTo` / `clear` / `selectAll` /
|
|
5057
|
+
* `selectMany` / `deselect`) and the per-interactionMode gesture routers
|
|
5058
|
+
* (`handleClick` / `handleSpace`).
|
|
5059
|
+
*
|
|
5060
|
+
* Identity is generic: both `ixfx-vertical-list` and `ixfx-detail-list` use
|
|
5061
|
+
* `ListSelectionController<Element>`.
|
|
5062
|
+
*
|
|
5063
|
+
* @example
|
|
5064
|
+
* ```ts
|
|
5065
|
+
* const selection = new ListSelectionController<Element>({
|
|
5066
|
+
* getOrderedItems: () => this.getVisibleItems(),
|
|
5067
|
+
* isSelectable: el => !el.hasAttribute(`not-checked`),
|
|
5068
|
+
* getModes: () => ({ selectionMode: this.selectionMode, interactionMode: this.interactionMode }),
|
|
5069
|
+
* onChange: (selected, previous) => {
|
|
5070
|
+
* this.syncItemStates();
|
|
5071
|
+
* this.dispatchEvent(new CustomEvent(`list-select`, { detail: { selected, previous } }));
|
|
5072
|
+
* },
|
|
5073
|
+
* });
|
|
5074
|
+
* ```
|
|
4581
5075
|
*/
|
|
4582
|
-
|
|
5076
|
+
declare class ListSelectionController<T> {
|
|
5077
|
+
#private;
|
|
5078
|
+
constructor(config: ListSelectionControllerConfig<T>);
|
|
5079
|
+
/** The current selection set (read-only). */
|
|
5080
|
+
get selected(): ReadonlySet<T>;
|
|
4583
5081
|
/**
|
|
4584
|
-
*
|
|
5082
|
+
* The current selection as stable string keys (read-only). Empty unless a
|
|
5083
|
+
* `getKey` was supplied in config. Items whose `getKey` returns `undefined`
|
|
5084
|
+
* are omitted.
|
|
4585
5085
|
*/
|
|
4586
|
-
|
|
5086
|
+
get selectedKeys(): ReadonlySet<string>;
|
|
5087
|
+
/** Anchor for range (shift) selection — the last plainly-selected item. */
|
|
5088
|
+
get anchor(): T | undefined;
|
|
5089
|
+
/** Whether "select all" (Cmd/Ctrl+A) is currently permitted. */
|
|
5090
|
+
canSelectAll(): boolean;
|
|
5091
|
+
/** Whether a multi-item selection can be built in the current modes. */
|
|
5092
|
+
canSelectMultiple(): boolean;
|
|
5093
|
+
/** Replace the entire selection with a single item; updates the anchor. */
|
|
5094
|
+
replace(item: T): void;
|
|
5095
|
+
/** Toggle a single item in/out of the selection without replacing it. Anchor unchanged. */
|
|
5096
|
+
toggle(item: T): void;
|
|
5097
|
+
/** Select the contiguous ordered range from the anchor to `item`. Anchor unchanged. */
|
|
5098
|
+
rangeTo(item: T): void;
|
|
5099
|
+
/** Clear the selection. No change event when the selection is already empty. */
|
|
5100
|
+
clear(): void;
|
|
5101
|
+
/** Select every ordered item that passes `isSelectable`. */
|
|
5102
|
+
selectAll(): void;
|
|
4587
5103
|
/**
|
|
4588
|
-
*
|
|
4589
|
-
*
|
|
4590
|
-
* @param id - The id of the newly tickled item, or undefined if nothing is tickled
|
|
5104
|
+
* Replace the selection with many items at once. Requires
|
|
5105
|
+
* `selectionMode="multiple"`, throws otherwise. Updates the anchor.
|
|
4591
5106
|
*/
|
|
4592
|
-
|
|
5107
|
+
selectMany(items: Iterable<T>): void;
|
|
5108
|
+
/** Remove a single item from the selection. */
|
|
5109
|
+
deselect(item: T): void;
|
|
4593
5110
|
/**
|
|
4594
|
-
*
|
|
4595
|
-
*
|
|
4596
|
-
*
|
|
4597
|
-
*
|
|
4598
|
-
|
|
4599
|
-
|
|
4600
|
-
|
|
5111
|
+
* Replace the selection with the items resolved from `keys`. Keys that
|
|
5112
|
+
* `resolve` cannot map, or that resolve to a non-selectable item, are
|
|
5113
|
+
* ignored. `selectionMode="none"` is a no-op. When multi-select is not
|
|
5114
|
+
* available, only the last resolvable key is kept. `onChange` fires once.
|
|
5115
|
+
*/
|
|
5116
|
+
selectKeys(keys: Iterable<string>, resolve: (key: string) => T | undefined): void;
|
|
5117
|
+
/**
|
|
5118
|
+
* Add the items resolved from `keys` to the selection (multi-select only;
|
|
5119
|
+
* a no-op otherwise). `onChange` fires once if anything changed.
|
|
5120
|
+
*/
|
|
5121
|
+
addKeys(keys: Iterable<string>, resolve: (key: string) => T | undefined): void;
|
|
5122
|
+
/**
|
|
5123
|
+
* Remove the items resolved from `keys` from the selection. `onChange`
|
|
5124
|
+
* fires once if anything changed.
|
|
5125
|
+
*/
|
|
5126
|
+
removeKeys(keys: Iterable<string>, resolve: (key: string) => T | undefined): void;
|
|
5127
|
+
/** Route a click on `item` according to the current interaction mode. */
|
|
5128
|
+
handleClick(item: T, gesture: ListSelectionGesture): void;
|
|
5129
|
+
/** Route a Space keypress on `item` according to the current interaction mode. */
|
|
5130
|
+
handleSpace(item: T): void;
|
|
5131
|
+
/** Drop the range-selection anchor (e.g. when the interaction mode changes). */
|
|
5132
|
+
clearAnchor(): void;
|
|
5133
|
+
/**
|
|
5134
|
+
* Re-key the selection across an identity boundary — e.g. when items are
|
|
5135
|
+
* wrapped/unwrapped and the selected Element references change. Silent:
|
|
5136
|
+
* no `onChange` is fired.
|
|
5137
|
+
*/
|
|
5138
|
+
remap(fn: (item: T) => T): void;
|
|
5139
|
+
/**
|
|
5140
|
+
* Hard reset: empty the selection and clear the anchor without firing
|
|
5141
|
+
* `onChange` (e.g. when all items are removed).
|
|
5142
|
+
*/
|
|
5143
|
+
reset(): void;
|
|
5144
|
+
/**
|
|
5145
|
+
* Replace the selection and anchor silently (no `onChange`). Used to
|
|
5146
|
+
* re-key the selection when items are rebuilt from data — e.g. matching
|
|
5147
|
+
* new elements to previously selected keys.
|
|
5148
|
+
*/
|
|
5149
|
+
seed(items: Iterable<T>, anchor?: T): void;
|
|
5150
|
+
}
|
|
5151
|
+
//#endregion
|
|
5152
|
+
//#region src/interaction/tickled-controller.d.ts
|
|
5153
|
+
/**
|
|
5154
|
+
* Represents an item that can be tickled (highlighted via hover or keyboard navigation)
|
|
5155
|
+
*/
|
|
5156
|
+
type TickledItem<T = unknown> = {
|
|
5157
|
+
/**
|
|
5158
|
+
* Unique identifier for the item (e.g., index, id, path)
|
|
5159
|
+
*/
|
|
5160
|
+
readonly id: T;
|
|
5161
|
+
/**
|
|
5162
|
+
* Whether the item is currently enabled/interactive
|
|
5163
|
+
*/
|
|
5164
|
+
readonly enabled?: boolean;
|
|
5165
|
+
};
|
|
5166
|
+
/**
|
|
5167
|
+
* Input mode determines which mechanism controls the tickled state
|
|
5168
|
+
*/
|
|
5169
|
+
type InputMode = `keyboard` | `mouse`;
|
|
5170
|
+
/**
|
|
5171
|
+
* Configuration for TickledController
|
|
5172
|
+
*/
|
|
5173
|
+
type TickledControllerConfig<T> = {
|
|
5174
|
+
/**
|
|
5175
|
+
* Function to retrieve all items that can be tickled
|
|
5176
|
+
*/
|
|
5177
|
+
getItems: () => ReadonlyArray<TickledItem<T>>;
|
|
5178
|
+
/**
|
|
5179
|
+
* Optional callback when an item becomes tickled
|
|
5180
|
+
* Use this for side effects like opening submenus
|
|
5181
|
+
* @param id - The id of the newly tickled item, or undefined if nothing is tickled
|
|
5182
|
+
*/
|
|
5183
|
+
onTickle?: (id: T | undefined) => void;
|
|
5184
|
+
/**
|
|
5185
|
+
* Optional callback fired after any state change (tickled id or input mode)
|
|
5186
|
+
* Use this to sync DOM attributes for slotted content that can't use reactive rendering
|
|
5187
|
+
*
|
|
5188
|
+
* For components that render items directly, this is usually not needed as
|
|
5189
|
+
* Lit's reactive rendering will handle updates automatically via requestUpdate()
|
|
5190
|
+
*
|
|
5191
|
+
* @example
|
|
4601
5192
|
* ```ts
|
|
4602
5193
|
* onStateChange: () => {
|
|
4603
5194
|
* // Sync data-tickled attributes for slotted items
|
|
@@ -4700,6 +5291,17 @@ declare class TickledController<T = number> implements ReactiveController {
|
|
|
4700
5291
|
* Get the currently tickled item id
|
|
4701
5292
|
*/
|
|
4702
5293
|
get tickledId(): T | undefined;
|
|
5294
|
+
/**
|
|
5295
|
+
* The item currently under the cursor, or `undefined`. Alias of `tickledId`
|
|
5296
|
+
* for parity with other controllers.
|
|
5297
|
+
*/
|
|
5298
|
+
get current(): T | undefined;
|
|
5299
|
+
/**
|
|
5300
|
+
* Move the cursor programmatically (e.g. to reveal a match or re-seat it
|
|
5301
|
+
* after the item set changed). Does not change the input mode. Alias of
|
|
5302
|
+
* `setTickled`.
|
|
5303
|
+
*/
|
|
5304
|
+
focus(id: T | undefined): void;
|
|
4703
5305
|
/**
|
|
4704
5306
|
* Check if a specific item is tickled
|
|
4705
5307
|
*/
|
|
@@ -4752,6 +5354,268 @@ declare class TickledController<T = number> implements ReactiveController {
|
|
|
4752
5354
|
setInputMode(mode: InputMode): void;
|
|
4753
5355
|
}
|
|
4754
5356
|
//#endregion
|
|
5357
|
+
//#region src/grid-list/grid-list.d.ts
|
|
5358
|
+
declare class GridListElement extends LitElement {
|
|
5359
|
+
#private;
|
|
5360
|
+
static styles: CSSResult[];
|
|
5361
|
+
selectionMode: ListSelectionMode;
|
|
5362
|
+
interactionMode: ListInteractionMode;
|
|
5363
|
+
itemSize: number;
|
|
5364
|
+
gap: number;
|
|
5365
|
+
/**
|
|
5366
|
+
* Layout / scroll direction.
|
|
5367
|
+
* - `grid` (default): items wrap across as many columns as fit, scrolls vertically.
|
|
5368
|
+
* - `row`: a single row of items, scrolls horizontally.
|
|
5369
|
+
* - `column`: a single column of items, scrolls vertically.
|
|
5370
|
+
*/
|
|
5371
|
+
orientation: GridListOrientation;
|
|
5372
|
+
/**
|
|
5373
|
+
* How the caption relates to the content — see {@link GridListCaptionStyle}.
|
|
5374
|
+
* - `hidden`: no caption.
|
|
5375
|
+
* - `separate`: detached label below the square, each highlighted on its own.
|
|
5376
|
+
* - `under` (default): one box, content on top, caption strip below it inside.
|
|
5377
|
+
* - `overlaid`: caption floats over the content.
|
|
5378
|
+
*/
|
|
5379
|
+
captionStyle: GridListCaptionStyle;
|
|
5380
|
+
/** Horizontal alignment of the caption text: `left`, `middle` (default), `right`. */
|
|
5381
|
+
captionAlign: GridListCaptionAlign;
|
|
5382
|
+
/** `overlaid` only — vertical placement: `top`, `middle`, `bottom` (default). */
|
|
5383
|
+
captionPosition: GridListCaptionPosition;
|
|
5384
|
+
/** `overlaid` only — backdrop behind the caption: `scrim` (default), `gradient`, `blur`, `none`. */
|
|
5385
|
+
captionBackdrop: GridListCaptionBackdrop;
|
|
5386
|
+
/**
|
|
5387
|
+
* Height reserved for the caption in `separate` / `under` styles, in pixels.
|
|
5388
|
+
* Ignored by `overlaid` and `hidden`.
|
|
5389
|
+
*/
|
|
5390
|
+
captionHeight: number;
|
|
5391
|
+
itemWrap: `stop` | `wrap`;
|
|
5392
|
+
/**
|
|
5393
|
+
* Predicate used by incremental filter-search (and callable directly). Items
|
|
5394
|
+
* for which it returns `false` are removed from layout and navigation.
|
|
5395
|
+
*/
|
|
5396
|
+
filterPredicate: ((el: Element) => boolean) | undefined;
|
|
5397
|
+
/**
|
|
5398
|
+
* Space-separated subset of `navigate select filter` — limits which
|
|
5399
|
+
* incremental-search modes are offered (as commands and in-popover switches).
|
|
5400
|
+
* Unset ⇒ all three; empty ⇒ search disabled. See `docs/infra-incremental.md`.
|
|
5401
|
+
*/
|
|
5402
|
+
searchModes: string | undefined;
|
|
5403
|
+
private _scrollTop;
|
|
5404
|
+
private _scrollLeft;
|
|
5405
|
+
private _viewportHeight;
|
|
5406
|
+
private _viewportWidth;
|
|
5407
|
+
readonly selection: ListSelectionController<Element>;
|
|
5408
|
+
readonly tickled: TickledController<Element>;
|
|
5409
|
+
/** Incremental search (navigate / select / filter). See `docs/infra-incremental.md`. */
|
|
5410
|
+
readonly search: ListSearchController<Element>;
|
|
5411
|
+
/** Command registry carrying this grid's `list.search.*` commands. */
|
|
5412
|
+
get registry(): CommandRegistry<unknown> | undefined;
|
|
5413
|
+
connectedCallback(): void;
|
|
5414
|
+
disconnectedCallback(): void;
|
|
5415
|
+
protected firstUpdated(): void;
|
|
5416
|
+
protected willUpdate(changed: PropertyValues<this>): void;
|
|
5417
|
+
protected updated(changed: PropertyValues<this>): void;
|
|
5418
|
+
private _getVisibleItems;
|
|
5419
|
+
get count(): number;
|
|
5420
|
+
/**
|
|
5421
|
+
* Number of cells currently rendered in the shadow DOM. With virtualization
|
|
5422
|
+
* this is roughly the visible rows plus overscan, regardless of how large
|
|
5423
|
+
* `count` is — useful for demos/diagnostics.
|
|
5424
|
+
*/
|
|
5425
|
+
get renderedCount(): number;
|
|
5426
|
+
get selectedItems(): ReadonlySet<Element>;
|
|
5427
|
+
/** The selection as stable `data-key` / `data-value` strings. */
|
|
5428
|
+
get selectedKeys(): ReadonlySet<string>;
|
|
5429
|
+
select(item: Element): void;
|
|
5430
|
+
selectMany(items: Iterable<Element>): void;
|
|
5431
|
+
deselect(item: Element): void;
|
|
5432
|
+
clearSelection(): void;
|
|
5433
|
+
selectAll(): void;
|
|
5434
|
+
/**
|
|
5435
|
+
* Replace the selection with the items carrying these keys. Unknown keys are
|
|
5436
|
+
* ignored; survives the host rebuilding the item set. Requires each item to
|
|
5437
|
+
* have a `data-key` (or `data-value`).
|
|
5438
|
+
*/
|
|
5439
|
+
selectKeys(keys: Iterable<string>): void;
|
|
5440
|
+
/** Add items by key to the selection (multi-select modes only). */
|
|
5441
|
+
addSelectedKeys(keys: Iterable<string>): void;
|
|
5442
|
+
/** Remove items by key from the selection. */
|
|
5443
|
+
removeSelectedKeys(keys: Iterable<string>): void;
|
|
5444
|
+
/** Move the cursor to the item with this key and scroll it into view. */
|
|
5445
|
+
focusKey(key: string): void;
|
|
5446
|
+
/** The key of the item under the cursor, or `undefined`. */
|
|
5447
|
+
get tickledKey(): string | undefined;
|
|
5448
|
+
getItem(key: string): Element | undefined;
|
|
5449
|
+
getItemByIndex(index: number): Element | undefined;
|
|
5450
|
+
getKey(item: Element): string | undefined;
|
|
5451
|
+
visibleKeys(): string[];
|
|
5452
|
+
private _syncItemStates;
|
|
5453
|
+
private _dispatch;
|
|
5454
|
+
protected render(): ReturnType<typeof html>;
|
|
5455
|
+
private _onKeyDown;
|
|
5456
|
+
}
|
|
5457
|
+
declare global {
|
|
5458
|
+
interface HTMLElementTagNameMap {
|
|
5459
|
+
'ixfx-grid-list': GridListElement;
|
|
5460
|
+
}
|
|
5461
|
+
}
|
|
5462
|
+
interface GridListElement {
|
|
5463
|
+
addEventListener<K extends keyof GridListFullElementEventMap>(type: K, listener: (this: GridListElement, ev: GridListFullElementEventMap[K]) => void, options?: boolean | AddEventListenerOptions): void;
|
|
5464
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
5465
|
+
}
|
|
5466
|
+
//#endregion
|
|
5467
|
+
//#region src/grouped-item-lister/types.d.ts
|
|
5468
|
+
/**
|
|
5469
|
+
* Fired when the selection set changes by any means.
|
|
5470
|
+
* Event name: `select`
|
|
5471
|
+
*/
|
|
5472
|
+
type SubComponentSelectDetail<T> = {
|
|
5473
|
+
readonly selected: ReadonlySet<T>;
|
|
5474
|
+
readonly previous: ReadonlySet<T>;
|
|
5475
|
+
};
|
|
5476
|
+
/**
|
|
5477
|
+
* Fired when an item is explicitly activated (double-click or Enter key).
|
|
5478
|
+
* Event name: `activate`
|
|
5479
|
+
*/
|
|
5480
|
+
type SubComponentActivateDetail<T> = {
|
|
5481
|
+
readonly item: T;
|
|
5482
|
+
};
|
|
5483
|
+
/**
|
|
5484
|
+
* Fired on a raw pointer click before any selection change.
|
|
5485
|
+
* Event name: `item-click`
|
|
5486
|
+
*/
|
|
5487
|
+
type SubComponentItemClickDetail<T> = {
|
|
5488
|
+
readonly item: T;
|
|
5489
|
+
};
|
|
5490
|
+
/**
|
|
5491
|
+
* Fired when the pointer hovers over an item or the keyboard cursor moves to it.
|
|
5492
|
+
* Event name: `tickle`
|
|
5493
|
+
*/
|
|
5494
|
+
type SubComponentTickleDetail<T> = {
|
|
5495
|
+
readonly item: T;
|
|
5496
|
+
};
|
|
5497
|
+
type SubComponentSelectEvent<T> = CustomEvent<SubComponentSelectDetail<T>>;
|
|
5498
|
+
type SubComponentActivateEvent<T> = CustomEvent<SubComponentActivateDetail<T>>;
|
|
5499
|
+
type SubComponentItemClickEvent<T> = CustomEvent<SubComponentItemClickDetail<T>>;
|
|
5500
|
+
type SubComponentTickleEvent<T> = CustomEvent<SubComponentTickleDetail<T>>;
|
|
5501
|
+
interface IGroupedSubComponentEventMap<T> {
|
|
5502
|
+
'select': SubComponentSelectEvent<T>;
|
|
5503
|
+
'activate': SubComponentActivateEvent<T>;
|
|
5504
|
+
'item-click': SubComponentItemClickEvent<T>;
|
|
5505
|
+
'tickle': SubComponentTickleEvent<T>;
|
|
5506
|
+
}
|
|
5507
|
+
/**
|
|
5508
|
+
* Contract that sub-components passed to `ixfx-grouped-item-lister` must satisfy.
|
|
5509
|
+
*
|
|
5510
|
+
* All four events (`select`, `activate`, `item-click`, `tickle`) must bubble and be composed
|
|
5511
|
+
* so they propagate through the lister's light DOM to external listeners.
|
|
5512
|
+
*/
|
|
5513
|
+
interface IGroupedSubComponent<T> extends HTMLElement {
|
|
5514
|
+
/** Replace the full item list. Called whenever the lister's items or grouping changes. */
|
|
5515
|
+
setItems: (items: readonly T[]) => void;
|
|
5516
|
+
/** Clear the current selection without firing a `select` event (avoids re-entrant loops). */
|
|
5517
|
+
clearSelection: () => void;
|
|
5518
|
+
/** The current selection set. */
|
|
5519
|
+
readonly selectedItems: ReadonlySet<T>;
|
|
5520
|
+
/** Controls how many items can be selected simultaneously. */
|
|
5521
|
+
selectionMode: ListSelectionMode;
|
|
5522
|
+
/**
|
|
5523
|
+
* Forward a command (e.g. sort-order change) to this sub-component.
|
|
5524
|
+
* Uses `CommandId` from `@clinth/ui-commands` for interoperability.
|
|
5525
|
+
*/
|
|
5526
|
+
dispatch: (commandId: CommandId, args?: Record<string, unknown>) => void;
|
|
5527
|
+
addEventListener: (<K extends keyof IGroupedSubComponentEventMap<T>>(type: K, listener: (event: IGroupedSubComponentEventMap<T>[K]) => void, options?: boolean | AddEventListenerOptions) => void) & ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);
|
|
5528
|
+
}
|
|
5529
|
+
/**
|
|
5530
|
+
* Factory that creates a sub-component for a given group.
|
|
5531
|
+
* Called once per group (or once with `undefined` in ungrouped mode).
|
|
5532
|
+
*/
|
|
5533
|
+
type SubComponentFactory<T> = (groupKey: string | undefined) => HTMLElement & IGroupedSubComponent<T>;
|
|
5534
|
+
/**
|
|
5535
|
+
* Fired by `ixfx-grouped-item-lister` after any sub-component fires `select`.
|
|
5536
|
+
* Carries the full cross-group selection union and the key of the group whose
|
|
5537
|
+
* selection just changed (or `undefined` in ungrouped mode).
|
|
5538
|
+
*/
|
|
5539
|
+
type GroupedSelectDetail<T> = {
|
|
5540
|
+
readonly selected: ReadonlySet<T>;
|
|
5541
|
+
readonly groupKey: string | undefined;
|
|
5542
|
+
};
|
|
5543
|
+
type GroupedSelectEvent<T> = CustomEvent<GroupedSelectDetail<T>>;
|
|
5544
|
+
interface GroupedItemListerElementEventMap<T> {
|
|
5545
|
+
'grouped-select': GroupedSelectEvent<T>;
|
|
5546
|
+
}
|
|
5547
|
+
//#endregion
|
|
5548
|
+
//#region src/panel/panel.d.ts
|
|
5549
|
+
/** Backwards-compatible aliases: canonical types now live in `../titlebar/titlebar.js`. */
|
|
5550
|
+
type PanelOrientation = TitlebarOrientation;
|
|
5551
|
+
type PanelVariant = TitlebarVariant;
|
|
5552
|
+
type PanelToggleInteraction = TitlebarToggleInteraction;
|
|
5553
|
+
type PanelToggleDetail = TitlebarToggleDetail;
|
|
5554
|
+
type PanelToggleEvent = TitlebarToggleEvent;
|
|
5555
|
+
type PanelCloseEvent = TitlebarCloseEvent;
|
|
5556
|
+
interface PanelElementEventMap {
|
|
5557
|
+
toggle: PanelToggleEvent;
|
|
5558
|
+
close: PanelCloseEvent;
|
|
5559
|
+
}
|
|
5560
|
+
declare class PanelElement extends LitElement {
|
|
5561
|
+
collapsed: boolean;
|
|
5562
|
+
orientation: PanelOrientation;
|
|
5563
|
+
closable: boolean;
|
|
5564
|
+
/** Show the collapse/expand caret and enable toggle behaviour. Defaults to true so existing panels stay collapsible. */
|
|
5565
|
+
collapsible: boolean;
|
|
5566
|
+
title: string;
|
|
5567
|
+
iconName: string;
|
|
5568
|
+
toggleInteraction: PanelToggleInteraction;
|
|
5569
|
+
variant: PanelVariant;
|
|
5570
|
+
/** Suppress the titlebar entirely (content-only chrome, e.g. dock tabbed mode). */
|
|
5571
|
+
hideTitlebar: boolean;
|
|
5572
|
+
private _onTitlebarToggle;
|
|
5573
|
+
private _onCloseClick;
|
|
5574
|
+
protected render(): TemplateResult<1>;
|
|
5575
|
+
static styles: CSSResult[];
|
|
5576
|
+
}
|
|
5577
|
+
declare global {
|
|
5578
|
+
interface HTMLElementTagNameMap {
|
|
5579
|
+
'ixfx-panel': PanelElement;
|
|
5580
|
+
}
|
|
5581
|
+
}
|
|
5582
|
+
interface PanelElement {
|
|
5583
|
+
addEventListener: (<K extends keyof PanelElementEventMap>(type: K, listener: (this: PanelElement, event: PanelElementEventMap[K]) => void, options?: boolean | AddEventListenerOptions) => void) & ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);
|
|
5584
|
+
}
|
|
5585
|
+
//#endregion
|
|
5586
|
+
//#region src/grouped-item-lister/grouped-item-lister.d.ts
|
|
5587
|
+
declare class GroupedItemListerElement<T = unknown> extends LitElement {
|
|
5588
|
+
#private;
|
|
5589
|
+
grouped: boolean;
|
|
5590
|
+
crossGroupSelection: boolean;
|
|
5591
|
+
get groupBy(): ((item: T) => string) | undefined;
|
|
5592
|
+
set groupBy(value: ((item: T) => string) | undefined);
|
|
5593
|
+
get factory(): SubComponentFactory<T> | undefined;
|
|
5594
|
+
set factory(value: SubComponentFactory<T> | undefined);
|
|
5595
|
+
get provider(): IDataProvider<void, T> | undefined;
|
|
5596
|
+
set provider(value: IDataProvider<void, T> | undefined);
|
|
5597
|
+
/** The union of all selected items across every sub-component. */
|
|
5598
|
+
get selectedItems(): ReadonlySet<T>;
|
|
5599
|
+
/**
|
|
5600
|
+
* Forward a command to all live sub-components.
|
|
5601
|
+
* Use this to propagate changes like sort order, filter state, or view mode.
|
|
5602
|
+
*/
|
|
5603
|
+
dispatch(commandId: CommandId, args?: Record<string, unknown>): void;
|
|
5604
|
+
protected createRenderRoot(): this;
|
|
5605
|
+
connectedCallback(): void;
|
|
5606
|
+
disconnectedCallback(): void;
|
|
5607
|
+
protected updated(changed: PropertyValues): void;
|
|
5608
|
+
protected render(): typeof nothing | TemplateResult<1>;
|
|
5609
|
+
}
|
|
5610
|
+
declare global {
|
|
5611
|
+
interface HTMLElementTagNameMap {
|
|
5612
|
+
'ixfx-grouped-item-lister': GroupedItemListerElement;
|
|
5613
|
+
}
|
|
5614
|
+
}
|
|
5615
|
+
interface GroupedItemListerElement<T> {
|
|
5616
|
+
addEventListener: (<K extends keyof GroupedItemListerElementEventMap<T>>(type: K, listener: (this: GroupedItemListerElement<T>, event: GroupedItemListerElementEventMap<T>[K]) => void, options?: boolean | AddEventListenerOptions) => void) & ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);
|
|
5617
|
+
}
|
|
5618
|
+
//#endregion
|
|
4755
5619
|
//#region src/tree/tree-base.d.ts
|
|
4756
5620
|
declare class TreeBaseElement extends LitElement implements TreeComponent, TreeSearchHost {
|
|
4757
5621
|
#private;
|
|
@@ -4769,9 +5633,28 @@ declare class TreeBaseElement extends LitElement implements TreeComponent, TreeS
|
|
|
4769
5633
|
filterPredicate: TreeFilterPredicate | undefined;
|
|
4770
5634
|
disableKeyboardNavigation: boolean;
|
|
4771
5635
|
registry: CommandRegistry<unknown> | undefined;
|
|
5636
|
+
/**
|
|
5637
|
+
* Space-separated subset of `navigate select filter` — limits which
|
|
5638
|
+
* incremental-search modes are offered. Unset ⇒ all three; empty ⇒ search
|
|
5639
|
+
* disabled. See `docs/infra-incremental.md`.
|
|
5640
|
+
*/
|
|
5641
|
+
searchModes: string | undefined;
|
|
4772
5642
|
protected _expandedKeys: Set<string>;
|
|
4773
5643
|
protected tickled: TickledController<string>;
|
|
4774
5644
|
protected _focusedDepth: number;
|
|
5645
|
+
/** Incremental search (navigate / select / filter). See `docs/infra-incremental.md`. */
|
|
5646
|
+
readonly search: ListSearchController<{
|
|
5647
|
+
node: TreeNode;
|
|
5648
|
+
depth: number;
|
|
5649
|
+
}>;
|
|
5650
|
+
willUpdate(changedProps: PropertyValues): void;
|
|
5651
|
+
/** True while `node` is a fading ghost row (removed / collapsed, still animating out). */
|
|
5652
|
+
protected _isLeaving(node: TreeNode): boolean;
|
|
5653
|
+
/**
|
|
5654
|
+
* True when `filterPredicate` is set and neither `node` nor any descendant
|
|
5655
|
+
* matches — the row should carry the `filtered` class (`display: none`).
|
|
5656
|
+
*/
|
|
5657
|
+
protected _isFilteredOut(node: TreeNode, depth: number): boolean;
|
|
4775
5658
|
updated(changedProps: PropertyValues): void;
|
|
4776
5659
|
connectedCallback(): void;
|
|
4777
5660
|
disconnectedCallback(): void;
|
|
@@ -4784,16 +5667,20 @@ declare class TreeBaseElement extends LitElement implements TreeComponent, TreeS
|
|
|
4784
5667
|
deselectAll(): void;
|
|
4785
5668
|
navigateTo(keys: readonly string[]): boolean;
|
|
4786
5669
|
navigateToNode(predicate: (node: TreeNode) => boolean): boolean;
|
|
5670
|
+
/** Expand ancestors + move the cursor to `key`, without touching the selection (search "navigate" mode). */
|
|
5671
|
+
revealKey(key: string): boolean;
|
|
5672
|
+
/** Replace the selection with `nodes` (subject to `selectionFilter`) — search "select" mode. */
|
|
5673
|
+
selectMany(nodes: Iterable<TreeNode>): void;
|
|
4787
5674
|
getNodes(): ReadonlyArray<{
|
|
4788
5675
|
node: TreeNode;
|
|
4789
5676
|
depth: number;
|
|
4790
5677
|
}>;
|
|
4791
|
-
protected renderNodeContent(node: TreeNode,
|
|
5678
|
+
protected renderNodeContent(node: TreeNode, depth: number): TemplateResult | typeof nothing;
|
|
4792
5679
|
protected _handleItemClick(node: TreeNode, depth: number, event?: MouseEvent): void;
|
|
4793
5680
|
protected _handleCheckboxClick(event: MouseEvent, node: TreeNode, _depth: number): void;
|
|
4794
5681
|
protected _isSelected(node: TreeNode): boolean;
|
|
4795
5682
|
protected _isFocused(node: TreeNode): boolean;
|
|
4796
|
-
protected _isExpanded(node: TreeNode): boolean;
|
|
5683
|
+
protected _isExpanded(node: TreeNode, depth?: number): boolean;
|
|
4797
5684
|
protected get _pendingNode(): TreeNode | undefined;
|
|
4798
5685
|
protected renderLoadingIndicator(): TemplateResult | typeof nothing;
|
|
4799
5686
|
protected render(): TemplateResult<1>;
|
|
@@ -5046,360 +5933,191 @@ declare class IxfxHexEditorElement extends LitElement {
|
|
|
5046
5933
|
private _handleBackspace;
|
|
5047
5934
|
private _handleValueEntry;
|
|
5048
5935
|
private _commitDecimalValue;
|
|
5049
|
-
private _advanceCursor;
|
|
5050
|
-
private _dispatchChangeEvent;
|
|
5051
|
-
private _dispatchSelectEvent;
|
|
5052
|
-
private _copy;
|
|
5053
|
-
private _paste;
|
|
5054
|
-
private _parseHexString;
|
|
5055
|
-
private _getColHeaders;
|
|
5056
|
-
private _isRowShaded;
|
|
5057
|
-
private _isHexShaded;
|
|
5058
|
-
private _isTextShaded;
|
|
5059
|
-
protected render(): TemplateResult<1>;
|
|
5060
|
-
private _renderRow;
|
|
5061
|
-
private _renderColumn;
|
|
5062
|
-
private _renderHexCell;
|
|
5063
|
-
private _renderTextChar;
|
|
5064
|
-
}
|
|
5065
|
-
type HexChangeDetail = {
|
|
5066
|
-
readonly diff: Diff;
|
|
5067
|
-
};
|
|
5068
|
-
type HexChangeEvent = CustomEvent<HexChangeDetail>;
|
|
5069
|
-
type SingleSelectEventDetail = {
|
|
5070
|
-
readonly type: `single`;
|
|
5071
|
-
readonly position: number;
|
|
5072
|
-
};
|
|
5073
|
-
type ContiguousSelectEventDetail = {
|
|
5074
|
-
readonly type: `contiguous`;
|
|
5075
|
-
readonly start: number;
|
|
5076
|
-
readonly end: number;
|
|
5077
|
-
};
|
|
5078
|
-
type RectangularSelectEventDetail = {
|
|
5079
|
-
readonly type: `rectangular`;
|
|
5080
|
-
readonly x: number;
|
|
5081
|
-
readonly y: number;
|
|
5082
|
-
readonly width: number;
|
|
5083
|
-
readonly height: number;
|
|
5084
|
-
};
|
|
5085
|
-
type NoneSelectEventDetail = {
|
|
5086
|
-
readonly type: `none`;
|
|
5087
|
-
};
|
|
5088
|
-
type SelectEventDetail = SingleSelectEventDetail | ContiguousSelectEventDetail | RectangularSelectEventDetail | NoneSelectEventDetail;
|
|
5089
|
-
declare global {
|
|
5090
|
-
interface HTMLElementTagNameMap {
|
|
5091
|
-
'ixfx-hex-editor': IxfxHexEditorElement;
|
|
5092
|
-
}
|
|
5093
|
-
}
|
|
5094
|
-
//#endregion
|
|
5095
|
-
//#region src/icons/defaults.d.ts
|
|
5096
|
-
/**
|
|
5097
|
-
* Chevron pointing down. Used for split-button dropdown toggle.
|
|
5098
|
-
* fill="currentColor" so it inherits CSS color.
|
|
5099
|
-
*/
|
|
5100
|
-
declare const ICON_CHEVRON_DOWN = "<svg viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z\"/></svg>";
|
|
5101
|
-
/**
|
|
5102
|
-
* Caret pointing right. Used for tree-basic expand indicator as a CSS mask.
|
|
5103
|
-
* fill="black" is correct for CSS mask-image use (shape only, color comes from background-color).
|
|
5104
|
-
*/
|
|
5105
|
-
declare const ICON_CARET_RIGHT = "<svg viewBox=\"0 0 24 24\" fill=\"black\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10 7l6 5-6 5V7z\"/></svg>";
|
|
5106
|
-
/**
|
|
5107
|
-
* Checkmark. Useful for menu-check-item or confirmation states.
|
|
5108
|
-
* fill="currentColor" so it inherits CSS color.
|
|
5109
|
-
*/
|
|
5110
|
-
declare const ICON_CHECK = "<svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z\"/></svg>";
|
|
5111
|
-
/**
|
|
5112
|
-
* Close / X icon. Useful for dialogs, notifications, dismissible elements.
|
|
5113
|
-
* fill="currentColor" so it inherits CSS color.
|
|
5114
|
-
*/
|
|
5115
|
-
declare const ICON_CLOSE = "<svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z\"/></svg>";
|
|
5116
|
-
//#endregion
|
|
5117
|
-
//#region src/icons/registry.d.ts
|
|
5118
|
-
declare const iconBus: EventTarget;
|
|
5119
|
-
type IconChangedDetail = {
|
|
5120
|
-
readonly name: string;
|
|
5121
|
-
};
|
|
5122
|
-
type IconChangedEvent = CustomEvent<IconChangedDetail>;
|
|
5123
|
-
type IconEntry = {
|
|
5124
|
-
kind: `svg`;
|
|
5125
|
-
svg: string;
|
|
5126
|
-
} | {
|
|
5127
|
-
kind: `font`;
|
|
5128
|
-
char: string;
|
|
5129
|
-
};
|
|
5130
|
-
declare function registerIcon(name: string, svg: string): void;
|
|
5131
|
-
declare function registerFontIcon(name: string, glyph: string | number): void;
|
|
5132
|
-
declare function getIcon(name: string): string | undefined;
|
|
5133
|
-
declare function getIconEntry(name: string): IconEntry | undefined;
|
|
5134
|
-
declare function hasIcon(name: string): boolean;
|
|
5135
|
-
declare function setIconFont(fontFamily: string): void;
|
|
5136
|
-
declare function getIconFont(): string | undefined;
|
|
5137
|
-
declare function svgToDataUri(svg: string): string;
|
|
5138
|
-
//#endregion
|
|
5139
|
-
//#region src/incr-search/types.d.ts
|
|
5140
|
-
type IncrSearchResult<T> = {
|
|
5141
|
-
readonly item: T;
|
|
5142
|
-
readonly positions: ReadonlySet<number>;
|
|
5143
|
-
readonly score: number;
|
|
5144
|
-
};
|
|
5145
|
-
type IncrSearchState<T> = {
|
|
5146
|
-
readonly query: string;
|
|
5147
|
-
readonly results: ReadonlyArray<IncrSearchResult<T>>;
|
|
5148
|
-
readonly positionsByItem: ReadonlyMap<T, ReadonlySet<number>>;
|
|
5149
|
-
};
|
|
5150
|
-
type IncrSearchChangeCallback<T> = (state: IncrSearchState<T>) => void;
|
|
5151
|
-
type IncrSearchOptions<T> = {
|
|
5152
|
-
readonly items?: readonly T[];
|
|
5153
|
-
readonly selector?: (item: T) => string;
|
|
5154
|
-
readonly fzf?: Partial<FzfOptions<T>>;
|
|
5155
|
-
readonly onChange?: IncrSearchChangeCallback<T>;
|
|
5156
|
-
};
|
|
5157
|
-
type IncrSearch<T> = {
|
|
5158
|
-
readonly setItems: (items: readonly T[], signal?: AbortSignal) => Promise<void>;
|
|
5159
|
-
readonly setQuery: (query: string, signal?: AbortSignal) => Promise<IncrSearchState<T>>;
|
|
5160
|
-
readonly clearQuery: () => Promise<void>;
|
|
5161
|
-
readonly state: IncrSearchState<T>;
|
|
5162
|
-
readonly onChange: (cb: IncrSearchChangeCallback<T>) => () => void;
|
|
5163
|
-
readonly dispose: () => void;
|
|
5164
|
-
};
|
|
5165
|
-
type FuzzySearchOptions<T> = {
|
|
5166
|
-
readonly selector?: (item: T) => string;
|
|
5167
|
-
readonly fzf?: Partial<FzfOptions<T>>;
|
|
5168
|
-
};
|
|
5169
|
-
type FuzzySearch<T> = {
|
|
5170
|
-
readonly find: (query: string) => ReadonlyArray<IncrSearchResult<T>>;
|
|
5171
|
-
readonly items: readonly T[];
|
|
5172
|
-
};
|
|
5173
|
-
type HighlightTarget = {
|
|
5174
|
-
readonly element: Element;
|
|
5175
|
-
readonly text?: string;
|
|
5176
|
-
readonly positions: ReadonlySet<number>;
|
|
5177
|
-
};
|
|
5178
|
-
type HighlightOptions = {
|
|
5179
|
-
readonly key?: string;
|
|
5180
|
-
};
|
|
5181
|
-
type ElementIncrSearchOptions = {
|
|
5182
|
-
readonly container: Element;
|
|
5183
|
-
readonly itemSelector: string;
|
|
5184
|
-
readonly getLabel?: (el: Element) => string;
|
|
5185
|
-
readonly getKey?: (el: Element) => string;
|
|
5186
|
-
readonly labelSelector?: string;
|
|
5187
|
-
readonly highlightKey?: string;
|
|
5188
|
-
readonly fzf?: Partial<FzfOptions<{
|
|
5189
|
-
key: string;
|
|
5190
|
-
label: string;
|
|
5191
|
-
}>>;
|
|
5192
|
-
readonly onChange?: IncrSearchChangeCallback<{
|
|
5193
|
-
key: string;
|
|
5194
|
-
label: string;
|
|
5195
|
-
}>;
|
|
5196
|
-
};
|
|
5197
|
-
//#endregion
|
|
5198
|
-
//#region src/incr-search/ac-adapter.d.ts
|
|
5199
|
-
/**
|
|
5200
|
-
* Creates an ixfx-ac-text-compatible `completionProvider` function from a
|
|
5201
|
-
* static item list. Uses synchronous fuzzy search wrapped in a Promise so it
|
|
5202
|
-
* fits the async provider signature.
|
|
5203
|
-
*
|
|
5204
|
-
* Each returned item has `positions` populated with matched character indices,
|
|
5205
|
-
* which `ixfx-ac-text` uses to render CSS Custom Highlights on the label.
|
|
5206
|
-
*
|
|
5207
|
-
* Empty query returns all items in original order (no positions).
|
|
5208
|
-
* A cancelled signal causes the returned promise to reject with an AbortError.
|
|
5209
|
-
*/
|
|
5210
|
-
declare function createAcCompletionProvider<T extends {
|
|
5211
|
-
label: string;
|
|
5212
|
-
}>(items: readonly T[], options?: Pick<FuzzySearchOptions<T>, `selector`>): (query: string, signal: AbortSignal) => Promise<Array<T & {
|
|
5213
|
-
positions: ReadonlySet<number>;
|
|
5214
|
-
}>>;
|
|
5215
|
-
//#endregion
|
|
5216
|
-
//#region src/incr-search/controller-tree.d.ts
|
|
5217
|
-
type IncrSearchTreeOptions = {
|
|
5218
|
-
selector: (item: {
|
|
5219
|
-
node: TreeNode;
|
|
5220
|
-
depth: number;
|
|
5221
|
-
}) => string;
|
|
5222
|
-
/**
|
|
5223
|
-
* CSS selector for the label elements inside the shadow root.
|
|
5224
|
-
* Defaults to `.tree-label` (suitable for ixfx-tree-list).
|
|
5225
|
-
* Use `.label` for ixfx-miller-list.
|
|
5226
|
-
*/
|
|
5227
|
-
labelSelector?: string;
|
|
5228
|
-
highlightKey?: string;
|
|
5229
|
-
input?: HTMLInputElement;
|
|
5230
|
-
fzf?: Partial<FzfOptions<{
|
|
5231
|
-
node: TreeNode;
|
|
5232
|
-
depth: number;
|
|
5233
|
-
}>>;
|
|
5234
|
-
};
|
|
5235
|
-
/**
|
|
5236
|
-
* Incremental-search controller for any component implementing `TreeSearchHost`
|
|
5237
|
-
* (i.e. `ixfx-tree-list`, `ixfx-miller-list`, `ixfx-crumb-navigation`).
|
|
5238
|
-
*
|
|
5239
|
-
* Replaces the previous separate `IncrSearchTreeController` / `IncrSearchMillerController`
|
|
5240
|
-
* classes — the unified `TreeFilterPredicate` (with depth) means one implementation works
|
|
5241
|
-
* for all tree-like components.
|
|
5242
|
-
*
|
|
5243
|
-
* @example Using with ixfx-tree-list:
|
|
5244
|
-
* ```typescript
|
|
5245
|
-
* const ctrl = new IncrSearchTreeController(myTreeList, {
|
|
5246
|
-
* selector: item => item.node.item.label,
|
|
5247
|
-
* });
|
|
5248
|
-
* ctrl.connect();
|
|
5249
|
-
* ```
|
|
5250
|
-
*
|
|
5251
|
-
* @example Using with ixfx-miller-list (different label selector):
|
|
5252
|
-
* ```typescript
|
|
5253
|
-
* const ctrl = new IncrSearchTreeController(myMillerList, {
|
|
5254
|
-
* selector: item => item.node.item.label,
|
|
5255
|
-
* labelSelector: '.label',
|
|
5256
|
-
* });
|
|
5257
|
-
* ctrl.connect();
|
|
5258
|
-
* ```
|
|
5259
|
-
*/
|
|
5260
|
-
declare class IncrSearchTreeController {
|
|
5261
|
-
#private;
|
|
5262
|
-
constructor(el: TreeSearchHost, opts: IncrSearchTreeOptions);
|
|
5263
|
-
connect(): void;
|
|
5264
|
-
disconnect(): void;
|
|
5265
|
-
setQuery(query: string): Promise<void>;
|
|
5266
|
-
clearQuery(): Promise<void>;
|
|
5936
|
+
private _advanceCursor;
|
|
5937
|
+
private _dispatchChangeEvent;
|
|
5938
|
+
private _dispatchSelectEvent;
|
|
5939
|
+
private _copy;
|
|
5940
|
+
private _paste;
|
|
5941
|
+
private _parseHexString;
|
|
5942
|
+
private _getColHeaders;
|
|
5943
|
+
private _isRowShaded;
|
|
5944
|
+
private _isHexShaded;
|
|
5945
|
+
private _isTextShaded;
|
|
5946
|
+
protected render(): TemplateResult<1>;
|
|
5947
|
+
private _renderRow;
|
|
5948
|
+
private _renderColumn;
|
|
5949
|
+
private _renderHexCell;
|
|
5950
|
+
private _renderTextChar;
|
|
5267
5951
|
}
|
|
5268
|
-
|
|
5269
|
-
|
|
5270
|
-
type ElementItem = {
|
|
5271
|
-
readonly key: string;
|
|
5272
|
-
readonly label: string;
|
|
5952
|
+
type HexChangeDetail = {
|
|
5953
|
+
readonly diff: Diff;
|
|
5273
5954
|
};
|
|
5274
|
-
type
|
|
5275
|
-
|
|
5276
|
-
readonly
|
|
5277
|
-
readonly
|
|
5278
|
-
readonly onChange: (cb: IncrSearchChangeCallback<ElementItem>) => () => void;
|
|
5279
|
-
readonly dispose: () => void;
|
|
5955
|
+
type HexChangeEvent = CustomEvent<HexChangeDetail>;
|
|
5956
|
+
type SingleSelectEventDetail = {
|
|
5957
|
+
readonly type: `single`;
|
|
5958
|
+
readonly position: number;
|
|
5280
5959
|
};
|
|
5281
|
-
|
|
5282
|
-
|
|
5283
|
-
|
|
5284
|
-
|
|
5285
|
-
|
|
5286
|
-
|
|
5287
|
-
|
|
5288
|
-
|
|
5289
|
-
|
|
5960
|
+
type ContiguousSelectEventDetail = {
|
|
5961
|
+
readonly type: `contiguous`;
|
|
5962
|
+
readonly start: number;
|
|
5963
|
+
readonly end: number;
|
|
5964
|
+
};
|
|
5965
|
+
type RectangularSelectEventDetail = {
|
|
5966
|
+
readonly type: `rectangular`;
|
|
5967
|
+
readonly x: number;
|
|
5968
|
+
readonly y: number;
|
|
5969
|
+
readonly width: number;
|
|
5970
|
+
readonly height: number;
|
|
5971
|
+
};
|
|
5972
|
+
type NoneSelectEventDetail = {
|
|
5973
|
+
readonly type: `none`;
|
|
5974
|
+
};
|
|
5975
|
+
type SelectEventDetail = SingleSelectEventDetail | ContiguousSelectEventDetail | RectangularSelectEventDetail | NoneSelectEventDetail;
|
|
5976
|
+
declare global {
|
|
5977
|
+
interface HTMLElementTagNameMap {
|
|
5978
|
+
'ixfx-hex-editor': IxfxHexEditorElement;
|
|
5979
|
+
}
|
|
5980
|
+
}
|
|
5290
5981
|
//#endregion
|
|
5291
|
-
//#region src/
|
|
5292
|
-
|
|
5982
|
+
//#region src/icons/defaults.d.ts
|
|
5983
|
+
/**
|
|
5984
|
+
* Chevron pointing down. Used for split-button dropdown toggle.
|
|
5985
|
+
* fill="currentColor" so it inherits CSS color.
|
|
5986
|
+
*/
|
|
5987
|
+
declare const ICON_CHEVRON_DOWN = "<svg viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z\"/></svg>";
|
|
5988
|
+
/**
|
|
5989
|
+
* Caret pointing right. Used for tree-basic expand indicator as a CSS mask.
|
|
5990
|
+
* fill="black" is correct for CSS mask-image use (shape only, color comes from background-color).
|
|
5991
|
+
*/
|
|
5992
|
+
declare const ICON_CARET_RIGHT = "<svg viewBox=\"0 0 24 24\" fill=\"black\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10 7l6 5-6 5V7z\"/></svg>";
|
|
5993
|
+
/**
|
|
5994
|
+
* Checkmark. Useful for menu-check-item or confirmation states.
|
|
5995
|
+
* fill="currentColor" so it inherits CSS color.
|
|
5996
|
+
*/
|
|
5997
|
+
declare const ICON_CHECK = "<svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z\"/></svg>";
|
|
5998
|
+
/**
|
|
5999
|
+
* Close / X icon. Useful for dialogs, notifications, dismissible elements.
|
|
6000
|
+
* fill="currentColor" so it inherits CSS color.
|
|
6001
|
+
*/
|
|
6002
|
+
declare const ICON_CLOSE = "<svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z\"/></svg>";
|
|
5293
6003
|
//#endregion
|
|
5294
|
-
//#region src/
|
|
5295
|
-
|
|
5296
|
-
type
|
|
5297
|
-
readonly
|
|
5298
|
-
readonly metaKey: boolean;
|
|
5299
|
-
readonly shiftKey: boolean;
|
|
6004
|
+
//#region src/icons/registry.d.ts
|
|
6005
|
+
declare const iconBus: EventTarget;
|
|
6006
|
+
type IconChangedDetail = {
|
|
6007
|
+
readonly name: string;
|
|
5300
6008
|
};
|
|
5301
|
-
type
|
|
5302
|
-
|
|
5303
|
-
|
|
6009
|
+
type IconChangedEvent = CustomEvent<IconChangedDetail>;
|
|
6010
|
+
type IconEntry = {
|
|
6011
|
+
kind: `svg`;
|
|
6012
|
+
svg: string;
|
|
6013
|
+
} | {
|
|
6014
|
+
kind: `font`;
|
|
6015
|
+
char: string;
|
|
5304
6016
|
};
|
|
6017
|
+
declare function registerIcon(name: string, svg: string): void;
|
|
6018
|
+
declare function registerFontIcon(name: string, glyph: string | number): void;
|
|
6019
|
+
declare function getIcon(name: string): string | undefined;
|
|
6020
|
+
declare function getIconEntry(name: string): IconEntry | undefined;
|
|
6021
|
+
declare function hasIcon(name: string): boolean;
|
|
6022
|
+
declare function setIconFont(fontFamily: string): void;
|
|
6023
|
+
declare function getIconFont(): string | undefined;
|
|
6024
|
+
declare function svgToDataUri(svg: string): string;
|
|
6025
|
+
//#endregion
|
|
6026
|
+
//#region src/interaction/keyed-list.d.ts
|
|
5305
6027
|
/**
|
|
5306
|
-
*
|
|
6028
|
+
* Helpers for key-based selection on the Element-flavoured list components
|
|
6029
|
+
* (`ixfx-vertical-list`, `ixfx-detail-list`, `ixfx-grid-list`).
|
|
5307
6030
|
*
|
|
5308
|
-
*
|
|
5309
|
-
*
|
|
6031
|
+
* A "key" is a stable string the host puts on each item element — `data-key`
|
|
6032
|
+
* (preferred) or `data-value`. It survives the host rebuilding the item set
|
|
6033
|
+
* (re-fetch, re-sort, filter) where raw `Element` references do not.
|
|
5310
6034
|
*/
|
|
5311
|
-
type ListSelectionControllerConfig<T> = {
|
|
5312
|
-
/** Visible items in navigation order — used for range selection and select-all. */
|
|
5313
|
-
readonly getOrderedItems: () => readonly T[];
|
|
5314
|
-
/** Whether an item may join the selection (e.g. reject `not-checked` rows). */
|
|
5315
|
-
readonly isSelectable: (item: T) => boolean;
|
|
5316
|
-
/** Current modes; read on every gesture so property changes apply immediately. */
|
|
5317
|
-
readonly getModes: () => ListSelectionModes;
|
|
5318
|
-
/**
|
|
5319
|
-
* Fired after every selection change. The host syncs DOM state
|
|
5320
|
-
* (`data-selected` / `data-checked`), dispatches `list-select`, and
|
|
5321
|
-
* requests an update.
|
|
5322
|
-
*/
|
|
5323
|
-
readonly onChange: (selected: ReadonlySet<T>, previous: ReadonlySet<T>) => void;
|
|
5324
|
-
};
|
|
5325
|
-
/** Whether the interaction mode allows building a multi-item selection. */
|
|
5326
|
-
declare function isMultiMode(mode: ListInteractionMode): boolean;
|
|
5327
6035
|
/**
|
|
5328
|
-
*
|
|
5329
|
-
*
|
|
5330
|
-
|
|
5331
|
-
|
|
5332
|
-
|
|
5333
|
-
*
|
|
5334
|
-
*
|
|
5335
|
-
*
|
|
5336
|
-
* `ListSelectionController<Element>`.
|
|
6036
|
+
* The stable key for an item element: `data-key`, then `data-value`, else
|
|
6037
|
+
* `undefined`.
|
|
6038
|
+
*/
|
|
6039
|
+
declare function keyForElement(el: Element): string | undefined;
|
|
6040
|
+
/**
|
|
6041
|
+
* A lazily-built key → element index over a container. Rebuilt on first use
|
|
6042
|
+
* and after any child-list mutation under `root`; `invalidate()` forces a
|
|
6043
|
+
* rebuild on the next `get()`.
|
|
5337
6044
|
*
|
|
5338
|
-
* @example
|
|
5339
6045
|
* ```ts
|
|
5340
|
-
*
|
|
5341
|
-
*
|
|
5342
|
-
*
|
|
5343
|
-
*
|
|
5344
|
-
*
|
|
5345
|
-
* this.syncItemStates();
|
|
5346
|
-
* this.dispatchEvent(new CustomEvent(`list-select`, { detail: { selected, previous } }));
|
|
5347
|
-
* },
|
|
5348
|
-
* });
|
|
6046
|
+
* #keyIndex = new KeyedElementIndex(this);
|
|
6047
|
+
* // ...
|
|
6048
|
+
* const el = this.#keyIndex.get(`row-42`);
|
|
6049
|
+
* // on disconnect:
|
|
6050
|
+
* this.#keyIndex.dispose();
|
|
5349
6051
|
* ```
|
|
5350
6052
|
*/
|
|
5351
|
-
declare class
|
|
6053
|
+
declare class KeyedElementIndex {
|
|
5352
6054
|
#private;
|
|
5353
|
-
constructor(config: ListSelectionControllerConfig<T>);
|
|
5354
|
-
/** The current selection set (read-only). */
|
|
5355
|
-
get selected(): ReadonlySet<T>;
|
|
5356
|
-
/** Anchor for range (shift) selection — the last plainly-selected item. */
|
|
5357
|
-
get anchor(): T | undefined;
|
|
5358
|
-
/** Whether "select all" (Cmd/Ctrl+A) is currently permitted. */
|
|
5359
|
-
canSelectAll(): boolean;
|
|
5360
|
-
/** Whether a multi-item selection can be built in the current modes. */
|
|
5361
|
-
canSelectMultiple(): boolean;
|
|
5362
|
-
/** Replace the entire selection with a single item; updates the anchor. */
|
|
5363
|
-
replace(item: T): void;
|
|
5364
|
-
/** Toggle a single item in/out of the selection without replacing it. Anchor unchanged. */
|
|
5365
|
-
toggle(item: T): void;
|
|
5366
|
-
/** Select the contiguous ordered range from the anchor to `item`. Anchor unchanged. */
|
|
5367
|
-
rangeTo(item: T): void;
|
|
5368
|
-
/** Clear the selection. No change event when the selection is already empty. */
|
|
5369
|
-
clear(): void;
|
|
5370
|
-
/** Select every ordered item that passes `isSelectable`. */
|
|
5371
|
-
selectAll(): void;
|
|
5372
|
-
/**
|
|
5373
|
-
* Replace the selection with many items at once. Requires
|
|
5374
|
-
* `selectionMode="multiple"`, throws otherwise. Updates the anchor.
|
|
5375
|
-
*/
|
|
5376
|
-
selectMany(items: Iterable<T>): void;
|
|
5377
|
-
/** Remove a single item from the selection. */
|
|
5378
|
-
deselect(item: T): void;
|
|
5379
|
-
/** Route a click on `item` according to the current interaction mode. */
|
|
5380
|
-
handleClick(item: T, gesture: ListSelectionGesture): void;
|
|
5381
|
-
/** Route a Space keypress on `item` according to the current interaction mode. */
|
|
5382
|
-
handleSpace(item: T): void;
|
|
5383
|
-
/** Drop the range-selection anchor (e.g. when the interaction mode changes). */
|
|
5384
|
-
clearAnchor(): void;
|
|
5385
|
-
/**
|
|
5386
|
-
* Re-key the selection across an identity boundary — e.g. when items are
|
|
5387
|
-
* wrapped/unwrapped and the selected Element references change. Silent:
|
|
5388
|
-
* no `onChange` is fired.
|
|
5389
|
-
*/
|
|
5390
|
-
remap(fn: (item: T) => T): void;
|
|
5391
6055
|
/**
|
|
5392
|
-
*
|
|
5393
|
-
*
|
|
6056
|
+
* @param root Container whose descendants are indexed.
|
|
6057
|
+
* @param itemSelector Which descendants count as items (default: any `[data-key]`).
|
|
5394
6058
|
*/
|
|
5395
|
-
|
|
6059
|
+
constructor(root: Element, itemSelector?: string);
|
|
6060
|
+
/** The element with this key, or `undefined`. First match wins on duplicates. */
|
|
6061
|
+
get(key: string): Element | undefined;
|
|
6062
|
+
/** Force a rebuild on the next `get()` — e.g. after a `data-key` attribute change. */
|
|
6063
|
+
invalidate(): void;
|
|
6064
|
+
/** Stop observing and drop the cache. */
|
|
6065
|
+
dispose(): void;
|
|
6066
|
+
}
|
|
6067
|
+
//#endregion
|
|
6068
|
+
//#region src/interaction/list-item-animation.d.ts
|
|
6069
|
+
/**
|
|
6070
|
+
* Shared insertion / removal animation for the list & tree components.
|
|
6071
|
+
*
|
|
6072
|
+
* Two flavours, because the components split into two layout families:
|
|
6073
|
+
*
|
|
6074
|
+
* - **Flow layouts** (`ixfx-vertical-list`, `ixfx-detail-list`, `ixfx-tree-*`) —
|
|
6075
|
+
* rows sit in normal flow, so a new row can collapse in from zero height and a
|
|
6076
|
+
* leaving row can collapse back to zero, and the rows around it slide to make
|
|
6077
|
+
* or close the gap for free. Use {@link animateListItemIn} /
|
|
6078
|
+
* {@link animateListItemOut} (Web Animations API, exact measured sizes).
|
|
6079
|
+
*
|
|
6080
|
+
* - **Virtualised layouts** (`ixfx-grid-list`, `ixfx-data-grid`) — rows are
|
|
6081
|
+
* absolutely positioned (`transform` / `top`), so collapsing a row's box moves
|
|
6082
|
+
* nothing. Those components instead fade the entering / leaving row with the
|
|
6083
|
+
* {@link listItemFadeKeyframes} keyframes and slide the survivors by
|
|
6084
|
+
* transitioning their position for a short window after the change.
|
|
6085
|
+
*
|
|
6086
|
+
* Everything here is a no-op under `prefers-reduced-motion: reduce`.
|
|
6087
|
+
*/
|
|
6088
|
+
/** Default duration (ms) for both flavours; overridable per call / per component. */
|
|
6089
|
+
declare const LIST_ITEM_MOTION_MS = 200;
|
|
6090
|
+
declare function prefersReducedMotion(): boolean;
|
|
6091
|
+
/**
|
|
6092
|
+
* Opacity keyframes for the virtualised components. Each one adds its own
|
|
6093
|
+
* one-line rule binding `.<row>.ixfx-item-entering` / `.ixfx-item-leaving` to
|
|
6094
|
+
* these, plus a `prefers-reduced-motion` guard on its own selectors.
|
|
6095
|
+
*/
|
|
6096
|
+
declare const listItemFadeKeyframes: CSSResult;
|
|
6097
|
+
interface ListItemMotionOptions {
|
|
5396
6098
|
/**
|
|
5397
|
-
*
|
|
5398
|
-
*
|
|
5399
|
-
*
|
|
6099
|
+
* Animation duration in ms. When omitted, the element's
|
|
6100
|
+
* `--ixfx-list-item-move-duration` custom property is used if set (accepts
|
|
6101
|
+
* `ms` or `s`), otherwise {@link LIST_ITEM_MOTION_MS}.
|
|
5400
6102
|
*/
|
|
5401
|
-
|
|
6103
|
+
duration?: number;
|
|
6104
|
+
/** Which axis collapses — `block` (height, default) or `inline` (width). */
|
|
6105
|
+
axis?: `block` | `inline`;
|
|
6106
|
+
easing?: string;
|
|
5402
6107
|
}
|
|
6108
|
+
/**
|
|
6109
|
+
* Collapse + fade `el` in from nothing to its natural size. Call it just after
|
|
6110
|
+
* the element has been inserted (it must already be laid out at full size so it
|
|
6111
|
+
* can be measured). No-op under reduced motion.
|
|
6112
|
+
*/
|
|
6113
|
+
declare function animateListItemIn(el: HTMLElement, options?: ListItemMotionOptions): Animation | undefined;
|
|
6114
|
+
/**
|
|
6115
|
+
* Collapse + fade `el` out. Resolves once the animation finishes (or straight
|
|
6116
|
+
* away under reduced motion); the caller detaches the element after. The final
|
|
6117
|
+
* collapsed state is held (`fill: forwards`) so there's no flash back to full
|
|
6118
|
+
* size in the gap before removal.
|
|
6119
|
+
*/
|
|
6120
|
+
declare function animateListItemOut(el: HTMLElement, options?: ListItemMotionOptions): Promise<void>;
|
|
5403
6121
|
//#endregion
|
|
5404
6122
|
//#region src/interaction/tickled-styles.d.ts
|
|
5405
6123
|
/**
|
|
@@ -5811,6 +6529,16 @@ type MillerItemDblClickDetail = {
|
|
|
5811
6529
|
node: TreeNode;
|
|
5812
6530
|
depth: number;
|
|
5813
6531
|
};
|
|
6532
|
+
/** Detail for the `rebase` event fired when the view root changes. */
|
|
6533
|
+
type MillerRebaseDetail = {
|
|
6534
|
+
/** The new view root, or `undefined` when the view was restored to the full tree. */
|
|
6535
|
+
viewRoot: TreeNode | undefined;
|
|
6536
|
+
/**
|
|
6537
|
+
* Ancestry chain from the true root down to and including the new view root.
|
|
6538
|
+
* Empty when the view shows the full tree.
|
|
6539
|
+
*/
|
|
6540
|
+
path: Array<TreeNode>;
|
|
6541
|
+
};
|
|
5814
6542
|
/** Detail for the `item-rightclick` event. */
|
|
5815
6543
|
type MillerItemRightClickDetail = {
|
|
5816
6544
|
node: TreeNode;
|
|
@@ -5828,6 +6556,7 @@ type MillerHeaderClickEvent = CustomEvent<MillerHeaderClickDetail>;
|
|
|
5828
6556
|
type MillerItemDblClickEvent = CustomEvent<MillerItemDblClickDetail>;
|
|
5829
6557
|
type MillerItemRightClickEvent = CustomEvent<MillerItemRightClickDetail>;
|
|
5830
6558
|
type MillerHeaderRightClickEvent = CustomEvent<MillerHeaderRightClickDetail>;
|
|
6559
|
+
type MillerRebaseEvent = CustomEvent<MillerRebaseDetail>;
|
|
5831
6560
|
/**
|
|
5832
6561
|
* A snapshot of all display states for a single item in the miller columns.
|
|
5833
6562
|
*
|
|
@@ -5891,6 +6620,29 @@ declare class MillerBaseElement extends LitElement implements TreeComponent, Tre
|
|
|
5891
6620
|
root: TreeNode | undefined;
|
|
5892
6621
|
model: TreeDataModel | undefined;
|
|
5893
6622
|
headers: boolean;
|
|
6623
|
+
/**
|
|
6624
|
+
* When true, the last (rightmost) column grows to fill any remaining
|
|
6625
|
+
* horizontal space in the host. All other columns size to their content
|
|
6626
|
+
* (`max-content`), unless the user has manually resized them.
|
|
6627
|
+
*
|
|
6628
|
+
* When the user clicks into an item in the stretched column and a new
|
|
6629
|
+
* column opens, the previously-last column automatically transitions back
|
|
6630
|
+
* to its content-based width and the new last column stretches instead.
|
|
6631
|
+
* Explicit user-resized widths (via the resize handle) always win over
|
|
6632
|
+
* stretching.
|
|
6633
|
+
*/
|
|
6634
|
+
stretchLastColumn: boolean;
|
|
6635
|
+
/**
|
|
6636
|
+
* Alternative node to use as the display root (Finder-style column-view
|
|
6637
|
+
* rebase). When set, column 0 shows this node's children and all depths,
|
|
6638
|
+
* headers, and key paths are relative to it. When `undefined` (default),
|
|
6639
|
+
* the full `root` tree is shown.
|
|
6640
|
+
*
|
|
6641
|
+
* Prefer `rebaseTo()` / `rebaseUp()` over assigning this directly — they
|
|
6642
|
+
* validate the target and report whether the view changed. Assigning a new
|
|
6643
|
+
* `root` (or receiving one via `model`) silently clears the view root.
|
|
6644
|
+
*/
|
|
6645
|
+
viewRoot: TreeNode | undefined;
|
|
5894
6646
|
/**
|
|
5895
6647
|
* Controls the column-level interaction pattern (how clicks map to column changes).
|
|
5896
6648
|
* This is distinct from `selectionFilter` (which restricts which node kinds are selectable).
|
|
@@ -5906,13 +6658,27 @@ declare class MillerBaseElement extends LitElement implements TreeComponent, Tre
|
|
|
5906
6658
|
*/
|
|
5907
6659
|
loadChildren: LoadChildrenCallback | undefined;
|
|
5908
6660
|
filterPredicate: TreeFilterPredicate | undefined;
|
|
6661
|
+
/**
|
|
6662
|
+
* Space-separated subset of `navigate select filter` — limits which
|
|
6663
|
+
* incremental-search modes are offered. Unset ⇒ all three; empty ⇒ search
|
|
6664
|
+
* disabled. See `docs/infra-incremental.md`.
|
|
6665
|
+
*/
|
|
6666
|
+
searchModes: string | undefined;
|
|
5909
6667
|
protected _columns: TreeNode[][];
|
|
5910
6668
|
protected _loadingDepth: number | undefined;
|
|
5911
6669
|
protected _selectedByDepth: Map<number, TreeNode>;
|
|
5912
6670
|
protected _selectedKeys: Set<string>;
|
|
5913
6671
|
protected _selectedNodes: Set<TreeNode>;
|
|
6672
|
+
/** Incremental search (navigate / select / filter). See `docs/infra-incremental.md`. */
|
|
6673
|
+
readonly search: ListSearchController<{
|
|
6674
|
+
node: TreeNode;
|
|
6675
|
+
depth: number;
|
|
6676
|
+
}>;
|
|
6677
|
+
/** Command registry carrying this component's `list.search.*` commands. */
|
|
6678
|
+
get registry(): CommandRegistry<unknown> | undefined;
|
|
5914
6679
|
tickled: TickledController<string>;
|
|
5915
6680
|
updated(changedProps: PropertyValues): void;
|
|
6681
|
+
connectedCallback(): void;
|
|
5916
6682
|
disconnectedCallback(): void;
|
|
5917
6683
|
getConfig(): MillerConfig;
|
|
5918
6684
|
setConfig(config: MillerConfig): void;
|
|
@@ -5948,17 +6714,41 @@ declare class MillerBaseElement extends LitElement implements TreeComponent, Tre
|
|
|
5948
6714
|
*/
|
|
5949
6715
|
getSelected(): TreeNode[];
|
|
5950
6716
|
/**
|
|
5951
|
-
* Programmatically navigate to a node by key path
|
|
6717
|
+
* Programmatically navigate to a node by key path, relative to the current
|
|
6718
|
+
* view root (rebased or full tree).
|
|
5952
6719
|
*/
|
|
5953
6720
|
navigateTo(keys: readonly string[]): boolean;
|
|
5954
6721
|
/**
|
|
5955
6722
|
* Programmatically navigate to the first node (breadth-first) matching a predicate.
|
|
5956
6723
|
*/
|
|
5957
6724
|
navigateToNode(predicate: (node: TreeNode) => boolean): boolean;
|
|
6725
|
+
/** Open the columns down to `key` and move the cursor to it, without changing the selection (search "navigate" mode). */
|
|
6726
|
+
revealKey(key: string): boolean;
|
|
6727
|
+
/** Replace the selection with `nodes` (search "select" mode). */
|
|
6728
|
+
selectMany(nodes: Iterable<TreeNode>): void;
|
|
5958
6729
|
getNodes(): ReadonlyArray<{
|
|
5959
6730
|
node: TreeNode;
|
|
5960
6731
|
depth: number;
|
|
5961
6732
|
}>;
|
|
6733
|
+
/**
|
|
6734
|
+
* Rebase the view to show `target`'s children in column 0 (Finder column-view
|
|
6735
|
+
* behavior on double-click), keeping the full tree in `root`.
|
|
6736
|
+
*
|
|
6737
|
+
* - Pass a `MillerNode` (used as-is) or a key (looked up in the full tree).
|
|
6738
|
+
* - Pass `undefined` to restore the full-tree view.
|
|
6739
|
+
* - Rebasing to the true root is equivalent to restoring the full view.
|
|
6740
|
+
* - Leaves are refused (returns `false`).
|
|
6741
|
+
*
|
|
6742
|
+
* Selection is cleared; all depths, headers, and key paths are relative to
|
|
6743
|
+
* the new view root. Fires a `rebase` event when the view actually changes.
|
|
6744
|
+
* Returns `false` when nothing changed (unknown key, leaf, or same view).
|
|
6745
|
+
*/
|
|
6746
|
+
rebaseTo(target: TreeNode | string | undefined): boolean;
|
|
6747
|
+
/**
|
|
6748
|
+
* Rebase one level up from the current view root (no-op at the full tree).
|
|
6749
|
+
* Fires a `rebase` event when the view actually changes.
|
|
6750
|
+
*/
|
|
6751
|
+
rebaseUp(): boolean;
|
|
5962
6752
|
protected renderColumnContent(nodes: TreeNode[], depth: number): TemplateResult | typeof nothing;
|
|
5963
6753
|
protected _handleItemClick(node: TreeNode, depth: number, event?: MouseEvent): void;
|
|
5964
6754
|
/**
|
|
@@ -6017,6 +6807,7 @@ interface MillerBaseElementEventMap extends TreeComponentEventMap {
|
|
|
6017
6807
|
'item-rightclick': CustomEvent<MillerItemRightClickDetail>;
|
|
6018
6808
|
'header-click': CustomEvent<MillerHeaderClickDetail>;
|
|
6019
6809
|
'header-rightclick': CustomEvent<MillerHeaderRightClickDetail>;
|
|
6810
|
+
'rebase': CustomEvent<MillerRebaseDetail>;
|
|
6020
6811
|
}
|
|
6021
6812
|
interface MillerBaseElement {
|
|
6022
6813
|
addEventListener: (<K extends keyof MillerBaseElementEventMap>(type: K, listener: (this: MillerBaseElement, event: MillerBaseElementEventMap[K]) => void, options?: boolean | AddEventListenerOptions) => void) & ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);
|
|
@@ -6102,6 +6893,9 @@ declare class MillerTreeController<T> {
|
|
|
6102
6893
|
* Any ancestor `MillerNode`s with unloaded children are populated
|
|
6103
6894
|
* synchronously before calling `element.navigateTo()`.
|
|
6104
6895
|
*
|
|
6896
|
+
* Key paths are relative to the element's current view root: when the view
|
|
6897
|
+
* is rebased, only matches at or below the view root can be reached.
|
|
6898
|
+
*
|
|
6105
6899
|
* Returns `false` if no matching node is found.
|
|
6106
6900
|
*/
|
|
6107
6901
|
navigateToValue(predicate: (value: T) => boolean): boolean;
|
|
@@ -6199,6 +6993,41 @@ interface PillRendererOptions {
|
|
|
6199
6993
|
}
|
|
6200
6994
|
declare function createPillRenderer(options?: PillRendererOptions): NotificationRenderer;
|
|
6201
6995
|
//#endregion
|
|
6996
|
+
//#region src/pan-text/pan-text.d.ts
|
|
6997
|
+
declare class PanTextElement extends LitElement {
|
|
6998
|
+
direction: `start` | `end`;
|
|
6999
|
+
disabled: boolean;
|
|
7000
|
+
private _isOverflowing;
|
|
7001
|
+
private _isHovering;
|
|
7002
|
+
private _textEl;
|
|
7003
|
+
private _overflow;
|
|
7004
|
+
private _resizeObserver;
|
|
7005
|
+
connectedCallback(): void;
|
|
7006
|
+
disconnectedCallback(): void;
|
|
7007
|
+
firstUpdated(): void;
|
|
7008
|
+
protected updated(): void;
|
|
7009
|
+
private _onMouseEnter;
|
|
7010
|
+
private _onMouseLeave;
|
|
7011
|
+
/**
|
|
7012
|
+
* Measures how far the slotted text overflows its container. The measurement
|
|
7013
|
+
* is taken on the inner `.text` span (which clips with an ellipsis), not on
|
|
7014
|
+
* the host — the host never overflows, so measuring it always yielded zero
|
|
7015
|
+
* and the hover interaction never activated.
|
|
7016
|
+
*
|
|
7017
|
+
* Skipped while hovering, because the hover styles switch `.text` to
|
|
7018
|
+
* `overflow: visible` and the measurement would collapse to zero mid-pan.
|
|
7019
|
+
*/
|
|
7020
|
+
private _measure;
|
|
7021
|
+
private _textStyle;
|
|
7022
|
+
protected render(): TemplateResult<1>;
|
|
7023
|
+
static styles: CSSResult[];
|
|
7024
|
+
}
|
|
7025
|
+
declare global {
|
|
7026
|
+
interface HTMLElementTagNameMap {
|
|
7027
|
+
'ixfx-pan-text': PanTextElement;
|
|
7028
|
+
}
|
|
7029
|
+
}
|
|
7030
|
+
//#endregion
|
|
6202
7031
|
//#region src/panel/panel-group.d.ts
|
|
6203
7032
|
type PanelGroupOrientation = `horizontal` | `vertical`;
|
|
6204
7033
|
declare class PanelGroupElement extends LitElement {
|
|
@@ -7999,5 +8828,5 @@ interface XyPad {
|
|
|
7999
8828
|
//#region src/index.d.ts
|
|
8000
8829
|
declare function init(): void;
|
|
8001
8830
|
//#endregion
|
|
8002
|
-
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, DockAddPanelTarget, DockAxis, DockChangeDetail, DockChangeEvent, DockDirection, DockDragBoundaryDetail, DockDragBoundaryEvent, DockDropTarget, type DockDropZone, DockEdge, DockHostElement, DockHostElementEventMap, DockLayout, DockLeafContentRules, DockLeafInfo, DockLeafRef, DockNeighbours, DockNode, DockOperation, DockPanelActivatedDetail, DockPanelActivatedEvent, DockPanelAddedDetail, DockPanelAddedEvent, DockPanelDragStartDetail, DockPanelDragStartEvent, DockPanelElement, DockPanelElementEventMap, DockPanelInit, DockPanelRemovedDetail, DockPanelRemovedEvent, DockPanelSnapshot, DockPanelTearOutDetail, DockPanelTearOutEvent, DockRect, 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 IconEntry, type IncrSearch, type IncrSearchChangeCallback, IncrSearchTreeController as IncrSearchMillerController, IncrSearchTreeController, type IncrSearchTreeOptions as IncrSearchMillerOptions, type IncrSearchTreeOptions, type IncrSearchOptions, type IncrSearchResult, type IncrSearchState, type InputMode, ItemsProvider, IxfxHexEditorElement, IxfxIconElement, IxfxRatingElement, IxfxTimelineElement, LabelledRadialInput, LabelledRangeInput, LabelledSliderInput, LaneData, LaneType, LayoutNode, LayoutSnapshot, LeafGeom, LedElement, type ListActivateDetail, type ListActivateEvent, type ListElementEventMap, type ListInteractionMode, type ListItemClickDetail, type ListItemClickEvent, type ListSelectDetail, type ListSelectEvent, ListSelectionController, type ListSelectionControllerConfig, type ListSelectionGesture, type ListSelectionMode, type ListSelectionModes, 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, TickledController, type TickledControllerConfig, type TickledItem, 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, type TreeKeyboardNavCallbacks, TreeKeyboardNavController, type TreeKeyboardNavControllerConfig, type TreeKeyboardNavItemId, 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, collectContainerNames, collectDataResult, collectPanelIds, collectStackPaths, computeColour, computeLeafGeoms, createAcCompletionProvider, createElementIncrSearch, createEmptyLayout, createEmptyStack, createFuzzySearch, createIncrSearch, createPillRenderer, createSplit, createStack, createTreeListAdapter, createVerticalListAdapter, distribute, extractStack, findNode, findParentOf, findStackOf, findStackPathByName, getActiveDragPanelId, getIcon, getIconEntry, getIconFont, getLeafNeighbours, hasIcon, iconBus, init, insertBeside, isDragging, isMultiMode, isSplit, isStack, monitorIndeterminate, moveLeafNodeToEdge, moveLeafStep, normalise, normalize, parseColourScaleAttr, parseLayout, pointerOverAnyHost, readBaseColour, registerFontIcon, registerIcon, removePanelFromStack, resolveCssVars, resolveGrid, resolveLeafPath, resolveTracks, serializeLayout, setActive, setIconFont, svgToDataUri, swapLeaves, tickledItemStyles, tickledStyles, timelineStyles, toSnapshot, walk, wrapRoot };
|
|
8831
|
+
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, DataTableElement, DataTableElementEventMap, DataTableRow, DataTableRowClickDetail, DataTableRowClickEvent, type DetailFormatter, DetailListElement, type DetailSortComparator, type DetailSortItem, type DetailSortMode, DisplayTextLogic, DistributeResult, DockAddPanelTarget, DockAxis, DockChangeDetail, DockChangeEvent, DockDirection, DockDragBoundaryDetail, DockDragBoundaryEvent, DockDropTarget, type DockDropZone, DockEdge, DockHostElement, DockHostElementEventMap, DockLayout, DockLeafContentRules, DockLeafInfo, DockLeafRef, DockNeighbours, DockNode, DockOperation, DockPanelActivatedDetail, DockPanelActivatedEvent, DockPanelAddedDetail, DockPanelAddedEvent, DockPanelDragStartDetail, DockPanelDragStartEvent, DockPanelElement, DockPanelElementEventMap, DockPanelInit, DockPanelRemovedDetail, DockPanelRemovedEvent, DockPanelSnapshot, DockPanelTearOutDetail, DockPanelTearOutEvent, DockRect, DockSplitNode, DockStackNode, DragSnappingFn, DragTarget, EditableLabel, EditableLabelChangeDetail, EditableLabelChangeEvent, EditableMode, EditableNumber, Effect, type ElementIncrSearch, type ElementIncrSearchOptions, type ElementListSearchAdapterOptions, type ElementListSearchHost, Endpoints, EntryMode, FormElement, FormGroupElement, FormPartElement, FormatValueForHuman, FormattingOptions, type FuzzySearch, type FuzzySearchOptions, FuzzySearchResult, type GridListActivateDetail, type GridListActivateEvent, type GridListCaptionAlign, type GridListCaptionBackdrop, type GridListCaptionPosition, type GridListCaptionStyle, GridListElement, type GridListElementEventMap, type GridListFullElementEventMap, type GridListItemClickDetail, type GridListItemClickEvent, type GridListOrientation, type GridListSelectDetail, type GridListSelectEvent, type GridListTickleDetail, type GridListTickleEvent, type GridListViewportChangeDetail, type GridListViewportChangeEvent, 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 IconEntry, type IncrSearch, type IncrSearchChangeCallback, IncrSearchTreeController as IncrSearchMillerController, IncrSearchTreeController, type IncrSearchTreeOptions as IncrSearchMillerOptions, type IncrSearchTreeOptions, type IncrSearchOptions, type IncrSearchResult, type IncrSearchState, type InputMode, ItemsProvider, IxfxHexEditorElement, IxfxIconElement, IxfxRatingElement, IxfxTimelineElement, KeyedElementIndex, LIST_ITEM_MOTION_MS, LIST_SEARCH_COMMAND_IDS, LIST_SEARCH_MODES, LabelledRadialInput, LabelledRangeInput, LabelledSliderInput, LaneData, LaneType, LayoutNode, LayoutSnapshot, LeafGeom, LedElement, type ListActivateDetail, type ListActivateEvent, type ListElementEventMap, type ListInteractionMode, type ListItemClickDetail, type ListItemClickEvent, type ListItemMotionOptions, type ListSearchAdapter, ListSearchController, type ListSearchControllerOptions, type ListSearchHost, type ListSearchMode, type ListSelectDetail, type ListSelectEvent, ListSelectionController, type ListSelectionControllerConfig, type ListSelectionGesture, type ListSelectionMode, type ListSelectionModes, 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, MillerRebaseDetail, MillerRebaseEvent, 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, PanTextElement, 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, type RegisterListSearchCommandsOptions, 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, TickledController, type TickledControllerConfig, type TickledItem, 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, type TreeKeyboardNavCallbacks, TreeKeyboardNavController, type TreeKeyboardNavControllerConfig, type TreeKeyboardNavItemId, TreeListAdapterOptions, TreeListElement, type TreeListSearchAdapterOptions, TreeSearchHost, TreeSelectionFilter, TwoSplitLayoutElement, UserScale, ValueMode, VerticalListAdapterOptions, VerticalListElement, ViewRange, WhenSmall, XyAgeStyle, XyDrawStyle, XyPad, XyPadEventMap, XyPadInputDetail, XyPadInputEvent, addPanelToStack, animateListItemIn, animateListItemOut, applyAgeModification, applyHighlights, applySnapshot, attachTimelineInteractions, buildHighlightTargets, buildModel, clearHighlights, collectContainerNames, collectDataResult, collectPanelIds, collectStackPaths, computeColour, computeLeafGeoms, createAcCompletionProvider, createElementIncrSearch, createElementListSearchAdapter, createEmptyLayout, createEmptyStack, createFuzzySearch, createIncrSearch, createPillRenderer, createSplit, createStack, createTreeListAdapter, createTreeListSearchAdapter, createVerticalListAdapter, distribute, extractStack, findNode, findParentOf, findStackOf, findStackPathByName, getActiveDragPanelId, getIcon, getIconEntry, getIconFont, getLeafNeighbours, hasIcon, iconBus, init, insertBeside, isDragging, isMultiMode, isSplit, isStack, keyForElement, listItemFadeKeyframes, listSearchStyles, monitorIndeterminate, moveLeafNodeToEdge, moveLeafStep, normalise, normalize, parseColourScaleAttr, parseLayout, pointerOverAnyHost, prefersReducedMotion, readBaseColour, registerFontIcon, registerIcon, registerListSearchCommands, removePanelFromStack, resolveCssVars, resolveGrid, resolveLeafPath, resolveTracks, serializeLayout, setActive, setIconFont, svgToDataUri, swapLeaves, tickledItemStyles, tickledStyles, timelineStyles, toSnapshot, walk, wrapRoot };
|
|
8003
8832
|
//# sourceMappingURL=index.d.ts.map
|