@ixfx/components 0.11.4 → 0.11.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/bundle/index.d.ts +451 -120
  2. package/bundle/index.d.ts.map +1 -1
  3. package/bundle/index.js +2267 -540
  4. package/bundle/index.js.map +1 -1
  5. package/dist/ac-text.d.ts +1 -1
  6. package/dist/{ac-token-TCLAZeVg.d.ts → ac-token--_vCHXWw.d.ts} +2 -2
  7. package/dist/{ac-token-TCLAZeVg.d.ts.map → ac-token--_vCHXWw.d.ts.map} +1 -1
  8. package/dist/ac-token.d.ts +1 -1
  9. package/dist/{button-CTL45aBl.d.ts → button-BYuf72aR.d.ts} +2 -2
  10. package/dist/{button-CTL45aBl.d.ts.map → button-BYuf72aR.d.ts.map} +1 -1
  11. package/dist/button.d.ts +1 -1
  12. package/dist/colour-picker.d.ts +1 -1
  13. package/dist/crumbs.d.ts +3 -3
  14. package/dist/crumbs.js +1 -1
  15. package/dist/{data-grid-CfiaBqTA.d.ts → data-grid-C6EjCe5O.d.ts} +48 -6
  16. package/dist/data-grid-C6EjCe5O.d.ts.map +1 -0
  17. package/dist/data-grid.d.ts +3 -3
  18. package/dist/data-grid.js +67 -3
  19. package/dist/data-grid.js.map +1 -1
  20. package/dist/{detail-list-DxQZkK-C.d.ts → detail-list-CmdCxddo.d.ts} +22 -5
  21. package/dist/detail-list-CmdCxddo.d.ts.map +1 -0
  22. package/dist/detail-list.d.ts +3 -3
  23. package/dist/detail-list.js +67 -4
  24. package/dist/detail-list.js.map +1 -1
  25. package/dist/{grid-list-k89JpiNy.js → grid-list-3fGhdaFA.js} +92 -7
  26. package/dist/grid-list-3fGhdaFA.js.map +1 -0
  27. package/dist/{grid-list-ChgYpUUq.d.ts → grid-list-D6AfWfwn.d.ts} +27 -4
  28. package/dist/grid-list-D6AfWfwn.d.ts.map +1 -0
  29. package/dist/grid-list.d.ts +2 -2
  30. package/dist/grid-list.js +1 -1
  31. package/dist/{grouped-item-lister-Bhyo-dkH.d.ts → grouped-item-lister-DETte0Dh.d.ts} +2 -2
  32. package/dist/{grouped-item-lister-Bhyo-dkH.d.ts.map → grouped-item-lister-DETte0Dh.d.ts.map} +1 -1
  33. package/dist/grouped-item-lister.d.ts +1 -1
  34. package/dist/{icon-DR_3rSyZ.d.ts → icon-CDGprSdE.d.ts} +2 -2
  35. package/dist/icon-CDGprSdE.d.ts.map +1 -0
  36. package/dist/icons.d.ts +2 -2
  37. package/dist/incr-search.d.ts +1 -1
  38. package/dist/{index-CHbuPyLL.d.ts → index-CMsmZ6Or.d.ts} +4 -4
  39. package/dist/{index-CHbuPyLL.d.ts.map → index-CMsmZ6Or.d.ts.map} +1 -1
  40. package/dist/{index-garxxqgV.d.ts → index-CYndvTWH.d.ts} +2 -2
  41. package/dist/{index-garxxqgV.d.ts.map → index-CYndvTWH.d.ts.map} +1 -1
  42. package/dist/{index-BUB5SICW.d.ts → index-CoqtMSd9.d.ts} +2 -2
  43. package/dist/{index-BUB5SICW.d.ts.map → index-CoqtMSd9.d.ts.map} +1 -1
  44. package/dist/{index-CDllxjVG.d.ts → index-DyTSt9OK.d.ts} +4 -4
  45. package/dist/{index-CDllxjVG.d.ts.map → index-DyTSt9OK.d.ts.map} +1 -1
  46. package/dist/{index-CJ5fshD3.d.ts → index-UvnoZUAo.d.ts} +2 -2
  47. package/dist/{index-CJ5fshD3.d.ts.map → index-UvnoZUAo.d.ts.map} +1 -1
  48. package/dist/{index-BOUaDIW-.d.ts → index-tq6f8007.d.ts} +2 -2
  49. package/dist/{index-BOUaDIW-.d.ts.map → index-tq6f8007.d.ts.map} +1 -1
  50. package/dist/index.d.ts +337 -140
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +2038 -646
  53. package/dist/index.js.map +1 -1
  54. package/dist/item-appearance-BjcMyauw.js +31 -0
  55. package/dist/item-appearance-BjcMyauw.js.map +1 -0
  56. package/dist/{labelled-input-base-Dp_9KP0G.d.ts → labelled-input-base-DiTme1JO.d.ts} +2 -2
  57. package/dist/{labelled-input-base-Dp_9KP0G.d.ts.map → labelled-input-base-DiTme1JO.d.ts.map} +1 -1
  58. package/dist/labelled-radial-input.d.ts +2 -2
  59. package/dist/labelled-radial-input.d.ts.map +1 -1
  60. package/dist/labelled-range-input.d.ts +1 -1
  61. package/dist/labelled-slider-input.d.ts +1 -1
  62. package/dist/{list-native-drag-controller-B9reY4uM.d.ts → list-native-drag-controller-CllsHLxw.d.ts} +2 -2
  63. package/dist/{list-native-drag-controller-B9reY4uM.d.ts.map → list-native-drag-controller-CllsHLxw.d.ts.map} +1 -1
  64. package/dist/{menu-BHT6HRND.js → menu-CsBUyUuS.js} +2 -2
  65. package/dist/{menu-BHT6HRND.js.map → menu-CsBUyUuS.js.map} +1 -1
  66. package/dist/{menu-item-DlxAb0Xr.d.ts → menu-item-BbgdcwBX.d.ts} +11 -2
  67. package/dist/menu-item-BbgdcwBX.d.ts.map +1 -0
  68. package/dist/{menu-item-JcpHCyF0.js → menu-item-CfndBGO8.js} +38 -3
  69. package/dist/menu-item-CfndBGO8.js.map +1 -0
  70. package/dist/menu.d.ts +2 -2
  71. package/dist/menu.js +2 -2
  72. package/dist/miller.d.ts +3 -3
  73. package/dist/miller.d.ts.map +1 -1
  74. package/dist/miller.js +18 -2
  75. package/dist/miller.js.map +1 -1
  76. package/dist/panel.d.ts +1 -1
  77. package/dist/{split-layout-C5SYbDrq.d.ts → split-layout-JK3xWVX2.d.ts} +2 -2
  78. package/dist/{split-layout-C5SYbDrq.d.ts.map → split-layout-JK3xWVX2.d.ts.map} +1 -1
  79. package/dist/split-layout.d.ts +1 -1
  80. package/dist/{tab-list-v8mKX7Fu.d.ts → tab-list-pqfKaVAE.d.ts} +2 -2
  81. package/dist/{tab-list-v8mKX7Fu.d.ts.map → tab-list-pqfKaVAE.d.ts.map} +1 -1
  82. package/dist/tabs.d.ts +1 -1
  83. package/dist/{titlebar-B5zSTZnF.d.ts → titlebar-Tqu-VvMU.d.ts} +2 -2
  84. package/dist/{titlebar-B5zSTZnF.d.ts.map → titlebar-Tqu-VvMU.d.ts.map} +1 -1
  85. package/dist/titlebar.d.ts +1 -1
  86. package/dist/{tree-component-CMGeqyjZ.d.ts → tree-component-DukLqesg.d.ts} +2 -2
  87. package/dist/{tree-component-CMGeqyjZ.d.ts.map → tree-component-DukLqesg.d.ts.map} +1 -1
  88. package/dist/tree.d.ts +4 -4
  89. package/dist/{types-3Jfcaxvo.d.ts → types-D-kYF16b.d.ts} +21 -1
  90. package/dist/types-D-kYF16b.d.ts.map +1 -0
  91. package/dist/{vertical-list-R25WqAVO.d.ts → vertical-list-DTp-UIUE.d.ts} +26 -3
  92. package/dist/vertical-list-DTp-UIUE.d.ts.map +1 -0
  93. package/dist/vertical-list.d.ts +2 -2
  94. package/dist/vertical-list.js +53 -4
  95. package/dist/vertical-list.js.map +1 -1
  96. package/docs-user/data-grid.md +51 -1
  97. package/docs-user/detail-list.md +46 -0
  98. package/docs-user/grid-list.md +49 -2
  99. package/docs-user/hyperbolic-tree.md +98 -18
  100. package/docs-user/index.json +2 -2
  101. package/docs-user/menu.md +30 -9
  102. package/docs-user/miller.md +52 -7
  103. package/docs-user/vertical-list.md +63 -0
  104. package/package.json +1 -1
  105. package/dist/data-grid-CfiaBqTA.d.ts.map +0 -1
  106. package/dist/detail-list-DxQZkK-C.d.ts.map +0 -1
  107. package/dist/grid-list-ChgYpUUq.d.ts.map +0 -1
  108. package/dist/grid-list-k89JpiNy.js.map +0 -1
  109. package/dist/icon-DR_3rSyZ.d.ts.map +0 -1
  110. package/dist/menu-item-DlxAb0Xr.d.ts.map +0 -1
  111. package/dist/menu-item-JcpHCyF0.js.map +0 -1
  112. package/dist/types-3Jfcaxvo.d.ts.map +0 -1
  113. package/dist/vertical-list-R25WqAVO.d.ts.map +0 -1
