@fusion.dev/helix-headless 0.211.0 → 0.212.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.
- package/api.json +1 -1
- package/custom-elements.json +1 -1
- package/dist/code-block/root/code-block-root.js +1 -2
- package/dist/device-screen/gesture.d.ts +13 -0
- package/dist/device-screen/gesture.js +3 -0
- package/dist/device-screen/index.d.ts +1 -0
- package/dist/device-screen/index.js +1 -0
- package/dist/device-screen/root/device-screen-root.d.ts +531 -0
- package/dist/device-screen/root/device-screen-root.js +869 -0
- package/dist/device-screen/turn.d.ts +41 -0
- package/dist/device-screen/turn.js +42 -0
- package/dist/element-events.generated.js +10 -0
- package/dist/graph/root/graph-root.js +1 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/map/root/map-root.js +1 -2
- package/dist/terminal/root/terminal-root.js +1 -2
- package/examples.json +1 -1
- package/lint.json +1 -1
- package/package.json +5 -5
- package/types/jsx.d.ts +978 -0
- package/types/svelte.d.ts +1 -0
- package/types/vue.d.ts +215 -0
- package/types/words.d.ts +94 -0
package/types/jsx.d.ts
CHANGED
|
@@ -26,6 +26,14 @@ import type {
|
|
|
26
26
|
HelixCopyErrorEvent,
|
|
27
27
|
HelixCopyEvent,
|
|
28
28
|
HelixCreateEvent,
|
|
29
|
+
HelixDeviceButtonEvent,
|
|
30
|
+
HelixDeviceKeyEvent,
|
|
31
|
+
HelixDeviceScreenshotEvent,
|
|
32
|
+
HelixDeviceScrollEvent,
|
|
33
|
+
HelixDeviceSwipeEvent,
|
|
34
|
+
HelixDeviceTapEvent,
|
|
35
|
+
HelixDeviceTextEvent,
|
|
36
|
+
HelixDeviceTouchEvent,
|
|
29
37
|
HelixDismissEvent,
|
|
30
38
|
HelixEndEvent,
|
|
31
39
|
HelixExpandEvent,
|
|
@@ -76,6 +84,7 @@ import type {
|
|
|
76
84
|
HelixHeadlessDatePicker,
|
|
77
85
|
HelixHeadlessDescriptionList,
|
|
78
86
|
HelixHeadlessDescriptionListItem,
|
|
87
|
+
HelixHeadlessDeviceScreen,
|
|
79
88
|
HelixHeadlessDialog,
|
|
80
89
|
HelixHeadlessDivider,
|
|
81
90
|
HelixHeadlessDonutChart,
|
|
@@ -12276,6 +12285,380 @@ makes the list a named group. */
|
|
|
12276
12285
|
textContent?: (string | number) | undefined;
|
|
12277
12286
|
};
|
|
12278
12287
|
|
|
12288
|
+
/** `HelixHeadlessDeviceScreen` component event */
|
|
12289
|
+
export type HelixHeadlessDeviceScreenElementEvent<E = Event> = TypedEvent<
|
|
12290
|
+
HelixHeadlessDeviceScreen,
|
|
12291
|
+
E
|
|
12292
|
+
>;
|
|
12293
|
+
/** `helix-device-button` event type */
|
|
12294
|
+
export type HelixHeadlessDeviceScreenHelixDeviceButtonElementEvent =
|
|
12295
|
+
HelixHeadlessDeviceScreenElementEvent<HelixDeviceButtonEvent>;
|
|
12296
|
+
/** `helix-device-key` event type */
|
|
12297
|
+
export type HelixHeadlessDeviceScreenHelixDeviceKeyElementEvent =
|
|
12298
|
+
HelixHeadlessDeviceScreenElementEvent<HelixDeviceKeyEvent>;
|
|
12299
|
+
/** `helix-device-screenshot` event type */
|
|
12300
|
+
export type HelixHeadlessDeviceScreenHelixDeviceScreenshotElementEvent =
|
|
12301
|
+
HelixHeadlessDeviceScreenElementEvent<HelixDeviceScreenshotEvent>;
|
|
12302
|
+
/** `helix-device-scroll` event type */
|
|
12303
|
+
export type HelixHeadlessDeviceScreenHelixDeviceScrollElementEvent =
|
|
12304
|
+
HelixHeadlessDeviceScreenElementEvent<HelixDeviceScrollEvent>;
|
|
12305
|
+
/** `helix-device-swipe` event type */
|
|
12306
|
+
export type HelixHeadlessDeviceScreenHelixDeviceSwipeElementEvent =
|
|
12307
|
+
HelixHeadlessDeviceScreenElementEvent<HelixDeviceSwipeEvent>;
|
|
12308
|
+
/** `helix-device-tap` event type */
|
|
12309
|
+
export type HelixHeadlessDeviceScreenHelixDeviceTapElementEvent =
|
|
12310
|
+
HelixHeadlessDeviceScreenElementEvent<HelixDeviceTapEvent>;
|
|
12311
|
+
/** `helix-device-text` event type */
|
|
12312
|
+
export type HelixHeadlessDeviceScreenHelixDeviceTextElementEvent =
|
|
12313
|
+
HelixHeadlessDeviceScreenElementEvent<HelixDeviceTextEvent>;
|
|
12314
|
+
/** `helix-device-touch` event type */
|
|
12315
|
+
export type HelixHeadlessDeviceScreenHelixDeviceTouchElementEvent =
|
|
12316
|
+
HelixHeadlessDeviceScreenElementEvent<HelixDeviceTouchEvent>;
|
|
12317
|
+
|
|
12318
|
+
export type HelixHeadlessDeviceScreenProps = {
|
|
12319
|
+
/** The Back button's label. */
|
|
12320
|
+
"back-label"?: (HelixHeadlessDeviceScreen["backLabel"]) | undefined;
|
|
12321
|
+
/** The Back button's label. */
|
|
12322
|
+
backLabel?: (HelixHeadlessDeviceScreen["backLabel"]) | undefined;
|
|
12323
|
+
/** Which hardware buttons to draw, as a list: `back`, `home`, `recents`,
|
|
12324
|
+
`power`, `volume`, `rotate`, `screenshot`, and `fullscreen`, or `none`.
|
|
12325
|
+
They are drawn in that order whatever order the list is in. Absent is
|
|
12326
|
+
`home screenshot`. `volume` draws Volume up and Volume down, and `rotate`
|
|
12327
|
+
draws Rotate left and Rotate right. */
|
|
12328
|
+
controls?: (HelixHeadlessDeviceScreen["controls"]) | undefined;
|
|
12329
|
+
/** The name of the toolbar of hardware buttons, read by screen readers. */
|
|
12330
|
+
"controls-label"?: (HelixHeadlessDeviceScreen["controlsLabel"]) | undefined;
|
|
12331
|
+
/** The name of the toolbar of hardware buttons, read by screen readers. */
|
|
12332
|
+
controlsLabel?: (HelixHeadlessDeviceScreen["controlsLabel"]) | undefined;
|
|
12333
|
+
/** Which side of the device the hardware buttons sit on. Absent and `top`
|
|
12334
|
+
are a row above it, `bottom` is a row below it, and `start` and `end` are
|
|
12335
|
+
a column beside it, as the Android Emulator draws its toolbar. The words
|
|
12336
|
+
are sides, as Carousel's are, and not the corners a map's controls take. */
|
|
12337
|
+
"controls-placement"?: (HelixHeadlessDeviceScreen["controlsPlacement"]) | undefined;
|
|
12338
|
+
/** Which side of the device the hardware buttons sit on. Absent and `top`
|
|
12339
|
+
are a row above it, `bottom` is a row below it, and `start` and `end` are
|
|
12340
|
+
a column beside it, as the Android Emulator draws its toolbar. The words
|
|
12341
|
+
are sides, as Carousel's are, and not the corners a map's controls take. */
|
|
12342
|
+
controlsPlacement?: (HelixHeadlessDeviceScreen["controlsPlacement"]) | undefined;
|
|
12343
|
+
/** The screen's name where `label` is empty and the host has no `aria-label`. */
|
|
12344
|
+
"fallback-label"?: (HelixHeadlessDeviceScreen["fallbackLabel"]) | undefined;
|
|
12345
|
+
/** The screen's name where `label` is empty and the host has no `aria-label`. */
|
|
12346
|
+
fallbackLabel?: (HelixHeadlessDeviceScreen["fallbackLabel"]) | undefined;
|
|
12347
|
+
/** Also sends key presses with Control, Command, or Alt held, which are left
|
|
12348
|
+
to the browser otherwise. For an app that owns its window. Command or
|
|
12349
|
+
Control with V pastes either way. */
|
|
12350
|
+
"forward-shortcuts"?: (HelixHeadlessDeviceScreen["forwardShortcuts"]) | undefined;
|
|
12351
|
+
/** Also sends key presses with Control, Command, or Alt held, which are left
|
|
12352
|
+
to the browser otherwise. For an app that owns its window. Command or
|
|
12353
|
+
Control with V pastes either way. */
|
|
12354
|
+
forwardShortcuts?: (HelixHeadlessDeviceScreen["forwardShortcuts"]) | undefined;
|
|
12355
|
+
/** The fullscreen button's label. */
|
|
12356
|
+
"fullscreen-label"?: (HelixHeadlessDeviceScreen["fullscreenLabel"]) | undefined;
|
|
12357
|
+
/** The fullscreen button's label. */
|
|
12358
|
+
fullscreenLabel?: (HelixHeadlessDeviceScreen["fullscreenLabel"]) | undefined;
|
|
12359
|
+
/** The Home button's label. */
|
|
12360
|
+
"home-label"?: (HelixHeadlessDeviceScreen["homeLabel"]) | undefined;
|
|
12361
|
+
/** The Home button's label. */
|
|
12362
|
+
homeLabel?: (HelixHeadlessDeviceScreen["homeLabel"]) | undefined;
|
|
12363
|
+
/** What a screen reader says about the keys when it reaches the screen,
|
|
12364
|
+
after its name. */
|
|
12365
|
+
"keys-hint-label"?: (HelixHeadlessDeviceScreen["keysHintLabel"]) | undefined;
|
|
12366
|
+
/** What a screen reader says about the keys when it reaches the screen,
|
|
12367
|
+
after its name. */
|
|
12368
|
+
keysHintLabel?: (HelixHeadlessDeviceScreen["keysHintLabel"]) | undefined;
|
|
12369
|
+
/** The device's name, read by screen readers as the screen's name, such as
|
|
12370
|
+
"iPhone 17 Pro". Name each device on a page with several. Required. */
|
|
12371
|
+
label?: (HelixHeadlessDeviceScreen["label"]) | undefined;
|
|
12372
|
+
/** Shows the `loading` slot over the screen, for a stream that is starting
|
|
12373
|
+
or has stopped. Screen readers hear `loading-label`. */
|
|
12374
|
+
loading?: (HelixHeadlessDeviceScreen["loading"]) | undefined;
|
|
12375
|
+
/** What the screen shows and screen readers hear while `loading` is set and nothing is in the `loading` slot. */
|
|
12376
|
+
"loading-label"?: (HelixHeadlessDeviceScreen["loadingLabel"]) | undefined;
|
|
12377
|
+
/** What the screen shows and screen readers hear while `loading` is set and nothing is in the `loading` slot. */
|
|
12378
|
+
loadingLabel?: (HelixHeadlessDeviceScreen["loadingLabel"]) | undefined;
|
|
12379
|
+
/** The Power button's label. */
|
|
12380
|
+
"power-label"?: (HelixHeadlessDeviceScreen["powerLabel"]) | undefined;
|
|
12381
|
+
/** The Power button's label. */
|
|
12382
|
+
powerLabel?: (HelixHeadlessDeviceScreen["powerLabel"]) | undefined;
|
|
12383
|
+
/** Shows the screen and sends nothing: no touches, scrolls, keys, or button
|
|
12384
|
+
presses. The screen is then a picture, out of the tab order, and the
|
|
12385
|
+
hardware buttons are off but for screenshot and fullscreen. Buttons of
|
|
12386
|
+
your own in the `controls` slot are yours to turn off. */
|
|
12387
|
+
readonly?: (HelixHeadlessDeviceScreen["readonly"]) | undefined;
|
|
12388
|
+
/** The Recent apps button's label. */
|
|
12389
|
+
"recents-label"?: (HelixHeadlessDeviceScreen["recentsLabel"]) | undefined;
|
|
12390
|
+
/** The Recent apps button's label. */
|
|
12391
|
+
recentsLabel?: (HelixHeadlessDeviceScreen["recentsLabel"]) | undefined;
|
|
12392
|
+
/** What a screen reader calls the screen in place of its role, after its
|
|
12393
|
+
name: "iPhone 17 Pro, screen". Empty leaves the role. */
|
|
12394
|
+
"role-label"?: (HelixHeadlessDeviceScreen["roleLabel"]) | undefined;
|
|
12395
|
+
/** What a screen reader calls the screen in place of its role, after its
|
|
12396
|
+
name: "iPhone 17 Pro, screen". Empty leaves the role. */
|
|
12397
|
+
roleLabel?: (HelixHeadlessDeviceScreen["roleLabel"]) | undefined;
|
|
12398
|
+
/** The Rotate left button's label. */
|
|
12399
|
+
"rotate-left-label"?: (HelixHeadlessDeviceScreen["rotateLeftLabel"]) | undefined;
|
|
12400
|
+
/** The Rotate left button's label. */
|
|
12401
|
+
rotateLeftLabel?: (HelixHeadlessDeviceScreen["rotateLeftLabel"]) | undefined;
|
|
12402
|
+
/** The Rotate right button's label. */
|
|
12403
|
+
"rotate-right-label"?: (HelixHeadlessDeviceScreen["rotateRightLabel"]) | undefined;
|
|
12404
|
+
/** The Rotate right button's label. */
|
|
12405
|
+
rotateRightLabel?: (HelixHeadlessDeviceScreen["rotateRightLabel"]) | undefined;
|
|
12406
|
+
/** How far to turn the picture clockwise, in degrees: `90`, `180`, or `270`.
|
|
12407
|
+
For a source that sends frames in the device's natural orientation while
|
|
12408
|
+
the device is turned. Every point is turned back, so events stay in the
|
|
12409
|
+
device's own orientation. A source whose frames turn with the device
|
|
12410
|
+
needs none. */
|
|
12411
|
+
rotation?: (HelixHeadlessDeviceScreen["rotation"]) | undefined;
|
|
12412
|
+
/** The screen's height in the units your device takes input in: points for
|
|
12413
|
+
the iOS Simulator, pixels for an Android device. Set with `screen-width`.
|
|
12414
|
+
Set alone, the width follows the stream's shape, and with neither, both
|
|
12415
|
+
are the stream's own size in pixels. */
|
|
12416
|
+
"screen-height"?: (HelixHeadlessDeviceScreen["screenHeight"] | `${number}`) | undefined;
|
|
12417
|
+
/** The screen's height in the units your device takes input in: points for
|
|
12418
|
+
the iOS Simulator, pixels for an Android device. Set with `screen-width`.
|
|
12419
|
+
Set alone, the width follows the stream's shape, and with neither, both
|
|
12420
|
+
are the stream's own size in pixels. */
|
|
12421
|
+
screenHeight?: (HelixHeadlessDeviceScreen["screenHeight"]) | undefined;
|
|
12422
|
+
/** The screenshot button's label. */
|
|
12423
|
+
"screenshot-label"?: (HelixHeadlessDeviceScreen["screenshotLabel"]) | undefined;
|
|
12424
|
+
/** The screenshot button's label. */
|
|
12425
|
+
screenshotLabel?: (HelixHeadlessDeviceScreen["screenshotLabel"]) | undefined;
|
|
12426
|
+
/** The screen's width in the units your device takes input in, as
|
|
12427
|
+
`screen-height` is. Set alone, the height follows the stream's shape. */
|
|
12428
|
+
"screen-width"?: (HelixHeadlessDeviceScreen["screenWidth"] | `${number}`) | undefined;
|
|
12429
|
+
/** The screen's width in the units your device takes input in, as
|
|
12430
|
+
`screen-height` is. Set alone, the height follows the stream's shape. */
|
|
12431
|
+
screenWidth?: (HelixHeadlessDeviceScreen["screenWidth"]) | undefined;
|
|
12432
|
+
/** The screen's outline. Absent is a rectangle with rounded corners;
|
|
12433
|
+
`square` has square corners, as on a phone with a Home button or a
|
|
12434
|
+
television, and `circle` is round, as on a round watch, and takes
|
|
12435
|
+
touches inside the circle only. */
|
|
12436
|
+
shape?: (HelixHeadlessDeviceScreen["shape"]) | undefined;
|
|
12437
|
+
/** Draws a ring under each finger on the screen, as the iOS Simulator's
|
|
12438
|
+
Show single touches does. Rings from `showTap()` and `showSwipe()` are
|
|
12439
|
+
drawn either way. */
|
|
12440
|
+
"show-touches"?: (HelixHeadlessDeviceScreen["showTouches"]) | undefined;
|
|
12441
|
+
/** Draws a ring under each finger on the screen, as the iOS Simulator's
|
|
12442
|
+
Show single touches does. Rings from `showTap()` and `showSwipe()` are
|
|
12443
|
+
drawn either way. */
|
|
12444
|
+
showTouches?: (HelixHeadlessDeviceScreen["showTouches"]) | undefined;
|
|
12445
|
+
/** The Volume down button's label. */
|
|
12446
|
+
"volume-down-label"?: (HelixHeadlessDeviceScreen["volumeDownLabel"]) | undefined;
|
|
12447
|
+
/** The Volume down button's label. */
|
|
12448
|
+
volumeDownLabel?: (HelixHeadlessDeviceScreen["volumeDownLabel"]) | undefined;
|
|
12449
|
+
/** The Volume up button's label. */
|
|
12450
|
+
"volume-up-label"?: (HelixHeadlessDeviceScreen["volumeUpLabel"]) | undefined;
|
|
12451
|
+
/** The Volume up button's label. */
|
|
12452
|
+
volumeUpLabel?: (HelixHeadlessDeviceScreen["volumeUpLabel"]) | undefined;
|
|
12453
|
+
|
|
12454
|
+
/** A hardware button was pressed, with how long it was held. Press it on the device in response. */
|
|
12455
|
+
"onhelix-device-button"?: ((
|
|
12456
|
+
e: HelixHeadlessDeviceScreenHelixDeviceButtonElementEvent,
|
|
12457
|
+
) => void) | undefined;
|
|
12458
|
+
/** A key went down or came up while the screen had focus. Press or release it on the device in response. */
|
|
12459
|
+
"onhelix-device-key"?: ((
|
|
12460
|
+
e: HelixHeadlessDeviceScreenHelixDeviceKeyElementEvent,
|
|
12461
|
+
) => void) | undefined;
|
|
12462
|
+
/** A screenshot was asked for. Take one in response. */
|
|
12463
|
+
"onhelix-device-screenshot"?: ((
|
|
12464
|
+
e: HelixHeadlessDeviceScreenHelixDeviceScreenshotElementEvent,
|
|
12465
|
+
) => void) | undefined;
|
|
12466
|
+
/** A wheel or a trackpad scrolled over the screen. Scroll the device in response. */
|
|
12467
|
+
"onhelix-device-scroll"?: ((
|
|
12468
|
+
e: HelixHeadlessDeviceScreenHelixDeviceScrollElementEvent,
|
|
12469
|
+
) => void) | undefined;
|
|
12470
|
+
/** One finger moved across the screen and lifted. Swipe the device in response. */
|
|
12471
|
+
"onhelix-device-swipe"?: ((
|
|
12472
|
+
e: HelixHeadlessDeviceScreenHelixDeviceSwipeElementEvent,
|
|
12473
|
+
) => void) | undefined;
|
|
12474
|
+
/** One finger touched the screen and lifted near where it landed. Tap the device in response. */
|
|
12475
|
+
"onhelix-device-tap"?: ((
|
|
12476
|
+
e: HelixHeadlessDeviceScreenHelixDeviceTapElementEvent,
|
|
12477
|
+
) => void) | undefined;
|
|
12478
|
+
/** Text was pasted into the screen. Type it on the device in response. */
|
|
12479
|
+
"onhelix-device-text"?: ((
|
|
12480
|
+
e: HelixHeadlessDeviceScreenHelixDeviceTextElementEvent,
|
|
12481
|
+
) => void) | undefined;
|
|
12482
|
+
/** A finger landed, moved, lifted, or was taken away. Touch the device in response. */
|
|
12483
|
+
"onhelix-device-touch"?: ((
|
|
12484
|
+
e: HelixHeadlessDeviceScreenHelixDeviceTouchElementEvent,
|
|
12485
|
+
) => void) | undefined;
|
|
12486
|
+
};
|
|
12487
|
+
|
|
12488
|
+
export type HelixHeadlessDeviceScreenSolidJsProps = {
|
|
12489
|
+
/** The Back button's label. */
|
|
12490
|
+
"attr:back-label"?: (HelixHeadlessDeviceScreen["backLabel"]) | undefined;
|
|
12491
|
+
/** The Back button's label. */
|
|
12492
|
+
"prop:backLabel"?: (HelixHeadlessDeviceScreen["backLabel"]) | undefined;
|
|
12493
|
+
/** Which hardware buttons to draw, as a list: `back`, `home`, `recents`,
|
|
12494
|
+
`power`, `volume`, `rotate`, `screenshot`, and `fullscreen`, or `none`.
|
|
12495
|
+
They are drawn in that order whatever order the list is in. Absent is
|
|
12496
|
+
`home screenshot`. `volume` draws Volume up and Volume down, and `rotate`
|
|
12497
|
+
draws Rotate left and Rotate right. */
|
|
12498
|
+
"prop:controls"?: (HelixHeadlessDeviceScreen["controls"]) | undefined;
|
|
12499
|
+
/** The name of the toolbar of hardware buttons, read by screen readers. */
|
|
12500
|
+
"attr:controls-label"?: (HelixHeadlessDeviceScreen["controlsLabel"]) | undefined;
|
|
12501
|
+
/** The name of the toolbar of hardware buttons, read by screen readers. */
|
|
12502
|
+
"prop:controlsLabel"?: (HelixHeadlessDeviceScreen["controlsLabel"]) | undefined;
|
|
12503
|
+
/** Which side of the device the hardware buttons sit on. Absent and `top`
|
|
12504
|
+
are a row above it, `bottom` is a row below it, and `start` and `end` are
|
|
12505
|
+
a column beside it, as the Android Emulator draws its toolbar. The words
|
|
12506
|
+
are sides, as Carousel's are, and not the corners a map's controls take. */
|
|
12507
|
+
"attr:controls-placement"?: (HelixHeadlessDeviceScreen["controlsPlacement"]) | undefined;
|
|
12508
|
+
/** Which side of the device the hardware buttons sit on. Absent and `top`
|
|
12509
|
+
are a row above it, `bottom` is a row below it, and `start` and `end` are
|
|
12510
|
+
a column beside it, as the Android Emulator draws its toolbar. The words
|
|
12511
|
+
are sides, as Carousel's are, and not the corners a map's controls take. */
|
|
12512
|
+
"prop:controlsPlacement"?: (HelixHeadlessDeviceScreen["controlsPlacement"]) | undefined;
|
|
12513
|
+
/** The screen's name where `label` is empty and the host has no `aria-label`. */
|
|
12514
|
+
"attr:fallback-label"?: (HelixHeadlessDeviceScreen["fallbackLabel"]) | undefined;
|
|
12515
|
+
/** The screen's name where `label` is empty and the host has no `aria-label`. */
|
|
12516
|
+
"prop:fallbackLabel"?: (HelixHeadlessDeviceScreen["fallbackLabel"]) | undefined;
|
|
12517
|
+
/** Also sends key presses with Control, Command, or Alt held, which are left
|
|
12518
|
+
to the browser otherwise. For an app that owns its window. Command or
|
|
12519
|
+
Control with V pastes either way. */
|
|
12520
|
+
"bool:forward-shortcuts"?: (HelixHeadlessDeviceScreen["forwardShortcuts"]) | undefined;
|
|
12521
|
+
/** Also sends key presses with Control, Command, or Alt held, which are left
|
|
12522
|
+
to the browser otherwise. For an app that owns its window. Command or
|
|
12523
|
+
Control with V pastes either way. */
|
|
12524
|
+
"prop:forwardShortcuts"?: (HelixHeadlessDeviceScreen["forwardShortcuts"]) | undefined;
|
|
12525
|
+
/** The fullscreen button's label. */
|
|
12526
|
+
"attr:fullscreen-label"?: (HelixHeadlessDeviceScreen["fullscreenLabel"]) | undefined;
|
|
12527
|
+
/** The fullscreen button's label. */
|
|
12528
|
+
"prop:fullscreenLabel"?: (HelixHeadlessDeviceScreen["fullscreenLabel"]) | undefined;
|
|
12529
|
+
/** The Home button's label. */
|
|
12530
|
+
"attr:home-label"?: (HelixHeadlessDeviceScreen["homeLabel"]) | undefined;
|
|
12531
|
+
/** The Home button's label. */
|
|
12532
|
+
"prop:homeLabel"?: (HelixHeadlessDeviceScreen["homeLabel"]) | undefined;
|
|
12533
|
+
/** What a screen reader says about the keys when it reaches the screen,
|
|
12534
|
+
after its name. */
|
|
12535
|
+
"attr:keys-hint-label"?: (HelixHeadlessDeviceScreen["keysHintLabel"]) | undefined;
|
|
12536
|
+
/** What a screen reader says about the keys when it reaches the screen,
|
|
12537
|
+
after its name. */
|
|
12538
|
+
"prop:keysHintLabel"?: (HelixHeadlessDeviceScreen["keysHintLabel"]) | undefined;
|
|
12539
|
+
/** The device's name, read by screen readers as the screen's name, such as
|
|
12540
|
+
"iPhone 17 Pro". Name each device on a page with several. Required. */
|
|
12541
|
+
"prop:label"?: (HelixHeadlessDeviceScreen["label"]) | undefined;
|
|
12542
|
+
/** Shows the `loading` slot over the screen, for a stream that is starting
|
|
12543
|
+
or has stopped. Screen readers hear `loading-label`. */
|
|
12544
|
+
"prop:loading"?: (HelixHeadlessDeviceScreen["loading"]) | undefined;
|
|
12545
|
+
/** What the screen shows and screen readers hear while `loading` is set and nothing is in the `loading` slot. */
|
|
12546
|
+
"attr:loading-label"?: (HelixHeadlessDeviceScreen["loadingLabel"]) | undefined;
|
|
12547
|
+
/** What the screen shows and screen readers hear while `loading` is set and nothing is in the `loading` slot. */
|
|
12548
|
+
"prop:loadingLabel"?: (HelixHeadlessDeviceScreen["loadingLabel"]) | undefined;
|
|
12549
|
+
/** The Power button's label. */
|
|
12550
|
+
"attr:power-label"?: (HelixHeadlessDeviceScreen["powerLabel"]) | undefined;
|
|
12551
|
+
/** The Power button's label. */
|
|
12552
|
+
"prop:powerLabel"?: (HelixHeadlessDeviceScreen["powerLabel"]) | undefined;
|
|
12553
|
+
/** Shows the screen and sends nothing: no touches, scrolls, keys, or button
|
|
12554
|
+
presses. The screen is then a picture, out of the tab order, and the
|
|
12555
|
+
hardware buttons are off but for screenshot and fullscreen. Buttons of
|
|
12556
|
+
your own in the `controls` slot are yours to turn off. */
|
|
12557
|
+
"prop:readonly"?: (HelixHeadlessDeviceScreen["readonly"]) | undefined;
|
|
12558
|
+
/** The Recent apps button's label. */
|
|
12559
|
+
"attr:recents-label"?: (HelixHeadlessDeviceScreen["recentsLabel"]) | undefined;
|
|
12560
|
+
/** The Recent apps button's label. */
|
|
12561
|
+
"prop:recentsLabel"?: (HelixHeadlessDeviceScreen["recentsLabel"]) | undefined;
|
|
12562
|
+
/** What a screen reader calls the screen in place of its role, after its
|
|
12563
|
+
name: "iPhone 17 Pro, screen". Empty leaves the role. */
|
|
12564
|
+
"attr:role-label"?: (HelixHeadlessDeviceScreen["roleLabel"]) | undefined;
|
|
12565
|
+
/** What a screen reader calls the screen in place of its role, after its
|
|
12566
|
+
name: "iPhone 17 Pro, screen". Empty leaves the role. */
|
|
12567
|
+
"prop:roleLabel"?: (HelixHeadlessDeviceScreen["roleLabel"]) | undefined;
|
|
12568
|
+
/** The Rotate left button's label. */
|
|
12569
|
+
"attr:rotate-left-label"?: (HelixHeadlessDeviceScreen["rotateLeftLabel"]) | undefined;
|
|
12570
|
+
/** The Rotate left button's label. */
|
|
12571
|
+
"prop:rotateLeftLabel"?: (HelixHeadlessDeviceScreen["rotateLeftLabel"]) | undefined;
|
|
12572
|
+
/** The Rotate right button's label. */
|
|
12573
|
+
"attr:rotate-right-label"?: (HelixHeadlessDeviceScreen["rotateRightLabel"]) | undefined;
|
|
12574
|
+
/** The Rotate right button's label. */
|
|
12575
|
+
"prop:rotateRightLabel"?: (HelixHeadlessDeviceScreen["rotateRightLabel"]) | undefined;
|
|
12576
|
+
/** How far to turn the picture clockwise, in degrees: `90`, `180`, or `270`.
|
|
12577
|
+
For a source that sends frames in the device's natural orientation while
|
|
12578
|
+
the device is turned. Every point is turned back, so events stay in the
|
|
12579
|
+
device's own orientation. A source whose frames turn with the device
|
|
12580
|
+
needs none. */
|
|
12581
|
+
"prop:rotation"?: (HelixHeadlessDeviceScreen["rotation"]) | undefined;
|
|
12582
|
+
/** The screen's height in the units your device takes input in: points for
|
|
12583
|
+
the iOS Simulator, pixels for an Android device. Set with `screen-width`.
|
|
12584
|
+
Set alone, the width follows the stream's shape, and with neither, both
|
|
12585
|
+
are the stream's own size in pixels. */
|
|
12586
|
+
"attr:screen-height"?: (HelixHeadlessDeviceScreen["screenHeight"] | `${number}`) | undefined;
|
|
12587
|
+
/** The screen's height in the units your device takes input in: points for
|
|
12588
|
+
the iOS Simulator, pixels for an Android device. Set with `screen-width`.
|
|
12589
|
+
Set alone, the width follows the stream's shape, and with neither, both
|
|
12590
|
+
are the stream's own size in pixels. */
|
|
12591
|
+
"prop:screenHeight"?: (HelixHeadlessDeviceScreen["screenHeight"]) | undefined;
|
|
12592
|
+
/** The screenshot button's label. */
|
|
12593
|
+
"attr:screenshot-label"?: (HelixHeadlessDeviceScreen["screenshotLabel"]) | undefined;
|
|
12594
|
+
/** The screenshot button's label. */
|
|
12595
|
+
"prop:screenshotLabel"?: (HelixHeadlessDeviceScreen["screenshotLabel"]) | undefined;
|
|
12596
|
+
/** The screen's width in the units your device takes input in, as
|
|
12597
|
+
`screen-height` is. Set alone, the height follows the stream's shape. */
|
|
12598
|
+
"attr:screen-width"?: (HelixHeadlessDeviceScreen["screenWidth"] | `${number}`) | undefined;
|
|
12599
|
+
/** The screen's width in the units your device takes input in, as
|
|
12600
|
+
`screen-height` is. Set alone, the height follows the stream's shape. */
|
|
12601
|
+
"prop:screenWidth"?: (HelixHeadlessDeviceScreen["screenWidth"]) | undefined;
|
|
12602
|
+
/** The screen's outline. Absent is a rectangle with rounded corners;
|
|
12603
|
+
`square` has square corners, as on a phone with a Home button or a
|
|
12604
|
+
television, and `circle` is round, as on a round watch, and takes
|
|
12605
|
+
touches inside the circle only. */
|
|
12606
|
+
"prop:shape"?: (HelixHeadlessDeviceScreen["shape"]) | undefined;
|
|
12607
|
+
/** Draws a ring under each finger on the screen, as the iOS Simulator's
|
|
12608
|
+
Show single touches does. Rings from `showTap()` and `showSwipe()` are
|
|
12609
|
+
drawn either way. */
|
|
12610
|
+
"bool:show-touches"?: (HelixHeadlessDeviceScreen["showTouches"]) | undefined;
|
|
12611
|
+
/** Draws a ring under each finger on the screen, as the iOS Simulator's
|
|
12612
|
+
Show single touches does. Rings from `showTap()` and `showSwipe()` are
|
|
12613
|
+
drawn either way. */
|
|
12614
|
+
"prop:showTouches"?: (HelixHeadlessDeviceScreen["showTouches"]) | undefined;
|
|
12615
|
+
/** The Volume down button's label. */
|
|
12616
|
+
"attr:volume-down-label"?: (HelixHeadlessDeviceScreen["volumeDownLabel"]) | undefined;
|
|
12617
|
+
/** The Volume down button's label. */
|
|
12618
|
+
"prop:volumeDownLabel"?: (HelixHeadlessDeviceScreen["volumeDownLabel"]) | undefined;
|
|
12619
|
+
/** The Volume up button's label. */
|
|
12620
|
+
"attr:volume-up-label"?: (HelixHeadlessDeviceScreen["volumeUpLabel"]) | undefined;
|
|
12621
|
+
/** The Volume up button's label. */
|
|
12622
|
+
"prop:volumeUpLabel"?: (HelixHeadlessDeviceScreen["volumeUpLabel"]) | undefined;
|
|
12623
|
+
/** A hardware button was pressed, with how long it was held. Press it on the device in response. */
|
|
12624
|
+
"on:helix-device-button"?: ((
|
|
12625
|
+
e: HelixHeadlessDeviceScreenHelixDeviceButtonElementEvent,
|
|
12626
|
+
) => void) | undefined;
|
|
12627
|
+
/** A key went down or came up while the screen had focus. Press or release it on the device in response. */
|
|
12628
|
+
"on:helix-device-key"?: ((
|
|
12629
|
+
e: HelixHeadlessDeviceScreenHelixDeviceKeyElementEvent,
|
|
12630
|
+
) => void) | undefined;
|
|
12631
|
+
/** A screenshot was asked for. Take one in response. */
|
|
12632
|
+
"on:helix-device-screenshot"?: ((
|
|
12633
|
+
e: HelixHeadlessDeviceScreenHelixDeviceScreenshotElementEvent,
|
|
12634
|
+
) => void) | undefined;
|
|
12635
|
+
/** A wheel or a trackpad scrolled over the screen. Scroll the device in response. */
|
|
12636
|
+
"on:helix-device-scroll"?: ((
|
|
12637
|
+
e: HelixHeadlessDeviceScreenHelixDeviceScrollElementEvent,
|
|
12638
|
+
) => void) | undefined;
|
|
12639
|
+
/** One finger moved across the screen and lifted. Swipe the device in response. */
|
|
12640
|
+
"on:helix-device-swipe"?: ((
|
|
12641
|
+
e: HelixHeadlessDeviceScreenHelixDeviceSwipeElementEvent,
|
|
12642
|
+
) => void) | undefined;
|
|
12643
|
+
/** One finger touched the screen and lifted near where it landed. Tap the device in response. */
|
|
12644
|
+
"on:helix-device-tap"?: ((
|
|
12645
|
+
e: HelixHeadlessDeviceScreenHelixDeviceTapElementEvent,
|
|
12646
|
+
) => void) | undefined;
|
|
12647
|
+
/** Text was pasted into the screen. Type it on the device in response. */
|
|
12648
|
+
"on:helix-device-text"?: ((
|
|
12649
|
+
e: HelixHeadlessDeviceScreenHelixDeviceTextElementEvent,
|
|
12650
|
+
) => void) | undefined;
|
|
12651
|
+
/** A finger landed, moved, lifted, or was taken away. Touch the device in response. */
|
|
12652
|
+
"on:helix-device-touch"?: ((
|
|
12653
|
+
e: HelixHeadlessDeviceScreenHelixDeviceTouchElementEvent,
|
|
12654
|
+
) => void) | undefined;
|
|
12655
|
+
|
|
12656
|
+
/** Set the innerHTML of the element */
|
|
12657
|
+
innerHTML?: (string) | undefined;
|
|
12658
|
+
/** Set the textContent of the element */
|
|
12659
|
+
textContent?: (string | number) | undefined;
|
|
12660
|
+
};
|
|
12661
|
+
|
|
12279
12662
|
/** `HelixHeadlessDialog` component event */
|
|
12280
12663
|
export type HelixHeadlessDialogElementEvent<E = Event> = TypedEvent<
|
|
12281
12664
|
HelixHeadlessDialog,
|
|
@@ -48888,6 +49271,296 @@ export type CustomElements<F extends Framework = "other"> = {
|
|
|
48888
49271
|
BaseEvents<HelixHeadlessDescriptionList>
|
|
48889
49272
|
>;
|
|
48890
49273
|
|
|
49274
|
+
/**
|
|
49275
|
+
* Shows the screen of a phone, a tablet, or a watch, such as the iOS Simulator
|
|
49276
|
+
* or the Android Emulator, and turns what you do on it into events. Helix does
|
|
49277
|
+
* not connect to the device. Put the element that draws the stream inside: a
|
|
49278
|
+
* `<video>` fed by WebRTC or Media Source, an `<img>` showing an MJPEG stream,
|
|
49279
|
+
* or a `<canvas>` you draw decoded frames on. The frame gives the screen the
|
|
49280
|
+
* device's shape and stretches the element to fill it.
|
|
49281
|
+
*
|
|
49282
|
+
* Set `screen-width` and `screen-height` to the screen's size in the units
|
|
49283
|
+
* your device takes input in: points for the iOS Simulator, and pixels for an
|
|
49284
|
+
* Android device. Every point an event carries is in those units, beside the
|
|
49285
|
+
* `width` and `height` it is measured against. Without them, the frame reads
|
|
49286
|
+
* the stream's own size in pixels.
|
|
49287
|
+
*
|
|
49288
|
+
* **Touches.** Listen in one of two ways, and not both, or the device moves
|
|
49289
|
+
* twice:
|
|
49290
|
+
* - `helix-device-touch` for each finger as it lands, moves, and lifts, for a
|
|
49291
|
+
* source that takes live touches. A drag and a pinch need it.
|
|
49292
|
+
* - `helix-device-tap` and `helix-device-swipe` once the finger lifts, for a
|
|
49293
|
+
* source that takes whole gestures. A long press is a tap with a long
|
|
49294
|
+
* `duration`.
|
|
49295
|
+
*
|
|
49296
|
+
* Alt, or Option on a Mac, with a drag sends two touches mirrored about the
|
|
49297
|
+
* middle of the screen, for a pinch or a turn, as the iOS Simulator does. A
|
|
49298
|
+
* wheel or a trackpad over the screen sends `helix-device-scroll`.
|
|
49299
|
+
*
|
|
49300
|
+
* **Keyboard.** Press Tab to reach the screen, or press the screen. While it
|
|
49301
|
+
* has focus:
|
|
49302
|
+
*
|
|
49303
|
+
* | Key | What it does |
|
|
49304
|
+
* |---|---|
|
|
49305
|
+
* | Any key | Sends `helix-device-key` as it goes down, and again as it comes up. |
|
|
49306
|
+
* | Tab, Shift with Tab | Moves focus on from the screen. Never sent. |
|
|
49307
|
+
* | Control, Command, or Alt with a key | Left to the browser, unless `forward-shortcuts` is set. |
|
|
49308
|
+
* | Command or Control with V | Sends the clipboard's text as `helix-device-text`. |
|
|
49309
|
+
*
|
|
49310
|
+
* A key still held when focus leaves is sent as released. The screen has the
|
|
49311
|
+
* `application` role, so a screen reader passes every key to it, and its
|
|
49312
|
+
* description says how to leave.
|
|
49313
|
+
*
|
|
49314
|
+
* **Buttons.** `controls` names the hardware buttons to draw: `back`, `home`,
|
|
49315
|
+
* `recents`, `power`, `volume`, `rotate`, `screenshot`, and `fullscreen`,
|
|
49316
|
+
* `home screenshot` by default. Each sends `helix-device-button` with how long
|
|
49317
|
+
* it was held, and the screenshot button sends `helix-device-screenshot`.
|
|
49318
|
+
* `press()` and `screenshot()` do the same from a script. Put buttons of your
|
|
49319
|
+
* own in the `controls` slot, and they join the row. The row is one tab stop,
|
|
49320
|
+
* and the arrow keys move along it, or Up and Down in a column.
|
|
49321
|
+
*
|
|
49322
|
+
* Set `rotation` where your source sends frames in the device's natural
|
|
49323
|
+
* orientation while the device is turned: the frame turns the picture, and
|
|
49324
|
+
* turns every point back. Set `readonly` to show the screen and send nothing,
|
|
49325
|
+
* such as while an agent drives the device. The screen is then a picture, and
|
|
49326
|
+
* `showTap()` and `showSwipe()` mark where the agent touched it.
|
|
49327
|
+
*
|
|
49328
|
+
* ## Attributes & Properties
|
|
49329
|
+
*
|
|
49330
|
+
* Component attributes and properties that can be applied to the element or by using JavaScript.
|
|
49331
|
+
*
|
|
49332
|
+
* - `back-label`/`backLabel`: The Back button's label.
|
|
49333
|
+
* - `controls`: Which hardware buttons to draw, as a list: `back`, `home`, `recents`,
|
|
49334
|
+
* `power`, `volume`, `rotate`, `screenshot`, and `fullscreen`, or `none`.
|
|
49335
|
+
* They are drawn in that order whatever order the list is in. Absent is
|
|
49336
|
+
* `home screenshot`. `volume` draws Volume up and Volume down, and `rotate`
|
|
49337
|
+
* draws Rotate left and Rotate right.
|
|
49338
|
+
* - `controls-label`/`controlsLabel`: The name of the toolbar of hardware buttons, read by screen readers.
|
|
49339
|
+
* - `controls-placement`/`controlsPlacement`: Which side of the device the hardware buttons sit on. Absent and `top`
|
|
49340
|
+
* are a row above it, `bottom` is a row below it, and `start` and `end` are
|
|
49341
|
+
* a column beside it, as the Android Emulator draws its toolbar. The words
|
|
49342
|
+
* are sides, as Carousel's are, and not the corners a map's controls take.
|
|
49343
|
+
* - `fallback-label`/`fallbackLabel`: The screen's name where `label` is empty and the host has no `aria-label`.
|
|
49344
|
+
* - `forward-shortcuts`/`forwardShortcuts`: Also sends key presses with Control, Command, or Alt held, which are left
|
|
49345
|
+
* to the browser otherwise. For an app that owns its window. Command or
|
|
49346
|
+
* Control with V pastes either way.
|
|
49347
|
+
* - `fullscreen-label`/`fullscreenLabel`: The fullscreen button's label.
|
|
49348
|
+
* - `home-label`/`homeLabel`: The Home button's label.
|
|
49349
|
+
* - `keys-hint-label`/`keysHintLabel`: What a screen reader says about the keys when it reaches the screen,
|
|
49350
|
+
* after its name.
|
|
49351
|
+
* - `label`: The device's name, read by screen readers as the screen's name, such as
|
|
49352
|
+
* "iPhone 17 Pro". Name each device on a page with several. Required.
|
|
49353
|
+
* - `loading`: Shows the `loading` slot over the screen, for a stream that is starting
|
|
49354
|
+
* or has stopped. Screen readers hear `loading-label`.
|
|
49355
|
+
* - `loading-label`/`loadingLabel`: What the screen shows and screen readers hear while `loading` is set and nothing is in the `loading` slot.
|
|
49356
|
+
* - `power-label`/`powerLabel`: The Power button's label.
|
|
49357
|
+
* - `readonly`: Shows the screen and sends nothing: no touches, scrolls, keys, or button
|
|
49358
|
+
* presses. The screen is then a picture, out of the tab order, and the
|
|
49359
|
+
* hardware buttons are off but for screenshot and fullscreen. Buttons of
|
|
49360
|
+
* your own in the `controls` slot are yours to turn off.
|
|
49361
|
+
* - `recents-label`/`recentsLabel`: The Recent apps button's label.
|
|
49362
|
+
* - `role-label`/`roleLabel`: What a screen reader calls the screen in place of its role, after its
|
|
49363
|
+
* name: "iPhone 17 Pro, screen". Empty leaves the role.
|
|
49364
|
+
* - `rotate-left-label`/`rotateLeftLabel`: The Rotate left button's label.
|
|
49365
|
+
* - `rotate-right-label`/`rotateRightLabel`: The Rotate right button's label.
|
|
49366
|
+
* - `rotation`: How far to turn the picture clockwise, in degrees: `90`, `180`, or `270`.
|
|
49367
|
+
* For a source that sends frames in the device's natural orientation while
|
|
49368
|
+
* the device is turned. Every point is turned back, so events stay in the
|
|
49369
|
+
* device's own orientation. A source whose frames turn with the device
|
|
49370
|
+
* needs none.
|
|
49371
|
+
* - `screen-height`/`screenHeight`: The screen's height in the units your device takes input in: points for
|
|
49372
|
+
* the iOS Simulator, pixels for an Android device. Set with `screen-width`.
|
|
49373
|
+
* Set alone, the width follows the stream's shape, and with neither, both
|
|
49374
|
+
* are the stream's own size in pixels.
|
|
49375
|
+
* - `screenshot-label`/`screenshotLabel`: The screenshot button's label.
|
|
49376
|
+
* - `screen-width`/`screenWidth`: The screen's width in the units your device takes input in, as
|
|
49377
|
+
* `screen-height` is. Set alone, the height follows the stream's shape.
|
|
49378
|
+
* - `shape`: The screen's outline. Absent is a rectangle with rounded corners;
|
|
49379
|
+
* `square` has square corners, as on a phone with a Home button or a
|
|
49380
|
+
* television, and `circle` is round, as on a round watch, and takes
|
|
49381
|
+
* touches inside the circle only.
|
|
49382
|
+
* - `show-touches`/`showTouches`: Draws a ring under each finger on the screen, as the iOS Simulator's
|
|
49383
|
+
* Show single touches does. Rings from `showTap()` and `showSwipe()` are
|
|
49384
|
+
* drawn either way.
|
|
49385
|
+
* - `volume-down-label`/`volumeDownLabel`: The Volume down button's label.
|
|
49386
|
+
* - `volume-up-label`/`volumeUpLabel`: The Volume up button's label.
|
|
49387
|
+
* - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
|
|
49388
|
+
*
|
|
49389
|
+
* **Named `whenSettled` because `settled` is taken four times over**, by
|
|
49390
|
+
* Image, Splitter and both color controls, none of them about transitions. A
|
|
49391
|
+
* base class takes the name every subclass then cannot use.
|
|
49392
|
+
*
|
|
49393
|
+
* **The state it reports cannot be watched, which is why this exists.** A
|
|
49394
|
+
* custom state is deliberately not in the DOM, so there is no
|
|
49395
|
+
* `MutationObserver` equivalent for `ElementInternals.states`. Await this
|
|
49396
|
+
* instead.
|
|
49397
|
+
*
|
|
49398
|
+
* Separate from `updateComplete`, which resolves in the microtask checkpoint
|
|
49399
|
+
* the suppression is still active in. That is the distinction `readyToMove`
|
|
49400
|
+
* in `@fusion.dev/helix-testing` is written around.
|
|
49401
|
+
*
|
|
49402
|
+
* It never resolves where `requestAnimationFrame` never fires, which is a
|
|
49403
|
+
* server, a hidden tab, and happy-dom. Callers that must not hang there race
|
|
49404
|
+
* it against a timeout, as the happy-dom harness's `readyToMove` does. The
|
|
49405
|
+
* browser harness's awaits it alone: a browser always runs the frame, and a
|
|
49406
|
+
* timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
|
|
49407
|
+
*
|
|
49408
|
+
* ## Events
|
|
49409
|
+
*
|
|
49410
|
+
* Events that will be emitted by the component.
|
|
49411
|
+
*
|
|
49412
|
+
* - `helix-device-button`: A hardware button was pressed, with how long it was held. Press it on the device in response.
|
|
49413
|
+
* - `helix-device-key`: A key went down or came up while the screen had focus. Press or release it on the device in response.
|
|
49414
|
+
* - `helix-device-screenshot`: A screenshot was asked for. Take one in response.
|
|
49415
|
+
* - `helix-device-scroll`: A wheel or a trackpad scrolled over the screen. Scroll the device in response.
|
|
49416
|
+
* - `helix-device-swipe`: One finger moved across the screen and lifted. Swipe the device in response.
|
|
49417
|
+
* - `helix-device-tap`: One finger touched the screen and lifted near where it landed. Tap the device in response.
|
|
49418
|
+
* - `helix-device-text`: Text was pasted into the screen. Type it on the device in response.
|
|
49419
|
+
* - `helix-device-touch`: A finger landed, moved, lifted, or was taken away. Touch the device in response.
|
|
49420
|
+
*
|
|
49421
|
+
* ## Slots
|
|
49422
|
+
*
|
|
49423
|
+
* Areas where markup can be added to the component.
|
|
49424
|
+
*
|
|
49425
|
+
* - `(default)`: The element that draws the stream: a `<video>`, an `<img>`, or a `<canvas>`.
|
|
49426
|
+
* - `back-icon`: Replaces the glyph inside the Back button.
|
|
49427
|
+
* - `bezel`: A picture of the device drawn over the screen, such as a photograph of a phone with a clear screen. It takes no touches.
|
|
49428
|
+
* - `controls`: Buttons of your own, such as Shake or Record, in the row after the hardware buttons and before the fullscreen button.
|
|
49429
|
+
* - `empty`: Content shown over the screen while no element that draws the stream is inside and `loading` is not set, such as "No simulator is running" and a button to start one.
|
|
49430
|
+
* - `footer`: Content below the device.
|
|
49431
|
+
* - `fullscreen-icon`: Replaces the glyph inside the fullscreen button.
|
|
49432
|
+
* - `header`: Content above the device, such as its name and state.
|
|
49433
|
+
* - `home-icon`: Replaces the glyph inside the Home button.
|
|
49434
|
+
* - `loading`: Content shown over the screen while `loading` is set, such as a spinner. `loading-label` by default, which screen readers hear either way.
|
|
49435
|
+
* - `power-icon`: Replaces the glyph inside the Power button.
|
|
49436
|
+
* - `recents-icon`: Replaces the glyph inside the Recent apps button.
|
|
49437
|
+
* - `rotate-left-icon`: Replaces the glyph inside the Rotate left button.
|
|
49438
|
+
* - `rotate-right-icon`: Replaces the glyph inside the Rotate right button.
|
|
49439
|
+
* - `screenshot-icon`: Replaces the glyph inside the screenshot button.
|
|
49440
|
+
* - `volume-down-icon`: Replaces the glyph inside the Volume down button.
|
|
49441
|
+
* - `volume-up-icon`: Replaces the glyph inside the Volume up button.
|
|
49442
|
+
*
|
|
49443
|
+
* ## Methods
|
|
49444
|
+
*
|
|
49445
|
+
* Methods that can be called to access component functionality.
|
|
49446
|
+
*
|
|
49447
|
+
* - `press(button: DeviceButton, duration = 0) => void`: Presses a hardware button, as its control does: sends
|
|
49448
|
+
* `helix-device-button`. `duration` is how long it is held, in
|
|
49449
|
+
* milliseconds.
|
|
49450
|
+
* - `screenshot() => void`: Asks for a screenshot, as the screenshot button does: sends `helix-device-screenshot`.
|
|
49451
|
+
* - `capture(type = 'image/png', quality?: number) => Promise<Blob>`: The picture on the screen now, as an image, at the stream's own size and
|
|
49452
|
+
* turned by `rotation`. For a page with no sharper screenshot from its
|
|
49453
|
+
* source.
|
|
49454
|
+
*
|
|
49455
|
+
* Fails where there is no stream, where it has not drawn a frame, and where
|
|
49456
|
+
* the browser will not let a page read it, such as an image from another
|
|
49457
|
+
* origin served without CORS.
|
|
49458
|
+
* - `showTap(x: number, y: number) => void`: Draws a ring at a point on the screen for a moment, in the device's
|
|
49459
|
+
* units, for a touch made elsewhere, such as by an agent. Drawn whether or
|
|
49460
|
+
* not `show-touches` is set, and nothing is sent.
|
|
49461
|
+
* - `showSwipe(fromX: number, fromY: number, toX: number, toY: number, duration = 300) => void`: Draws a ring that travels from one point to another over `duration`
|
|
49462
|
+
* milliseconds, in the device's units, for a swipe made elsewhere, as
|
|
49463
|
+
* `showTap()` does for a tap.
|
|
49464
|
+
*
|
|
49465
|
+
* ## CSS Custom Properties
|
|
49466
|
+
*
|
|
49467
|
+
* CSS variables available for styling the component.
|
|
49468
|
+
*
|
|
49469
|
+
* - `--device-screen-ratio`: The drawn screen's width divided by its height, turned by `rotation`, as a number. Written by the frame once the screen's size is known.
|
|
49470
|
+
* - `--device-screen-rotation`: How far the picture is turned, as an angle. The frame writes it from `rotation`.
|
|
49471
|
+
* - `--device-screen-touch-duration`: How long a swipe's ring takes to travel, as a time. Written on each ring from `showSwipe()`.
|
|
49472
|
+
* - `--device-screen-touch-to-x`: Where a swipe's ring travels to, across the screen, as a percentage. Written on each ring from `showSwipe()`.
|
|
49473
|
+
* - `--device-screen-touch-to-y`: Where a swipe's ring travels to, down the screen, as a percentage. Written on each ring from `showSwipe()`.
|
|
49474
|
+
* - `--device-screen-touch-x`: Where a ring is, across the screen, as a percentage. Written on each ring.
|
|
49475
|
+
* - `--device-screen-touch-y`: Where a ring is, down the screen, as a percentage. Written on each ring.
|
|
49476
|
+
*
|
|
49477
|
+
* ## CSS Parts
|
|
49478
|
+
*
|
|
49479
|
+
* Custom selectors for styling elements within the component.
|
|
49480
|
+
*
|
|
49481
|
+
* - `back`: The Back button.
|
|
49482
|
+
* - `back-button`: The Back button's inner button.
|
|
49483
|
+
* - `back-live`: The Back button's live region, which speaks while the button is pending.
|
|
49484
|
+
* - `back-spinner`: The ring the Back button turns while it is pending.
|
|
49485
|
+
* - `back-text`: The box the Back button's icon sits in.
|
|
49486
|
+
* - `bezel`: The body of the device around the screen.
|
|
49487
|
+
* - `controls`: The row of buttons: the hardware buttons and any of yours in the `controls` slot.
|
|
49488
|
+
* - `device`: The box the device is fitted into, which keeps its shape inside it.
|
|
49489
|
+
* - `empty`: The box over the screen that holds the `empty` slot while no stream is inside and `loading` is not set. It stands beside the screen, so what you put in it takes presses and keys of its own, and a read-only screen does not hide it from screen readers.
|
|
49490
|
+
* - `footer`: The strip below the device.
|
|
49491
|
+
* - `fullscreen`: The button that makes the device fill the screen.
|
|
49492
|
+
* - `fullscreen-button`: The fullscreen button's inner button.
|
|
49493
|
+
* - `fullscreen-live`: The fullscreen button's live region, which speaks while the button is pending.
|
|
49494
|
+
* - `fullscreen-spinner`: The ring the fullscreen button turns while it is pending.
|
|
49495
|
+
* - `fullscreen-text`: The box the fullscreen button's icon sits in.
|
|
49496
|
+
* - `header`: The strip above the device.
|
|
49497
|
+
* - `home`: The Home button.
|
|
49498
|
+
* - `home-button`: The Home button's inner button.
|
|
49499
|
+
* - `home-live`: The Home button's live region, which speaks while the button is pending.
|
|
49500
|
+
* - `home-spinner`: The ring the Home button turns while it is pending.
|
|
49501
|
+
* - `home-text`: The box the Home button's icon sits in.
|
|
49502
|
+
* - `keys-hint`: What a screen reader says about the keys when it reaches the screen, as its description. Read by screen readers only.
|
|
49503
|
+
* - `live`: What screen readers hear while `loading` is set: `loading-label`. Read by screen readers only.
|
|
49504
|
+
* - `loading`: The box over the screen that holds the `loading` slot while `loading` is set. Screen readers hear `live` in its place.
|
|
49505
|
+
* - `picture`: The box the stream is drawn in, turned by `rotation`.
|
|
49506
|
+
* - `power`: The Power button.
|
|
49507
|
+
* - `power-button`: The Power button's inner button.
|
|
49508
|
+
* - `power-live`: The Power button's live region, which speaks while the button is pending.
|
|
49509
|
+
* - `power-spinner`: The ring the Power button turns while it is pending.
|
|
49510
|
+
* - `power-text`: The box the Power button's icon sits in.
|
|
49511
|
+
* - `recents`: The Recent apps button.
|
|
49512
|
+
* - `recents-button`: The Recent apps button's inner button.
|
|
49513
|
+
* - `recents-live`: The Recent apps button's live region, which speaks while the button is pending.
|
|
49514
|
+
* - `recents-spinner`: The ring the Recent apps button turns while it is pending.
|
|
49515
|
+
* - `recents-text`: The box the Recent apps button's icon sits in.
|
|
49516
|
+
* - `region`: The box that holds the device, its buttons, the header, and the footer.
|
|
49517
|
+
* - `rotate-left`: The Rotate left button.
|
|
49518
|
+
* - `rotate-left-button`: The Rotate left button's inner button.
|
|
49519
|
+
* - `rotate-left-live`: The Rotate left button's live region, which speaks while the button is pending.
|
|
49520
|
+
* - `rotate-left-spinner`: The ring the Rotate left button turns while it is pending.
|
|
49521
|
+
* - `rotate-left-text`: The box the Rotate left button's icon sits in.
|
|
49522
|
+
* - `rotate-right`: The Rotate right button.
|
|
49523
|
+
* - `rotate-right-button`: The Rotate right button's inner button.
|
|
49524
|
+
* - `rotate-right-live`: The Rotate right button's live region, which speaks while the button is pending.
|
|
49525
|
+
* - `rotate-right-spinner`: The ring the Rotate right button turns while it is pending.
|
|
49526
|
+
* - `rotate-right-text`: The box the Rotate right button's icon sits in.
|
|
49527
|
+
* - `screen`: The device's screen, which takes the touches and the keys.
|
|
49528
|
+
* - `screenshot`: The button that asks for a screenshot.
|
|
49529
|
+
* - `screenshot-button`: The screenshot button's inner button.
|
|
49530
|
+
* - `screenshot-live`: The screenshot button's live region, which speaks while the button is pending.
|
|
49531
|
+
* - `screenshot-spinner`: The ring the screenshot button turns while it is pending.
|
|
49532
|
+
* - `screenshot-text`: The box the screenshot button's icon sits in.
|
|
49533
|
+
* - `touch`: A ring where a touch is or was.
|
|
49534
|
+
* - `touch-held`: A ring under a finger that is down, beside `touch`, with `show-touches`.
|
|
49535
|
+
* - `volume-down`: The Volume down button.
|
|
49536
|
+
* - `volume-down-button`: The Volume down button's inner button.
|
|
49537
|
+
* - `volume-down-live`: The Volume down button's live region, which speaks while the button is pending.
|
|
49538
|
+
* - `volume-down-spinner`: The ring the Volume down button turns while it is pending.
|
|
49539
|
+
* - `volume-down-text`: The box the Volume down button's icon sits in.
|
|
49540
|
+
* - `volume-up`: The Volume up button.
|
|
49541
|
+
* - `volume-up-button`: The Volume up button's inner button.
|
|
49542
|
+
* - `volume-up-live`: The Volume up button's live region, which speaks while the button is pending.
|
|
49543
|
+
* - `volume-up-spinner`: The ring the Volume up button turns while it is pending.
|
|
49544
|
+
* - `volume-up-text`: The box the Volume up button's icon sits in.
|
|
49545
|
+
*
|
|
49546
|
+
* ## CSS States
|
|
49547
|
+
*
|
|
49548
|
+
* These can be used to apply styling when a component is in a given state.
|
|
49549
|
+
*
|
|
49550
|
+
* - `empty`: No element that draws the stream is inside, which the frame knows once it runs in the browser.
|
|
49551
|
+
* - `fullscreen`: The device fills the screen.
|
|
49552
|
+
* - `loading`: `loading` is set.
|
|
49553
|
+
* - `readonly`: `readonly` is set, and the screen sends nothing.
|
|
49554
|
+
* - `sideways`: `rotation` turns the picture a quarter, so the drawn screen is the device's height wide.
|
|
49555
|
+
* - `touching`: A finger is on the screen.
|
|
49556
|
+
* - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
|
|
49557
|
+
*/
|
|
49558
|
+
"helix-headless-device-screen": Partial<
|
|
49559
|
+
HelixHeadlessDeviceScreenProps &
|
|
49560
|
+
BaseProps<HelixHeadlessDeviceScreen, F> &
|
|
49561
|
+
BaseEvents<HelixHeadlessDeviceScreen>
|
|
49562
|
+
>;
|
|
49563
|
+
|
|
48891
49564
|
/**
|
|
48892
49565
|
* Renders a native `<dialog>` opened with `showModal()`. The platform provides:
|
|
48893
49566
|
*
|
|
@@ -81740,6 +82413,297 @@ export type CustomElementsSolidJs = {
|
|
|
81740
82413
|
BaseEvents<HelixHeadlessDescriptionList>
|
|
81741
82414
|
>;
|
|
81742
82415
|
|
|
82416
|
+
/**
|
|
82417
|
+
* Shows the screen of a phone, a tablet, or a watch, such as the iOS Simulator
|
|
82418
|
+
* or the Android Emulator, and turns what you do on it into events. Helix does
|
|
82419
|
+
* not connect to the device. Put the element that draws the stream inside: a
|
|
82420
|
+
* `<video>` fed by WebRTC or Media Source, an `<img>` showing an MJPEG stream,
|
|
82421
|
+
* or a `<canvas>` you draw decoded frames on. The frame gives the screen the
|
|
82422
|
+
* device's shape and stretches the element to fill it.
|
|
82423
|
+
*
|
|
82424
|
+
* Set `screen-width` and `screen-height` to the screen's size in the units
|
|
82425
|
+
* your device takes input in: points for the iOS Simulator, and pixels for an
|
|
82426
|
+
* Android device. Every point an event carries is in those units, beside the
|
|
82427
|
+
* `width` and `height` it is measured against. Without them, the frame reads
|
|
82428
|
+
* the stream's own size in pixels.
|
|
82429
|
+
*
|
|
82430
|
+
* **Touches.** Listen in one of two ways, and not both, or the device moves
|
|
82431
|
+
* twice:
|
|
82432
|
+
* - `helix-device-touch` for each finger as it lands, moves, and lifts, for a
|
|
82433
|
+
* source that takes live touches. A drag and a pinch need it.
|
|
82434
|
+
* - `helix-device-tap` and `helix-device-swipe` once the finger lifts, for a
|
|
82435
|
+
* source that takes whole gestures. A long press is a tap with a long
|
|
82436
|
+
* `duration`.
|
|
82437
|
+
*
|
|
82438
|
+
* Alt, or Option on a Mac, with a drag sends two touches mirrored about the
|
|
82439
|
+
* middle of the screen, for a pinch or a turn, as the iOS Simulator does. A
|
|
82440
|
+
* wheel or a trackpad over the screen sends `helix-device-scroll`.
|
|
82441
|
+
*
|
|
82442
|
+
* **Keyboard.** Press Tab to reach the screen, or press the screen. While it
|
|
82443
|
+
* has focus:
|
|
82444
|
+
*
|
|
82445
|
+
* | Key | What it does |
|
|
82446
|
+
* |---|---|
|
|
82447
|
+
* | Any key | Sends `helix-device-key` as it goes down, and again as it comes up. |
|
|
82448
|
+
* | Tab, Shift with Tab | Moves focus on from the screen. Never sent. |
|
|
82449
|
+
* | Control, Command, or Alt with a key | Left to the browser, unless `forward-shortcuts` is set. |
|
|
82450
|
+
* | Command or Control with V | Sends the clipboard's text as `helix-device-text`. |
|
|
82451
|
+
*
|
|
82452
|
+
* A key still held when focus leaves is sent as released. The screen has the
|
|
82453
|
+
* `application` role, so a screen reader passes every key to it, and its
|
|
82454
|
+
* description says how to leave.
|
|
82455
|
+
*
|
|
82456
|
+
* **Buttons.** `controls` names the hardware buttons to draw: `back`, `home`,
|
|
82457
|
+
* `recents`, `power`, `volume`, `rotate`, `screenshot`, and `fullscreen`,
|
|
82458
|
+
* `home screenshot` by default. Each sends `helix-device-button` with how long
|
|
82459
|
+
* it was held, and the screenshot button sends `helix-device-screenshot`.
|
|
82460
|
+
* `press()` and `screenshot()` do the same from a script. Put buttons of your
|
|
82461
|
+
* own in the `controls` slot, and they join the row. The row is one tab stop,
|
|
82462
|
+
* and the arrow keys move along it, or Up and Down in a column.
|
|
82463
|
+
*
|
|
82464
|
+
* Set `rotation` where your source sends frames in the device's natural
|
|
82465
|
+
* orientation while the device is turned: the frame turns the picture, and
|
|
82466
|
+
* turns every point back. Set `readonly` to show the screen and send nothing,
|
|
82467
|
+
* such as while an agent drives the device. The screen is then a picture, and
|
|
82468
|
+
* `showTap()` and `showSwipe()` mark where the agent touched it.
|
|
82469
|
+
*
|
|
82470
|
+
* ## Attributes & Properties
|
|
82471
|
+
*
|
|
82472
|
+
* Component attributes and properties that can be applied to the element or by using JavaScript.
|
|
82473
|
+
*
|
|
82474
|
+
* - `back-label`/`backLabel`: The Back button's label.
|
|
82475
|
+
* - `controls`: Which hardware buttons to draw, as a list: `back`, `home`, `recents`,
|
|
82476
|
+
* `power`, `volume`, `rotate`, `screenshot`, and `fullscreen`, or `none`.
|
|
82477
|
+
* They are drawn in that order whatever order the list is in. Absent is
|
|
82478
|
+
* `home screenshot`. `volume` draws Volume up and Volume down, and `rotate`
|
|
82479
|
+
* draws Rotate left and Rotate right.
|
|
82480
|
+
* - `controls-label`/`controlsLabel`: The name of the toolbar of hardware buttons, read by screen readers.
|
|
82481
|
+
* - `controls-placement`/`controlsPlacement`: Which side of the device the hardware buttons sit on. Absent and `top`
|
|
82482
|
+
* are a row above it, `bottom` is a row below it, and `start` and `end` are
|
|
82483
|
+
* a column beside it, as the Android Emulator draws its toolbar. The words
|
|
82484
|
+
* are sides, as Carousel's are, and not the corners a map's controls take.
|
|
82485
|
+
* - `fallback-label`/`fallbackLabel`: The screen's name where `label` is empty and the host has no `aria-label`.
|
|
82486
|
+
* - `forward-shortcuts`/`forwardShortcuts`: Also sends key presses with Control, Command, or Alt held, which are left
|
|
82487
|
+
* to the browser otherwise. For an app that owns its window. Command or
|
|
82488
|
+
* Control with V pastes either way.
|
|
82489
|
+
* - `fullscreen-label`/`fullscreenLabel`: The fullscreen button's label.
|
|
82490
|
+
* - `home-label`/`homeLabel`: The Home button's label.
|
|
82491
|
+
* - `keys-hint-label`/`keysHintLabel`: What a screen reader says about the keys when it reaches the screen,
|
|
82492
|
+
* after its name.
|
|
82493
|
+
* - `label`: The device's name, read by screen readers as the screen's name, such as
|
|
82494
|
+
* "iPhone 17 Pro". Name each device on a page with several. Required.
|
|
82495
|
+
* - `loading`: Shows the `loading` slot over the screen, for a stream that is starting
|
|
82496
|
+
* or has stopped. Screen readers hear `loading-label`.
|
|
82497
|
+
* - `loading-label`/`loadingLabel`: What the screen shows and screen readers hear while `loading` is set and nothing is in the `loading` slot.
|
|
82498
|
+
* - `power-label`/`powerLabel`: The Power button's label.
|
|
82499
|
+
* - `readonly`: Shows the screen and sends nothing: no touches, scrolls, keys, or button
|
|
82500
|
+
* presses. The screen is then a picture, out of the tab order, and the
|
|
82501
|
+
* hardware buttons are off but for screenshot and fullscreen. Buttons of
|
|
82502
|
+
* your own in the `controls` slot are yours to turn off.
|
|
82503
|
+
* - `recents-label`/`recentsLabel`: The Recent apps button's label.
|
|
82504
|
+
* - `role-label`/`roleLabel`: What a screen reader calls the screen in place of its role, after its
|
|
82505
|
+
* name: "iPhone 17 Pro, screen". Empty leaves the role.
|
|
82506
|
+
* - `rotate-left-label`/`rotateLeftLabel`: The Rotate left button's label.
|
|
82507
|
+
* - `rotate-right-label`/`rotateRightLabel`: The Rotate right button's label.
|
|
82508
|
+
* - `rotation`: How far to turn the picture clockwise, in degrees: `90`, `180`, or `270`.
|
|
82509
|
+
* For a source that sends frames in the device's natural orientation while
|
|
82510
|
+
* the device is turned. Every point is turned back, so events stay in the
|
|
82511
|
+
* device's own orientation. A source whose frames turn with the device
|
|
82512
|
+
* needs none.
|
|
82513
|
+
* - `screen-height`/`screenHeight`: The screen's height in the units your device takes input in: points for
|
|
82514
|
+
* the iOS Simulator, pixels for an Android device. Set with `screen-width`.
|
|
82515
|
+
* Set alone, the width follows the stream's shape, and with neither, both
|
|
82516
|
+
* are the stream's own size in pixels.
|
|
82517
|
+
* - `screenshot-label`/`screenshotLabel`: The screenshot button's label.
|
|
82518
|
+
* - `screen-width`/`screenWidth`: The screen's width in the units your device takes input in, as
|
|
82519
|
+
* `screen-height` is. Set alone, the height follows the stream's shape.
|
|
82520
|
+
* - `shape`: The screen's outline. Absent is a rectangle with rounded corners;
|
|
82521
|
+
* `square` has square corners, as on a phone with a Home button or a
|
|
82522
|
+
* television, and `circle` is round, as on a round watch, and takes
|
|
82523
|
+
* touches inside the circle only.
|
|
82524
|
+
* - `show-touches`/`showTouches`: Draws a ring under each finger on the screen, as the iOS Simulator's
|
|
82525
|
+
* Show single touches does. Rings from `showTap()` and `showSwipe()` are
|
|
82526
|
+
* drawn either way.
|
|
82527
|
+
* - `volume-down-label`/`volumeDownLabel`: The Volume down button's label.
|
|
82528
|
+
* - `volume-up-label`/`volumeUpLabel`: The Volume up button's label.
|
|
82529
|
+
* - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
|
|
82530
|
+
*
|
|
82531
|
+
* **Named `whenSettled` because `settled` is taken four times over**, by
|
|
82532
|
+
* Image, Splitter and both color controls, none of them about transitions. A
|
|
82533
|
+
* base class takes the name every subclass then cannot use.
|
|
82534
|
+
*
|
|
82535
|
+
* **The state it reports cannot be watched, which is why this exists.** A
|
|
82536
|
+
* custom state is deliberately not in the DOM, so there is no
|
|
82537
|
+
* `MutationObserver` equivalent for `ElementInternals.states`. Await this
|
|
82538
|
+
* instead.
|
|
82539
|
+
*
|
|
82540
|
+
* Separate from `updateComplete`, which resolves in the microtask checkpoint
|
|
82541
|
+
* the suppression is still active in. That is the distinction `readyToMove`
|
|
82542
|
+
* in `@fusion.dev/helix-testing` is written around.
|
|
82543
|
+
*
|
|
82544
|
+
* It never resolves where `requestAnimationFrame` never fires, which is a
|
|
82545
|
+
* server, a hidden tab, and happy-dom. Callers that must not hang there race
|
|
82546
|
+
* it against a timeout, as the happy-dom harness's `readyToMove` does. The
|
|
82547
|
+
* browser harness's awaits it alone: a browser always runs the frame, and a
|
|
82548
|
+
* timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
|
|
82549
|
+
*
|
|
82550
|
+
* ## Events
|
|
82551
|
+
*
|
|
82552
|
+
* Events that will be emitted by the component.
|
|
82553
|
+
*
|
|
82554
|
+
* - `helix-device-button`: A hardware button was pressed, with how long it was held. Press it on the device in response.
|
|
82555
|
+
* - `helix-device-key`: A key went down or came up while the screen had focus. Press or release it on the device in response.
|
|
82556
|
+
* - `helix-device-screenshot`: A screenshot was asked for. Take one in response.
|
|
82557
|
+
* - `helix-device-scroll`: A wheel or a trackpad scrolled over the screen. Scroll the device in response.
|
|
82558
|
+
* - `helix-device-swipe`: One finger moved across the screen and lifted. Swipe the device in response.
|
|
82559
|
+
* - `helix-device-tap`: One finger touched the screen and lifted near where it landed. Tap the device in response.
|
|
82560
|
+
* - `helix-device-text`: Text was pasted into the screen. Type it on the device in response.
|
|
82561
|
+
* - `helix-device-touch`: A finger landed, moved, lifted, or was taken away. Touch the device in response.
|
|
82562
|
+
*
|
|
82563
|
+
* ## Slots
|
|
82564
|
+
*
|
|
82565
|
+
* Areas where markup can be added to the component.
|
|
82566
|
+
*
|
|
82567
|
+
* - `(default)`: The element that draws the stream: a `<video>`, an `<img>`, or a `<canvas>`.
|
|
82568
|
+
* - `back-icon`: Replaces the glyph inside the Back button.
|
|
82569
|
+
* - `bezel`: A picture of the device drawn over the screen, such as a photograph of a phone with a clear screen. It takes no touches.
|
|
82570
|
+
* - `controls`: Buttons of your own, such as Shake or Record, in the row after the hardware buttons and before the fullscreen button.
|
|
82571
|
+
* - `empty`: Content shown over the screen while no element that draws the stream is inside and `loading` is not set, such as "No simulator is running" and a button to start one.
|
|
82572
|
+
* - `footer`: Content below the device.
|
|
82573
|
+
* - `fullscreen-icon`: Replaces the glyph inside the fullscreen button.
|
|
82574
|
+
* - `header`: Content above the device, such as its name and state.
|
|
82575
|
+
* - `home-icon`: Replaces the glyph inside the Home button.
|
|
82576
|
+
* - `loading`: Content shown over the screen while `loading` is set, such as a spinner. `loading-label` by default, which screen readers hear either way.
|
|
82577
|
+
* - `power-icon`: Replaces the glyph inside the Power button.
|
|
82578
|
+
* - `recents-icon`: Replaces the glyph inside the Recent apps button.
|
|
82579
|
+
* - `rotate-left-icon`: Replaces the glyph inside the Rotate left button.
|
|
82580
|
+
* - `rotate-right-icon`: Replaces the glyph inside the Rotate right button.
|
|
82581
|
+
* - `screenshot-icon`: Replaces the glyph inside the screenshot button.
|
|
82582
|
+
* - `volume-down-icon`: Replaces the glyph inside the Volume down button.
|
|
82583
|
+
* - `volume-up-icon`: Replaces the glyph inside the Volume up button.
|
|
82584
|
+
*
|
|
82585
|
+
* ## Methods
|
|
82586
|
+
*
|
|
82587
|
+
* Methods that can be called to access component functionality.
|
|
82588
|
+
*
|
|
82589
|
+
* - `press(button: DeviceButton, duration = 0) => void`: Presses a hardware button, as its control does: sends
|
|
82590
|
+
* `helix-device-button`. `duration` is how long it is held, in
|
|
82591
|
+
* milliseconds.
|
|
82592
|
+
* - `screenshot() => void`: Asks for a screenshot, as the screenshot button does: sends `helix-device-screenshot`.
|
|
82593
|
+
* - `capture(type = 'image/png', quality?: number) => Promise<Blob>`: The picture on the screen now, as an image, at the stream's own size and
|
|
82594
|
+
* turned by `rotation`. For a page with no sharper screenshot from its
|
|
82595
|
+
* source.
|
|
82596
|
+
*
|
|
82597
|
+
* Fails where there is no stream, where it has not drawn a frame, and where
|
|
82598
|
+
* the browser will not let a page read it, such as an image from another
|
|
82599
|
+
* origin served without CORS.
|
|
82600
|
+
* - `showTap(x: number, y: number) => void`: Draws a ring at a point on the screen for a moment, in the device's
|
|
82601
|
+
* units, for a touch made elsewhere, such as by an agent. Drawn whether or
|
|
82602
|
+
* not `show-touches` is set, and nothing is sent.
|
|
82603
|
+
* - `showSwipe(fromX: number, fromY: number, toX: number, toY: number, duration = 300) => void`: Draws a ring that travels from one point to another over `duration`
|
|
82604
|
+
* milliseconds, in the device's units, for a swipe made elsewhere, as
|
|
82605
|
+
* `showTap()` does for a tap.
|
|
82606
|
+
*
|
|
82607
|
+
* ## CSS Custom Properties
|
|
82608
|
+
*
|
|
82609
|
+
* CSS variables available for styling the component.
|
|
82610
|
+
*
|
|
82611
|
+
* - `--device-screen-ratio`: The drawn screen's width divided by its height, turned by `rotation`, as a number. Written by the frame once the screen's size is known.
|
|
82612
|
+
* - `--device-screen-rotation`: How far the picture is turned, as an angle. The frame writes it from `rotation`.
|
|
82613
|
+
* - `--device-screen-touch-duration`: How long a swipe's ring takes to travel, as a time. Written on each ring from `showSwipe()`.
|
|
82614
|
+
* - `--device-screen-touch-to-x`: Where a swipe's ring travels to, across the screen, as a percentage. Written on each ring from `showSwipe()`.
|
|
82615
|
+
* - `--device-screen-touch-to-y`: Where a swipe's ring travels to, down the screen, as a percentage. Written on each ring from `showSwipe()`.
|
|
82616
|
+
* - `--device-screen-touch-x`: Where a ring is, across the screen, as a percentage. Written on each ring.
|
|
82617
|
+
* - `--device-screen-touch-y`: Where a ring is, down the screen, as a percentage. Written on each ring.
|
|
82618
|
+
*
|
|
82619
|
+
* ## CSS Parts
|
|
82620
|
+
*
|
|
82621
|
+
* Custom selectors for styling elements within the component.
|
|
82622
|
+
*
|
|
82623
|
+
* - `back`: The Back button.
|
|
82624
|
+
* - `back-button`: The Back button's inner button.
|
|
82625
|
+
* - `back-live`: The Back button's live region, which speaks while the button is pending.
|
|
82626
|
+
* - `back-spinner`: The ring the Back button turns while it is pending.
|
|
82627
|
+
* - `back-text`: The box the Back button's icon sits in.
|
|
82628
|
+
* - `bezel`: The body of the device around the screen.
|
|
82629
|
+
* - `controls`: The row of buttons: the hardware buttons and any of yours in the `controls` slot.
|
|
82630
|
+
* - `device`: The box the device is fitted into, which keeps its shape inside it.
|
|
82631
|
+
* - `empty`: The box over the screen that holds the `empty` slot while no stream is inside and `loading` is not set. It stands beside the screen, so what you put in it takes presses and keys of its own, and a read-only screen does not hide it from screen readers.
|
|
82632
|
+
* - `footer`: The strip below the device.
|
|
82633
|
+
* - `fullscreen`: The button that makes the device fill the screen.
|
|
82634
|
+
* - `fullscreen-button`: The fullscreen button's inner button.
|
|
82635
|
+
* - `fullscreen-live`: The fullscreen button's live region, which speaks while the button is pending.
|
|
82636
|
+
* - `fullscreen-spinner`: The ring the fullscreen button turns while it is pending.
|
|
82637
|
+
* - `fullscreen-text`: The box the fullscreen button's icon sits in.
|
|
82638
|
+
* - `header`: The strip above the device.
|
|
82639
|
+
* - `home`: The Home button.
|
|
82640
|
+
* - `home-button`: The Home button's inner button.
|
|
82641
|
+
* - `home-live`: The Home button's live region, which speaks while the button is pending.
|
|
82642
|
+
* - `home-spinner`: The ring the Home button turns while it is pending.
|
|
82643
|
+
* - `home-text`: The box the Home button's icon sits in.
|
|
82644
|
+
* - `keys-hint`: What a screen reader says about the keys when it reaches the screen, as its description. Read by screen readers only.
|
|
82645
|
+
* - `live`: What screen readers hear while `loading` is set: `loading-label`. Read by screen readers only.
|
|
82646
|
+
* - `loading`: The box over the screen that holds the `loading` slot while `loading` is set. Screen readers hear `live` in its place.
|
|
82647
|
+
* - `picture`: The box the stream is drawn in, turned by `rotation`.
|
|
82648
|
+
* - `power`: The Power button.
|
|
82649
|
+
* - `power-button`: The Power button's inner button.
|
|
82650
|
+
* - `power-live`: The Power button's live region, which speaks while the button is pending.
|
|
82651
|
+
* - `power-spinner`: The ring the Power button turns while it is pending.
|
|
82652
|
+
* - `power-text`: The box the Power button's icon sits in.
|
|
82653
|
+
* - `recents`: The Recent apps button.
|
|
82654
|
+
* - `recents-button`: The Recent apps button's inner button.
|
|
82655
|
+
* - `recents-live`: The Recent apps button's live region, which speaks while the button is pending.
|
|
82656
|
+
* - `recents-spinner`: The ring the Recent apps button turns while it is pending.
|
|
82657
|
+
* - `recents-text`: The box the Recent apps button's icon sits in.
|
|
82658
|
+
* - `region`: The box that holds the device, its buttons, the header, and the footer.
|
|
82659
|
+
* - `rotate-left`: The Rotate left button.
|
|
82660
|
+
* - `rotate-left-button`: The Rotate left button's inner button.
|
|
82661
|
+
* - `rotate-left-live`: The Rotate left button's live region, which speaks while the button is pending.
|
|
82662
|
+
* - `rotate-left-spinner`: The ring the Rotate left button turns while it is pending.
|
|
82663
|
+
* - `rotate-left-text`: The box the Rotate left button's icon sits in.
|
|
82664
|
+
* - `rotate-right`: The Rotate right button.
|
|
82665
|
+
* - `rotate-right-button`: The Rotate right button's inner button.
|
|
82666
|
+
* - `rotate-right-live`: The Rotate right button's live region, which speaks while the button is pending.
|
|
82667
|
+
* - `rotate-right-spinner`: The ring the Rotate right button turns while it is pending.
|
|
82668
|
+
* - `rotate-right-text`: The box the Rotate right button's icon sits in.
|
|
82669
|
+
* - `screen`: The device's screen, which takes the touches and the keys.
|
|
82670
|
+
* - `screenshot`: The button that asks for a screenshot.
|
|
82671
|
+
* - `screenshot-button`: The screenshot button's inner button.
|
|
82672
|
+
* - `screenshot-live`: The screenshot button's live region, which speaks while the button is pending.
|
|
82673
|
+
* - `screenshot-spinner`: The ring the screenshot button turns while it is pending.
|
|
82674
|
+
* - `screenshot-text`: The box the screenshot button's icon sits in.
|
|
82675
|
+
* - `touch`: A ring where a touch is or was.
|
|
82676
|
+
* - `touch-held`: A ring under a finger that is down, beside `touch`, with `show-touches`.
|
|
82677
|
+
* - `volume-down`: The Volume down button.
|
|
82678
|
+
* - `volume-down-button`: The Volume down button's inner button.
|
|
82679
|
+
* - `volume-down-live`: The Volume down button's live region, which speaks while the button is pending.
|
|
82680
|
+
* - `volume-down-spinner`: The ring the Volume down button turns while it is pending.
|
|
82681
|
+
* - `volume-down-text`: The box the Volume down button's icon sits in.
|
|
82682
|
+
* - `volume-up`: The Volume up button.
|
|
82683
|
+
* - `volume-up-button`: The Volume up button's inner button.
|
|
82684
|
+
* - `volume-up-live`: The Volume up button's live region, which speaks while the button is pending.
|
|
82685
|
+
* - `volume-up-spinner`: The ring the Volume up button turns while it is pending.
|
|
82686
|
+
* - `volume-up-text`: The box the Volume up button's icon sits in.
|
|
82687
|
+
*
|
|
82688
|
+
* ## CSS States
|
|
82689
|
+
*
|
|
82690
|
+
* These can be used to apply styling when a component is in a given state.
|
|
82691
|
+
*
|
|
82692
|
+
* - `empty`: No element that draws the stream is inside, which the frame knows once it runs in the browser.
|
|
82693
|
+
* - `fullscreen`: The device fills the screen.
|
|
82694
|
+
* - `loading`: `loading` is set.
|
|
82695
|
+
* - `readonly`: `readonly` is set, and the screen sends nothing.
|
|
82696
|
+
* - `sideways`: `rotation` turns the picture a quarter, so the drawn screen is the device's height wide.
|
|
82697
|
+
* - `touching`: A finger is on the screen.
|
|
82698
|
+
* - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
|
|
82699
|
+
*/
|
|
82700
|
+
"helix-headless-device-screen": Partial<
|
|
82701
|
+
HelixHeadlessDeviceScreenProps &
|
|
82702
|
+
HelixHeadlessDeviceScreenSolidJsProps &
|
|
82703
|
+
BaseProps<HelixHeadlessDeviceScreen, "solid"> &
|
|
82704
|
+
BaseEvents<HelixHeadlessDeviceScreen>
|
|
82705
|
+
>;
|
|
82706
|
+
|
|
81743
82707
|
/**
|
|
81744
82708
|
* Renders a native `<dialog>` opened with `showModal()`. The platform provides:
|
|
81745
82709
|
*
|
|
@@ -106208,6 +107172,20 @@ export type CustomCssProperties = {
|
|
|
106208
107172
|
"--data-table-template"?: (string) | undefined;
|
|
106209
107173
|
/** How many month columns are drawn, capped at two. `--date-picker-columns` overrides it. */
|
|
106210
107174
|
"--date-picker-column-count"?: (string) | undefined;
|
|
107175
|
+
/** The drawn screen's width divided by its height, turned by `rotation`, as a number. Written by the frame once the screen's size is known. */
|
|
107176
|
+
"--device-screen-ratio"?: (string) | undefined;
|
|
107177
|
+
/** How far the picture is turned, as an angle. The frame writes it from `rotation`. */
|
|
107178
|
+
"--device-screen-rotation"?: (string) | undefined;
|
|
107179
|
+
/** How long a swipe's ring takes to travel, as a time. Written on each ring from `showSwipe()`. */
|
|
107180
|
+
"--device-screen-touch-duration"?: (string) | undefined;
|
|
107181
|
+
/** Where a swipe's ring travels to, across the screen, as a percentage. Written on each ring from `showSwipe()`. */
|
|
107182
|
+
"--device-screen-touch-to-x"?: (string) | undefined;
|
|
107183
|
+
/** Where a swipe's ring travels to, down the screen, as a percentage. Written on each ring from `showSwipe()`. */
|
|
107184
|
+
"--device-screen-touch-to-y"?: (string) | undefined;
|
|
107185
|
+
/** Where a ring is, across the screen, as a percentage. Written on each ring. */
|
|
107186
|
+
"--device-screen-touch-x"?: (string) | undefined;
|
|
107187
|
+
/** Where a ring is, down the screen, as a percentage. Written on each ring. */
|
|
107188
|
+
"--device-screen-touch-y"?: (string) | undefined;
|
|
106211
107189
|
/** How thick the ring is drawn, derived from `hole`. */
|
|
106212
107190
|
"--donut-chart-stroke"?: (string) | undefined;
|
|
106213
107191
|
/** How far a swipe, or a snap point, has moved the panel across, in pixels, toward the right. */
|