@fusion.dev/helix-core 0.146.0 → 0.148.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/custom-elements.json +3129 -282
  2. package/dist/controllers/aria-forward-controller/aria-forward-controller.js +5 -3
  3. package/dist/controllers/chart-pointer-controller/chart-pointer-controller.d.ts +6 -0
  4. package/dist/controllers/chart-pointer-controller/chart-pointer-controller.js +13 -0
  5. package/dist/controllers/children-controller/children-controller.d.ts +28 -0
  6. package/dist/controllers/children-controller/children-controller.js +18 -0
  7. package/dist/controllers/copy-controller/copy-controller.d.ts +4 -1
  8. package/dist/controllers/copy-controller/copy-controller.js +2 -1
  9. package/dist/controllers/countdown-controller/countdown-controller.d.ts +19 -2
  10. package/dist/controllers/countdown-controller/countdown-controller.js +30 -3
  11. package/dist/controllers/floating-controller/floating-controller.d.ts +12 -1
  12. package/dist/controllers/floating-controller/floating-controller.js +2 -1
  13. package/dist/controllers/keyboard-navigation-controller/keyboard-navigation-controller.d.ts +30 -0
  14. package/dist/controllers/keyboard-navigation-controller/keyboard-navigation-controller.js +8 -0
  15. package/dist/controllers/open-phase-controller/open-phase-controller.d.ts +10 -0
  16. package/dist/controllers/open-phase-controller/open-phase-controller.js +7 -4
  17. package/dist/controllers/option-window-controller/option-window-controller.d.ts +96 -0
  18. package/dist/controllers/option-window-controller/option-window-controller.js +81 -0
  19. package/dist/controllers/popover-controller/popover-controller.js +1 -1
  20. package/dist/controllers/source-controller/source-controller.js +2 -0
  21. package/dist/controllers/swipe-controller/swipe-controller.d.ts +10 -1
  22. package/dist/controllers/swipe-controller/swipe-controller.js +1 -1
  23. package/dist/controllers/virtualize-controller/virtualize-controller.js +8 -6
  24. package/dist/events/band.d.ts +13 -0
  25. package/dist/events/band.js +11 -0
  26. package/dist/events/details.d.ts +5 -0
  27. package/dist/events/events.d.ts +4 -2
  28. package/dist/events/events.js +3 -1
  29. package/dist/events/names.d.ts +3 -0
  30. package/dist/events/names.js +13 -88
  31. package/dist/helix-element/helix-element.d.ts +14 -5
  32. package/dist/helix-element/helix-element.js +13 -45
  33. package/dist/helix-element/react-bridge.d.ts +13 -0
  34. package/dist/helix-element/react-bridge.js +1 -1
  35. package/dist/index.d.ts +40 -17
  36. package/dist/index.js +38 -15
  37. package/dist/mixins/mixin-chart-source/mixin-chart-source.d.ts +12 -0
  38. package/dist/mixins/mixin-chart-source/mixin-chart-source.js +4 -0
  39. package/dist/mixins/mixin-dismissible/mixin-dismissible.js +25 -4
  40. package/dist/mixins/mixin-picker-feedback/mixin-picker-feedback.d.ts +42 -0
  41. package/dist/mixins/mixin-picker-feedback/mixin-picker-feedback.js +46 -0
  42. package/dist/mixins/mixin-picker-field/mixin-picker-field.d.ts +2 -11
  43. package/dist/mixins/mixin-picker-field/mixin-picker-field.js +1 -6
  44. package/dist/mixins/mixin-segmented-field/mixin-segmented-field.d.ts +1 -1
  45. package/dist/mixins/mixin-segmented-field/mixin-segmented-field.js +10 -6
  46. package/dist/mixins/mixin-viewport/mixin-viewport.js +8 -7
  47. package/dist/utils/assign-slots/assign-slots.d.ts +18 -0
  48. package/dist/utils/assign-slots/assign-slots.js +14 -0
  49. package/dist/utils/audit-name/audit-name.d.ts +7 -2
  50. package/dist/utils/audit-name/audit-name.js +12 -3
  51. package/dist/utils/audit-source/audit-source-off.d.ts +10 -0
  52. package/dist/utils/audit-source/audit-source-off.js +1 -0
  53. package/dist/utils/audit-source/audit-source.d.ts +19 -0
  54. package/dist/utils/audit-source/audit-source.js +27 -0
  55. package/dist/utils/autofill-select/autofill-select.d.ts +40 -0
  56. package/dist/utils/autofill-select/autofill-select.js +14 -0
  57. package/dist/utils/call-listener/call-listener.d.ts +16 -0
  58. package/dist/utils/call-listener/call-listener.js +17 -0
  59. package/dist/utils/center-in-view/center-in-view.d.ts +18 -0
  60. package/dist/utils/center-in-view/center-in-view.js +14 -0
  61. package/dist/utils/chord/chord.d.ts +14 -0
  62. package/dist/utils/chord/chord.js +1 -0
  63. package/dist/utils/chord/key-names.d.ts +30 -0
  64. package/dist/utils/chord/key-names.js +52 -0
  65. package/dist/utils/clamp/clamp.d.ts +7 -0
  66. package/dist/utils/clamp/clamp.js +1 -0
  67. package/dist/utils/column-step/column-step.d.ts +13 -0
  68. package/dist/utils/column-step/column-step.js +9 -0
  69. package/dist/utils/css-color/css-color.js +1 -1
  70. package/dist/utils/data-options/data-options.d.ts +60 -0
  71. package/dist/utils/data-options/data-options.js +46 -0
  72. package/dist/utils/draw-tooltip/draw-tooltip.d.ts +7 -2
  73. package/dist/utils/draw-tooltip/draw-tooltip.js +1 -1
  74. package/dist/utils/draw-tooltip/spoken-reading.d.ts +3 -2
  75. package/dist/utils/draw-tooltip/spoken-reading.js +3 -2
  76. package/dist/utils/elapsed-time/elapsed-time.d.ts +1 -1
  77. package/dist/utils/elapsed-time/elapsed-time.js +2 -5
  78. package/dist/utils/export-parts/export-parts.d.ts +14 -0
  79. package/dist/utils/export-parts/export-parts.js +1 -0
  80. package/dist/utils/fill-template/fill-template.d.ts +9 -0
  81. package/dist/utils/fill-template/fill-template.js +3 -0
  82. package/dist/utils/filter-marks/filter-marks.d.ts +36 -0
  83. package/dist/utils/filter-marks/filter-marks.js +41 -0
  84. package/dist/utils/focus-target/focus-target.d.ts +12 -0
  85. package/dist/utils/focus-target/focus-target.js +9 -0
  86. package/dist/utils/focusable-elements/focusable-elements.d.ts +17 -0
  87. package/dist/utils/focusable-elements/focusable-elements.js +8 -0
  88. package/dist/utils/grid-move/grid-move.d.ts +56 -0
  89. package/dist/utils/grid-move/grid-move.js +28 -0
  90. package/dist/utils/host-words/host-words.d.ts +16 -0
  91. package/dist/utils/host-words/host-words.js +13 -0
  92. package/dist/utils/load-more/load-more.d.ts +25 -0
  93. package/dist/utils/load-more/load-more.js +1 -0
  94. package/dist/utils/locale-of/locale-of.d.ts +18 -0
  95. package/dist/utils/locale-of/locale-of.js +26 -0
  96. package/dist/utils/nearest/nearest.d.ts +9 -0
  97. package/dist/utils/nearest/nearest.js +9 -0
  98. package/dist/utils/number-format/number-format.d.ts +16 -0
  99. package/dist/utils/number-format/number-format.js +5 -0
  100. package/dist/utils/own-rule/own-rule.d.ts +16 -0
  101. package/dist/utils/own-rule/own-rule.js +7 -0
  102. package/dist/utils/platform/platform.d.ts +8 -0
  103. package/dist/utils/platform/platform.js +1 -0
  104. package/dist/utils/read-series/read-series.d.ts +14 -0
  105. package/dist/utils/read-series/read-series.js +15 -0
  106. package/dist/utils/relative-time/relative-time.d.ts +8 -0
  107. package/dist/utils/relative-time/relative-time.js +5 -2
  108. package/dist/utils/report-render/report-render.js +2 -14
  109. package/dist/utils/report-runtime/report-runtime.d.ts +11 -1
  110. package/dist/utils/report-runtime/report-runtime.js +2 -14
  111. package/dist/utils/report-usage/report-usage.js +2 -14
  112. package/dist/utils/report-values/report-values.d.ts +16 -4
  113. package/dist/utils/report-values/report-values.js +2 -2
  114. package/dist/utils/request-change/request-change.d.ts +11 -0
  115. package/dist/utils/request-change/request-change.js +10 -0
  116. package/dist/utils/scroll-item-into-view/scroll-item-into-view.d.ts +50 -0
  117. package/dist/utils/scroll-item-into-view/scroll-item-into-view.js +14 -3
  118. package/dist/utils/slot-filled/slot-filled.d.ts +8 -0
  119. package/dist/utils/slot-filled/slot-filled.js +1 -0
  120. package/dist/utils/slotted-glyph/slotted-glyph.d.ts +33 -0
  121. package/dist/utils/slotted-glyph/slotted-glyph.js +27 -0
  122. package/dist/utils/toolbar-around/toolbar-around.d.ts +18 -0
  123. package/dist/utils/toolbar-around/toolbar-around.js +5 -0
  124. package/dist/utils/typeahead/typeahead.d.ts +8 -0
  125. package/dist/utils/typeahead/typeahead.js +1 -0
  126. package/dist/utils/verdict-flags/verdict-flags.d.ts +13 -0
  127. package/dist/utils/verdict-flags/verdict-flags.js +6 -0
  128. package/dist/utils/written-list/written-list.d.ts +31 -0
  129. package/dist/utils/written-list/written-list.js +16 -0
  130. package/dist/version.d.ts +1 -1
  131. package/dist/version.js +1 -1
  132. package/package.json +15 -4
@@ -733,6 +733,57 @@
733
733
  }
734
734
  ]
735
735
  },
