@fusion.dev/helix-core 0.211.1 → 0.212.1

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.
@@ -263,6 +263,109 @@ export interface SortDetail {
263
263
  */
264
264
  value: string;
265
265
  }
266
+ /** A hardware button Device Screen draws, named for what it does on the device. */
267
+ export type DeviceButton = 'back' | 'home' | 'power' | 'recents' | 'rotate-left' | 'rotate-right' | 'volume-down' | 'volume-up';
268
+ /** Detail carried by `helix-device-button`. */
269
+ export interface DeviceButtonDetail {
270
+ /** Which button was pressed. */
271
+ button: DeviceButton;
272
+ /**
273
+ * How long the button was held, in milliseconds. `0` for a press from a key
274
+ * or a script, which has no length.
275
+ */
276
+ duration: number;
277
+ }
278
+ /** Detail carried by `helix-device-key`. */
279
+ export interface DeviceKeyDetail {
280
+ /** Whether Alt, or Option on a Mac, was held. */
281
+ altKey: boolean;
282
+ /** The physical key, as `KeyboardEvent.code` names it: `KeyA`, `Enter`, `ArrowLeft`. */
283
+ code: string;
284
+ /** Whether Control was held. */
285
+ ctrlKey: boolean;
286
+ /** What the press produced, as `KeyboardEvent.key` names it: `a`, `A`, `Enter`. */
287
+ key: string;
288
+ /** Whether Command on a Mac, or the Windows key, was held. */
289
+ metaKey: boolean;
290
+ /** Whether the key went down or came up. */
291
+ phase: 'down' | 'up';
292
+ /** Whether the press is the key repeating while it is held. */
293
+ repeat: boolean;
294
+ /** Whether Shift was held. */
295
+ shiftKey: boolean;
296
+ }
297
+ /** Detail carried by `helix-device-scroll`. */
298
+ export interface DeviceScrollDetail {
299
+ /** How far across, in device units, in the wheel's sense: positive scrolls toward the right. */
300
+ deltaX: number;
301
+ /** How far down, in device units, in the wheel's sense: positive scrolls toward the bottom. */
302
+ deltaY: number;
303
+ /** The screen's height in the units the point is measured in. */
304
+ height: number;
305
+ /** The screen's width in the units the point is measured in. */
306
+ width: number;
307
+ /** Where the pointer is, across from the screen's left edge. */
308
+ x: number;
309
+ /** Where the pointer is, down from the screen's top edge. */
310
+ y: number;
311
+ }
312
+ /** Detail carried by `helix-device-swipe`. */
313
+ export interface DeviceSwipeDetail {
314
+ /** How long the finger was down, in milliseconds. */
315
+ duration: number;
316
+ /** Where the touch began, across from the screen's left edge. */
317
+ fromX: number;
318
+ /** Where the touch began, down from the screen's top edge. */
319
+ fromY: number;
320
+ /** The screen's height in the units the points are measured in. */
321
+ height: number;
322
+ /** Where the touch ended, across from the screen's left edge. */
323
+ toX: number;
324
+ /** Where the touch ended, down from the screen's top edge. */
325
+ toY: number;
326
+ /** The screen's width in the units the points are measured in. */
327
+ width: number;
328
+ }
329
+ /** Detail carried by `helix-device-tap`. */
330
+ export interface DeviceTapDetail {
331
+ /** How long the finger was down, in milliseconds. A long press is a long tap. */
332
+ duration: number;
333
+ /** The screen's height in the units the point is measured in. */
334
+ height: number;
335
+ /** The screen's width in the units the point is measured in. */
336
+ width: number;
337
+ /** Where the tap was, across from the screen's left edge. */
338
+ x: number;
339
+ /** Where the tap was, down from the screen's top edge. */
340
+ y: number;
341
+ }
342
+ /** Detail carried by `helix-device-text`. */
343
+ export interface DeviceTextDetail {
344
+ /** The text, as plain text. */
345
+ text: string;
346
+ }
347
+ /** Detail carried by `helix-device-touch`. */
348
+ export interface DeviceTouchDetail {
349
+ /** The screen's height in the units the point is measured in. */
350
+ height: number;
351
+ /**
352
+ * Which finger, counting from `0`. A finger keeps its number until it lifts,
353
+ * and the lowest free number goes to the next finger down.
354
+ */
355
+ id: number;
356
+ /**
357
+ * Where the touch is in its life: `down` as the finger lands, `move` as it
358
+ * moves, `up` as it lifts, and `cancel` when the browser takes the touch
359
+ * away, which ends it without a lift.
360
+ */
361
+ phase: 'cancel' | 'down' | 'move' | 'up';
362
+ /** The screen's width in the units the point is measured in. */
363
+ width: number;
364
+ /** Where the finger is, across from the screen's left edge. */
365
+ x: number;
366
+ /** Where the finger is, down from the screen's top edge. */
367
+ y: number;
368
+ }
266
369
  /** Detail carried by `helix-dismiss`. */
