@fusion.dev/helix-core 0.146.0 → 0.147.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 (84) hide show
  1. package/custom-elements.json +1299 -60
  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/copy-controller/copy-controller.d.ts +4 -1
  6. package/dist/controllers/copy-controller/copy-controller.js +2 -1
  7. package/dist/controllers/countdown-controller/countdown-controller.d.ts +4 -1
  8. package/dist/controllers/countdown-controller/countdown-controller.js +3 -1
  9. package/dist/controllers/keyboard-navigation-controller/keyboard-navigation-controller.d.ts +5 -0
  10. package/dist/controllers/source-controller/source-controller.js +2 -0
  11. package/dist/controllers/swipe-controller/swipe-controller.d.ts +10 -1
  12. package/dist/controllers/swipe-controller/swipe-controller.js +1 -1
  13. package/dist/controllers/virtualize-controller/virtualize-controller.js +8 -6
  14. package/dist/events/band.d.ts +13 -0
  15. package/dist/events/band.js +11 -0
  16. package/dist/events/details.d.ts +5 -0
  17. package/dist/events/events.d.ts +4 -2
  18. package/dist/events/events.js +3 -1
  19. package/dist/events/names.d.ts +3 -0
  20. package/dist/events/names.js +13 -88
  21. package/dist/helix-element/helix-element.js +9 -43
  22. package/dist/helix-element/react-bridge.d.ts +13 -0
  23. package/dist/helix-element/react-bridge.js +1 -1
  24. package/dist/index.d.ts +18 -9
  25. package/dist/index.js +18 -9
  26. package/dist/mixins/mixin-chart-source/mixin-chart-source.d.ts +7 -0
  27. package/dist/mixins/mixin-chart-source/mixin-chart-source.js +1 -0
  28. package/dist/mixins/mixin-dismissible/mixin-dismissible.js +25 -4
  29. package/dist/mixins/mixin-picker-feedback/mixin-picker-feedback.d.ts +42 -0
  30. package/dist/mixins/mixin-picker-feedback/mixin-picker-feedback.js +46 -0
  31. package/dist/mixins/mixin-picker-field/mixin-picker-field.d.ts +2 -11
  32. package/dist/mixins/mixin-picker-field/mixin-picker-field.js +1 -6
  33. package/dist/mixins/mixin-segmented-field/mixin-segmented-field.d.ts +1 -1
  34. package/dist/mixins/mixin-segmented-field/mixin-segmented-field.js +10 -6
  35. package/dist/utils/audit-name/audit-name.d.ts +7 -2
  36. package/dist/utils/audit-name/audit-name.js +12 -3
  37. package/dist/utils/audit-source/audit-source-off.d.ts +10 -0
  38. package/dist/utils/audit-source/audit-source-off.js +1 -0
  39. package/dist/utils/audit-source/audit-source.d.ts +19 -0
  40. package/dist/utils/audit-source/audit-source.js +27 -0
  41. package/dist/utils/call-listener/call-listener.d.ts +16 -0
  42. package/dist/utils/call-listener/call-listener.js +17 -0
  43. package/dist/utils/chord/chord.d.ts +14 -0
  44. package/dist/utils/chord/chord.js +1 -0
  45. package/dist/utils/clamp/clamp.d.ts +7 -0
  46. package/dist/utils/clamp/clamp.js +1 -0
  47. package/dist/utils/css-color/css-color.js +1 -1
  48. package/dist/utils/elapsed-time/elapsed-time.d.ts +1 -1
  49. package/dist/utils/elapsed-time/elapsed-time.js +2 -5
  50. package/dist/utils/host-words/host-words.d.ts +16 -0
  51. package/dist/utils/host-words/host-words.js +13 -0
  52. package/dist/utils/load-more/load-more.d.ts +25 -0
  53. package/dist/utils/load-more/load-more.js +1 -0
  54. package/dist/utils/locale-of/locale-of.d.ts +18 -0
  55. package/dist/utils/locale-of/locale-of.js +26 -0
  56. package/dist/utils/nearest/nearest.d.ts +9 -0
  57. package/dist/utils/nearest/nearest.js +9 -0
  58. package/dist/utils/number-format/number-format.d.ts +9 -0
  59. package/dist/utils/number-format/number-format.js +4 -0
  60. package/dist/utils/own-rule/own-rule.d.ts +16 -0
  61. package/dist/utils/own-rule/own-rule.js +7 -0
  62. package/dist/utils/platform/platform.d.ts +8 -0
  63. package/dist/utils/platform/platform.js +1 -0
  64. package/dist/utils/read-series/read-series.d.ts +14 -0
  65. package/dist/utils/read-series/read-series.js +15 -0
  66. package/dist/utils/relative-time/relative-time.d.ts +8 -0
  67. package/dist/utils/relative-time/relative-time.js +5 -2
  68. package/dist/utils/report-render/report-render.js +2 -14
  69. package/dist/utils/report-runtime/report-runtime.d.ts +5 -1
  70. package/dist/utils/report-runtime/report-runtime.js +2 -14
  71. package/dist/utils/report-usage/report-usage.js +2 -14
  72. package/dist/utils/scroll-item-into-view/scroll-item-into-view.d.ts +33 -0
  73. package/dist/utils/scroll-item-into-view/scroll-item-into-view.js +13 -3
  74. package/dist/utils/slotted-glyph/slotted-glyph.d.ts +33 -0
  75. package/dist/utils/slotted-glyph/slotted-glyph.js +27 -0
  76. package/dist/utils/typeahead/typeahead.d.ts +8 -0
  77. package/dist/utils/typeahead/typeahead.js +1 -0
  78. package/dist/utils/verdict-flags/verdict-flags.d.ts +13 -0
  79. package/dist/utils/verdict-flags/verdict-flags.js +6 -0
  80. package/dist/utils/written-list/written-list.d.ts +31 -0
  81. package/dist/utils/written-list/written-list.js +16 -0
  82. package/dist/version.d.ts +1 -1
  83. package/dist/version.js +1 -1
  84. package/package.json +15 -4
@@ -74,9 +74,11 @@ export class AriaForwardController {
74
74
  continue;
75
75
  }
76
76
  const ids = (this.host.getAttribute(attribute) ?? '').split(/\s+/).filter(Boolean);
77
- const referenced = ids
78
- .map((id) => elementById(this.host, id))
79
- .filter((element) => element !== null);
77
+ const referenced = ids.length > 0
78
+ ? ids
79
+ .map((id) => elementById(this.host, id))
80
+ .filter((element) => element !== null)
81
+ : [...(this.host[property] ?? [])];
80
82
  const elements = referenced.length === 0 && attribute === 'aria-labelledby'
