@ixfx/components 0.11.4 → 0.11.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/bundle/index.d.ts +442 -120
  2. package/bundle/index.d.ts.map +1 -1
  3. package/bundle/index.js +2230 -538
  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/{data-grid-CfiaBqTA.d.ts → data-grid-CPsJBnL4.d.ts} +48 -6
  15. package/dist/data-grid-CPsJBnL4.d.ts.map +1 -0
  16. package/dist/data-grid.d.ts +3 -3
  17. package/dist/data-grid.js +66 -2
  18. package/dist/data-grid.js.map +1 -1
  19. package/dist/{detail-list-DxQZkK-C.d.ts → detail-list-CmdCxddo.d.ts} +22 -5
  20. package/dist/detail-list-CmdCxddo.d.ts.map +1 -0
  21. package/dist/detail-list.d.ts +3 -3
  22. package/dist/detail-list.js +67 -4
  23. package/dist/detail-list.js.map +1 -1
  24. package/dist/{grid-list-k89JpiNy.js → grid-list-3fGhdaFA.js} +92 -7
  25. package/dist/grid-list-3fGhdaFA.js.map +1 -0
  26. package/dist/{grid-list-ChgYpUUq.d.ts → grid-list-D6AfWfwn.d.ts} +27 -4
  27. package/dist/grid-list-D6AfWfwn.d.ts.map +1 -0
  28. package/dist/grid-list.d.ts +2 -2
  29. package/dist/grid-list.js +1 -1
  30. package/dist/{grouped-item-lister-Bhyo-dkH.d.ts → grouped-item-lister-DETte0Dh.d.ts} +2 -2
  31. package/dist/{grouped-item-lister-Bhyo-dkH.d.ts.map → grouped-item-lister-DETte0Dh.d.ts.map} +1 -1
  32. package/dist/grouped-item-lister.d.ts +1 -1
  33. package/dist/{icon-DR_3rSyZ.d.ts → icon-CDGprSdE.d.ts} +2 -2
  34. package/dist/icon-CDGprSdE.d.ts.map +1 -0
  35. package/dist/icons.d.ts +2 -2
  36. package/dist/incr-search.d.ts +1 -1
  37. package/dist/{index-CHbuPyLL.d.ts → index-CMsmZ6Or.d.ts} +4 -4
  38. package/dist/{index-CHbuPyLL.d.ts.map → index-CMsmZ6Or.d.ts.map} +1 -1
  39. package/dist/{index-garxxqgV.d.ts → index-CYndvTWH.d.ts} +2 -2
  40. package/dist/{index-garxxqgV.d.ts.map → index-CYndvTWH.d.ts.map} +1 -1
  41. package/dist/{index-CDllxjVG.d.ts → index-CnyoNA6m.d.ts} +4 -4
  42. package/dist/{index-CDllxjVG.d.ts.map → index-CnyoNA6m.d.ts.map} +1 -1
  43. package/dist/{index-BUB5SICW.d.ts → index-CoqtMSd9.d.ts} +2 -2
  44. package/dist/{index-BUB5SICW.d.ts.map → index-CoqtMSd9.d.ts.map} +1 -1
  45. package/dist/{index-CJ5fshD3.d.ts → index-UvnoZUAo.d.ts} +2 -2
  46. package/dist/{index-CJ5fshD3.d.ts.map → index-UvnoZUAo.d.ts.map} +1 -1
  47. package/dist/{index-BOUaDIW-.d.ts → index-tq6f8007.d.ts} +2 -2
  48. package/dist/{index-BOUaDIW-.d.ts.map → index-tq6f8007.d.ts.map} +1 -1
  49. package/dist/index.d.ts +337 -140
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +2036 -644
  52. package/dist/index.js.map +1 -1
  53. package/dist/item-appearance-BjcMyauw.js +31 -0
  54. package/dist/item-appearance-BjcMyauw.js.map +1 -0
  55. package/dist/{labelled-input-base-Dp_9KP0G.d.ts → labelled-input-base-DiTme1JO.d.ts} +2 -2
  56. package/dist/{labelled-input-base-Dp_9KP0G.d.ts.map → labelled-input-base-DiTme1JO.d.ts.map} +1 -1
  57. package/dist/labelled-radial-input.d.ts +2 -2
  58. package/dist/labelled-radial-input.d.ts.map +1 -1
  59. package/dist/labelled-range-input.d.ts +1 -1
  60. package/dist/labelled-slider-input.d.ts +1 -1
  61. package/dist/{list-native-drag-controller-B9reY4uM.d.ts → list-native-drag-controller-CllsHLxw.d.ts} +2 -2
  62. package/dist/{list-native-drag-controller-B9reY4uM.d.ts.map → list-native-drag-controller-CllsHLxw.d.ts.map} +1 -1
  63. package/dist/{menu-item-DlxAb0Xr.d.ts → menu-item-DT7bKAIw.d.ts} +2 -2
  64. package/dist/{menu-item-DlxAb0Xr.d.ts.map → menu-item-DT7bKAIw.d.ts.map} +1 -1
  65. package/dist/menu.d.ts +2 -2
  66. package/dist/miller.d.ts +3 -3
  67. package/dist/miller.d.ts.map +1 -1
  68. package/dist/miller.js +18 -2
  69. package/dist/miller.js.map +1 -1
  70. package/dist/panel.d.ts +1 -1
  71. package/dist/{split-layout-C5SYbDrq.d.ts → split-layout-JK3xWVX2.d.ts} +2 -2
  72. package/dist/{split-layout-C5SYbDrq.d.ts.map → split-layout-JK3xWVX2.d.ts.map} +1 -1
  73. package/dist/split-layout.d.ts +1 -1
  74. package/dist/{tab-list-v8mKX7Fu.d.ts → tab-list-pqfKaVAE.d.ts} +2 -2
  75. package/dist/{tab-list-v8mKX7Fu.d.ts.map → tab-list-pqfKaVAE.d.ts.map} +1 -1
  76. package/dist/tabs.d.ts +1 -1
  77. package/dist/{titlebar-B5zSTZnF.d.ts → titlebar-Tqu-VvMU.d.ts} +2 -2
  78. package/dist/{titlebar-B5zSTZnF.d.ts.map → titlebar-Tqu-VvMU.d.ts.map} +1 -1
  79. package/dist/titlebar.d.ts +1 -1
  80. package/dist/{tree-component-CMGeqyjZ.d.ts → tree-component-DukLqesg.d.ts} +2 -2
  81. package/dist/{tree-component-CMGeqyjZ.d.ts.map → tree-component-DukLqesg.d.ts.map} +1 -1
  82. package/dist/tree.d.ts +4 -4
  83. package/dist/{types-3Jfcaxvo.d.ts → types-D-kYF16b.d.ts} +21 -1
  84. package/dist/types-D-kYF16b.d.ts.map +1 -0
  85. package/dist/{vertical-list-R25WqAVO.d.ts → vertical-list-DTp-UIUE.d.ts} +26 -3
  86. package/dist/vertical-list-DTp-UIUE.d.ts.map +1 -0
  87. package/dist/vertical-list.d.ts +2 -2
  88. package/dist/vertical-list.js +53 -4
  89. package/dist/vertical-list.js.map +1 -1
  90. package/docs-user/data-grid.md +51 -1
  91. package/docs-user/detail-list.md +46 -0
  92. package/docs-user/grid-list.md +49 -2
  93. package/docs-user/hyperbolic-tree.md +98 -18
  94. package/docs-user/index.json +2 -2
  95. package/docs-user/miller.md +52 -7
  96. package/docs-user/vertical-list.md +63 -0
  97. package/package.json +1 -1
  98. package/dist/data-grid-CfiaBqTA.d.ts.map +0 -1
  99. package/dist/detail-list-DxQZkK-C.d.ts.map +0 -1
  100. package/dist/grid-list-ChgYpUUq.d.ts.map +0 -1
  101. package/dist/grid-list-k89JpiNy.js.map +0 -1
  102. package/dist/icon-DR_3rSyZ.d.ts.map +0 -1
  103. package/dist/types-3Jfcaxvo.d.ts.map +0 -1
  104. package/dist/vertical-list-R25WqAVO.d.ts.map +0 -1