736
+ {
737
+ "kind": "javascript-module",
738
+ "path": "src/controllers/children-controller/children-controller.ts",
739
+ "declarations": [
740
+ {
741
+ "kind": "class",
742
+ "description": "Calls back whenever a child arrives at its host or leaves it.\n\n**A root that assigns its slots by hand needs this, and nothing else\ndoes.** `slotchange` fires when an assignment changes, and under\n`slotAssignment: 'manual'` the only thing that changes one is the host\ncalling `assign`. A child appended after the first render reaches no slot,\nfires no `slotchange` and schedules no render, so it is drawn nowhere and\ncounted by nothing: a notification added to a feed of three was never shown\nuntil some property changed. A default slot takes whatever is there and\nneeds no watcher.\n\n**`childList` and not `subtree`.** A child rewriting its own text, a\nstreaming chat turn on every frame, is no arrival, and a subtree watch would\nrender the whole host again for each change.\n\nAsks the host for an update unless given something else to do. Watches\nfrom connection to disconnection, and again after a move.",
743
+ "name": "ChildrenController",
744
+ "members": [
745
+ {
746
+ "kind": "field",
747
+ "name": "watcher",
748
+ "type": {
749
+ "text": "MutationObserver | undefined"
750
+ },
751
+ "privacy": "private",
752
+ "default": "undefined"
753
+ },
754
+ {
755
+ "kind": "method",
756
+ "name": "hostConnected",
757
+ "return": {
758
+ "type": {
759
+ "text": "void"
760
+ }
761
+ }
762
+ },
763
+ {
764
+ "kind": "method",
765
+ "name": "hostDisconnected",
766
+ "return": {
767
+ "type": {
768
+ "text": "void"
769
+ }
770
+ }
771
+ }
772
+ ],
773
+ "helix": {}
774
+ }
775
+ ],
776
+ "exports": [
777
+ {
778
+ "kind": "js",
779
+ "name": "ChildrenController",
780
+ "declaration": {
781
+ "name": "ChildrenController",
782
+ "module": "src/controllers/children-controller/children-controller.ts"
783
+ }
784
+ }
785
+ ]
786
+ },
736
787
  {
737
788
  "kind": "javascript-module",
738
789
  "path": "src/controllers/command-controller/command-controller.ts",
@@ -952,7 +1003,7 @@
952
1003
  "declarations": [
953
1004
  {
954
1005
  "kind": "class",
955
- "description": "A lifetime that pauses: a message that dismisses itself after a time, and\nholds that time while a reader is on it.\n\nToast's items and Announcement each dismiss themselves after `duration`,\nand each stops the clock while the pointer or focus is on the message, so a\nreader partway through is not cut off. Resuming continues from what was\nleft rather than starting over.\n\n**Holds are counted, not flagged.** Hover and focus stop the same clock and\nare independent: a pointer can leave while focus stays. Uncounted, a reader\nwho tabs into a message and then moves the pointer off it has the clock\nrestarted underneath them. Only the last one out starts it again.\n\n**Leaving the page pauses it**, keeping the time already spent, and drops\nthe holds, since a pointer or focus on a detached element never leaves it.\nComing back does not resume on its own: the host says whether it should,\nsuch as only while it is still showing. `DelayController` is the other wait\nin core, for a wait that starts over and forgets itself on leaving.",
1006
+ "description": "A lifetime that pauses: a message that dismisses itself after a time, and\nholds that time while a reader is on it.\n\nToast's items and Announcement each dismiss themselves after `duration`,\nand each stops the clock while the pointer or focus is on the message, so a\nreader partway through is not cut off. Resuming continues from what was\nleft rather than starting over.\n\n**Holds are counted, not flagged.** Hover and focus stop the same clock and\nare independent: a pointer can leave while focus stays. Uncounted, a reader\nwho tabs into a message and then moves the pointer off it has the clock\nrestarted underneath them. Only the last one out starts it again.\n\n**Leaving the page pauses it**, keeping the time already spent, and drops\nthe holds, since a pointer or focus on a detached element never leaves it.\nComing back does not resume on its own: the host says whether it should,\nsuch as only while it is still showing.\n\n**A hidden page holds it too, where the host asks** with `holdWhileHidden`:\nRAC's toast queue stops its timers while the window is in the background. `DelayController` is the other wait\nin core, for a wait that starts over and forgets itself on leaving.",
956
1007
  "name": "CountdownController",
957
1008
  "members": [
958
1009
  {
@@ -991,6 +1042,23 @@
991
1042
  "default": "0",
992
1043
  "description": "How many reasons there are to hold the clock."
993
1044
  },
1045
+ {
1046
+ "kind": "field",
1047
+ "name": "hidden",
1048
+ "type": {
1049
+ "text": "boolean"
1050
+ },
1051
+ "privacy": "private",
1052
+ "default": "false",
1053
+ "description": "Whether a hidden page is one of the holds, with `holdWhileHidden`."
1054
+ },
1055
+ {
1056
+ "kind": "field",
1057
+ "name": "handleVisibility",
1058
+ "privacy": "private",
1059
+ "readonly": true,
1060
+ "description": "Holds the clock as the page hides, and lets it go as the page shows."
1061
+ },
994
1062
  {
995
1063
  "kind": "field",
996
1064
  "name": "running",
@@ -1064,7 +1132,7 @@
1064
1132
  "text": "void"
1065
1133
  }
1066
1134
  },
1067
- "description": "Stops the clock where it is, as a dismissal does."
1135
+ "description": "Stops the clock for good, as a dismissal does: nothing is left to resume\nuntil the next `start`, so a hold and a release after it run nothing."
1068
1136
  },
1069
1137
  {
1070
1138
  "kind": "method",
@@ -1885,13 +1953,37 @@
1885
1953
  "kind": "javascript-module",
1886
1954
  "path": "src/controllers/floating-controller/floating-controller.ts",
1887
1955
  "declarations": [
1956
+ {
1957
+ "kind": "function",
1958
+ "name": "matchedInlineSize",
1959
+ "return": {
1960
+ "type": {
1961
+ "text": "number"
1962
+ }
1963
+ },
1964
+ "parameters": [
1965
+ {
1966
+ "name": "anchor",
1967
+ "type": {
1968
+ "text": "number"
1969
+ }
1970
+ },
1971
+ {
1972
+ "name": "room",
1973
+ "type": {
1974
+ "text": "number"
1975
+ }
1976
+ }
1977
+ ],
1978
+ "description": "How wide a panel that matches its anchor is drawn: the anchor's width, no\nwider than the room the panel has inside the window's margins.\n\n**A trigger as wide as the window gave a list as wide as the window**, and\n`shift` keeps a margin it then cannot keep: a Select spanning a phone with no\ngutter opened its list 8 pixels past the end edge, on both sides of the\nwindow at once. The room is Floating UI's `availableWidth` after the shift,\nso a panel that fits is the anchor's width exactly, as before."
1979
+ },
1888
1980
  {
1889
1981
  "kind": "class",
1890
1982
  "description": "Places one element against another, and keeps it there.\n\nPositioning is `@floating-ui/dom` rather than arithmetic written here. Two\nthings in particular are why. A `position: fixed` element inside an ancestor\ncarrying `transform`, `filter`, `will-change`, or `contain` is positioned\nagainst that ancestor and not the viewport, so viewport coordinates land it\nsomewhere else entirely. And an overlay has to clear its nearest *clipping*\nancestor, not just the window, or it is placed correctly inside a scrolling\npanel and clipped out of sight by it. Both are ordinary here, and both are a\nlong tail of browser behavior rather than a formula.\n\n`autoUpdate` keeps the position through scrolling on any ancestor, resizes of\neither element, and layout shifts.\n\nThe side the element actually landed on is written back as `data-placement`,\nso a styled tier can animate from it rather than from the side that was\nasked for. An arrow is placed whole, on the edge facing the anchor, so no\nstylesheet has to know which side that is to point it the right way.\n\n**The custom properties are declared here because this is what writes them.**\nEach carries a measurement taken against the viewport that no stylesheet can\ntake for itself, and `core` ships no CSS, so there is no reader inside this\npackage and none of them is private. the `hooks` rule pairs a documented\nhook with a rule that reads one, in both directions.",
1891
1983
  "name": "FloatingController",
1892
1984
  "cssProperties": [
1893
1985
  {
1894
- "description": "The anchor's width, for a panel that matches it.",
1986
+ "description": "The anchor's width, for a panel that matches it, and never wider than the room the panel has inside the window's margins.",
1895
1987
  "name": "--floating-anchor-inline-size"
1896
1988
  },
1897
1989
  {
@@ -2006,6 +2098,14 @@
2006
2098
  "module": "src/controllers/floating-controller/floating-controller.ts"
2007
2099
  }
2008
2100
  },
2101
+ {
2102
+ "kind": "js",
2103
+ "name": "matchedInlineSize",
2104
+ "declaration": {
2105
+ "name": "matchedInlineSize",
2106
+ "module": "src/controllers/floating-controller/floating-controller.ts"
2107
+ }
2108
+ },
2009
2109
  {
2010
2110
  "kind": "js",
2011
2111
  "name": "FloatingController",
@@ -2477,6 +2577,31 @@
2477
2577
  "kind": "javascript-module",
2478
2578
  "path": "src/controllers/keyboard-navigation-controller/keyboard-navigation-controller.ts",
2479
2579
  "declarations": [
2580
+ {
2581
+ "kind": "function",
2582
+ "name": "focusItemOf",
2583
+ "return": {
2584
+ "type": {
2585
+ "text": "NavigableItem"
2586
+ }
2587
+ },
2588
+ "parameters": [
2589
+ {
2590
+ "name": "element",
2591
+ "type": {
2592
+ "text": "HTMLElement"
2593
+ }
2594
+ },
2595
+ {
2596
+ "name": "options",
2597
+ "default": "{}",
2598
+ "type": {
2599
+ "text": "FocusItemOptions"
2600
+ }
2601
+ }
2602
+ ],
2603
+ "description": "An item that is only ever focused: arrows move between such items and\nnothing is chosen on arrival, the shape of a toolbar, a megamenu bar or a\nlegend.\n\nEight families wrote the same object literal by hand, `select` a no-op and\n`selected` false, and an item that forgot one of them type-checked\nwherever its `contains` came from an element."
2604
+ },
2480
2605
  {
2481
2606
  "kind": "class",
2482
2607
  "description": "Moves through a set of items with the arrow keys, and chooses as it goes.\n\n**Moving and choosing are one act here, not two.** That is the radio group\npattern and it is the difference from a listbox: moving focus without\nchoosing leaves a keyboard reader sitting on an item they have not selected,\nwith nothing on screen saying which of the two is true. A pointer user\nchooses by arriving, so a keyboard user does too.\n\n**Both axes, always.** A vertical set still answers left and right, and a\nhorizontal one still answers up and down. Binding only the axis the items\nhappen to be laid out on means a reader who guesses wrong gets nothing, and\n`orientation` is presentation: the same set of choices reads the same way\nwhichever direction it runs.\n\n**The horizontal pair turns with the line.** On a right-to-left page the\nfirst item is on the right, so left is forward there, which is what a native\nradio group does, measured in Chromium on 15 Sep 2026. Vertical sets\nincluded: the key a reader guesses on a column is the one that goes forward\nalong a row of the same items, and the two answering differently would make\n`orientation` more than presentation after all.\n\nDisabled items are skipped rather than stopped at, so a set with a gap in it\nstill moves in one press.\n\n**Typeahead is opt-in.** Pass `typeahead`, built by `typeaheadBy` from a\nfunction that returns an item's words, and a printable key moves to the next\nitem whose words start with the letters typed, choosing it where arriving\nchooses. A key that a text\nfield inside the set is typing into is left to the field.\n\nA set that starts from focus rather than from the selection, or that moves\nwithout choosing, says so through `origin` and `selects`. Neither is a reason\nto keep a hand-written copy, and neither exempts a set from both axes.",
@@ -2653,6 +2778,14 @@
2653
2778
  }
2654
2779
  ],
2655
2780
  "exports": [
2781
+ {
2782
+ "kind": "js",
2783
+ "name": "focusItemOf",
2784
+ "declaration": {
2785
+ "name": "focusItemOf",
2786
+ "module": "src/controllers/keyboard-navigation-controller/keyboard-navigation-controller.ts"
2787
+ }
2788
+ },
2656
2789
  {
2657
2790
  "kind": "js",
2658
2791
  "name": "KeyboardNavigationController",
@@ -2760,6 +2893,24 @@
2760
2893
  "kind": "javascript-module",
2761
2894
  "path": "src/controllers/open-phase-controller/open-phase-controller.ts",
2762
2895
  "declarations": [
2896
+ {
2897
+ "kind": "function",
2898
+ "name": "animationsFinished",
2899
+ "return": {
2900
+ "type": {
2901
+ "text": "Promise<void>"
2902
+ }
2903
+ },
2904
+ "parameters": [
2905
+ {
2906
+ "name": "element",
2907
+ "type": {
2908
+ "text": "Element | null | undefined"
2909
+ }
2910
+ }
2911
+ ],
2912
+ "description": "Resolves once every animation running on an element and inside it has\nfinished, or at once where none is running.\n\n**Asked now, with no frame waited first**, for an exit that is already\nrunning when the caller asks: a section closing, a message leaving. A\ncanceled animation counts as finished. `animationsSettled` waits two frames\nfirst, for an entrance that has not started yet."
2913
+ },
2763
2914
  {
2764
2915
  "kind": "function",
2765
2916
  "name": "animationsSettled",
@@ -2826,6 +2977,14 @@
2826
2977
  }
2827
2978
  ],
2828
2979
  "exports": [
2980
+ {
2981
+ "kind": "js",
2982
+ "name": "animationsFinished",
2983
+ "declaration": {
2984
+ "name": "animationsFinished",
2985
+ "module": "src/controllers/open-phase-controller/open-phase-controller.ts"
2986
+ }
2987
+ },
2829
2988
  {
2830
2989
  "kind": "js",
2831
2990
  "name": "animationsSettled",
@@ -2846,27 +3005,18 @@
2846
3005
  },
2847
3006
  {
2848
3007
  "kind": "javascript-module",
2849
- "path": "src/controllers/paint-gate-controller/paint-gate-controller.ts",
3008
+ "path": "src/controllers/option-window-controller/option-window-controller.ts",
2850
3009
  "declarations": [
2851
- {
2852
- "kind": "variable",
2853
- "name": "MAX_FRAME_STEP",
2854
- "type": {
2855
- "text": "number"
2856
- },
2857
- "default": "0.05",
2858
- "description": "The longest step one frame is given, in seconds.\n\nA tab that was throttled and comes back hands the first frame a delta of\nseveral seconds. Integrated whole, an animated canvas teleports: the aura's\nfield lands wherever the pointer went while nobody was watching, and the\norb's wave jumps a shape. The ceiling is 20 frames a second of simulated\ntime, so a genuinely slow frame still advances and a resumed one does not\nskip ahead.\n\nExported because a host that collects several frames into one owes the same\nceiling on what it spends. `Aura` caps its own frame rate and would otherwise\nhand its shader exactly the step this number refuses."
2859
- },
2860
3010
  {
2861
3011
  "kind": "class",
2862
- "description": "Runs a canvas painter's frame loop, and stops it whenever nobody is looking.\n\nIt holds the five pieces every animated canvas needs and none of which is\nabout what is drawn: an `IntersectionObserver` for whether the host is on\nscreen, `visibilitychange` for whether the tab is in front,\n`prefers-reduced-motion` and its `change` listener for whether the reader\nasked for less, a `ResizeObserver` for the box, and the\n`requestAnimationFrame` loop that reports a clamped step. It says whether it\nis running, whether the reader asked for less motion, and whether the host is\non screen.\n\n**Separable because none of it reads a pixel.** `Aura` and `Orb` are the\nlibrary's two canvas painters and are otherwise nothing alike, one a WebGL\nshader over a full-screen triangle and the other a depth-sorted cloud of 2D\ndots. Everything above is the same question in both, which is when a frame is\nworth drawing, and the answer never mentions the drawing.\n\n**Every path to a frame is gated, not only the observer's.** The tab's own\nstate is asked in `play` rather than in the intersection callback, because a\nrestored context, a resize, a state change and a preference all play too, and\na check that lives in the observer covers exactly one of them.\n\n**The next frame is asked for rather than booked blind.** A loop that books\nits own next frame unconditionally ends only where something calls `stop`,\nwhich is how a detached element and a host whose context was taken both went\non drawing into nothing.\n\n**The device-pixel cap is not here.** The aura scales by\n`Math.min(devicePixelRatio || 1, 2) * 0.85` and the orb by\n`Math.min(2, devicePixelRatio || 1)`, and the difference between them is a\nmeasured fill cost, five octaves of noise per pixel against a disc fill.\nThose are decisions about a drawing, not the mechanism around it.\n\n**Nor is context loss.** The event names differ by context type,\n`webglcontextlost` against `contextlost`, and so does the contract: a 2D\ncontext comes back unless the loss is canceled and a WebGL one comes back\nonly if it is. The aura's deferred release is an argument about a browser's\nbudget of about sixteen live WebGL contexts, which is nothing a 2D canvas\nhas.\n\nClient only, and by contract rather than by a guard: every caller holds a\ndrawing context before it calls `watch`, and there is no context on a server\nor on a machine that refuses one.",
2863
- "name": "PaintGateController",
3012
+ "description": "Draws the options of a list handed over as data, a window of them at a\ntime, for a list too long to draw whole.\n\n**The list keeps its logic and this keeps the drawing.** `records` are the\noptions as the list reads them, built once per `items` array: the keyboard,\nthe typeahead, the filter and the value work over all of them, and the list\nwrites `hidden`, `selected` and `active` onto them as it would onto its\noption elements. This draws the ones in the window as option elements of\nthe host's tier, between two spacers that hold the room of the rest, through\n`VirtualizeController`.\n\n**The option the keyboard is on is always drawn**, wherever the window is,\nbecause `aria-activedescendant` points at an element. `follow` brings it into\nview when it moves, in two steps where it is far: the arithmetic scrolls the\nwindow to it, and the host scrolls the drawn element into view on the next\nupdate, as it does for a list of children.\n\n**The scrolling box is the element `render` was drawn into**, so the host\nsays nothing about it: it puts the template inside its box. A host's\n`isDisabled`, or else its `disabled`, holds every drawn option down.\n\nListbox uses it, and so every list that holds a Listbox can.",
3013
+ "name": "OptionWindowController",
2864
3014
  "members": [
2865
3015
  {
2866
3016
  "kind": "field",
2867
3017
  "name": "host",
2868
3018
  "type": {
2869
- "text": "ReactiveControllerHost & HTMLElement"
3019
+ "text": "ReactiveControllerHost &\n HTMLElement & { disabled?: boolean; isDisabled?: boolean }"
2870
3020
  },
2871
3021
  "privacy": "private",
2872
3022
  "readonly": true,
@@ -2876,7 +3026,7 @@
2876
3026
  "kind": "field",
2877
3027
  "name": "options",
2878
3028
  "type": {
2879
- "text": "PaintGateOptions"
3029
+ "text": "OptionWindowOptions"
2880
3030
  },
2881
3031
  "privacy": "private",
2882
3032
  "readonly": true,
@@ -2884,155 +3034,349 @@
2884
3034
  },
2885
3035
  {
2886
3036
  "kind": "field",
2887
- "name": "frame",
2888
- "type": {
2889
- "text": "number"
2890
- },
2891
- "privacy": "private",
2892
- "default": "0",
2893
- "description": "The booked frame, or `0`, which is also the whole of whether it runs."
2894
- },
2895
- {
2896
- "kind": "field",
2897
- "name": "last",
3037
+ "name": "drawn",
2898
3038
  "type": {
2899
- "text": "number"
3039
+ "text": "HTMLElement[]"
2900
3040
  },
2901
- "privacy": "private",
2902
- "default": "0",
2903
- "description": "When the last reported frame was, so the next one carries the gap."
3041
+ "default": "[]",
3042
+ "description": "The option elements drawn on the last update, in order."
2904
3043
  },
2905
3044
  {
2906
3045
  "kind": "field",
2907
- "name": "intersecting",
3046
+ "name": "source",
2908
3047
  "type": {
2909
- "text": "boolean"
3048
+ "text": "readonly DataOptionItem[] | undefined"
2910
3049
  },
2911
3050
  "privacy": "private",
2912
- "default": "false",
2913
- "description": "What the intersection observer last said, kept because it says so only on\na change: every other path to `play` has to ask it."
3051
+ "description": "The `items` array the records were built from."
2914
3052
  },
2915
3053
  {
2916
3054
  "kind": "field",
2917
- "name": "motion",
3055
+ "name": "built",
2918
3056
  "type": {
2919
- "text": "MediaQueryList | undefined"
3057
+ "text": "DataOption[] | undefined"
2920
3058
  },
2921
3059
  "privacy": "private"
2922
3060
  },
2923
3061
  {
2924
3062
  "kind": "field",
2925
- "name": "sized",
3063
+ "name": "virtualize",
2926
3064
  "type": {
2927
- "text": "ResizeObserver | undefined"
3065
+ "text": "VirtualizeController | undefined"
2928
3066
  },
2929
- "privacy": "private"
3067
+ "privacy": "private",
3068
+ "description": "Which slice is drawn, made the first time there are records."
2930
3069
  },
2931
3070
  {
2932
3071
  "kind": "field",
2933
- "name": "visible",
3072
+ "name": "kept",
2934
3073
  "type": {
2935
- "text": "IntersectionObserver | undefined"
3074
+ "text": "number"
2936
3075
  },
2937
- "privacy": "private"
3076
+ "privacy": "private",
3077
+ "default": "-1",
3078
+ "description": "Where in the shown records the highlight is: `-1` for nowhere."
2938
3079
  },
2939
3080
  {
2940
3081
  "kind": "field",
2941
- "name": "onScreen",
3082
+ "name": "following",
2942
3083
  "type": {
2943
3084
  "text": "boolean"
2944
3085
  },
2945
- "description": "Whether the host is on screen, as the intersection observer last said.",
2946
- "readonly": true
3086
+ "privacy": "private",
3087
+ "default": "false",
3088
+ "description": "Whether the highlight is still being brought into view."
2947
3089
  },
2948
3090
  {
2949
3091
  "kind": "field",
2950
- "name": "reduced",
3092
+ "name": "span",
2951
3093
  "type": {
2952
- "text": "boolean"
3094
+ "text": "object"
2953
3095
  },
2954
- "description": "Whether the reader asked for less motion.",
2955
- "readonly": true
3096
+ "privacy": "private",
3097
+ "default": "{ first: 0, last: 0 }",
3098
+ "description": "The window as it was last drawn, which `follow` reads: the controller's\nown may have moved since, measured after the draw, and an option is in\nits place only in the window that drew it."
2956
3099
  },
2957
3100
  {
2958
3101
  "kind": "field",
2959
- "name": "running",
3102
+ "name": "records",
2960
3103
  "type": {
2961
- "text": "boolean"
3104
+ "text": "DataOption[] | undefined"
2962
3105
  },
2963
- "description": "Whether a frame is booked.",
3106
+ "description": "The options as the list reads them, or undefined for a list of children.\n\nBuilt when `items` is a new array, so a page that changes the set hands\nover a new one, as a property of any framework is set. The windowing is\nmade then too, and only then: a list of children observes no size and\nlistens to no scroll it does not need. Its estimate of 32 pixels is\ncorrected by the rows it draws, on first sight.",
2964
3107
  "readonly": true
2965
3108
  },
2966
3109
  {
2967
3110
  "kind": "method",
2968
- "name": "watch",
3111
+ "name": "box",
3112
+ "privacy": "private",
2969
3113
  "return": {
2970
3114
  "type": {
2971
- "text": "void"
3115
+ "text": "HTMLElement | null | undefined"
2972
3116
  }
2973
3117
  },
2974
- "description": "Installs everything that decides whether a frame is wanted.\n\nCalled from the host's own setup rather than from `hostConnected`, because\na host with nothing to draw with has nothing to gate: both painters ask for\na context first and return where there is none, which is a server, a\nmachine that refuses one, and a renderer the aura declines. Idempotent, so\na host whose setup runs on every connection calls it every time."
3118
+ "description": "The box the window is drawn into, inside the scrolling one."
2975
3119
  },
2976
3120
  {
2977
- "kind": "method",
2978
- "name": "hostDisconnected",
2979
- "return": {
2980
- "type": {
2981
- "text": "void"
2982
- }
2983
- }
3121
+ "kind": "field",
3122
+ "name": "shown",
3123
+ "type": {
3124
+ "text": "DataOption[]"
3125
+ },
3126
+ "privacy": "private",
3127
+ "description": "The records a filter has left showing.",
3128
+ "readonly": true
2984
3129
  },
2985
3130
  {
2986
3131
  "kind": "method",
2987
- "name": "play",
3132
+ "name": "hostUpdated",
2988
3133
  "return": {
2989
3134
  "type": {
2990
3135
  "text": "void"
2991
3136
  }
2992
3137
  },
2993
- "description": "Starts the loop, where it is wanted and can be ended."
3138
+ "description": "Draws the window once the render has put its box in place, then measures\nit again. Before `VirtualizeController`'s own pass, which reads the rows."
2994
3139
  },
2995
3140
  {
2996
3141
  "kind": "method",
2997
- "name": "stop",
3142
+ "name": "follow",
2998
3143
  "return": {
2999
3144
  "type": {
3000
- "text": "void"
3145
+ "text": "boolean"
3001
3146
  }
3002
3147
  },
3003
- "description": "Ends the loop.\n\n`last` goes with it, so a loop starting again measures no step against a\nstale stamp. What the host accumulated is the host's and is left alone."
3148
+ "parameters": [
3149
+ {
3150
+ "name": "moved",
3151
+ "type": {
3152
+ "text": "boolean"
3153
+ }
3154
+ }
3155
+ ],
3156
+ "description": "Brings the highlight into view where `moved` says it moved, and answers\nwhether its drawn element is in place for the host to scroll to now.\n\nOnly when it moved, or the filter did: the window moves on every scroll,\nand following then would pull a reader scrolling with a wheel back to the\nhighlight."
3004
3157
  },
3005
3158
  {
3006
3159
  "kind": "method",
3007
- "name": "wanted",
3008
- "privacy": "private",
3160
+ "name": "center",
3009
3161
  "return": {
3010
3162
  "type": {
3011
- "text": "boolean"
3163
+ "text": "void"
3012
3164
  }
3013
3165
  },
3014
- "description": "Whether anybody is looking, and whether the host can draw for them."
3015
- },
3016
- {
3017
- "kind": "field",
3018
- "name": "tick",
3019
- "privacy": "private",
3020
- "readonly": true
3021
- },
3022
- {
3023
- "kind": "field",
3024
- "name": "handleMotion",
3025
- "privacy": "private",
3026
- "readonly": true
3027
- },
3028
- {
3029
- "kind": "field",
3030
- "name": "handleVisibility",
3031
- "privacy": "private",
3032
- "readonly": true
3033
- }
3034
- ],
3035
- "helix": {}
3166
+ "parameters": [
3167
+ {
3168
+ "name": "value",
3169
+ "type": {
3170
+ "text": "string"
3171
+ }
3172
+ }
3173
+ ],
3174
+ "description": "Scrolls the box to put the option of `value` in its middle."
3175
+ }
3176
+ ],
3177
+ "helix": {}
3178
+ }
3179
+ ],
3180
+ "exports": [
3181
+ {
3182
+ "kind": "js",
3183
+ "name": "OptionWindowController",
3184
+ "declaration": {
3185
+ "name": "OptionWindowController",
3186
+ "module": "src/controllers/option-window-controller/option-window-controller.ts"
3187
+ }
3188
+ }
3189
+ ]
3190
+ },
3191
+ {
3192
+ "kind": "javascript-module",
3193
+ "path": "src/controllers/paint-gate-controller/paint-gate-controller.ts",
3194
+ "declarations": [
3195
+ {
3196
+ "kind": "variable",
3197
+ "name": "MAX_FRAME_STEP",
3198
+ "type": {
3199
+ "text": "number"
3200
+ },
3201
+ "default": "0.05",
3202
+ "description": "The longest step one frame is given, in seconds.\n\nA tab that was throttled and comes back hands the first frame a delta of\nseveral seconds. Integrated whole, an animated canvas teleports: the aura's\nfield lands wherever the pointer went while nobody was watching, and the\norb's wave jumps a shape. The ceiling is 20 frames a second of simulated\ntime, so a genuinely slow frame still advances and a resumed one does not\nskip ahead.\n\nExported because a host that collects several frames into one owes the same\nceiling on what it spends. `Aura` caps its own frame rate and would otherwise\nhand its shader exactly the step this number refuses."
3203
+ },
3204
+ {
3205
+ "kind": "class",
3206
+ "description": "Runs a canvas painter's frame loop, and stops it whenever nobody is looking.\n\nIt holds the five pieces every animated canvas needs and none of which is\nabout what is drawn: an `IntersectionObserver` for whether the host is on\nscreen, `visibilitychange` for whether the tab is in front,\n`prefers-reduced-motion` and its `change` listener for whether the reader\nasked for less, a `ResizeObserver` for the box, and the\n`requestAnimationFrame` loop that reports a clamped step. It says whether it\nis running, whether the reader asked for less motion, and whether the host is\non screen.\n\n**Separable because none of it reads a pixel.** `Aura` and `Orb` are the\nlibrary's two canvas painters and are otherwise nothing alike, one a WebGL\nshader over a full-screen triangle and the other a depth-sorted cloud of 2D\ndots. Everything above is the same question in both, which is when a frame is\nworth drawing, and the answer never mentions the drawing.\n\n**Every path to a frame is gated, not only the observer's.** The tab's own\nstate is asked in `play` rather than in the intersection callback, because a\nrestored context, a resize, a state change and a preference all play too, and\na check that lives in the observer covers exactly one of them.\n\n**The next frame is asked for rather than booked blind.** A loop that books\nits own next frame unconditionally ends only where something calls `stop`,\nwhich is how a detached element and a host whose context was taken both went\non drawing into nothing.\n\n**The device-pixel cap is not here.** The aura scales by\n`Math.min(devicePixelRatio || 1, 2) * 0.85` and the orb by\n`Math.min(2, devicePixelRatio || 1)`, and the difference between them is a\nmeasured fill cost, five octaves of noise per pixel against a disc fill.\nThose are decisions about a drawing, not the mechanism around it.\n\n**Nor is context loss.** The event names differ by context type,\n`webglcontextlost` against `contextlost`, and so does the contract: a 2D\ncontext comes back unless the loss is canceled and a WebGL one comes back\nonly if it is. The aura's deferred release is an argument about a browser's\nbudget of about sixteen live WebGL contexts, which is nothing a 2D canvas\nhas.\n\nClient only, and by contract rather than by a guard: every caller holds a\ndrawing context before it calls `watch`, and there is no context on a server\nor on a machine that refuses one.",
3207
+ "name": "PaintGateController",
3208
+ "members": [
3209
+ {
3210
+ "kind": "field",
3211
+ "name": "host",
3212
+ "type": {
3213
+ "text": "ReactiveControllerHost & HTMLElement"
3214
+ },
3215
+ "privacy": "private",
3216
+ "readonly": true,
3217
+ "default": "host"
3218
+ },
3219
+ {
3220
+ "kind": "field",
3221
+ "name": "options",
3222
+ "type": {
3223
+ "text": "PaintGateOptions"
3224
+ },
3225
+ "privacy": "private",
3226
+ "readonly": true,
3227
+ "default": "options"
3228
+ },
3229
+ {
3230
+ "kind": "field",
3231
+ "name": "frame",
3232
+ "type": {
3233
+ "text": "number"
3234
+ },
3235
+ "privacy": "private",
3236
+ "default": "0",
3237
+ "description": "The booked frame, or `0`, which is also the whole of whether it runs."
3238
+ },
3239
+ {
3240
+ "kind": "field",
3241
+ "name": "last",
3242
+ "type": {
3243
+ "text": "number"
3244
+ },
3245
+ "privacy": "private",
3246
+ "default": "0",
3247
+ "description": "When the last reported frame was, so the next one carries the gap."
3248
+ },
3249
+ {
3250
+ "kind": "field",
3251
+ "name": "intersecting",
3252
+ "type": {
3253
+ "text": "boolean"
3254
+ },
3255
+ "privacy": "private",
3256
+ "default": "false",
3257
+ "description": "What the intersection observer last said, kept because it says so only on\na change: every other path to `play` has to ask it."
3258
+ },
3259
+ {
3260
+ "kind": "field",
3261
+ "name": "motion",
3262
+ "type": {
3263
+ "text": "MediaQueryList | undefined"
3264
+ },
3265
+ "privacy": "private"
3266
+ },
3267
+ {
3268
+ "kind": "field",
3269
+ "name": "sized",
3270
+ "type": {
3271
+ "text": "ResizeObserver | undefined"
3272
+ },
3273
+ "privacy": "private"
3274
+ },
3275
+ {
3276
+ "kind": "field",
3277
+ "name": "visible",
3278
+ "type": {
3279
+ "text": "IntersectionObserver | undefined"
3280
+ },
3281
+ "privacy": "private"
3282
+ },
3283
+ {
3284
+ "kind": "field",
3285
+ "name": "onScreen",
3286
+ "type": {
3287
+ "text": "boolean"
3288
+ },
3289
+ "description": "Whether the host is on screen, as the intersection observer last said.",
3290
+ "readonly": true
3291
+ },
3292
+ {
3293
+ "kind": "field",
3294
+ "name": "reduced",
3295
+ "type": {
3296
+ "text": "boolean"
3297
+ },
3298
+ "description": "Whether the reader asked for less motion.",
3299
+ "readonly": true
3300
+ },
3301
+ {
3302
+ "kind": "field",
3303
+ "name": "running",
3304
+ "type": {
3305
+ "text": "boolean"
3306
+ },
3307
+ "description": "Whether a frame is booked.",
3308
+ "readonly": true
3309
+ },
3310
+ {
3311
+ "kind": "method",
3312
+ "name": "watch",
3313
+ "return": {
3314
+ "type": {
3315
+ "text": "void"
3316
+ }
3317
+ },
3318
+ "description": "Installs everything that decides whether a frame is wanted.\n\nCalled from the host's own setup rather than from `hostConnected`, because\na host with nothing to draw with has nothing to gate: both painters ask for\na context first and return where there is none, which is a server, a\nmachine that refuses one, and a renderer the aura declines. Idempotent, so\na host whose setup runs on every connection calls it every time."
3319
+ },
3320
+ {
3321
+ "kind": "method",
3322
+ "name": "hostDisconnected",
3323
+ "return": {
3324
+ "type": {
3325
+ "text": "void"
3326
+ }
3327
+ }
3328
+ },
3329
+ {
3330
+ "kind": "method",
3331
+ "name": "play",
3332
+ "return": {
3333
+ "type": {
3334
+ "text": "void"
3335
+ }
3336
+ },
3337
+ "description": "Starts the loop, where it is wanted and can be ended."
3338
+ },
3339
+ {
3340
+ "kind": "method",
3341
+ "name": "stop",
3342
+ "return": {
3343
+ "type": {
3344
+ "text": "void"
3345
+ }
3346
+ },
3347
+ "description": "Ends the loop.\n\n`last` goes with it, so a loop starting again measures no step against a\nstale stamp. What the host accumulated is the host's and is left alone."
3348
+ },
3349
+ {
3350
+ "kind": "method",
3351
+ "name": "wanted",
3352
+ "privacy": "private",
3353
+ "return": {
3354
+ "type": {
3355
+ "text": "boolean"
3356
+ }
3357
+ },
3358
+ "description": "Whether anybody is looking, and whether the host can draw for them."
3359
+ },
3360
+ {
3361
+ "kind": "field",
3362
+ "name": "tick",
3363
+ "privacy": "private",
3364
+ "readonly": true
3365
+ },
3366
+ {
3367
+ "kind": "field",
3368
+ "name": "handleMotion",
3369
+ "privacy": "private",
3370
+ "readonly": true
3371
+ },
3372
+ {
3373
+ "kind": "field",
3374
+ "name": "handleVisibility",
3375
+ "privacy": "private",
3376
+ "readonly": true
3377
+ }
3378
+ ],
3379
+ "helix": {}
3036
3380
  }
3037
3381
  ],
3038
3382
  "exports": [
@@ -3910,7 +4254,7 @@
3910
4254
  "declarations": [
3911
4255
  {
3912
4256
  "kind": "class",
3913
- "description": "Follows a pointer dragged across a surface along one axis, for a surface the\nreader swipes away or along: a drawer, a toast, a lightbox's pictures.\n\nIt decides only that a swipe is happening and reports where the pointer is.\nWhat a swipe means is the host's, which is why `move` and `end` are told the\ndistance and nothing else: a drawer settles it against snap points, a toast\nagainst half its width, and a lightbox turns it into next or previous.\n\n**A press is a swipe only once it has moved `SLOP` pixels, mostly along the\naxis.** Before that it is still a press, so a tap on a button inside the\nsurface is a tap, and a drag across the axis, a reader scrolling, is left to\nthe page. Once it is a swipe, the click that ends it is swallowed, so a\nswipe that started on a button does not also press it.\n\nThe move and the release are heard on the window, so a pointer that leaves\nthe surface mid-swipe is still followed.",
4257
+ "description": "Follows a pointer dragged across a surface along one axis, for a surface the\nreader swipes away or along: a drawer, a toast, a lightbox's pictures.\n\nIt decides only that a swipe is happening and reports where the pointer is.\nWhat a swipe means is the host's, which is why `move` and `end` are told the\ndistance and nothing else: a drawer settles it against snap points, a toast\nagainst half its width, and a lightbox turns it into next or previous.\n\n**A press is a swipe only once it has moved `SLOP` pixels, mostly along the\naxis.** Before that it is still a press, so a tap on a button inside the\nsurface is a tap, and a drag across the axis, a reader scrolling, is left to\nthe page. Once it is a swipe, the click that ends it is swallowed, so a\nswipe that started on a button does not also press it. The swallow is held on\nthe window for one task after the release, so a spec that swipes and then\npresses a control in the same task sees that press swallowed: wait a task\nbetween them, as a reader's next press always does.\n\nThe move and the release are heard on the window, so a pointer that leaves\nthe surface mid-swipe is still followed.",
3914
4258
  "name": "SwipeController",
3915
4259
  "members": [
3916
4260
  {
@@ -4936,6 +5280,44 @@
4936
5280
  }
4937
5281
  ]
4938
5282
  },
5283
+ {
5284
+ "kind": "javascript-module",
5285
+ "path": "src/events/band.ts",
5286
+ "declarations": [
5287
+ {
5288
+ "kind": "class",
5289
+ "description": "A reading moved into another band: a meter whose value crossed `low`,\n`high` or `optimum` into `good`, `fair` or `poor`.\n\nSent once for each crossing, not on every value, so a listener can say the\nchange aloud or recolor something else on the page. Not cancelable, since\nthe reading has already moved. Bubbles and is composed.",
5290
+ "name": "HelixBandEvent",
5291
+ "members": [
5292
+ {
5293
+ "kind": "field",
5294
+ "name": "eventName",
5295
+ "type": {
5296
+ "text": "string"
5297
+ },
5298
+ "static": true,
5299
+ "readonly": true,
5300
+ "default": "'helix-band'"
5301
+ }
5302
+ ],
5303
+ "superclass": {
5304
+ "name": "CustomEvent",
5305
+ "module": "src/events/band.ts"
5306
+ },
5307
+ "helix": {}
5308
+ }
5309
+ ],
5310
+ "exports": [
5311
+ {
5312
+ "kind": "js",
5313
+ "name": "HelixBandEvent",
5314
+ "declaration": {
5315
+ "name": "HelixBandEvent",
5316
+ "module": "src/events/band.ts"
5317
+ }
5318
+ }
5319
+ ]
5320
+ },
4939
5321
  {
4940
5322
  "kind": "javascript-module",
4941
5323
  "path": "src/events/before-activate.ts",
@@ -6163,6 +6545,14 @@
6163
6545
  "module": "./details.js"
6164
6546
  }
6165
6547
  },
6548
+ {
6549
+ "kind": "js",
6550
+ "name": "BandDetail",
6551
+ "declaration": {
6552
+ "name": "BandDetail",
6553
+ "module": "./details.js"
6554
+ }
6555
+ },
6166
6556
  {
6167
6557
  "kind": "js",
6168
6558
  "name": "CanvasView",
@@ -6571,6 +6961,14 @@
6571
6961
  "module": "src/events/events.ts"
6572
6962
  }
6573
6963
  },
6964
+ {
6965
+ "kind": "js",
6966
+ "name": "HelixBandEvent",
6967
+ "declaration": {
6968
+ "name": "HelixBandEvent",
6969
+ "module": "src/events/events.ts"
6970
+ }
6971
+ },
6574
6972
  {
6575
6973
  "kind": "js",
6576
6974
  "name": "HelixBeforeActivateEvent",
@@ -8083,8 +8481,8 @@
8083
8481
  "type": {
8084
8482
  "text": "ReadonlySet<string>"
8085
8483
  },
8086
- "default": "new Set([ 'helix-action', 'helix-activate', 'helix-aura-fallback', 'helix-before-activate', 'helix-before-change', 'helix-before-close', 'helix-before-collapse', 'helix-before-edit', 'helix-before-move', 'helix-before-open', 'helix-before-panel-resize', 'helix-before-pin', 'helix-before-reconnect', 'helix-before-relabel', 'helix-before-resize', 'helix-before-split', 'helix-before-toggle', 'helix-canvas-edit', 'helix-canvas-pan', 'helix-canvas-view', 'helix-canvas-zoom', 'helix-caret', 'helix-clear', 'helix-collapse', 'helix-complete', 'helix-connect', 'helix-console', 'helix-copy', 'helix-copy-error', 'helix-create', 'helix-dismiss', 'helix-edit', 'helix-end', 'helix-expand', 'helix-facet', 'helix-filter', 'helix-filtered', 'helix-graph-filter', 'helix-graph-layout', 'helix-graph-pan', 'helix-graph-part-change', 'helix-graph-ready', 'helix-graph-signal', 'helix-graph-zoom', 'helix-history', 'helix-load', 'helix-load-more', 'helix-map-cluster', 'helix-map-pan', 'helix-map-part-change', 'helix-map-ready', 'helix-map-rotate', 'helix-map-tilt', 'helix-map-zoom', 'helix-move', 'helix-navigate', 'helix-next', 'helix-panel-resize', 'helix-pin', 'helix-press', 'helix-preview', 'helix-previous', 'helix-range-change', 'helix-read', 'helix-reconnect', 'helix-reject', 'helix-relabel', 'helix-remove', 'helix-reorder', 'helix-reordered', 'helix-resize', 'helix-resized', 'helix-sample-end', 'helix-sample-start', 'helix-scrolled', 'helix-select', 'helix-selected', 'helix-send', 'helix-shortcut', 'helix-sort', 'helix-sorted', 'helix-split', 'helix-toggle', 'helix-tour-ask', 'helix-tour-status', 'helix-typing', ])",
8087
- "description": "Every name this library dispatches.\n\nExported so a runtime check can ask whether a name is one of ours without\nkeeping a second list of them. `HelixElement` uses it to tell a consumer that\nthe handler prop they wrote is attached to nothing.\n\n**Written as strings, in a module of its own, and not read off the\nclasses in `registry`.** Every element carries this set through its React\nprop audit, and a set read off the classes kept every class alive in every\nbundle: a Badge shipped all eighty of them. As strings, a family ships the\nclasses it dispatches and no others. `events.pure.spec.ts` holds this list to\nthe classes, so a class added without its name here fails."
8484
+ "default": "new Set( ( 'action activate aura-fallback band before-activate before-change before-close ' + 'before-collapse before-edit before-move before-open before-panel-resize before-pin ' + 'before-reconnect before-relabel before-resize before-split before-toggle ' + 'canvas-edit canvas-pan canvas-view canvas-zoom caret clear collapse complete ' + 'connect console copy copy-error create dismiss edit end expand facet filter ' + 'filtered graph-filter graph-layout graph-pan graph-part-change graph-ready ' + 'graph-signal graph-zoom history load load-more map-cluster map-pan map-part-change ' + 'map-ready map-rotate map-tilt map-zoom move navigate next panel-resize pin press ' + 'preview previous range-change read reconnect reject relabel remove reorder ' + 'reordered resize resized sample-end sample-start scrolled select selected send ' + 'shortcut sort sorted split toggle tour-ask tour-status typing' ) .split(' ') .map((name) => `helix-${name}`), )",
8485
+ "description": "Every name this library dispatches.\n\nExported so a runtime check can ask whether a name is one of ours without\nkeeping a second list of them. `HelixElement` uses it to tell a consumer that\nthe handler prop they wrote is attached to nothing.\n\n**Written as strings, in a module of its own, and not read off the\nclasses in `registry`.** Every element carries this set through its React\nprop audit, and a set read off the classes kept every class alive in every\nbundle: a Badge shipped all eighty of them. As strings, a family ships the\nclasses it dispatches and no others. `events.pure.spec.ts` holds this list to\nthe classes, so a class added without its name here fails.\n\n**Without the shared `helix-`, and separated by spaces.** Every element carries this\nlist, and as quoted strings each paid its quotes, its comma and the prefix."
8088
8486
  }
8089
8487
  ],
8090
8488
  "exports": [
@@ -9312,7 +9710,7 @@
9312
9710
  }
9313
9711
  }
9314
9712
  ],
9315
- "description": "One composed tag, as a static value a template can interpolate.\n\n`unsafeStatic` is safe by construction: the name is a literal in our own\nsource and the prefix is one of two strings this class defines. Called per\nrender and not cached, which costs nothing, because `static-html` keys its\ntemplate cache on the joined string rather than on the object."
9713
+ "description": "One composed tag, as a static value a template can interpolate.\n\nWhat `unsafeStatic` returns, safe by construction: the name is a literal in\nour own source and the prefix is one of two strings this class defines.\nCalled per render and not cached, which costs nothing, because\n`static-html` keys its template cache on the joined string rather than on\nthe object.\n\n**Written out rather than imported, for every element that never renders\none.** `lit/static-html.js` declares no side effects, so importing\n`unsafeStatic` alone kept the module's three `withStatic` calls in every\nbundle: about 210 bytes gzipped on each of the families that compose no\ntag, Divider and Badge among them. The value is lit's cross-copy protocol,\nkeyed by `Symbol.for('')` so that two copies of lit on a page read each\nother's, and a spec holds it equal to `unsafeStatic`'s."
9316
9714
  },
9317
9715
  {
9318
9716
  "kind": "method",
@@ -9678,10 +10076,19 @@
9678
10076
  "description": "The prop React would be holding for this event, if it is holding one.\n\n**A relayed native event needs a different answer from one of ours, and\ngetting it wrong doubles every call.** Measured against React 19.2.8:\n\n```\nonhelix-before-change <- helix-before-change REACHED (React binds it with addEventListener)\nonChange <- change REACHED (React's delegated root listener)\nonLoad <- load not reached\nonError <- error not reached\nonEnded <- ended not reached\n```\n\nReact binds a hyphenated prop directly on the element, so our own events are\nreached by name and are safe to bind again: same type, same callback, same\ncapture flag is a no-op by specification. A native name is different. React\nrecognizes `onChange` and `onLoad` as its own registration names and attaches\nnothing to the element for either; it relies on a delegated listener at the\nroot, which sees an event only if it **bubbles**, and on a non-delegated list\nit sets up for `<video>`, `<audio>` and `<img>` and never for a custom\nelement.\n\nSo a bubbling relay already arrives and must not be bound again: React's\nlistener is at the root rather than on the element, so nothing deduplicates\nit and the consumer's handler runs twice. A non-bubbling relay arrives\nnowhere, and is the bug this exists to close: `<helix-avatar>` relays `load`\nand `error`, `<helix-video>` relays `ended`, `play` and `pause`, all of them\ndeclared public API and all of them otherwise silent in React.\n\nThe name is React's own casing, `onError` rather than `onerror`, because that\nis what a consumer writes and therefore what is in the props bag. See\n`reactNativeProp`."
9679
10077
  },
9680
10078
  {
9681
- "kind": "function",
9682
- "name": "reactNativeProp",
9683
- "return": {
9684
- "type": {
10079
+ "kind": "variable",
10080
+ "name": "REACT_CASING",
10081
+ "type": {
10082
+ "text": "Readonly<Record<string, string>>"
10083
+ },
10084
+ "default": "{ canplay: 'onCanPlay', canplaythrough: 'onCanPlayThrough', durationchange: 'onDurationChange', loadeddata: 'onLoadedData', loadedmetadata: 'onLoadedMetadata', loadstart: 'onLoadStart', ratechange: 'onRateChange', scrollend: 'onScrollEnd', timeupdate: 'onTimeUpdate', volumechange: 'onVolumeChange', }",
10085
+ "description": "React's casing for the native events whose names are two words run together.\n\nReact spells these as two words, `onTimeUpdate` for `timeupdate`, and that\nis the prop its own `<video>` typings teach a consumer to write. The media\nnames are the ones `Video` relays from its inner `<video>`; `scrollend` is\n`Scroll Area`'s. A single word needs no entry: its first letter is the whole\nof the rule.\n\n`@fusion.dev/helix-cem` keeps the same table for the typings it writes, and\nits spec holds that copy to this one."
10086
+ },
10087
+ {
10088
+ "kind": "function",
10089
+ "name": "reactNativeProp",
10090
+ "return": {
10091
+ "type": {
9685
10092
  "text": "string"
9686
10093
  }
9687
10094
  },
@@ -9763,6 +10170,14 @@
9763
10170
  "module": "src/helix-element/react-bridge.ts"
9764
10171
  }
9765
10172
  },
10173
+ {
10174
+ "kind": "js",
10175
+ "name": "REACT_CASING",
10176
+ "declaration": {
10177
+ "name": "REACT_CASING",
10178
+ "module": "src/helix-element/react-bridge.ts"
10179
+ }
10180
+ },
9766
10181
  {
9767
10182
  "kind": "js",
9768
10183
  "name": "reactNativeProp",
@@ -10163,7 +10578,7 @@
10163
10578
  }
10164
10579
  }
10165
10580
  ],
10166
- "description": "One composed tag, as a static value a template can interpolate.\n\n`unsafeStatic` is safe by construction: the name is a literal in our own\nsource and the prefix is one of two strings this class defines. Called per\nrender and not cached, which costs nothing, because `static-html` keys its\ntemplate cache on the joined string rather than on the object.",
10581
+ "description": "One composed tag, as a static value a template can interpolate.\n\nWhat `unsafeStatic` returns, safe by construction: the name is a literal in\nour own source and the prefix is one of two strings this class defines.\nCalled per render and not cached, which costs nothing, because\n`static-html` keys its template cache on the joined string rather than on\nthe object.\n\n**Written out rather than imported, for every element that never renders\none.** `lit/static-html.js` declares no side effects, so importing\n`unsafeStatic` alone kept the module's three `withStatic` calls in every\nbundle: about 210 bytes gzipped on each of the families that compose no\ntag, Divider and Badge among them. The value is lit's cross-copy protocol,\nkeyed by `Symbol.for('')` so that two copies of lit on a page read each\nother's, and a spec holds it equal to `unsafeStatic`'s.",
10167
10582
  "inheritedFrom": {
10168
10583
  "name": "HelixElement",
10169
10584
  "module": "src/helix-element/helix-element.ts"
@@ -10588,6 +11003,14 @@
10588
11003
  "module": "./controllers/chart-pointer-controller/chart-pointer-controller.js"
10589
11004
  }
10590
11005
  },
11006
+ {
11007
+ "kind": "js",
11008
+ "name": "ChildrenController",
11009
+ "declaration": {
11010
+ "name": "ChildrenController",
11011
+ "module": "./controllers/children-controller/children-controller.js"
11012
+ }
11013
+ },
10591
11014
  {
10592
11015
  "kind": "js",
10593
11016
  "name": "CommandController",
@@ -10868,6 +11291,22 @@
10868
11291
  "module": "./controllers/indicator-controller/indicator-controller.js"
10869
11292
  }
10870
11293
  },
11294
+ {
11295
+ "kind": "js",
11296
+ "name": "FocusItemOptions",
11297
+ "declaration": {
11298
+ "name": "FocusItemOptions",
11299
+ "module": "./controllers/keyboard-navigation-controller/keyboard-navigation-controller.js"
11300
+ }
11301
+ },
11302
+ {
11303
+ "kind": "js",
11304
+ "name": "focusItemOf",
11305
+ "declaration": {
11306
+ "name": "focusItemOf",
11307
+ "module": "./controllers/keyboard-navigation-controller/keyboard-navigation-controller.js"
11308
+ }
11309
+ },
10871
11310
  {
10872
11311
  "kind": "js",
10873
11312
  "name": "KeyboardNavigationController",
@@ -10924,6 +11363,14 @@
10924
11363
  "module": "./controllers/media-session-controller/media-session-controller.js"
10925
11364
  }
10926
11365
  },
