@fusion.dev/helix-core 0.147.0 → 0.149.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 (124) hide show
  1. package/custom-elements.json +16160 -12084
  2. package/dist/controllers/aria-forward-controller/aria-forward-controller.js +1 -1
  3. package/dist/controllers/chart-pointer-controller/chart-pointer-controller.d.ts +2 -2
  4. package/dist/controllers/chart-pointer-controller/chart-pointer-controller.js +5 -4
  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/countdown-controller/countdown-controller.d.ts +15 -1
  8. package/dist/controllers/countdown-controller/countdown-controller.js +27 -2
  9. package/dist/controllers/floating-controller/floating-controller.d.ts +12 -1
  10. package/dist/controllers/floating-controller/floating-controller.js +2 -1
  11. package/dist/controllers/keyboard-navigation-controller/keyboard-navigation-controller.d.ts +25 -0
  12. package/dist/controllers/keyboard-navigation-controller/keyboard-navigation-controller.js +8 -0
  13. package/dist/controllers/machine-controller/machine-controller.d.ts +69 -0
  14. package/dist/controllers/machine-controller/machine-controller.js +78 -0
  15. package/dist/controllers/machine-controller/machine.d.ts +93 -0
  16. package/dist/controllers/machine-controller/machine.js +20 -0
  17. package/dist/controllers/open-phase-controller/open-phase-controller.d.ts +10 -0
  18. package/dist/controllers/open-phase-controller/open-phase-controller.js +7 -4
  19. package/dist/controllers/option-window-controller/option-window-controller.d.ts +96 -0
  20. package/dist/controllers/option-window-controller/option-window-controller.js +81 -0
  21. package/dist/controllers/popover-controller/popover-controller.js +1 -1
  22. package/dist/controllers/reorder-controller/reorder-controller.d.ts +285 -0
  23. package/dist/controllers/reorder-controller/reorder-controller.js +497 -0
  24. package/dist/controllers/source-controller/source-controller.js +1 -1
  25. package/dist/controllers/virtualize-controller/heights.js +1 -1
  26. package/dist/controllers/virtualize-controller/virtualize-controller.d.ts +117 -3
  27. package/dist/controllers/virtualize-controller/virtualize-controller.js +134 -32
  28. package/dist/events/before-reorder.d.ts +14 -0
  29. package/dist/events/before-reorder.js +11 -0
  30. package/dist/events/details.d.ts +28 -0
  31. package/dist/events/events.d.ts +4 -2
  32. package/dist/events/events.js +3 -1
  33. package/dist/events/names.js +1 -1
  34. package/dist/events/reorder.d.ts +18 -12
  35. package/dist/events/reordered.d.ts +4 -4
  36. package/dist/helix-element/helix-element.d.ts +14 -5
  37. package/dist/helix-element/helix-element.js +6 -3
  38. package/dist/helix-element/react-audit-off.d.ts +11 -0
  39. package/dist/helix-element/react-audit-off.js +1 -0
  40. package/dist/helix-element/react-audit.d.ts +20 -0
  41. package/dist/helix-element/react-audit.js +56 -0
  42. package/dist/helix-element/react-bridge.d.ts +2 -22
  43. package/dist/helix-element/react-bridge.js +1 -56
  44. package/dist/index.d.ts +34 -14
  45. package/dist/index.js +32 -12
  46. package/dist/mixins/mixin-chart-source/mixin-chart-source.d.ts +7 -2
  47. package/dist/mixins/mixin-chart-source/mixin-chart-source.js +6 -0
  48. package/dist/mixins/mixin-collection/mixin-collection.js +4 -0
  49. package/dist/mixins/mixin-dismissible/mixin-dismissible.js +3 -0
  50. package/dist/mixins/mixin-field/mixin-field.js +1 -1
  51. package/dist/mixins/mixin-segmented-field/mixin-segmented-field.d.ts +12 -0
  52. package/dist/mixins/mixin-segmented-field/mixin-segmented-field.js +15 -2
  53. package/dist/mixins/mixin-tokens/mixin-tokens.d.ts +5 -0
  54. package/dist/mixins/mixin-tokens/mixin-tokens.js +13 -2
  55. package/dist/mixins/mixin-viewport/mixin-viewport.d.ts +17 -15
  56. package/dist/mixins/mixin-viewport/mixin-viewport.js +23 -41
  57. package/dist/utils/assign-slots/assign-slots.d.ts +18 -0
  58. package/dist/utils/assign-slots/assign-slots.js +14 -0
  59. package/dist/utils/autofill-select/autofill-select.d.ts +40 -0
  60. package/dist/utils/autofill-select/autofill-select.js +14 -0
  61. package/dist/utils/calendar/calendar.d.ts +27 -0
  62. package/dist/utils/calendar/calendar.js +17 -0
  63. package/dist/utils/center-in-view/center-in-view.d.ts +18 -0
  64. package/dist/utils/center-in-view/center-in-view.js +14 -0
  65. package/dist/utils/chord/key-names.d.ts +30 -0
  66. package/dist/utils/chord/key-names.js +52 -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/count-label/count-label.d.ts +7 -4
  70. package/dist/utils/count-label/count-label.js +2 -5
  71. package/dist/utils/data-options/data-options.d.ts +60 -0
  72. package/dist/utils/data-options/data-options.js +46 -0
  73. package/dist/utils/date-segments/date-segments.d.ts +2 -1
  74. package/dist/utils/date-segments/date-segments.js +10 -0
  75. package/dist/utils/draw-tooltip/draw-tooltip.d.ts +7 -2
  76. package/dist/utils/draw-tooltip/draw-tooltip.js +1 -1
  77. package/dist/utils/draw-tooltip/spoken-reading.d.ts +3 -2
  78. package/dist/utils/draw-tooltip/spoken-reading.js +3 -2
  79. package/dist/utils/export-parts/export-parts.d.ts +14 -0
  80. package/dist/utils/export-parts/export-parts.js +1 -0
  81. package/dist/utils/fill-template/fill-template.d.ts +9 -0
  82. package/dist/utils/fill-template/fill-template.js +3 -0
  83. package/dist/utils/filter-marks/filter-marks.d.ts +36 -0
  84. package/dist/utils/filter-marks/filter-marks.js +41 -0
  85. package/dist/utils/focus-target/focus-target.d.ts +12 -0
  86. package/dist/utils/focus-target/focus-target.js +9 -0
  87. package/dist/utils/focusable-elements/focusable-elements.d.ts +17 -0
  88. package/dist/utils/focusable-elements/focusable-elements.js +8 -0
  89. package/dist/utils/grid-move/grid-move.d.ts +56 -0
  90. package/dist/utils/grid-move/grid-move.js +28 -0
  91. package/dist/utils/locale-of/locale-of.d.ts +5 -0
  92. package/dist/utils/locale-of/locale-of.js +8 -2
  93. package/dist/utils/number-format/number-format.d.ts +7 -0
  94. package/dist/utils/number-format/number-format.js +1 -0
  95. package/dist/utils/reorder/drag-preview.d.ts +46 -0
  96. package/dist/utils/reorder/drag-preview.js +58 -0
  97. package/dist/utils/reorder/reorder.d.ts +178 -0
  98. package/dist/utils/reorder/reorder.js +112 -0
  99. package/dist/utils/report-runtime/report-runtime.d.ts +14 -5
  100. package/dist/utils/report-values/report-values.d.ts +16 -4
  101. package/dist/utils/report-values/report-values.js +2 -2
  102. package/dist/utils/request-change/request-change.d.ts +11 -0
  103. package/dist/utils/request-change/request-change.js +10 -0
  104. package/dist/utils/scroll-item-into-view/scroll-item-into-view.d.ts +17 -0
  105. package/dist/utils/scroll-item-into-view/scroll-item-into-view.js +1 -0
  106. package/dist/utils/slot-filled/slot-filled.d.ts +8 -0
  107. package/dist/utils/slot-filled/slot-filled.js +1 -0
  108. package/dist/utils/slotted-words/slotted-words.d.ts +3 -2
  109. package/dist/utils/slotted-words/slotted-words.js +3 -1
  110. package/dist/utils/toolbar-around/toolbar-around.d.ts +18 -0
  111. package/dist/utils/toolbar-around/toolbar-around.js +5 -0
  112. package/dist/version.d.ts +1 -1
  113. package/dist/version.js +1 -1
  114. package/dist/words/index.d.ts +3 -0
  115. package/dist/words/index.js +3 -0
  116. package/dist/words/message.d.ts +47 -0
  117. package/dist/words/message.js +152 -0
  118. package/dist/words/registry.d.ts +89 -0
  119. package/dist/words/registry.js +101 -0
  120. package/dist/words/words-locale.d.ts +34 -0
  121. package/dist/words/words-locale.js +30 -0
  122. package/dist/words/words.d.ts +52 -0
  123. package/dist/words/words.js +100 -0
  124. package/package.json +40 -25