81
83
  ? this.hostLabels(target)
82
84
  : referenced;
@@ -49,6 +49,12 @@ export interface ChartPointerHost extends ReactiveControllerHost, HTMLElement {
49
49
  * The keys pass over a hidden reading, as they pass over a hidden series.
50
50
  */
51
51
  showsReading?(at: number): boolean;
52
+ /**
53
+ * Where PageUp or PageDown goes from the reading at `at`, by place among the
54
+ * readings, for a chart whose page is no fixed count: a calendar's month.
55
+ * Undefined keeps the fixed page.
56
+ */
57
+ pageFrom?(at: number, forward: boolean): number | undefined;
52
58
  /**
53
59
  * The words for where a reading stands among them, with `{position}` and
54
60
  * `{count}` to fill. Absent or empty, no position is said.
@@ -27,6 +27,19 @@ export class ChartPointerController {
27
27
  }
28
28
  return;
29
29
  }
30
+ const paged = (event.key === 'PageDown' || event.key === 'PageUp') && this.at >= 0
31
+ ? this.host.pageFrom?.(this.at, event.key === 'PageDown')
32
+ : undefined;
33
+ if (paged !== undefined && shown.includes(paged)) {
34
+ event.preventDefault();
35
+ if (paged !== this.at) {
36
+ this.at = paged;
37
+ this.keyed = true;
38
+ this.moved = true;
39
+ this.host.requestUpdate();
40
+ }
41
+ return;
42
+ }
30
43
  const next = stepReading(event.key, { at: shown.indexOf(this.at), series: this.series }, {
31
44
  axis: this.axis,
32
45
  count,
@@ -7,8 +7,11 @@ export interface CopyOptions {
7
7
  * On a timer rather than on the pointer leaving, so it survives a hand that
8
8
  * has already moved on: the press and the reading of it are two moments, and
9
9
  * a mark that vanishes with the cursor is one a fast reader never sees.
10
+ *
11
+ * A function is read at each copy, for a host whose duration is a property
12
+ * a page can change, as other controllers' options are.
10
13
  */
11
- after?: number;
14
+ after?: number | (() => number);
12
15
  }
13
16
  /**
14
17
  * Puts text on the clipboard and holds a confirmation for a moment.
@@ -1,5 +1,6 @@
1
1
  import { HelixCopyEvent } from '../../events/events.js';
2
2
  import { deepActiveElement } from '../../utils/focusable-elements/focusable-elements.js';
3
+ const read = (option) => typeof option === 'function' ? option() : option;
3
4
  const write = async (text) => {
4
5
  try {
5
6
  await navigator.clipboard.writeText(text);
@@ -53,7 +54,7 @@ export class CopyController {
53
54
  this.copied = false;
54
55
  this.failed = false;
55
56
  this.host.requestUpdate();
56
- }, this.options.after ?? 1200);
57
+ }, read(this.options.after) ?? 1200);
57
58
  return wrote;
58
59
  }
59
60
  hostDisconnected() {
@@ -46,7 +46,10 @@ export declare class CountdownController implements ReactiveController {
46
46
  pause(): void;
47
47
  /** Runs the clock again from where it stopped. */
48
48
  resume(): void;
49
- /** Stops the clock where it is, as a dismissal does. */
49
+ /**
50
+ * Stops the clock for good, as a dismissal does: nothing is left to resume
51
+ * until the next `start`, so a hold and a release after it run nothing.
52
+ */
50
53
  cancel(): void;
51
54
  /** One more reason to hold the clock, such as a pointer arriving. */
52
55
  hold(): void;
@@ -36,13 +36,15 @@ export class CountdownController {
36
36
  this.startedAt = Date.now();
37
37
  this.options.paused?.(false);
38
38
  this.timer = setTimeout(() => {
39
- this.timer = undefined;
39
+ this.cancel();
40
40
  this.options.done();
41
41
  }, this.remaining);
42
42
  }
43
43
  cancel() {
44
44
  clearTimeout(this.timer);
45
45
  this.timer = undefined;
46
+ this.remaining = undefined;
47
+ this.startedAt = undefined;
46
48
  }