11366
+ {
11367
+ "kind": "js",
11368
+ "name": "animationsFinished",
11369
+ "declaration": {
11370
+ "name": "animationsFinished",
11371
+ "module": "./controllers/open-phase-controller/open-phase-controller.js"
11372
+ }
11373
+ },
10927
11374
  {
10928
11375
  "kind": "js",
10929
11376
  "name": "animationsSettled",
@@ -10956,6 +11403,22 @@
10956
11403
  "module": "./controllers/open-phase-controller/open-phase-controller.js"
10957
11404
  }
10958
11405
  },
11406
+ {
11407
+ "kind": "js",
11408
+ "name": "OptionWindowController",
11409
+ "declaration": {
11410
+ "name": "OptionWindowController",
11411
+ "module": "./controllers/option-window-controller/option-window-controller.js"
11412
+ }
11413
+ },
11414
+ {
11415
+ "kind": "js",
11416
+ "name": "OptionWindowOptions",
11417
+ "declaration": {
11418
+ "name": "OptionWindowOptions",
11419
+ "module": "./controllers/option-window-controller/option-window-controller.js"
11420
+ }
11421
+ },
10959
11422
  {
10960
11423
  "kind": "js",
10961
11424
  "name": "MAX_FRAME_STEP",
@@ -11172,6 +11635,14 @@
11172
11635
  "module": "./events/events.js"
11173
11636
  }
11174
11637
  },
11638
+ {
11639
+ "kind": "js",
11640
+ "name": "BandDetail",
11641
+ "declaration": {
11642
+ "name": "BandDetail",
11643
+ "module": "./events/events.js"
11644
+ }
11645
+ },
11175
11646
  {
11176
11647
  "kind": "js",
11177
11648
  "name": "CanvasView",
@@ -11316,6 +11787,14 @@
11316
11787
  "module": "./events/events.js"
11317
11788
  }
11318
11789
  },
11790
+ {
11791
+ "kind": "js",
11792
+ "name": "HelixBandEvent",
11793
+ "declaration": {
11794
+ "name": "HelixBandEvent",
11795
+ "module": "./events/events.js"
11796
+ }
11797
+ },
11319
11798
  {
11320
11799
  "kind": "js",
11321
11800
  "name": "HelixBeforeActivateEvent",
@@ -12292,6 +12771,14 @@
12292
12771
  "module": "./mixins/mixin-chart-source/mixin-chart-source.js"
12293
12772
  }
12294
12773
  },
12774
+ {
12775
+ "kind": "js",
12776
+ "name": "POSITION_LABEL",
12777
+ "declaration": {
12778
+ "name": "POSITION_LABEL",
12779
+ "module": "./mixins/mixin-chart-source/mixin-chart-source.js"
12780
+ }
12781
+ },
12295
12782
  {
12296
12783
  "kind": "js",
12297
12784
  "name": "seriesIndex",
@@ -12436,6 +12923,22 @@
12436
12923
  "module": "./mixins/mixin-picker-editing/mixin-picker-editing.js"
12437
12924
  }
12438
12925
  },
12926
+ {
12927
+ "kind": "js",
12928
+ "name": "MixinPickerFeedback",
12929
+ "declaration": {
12930
+ "name": "MixinPickerFeedback",
12931
+ "module": "./mixins/mixin-picker-feedback/mixin-picker-feedback.js"
12932
+ }
12933
+ },
12934
+ {
12935
+ "kind": "js",
12936
+ "name": "MixinPickerFeedbackInterface",
12937
+ "declaration": {
12938
+ "name": "MixinPickerFeedbackInterface",
12939
+ "module": "./mixins/mixin-picker-feedback/mixin-picker-feedback.js"
12940
+ }
12941
+ },
12439
12942
  {
12440
12943
  "kind": "js",
12441
12944
  "name": "MixinPickerField",
@@ -12580,6 +13083,30 @@
12580
13083
  "module": "./utils/arrow/arrow.js"
12581
13084
  }
12582
13085
  },
13086
+ {
13087
+ "kind": "js",
13088
+ "name": "assignSlots",
13089
+ "declaration": {
13090
+ "name": "assignSlots",
13091
+ "module": "./utils/assign-slots/assign-slots.js"
13092
+ }
13093
+ },
13094
+ {
13095
+ "kind": "js",
13096
+ "name": "DrawAutofillOptions",
13097
+ "declaration": {
13098
+ "name": "DrawAutofillOptions",
13099
+ "module": "./utils/autofill-select/autofill-select.js"
13100
+ }
13101
+ },
13102
+ {
13103
+ "kind": "js",
13104
+ "name": "drawAutofill",
13105
+ "declaration": {
13106
+ "name": "drawAutofill",
13107
+ "module": "./utils/autofill-select/autofill-select.js"
13108
+ }
13109
+ },
12583
13110
  {
12584
13111
  "kind": "js",
12585
13112
  "name": "addDays",
@@ -12732,6 +13259,14 @@
12732
13259
  "module": "./utils/capture-pointer/capture-pointer.js"
12733
13260
  }
12734
13261
  },
13262
+ {
13263
+ "kind": "js",
13264
+ "name": "centerInView",
13265
+ "declaration": {
13266
+ "name": "centerInView",
13267
+ "module": "./utils/center-in-view/center-in-view.js"
13268
+ }
13269
+ },
12735
13270
  {
12736
13271
  "kind": "js",
12737
13272
  "name": "ariaChord",
@@ -12772,6 +13307,38 @@
12772
13307
  "module": "./utils/chord/chord.js"
12773
13308
  }
12774
13309
  },
13310
+ {
13311
+ "kind": "js",
13312
+ "name": "selectsAll",
13313
+ "declaration": {
13314
+ "name": "selectsAll",
13315
+ "module": "./utils/chord/chord.js"
13316
+ }
13317
+ },
13318
+ {
13319
+ "kind": "js",
13320
+ "name": "KeyNames",
13321
+ "declaration": {
13322
+ "name": "KeyNames",
13323
+ "module": "./utils/chord/key-names.js"
13324
+ }
13325
+ },
13326
+ {
13327
+ "kind": "js",
13328
+ "name": "keyNames",
13329
+ "declaration": {
13330
+ "name": "keyNames",
13331
+ "module": "./utils/chord/key-names.js"
13332
+ }
13333
+ },
13334
+ {
13335
+ "kind": "js",
13336
+ "name": "clamp",
13337
+ "declaration": {
13338
+ "name": "clamp",
13339
+ "module": "./utils/clamp/clamp.js"
13340
+ }
13341
+ },
12775
13342
  {
12776
13343
  "kind": "js",
12777
13344
  "name": "clockLocale",
@@ -12900,6 +13467,14 @@
12900
13467
  "module": "./utils/color-name/color-name.js"
12901
13468
  }
12902
13469
  },
13470
+ {
13471
+ "kind": "js",
13472
+ "name": "columnStep",
13473
+ "declaration": {
13474
+ "name": "columnStep",
13475
+ "module": "./utils/column-step/column-step.js"
13476
+ }
13477
+ },
12903
13478
  {
12904
13479
  "kind": "js",
12905
13480
  "name": "countLabel",
@@ -12996,6 +13571,46 @@
12996
13571
  "module": "./utils/custom-element/custom-element.js"
12997
13572
  }
12998
13573
  },
13574
+ {
13575
+ "kind": "js",
13576
+ "name": "DataOption",
13577
+ "declaration": {
13578
+ "name": "DataOption",
13579
+ "module": "./utils/data-options/data-options.js"
13580
+ }
13581
+ },
13582
+ {
13583
+ "kind": "js",
13584
+ "name": "DataOptionItem",
13585
+ "declaration": {
13586
+ "name": "DataOptionItem",
13587
+ "module": "./utils/data-options/data-options.js"
13588
+ }
13589
+ },
13590
+ {
13591
+ "kind": "js",
13592
+ "name": "dataOptions",
13593
+ "declaration": {
13594
+ "name": "dataOptions",
13595
+ "module": "./utils/data-options/data-options.js"
13596
+ }
13597
+ },
13598
+ {
13599
+ "kind": "js",
13600
+ "name": "drawOptions",
13601
+ "declaration": {
13602
+ "name": "drawOptions",
13603
+ "module": "./utils/data-options/data-options.js"
13604
+ }
13605
+ },
13606
+ {
13607
+ "kind": "js",
13608
+ "name": "windowOf",
13609
+ "declaration": {
13610
+ "name": "windowOf",
13611
+ "module": "./utils/data-options/data-options.js"
13612
+ }
13613
+ },
12999
13614
  {
13000
13615
  "kind": "js",
13001
13616
  "name": "segmentName",
@@ -13060,6 +13675,14 @@
13060
13675
  "module": "./utils/draw-tooltip/draw-tooltip.js"
13061
13676
  }
13062
13677
  },
13678
+ {
13679
+ "kind": "js",
13680
+ "name": "ReadingCursor",
13681
+ "declaration": {
13682
+ "name": "ReadingCursor",
13683
+ "module": "./utils/draw-tooltip/draw-tooltip.js"
13684
+ }
13685
+ },
13063
13686
  {
13064
13687
  "kind": "js",
13065
13688
  "name": "elapsedTime",
@@ -13092,6 +13715,14 @@
13092
13715
  "module": "./utils/element-by-id/element-by-id.js"
13093
13716
  }
13094
13717
  },
13718
+ {
13719
+ "kind": "js",
13720
+ "name": "exportParts",
13721
+ "declaration": {
13722
+ "name": "exportParts",
13723
+ "module": "./utils/export-parts/export-parts.js"
13724
+ }
13725
+ },
13095
13726
  {
13096
13727
  "kind": "js",
13097
13728
  "name": "fillTemplate",
@@ -13100,6 +13731,46 @@
13100
13731
  "module": "./utils/fill-template/fill-template.js"
13101
13732
  }
13102
13733
  },
13734
+ {
13735
+ "kind": "js",
13736
+ "name": "labelWith",
13737
+ "declaration": {
13738
+ "name": "labelWith",
13739
+ "module": "./utils/fill-template/fill-template.js"
13740
+ }
13741
+ },
13742
+ {
13743
+ "kind": "js",
13744
+ "name": "FILTER_MARK",
13745
+ "declaration": {
13746
+ "name": "FILTER_MARK",
13747
+ "module": "./utils/filter-marks/filter-marks.js"
13748
+ }
13749
+ },
13750
+ {
13751
+ "kind": "js",
13752
+ "name": "markMatches",
13753
+ "declaration": {
13754
+ "name": "markMatches",
13755
+ "module": "./utils/filter-marks/filter-marks.js"
13756
+ }
13757
+ },
13758
+ {
13759
+ "kind": "js",
13760
+ "name": "rangeOf",
13761
+ "declaration": {
13762
+ "name": "rangeOf",
13763
+ "module": "./utils/filter-marks/filter-marks.js"
13764
+ }
13765
+ },
13766
+ {
13767
+ "kind": "js",
13768
+ "name": "focusTarget",
13769
+ "declaration": {
13770
+ "name": "focusTarget",
13771
+ "module": "./utils/focus-target/focus-target.js"
13772
+ }
13773
+ },
13103
13774
  {
13104
13775
  "kind": "js",
13105
13776
  "name": "deepActiveElement",
@@ -13124,6 +13795,22 @@
13124
13795
  "module": "./utils/focusable-elements/focusable-elements.js"
13125
13796
  }
13126
13797
  },
13798
+ {
13799
+ "kind": "js",
13800
+ "name": "PRESSABLE",
13801
+ "declaration": {
13802
+ "name": "PRESSABLE",
13803
+ "module": "./utils/focusable-elements/focusable-elements.js"
13804
+ }
13805
+ },
13806
+ {
13807
+ "kind": "js",
13808
+ "name": "pressedOwnControl",
13809
+ "declaration": {
13810
+ "name": "pressedOwnControl",
13811
+ "module": "./utils/focusable-elements/focusable-elements.js"
13812
+ }
13813
+ },
13127
13814
  {
13128
13815
  "kind": "js",
13129
13816
  "name": "afterLinkFollowed",
@@ -13164,6 +13851,46 @@
13164
13851
  "module": "./utils/format-numbers/format-numbers.js"
13165
13852
  }
13166
13853
  },
13854
+ {
13855
+ "kind": "js",
13856
+ "name": "GridBounds",
13857
+ "declaration": {
13858
+ "name": "GridBounds",
13859
+ "module": "./utils/grid-move/grid-move.js"
13860
+ }
13861
+ },
13862
+ {
13863
+ "kind": "js",
13864
+ "name": "GridKeys",
13865
+ "declaration": {
13866
+ "name": "GridKeys",
13867
+ "module": "./utils/grid-move/grid-move.js"
13868
+ }
13869
+ },
13870
+ {
13871
+ "kind": "js",
13872
+ "name": "GridPlace",
13873
+ "declaration": {
13874
+ "name": "GridPlace",
13875
+ "module": "./utils/grid-move/grid-move.js"
13876
+ }
13877
+ },
13878
+ {
13879
+ "kind": "js",
13880
+ "name": "gridMove",
13881
+ "declaration": {
13882
+ "name": "gridMove",
13883
+ "module": "./utils/grid-move/grid-move.js"
13884
+ }
13885
+ },
13886
+ {
13887
+ "kind": "js",
13888
+ "name": "pageRows",
13889
+ "declaration": {
13890
+ "name": "pageRows",
13891
+ "module": "./utils/grid-move/grid-move.js"
13892
+ }
13893
+ },
13167
13894
  {
13168
13895
  "kind": "js",
13169
13896
  "name": "headingIn",
@@ -13204,6 +13931,14 @@
13204
13931
  "module": "./utils/host-aria/host-aria.js"
13205
13932
  }
13206
13933
  },
13934
+ {
13935
+ "kind": "js",
13936
+ "name": "hostWords",
13937
+ "declaration": {
13938
+ "name": "hostWords",
13939
+ "module": "./utils/host-words/host-words.js"
13940
+ }
13941
+ },
13207
13942
  {
13208
13943
  "kind": "js",
13209
13944
  "name": "defaultButton",
@@ -13308,6 +14043,30 @@
13308
14043
  "module": "./utils/line-path/line-path.js"
13309
14044
  }
13310
14045
  },
14046
+ {
14047
+ "kind": "js",
14048
+ "name": "EndInSight",
14049
+ "declaration": {
14050
+ "name": "EndInSight",
14051
+ "module": "./utils/load-more/load-more.js"
14052
+ }
14053
+ },
14054
+ {
14055
+ "kind": "js",
14056
+ "name": "endInSight",
14057
+ "declaration": {
14058
+ "name": "endInSight",
14059
+ "module": "./utils/load-more/load-more.js"
14060
+ }
14061
+ },
14062
+ {
14063
+ "kind": "js",
14064
+ "name": "localeOf",
14065
+ "declaration": {
14066
+ "name": "localeOf",
14067
+ "module": "./utils/locale-of/locale-of.js"
14068
+ }
14069
+ },
13311
14070
  {
13312
14071
  "kind": "js",
13313
14072
  "name": "markRegion",
@@ -13350,31 +14109,79 @@
13350
14109
  },
13351
14110
  {
13352
14111
  "kind": "js",
13353
- "name": "formatNumber",
14112
+ "name": "nameText",
13354
14113
  "declaration": {
13355
- "name": "formatNumber",
13356
- "module": "./utils/number-format/number-format.js"
14114
+ "name": "nameText",
14115
+ "module": "./utils/name-text/name-text.js"
13357
14116
  }
13358
14117
  },