@@ -1,26 +1,6 @@
1
1
  import type { LitElement } from 'lit';
2
2
  /** The props React is holding for a node, if React is holding any. */
3
3
  export declare const reactPropsOf: (node: EventTarget) => Record<string, unknown> | undefined;
4
- /**
5
- * Says so when a handler prop is attached to nothing.
6
- *
7
- * **TypeScript will not catch any of this, and that is not our tooling's
8
- * fault.** A JSX attribute whose name is not a valid identifier is exempt from
9
- * checking on an intrinsic element, and every one of ours carries a hyphen. So
10
- * `onhelix-opne` type-checks, `on:helix-open` type-checks, and a made-up
11
- * `totally-invented` prop type-checks, all against fully generated types that
12
- * do reject a wrong *value* on a normal attribute. Measured with `tsc`.
13
- *
14
- * That leaves runtime as the only place a typo can be caught, and React's props
15
- * bag as the only place to look, which the binding above already reads. Once per
16
- * element, because a warning that repeats on every keystroke is one a consumer
17
- * silences.
18
- *
19
- * `on:helix-open` gets its own message because it is not a mistake so much as
20
- * the wrong dialect. It is what the Solid types offer, correctly, and React
21
- * binds it as an event named `:helix-open`.
22
- */
23
- export declare const auditReactProps: (host: EventTarget, props: Record<string, unknown>) => void;
24
4
  /**
25
5
  * The prop React would be holding for this event, if it is holding one.
26
6
  *
@@ -83,8 +63,8 @@ export declare const reactNativeProp: (type: string) => string;
83
63
  *
84
64
  * Called by the host as it dispatches, which is the first moment it knows the
85
65
  * event's name. A host React does not render holds no props, and nothing is
86
- * bound. The props are audited on the way, so a handler attached to nothing
87
- * warns.
66
+ * bound. In a development build the props are audited on the way, so a
67
+ * handler attached to nothing warns; see `react-audit.ts`.
88
68
  */
89
69
  export declare const bindReactHandler: (host: EventTarget, event: Event) => void;
