@fusion.dev/helix-core 0.104.0 → 0.105.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.
@@ -123,9 +123,9 @@ export interface FloatingOptions {
123
123
  * package and none of them is private. the `hooks` rule pairs a documented
124
124
  * hook with a rule that reads one, in both directions.
125
125
  *
126
- * @cssproperty --floating-anchor-inline-size - How wide the anchor is, for a panel that matches it.
127
- * @cssproperty --floating-arrow-x - Where the pointer meets the anchor, from the panel's left edge in either direction.
128
- * @cssproperty --floating-arrow-y - Where the pointer meets the anchor, from the panel's top edge.
126
+ * @cssproperty --floating-anchor-inline-size - The anchor's width, for a panel that matches it.
127
+ * @cssproperty --floating-arrow-x - Where the arrow meets the anchor, from the panel's left edge in both text directions.
128
+ * @cssproperty --floating-arrow-y - Where the arrow meets the anchor, from the panel's top edge.
129
129
  * @cssproperty --floating-available-block-size - How much room is left below, for a panel that scrolls.
130
130
  */
131
131
  export declare class FloatingController implements ReactiveController {
@@ -558,6 +558,54 @@ export declare class HelixMapZoomEvent extends CustomEvent<ViewportZoomDetail> {
558
558
  static readonly eventName = "helix-map-zoom";
559
559
  constructor(detail: MapZoomDetail);
560
560
  }
561
+ /** What changed on a part of a map: a line or a shape, or something standing on a place. */
562
+ export interface MapPartChangeDetail {
563
+ /**
564
+ * `layer` for a route or an area, which is redrawn; `place` for a marker or
565
+ * a position, which is moved; `cluster` for a marker gathered into another
566
+ * or let go, which moves the frame's tab stop.
567
+ */
568
+ kind: 'cluster' | 'layer' | 'place';
569
+ }
570
+ /**
571
+ * A marker, a position, a route or an area changed what it says: where it is,
572
+ * its points, its progress, its name.
573
+ *
574
+ * **Said rather than reflected.** The connector and the frame follow the
575
+ * parts, and heard them through their attributes until the parts reflected
576
+ * nothing CSS selects on: a live position's coordinates are state, and a
577
+ * route's points are a payload, neither of which belongs in the markup. It
578
+ * bubbles to the frame, whose light-DOM children the parts are, and goes no
579
+ * further, being the family's own bookkeeping rather than news for a page.
580
+ */
581
+ export declare class HelixMapPartChangeEvent extends CustomEvent<MapPartChangeDetail> {
582
+ static readonly eventName = "helix-map-part-change";
583
+ constructor(detail: MapPartChangeDetail);
584
+ }
585
+ /** What a cluster a reader pressed holds. */
586
+ export interface MapClusterDetail {
587
+ /**
588
+ * A points layer's count, as the connector keyed it, where the cluster is
589
+ * one the renderer drew rather than one of markers.
590
+ */
591
+ key?: string | undefined;
592
+ /** The names of the places it stands for, the one it is drawn as first, where they are known. */
593
+ labels: string[];
594
+ }
595
+ /**
596
+ * A reader pressed a cluster, one marker standing for several that would have
597
+ * drawn over each other.
598
+ *
599
+ * **Opened by zooming in**, which the connector does, framing the places the
600
+ * cluster holds, as pressing one does on every map a reader has used. Told
601
+ * rather than asked: a page that lists them in a panel instead connects with
602
+ * `clusterZoom: false`. Sent from the marker the cluster is drawn as, and
603
+ * bubbles through the frame to the page.
604
+ */
605
+ export declare class HelixMapClusterEvent extends CustomEvent<MapClusterDetail> {
606
+ static readonly eventName = "helix-map-cluster";
607
+ constructor(detail: MapClusterDetail);
608
+ }
561
609
  /** A message is about to be pinned or unpinned, and can be refused. */
562
610
  export declare class HelixBeforePinEvent extends CustomEvent<ChangeDetail> {
563
611
  static readonly eventName = "helix-before-pin";
@@ -1036,7 +1084,9 @@ declare const registry: {
1036
1084
  readonly HelixFacetEvent: typeof HelixFacetEvent;
1037
1085
  readonly HelixFilterEvent: typeof HelixFilterEvent;
1038
1086
  readonly HelixHistoryEvent: typeof HelixHistoryEvent;
1087
+ readonly HelixMapClusterEvent: typeof HelixMapClusterEvent;
1039
1088
  readonly HelixMapPanEvent: typeof HelixMapPanEvent;
1089
+ readonly HelixMapPartChangeEvent: typeof HelixMapPartChangeEvent;
1040
1090
  readonly HelixMapZoomEvent: typeof HelixMapZoomEvent;
1041
1091
  readonly HelixMoveEvent: typeof HelixMoveEvent;
1042
1092
  readonly HelixNavigateEvent: typeof HelixNavigateEvent;
@@ -252,6 +252,28 @@ export class HelixMapZoomEvent extends CustomEvent {
252
252
  });
253
253
  }
254
254
  }
255
+ export class HelixMapPartChangeEvent extends CustomEvent {
256
+ static { this.eventName = 'helix-map-part-change'; }
257
+ constructor(detail) {
258
+ super(HelixMapPartChangeEvent.eventName, {
259
+ bubbles: true,
260
+ cancelable: false,
261
+ composed: false,
262
+ detail,
263
+ });
264
+ }
265
+ }
266
+ export class HelixMapClusterEvent extends CustomEvent {
267
+ static { this.eventName = 'helix-map-cluster'; }
268
+ constructor(detail) {
269
+ super(HelixMapClusterEvent.eventName, {
270
+ bubbles: true,
271
+ cancelable: false,
272
+ composed: false,
273
+ detail,
274
+ });
275
+ }
276
+ }
255
277
  export class HelixBeforePinEvent extends CustomEvent {
256
278
  static { this.eventName = 'helix-before-pin'; }
257
279
  constructor(detail) {
@@ -556,7 +578,9 @@ const registry = {
556
578
  HelixFacetEvent,
557
579
  HelixFilterEvent,
558
580
  HelixHistoryEvent,
581
+ HelixMapClusterEvent,
559
582
  HelixMapPanEvent,
583
+ HelixMapPartChangeEvent,
560
584
  HelixMapZoomEvent,
561
585
  HelixMoveEvent,
562
586
  HelixNavigateEvent,
@@ -17,7 +17,7 @@ import { type StaticValue } from 'lit/static-html.js';
17
17
  * @status experimental
18
18
  * @documentation https://fusion.dev/helix/docs/tiers
19
19
  *
20
- * @cssstate settled - Set a frame after the first render. Transitions are held off until it is, so an element never animates its own arrival.
20
+ * @cssstate settled - Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
21
21
  */
22
22
  export declare class HelixElement extends LitElement {
23
23
  /**
@@ -213,7 +213,8 @@ export declare class HelixElement extends LitElement {
213
213
  */
214
214
  protected route(child: Element, name: string | undefined): void;
215
215
  /**
216
- * Announces an event, having first bound whatever React is holding for it.
216
+ * Dispatches an event, after binding the React handler for it, if there is
217
+ * one.
217
218
  *
218
219
  * Every event this library sends passes through here, the concrete classes in
219
220
  * `events.ts` and the relayed native ones alike, and `requestChange`
@@ -24,7 +24,7 @@ export declare class HelixFormElement extends HelixElement {
24
24
  /** Opts the element into form ownership, labels, and submission. */
25
25
  static readonly formAssociated = true;
26
26
  /**
27
- * Whether the control is non-interactive.
27
+ * Whether the control is disabled and cannot be used.
28
28
  *
29
29
  * Reflected, because the styled tier selects on it, and mirrored to
30
30
  * `aria-disabled` rather than removing the element from the accessibility
@@ -76,7 +76,7 @@ export declare class HelixFormElement extends HelixElement {
76
76
  */
77
77
  get isDisabled(): boolean;
78
78
  /**
79
- * The platform's notice that an ancestor fieldset changed.
79
+ * Called by the browser when an ancestor fieldset is disabled or enabled.
80
80
  *
81
81
  * **The argument is the effective state, and taking it whole is what latched
82
82
  * every control in the library.** The platform calls this for the element's
@@ -112,7 +112,8 @@ export declare class HelixFormElement extends HelixElement {
112
112
  */
113
113
  formDisabledCallback(disabled: boolean): void;
114
114
  /**
115
- * The form was reset. Nothing here, and every override calls it.
115
+ * Called by the browser when the form is reset. It does nothing here, and
116
+ * every override calls it.
116
117
  *
117
118
  * **A chain rather than a leaf**, because more than one layer owes a reset
118
119
  * something: the value mixin its default, and the field mixin beneath it the
@@ -141,7 +142,7 @@ export declare class HelixFormElement extends HelixElement {
141
142
  */
142
143
  protected announceChange(): void;
143
144
  /**
144
- * Name submitted with the form.
145
+ * The name the control's value is submitted under.
145
146
  *
146
147
  * **Reflected, and it is the exception to "reflect only what CSS selects
147
148
  * on".** The platform builds a form's entry list from the `name` *content
@@ -160,13 +161,13 @@ export declare class HelixFormElement extends HelixElement {
160
161
  */
161
162
  name: string;
162
163
  /**
163
- * The form this control belongs to, if any.
164
+ * The form the control belongs to, or `null`.
164
165
  *
165
166
  * @reference https://html.spec.whatwg.org/multipage/custom-elements.html#form-associated-custom-elements form-associated custom elements
166
167
  */
167
168
  get form(): HTMLFormElement | null;
168
169
  /**
169
- * Labels associated with this control.
170
+ * The labels associated with the control.
170
171
  *
171
172
  * @reference https://html.spec.whatwg.org/multipage/custom-elements.html#form-associated-custom-elements form-associated custom elements
172
173
  */
package/dist/index.d.ts CHANGED
@@ -20,7 +20,7 @@ export { SourceController, type SourceHost, } from './controllers/source-control
20
20
  export { type TokenColor, TokenColorController, } from './controllers/token-color-controller/token-color-controller.js';
21
21
  export { type Rendered, VirtualizeController, type VirtualizeOptions, type Window as VirtualizeWindow, } from './controllers/virtualize-controller/virtualize-controller.js';
22
22
  export { eventsForTag, registerElementEvents } from './events/element-events.js';
23
- export { type CanvasView, type CaretDetail, type ChangeDetail, type CompleteDetail, type ConnectDetail, type ConsoleDetail, type CopyDetail, type CreateDetail, type DismissDetail, type FacetDetail, type FilterDetail, HelixActivateEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCanvasEditEvent, HelixCanvasPanEvent, HelixCanvasViewEvent, HelixCanvasZoomEvent, HelixCaretEvent, HelixCompleteEvent, HelixConnectEvent, HelixConsoleEvent, HelixCopyEvent, HelixCreateEvent, HelixDismissEvent, HelixFacetEvent, HelixFilterEvent, HelixHistoryEvent, HelixMapPanEvent, HelixMapZoomEvent, HelixMoveEvent, HelixNavigateEvent, HelixNextEvent, HelixPreviousEvent, HelixReadEvent, HelixReconnectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixTourAskEvent, type MapPanDetail, type MapZoomDetail, type MoveDetail, type NavigateDetail, type OpenDetail, type ReadDetail, type ReconnectDetail, type RelabelDetail, type RemoveDetail, type ResizeDetail, type ScrolledDetail, type SelectDetail, type SendDetail, type ShortcutDetail, type SkipDetail, type SortDetail, type ToggleDetail, type ViewportPanDetail, type ViewportZoomDetail, } from './events/events.js';
23
+ export { type CanvasView, type CaretDetail, type ChangeDetail, type CompleteDetail, type ConnectDetail, type ConsoleDetail, type CopyDetail, type CreateDetail, type DismissDetail, type FacetDetail, type FilterDetail, HelixActivateEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCanvasEditEvent, HelixCanvasPanEvent, HelixCanvasViewEvent, HelixCanvasZoomEvent, HelixCaretEvent, HelixCompleteEvent, HelixConnectEvent, HelixConsoleEvent, HelixCopyEvent, HelixCreateEvent, HelixDismissEvent, HelixFacetEvent, HelixFilterEvent, HelixHistoryEvent, HelixMapClusterEvent, HelixMapPanEvent, HelixMapPartChangeEvent, HelixMapZoomEvent, HelixMoveEvent, HelixNavigateEvent, HelixNextEvent, HelixPreviousEvent, HelixReadEvent, HelixReconnectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixTourAskEvent, type MapClusterDetail, type MapPanDetail, type MapPartChangeDetail, type MapZoomDetail, type MoveDetail, type NavigateDetail, type OpenDetail, type ReadDetail, type ReconnectDetail, type RelabelDetail, type RemoveDetail, type ResizeDetail, type ScrolledDetail, type SelectDetail, type SendDetail, type ShortcutDetail, type SkipDetail, type SortDetail, type ToggleDetail, type ViewportPanDetail, type ViewportZoomDetail, } from './events/events.js';
24
24
  export { HelixElement, whenHydrated } from './helix-element/helix-element.js';
25
25
  export { HelixFormElement } from './helix-form-element/helix-form-element.js';
26
26
  export { MixinChartSource, type MixinChartSourceInterface, PALETTE, PLOT_HEIGHT, PLOT_WIDTH, seriesIndex, seriesNames, } from './mixins/mixin-chart-source/mixin-chart-source.js';
package/dist/index.js CHANGED
@@ -20,7 +20,7 @@ export { SourceController, } from './controllers/source-controller/source-contro
20
20
  export { TokenColorController, } from './controllers/token-color-controller/token-color-controller.js';
21
21
  export { VirtualizeController, } from './controllers/virtualize-controller/virtualize-controller.js';
22
22
  export { eventsForTag, registerElementEvents } from './events/element-events.js';
23
- export { HelixActivateEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCanvasEditEvent, HelixCanvasPanEvent, HelixCanvasViewEvent, HelixCanvasZoomEvent, HelixCaretEvent, HelixCompleteEvent, HelixConnectEvent, HelixConsoleEvent, HelixCopyEvent, HelixCreateEvent, HelixDismissEvent, HelixFacetEvent, HelixFilterEvent, HelixHistoryEvent, HelixMapPanEvent, HelixMapZoomEvent, HelixMoveEvent, HelixNavigateEvent, HelixNextEvent, HelixPreviousEvent, HelixReadEvent, HelixReconnectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixTourAskEvent, } from './events/events.js';
23
+ export { HelixActivateEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCanvasEditEvent, HelixCanvasPanEvent, HelixCanvasViewEvent, HelixCanvasZoomEvent, HelixCaretEvent, HelixCompleteEvent, HelixConnectEvent, HelixConsoleEvent, HelixCopyEvent, HelixCreateEvent, HelixDismissEvent, HelixFacetEvent, HelixFilterEvent, HelixHistoryEvent, HelixMapClusterEvent, HelixMapPanEvent, HelixMapPartChangeEvent, HelixMapZoomEvent, HelixMoveEvent, HelixNavigateEvent, HelixNextEvent, HelixPreviousEvent, HelixReadEvent, HelixReconnectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixTourAskEvent, } from './events/events.js';
24
24
  export { HelixElement, whenHydrated } from './helix-element/helix-element.js';
25
25
  export { HelixFormElement } from './helix-form-element/helix-form-element.js';
26
26
  export { MixinChartSource, PALETTE, PLOT_HEIGHT, PLOT_WIDTH, seriesIndex, seriesNames, } from './mixins/mixin-chart-source/mixin-chart-source.js';
@@ -83,7 +83,7 @@ export declare const seriesNames: (list: string | undefined) => string[];
83
83
  * styled tier, and a consumer on `headless` sets the same names to whatever
84
84
  * they like. The headless examples set them to a ramp of grays.
85
85
  *
86
- * @cssproperty --chart-series - The color of the mark this is set on. Written by the component, read by the sheet that paints.
86
+ * @cssproperty --chart-series - The color of the mark it is set on. The component sets it, and the stylesheet reads it.
87
87
  * @cssproperty --chart-series-1 - The color of series 1. The styled tier points it at a palette token.
88
88
  * @cssproperty --chart-series-2 - The color of series 2. The styled tier points it at a palette token.
89
89
  * @cssproperty --chart-series-3 - The color of series 3. The styled tier points it at a palette token.
@@ -122,39 +122,40 @@ export declare class MixinChartSourceInterface {
122
122
  */
123
123
  for: string;
124
124
  /**
125
- * The drawing's name, for a pointer resting on it.
125
+ * The chart's name, which starts the chart's text summary.
126
126
  *
127
127
  * Absent falls back to the table's own caption, which is usually the right
128
128
  * words and is already written.
129
129
  */
130
130
  label: string;
131
131
  /**
132
- * The columns of the table, one series each, or none if there is no table.
132
+ * The table's columns, one series each. Empty when there is no table.
133
133
  */
134
134
  get series(): Series[];
135
135
  /**
136
- * What to call the drawing, the consumer's word or the table's own.
136
+ * The chart's name: `label` when it is set, and the table's caption
137
+ * otherwise.
137
138
  */
138
139
  get named(): string;
139
140
  /**
140
- * Every row of the table, with each cell's text as well as its number.
141
+ * Every row of the table, with each cell's text and number.
141
142
  */
142
143
  get sourceRows(): Row[];
143
144
  /**
144
- * Which cells of a row hold numbers, by their place in it, in table order.
145
+ * The positions of the cells in a row that hold numbers, in table order.
145
146
  */
146
147
  get plottedColumns(): number[];
147
148
  /**
148
- * The palette slot the cell at this place in a row is drawn in, or nothing
149
- * where no series was read from that column.
149
+ * The palette slot for the cell at this position in a row, or `undefined`
150
+ * when no series was read from that column.
150
151
  */
151
152
  seriesOf(cell: number): number | undefined;
152
153
  /**
153
- * How many readings there are, which is what the pointer maps onto.
154
+ * The number of readings, which the pointer position maps onto.
154
155
  */
155
156
  get readings(): number;
156
157
  /**
157
- * Which reading a pointer is nearest, for a tooltip to sit on.
158
+ * Finds the reading nearest the pointer, so the tooltip can sit on it.
158
159
  */
159
160
  pointer: ChartPointerController;
160
161
  }
@@ -5,11 +5,13 @@ type Constructor<T> = new (...args: any[]) => T;
5
5
  * The API a collection has for the two states that are not its content.
6
6
  */
7
7
  export declare class CollectionElement {
8
- /** Whether the rows are still on their way. */
8
+ /** Whether the rows are still loading. */
9
9
  loading: boolean;
10
- /** What is said while they are. */
10
+ /** The text shown and announced while the rows load. */
11
11
  loadingText: string;
12
- /** What is said where there are none and none are coming. */
12
+ /**
13
+ * The text shown and announced when there are no rows and none are loading.
14
+ */
13
15
  emptyText: string;
14
16
  /**
15
17
  * The status line, or nothing where the collection has content to show.
@@ -9,16 +9,19 @@ type Constructor<T> = new (...args: any[]) => T;
9
9
  */
10
10
  export declare class MixinControllerActiveInterface {
11
11
  /**
12
- * Which item is current, by its `value`.
12
+ * The `value` of the current item.
13
13
  *
14
14
  * Reading gives the real one. Writing always applies, and is a seed and a
15
15
  * correction rather than a claim of ownership: a consumer who wants the
16
16
  * decision refuses the `helix-before-activate`.
17
17
  */
18
18
  active: string;
19
- /** Which item the markup declared current. Ignored once `active` is written. */
19
+ /**
20
+ * The `value` of the item declared current in markup. Ignored once `active`
21
+ * is written.
22
+ */
20
23
  defaultActive: string;
21
- /** Requests a new current item, and reports whether the request stood. */
24
+ /** Requests a new current item, and returns whether the change was applied. */
22
25
  requestActive(next: string): boolean;
23
26
  /**
24
27
  * Which item is current, given what there is to choose from.
@@ -16,10 +16,12 @@ export declare class MixinControllerCheckedInterface {
16
16
  * decision refuses the `helix-before-toggle`.
17
17
  */
18
18
  checked: boolean;
19
- /** Whether the markup declared it checked, which is where a reset returns to. */
19
+ /**
20
+ * Whether the control starts checked. A form reset returns it to this state.
21
+ */
20
22
  defaultChecked: boolean;
21
23
  /**
22
- * Requests a checked change, and reports whether it was applied.
24
+ * Requests a change to `checked`, and returns whether it was applied.
23
25
  *
24
26
  * Announces before it acts: a listener calling `preventDefault()` on the
25
27
  * `helix-before-toggle` refuses the change, and nothing moves.
@@ -8,7 +8,7 @@ type Constructor<T> = new (...args: any[]) => T;
8
8
  * to this interface keeps the internals private and the build working.
9
9
  */
10
10
  export declare class MixinControllerOpenInterface {
11
- /** Whether the markup declared it open. Ignored once `open` is written. */
11
+ /** Whether the element starts open. Ignored once `open` is written. */
12
12
  defaultOpen: boolean;
13
13
  /**
14
14
  * Whether the element is open.
@@ -19,7 +19,8 @@ export declare class MixinControllerOpenInterface {
19
19
  */
20
20
  open: boolean;
21
21
  /**
22
- * Requests an open-state change, and reports whether it was applied.
22
+ * Requests that the element open or close, and returns whether the change was
23
+ * applied.
23
24
  *
24
25
  * Announces before it acts: a listener calling `preventDefault()` on the
25
26
  * `helix-before-open` or `helix-before-close` refuses the change, and nothing moves.
@@ -8,14 +8,14 @@ type Constructor<T> = new (...args: any[]) => T;
8
8
  */
9
9
  export declare class MixinControllerValueInterface {
10
10
  /**
11
- * The value the markup declared, which is where a reset returns to.
11
+ * The value the control starts with. A form reset returns it to this value.
12
12
  *
13
13
  * Separate from `value`, which is where the control is now, and gone from the
14
14
  * reader's view the moment they change anything.
15
15
  */
16
16
  defaultValue: string;
17
17
  /**
18
- * What the control holds now, and what its form submits.
18
+ * The control's current value, which its form submits.
19
19
  *
20
20
  * Reading gives the real value. Writing always applies, and is a seed and a
21
21
  * correction rather than a claim of ownership: a consumer who wants the
@@ -35,9 +35,9 @@ export declare class MixinControllerValueInterface {
35
35
  * `input` alone or `input` and `change` together.
36
36
  */
37
37
  protected readonly announcesInput: boolean;
38
- /** Requests a new value, and reports whether the request stood. */
38
+ /** Requests a new value, and returns whether the change was applied. */
39
39
  requestValue(next: string): boolean;
40
- /** Returns the control to the value its markup declared. */
40
+ /** Returns the control to its `defaultValue`. */
41
41
  formResetCallback(): void;
42
42
  /** Restores the value when the browser brings a form back. */
43
43
  formStateRestoreCallback(state: string | File | FormData | null): void;
@@ -5,11 +5,11 @@ type Constructor<T> = new (...args: any[]) => T;
5
5
  * The API a dismissible surface has, as TypeScript sees it.
6
6
  */
7
7
  export declare class DismissibleElement {
8
- /** Whether it offers a control to take it away. */
8
+ /** Whether the element shows a control that dismisses it. */
9
9
  dismissible: boolean;
10
- /** Accessible name for that control. */
10
+ /** The dismiss control's label, read by screen readers. */
11
11
  dismissLabel: string;
12
- /** Announces that it should go, and reports whether the request stood. */
12
+ /** Fires `helix-dismiss`, and returns `false` if a listener cancels it. */
13
13
  dismiss(): boolean;
14
14
  /** The event, built but not dispatched, for a caller that owns the timing. */
15
15
  protected dismissEvent(): HelixDismissEvent;
@@ -21,7 +21,7 @@ export declare class MixinFieldInterface {
21
21
  /** Whether a label is drawn at all, in either shape. */
22
22
  protected get labeled(): boolean;
23
23
  /**
24
- * Help under the control, shown while there is nothing wrong.
24
+ * Help text shown under the control. A validation message replaces it.
25
25
  *
26
26
  * Fallback content for the `hint` slot, so anything richer replaces it.
27
27
  */
@@ -34,7 +34,8 @@ export declare class MixinFieldInterface {
34
34
  */
35
35
  readonly describedBy: string | undefined;
36
36
  /**
37
- * What is wrong, in the reader's words rather than the browser's.
37
+ * The validation message shown under the control. It replaces the browser's
38
+ * message.
38
39
  *
39
40
  * Overrides the platform's message. Left empty, the platform's own is shown
40
41
  * once the reader has had a go at the field, never before. Either way it
@@ -42,7 +43,8 @@ export declare class MixinFieldInterface {
42
43
  */
43
44
  feedback: string;
44
45
  /**
45
- * The accessible name, and the fallback for the `label` slot.
46
+ * The field's label, which is also its accessible name. Content in the
47
+ * `label` slot replaces it.
46
48
  *
47
49
  * Content rather than configuration, so it is the slot's fallback and never a
48
50
  * second thing rendered beside it.
@@ -64,7 +66,7 @@ export declare class MixinFieldInterface {
64
66
  protected renderGroupLabel(): TemplateResult | typeof nothing;
65
67
  /** A label above the control, pointing at it with a real `for`. */
66
68
  protected renderLabel(): TemplateResult | typeof nothing;
67
- /** Whether the form refuses to submit without it. */
69
+ /** Whether the field needs a value before the form can submit. */
68
70
  required: boolean;
69
71
  /**
70
72
  * Re-reads the platform's verdict, for a control that has just reported one.
@@ -87,9 +89,9 @@ export declare class MixinFieldInterface {
87
89
  * words where it gave some.
88
90
  */
89
91
  protected copyValidity(control: HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement): void;
90
- /** The message actually shown: the consumer's, or the platform's, or none. */
92
+ /** The validation message shown: yours, the browser's, or none. */
91
93
  readonly resolvedFeedback: string;
92
- /** What a reader is told when the field is required and empty, where the page says. */
94
+ /** The message shown when the field is required and empty. */
93
95
  valueMissingMessage: string | undefined;
94
96
  }
95
97
  /**
@@ -22,10 +22,13 @@ export declare class MixinPickerEditingInterface {
22
22
  /** Focusing the field opens the picker, and only from outside the element. */
23
23
  protected readonly handleFocus: (event: FocusEvent) => void;
24
24
  /**
25
- * Whether the control refuses changes while still submitting its value.
25
+ * Whether the value is locked. A read-only control still submits its value.
26
26
  */
27
27
  readOnly: boolean;
28
- /** Refuses every change while read-only. See `readOnly`. */
28
+ /**
29
+ * Requests a new value. While `readOnly` is set, nothing changes and it
30
+ * returns `false`.
31
+ */
29
32
  requestValue(next: string): boolean;
30
33
  }
31
34
  /**
@@ -17,7 +17,7 @@ type PickerBase = HelixFormElement & MixinControllerOpenInterface & MixinControl
17
17
  * to this interface keeps the internals private and the build working.
18
18
  */
19
19
  export declare class MixinPickerFieldInterface {
20
- /** What a reader is told when the field holds something the picker cannot read. */
20
+ /** The message shown when the field holds text the picker cannot read. */
21
21
  badInputMessage: string | undefined;
22
22
  /**
23
23
  * What the label points at and focus lands on.
@@ -43,7 +43,7 @@ export declare class MixinPickerFieldInterface {
43
43
  * value either way. What `restore` puts back is whichever the family says.
44
44
  */
45
45
  protected get display(): string;
46
- /** Puts the caret in the field, the way a label pointing at one would. */
46
+ /** Puts the caret in the field, as clicking its label does. */
47
47
  focus(options?: FocusOptions): void;
48
48
  /** Escape shuts the panel without moving the value. */
49
49
  protected readonly handleKeydown: (event: KeyboardEvent) => void;
@@ -8,9 +8,9 @@ type Constructor<T> = new (...args: any[]) => T;
8
8
  * to this interface keeps the internals private and the build working.
9
9
  */
10
10
  export declare class MixinSelectableItemInterface {
11
- /** Whether this one can be chosen. */
11
+ /** Whether the item is disabled and cannot be chosen. */
12
12
  disabled: boolean;
13
- /** Moves focus to the control this renders, for the set's arrow keys. */
13
+ /** Moves focus to the item's control, for the set's arrow keys. */
14
14
  focusItem(): void;
15
15
  /**
16
16
  * The part `focusItem` focuses, which each family names for itself.
@@ -21,7 +21,8 @@ export declare class MixinSelectableItemInterface {
21
21
  */
22
22
  protected itemPart: string;
23
23
  /**
24
- * Chooses this one and announces it, and reports whether the request stood.
24
+ * Selects the item and fires `helix-select`. Returns `false` if the item is
25
+ * disabled or a listener cancels the event.
25
26
  *
26
27
  * `MixinDismissible.dismiss` next door has the same shape and for the same
27
28
  * reason: a mixin has no family, so the answer to a cancelable event it
@@ -29,9 +30,12 @@ export declare class MixinSelectableItemInterface {
29
30
  * offers the second refusal on its own root.
30
31
  */
31
32
  select(): boolean;
32
- /** Whether this is the current one. Written by the set. */
33
+ /** Whether the item is selected. The parent set updates it. */
33
34
  selected: boolean;
34
- /** Identifies this one to the set, and is what a form submits. */
35
+ /**
36
+ * The item's value, which identifies it in its set and is what a form
37
+ * submits.
38
+ */
35
39
  value: string;
36
40
  }
37
41
  /**
@@ -25,7 +25,7 @@ export declare class MixinTokensInterface {
25
25
  */
26
26
  maxTags: number;
27
27
  /**
28
- * Whether the count is a control that shows the rest.
28
+ * Whether the count is a button that shows the hidden tokens.
29
29
  *
30
30
  * **Off by default, and that is about focus rather than caution.** The count
31
31
  * becomes a real button when this is set, which is a new stop in the tab
@@ -39,11 +39,12 @@ export declare class MixinTokensInterface {
39
39
  */
40
40
  expandable: boolean;
41
41
  /**
42
- * What the collapsed count is called, since `+3` names nothing.
42
+ * The count button's label, read by screen readers. Its visible text, such
43
+ * as `+3`, does not say what it does.
43
44
  */
44
45
  expandLabel: string;
45
46
  /**
46
- * What the control is called once everything is showing.
47
+ * The button's label, read by screen readers, once every token is showing.
47
48
  *
48
49
  * **The name and not the words on it**, which are a caret: expanded there is
49
50
  * no longer a number to show, and a phrase in its place would translate badly
@@ -11,33 +11,33 @@ export type ViewportControlsPlacement = 'top-start' | 'top-end' | 'bottom-start'
11
11
  * The API a pan-and-zoom surface has, as TypeScript sees it.
12
12
  */
13
13
  export declare class ViewportElement {
14
- /** Which of the controls the surface draws, as a list of what to keep. */
14
+ /** Which controls to show, as a list of `pan`, `zoom`, and `fullscreen`, or `none`. */
15
15
  controls?: string;
16
16
  /** Which corner the controls sit in. */
17
17
  controlsPlacement?: ViewportControlsPlacement;
18
- /** What the control that fills the screen is called. */
18
+ /** The fullscreen button's label. */
19
19
  fullscreenLabel: string;
20
- /** How long the reader may be still before the chrome hides, in milliseconds. */
20
+ /** How long, in milliseconds, before the header and footer hide when the user is inactive. `0` keeps them visible. */
21
21
  idleDelay: number;
22
- /** What the control that pans down is called. */
22
+ /** The pan down button's label. */
23
23
  panDownLabel: string;
24
- /** What the control that pans left is called. */
24
+ /** The pan left button's label. */
25
25
  panLeftLabel: string;
26
- /** What the control that pans right is called. */
26
+ /** The pan right button's label. */
27
27
  panRightLabel: string;
28
- /** How far one press moves the view, as a fraction of what is on screen. */
28
+ /** How far one press pans the view, as a fraction of its size. */
29
29
  panStep: number;
30
- /** What the control that pans up is called. */
30
+ /** The pan up button's label. */
31
31
  panUpLabel: string;
32
- /** What the control that zooms in is called. */
32
+ /** The zoom in button's label. */
33
33
  zoomInLabel: string;
34
- /** What the control that zooms out is called. */
34
+ /** The zoom out button's label. */
35
35
  zoomOutLabel: string;
36
- /** Asks for the view to move, which the consumer answers. */
36
+ /** Pans the view one step in a direction. */
37
37
  pan(to: ViewportWay): void;
38
- /** Asks for the view to zoom, `1` in and `-1` out. */
38
+ /** Zooms the view one step: `1` zooms in and `-1` zooms out. */
39
39
  zoom(by: number): void;
40
- /** Fills the screen with the surface, or comes back. */
40
+ /** Turns fullscreen on or off. */
41
41
  toggleFullscreen(): void;
42
42
  /** Whether the reader has been still long enough to hide the chrome. */
43
43
  protected resting: boolean;
@@ -49,7 +49,7 @@ export declare class ViewportElement {
49
49
  protected readonly fullscreen: FullscreenController;
50
50
  /** The key relay, bound by the family's own frame. */
51
51
  protected handleKeydown: (event: KeyboardEvent) => void;
52
- /** What the group of controls is called, where the page says. */
52
+ /** The name of the group of controls, read by screen readers. */
53
53
  controlsLabel: string | undefined;
54
54
  /** What the group of controls is called where the page does not say, which each family says for itself. */
55
55
  protected get restingControlsLabel(): string;