13359
14118
  {
13360
14119
  "kind": "js",
13361
- "name": "parseNumber",
14120
+ "name": "nearest",
13362
14121
  "declaration": {
13363
- "name": "parseNumber",
13364
- "module": "./utils/number-format/number-format.js"
14122
+ "name": "nearest",
14123
+ "module": "./utils/nearest/nearest.js"
13365
14124
  }
13366
14125
  },
13367
14126
  {
13368
14127
  "kind": "js",
13369
- "name": "onUnlessFalse",
14128
+ "name": "formatNumber",
13370
14129
  "declaration": {
13371
- "name": "onUnlessFalse",
13372
- "module": "./utils/on-unless-false/on-unless-false.js"
14130
+ "name": "formatNumber",
14131
+ "module": "./utils/number-format/number-format.js"
13373
14132
  }
13374
14133
  },
13375
14134
  {
13376
14135
  "kind": "js",
13377
- "name": "plainClick",
14136
+ "name": "formatPercent",
14137
+ "declaration": {
14138
+ "name": "formatPercent",
14139
+ "module": "./utils/number-format/number-format.js"
14140
+ }
14141
+ },
14142
+ {
14143
+ "kind": "js",
14144
+ "name": "parseNumber",
14145
+ "declaration": {
14146
+ "name": "parseNumber",
14147
+ "module": "./utils/number-format/number-format.js"
14148
+ }
14149
+ },
14150
+ {
14151
+ "kind": "js",
14152
+ "name": "readingText",
14153
+ "declaration": {
14154
+ "name": "readingText",
14155
+ "module": "./utils/number-format/number-format.js"
14156
+ }
14157
+ },
14158
+ {
14159
+ "kind": "js",
14160
+ "name": "onUnlessFalse",
14161
+ "declaration": {
14162
+ "name": "onUnlessFalse",
14163
+ "module": "./utils/on-unless-false/on-unless-false.js"
14164
+ }
14165
+ },
14166
+ {
14167
+ "kind": "js",
14168
+ "name": "applyOwnRule",
14169
+ "declaration": {
14170
+ "name": "applyOwnRule",
14171
+ "module": "./utils/own-rule/own-rule.js"
14172
+ }
14173
+ },
14174
+ {
14175
+ "kind": "js",
14176
+ "name": "OwnRule",
14177
+ "declaration": {
14178
+ "name": "OwnRule",
14179
+ "module": "./utils/own-rule/own-rule.js"
14180
+ }
14181
+ },
14182
+ {
14183
+ "kind": "js",
14184
+ "name": "plainClick",
13378
14185
  "declaration": {
13379
14186
  "name": "plainClick",
13380
14187
  "module": "./utils/plain-click/plain-click.js"
@@ -13388,6 +14195,14 @@
13388
14195
  "module": "./utils/platform/platform.js"
13389
14196
  }
13390
14197
  },
14198
+ {
14199
+ "kind": "js",
14200
+ "name": "onAndroid",
14201
+ "declaration": {
14202
+ "name": "onAndroid",
14203
+ "module": "./utils/platform/platform.js"
14204
+ }
14205
+ },
13391
14206
  {
13392
14207
  "kind": "js",
13393
14208
  "name": "onApple",
@@ -13460,6 +14275,22 @@
13460
14275
  "module": "./utils/read-series/read-series.js"
13461
14276
  }
13462
14277
  },
14278
+ {
14279
+ "kind": "js",
14280
+ "name": "Extremes",
14281
+ "declaration": {
14282
+ "name": "Extremes",
14283
+ "module": "./utils/read-series/read-series.js"
14284
+ }
14285
+ },
14286
+ {
14287
+ "kind": "js",
14288
+ "name": "extremesOf",
14289
+ "declaration": {
14290
+ "name": "extremesOf",
14291
+ "module": "./utils/read-series/read-series.js"
14292
+ }
14293
+ },
13463
14294
  {
13464
14295
  "kind": "js",
13465
14296
  "name": "Row",
@@ -13676,6 +14507,14 @@
13676
14507
  "module": "./utils/report-usage/report-usage.js"
13677
14508
  }
13678
14509
  },
14510
+ {
14511
+ "kind": "js",
14512
+ "name": "ReportValuesOptions",
14513
+ "declaration": {
14514
+ "name": "ReportValuesOptions",
14515
+ "module": "./utils/report-values/report-values.js"
14516
+ }
14517
+ },
13679
14518
  {
13680
14519
  "kind": "js",
13681
14520
  "name": "reportValues",
@@ -13700,6 +14539,14 @@
13700
14539
  "module": "./utils/request-change/request-change.js"
13701
14540
  }
13702
14541
  },
14542
+ {
14543
+ "kind": "js",
14544
+ "name": "requestValue",
14545
+ "declaration": {
14546
+ "name": "requestValue",
14547
+ "module": "./utils/request-change/request-change.js"
14548
+ }
14549
+ },
13703
14550
  {
13704
14551
  "kind": "js",
13705
14552
  "name": "ActivatableItem",
@@ -13892,6 +14739,14 @@
13892
14739
  "module": "./utils/scale/ticks.js"
13893
14740
  }
13894
14741
  },
14742
+ {
14743
+ "kind": "js",
14744
+ "name": "ScrollerOptions",
14745
+ "declaration": {
14746
+ "name": "ScrollerOptions",
14747
+ "module": "./utils/scroll-item-into-view/scroll-item-into-view.js"
14748
+ }
14749
+ },
13895
14750
  {
13896
14751
  "kind": "js",
13897
14752
  "name": "ScrollItemOptions",
@@ -13900,6 +14755,14 @@
13900
14755
  "module": "./utils/scroll-item-into-view/scroll-item-into-view.js"
13901
14756
  }
13902
14757
  },
14758
+ {
14759
+ "kind": "js",
14760
+ "name": "ScrollRoomOptions",
14761
+ "declaration": {
14762
+ "name": "ScrollRoomOptions",
14763
+ "module": "./utils/scroll-item-into-view/scroll-item-into-view.js"
14764
+ }
14765
+ },
13903
14766
  {
13904
14767
  "kind": "js",
13905
14768
  "name": "scrollItemIntoView",
@@ -13908,6 +14771,22 @@
13908
14771
  "module": "./utils/scroll-item-into-view/scroll-item-into-view.js"
13909
14772
  }
13910
14773
  },
14774
+ {
14775
+ "kind": "js",
14776
+ "name": "scrollingAncestor",
14777
+ "declaration": {
14778
+ "name": "scrollingAncestor",
14779
+ "module": "./utils/scroll-item-into-view/scroll-item-into-view.js"
14780
+ }
14781
+ },
14782
+ {
14783
+ "kind": "js",
14784
+ "name": "scrollRoom",
14785
+ "declaration": {
14786
+ "name": "scrollRoom",
14787
+ "module": "./utils/scroll-item-into-view/scroll-item-into-view.js"
14788
+ }
14789
+ },
13911
14790
  {
13912
14791
  "kind": "js",
13913
14792
  "name": "lockScroll",
@@ -13940,6 +14819,22 @@
13940
14819
  "module": "./utils/slot-filled/slot-filled.js"
13941
14820
  }
13942
14821
  },
14822
+ {
14823
+ "kind": "js",
14824
+ "name": "slotNamed",
14825
+ "declaration": {
14826
+ "name": "slotNamed",
14827
+ "module": "./utils/slot-filled/slot-filled.js"
14828
+ }
14829
+ },
14830
+ {
14831
+ "kind": "js",
14832
+ "name": "SlottedGlyph",
14833
+ "declaration": {
14834
+ "name": "SlottedGlyph",
14835
+ "module": "./utils/slotted-glyph/slotted-glyph.js"
14836
+ }
14837
+ },
13943
14838
  {
13944
14839
  "kind": "js",
13945
14840
  "name": "slottedWords",
@@ -14100,6 +14995,22 @@
14100
14995
  "module": "./utils/tone-marks/tone-marks.js"
14101
14996
  }
14102
14997
  },
14998
+ {
14999
+ "kind": "js",
15000
+ "name": "toolbarAround",
15001
+ "declaration": {
15002
+ "name": "toolbarAround",
15003
+ "module": "./utils/toolbar-around/toolbar-around.js"
15004
+ }
15005
+ },
15006
+ {
15007
+ "kind": "js",
15008
+ "name": "toolbarAxis",
15009
+ "declaration": {
15010
+ "name": "toolbarAxis",
15011
+ "module": "./utils/toolbar-around/toolbar-around.js"
15012
+ }
15013
+ },
14103
15014
  {
14104
15015
  "kind": "js",
14105
15016
  "name": "TreeArrow",
@@ -14148,6 +15059,14 @@
14148
15059
  "module": "./utils/typeahead/typeahead.js"
14149
15060
  }
14150
15061
  },
15062
+ {
15063
+ "kind": "js",
15064
+ "name": "typeaheadByWords",
15065
+ "declaration": {
15066
+ "name": "typeaheadByWords",
15067
+ "module": "./utils/typeahead/typeahead.js"
15068
+ }
15069
+ },
14151
15070
  {
14152
15071
  "kind": "js",
14153
15072
  "name": "typesCharacter",
@@ -14260,6 +15179,22 @@
14260
15179
  "module": "./utils/value-as/value-as.js"
14261
15180
  }
14262
15181
  },
15182
+ {
15183
+ "kind": "js",
15184
+ "name": "PickerVerdict",
15185
+ "declaration": {
15186
+ "name": "PickerVerdict",
15187
+ "module": "./utils/verdict-flags/verdict-flags.js"
15188
+ }
15189
+ },
15190
+ {
15191
+ "kind": "js",
15192
+ "name": "verdictFlags",
15193
+ "declaration": {
15194
+ "name": "verdictFlags",
15195
+ "module": "./utils/verdict-flags/verdict-flags.js"
15196
+ }
15197
+ },
14263
15198
  {
14264
15199
  "kind": "js",
14265
15200
  "name": "watchTheme",
@@ -14292,6 +15227,14 @@
14292
15227
  "module": "./utils/write-time/write-time.js"
14293
15228
  }
14294
15229
  },
15230
+ {
15231
+ "kind": "js",
15232
+ "name": "anchorAt",
15233
+ "declaration": {
15234
+ "name": "anchorAt",
15235
+ "module": "./utils/written-list/written-list.js"
15236
+ }
15237
+ },
14295
15238
  {
14296
15239
  "kind": "js",
14297
15240
  "name": "commaList",
@@ -14300,6 +15243,22 @@
14300
15243
  "module": "./utils/written-list/written-list.js"
14301
15244
  }
14302
15245
  },
15246
+ {
15247
+ "kind": "js",
15248
+ "name": "everyState",
15249
+ "declaration": {
15250
+ "name": "everyState",
15251
+ "module": "./utils/written-list/written-list.js"
15252
+ }
15253
+ },
15254
+ {
15255
+ "kind": "js",
15256
+ "name": "inRowOrder",
15257
+ "declaration": {
15258
+ "name": "inRowOrder",
15259
+ "module": "./utils/written-list/written-list.js"
15260
+ }
15261
+ },
14303
15262
  {
14304
15263
  "kind": "js",
14305
15264
  "name": "pressedValue",
@@ -14662,6 +15621,24 @@
14662
15621
  ],
14663
15622
  "description": "Whether the series read from the cell at this place in a row is drawn,\nby its column's heading. The keys and the readout pass over one a legend\nhid."
14664
15623
  },
15624
+ {
15625
+ "kind": "method",
15626
+ "name": "columnName",
15627
+ "return": {
15628
+ "type": {
15629
+ "text": "string"
15630
+ }
15631
+ },
15632
+ "parameters": [
15633
+ {
15634
+ "name": "cell",
15635
+ "type": {
15636
+ "text": "number"
15637
+ }
15638
+ }
15639
+ ],
15640
+ "description": "The heading of the column at this place in a row, read from the first row\nthat has a cell there, or `''` where none has."
15641
+ },
14665
15642
  {
14666
15643
  "kind": "field",
14667
15644
  "name": "readings",
@@ -14682,6 +15659,15 @@
14682
15659
  ],
14683
15660
  "helix": {}
14684
15661
  },
15662
+ {
15663
+ "kind": "variable",
15664
+ "name": "POSITION_LABEL",
15665
+ "type": {
15666
+ "text": "string"
15667
+ },
15668
+ "default": "'{position} of {count}'",
15669
+ "description": "The words a chart says a reading's place in by default, such as \"2 of 12\":\nevery chart's `position-label`, and Sparkline's, which is no chart source.\nThe property keeps the words written out, which is what its reference page\nshows as the default; a spec holds the two together."
15670
+ },
14685
15671
  {
14686
15672
  "kind": "mixin",
14687
15673
  "description": "The half of a chart that is about finding its numbers rather than drawing.\n\n**A mixin rather than a controller**, by the rule the tier notes give: it\nintroduces `for` and `label`, which a consumer writes. `SourceController` is\nthe other half and stays a controller, because resolving an id and watching\nfor changes is behavior nobody calls.\n\n**`Legend` deliberately does not take this.** It reads a table and has no\ndrawing to title, so `label` would be API it never uses, and a mixin applied\nfor four fifths of a fit is how a shared thing starts drifting.",
@@ -14872,6 +15858,24 @@
14872
15858
  ],
14873
15859
  "description": "Whether the series read from the cell at this place in a row is drawn,\nby its column's heading. The keys and the readout pass over one a\nlegend hid.\n\nA column's heading is the cell's name in every row, so the first row\nanswers for the column."
14874
15860
  },
15861
+ {
15862
+ "kind": "method",
15863
+ "name": "columnName",
15864
+ "return": {
15865
+ "type": {
15866
+ "text": "string"
15867
+ }
15868
+ },
15869
+ "parameters": [
15870
+ {
15871
+ "name": "cell",
15872
+ "type": {
15873
+ "text": "number"
15874
+ }
15875
+ }
15876
+ ],
15877
+ "description": "The heading of the column at this place in a row: a cell's name is its\ncolumn's heading, read from the first row that has a cell there, so a\nshort first row does not lose the heading. `''` where no row has one."
15878
+ },
14875
15879
  {
14876
15880
  "kind": "field",
14877
15881
  "name": "readings",
@@ -14979,6 +15983,14 @@
14979
15983
  "module": "src/mixins/mixin-chart-source/mixin-chart-source.ts"
14980
15984
  }
14981
15985
  },
15986
+ {
15987
+ "kind": "js",
15988
+ "name": "POSITION_LABEL",
15989
+ "declaration": {
15990
+ "name": "POSITION_LABEL",
15991
+ "module": "src/mixins/mixin-chart-source/mixin-chart-source.ts"
15992
+ }
15993
+ },
14982
15994
  {
14983
15995
  "kind": "js",
14984
15996
  "name": "MixinChartSource",
@@ -16405,7 +17417,27 @@
16405
17417
  }
16406
17418
  }
16407
17419
  ],
16408
- "description": "Moves focus to a neighbor's dismiss control if removing this element\ndropped it, or, with no neighbor, to the tab stop beside where it was."
17420
+ "description": "Moves focus to a neighbor's dismiss control if removing this element\ndropped it, or, with no neighbor, to the tab stop beside where it was.\n\n**The tab stop beside waits a frame.** A container that owns its\nmembers' focus settles it in a microtask after the event: a Tag Group\nwhose last tag goes focuses its `empty` part. Handed on at once, focus\nleft the group before the group could look, and its reader never heard\nthat the set was empty. A neighbor of the same kind is still taken at\nonce, because no container puts focus anywhere better."
17421
+ },
17422
+ {
17423
+ "kind": "field",
17424
+ "name": "handOff",
17425
+ "type": {
17426
+ "text": "((late: boolean) => void) | undefined"
17427
+ },
17428
+ "privacy": "private",
17429
+ "default": "undefined",
17430
+ "description": "The hand-off waiting for this element to leave, if one is."
17431
+ },
17432
+ {
17433
+ "kind": "field",
17434
+ "name": "forgetFocus",
17435
+ "type": {
17436
+ "text": "(() => void) | undefined"
17437
+ },
17438
+ "privacy": "private",
17439
+ "default": "undefined",
17440
+ "description": "Stops waiting for the hand-off, once focus has moved anywhere."
16409
17441
  }
16410
17442
  ],
16411
17443
  "attributes": [
@@ -17267,63 +18299,209 @@
17267
18299
  },
17268
18300
  {
17269
18301
  "kind": "javascript-module",
17270
- "path": "src/mixins/mixin-picker-field/mixin-picker-field.ts",
18302
+ "path": "src/mixins/mixin-picker-feedback/mixin-picker-feedback.ts",
17271
18303
  "declarations": [
17272
18304
  {
17273
18305
  "kind": "class",
17274
- "description": "The public surface `MixinPickerField` adds.\n\nDeclared separately because TypeScript cannot emit declarations for an\nanonymous class that has private members (TS4094). Casting the mixin's return\nto this interface keeps the internals private and the build working.",
17275
- "name": "MixinPickerFieldInterface",
18306
+ "description": "",
18307
+ "name": "MixinPickerFeedbackInterface",
17276
18308
  "members": [
17277
18309
  {
17278
18310
  "kind": "field",
17279
- "name": "badInputMessage",
18311
+ "name": "feedback",
17280
18312
  "type": {
17281
- "text": "string | undefined"
18313
+ "text": "string"
17282
18314
  },
17283
- "description": "The message shown when the field holds text the picker cannot read."
18315
+ "description": "A message under the picker, such as what is wrong with the answer.\n\nWhile set, the picker is invalid and does not submit, as a field's\n`feedback` is, it is marked invalid to a reader and to CSS, and the\ncontrols a reader answers with are described by it."
17284
18316
  },
17285
18317
  {
17286
18318
  "kind": "field",
17287
- "name": "anchor",
18319
+ "name": "invalid",
17288
18320
  "type": {
17289
- "text": "HTMLElement | null"
18321
+ "text": "boolean"
17290
18322
  },
17291
- "privacy": "protected",
17292
- "description": "What the label points at and focus lands on.\n\nThe text control, unless a family says otherwise: Color Input in `swatch`\nhas no text control, and its trigger is the only thing in the field a label\ncan name.",
17293
- "readonly": true
18323
+ "description": "Whether the answer fails validation, marked on the controls a reader\nanswers with and as `:state(invalid)`.\n\nA flag a field that wraps the picker sets, since that field owns the\nlabel, the hint and the message; on its own, `feedback` both marks the\npicker and says why."
17294
18324
  },
17295
18325
  {
17296
18326
  "kind": "field",
17297
- "name": "answers",
18327
+ "name": "marked",
17298
18328
  "type": {
17299
- "text": "readonly string[] | undefined"
18329
+ "text": "boolean"
17300
18330
  },
17301
18331
  "privacy": "protected",
17302
- "description": "Each answer the field holds, where it holds several, or `undefined` where\nits value is one answer. Several are sent one entry each; see\n`reportValues`.",
18332
+ "description": "Whether a reader is told the answer is wrong: `invalid`, or `feedback`.",
17303
18333
  "readonly": true
17304
18334
  },
17305
18335
  {
17306
- "kind": "field",
17307
- "name": "control",
17308
- "type": {
17309
- "text": "HTMLInputElement | null"
17310
- },
18336
+ "kind": "method",
18337
+ "name": "renderPickerFeedback",
17311
18338
  "privacy": "protected",
17312
- "description": "The text input, or `null` where there is no DOM to hold one.",
17313
- "readonly": true
17314
- },
18339
+ "return": {
18340
+ "type": {
18341
+ "text": "TemplateResult | typeof nothing"
18342
+ }
18343
+ },
18344
+ "description": "The `feedback` line, or nothing while there is none."
18345
+ }
18346
+ ],
18347
+ "helix": {}
18348
+ },
18349
+ {
18350
+ "kind": "mixin",
18351
+ "description": "`feedback` and `invalid` for a picker that stands on its own as a form\ncontrol: Color Picker, Date Picker and Time Picker.\n\n**One mark for both.** `invalid` is the flag a wrapping field sets, and\n`feedback` is the message a picker on its own shows; either one marks the\npicker invalid on its internals (`aria-invalid` on the host) and as\n`:state(invalid)`, and each picker marks the controls it draws by `marked`.\nMeasured on Color Picker before this: `feedback` set `customError` in its\nvalidity while every control reported `invalid: false`.\n\nThe message is the validity's too, as a field's `feedback` is, through\n`HelixFormElement`'s `validityFeedback`, so a form with one does not submit.",
18352
+ "name": "MixinPickerFeedback",
18353
+ "members": [
17315
18354
  {
17316
18355
  "kind": "field",
17317
- "name": "display",
18356
+ "name": "feedback",
17318
18357
  "type": {
17319
18358
  "text": "string"
17320
18359
  },
17321
- "privacy": "protected",
17322
- "description": "What the field shows, which is the value unless a family renders it.\n\nDate Input and Time Input show a written date or time while nobody is in\nthe field and the value itself while somebody is; Color Input shows the\nvalue either way. What `restore` puts back is whichever the family says.",
17323
- "readonly": true
18360
+ "default": "''",
18361
+ "description": "A message under the picker, such as what is wrong with the answer.\n\nWhile set, the picker is invalid and does not submit, as a field's\n`feedback` is, it is marked invalid to a reader and to CSS, and the\ncontrols a reader answers with are described by it.",
18362
+ "attribute": "feedback"
17324
18363
  },
17325
18364
  {
17326
- "kind": "method",
18365
+ "kind": "field",
18366
+ "name": "invalid",
18367
+ "type": {
18368
+ "text": "boolean"
18369
+ },
18370
+ "default": "false",
18371
+ "description": "Whether the answer fails validation, marked on the controls a reader\nanswers with and as `:state(invalid)`.\n\nA flag a field that wraps the picker sets, since that field owns the\nlabel, the hint and the message; on its own, `feedback` both marks the\npicker and says why.",
18372
+ "attribute": "invalid",
18373
+ "reflects": true
18374
+ },
18375
+ {
18376
+ "kind": "field",
18377
+ "name": "marked",
18378
+ "type": {
18379
+ "text": "boolean"
18380
+ },
18381
+ "privacy": "protected",
18382
+ "description": "Whether a reader is told the answer is wrong: `invalid`, or `feedback`.",
18383
+ "readonly": true
18384
+ },
18385
+ {
18386
+ "kind": "method",
18387
+ "name": "renderPickerFeedback",
18388
+ "privacy": "protected",
18389
+ "return": {
18390
+ "type": {
18391
+ "text": "TemplateResult | typeof nothing"
18392
+ }
18393
+ },
18394
+ "description": "The `feedback` line, or nothing while there is none."
18395
+ }
18396
+ ],
18397
+ "attributes": [
18398
+ {
18399
+ "name": "feedback",
18400
+ "type": {
18401
+ "text": "string"
18402
+ },
18403
+ "default": "''",
18404
+ "description": "A message under the picker, such as what is wrong with the answer.\n\nWhile set, the picker is invalid and does not submit, as a field's\n`feedback` is, it is marked invalid to a reader and to CSS, and the\ncontrols a reader answers with are described by it.",
18405
+ "fieldName": "feedback"
18406
+ },
18407
+ {
18408
+ "name": "invalid",
18409
+ "type": {
18410
+ "text": "boolean"
18411
+ },
18412
+ "default": "false",
18413
+ "description": "Whether the answer fails validation, marked on the controls a reader\nanswers with and as `:state(invalid)`.\n\nA flag a field that wraps the picker sets, since that field owns the\nlabel, the hint and the message; on its own, `feedback` both marks the\npicker and says why.",
18414
+ "fieldName": "invalid"
18415
+ }
18416
+ ],
18417
+ "parameters": [
18418
+ {
18419
+ "name": "Base",
18420
+ "type": {
18421
+ "text": "T"
18422
+ }
18423
+ }
18424
+ ]
18425
+ }
18426
+ ],
18427
+ "exports": [
18428
+ {
18429
+ "kind": "js",
18430
+ "name": "MixinPickerFeedbackInterface",
18431
+ "declaration": {
18432
+ "name": "MixinPickerFeedbackInterface",
18433
+ "module": "src/mixins/mixin-picker-feedback/mixin-picker-feedback.ts"
18434
+ }
18435
+ },
18436
+ {
18437
+ "kind": "js",
18438
+ "name": "MixinPickerFeedback",
18439
+ "declaration": {
18440
+ "name": "MixinPickerFeedback",
18441
+ "module": "src/mixins/mixin-picker-feedback/mixin-picker-feedback.ts"
18442
+ }
18443
+ }
18444
+ ]
18445
+ },
18446
+ {
18447
+ "kind": "javascript-module",
18448
+ "path": "src/mixins/mixin-picker-field/mixin-picker-field.ts",
18449
+ "declarations": [
18450
+ {
18451
+ "kind": "class",
18452
+ "description": "The public surface `MixinPickerField` adds.\n\nDeclared separately because TypeScript cannot emit declarations for an\nanonymous class that has private members (TS4094). Casting the mixin's return\nto this interface keeps the internals private and the build working.",
18453
+ "name": "MixinPickerFieldInterface",
18454
+ "members": [
18455
+ {
18456
+ "kind": "field",
18457
+ "name": "badInputMessage",
18458
+ "type": {
18459
+ "text": "string | undefined"
18460
+ },
18461
+ "description": "The message shown when the field holds text the picker cannot read."
18462
+ },
18463
+ {
18464
+ "kind": "field",
18465
+ "name": "anchor",
18466
+ "type": {
18467
+ "text": "HTMLElement | null"
18468
+ },
18469
+ "privacy": "protected",
18470
+ "description": "What the label points at and focus lands on.\n\nThe text control, unless a family says otherwise: Color Input in `swatch`\nhas no text control, and its trigger is the only thing in the field a label\ncan name.",
18471
+ "readonly": true
18472
+ },
18473
+ {
18474
+ "kind": "field",
18475
+ "name": "answers",
18476
+ "type": {
18477
+ "text": "readonly string[] | undefined"
18478
+ },
18479
+ "privacy": "protected",
18480
+ "description": "Each answer the field holds, where it holds several, or `undefined` where\nits value is one answer. Several are sent one entry each; see\n`reportValues`.",
18481
+ "readonly": true
18482
+ },
18483
+ {
18484
+ "kind": "field",
18485
+ "name": "control",
18486
+ "type": {
18487
+ "text": "HTMLInputElement | null"
18488
+ },
18489
+ "privacy": "protected",
18490
+ "description": "The text input, or `null` where there is no DOM to hold one.",
18491
+ "readonly": true
18492
+ },
18493
+ {
18494
+ "kind": "field",
18495
+ "name": "display",
18496
+ "type": {
18497
+ "text": "string"
18498
+ },
18499
+ "privacy": "protected",
18500
+ "description": "What the field shows, which is the value unless a family renders it.\n\nDate Input and Time Input show a written date or time while nobody is in\nthe field and the value itself while somebody is; Color Input shows the\nvalue either way. What `restore` puts back is whichever the family says.",
18501
+ "readonly": true
18502
+ },
18503
+ {
18504
+ "kind": "method",
17327
18505
  "name": "focus",
17328
18506
  "return": {
17329
18507
  "type": {
@@ -17485,24 +18663,6 @@
17485
18663
  ],
17486
18664
  "helix": {}
17487
18665
  },
17488
- {
17489
- "kind": "function",
17490
- "name": "verdictFlags",
17491
- "return": {
17492
- "type": {
17493
- "text": "[flags: ValidityStateFlags, message: string] | null"
17494
- }
17495
- },
17496
- "parameters": [
17497
- {
17498
- "name": "verdict",
17499
- "type": {
17500
- "text": "PickerVerdict"
17501
- }
17502
- }
17503
- ],
17504
- "description": "A verdict as the flags and the message `setValidity` takes, or `null` where\nthere is nothing wrong."
17505
- },
17506
18666
  {
17507
18667
  "kind": "mixin",
17508
18668
  "description": "Grafts a floating picker onto a text field, and the protocol between them.\n\n**Three families are this shape and were three copies of it.** Date Input,\nTime Input and Color Input each render a text control, a trigger and a\n`popover=\"manual\"` surface holding a picker that already exists on its own,\nand each owed the same wiring: the panel that floats the surface against the\nfield, the Escape that shuts it and hands the caret back, the restore that\nputs the control back where a refusal left the value, and the sync that\nreports the value and a verdict the platform cannot reach. Measured on the\ndiff that made the lift, 14 Sep 2026, comments counted: 223 lines left Date\nInput and 32 came back, 185 left Time Input and 32 came back, 87 left\nColor Input and 11 came back.\n\n**What it does not own is the picker, the typing or the value's shape.**\nWhich element floats in the surface, what a keystroke means, what the field\nshows when idle and what is wrong with a value are each the family's, which\nis why `display` and `validate` are seams here and the template stays where\nit was. A family renders `field`, `control`, `trigger` and `surface`; this\nreads them.\n\n**The parts this reads are the host's, so the name is a parameter.** A\nliteral `[part=\"control\"]` here would be a lookup nothing in this file\nrenders, which is the fault `helix component`'s `selectors` exists to catch\nand would rightly report. `MixinField.reportRequired` takes its anchor the\nsame way, and for the same reason: a mixin reads a part out of whatever host\napplies it.\n\n**Opening on a press into the text, `readOnly` and the idle rendering are\nnot here.** They are `MixinPickerEditing`'s, because Color Input takes\nneither of the first and last: a hex is pasted and read at a glance, so its\nfield neither renders nor opens when pressed. Color Input declares its own\n`readOnly`.\n\n**Three things the two typed families share stay with them.** `renderTrigger`\ndiffers only by its icon and would still be the wrong thing to lift: a part a\nmixin renders belongs to every host that applies it, which is how\n`helix component`'s `parts` reads a chain, so `trigger-icon` would be\ncredited to Color Input, whose trigger is a swatch and documents no such\npart. `renderTag` names its part after the family, `date` or `time`, and\nwrites the label on the remove control differently in each. `valueAsDate`\nand `valueAsNumber` are public, convert a different way, and carry a\ndifferent note onto each family's page, which a mixin could only carry as\none.\n\n**Four more families look like this and are not.** Select has no text to\nhand the caret to: its panel hangs off the trigger and dismissal refocuses\nthat. Combobox has the text and a different agreement with it: a press\nanywhere in the field is inside, the gap is four, Escape closes without the\n`returning` flag because nothing there opens on arrival, and the control is\nreconciled against a completion rather than restored to a value. Input and\nTextarea open nothing, and their `readOnly` is the native attribute rather\nthan a gate on `requestValue`, so a programmatic change still lands. What\nthose two share with this is `focus()` and the platform's verdict copied in\n`sync`, which is not a protocol.",
@@ -17752,17 +18912,17 @@
17752
18912
  "exports": [
17753
18913
  {
17754
18914
  "kind": "js",
17755
- "name": "MixinPickerFieldInterface",
18915
+ "name": "PickerVerdict",
17756
18916
  "declaration": {
17757
- "name": "MixinPickerFieldInterface",
17758
- "module": "src/mixins/mixin-picker-field/mixin-picker-field.ts"
18917
+ "name": "PickerVerdict",
18918
+ "module": "../../utils/verdict-flags/verdict-flags.js"
17759
18919
  }
17760
18920
  },
17761
18921
  {
17762
18922
  "kind": "js",
17763
- "name": "verdictFlags",
18923
+ "name": "MixinPickerFieldInterface",
17764
18924
  "declaration": {
17765
- "name": "verdictFlags",
18925
+ "name": "MixinPickerFieldInterface",
17766
18926
  "module": "src/mixins/mixin-picker-field/mixin-picker-field.ts"
17767
18927
  }
17768
18928
  },
@@ -17930,6 +19090,13 @@
17930
19090
  "default": "false",
17931
19091
  "description": "Whether the value is moving because a segment moved it."
17932
19092
  },
19093
+ {
19094
+ "kind": "field",
19095
+ "name": "touchApple",
19096
+ "privacy": "private",
19097
+ "readonly": true,
19098
+ "description": "Whether this is an iPhone or an iPad, read once on the client, where a\nsegment is a `textbox` and not a `spinbutton`: VoiceOver on iOS cannot\nfocus a spin button, which React Aria's date segments and Number Input\nanswer the same way. A server has no navigator and draws spin buttons."
19099
+ },
17933
19100
  {
17934
19101
  "kind": "field",
17935
19102
  "name": "entered",
@@ -19855,7 +21022,7 @@
19855
21022
  "text": "TemplateResult | typeof nothing"
19856
21023
  }
19857
21024
  },
19858
- "description": "The controls, or nothing where a consumer kept none of them.\n\n**Written out rather than generated**, because a part name behind an\ninterpolation is a part the manifest cannot see: a loop would publish\n`pan-` and a consumer's `::part(pan-up)` would match nothing."
21025
+ "description": "The controls, or nothing where a consumer kept none of them.\n\n**Written out rather than generated**, because a part name behind an\ninterpolation is a part the manifest cannot see: a loop would publish\n`pan-` and a consumer's `::part(pan-up)` would match nothing.\n\n**Each glyph is the fallback of a slot named for its button**, the names\n`Map` gave its own (`pan-up-icon`, `zoom-in-icon`, `fullscreen-icon`), so\na page with an icon set of its own swaps a glyph without drawing the\ncontrols again. The fallbacks are words with no element in them, and\n`panGlyph` is where a tier above draws other arrows."
19859
21026
  }
19860
21027
  ],
19861
21028
  "attributes": [
@@ -20134,6 +21301,53 @@
20134
21301
  }
20135
21302
  ]
20136
21303
  },
21304
+ {
21305
+ "kind": "javascript-module",
21306
+ "path": "src/utils/assign-slots/assign-slots.ts",
21307
+ "declarations": [
21308
+ {
21309
+ "kind": "function",
21310
+ "name": "assignSlots",
21311
+ "return": {
21312
+ "type": {
21313
+ "text": "void"
21314
+ }
21315
+ },
21316
+ "parameters": [
21317
+ {
21318
+ "name": "root",
21319
+ "type": {
21320
+ "text": "ParentNode | null | undefined"
21321
+ }
21322
+ },
21323
+ {
21324
+ "name": "children",
21325
+ "type": {
21326
+ "text": "Iterable<Element>"
21327
+ }
21328
+ },
21329
+ {
21330
+ "name": "place",
21331
+ "default": "() => undefined",
21332
+ "type": {
21333
+ "text": "(child: Element) => string | undefined"
21334
+ }
21335
+ }
21336
+ ],
21337
+ "description": "Sends each child to the slot it names, and every other child to the default\nslot, in a shadow root that assigns its slots by hand.\n\n**A root that assigns by hand routes nothing by itself**, its named slots\nincluded, so a header, a footer or an empty state slotted by name reaches\nnothing unless it is assigned here too. `place` says where a child goes when\nthe host decides it, a row to its list or a card to the slot the layout drew\nfor it, and a child it gives no slot to goes where its `slot` attribute says,\nas it would under the default assignment.\n\n**A slot already holding exactly what it would be given is left alone**, so\ncalling this after every update fires no `slotchange` that nothing changed.\n\nPair it with `ChildrenController`, which calls back when a child arrives\nafter the first render, the case no `slotchange` reports."
21338
+ }
21339
+ ],
21340
+ "exports": [
21341
+ {
21342
+ "kind": "js",
21343
+ "name": "assignSlots",
21344
+ "declaration": {
21345
+ "name": "assignSlots",
21346
+ "module": "src/utils/assign-slots/assign-slots.ts"
21347
+ }
21348
+ }
21349
+ ]
21350
+ },
20137
21351
  {
20138
21352
  "kind": "javascript-module",
20139
21353
  "path": "src/utils/audit-name/audit-name-off.ts",
@@ -20185,7 +21399,7 @@
20185
21399
  }
20186
21400
  }