package/bundle/index.d.ts CHANGED
@@ -548,6 +548,8 @@ declare class MenuTrigger extends LitElement {
548
548
  private static _count;
549
549
  private _anchorName;
550
550
  private _clickListener;
551
+ /** Element focused when the menu opened; focus returns here on Escape/Tab when there is no trigger button (context-target mode). */
552
+ private _focusBeforeOpen;
551
553
  connectedCallback(): void;
552
554
  disconnectedCallback(): void;
553
555
  firstUpdated(): void;
@@ -568,6 +570,13 @@ declare class MenuTrigger extends LitElement {
568
570
  private _handleClickOutside;
569
571
  private _getMenuContainer;
570
572
  private _handleKeydown;
573
+ /**
574
+ * Return focus after a keyboard close. The trigger button is the natural
575
+ * target, but it is not rendered for a context target — then fall back to
576
+ * whatever was focused at open (don't rely on the browser's popover focus
577
+ * restoration), and finally the host.
578
+ */
579
+ private _restoreFocus;
571
580
  private _handleCommand;
572
581
  private _handleRadioChange;
573
582
  private _handleContextMenu;
@@ -1073,6 +1082,26 @@ type TreeItem = {
1073
1082
  data?: unknown;
1074
1083
  /** Icon name passed to an icon component, if icons are enabled. */
1075
1084
  icon?: string;
1085
+ /**
1086
+ * CSS colour applied to the node's icon, overriding the inherited text
1087
+ * colour. Only meaningful when `icon` is set. Components that render the
1088
+ * icon from `icon` honour this; the rest ignore it.
1089
+ */
1090
+ iconColor?: string;
1091
+ /**
1092
+ * CSS colour applied to the node's label. Inline, so it wins over the
1093
+ * selected/tickled text colours — keep it legible against both, or leave
1094
+ * it unset and let the component's theming handle selection contrast.
1095
+ */
1096
+ textColor?: string;
1097
+ /**
1098
+ * Finder-style badge rendered alongside the label — e.g. a colour-tag chip
1099
+ * or a stack of them. Anything Lit can render (usually a `TemplateResult`),
1100
+ * or a DOM `Node` for the components that build their rows imperatively.
1101
+ * Placement is per-component: thumbnails-style lists put it before the
1102
+ * name, list-style views right-justify it on the same line.
1103
+ */
1104
+ badge?: unknown;
1076
1105
  /** Tooltip text shown on hover. */
1077
1106
  tooltip?: string;
1078
1107
  /** Optional string value, e.g. for use as a command/route. */
@@ -1786,6 +1815,13 @@ declare class CrumbPathElement extends LitElement {
1786
1815
  segmentDragLookup: CrumbSegmentDragLookupFn | undefined;
1787
1816
  /** Interprets drops landing on segments; enables drop targeting when set. */
1788
1817
  parseExternalDrop: CrumbExternalDropParser | undefined;
1818
+ /**
1819
+ * When enabled, navigating up (clicking an earlier real segment) keeps
1820
+ * rendering the segments beyond it as translucent, non-interactive-drag,
1821
+ * click-to-restore "virtual" segments — for as long as the current path
1822
+ * stays a prefix of the deepest path visited. See `#recordHintOnShorten`.
1823
+ */
1824
+ hintPrevious: boolean;
1789
1825
  private _openIdx;
1790
1826
  private _editing;
1791
1827
  private _cachedSiblings;
@@ -1799,6 +1835,8 @@ declare class CrumbPathElement extends LitElement {
1799
1835
  private _dragCumPath;
1800
1836
  /** Cumulative path of the segment currently hovered by an external drag (`.drop-into`). */
1801
1837
  private _dropCumPath;
1838
+ /** Deepest relative-segment path visited, kept so it can be restored via virtual segments. */
1839
+ private _hintSegments;
1802
1840
  protected updated(changedProperties: PropertyValues): void;
1803
1841
  setPath(newPath: string): void;
1804
1842
  getPath(): string;
@@ -1940,6 +1978,27 @@ type DataGridColumn<R = unknown> = {
1940
1978
  formatter?: (value: unknown, row: R, col: DataGridColumn<R>) => unknown;
1941
1979
  };
1942
1980
  type GlobalFormatter = (value: unknown, columnName: string, row: unknown) => unknown;
1981
+ /**
1982
+ * Optional appearance fields a row may carry, honoured only in the column
1983
+ * nominated by the matching grid property (`textColorColumn`, `iconColumn`,
1984
+ * `badgeColumn`). Read off the *row*, not off the nominated column's own
1985
+ * value, so one row can tint just one of its cells:
1986
+ *
1987
+ * ```ts
1988
+ * grid.textColorColumn = 'status';
1989
+ * grid.rows = [{ status: 'failed', statusTextColor: 'crimson' }];
1990
+ * ```
1991
+ */
1992
+ type DataGridRowLook = {
1993
+ /** CSS colour applied to the cell nominated by `textColorColumn`. */
1994
+ textColor?: string;
1995
+ /** Icon content for the cell nominated by `iconColumn` — anything Lit can render. */
1996
+ icon?: unknown;
1997
+ /** CSS colour tinting the row's `icon`. */
1998
+ iconColor?: string;
1999
+ /** Finder-style badge for the cell nominated by `badgeColumn` — anything Lit can render. */
2000
+ badge?: unknown;
2001
+ };
1943
2002
  type DataGridEditability = `disabled` | `manual` | `user` | `immediate`;
1944
2003
  /**
1945
2004
  * How cell text that's too long for its column width is handled.
@@ -2682,6 +2741,20 @@ declare class DataGridElement extends LitElement {
2682
2741
  */
2683
2742
  columnMenu: DataGridColumnMenu;
2684
2743
  globalFormatter?: GlobalFormatter;
2744
+ /**
2745
+ * Key of the column whose cell text takes the row's `textColor` — e.g. a
2746
+ * status column that renders a red "Failed" only on some rows.
2747
+ */
2748
+ textColorColumn: string;
2749
+ /**
2750
+ * Key of the column that renders the row's `icon` (tinted by `iconColor`).
2751
+ */
2752
+ iconColumn: string;
2753
+ /**
2754
+ * Key of the column that renders the row's `badge`, right-justified in the
2755
+ * cell after the cell's own value.
2756
+ */
2757
+ badgeColumn: string;
2685
2758
  /**
2686
2759
  * Predicate used by incremental filter-search (and callable directly). Rows
2687
2760
  * for which it returns `false` are dropped from the flat list — hidden from
@@ -2809,6 +2882,13 @@ declare class DataGridElement extends LitElement {
2809
2882
  stopEdit(): void;
2810
2883
  setColumnFormatter(columnKey: string, formatter: ((value: unknown) => unknown) | BuiltInFormatterName | null, options?: BuiltInFormatterOptions): void;
2811
2884
  private _formatValue;
2885
+ /**
2886
+ * Resolve the per-row appearance for the cell at `colKey`, honouring the
2887
+ * nominated columns. Additive — `col.renderer` / `col.formatter` still own
2888
+ * the cell's value; this only decorates it. Returns all-`undefined` for
2889
+ * every cell when nothing is nominated (the common case).
2890
+ */
2891
+ private _cellLook;
2812
2892
  private _handleCellSecondClick;
2813
2893
  private _commitEdit;
2814
2894
  private _suppressBlurCommit;
@@ -3049,6 +3129,29 @@ declare class VerticalListElement extends LitElement {
3049
3129
  * appended.
3050
3130
  */
3051
3131
  formatter: ((item: unknown, index: number) => unknown) | undefined;
3132
+ /**
3133
+ * Per-item icon for adapter (`items`) mode, prepended to the row — a DOM
3134
+ * `Node` or anything Lit can render (usually a `TemplateResult` wrapping an
3135
+ * `<ixfx-icon>` or an inline SVG). Ignored when the `formatter` returns a
3136
+ * full row element (the formatter then owns the whole row, icon included).
3137
+ */
3138
+ icon: ((item: unknown, index: number) => unknown) | undefined;
3139
+ /**
3140
+ * CSS colour tinting the per-item `icon`. Icons paint from `currentColor`,
3141
+ * so this recolours them. Inline, so it wins over selection styling.
3142
+ */
3143
+ iconColor: ((item: unknown, index: number) => string | undefined) | undefined;
3144
+ /**
3145
+ * CSS colour for the row's text. Inline, so it wins over the selected /
3146
+ * tickled text colours — keep it legible against both.
3147
+ */
3148
+ textColor: ((item: unknown, index: number) => string | undefined) | undefined;
3149
+ /**
3150
+ * Finder-style badge for the row, right-justified after the text — a
3151
+ * `TemplateResult`, a DOM `Node`, or anything Lit can render. The row is
3152
+ * flex, so the badge self-justifies to the trailing edge.
3153
+ */
3154
+ badge: ((item: unknown, index: number) => unknown) | undefined;
3052
3155
  /**
3053
3156
  * Virtualize the list: only the overscanned viewport window exists in the
3054
3157
  * DOM; offscreen rows are recycled through an off-DOM pool as the list
@@ -3254,6 +3357,22 @@ declare class DetailListElement extends LitElement {
3254
3357
  displayProperty: string;
3255
3358
  formatter: DetailFormatter | undefined;
3256
3359
  iconProperty: string;
3360
+ /**
3361
+ * Property on each `items` entry holding a CSS colour for the item's
3362
+ * `<ixfx-icon>`. Only read when `iconProperty` also resolves an icon.
3363
+ */
3364
+ iconColorProperty: string;
3365
+ /**
3366
+ * Property on each `items` entry holding a CSS colour for the item's caption
3367
+ * text. Inline, so it wins over the selected/tickled text colours.
3368
+ */
3369
+ textColorProperty: string;
3370
+ /**
3371
+ * Property on each `items` entry holding a Finder-style badge — a
3372
+ * `TemplateResult`, a DOM `Node`, or anything Lit can render. Rendered
3373
+ * right-justified on the row, after the caption.
3374
+ */
3375
+ badgeProperty: string;
3257
3376
  keyProperty: string;
3258
3377
  filterPredicate: ((el: Element) => boolean) | undefined;
3259
3378
  /**
@@ -3368,6 +3487,7 @@ declare class DetailListElement extends LitElement {
3368
3487
  */
3369
3488
  fitColumnWidth(): Promise<number>;
3370
3489
  private _isCheckable;
3490
+ /** Appends the caption span; returns it so callers can style it per item. */
3371
3491
  private _setLabel;
3372
3492
  private _syncItemStates;
3373
3493
  private _syncCheckboxes;
@@ -5379,6 +5499,29 @@ type GridListDataAdapter<T> = {
5379
5499
  render: (item: T, index: number) => unknown;
5380
5500
  disabled?: (item: T, index: number) => boolean;
5381
5501
  searchableText?: (item: T, index: number) => string;
5502
+ /**
5503
+ * Per-item icon, rendered above `render`'s output inside the cell's content
5504
+ * well. Anything Lit can render — a `TemplateResult` (e.g.
5505
+ * `html`<ixfx-icon name=${...}></ixfx-icon>``), a DOM `Node`, or a string.
5506
+ * Return `undefined` for items without an icon.
5507
+ */
5508
+ icon?: (item: T, index: number) => unknown;
5509
+ /**
5510
+ * CSS colour applied to this item's icon, tinting any `currentColor` glyph.
5511
+ * Ignored when `icon` returns nothing. Inline, so it wins over selection
5512
+ * styling.
5513
+ */
5514
+ iconColor?: (item: T, index: number) => string | undefined;
5515
+ /**
5516
+ * CSS colour applied to this item's caption. Inline, so it wins over the
5517
+ * selected/tickled caption colours — keep it legible against both.
5518
+ */
5519
+ textColor?: (item: T, index: number) => string | undefined;
5520
+ /**
5521
+ * Finder-style badge rendered inline at the head of the caption, before the
5522
+ * filename — anything Lit can render, e.g. a colour-tag chip as inline SVG.
5523
+ */
5524
+ badge?: (item: T, index: number) => unknown;
5382
5525
  };
5383
5526
  /**
5384
5527
  * Common detail for per-item events (activate, click, tickle), key-first in
@@ -6288,6 +6431,92 @@ declare global {
6288
6431
  }
6289
6432
  }
6290
6433
  //#endregion
6434
+ //#region src/hyperbolic-tree/poincare-math.d.ts
6435
+ /** Euclidean norm (`|z|`) of a point. */
6436
+ declare function norm(a: Point): number;
6437
+ /** Clamp a point to stay strictly inside the unit disk (the Poincaré model's boundary is never reached). */
6438
+ declare function clampToDisk(p: Point, maxNorm?: number): Point;
6439
+ /**
6440
+ * Möbius transform that translates `a` to the origin: `(z - a) / (1 - conj(a) * z)`.
6441
+ * A hyperbolic isometry — preserves all pairwise Poincaré distances.
6442
+ */
6443
+ declare function mobiusToOrigin(z: Point, a: Point): Point;
6444
+ /**
6445
+ * Inverse of {@link mobiusToOrigin}: translates the origin back to `a`, i.e.
6446
+ * `(z + a) / (1 + conj(a) * z)`.
6447
+ */
6448
+ declare function mobiusFromOrigin(z: Point, a: Point): Point;
6449
+ /**
6450
+ * Möbius addition (gyrogroup composition) of two disk-translations: the
6451
+ * canonical-space point reached by translating the origin to `a`, then
6452
+ * translating that local frame's origin by `b`.
6453
+ */
6454
+ declare function mobiusAdd(a: Point, b: Point): Point;
6455
+ /** Euclidean Poincaré-disk radius corresponding to hyperbolic distance `d` from the origin. */
6456
+ declare function euclideanRadiusForHyperbolicDistance(d: number): number;
6457
+ /** Hyperbolic distance from the origin corresponding to Euclidean disk radius `r`. */
6458
+ declare function hyperbolicDistanceForEuclideanRadius(r: number): number;
6459
+ /** Hyperbolic (Poincaré) distance between two points in the unit disk. */
6460
+ declare function poincareDistance(p: Point, q: Point): number;
6461
+ /**
6462
+ * Point at parameter `t` (0–1) along the hyperbolic geodesic from `a` to `b`.
6463
+ * `t=0` yields `a`, `t=1` yields `b`; intermediate values move at constant
6464
+ * hyperbolic speed along the geodesic (not the Euclidean straight line).
6465
+ */
6466
+ declare function geodesicInterpolate(a: Point, b: Point, t: number): Point;
6467
+ /**
6468
+ * An orientation-preserving isometry of the Poincaré disk, stored as the
6469
+ * SU(1,1) pair `(a, b)` of the map `z ↦ (a·z + b) / (conj(b)·z + conj(a))`.
6470
+ *
6471
+ * Every disk isometry is a translation *plus a rotation*, and composing two
6472
+ * translations generally yields a rotation too (the hyperbolic "gyration").
6473
+ * Tracking the full map — rather than just "the point that goes to the
6474
+ * origin" — is what keeps a recursively-built local frame correctly oriented.
6475
+ */
6476
+ type DiskIsometry = {
6477
+ readonly a: Point;
6478
+ readonly b: Point;
6479
+ };
6480
+ declare const identityIsometry: DiskIsometry;
6481
+ /** Apply `m` to `z`. */
6482
+ declare function applyIsometry(m: DiskIsometry, z: Point): Point;
6483
+ /** `outer ∘ inner` — apply `inner` first, then `outer`. */
6484
+ declare function composeIsometry(outer: DiskIsometry, inner: DiskIsometry): DiskIsometry;
6485
+ declare function invertIsometry(m: DiskIsometry): DiskIsometry;
6486
+ /** Pure translation carrying the origin to `p` (same map as {@link mobiusFromOrigin}). */
6487
+ declare function translationFromOrigin(p: Point): DiskIsometry;
6488
+ /** `z ↦ e^{iθ}·z`. */
6489
+ declare function rotationIsometry(theta: number): DiskIsometry;
6490
+ /**
6491
+ * The view map that sends canonical point `center` to the origin, then
6492
+ * rotates by `rotation` radians: `z ↦ e^{i·rotation}·mobiusToOrigin(z, center)`.
6493
+ */
6494
+ declare function viewIsometry(center: Point, rotation?: number): DiskIsometry;
6495
+ /** Decompose `m` into the `{ center, rotation }` accepted by {@link viewIsometry}. */
6496
+ declare function decomposeViewIsometry(m: DiskIsometry): {
6497
+ center: Point;
6498
+ rotation: number;
6499
+ };
6500
+ /**
6501
+ * Exact geodesic between `p` and `q`, for rendering: either a straight
6502
+ * segment (when the geodesic is a diameter) or a circular arc orthogonal to
6503
+ * the unit circle. `sweep` follows SVG's `sweep-flag` convention in the
6504
+ * points' own (unflipped) coordinate system; the in-disk segment of an
6505
+ * orthogonal circle is always less than a semicircle, so it's always the
6506
+ * minor arc.
6507
+ */
6508
+ type GeodesicSegment = {
6509
+ readonly kind: `line`;
6510
+ } | {
6511
+ readonly kind: `arc`;
6512
+ readonly center: Point;
6513
+ readonly radius: number;
6514
+ readonly sweep: 0 | 1;
6515
+ };
6516
+ declare function geodesicSegment(p: Point, q: Point): GeodesicSegment;
6517
+ /** SVG path `d` for the geodesic from `p` to `q`, with coordinates multiplied by `scale`. */
6518
+ declare function geodesicPath(p: Point, q: Point, scale?: number): string;
6519
+ //#endregion
6291
6520
  //#region src/hyperbolic-tree/types.d.ts
6292
6521
  /**
6293
6522
  * Pointer/keyboard gesture mapping (subset of `TreeInteractionMode`).
@@ -6303,20 +6532,27 @@ type Point = {
6303
6532
  /** A single node positioned on the Poincaré disk. */
6304
6533
  type HyperbolicLayoutNode = {
6305
6534
  readonly node: TreeNode;
6535
+ /** `node.item.key`. Not necessarily unique if the data repeats keys — use {@link id} for identity. */
6306
6536
  readonly key: string;
6537
+ /**
6538
+ * Layout id derived from the key path from the root — unique even when
6539
+ * `item.key`s repeat across the tree (e.g. `readme.md` in many folders).
6540
+ */
6541
+ readonly id: string;
6307
6542
  /** Absolute depth from the true root (root is depth 0). */
6308
6543
  readonly depth: number;
6309
6544
  /** Tree-graph distance (steps) from the current focus — `0` for the focused node itself. */
6310
6545
  readonly ring: number;
6311
6546
  readonly parentKey: string | undefined;
6547
+ readonly parentId: string | undefined;
6312
6548
  /** Poincaré-disk position with the focus projected to the origin. */
6313
6549
  readonly position: Point;
6314
6550
  /**
6315
6551
  * Angular width (radians) this node was allocated by its parent's
6316
- * partition — root is `2π`. Siblings sharing a narrow wedge (a bushy
6317
- * ancestor elsewhere in the tree, or many siblings at this level) get a
6318
- * small value here; renderers can use it to shrink crowded nodes further
6319
- * than distance-from-focus alone would, so they don't visually overlap.
6552
+ * partition — root is `2π`. Measured in the *parent's canonical local
6553
+ * frame*, not on screen: after refocusing, the same share can look very
6554
+ * different in size. For on-screen crowding use the projected `position`s
6555
+ * (the built-in renderer caps node size by nearest-neighbour distance).
6320
6556
  */
6321
6557
  readonly angularShare: number;
6322
6558
  /** This node's raw `TreeItem.weight`, if set. */
@@ -6333,6 +6569,9 @@ type HyperbolicLayoutNode = {
6333
6569
  type HyperbolicLayoutEdge = {
6334
6570
  readonly fromKey: string;
6335
6571
  readonly toKey: string;
6572
+ /** Layout ids of the endpoints — see {@link HyperbolicLayoutNode.id}. */
6573
+ readonly fromId: string;
6574
+ readonly toId: string;
6336
6575
  readonly from: Point;
6337
6576
  readonly to: Point;
6338
6577
  /**
@@ -6342,7 +6581,10 @@ type HyperbolicLayoutEdge = {
6342
6581
  readonly weightNormalized: number;
6343
6582
  };
6344
6583
  type ComputeHyperbolicLayoutOptions = {
6345
- /** Key of the node to center the view on. Defaults to the true root. */
6584
+ /**
6585
+ * Node to center the view on: a layout id ({@link HyperbolicLayoutNode.id})
6586
+ * or a plain `item.key` (first depth-first match). Defaults to the true root.
6587
+ */
6346
6588
  focusedKey?: string;
6347
6589
  /** Tree-graph steps from the focus to lay out and render. Defaults to unlimited. */
6348
6590
  maxRadius?: number;
@@ -6352,19 +6594,34 @@ type ComputeHyperbolicLayoutOptions = {
6352
6594
  */
6353
6595
  maxDepth?: number;
6354
6596
  /**
6355
- * Project around this canonical-space point instead of the focus node's own
6356
- * canonical position — used mid-animation to interpolate the view smoothly
6357
- * while `focusedKey` (and therefore the visible node set) stays fixed at
6358
- * its final value.
6597
+ * Center the view on this point of the focus's local frame instead of the
6598
+ * focus itself (which is that frame's origin).
6359
6599
  */
6360
6600
  centerOverride?: Point;
6361
6601
  /**
6362
- * Hyperbolic distance placed between each generation. Default `1`.
6602
+ * Full focus-local → screen isometry to project through, taking
6603
+ * precedence over `centerOverride`. Unlike a bare center, this can also
6604
+ * carry a rotation — needed for panning to track the pointer faithfully.
6605
+ * Views are expressed relative to the focus (not the root) so they stay
6606
+ * precise however deep the focus is.
6607
+ */
6608
+ view?: DiskIsometry;
6609
+ /**
6610
+ * Minimum hyperbolic distance placed between each generation (bushy
6611
+ * nodes' children go further, per `siblingSpacing`). Default `1`.
6363
6612
  * Raising it exaggerates the disk's fisheye compression (distant
6364
6613
  * generations crowd the boundary faster, reading as "zooming in" on the
6365
6614
  * focus); lowering it flattens the layout toward a Euclidean-feeling one.
6366
6615
  */
6367
6616
  curvature?: number;
6617
+ /**
6618
+ * Minimum hyperbolic distance between adjacent siblings. Children of a
6619
+ * bushy node are pushed further from it until they're at least this far
6620
+ * apart — so dragging a crowded fan towards the center always spreads it
6621
+ * out (panning can't change hyperbolic distances, only magnify them).
6622
+ * `0` disables it (every child at exactly `curvature`). Default `0.5`.
6623
+ */
6624
+ siblingSpacing?: number;
6368
6625
  };
6369
6626
  type HyperbolicEdgeRenderContext = {
6370
6627
  readonly edge: HyperbolicLayoutEdge;
@@ -6383,6 +6640,15 @@ type HyperbolicFocusDetail = {
6383
6640
  };
6384
6641
  type HyperbolicFocusEvent = CustomEvent<HyperbolicFocusDetail>;
6385
6642
  //#endregion
6643
+ //#region src/hyperbolic-tree/render-utils.d.ts
6644
+ /**
6645
+ * How nodes are drawn:
6646
+ * - `dot` — a filled circle with the label beside it (thinned when crowded).
6647
+ * - `box` — a rectangle containing the label, shrinking with distance from
6648
+ * the focus the way the space itself does.
6649
+ */
6650
+ type HyperbolicNodeShape = `dot` | `box`;
6651
+ //#endregion
6386
6652
  //#region src/hyperbolic-tree/hyperbolictree-list.d.ts
6387
6653
  interface HyperbolicTreeListElementEventMap extends TreeComponentEventMap {
6388
6654
  'select': TreeSelectEvent;
@@ -6401,49 +6667,15 @@ interface HyperbolicTreeListElementEventMap extends TreeComponentEventMap {
6401
6667
  * shared `TreeComponent` interface so existing infrastructure (`TreeDataModel`,
6402
6668
  * `IncrSearchTreeController`, `TreeComponent`-typed code) works unmodified.
6403
6669
  *
6404
- * Differences from `ixfx-tree-list` (deliberate):
6405
- * - **Expand/collapse is reinterpreted as focus change.** Every loaded node is
6406
- * always laid out; clicking a node re-centers the disk on it (an animated
6407
- * Möbius transform of the same fixed layout, not a re-layout). `expand`/
6408
- * `collapse` fire when the new focus is a descendant/ancestor of the
6409
- * previous one, for interop with existing listeners.
6410
- * - **`interactionMode` drops `checked`** — no checkbox affordance at
6411
- * disk-edge node scale.
6412
- * - **`exclusivity` is accepted but ignored** — nothing is independently open.
6413
- * - **`filterPredicate` dims** non-matching nodes instead of hiding them.
6414
- * - Dragging empty disk space pans the view without changing focus or
6415
- * selection — a gesture with no indented-tree analog.
6416
- * - Drag-and-drop and `checkboxRenderer` are out of scope.
6417
- *
6418
- * **Zoom vs. curvature.** `zoom` (default `1`) magnifies the rendered disk
6419
- * around the focus — a post-layout SVG scale, not a re-layout. `curvature`
6420
- * (default `1`) instead changes the layout itself: the hyperbolic distance
6421
- * placed between generations, i.e. how strongly the disk's own compression
6422
- * curves the space. Raising `curvature` crowds distant generations toward
6423
- * the boundary faster (a stronger fisheye) which — unlike `zoom` — also
6424
- * reshapes the relative sizes/spacing of what's near vs. far from the focus,
6425
- * so it reads as "zooming in" on the focus even at `zoom: 1`. Both are also
6426
- * independent of `maxRadius`, which changes how many tree-graph rings get
6427
- * laid out at all.
6428
- *
6429
- * **Weighting.** Set `TreeItem.weight` on any node to influence its visuals.
6430
- * Weight is normalized to `0..1` across the currently-visible node set and
6431
- * exposed as the `--node-weight` CSS custom property on each node's `<g
6432
- * part="node">` (raw value also available as `--node-weight-raw`), and as
6433
- * `--edge-weight` (average of the two endpoints) on each edge's `<path
6434
- * part="edge">`. By default this scales node radius (via `minWeightScale`/
6435
- * `maxWeightScale`), tints node fill toward `--accent`, and thickens edge
6436
- * strokes — override any of that with CSS targeting `::part(dot)`/
6437
- * `::part(edge)`, or the vars themselves.
6438
- *
6439
- * A specific node or edge can be targeted from outside the shadow root by
6440
- * key — each node also exports `node-<key>` and each edge `edge-to-<key>`/
6441
- * `edge-from-<key>` (non-identifier key characters replaced with `-`), e.g.
6442
- * `::part(edge-to-library) { stroke-dasharray: 4 2; }`. (A plain attribute
6443
- * selector like `[data-to="..."]` can't reach across the shadow boundary —
6444
- * those `data-from`/`data-to` attributes are there for JS introspection via
6445
- * `shadowRoot.querySelector`, not CSS from the light DOM.) For anything CSS
6446
- * can't express, use `edgeRenderer` for full custom edges.
6670
+ * Deliberate differences from `ixfx-tree-list`: expand/collapse is
6671
+ * reinterpreted as focus change (`expand`/`collapse` still fire, for
6672
+ * interop); `interactionMode` drops `checked`; `exclusivity` is ignored;
6673
+ * `filterPredicate` dims rather than hides; dragging empty space pans;
6674
+ * drag-and-drop and `checkboxRenderer` are out of scope.
6675
+ *
6676
+ * See `src/hyperbolic-tree/README.md` for zoom vs. curvature, crowded fans,
6677
+ * label legibility, weighting, branch colours, `::part()` targeting and the
6678
+ * full CSS variable list.
6447
6679
  */
6448
6680
  declare class HyperbolicTreeListElement extends LitElement implements TreeComponent, TreeSearchHost {
6449
6681
  #private;
@@ -6473,6 +6705,28 @@ declare class HyperbolicTreeListElement extends LitElement implements TreeCompon
6473
6705
  interactionMode: HyperbolicInteractionMode;
6474
6706
  /** Tree-graph steps from the focus to lay out and render. */
6475
6707
  maxRadius: number;
6708
+ /**
6709
+ * How nodes are drawn: `dot` (filled circle, label beside it) or `box`
6710
+ * (a rectangle containing the label, shrinking with distance from focus).
6711
+ * @default 'dot'
6712
+ */
6713
+ nodeShape: HyperbolicNodeShape;
6714
+ /** `box` mode: labels longer than this are truncated with `…`. `0` disables truncation. */
6715
+ boxMaxChars: number;
6716
+ /**
6717
+ * `box` mode: smallest on-screen label size (CSS px) worth drawing. Boxes
6718
+ * whose label would render smaller — or that would overlap a
6719
+ * higher-priority label — are drawn as small text-less markers instead
6720
+ * (hover one to reveal its label).
6721
+ */
6722
+ minLabelSize: number;
6723
+ /**
6724
+ * Tint each top-level branch (each child of the root, and everything under
6725
+ * it) its own hue, like a classic hyperbolic browser — makes it obvious
6726
+ * which subtree a distant node belongs to. Hues are spread evenly around
6727
+ * the colour wheel from `--hyperbolictree-branch-hue-start`.
6728
+ */
6729
+ colorByBranch: boolean;
6476
6730
  /** Base node dot radius, as a fraction of the disk radius (the disk has radius 1). */
6477
6731
  nodeRadius: number;
6478
6732
  /** Nodes whose scaled radius falls below this (same fraction-of-disk-radius units) render without a label. */
@@ -6482,26 +6736,49 @@ declare class HyperbolicTreeListElement extends LitElement implements TreeCompon
6482
6736
  /** Radius multiplier applied to a node with `weight` at the high end of the currently-visible range. */
6483
6737
  maxWeightScale: number;
6484
6738
  /**
6485
- * Visual magnification of the rendered disk, centered on the focus — a
6486
- * plain SVG scale applied after layout, distinct from {@link maxRadius}
6487
- * (which changes *how many rings* are laid out, and so how much the
6488
- * Poincaré projection itself compresses distant nodes). `1` is unscaled;
6489
- * `>1` zooms in, `<1` zooms out. Panning (dragging empty disk space) still
6490
- * operates in the same pre-zoom disk coordinates, so it keeps feeling
6491
- * consistent at any zoom level.
6739
+ * Visual (Euclidean) magnification of the rendered disk — a post-layout
6740
+ * scale, distinct from {@link curvature} (which reshapes the layout) and
6741
+ * {@link maxRadius} (how many rings are laid out). Labels stay the same
6742
+ * size on screen, so zooming in spreads crowded labels apart. Zoom
6743
+ * gestures update it; see {@link disableZoomGestures}.
6492
6744
  */
6493
6745
  zoom: number;
6494
6746
  /**
6495
- * Hyperbolic distance placed between each generation — how much the space
6496
- * itself is curved, as distinct from {@link zoom} (a flat post-layout
6497
- * magnification). `1` is the standard Poincaré-disk layout. Raising it
6498
- * pushes each generation further out, so the disk's own `tanh` compression
6499
- * crowds distant generations toward the boundary faster: a stronger
6500
- * fisheye, which reads as "zooming in" on the focus even though `zoom`
6501
- * hasn't changed. Lowering it spreads generations out more evenly,
6502
- * flattening the view toward a Euclidean-feeling layout.
6747
+ * Turn off zoom gestures: trackpad pinch / Ctrl-⌘-wheel (over the tree),
6748
+ * plain wheel (while the tree has keyboard focus), and two-finger touch
6749
+ * pinch. All zoom around the pointer, and update {@link zoom}.
6750
+ */
6751
+ disableZoomGestures: boolean;
6752
+ /**
6753
+ * Turn off radial labels. By default a label runs along its node's
6754
+ * incoming edge (flipped on the left half so it never reads upside-down),
6755
+ * so a fan of siblings only needs room for each label's height, not its
6756
+ * width. Disabled, every label is horizontal.
6757
+ */
6758
+ disableRadialLabels: boolean;
6759
+ /**
6760
+ * Turn off the child preview: hovering (or keyboard-tickling) a node whose
6761
+ * children aren't all legible in the current view — labels culled, or
6762
+ * beyond `maxRadius` — pops up a clickable list of them.
6763
+ */
6764
+ disableChildPreview: boolean;
6765
+ /**
6766
+ * Minimum hyperbolic distance placed between generations — how curved the
6767
+ * space is. Raising it crowds distant generations toward the boundary
6768
+ * faster (a stronger fisheye that reads as "zooming in" on the focus);
6769
+ * lowering it flattens the view toward a Euclidean-feeling layout.
6503
6770
  */
6504
6771
  curvature: number;
6772
+ /**
6773
+ * Minimum hyperbolic distance between adjacent siblings. A bushy node's
6774
+ * children are pushed further out until they're at least this far apart,
6775
+ * so dragging a crowded fan towards the center always spreads it out —
6776
+ * panning can't change hyperbolic distances, only magnify them, so without
6777
+ * this a tightly-packed fan stays packed wherever it's dragged. Larger
6778
+ * values fan out more when inspected, at the cost of pushing crowds further
6779
+ * towards the edge in the overview. `0` disables it.
6780
+ */
6781
+ siblingSpacing: number;
6505
6782
  /** Duration (ms) of the animated re-center on focus change. `0` snaps instantly. */
6506
6783
  focusAnimationDuration: number;
6507
6784
  /** Optional custom renderer for edges, in place of the default geodesic-arc path. */
@@ -6520,17 +6797,37 @@ declare class HyperbolicTreeListElement extends LitElement implements TreeCompon
6520
6797
  searchModes: string | undefined;
6521
6798
  /** The node currently centered on the disk. Pure view-state — `root` is never mutated by focus changes. */
6522
6799
  get focusedNode(): TreeNode | undefined;
6523
- private _focusKey;
6524
- /** Interpolated canonical-space view center while a focus-change animation is in flight; `undefined` when settled. */
6525
- private _animCenter;
6526
- /** Extra pan offset applied on top of the focus center, from dragging empty disk space. */
6527
- private _panOffset;
6800
+ /**
6801
+ * Layout id (see `HyperbolicLayoutNode.id`) of the focused node —
6802
+ * `undefined` means the root. Ids rather than `item.key`s, so data that
6803
+ * repeats keys across branches still focuses the node actually clicked.
6804
+ */
6805
+ private _focusId;
6806
+ /**
6807
+ * Canonical → screen projection overriding the settled "focus at the
6808
+ * center" view — set per-frame while a focus change animates, and by
6809
+ * panning. `undefined` when settled on the focus.
6810
+ */
6811
+ private _viewOverride;
6812
+ /**
6813
+ * Orientation of the settled view (focus at the center). Views are
6814
+ * expressed in the focus's own local frame, and focus changes keep
6815
+ * whatever orientation the tree had when the animation started, so there
6816
+ * is no global "up" to snap back to — and no spin on refocus.
6817
+ */
6818
+ private _focusRotation;
6819
+ /** Pan of the zoomed disk, in screen units — see {@link ZoomState}. */
6820
+ private _zoomOffset;
6821
+ /** Layout id of the node whose children are being previewed. */
6822
+ private _previewId;
6528
6823
  /** Incremental search (navigate / select / filter). See `docs/infra-incremental.md`. */
6529
6824
  readonly search: ListSearchController<{
6530
6825
  node: TreeNode;
6531
6826
  depth: number;
6532
6827
  }>;
6533
6828
  private tickled;
6829
+ /** The host's size in CSS px. */
6830
+ private _hostSize;
6534
6831
  connectedCallback(): void;
6535
6832
  disconnectedCallback(): void;
6536
6833
  protected updated(changedProps: PropertyValues): void;
@@ -6584,12 +6881,54 @@ interface HyperbolicTreeListElement {
6584
6881
  //#region src/hyperbolic-tree/layout.d.ts
6585
6882
  type CanonicalEntry = {
6586
6883
  readonly node: TreeNode;
6884
+ /** Path-derived id, unique even when `item.key`s repeat — see {@link hyperbolicChildIds}. */
6885
+ readonly id: string;
6587
6886
  readonly depth: number;
6588
6887
  readonly parentKey: string | undefined;
6888
+ readonly parentId: string | undefined;
6889
+ /**
6890
+ * Root-anchored position. Informational only: every step away from the
6891
+ * root pushes it exponentially closer to the disk boundary, so beyond
6892
+ * ~14 hyperbolic units (e.g. depth 5 at `curvature` 3) it saturates to the
6893
+ * clamp limit and distinct nodes collapse together. Views are built from
6894
+ * {@link toParent} instead — see {@link hyperbolicRelativeFrame}.
6895
+ */
6589
6896
  readonly position: Point;
6897
+ /**
6898
+ * This node's local frame expressed in its parent's local frame — the
6899
+ * single short hop (a translation by one generation) from parent to
6900
+ * child. Identity for the root. Composing these outward from the focus
6901
+ * keeps every visible position precise, however deep the focus sits.
6902
+ */
6903
+ readonly toParent: DiskIsometry;
6590
6904
  /** Angular width (radians) this node's own parent allocated to it — root is `2π`. */
6591
6905
  readonly angularShare: number;
6592
6906
  };
6907
+ /**
6908
+ * Path-derived ids for `children` of the node with id `parentId`. `TreeItem.key`
6909
+ * is meant to be unique, but real data (e.g. a file system, where `readme.md`
6910
+ * recurs in many folders) often only has keys unique among siblings. Keying
6911
+ * the layout on `item.key` alone would silently merge those nodes — edges get
6912
+ * attached to the wrong parent and clicks focus the wrong node — so the
6913
+ * layout identifies nodes by their key path instead. Repeated keys among
6914
+ * siblings are disambiguated by occurrence count. The root's id is its key.
6915
+ */
6916
+ declare function hyperbolicChildIds(parentId: string, children: readonly TreeNode[]): string[];
6917
+ /** Depth (root is 0) of the node with layout id `id`. */
6918
+ declare function hyperbolicIdDepth(id: string): number;
6919
+ /**
6920
+ * Layout id of the root's child that `id` descends from (or is) — i.e. which
6921
+ * top-level branch it belongs to. `undefined` for the root itself.
6922
+ */
6923
+ declare function hyperbolicBranchId(id: string): string | undefined;
6924
+ /** Whether layout id `id` is a strict descendant of `ancestorId`. */
6925
+ declare function isHyperbolicDescendantId(id: string, ancestorId: string): boolean;
6926
+ /** Chain of nodes from `root` down to the node with layout id `id`, or `undefined` if absent. */
6927
+ declare function findHyperbolicPathById(root: TreeNode | undefined, id: string): TreeNode[] | undefined;
6928
+ /** Layout id of `target` (matched by object identity) within `root`, or `undefined` if absent. */
6929
+ declare function findHyperbolicIdOf(root: TreeNode | undefined, target: TreeNode): string | undefined;
6930
+ /** Key path (from the root's children) to the first node, depth-first, satisfying `predicate`. */
6931
+ declare function findHyperbolicKeyPath(nodes: readonly TreeNode[], predicate: (node: TreeNode) => boolean, prefix?: readonly string[]): string[] | undefined;
6593
6932
  /** Depth-first search for the node with `key`. Returns `undefined` when absent. */
6594
6933
  declare function findHyperbolicNode(root: TreeNode | undefined, key: string): TreeNode | undefined;
6595
6934
  /**
@@ -6597,21 +6936,37 @@ declare function findHyperbolicNode(root: TreeNode | undefined, key: string): Tr
6597
6936
  * Returns `undefined` when the key is absent. The first entry is always `root`.
6598
6937
  */
6599
6938
  declare function findHyperbolicPath(root: TreeNode | undefined, key: string): TreeNode[] | undefined;
6939
+ /** Default minimum hyperbolic distance between adjacent siblings. See {@link childDistance}. */
6940
+ declare const DEFAULT_SIBLING_SPACING = 0.5;
6600
6941
  /**
6601
6942
  * Canonical (true-root-anchored) hyperbolic position of every currently-loaded
6602
- * node, keyed by node key. Positions never depend on the current focus —
6943
+ * node, keyed by layout id (see {@link hyperbolicChildIds}). Positions never depend on the current focus —
6603
6944
  * refocusing is purely a Möbius re-projection of these fixed coordinates, so
6604
6945
  * the tree never needs to be re-laid-out when the focus changes.
6605
6946
  *
6606
6947
  * Each node holds an angular wedge — inherited from its parent, expressed in
6607
6948
  * its *own* local frame (root starts with the full `[-π, π]`) — across which
6608
- * its children are placed at hyperbolic distance `curvature` (default `1`).
6609
- * That wedge is partitioned among the children, weighted by each child's own
6949
+ * its children are placed at hyperbolic distance of at least `curvature`
6950
+ * (default `1`) — further for a thin slice, per `siblingSpacing` (see
6951
+ * {@link childDistance}).
6952
+ * That wedge is partitioned among the children, weighted by √ of each child's own
6610
6953
  * subtree size rather than split evenly, and each child's own share is
6611
6954
  * carried into its local frame via {@link boundaryAngleInLocalFrame} before
6612
- * recursing. This is a strict partition (slices never overlap and always sum
6613
- * to the parent's own wedge), which is what guarantees sibling subtrees never
6614
- * spatially cross regardless of how deep or bushy they are.
6955
+ * recursing. This is a strict partition, and each child's wedge region
6956
+ * (bounded by geodesic rays to the same two ideal boundary points as its
6957
+ * slice) nests inside its parent's, which is what guarantees sibling
6958
+ * subtrees never spatially cross regardless of how deep or bushy they are.
6959
+ *
6960
+ * Every node's local frame is tracked as a full {@link DiskIsometry}
6961
+ * (local → canonical), built by composing its parent's frame with the
6962
+ * translation to the child. Composing Möbius translations introduces a
6963
+ * rotation (gyration); dropping it — i.e. assuming a node's frame is simply
6964
+ * `mobiusToOrigin(·, position)` — makes every wedge from depth 3 onward
6965
+ * point in a subtly wrong direction, so subtrees cross each other.
6966
+ *
6967
+ * A wedge wider than π is narrowed to π (around the same bisector) before
6968
+ * the child recurses into it: a near-full-circle wedge would otherwise fan
6969
+ * that child's own children back around towards — and across — its parent.
6615
6970
  *
6616
6971
  * `curvature` scales how far apart (in hyperbolic distance) each generation
6617
6972
  * sits. Raising it pushes each generation further out, so the Poincaré
@@ -6620,58 +6975,34 @@ declare function findHyperbolicPath(root: TreeNode | undefined, key: string): Tr
6620
6975
  * in" on the focus. Lowering it spreads generations out more evenly,
6621
6976
  * flattening the view toward a Euclidean-feeling layout.
6622
6977
  */
6623
- declare function computeCanonicalPositions(root: TreeNode | undefined, maxDepth?: number, curvature?: number): Map<string, CanonicalEntry>;
6978
+ declare function computeCanonicalPositions(root: TreeNode | undefined, maxDepth?: number, curvature?: number, siblingSpacing?: number): Map<string, CanonicalEntry>;
6979
+ /**
6980
+ * The frame of node `toId` expressed in node `fromId`'s local frame (maps
6981
+ * `toId`-local coordinates to `fromId`-local ones), composed along the tree
6982
+ * path between them via their lowest common ancestor. Used to hand a view
6983
+ * over from one focus to another without passing through root-anchored
6984
+ * coordinates. `undefined` if either id is absent.
6985
+ */
6986
+ declare function hyperbolicRelativeFrame(entries: ReadonlyMap<string, CanonicalEntry>, fromId: string, toId: string): DiskIsometry | undefined;
6624
6987
  /**
6625
6988
  * Compute the visible nodes/edges of a hyperbolic tree view: every
6626
6989
  * currently-loaded node within `maxRadius` tree-graph steps of the focused
6627
6990
  * node, projected onto the Poincaré disk with the focus at its center.
6628
6991
  *
6629
6992
  * @param root True tree root. `undefined` yields an empty layout.
6630
- * @param options `focusedKey` (default the true root; unknown keys fall back
6631
- * to the true root), `maxRadius` (default unlimited), `maxDepth` (safety
6632
- * cap on canonical-position recursion depth, default 24), `centerOverride`
6633
- * (project around this canonical-space point instead of the focus node's
6634
- * own position — used to animate smoothly between foci).
6993
+ * @param options `focusedKey` (a layout id or plain `item.key`; default the
6994
+ * true root; unknown keys fall back to the true root), `maxRadius` (default unlimited), `maxDepth` (safety
6995
+ * cap on layout recursion depth, default 24), `curvature`,
6996
+ * `siblingSpacing`, `centerOverride` (put this point of the focus's local
6997
+ * frame at the center instead of the focus itself), `view` (a full
6998
+ * focus-local → screen isometry, taking precedence over `centerOverride` —
6999
+ * used for panning and animation, which also rotate).
6635
7000
  */
6636
7001
  declare function computeHyperbolicLayout(root: TreeNode | undefined, options?: ComputeHyperbolicLayoutOptions): {
6637
7002
  nodes: HyperbolicLayoutNode[];
6638
7003
  edges: HyperbolicLayoutEdge[];
6639
7004
  };
6640
7005
  //#endregion
6641
- //#region src/hyperbolic-tree/poincare-math.d.ts
6642
- /** Euclidean norm (`|z|`) of a point. */
6643
- declare function norm(a: Point): number;
6644
- /** Clamp a point to stay strictly inside the unit disk (the Poincaré model's boundary is never reached). */
6645
- declare function clampToDisk(p: Point, maxNorm?: number): Point;
6646
- /**
6647
- * Möbius transform that translates `a` to the origin: `(z - a) / (1 - conj(a) * z)`.
6648
- * A hyperbolic isometry — preserves all pairwise Poincaré distances.
6649
- */
6650
- declare function mobiusToOrigin(z: Point, a: Point): Point;
6651
- /**
6652
- * Inverse of {@link mobiusToOrigin}: translates the origin back to `a`, i.e.
6653
- * `(z + a) / (1 + conj(a) * z)`.
6654
- */
6655
- declare function mobiusFromOrigin(z: Point, a: Point): Point;
6656
- /**
6657
- * Möbius addition (gyrogroup composition) of two disk-translations: the
6658
- * canonical-space point reached by translating the origin to `a`, then
6659
- * translating that local frame's origin by `b`.
6660
- */
6661
- declare function mobiusAdd(a: Point, b: Point): Point;
6662
- /** Euclidean Poincaré-disk radius corresponding to hyperbolic distance `d` from the origin. */
6663
- declare function euclideanRadiusForHyperbolicDistance(d: number): number;
6664
- /** Hyperbolic distance from the origin corresponding to Euclidean disk radius `r`. */
6665
- declare function hyperbolicDistanceForEuclideanRadius(r: number): number;
6666
- /** Hyperbolic (Poincaré) distance between two points in the unit disk. */
6667
- declare function poincareDistance(p: Point, q: Point): number;
6668
- /**
6669
- * Point at parameter `t` (0–1) along the hyperbolic geodesic from `a` to `b`.
6670
- * `t=0` yields `a`, `t=1` yields `b`; intermediate values move at constant
6671
- * hyperbolic speed along the geodesic (not the Euclidean straight line).
6672
- */
6673
- declare function geodesicInterpolate(a: Point, b: Point, t: number): Point;
6674
- //#endregion
6675
7006
  //#region src/icicle-tree/types.d.ts
6676
7007
  /**
6677
7008
  * Weight accessor — returns the area share of `item` within its siblings.
@@ -10341,5 +10672,5 @@ interface XyPad {
10341
10672
  //#region src/index.d.ts
10342
10673
  declare function init(): void;
10343
10674
  //#endregion
10344
- 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, BottomDrawerCloseEvent, BottomDrawerCommand, BottomDrawerElement, BottomDrawerElementEventMap, BottomDrawerResizeDetail, BottomDrawerResizeEvent, type BuiltInFormatterName, type BuiltInFormatterOptions, ButtonElement, ButtonElementEventMap, ButtonToggleDetail, ButtonToggleEvent, Checkbox, CheckboxChangeDetail, CheckboxChangeEvent, CheckboxEventMap, ClickSnapMode, ColourMapConfig, ColourMode, ColourPicker, type ColourPickerChangeEvent, type ColourPickerEventDetail, type ColourPickerInputEvent, ColourPickerPopup, ColourResult, type ComputeHyperbolicLayoutOptions, ComputeIcicleLayoutOptions, type ComputeTreemapLayoutOptions, ConfigEntry, ContiguousSelectEventDetail, CrossoverBehaviour, CrumbDragStartDetail, CrumbDragStartEvent, CrumbDropDetail, CrumbDropEvent, CrumbExternalDropParser, CrumbNavChangeDetail, CrumbNavChangeEvent, CrumbNavExpandDetail, CrumbNavExpandEvent, CrumbNavNavigateDetail, CrumbNavNavigateEvent, CrumbNavigationChangeDetail, CrumbNavigationChangeEvent, CrumbNavigationElement, CrumbNavigationElementEventMap, CrumbNavigationExpandDetail, CrumbNavigationExpandEvent, CrumbNavigationItemClickDetail, CrumbNavigationItemClickEvent, CrumbPathController, CrumbPathControllerOptions, CrumbPathElement, CrumbPathElementEventMap, CrumbSegment, CrumbSegmentDragData, CrumbSegmentDragLookupFn, CrumbSiblingLookupFn, type CssVars, CustomCheckboxOptions, DataBatch, DataController, DataControllerOptions, DataDisplayComponent, DataGridCellClickDetail, DataGridCellClickEvent, DataGridCellEditDetail, DataGridCellEditEvent, type DataGridColumn, type DataGridColumnMenu, DataGridColumnReorderDetail, DataGridColumnReorderEvent, DataGridColumnResizeDetail, DataGridColumnResizeEvent, DataGridColumnVisibilityDetail, DataGridColumnVisibilityEvent, type DataGridDataType, type DataGridEditability, type DataGridEditorContext, type DataGridEditorFactory, type DataGridEditorType, DataGridElement, DataGridElementEventMap, type DataGridGetRowKey, type DataGridGroupBy, DataGridGroupChangeDetail, DataGridGroupChangeEvent, type DataGridGroupLabel, type DataGridInteractionMode, DataGridRowActivateDetail, DataGridRowActivateEvent, DataGridSelectDetail, DataGridSelectEvent, type DataGridSelectionMode, DataGridSortDetail, type DataGridSortDirection, DataGridSortEvent, type DataGridSortState, DataGridViewportChangeDetail, DataGridViewportChangeEvent, type DataListSearchAdapterOptions, type DataListSearchItem, DataProviderResult, DataTableElement, DataTableElementEventMap, DataTableRow, DataTableRowClickDetail, DataTableRowClickEvent, type DetailFormatter, DetailListElement, DetailListElementEventMap, type DetailSortComparator, type DetailSortItem, type DetailSortMode, DisplayTextLogic, DistributeResult, DockAddPanelTarget, DockAxis, DockChangeDetail, DockChangeEvent, DockDirection, DockDragBoundaryDetail, DockDragBoundaryEvent, DockDropTarget, type DockDropZone, DockEdge, DockHostElement, DockHostElementEventMap, DockLayout, DockLeafContentRules, DockLeafInfo, DockLeafPlacementPolicy, DockLeafPlacementPolicyResolved, DockLeafRef, DockNeighbours, DockNode, DockOperation, DockPanelActivatedDetail, DockPanelActivatedEvent, DockPanelAddedDetail, DockPanelAddedEvent, DockPanelDragStartDetail, DockPanelDragStartEvent, DockPanelElement, DockPanelElementEventMap, DockPanelInit, DockPanelRemovedDetail, DockPanelRemovedEvent, DockPanelSnapshot, DockPanelTearOutDetail, DockPanelTearOutEvent, DockRect, DockSplitNode, DockStackNode, type DragSelectRect, 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 GlobalFormatter, type GridListActivateDetail, type GridListActivateEvent, type GridListCaptionAlign, type GridListCaptionBackdrop, type GridListCaptionPosition, type GridListCaptionStyle, type GridListDataAdapter, GridListElement, type GridListElementEventMap, type GridListFullElementEventMap, type GridListItemClickDetail, type GridListItemClickEvent, type GridListItemEventDetail, 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, type HyperbolicEdgeRenderContext, type HyperbolicEdgeRenderer, type HyperbolicFocusDetail, type HyperbolicFocusEvent, type HyperbolicInteractionMode, type HyperbolicLayoutEdge, type HyperbolicLayoutNode, type Point as HyperbolicPoint, HyperbolicTreeListElement, HyperbolicTreeListElementEventMap, ICON_CARET_RIGHT, ICON_CHECK, ICON_CHEVRON_DOWN, ICON_CLOSE, IDataProvider, type IGroupedSubComponent, type IGroupedSubComponentEventMap, IcicleInteractionMode, IcicleOrientation, IcicleRect, IcicleTreeListElement, IcicleTreeListElementEventMap, IcicleValueAccessor, IcicleZoomDetail, IcicleZoomEvent, 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, LedMode, type ListActivateDetail, type ListActivateEvent, type ListDragEntry, type ListDragPreview, type ListDragPreviewContext, type ListDragPreviewRenderer, type ListDragPreviewSourceResolver, ListDragSelectController, type ListDragSelectControllerConfig, type ListDragSource, type ListElementEventMap, type ListInteractionMode, type ListItemClickDetail, type ListItemClickEvent, type ListItemMotionOptions, type ListItemOutResult, ListNativeDragController, type ListNativeDragControllerConfig, type ListNativeDragStartDetail, type ListNativeDragStartEvent, 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, type ListViewportChangeDetail, type ListViewportChangeEvent, 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, type MulticolCategory, type MulticolColumnState, MulticolColumnsChangeDetail, MulticolColumnsChangeEvent, type MulticolColumnsChangeReason, type MulticolItem, MulticolListElement, MulticolListElementEventMap, type MulticolQuery, type MulticolSelectDetail, MulticolSelectEvent, NarrowedTextChangeDetail, NarrowedTextChangeEvent, NarrowedTextElement, NarrowedTextItem, NoneSelectEventDetail, Notification, NotificationContent, NotificationManager, NotificationPillElement, NotificationPillElementEventMap, NotificationRenderer, NotificationRendererHooks, NotificationType, NotifierOptions, type OklchValue, Orientation, PanTextElement, PanTextMode, PanelCloseEvent, PanelElement, PanelElementEventMap, PanelGroupElement, PanelGroupElementEventMap, PanelGroupOrientation, PanelGroupReorderDetail, PanelGroupReorderEvent, PanelInfo, PanelNode, PanelOrientation, PanelToggleDetail, PanelToggleEvent, PanelToggleInteraction, PanelVariant, PillPosition, PillQueueDisplay, PillRendererOptions, PillSafeArea, PillTapDetail, PillTapEvent, PlotDataSeries, PlotDataSeriesOptions, PlotHistogram, PlotHistogramBucketClickDetail, PlotHistogramBucketClickEvent, PlotHistogramElementEventMap, PlotHistogramInteractionMode, PlotHistogramOrientation, PlotHistogramSelectionChangeDetail, PlotHistogramSelectionChangeEvent, PlotHistogramSelectionRange, 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, SegmentIconLookupFn, SelectEventDetail, SelectHorizChangeDetail, SelectHorizChangeEvent, SelectHorizElement, SelectHorizEventMap, SelectionMode, ShapefillDisplay, ShapefillFillMode, ShapefillValueChangeDetail, ShapefillValueChangeEvent, ShapefillValueElement, ShapefillValueInputDetail, ShapefillValueInputEvent, 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, type SortDirection, 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, ToolbarElementEventMap, ToolbarGroupElement, ToolbarGroupReorderDetail, ToolbarGroupReorderEvent, ToolbarLayout, ToolbarLayoutSnapshot, ToolbarOrientation, ToolbarVerticalWriting, TooltipElement, TooltipOrientations, TrackHeightMode, TrackLayout, TransitoryLabelElement, TreeBaseElement, TreeBaseElementEventMap, TreeCheckboxState, TreeComponent, TreeComponentEventMap, TreeConfig, TreeController, TreeControllerOptions, TreeDataModel, TreeDataModelOptions, TreeDndMode, TreeDragContext, TreeDragEndEvent, TreeDragOverEvent, TreeDragStartEvent, TreeDropApplyContext, TreeDropContext, TreeDropController, TreeDropControllerConfig, TreeDropDetail, TreeDropEvent, TreeDropPosition, TreeDropResolvedDrag, TreeDropTarget, TreeDropVisibleRow, TreeExclusivity, TreeFilterPredicate, TreeInteractionMode, TreeItemDblClickDetail, TreeItemDblClickEvent, type TreeKeyboardNavCallbacks, TreeKeyboardNavController, type TreeKeyboardNavControllerConfig, type TreeKeyboardNavItemId, TreeListAdapterOptions, TreeListElement, type TreeListSearchAdapterOptions, TreeSearchHost, TreeSelectionFilter, type TreemapInteractionMode, TreemapListElement, TreemapListElementEventMap, type TreemapRect, type TreemapTilingMethod, type TreemapValueAccessor, TreemapZoomDetail, TreemapZoomEvent, TwoSplitLayoutElement, UserScale, ValueMode, VerticalListAdapterOptions, VerticalListElement, VerticalListElementEventMap, ViewRange, WhenSmall, XyAgeStyle, XyDrawStyle, XyPad, XyPadEventMap, XyPadInputDetail, XyPadInputEvent, addPanelToStack, animateListItemIn, animateListItemOut, applyAgeModification, applyHighlights, applySnapshot, applyTreeDrop, attachTimelineInteractions, bottomDrawerCommandId, buildHighlightTargets, buildModel, captionForEntry, clampToDisk, clearHighlights, collectContainerNames, collectDataResult, collectPanelIds, collectStackPaths, computeCanonicalPositions, computeColour, computeHyperbolicLayout, computeIcicleLayout, computeLeafGeoms, computeTreemapLayout, createAcCompletionProvider, createDataListSearchAdapter, createDefaultListDragPreview, createElementIncrSearch, createElementListSearchAdapter, createEmptyLayout, createEmptyStack, createFuzzySearch, createIncrSearch, createPillRenderer, createSplit, createStack, createTreeListAdapter, createTreeListSearchAdapter, createVerticalListAdapter, distribute, dropTargetFor, euclideanRadiusForHyperbolicDistance, extractStack, findHyperbolicNode, findHyperbolicPath, findIcicleNode, findIciclePath, findNode, findPanelNode, findParentOf, findStackOf, findStackPathByName, findTreemapNode, findTreemapPath, geodesicInterpolate, getActiveDragPanelId, getIcon, getIconEntry, getIconFont, getLeafNeighbours, hasIcon, hyperbolicDistanceForEuclideanRadius, iconBus, init, insertBeside, isDragging, isMultiMode, isSplit, isStack, keyForElement, listItemFadeKeyframes, listSearchStyles, mobiusAdd, mobiusFromOrigin, mobiusToOrigin, monitorIndeterminate, moveLeafNodeToEdge, moveLeafStep, norm, normalise, normaliseValue, normalize, panelGapIndex, parseColourScaleAttr, parseLayout, poincareDistance, pointerOverAnyHost, prefersReducedMotion, preserveRestoreWeights, pruneDraggedDescendants, readBaseColour, registerFontIcon, registerIcon, registerListSearchCommands, removePanelFromStack, resolveCssVars, resolveGrid, resolveLeafPath, resolveTracks, serializeLayout, setActive, setIconFont, setPanelRestoreWeight, startListItemOutAnimation, svgToDataUri, swapLeaves, tickledItemStyles, tickledStyles, timelineStyles, toSnapshot, toolbarGapIndex, walk, wrapRoot };
10675
+ 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, BottomDrawerCloseEvent, BottomDrawerCommand, BottomDrawerElement, BottomDrawerElementEventMap, BottomDrawerResizeDetail, BottomDrawerResizeEvent, type BuiltInFormatterName, type BuiltInFormatterOptions, ButtonElement, ButtonElementEventMap, ButtonToggleDetail, ButtonToggleEvent, Checkbox, CheckboxChangeDetail, CheckboxChangeEvent, CheckboxEventMap, ClickSnapMode, ColourMapConfig, ColourMode, ColourPicker, type ColourPickerChangeEvent, type ColourPickerEventDetail, type ColourPickerInputEvent, ColourPickerPopup, ColourResult, type ComputeHyperbolicLayoutOptions, ComputeIcicleLayoutOptions, type ComputeTreemapLayoutOptions, ConfigEntry, ContiguousSelectEventDetail, CrossoverBehaviour, CrumbDragStartDetail, CrumbDragStartEvent, CrumbDropDetail, CrumbDropEvent, CrumbExternalDropParser, CrumbNavChangeDetail, CrumbNavChangeEvent, CrumbNavExpandDetail, CrumbNavExpandEvent, CrumbNavNavigateDetail, CrumbNavNavigateEvent, CrumbNavigationChangeDetail, CrumbNavigationChangeEvent, CrumbNavigationElement, CrumbNavigationElementEventMap, CrumbNavigationExpandDetail, CrumbNavigationExpandEvent, CrumbNavigationItemClickDetail, CrumbNavigationItemClickEvent, CrumbPathController, CrumbPathControllerOptions, CrumbPathElement, CrumbPathElementEventMap, CrumbSegment, CrumbSegmentDragData, CrumbSegmentDragLookupFn, CrumbSiblingLookupFn, type CssVars, CustomCheckboxOptions, DEFAULT_SIBLING_SPACING, DataBatch, DataController, DataControllerOptions, DataDisplayComponent, DataGridCellClickDetail, DataGridCellClickEvent, DataGridCellEditDetail, DataGridCellEditEvent, type DataGridColumn, type DataGridColumnMenu, DataGridColumnReorderDetail, DataGridColumnReorderEvent, DataGridColumnResizeDetail, DataGridColumnResizeEvent, DataGridColumnVisibilityDetail, DataGridColumnVisibilityEvent, type DataGridDataType, type DataGridEditability, type DataGridEditorContext, type DataGridEditorFactory, type DataGridEditorType, DataGridElement, DataGridElementEventMap, type DataGridGetRowKey, type DataGridGroupBy, DataGridGroupChangeDetail, DataGridGroupChangeEvent, type DataGridGroupLabel, type DataGridInteractionMode, DataGridRowActivateDetail, DataGridRowActivateEvent, type DataGridRowLook, DataGridSelectDetail, DataGridSelectEvent, type DataGridSelectionMode, DataGridSortDetail, type DataGridSortDirection, DataGridSortEvent, type DataGridSortState, DataGridViewportChangeDetail, DataGridViewportChangeEvent, type DataListSearchAdapterOptions, type DataListSearchItem, DataProviderResult, DataTableElement, DataTableElementEventMap, DataTableRow, DataTableRowClickDetail, DataTableRowClickEvent, type DetailFormatter, DetailListElement, DetailListElementEventMap, type DetailSortComparator, type DetailSortItem, type DetailSortMode, DiskIsometry, DisplayTextLogic, DistributeResult, DockAddPanelTarget, DockAxis, DockChangeDetail, DockChangeEvent, DockDirection, DockDragBoundaryDetail, DockDragBoundaryEvent, DockDropTarget, type DockDropZone, DockEdge, DockHostElement, DockHostElementEventMap, DockLayout, DockLeafContentRules, DockLeafInfo, DockLeafPlacementPolicy, DockLeafPlacementPolicyResolved, DockLeafRef, DockNeighbours, DockNode, DockOperation, DockPanelActivatedDetail, DockPanelActivatedEvent, DockPanelAddedDetail, DockPanelAddedEvent, DockPanelDragStartDetail, DockPanelDragStartEvent, DockPanelElement, DockPanelElementEventMap, DockPanelInit, DockPanelRemovedDetail, DockPanelRemovedEvent, DockPanelSnapshot, DockPanelTearOutDetail, DockPanelTearOutEvent, DockRect, DockSplitNode, DockStackNode, type DragSelectRect, 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, GeodesicSegment, type GlobalFormatter, type GridListActivateDetail, type GridListActivateEvent, type GridListCaptionAlign, type GridListCaptionBackdrop, type GridListCaptionPosition, type GridListCaptionStyle, type GridListDataAdapter, GridListElement, type GridListElementEventMap, type GridListFullElementEventMap, type GridListItemClickDetail, type GridListItemClickEvent, type GridListItemEventDetail, 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, type HyperbolicEdgeRenderContext, type HyperbolicEdgeRenderer, type HyperbolicFocusDetail, type HyperbolicFocusEvent, type HyperbolicInteractionMode, type HyperbolicLayoutEdge, type HyperbolicLayoutNode, type HyperbolicNodeShape, type Point as HyperbolicPoint, HyperbolicTreeListElement, HyperbolicTreeListElementEventMap, ICON_CARET_RIGHT, ICON_CHECK, ICON_CHEVRON_DOWN, ICON_CLOSE, IDataProvider, type IGroupedSubComponent, type IGroupedSubComponentEventMap, IcicleInteractionMode, IcicleOrientation, IcicleRect, IcicleTreeListElement, IcicleTreeListElementEventMap, IcicleValueAccessor, IcicleZoomDetail, IcicleZoomEvent, 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, LedMode, type ListActivateDetail, type ListActivateEvent, type ListDragEntry, type ListDragPreview, type ListDragPreviewContext, type ListDragPreviewRenderer, type ListDragPreviewSourceResolver, ListDragSelectController, type ListDragSelectControllerConfig, type ListDragSource, type ListElementEventMap, type ListInteractionMode, type ListItemClickDetail, type ListItemClickEvent, type ListItemMotionOptions, type ListItemOutResult, ListNativeDragController, type ListNativeDragControllerConfig, type ListNativeDragStartDetail, type ListNativeDragStartEvent, 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, type ListViewportChangeDetail, type ListViewportChangeEvent, 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, type MulticolCategory, type MulticolColumnState, MulticolColumnsChangeDetail, MulticolColumnsChangeEvent, type MulticolColumnsChangeReason, type MulticolItem, MulticolListElement, MulticolListElementEventMap, type MulticolQuery, type MulticolSelectDetail, MulticolSelectEvent, NarrowedTextChangeDetail, NarrowedTextChangeEvent, NarrowedTextElement, NarrowedTextItem, NoneSelectEventDetail, Notification, NotificationContent, NotificationManager, NotificationPillElement, NotificationPillElementEventMap, NotificationRenderer, NotificationRendererHooks, NotificationType, NotifierOptions, type OklchValue, Orientation, PanTextElement, PanTextMode, PanelCloseEvent, PanelElement, PanelElementEventMap, PanelGroupElement, PanelGroupElementEventMap, PanelGroupOrientation, PanelGroupReorderDetail, PanelGroupReorderEvent, PanelInfo, PanelNode, PanelOrientation, PanelToggleDetail, PanelToggleEvent, PanelToggleInteraction, PanelVariant, PillPosition, PillQueueDisplay, PillRendererOptions, PillSafeArea, PillTapDetail, PillTapEvent, PlotDataSeries, PlotDataSeriesOptions, PlotHistogram, PlotHistogramBucketClickDetail, PlotHistogramBucketClickEvent, PlotHistogramElementEventMap, PlotHistogramInteractionMode, PlotHistogramOrientation, PlotHistogramSelectionChangeDetail, PlotHistogramSelectionChangeEvent, PlotHistogramSelectionRange, 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, SegmentIconLookupFn, SelectEventDetail, SelectHorizChangeDetail, SelectHorizChangeEvent, SelectHorizElement, SelectHorizEventMap, SelectionMode, ShapefillDisplay, ShapefillFillMode, ShapefillValueChangeDetail, ShapefillValueChangeEvent, ShapefillValueElement, ShapefillValueInputDetail, ShapefillValueInputEvent, 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, type SortDirection, 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, ToolbarElementEventMap, ToolbarGroupElement, ToolbarGroupReorderDetail, ToolbarGroupReorderEvent, ToolbarLayout, ToolbarLayoutSnapshot, ToolbarOrientation, ToolbarVerticalWriting, TooltipElement, TooltipOrientations, TrackHeightMode, TrackLayout, TransitoryLabelElement, TreeBaseElement, TreeBaseElementEventMap, TreeCheckboxState, TreeComponent, TreeComponentEventMap, TreeConfig, TreeController, TreeControllerOptions, TreeDataModel, TreeDataModelOptions, TreeDndMode, TreeDragContext, TreeDragEndEvent, TreeDragOverEvent, TreeDragStartEvent, TreeDropApplyContext, TreeDropContext, TreeDropController, TreeDropControllerConfig, TreeDropDetail, TreeDropEvent, TreeDropPosition, TreeDropResolvedDrag, TreeDropTarget, TreeDropVisibleRow, TreeExclusivity, TreeFilterPredicate, TreeInteractionMode, TreeItemDblClickDetail, TreeItemDblClickEvent, type TreeKeyboardNavCallbacks, TreeKeyboardNavController, type TreeKeyboardNavControllerConfig, type TreeKeyboardNavItemId, TreeListAdapterOptions, TreeListElement, type TreeListSearchAdapterOptions, TreeSearchHost, TreeSelectionFilter, type TreemapInteractionMode, TreemapListElement, TreemapListElementEventMap, type TreemapRect, type TreemapTilingMethod, type TreemapValueAccessor, TreemapZoomDetail, TreemapZoomEvent, TwoSplitLayoutElement, UserScale, ValueMode, VerticalListAdapterOptions, VerticalListElement, VerticalListElementEventMap, ViewRange, WhenSmall, XyAgeStyle, XyDrawStyle, XyPad, XyPadEventMap, XyPadInputDetail, XyPadInputEvent, addPanelToStack, animateListItemIn, animateListItemOut, applyAgeModification, applyHighlights, applyIsometry, applySnapshot, applyTreeDrop, attachTimelineInteractions, bottomDrawerCommandId, buildHighlightTargets, buildModel, captionForEntry, clampToDisk, clearHighlights, collectContainerNames, collectDataResult, collectPanelIds, collectStackPaths, composeIsometry, computeCanonicalPositions, computeColour, computeHyperbolicLayout, computeIcicleLayout, computeLeafGeoms, computeTreemapLayout, createAcCompletionProvider, createDataListSearchAdapter, createDefaultListDragPreview, createElementIncrSearch, createElementListSearchAdapter, createEmptyLayout, createEmptyStack, createFuzzySearch, createIncrSearch, createPillRenderer, createSplit, createStack, createTreeListAdapter, createTreeListSearchAdapter, createVerticalListAdapter, decomposeViewIsometry, distribute, dropTargetFor, euclideanRadiusForHyperbolicDistance, extractStack, findHyperbolicIdOf, findHyperbolicKeyPath, findHyperbolicNode, findHyperbolicPath, findHyperbolicPathById, findIcicleNode, findIciclePath, findNode, findPanelNode, findParentOf, findStackOf, findStackPathByName, findTreemapNode, findTreemapPath, geodesicInterpolate, geodesicPath, geodesicSegment, getActiveDragPanelId, getIcon, getIconEntry, getIconFont, getLeafNeighbours, hasIcon, hyperbolicBranchId, hyperbolicChildIds, hyperbolicDistanceForEuclideanRadius, hyperbolicIdDepth, hyperbolicRelativeFrame, iconBus, identityIsometry, init, insertBeside, invertIsometry, isDragging, isHyperbolicDescendantId, isMultiMode, isSplit, isStack, keyForElement, listItemFadeKeyframes, listSearchStyles, mobiusAdd, mobiusFromOrigin, mobiusToOrigin, monitorIndeterminate, moveLeafNodeToEdge, moveLeafStep, norm, normalise, normaliseValue, normalize, panelGapIndex, parseColourScaleAttr, parseLayout, poincareDistance, pointerOverAnyHost, prefersReducedMotion, preserveRestoreWeights, pruneDraggedDescendants, readBaseColour, registerFontIcon, registerIcon, registerListSearchCommands, removePanelFromStack, resolveCssVars, resolveGrid, resolveLeafPath, resolveTracks, rotationIsometry, serializeLayout, setActive, setIconFont, setPanelRestoreWeight, startListItemOutAnimation, svgToDataUri, swapLeaves, tickledItemStyles, tickledStyles, timelineStyles, toSnapshot, toolbarGapIndex, translationFromOrigin, viewIsometry, walk, wrapRoot };
10345
10676
  //# sourceMappingURL=index.d.ts.map