267
370
  export interface DismissDetail {
268
371
  /** Text content of the element asking to go, for identifying which it was. */
@@ -0,0 +1,14 @@
1
+ import type { DeviceButtonDetail } from './details.js';
2
+ /**
3
+ * A hardware button on the device was pressed, from Device Screen's controls
4
+ * or from `press()`. Press it on the device in response.
5
+ *
6
+ * **Sent once, as the button comes back up, with how long it was held.** A
7
+ * source that presses a button for a length of time, such as holding the side
8
+ * button for Siri, reads `duration`, and one that only presses reads nothing
9
+ * else. Not cancelable: nothing in Helix acts on the press.
10
+ */
11
+ export declare class HelixDeviceButtonEvent extends CustomEvent<DeviceButtonDetail> {
12
+ static readonly eventName = "helix-device-button";
13
+ constructor(detail: DeviceButtonDetail);
14
+ }
@@ -0,0 +1,11 @@
1
+ export class HelixDeviceButtonEvent extends CustomEvent {
2
+ static { this.eventName = 'helix-device-button'; }
3
+ constructor(detail) {
4
+ super(HelixDeviceButtonEvent.eventName, {
5
+ bubbles: true,
6
+ cancelable: false,
7
+ composed: true,
8
+ detail,
9
+ });
10
+ }
11
+ }
@@ -0,0 +1,16 @@
1
+ import type { DeviceKeyDetail } from './details.js';
2
+ /**
3
+ * A key went down or came up while Device Screen had focus. Press or release
4
+ * it on the device in response.
5
+ *
6
+ * **Every key is sent twice, down and up, as a hardware keyboard sends it.**
7
+ * The device's own input method turns the presses into text, so a language
8
+ * that composes characters composes them on the device. `code` names the
9
+ * physical key, for a source that injects key codes, and `key` names what the
10
+ * press produced, for a source that types text. Not cancelable: the frame has
11
+ * already kept the press from the page.
12
+ */
13
+ export declare class HelixDeviceKeyEvent extends CustomEvent<DeviceKeyDetail> {
14
+ static readonly eventName = "helix-device-key";
15
+ constructor(detail: DeviceKeyDetail);
16
+ }
@@ -0,0 +1,11 @@
1
+ export class HelixDeviceKeyEvent extends CustomEvent {
2
+ static { this.eventName = 'helix-device-key'; }
3
+ constructor(detail) {
4
+ super(HelixDeviceKeyEvent.eventName, {
5
+ bubbles: true,
6
+ cancelable: false,
7
+ composed: true,
8
+ detail,
9
+ });
10
+ }
11
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * A screenshot of the device was asked for, from Device Screen's screenshot
3
+ * button or from `screenshot()`. Take one in response.
4
+ *
5
+ * **A request with nothing attached.** The device's own screenshot is sharper
6
+ * than any frame of a stream, so the page takes it the way its source allows.
7
+ * `capture()` on the frame returns the picture on screen, for a page with no
8
+ * better way. Not cancelable: nothing in Helix takes the screenshot.
9
+ */
10
+ export declare class HelixDeviceScreenshotEvent extends Event {
11
+ static readonly eventName = "helix-device-screenshot";
12
+ constructor();
13
+ }
@@ -0,0 +1,10 @@
1
+ export class HelixDeviceScreenshotEvent extends Event {
2
+ static { this.eventName = 'helix-device-screenshot'; }
3
+ constructor() {
4
+ super(HelixDeviceScreenshotEvent.eventName, {
5
+ bubbles: true,
6
+ cancelable: false,
7
+ composed: true,
8
+ });
9
+ }
10
+ }
@@ -0,0 +1,14 @@
1
+ import type { DeviceScrollDetail } from './details.js';
2
+ /**
3
+ * A wheel or a trackpad scrolled over Device Screen. Scroll the device in
4
+ * response.
5
+ *
6
+ * The distance is in device units and keeps the wheel's sense, so a positive
7
+ * `deltaY` asks for what is further down. A source that scrolls by swiping
8
+ * moves a finger the other way. Not cancelable: the frame has already kept the
9
+ * scroll from the page.
10
+ */
11
+ export declare class HelixDeviceScrollEvent extends CustomEvent<DeviceScrollDetail> {
12
+ static readonly eventName = "helix-device-scroll";
13
+ constructor(detail: DeviceScrollDetail);
14
+ }
@@ -0,0 +1,11 @@
1
+ export class HelixDeviceScrollEvent extends CustomEvent {
2
+ static { this.eventName = 'helix-device-scroll'; }
3
+ constructor(detail) {
4
+ super(HelixDeviceScrollEvent.eventName, {
5
+ bubbles: true,
6
+ cancelable: false,
7
+ composed: true,
8
+ detail,
9
+ });
10
+ }
11
+ }
@@ -0,0 +1,15 @@
1
+ import type { DeviceSwipeDetail } from './details.js';
2
+ /**
3
+ * One finger moved across Device Screen and lifted. Swipe the device in
4
+ * response.
5
+ *
6
+ * **For a source that takes whole gestures**, such as a command that swipes
7
+ * from one point to another over a length of time. A source that takes each
8
+ * touch as it happens listens for `helix-device-touch` instead, and a page
9
+ * that listened for both would move the device twice. A touch with more than
10
+ * one finger sends no swipe. Not cancelable: nothing in Helix acts on it.
11
+ */
12
+ export declare class HelixDeviceSwipeEvent extends CustomEvent<DeviceSwipeDetail> {
13
+ static readonly eventName = "helix-device-swipe";
14
+ constructor(detail: DeviceSwipeDetail);
15
+ }
@@ -0,0 +1,11 @@
1
+ export class HelixDeviceSwipeEvent extends CustomEvent {
2
+ static { this.eventName = 'helix-device-swipe'; }
3
+ constructor(detail) {
4
+ super(HelixDeviceSwipeEvent.eventName, {
5
+ bubbles: true,
6
+ cancelable: false,
7
+ composed: true,
8
+ detail,
9
+ });
10
+ }
11
+ }
@@ -0,0 +1,13 @@
1
+ import type { DeviceTapDetail } from './details.js';
2
+ /**
3
+ * One finger touched Device Screen and lifted near where it landed. Tap the
4
+ * device in response.
5
+ *
6
+ * **For a source that takes whole gestures**, as `helix-device-swipe` is. A
7
+ * long press is a tap with a long `duration`, which a source holds for that
8
+ * long. Not cancelable: nothing in Helix acts on it.
9
+ */
10
+ export declare class HelixDeviceTapEvent extends CustomEvent<DeviceTapDetail> {
11
+ static readonly eventName = "helix-device-tap";
12
+ constructor(detail: DeviceTapDetail);
13
+ }
@@ -0,0 +1,11 @@
1
+ export class HelixDeviceTapEvent extends CustomEvent {
2
+ static { this.eventName = 'helix-device-tap'; }
3
+ constructor(detail) {
4
+ super(HelixDeviceTapEvent.eventName, {
5
+ bubbles: true,
6
+ cancelable: false,
7
+ composed: true,
8
+ detail,
9
+ });
10
+ }
11
+ }
@@ -0,0 +1,13 @@
1
+ import type { DeviceTextDetail } from './details.js';
2
+ /**
3
+ * Text was pasted into Device Screen. Type it on the device in response.
4
+ *
5
+ * **Pasted text has no key presses of its own**, so it arrives whole, in one
6
+ * event. Command or Control with V pastes in every mode, `forward-shortcuts`
7
+ * included. Not cancelable: the frame has
8
+ * already kept the paste from the page.
9
+ */
10
+ export declare class HelixDeviceTextEvent extends CustomEvent<DeviceTextDetail> {
11
+ static readonly eventName = "helix-device-text";
12
+ constructor(detail: DeviceTextDetail);
13
+ }
@@ -0,0 +1,11 @@
1
+ export class HelixDeviceTextEvent extends CustomEvent {
2
+ static { this.eventName = 'helix-device-text'; }
3
+ constructor(detail) {
4
+ super(HelixDeviceTextEvent.eventName, {
5
+ bubbles: true,
6
+ cancelable: false,
7
+ composed: true,
8
+ detail,
9
+ });
10
+ }
11
+ }
@@ -0,0 +1,15 @@
1
+ import type { DeviceTouchDetail } from './details.js';
2
+ /**
3
+ * A finger landed on Device Screen, moved, lifted, or was taken away. Touch
4
+ * the device in response.
5
+ *
6
+ * **For a source that takes each touch as it happens**, which is what a drag,
7
+ * a long press that turns into a drag, and a pinch need. One event per finger
8
+ * per step, so a pinch sends two at a time with different `id`s. A source that
9
+ * only taps and swipes listens for `helix-device-tap` and `helix-device-swipe`
10
+ * instead. Not cancelable: nothing in Helix acts on it.
11
+ */
12
+ export declare class HelixDeviceTouchEvent extends CustomEvent<DeviceTouchDetail> {
13
+ static readonly eventName = "helix-device-touch";
14
+ constructor(detail: DeviceTouchDetail);
15
+ }
@@ -0,0 +1,11 @@
1
+ export class HelixDeviceTouchEvent extends CustomEvent {
2
+ static { this.eventName = 'helix-device-touch'; }
3
+ constructor(detail) {
4
+ super(HelixDeviceTouchEvent.eventName, {
5
+ bubbles: true,
6
+ cancelable: false,
7
+ composed: true,
8
+ detail,
9
+ });
10
+ }
11
+ }
@@ -61,6 +61,14 @@ import { HelixConsoleEvent } from './console.js';
61
61
  import { HelixCopyEvent } from './copy.js';
62
62
  import { HelixCopyErrorEvent } from './copy-error.js';
63
63
  import { HelixCreateEvent } from './create.js';
64
+ import { HelixDeviceButtonEvent } from './device-button.js';
65
+ import { HelixDeviceKeyEvent } from './device-key.js';
66
+ import { HelixDeviceScreenshotEvent } from './device-screenshot.js';
67
+ import { HelixDeviceScrollEvent } from './device-scroll.js';
68
+ import { HelixDeviceSwipeEvent } from './device-swipe.js';
69
+ import { HelixDeviceTapEvent } from './device-tap.js';
70
+ import { HelixDeviceTextEvent } from './device-text.js';
71
+ import { HelixDeviceTouchEvent } from './device-touch.js';
64
72
  import { HelixDismissEvent } from './dismiss.js';
65
73
  import { HelixEditEvent } from './edit.js';
66
74
  import { HelixEndEvent } from './end.js';
@@ -129,9 +137,9 @@ import { HelixToggleEvent } from './toggle.js';
129
137
  import { HelixTourAskEvent } from './tour-ask.js';
130
138
  import { HelixTourStatusEvent } from './tour-status.js';
131
139
  import { HelixTypingEvent } from './typing.js';
132
- export type { ActivateDetail, AuraFallbackDetail, BandDetail, CanvasView, CaretDetail, ChangeDetail, CompleteDetail, ConnectDetail, ConsoleDetail, CopyDetail, CreateDetail, DismissDetail, FacetDetail, FilterDetail, GraphFilterDetail, GraphLayoutDetail, GraphPartChangeDetail, GraphSignalDetail, MapClusterDetail, MapPanDetail, MapPartChangeDetail, MapRotateDetail, MapTiltDetail, MapZoomDetail, MoveDetail, NavigateDetail, OpenDetail, PasteDetail, PlotChangeDetail, PlotTurnDetail, PressDetail, PressPointerType, RangeDetail, ReadDetail, ReadingDetail, ReconnectDetail, Refusal, RefusedFile, RejectDetail, RelabelDetail, RemoveDetail, ReorderDetail, ResizeDetail, ScrolledDetail, SelectDetail, SendDetail, ShortcutDetail, SkipDetail, SortDetail, StrandsFallbackDetail, TerminalInputDetail, TerminalLinkDetail, TerminalResizeDetail, TerminalTitleDetail, ToggleDetail, TourAskDetail, TourStatusDetail, TypingDetail, ViewportPanDetail, ViewportZoomDetail, } from './details.js';
140
+ export type { ActivateDetail, AuraFallbackDetail, BandDetail, CanvasView, CaretDetail, ChangeDetail, CompleteDetail, ConnectDetail, ConsoleDetail, CopyDetail, CreateDetail, DeviceButton, DeviceButtonDetail, DeviceKeyDetail, DeviceScrollDetail, DeviceSwipeDetail, DeviceTapDetail, DeviceTextDetail, DeviceTouchDetail, DismissDetail, FacetDetail, FilterDetail, GraphFilterDetail, GraphLayoutDetail, GraphPartChangeDetail, GraphSignalDetail, MapClusterDetail, MapPanDetail, MapPartChangeDetail, MapRotateDetail, MapTiltDetail, MapZoomDetail, MoveDetail, NavigateDetail, OpenDetail, PasteDetail, PlotChangeDetail, PlotTurnDetail, PressDetail, PressPointerType, RangeDetail, ReadDetail, ReadingDetail, ReconnectDetail, Refusal, RefusedFile, RejectDetail, RelabelDetail, RemoveDetail, ReorderDetail, ResizeDetail, ScrolledDetail, SelectDetail, SendDetail, ShortcutDetail, SkipDetail, SortDetail, StrandsFallbackDetail, TerminalInputDetail, TerminalLinkDetail, TerminalResizeDetail, TerminalTitleDetail, ToggleDetail, TourAskDetail, TourStatusDetail, TypingDetail, ViewportPanDetail, ViewportZoomDetail, } from './details.js';
133
141
  export { helixEventNames } from './names.js';
134
- export { HelixActionEvent, HelixActivateEvent, HelixAuraFallbackEvent, HelixBandEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePasteEvent, 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, HelixPastedEvent, HelixPinEvent, HelixPlotChangeEvent, HelixPlotTurnEvent, HelixPressEvent, HelixPreviewEvent, HelixPreviousEvent, HelixRangeChangeEvent, HelixReadEvent, HelixReadingChangeEvent, HelixReadingPressEvent, HelixReconnectEvent, HelixRejectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixReorderedEvent, HelixResizedEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSelectedEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixSortedEvent, HelixSplitEvent, HelixStrandsFallbackEvent, HelixTerminalBellEvent, HelixTerminalInputEvent, HelixTerminalLinkEvent, HelixTerminalResizeEvent, HelixTerminalRestartEvent, HelixTerminalTitleEvent, HelixToggleEvent, HelixTourAskEvent, HelixTourStatusEvent, HelixTypingEvent, };
142
+ export { HelixActionEvent, HelixActivateEvent, HelixAuraFallbackEvent, HelixBandEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePasteEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeReorderEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCanvasEditEvent, HelixCanvasPanEvent, HelixCanvasViewEvent, HelixCanvasZoomEvent, HelixCaretEvent, HelixClearEvent, HelixCollapseEvent, HelixCompleteEvent, HelixConnectEvent, HelixConsoleEvent, HelixCopyErrorEvent, HelixCopyEvent, HelixCreateEvent, HelixDeviceButtonEvent, HelixDeviceKeyEvent, HelixDeviceScreenshotEvent, HelixDeviceScrollEvent, HelixDeviceSwipeEvent, HelixDeviceTapEvent, HelixDeviceTextEvent, HelixDeviceTouchEvent, 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, HelixPastedEvent, HelixPinEvent, HelixPlotChangeEvent, HelixPlotTurnEvent, HelixPressEvent, HelixPreviewEvent, HelixPreviousEvent, HelixRangeChangeEvent, HelixReadEvent, HelixReadingChangeEvent, HelixReadingPressEvent, HelixReconnectEvent, HelixRejectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixReorderedEvent, HelixResizedEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSelectedEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixSortedEvent, HelixSplitEvent, HelixStrandsFallbackEvent, HelixTerminalBellEvent, HelixTerminalInputEvent, HelixTerminalLinkEvent, HelixTerminalResizeEvent, HelixTerminalRestartEvent, HelixTerminalTitleEvent, HelixToggleEvent, HelixTourAskEvent, HelixTourStatusEvent, HelixTypingEvent, };
135
143
  /**
136
144
  * Every event class, and the one place a new one is registered: a class in a
137
145
  * module of its own, imported above, and named here and in `names.ts`.
@@ -178,6 +186,14 @@ declare const registry: {
178
186
  readonly HelixCopyErrorEvent: typeof HelixCopyErrorEvent;
179
187
  readonly HelixCopyEvent: typeof HelixCopyEvent;
180
188
  readonly HelixCreateEvent: typeof HelixCreateEvent;
189
+ readonly HelixDeviceButtonEvent: typeof HelixDeviceButtonEvent;
190
+ readonly HelixDeviceKeyEvent: typeof HelixDeviceKeyEvent;
191
+ readonly HelixDeviceScreenshotEvent: typeof HelixDeviceScreenshotEvent;
192
+ readonly HelixDeviceScrollEvent: typeof HelixDeviceScrollEvent;
193
+ readonly HelixDeviceSwipeEvent: typeof HelixDeviceSwipeEvent;
194
+ readonly HelixDeviceTapEvent: typeof HelixDeviceTapEvent;
195
+ readonly HelixDeviceTextEvent: typeof HelixDeviceTextEvent;
196
+ readonly HelixDeviceTouchEvent: typeof HelixDeviceTouchEvent;
181
197
  readonly HelixDismissEvent: typeof HelixDismissEvent;
182
198
  readonly HelixEditEvent: typeof HelixEditEvent;
183
199
  readonly HelixEndEvent: typeof HelixEndEvent;
@@ -31,6 +31,14 @@ import { HelixConsoleEvent } from './console.js';
31
31
  import { HelixCopyEvent } from './copy.js';
32
32
  import { HelixCopyErrorEvent } from './copy-error.js';
33
33
  import { HelixCreateEvent } from './create.js';
34
+ import { HelixDeviceButtonEvent } from './device-button.js';
35
+ import { HelixDeviceKeyEvent } from './device-key.js';
36
+ import { HelixDeviceScreenshotEvent } from './device-screenshot.js';
37
+ import { HelixDeviceScrollEvent } from './device-scroll.js';
38
+ import { HelixDeviceSwipeEvent } from './device-swipe.js';
39
+ import { HelixDeviceTapEvent } from './device-tap.js';
40
+ import { HelixDeviceTextEvent } from './device-text.js';
41
+ import { HelixDeviceTouchEvent } from './device-touch.js';
34
42
  import { HelixDismissEvent } from './dismiss.js';
35
43
  import { HelixEditEvent } from './edit.js';
36
44
  import { HelixEndEvent } from './end.js';
@@ -100,7 +108,7 @@ import { HelixTourAskEvent } from './tour-ask.js';
100
108
  import { HelixTourStatusEvent } from './tour-status.js';
101
109
  import { HelixTypingEvent } from './typing.js';
102
110
  export { helixEventNames } from './names.js';
103
- export { HelixActionEvent, HelixActivateEvent, HelixAuraFallbackEvent, HelixBandEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePasteEvent, 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, HelixPastedEvent, HelixPinEvent, HelixPlotChangeEvent, HelixPlotTurnEvent, HelixPressEvent, HelixPreviewEvent, HelixPreviousEvent, HelixRangeChangeEvent, HelixReadEvent, HelixReadingChangeEvent, HelixReadingPressEvent, HelixReconnectEvent, HelixRejectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixReorderedEvent, HelixResizedEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSelectedEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixSortedEvent, HelixSplitEvent, HelixStrandsFallbackEvent, HelixTerminalBellEvent, HelixTerminalInputEvent, HelixTerminalLinkEvent, HelixTerminalResizeEvent, HelixTerminalRestartEvent, HelixTerminalTitleEvent, HelixToggleEvent, HelixTourAskEvent, HelixTourStatusEvent, HelixTypingEvent, };
111
+ export { HelixActionEvent, HelixActivateEvent, HelixAuraFallbackEvent, HelixBandEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePasteEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeReorderEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCanvasEditEvent, HelixCanvasPanEvent, HelixCanvasViewEvent, HelixCanvasZoomEvent, HelixCaretEvent, HelixClearEvent, HelixCollapseEvent, HelixCompleteEvent, HelixConnectEvent, HelixConsoleEvent, HelixCopyErrorEvent, HelixCopyEvent, HelixCreateEvent, HelixDeviceButtonEvent, HelixDeviceKeyEvent, HelixDeviceScreenshotEvent, HelixDeviceScrollEvent, HelixDeviceSwipeEvent, HelixDeviceTapEvent, HelixDeviceTextEvent, HelixDeviceTouchEvent, 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, HelixPastedEvent, HelixPinEvent, HelixPlotChangeEvent, HelixPlotTurnEvent, HelixPressEvent, HelixPreviewEvent, HelixPreviousEvent, HelixRangeChangeEvent, HelixReadEvent, HelixReadingChangeEvent, HelixReadingPressEvent, HelixReconnectEvent, HelixRejectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixReorderedEvent, HelixResizedEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSelectedEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixSortedEvent, HelixSplitEvent, HelixStrandsFallbackEvent, HelixTerminalBellEvent, HelixTerminalInputEvent, HelixTerminalLinkEvent, HelixTerminalResizeEvent, HelixTerminalRestartEvent, HelixTerminalTitleEvent, HelixToggleEvent, HelixTourAskEvent, HelixTourStatusEvent, HelixTypingEvent, };
104
112
  const registry = {
105
113
  HelixActionEvent,
106
114
  HelixActivateEvent,
@@ -135,6 +143,14 @@ const registry = {
135
143
  HelixCopyErrorEvent,
136
144
  HelixCopyEvent,
137
145
  HelixCreateEvent,
146
+ HelixDeviceButtonEvent,
147
+ HelixDeviceKeyEvent,
148
+ HelixDeviceScreenshotEvent,
149
+ HelixDeviceScrollEvent,
150
+ HelixDeviceSwipeEvent,
151
+ HelixDeviceTapEvent,
152
+ HelixDeviceTextEvent,
153
+ HelixDeviceTouchEvent,
138
154
  HelixDismissEvent,
139
155
  HelixEditEvent,
140
156
  HelixEndEvent,
@@ -2,7 +2,8 @@ export const helixEventNames = new Set(('action activate aura-fallback band befo
2
2
  'before-collapse before-edit before-move before-open before-panel-resize before-paste before-pin ' +
3
3
  'before-reconnect before-relabel before-reorder before-resize before-split before-toggle ' +
4
4
  'canvas-edit canvas-pan canvas-view canvas-zoom caret clear collapse complete ' +
5
- 'connect console copy copy-error create dismiss edit end expand facet filter ' +
5
+ 'connect console copy copy-error create device-button device-key device-screenshot ' +
6
+ 'device-scroll device-swipe device-tap device-text device-touch dismiss edit end expand facet filter ' +
6
7
  'filtered graph-filter graph-layout graph-pan graph-part-change graph-ready ' +
7
8
  'graph-signal graph-zoom history load load-more map-cluster map-pan map-part-change ' +
8
9
  'map-ready map-rotate map-tilt map-zoom move navigate next panel-resize pasted pin plot-change ' +
@@ -280,8 +280,8 @@ export declare class HelixElement extends LitElement {
280
280
  protected relayNativeEvent(event: Event, init?: EventInit): void;
281
281
  /**
282
282
  * The rules from `mark-rules.ts` for the marks this element writes in its
283
- * own shadow root: `data-scroller`, `data-virtual`, `data-spoken` and
284
- * `data-mirror`.
283
+ * own shadow root: `data-scroller`, `data-virtual`, `data-spoken`,
284
+ * `data-mirror` and `data-touches`.
285
285
  *
286
286
  * A component that writes a mark names its rule here, and a subclass
287
287
  * inherits the list. One that writes none takes only the three rules every
@@ -117,3 +117,17 @@ export declare const SPOKEN_RULE = "[data-spoken]{position:absolute;inline-size:
117
117
  * whatever the script, and so is a picture of a key.
118
118
  */
119
119
  export declare const MIRROR_RULE = ":host(:dir(rtl)) [data-mirror]{scale:-1 1}";
120
+ /**
121
+ * Hands every touch on an element to the component, which reads each one as
122
+ * input of its own.
123
+ *
124
+ * **Without it a one-finger drag is the page's.** The browser scrolls or zooms
125
+ * and sends the component `pointercancel`, so it never sees the finger move or
126
+ * lift. Device Screen turns touches into touches on a device and has that
127
+ * behavior only while `touch-action` is `none`, which makes the rule a
128
+ * mechanism, as the scroller's `overflow` is.
129
+ *
130
+ * Marked only while the component takes touches, so a read-only Device Screen
131
+ * leaves the page its scroll.
132
+ */
133
+ export declare const TOUCHES_RULE = "[data-touches]{touch-action:none}";
@@ -2,3 +2,4 @@ export const SCROLLER_RULE = '[data-scroller]{overflow:auto}';
2
2
  export const VIRTUAL_RULE = '[data-virtual]{overflow-anchor:none}';
3
3
  export const SPOKEN_RULE = '[data-spoken]{position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}';
4
4
  export const MIRROR_RULE = ':host(:dir(rtl)) [data-mirror]{scale:-1 1}';
5
+ export const TOUCHES_RULE = '[data-touches]{touch-action:none}';
package/dist/index.d.ts CHANGED
@@ -40,9 +40,9 @@ export { UpgradeController, type UpgradeOptions, } from './controllers/upgrade-c
40
40
  export { type Rendered, VirtualizeController, type VirtualizeOptions, type Window as VirtualizeWindow, } from './controllers/virtualize-controller/virtualize-controller.js';
41
41
  export { Waterfall } from './controllers/virtualize-controller/waterfall.js';
42
42
  export { eventsForTag, registerElementEvents } from './events/element-events.js';
43
- 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, HelixBeforePasteEvent, 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, HelixPastedEvent, HelixPinEvent, HelixPlotChangeEvent, HelixPlotTurnEvent, HelixPressEvent, HelixPreviewEvent, HelixPreviousEvent, HelixRangeChangeEvent, HelixReadEvent, HelixReadingChangeEvent, HelixReadingPressEvent, HelixReconnectEvent, HelixRejectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixReorderedEvent, HelixResizedEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSelectedEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixSortedEvent, HelixSplitEvent, HelixStrandsFallbackEvent, HelixTerminalBellEvent, HelixTerminalInputEvent, HelixTerminalLinkEvent, HelixTerminalResizeEvent, HelixTerminalRestartEvent, HelixTerminalTitleEvent, HelixToggleEvent, HelixTourAskEvent, HelixTourStatusEvent, HelixTypingEvent, type MapClusterDetail, type MapPanDetail, type MapPartChangeDetail, type MapRotateDetail, type MapTiltDetail, type MapZoomDetail, type MoveDetail, type NavigateDetail, type OpenDetail, type PasteDetail, type PlotChangeDetail, type PlotTurnDetail, type PressDetail, type PressPointerType, type RangeDetail, type ReadDetail, type ReadingDetail, 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 StrandsFallbackDetail, type TerminalInputDetail, type TerminalLinkDetail, type TerminalResizeDetail, type TerminalTitleDetail, type ToggleDetail, type TourStatusDetail, type TypingDetail, type ViewportPanDetail, type ViewportZoomDetail, } from './events/events.js';
43
+ export { type ActivateDetail, type AuraFallbackDetail, type BandDetail, type CanvasView, type CaretDetail, type ChangeDetail, type CompleteDetail, type ConnectDetail, type ConsoleDetail, type CopyDetail, type CreateDetail, type DeviceButton, type DeviceButtonDetail, type DeviceKeyDetail, type DeviceScrollDetail, type DeviceSwipeDetail, type DeviceTapDetail, type DeviceTextDetail, type DeviceTouchDetail, 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, HelixBeforePasteEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeReorderEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCanvasEditEvent, HelixCanvasPanEvent, HelixCanvasViewEvent, HelixCanvasZoomEvent, HelixCaretEvent, HelixClearEvent, HelixCollapseEvent, HelixCompleteEvent, HelixConnectEvent, HelixConsoleEvent, HelixCopyErrorEvent, HelixCopyEvent, HelixCreateEvent, HelixDeviceButtonEvent, HelixDeviceKeyEvent, HelixDeviceScreenshotEvent, HelixDeviceScrollEvent, HelixDeviceSwipeEvent, HelixDeviceTapEvent, HelixDeviceTextEvent, HelixDeviceTouchEvent, 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, HelixPastedEvent, HelixPinEvent, HelixPlotChangeEvent, HelixPlotTurnEvent, HelixPressEvent, HelixPreviewEvent, HelixPreviousEvent, HelixRangeChangeEvent, HelixReadEvent, HelixReadingChangeEvent, HelixReadingPressEvent, HelixReconnectEvent, HelixRejectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixReorderedEvent, HelixResizedEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSelectedEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixSortedEvent, HelixSplitEvent, HelixStrandsFallbackEvent, HelixTerminalBellEvent, HelixTerminalInputEvent, HelixTerminalLinkEvent, HelixTerminalResizeEvent, HelixTerminalRestartEvent, HelixTerminalTitleEvent, HelixToggleEvent, HelixTourAskEvent, HelixTourStatusEvent, HelixTypingEvent, type MapClusterDetail, type MapPanDetail, type MapPartChangeDetail, type MapRotateDetail, type MapTiltDetail, type MapZoomDetail, type MoveDetail, type NavigateDetail, type OpenDetail, type PasteDetail, type PlotChangeDetail, type PlotTurnDetail, type PressDetail, type PressPointerType, type RangeDetail, type ReadDetail, type ReadingDetail, 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 StrandsFallbackDetail, type TerminalInputDetail, type TerminalLinkDetail, type TerminalResizeDetail, type TerminalTitleDetail, type ToggleDetail, type TourStatusDetail, type TypingDetail, type ViewportPanDetail, type ViewportZoomDetail, } from './events/events.js';
44
44
  export { HelixElement, whenHydrated } from './helix-element/helix-element.js';
45
- export { MIRROR_RULE, SCROLLER_RULE, SPOKEN_RULE, VIRTUAL_RULE, } from './helix-element/mark-rules.js';
45
+ export { MIRROR_RULE, SCROLLER_RULE, SPOKEN_RULE, TOUCHES_RULE, VIRTUAL_RULE, } from './helix-element/mark-rules.js';
46
46
  export { HelixFormElement } from './helix-form-element/helix-form-element.js';
47
47
  export { HelixFormElementBase } from './helix-form-element/helix-form-element-base.js';
48
48
  export { MixinChartSource, type MixinChartSourceInterface, PALETTE, PLOT_HEIGHT, PLOT_WIDTH, POSITION_LABEL, READINGS_PAGE, seriesIndex, seriesNames, } from './mixins/mixin-chart-source/mixin-chart-source.js';
@@ -155,6 +155,7 @@ export { slotFilled, slotNamed } from './utils/slot-filled/slot-filled.js';
155
155
  export { SlottedGlyph } from './utils/slotted-glyph/slotted-glyph.js';
156
156
  export { slottedWords } from './utils/slotted-words/slotted-words.js';
157
157
  export { splitValues } from './utils/split-values/split-values.js';
158
+ export { stopPress } from './utils/stop-press/stop-press.js';
158
159
  export { edgeOffset, FLING, parseSnapPoints, type SwipeAxis, type SwipeEdge, type SwipeRelease, settleSwipe, snapTravel, swipeAxis, swipeEdge, swipeStep, towardEdge, } from './utils/swipe/swipe.js';
159
160
  export { tellDisclosure } from './utils/tell-disclosure/tell-disclosure.js';
160
161
  export { subscribe } from './utils/ticker/ticker.js';
package/dist/index.js CHANGED
@@ -40,9 +40,9 @@ export { UpgradeController, } from './controllers/upgrade-controller/upgrade-con
40
40
  export { VirtualizeController, } from './controllers/virtualize-controller/virtualize-controller.js';
41
41
  export { Waterfall } from './controllers/virtualize-controller/waterfall.js';
42
42
  export { eventsForTag, registerElementEvents } from './events/element-events.js';
43
- export { HelixActionEvent, HelixActivateEvent, HelixAuraFallbackEvent, HelixBandEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePasteEvent, 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, HelixPastedEvent, HelixPinEvent, HelixPlotChangeEvent, HelixPlotTurnEvent, HelixPressEvent, HelixPreviewEvent, HelixPreviousEvent, HelixRangeChangeEvent, HelixReadEvent, HelixReadingChangeEvent, HelixReadingPressEvent, HelixReconnectEvent, HelixRejectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixReorderedEvent, HelixResizedEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSelectedEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixSortedEvent, HelixSplitEvent, HelixStrandsFallbackEvent, HelixTerminalBellEvent, HelixTerminalInputEvent, HelixTerminalLinkEvent, HelixTerminalResizeEvent, HelixTerminalRestartEvent, HelixTerminalTitleEvent, HelixToggleEvent, HelixTourAskEvent, HelixTourStatusEvent, HelixTypingEvent, } from './events/events.js';
43
+ export { HelixActionEvent, HelixActivateEvent, HelixAuraFallbackEvent, HelixBandEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePasteEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeReorderEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCanvasEditEvent, HelixCanvasPanEvent, HelixCanvasViewEvent, HelixCanvasZoomEvent, HelixCaretEvent, HelixClearEvent, HelixCollapseEvent, HelixCompleteEvent, HelixConnectEvent, HelixConsoleEvent, HelixCopyErrorEvent, HelixCopyEvent, HelixCreateEvent, HelixDeviceButtonEvent, HelixDeviceKeyEvent, HelixDeviceScreenshotEvent, HelixDeviceScrollEvent, HelixDeviceSwipeEvent, HelixDeviceTapEvent, HelixDeviceTextEvent, HelixDeviceTouchEvent, 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, HelixPastedEvent, HelixPinEvent, HelixPlotChangeEvent, HelixPlotTurnEvent, HelixPressEvent, HelixPreviewEvent, HelixPreviousEvent, HelixRangeChangeEvent, HelixReadEvent, HelixReadingChangeEvent, HelixReadingPressEvent, HelixReconnectEvent, HelixRejectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixReorderedEvent, HelixResizedEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSelectedEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixSortedEvent, HelixSplitEvent, HelixStrandsFallbackEvent, HelixTerminalBellEvent, HelixTerminalInputEvent, HelixTerminalLinkEvent, HelixTerminalResizeEvent, HelixTerminalRestartEvent, HelixTerminalTitleEvent, HelixToggleEvent, HelixTourAskEvent, HelixTourStatusEvent, HelixTypingEvent, } from './events/events.js';
44
44
  export { HelixElement, whenHydrated } from './helix-element/helix-element.js';
45
- export { MIRROR_RULE, SCROLLER_RULE, SPOKEN_RULE, VIRTUAL_RULE, } from './helix-element/mark-rules.js';
45
+ export { MIRROR_RULE, SCROLLER_RULE, SPOKEN_RULE, TOUCHES_RULE, VIRTUAL_RULE, } from './helix-element/mark-rules.js';
46
46
  export { HelixFormElement } from './helix-form-element/helix-form-element.js';
47
47
  export { HelixFormElementBase } from './helix-form-element/helix-form-element-base.js';
48
48
  export { MixinChartSource, PALETTE, PLOT_HEIGHT, PLOT_WIDTH, POSITION_LABEL, READINGS_PAGE, seriesIndex, seriesNames, } from './mixins/mixin-chart-source/mixin-chart-source.js';
@@ -155,6 +155,7 @@ export { slotFilled, slotNamed } from './utils/slot-filled/slot-filled.js';
155
155
  export { SlottedGlyph } from './utils/slotted-glyph/slotted-glyph.js';
156
156
  export { slottedWords } from './utils/slotted-words/slotted-words.js';
157
157
  export { splitValues } from './utils/split-values/split-values.js';
158
+ export { stopPress } from './utils/stop-press/stop-press.js';
158
159
  export { edgeOffset, FLING, parseSnapPoints, settleSwipe, snapTravel, swipeAxis, swipeEdge, swipeStep, towardEdge, } from './utils/swipe/swipe.js';
159
160
  export { tellDisclosure } from './utils/tell-disclosure/tell-disclosure.js';
160
161
  export { subscribe } from './utils/ticker/ticker.js';
@@ -8,8 +8,8 @@ import { ToolbarController } from '../../controllers/toolbar-controller/toolbar-
8
8
  import { inlineStep } from '../../utils/inline-step/inline-step.js';
9
9
  import { isRtl } from '../../utils/is-rtl/is-rtl.js';
10
10
  import { numberConverter, timeConverter } from '../../utils/number-converter/number-converter.js';
11
+ import { stopPress } from '../../utils/stop-press/stop-press.js';
11
12
  import { formatWords, words } from '../../words/words.js';
12
- const stopPress = (event) => event.stopPropagation();
13
13
  const HINT_SHOWS = 1600;
14
14
  export const MixinViewport = (Base) => {
15
15
  class Viewport extends Base {
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Keeps a press on one of a component's own buttons inside the component.
3
+ *
4
+ * A Button or an Icon Button a component composes sends `helix-press`, which
5
+ * bubbles and crosses shadow roots. The page hears what the press did through
6
+ * the component's own events, and not that a button inside it was pressed, so
7
+ * a component binds this as the button's `@helix-press` listener.
8
+ */
9
+ export declare const stopPress: (event: Event) => void;
@@ -0,0 +1,3 @@
1
+ export const stopPress = (event) => {
2
+ event.stopPropagation();
3
+ };
package/dist/version.d.ts CHANGED
@@ -6,4 +6,4 @@
6
6
  * release, so the two never disagree; a spec beside this holds them to it.
7
7
  * Nothing else in the running code knows which release it is.
8
8
  */
9
- export declare const VERSION = "0.211.1";
9
+ export declare const VERSION = "0.212.1";
package/dist/version.js CHANGED
@@ -1 +1 @@
1
- export const VERSION = '0.211.1';
1
+ export const VERSION = '0.212.1';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fusion.dev/helix-core",
3
3
  "description": "Helix element primitives: base classes, mixins, decorators, utilities.",
4
- "version": "0.211.1",
4
+ "version": "0.212.1",
5
5
  "license": "MIT",
6
6
  "author": "Ross Sheppard <ross.sheppard@fusion.dev>",
7
7
  "repository": {
@@ -81,12 +81,12 @@
81
81
  "bugs": "https://github.com/project-fusion/fusion/issues",
82
82
  "dependencies": {
83
83
  "@floating-ui/dom": "^1.8.0",
84
- "@fusion.dev/helix-icons": "0.211.1",
84
+ "@fusion.dev/helix-icons": "0.212.1",
85
85
  "tslib": "^2.8.1"
86
86
  },
87
87
  "devDependencies": {
88
- "@fusion.dev/helix-cem": "0.211.1",
89
- "@fusion.dev/helix-testing": "0.211.1",
88
+ "@fusion.dev/helix-cem": "0.212.1",
89
+ "@fusion.dev/helix-testing": "0.212.1",
90
90
  "@lit-labs/ssr": "^4.1.0",
91
91
  "lit": "^3.2.1"
92
92
  },