20187
21401
  ],
20188
- "description": "Whether an element has an accessible name, by the routes a page names a\ncontrol: its own `aria-label`, `aria-labelledby` or `title`, a `<label>`, a\n`placeholder`, and its content where its role is named by its content.\n\n**An estimate, cheap on purpose.** It answers whether any route holds words,\nwhich is what the warning is about, and leaves the order the routes win in\nto the browser.\n\n**What the control shows as its value is no name**, so the words in\n`shown` count for no route. A Select with no label names its trigger by the\npart that shows the choice, and while nothing is chosen that part shows the\nplaceholder, \"Choose\", which says nothing about what is being chosen."
21402
+ "description": "Whether an element has an accessible name, by the routes a page names a\ncontrol: its own `aria-label`, `aria-labelledby` or `title`, a `<label>`,\nand its content where its role is named by its content.\n\n**A `placeholder` counts for no route.** A browser names a control by it\nwhere nothing else does, and it is gone from the screen once a person\ntypes, so a field named by it alone loses its label as it is filled.\nReact Aria's fields warn on the same terms.\n\n**An estimate, cheap on purpose.** It answers whether any route holds words,\nwhich is what the warning is about, and leaves the order the routes win in\nto the browser.\n\n**What the control shows as its value is no name**, so the words in\n`shown` count for no route. A Select with no label names its trigger by the\npart that shows the choice, and while nothing is chosen that part shows the\nplaceholder, \"Choose\", which says nothing about what is being chosen."
20189
21403
  },
20190
21404
  {
20191
21405
  "kind": "function",
@@ -20253,62 +21467,160 @@
20253
21467
  },
20254
21468
  {
20255
21469
  "kind": "javascript-module",
20256
- "path": "src/utils/calendar/calendar.ts",
21470
+ "path": "src/utils/audit-source/audit-source-off.ts",
20257
21471
  "declarations": [
20258
21472
  {
20259
21473
  "kind": "function",
20260
- "name": "localToday",
20261
- "return": {
20262
- "type": {
20263
- "text": "string"
20264
- }
20265
- },
20266
- "parameters": [
20267
- {
20268
- "name": "now",
20269
- "default": "new Date()"
20270
- }
20271
- ],
20272
- "description": "Today, in the reader's own timezone.\n\n**`toISOString` converts to UTC first, which makes \"today\" a different day\nfor most of the planet.** Anywhere west of UTC, from late afternoon onward,\n`fromDate(new Date())` names tomorrow. The parts are read locally instead and\npasted together, which is the only way to get a calendar date out of a `Date`\nwithout a conversion happening on the way."
20273
- },
21474
+ "name": "auditSource",
21475
+ "description": "The missing-table warning in a production build: nothing.\n\n`#audit-source` resolves here unless the bundler or runtime asks for the\n`development` condition, so a production build carries none of the audit's\ncode. The signature is the audit's, so a call site reads the same in both\nbuilds. See `audit-source.ts`.",
21476
+ "type": {
21477
+ "text": "typeof audit"
21478
+ }
21479
+ }
21480
+ ],
21481
+ "exports": [
21482
+ {
21483
+ "kind": "js",
21484
+ "name": "auditSource",
21485
+ "declaration": {
21486
+ "name": "auditSource",
21487
+ "module": "src/utils/audit-source/audit-source-off.ts"
21488
+ }
21489
+ }
21490
+ ]
21491
+ },
21492
+ {
21493
+ "kind": "javascript-module",
21494
+ "path": "src/utils/audit-source/audit-source.ts",
21495
+ "declarations": [
20274
21496
  {
20275
21497
  "kind": "function",
20276
- "name": "weekStartOf",
21498
+ "name": "auditSource",
20277
21499
  "return": {
20278
21500
  "type": {
20279
- "text": "number"
21501
+ "text": "void"
20280
21502
  }
20281
21503
  },
20282
21504
  "parameters": [
20283
21505
  {
20284
- "name": "locale",
21506
+ "name": "host",
20285
21507
  "type": {
20286
- "text": "string"
21508
+ "text": "HTMLElement & { for: string }"
21509
+ }
21510
+ },
21511
+ {
21512
+ "name": "table",
21513
+ "type": {
21514
+ "text": "() => Element | null"
20287
21515
  }
20288
21516
  }
20289
21517
  ],
20290
- "description": "The first day of the week where a language is spoken, `0` for Sunday.\n\nFrom `Intl.Locale`'s week information, which an engine offers as\n`getWeekInfo()` or, in older versions, as `weekInfo`. Sunday where it offers\nneither, as Firefox does not, or where the tag cannot be read."
20291
- },
21518
+ "description": "Reports a chart, a legend or a sparkline whose `for` names no table once the\npage has loaded, the one mistake that leaves it drawing nothing and saying\nnothing.\n\n**Read a task after `load`**, so a table later in the markup, or one a\nscript writes as the page starts, counts. A table a framework renders later\nthan that is reported, and the chart still draws it when it arrives.\n\n**In a development build only**, as `missing-name` is: every chart would pay\nfor a sentence meant for the person writing the page. Core imports it as\n`#audit-source`, which `package.json` resolves here under the `development`\ncondition and to `audit-source-off.ts`, which does nothing, everywhere else.\n\n`table` answers what `for` resolves to now: the table, or null."
21519
+ }
21520
+ ],
21521
+ "exports": [
21522
+ {
21523
+ "kind": "js",
21524
+ "name": "auditSource",
21525
+ "declaration": {
21526
+ "name": "auditSource",
21527
+ "module": "src/utils/audit-source/audit-source.ts"
21528
+ }
21529
+ }
21530
+ ]
21531
+ },
21532
+ {
21533
+ "kind": "javascript-module",
21534
+ "path": "src/utils/autofill-select/autofill-select.ts",
21535
+ "declarations": [
20292
21536
  {
20293
21537
  "kind": "function",
20294
- "name": "monthOf",
21538
+ "name": "drawAutofill",
20295
21539
  "return": {
20296
21540
  "type": {
20297
- "text": "string"
21541
+ "text": "TemplateResult | typeof nothing"
20298
21542
  }
20299
21543
  },
20300
21544
  "parameters": [
20301
21545
  {
20302
- "name": "date",
21546
+ "name": "{\n autocomplete,\n disabled,\n multiple,\n onFill,\n options,\n value,\n}",
20303
21547
  "type": {
20304
- "text": "Date"
21548
+ "text": "DrawAutofillOptions"
20305
21549
  }
20306
21550
  }
20307
21551
  ],
20308
- "description": "A month as `YYYY-MM`."
20309
- },
20310
- {
20311
- "kind": "function",
21552
+ "description": "A native `<select>` that a browser's autofill can fill, holding the same\noptions as the custom select beside it. Select, Combobox and Listbox draw it\nunder `autocomplete`.\n\n**A browser fills native fields only.** It reads `autocomplete`, picks an\noption by its value or its words, and sends `change`, which `onFill` turns\ninto the custom select's value. Chromium fills a select inside a shadow root\nwhen its host is inside the form being filled.\n\n**The select's own `input` stops here.** It is composed, so it crossed the\nshadow root and reached the host before `change` did, with the host's value\nstill the old one: measured in Chromium, a fill sent a page's `input`\nlistener two events, the first carrying the old value. The host sends its\nown `input` and `change` once the value is taken.\n\n**Hidden from everyone but the browser**: clipped to a pixel, `aria-hidden`,\nand out of the tab order, with no `name`, so the form still receives the\nvalue once, from the custom select itself."
21553
+ }
21554
+ ],
21555
+ "exports": [
21556
+ {
21557
+ "kind": "js",
21558
+ "name": "drawAutofill",
21559
+ "declaration": {
21560
+ "name": "drawAutofill",
21561
+ "module": "src/utils/autofill-select/autofill-select.ts"
21562
+ }
21563
+ }
21564
+ ]
21565
+ },
21566
+ {
21567
+ "kind": "javascript-module",
21568
+ "path": "src/utils/calendar/calendar.ts",
21569
+ "declarations": [
21570
+ {
21571
+ "kind": "function",
21572
+ "name": "localToday",
21573
+ "return": {
21574
+ "type": {
21575
+ "text": "string"
21576
+ }
21577
+ },
21578
+ "parameters": [
21579
+ {
21580
+ "name": "now",
21581
+ "default": "new Date()"
21582
+ }
21583
+ ],
21584
+ "description": "Today, in the reader's own timezone.\n\n**`toISOString` converts to UTC first, which makes \"today\" a different day\nfor most of the planet.** Anywhere west of UTC, from late afternoon onward,\n`fromDate(new Date())` names tomorrow. The parts are read locally instead and\npasted together, which is the only way to get a calendar date out of a `Date`\nwithout a conversion happening on the way."
21585
+ },
21586
+ {
21587
+ "kind": "function",
21588
+ "name": "weekStartOf",
21589
+ "return": {
21590
+ "type": {
21591
+ "text": "number"
21592
+ }
21593
+ },
21594
+ "parameters": [
21595
+ {
21596
+ "name": "locale",
21597
+ "type": {
21598
+ "text": "string"
21599
+ }
21600
+ }
21601
+ ],
21602
+ "description": "The first day of the week where a language is spoken, `0` for Sunday.\n\nFrom `Intl.Locale`'s week information, which an engine offers as\n`getWeekInfo()` or, in older versions, as `weekInfo`. Sunday where it offers\nneither, as Firefox does not, or where the tag cannot be read."
21603
+ },
21604
+ {
21605
+ "kind": "function",
21606
+ "name": "monthOf",
21607
+ "return": {
21608
+ "type": {
21609
+ "text": "string"
21610
+ }
21611
+ },
21612
+ "parameters": [
21613
+ {
21614
+ "name": "date",
21615
+ "type": {
21616
+ "text": "Date"
21617
+ }
21618
+ }
21619
+ ],
21620
+ "description": "A month as `YYYY-MM`."
21621
+ },
21622
+ {
21623
+ "kind": "function",
20312
21624
  "name": "addDays",
20313
21625
  "return": {
20314
21626
  "type": {
@@ -20696,6 +22008,52 @@
20696
22008
  }
20697
22009
  ]
20698
22010
  },
22011
+ {
22012
+ "kind": "javascript-module",
22013
+ "path": "src/utils/call-listener/call-listener.ts",
22014
+ "declarations": [
22015
+ {
22016
+ "kind": "function",
22017
+ "name": "callListener",
22018
+ "return": {
22019
+ "type": {
22020
+ "text": "unknown"
22021
+ }
22022
+ },
22023
+ "parameters": [
22024
+ {
22025
+ "name": "slot",
22026
+ "type": {
22027
+ "text": "symbol"
22028
+ }
22029
+ },
22030
+ {
22031
+ "name": "kind",
22032
+ "type": {
22033
+ "text": "string"
22034
+ }
22035
+ },
22036
+ {
22037
+ "name": "after",
22038
+ "type": {
22039
+ "text": "string"
22040
+ }
22041
+ }
22042
+ ],
22043
+ "description": "Calls the function in `slot` with `args`, and answers what it returned.\n\n**A listener that throws never breaks the caller.** The error is printed\nonce per `kind`, saying what happened instead (`after`), and the answer is\n`undefined`, as it is where nothing listens."
22044
+ }
22045
+ ],
22046
+ "exports": [
22047
+ {
22048
+ "kind": "js",
22049
+ "name": "callListener",
22050
+ "declaration": {
22051
+ "name": "callListener",
22052
+ "module": "src/utils/call-listener/call-listener.ts"
22053
+ }
22054
+ }
22055
+ ]
22056
+ },
20699
22057
  {
20700
22058
  "kind": "javascript-module",
20701
22059
  "path": "src/utils/capture-pointer/capture-pointer.ts",
@@ -20736,6 +22094,46 @@
20736
22094
  }
20737
22095
  ]
20738
22096
  },
22097
+ {
22098
+ "kind": "javascript-module",
22099
+ "path": "src/utils/center-in-view/center-in-view.ts",
22100
+ "declarations": [
22101
+ {
22102
+ "kind": "function",
22103
+ "name": "centerInView",
22104
+ "return": {
22105
+ "type": {
22106
+ "text": "void"
22107
+ }
22108
+ },
22109
+ "parameters": [
22110
+ {
22111
+ "name": "box",
22112
+ "type": {
22113
+ "text": "HTMLElement"
22114
+ }
22115
+ },
22116
+ {
22117
+ "name": "item",
22118
+ "type": {
22119
+ "text": "Element"
22120
+ }
22121
+ }
22122
+ ],
22123
+ "description": "Scrolls `box` to put `item`, one of the things it scrolls, in its middle.\n\nFor a list read as a dial rather than scanned, as Time Picker's wheels read\na Listbox. A delta from the two boxes rather than `offsetTop`: a slotted\nitem's `offsetParent` is whatever is positioned above it, which is not the\nbox and is not guaranteed to be anything.\n\n**Twice, and the second pass is not superstition.** The first delta is\ncomputed against whatever layout is current when this is called, and inside\na panel that has just been revealed it is a frame behind: measured, one call\nlanded a whole row short, 672 where 704 was wanted, and calling it again\nfrom a settled layout put it exactly on center. Reading a rect forces\nlayout, so the second pass sees the result of the first and corrects the\nremainder. It stops as soon as there is nothing left to correct, and where\neither box has no height, as on a page not laid out."
22124
+ }
22125
+ ],
22126
+ "exports": [
22127
+ {
22128
+ "kind": "js",
22129
+ "name": "centerInView",
22130
+ "declaration": {
22131
+ "name": "centerInView",
22132
+ "module": "src/utils/center-in-view/center-in-view.ts"
22133
+ }
22134
+ }
22135
+ ]
22136
+ },
20739
22137
  {
20740
22138
  "kind": "javascript-module",
20741
22139
  "path": "src/utils/chord/chord.ts",
@@ -20829,6 +22227,24 @@
20829
22227
  }
20830
22228
  ],
20831
22229
  "description": "Whether a press is the chord, modifiers and all.\n\n`mod` is one key, the platform's: Command where `apple` and Control\nelsewhere. The other one is then checked like any modifier the chord does\nnot name, so Control and Command together do not answer `mod+k`. `cmd` and\n`meta` are Command, `alt` and `opt` are Option.\n\n**A symbol is typed with Shift, so Shift says nothing about it.** On a US\nlayout `?` arrives as `?` with `shiftKey` set, and a chord of `?` that\nrefused Shift could never be pressed at all. A letter has a shifted form of\nits own, so `a` still refuses Shift and `shift+a` still asks for it.\n\nEvery other modifier is checked in both directions, so `mod+k` is not\nanswered by `shift+mod+k`: a chord a reader did not press is a chord that\nshould go to whatever did want it."
22230
+ },
22231
+ {
22232
+ "kind": "function",
22233
+ "name": "selectsAll",
22234
+ "return": {
22235
+ "type": {
22236
+ "text": "boolean"
22237
+ }
22238
+ },
22239
+ "parameters": [
22240
+ {
22241
+ "name": "press",
22242
+ "type": {
22243
+ "text": "{\n readonly altKey: boolean\n readonly ctrlKey: boolean\n readonly key: string\n readonly metaKey: boolean\n}"
22244
+ }
22245
+ }
22246
+ ],
22247
+ "description": "Whether a key press is Control+A, or Command+A on an Apple keyboard: the\npress that selects every item of a multiple selection.\n\nList, Tree, Listbox, Data Table and Virtual List each wrote the test. Either\nmodifier counts on any platform, as they did, and Alt held is another\nshortcut."
20832
22248
  }
20833
22249
  ],
20834
22250
  "exports": [
@@ -20863,6 +22279,107 @@
20863
22279
  "name": "matchesChord",
20864
22280
  "module": "src/utils/chord/chord.ts"
20865
22281
  }