90
70
  /**
@@ -1,6 +1,4 @@
1
- import { eventsForTag } from '../events/element-events.js';
2
- import { helixEventNames } from '../events/names.js';
3
- import { reportRuntime } from '../utils/report-runtime/report-runtime.js';
1
+ import { auditReactProps } from '@fusion.dev/helix-core/audits/react';
4
2
  const REACT_PROPS = '__reactProps$';
5
3
  let reactPropsKey;
6
4
  export const reactPropsOf = (node) => {
@@ -15,59 +13,6 @@ export const reactPropsOf = (node) => {
15
13
  reactPropsKey = found;
16
14
  return stash[found];
17
15
  };
18
- const audited = new WeakSet();
19
- const REMOVED = new Set(['onActiveChange', 'onCheckedChange', 'onOpenChange', 'onValueChange']);
20
- export const auditReactProps = (host, props) => {
21
- if (audited.has(host)) {
22
- return;
23
- }
24
- audited.add(host);
25
- const tag = host instanceof Element ? `<${host.localName}>` : 'A Helix element';
26
- const element = host instanceof Element ? host.localName : undefined;
27
- for (const key of Object.keys(props)) {
28
- if (key.startsWith('on:')) {
29
- reportRuntime({
30
- kind: 'solid-handler-syntax',
31
- message: `${tag} was given \`${key}\`, which is Solid's syntax. React binds the name after \`on\` ` +
32
- `verbatim, so this listens for an event called \`${key.slice(2)}\`. Write \`on${key.slice(3)}\`.`,
33
- tag: element,
34
- });
35
- continue;
36
- }
37
- if (REMOVED.has(key)) {
38
- reportRuntime({
39
- kind: 'removed-callback',
40
- message: `${tag} was given \`${key}\`, which was removed. It never worked from JSX, because React ` +
41
- `binds any \`on\` prop as an event of that name. Listen for the element's change event instead.`,
42
- tag: element,
43
- });
44
- continue;
45
- }
46
- if (!key.startsWith('on') || !key.includes('-')) {
47
- continue;
48
- }
49
- const name = key.slice(2);
50
- if (!helixEventNames.has(name)) {
51
- reportRuntime({
52
- kind: 'unknown-event',
53
- message: `${tag} was given \`${key}\`, and nothing dispatches \`${name}\`. TypeScript cannot ` +
54
- `check a hyphenated JSX prop, so this is the only place it shows up.`,
55
- tag: element,
56
- });
57
- continue;
58
- }
59
- const mine = host instanceof Element ? eventsForTag(host.localName) : undefined;
60
- if (mine && !mine.has(name)) {
61
- reportRuntime({
62
- kind: 'misplaced-handler',
63
- message: `${tag} was given \`${key}\`, but it dispatches ${[...mine].map((one) => `\`${one}\``).join(', ')}. ` +
64
- `\`${name}\` is sent by a different element, and React only wires an \`on\` prop on the ` +
65
- 'element that dispatches, so this handler will never run. Put it on that element.',
66
- tag: element,
67
- });
68
- }
69
- }
70
- };
71
16
  const REACT_WIRES = new Set(['scroll', 'scrollend']);
72
17
  export const reactPropFor = (event) => {
73
18
  if (event.type.includes('-')) {
package/dist/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
- export { auditName } from '#audit-name';
1
+ export { auditName } from '@fusion.dev/helix-core/audits/name';
2
2
  export { AriaForwardController, type AriaForwardOptions, } from './controllers/aria-forward-controller/aria-forward-controller.js';
3
3
  export { ArrivalController, type ArrivalOptions, } from './controllers/arrival-controller/arrival-controller.js';
4
4
  export { ChartPointerController, type ChartPointerHost, } from './controllers/chart-pointer-controller/chart-pointer-controller.js';
5
+ export { ChildrenController } from './controllers/children-controller/children-controller.js';
5
6
  export { CommandController, type CommandOptions, HelixFallbackCommandEvent, supportsInvokers, } from './controllers/command-controller/command-controller.js';
6
7
  export { CopyController, type CopyOptions, } from './controllers/copy-controller/copy-controller.js';
7
8
  export { CountdownController, type CountdownOptions, } from './controllers/countdown-controller/countdown-controller.js';
@@ -16,21 +17,23 @@ export { FullscreenController } from './controllers/fullscreen-controller/fullsc
16
17
  export { HostClickController } from './controllers/host-click-controller/host-click-controller.js';
17
18
  export { IdleController } from './controllers/idle-controller/idle-controller.js';
18
19
  export { IndicatorController, type IndicatorOptions, } from './controllers/indicator-controller/indicator-controller.js';
19
- export { KeyboardNavigationController, type KeyboardNavigationOptions, type KeyboardOrigin, type NavigableItem, } from './controllers/keyboard-navigation-controller/keyboard-navigation-controller.js';
20
+ export { type FocusItemOptions, focusItemOf, KeyboardNavigationController, type KeyboardNavigationOptions, type KeyboardOrigin, type NavigableItem, } from './controllers/keyboard-navigation-controller/keyboard-navigation-controller.js';
20
21
  export { MediaSessionController, type SessionHandlers, SKIP_SECONDS, } from './controllers/media-session-controller/media-session-controller.js';
21
- export { animationsSettled, type OpenPhase, OpenPhaseController, type OpenPhaseOptions, } from './controllers/open-phase-controller/open-phase-controller.js';
22
+ export { animationsFinished, animationsSettled, type OpenPhase, OpenPhaseController, type OpenPhaseOptions, } from './controllers/open-phase-controller/open-phase-controller.js';
23
+ export { OptionWindowController, type OptionWindowOptions, } from './controllers/option-window-controller/option-window-controller.js';
22
24
  export { MAX_FRAME_STEP, PaintGateController, type PaintGateOptions, } from './controllers/paint-gate-controller/paint-gate-controller.js';
23
25
  export { PlacementController } from './controllers/placement-controller/placement-controller.js';
24
26
  export { PopoverController, type PopoverOptions, } from './controllers/popover-controller/popover-controller.js';
25
27
  export { RelativeClockController, type RelativeClockOptions, } from './controllers/relative-clock-controller/relative-clock-controller.js';
26
28
  export { RemotePlaybackController, type RemoteReport, } from './controllers/remote-playback-controller/remote-playback-controller.js';
29
+ export { ReorderController, type ReorderMove, type ReorderOptions, type ReorderWords, requestReorder, } from './controllers/reorder-controller/reorder-controller.js';
27
30
  export { SourceController, type SourceHost, } from './controllers/source-controller/source-controller.js';
28
31
  export { drawStatus, type SayOptions, StatusController, } from './controllers/status-controller/status-controller.js';
29
32
  export { SwipeController, type SwipeOptions, } from './controllers/swipe-controller/swipe-controller.js';
30
33
  export { type TokenColor, TokenColorController, } from './controllers/token-color-controller/token-color-controller.js';
31
34
  export { type Rendered, VirtualizeController, type VirtualizeOptions, type Window as VirtualizeWindow, } from './controllers/virtualize-controller/virtualize-controller.js';
32
35
  export { eventsForTag, registerElementEvents } from './events/element-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';
36
+ 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, HelixBeforeReorderEvent, 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 ReorderDetail, 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
37
  export { HelixElement, whenHydrated } from './helix-element/helix-element.js';
35
38
  export { HelixFormElement } from './helix-form-element/helix-form-element.js';
36
39
  export { MixinChartSource, type MixinChartSourceInterface, PALETTE, PLOT_HEIGHT, PLOT_WIDTH, POSITION_LABEL, seriesIndex, seriesNames, } from './mixins/mixin-chart-source/mixin-chart-source.js';
@@ -50,27 +53,37 @@ export { MixinTokens, type MixinTokensInterface } from './mixins/mixin-tokens/mi
50
53
  export { MixinViewport, type ViewportControlsPlacement, type ViewportElement, type ViewportGestureLabels, type ViewportGestureMode, type ViewportGestures, type ViewportWay, } from './mixins/mixin-viewport/mixin-viewport.js';
51
54
  export { anchorElement } from './utils/anchor-element/anchor-element.js';
52
55
  export { arrowReach, sideOf } from './utils/arrow/arrow.js';
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';
56
+ export { assignSlots } from './utils/assign-slots/assign-slots.js';
57
+ export { type DrawAutofillOptions, drawAutofill, } from './utils/autofill-select/autofill-select.js';
58
+ export { addDays, addMonths, type Barring, barredBy, type CalendarView, calendarLocale, type DateCalendar, localToday, monthOf, monthOut, type PeriodCell, type PeriodPage, periodCells, periodKey, periodMove, sameMonth, weekStartOf, YEARS_SHOWN, yearOut, yearPageOf, } from './utils/calendar/calendar.js';
54
59
  export { capturePointer } from './utils/capture-pointer/capture-pointer.js';
60
+ export { centerInView } from './utils/center-in-view/center-in-view.js';
55
61
  export { ariaChord, type ChordPress, chordParts, matchesChord, printableChord, selectsAll, } from './utils/chord/chord.js';
62
+ export { type KeyNames, keyNames } from './utils/chord/key-names.js';
56
63
  export { clamp } from './utils/clamp/clamp.js';
57
64
  export { clockLocale, dayPeriod, type HourCycle, isTwelveHour, nearestTime, offeredTimes, type TimeFault, type TimeRules, timeBarred, timeFault, wheelParts, wholeHour, } from './utils/clock/clock.js';
58
65
  export { closestInstance } from './utils/closest-instance/closest-instance.js';
59
66
  export { type ColorWords, colorName, hueName } from './utils/color-name/color-name.js';
67
+ export { columnStep } from './utils/column-step/column-step.js';
60
68
  export { countLabel } from './utils/count-label/count-label.js';
61
69
  export { createSheet } from './utils/create-sheet/create-sheet.js';
62
70
  export { type Color, type ColorFormat, formatColor, parseColor, toCss, toHsl, toRgb, } from './utils/css-color/css-color.js';
63
71
  export { customElement, definedTags, duplicateRegistrations, } from './utils/custom-element/custom-element.js';
72
+ export { type DataOption, type DataOptionItem, dataOptions, drawOptions, windowOf, } from './utils/data-options/data-options.js';
64
73
  export { segmentName } from './utils/date-segments/date-segments.js';
65
74
  export { type DrawDismissOptions, drawDismiss, drawDismissGlyph, } from './utils/draw-dismiss/draw-dismiss.js';
66
75
  export { type DrawIconOptions, drawIcon } from './utils/draw-icon/draw-icon.js';
67
- export { CHART_PLOT, drawTooltip } from './utils/draw-tooltip/draw-tooltip.js';
76
+ export { CHART_PLOT, drawTooltip, type ReadingCursor } from './utils/draw-tooltip/draw-tooltip.js';
68
77
  export { elapsedTime } from './utils/elapsed-time/elapsed-time.js';
69
78
  export { type ElementByIdOptions, elementById, searchableById, } from './utils/element-by-id/element-by-id.js';
70
- export { fillTemplate } from './utils/fill-template/fill-template.js';
71
- export { deepActiveElement, deepContains, focusableElements, } from './utils/focusable-elements/focusable-elements.js';
79
+ export { exportParts } from './utils/export-parts/export-parts.js';
80
+ export { fillTemplate, labelWith } from './utils/fill-template/fill-template.js';
81
+ export { FILTER_MARK, markMatches, rangeOf } from './utils/filter-marks/filter-marks.js';
82
+ export { focusTarget } from './utils/focus-target/focus-target.js';
83
+ export { deepActiveElement, deepContains, focusableElements, PRESSABLE, pressedOwnControl, } from './utils/focusable-elements/focusable-elements.js';
72
84
  export { afterLinkFollowed, followLink, type LinkModifiers, type LinkTarget, } from './utils/follow-link/follow-link.js';
73
85
  export { formatNumbers } from './utils/format-numbers/format-numbers.js';
86
+ export { type GridBounds, type GridKeys, type GridPlace, gridMove, pageRows, } from './utils/grid-move/grid-move.js';
74
87
  export { headingIn, headingsIn } from './utils/heading-in/heading-in.js';
75
88
  export { headingLevel } from './utils/heading-level/heading-level.js';
76
89
  export { type HostAria, hostAria } from './utils/host-aria/host-aria.js';
@@ -82,12 +95,12 @@ export { isRtl } from './utils/is-rtl/is-rtl.js';
82
95
  export { keyClaimed } from './utils/key-claimed/key-claimed.js';
83
96
  export { type Curve, linePath, type Point } from './utils/line-path/line-path.js';
84
97
  export { type EndInSight, endInSight } from './utils/load-more/load-more.js';
85
- export { localeOf } from './utils/locale-of/locale-of.js';
98
+ export { localeOf, runtimeLocale } from './utils/locale-of/locale-of.js';
86
99
  export { markRegion, type RegionOptions } from './utils/mark-region/mark-region.js';
87
100
  export { copiesOf, type MediaCopy, sameCopies, } from './utils/media-copy/media-copy.js';
88
101
  export { nameText } from './utils/name-text/name-text.js';
89
102
  export { nearest } from './utils/nearest/nearest.js';
90
- export { formatNumber, parseNumber, readingText } from './utils/number-format/number-format.js';
103
+ export { formatNumber, formatPercent, parseNumber, readingText, } from './utils/number-format/number-format.js';
91
104
  export { onUnlessFalse } from './utils/on-unless-false/on-unless-false.js';
92
105
  export { applyOwnRule, type OwnRule } from './utils/own-rule/own-rule.js';
93
106
  export { plainClick } from './utils/plain-click/plain-click.js';
@@ -98,11 +111,12 @@ export { type ColorBytes, readColor, rgbOf } from './utils/read-color/read-color
98
111
  export { byRow, type Extremes, extremesOf, type Row, type RowCell, readRows, readSeries, type Series, type SeriesPoint, seriesKey, unbroken, } from './utils/read-series/read-series.js';
99
112
  export { type ElementsProperty, linkDescription, reflectElements, unlinkDescription, } from './utils/reflect-elements/reflect-elements.js';
100
113
  export { type Relative, type RelativeOptions, relativeTime, } from './utils/relative-time/relative-time.js';
114
+ export { centersOf, dropMark, edgeSpeed, passedCount, placeKey, type ReorderAxis, type ReorderHold, type ReorderInput, type ReorderState, reorderKey, reorderStep, } from './utils/reorder/reorder.js';
101
115
  export { measuring, RENDER_SLOT, reportRender } from './utils/report-render/report-render.js';
102
116
  export { RUNTIME_LOG, RUNTIME_SLOT, type RuntimeEvent, type RuntimeKind, reportRuntime, } from './utils/report-runtime/report-runtime.js';
103
117
  export { noteVersion, reportUsage, USAGE_SLOT, VERSIONS_SLOT, } from './utils/report-usage/report-usage.js';
104
- export { reportValues } from './utils/report-values/report-values.js';
105
- export { type ChangeRequestOptions, requestChange, } from './utils/request-change/request-change.js';
118
+ export { type ReportValuesOptions, reportValues } from './utils/report-values/report-values.js';
119
+ export { type ChangeRequestOptions, requestChange, requestValue, } from './utils/request-change/request-change.js';
106
120
  export { type ActivatableItem, resolveActiveItem, } from './utils/resolve-active-item/resolve-active-item.js';
107
121
  export { holdCaret, restoreValue } from './utils/restore-value/restore-value.js';
108
122
  export { type RovingOptions, rovingStop } from './utils/roving-stop/roving-stop.js';
@@ -110,9 +124,9 @@ export { valueAt } from './utils/row-data/row-data.js';
110
124
  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';
111
125
  export { extent, linear, type Scale } from './utils/scale/scale.js';
112
126
  export { ticks } from './utils/scale/ticks.js';
113
- export { type ScrollerOptions, type ScrollItemOptions, scrollItemIntoView, scrollingAncestor, } from './utils/scroll-item-into-view/scroll-item-into-view.js';
127
+ export { type ScrollerOptions, type ScrollItemOptions, type ScrollRoomOptions, scrollItemIntoView, scrollingAncestor, scrollRoom, } from './utils/scroll-item-into-view/scroll-item-into-view.js';
114
128
  export { lockScroll, scrollHolders, unlockScroll } from './utils/scroll-lock/scroll-lock.js';
115
- export { slotFilled } from './utils/slot-filled/slot-filled.js';
129
+ export { slotFilled, slotNamed } from './utils/slot-filled/slot-filled.js';
116
130
  export { SlottedGlyph } from './utils/slotted-glyph/slotted-glyph.js';
117
131
  export { slottedWords } from './utils/slotted-words/slotted-words.js';
118
132
  export { splitValues } from './utils/split-values/split-values.js';
@@ -120,11 +134,17 @@ export { edgeOffset, FLING, parseSnapPoints, type SwipeAxis, type SwipeEdge, typ
120
134
  export { tellDisclosure } from './utils/tell-disclosure/tell-disclosure.js';
121
135
  export { subscribe } from './utils/ticker/ticker.js';
122
136
  export { type HelixStatusTone, TONE_MARKS, type ToneMark, toneMark, } from './utils/tone-marks/tone-marks.js';
137
+ export { toolbarAround, toolbarAxis } from './utils/toolbar-around/toolbar-around.js';
123
138
  export { type TreeArrow, type TreeArrowRow, treeArrow } from './utils/tree-arrow/tree-arrow.js';
124
139
  export { Typeahead, type TypeaheadBy, typeaheadBy, typeaheadByWords, typesCharacter, } from './utils/typeahead/typeahead.js';
125
140
  export { dateAsValue, isClockValue, isDateValue, isTimeValue, minutesAsValue, numberAsValue, secondsAsValue, timeAsValue, valueAsDate, valueAsMinutes, valueAsNumber, valueAsSeconds, valueAsTime, } from './utils/value-as/value-as.js';
141
+ export { type PickerVerdict, verdictFlags } from './utils/verdict-flags/verdict-flags.js';
126
142
  export { watchTheme } from './utils/watch-theme/watch-theme.js';
127
143
  export { wordsConverter } from './utils/words-converter/words-converter.js';
128
144
  export { writeClock, writeTime } from './utils/write-time/write-time.js';
129
145
  export { anchorAt, commaList, everyState, inRowOrder, pressedValue, prunedValue, type SelectionMode, toggleEvery, toggleValue, writtenList, writtenNumbers, } from './utils/written-list/written-list.js';
130
146
  export { VERSION } from './version.js';
147
+ export { formatMessage, type Message, type MessageOptions, type MessageTable, type MessageValues, } from './words/message.js';
148
+ export { clearWords, type HelixWords, localeChain, refreshWords, registerWords, setDefaultWordsLocale, type Words, } from './words/registry.js';
149
+ export { formatWords, words } from './words/words.js';
150
+ export { handedLocale, wordsLocale } from './words/words-locale.js';
package/dist/index.js CHANGED
@@ -1,7 +1,8 @@
1
- export { auditName } from '#audit-name';
1
+ export { auditName } from '@fusion.dev/helix-core/audits/name';
2
2
  export { AriaForwardController, } from './controllers/aria-forward-controller/aria-forward-controller.js';
3
3
  export { ArrivalController, } from './controllers/arrival-controller/arrival-controller.js';
4
4
  export { ChartPointerController, } from './controllers/chart-pointer-controller/chart-pointer-controller.js';
5
+ export { ChildrenController } from './controllers/children-controller/children-controller.js';
5
6
  export { CommandController, HelixFallbackCommandEvent, supportsInvokers, } from './controllers/command-controller/command-controller.js';
6
7
  export { CopyController, } from './controllers/copy-controller/copy-controller.js';
7
8
  export { CountdownController, } from './controllers/countdown-controller/countdown-controller.js';
@@ -16,21 +17,23 @@ export { FullscreenController } from './controllers/fullscreen-controller/fullsc
16
17
  export { HostClickController } from './controllers/host-click-controller/host-click-controller.js';
17
18
  export { IdleController } from './controllers/idle-controller/idle-controller.js';
18
19
  export { IndicatorController, } from './controllers/indicator-controller/indicator-controller.js';
19
- export { KeyboardNavigationController, } from './controllers/keyboard-navigation-controller/keyboard-navigation-controller.js';
20
+ export { focusItemOf, KeyboardNavigationController, } from './controllers/keyboard-navigation-controller/keyboard-navigation-controller.js';
20
21
  export { MediaSessionController, SKIP_SECONDS, } from './controllers/media-session-controller/media-session-controller.js';
21
- export { animationsSettled, OpenPhaseController, } from './controllers/open-phase-controller/open-phase-controller.js';
22
+ export { animationsFinished, animationsSettled, OpenPhaseController, } from './controllers/open-phase-controller/open-phase-controller.js';
23
+ export { OptionWindowController, } from './controllers/option-window-controller/option-window-controller.js';
22
24
  export { MAX_FRAME_STEP, PaintGateController, } from './controllers/paint-gate-controller/paint-gate-controller.js';
23
25
  export { PlacementController } from './controllers/placement-controller/placement-controller.js';
24
26
  export { PopoverController, } from './controllers/popover-controller/popover-controller.js';
25
27
  export { RelativeClockController, } from './controllers/relative-clock-controller/relative-clock-controller.js';
26
28
  export { RemotePlaybackController, } from './controllers/remote-playback-controller/remote-playback-controller.js';
29
+ export { ReorderController, requestReorder, } from './controllers/reorder-controller/reorder-controller.js';
27
30
  export { SourceController, } from './controllers/source-controller/source-controller.js';
28
31
  export { drawStatus, StatusController, } from './controllers/status-controller/status-controller.js';
29
32
  export { SwipeController, } from './controllers/swipe-controller/swipe-controller.js';
30
33
  export { TokenColorController, } from './controllers/token-color-controller/token-color-controller.js';
31
34
  export { VirtualizeController, } from './controllers/virtualize-controller/virtualize-controller.js';
32
35
  export { eventsForTag, registerElementEvents } from './events/element-events.js';
33
- 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, } from './events/events.js';
36
+ export { HelixActionEvent, HelixActivateEvent, HelixAuraFallbackEvent, HelixBandEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeReorderEvent, 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, } from './events/events.js';
34
37
  export { HelixElement, whenHydrated } from './helix-element/helix-element.js';
35
38
  export { HelixFormElement } from './helix-form-element/helix-form-element.js';
36
39
  export { MixinChartSource, PALETTE, PLOT_HEIGHT, PLOT_WIDTH, POSITION_LABEL, seriesIndex, seriesNames, } from './mixins/mixin-chart-source/mixin-chart-source.js';
@@ -50,27 +53,37 @@ export { MixinTokens } from './mixins/mixin-tokens/mixin-tokens.js';
50
53
  export { MixinViewport, } from './mixins/mixin-viewport/mixin-viewport.js';
51
54
  export { anchorElement } from './utils/anchor-element/anchor-element.js';
52
55
  export { arrowReach, sideOf } from './utils/arrow/arrow.js';
53
- export { addDays, addMonths, barredBy, localToday, monthOf, monthOut, periodCells, periodKey, periodMove, sameMonth, weekStartOf, YEARS_SHOWN, yearOut, yearPageOf, } from './utils/calendar/calendar.js';
56
+ export { assignSlots } from './utils/assign-slots/assign-slots.js';
57
+ export { drawAutofill, } from './utils/autofill-select/autofill-select.js';
58
+ export { addDays, addMonths, barredBy, calendarLocale, localToday, monthOf, monthOut, periodCells, periodKey, periodMove, sameMonth, weekStartOf, YEARS_SHOWN, yearOut, yearPageOf, } from './utils/calendar/calendar.js';
54
59
  export { capturePointer } from './utils/capture-pointer/capture-pointer.js';
60
+ export { centerInView } from './utils/center-in-view/center-in-view.js';
55
61
  export { ariaChord, chordParts, matchesChord, printableChord, selectsAll, } from './utils/chord/chord.js';
62
+ export { keyNames } from './utils/chord/key-names.js';
56
63
  export { clamp } from './utils/clamp/clamp.js';
57
64
  export { clockLocale, dayPeriod, isTwelveHour, nearestTime, offeredTimes, timeBarred, timeFault, wheelParts, wholeHour, } from './utils/clock/clock.js';
58
65
  export { closestInstance } from './utils/closest-instance/closest-instance.js';
59
66
  export { colorName, hueName } from './utils/color-name/color-name.js';
67
+ export { columnStep } from './utils/column-step/column-step.js';
60
68
  export { countLabel } from './utils/count-label/count-label.js';
61
69
  export { createSheet } from './utils/create-sheet/create-sheet.js';
62
70
  export { formatColor, parseColor, toCss, toHsl, toRgb, } from './utils/css-color/css-color.js';
63
71
  export { customElement, definedTags, duplicateRegistrations, } from './utils/custom-element/custom-element.js';
72
+ export { dataOptions, drawOptions, windowOf, } from './utils/data-options/data-options.js';
64
73
  export { segmentName } from './utils/date-segments/date-segments.js';
65
74
  export { drawDismiss, drawDismissGlyph, } from './utils/draw-dismiss/draw-dismiss.js';
66
75
  export { drawIcon } from './utils/draw-icon/draw-icon.js';
67
76
  export { CHART_PLOT, drawTooltip } from './utils/draw-tooltip/draw-tooltip.js';
68
77
  export { elapsedTime } from './utils/elapsed-time/elapsed-time.js';
69
78
  export { elementById, searchableById, } from './utils/element-by-id/element-by-id.js';
70
- export { fillTemplate } from './utils/fill-template/fill-template.js';
71
- export { deepActiveElement, deepContains, focusableElements, } from './utils/focusable-elements/focusable-elements.js';
79
+ export { exportParts } from './utils/export-parts/export-parts.js';
80
+ export { fillTemplate, labelWith } from './utils/fill-template/fill-template.js';
81
+ export { FILTER_MARK, markMatches, rangeOf } from './utils/filter-marks/filter-marks.js';
82
+ export { focusTarget } from './utils/focus-target/focus-target.js';
83
+ export { deepActiveElement, deepContains, focusableElements, PRESSABLE, pressedOwnControl, } from './utils/focusable-elements/focusable-elements.js';
72
84
  export { afterLinkFollowed, followLink, } from './utils/follow-link/follow-link.js';
73
85
  export { formatNumbers } from './utils/format-numbers/format-numbers.js';
86
+ export { gridMove, pageRows, } from './utils/grid-move/grid-move.js';
74
87
  export { headingIn, headingsIn } from './utils/heading-in/heading-in.js';
75
88
  export { headingLevel } from './utils/heading-level/heading-level.js';
76
89
  export { hostAria } from './utils/host-aria/host-aria.js';
@@ -82,12 +95,12 @@ export { isRtl } from './utils/is-rtl/is-rtl.js';
82
95
  export { keyClaimed } from './utils/key-claimed/key-claimed.js';
83
96
  export { linePath } from './utils/line-path/line-path.js';
84
97
  export { endInSight } from './utils/load-more/load-more.js';
85
- export { localeOf } from './utils/locale-of/locale-of.js';
98
+ export { localeOf, runtimeLocale } from './utils/locale-of/locale-of.js';
86
99
  export { markRegion } from './utils/mark-region/mark-region.js';
87
100
  export { copiesOf, sameCopies, } from './utils/media-copy/media-copy.js';
88
101
  export { nameText } from './utils/name-text/name-text.js';
89
102
  export { nearest } from './utils/nearest/nearest.js';
90
- export { formatNumber, parseNumber, readingText } from './utils/number-format/number-format.js';
103
+ export { formatNumber, formatPercent, parseNumber, readingText, } from './utils/number-format/number-format.js';
91
104
  export { onUnlessFalse } from './utils/on-unless-false/on-unless-false.js';
92
105
  export { applyOwnRule } from './utils/own-rule/own-rule.js';
93
106
  export { plainClick } from './utils/plain-click/plain-click.js';
@@ -98,11 +111,12 @@ export { readColor, rgbOf } from './utils/read-color/read-color.js';
98
111
  export { byRow, extremesOf, readRows, readSeries, seriesKey, unbroken, } from './utils/read-series/read-series.js';
99
112
  export { linkDescription, reflectElements, unlinkDescription, } from './utils/reflect-elements/reflect-elements.js';
100
113
  export { relativeTime, } from './utils/relative-time/relative-time.js';
114
+ export { centersOf, dropMark, edgeSpeed, passedCount, placeKey, reorderKey, reorderStep, } from './utils/reorder/reorder.js';
101
115
  export { measuring, RENDER_SLOT, reportRender } from './utils/report-render/report-render.js';
102
116
  export { RUNTIME_LOG, RUNTIME_SLOT, reportRuntime, } from './utils/report-runtime/report-runtime.js';
103
117
  export { noteVersion, reportUsage, USAGE_SLOT, VERSIONS_SLOT, } from './utils/report-usage/report-usage.js';
104
118
  export { reportValues } from './utils/report-values/report-values.js';
105
- export { requestChange, } from './utils/request-change/request-change.js';
119
+ export { requestChange, requestValue, } from './utils/request-change/request-change.js';
106
120
  export { resolveActiveItem, } from './utils/resolve-active-item/resolve-active-item.js';
107
121
  export { holdCaret, restoreValue } from './utils/restore-value/restore-value.js';
108
122
  export { rovingStop } from './utils/roving-stop/roving-stop.js';
@@ -110,9 +124,9 @@ export { valueAt } from './utils/row-data/row-data.js';
110
124
  export { arranged, cycle, filter, format, ordered, parse, sort, window_, } from './utils/row-order/row-order.js';
111
125
  export { extent, linear } from './utils/scale/scale.js';
112
126
  export { ticks } from './utils/scale/ticks.js';
113
- export { scrollItemIntoView, scrollingAncestor, } from './utils/scroll-item-into-view/scroll-item-into-view.js';
127
+ export { scrollItemIntoView, scrollingAncestor, scrollRoom, } from './utils/scroll-item-into-view/scroll-item-into-view.js';
114
128
  export { lockScroll, scrollHolders, unlockScroll } from './utils/scroll-lock/scroll-lock.js';
115
- export { slotFilled } from './utils/slot-filled/slot-filled.js';
129
+ export { slotFilled, slotNamed } from './utils/slot-filled/slot-filled.js';
116
130
  export { SlottedGlyph } from './utils/slotted-glyph/slotted-glyph.js';
117
131
  export { slottedWords } from './utils/slotted-words/slotted-words.js';
118
132
  export { splitValues } from './utils/split-values/split-values.js';
@@ -120,11 +134,17 @@ export { edgeOffset, FLING, parseSnapPoints, settleSwipe, snapTravel, swipeAxis,
120
134
  export { tellDisclosure } from './utils/tell-disclosure/tell-disclosure.js';
121
135
  export { subscribe } from './utils/ticker/ticker.js';
122
136
  export { TONE_MARKS, toneMark, } from './utils/tone-marks/tone-marks.js';
137
+ export { toolbarAround, toolbarAxis } from './utils/toolbar-around/toolbar-around.js';
123
138
  export { treeArrow } from './utils/tree-arrow/tree-arrow.js';
124
139
  export { Typeahead, typeaheadBy, typeaheadByWords, typesCharacter, } from './utils/typeahead/typeahead.js';
125
140
  export { dateAsValue, isClockValue, isDateValue, isTimeValue, minutesAsValue, numberAsValue, secondsAsValue, timeAsValue, valueAsDate, valueAsMinutes, valueAsNumber, valueAsSeconds, valueAsTime, } from './utils/value-as/value-as.js';
141
+ export { verdictFlags } from './utils/verdict-flags/verdict-flags.js';
126
142
  export { watchTheme } from './utils/watch-theme/watch-theme.js';
127
143
  export { wordsConverter } from './utils/words-converter/words-converter.js';
128
144
  export { writeClock, writeTime } from './utils/write-time/write-time.js';
129
145
  export { anchorAt, commaList, everyState, inRowOrder, pressedValue, prunedValue, toggleEvery, toggleValue, writtenList, writtenNumbers, } from './utils/written-list/written-list.js';
130
146
  export { VERSION } from './version.js';
147
+ export { formatMessage, } from './words/message.js';
148
+ export { clearWords, localeChain, refreshWords, registerWords, setDefaultWordsLocale, } from './words/registry.js';
149
+ export { formatWords, words } from './words/words.js';
150
+ export { handedLocale, wordsLocale } from './words/words-locale.js';
@@ -132,8 +132,8 @@ export declare class MixinChartSourceInterface {
132
132
  * The locale the chart's own numbers are written in: its axis, its
133
133
  * percentages and its totals, such as `de` for `1.240` and `32 %`.
134
134
  *
135
- * Absent uses the runtime's own. The table's cells are shown as the table
136
- * writes them, whatever this says.
135
+ * Absent reads the nearest `lang`, then the runtime's own. The table's
136
+ * cells are shown as the table writes them, whatever this says.
137
137
  */
