@fusion.dev/helix-headless 0.103.2 → 0.104.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/custom-elements.json +9259 -712
- package/dist/announcement/root/announcement-root.d.ts +9 -2
- package/dist/announcement/root/announcement-root.js +9 -6
- package/dist/badge/root/badge-root.js +2 -3
- package/dist/canvas/edge/canvas-edge.d.ts +112 -0
- package/dist/canvas/edge/canvas-edge.js +66 -0
- package/dist/canvas/index.d.ts +4 -0
- package/dist/canvas/index.js +3 -0
- package/dist/canvas/node/canvas-node.d.ts +211 -0
- package/dist/canvas/node/canvas-node.js +148 -0
- package/dist/canvas/root/canvas-document.d.ts +215 -0
- package/dist/canvas/root/canvas-document.js +284 -0
- package/dist/canvas/root/canvas-root.d.ts +912 -0
- package/dist/canvas/root/canvas-root.js +1814 -0
- package/dist/carousel/root/carousel-root.d.ts +53 -16
- package/dist/carousel/root/carousel-root.js +46 -11
- package/dist/chat/root/chat-root.d.ts +4 -0
- package/dist/chat/root/chat-root.js +11 -7
- package/dist/checkbox/root/checkbox-root.js +1 -0
- package/dist/checkbox-group/root/checkbox-group-root.d.ts +10 -0
- package/dist/checkbox-group/root/checkbox-group-root.js +5 -0
- package/dist/color-input/root/color-input-root.js +21 -5
- package/dist/color-picker/root/color-picker-root.d.ts +55 -0
- package/dist/color-picker/root/color-picker-root.js +61 -12
- package/dist/combobox/root/combobox-root.d.ts +21 -2
- package/dist/combobox/root/combobox-root.js +23 -9
- package/dist/command/root/command-root.d.ts +1 -0
- package/dist/command/root/command-root.js +1 -1
- package/dist/data-table/root/data-table-root.d.ts +43 -42
- package/dist/data-table/root/data-table-root.js +35 -34
- package/dist/date-input/root/date-input-root.d.ts +27 -0
- package/dist/date-input/root/date-input-root.js +38 -9
- package/dist/date-picker/root/date-picker-root.d.ts +28 -16
- package/dist/date-picker/root/date-picker-root.js +17 -15
- package/dist/drilldown/root/drilldown-root.d.ts +1 -0
- package/dist/drilldown/root/drilldown-root.js +5 -2
- package/dist/element-events.generated.js +15 -0
- package/dist/empty/root/empty-root.d.ts +12 -7
- package/dist/empty/root/empty-root.js +13 -10
- package/dist/file-input/root/file-input-root.d.ts +5 -1
- package/dist/file-input/root/file-input-root.js +6 -4
- package/dist/filter-input/menu/filter-menu.d.ts +1 -0
- package/dist/filter-input/menu/filter-menu.js +1 -1
- package/dist/filter-input/root/filter-input-root.js +5 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/input/root/input-root.js +1 -1
- package/dist/lightbox/root/lightbox-root.d.ts +9 -1
- package/dist/lightbox/root/lightbox-root.js +17 -7
- package/dist/listbox/root/listbox-root.d.ts +16 -14
- package/dist/listbox/root/listbox-root.js +24 -15
- package/dist/map/root/map-root.d.ts +19 -127
- package/dist/map/root/map-root.js +10 -138
- package/dist/menu/root/menu-root.d.ts +1 -0
- package/dist/menu/root/menu-root.js +1 -1
- package/dist/notifications/group/notification-group.js +5 -4
- package/dist/notifications/notification/notification.d.ts +10 -10
- package/dist/notifications/notification/notification.js +3 -3
- package/dist/notifications/root/notifications-root.d.ts +1 -0
- package/dist/notifications/root/notifications-root.js +1 -0
- package/dist/number-input/root/number-input-root.d.ts +17 -0
- package/dist/number-input/root/number-input-root.js +22 -6
- package/dist/object-inspector/root/object-inspector-root.d.ts +10 -0
- package/dist/object-inspector/root/object-inspector-root.js +10 -2
- package/dist/outline/root/outline-root.d.ts +15 -0
- package/dist/outline/root/outline-root.js +12 -7
- package/dist/pagination/root/pagination-root.d.ts +18 -18
- package/dist/pagination/root/pagination-root.js +5 -5
- package/dist/pagination/size/pagination-size.d.ts +10 -9
- package/dist/pagination/size/pagination-size.js +4 -4
- package/dist/pagination/summary/pagination-summary.js +6 -5
- package/dist/pin-input/root/pin-input-root.d.ts +5 -0
- package/dist/pin-input/root/pin-input-root.js +10 -6
- package/dist/rating/root/rating-root.js +3 -2
- package/dist/select/root/select-root.d.ts +1 -0
- package/dist/select/root/select-root.js +8 -3
- package/dist/slider/root/slider-root.d.ts +12 -0
- package/dist/slider/root/slider-root.js +13 -1
- package/dist/splitter/root/splitter-root.d.ts +44 -35
- package/dist/splitter/root/splitter-root.js +27 -22
- package/dist/switch/root/switch-root.js +1 -0
- package/dist/table/column/table-column.d.ts +17 -0
- package/dist/table/column/table-column.js +16 -4
- package/dist/table/root/table-root.d.ts +1 -0
- package/dist/table/root/table-root.js +1 -1
- package/dist/textarea/root/textarea-root.js +1 -1
- package/dist/time-input/root/time-input-root.d.ts +29 -0
- package/dist/time-input/root/time-input-root.js +31 -10
- package/dist/time-picker/root/time-picker-root.d.ts +14 -0
- package/dist/time-picker/root/time-picker-root.js +16 -14
- package/dist/toast/item/toast-item.d.ts +12 -11
- package/dist/toast/item/toast-item.js +11 -5
- package/dist/toolbar/root/toolbar-root.js +2 -16
- package/dist/tooltip/root/tooltip-root.d.ts +1 -0
- package/dist/tooltip/root/tooltip-root.js +6 -0
- package/dist/tour/root/tour-root.d.ts +10 -10
- package/dist/tour/root/tour-root.js +5 -5
- package/dist/tree/root/tree-root.d.ts +1 -0
- package/dist/tree/root/tree-root.js +1 -1
- package/dist/video/root/video-root.d.ts +84 -0
- package/dist/video/root/video-root.js +116 -41
- package/dist/video-playlist/menu/video-playlist-menu.d.ts +1 -0
- package/dist/video-playlist/menu/video-playlist-menu.js +4 -3
- package/package.json +5 -5
- package/types/jsx.d.ts +5753 -1076
- package/types/svelte.d.ts +3 -0
- package/types/vue.d.ts +1668 -282
|
@@ -4,7 +4,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
import { activeCue, adoptTrack, CueController, captionsAmong, captionTracks, copiesOf, customElement, drawIcon, FullscreenController, HelixElement, HelixNextEvent, HelixPreviousEvent, IdleController, MediaSessionController, onUnlessFalse, RemotePlaybackController, SKIP_SECONDS, sameCopies, showCaption, writtenList, writtenNumbers, } from '@fusion.dev/helix-core';
|
|
7
|
+
import { activeCue, adoptTrack, CueController, captionsAmong, captionTracks, copiesOf, customElement, drawIcon, FullscreenController, fillTemplate, HelixElement, HelixNextEvent, HelixPreviousEvent, IdleController, MediaSessionController, onUnlessFalse, RemotePlaybackController, SKIP_SECONDS, sameCopies, showCaption, writtenList, writtenNumbers, } from '@fusion.dev/helix-core';
|
|
8
8
|
import { airplay, arrowClockwise, arrowCounterClockwise, closedCaptioning, cornersIn, cornersOut, dotsThreeVertical, download, gauge, pause, pictureInPicture, play, skipBack, skipForward, speakerHigh, speakerX, } from '@fusion.dev/helix-icons';
|
|
9
9
|
import { nothing } from 'lit';
|
|
10
10
|
import { property, state } from 'lit/decorators.js';
|
|
@@ -29,25 +29,43 @@ let HelixHeadlessVideo = class HelixHeadlessVideo extends HelixElement {
|
|
|
29
29
|
constructor() {
|
|
30
30
|
super(...arguments);
|
|
31
31
|
this.autoplay = false;
|
|
32
|
+
this.captionsLabel = 'Captions';
|
|
33
|
+
this.captionsOffLabel = 'Off';
|
|
32
34
|
this.controls = false;
|
|
33
35
|
this.crossOrigin = null;
|
|
34
36
|
this.defaultMuted = false;
|
|
35
37
|
this.disablePictureInPicture = false;
|
|
36
38
|
this.disableRemotePlayback = false;
|
|
39
|
+
this.downloadLabel = 'Download';
|
|
37
40
|
this.errorLabel = 'This video could not be played';
|
|
38
41
|
this.extraControls = '';
|
|
42
|
+
this.forwardLabel = 'Forward {seconds} seconds';
|
|
43
|
+
this.fullscreenLabel = 'Fullscreen';
|
|
39
44
|
this.idleDelay = 2500;
|
|
40
45
|
this.label = '';
|
|
41
46
|
this.loadingLabel = 'Loading';
|
|
42
47
|
this.loop = false;
|
|
48
|
+
this.moreLabel = 'More controls';
|
|
49
|
+
this.muteLabel = 'Mute';
|
|
50
|
+
this.nextLabel = 'Next';
|
|
43
51
|
this.overflowControls = '';
|
|
44
52
|
this.pauseLabel = 'Pause';
|
|
53
|
+
this.percentLabel = '{percent} percent';
|
|
54
|
+
this.pipLabel = 'Picture in picture';
|
|
45
55
|
this.playLabel = 'Play';
|
|
46
56
|
this.playsInline = true;
|
|
47
57
|
this.poster = '';
|
|
48
58
|
this.preload = 'metadata';
|
|
59
|
+
this.previousLabel = 'Previous';
|
|
60
|
+
this.remoteLabel = 'Play on another device';
|
|
61
|
+
this.rewindLabel = 'Back {seconds} seconds';
|
|
62
|
+
this.seekLabel = 'Seek';
|
|
63
|
+
this.speedLabel = 'Playback speed';
|
|
49
64
|
this.speeds = '0.5 1 1.5 2';
|
|
50
65
|
this.src = '';
|
|
66
|
+
this.subtitlesLabel = 'Subtitles';
|
|
67
|
+
this.timeLabel = '{position} of {duration}';
|
|
68
|
+
this.volumeLabel = 'Volume';
|
|
51
69
|
this.buffering = false;
|
|
52
70
|
this.failed = false;
|
|
53
71
|
this.playing = false;
|
|
@@ -400,7 +418,7 @@ let HelixHeadlessVideo = class HelixHeadlessVideo extends HelixElement {
|
|
|
400
418
|
return html `<button
|
|
401
419
|
part="remote${this.remoteConnected ? ' remote-pressed' : ''}"
|
|
402
420
|
type="button"
|
|
403
|
-
aria-label
|
|
421
|
+
aria-label=${this.remoteLabel}
|
|
404
422
|
aria-pressed=${this.remoteConnected ? 'true' : 'false'}
|
|
405
423
|
@click=${() => void this.remote.prompt()}
|
|
406
424
|
>
|
|
@@ -411,7 +429,7 @@ let HelixHeadlessVideo = class HelixHeadlessVideo extends HelixElement {
|
|
|
411
429
|
return html `<button
|
|
412
430
|
part="rewind"
|
|
413
431
|
type="button"
|
|
414
|
-
aria-label=${
|
|
432
|
+
aria-label=${fillTemplate(this.rewindLabel, { seconds: SKIP_SECONDS })}
|
|
415
433
|
@click=${() => this.skipBy(-SKIP_SECONDS)}
|
|
416
434
|
>
|
|
417
435
|
${drawIcon(arrowCounterClockwise)}
|
|
@@ -421,7 +439,7 @@ let HelixHeadlessVideo = class HelixHeadlessVideo extends HelixElement {
|
|
|
421
439
|
return html `<button
|
|
422
440
|
part="forward"
|
|
423
441
|
type="button"
|
|
424
|
-
aria-label=${
|
|
442
|
+
aria-label=${fillTemplate(this.forwardLabel, { seconds: SKIP_SECONDS })}
|
|
425
443
|
@click=${() => this.skipBy(SKIP_SECONDS)}
|
|
426
444
|
>
|
|
427
445
|
${drawIcon(arrowClockwise)}
|
|
@@ -431,7 +449,7 @@ let HelixHeadlessVideo = class HelixHeadlessVideo extends HelixElement {
|
|
|
431
449
|
return html `<button
|
|
432
450
|
part="speed"
|
|
433
451
|
type="button"
|
|
434
|
-
aria-label
|
|
452
|
+
aria-label=${this.speedLabel}
|
|
435
453
|
@click=${() => this.cycleSpeed()}
|
|
436
454
|
>
|
|
437
455
|
${this.rate}x
|
|
@@ -441,7 +459,7 @@ let HelixHeadlessVideo = class HelixHeadlessVideo extends HelixElement {
|
|
|
441
459
|
return html `<button
|
|
442
460
|
part="previous"
|
|
443
461
|
type="button"
|
|
444
|
-
aria-label
|
|
462
|
+
aria-label=${this.previousLabel}
|
|
445
463
|
@click=${() => this.skip(true)}
|
|
446
464
|
>
|
|
447
465
|
${drawIcon(skipBack)}
|
|
@@ -451,7 +469,7 @@ let HelixHeadlessVideo = class HelixHeadlessVideo extends HelixElement {
|
|
|
451
469
|
return html `<button
|
|
452
470
|
part="next"
|
|
453
471
|
type="button"
|
|
454
|
-
aria-label
|
|
472
|
+
aria-label=${this.nextLabel}
|
|
455
473
|
@click=${() => this.skip(false)}
|
|
456
474
|
>
|
|
457
475
|
${drawIcon(skipForward)}
|
|
@@ -465,7 +483,7 @@ let HelixHeadlessVideo = class HelixHeadlessVideo extends HelixElement {
|
|
|
465
483
|
href=${this.src}
|
|
466
484
|
target=${local ? nothing : '_blank'}
|
|
467
485
|
rel=${local ? nothing : 'noreferrer'}
|
|
468
|
-
aria-label
|
|
486
|
+
aria-label=${this.downloadLabel}
|
|
469
487
|
>
|
|
470
488
|
${drawIcon(download)}
|
|
471
489
|
</a>`;
|
|
@@ -473,7 +491,7 @@ let HelixHeadlessVideo = class HelixHeadlessVideo extends HelixElement {
|
|
|
473
491
|
return html `<button
|
|
474
492
|
part="pip"
|
|
475
493
|
type="button"
|
|
476
|
-
aria-label
|
|
494
|
+
aria-label=${this.pipLabel}
|
|
477
495
|
@click=${() => void this.togglePip()}
|
|
478
496
|
>
|
|
479
497
|
${drawIcon(pictureInPicture)}
|
|
@@ -488,7 +506,7 @@ let HelixHeadlessVideo = class HelixHeadlessVideo extends HelixElement {
|
|
|
488
506
|
return html `<button
|
|
489
507
|
part="captions"
|
|
490
508
|
type="button"
|
|
491
|
-
aria-label
|
|
509
|
+
aria-label=${this.captionsLabel}
|
|
492
510
|
aria-pressed=${this.captioned ? 'true' : 'false'}
|
|
493
511
|
@click=${() => this.toggleCaptions()}
|
|
494
512
|
>
|
|
@@ -497,26 +515,28 @@ let HelixHeadlessVideo = class HelixHeadlessVideo extends HelixElement {
|
|
|
497
515
|
}
|
|
498
516
|
return html `<${this.tag('menu')} part="captions-menu"
|
|
499
517
|
exportparts="back: captions-menu-back, back-mark: captions-menu-back-mark, empty: captions-menu-empty,
|
|
500
|
-
header: captions-menu-header, loading: captions-menu-loading, surface: captions-menu-surface,
|
|
501
|
-
title: captions-menu-title" label
|
|
502
|
-
<button part="captions" slot="trigger" type="button" aria-label
|
|
518
|
+
header: captions-menu-header, live: captions-menu-live, loading: captions-menu-loading, surface: captions-menu-surface,
|
|
519
|
+
title: captions-menu-title" label=${this.subtitlesLabel} placement="top-end">
|
|
520
|
+
<button part="captions" slot="trigger" type="button" aria-label=${this.subtitlesLabel}>
|
|
503
521
|
${drawIcon(closedCaptioning)}
|
|
504
522
|
</button>
|
|
505
523
|
<${this.tag('menu-item')}
|
|
506
524
|
part="entry"
|
|
507
525
|
exportparts="item: entry-item, mark: entry-mark, start: entry-start"
|
|
508
526
|
value="off"
|
|
509
|
-
|
|
510
|
-
|
|
527
|
+
checkable
|
|
528
|
+
exclusive
|
|
529
|
+
?checked=${this.captionIndex < 0}
|
|
511
530
|
@helix-select=${() => this.showCaption(-1)}
|
|
512
531
|
>
|
|
513
|
-
|
|
532
|
+
${this.captionsOffLabel}
|
|
514
533
|
</${this.tag('menu-item')}>
|
|
515
534
|
${tracks.map((track, at) => html `<${this.tag('menu-item')} part="entry"
|
|
516
535
|
exportparts="item: entry-item, mark: entry-mark, start: entry-start"
|
|
517
536
|
value=${track.language || String(at)}
|
|
518
|
-
|
|
519
|
-
|
|
537
|
+
checkable
|
|
538
|
+
exclusive
|
|
539
|
+
?checked=${this.captionIndex === at}
|
|
520
540
|
@helix-select=${() => this.showCaption(at)}
|
|
521
541
|
>
|
|
522
542
|
${track.label || track.language}
|
|
@@ -531,14 +551,14 @@ let HelixHeadlessVideo = class HelixHeadlessVideo extends HelixElement {
|
|
|
531
551
|
@helix-select=${() => void this.remote.prompt()}
|
|
532
552
|
>
|
|
533
553
|
${drawIcon(airplay, { slot: 'start' })}
|
|
534
|
-
|
|
554
|
+
${this.remoteLabel}
|
|
535
555
|
</${this.tag('menu-item')}>`;
|
|
536
556
|
}
|
|
537
557
|
if (one === 'speed') {
|
|
538
558
|
return html `<${this.tag('menu-item')} part="entry"
|
|
539
559
|
exportparts="item: entry-item, mark: entry-mark, start: entry-start" value="speed" @helix-select=${() => this.cycleSpeed()}>
|
|
540
560
|
${drawIcon(gauge, { slot: 'start' })}
|
|
541
|
-
|
|
561
|
+
${this.speedLabel}: ${this.rate}x
|
|
542
562
|
</${this.tag('menu-item')}>`;
|
|
543
563
|
}
|
|
544
564
|
if (one === 'rewind' || one === 'forward') {
|
|
@@ -549,21 +569,21 @@ let HelixHeadlessVideo = class HelixHeadlessVideo extends HelixElement {
|
|
|
549
569
|
@helix-select=${() => this.skipBy(back ? -SKIP_SECONDS : SKIP_SECONDS)}
|
|
550
570
|
>
|
|
551
571
|
${drawIcon(back ? arrowCounterClockwise : arrowClockwise, { slot: 'start' })}
|
|
552
|
-
${back ?
|
|
572
|
+
${fillTemplate(back ? this.rewindLabel : this.forwardLabel, { seconds: SKIP_SECONDS })}
|
|
553
573
|
</${this.tag('menu-item')}>`;
|
|
554
574
|
}
|
|
555
575
|
if (one === 'previous') {
|
|
556
576
|
return html `<${this.tag('menu-item')} part="entry"
|
|
557
577
|
exportparts="item: entry-item, mark: entry-mark, start: entry-start" value="previous" @helix-select=${() => this.skip(true)}>
|
|
558
578
|
${drawIcon(skipBack, { slot: 'start' })}
|
|
559
|
-
|
|
579
|
+
${this.previousLabel}
|
|
560
580
|
</${this.tag('menu-item')}>`;
|
|
561
581
|
}
|
|
562
582
|
if (one === 'next') {
|
|
563
583
|
return html `<${this.tag('menu-item')} part="entry"
|
|
564
584
|
exportparts="item: entry-item, mark: entry-mark, start: entry-start" value="next" @helix-select=${() => this.skip(false)}>
|
|
565
585
|
${drawIcon(skipForward, { slot: 'start' })}
|
|
566
|
-
|
|
586
|
+
${this.nextLabel}
|
|
567
587
|
</${this.tag('menu-item')}>`;
|
|
568
588
|
}
|
|
569
589
|
if (one === 'download') {
|
|
@@ -577,13 +597,13 @@ let HelixHeadlessVideo = class HelixHeadlessVideo extends HelixElement {
|
|
|
577
597
|
value="download"
|
|
578
598
|
>
|
|
579
599
|
${drawIcon(download, { slot: 'start' })}
|
|
580
|
-
|
|
600
|
+
${this.downloadLabel}
|
|
581
601
|
</${this.tag('menu-item')}>`;
|
|
582
602
|
}
|
|
583
603
|
return html `<${this.tag('menu-item')} part="entry"
|
|
584
604
|
exportparts="item: entry-item, mark: entry-mark, start: entry-start" value="pip" @helix-select=${() => void this.togglePip()}>
|
|
585
605
|
${drawIcon(pictureInPicture, { slot: 'start' })}
|
|
586
|
-
|
|
606
|
+
${this.pipLabel}
|
|
587
607
|
</${this.tag('menu-item')}>`;
|
|
588
608
|
}
|
|
589
609
|
renderBar() {
|
|
@@ -612,8 +632,11 @@ let HelixHeadlessVideo = class HelixHeadlessVideo extends HelixElement {
|
|
|
612
632
|
max=${Number.isFinite(this.knownDuration) && this.knownDuration > 0 ? this.knownDuration : 0}
|
|
613
633
|
step="0.01"
|
|
614
634
|
.value=${String(this.position)}
|
|
615
|
-
aria-label
|
|
616
|
-
aria-valuetext=${
|
|
635
|
+
aria-label=${this.seekLabel}
|
|
636
|
+
aria-valuetext=${fillTemplate(this.timeLabel, {
|
|
637
|
+
duration: clock(this.knownDuration),
|
|
638
|
+
position: clock(this.position),
|
|
639
|
+
})}
|
|
617
640
|
style=${`--video-progress: ${done}`}
|
|
618
641
|
@input=${this.takeScrub}
|
|
619
642
|
/>
|
|
@@ -621,7 +644,7 @@ let HelixHeadlessVideo = class HelixHeadlessVideo extends HelixElement {
|
|
|
621
644
|
<button
|
|
622
645
|
part="mute"
|
|
623
646
|
type="button"
|
|
624
|
-
aria-label=${this.
|
|
647
|
+
aria-label=${this.muteLabel}
|
|
625
648
|
aria-pressed=${this.silent ? 'true' : 'false'}
|
|
626
649
|
@click=${() => {
|
|
627
650
|
const video = this.video;
|
|
@@ -639,8 +662,10 @@ let HelixHeadlessVideo = class HelixHeadlessVideo extends HelixElement {
|
|
|
639
662
|
max="1"
|
|
640
663
|
step="0.05"
|
|
641
664
|
.value=${String(this.silent ? 0 : this.loudness)}
|
|
642
|
-
aria-label
|
|
643
|
-
aria-valuetext=${
|
|
665
|
+
aria-label=${this.volumeLabel}
|
|
666
|
+
aria-valuetext=${fillTemplate(this.percentLabel, {
|
|
667
|
+
percent: Math.round((this.silent ? 0 : this.loudness) * 100),
|
|
668
|
+
})}
|
|
644
669
|
style=${`--video-level: ${this.silent ? 0 : this.loudness}`}
|
|
645
670
|
@input=${this.takeVolume}
|
|
646
671
|
/>
|
|
@@ -651,9 +676,9 @@ let HelixHeadlessVideo = class HelixHeadlessVideo extends HelixElement {
|
|
|
651
676
|
? nothing
|
|
652
677
|
: html `<${this.tag('menu')} part="overflow"
|
|
653
678
|
exportparts="back: overflow-back, back-mark: overflow-back-mark, empty: overflow-empty,
|
|
654
|
-
header: overflow-header, loading: overflow-loading, surface: overflow-surface,
|
|
655
|
-
title: overflow-title" label
|
|
656
|
-
<button part="more" slot="trigger" type="button" aria-label
|
|
679
|
+
header: overflow-header, live: overflow-live, loading: overflow-loading, surface: overflow-surface,
|
|
680
|
+
title: overflow-title" label=${this.moreLabel} placement="top-end">
|
|
681
|
+
<button part="more" slot="trigger" type="button" aria-label=${this.moreLabel}>
|
|
657
682
|
${drawIcon(dotsThreeVertical)}
|
|
658
683
|
</button>
|
|
659
684
|
${this.overflow.map((one) => this.renderOverflowItem(one))}
|
|
@@ -663,7 +688,7 @@ let HelixHeadlessVideo = class HelixHeadlessVideo extends HelixElement {
|
|
|
663
688
|
<button
|
|
664
689
|
part="fullscreen"
|
|
665
690
|
type="button"
|
|
666
|
-
aria-label=${this.
|
|
691
|
+
aria-label=${this.fullscreenLabel}
|
|
667
692
|
aria-pressed=${this.full ? 'true' : 'false'}
|
|
668
693
|
@click=${() => void this.fullscreen.toggle()}
|
|
669
694
|
>
|
|
@@ -737,14 +762,10 @@ let HelixHeadlessVideo = class HelixHeadlessVideo extends HelixElement {
|
|
|
737
762
|
<div part="header"><slot name="header"></slot></div>
|
|
738
763
|
<slot name="poster" part="poster"></slot>
|
|
739
764
|
${this.buffering && !this.failed
|
|
740
|
-
? html `<div
|
|
741
|
-
part="loading"
|
|
742
|
-
role="status"
|
|
743
|
-
aria-live="polite"
|
|
744
|
-
>
|
|
745
|
-
${this.loadingLabel}
|
|
746
|
-
</div>`
|
|
765
|
+
? html `<div part="loading">${this.loadingLabel}</div>`
|
|
747
766
|
: nothing}
|
|
767
|
+
${''}
|
|
768
|
+
<span part="live" role="status">${this.buffering && !this.failed ? this.loadingLabel : ''}</span>
|
|
748
769
|
${this.failed
|
|
749
770
|
? html `<div
|
|
750
771
|
part="failure"
|
|
@@ -774,6 +795,12 @@ let HelixHeadlessVideo = class HelixHeadlessVideo extends HelixElement {
|
|
|
774
795
|
__decorate([
|
|
775
796
|
property({ reflect: true, type: Boolean })
|
|
776
797
|
], HelixHeadlessVideo.prototype, "autoplay", void 0);
|
|
798
|
+
__decorate([
|
|
799
|
+
property({ attribute: 'captions-label' })
|
|
800
|
+
], HelixHeadlessVideo.prototype, "captionsLabel", void 0);
|
|
801
|
+
__decorate([
|
|
802
|
+
property({ attribute: 'captions-off-label' })
|
|
803
|
+
], HelixHeadlessVideo.prototype, "captionsOffLabel", void 0);
|
|
777
804
|
__decorate([
|
|
778
805
|
property({ reflect: true, type: Boolean })
|
|
779
806
|
], HelixHeadlessVideo.prototype, "controls", void 0);
|
|
@@ -789,12 +816,21 @@ __decorate([
|
|
|
789
816
|
__decorate([
|
|
790
817
|
property({ attribute: 'disableremoteplayback', reflect: true, type: Boolean })
|
|
791
818
|
], HelixHeadlessVideo.prototype, "disableRemotePlayback", void 0);
|
|
819
|
+
__decorate([
|
|
820
|
+
property({ attribute: 'download-label' })
|
|
821
|
+
], HelixHeadlessVideo.prototype, "downloadLabel", void 0);
|
|
792
822
|
__decorate([
|
|
793
823
|
property({ attribute: 'error-label' })
|
|
794
824
|
], HelixHeadlessVideo.prototype, "errorLabel", void 0);
|
|
795
825
|
__decorate([
|
|
796
826
|
property({ attribute: 'extra-controls' })
|
|
797
827
|
], HelixHeadlessVideo.prototype, "extraControls", void 0);
|
|
828
|
+
__decorate([
|
|
829
|
+
property({ attribute: 'forward-label' })
|
|
830
|
+
], HelixHeadlessVideo.prototype, "forwardLabel", void 0);
|
|
831
|
+
__decorate([
|
|
832
|
+
property({ attribute: 'fullscreen-label' })
|
|
833
|
+
], HelixHeadlessVideo.prototype, "fullscreenLabel", void 0);
|
|
798
834
|
__decorate([
|
|
799
835
|
property({ attribute: 'idle-delay', type: Number })
|
|
800
836
|
], HelixHeadlessVideo.prototype, "idleDelay", void 0);
|
|
@@ -807,12 +843,27 @@ __decorate([
|
|
|
807
843
|
__decorate([
|
|
808
844
|
property({ reflect: true, type: Boolean })
|
|
809
845
|
], HelixHeadlessVideo.prototype, "loop", void 0);
|
|
846
|
+
__decorate([
|
|
847
|
+
property({ attribute: 'more-label' })
|
|
848
|
+
], HelixHeadlessVideo.prototype, "moreLabel", void 0);
|
|
849
|
+
__decorate([
|
|
850
|
+
property({ attribute: 'mute-label' })
|
|
851
|
+
], HelixHeadlessVideo.prototype, "muteLabel", void 0);
|
|
852
|
+
__decorate([
|
|
853
|
+
property({ attribute: 'next-label' })
|
|
854
|
+
], HelixHeadlessVideo.prototype, "nextLabel", void 0);
|
|
810
855
|
__decorate([
|
|
811
856
|
property({ attribute: 'overflow-controls' })
|
|
812
857
|
], HelixHeadlessVideo.prototype, "overflowControls", void 0);
|
|
813
858
|
__decorate([
|
|
814
859
|
property({ attribute: 'pause-label' })
|
|
815
860
|
], HelixHeadlessVideo.prototype, "pauseLabel", void 0);
|
|
861
|
+
__decorate([
|
|
862
|
+
property({ attribute: 'percent-label' })
|
|
863
|
+
], HelixHeadlessVideo.prototype, "percentLabel", void 0);
|
|
864
|
+
__decorate([
|
|
865
|
+
property({ attribute: 'pip-label' })
|
|
866
|
+
], HelixHeadlessVideo.prototype, "pipLabel", void 0);
|
|
816
867
|
__decorate([
|
|
817
868
|
property({ attribute: 'play-label' })
|
|
818
869
|
], HelixHeadlessVideo.prototype, "playLabel", void 0);
|
|
@@ -825,6 +876,21 @@ __decorate([
|
|
|
825
876
|
__decorate([
|
|
826
877
|
property()
|
|
827
878
|
], HelixHeadlessVideo.prototype, "preload", void 0);
|
|
879
|
+
__decorate([
|
|
880
|
+
property({ attribute: 'previous-label' })
|
|
881
|
+
], HelixHeadlessVideo.prototype, "previousLabel", void 0);
|
|
882
|
+
__decorate([
|
|
883
|
+
property({ attribute: 'remote-label' })
|
|
884
|
+
], HelixHeadlessVideo.prototype, "remoteLabel", void 0);
|
|
885
|
+
__decorate([
|
|
886
|
+
property({ attribute: 'rewind-label' })
|
|
887
|
+
], HelixHeadlessVideo.prototype, "rewindLabel", void 0);
|
|
888
|
+
__decorate([
|
|
889
|
+
property({ attribute: 'seek-label' })
|
|
890
|
+
], HelixHeadlessVideo.prototype, "seekLabel", void 0);
|
|
891
|
+
__decorate([
|
|
892
|
+
property({ attribute: 'speed-label' })
|
|
893
|
+
], HelixHeadlessVideo.prototype, "speedLabel", void 0);
|
|
828
894
|
__decorate([
|
|
829
895
|
property({ attribute: 'speeds' })
|
|
830
896
|
], HelixHeadlessVideo.prototype, "speeds", void 0);
|
|
@@ -834,6 +900,15 @@ __decorate([
|
|
|
834
900
|
__decorate([
|
|
835
901
|
property({ attribute: 'start-control' })
|
|
836
902
|
], HelixHeadlessVideo.prototype, "startControl", void 0);
|
|
903
|
+
__decorate([
|
|
904
|
+
property({ attribute: 'subtitles-label' })
|
|
905
|
+
], HelixHeadlessVideo.prototype, "subtitlesLabel", void 0);
|
|
906
|
+
__decorate([
|
|
907
|
+
property({ attribute: 'time-label' })
|
|
908
|
+
], HelixHeadlessVideo.prototype, "timeLabel", void 0);
|
|
909
|
+
__decorate([
|
|
910
|
+
property({ attribute: 'volume-label' })
|
|
911
|
+
], HelixHeadlessVideo.prototype, "volumeLabel", void 0);
|
|
837
912
|
__decorate([
|
|
838
913
|
state()
|
|
839
914
|
], HelixHeadlessVideo.prototype, "buffering", void 0);
|
|
@@ -34,6 +34,7 @@ import '../../menu/index.js';
|
|
|
34
34
|
* @csspart menu-back-mark - The glyph on the back control of a submenu.
|
|
35
35
|
* @csspart menu-empty - Shown when there are no items to show.
|
|
36
36
|
* @csspart menu-header - The bar above a submenu, holding the way back and its name.
|
|
37
|
+
* @csspart menu-live - The inner menu's `live`, the region a screen reader hears its empty and loading lines from.
|
|
37
38
|
* @csspart menu-loading - Shown while the items are still on their way.
|
|
38
39
|
* @csspart menu-surface - The floating panel the menu is drawn on.
|
|
39
40
|
* @csspart menu-title - The name of the submenu that is showing.
|
|
@@ -61,7 +61,7 @@ let HelixHeadlessVideoPlaylistMenu = class HelixHeadlessVideoPlaylistMenu extend
|
|
|
61
61
|
const active = this.playlist?.active;
|
|
62
62
|
return html `<${this.tag('menu')} part="menu"
|
|
63
63
|
exportparts="back: menu-back, back-mark: menu-back-mark, empty: menu-empty, header: menu-header,
|
|
64
|
-
loading: menu-loading, surface: menu-surface, title: menu-title" label=${this.label} placement=${this.placement}>
|
|
64
|
+
live: menu-live, loading: menu-loading, surface: menu-surface, title: menu-title" label=${this.label} placement=${this.placement}>
|
|
65
65
|
<slot name="trigger" slot="trigger">
|
|
66
66
|
<button part="trigger" type="button" aria-label=${this.label}>${drawIcon(list)}</button>
|
|
67
67
|
</slot>
|
|
@@ -69,9 +69,10 @@ let HelixHeadlessVideoPlaylistMenu = class HelixHeadlessVideoPlaylistMenu extend
|
|
|
69
69
|
part="entry"
|
|
70
70
|
exportparts="item: entry-item, mark: entry-mark, start: entry-start"
|
|
71
71
|
value=${entry.value}
|
|
72
|
-
|
|
72
|
+
checkable
|
|
73
|
+
?checked=${entry.value === active}
|
|
73
74
|
?disabled=${entry.disabled}
|
|
74
|
-
|
|
75
|
+
exclusive
|
|
75
76
|
@helix-select=${(event) => {
|
|
76
77
|
event.stopPropagation();
|
|
77
78
|
this.choose(entry.value);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fusion.dev/helix-headless",
|
|
3
3
|
"description": "Headless component tier. Structure, accessibility, state, and form participation. No styling.",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.104.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Ross Sheppard <ross.sheppard@fusion.dev>",
|
|
7
7
|
"repository": {
|
|
@@ -46,13 +46,13 @@
|
|
|
46
46
|
},
|
|
47
47
|
"bugs": "https://github.com/project-fusion/fusion/issues",
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@fusion.dev/helix-core": "0.
|
|
50
|
-
"@fusion.dev/helix-icons": "0.
|
|
49
|
+
"@fusion.dev/helix-core": "0.104.0",
|
|
50
|
+
"@fusion.dev/helix-icons": "0.104.0",
|
|
51
51
|
"uqr": "^0.1.3"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
|
-
"@fusion.dev/helix-cem": "0.
|
|
55
|
-
"@fusion.dev/helix-testing": "0.
|
|
54
|
+
"@fusion.dev/helix-cem": "0.104.0",
|
|
55
|
+
"@fusion.dev/helix-testing": "0.104.0",
|
|
56
56
|
"@fusion.dev/scripts": "0.0.0-dev",
|
|
57
57
|
"@happy-dom/global-registrator": "^20.0.0",
|
|
58
58
|
"@lit-labs/ssr": "^4.1.0",
|