22282
+ },
22283
+ {
22284
+ "kind": "js",
22285
+ "name": "selectsAll",
22286
+ "declaration": {
22287
+ "name": "selectsAll",
22288
+ "module": "src/utils/chord/chord.ts"
22289
+ }
22290
+ }
22291
+ ]
22292
+ },
22293
+ {
22294
+ "kind": "javascript-module",
22295
+ "path": "src/utils/chord/key-names.ts",
22296
+ "declarations": [
22297
+ {
22298
+ "kind": "function",
22299
+ "name": "keyNames",
22300
+ "return": {
22301
+ "type": {
22302
+ "text": "KeyNames"
22303
+ }
22304
+ },
22305
+ "parameters": [
22306
+ {
22307
+ "name": "parts",
22308
+ "type": {
22309
+ "text": "readonly string[]"
22310
+ }
22311
+ },
22312
+ {
22313
+ "name": "apple",
22314
+ "type": {
22315
+ "text": "boolean"
22316
+ }
22317
+ },
22318
+ {
22319
+ "name": "own",
22320
+ "default": "{}",
22321
+ "type": {
22322
+ "text": "Readonly<Record<string, string>>"
22323
+ }
22324
+ }
22325
+ ],
22326
+ "description": "The labels of a chord's keys on a platform, with `own` labels in place of\nthe platform's, and what goes between two keys.\n\n`parts` are the chord's names as `chordParts` splits them. A name `own`\nholds takes that label, a name the platform knows takes its glyph or word,\nand any other single character is shown in capitals.\n\n**On an Apple keyboard glyphs run together and words are joined with a\nhyphen**, as Apple writes `Command-K`. A label of more than one character\nfrom `own` is a word, so `{\"mod\": \"Command\"}` shows `Command-K` there, where\nnothing between the two ran them into `CommandK`. The platform's own `Esc`\nand `Space` keep running on from a glyph, as `⌘Esc` always has. Everywhere\nelse keys are joined with `+`."
22327
+ }
22328
+ ],
22329
+ "exports": [
22330
+ {
22331
+ "kind": "js",
22332
+ "name": "keyNames",
22333
+ "declaration": {
22334
+ "name": "keyNames",
22335
+ "module": "src/utils/chord/key-names.ts"
22336
+ }
22337
+ }
22338
+ ]
22339
+ },
22340
+ {
22341
+ "kind": "javascript-module",
22342
+ "path": "src/utils/clamp/clamp.ts",
22343
+ "declarations": [
22344
+ {
22345
+ "kind": "function",
22346
+ "name": "clamp",
22347
+ "return": {
22348
+ "type": {
22349
+ "text": "number"
22350
+ }
22351
+ },
22352
+ "parameters": [
22353
+ {
22354
+ "name": "value",
22355
+ "type": {
22356
+ "text": "number"
22357
+ }
22358
+ },
22359
+ {
22360
+ "name": "low",
22361
+ "type": {
22362
+ "text": "number"
22363
+ }
22364
+ },
22365
+ {
22366
+ "name": "high",
22367
+ "type": {
22368
+ "text": "number"
22369
+ }
22370
+ }
22371
+ ],
22372
+ "description": "`value` held between `low` and `high`.\n\nWritten four times before: Lightbox's zoom, Scroll Area's scrollbar, Color\nPicker's channels and core's color reading."
22373
+ }
22374
+ ],
22375
+ "exports": [
22376
+ {
22377
+ "kind": "js",
22378
+ "name": "clamp",
22379
+ "declaration": {
22380
+ "name": "clamp",
22381
+ "module": "src/utils/clamp/clamp.ts"
22382
+ }
20866
22383
  }
20867
22384
  ]
20868
22385
  },
@@ -21311,36 +22828,82 @@
21311
22828
  },
21312
22829
  {
21313
22830
  "kind": "javascript-module",
21314
- "path": "src/utils/count-label/count-label.ts",
22831
+ "path": "src/utils/column-step/column-step.ts",
21315
22832
  "declarations": [
21316
22833
  {
21317
22834
  "kind": "function",
21318
- "name": "countLabel",
22835
+ "name": "columnStep",
21319
22836
  "return": {
21320
22837
  "type": {
21321
- "text": "string"
22838
+ "text": "number"
21322
22839
  }
21323
22840
  },
21324
22841
  "parameters": [
21325
22842
  {
21326
- "name": "count",
22843
+ "name": "starts",
21327
22844
  "type": {
21328
- "text": "number"
22845
+ "text": "readonly number[]"
21329
22846
  }
21330
22847
  },
21331
22848
  {
21332
- "name": "one",
22849
+ "name": "at",
21333
22850
  "type": {
21334
- "text": "string"
22851
+ "text": "number"
21335
22852
  }
21336
22853
  },
21337
22854
  {
21338
- "name": "other",
22855
+ "name": "by",
21339
22856
  "type": {
21340
- "text": "string"
22857
+ "text": "-1 | 1"
21341
22858
  }
21342
- },
21343
- {
22859
+ }
22860
+ ],
22861
+ "description": "Where Up or Down moves in a list laid out in columns, as a grid of tiles or\na wrapping row is: to the next item after `at` (with `by` of `1`) or the\nlast one before it (`-1`) that starts at the same inline offset, which is\nthe item above or below it. `at` itself where there is none, so the key\nstops at the edge, as React Aria's grid layout stops.\n\nRead from where the items are drawn rather than from a column count, so it\nholds for a grid of any width, a row that wraps, and a column cut short.\n`starts` are the items' inline offsets in the order of the list, such as\neach one's `getBoundingClientRect().left`."
22862
+ }
22863
+ ],
22864
+ "exports": [
22865
+ {
22866
+ "kind": "js",
22867
+ "name": "columnStep",
22868
+ "declaration": {
22869
+ "name": "columnStep",
22870
+ "module": "src/utils/column-step/column-step.ts"
22871
+ }
22872
+ }
22873
+ ]
22874
+ },
22875
+ {
22876
+ "kind": "javascript-module",
22877
+ "path": "src/utils/count-label/count-label.ts",
22878
+ "declarations": [
22879
+ {
22880
+ "kind": "function",
22881
+ "name": "countLabel",
22882
+ "return": {
22883
+ "type": {
22884
+ "text": "string"
22885
+ }
22886
+ },
22887
+ "parameters": [
22888
+ {
22889
+ "name": "count",
22890
+ "type": {
22891
+ "text": "number"
22892
+ }
22893
+ },
22894
+ {
22895
+ "name": "one",
22896
+ "type": {
22897
+ "text": "string"
22898
+ }
22899
+ },
22900
+ {
22901
+ "name": "other",
22902
+ "type": {
22903
+ "text": "string"
22904
+ }
22905
+ },
22906
+ {
21344
22907
  "name": "locale",
21345
22908
  "default": "''"
21346
22909
  }
@@ -21615,6 +23178,134 @@
21615
23178
  }
21616
23179
  ]
21617
23180
  },
23181
+ {
23182
+ "kind": "javascript-module",
23183
+ "path": "src/utils/data-options/data-options.ts",
23184
+ "declarations": [
23185
+ {
23186
+ "kind": "function",
23187
+ "name": "dataOptions",
23188
+ "return": {
23189
+ "type": {
23190
+ "text": "DataOption[]"
23191
+ }
23192
+ },
23193
+ "parameters": [
23194
+ {
23195
+ "name": "items",
23196
+ "type": {
23197
+ "text": "readonly DataOptionItem[]"
23198
+ }
23199
+ }
23200
+ ],
23201
+ "description": "The options a page handed over as data, as a list reads them, built once per\narray.\n\nValues and words are strings, as an option element's are, so a number and\nits digits choose the same option."
23202
+ },
23203
+ {
23204
+ "kind": "function",
23205
+ "name": "windowOf",
23206
+ "return": {
23207
+ "type": {
23208
+ "text": "number[]"
23209
+ }
23210
+ },
23211
+ "parameters": [
23212
+ {
23213
+ "name": "first",
23214
+ "type": {
23215
+ "text": "number"
23216
+ }
23217
+ },
23218
+ {
23219
+ "name": "last",
23220
+ "type": {
23221
+ "text": "number"
23222
+ }
23223
+ },
23224
+ {
23225
+ "name": "count",
23226
+ "type": {
23227
+ "text": "number"
23228
+ }
23229
+ },
23230
+ {
23231
+ "name": "kept",
23232
+ "type": {
23233
+ "text": "number"
23234
+ }
23235
+ }
23236
+ ],
23237
+ "description": "The positions a window draws, in order, with `kept` added where it lies\noutside the window: before it where it comes first, after it where it comes\nlater. `-1` keeps nothing. Positions past `count` are left out.\n\n`kept` is the option the keyboard is on. **It has to be drawn wherever it\nis**, because `aria-activedescendant` points at an element, and an option\nthat is not drawn is one a screen reader cannot be told about.\n`VirtualizeController.spacers(kept)` takes its room out of the spacer on its\nside, so the scrollbar still measures the set."
23238
+ },
23239
+ {
23240
+ "kind": "function",
23241
+ "name": "drawOptions",
23242
+ "return": {
23243
+ "type": {
23244
+ "text": "HTMLElement[]"
23245
+ }
23246
+ },
23247
+ "parameters": [
23248
+ {
23249
+ "name": "box",
23250
+ "type": {
23251
+ "text": "Element"
23252
+ }
23253
+ },
23254
+ {
23255
+ "name": "tag",
23256
+ "type": {
23257
+ "text": "string"
23258
+ }
23259
+ },
23260
+ {
23261
+ "name": "rows",
23262
+ "type": {
23263
+ "text": "readonly DataOption[]"
23264
+ }
23265
+ },
23266
+ {
23267
+ "name": "at",
23268
+ "type": {
23269
+ "text": "readonly number[]"
23270
+ }
23271
+ },
23272
+ {
23273
+ "name": "disabled",
23274
+ "type": {
23275
+ "text": "boolean"
23276
+ }
23277
+ }
23278
+ ],
23279
+ "description": "Draws `rows[index]` for each of `at` into `box`, as elements named `tag`,\nand returns them in order.\n\n**Reused by position.** A scroll moves the window by a row or two at a time,\nso the elements already drawn take the next rows' words and state rather than\nbeing thrown away: a list of ten thousand keeps the twenty or so elements a\nscreen holds.\n\nEach element carries its place in the whole set, `aria-posinset` and\n`aria-setsize`, so a reader on the four-thousandth of ten thousand hears\nthat, and not its place in what happens to be drawn. `disabled` holds every\nrow down, for a list that is disabled itself."
23280
+ }
23281
+ ],
23282
+ "exports": [
23283
+ {
23284
+ "kind": "js",
23285
+ "name": "dataOptions",
23286
+ "declaration": {
23287
+ "name": "dataOptions",
23288
+ "module": "src/utils/data-options/data-options.ts"
23289
+ }
23290
+ },
23291
+ {
23292
+ "kind": "js",
23293
+ "name": "windowOf",
23294
+ "declaration": {
23295
+ "name": "windowOf",
23296
+ "module": "src/utils/data-options/data-options.ts"
23297
+ }
23298
+ },
23299
+ {
23300
+ "kind": "js",
23301
+ "name": "drawOptions",
23302
+ "declaration": {
23303
+ "name": "drawOptions",
23304
+ "module": "src/utils/data-options/data-options.ts"
23305
+ }
23306
+ }
23307
+ ]
23308
+ },
21618
23309
  {
21619
23310
  "kind": "javascript-module",
21620
23311
  "path": "src/utils/date-segments/date-segments.ts",
@@ -22370,9 +24061,13 @@
22370
24061
  {
22371
24062
  "name": "position",
22372
24063
  "default": "''"
24064
+ },
24065
+ {
24066
+ "name": "state",
24067
+ "default": "''"
22373
24068
  }
22374
24069
  ],
22375
- "description": "A reading in words, for a chart's readout: the row's name and every cell\nthat says something, or the one cell the series keys rest on.\n\nThe table's own text, as the bubble shows it, so the words and the picture\nagree, and nothing in it is English: the names are the table's headings. A\nblank cell says nothing and is left out, and so is a cell `shows` answers\nfalse for, which is a series a legend hid.\n\n`position` follows in brackets, such as \"2 of 12\", where the chart gives\none: last, so the reading is heard before where it stands."
24070
+ "description": "A reading in words, for a chart's readout: the row's name and every cell\nthat says something, or the one cell the series keys rest on.\n\nThe table's own text, as the bubble shows it, so the words and the picture\nagree, and nothing in it is English: the names are the table's headings. A\nblank cell says nothing and is left out, and so is a cell `shows` answers\nfalse for, which is a series a legend hid.\n\n`position` follows in brackets, such as \"2 of 12\", where the chart gives\none: last, so the reading is heard before where it stands. `state`, a word\nsuch as \"selected\", follows it in the same brackets, \"2 of 12, selected\"."
22376
24071
  }
22377
24072
  ],
22378
24073
  "exports": [
@@ -22495,11 +24190,11 @@
22495
24190
  },
22496
24191
  {
22497
24192
  "kind": "javascript-module",
22498
- "path": "src/utils/fill-template/fill-template.ts",
24193
+ "path": "src/utils/export-parts/export-parts.ts",
22499
24194
  "declarations": [
22500
24195
  {
22501
24196
  "kind": "function",
22502
- "name": "fillTemplate",
24197
+ "name": "exportParts",
22503
24198
  "return": {
22504
24199
  "type": {
22505
24200
  "text": "string"
@@ -22507,150 +24202,413 @@
22507
24202
  },
22508
24203
  "parameters": [
22509
24204
  {
22510
- "name": "template",
24205
+ "name": "parts",
22511
24206
  "type": {
22512
- "text": "string"
24207
+ "text": "readonly string[]"
22513
24208
  }
22514
24209
  },
22515
24210
  {
22516
- "name": "values",
24211
+ "name": "prefix",
22517
24212
  "type": {
22518
- "text": "Record<string, string | number>"
24213
+ "text": "string"
22519
24214
  }
22520
24215
  }
22521
24216
  ],
22522
- "description": "A label with its `{placeholders}` filled in.\n\n**The one way every translatable sentence here is written**: a property holds\nthe whole sentence, and the numbers and names go in where it says. A\nsentence built from pieces in code puts the pieces in English order, and\nanother language may want them the other way round.\n\nEvery occurrence is filled, so a sentence can name the same thing twice. A\nplaceholder with no value is left as written rather than emptied, which\nshows up on the page as the mistake it is."
24217
+ "description": "An `exportparts` list that forwards each of an inner component's parts under\na prefix: `exportParts(['button', 'text'], 'copy')` is\n`button: copy-button, text: copy-text`.\n\n**One list per inner component, written once beside it**, so the next part\nButton gains reaches every family that renders a Button. Ten lists written\nout by hand each had to be found and edited when Button gained `spinner`.\n\nThe inner component's parts are its own declared list, never ones read from\na rendered element: the attribute is written on the server too, before\nanything has rendered."
22523
24218
  }
22524
24219
  ],
22525
24220
  "exports": [
22526
24221
  {
22527
24222
  "kind": "js",
22528
- "name": "fillTemplate",
24223
+ "name": "exportParts",
22529
24224
  "declaration": {
22530
- "name": "fillTemplate",
22531
- "module": "src/utils/fill-template/fill-template.ts"
24225
+ "name": "exportParts",
24226
+ "module": "src/utils/export-parts/export-parts.ts"
22532
24227
  }
22533
24228
  }
22534
24229
  ]
22535
24230
  },
22536
24231
  {
22537
24232
  "kind": "javascript-module",
22538
- "path": "src/utils/focusable-elements/focusable-elements.ts",
24233
+ "path": "src/utils/fill-template/fill-template.ts",
22539
24234
  "declarations": [
22540
24235
  {
22541
24236
  "kind": "function",
22542
- "name": "focusableElements",
24237
+ "name": "fillTemplate",
22543
24238
  "return": {
22544
24239
  "type": {
22545
- "text": "HTMLElement[]"
24240
+ "text": "string"
22546
24241
  }
22547
24242
  },
22548
24243
  "parameters": [
22549
24244
  {
22550
- "name": "root",
24245
+ "name": "template",
22551
24246
  "type": {
22552
- "text": "HTMLElement"
24247
+ "text": "string"
24248
+ }
24249
+ },
24250
+ {
24251
+ "name": "values",
24252
+ "type": {
24253
+ "text": "Record<string, string | number>"
22553
24254
  }
22554
24255
  }
22555
24256
  ],
22556
- "description": "Everything inside `root` the reader can reach with Tab, in document order.\n\nRoving tabindex, arrow-key navigation and \"focus the first thing\" all need\nthis list, which is why it is a utility rather than part of anything that\nasks for it.\n\nVisibility is tested with `getClientRects()` rather than `offsetParent`,\nwhich is null for anything inside a `position: fixed` container, so the\n`offsetParent` test excluded every control on a raised surface."
22557
- },
22558
- {
22559
- "kind": "function",
22560
- "name": "deepActiveElement",
22561
- "return": {
22562
- "type": {
22563
- "text": "Element | null"
22564
- }
22565
- },
22566
- "description": "The truly focused element, following shadow roots down.\n\n`document.activeElement` stops at the outermost host, so a button inside two\nshadow roots reports as the component rather than as itself."
24257
+ "description": "A label with its `{placeholders}` filled in.\n\n**The one way every translatable sentence here is written**: a property holds\nthe whole sentence, and the numbers and names go in where it says. A\nsentence built from pieces in code puts the pieces in English order, and\nanother language may want them the other way round.\n\nEvery occurrence is filled, so a sentence can name the same thing twice. A\nplaceholder with no value is left as written rather than emptied, which\nshows up on the page as the mistake it is."
22567
24258
  },
22568
24259
  {
22569
24260
  "kind": "function",
22570
- "name": "deepContains",
24261
+ "name": "labelWith",
22571
24262
  "return": {
22572
24263
  "type": {
22573
- "text": "boolean"
24264
+ "text": "string"
22574
24265
  }
22575
24266
  },
22576
24267
  "parameters": [
22577
24268
  {
22578
- "name": "root",
24269
+ "name": "template",
22579
24270
  "type": {
22580
- "text": "Node"
24271
+ "text": "string"
22581
24272
  }
22582
24273
  },
22583
24274
  {
22584
- "name": "node",
24275
+ "name": "key",
22585
24276
  "type": {
22586
- "text": "Node | null"
24277
+ "text": "string"
24278
+ }
24279
+ },
24280
+ {
24281
+ "name": "words",
24282
+ "type": {
24283
+ "text": "string"
22587
24284
  }
22588
24285
  }
22589
24286
  ],
22590
- "description": "Whether `node` sits inside `root`, following shadow boundaries upward.\n\n`Node.contains` walks `parentNode` and a shadow root's `parentNode` is null,\nso it answers false for anything inside a component. Paired with\n`deepActiveElement`, which returns exactly such a node, the pair is a hazard of\nits own: the two look like they belong together and one of them crosses.\n\n`contains(deepActiveElement())` is the shape to avoid: focus on a\n`helix-button` reports as the `<button>` in its shadow root, which is in no\nlight-DOM container anywhere, so a containment test written that way reads\nevery reader as already outside.\n\n`host` is reached without naming `ShadowRoot`, which the server has no global\nfor. This runs from a keydown handler and would never execute there, but a\nbare reference is the kind that surfaces as a crash in Lit's result collector\nthe first time something calls it early."
24287
+ "description": "A name made from a template and the words of what it acts on: `{key}` in\nthe template filled with the words, or the words after the template where it\nhas no `{key}`.\n\nThe shape of every \"Remove {label}\" a page can override: written either way,\n\"Remove\" alone still names which one, as \"Remove Draft\"."
22591
24288
  }
22592
24289
  ],
22593
24290
  "exports": [
22594
24291
  {
22595
24292
  "kind": "js",
22596
- "name": "focusableElements",
22597
- "declaration": {
22598
- "name": "focusableElements",
22599
- "module": "src/utils/focusable-elements/focusable-elements.ts"
22600
- }
22601
- },
22602
- {
22603
- "kind": "js",
22604
- "name": "deepActiveElement",
24293
+ "name": "fillTemplate",
22605
24294
  "declaration": {
22606
- "name": "deepActiveElement",
22607
- "module": "src/utils/focusable-elements/focusable-elements.ts"
24295
+ "name": "fillTemplate",
24296
+ "module": "src/utils/fill-template/fill-template.ts"
22608
24297
  }
22609
24298
  },
22610
24299
  {
22611
24300
  "kind": "js",
22612
- "name": "deepContains",
24301
+ "name": "labelWith",
22613
24302
  "declaration": {
22614
- "name": "deepContains",
22615
- "module": "src/utils/focusable-elements/focusable-elements.ts"
24303
+ "name": "labelWith",
24304
+ "module": "src/utils/fill-template/fill-template.ts"
22616
24305
  }
22617
24306
  }
22618
24307
  ]
22619
24308
  },
22620
24309
  {
22621
24310
  "kind": "javascript-module",
22622
- "path": "src/utils/follow-link/follow-link.ts",
24311
+ "path": "src/utils/filter-marks/filter-marks.ts",
22623
24312
  "declarations": [
24313
+ {
24314
+ "kind": "variable",
24315
+ "name": "FILTER_MARK",
24316
+ "type": {
24317
+ "text": "string"
24318
+ },
24319
+ "default": "'helix-filter-match'",
24320
+ "description": "What the marks are called in `CSS.highlights`, and in `base.css`."
24321
+ },
22624
24322
  {
22625
24323
  "kind": "function",
22626
- "name": "followLink",
24324
+ "name": "rangeOf",
22627
24325
  "return": {
22628
24326
  "type": {
22629
- "text": "void"
24327
+ "text": "Range[]"
22630
24328
  }
22631
24329
  },
22632
24330
  "parameters": [
22633
24331
  {
22634
- "name": "document",
22635
- "type": {
22636
- "text": "Document"
22637
- }
22638
- },
22639
- {
22640
- "name": "link",
24332
+ "name": "root",
22641
24333
  "type": {
22642
- "text": "LinkTarget"
24334
+ "text": "Element"
22643
24335
  }
22644
24336
  },
22645
24337
  {
22646
- "name": "modifiers",
22647
- "default": "{}",
24338
+ "name": "needle",
22648
24339
  "type": {
22649
- "text": "LinkModifiers"
24340
+ "text": "string"
22650
24341
  }
22651
24342
  }
22652
24343
  ],
22653
- "description": "Follows a link from an element that is not an `<a>`, the way the browser\nfollows one: in this tab, in the `target` named, or in a new tab or window\nwhere Command, Control or Shift is held.\n\n**An option cannot hold an anchor.** `role=\"option\"` sits on the option's\nhost, where `aria-activedescendant` can name it, and an `<a>` inside the\nhost is exposed as a link inside the option, which loses the option its name\n(Menu Item's `href` records the measurement). So the option stays an option\nand the link is followed through an anchor made for the moment, which is\nReact Aria's way for its own link items: the browser decides what the keys\nmean, a new tab or a download, and nothing here guesses.\n\nThe anchor is in the document only while it is clicked, and its click does\nnot bubble, so nothing on the page hears a click on something it never drew."
24344
+ "description": "Where a needle sits inside an element, as a range over its text nodes, or\nnothing where it does not.\n\nWalked rather than measured off `textContent`, because the words may be split\nacross several nodes and wrapped in elements of the consumer's, and a match\ncan begin in one node and end in another. The offsets are mapped back onto\nthe nodes they came from, so the range covers the real text either way.\nMatched without regard to case, as a filter matches."
24345
+ },
24346
+ {
24347
+ "kind": "function",
24348
+ "name": "markMatches",
24349
+ "return": {
24350
+ "type": {
24351
+ "text": "void"
24352
+ }
24353
+ },
24354
+ "parameters": [
24355
+ {
24356
+ "name": "owner",
24357
+ "type": {
24358
+ "text": "Element"
24359
+ }
24360
+ },
24361
+ {
24362
+ "name": "elements",
24363
+ "type": {
24364
+ "text": "Iterable<Element>"
24365
+ }
24366
+ },
24367
+ {
24368
+ "name": "needle",
24369
+ "type": {
24370
+ "text": "string"
24371
+ }
24372
+ }
24373
+ ],
24374
+ "description": "Marks where `needle` matches in each of `elements`, for `owner`, without\ntouching the elements. An empty needle takes the owner's marks away, which\nis also what an owner leaving the page calls.\n\n**The Custom Highlight API paints a range, and nothing is inserted.** The\nwords are usually the consumer's own light DOM, slotted through as many as\ntwo shadow roots, and wrapping the matched part in a `<mark>` would mean\nrewriting their content: markup they wrote would come back changed. So an\noption holding a link or an icon is marked as readily as one holding a bare\nword. Listbox marks what its filter matched this way, and so every family\nthat filters through one: Select, Combobox, Command and Time Picker.\n\n**The rule that paints it lives in `base.css`**, as\n`::highlight(helix-filter-match)`, rather than in a component's styles. A\nhighlight is styled from the tree its text lives in, and that text lives in\nthe consumer's document.\n\nNothing at all where the API is missing, as on a server, in a test\nenvironment or in an older browser: the text nodes are not walked for an\nanswer nothing can paint."
24375
+ }
24376
+ ],
24377
+ "exports": [
24378
+ {
24379
+ "kind": "js",
24380
+ "name": "FILTER_MARK",
24381
+ "declaration": {
24382
+ "name": "FILTER_MARK",
24383
+ "module": "src/utils/filter-marks/filter-marks.ts"
24384
+ }
24385
+ },
24386
+ {
24387
+ "kind": "js",
24388
+ "name": "rangeOf",
24389
+ "declaration": {
24390
+ "name": "rangeOf",
24391
+ "module": "src/utils/filter-marks/filter-marks.ts"
24392
+ }
24393
+ },
24394
+ {
24395
+ "kind": "js",
24396
+ "name": "markMatches",
24397
+ "declaration": {
24398
+ "name": "markMatches",
24399
+ "module": "src/utils/filter-marks/filter-marks.ts"
24400
+ }
24401
+ }
24402
+ ]
24403
+ },
24404
+ {
24405
+ "kind": "javascript-module",
24406
+ "path": "src/utils/focus-target/focus-target.ts",
24407
+ "declarations": [
24408
+ {
24409
+ "kind": "function",
24410
+ "name": "focusTarget",
24411
+ "return": {
24412
+ "type": {
24413
+ "text": "Element"
24414
+ }
24415
+ },
24416
+ "parameters": [
24417
+ {
24418
+ "name": "trigger",
24419
+ "type": {
24420
+ "text": "Element"
24421
+ }
24422
+ }
24423
+ ],
24424
+ "description": "The element focus lands on when a trigger is focused: the trigger itself,\nor, for a component that delegates focus, the control inside its shadow root,\nfollowed down through any component nested there.\n\n**What a description or a name has to be written on**, since a reader hears\nthe element that has focus: a tooltip describing a Helix button describes\nthe `<button>` inside it, and a badge counting on an icon button counts on\nthe same one. Read from outside through `shadowRoot`, so it works for any\ncomponent with an open root and names none."
24425
+ }
24426
+ ],
24427
+ "exports": [
24428
+ {
24429
+ "kind": "js",
24430
+ "name": "focusTarget",
24431
+ "declaration": {
24432
+ "name": "focusTarget",
24433
+ "module": "src/utils/focus-target/focus-target.ts"
24434
+ }
24435
+ }
24436
+ ]
24437
+ },
24438
+ {
24439
+ "kind": "javascript-module",
24440
+ "path": "src/utils/focusable-elements/focusable-elements.ts",
24441
+ "declarations": [
24442
+ {
24443
+ "kind": "variable",
24444
+ "name": "PRESSABLE",
24445
+ "type": {
24446
+ "text": "string"
24447
+ },
24448
+ "default": "'a[href], button, input, label, select, summary, textarea, [tabindex]'",
24449
+ "description": "What takes a press of its own inside a row or an item that is pressable as a\nwhole: a link, a control, a label, a disclosure's summary, or anything a page\ngave a `tabindex`."
24450
+ },
24451
+ {
24452
+ "kind": "function",
24453
+ "name": "pressedOwnControl",
24454
+ "return": {
24455
+ "type": {
24456
+ "text": "boolean"
24457
+ }
24458
+ },
24459
+ "parameters": [
24460
+ {
24461
+ "name": "event",
24462
+ "type": {
24463
+ "text": "Event"
24464
+ }
24465
+ },
24466
+ {
24467
+ "name": "boundary",
24468
+ "type": {
24469
+ "text": "EventTarget"
24470
+ }
24471
+ },
24472
+ {
24473
+ "name": "pressable",
24474
+ "default": "PRESSABLE",
24475
+ "type": {
24476
+ "text": "string"
24477
+ }
24478
+ }
24479
+ ],
24480
+ "description": "Whether a press landed on a control of the item's own, before `boundary` in\nits path, so the item leaves the press to that control.\n\n**The composed path, so a control inside a component counts**: the `<button>`\nin a slotted Helix button's shadow root is on the path and matches, where the\nevent's retargeted `target` is only the host. The boundary itself and\neverything past it is not asked, so a row that is a `[tabindex]` stop does\nnot count as its own control."
24481
+ },
24482
+ {
24483
+ "kind": "function",
24484
+ "name": "focusableElements",
24485
+ "return": {
24486
+ "type": {
24487
+ "text": "HTMLElement[]"
24488
+ }
24489
+ },
24490
+ "parameters": [
24491
+ {
24492
+ "name": "root",
24493
+ "type": {
24494
+ "text": "HTMLElement"
24495
+ }
24496
+ }
24497
+ ],
24498
+ "description": "Everything inside `root` the reader can reach with Tab, in document order.\n\nRoving tabindex, arrow-key navigation and \"focus the first thing\" all need\nthis list, which is why it is a utility rather than part of anything that\nasks for it.\n\nVisibility is tested with `getClientRects()` rather than `offsetParent`,\nwhich is null for anything inside a `position: fixed` container, so the\n`offsetParent` test excluded every control on a raised surface."
24499
+ },
24500
+ {
24501
+ "kind": "function",
24502
+ "name": "deepActiveElement",
24503
+ "return": {
24504
+ "type": {
24505
+ "text": "Element | null"
24506
+ }
24507
+ },
24508
+ "description": "The truly focused element, following shadow roots down.\n\n`document.activeElement` stops at the outermost host, so a button inside two\nshadow roots reports as the component rather than as itself."
24509
+ },
24510
+ {
24511
+ "kind": "function",
24512
+ "name": "deepContains",
24513
+ "return": {
24514
+ "type": {
24515
+ "text": "boolean"
24516
+ }
24517
+ },
24518
+ "parameters": [
24519
+ {
24520
+ "name": "root",
24521
+ "type": {
24522
+ "text": "Node"
24523
+ }
24524
+ },
24525
+ {
24526
+ "name": "node",
24527
+ "type": {
24528
+ "text": "Node | null"
24529
+ }
24530
+ }
24531
+ ],
24532
+ "description": "Whether `node` sits inside `root`, following shadow boundaries upward.\n\n`Node.contains` walks `parentNode` and a shadow root's `parentNode` is null,\nso it answers false for anything inside a component. Paired with\n`deepActiveElement`, which returns exactly such a node, the pair is a hazard of\nits own: the two look like they belong together and one of them crosses.\n\n`contains(deepActiveElement())` is the shape to avoid: focus on a\n`helix-button` reports as the `<button>` in its shadow root, which is in no\nlight-DOM container anywhere, so a containment test written that way reads\nevery reader as already outside.\n\n`host` is reached without naming `ShadowRoot`, which the server has no global\nfor. This runs from a keydown handler and would never execute there, but a\nbare reference is the kind that surfaces as a crash in Lit's result collector\nthe first time something calls it early."
24533
+ }
24534
+ ],
24535
+ "exports": [
24536
+ {
24537
+ "kind": "js",
24538
+ "name": "PRESSABLE",
24539
+ "declaration": {
24540
+ "name": "PRESSABLE",
24541
+ "module": "src/utils/focusable-elements/focusable-elements.ts"
24542
+ }
24543
+ },
24544
+ {
24545
+ "kind": "js",
24546
+ "name": "pressedOwnControl",
24547
+ "declaration": {
24548
+ "name": "pressedOwnControl",
24549
+ "module": "src/utils/focusable-elements/focusable-elements.ts"
24550
+ }
24551
+ },
24552
+ {
24553
+ "kind": "js",
24554
+ "name": "focusableElements",
24555
+ "declaration": {
24556
+ "name": "focusableElements",
24557
+ "module": "src/utils/focusable-elements/focusable-elements.ts"
24558
+ }
24559
+ },
24560
+ {
24561
+ "kind": "js",
24562
+ "name": "deepActiveElement",
24563
+ "declaration": {
24564
+ "name": "deepActiveElement",
24565
+ "module": "src/utils/focusable-elements/focusable-elements.ts"
24566
+ }
24567
+ },
24568
+ {
24569
+ "kind": "js",
24570
+ "name": "deepContains",
24571
+ "declaration": {
24572
+ "name": "deepContains",
24573
+ "module": "src/utils/focusable-elements/focusable-elements.ts"
24574
+ }
24575
+ }
24576
+ ]
24577
+ },
24578
+ {
24579
+ "kind": "javascript-module",
24580
+ "path": "src/utils/follow-link/follow-link.ts",
24581
+ "declarations": [
24582
+ {
24583
+ "kind": "function",
24584
+ "name": "followLink",
24585
+ "return": {
24586
+ "type": {
24587
+ "text": "void"
24588
+ }
24589
+ },
24590
+ "parameters": [
24591
+ {
24592
+ "name": "document",
24593
+ "type": {
24594
+ "text": "Document"
24595
+ }
24596
+ },
24597
+ {
24598
+ "name": "link",
24599
+ "type": {
24600
+ "text": "LinkTarget"
24601
+ }
24602
+ },
24603
+ {
24604
+ "name": "modifiers",
24605
+ "default": "{}",
24606
+ "type": {
24607
+ "text": "LinkModifiers"
24608
+ }
24609
+ }
24610
+ ],
24611
+ "description": "Follows a link from an element that is not an `<a>`, the way the browser\nfollows one: in this tab, in the `target` named, or in a new tab or window\nwhere Command, Control or Shift is held.\n\n**An option cannot hold an anchor.** `role=\"option\"` sits on the option's\nhost, where `aria-activedescendant` can name it, and an `<a>` inside the\nhost is exposed as a link inside the option, which loses the option its name\n(Menu Item's `href` records the measurement). So the option stays an option\nand the link is followed through an anchor made for the moment, which is\nReact Aria's way for its own link items: the browser decides what the keys\nmean, a new tab or a download, and nothing here guesses.\n\nThe anchor is in the document only while it is clicked, and its click does\nnot bubble, so nothing on the page hears a click on something it never drew."
22654
24612
  },
22655
24613
  {
22656
24614
  "kind": "function",
@@ -22729,6 +24687,90 @@
22729
24687
  }
22730
24688
  ]
22731
24689
  },
24690
+ {
24691
+ "kind": "javascript-module",
24692
+ "path": "src/utils/grid-move/grid-move.ts",
24693
+ "declarations": [
24694
+ {
24695
+ "kind": "function",
24696
+ "name": "gridMove",
24697
+ "return": {
24698
+ "type": {
24699
+ "text": "GridPlace | undefined"
24700
+ }
24701
+ },
24702
+ "parameters": [
24703
+ {
24704
+ "name": "key",
24705
+ "type": {
24706
+ "text": "string"
24707
+ }
24708
+ },
24709
+ {
24710
+ "name": "from",
24711
+ "type": {
24712
+ "text": "GridPlace"
24713
+ }
24714
+ },
24715
+ {
24716
+ "name": "bounds",
24717
+ "type": {
24718
+ "text": "GridBounds"
24719
+ }
24720
+ },
24721
+ {
24722
+ "name": "keys",
24723
+ "type": {
24724
+ "text": "GridKeys"
24725
+ }
24726
+ }
24727
+ ],
24728
+ "description": "The place a key reaches from `from`, or `undefined` for a key that does not\nmove focus. A key at an edge answers the place it is on, so the caller still\ntakes the key.\n\n| Key | Place |\n|---|---|\n| Up, Down | One row, the headings included. |\n| Left, Right | One column along the line, as `step` says. |\n| Home, End | The first or the last column of the row. |\n| Control with Home or End | The first column of the first row, or the last of the last. |\n| Page Up, Page Down | `page` rows. |"
24729
+ },
24730
+ {
24731
+ "kind": "function",
24732
+ "name": "pageRows",
24733
+ "return": {
24734
+ "type": {
24735
+ "text": "number"
24736
+ }
24737
+ },
24738
+ "parameters": [
24739
+ {
24740
+ "name": "room",
24741
+ "type": {
24742
+ "text": "number"
24743
+ }
24744
+ },
24745
+ {
24746
+ "name": "tall",
24747
+ "type": {
24748
+ "text": "number"
24749
+ }
24750
+ }
24751
+ ],
24752
+ "description": "How many rows Page Up and Page Down move: the rows of `tall` pixels that fit\nin `room`, less one, so the row focus left stays in view. At least one."
24753
+ }
24754
+ ],
24755
+ "exports": [
24756
+ {
24757
+ "kind": "js",
24758
+ "name": "gridMove",
24759
+ "declaration": {
24760
+ "name": "gridMove",
24761
+ "module": "src/utils/grid-move/grid-move.ts"
24762
+ }
24763
+ },
24764
+ {
24765
+ "kind": "js",
24766
+ "name": "pageRows",
24767
+ "declaration": {
24768
+ "name": "pageRows",
24769
+ "module": "src/utils/grid-move/grid-move.ts"
24770
+ }
24771
+ }
24772
+ ]
24773
+ },
22732
24774
  {
22733
24775
  "kind": "javascript-module",
22734
24776
  "path": "src/utils/heading-in/heading-in.ts",
@@ -22867,6 +24909,44 @@
22867
24909
  }
22868
24910
  ]