138
138
  locale: string;
139
139
  /**
@@ -178,6 +178,11 @@ export declare class MixinChartSourceInterface {
178
178
  * hid.
179
179
  */
180
180
  showsColumn(cell: number): boolean;
181
+ /**
182
+ * The heading of the column at this place in a row, read from the first row
183
+ * that has a cell there, or `''` where none has.
184
+ */
185
+ columnName(cell: number): string;
181
186
  /**
182
187
  * The number of readings, which the pointer position maps onto.
183
188
  */
@@ -9,6 +9,7 @@ import { ChartPointerController } from '../../controllers/chart-pointer-controll
9
9
  import { SourceController } from '../../controllers/source-controller/source-controller.js';
10
10
  import { seriesKey } from '../../utils/read-series/read-series.js';
11
11
  import { writtenList } from '../../utils/written-list/written-list.js';
12
+ import { words } from '../../words/words.js';
12
13
  export const PALETTE = 24;
13
14
  export const seriesIndex = (depth) => (depth % PALETTE) + 1;
14
15
  export const PLOT_WIDTH = 100;
@@ -26,6 +27,7 @@ export const MixinChartSource = (Base) => {
26
27
  this.locale = '';
27
28
  this.positionLabel = '{position} of {count}';
28
29
  }
30
+ static { this.words = ''; }
29
31
  static get observedAttributes() {
30
32
  const inherited = Reflect.get(Base, 'observedAttributes', this);
31
33
  return [...(inherited ?? []), 'aria-label'];
@@ -70,6 +72,9 @@ export const MixinChartSource = (Base) => {
70
72
  const name = this.sourceRows[0]?.cells[cell]?.name;
71
73
  return name === undefined || this.showsSeries(name);
72
74
  }
75
+ columnName(cell) {
76
+ return this.sourceRows.find((row) => row.cells[cell])?.cells[cell]?.name ?? '';
77
+ }
73
78
  get readings() {
74
79
  return this.sourceRows.length;
75
80
  }
@@ -84,6 +89,7 @@ export const MixinChartSource = (Base) => {
84
89
  property()
85
90
  ], ChartSourceElement.prototype, "locale", void 0);