package/bundle/index.d.ts CHANGED
@@ -1073,6 +1073,26 @@ type TreeItem = {
1073
1073
  data?: unknown;
1074
1074
  /** Icon name passed to an icon component, if icons are enabled. */
1075
1075
  icon?: string;
1076
+ /**
1077
+ * CSS colour applied to the node's icon, overriding the inherited text
1078
+ * colour. Only meaningful when `icon` is set. Components that render the
1079
+ * icon from `icon` honour this; the rest ignore it.
1080
+ */
1081
+ iconColor?: string;
1082
+ /**
1083
+ * CSS colour applied to the node's label. Inline, so it wins over the
1084
+ * selected/tickled text colours — keep it legible against both, or leave
1085
+ * it unset and let the component's theming handle selection contrast.
1086
+ */
1087
+ textColor?: string;
1088
+ /**
1089
+ * Finder-style badge rendered alongside the label — e.g. a colour-tag chip
1090
+ * or a stack of them. Anything Lit can render (usually a `TemplateResult`),
1091
+ * or a DOM `Node` for the components that build their rows imperatively.
1092
+ * Placement is per-component: thumbnails-style lists put it before the
1093
+ * name, list-style views right-justify it on the same line.
1094
+ */
1095
+ badge?: unknown;
1076
1096
  /** Tooltip text shown on hover. */
1077
1097
  tooltip?: string;
1078
1098
  /** Optional string value, e.g. for use as a command/route. */
@@ -1786,6 +1806,13 @@ declare class CrumbPathElement extends LitElement {
1786
1806
  segmentDragLookup: CrumbSegmentDragLookupFn | undefined;
1787
1807
  /** Interprets drops landing on segments; enables drop targeting when set. */
1788
1808
  parseExternalDrop: CrumbExternalDropParser | undefined;
1809
+ /**
1810
+ * When enabled, navigating up (clicking an earlier real segment) keeps
1811
+ * rendering the segments beyond it as translucent, non-interactive-drag,
1812
+ * click-to-restore "virtual" segments — for as long as the current path
1813
+ * stays a prefix of the deepest path visited. See `#recordHintOnShorten`.
1814
+ */
1815
+ hintPrevious: boolean;
1789
1816
  private _openIdx;
1790
1817
  private _editing;
1791
1818
  private _cachedSiblings;
@@ -1799,6 +1826,8 @@ declare class CrumbPathElement extends LitElement {
1799
1826
  private _dragCumPath;
1800
1827
  /** Cumulative path of the segment currently hovered by an external drag (`.drop-into`). */
1801
1828
  private _dropCumPath;
1829
+ /** Deepest relative-segment path visited, kept so it can be restored via virtual segments. */
1830
+ private _hintSegments;
1802
1831
  protected updated(changedProperties: PropertyValues): void;
1803
1832
  setPath(newPath: string): void;
1804
1833
  getPath(): string;
@@ -1940,6 +1969,27 @@ type DataGridColumn<R = unknown> = {
1940
1969
  formatter?: (value: unknown, row: R, col: DataGridColumn<R>) => unknown;
1941
1970
  };
1942
1971
  type GlobalFormatter = (value: unknown, columnName: string, row: unknown) => unknown;
1972
+ /**
1973
+ * Optional appearance fields a row may carry, honoured only in the column
1974
+ * nominated by the matching grid property (`textColorColumn`, `iconColumn`,
1975
+ * `badgeColumn`). Read off the *row*, not off the nominated column's own
1976
+ * value, so one row can tint just one of its cells:
1977
+ *
1978
+ * ```ts
1979
+ * grid.textColorColumn = 'status';
1980
+ * grid.rows = [{ status: 'failed', statusTextColor: 'crimson' }];
1981
+ * ```
1982
+ */
1983
+ type DataGridRowLook = {
1984
+ /** CSS colour applied to the cell nominated by `textColorColumn`. */
1985
+ textColor?: string;
1986
+ /** Icon content for the cell nominated by `iconColumn` — anything Lit can render. */
1987
+ icon?: unknown;
1988
+ /** CSS colour tinting the row's `icon`. */
1989
+ iconColor?: string;
1990
+ /** Finder-style badge for the cell nominated by `badgeColumn` — anything Lit can render. */
1991
+ badge?: unknown;
1992
+ };
1943
1993
  type DataGridEditability = `disabled` | `manual` | `user` | `immediate`;
1944
1994
  /**
1945
1995
  * How cell text that's too long for its column width is handled.
@@ -2682,6 +2732,20 @@ declare class DataGridElement extends LitElement {
2682
2732
  */
2683
2733
  columnMenu: DataGridColumnMenu;
2684
2734
  globalFormatter?: GlobalFormatter;
2735
+ /**
2736
+ * Key of the column whose cell text takes the row's `textColor` — e.g. a
2737
+ * status column that renders a red "Failed" only on some rows.
2738
+ */
2739
+ textColorColumn: string;
2740
+ /**
2741
+ * Key of the column that renders the row's `icon` (tinted by `iconColor`).
2742
+ */
2743
+ iconColumn: string;
2744
+ /**
2745
+ * Key of the column that renders the row's `badge`, right-justified in the
2746
+ * cell after the cell's own value.
2747
+ */
2748
+ badgeColumn: string;
2685
2749
  /**
2686
2750
  * Predicate used by incremental filter-search (and callable directly). Rows
2687
2751
  * for which it returns `false` are dropped from the flat list — hidden from
@@ -2809,6 +2873,13 @@ declare class DataGridElement extends LitElement {
2809
2873
  stopEdit(): void;
2810
2874
  setColumnFormatter(columnKey: string, formatter: ((value: unknown) => unknown) | BuiltInFormatterName | null, options?: BuiltInFormatterOptions): void;
2811
2875
  private _formatValue;
2876
+ /**
2877
+ * Resolve the per-row appearance for the cell at `colKey`, honouring the
2878
+ * nominated columns. Additive — `col.renderer` / `col.formatter` still own
2879
+ * the cell's value; this only decorates it. Returns all-`undefined` for
2880
+ * every cell when nothing is nominated (the common case).
2881
+ */
2882
+ private _cellLook;
2812
2883
  private _handleCellSecondClick;
2813
2884
  private _commitEdit;
2814
2885
  private _suppressBlurCommit;
@@ -3049,6 +3120,29 @@ declare class VerticalListElement extends LitElement {
3049
3120
  * appended.
3050
3121
  */
3051
3122
  formatter: ((item: unknown, index: number) => unknown) | undefined;
3123
+ /**
3124
+ * Per-item icon for adapter (`items`) mode, prepended to the row — a DOM
3125
+ * `Node` or anything Lit can render (usually a `TemplateResult` wrapping an
3126
+ * `<ixfx-icon>` or an inline SVG). Ignored when the `formatter` returns a
3127
+ * full row element (the formatter then owns the whole row, icon included).
3128
+ */
3129
+ icon: ((item: unknown, index: number) => unknown) | undefined;
3130
+ /**
3131
+ * CSS colour tinting the per-item `icon`. Icons paint from `currentColor`,
3132
+ * so this recolours them. Inline, so it wins over selection styling.
3133
+ */
3134
+ iconColor: ((item: unknown, index: number) => string | undefined) | undefined;
3135
+ /**
3136
+ * CSS colour for the row's text. Inline, so it wins over the selected /
3137
+ * tickled text colours — keep it legible against both.
3138
+ */
3139
+ textColor: ((item: unknown, index: number) => string | undefined) | undefined;
3140
+ /**
3141
+ * Finder-style badge for the row, right-justified after the text — a
3142
+ * `TemplateResult`, a DOM `Node`, or anything Lit can render. The row is
3143
+ * flex, so the badge self-justifies to the trailing edge.
3144
+ */
3145
+ badge: ((item: unknown, index: number) => unknown) | undefined;
3052
3146
  /**
3053
3147
  * Virtualize the list: only the overscanned viewport window exists in the
3054
3148
  * DOM; offscreen rows are recycled through an off-DOM pool as the list
@@ -3254,6 +3348,22 @@ declare class DetailListElement extends LitElement {
3254
3348
  displayProperty: string;
3255
3349
  formatter: DetailFormatter | undefined;
3256
3350
  iconProperty: string;
3351
+ /**
3352
+ * Property on each `items` entry holding a CSS colour for the item's
3353
+ * `<ixfx-icon>`. Only read when `iconProperty` also resolves an icon.
3354
+ */
3355
+ iconColorProperty: string;
3356
+ /**
3357
+ * Property on each `items` entry holding a CSS colour for the item's caption
3358
+ * text. Inline, so it wins over the selected/tickled text colours.
3359
+ */
3360
+ textColorProperty: string;
3361
+ /**
3362
+ * Property on each `items` entry holding a Finder-style badge — a
3363
+ * `TemplateResult`, a DOM `Node`, or anything Lit can render. Rendered
3364
+ * right-justified on the row, after the caption.
3365
+ */
3366
+ badgeProperty: string;
3257
3367
  keyProperty: string;
3258
3368
  filterPredicate: ((el: Element) => boolean) | undefined;
3259
3369
  /**
@@ -3368,6 +3478,7 @@ declare class DetailListElement extends LitElement {
3368
3478
  */
3369
3479
  fitColumnWidth(): Promise<number>;
3370
3480
  private _isCheckable;
3481
+ /** Appends the caption span; returns it so callers can style it per item. */
3371
3482
  private _setLabel;
3372
3483
  private _syncItemStates;
3373
3484
  private _syncCheckboxes;
@@ -5379,6 +5490,29 @@ type GridListDataAdapter<T> = {
5379
5490
  render: (item: T, index: number) => unknown;
5380
5491
  disabled?: (item: T, index: number) => boolean;
5381
5492
  searchableText?: (item: T, index: number) => string;
5493
+ /**
5494
+ * Per-item icon, rendered above `render`'s output inside the cell's content
5495
+ * well. Anything Lit can render — a `TemplateResult` (e.g.
5496
+ * `html`<ixfx-icon name=${...}></ixfx-icon>``), a DOM `Node`, or a string.
5497
+ * Return `undefined` for items without an icon.
5498
+ */
5499
+ icon?: (item: T, index: number) => unknown;
5500
+ /**
5501
+ * CSS colour applied to this item's icon, tinting any `currentColor` glyph.
5502
+ * Ignored when `icon` returns nothing. Inline, so it wins over selection
5503
+ * styling.
5504
+ */
5505
+ iconColor?: (item: T, index: number) => string | undefined;
5506
+ /**
5507
+ * CSS colour applied to this item's caption. Inline, so it wins over the
5508
+ * selected/tickled caption colours — keep it legible against both.
5509
+ */
5510
+ textColor?: (item: T, index: number) => string | undefined;
5511
+ /**
5512
+ * Finder-style badge rendered inline at the head of the caption, before the
5513
+ * filename — anything Lit can render, e.g. a colour-tag chip as inline SVG.
5514
+ */
5515
+ badge?: (item: T, index: number) => unknown;
5382
5516
  };
5383
5517
  /**
5384
5518
  * Common detail for per-item events (activate, click, tickle), key-first in
@@ -6288,6 +6422,92 @@ declare global {
6288
6422
  }
6289
6423
  }
6290
6424
  //#endregion
6425
+ //#region src/hyperbolic-tree/poincare-math.d.ts
6426
+ /** Euclidean norm (`|z|`) of a point. */
6427
+ declare function norm(a: Point): number;
6428
+ /** Clamp a point to stay strictly inside the unit disk (the Poincaré model's boundary is never reached). */
6429
+ declare function clampToDisk(p: Point, maxNorm?: number): Point;
6430
+ /**
6431
+ * Möbius transform that translates `a` to the origin: `(z - a) / (1 - conj(a) * z)`.
6432
+ * A hyperbolic isometry — preserves all pairwise Poincaré distances.
6433
+ */
6434
+ declare function mobiusToOrigin(z: Point, a: Point): Point;
6435
+ /**
6436
+ * Inverse of {@link mobiusToOrigin}: translates the origin back to `a`, i.e.
6437
+ * `(z + a) / (1 + conj(a) * z)`.
6438
+ */
6439
+ declare function mobiusFromOrigin(z: Point, a: Point): Point;
6440
+ /**
6441
+ * Möbius addition (gyrogroup composition) of two disk-translations: the
6442
+ * canonical-space point reached by translating the origin to `a`, then
6443
+ * translating that local frame's origin by `b`.
6444
+ */
6445
+ declare function mobiusAdd(a: Point, b: Point): Point;
6446
+ /** Euclidean Poincaré-disk radius corresponding to hyperbolic distance `d` from the origin. */
6447
+ declare function euclideanRadiusForHyperbolicDistance(d: number): number;
6448
+ /** Hyperbolic distance from the origin corresponding to Euclidean disk radius `r`. */
6449
+ declare function hyperbolicDistanceForEuclideanRadius(r: number): number;
6450
+ /** Hyperbolic (Poincaré) distance between two points in the unit disk. */
6451
+ declare function poincareDistance(p: Point, q: Point): number;
6452
+ /**
6453
+ * Point at parameter `t` (0–1) along the hyperbolic geodesic from `a` to `b`.
6454
+ * `t=0` yields `a`, `t=1` yields `b`; intermediate values move at constant
6455
+ * hyperbolic speed along the geodesic (not the Euclidean straight line).
6456
+ */
6457
+ declare function geodesicInterpolate(a: Point, b: Point, t: number): Point;
6458
+ /**
6459
+ * An orientation-preserving isometry of the Poincaré disk, stored as the
6460
+ * SU(1,1) pair `(a, b)` of the map `z ↦ (a·z + b) / (conj(b)·z + conj(a))`.
6461
+ *
6462
+ * Every disk isometry is a translation *plus a rotation*, and composing two
6463
+ * translations generally yields a rotation too (the hyperbolic "gyration").
6464
+ * Tracking the full map — rather than just "the point that goes to the
6465
+ * origin" — is what keeps a recursively-built local frame correctly oriented.
6466
+ */
6467
+ type DiskIsometry = {
6468
+ readonly a: Point;
6469
+ readonly b: Point;
6470
+ };
6471
+ declare const identityIsometry: DiskIsometry;
6472
+ /** Apply `m` to `z`. */
6473
+ declare function applyIsometry(m: DiskIsometry, z: Point): Point;
6474
+ /** `outer ∘ inner` — apply `inner` first, then `outer`. */
6475
+ declare function composeIsometry(outer: DiskIsometry, inner: DiskIsometry): DiskIsometry;
6476
+ declare function invertIsometry(m: DiskIsometry): DiskIsometry;
6477
+ /** Pure translation carrying the origin to `p` (same map as {@link mobiusFromOrigin}). */
6478
+ declare function translationFromOrigin(p: Point): DiskIsometry;
6479
+ /** `z ↦ e^{iθ}·z`. */
6480
+ declare function rotationIsometry(theta: number): DiskIsometry;
6481
+ /**
6482
+ * The view map that sends canonical point `center` to the origin, then
6483
+ * rotates by `rotation` radians: `z ↦ e^{i·rotation}·mobiusToOrigin(z, center)`.
6484
+ */
6485
+ declare function viewIsometry(center: Point, rotation?: number): DiskIsometry;
6486
+ /** Decompose `m` into the `{ center, rotation }` accepted by {@link viewIsometry}. */
6487
+ declare function decomposeViewIsometry(m: DiskIsometry): {
6488
+ center: Point;
6489
+ rotation: number;
6490
+ };
6491
+ /**
6492
+ * Exact geodesic between `p` and `q`, for rendering: either a straight
6493
+ * segment (when the geodesic is a diameter) or a circular arc orthogonal to
6494
+ * the unit circle. `sweep` follows SVG's `sweep-flag` convention in the
6495
+ * points' own (unflipped) coordinate system; the in-disk segment of an
6496
+ * orthogonal circle is always less than a semicircle, so it's always the
6497
+ * minor arc.
6498
+ */
6499
+ type GeodesicSegment = {
6500
+ readonly kind: `line`;
6501
+ } | {
6502
+ readonly kind: `arc`;
6503
+ readonly center: Point;
6504
+ readonly radius: number;
6505
+ readonly sweep: 0 | 1;
6506
+ };
6507
+ declare function geodesicSegment(p: Point, q: Point): GeodesicSegment;
6508
+ /** SVG path `d` for the geodesic from `p` to `q`, with coordinates multiplied by `scale`. */
6509
+ declare function geodesicPath(p: Point, q: Point, scale?: number): string;
6510
+ //#endregion
6291
6511
  //#region src/hyperbolic-tree/types.d.ts
6292
6512
  /**
6293
6513
  * Pointer/keyboard gesture mapping (subset of `TreeInteractionMode`).
@@ -6303,20 +6523,27 @@ type Point = {
6303
6523
  /** A single node positioned on the Poincaré disk. */
6304
6524
  type HyperbolicLayoutNode = {
6305
6525
  readonly node: TreeNode;
6526
+ /** `node.item.key`. Not necessarily unique if the data repeats keys — use {@link id} for identity. */
6306
6527
  readonly key: string;
6528
+ /**
6529
+ * Layout id derived from the key path from the root — unique even when
6530
+ * `item.key`s repeat across the tree (e.g. `readme.md` in many folders).
6531
+ */
6532
+ readonly id: string;
6307
6533
  /** Absolute depth from the true root (root is depth 0). */
6308
6534
  readonly depth: number;
6309
6535
  /** Tree-graph distance (steps) from the current focus — `0` for the focused node itself. */
6310
6536
  readonly ring: number;
6311
6537
  readonly parentKey: string | undefined;
6538
+ readonly parentId: string | undefined;
6312
6539
  /** Poincaré-disk position with the focus projected to the origin. */
6313
6540
  readonly position: Point;
6314
6541
  /**
6315
6542
  * 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.
6543
+ * partition — root is `2π`. Measured in the *parent's canonical local
6544
+ * frame*, not on screen: after refocusing, the same share can look very
6545
+ * different in size. For on-screen crowding use the projected `position`s
6546
+ * (the built-in renderer caps node size by nearest-neighbour distance).
6320
6547
  */
6321
6548
  readonly angularShare: number;
6322
6549
  /** This node's raw `TreeItem.weight`, if set. */
@@ -6333,6 +6560,9 @@ type HyperbolicLayoutNode = {
6333
6560
  type HyperbolicLayoutEdge = {
6334
6561
  readonly fromKey: string;
6335
6562
  readonly toKey: string;
6563
+ /** Layout ids of the endpoints — see {@link HyperbolicLayoutNode.id}. */
6564
+ readonly fromId: string;
6565
+ readonly toId: string;
6336
6566
  readonly from: Point;
6337
6567
  readonly to: Point;
6338
6568
  /**
@@ -6342,7 +6572,10 @@ type HyperbolicLayoutEdge = {
6342
6572
  readonly weightNormalized: number;
6343
6573
  };
6344
6574
  type ComputeHyperbolicLayoutOptions = {
6345
- /** Key of the node to center the view on. Defaults to the true root. */
6575
+ /**
6576
+ * Node to center the view on: a layout id ({@link HyperbolicLayoutNode.id})
6577
+ * or a plain `item.key` (first depth-first match). Defaults to the true root.
6578
+ */
6346
6579
  focusedKey?: string;
6347
6580
  /** Tree-graph steps from the focus to lay out and render. Defaults to unlimited. */
6348
6581
  maxRadius?: number;
@@ -6352,19 +6585,34 @@ type ComputeHyperbolicLayoutOptions = {
6352
6585
  */
6353
6586
  maxDepth?: number;
6354
6587
  /**
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.
6588
+ * Center the view on this point of the focus's local frame instead of the
6589
+ * focus itself (which is that frame's origin).
6359
6590
  */
6360
6591
  centerOverride?: Point;
6361
6592
  /**
6362
- * Hyperbolic distance placed between each generation. Default `1`.
6593
+ * Full focus-local → screen isometry to project through, taking
6594
+ * precedence over `centerOverride`. Unlike a bare center, this can also
6595
+ * carry a rotation — needed for panning to track the pointer faithfully.
6596
+ * Views are expressed relative to the focus (not the root) so they stay
6597
+ * precise however deep the focus is.
6598
+ */
6599
+ view?: DiskIsometry;
6600
+ /**
6601
+ * Minimum hyperbolic distance placed between each generation (bushy
6602
+ * nodes' children go further, per `siblingSpacing`). Default `1`.
6363
6603
  * Raising it exaggerates the disk's fisheye compression (distant
6364
6604
  * generations crowd the boundary faster, reading as "zooming in" on the
6365
6605
  * focus); lowering it flattens the layout toward a Euclidean-feeling one.
6366
6606
  */
6367
6607
  curvature?: number;
6608
+ /**
6609
+ * Minimum hyperbolic distance between adjacent siblings. Children of a
6610
+ * bushy node are pushed further from it until they're at least this far
6611
+ * apart — so dragging a crowded fan towards the center always spreads it
6612
+ * out (panning can't change hyperbolic distances, only magnify them).
6613
+ * `0` disables it (every child at exactly `curvature`). Default `0.5`.
6614
+ */
6615
+ siblingSpacing?: number;
6368
6616
  };
6369
6617
  type HyperbolicEdgeRenderContext = {
6370
6618
  readonly edge: HyperbolicLayoutEdge;
@@ -6383,6 +6631,15 @@ type HyperbolicFocusDetail = {
6383
6631
  };
6384
6632
  type HyperbolicFocusEvent = CustomEvent<HyperbolicFocusDetail>;
6385
6633
  //#endregion
6634
+ //#region src/hyperbolic-tree/render-utils.d.ts
6635
+ /**
6636
+ * How nodes are drawn:
6637
+ * - `dot` — a filled circle with the label beside it (thinned when crowded).
6638
+ * - `box` — a rectangle containing the label, shrinking with distance from
6639
+ * the focus the way the space itself does.
6640
+ */
6641
+ type HyperbolicNodeShape = `dot` | `box`;
6642
+ //#endregion
6386
6643
  //#region src/hyperbolic-tree/hyperbolictree-list.d.ts
6387
6644
  interface HyperbolicTreeListElementEventMap extends TreeComponentEventMap {
6388
6645
  'select': TreeSelectEvent;
@@ -6401,49 +6658,15 @@ interface HyperbolicTreeListElementEventMap extends TreeComponentEventMap {
6401
6658
  * shared `TreeComponent` interface so existing infrastructure (`TreeDataModel`,
6402
6659
  * `IncrSearchTreeController`, `TreeComponent`-typed code) works unmodified.
6403
6660
  *
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.
6661
+ * Deliberate differences from `ixfx-tree-list`: expand/collapse is
6662
+ * reinterpreted as focus change (`expand`/`collapse` still fire, for
6663
+ * interop); `interactionMode` drops `checked`; `exclusivity` is ignored;
6664
+ * `filterPredicate` dims rather than hides; dragging empty space pans;
6665
+ * drag-and-drop and `checkboxRenderer` are out of scope.
6666
+ *
6667
+ * See `src/hyperbolic-tree/README.md` for zoom vs. curvature, crowded fans,
6668
+ * label legibility, weighting, branch colours, `::part()` targeting and the
6669
+ * full CSS variable list.
6447
6670
  */
6448
6671
  declare class HyperbolicTreeListElement extends LitElement implements TreeComponent, TreeSearchHost {
6449
6672
  #private;
@@ -6473,6 +6696,28 @@ declare class HyperbolicTreeListElement extends LitElement implements TreeCompon
6473
6696
  interactionMode: HyperbolicInteractionMode;
6474
6697
  /** Tree-graph steps from the focus to lay out and render. */
6475
6698
  maxRadius: number;
6699
+ /**
6700
+ * How nodes are drawn: `dot` (filled circle, label beside it) or `box`
6701
+ * (a rectangle containing the label, shrinking with distance from focus).
6702
+ * @default 'dot'
6703
+ */
6704
+ nodeShape: HyperbolicNodeShape;
6705
+ /** `box` mode: labels longer than this are truncated with `…`. `0` disables truncation. */
6706
+ boxMaxChars: number;
6707
+ /**
6708
+ * `box` mode: smallest on-screen label size (CSS px) worth drawing. Boxes
6709
+ * whose label would render smaller — or that would overlap a
6710
+ * higher-priority label — are drawn as small text-less markers instead
6711
+ * (hover one to reveal its label).
6712
+ */
6713
+ minLabelSize: number;
6714
+ /**
6715
+ * Tint each top-level branch (each child of the root, and everything under
6716
+ * it) its own hue, like a classic hyperbolic browser — makes it obvious
6717
+ * which subtree a distant node belongs to. Hues are spread evenly around
6718
+ * the colour wheel from `--hyperbolictree-branch-hue-start`.
6719
+ */
6720
+ colorByBranch: boolean;
6476
6721
  /** Base node dot radius, as a fraction of the disk radius (the disk has radius 1). */
6477
6722
  nodeRadius: number;
6478
6723
  /** Nodes whose scaled radius falls below this (same fraction-of-disk-radius units) render without a label. */
@@ -6482,26 +6727,49 @@ declare class HyperbolicTreeListElement extends LitElement implements TreeCompon
6482
6727
  /** Radius multiplier applied to a node with `weight` at the high end of the currently-visible range. */
6483
6728
  maxWeightScale: number;
6484
6729
  /**
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.
6730
+ * Visual (Euclidean) magnification of the rendered disk — a post-layout
6731
+ * scale, distinct from {@link curvature} (which reshapes the layout) and
6732
+ * {@link maxRadius} (how many rings are laid out). Labels stay the same
6733
+ * size on screen, so zooming in spreads crowded labels apart. Zoom
6734
+ * gestures update it; see {@link disableZoomGestures}.
6492
6735
  */
6493
6736
  zoom: number;
6494
6737
  /**
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.
6738
+ * Turn off zoom gestures: trackpad pinch / Ctrl-⌘-wheel (over the tree),
6739
+ * plain wheel (while the tree has keyboard focus), and two-finger touch
6740
+ * pinch. All zoom around the pointer, and update {@link zoom}.
6741
+ */
6742
+ disableZoomGestures: boolean;
6743
+ /**
6744
+ * Turn off radial labels. By default a label runs along its node's
6745
+ * incoming edge (flipped on the left half so it never reads upside-down),
6746
+ * so a fan of siblings only needs room for each label's height, not its
6747
+ * width. Disabled, every label is horizontal.
6748
+ */
6749
+ disableRadialLabels: boolean;
6750
+ /**
6751
+ * Turn off the child preview: hovering (or keyboard-tickling) a node whose
6752
+ * children aren't all legible in the current view — labels culled, or
6753
+ * beyond `maxRadius` — pops up a clickable list of them.
6754
+ */
6755
+ disableChildPreview: boolean;
6756
+ /**
6757
+ * Minimum hyperbolic distance placed between generations — how curved the
6758
+ * space is. Raising it crowds distant generations toward the boundary
6759
+ * faster (a stronger fisheye that reads as "zooming in" on the focus);
6760
+ * lowering it flattens the view toward a Euclidean-feeling layout.
6503
6761
  */
6504
6762
  curvature: number;
6763
+ /**
6764
+ * Minimum hyperbolic distance between adjacent siblings. A bushy node's
6765
+ * children are pushed further out until they're at least this far apart,
6766
+ * so dragging a crowded fan towards the center always spreads it out —
6767
+ * panning can't change hyperbolic distances, only magnify them, so without
6768
+ * this a tightly-packed fan stays packed wherever it's dragged. Larger
6769
+ * values fan out more when inspected, at the cost of pushing crowds further
6770
+ * towards the edge in the overview. `0` disables it.
6771
+ */
6772
+ siblingSpacing: number;
6505
6773
  /** Duration (ms) of the animated re-center on focus change. `0` snaps instantly. */
6506
6774
  focusAnimationDuration: number;
6507
6775
  /** Optional custom renderer for edges, in place of the default geodesic-arc path. */
@@ -6520,17 +6788,37 @@ declare class HyperbolicTreeListElement extends LitElement implements TreeCompon
6520
6788
  searchModes: string | undefined;
6521
6789
  /** The node currently centered on the disk. Pure view-state — `root` is never mutated by focus changes. */
6522
6790
  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;
6791
+ /**
6792
+ * Layout id (see `HyperbolicLayoutNode.id`) of the focused node —
6793
+ * `undefined` means the root. Ids rather than `item.key`s, so data that
6794
+ * repeats keys across branches still focuses the node actually clicked.
6795
+ */
6796
+ private _focusId;
6797
+ /**
6798
+ * Canonical → screen projection overriding the settled "focus at the
6799
+ * center" view — set per-frame while a focus change animates, and by
6800
+ * panning. `undefined` when settled on the focus.
6801
+ */
6802
+ private _viewOverride;
6803
+ /**
6804
+ * Orientation of the settled view (focus at the center). Views are
6805
+ * expressed in the focus's own local frame, and focus changes keep
6806
+ * whatever orientation the tree had when the animation started, so there
6807
+ * is no global "up" to snap back to — and no spin on refocus.
6808
+ */
6809
+ private _focusRotation;
6810
+ /** Pan of the zoomed disk, in screen units — see {@link ZoomState}. */
6811
+ private _zoomOffset;
6812
+ /** Layout id of the node whose children are being previewed. */
6813
+ private _previewId;
6528
6814
  /** Incremental search (navigate / select / filter). See `docs/infra-incremental.md`. */
6529
6815
  readonly search: ListSearchController<{
6530
6816
  node: TreeNode;
6531
6817
  depth: number;
6532
6818
  }>;
6533
6819
  private tickled;
6820
+ /** The host's size in CSS px. */
6821
+ private _hostSize;
6534
6822
  connectedCallback(): void;
6535
6823
  disconnectedCallback(): void;
6536
6824
  protected updated(changedProps: PropertyValues): void;
@@ -6584,12 +6872,54 @@ interface HyperbolicTreeListElement {
6584
6872
  //#region src/hyperbolic-tree/layout.d.ts
6585
6873
  type CanonicalEntry = {
6586
6874
  readonly node: TreeNode;
6875
+ /** Path-derived id, unique even when `item.key`s repeat — see {@link hyperbolicChildIds}. */
6876
+ readonly id: string;
6587
6877
  readonly depth: number;
6588
6878
  readonly parentKey: string | undefined;
6879
+ readonly parentId: string | undefined;
6880
+ /**
6881
+ * Root-anchored position. Informational only: every step away from the
6882
+ * root pushes it exponentially closer to the disk boundary, so beyond
6883
+ * ~14 hyperbolic units (e.g. depth 5 at `curvature` 3) it saturates to the
6884
+ * clamp limit and distinct nodes collapse together. Views are built from
6885
+ * {@link toParent} instead — see {@link hyperbolicRelativeFrame}.
6886
+ */
6589
6887
  readonly position: Point;
6888
+ /**
6889
+ * This node's local frame expressed in its parent's local frame — the
6890
+ * single short hop (a translation by one generation) from parent to
6891
+ * child. Identity for the root. Composing these outward from the focus
6892
+ * keeps every visible position precise, however deep the focus sits.
6893
+ */
6894
+ readonly toParent: DiskIsometry;
6590
6895
  /** Angular width (radians) this node's own parent allocated to it — root is `2π`. */
6591
6896
  readonly angularShare: number;
6592
6897
  };
6898
+ /**
6899
+ * Path-derived ids for `children` of the node with id `parentId`. `TreeItem.key`
6900
+ * is meant to be unique, but real data (e.g. a file system, where `readme.md`
6901
+ * recurs in many folders) often only has keys unique among siblings. Keying
6902
+ * the layout on `item.key` alone would silently merge those nodes — edges get
6903
+ * attached to the wrong parent and clicks focus the wrong node — so the
6904
+ * layout identifies nodes by their key path instead. Repeated keys among
6905
+ * siblings are disambiguated by occurrence count. The root's id is its key.
6906
+ */
6907
+ declare function hyperbolicChildIds(parentId: string, children: readonly TreeNode[]): string[];
6908
+ /** Depth (root is 0) of the node with layout id `id`. */
6909
+ declare function hyperbolicIdDepth(id: string): number;
6910
+ /**
6911
+ * Layout id of the root's child that `id` descends from (or is) — i.e. which
6912
+ * top-level branch it belongs to. `undefined` for the root itself.
6913
+ */
6914
+ declare function hyperbolicBranchId(id: string): string | undefined;
6915
+ /** Whether layout id `id` is a strict descendant of `ancestorId`. */
6916
+ declare function isHyperbolicDescendantId(id: string, ancestorId: string): boolean;
6917
+ /** Chain of nodes from `root` down to the node with layout id `id`, or `undefined` if absent. */
6918
+ declare function findHyperbolicPathById(root: TreeNode | undefined, id: string): TreeNode[] | undefined;
6919
+ /** Layout id of `target` (matched by object identity) within `root`, or `undefined` if absent. */
6920
+ declare function findHyperbolicIdOf(root: TreeNode | undefined, target: TreeNode): string | undefined;
6921
+ /** Key path (from the root's children) to the first node, depth-first, satisfying `predicate`. */
6922
+ declare function findHyperbolicKeyPath(nodes: readonly TreeNode[], predicate: (node: TreeNode) => boolean, prefix?: readonly string[]): string[] | undefined;
6593
6923
  /** Depth-first search for the node with `key`. Returns `undefined` when absent. */
6594
6924
  declare function findHyperbolicNode(root: TreeNode | undefined, key: string): TreeNode | undefined;
6595
6925
  /**
@@ -6597,21 +6927,37 @@ declare function findHyperbolicNode(root: TreeNode | undefined, key: string): Tr
6597
6927
  * Returns `undefined` when the key is absent. The first entry is always `root`.
6598
6928
  */
6599
6929
  declare function findHyperbolicPath(root: TreeNode | undefined, key: string): TreeNode[] | undefined;
6930
+ /** Default minimum hyperbolic distance between adjacent siblings. See {@link childDistance}. */
6931
+ declare const DEFAULT_SIBLING_SPACING = 0.5;
6600
6932
  /**
6601
6933
  * Canonical (true-root-anchored) hyperbolic position of every currently-loaded
6602
- * node, keyed by node key. Positions never depend on the current focus —
6934
+ * node, keyed by layout id (see {@link hyperbolicChildIds}). Positions never depend on the current focus —
6603
6935
  * refocusing is purely a Möbius re-projection of these fixed coordinates, so
6604
6936
  * the tree never needs to be re-laid-out when the focus changes.
6605
6937
  *
6606
6938
  * Each node holds an angular wedge — inherited from its parent, expressed in
6607
6939
  * 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
6940
+ * its children are placed at hyperbolic distance of at least `curvature`
6941
+ * (default `1`) — further for a thin slice, per `siblingSpacing` (see
6942
+ * {@link childDistance}).
6943
+ * That wedge is partitioned among the children, weighted by √ of each child's own
6610
6944
  * subtree size rather than split evenly, and each child's own share is
6611
6945
  * 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.
6946
+ * recursing. This is a strict partition, and each child's wedge region
6947
+ * (bounded by geodesic rays to the same two ideal boundary points as its
6948
+ * slice) nests inside its parent's, which is what guarantees sibling
6949
+ * subtrees never spatially cross regardless of how deep or bushy they are.
6950
+ *
6951
+ * Every node's local frame is tracked as a full {@link DiskIsometry}
6952
+ * (local → canonical), built by composing its parent's frame with the
6953
+ * translation to the child. Composing Möbius translations introduces a
6954
+ * rotation (gyration); dropping it — i.e. assuming a node's frame is simply
6955
+ * `mobiusToOrigin(·, position)` — makes every wedge from depth 3 onward
6956
+ * point in a subtly wrong direction, so subtrees cross each other.
6957
+ *
6958
+ * A wedge wider than π is narrowed to π (around the same bisector) before
6959
+ * the child recurses into it: a near-full-circle wedge would otherwise fan
6960
+ * that child's own children back around towards — and across — its parent.
6615
6961
  *
6616
6962
  * `curvature` scales how far apart (in hyperbolic distance) each generation
6617
6963
  * sits. Raising it pushes each generation further out, so the Poincaré
@@ -6620,58 +6966,34 @@ declare function findHyperbolicPath(root: TreeNode | undefined, key: string): Tr
6620
6966
  * in" on the focus. Lowering it spreads generations out more evenly,
6621
6967
  * flattening the view toward a Euclidean-feeling layout.
6622
6968
  */
6623
- declare function computeCanonicalPositions(root: TreeNode | undefined, maxDepth?: number, curvature?: number): Map<string, CanonicalEntry>;
6969
+ declare function computeCanonicalPositions(root: TreeNode | undefined, maxDepth?: number, curvature?: number, siblingSpacing?: number): Map<string, CanonicalEntry>;
6970
+ /**
6971
+ * The frame of node `toId` expressed in node `fromId`'s local frame (maps
6972
+ * `toId`-local coordinates to `fromId`-local ones), composed along the tree
6973
+ * path between them via their lowest common ancestor. Used to hand a view
6974
+ * over from one focus to another without passing through root-anchored
6975
+ * coordinates. `undefined` if either id is absent.
6976
+ */
6977
+ declare function hyperbolicRelativeFrame(entries: ReadonlyMap<string, CanonicalEntry>, fromId: string, toId: string): DiskIsometry | undefined;
6624
6978
  /**
6625
6979
  * Compute the visible nodes/edges of a hyperbolic tree view: every
6626
6980
  * currently-loaded node within `maxRadius` tree-graph steps of the focused
6627
6981
  * node, projected onto the Poincaré disk with the focus at its center.
6628
6982
  *
6629
6983
  * @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).
6984
+ * @param options `focusedKey` (a layout id or plain `item.key`; default the
6985
+ * true root; unknown keys fall back to the true root), `maxRadius` (default unlimited), `maxDepth` (safety
6986
+ * cap on layout recursion depth, default 24), `curvature`,
6987
+ * `siblingSpacing`, `centerOverride` (put this point of the focus's local
6988
+ * frame at the center instead of the focus itself), `view` (a full
6989
+ * focus-local → screen isometry, taking precedence over `centerOverride` —
6990
+ * used for panning and animation, which also rotate).
6635
6991
  */
6636
6992
  declare function computeHyperbolicLayout(root: TreeNode | undefined, options?: ComputeHyperbolicLayoutOptions): {
6637
6993
  nodes: HyperbolicLayoutNode[];
6638
6994
  edges: HyperbolicLayoutEdge[];
6639
6995
  };
6640
6996
  //#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
6997
  //#region src/icicle-tree/types.d.ts
6676
6998
  /**
6677
6999
  * Weight accessor — returns the area share of `item` within its siblings.
@@ -10341,5 +10663,5 @@ interface XyPad {
10341
10663
  //#region src/index.d.ts
10342
10664
  declare function init(): void;
10343
10665
  //#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 };
10666
+ 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
10667
  //# sourceMappingURL=index.d.ts.map