22869
24911
  },
24912
+ {
24913
+ "kind": "javascript-module",
24914
+ "path": "src/utils/host-words/host-words.ts",
24915
+ "declarations": [
24916
+ {
24917
+ "kind": "function",
24918
+ "name": "hostWords",
24919
+ "return": {
24920
+ "type": {
24921
+ "text": "string"
24922
+ }
24923
+ },
24924
+ "parameters": [
24925
+ {
24926
+ "name": "host",
24927
+ "type": {
24928
+ "text": "HTMLElement & { labels?: NodeList | null }"
24929
+ }
24930
+ },
24931
+ {
24932
+ "name": "own",
24933
+ "default": "''"
24934
+ }
24935
+ ],
24936
+ "description": "The words that name a host, for a part inside its shadow root that must\ncarry the same name: the list a Select or a Time Picker opens.\n\n**Words rather than a reference**, because the part is inside the host's\nshadow root, and neither an IDREF on the page nor the host's labels reach\nit. Read in the order a browser names the host: its `aria-labelledby`, its\n`aria-label`, then `own`, the name the component draws itself (its `label`),\nthen a `<label>` for it. Each element's words are read as a name reads\nthem, so hidden text is left out and runs of white space are one space.\n\nEmpty where nothing names the host, which leaves the fallback to the caller."
24937
+ }
24938
+ ],
24939
+ "exports": [
24940
+ {
24941
+ "kind": "js",
24942
+ "name": "hostWords",
24943
+ "declaration": {
24944
+ "name": "hostWords",
24945
+ "module": "src/utils/host-words/host-words.ts"
24946
+ }
24947
+ }
24948
+ ]
24949
+ },
22870
24950
  {
22871
24951
  "kind": "javascript-module",
22872
24952
  "path": "src/utils/implicit-submit/implicit-submit.ts",
@@ -23199,6 +25279,78 @@
23199
25279
  }
23200
25280
  ]
23201
25281
  },
25282
+ {
25283
+ "kind": "javascript-module",
25284
+ "path": "src/utils/load-more/load-more.ts",
25285
+ "declarations": [
25286
+ {
25287
+ "kind": "function",
25288
+ "name": "endInSight",
25289
+ "return": {
25290
+ "type": {
25291
+ "text": "boolean"
25292
+ }
25293
+ },
25294
+ "parameters": [
25295
+ {
25296
+ "name": "{ askedAt, count, remaining, screen }",
25297
+ "type": {
25298
+ "text": "EndInSight"
25299
+ }
25300
+ }
25301
+ ],
25302
+ "description": "Whether a reader has come within one screen of the end of a set, and the\nset has not already asked for more at this length: React Aria's\n`onLoadMore` rule.\n\n**Once for each length**, so a scroll that goes on asks again only after the\nnext page arrived and the length moved. False while the box has no height or\nthe set no items, so a list that has not been laid out asks for nothing.\nThe caller keeps `askedAt`, setting it to `count` when this answers true.\n\nListbox asks this of its own scroll, and `VirtualizeController.endInSight`\nof the rows it lays out, so the two lists ask on the same terms."
25303
+ }
25304
+ ],
25305
+ "exports": [
25306
+ {
25307
+ "kind": "js",
25308
+ "name": "endInSight",
25309
+ "declaration": {
25310
+ "name": "endInSight",
25311
+ "module": "src/utils/load-more/load-more.ts"
25312
+ }
25313
+ }
25314
+ ]
25315
+ },
25316
+ {
25317
+ "kind": "javascript-module",
25318
+ "path": "src/utils/locale-of/locale-of.ts",
25319
+ "declarations": [
25320
+ {
25321
+ "kind": "function",
25322
+ "name": "localeOf",
25323
+ "return": {
25324
+ "type": {
25325
+ "text": "string"
25326
+ }
25327
+ },
25328
+ "parameters": [
25329
+ {
25330
+ "name": "element",
25331
+ "type": {
25332
+ "text": "Element"
25333
+ }
25334
+ },
25335
+ {
25336
+ "name": "own",
25337
+ "default": "''"
25338
+ }
25339
+ ],
25340
+ "description": "The locale an element speaks: `own`, the element's own `locale` property,\nwhere one is set, and otherwise the `lang` of the nearest element with one,\nread out through any shadow root the element is drawn in.\n\n**The page's language is the default a reader expects.** A date picker on a\npage written `lang=\"de\"` that names its months in English and starts its\nweeks on Sunday is a widget that ignored the one place the page said what\nlanguage it is in; Shoelace and Web Awesome read the same attribute.\n`lang=\"\"` is the page saying it does not know, and answers empty.\n\nEmpty where nothing says, which every `Intl` call here takes as the\nruntime's own locale, and empty for a bare language the runtime already\nspeaks (see `usable`). Read when asked rather than watched, so a page that\nchanges its `lang` is answered in the new one on the element's next render.\nA server shim with no `closest` answers `own`, or empty."
25341
+ }
25342
+ ],
25343
+ "exports": [
25344
+ {
25345
+ "kind": "js",
25346
+ "name": "localeOf",
25347
+ "declaration": {
25348
+ "name": "localeOf",
25349
+ "module": "src/utils/locale-of/locale-of.ts"
25350
+ }
25351
+ }
25352
+ ]
25353
+ },
23202
25354
  {
23203
25355
  "kind": "javascript-module",
23204
25356
  "path": "src/utils/mark-region/mark-region.ts",
@@ -23359,13 +25511,104 @@
23359
25511
  }
23360
25512
  ]
23361
25513
  },
25514
+ {
25515
+ "kind": "javascript-module",
25516
+ "path": "src/utils/nearest/nearest.ts",
25517
+ "declarations": [
25518
+ {
25519
+ "kind": "function",
25520
+ "name": "nearest",
25521
+ "return": {
25522
+ "type": {
25523
+ "text": "number | undefined"
25524
+ }
25525
+ },
25526
+ "parameters": [
25527
+ {
25528
+ "name": "values",
25529
+ "type": {
25530
+ "text": "Iterable<number>"
25531
+ }
25532
+ },
25533
+ {
25534
+ "name": "target",
25535
+ "type": {
25536
+ "text": "number"
25537
+ }
25538
+ }
25539
+ ],
25540
+ "description": "The value in `values` nearest `target`, the first of two at the same\ndistance, or `undefined` for none.\n\nDrawer's `snapTo` and Rating's reading of a score between its steps each\nwrote this loop. Given in ascending order, a target halfway between two\ngoes to the lower, which is the rule both kept."
25541
+ }
25542
+ ],
25543
+ "exports": [
25544
+ {
25545
+ "kind": "js",
25546
+ "name": "nearest",
25547
+ "declaration": {
25548
+ "name": "nearest",
25549
+ "module": "src/utils/nearest/nearest.ts"
25550
+ }
25551
+ }
25552
+ ]
25553
+ },
23362
25554
  {
23363
25555
  "kind": "javascript-module",
23364
25556
  "path": "src/utils/number-format/number-format.ts",
23365
25557
  "declarations": [
23366
25558
  {
23367
25559
  "kind": "function",
23368
- "name": "formatNumber",
25560
+ "name": "formatNumber",
25561
+ "return": {
25562
+ "type": {
25563
+ "text": "string"
25564
+ }
25565
+ },
25566
+ "parameters": [
25567
+ {
25568
+ "name": "value",
25569
+ "type": {
25570
+ "text": "number"
25571
+ }
25572
+ },
25573
+ {
25574
+ "name": "locale",
25575
+ "default": "''"
25576
+ },
25577
+ {
25578
+ "name": "options",
25579
+ "optional": true,
25580
+ "type": {
25581
+ "text": "Intl.NumberFormatOptions"
25582
+ }
25583
+ }
25584
+ ],
25585
+ "description": "Writes a number in a locale with `Intl.NumberFormat` options."
25586
+ },
25587
+ {
25588
+ "kind": "function",
25589
+ "name": "formatPercent",
25590
+ "return": {
25591
+ "type": {
25592
+ "text": "string"
25593
+ }
25594
+ },
25595
+ "parameters": [
25596
+ {
25597
+ "name": "share",
25598
+ "type": {
25599
+ "text": "number"
25600
+ }
25601
+ },
25602
+ {
25603
+ "name": "locale",
25604
+ "default": "''"
25605
+ }
25606
+ ],
25607
+ "description": "A share, from 0 to 1, as a locale writes a whole percentage: `40%`, or\n`40 %` in French. For `aria-valuetext`, since a bare `aria-valuenow` is read\nas a number with no unit. Splitter's position and Meter's and Progress's\nreadings are written with it."
25608
+ },
25609
+ {
25610
+ "kind": "function",
25611
+ "name": "readingText",
23369
25612
  "return": {
23370
25613
  "type": {
23371
25614
  "text": "string"
@@ -23378,6 +25621,12 @@
23378
25621
  "text": "number"
23379
25622
  }
23380
25623
  },
25624
+ {
25625
+ "name": "share",
25626
+ "type": {
25627
+ "text": "number"
25628
+ }
25629
+ },
23381
25630
  {
23382
25631
  "name": "locale",
23383
25632
  "default": "''"
@@ -23390,7 +25639,7 @@
23390
25639
  }
23391
25640
  }
23392
25641
  ],
23393
- "description": "Writes a number in a locale with `Intl.NumberFormat` options."
25642
+ "description": "A reading in words: `value` written with `options` where they say another\nstyle, and otherwise `share`, from 0 to 1, as a percentage, whole unless\n`options` say more.\n\nMeter and Progress each wrote this, with the value each holds to its range\nand the share of it that is filled."
23394
25643
  },
23395
25644
  {
23396
25645
  "kind": "function",
@@ -23431,6 +25680,22 @@
23431
25680
  "module": "src/utils/number-format/number-format.ts"
23432
25681
  }
23433
25682
  },
25683
+ {
25684
+ "kind": "js",
25685
+ "name": "formatPercent",
25686
+ "declaration": {
25687
+ "name": "formatPercent",
25688
+ "module": "src/utils/number-format/number-format.ts"
25689
+ }
25690
+ },
25691
+ {
25692
+ "kind": "js",
25693
+ "name": "readingText",
25694
+ "declaration": {
25695
+ "name": "readingText",
25696
+ "module": "src/utils/number-format/number-format.ts"
25697
+ }
25698
+ },
23434
25699
  {
23435
25700
  "kind": "js",
23436
25701
  "name": "parseNumber",
@@ -23466,6 +25731,58 @@
23466
25731
  }
23467
25732
  ]
23468
25733
  },
25734
+ {
25735
+ "kind": "javascript-module",
25736
+ "path": "src/utils/own-rule/own-rule.ts",
25737
+ "declarations": [
25738
+ {
25739
+ "kind": "function",
25740
+ "name": "applyOwnRule",
25741
+ "return": {
25742
+ "type": {
25743
+ "text": "void"
25744
+ }
25745
+ },
25746
+ "parameters": [
25747
+ {
25748
+ "name": "internals",
25749
+ "type": {
25750
+ "text": "ElementInternals"
25751
+ }
25752
+ },
25753
+ {
25754
+ "name": "control",
25755
+ "type": {
25756
+ "text": "HTMLInputElement | HTMLTextAreaElement"
25757
+ }
25758
+ },
25759
+ {
25760
+ "name": "rule",
25761
+ "type": {
25762
+ "text": "OwnRule | undefined"
25763
+ }
25764
+ },
25765
+ {
25766
+ "name": "value",
25767
+ "type": {
25768
+ "text": "string"
25769
+ }
25770
+ }
25771
+ ],
25772
+ "description": "Applies a page's own rule after the native verdict was copied, as React\nAria's TextField `validate` does: only while the browser finds nothing\nwrong, so a required empty field says the browser's sentence first. A list\nof messages is joined with spaces, and the message is a `customError`\nanchored at the control, so the bubble points at the text.\n\nA function rather than a member of `MixinField`, so only the fields that\ntake `validate` carry it."
25773
+ }
25774
+ ],
25775
+ "exports": [
25776
+ {
25777
+ "kind": "js",
25778
+ "name": "applyOwnRule",
25779
+ "declaration": {
25780
+ "name": "applyOwnRule",
25781
+ "module": "src/utils/own-rule/own-rule.ts"
25782
+ }
25783
+ }
25784
+ ]
25785
+ },
23469
25786
  {
23470
25787
  "kind": "javascript-module",
23471
25788
  "path": "src/utils/plain-click/plain-click.ts",
@@ -23540,6 +25857,25 @@
23540
25857
  }
23541
25858
  ],
23542
25859
  "description": "Whether the keyboard in front of the reader is an Apple one, which labels\nits modifiers with glyphs and whose platform modifier is Command.\n\nFrom the user agent, as every application asks it; `false` on a server,\nwhich has no keyboard to ask. Kbd draws `⌘K` or `Ctrl+K` from it and reads\n`mod` as the key it names."
25860
+ },
25861
+ {
25862
+ "kind": "function",
25863
+ "name": "onAndroid",
25864
+ "return": {
25865
+ "type": {
25866
+ "text": "boolean"
25867
+ }
25868
+ },
25869
+ "parameters": [
25870
+ {
25871
+ "name": "platform",
25872
+ "default": "typeof navigator === 'undefined' ? undefined : navigator",
25873
+ "type": {
25874
+ "text": "Platform | undefined"
25875
+ }
25876
+ }
25877
+ ],
25878
+ "description": "Whether the browser runs on Android, where TalkBack reads no `aria-sort`.\n\nReact Aria's table header describes its sort order in words there for the\nsame reason, so a reader who cannot hear the state still hears which way a\ncolumn is sorted. From the user agent; `false` on a server."
23543
25879
  }
23544
25880
  ],
23545
25881
  "exports": [
@@ -23558,6 +25894,14 @@
23558
25894
  "name": "onApple",
23559
25895
  "module": "src/utils/platform/platform.ts"
23560
25896
  }
25897
+ },
25898
+ {
25899
+ "kind": "js",
25900
+ "name": "onAndroid",
25901
+ "declaration": {
25902
+ "name": "onAndroid",
25903
+ "module": "src/utils/platform/platform.ts"
25904
+ }
23561
25905
  }
23562
25906
  ]
23563
25907
  },
@@ -23815,6 +26159,24 @@
23815
26159
  }
23816
26160
  ],
23817
26161
  "description": "A series name as it is matched: trimmed and in lower case, since a column's\nheading is matched without regard to case or surrounding space everywhere a\nname is written, in `lines`, `hidden-series` and `hide()` alike."
26162
+ },
26163
+ {
26164
+ "kind": "function",
26165
+ "name": "extremesOf",
26166
+ "return": {
26167
+ "type": {
26168
+ "text": "Extremes"
26169
+ }
26170
+ },
26171
+ "parameters": [
26172
+ {
26173
+ "name": "slots",
26174
+ "type": {
26175
+ "text": "readonly (number | undefined)[]"
26176
+ }
26177
+ }
26178
+ ],
26179
+ "description": "Where the highest and the lowest readings stand. A blank slot is passed\nover, and a list with nothing in it has neither.\n\nSparkline's overview and Heatmap's busiest place each looked for these."
23818
26180
  }
23819
26181
  ],
23820
26182
  "exports": [
@@ -23857,6 +26219,14 @@
23857
26219
  "name": "seriesKey",
23858
26220
  "module": "src/utils/read-series/read-series.ts"
23859
26221
  }
26222
+ },
26223
+ {
26224
+ "kind": "js",
26225
+ "name": "extremesOf",
26226
+ "declaration": {
26227
+ "name": "extremesOf",
26228
+ "module": "src/utils/read-series/read-series.ts"
26229
+ }
23860
26230
  }
23861
26231
  ]
23862
26232
  },