86
91
  __decorate([
92
+ words,
87
93
  property({ attribute: 'position-label' })
88
94
  ], ChartSourceElement.prototype, "positionLabel", void 0);
89
95
  return ChartSourceElement;
@@ -6,6 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { html, nothing } from 'lit';
8
8
  import { property, state } from 'lit/decorators.js';
9
+ import { words } from '../../words/words.js';
9
10
  export const MixinCollection = (Base) => {
10
11
  class Collection extends Base {
11
12
  constructor() {
@@ -17,6 +18,7 @@ export const MixinCollection = (Base) => {
17
18
  this.slotRows = 0;
18
19
  this.announced = '';
19
20
  }
21
+ static { this.words = ''; }
20
22
  countRows(event) {
21
23
  this.slotCounted = true;
22
24
  this.slotRows = event.target.assignedElements().length;
@@ -59,12 +61,14 @@ export const MixinCollection = (Base) => {
59
61
  }
60
62
  }
61
63
  __decorate([
64
+ words,
62
65
  property({ attribute: 'empty-text' })
63
66
  ], Collection.prototype, "emptyText", void 0);
64
67
  __decorate([
65
68
  property({ reflect: true, type: Boolean })
66
69
  ], Collection.prototype, "loading", void 0);
67
70
  __decorate([
71
+ words,
68
72
  property({ attribute: 'loading-text' })
69
73
  ], Collection.prototype, "loadingText", void 0);
70
74
  __decorate([
@@ -8,6 +8,7 @@ import { property } from 'lit/decorators.js';
8
8
  import { HelixDismissEvent } from '../../events/events.js';
9
9
  import { deepActiveElement, deepContains, } from '../../utils/focusable-elements/focusable-elements.js';
10
10
  import { tabStops } from '../../utils/tab-stops/tab-stops.js';
11
+ import { words } from '../../words/words.js';
11
12
  export const MixinDismissible = (Base) => {
12
13
  class Dismissible extends Base {
13
14
  constructor() {
@@ -17,6 +18,7 @@ export const MixinDismissible = (Base) => {
17
18
  this.handOff = undefined;
18
19
  this.forgetFocus = undefined;
19
20
  }
21
+ static { this.words = ''; }
20
22
  dismissEvent() {
21
23
  const own = [...this.childNodes]
22
24
  .filter((node) => !(node instanceof Element) || !node.slot)
@@ -110,6 +112,7 @@ export const MixinDismissible = (Base) => {
110
112
  property({ reflect: true, type: Boolean })
111
113
  ], Dismissible.prototype, "dismissible", void 0);
112
114
  __decorate([
115
+ words,
113
116
  property({ attribute: 'dismiss-label' })
114
117
  ], Dismissible.prototype, "dismissLabel", void 0);
115
118
  return Dismissible;
@@ -6,7 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { html, nothing } from 'lit';
8
8
  import { property, state } from 'lit/decorators.js';
9
- import { auditName } from '#audit-name';
9
+ import { auditName } from '@fusion.dev/helix-core/audits/name';
10
10
  import { hostAria } from '../../utils/host-aria/host-aria.js';
11
11
  const HINT_ID = 'helix-hint';
12
12
  const FEEDBACK_ID = 'helix-feedback';
@@ -15,8 +15,20 @@ type SegmentedBase = HelixFormElement & MixinControllerOpenInterface & MixinCont
15
15
  * anonymous class that has private members (TS4094).
16
16
  */
17
17
  export declare class MixinSegmentedFieldInterface {
18
+ /**
19
+ * What a row of segments reports when the field is required and every
20
+ * segment is empty, where `value-missing-message` is not set. `{kind}` is
21
+ * `date` or `time`.
22
+ */
23
+ emptyMessage: string;
18
24
  /** What a screen reader hears for a segment with nothing in it. */
19
25
  emptySegmentLabel: string;
26
+ /**
27
+ * What a row of segments reports while some segments are set and others
28
+ * are not, where `bad-input-message` is not set. `{kind}` is `date` or
29
+ * `time`.
30
+ */
31
+ incompleteMessage: string;
20
32
  /**
21
33
  * Whether the field is a row of segments, one for each part of the date or
22
34
  * time, in place of a line of text.
@@ -10,11 +10,14 @@ import { isPartial, isTwelveHourLayout, segmentKey, segmentLayout, segmentName,
10
10
  import { inlineStep } from '../../utils/inline-step/inline-step.js';
11
11
  import { appleTouch } from '../../utils/platform/platform.js';
12
12
  import { verdictFlags } from '../../utils/verdict-flags/verdict-flags.js';
13
+ import { formatWords, words } from '../../words/words.js';
13
14
  export const MixinSegmentedField = (Base) => {
14
15
  class SegmentedFieldElement extends Base {
15
16
  constructor() {
16
17
  super(...arguments);
18
+ this.emptyMessage = '{kind, select, date {Enter a date.} other {Enter a time.}}';
17
19
  this.emptySegmentLabel = 'Empty';
20
+ this.incompleteMessage = '{kind, select, date {Enter a whole date.} other {Enter a whole time.}}';
18
21
  this.segmented = false;
19
22
  this.parts = {};
20
23
  this.typed = '';
@@ -92,6 +95,7 @@ export const MixinSegmentedField = (Base) => {
92
95
  }
93
96
  };
94
97
  }
98
+ static { this.words = ''; }
95
99
  get segmentable() {
96
100
  return true;
97
101
  }
@@ -175,11 +179,11 @@ export const MixinSegmentedField = (Base) => {
175
179
  const fault = verdictFlags(this.validate());
176
180
  if (partial) {
177
181
  this.internals.setValidity({ badInput: true }, this.badInputMessage ||
178
- (this.segmentedKind === 'date' ? 'Enter a whole date.' : 'Enter a whole time.'), anchor);
182
+ formatWords(this, 'incompleteMessage', { kind: this.segmentedKind }), anchor);
179
183
  }
180
184
  else if (this.required && this.value === '') {
181
185
  this.internals.setValidity({ valueMissing: true }, this.valueMissingMessage ||
182
- (this.segmentedKind === 'date' ? 'Enter a date.' : 'Enter a time.'), anchor);
186
+ formatWords(this, 'emptyMessage', { kind: this.segmentedKind }), anchor);
183
187
  }
184
188
  else if (fault !== null) {
185
189
  this.internals.setValidity(fault[0], fault[1], anchor);
@@ -241,8 +245,17 @@ export const MixinSegmentedField = (Base) => {
241
245
  }
242
246
  }
243
247
  __decorate([
248
+ words,
249
+ property({ attribute: 'empty-message' })
250
+ ], SegmentedFieldElement.prototype, "emptyMessage", void 0);
251
+ __decorate([
252
+ words,
244
253
  property({ attribute: 'empty-segment-label' })
245
254
  ], SegmentedFieldElement.prototype, "emptySegmentLabel", void 0);
255
+ __decorate([
256
+ words,
257
+ property({ attribute: 'incomplete-message' })
258
+ ], SegmentedFieldElement.prototype, "incompleteMessage", void 0);
246
259
  __decorate([
247
260
  property({ type: Boolean })
248
261
  ], SegmentedFieldElement.prototype, "segmented", void 0);