47
49
  hold() {
48
50
  this.holds += 1;
@@ -19,6 +19,11 @@ export interface NavigableItem {
19
19
  select(): void;
20
20
  /** Whether the item is the current one, which is where movement starts. */
21
21
  selected: boolean;
22
+ /**
23
+ * The words a reader types the start of, for a set that types ahead with
24
+ * `typeaheadByWords`.
25
+ */
26
+ readonly words?: string;
22
27
  }
23
28
  /** Where a move starts from: the item that has focus, or the chosen item. */
24
29
  export type KeyboardOrigin = 'focus' | 'selection';
@@ -1,3 +1,4 @@
1
+ import { auditSource } from '#audit-source';
1
2
  import { elementById } from '../../utils/element-by-id/element-by-id.js';
2
3
  import { readRows, readSeries, seriesKey, } from '../../utils/read-series/read-series.js';
3
4
  const HIDDEN = new WeakMap();
@@ -92,6 +93,7 @@ export class SourceController {
92
93
  }
93
94
  hostConnected() {
94
95
  this.watch();
96
+ auditSource(this.host, () => this.resolve());
95
97
  }
96
98
  hostUpdated() {
97
99
  if (this.deferred) {
@@ -10,6 +10,12 @@ export interface SwipeOptions {
10
10
  end: (dx: number, dy: number, vx: number, vy: number) => void;
11
11
  /** Called as the pointer moves, with how far it has gone from the press. */
12
12
  move: (dx: number, dy: number) => void;
13
+ /**
14
+ * How far a press travels before it is a swipe, in pixels: 8 where this is
15
+ * not given. A mouse drag that takes over sooner, such as Carousel's at 4,
16
+ * says so here.
17
+ */
18
+ slop?: number;
13
19
  /**
14
20
  * Whether a press may start a swipe, given the element it landed on. Every
15
21
  * press may where this is not given. A field, a scroller that has its own use
@@ -32,7 +38,10 @@ export interface SwipeOptions {
32
38
  * axis.** Before that it is still a press, so a tap on a button inside the
33
39
  * surface is a tap, and a drag across the axis, a reader scrolling, is left to
34
40
  * the page. Once it is a swipe, the click that ends it is swallowed, so a
35
- * swipe that started on a button does not also press it.
41
+ * swipe that started on a button does not also press it. The swallow is held on
42
+ * the window for one task after the release, so a spec that swipes and then
43
+ * presses a control in the same task sees that press swallowed: wait a task
44
+ * between them, as a reader's next press always does.
36
45
  *
37
46
  * The move and the release are heard on the window, so a pointer that leaves
38
47
  * the surface mid-swipe is still followed.
@@ -34,7 +34,7 @@ export class SwipeController {
34
34
  if (!this.swiping) {
35
35
  const along = Math.abs(axis === 'x' ? dx : dy);
36
36
  const across = Math.abs(axis === 'x' ? dy : dx);
37
- if (Math.max(along, across) < SLOP) {
37
+ if (Math.max(along, across) < (this.options.slop ?? SLOP)) {
38
38
  return;
39
39
  }
40
40
  if (across >= along) {
@@ -1,3 +1,4 @@
1
+ import { endInSight } from '../../utils/load-more/load-more.js';
1
2
  import { reportRuntime } from '../../utils/report-runtime/report-runtime.js';
2
3
  import { Heights } from './heights.js';
3
4
  const UNSTABLE = 10;
@@ -159,12 +160,13 @@ export class VirtualizeController {
159
160
  return Math.max(0, length - Math.max(0, box.scrollTop) - box.clientHeight);
160
161
  }
161
162
  endInSight(length = Math.max(0, this.options.count())) {
162
- const screen = this.options.container()?.clientHeight ?? 0;
163
- if (length === 0 ||
164
- screen <= 0 ||
165
- this.askedAt === length ||
166
- this.options.count() <= 0 ||
167
- this.remaining() > screen) {
163
+ if (this.options.count() <= 0 ||
164
+ !endInSight({
165
+ askedAt: this.askedAt,
166
+ count: length,
167
+ remaining: this.remaining(),
168
+ screen: this.options.container()?.clientHeight ?? 0,
169
+ })) {
168
170
  return false;
169
171
  }
170
172
  this.askedAt = length;
@@ -0,0 +1,13 @@
1
+ import type { BandDetail } from './details.js';
2
+ /**
3
+ * A reading moved into another band: a meter whose value crossed `low`,
4
+ * `high` or `optimum` into `good`, `fair` or `poor`.
5
+ *
6
+ * Sent once for each crossing, not on every value, so a listener can say the
7
+ * change aloud or recolor something else on the page. Not cancelable, since
8
+ * the reading has already moved. Bubbles and is composed.
9
+ */
10
+ export declare class HelixBandEvent extends CustomEvent<BandDetail> {
11
+ static readonly eventName = "helix-band";
12
+ constructor(detail: BandDetail);
13
+ }
@@ -0,0 +1,11 @@
1
+ export class HelixBandEvent extends CustomEvent {
2
+ static { this.eventName = 'helix-band'; }
3
+ constructor(detail) {
4
+ super(HelixBandEvent.eventName, {
5
+ bubbles: true,
6
+ cancelable: false,
7
+ composed: true,
8
+ detail,
9
+ });
10
+ }
11
+ }
@@ -354,6 +354,11 @@ export interface PressDetail {
354
354
  /** What the press came from. */
355
355
  pointerType: PressPointerType;
356
356
  }
357
+ /** Detail carried by `helix-band`. */
358
+ export interface BandDetail {
359
+ /** The band the reading is in now, or `''` where it is in none. */
360
+ band: '' | 'fair' | 'good' | 'poor';
361
+ }
357
362
  /** Detail carried by `helix-tour-status`. */
358
363
  export interface TourStatusDetail {
359
364
  /** The stop it happened at, counting from 0. */
@@ -31,6 +31,7 @@
31
31
  import { HelixActionEvent } from './action.js';
32
32
  import { HelixActivateEvent } from './activate.js';
33
33
  import { HelixAuraFallbackEvent } from './aura-fallback.js';
34
+ import { HelixBandEvent } from './band.js';
34
35
  import { HelixBeforeActivateEvent } from './before-activate.js';
35
36
  import { HelixBeforeChangeEvent } from './before-change.js';
36
37
  import { HelixBeforeCloseEvent } from './before-close.js';
@@ -114,9 +115,9 @@ import { HelixToggleEvent } from './toggle.js';
114
115
  import { HelixTourAskEvent } from './tour-ask.js';
115
116
  import { HelixTourStatusEvent } from './tour-status.js';
116
117
  import { HelixTypingEvent } from './typing.js';
117
- export type { ActivateDetail, AuraFallbackDetail, CanvasView, CaretDetail, ChangeDetail, CompleteDetail, ConnectDetail, ConsoleDetail, CopyDetail, CreateDetail, DismissDetail, FacetDetail, FilterDetail, GraphFilterDetail, GraphLayoutDetail, GraphPartChangeDetail, GraphSignalDetail, MapClusterDetail, MapPanDetail, MapPartChangeDetail, MapRotateDetail, MapTiltDetail, MapZoomDetail, MoveDetail, NavigateDetail, OpenDetail, PressDetail, PressPointerType, RangeDetail, ReadDetail, ReconnectDetail, Refusal, RefusedFile, RejectDetail, RelabelDetail, RemoveDetail, ResizeDetail, ScrolledDetail, SelectDetail, SendDetail, ShortcutDetail, SkipDetail, SortDetail, ToggleDetail, TourAskDetail, TourStatusDetail, TypingDetail, ViewportPanDetail, ViewportZoomDetail, } from './details.js';
118
+ export type { ActivateDetail, AuraFallbackDetail, BandDetail, CanvasView, CaretDetail, ChangeDetail, CompleteDetail, ConnectDetail, ConsoleDetail, CopyDetail, CreateDetail, DismissDetail, FacetDetail, FilterDetail, GraphFilterDetail, GraphLayoutDetail, GraphPartChangeDetail, GraphSignalDetail, MapClusterDetail, MapPanDetail, MapPartChangeDetail, MapRotateDetail, MapTiltDetail, MapZoomDetail, MoveDetail, NavigateDetail, OpenDetail, PressDetail, PressPointerType, RangeDetail, ReadDetail, ReconnectDetail, Refusal, RefusedFile, RejectDetail, RelabelDetail, RemoveDetail, ResizeDetail, ScrolledDetail, SelectDetail, SendDetail, ShortcutDetail, SkipDetail, SortDetail, ToggleDetail, TourAskDetail, TourStatusDetail, TypingDetail, ViewportPanDetail, ViewportZoomDetail, } from './details.js';
118
119
  export { helixEventNames } from './names.js';
119
- export { HelixActionEvent, HelixActivateEvent, HelixAuraFallbackEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCanvasEditEvent, HelixCanvasPanEvent, HelixCanvasViewEvent, HelixCanvasZoomEvent, HelixCaretEvent, HelixClearEvent, HelixCollapseEvent, HelixCompleteEvent, HelixConnectEvent, HelixConsoleEvent, HelixCopyErrorEvent, HelixCopyEvent, HelixCreateEvent, HelixDismissEvent, HelixEditEvent, HelixEndEvent, HelixExpandEvent, HelixFacetEvent, HelixFilterEvent, HelixFilteredEvent, HelixGraphFilterEvent, HelixGraphLayoutEvent, HelixGraphPanEvent, HelixGraphPartChangeEvent, HelixGraphReadyEvent, HelixGraphSignalEvent, HelixGraphZoomEvent, HelixHistoryEvent, HelixLoadEvent, HelixLoadMoreEvent, HelixMapClusterEvent, HelixMapPanEvent, HelixMapPartChangeEvent, HelixMapReadyEvent, HelixMapRotateEvent, HelixMapTiltEvent, HelixMapZoomEvent, HelixMoveEvent, HelixNavigateEvent, HelixNextEvent, HelixPanelResizeEvent, HelixPinEvent, HelixPressEvent, HelixPreviewEvent, HelixPreviousEvent, HelixRangeChangeEvent, HelixReadEvent, HelixReconnectEvent, HelixRejectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixReorderedEvent, HelixResizedEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSelectedEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixSortedEvent, HelixSplitEvent, HelixToggleEvent, HelixTourAskEvent, HelixTourStatusEvent, HelixTypingEvent, };
120
+ export { HelixActionEvent, HelixActivateEvent, HelixAuraFallbackEvent, HelixBandEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCanvasEditEvent, HelixCanvasPanEvent, HelixCanvasViewEvent, HelixCanvasZoomEvent, HelixCaretEvent, HelixClearEvent, HelixCollapseEvent, HelixCompleteEvent, HelixConnectEvent, HelixConsoleEvent, HelixCopyErrorEvent, HelixCopyEvent, HelixCreateEvent, HelixDismissEvent, HelixEditEvent, HelixEndEvent, HelixExpandEvent, HelixFacetEvent, HelixFilterEvent, HelixFilteredEvent, HelixGraphFilterEvent, HelixGraphLayoutEvent, HelixGraphPanEvent, HelixGraphPartChangeEvent, HelixGraphReadyEvent, HelixGraphSignalEvent, HelixGraphZoomEvent, HelixHistoryEvent, HelixLoadEvent, HelixLoadMoreEvent, HelixMapClusterEvent, HelixMapPanEvent, HelixMapPartChangeEvent, HelixMapReadyEvent, HelixMapRotateEvent, HelixMapTiltEvent, HelixMapZoomEvent, HelixMoveEvent, HelixNavigateEvent, HelixNextEvent, HelixPanelResizeEvent, HelixPinEvent, HelixPressEvent, HelixPreviewEvent, HelixPreviousEvent, HelixRangeChangeEvent, HelixReadEvent, HelixReconnectEvent, HelixRejectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixReorderedEvent, HelixResizedEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSelectedEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixSortedEvent, HelixSplitEvent, HelixToggleEvent, HelixTourAskEvent, HelixTourStatusEvent, HelixTypingEvent, };
120
121
  /**
121
122
  * Every event class, and the one place a new one is registered: a class in a
122
123
  * module of its own, imported above, and named here and in `names.ts`.
@@ -133,6 +134,7 @@ declare const registry: {
133
134
  readonly HelixActionEvent: typeof HelixActionEvent;
134
135
  readonly HelixActivateEvent: typeof HelixActivateEvent;
135
136
  readonly HelixAuraFallbackEvent: typeof HelixAuraFallbackEvent;
137
+ readonly HelixBandEvent: typeof HelixBandEvent;
136
138
  readonly HelixBeforeActivateEvent: typeof HelixBeforeActivateEvent;
137
139
  readonly HelixBeforeChangeEvent: typeof HelixBeforeChangeEvent;
138
140
  readonly HelixBeforeCloseEvent: typeof HelixBeforeCloseEvent;
@@ -1,6 +1,7 @@
1
1
  import { HelixActionEvent } from './action.js';
2
2
  import { HelixActivateEvent } from './activate.js';
3
3
  import { HelixAuraFallbackEvent } from './aura-fallback.js';
4
+ import { HelixBandEvent } from './band.js';
4
5
  import { HelixBeforeActivateEvent } from './before-activate.js';
5
6
  import { HelixBeforeChangeEvent } from './before-change.js';
6
7
  import { HelixBeforeCloseEvent } from './before-close.js';
@@ -85,11 +86,12 @@ import { HelixTourAskEvent } from './tour-ask.js';
85
86
  import { HelixTourStatusEvent } from './tour-status.js';
86
87
  import { HelixTypingEvent } from './typing.js';
87
88
  export { helixEventNames } from './names.js';
88
- export { HelixActionEvent, HelixActivateEvent, HelixAuraFallbackEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCanvasEditEvent, HelixCanvasPanEvent, HelixCanvasViewEvent, HelixCanvasZoomEvent, HelixCaretEvent, HelixClearEvent, HelixCollapseEvent, HelixCompleteEvent, HelixConnectEvent, HelixConsoleEvent, HelixCopyErrorEvent, HelixCopyEvent, HelixCreateEvent, HelixDismissEvent, HelixEditEvent, HelixEndEvent, HelixExpandEvent, HelixFacetEvent, HelixFilterEvent, HelixFilteredEvent, HelixGraphFilterEvent, HelixGraphLayoutEvent, HelixGraphPanEvent, HelixGraphPartChangeEvent, HelixGraphReadyEvent, HelixGraphSignalEvent, HelixGraphZoomEvent, HelixHistoryEvent, HelixLoadEvent, HelixLoadMoreEvent, HelixMapClusterEvent, HelixMapPanEvent, HelixMapPartChangeEvent, HelixMapReadyEvent, HelixMapRotateEvent, HelixMapTiltEvent, HelixMapZoomEvent, HelixMoveEvent, HelixNavigateEvent, HelixNextEvent, HelixPanelResizeEvent, HelixPinEvent, HelixPressEvent, HelixPreviewEvent, HelixPreviousEvent, HelixRangeChangeEvent, HelixReadEvent, HelixReconnectEvent, HelixRejectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixReorderedEvent, HelixResizedEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSelectedEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixSortedEvent, HelixSplitEvent, HelixToggleEvent, HelixTourAskEvent, HelixTourStatusEvent, HelixTypingEvent, };
89
+ export { HelixActionEvent, HelixActivateEvent, HelixAuraFallbackEvent, HelixBandEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCanvasEditEvent, HelixCanvasPanEvent, HelixCanvasViewEvent, HelixCanvasZoomEvent, HelixCaretEvent, HelixClearEvent, HelixCollapseEvent, HelixCompleteEvent, HelixConnectEvent, HelixConsoleEvent, HelixCopyErrorEvent, HelixCopyEvent, HelixCreateEvent, HelixDismissEvent, HelixEditEvent, HelixEndEvent, HelixExpandEvent, HelixFacetEvent, HelixFilterEvent, HelixFilteredEvent, HelixGraphFilterEvent, HelixGraphLayoutEvent, HelixGraphPanEvent, HelixGraphPartChangeEvent, HelixGraphReadyEvent, HelixGraphSignalEvent, HelixGraphZoomEvent, HelixHistoryEvent, HelixLoadEvent, HelixLoadMoreEvent, HelixMapClusterEvent, HelixMapPanEvent, HelixMapPartChangeEvent, HelixMapReadyEvent, HelixMapRotateEvent, HelixMapTiltEvent, HelixMapZoomEvent, HelixMoveEvent, HelixNavigateEvent, HelixNextEvent, HelixPanelResizeEvent, HelixPinEvent, HelixPressEvent, HelixPreviewEvent, HelixPreviousEvent, HelixRangeChangeEvent, HelixReadEvent, HelixReconnectEvent, HelixRejectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixReorderedEvent, HelixResizedEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSelectedEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixSortedEvent, HelixSplitEvent, HelixToggleEvent, HelixTourAskEvent, HelixTourStatusEvent, HelixTypingEvent, };
89
90
  const registry = {
90
91
  HelixActionEvent,
91
92
  HelixActivateEvent,
92
93
  HelixAuraFallbackEvent,
94
+ HelixBandEvent,
93
95
  HelixBeforeActivateEvent,
94
96
  HelixBeforeChangeEvent,
95
97
  HelixBeforeCloseEvent,
@@ -11,5 +11,8 @@
11
11
  * bundle: a Badge shipped all eighty of them. As strings, a family ships the
12
12
  * classes it dispatches and no others. `events.pure.spec.ts` holds this list to
13
13
  * the classes, so a class added without its name here fails.
14
+ *
15
+ * **Without the shared `helix-`, and separated by spaces.** Every element carries this
16
+ * list, and as quoted strings each paid its quotes, its comma and the prefix.
14
17
  */
15
18
  export declare const helixEventNames: ReadonlySet<string>;
@@ -1,88 +1,13 @@
1
- export const helixEventNames = new Set([
2
- 'helix-action',
3
- 'helix-activate',
4
- 'helix-aura-fallback',
5
- 'helix-before-activate',
6
- 'helix-before-change',
7
- 'helix-before-close',
8
- 'helix-before-collapse',
9
- 'helix-before-edit',
10
- 'helix-before-move',
11
- 'helix-before-open',
12
- 'helix-before-panel-resize',
13
- 'helix-before-pin',
14
- 'helix-before-reconnect',
15
- 'helix-before-relabel',
16
- 'helix-before-resize',
17
- 'helix-before-split',
18
- 'helix-before-toggle',
19
- 'helix-canvas-edit',
20
- 'helix-canvas-pan',
21
- 'helix-canvas-view',
22
- 'helix-canvas-zoom',
23
- 'helix-caret',
24
- 'helix-clear',
25
- 'helix-collapse',
26
- 'helix-complete',
27
- 'helix-connect',
28
- 'helix-console',
29
- 'helix-copy',
30
- 'helix-copy-error',
31
- 'helix-create',
32
- 'helix-dismiss',
33
- 'helix-edit',
34
- 'helix-end',
35
- 'helix-expand',
36
- 'helix-facet',
37
- 'helix-filter',
38
- 'helix-filtered',
39
- 'helix-graph-filter',
40
- 'helix-graph-layout',
41
- 'helix-graph-pan',
42
- 'helix-graph-part-change',
43
- 'helix-graph-ready',
44
- 'helix-graph-signal',
45
- 'helix-graph-zoom',
46
- 'helix-history',
47
- 'helix-load',
48
- 'helix-load-more',
49
- 'helix-map-cluster',
50
- 'helix-map-pan',
51
- 'helix-map-part-change',
52
- 'helix-map-ready',
53
- 'helix-map-rotate',
54
- 'helix-map-tilt',
55
- 'helix-map-zoom',
56
- 'helix-move',
57
- 'helix-navigate',
58
- 'helix-next',
59
- 'helix-panel-resize',
60
- 'helix-pin',
61
- 'helix-press',
62
- 'helix-preview',
63
- 'helix-previous',
64
- 'helix-range-change',
65
- 'helix-read',
66
- 'helix-reconnect',
67
- 'helix-reject',
68
- 'helix-relabel',
69
- 'helix-remove',
70
- 'helix-reorder',
71
- 'helix-reordered',
72
- 'helix-resize',
73
- 'helix-resized',
74
- 'helix-sample-end',
75
- 'helix-sample-start',
76
- 'helix-scrolled',
77
- 'helix-select',
78
- 'helix-selected',
79
- 'helix-send',
80
- 'helix-shortcut',
81
- 'helix-sort',
82
- 'helix-sorted',
83
- 'helix-split',
84
- 'helix-toggle',
85
- 'helix-tour-ask',
86
- 'helix-tour-status',
87
- 'helix-typing',
88
- ]);
1
+ export const helixEventNames = new Set(('action activate aura-fallback band before-activate before-change before-close ' +
2
+ 'before-collapse before-edit before-move before-open before-panel-resize before-pin ' +
3
+ 'before-reconnect before-relabel before-resize before-split before-toggle ' +
4
+ 'canvas-edit canvas-pan canvas-view canvas-zoom caret clear collapse complete ' +
5
+ 'connect console copy copy-error create dismiss edit end expand facet filter ' +
6
+ 'filtered graph-filter graph-layout graph-pan graph-part-change graph-ready ' +
7
+ 'graph-signal graph-zoom history load load-more map-cluster map-pan map-part-change ' +
8
+ 'map-ready map-rotate map-tilt map-zoom move navigate next panel-resize pin press ' +
9
+ 'preview previous range-change read reconnect reject relabel remove reorder ' +
10
+ 'reordered resize resized sample-end sample-start scrolled select selected send ' +
11
+ 'shortcut sort sorted split toggle tour-ask tour-status typing')
12
+ .split(' ')
13
+ .map((name) => `helix-${name}`));
@@ -1,41 +1,15 @@
1
- import { css, LitElement } from 'lit';
1
+ import { LitElement, unsafeCSS } from 'lit';
2
2
  import { unsafeStatic } from 'lit/static-html.js';
3
3
  import { measuring, reportRender } from '../utils/report-render/report-render.js';
4
4
  import { noteVersion, reportUsage } from '../utils/report-usage/report-usage.js';
5
5
  import { applyReactProperties, auditReactProps, bindReactHandler, reactPropsOf, } from './react-bridge.js';
6
- const BOX_SIZING = css `
7
- *,
8
- ::before,
9
- ::after {
10
- box-sizing: border-box;
11
- }
12
- `;
13
- const HIDDEN = css `
14
- :host([hidden]:not([hidden='until-found'])) {
15
- display: none;
16
- }
17
- `;
18
- const SCROLLER = css `
19
- [data-scroller] {
20
- overflow: auto;
21
- }
22
- `;
23
- const VIRTUAL = css `
24
- [data-virtual] {
25
- overflow-anchor: none;
26
- }
27
- `;
28
- const MIRROR = css `
29
- :host(:dir(rtl)) [data-mirror] {
30
- scale: -1 1;
31
- }
32
- `;
33
- const SETTLED = css `
34
- :host(:not(:state(settled))),
35
- :host(:not(:state(settled))) * {
36
- transition: none !important;
37
- }
38
- `;
6
+ const BOX_SIZING = '*,::before,::after{box-sizing:border-box}';
7
+ const HIDDEN = ":host([hidden]:not([hidden='until-found'])){display:none}";
8
+ const SCROLLER = '[data-scroller]{overflow:auto}';
9
+ const VIRTUAL = '[data-virtual]{overflow-anchor:none}';
10
+ const MIRROR = ':host(:dir(rtl)) [data-mirror]{scale:-1 1}';
11
+ const SETTLED = ':host(:not(:state(settled))),:host(:not(:state(settled))) *{transition:none!important}';
12
+ const BASE = unsafeCSS(BOX_SIZING + HIDDEN + SCROLLER + VIRTUAL + MIRROR + SETTLED);
39
13
  const LOOK_EVERY = 16;
40
14
  const LOOK_FOR = 96;
41
15
  export class HelixElement extends LitElement {
@@ -117,15 +91,7 @@ export class HelixElement extends LitElement {
117
91
  }));
118
92
  }
119
93
  static finalizeStyles(styles) {
120
- return [
121
- BOX_SIZING,
122
- HIDDEN,
123
- SCROLLER,
124
- VIRTUAL,
125
- MIRROR,
126
- SETTLED,
127
- ...LitElement.finalizeStyles(styles),
128
- ];
94
+ return [BASE, ...LitElement.finalizeStyles(styles)];
129
95
  }
130
96
  performUpdate() {
131
97
  if (this.hasUpdated || !measuring()) {
@@ -56,6 +56,19 @@ export declare const auditReactProps: (host: EventTarget, props: Record<string,
56
56
  * `reactNativeProp`.
57
57
  */
58
58
  export declare const reactPropFor: (event: Event) => string | undefined;
59
+ /**
60
+ * React's casing for the native events whose names are two words run together.
61
+ *
62
+ * React spells these as two words, `onTimeUpdate` for `timeupdate`, and that
63
+ * is the prop its own `<video>` typings teach a consumer to write. The media
64
+ * names are the ones `Video` relays from its inner `<video>`; `scrollend` is
65
+ * `Scroll Area`'s. A single word needs no entry: its first letter is the whole
66
+ * of the rule.
67
+ *
68
+ * `@fusion.dev/helix-cem` keeps the same table for the typings it writes, and
69
+ * its spec holds that copy to this one.
70
+ */
71
+ export declare const REACT_CASING: Readonly<Record<string, string>>;
59
72
  /**
60
73
  * The prop React reads for a native event: `onError` for `error`, and
61
74
  * `onTimeUpdate` for `timeupdate`.
@@ -78,7 +78,7 @@ export const reactPropFor = (event) => {
78
78
  }
79
79
  return reactNativeProp(event.type);
80
80
  };
81
- const REACT_CASING = {
81
+ export const REACT_CASING = {
82
82
  canplay: 'onCanPlay',
83
83
  canplaythrough: 'onCanPlayThrough',
84
84
  durationchange: 'onDurationChange',
package/dist/index.d.ts CHANGED
@@ -30,10 +30,10 @@ export { SwipeController, type SwipeOptions, } from './controllers/swipe-control
30
30
  export { type TokenColor, TokenColorController, } from './controllers/token-color-controller/token-color-controller.js';
31
31
  export { type Rendered, VirtualizeController, type VirtualizeOptions, type Window as VirtualizeWindow, } from './controllers/virtualize-controller/virtualize-controller.js';
32
32
  export { eventsForTag, registerElementEvents } from './events/element-events.js';
33
- export { type ActivateDetail, type AuraFallbackDetail, type CanvasView, type CaretDetail, type ChangeDetail, type CompleteDetail, type ConnectDetail, type ConsoleDetail, type CopyDetail, type CreateDetail, type DismissDetail, type FacetDetail, type FilterDetail, type GraphFilterDetail, type GraphLayoutDetail, type GraphPartChangeDetail, type GraphSignalDetail, HelixActionEvent, HelixActivateEvent, HelixAuraFallbackEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCanvasEditEvent, HelixCanvasPanEvent, HelixCanvasViewEvent, HelixCanvasZoomEvent, HelixCaretEvent, HelixClearEvent, HelixCollapseEvent, HelixCompleteEvent, HelixConnectEvent, HelixConsoleEvent, HelixCopyErrorEvent, HelixCopyEvent, HelixCreateEvent, HelixDismissEvent, HelixEditEvent, HelixEndEvent, HelixExpandEvent, HelixFacetEvent, HelixFilterEvent, HelixFilteredEvent, HelixGraphFilterEvent, HelixGraphLayoutEvent, HelixGraphPanEvent, HelixGraphPartChangeEvent, HelixGraphReadyEvent, HelixGraphSignalEvent, HelixGraphZoomEvent, HelixHistoryEvent, HelixLoadEvent, HelixLoadMoreEvent, HelixMapClusterEvent, HelixMapPanEvent, HelixMapPartChangeEvent, HelixMapReadyEvent, HelixMapRotateEvent, HelixMapTiltEvent, HelixMapZoomEvent, HelixMoveEvent, HelixNavigateEvent, HelixNextEvent, HelixPanelResizeEvent, HelixPinEvent, HelixPressEvent, HelixPreviewEvent, HelixPreviousEvent, HelixRangeChangeEvent, HelixReadEvent, HelixReconnectEvent, HelixRejectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixReorderedEvent, HelixResizedEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSelectedEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixSortedEvent, HelixSplitEvent, HelixToggleEvent, HelixTourAskEvent, HelixTourStatusEvent, HelixTypingEvent, type MapClusterDetail, type MapPanDetail, type MapPartChangeDetail, type MapRotateDetail, type MapTiltDetail, type MapZoomDetail, type MoveDetail, type NavigateDetail, type OpenDetail, type PressDetail, type PressPointerType, type RangeDetail, type ReadDetail, type ReconnectDetail, type Refusal, type RefusedFile, type RejectDetail, type RelabelDetail, type RemoveDetail, type ResizeDetail, type ScrolledDetail, type SelectDetail, type SendDetail, type ShortcutDetail, type SkipDetail, type SortDetail, type ToggleDetail, type TourStatusDetail, type TypingDetail, type ViewportPanDetail, type ViewportZoomDetail, } from './events/events.js';
33
+ export { type ActivateDetail, type AuraFallbackDetail, type BandDetail, type CanvasView, type CaretDetail, type ChangeDetail, type CompleteDetail, type ConnectDetail, type ConsoleDetail, type CopyDetail, type CreateDetail, type DismissDetail, type FacetDetail, type FilterDetail, type GraphFilterDetail, type GraphLayoutDetail, type GraphPartChangeDetail, type GraphSignalDetail, HelixActionEvent, HelixActivateEvent, HelixAuraFallbackEvent, HelixBandEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCanvasEditEvent, HelixCanvasPanEvent, HelixCanvasViewEvent, HelixCanvasZoomEvent, HelixCaretEvent, HelixClearEvent, HelixCollapseEvent, HelixCompleteEvent, HelixConnectEvent, HelixConsoleEvent, HelixCopyErrorEvent, HelixCopyEvent, HelixCreateEvent, HelixDismissEvent, HelixEditEvent, HelixEndEvent, HelixExpandEvent, HelixFacetEvent, HelixFilterEvent, HelixFilteredEvent, HelixGraphFilterEvent, HelixGraphLayoutEvent, HelixGraphPanEvent, HelixGraphPartChangeEvent, HelixGraphReadyEvent, HelixGraphSignalEvent, HelixGraphZoomEvent, HelixHistoryEvent, HelixLoadEvent, HelixLoadMoreEvent, HelixMapClusterEvent, HelixMapPanEvent, HelixMapPartChangeEvent, HelixMapReadyEvent, HelixMapRotateEvent, HelixMapTiltEvent, HelixMapZoomEvent, HelixMoveEvent, HelixNavigateEvent, HelixNextEvent, HelixPanelResizeEvent, HelixPinEvent, HelixPressEvent, HelixPreviewEvent, HelixPreviousEvent, HelixRangeChangeEvent, HelixReadEvent, HelixReconnectEvent, HelixRejectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixReorderedEvent, HelixResizedEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSelectedEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixSortedEvent, HelixSplitEvent, HelixToggleEvent, HelixTourAskEvent, HelixTourStatusEvent, HelixTypingEvent, type MapClusterDetail, type MapPanDetail, type MapPartChangeDetail, type MapRotateDetail, type MapTiltDetail, type MapZoomDetail, type MoveDetail, type NavigateDetail, type OpenDetail, type PressDetail, type PressPointerType, type RangeDetail, type ReadDetail, type ReconnectDetail, type Refusal, type RefusedFile, type RejectDetail, type RelabelDetail, type RemoveDetail, type ResizeDetail, type ScrolledDetail, type SelectDetail, type SendDetail, type ShortcutDetail, type SkipDetail, type SortDetail, type ToggleDetail, type TourStatusDetail, type TypingDetail, type ViewportPanDetail, type ViewportZoomDetail, } from './events/events.js';
34
34
  export { HelixElement, whenHydrated } from './helix-element/helix-element.js';
35
35
  export { HelixFormElement } from './helix-form-element/helix-form-element.js';
36
- export { MixinChartSource, type MixinChartSourceInterface, PALETTE, PLOT_HEIGHT, PLOT_WIDTH, seriesIndex, seriesNames, } from './mixins/mixin-chart-source/mixin-chart-source.js';
36
+ export { MixinChartSource, type MixinChartSourceInterface, PALETTE, PLOT_HEIGHT, PLOT_WIDTH, POSITION_LABEL, seriesIndex, seriesNames, } from './mixins/mixin-chart-source/mixin-chart-source.js';
37
37
  export { type CollectionElement, MixinCollection, } from './mixins/mixin-collection/mixin-collection.js';
38
38
  export { MixinControllerActive, type MixinControllerActiveInterface, } from './mixins/mixin-controller-active/mixin-controller-active.js';
39
39
  export { MixinControllerChecked, type MixinControllerCheckedInterface, } from './mixins/mixin-controller-checked/mixin-controller-checked.js';
@@ -42,6 +42,7 @@ export { MixinControllerValue, type MixinControllerValueInterface, } from './mix
42
42
  export { type DismissibleElement, MixinDismissible, } from './mixins/mixin-dismissible/mixin-dismissible.js';
43
43
  export { MixinField, type MixinFieldInterface } from './mixins/mixin-field/mixin-field.js';
44
44
  export { MixinPickerEditing, type MixinPickerEditingInterface, } from './mixins/mixin-picker-editing/mixin-picker-editing.js';
45
+ export { MixinPickerFeedback, type MixinPickerFeedbackInterface, } from './mixins/mixin-picker-feedback/mixin-picker-feedback.js';
45
46
  export { MixinPickerField, type MixinPickerFieldInterface, } from './mixins/mixin-picker-field/mixin-picker-field.js';
46
47
  export { MixinSegmentedField, type MixinSegmentedFieldInterface, } from './mixins/mixin-segmented-field/mixin-segmented-field.js';
47
48
  export { MixinSelectableItem, type MixinSelectableItemInterface, } from './mixins/mixin-selectable-item/mixin-selectable-item.js';
@@ -51,7 +52,8 @@ export { anchorElement } from './utils/anchor-element/anchor-element.js';
51
52
  export { arrowReach, sideOf } from './utils/arrow/arrow.js';
52
53
  export { addDays, addMonths, type Barring, barredBy, type CalendarView, localToday, monthOf, monthOut, type PeriodCell, type PeriodPage, periodCells, periodKey, periodMove, sameMonth, weekStartOf, YEARS_SHOWN, yearOut, yearPageOf, } from './utils/calendar/calendar.js';
53
54
  export { capturePointer } from './utils/capture-pointer/capture-pointer.js';
54
- export { ariaChord, type ChordPress, chordParts, matchesChord, printableChord, } from './utils/chord/chord.js';
55
+ export { ariaChord, type ChordPress, chordParts, matchesChord, printableChord, selectsAll, } from './utils/chord/chord.js';
56
+ export { clamp } from './utils/clamp/clamp.js';
55
57
  export { clockLocale, dayPeriod, type HourCycle, isTwelveHour, nearestTime, offeredTimes, type TimeFault, type TimeRules, timeBarred, timeFault, wheelParts, wholeHour, } from './utils/clock/clock.js';
56
58
  export { closestInstance } from './utils/closest-instance/closest-instance.js';
57
59
  export { type ColorWords, colorName, hueName } from './utils/color-name/color-name.js';
@@ -72,22 +74,28 @@ export { formatNumbers } from './utils/format-numbers/format-numbers.js';
72
74
  export { headingIn, headingsIn } from './utils/heading-in/heading-in.js';
73
75
  export { headingLevel } from './utils/heading-level/heading-level.js';
74
76
  export { type HostAria, hostAria } from './utils/host-aria/host-aria.js';
77
+ export { hostWords } from './utils/host-words/host-words.js';
75
78
  export { defaultButton, submitImplicitly, submits, submitsOnEnter, } from './utils/implicit-submit/implicit-submit.js';
76
79
  export { type DisableableItem, forgetDisabled, inheritDisabled, } from './utils/inherit-disabled/inherit-disabled.js';
77
80
  export { inlineStep } from './utils/inline-step/inline-step.js';
78
81
  export { isRtl } from './utils/is-rtl/is-rtl.js';
79
82
  export { keyClaimed } from './utils/key-claimed/key-claimed.js';
80
83
  export { type Curve, linePath, type Point } from './utils/line-path/line-path.js';
84
+ export { type EndInSight, endInSight } from './utils/load-more/load-more.js';
85
+ export { localeOf } from './utils/locale-of/locale-of.js';
81
86
  export { markRegion, type RegionOptions } from './utils/mark-region/mark-region.js';
82
87
  export { copiesOf, type MediaCopy, sameCopies, } from './utils/media-copy/media-copy.js';
83
- export { formatNumber, parseNumber } from './utils/number-format/number-format.js';
88
+ export { nameText } from './utils/name-text/name-text.js';
89
+ export { nearest } from './utils/nearest/nearest.js';
90
+ export { formatNumber, parseNumber, readingText } from './utils/number-format/number-format.js';
84
91
  export { onUnlessFalse } from './utils/on-unless-false/on-unless-false.js';
92
+ export { applyOwnRule, type OwnRule } from './utils/own-rule/own-rule.js';
85
93
  export { plainClick } from './utils/plain-click/plain-click.js';
86
- export { appleTouch, onApple, type Platform } from './utils/platform/platform.js';
94
+ export { appleTouch, onAndroid, onApple, type Platform } from './utils/platform/platform.js';
87
95
  export { pressType, type RecentPress } from './utils/press-type/press-type.js';
88
96
  export { rangeAdd } from './utils/range-add/range-add.js';
89
97
  export { type ColorBytes, readColor, rgbOf } from './utils/read-color/read-color.js';
90
- export { byRow, type Row, type RowCell, readRows, readSeries, type Series, type SeriesPoint, seriesKey, unbroken, } from './utils/read-series/read-series.js';
98
+ export { byRow, type Extremes, extremesOf, type Row, type RowCell, readRows, readSeries, type Series, type SeriesPoint, seriesKey, unbroken, } from './utils/read-series/read-series.js';
91
99
  export { type ElementsProperty, linkDescription, reflectElements, unlinkDescription, } from './utils/reflect-elements/reflect-elements.js';
92
100
  export { type Relative, type RelativeOptions, relativeTime, } from './utils/relative-time/relative-time.js';
93
101
  export { measuring, RENDER_SLOT, reportRender } from './utils/report-render/report-render.js';
@@ -102,9 +110,10 @@ export { valueAt } from './utils/row-data/row-data.js';
102
110
  export { type Arranged, type Axis, arranged, cycle, type DataRow, filter, format, type Ordered, ordered, parse, type Sort, sort, window_, } from './utils/row-order/row-order.js';
103
111
  export { extent, linear, type Scale } from './utils/scale/scale.js';
104
112
  export { ticks } from './utils/scale/ticks.js';
105
- export { type ScrollItemOptions, scrollItemIntoView, } from './utils/scroll-item-into-view/scroll-item-into-view.js';
113
+ export { type ScrollerOptions, type ScrollItemOptions, scrollItemIntoView, scrollingAncestor, } from './utils/scroll-item-into-view/scroll-item-into-view.js';
106
114
  export { lockScroll, scrollHolders, unlockScroll } from './utils/scroll-lock/scroll-lock.js';
107
115
  export { slotFilled } from './utils/slot-filled/slot-filled.js';
116
+ export { SlottedGlyph } from './utils/slotted-glyph/slotted-glyph.js';
108
117
  export { slottedWords } from './utils/slotted-words/slotted-words.js';
109
118
  export { splitValues } from './utils/split-values/split-values.js';
110
119
  export { edgeOffset, FLING, parseSnapPoints, type SwipeAxis, type SwipeEdge, type SwipeRelease, settleSwipe, snapTravel, swipeAxis, swipeEdge, swipeStep, towardEdge, } from './utils/swipe/swipe.js';
@@ -112,10 +121,10 @@ export { tellDisclosure } from './utils/tell-disclosure/tell-disclosure.js';
112
121
  export { subscribe } from './utils/ticker/ticker.js';
113
122
  export { type HelixStatusTone, TONE_MARKS, type ToneMark, toneMark, } from './utils/tone-marks/tone-marks.js';
114
123
  export { type TreeArrow, type TreeArrowRow, treeArrow } from './utils/tree-arrow/tree-arrow.js';
115
- export { Typeahead, type TypeaheadBy, typeaheadBy, typesCharacter, } from './utils/typeahead/typeahead.js';
124
+ export { Typeahead, type TypeaheadBy, typeaheadBy, typeaheadByWords, typesCharacter, } from './utils/typeahead/typeahead.js';
116
125
  export { dateAsValue, isClockValue, isDateValue, isTimeValue, minutesAsValue, numberAsValue, secondsAsValue, timeAsValue, valueAsDate, valueAsMinutes, valueAsNumber, valueAsSeconds, valueAsTime, } from './utils/value-as/value-as.js';
117
126
  export { watchTheme } from './utils/watch-theme/watch-theme.js';
118
127
  export { wordsConverter } from './utils/words-converter/words-converter.js';
119
128
  export { writeClock, writeTime } from './utils/write-time/write-time.js';
120
- export { commaList, pressedValue, prunedValue, type SelectionMode, toggleEvery, toggleValue, writtenList, writtenNumbers, } from './utils/written-list/written-list.js';
129
+ export { anchorAt, commaList, everyState, inRowOrder, pressedValue, prunedValue, type SelectionMode, toggleEvery, toggleValue, writtenList, writtenNumbers, } from './utils/written-list/written-list.js';
121
130
  export { VERSION } from './version.js';