@@ -23986,6 +26356,15 @@
23986
26356
  "kind": "javascript-module",
23987
26357
  "path": "src/utils/relative-time/relative-time.ts",
23988
26358
  "declarations": [
26359
+ {
26360
+ "kind": "variable",
26361
+ "name": "UNITS",
26362
+ "type": {
26363
+ "text": "Array<{ ms: number; unit: Intl.RelativeTimeFormatUnit }>"
26364
+ },
26365
+ "default": "[ { ms: 1000, unit: 'second' }, { ms: 60_000, unit: 'minute' }, { ms: 3_600_000, unit: 'hour' }, { ms: 86_400_000, unit: 'day' }, { ms: 604_800_000, unit: 'week' }, { ms: 2_629_800_000, unit: 'month' }, { ms: 31_557_600_000, unit: 'year' }, ]",
26366
+ "description": "How long each unit lasts, in milliseconds, largest last. `elapsedTime`\nreads its minute, hour and day from here."
26367
+ },
23989
26368
  {
23990
26369
  "kind": "function",
23991
26370
  "name": "relativeTime",
@@ -24013,6 +26392,14 @@
24013
26392
  }
24014
26393
  ],
24015
26394
  "exports": [
26395
+ {
26396
+ "kind": "js",
26397
+ "name": "UNITS",
26398
+ "declaration": {
26399
+ "name": "UNITS",
26400
+ "module": "src/utils/relative-time/relative-time.ts"
26401
+ }
26402
+ },
24016
26403
  {
24017
26404
  "kind": "js",
24018
26405
  "name": "relativeTime",
@@ -24268,9 +26655,15 @@
24268
26655
  "type": {
24269
26656
  "text": "readonly string[]"
24270
26657
  }
26658
+ },
26659
+ {
26660
+ "name": "{ state = 'joined' }",
26661
+ "default": "{}",
26662
+ "type": {
26663
+ "text": "ReportValuesOptions"
26664
+ }
24271
26665
  }
24272
- ],
24273
- "description": "Reports a control's answer to its form: one entry for each value, the way a\nnative `<select multiple>` and a row of checkboxes send theirs.\n\n**Several answers are several entries, not one joined string.** A server\nreading `tags=a,b` has to know to split it on a convention this library\nchose, and one reading `tags=a&tags=b` reads it the way it reads every\nother multi-valued control on the platform. Listbox, Select and Combobox\nsent the first and Date Picker the second, so what a server received for the\nsame answer depended on which control asked for it.\n\n**The joined string is the state**, which is what the browser hands back to\n`formStateRestoreCallback` and what `value` holds, so a restored control\nreads the shape it wrote.\n\n**Nothing without a `name`.** A plain string is skipped by the form when its\ncontrol has no name, but `FormData` carries its own names and its entries\nare appended whatever the element is called, so an unnamed control would\nsubmit empty-named values."
26666
+ ]
24274
26667
  }
24275
26668
  ],
24276
26669
  "exports": [
@@ -24304,6 +26697,36 @@
24304
26697
  }
24305
26698
  }
24306
26699
  ]
26700
+ },
26701
+ {
26702
+ "kind": "function",
26703
+ "name": "requestValue",
26704
+ "return": {
26705
+ "type": {
26706
+ "text": "boolean"
26707
+ }
26708
+ },
26709
+ "parameters": [
26710
+ {
26711
+ "name": "host",
26712
+ "type": {
26713
+ "text": "EventTarget"
26714
+ }
26715
+ },
26716
+ {
26717
+ "name": "next",
26718
+ "type": {
26719
+ "text": "string"
26720
+ }
26721
+ },
26722
+ {
26723
+ "name": "apply",
26724
+ "type": {
26725
+ "text": "(value: string) => void"
26726
+ }
26727
+ }
26728
+ ],
26729
+ "description": "Asks before a reader's press moves a value, then applies it and says so:\n`helix-before-change` with the value it would leave, which a listener may\ncancel, and `change` once it has moved.\n\n**The order every selectable set in the library keeps**, so a page reads the\nsame pair from a list, a tag group, a heatmap or a legend: the cancelable\nquestion first, the platform's `change` after, bubbling and composed as a\nnative control's does. Returns whether the value moved."
24307
26730
  }
24308
26731
  ],
24309
26732
  "exports": [
@@ -24314,6 +26737,14 @@
24314
26737
  "name": "requestChange",
24315
26738
  "module": "src/utils/request-change/request-change.ts"
24316
26739
  }
26740
+ },
26741
+ {
26742
+ "kind": "js",
26743
+ "name": "requestValue",
26744
+ "declaration": {
26745
+ "name": "requestValue",
26746
+ "module": "src/utils/request-change/request-change.ts"
26747
+ }
24317
26748
  }
24318
26749
  ]
24319
26750
  },
@@ -24899,6 +27330,56 @@
24899
27330
  "kind": "javascript-module",
24900
27331
  "path": "src/utils/scroll-item-into-view/scroll-item-into-view.ts",
24901
27332
  "declarations": [
27333
+ {
27334
+ "kind": "function",
27335
+ "name": "scrollingAncestor",
27336
+ "return": {
27337
+ "type": {
27338
+ "text": "HTMLElement | null"
27339
+ }
27340
+ },
27341
+ "parameters": [
27342
+ {
27343
+ "name": "item",
27344
+ "type": {
27345
+ "text": "HTMLElement"
27346
+ }
27347
+ },
27348
+ {
27349
+ "name": "options",
27350
+ "default": "{}",
27351
+ "type": {
27352
+ "text": "ScrollerOptions"
27353
+ }
27354
+ }
27355
+ ],
27356
+ "description": "The nearest ancestor that actually scrolls, crossing shadow boundaries.\n\n**Not `item.offsetParent`**, which is the nearest *positioned* ancestor and\nhas nothing whatever to do with overflow. The two coincide often enough to\nlook right, because a scroller frequently is positioned, and they come apart\nexactly where it matters: put anything `position: relative` between the item\nand the box that scrolls, and the util scrolls the thing in between, which\ndoes not scroll, and reports nothing.\n\nThe walk crosses shadow boundaries through the host, because the item is\nalmost always in one and `parentElement` is null at the root. Without that\nstep, a component whose scroller is its own `[part]` would find nothing.\n\nIt stops before the document. Scrolling the page is the one thing this whole\nutil exists not to do, so finding nothing inside the component and returning\nnull is the honest answer: the caller no-ops rather than taking the address\nbar with it."
27357
+ },
27358
+ {
27359
+ "kind": "function",
27360
+ "name": "scrollRoom",
27361
+ "return": {
27362
+ "type": {
27363
+ "text": "number"
27364
+ }
27365
+ },
27366
+ "parameters": [
27367
+ {
27368
+ "name": "box",
27369
+ "type": {
27370
+ "text": "Element | null | undefined"
27371
+ }
27372
+ },
27373
+ {
27374
+ "name": "{ covered = 0 }",
27375
+ "default": "{}",
27376
+ "type": {
27377
+ "text": "ScrollRoomOptions"
27378
+ }
27379
+ }
27380
+ ],
27381
+ "description": "How much of a list a reader sees at once, for Page Up and Page Down: the\nbox's own height where it scrolls, less what covers it, and the window's\nwhere it does not and the page scrolls instead.\n\n**A pixel of slack**, since a box whose content rounds to one pixel more\nthan its height does not scroll, and was paging by the window's height."
27382
+ },
24902
27383
  {
24903
27384
  "kind": "function",
24904
27385
  "name": "scrollItemIntoView",
@@ -24925,6 +27406,22 @@
24925
27406
  }
24926
27407
  ],
24927
27408
  "exports": [
27409
+ {
27410
+ "kind": "js",
27411
+ "name": "scrollingAncestor",
27412
+ "declaration": {
27413
+ "name": "scrollingAncestor",
27414
+ "module": "src/utils/scroll-item-into-view/scroll-item-into-view.ts"
27415
+ }
27416
+ },
27417
+ {
27418
+ "kind": "js",
27419
+ "name": "scrollRoom",
27420
+ "declaration": {
27421
+ "name": "scrollRoom",
27422
+ "module": "src/utils/scroll-item-into-view/scroll-item-into-view.ts"
27423
+ }
27424
+ },
24928
27425
  {
24929
27426
  "kind": "js",
24930
27427
  "name": "scrollItemIntoView",
@@ -25027,22 +27524,158 @@
25027
27524
  },
25028
27525
  "parameters": [
25029
27526
  {
25030
- "name": "slot",
27527
+ "name": "slot",
27528
+ "type": {
27529
+ "text": "HTMLSlotElement | null | undefined"
27530
+ }
27531
+ }
27532
+ ],
27533
+ "description": "Whether a consumer put anything in a slot.\n\n**There is no selector for this**, which is why it is script. `slot:empty`\nlooks like the answer and is not: a slot's children are its *fallback*, and\nassigned nodes are not children, so `:empty` is true whenever the fallback is\nabsent whether or not the consumer slotted anything. `:host(:has(...))` is\ninvalid CSS, and the server has no children to inspect.\n\nThe answer matters because an empty wrapper is not free. A region that\ngenerates a box is a flex item or a grid item whether or not it holds\nanything, so it takes the container's gap: an announcement with no actions\npays the row gap twice. `display: none` is the only fix, because only a box\nthat is not generated has no gap beside it.\n\nText or an element, because neither alone is the test. An element on its own\ncounts a whitespace-only span as content; text on its own counts an icon as\nnothing.\n\n`flatten` is deliberate here, unlike the tooltip's emptiness test: this asks\n\"will anything render\", where that one asks \"did the consumer provide\nanything\", and a slot showing its fallback does render."
27534
+ },
27535
+ {
27536
+ "kind": "function",
27537
+ "name": "slotNamed",
27538
+ "return": {
27539
+ "type": {
27540
+ "text": "HTMLSlotElement | null"
27541
+ }
27542
+ },
27543
+ "parameters": [
27544
+ {
27545
+ "name": "root",
27546
+ "type": {
27547
+ "text": "ParentNode | null | undefined"
27548
+ }
27549
+ },
27550
+ {
27551
+ "name": "name",
27552
+ "type": {
27553
+ "text": "string"
27554
+ }
27555
+ }
27556
+ ],
27557
+ "description": "The slot of a name in a shadow root, or its default slot for `''`.\n\n`slot[name=\"\"]` matches nothing, since the default slot has no `name`\nattribute at all, which is the one thing every hand-written lookup had to\nremember."
27558
+ }
27559
+ ],
27560
+ "exports": [
27561
+ {
27562
+ "kind": "js",
27563
+ "name": "slotFilled",
27564
+ "declaration": {
27565
+ "name": "slotFilled",
27566
+ "module": "src/utils/slot-filled/slot-filled.ts"
27567
+ }
27568
+ },
27569
+ {
27570
+ "kind": "js",
27571
+ "name": "slotNamed",
27572
+ "declaration": {
27573
+ "name": "slotNamed",
27574
+ "module": "src/utils/slot-filled/slot-filled.ts"
27575
+ }
27576
+ }
27577
+ ]
27578
+ },
27579
+ {
27580
+ "kind": "javascript-module",
27581
+ "path": "src/utils/slotted-glyph/slotted-glyph.ts",
27582
+ "declarations": [
27583
+ {
27584
+ "kind": "class",
27585
+ "description": "A glyph a consumer slots once and a component draws in many places: the\nmarks of a rating, the remove icon on every row of a file list.\n\nA slotted element can be assigned to one slot only, so a component that\ndraws it in several places draws copies. **One copy per place, kept**, so a\nrender does not make them again: a drag renders on every pointer move, and\nhanding Lit a fresh node each time swaps every copy on every frame.",
27586
+ "name": "SlottedGlyph",
27587
+ "members": [
27588
+ {
27589
+ "kind": "field",
27590
+ "name": "copies",
27591
+ "privacy": "private",
27592
+ "readonly": true,
27593
+ "default": "new Map<string, Node>()",
27594
+ "description": "The copies made so far, by the place each is drawn in."
27595
+ },
27596
+ {
27597
+ "kind": "field",
27598
+ "name": "source",
25031
27599
  "type": {
25032
- "text": "HTMLSlotElement | null | undefined"
25033
- }
27600
+ "text": "Element | undefined"
27601
+ },
27602
+ "privacy": "private",
27603
+ "description": "The element slotted last, which every copy is made from."
27604
+ },
27605
+ {
27606
+ "kind": "field",
27607
+ "name": "slotted",
27608
+ "type": {
27609
+ "text": "boolean"
27610
+ },
27611
+ "description": "Whether a glyph is slotted, so the component draws copies of it.",
27612
+ "readonly": true
27613
+ },
27614
+ {
27615
+ "kind": "method",
27616
+ "name": "read",
27617
+ "return": {
27618
+ "type": {
27619
+ "text": "void"
27620
+ }
27621
+ },
27622
+ "parameters": [
27623
+ {
27624
+ "name": "slot",
27625
+ "type": {
27626
+ "text": "HTMLSlotElement"
27627
+ }
27628
+ }
27629
+ ],
27630
+ "description": "Reads the slot after a `slotchange`: the first element assigned to it,\nthrough any slot it is forwarded by. The copies made of the last one go."
27631
+ },
27632
+ {
27633
+ "kind": "method",
27634
+ "name": "take",
27635
+ "return": {
27636
+ "type": {
27637
+ "text": "void"
27638
+ }
27639
+ },
27640
+ "parameters": [
27641
+ {
27642
+ "name": "source",
27643
+ "type": {
27644
+ "text": "Element | undefined"
27645
+ }
27646
+ }
27647
+ ],
27648
+ "description": "Takes `source` as the glyph, or none, as `read` does from a slot: the\ncopies made of the last one go. For the first render, which reads the\nhost's children before any `slotchange` answers."
27649
+ },
27650
+ {
27651
+ "kind": "method",
27652
+ "name": "copyFor",
27653
+ "return": {
27654
+ "type": {
27655
+ "text": "Node | undefined"
27656
+ }
27657
+ },
27658
+ "parameters": [
27659
+ {
27660
+ "name": "place",
27661
+ "type": {
27662
+ "text": "number | string"
27663
+ }
27664
+ }
27665
+ ],
27666
+ "description": "The copy for one place, made the first time it is asked for and the same\nnode after, or `undefined` while nothing is slotted."
25034
27667
  }
25035
27668
  ],
25036
- "description": "Whether a consumer put anything in a slot.\n\n**There is no selector for this**, which is why it is script. `slot:empty`\nlooks like the answer and is not: a slot's children are its *fallback*, and\nassigned nodes are not children, so `:empty` is true whenever the fallback is\nabsent whether or not the consumer slotted anything. `:host(:has(...))` is\ninvalid CSS, and the server has no children to inspect.\n\nThe answer matters because an empty wrapper is not free. A region that\ngenerates a box is a flex item or a grid item whether or not it holds\nanything, so it takes the container's gap: an announcement with no actions\npays the row gap twice. `display: none` is the only fix, because only a box\nthat is not generated has no gap beside it.\n\nText or an element, because neither alone is the test. An element on its own\ncounts a whitespace-only span as content; text on its own counts an icon as\nnothing.\n\n`flatten` is deliberate here, unlike the tooltip's emptiness test: this asks\n\"will anything render\", where that one asks \"did the consumer provide\nanything\", and a slot showing its fallback does render."
27669
+ "helix": {}
25037
27670
  }
25038
27671
  ],
25039
27672
  "exports": [
25040
27673
  {
25041
27674
  "kind": "js",
25042
- "name": "slotFilled",
27675
+ "name": "SlottedGlyph",
25043
27676
  "declaration": {
25044
- "name": "slotFilled",
25045
- "module": "src/utils/slot-filled/slot-filled.ts"
27677
+ "name": "SlottedGlyph",
27678
+ "module": "src/utils/slotted-glyph/slotted-glyph.ts"
25046
27679
  }
25047
27680
  }
25048
27681
  ]
@@ -25606,6 +28239,66 @@
25606
28239
  }
25607
28240
  ]
25608
28241
  },
28242
+ {
28243
+ "kind": "javascript-module",
28244
+ "path": "src/utils/toolbar-around/toolbar-around.ts",
28245
+ "declarations": [
28246
+ {
28247
+ "kind": "function",
28248
+ "name": "toolbarAround",
28249
+ "return": {
28250
+ "type": {
28251
+ "text": "Element | null"
28252
+ }
28253
+ },
28254
+ "parameters": [
28255
+ {
28256
+ "name": "element",
28257
+ "type": {
28258
+ "text": "Element"
28259
+ }
28260
+ }
28261
+ ],
28262
+ "description": "The toolbar an element sits in, or `null`.\n\nRead from the parent up, so a toolbar is never its own. One answer for every\nfamily that changes inside a toolbar: Toolbar becomes a group of the outer\none, a multiple Toggle Group becomes a group, and Divider turns across the\ntoolbar's axis. By tag and by role, since a family other than Toolbar cannot\nimport Toolbar's class; Toolbar adds its own class for a third tag.\n\n`closest` stops at a shadow root, which is what a slotted child wants: its\ntoolbar is its light-DOM parent or above."
28263
+ },
28264
+ {
28265
+ "kind": "function",
28266
+ "name": "toolbarAxis",
28267
+ "return": {
28268
+ "type": {
28269
+ "text": "'horizontal' | 'vertical'"
28270
+ }
28271
+ },
28272
+ "parameters": [
28273
+ {
28274
+ "name": "toolbar",
28275
+ "type": {
28276
+ "text": "Element"
28277
+ }
28278
+ }
28279
+ ],
28280
+ "description": "The axis a toolbar runs along: its own `orientation`, else the page's\n`aria-orientation`, else horizontal, which is the role's default."
28281
+ }
28282
+ ],
28283
+ "exports": [
28284
+ {
28285
+ "kind": "js",
28286
+ "name": "toolbarAround",
28287
+ "declaration": {
28288
+ "name": "toolbarAround",
28289
+ "module": "src/utils/toolbar-around/toolbar-around.ts"
28290
+ }
28291
+ },
28292
+ {
28293
+ "kind": "js",
28294
+ "name": "toolbarAxis",
28295
+ "declaration": {
28296
+ "name": "toolbarAxis",
28297
+ "module": "src/utils/toolbar-around/toolbar-around.ts"
28298
+ }
28299
+ }
28300
+ ]
28301
+ },
25609
28302
  {
25610
28303
  "kind": "javascript-module",
25611
28304
  "path": "src/utils/tree-arrow/tree-arrow.ts",
@@ -25781,6 +28474,16 @@
25781
28474
  }
25782
28475
  ],
25783
28476
  "description": "Turns on typeahead for a set whose items have these words. See\n`TypeaheadBy`."
28477
+ },
28478
+ {
28479
+ "kind": "function",
28480
+ "name": "typeaheadByWords",
28481
+ "return": {
28482
+ "type": {
28483
+ "text": "TypeaheadBy<{ readonly words?: string }>"
28484
+ }
28485
+ },
28486
+ "description": "Turns on typeahead for a set whose items carry their own `words`, as List's\nrows, Tag Group's tags and Drilldown's items do. An item with none is\npassed over."
25784
28487
  }
25785
28488
  ],
25786
28489
  "exports": [
@@ -25807,6 +28510,14 @@
25807
28510
  "name": "typeaheadBy",
25808
28511
  "module": "src/utils/typeahead/typeahead.ts"
25809
28512
  }
28513
+ },
28514
+ {
28515
+ "kind": "js",
28516
+ "name": "typeaheadByWords",
28517
+ "declaration": {
28518
+ "name": "typeaheadByWords",
28519
+ "module": "src/utils/typeahead/typeahead.ts"
28520
+ }
25810
28521
  }
25811
28522
  ]
25812
28523
  },
@@ -26202,6 +28913,40 @@
26202
28913
  }
26203
28914
  ]
26204
28915
  },
28916
+ {
28917
+ "kind": "javascript-module",
28918
+ "path": "src/utils/verdict-flags/verdict-flags.ts",
28919
+ "declarations": [
28920
+ {
28921
+ "kind": "function",
28922
+ "name": "verdictFlags",
28923
+ "return": {
28924
+ "type": {
28925
+ "text": "[flags: ValidityStateFlags, message: string] | null"
28926
+ }
28927
+ },
28928
+ "parameters": [
28929
+ {
28930
+ "name": "verdict",
28931
+ "type": {
28932
+ "text": "PickerVerdict"
28933
+ }
28934
+ }
28935
+ ],
28936
+ "description": "A verdict as the flags and the message `setValidity` takes, or `null` where\nthere is nothing wrong.\n\nShared by `MixinPickerField` and `MixinSegmentedField`, the two shapes a\ndate, time or color field takes, which report the same verdicts."
28937
+ }
28938
+ ],
28939
+ "exports": [
28940
+ {
28941
+ "kind": "js",
28942
+ "name": "verdictFlags",
28943
+ "declaration": {
28944
+ "name": "verdictFlags",
28945
+ "module": "src/utils/verdict-flags/verdict-flags.ts"
28946
+ }
28947
+ }
28948
+ ]
28949
+ },
26205
28950
  {
26206
28951
  "kind": "javascript-module",
26207
28952
  "path": "src/utils/watch-labels/watch-labels.ts",
@@ -26504,6 +29249,84 @@
26504
29249
  ],
26505
29250
  "description": "`chosen` with every one of `values` added, or with every one taken out\nwhere each was already in it: a select-all box, or a branch of a checkbox\ntree pressed. `values` empty changes nothing.\n\nWith `order`, the result is put in that order and holds only what `order`\nholds. Without it, what was chosen keeps its place and what is added\nfollows."
26506
29251
  },
29252
+ {
29253
+ "kind": "function",
29254
+ "name": "everyState",
29255
+ "return": {
29256
+ "type": {
29257
+ "text": "{ checked: boolean; indeterminate: boolean }"
29258
+ }
29259
+ },
29260
+ "parameters": [
29261
+ {
29262
+ "name": "chosen",
29263
+ "type": {
29264
+ "text": "Iterable<string>"
29265
+ }
29266
+ },
29267
+ {
29268
+ "name": "values",
29269
+ "type": {
29270
+ "text": "readonly string[]"
29271
+ }
29272
+ }
29273
+ ],
29274
+ "description": "What a select-all box shows for `values`: checked when every one is\nchosen, mixed when some are, and neither for none or an empty set.\n\nCheckbox Group's select-all box and the header boxes of Table and Data\nTable each worked this out. A set that does not count its disabled boxes\npasses only the enabled values."
29275
+ },
29276
+ {
29277
+ "kind": "function",
29278
+ "name": "inRowOrder",
29279
+ "return": {
29280
+ "type": {
29281
+ "text": "string[]"
29282
+ }
29283
+ },
29284
+ "parameters": [
29285
+ {
29286
+ "name": "keys",
29287
+ "type": {
29288
+ "text": "Iterable<string>"
29289
+ }
29290
+ },
29291
+ {
29292
+ "name": "order",
29293
+ "type": {
29294
+ "text": "readonly string[]"
29295
+ }
29296
+ }
29297
+ ],
29298
+ "description": "`keys` in the order the rows are, which is `order`: the keys of the whole\nset. A key the set does not hold, a selected row a search has hidden say,\nkeeps its place after them in the order it was given.\n\nSo a selection reads in row order whatever order its rows were chosen in:\nData Table's, and Table's and Virtual List's, which wrote it in press order\nor wrote this again."
29299
+ },
29300
+ {
29301
+ "kind": "function",
29302
+ "name": "anchorAt",
29303
+ "return": {
29304
+ "type": {
29305
+ "text": "{ anchor: number; anchorKey: string | undefined }"
29306
+ }
29307
+ },
29308
+ "parameters": [
29309
+ {
29310
+ "name": "keys",
29311
+ "type": {
29312
+ "text": "readonly string[]"
29313
+ }
29314
+ },
29315
+ {
29316
+ "name": "anchorKey",
29317
+ "type": {
29318
+ "text": "string | undefined"
29319
+ }
29320
+ },
29321
+ {
29322
+ "name": "from",
29323
+ "type": {
29324
+ "text": "number"
29325
+ }
29326
+ }
29327
+ ],
29328
+ "description": "Where a Shift range runs from, as an index into `keys`: the row last chosen\nwhile it is among them, and otherwise the row the reader is on, `from`,\nwhich becomes the one to run from."
29329
+ },
26507
29330
  {
26508
29331
  "kind": "function",
26509
29332
  "name": "pressedValue",
@@ -26606,6 +29429,30 @@
26606
29429
  "module": "src/utils/written-list/written-list.ts"
26607
29430
  }
26608
29431
  },
29432
+ {
29433
+ "kind": "js",
29434
+ "name": "everyState",
29435
+ "declaration": {
29436
+ "name": "everyState",
29437
+ "module": "src/utils/written-list/written-list.ts"
29438
+ }
29439
+ },
29440
+ {
29441
+ "kind": "js",
29442
+ "name": "inRowOrder",
29443
+ "declaration": {
29444
+ "name": "inRowOrder",
29445
+ "module": "src/utils/written-list/written-list.ts"
29446
+ }
29447
+ },
29448
+ {
29449
+ "kind": "js",
29450
+ "name": "anchorAt",
29451
+ "declaration": {
29452
+ "name": "anchorAt",
29453
+ "module": "src/utils/written-list/written-list.ts"
29454
+ }
29455
+ },
26609
29456
  {
26610
29457
  "kind": "js",
26611
29458
  "name": "pressedValue",
@@ -26634,7 +29481,7 @@
26634
29481
  "type": {
26635
29482
  "text": "string"
26636
29483
  },
26637
- "default": "'0.146.0'",
29484
+ "default": "'0.148.0'",
26638
29485
  "description": "The version of the package this file ships in.\n\n**Written by `fusion/scripts/version.mjs`** wherever it writes the package's\n`package.json`, and stamped back into the repository beside it after a\nrelease, so the two never disagree; a spec beside this holds them to it.\nNothing else in the running code knows which release it is."
26639
29486
  }
26640
29487
  ],
@@ -26652,6 +29499,6 @@
26652
29499
  ],
26653
29500
  "helix": {
26654
29501
  "package": "@fusion.dev/helix-core",
26655
- "version": "0.146.0"
29502
+ "version": "0.148.0"
26656
29503
  }
26657
29504
  }