@theoplayer/web-ui 1.4.0 → 1.6.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.
@@ -1,11 +1,11 @@
1
1
  /*!
2
- * THEOplayer Web UI v1.4.0
2
+ * THEOplayer Open Video UI for Web (v1.6.0)
3
3
  * License: MIT
4
4
  */
5
5
  import { ChromelessPlayer, VideoQuality, THEOplayerError, MediaTrack, TextTrack, TextTracksList, EdgeStyle, VendorCast, CastState, PlayerConfiguration, SourceDescription } from 'theoplayer/chromeless';
6
6
 
7
7
  /**
8
- * A horizontal control bar that can contain other controls.
8
+ * `<theoplayer-control-bar>` - A horizontal control bar that can contain other controls.
9
9
  *
10
10
  * @group Components
11
11
  */
@@ -13,6 +13,11 @@ declare class ControlBar extends HTMLElement {
13
13
  constructor();
14
14
  connectedCallback(): void;
15
15
  }
16
+ declare global {
17
+ interface HTMLElementTagNameMap {
18
+ 'theoplayer-control-bar': ControlBar;
19
+ }
20
+ }
16
21
 
17
22
  declare enum Attribute {
18
23
  CONFIGURATION = "configuration",
@@ -21,9 +26,14 @@ declare enum Attribute {
21
26
  MUTED = "muted",
22
27
  FULLSCREEN = "fullscreen",
23
28
  FLUID = "fluid",
29
+ DEVICE_TYPE = "device-type",
24
30
  MOBILE = "mobile",
31
+ TV = "tv",
32
+ TV_FOCUS = "tv-focus",
25
33
  MOBILE_ONLY = "mobile-only",
26
34
  MOBILE_HIDDEN = "mobile-hidden",
35
+ TV_ONLY = "tv-only",
36
+ TV_HIDDEN = "tv-hidden",
27
37
  USER_IDLE = "user-idle",
28
38
  USER_IDLE_TIMEOUT = "user-idle-timeout",
29
39
  NO_AUTO_HIDE = "no-auto-hide",
@@ -70,7 +80,7 @@ interface ButtonOptions {
70
80
  }
71
81
  declare function buttonTemplate(button: string, extraCss?: string): string;
72
82
  /**
73
- * A basic button.
83
+ * `<theoplayer-button>` - A basic button.
74
84
  *
75
85
  * @attribute `disabled` - Whether the button is disabled. When disabled, the button cannot be clicked.
76
86
  * @group Components
@@ -98,7 +108,6 @@ declare class Button extends HTMLElement {
98
108
  get disabled(): boolean;
99
109
  set disabled(disabled: boolean);
100
110
  attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
101
- private readonly _onKeyDown;
102
111
  private readonly _onClick;
103
112
  /**
104
113
  * Handle a button click.
@@ -107,10 +116,15 @@ declare class Button extends HTMLElement {
107
116
  */
108
117
  protected handleClick(): void;
109
118
  }
119
+ declare global {
120
+ interface HTMLElementTagNameMap {
121
+ 'theoplayer-button': Button;
122
+ }
123
+ }
110
124
 
111
125
  declare function linkButtonTemplate(button: string, extraCss?: string): string;
112
126
  /**
113
- * A {@link Button | button} that opens a hyperlink.
127
+ * `<theoplayer-link-button>` - A {@link Button | button} that opens a hyperlink.
114
128
  *
115
129
  * @attribute `disabled` - Whether the button is disabled. When disabled, the button cannot be clicked.
116
130
  * @group Components
@@ -135,9 +149,16 @@ declare class LinkButton extends HTMLElement {
135
149
  private readonly _onClick;
136
150
  protected handleClick(): void;
137
151
  }
152
+ declare global {
153
+ interface HTMLElementTagNameMap {
154
+ 'theoplayer-link-button': LinkButton;
155
+ }
156
+ }
138
157
 
139
158
  type Constructor<T> = abstract new (...args: any[]) => T;
140
159
 
160
+ type DeviceType = 'desktop' | 'mobile' | 'tv';
161
+
141
162
  type StreamType = 'vod' | 'live' | 'dvr';
142
163
 
143
164
  /** @internal */
@@ -145,6 +166,7 @@ declare const StateReceiverProps: "theoplayerUiObservedProperties";
145
166
  interface StateReceiverPropertyMap {
146
167
  player: ChromelessPlayer | undefined;
147
168
  fullscreen: boolean;
169
+ deviceType: DeviceType;
148
170
  streamType: StreamType;
149
171
  playbackRate: number;
150
172
  activeVideoQuality: VideoQuality | undefined;
@@ -183,7 +205,7 @@ declare function StateReceiverMixin<T extends Constructor<Element>>(base: T, pro
183
205
 
184
206
  declare const PlayButton_base: typeof Button & Constructor<StateReceiverElement>;
185
207
  /**
186
- * A button that toggles whether the player is playing or paused.
208
+ * `<theoplayer-play-button>` - A button that toggles whether the player is playing or paused.
187
209
  *
188
210
  * @attribute `paused` (readonly) - Whether the player is paused. Reflects `ui.player.paused`.
189
211
  * @attribute `ended` (readonly) - Whether the player is ended. Reflects `ui.player.ended`.
@@ -209,11 +231,16 @@ declare class PlayButton extends PlayButton_base {
209
231
  attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
210
232
  private _updateAriaLabel;
211
233
  }
234
+ declare global {
235
+ interface HTMLElementTagNameMap {
236
+ 'theoplayer-play-button': PlayButton;
237
+ }
238
+ }
212
239
 
213
240
  type VolumeLevel = 'off' | 'low' | 'high';
214
241
  declare const MuteButton_base: typeof Button & Constructor<StateReceiverElement>;
215
242
  /**
216
- * A button that toggles whether audio is muted or not.
243
+ * `<theoplayer-mute-button>` - A button that toggles whether audio is muted or not.
217
244
  *
218
245
  * @attribute `volume-level` (readonly) - The volume level of the player.
219
246
  * Can be "off" (muted), "low" (volume < 50%) or "high" (volume >= 50%).
@@ -235,10 +262,15 @@ declare class MuteButton extends MuteButton_base {
235
262
  attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
236
263
  private _updateAriaLabel;
237
264
  }
265
+ declare global {
266
+ interface HTMLElementTagNameMap {
267
+ 'theoplayer-mute-button': MuteButton;
268
+ }
269
+ }
238
270
 
239
271
  declare const SeekButton_base: typeof Button & Constructor<StateReceiverElement>;
240
272
  /**
241
- * A button that seeks forward or backward by a fixed offset.
273
+ * `<theoplayer-seek-button>` - A button that seeks forward or backward by a fixed offset.
242
274
  *
243
275
  * @attribute `seek-offset` - The offset (in seconds) by which to seek forward (if positive) or backward (if negative).
244
276
  * @group Components
@@ -260,13 +292,18 @@ declare class SeekButton extends SeekButton_base {
260
292
  attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
261
293
  private _updateAriaLabel;
262
294
  }
295
+ declare global {
296
+ interface HTMLElementTagNameMap {
297
+ 'theoplayer-seek-button': SeekButton;
298
+ }
299
+ }
263
300
 
264
301
  declare const TimeDisplay_base: {
265
302
  new (): HTMLElement;
266
303
  prototype: HTMLElement;
267
304
  } & Constructor<StateReceiverElement>;
268
305
  /**
269
- * A control that displays the current time of the stream.
306
+ * `<theoplayer-time-display>` - A control that displays the current time of the stream.
270
307
  *
271
308
  * @attribute `show-duration` - If set, also shows the duration of the stream.
272
309
  * @attribute `remaining` - If set, shows the remaining time of the stream. Not compatible with `show-duration`.
@@ -288,13 +325,18 @@ declare class TimeDisplay extends TimeDisplay_base {
288
325
  private readonly _updateFromPlayer;
289
326
  attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
290
327
  }
328
+ declare global {
329
+ interface HTMLElementTagNameMap {
330
+ 'theoplayer-time-display': TimeDisplay;
331
+ }
332
+ }
291
333
 
292
334
  declare const DurationDisplay_base: {
293
335
  new (): HTMLElement;
294
336
  prototype: HTMLElement;
295
337
  } & Constructor<StateReceiverElement>;
296
338
  /**
297
- * A control that displays the duration of the stream.
339
+ * `<theoplayer-duration-display>` - A control that displays the duration of the stream.
298
340
  *
299
341
  * @group Components
300
342
  */
@@ -308,9 +350,14 @@ declare class DurationDisplay extends DurationDisplay_base {
308
350
  set player(player: ChromelessPlayer | undefined);
309
351
  private readonly _updateFromPlayer;
310
352
  }
353
+ declare global {
354
+ interface HTMLElementTagNameMap {
355
+ 'theoplayer-duration-display': DurationDisplay;
356
+ }
357
+ }
311
358
 
312
359
  /**
313
- * A button that can be checked.
360
+ * `<theoplayer-radio-button>` - A button that can be checked.
314
361
  *
315
362
  * When part of a {@link RadioGroup}, at most one button in the group can be checked.
316
363
  *
@@ -334,9 +381,18 @@ declare class RadioButton extends Button {
334
381
  protected handleClick(): void;
335
382
  attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
336
383
  }
384
+ declare global {
385
+ interface HTMLElementTagNameMap {
386
+ 'theoplayer-radio-button': RadioButton;
387
+ }
388
+ }
337
389
 
390
+ declare const RadioGroup_base: {
391
+ new (): HTMLElement;
392
+ prototype: HTMLElement;
393
+ } & Constructor<StateReceiverElement>;
338
394
  /**
339
- * A group of {@link RadioButton}s. At most one button in the group can be checked.
395
+ * `<theoplayer-radio-group>` - A group of {@link RadioButton}s. At most one button in the group can be checked.
340
396
  *
341
397
  * ## Behavior
342
398
  * This radio group implements the [roving tabindex](https://www.w3.org/WAI/ARIA/apg/example-index/radio/radio.html) pattern.
@@ -348,12 +404,15 @@ declare class RadioButton extends Button {
348
404
  *
349
405
  * @group Components
350
406
  */
351
- declare class RadioGroup extends HTMLElement {
407
+ declare class RadioGroup extends RadioGroup_base {
352
408
  private _slot;
353
409
  private _radioButtons;
354
410
  constructor();
411
+ protected _upgradeProperty(prop: keyof this): void;
355
412
  connectedCallback(): void;
356
413
  disconnectedCallback(): void;
414
+ get deviceType(): DeviceType;
415
+ set deviceType(deviceType: DeviceType);
357
416
  private readonly _onSlotChange;
358
417
  private readonly _onKeyDown;
359
418
  get focusedRadioButton(): RadioButton | null;
@@ -370,19 +429,27 @@ declare class RadioGroup extends HTMLElement {
370
429
  setCheckedRadioButton(checkedButton: RadioButton | null): void;
371
430
  private readonly _onButtonChange;
372
431
  }
432
+ declare global {
433
+ interface HTMLElementTagNameMap {
434
+ 'theoplayer-radio-group': RadioGroup;
435
+ }
436
+ }
373
437
 
374
438
  interface MenuOptions {
375
439
  template?: HTMLTemplateElement;
376
440
  }
377
441
  declare function menuTemplate(heading: string, content: string, extraCss?: string): string;
378
442
  /**
379
- * A menu that can be opened on top of the player.
443
+ * `<theoplayer-menu>` - A menu that can be opened on top of the player.
380
444
  *
381
445
  * The menu has a heading at the top, with a {@link CloseMenuButton | close button} and a heading text.
382
446
  *
383
447
  * @attribute `menu-close-on-input` - Whether to automatically close the menu whenever one of its controls
384
448
  * receives an input (e.g. when a radio button is clicked).
385
449
  * @attribute `menu-opened` (readonly) - Whether the menu is currently open.
450
+ *
451
+ * @slot `heading` - A slot for the menu's heading.
452
+ *
386
453
  * @group Components
387
454
  */
388
455
  declare class Menu extends HTMLElement {
@@ -401,6 +468,12 @@ declare class Menu extends HTMLElement {
401
468
  protected _upgradeProperty(prop: keyof this): void;
402
469
  connectedCallback(): void;
403
470
  disconnectedCallback(): void;
471
+ /**
472
+ * Whether to automatically close the menu whenever one of its controls
473
+ * receives an input (e.g. when a radio button is clicked).
474
+ */
475
+ get closeOnInput(): boolean;
476
+ set closeOnInput(value: boolean);
404
477
  /**
405
478
  * Open the menu.
406
479
  */
@@ -412,13 +485,18 @@ declare class Menu extends HTMLElement {
412
485
  attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
413
486
  private readonly _onContentInput;
414
487
  }
488
+ declare global {
489
+ interface HTMLElementTagNameMap {
490
+ 'theoplayer-menu': Menu;
491
+ }
492
+ }
415
493
 
416
494
  interface MenuGroupOptions {
417
495
  template?: HTMLTemplateElement;
418
496
  }
419
497
  declare function menuGroupTemplate(content: string, extraCss?: string): string;
420
498
  /**
421
- * A group of {@link Menu}s.
499
+ * `<theoplayer-menu-group>` - A group of {@link Menu}s.
422
500
  *
423
501
  * This can contain multiple other menus, which can be opened with {@link MenuGroup.openMenu}.
424
502
  * When a {@link MenuButton} in one menu opens another menu in this group, it is opened as a "submenu".
@@ -495,9 +573,14 @@ declare class MenuGroup extends HTMLElement {
495
573
  private readonly _onMenuChange;
496
574
  private readonly _onKeyDown;
497
575
  }
576
+ declare global {
577
+ interface HTMLElementTagNameMap {
578
+ 'theoplayer-menu-group': MenuGroup;
579
+ }
580
+ }
498
581
 
499
582
  /**
500
- * A menu button that opens a {@link Menu}.
583
+ * `<theoplayer-menu-button>` - A menu button that opens a {@link Menu}.
501
584
  *
502
585
  * @attribute `menu` - The ID of the menu to open.
503
586
  * @group Components
@@ -514,9 +597,14 @@ declare class MenuButton extends Button {
514
597
  attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
515
598
  protected handleClick(): void;
516
599
  }
600
+ declare global {
601
+ interface HTMLElementTagNameMap {
602
+ 'theoplayer-menu-button': MenuButton;
603
+ }
604
+ }
517
605
 
518
606
  /**
519
- * A button that closes its parent menu.
607
+ * `<theoplayer-menu-close-button>` - A button that closes its parent menu.
520
608
  *
521
609
  * This button must be placed inside a {@link Menu | `<theoplayer-menu>`}.
522
610
  *
@@ -528,9 +616,16 @@ declare class CloseMenuButton extends Button {
528
616
  connectedCallback(): void;
529
617
  protected handleClick(): void;
530
618
  }
619
+ declare global {
620
+ interface HTMLElementTagNameMap {
621
+ 'theoplayer-menu-close-button': CloseMenuButton;
622
+ }
623
+ }
531
624
 
532
625
  /**
533
- * A radio button that shows the label of a given media track, and switches to that track when clicked.
626
+ * `<theoplayer-media-track-radio-button>` - A radio button that shows the label of a given media track,
627
+ * and switches to that track when clicked.
628
+ *
534
629
  * @group Components
535
630
  */
536
631
  declare class MediaTrackRadioButton extends RadioButton {
@@ -547,6 +642,11 @@ declare class MediaTrackRadioButton extends RadioButton {
547
642
  private readonly _onTrackChange;
548
643
  attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
549
644
  }
645
+ declare global {
646
+ interface HTMLElementTagNameMap {
647
+ 'theoplayer-media-track-radio-button': MediaTrackRadioButton;
648
+ }
649
+ }
550
650
 
551
651
  type TrackType = 'audio' | 'video' | 'subtitles';
552
652
  declare const TrackRadioGroup_base: {
@@ -554,7 +654,8 @@ declare const TrackRadioGroup_base: {
554
654
  prototype: HTMLElement;
555
655
  } & Constructor<StateReceiverElement>;
556
656
  /**
557
- * A radio group that shows a list of media or text tracks, from which the user can choose an active track.
657
+ * `<theoplayer-track-radio-group>` - A radio group that shows a list of media or text tracks,
658
+ * from which the user can choose an active track.
558
659
  *
559
660
  * @attribute `track-type` - The track type of the available tracks. Can be "audio", "video" or "subtitles".
560
661
  * @attribute `show-off` - If set, shows an "off" button to disable all tracks.
@@ -594,9 +695,14 @@ declare class TrackRadioGroup extends TrackRadioGroup_base {
594
695
  private readonly _onChange;
595
696
  attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
596
697
  }
698
+ declare global {
699
+ interface HTMLElementTagNameMap {
700
+ 'theoplayer-track-radio-group': TrackRadioGroup;
701
+ }
702
+ }
597
703
 
598
704
  /**
599
- * A radio button that shows the label of a given text track, and switches to that track when clicked.
705
+ * `<theoplayer-text-track-radio-button>` -A radio button that shows the label of a given text track, and switches to that track when clicked.
600
706
  *
601
707
  * @group Components
602
708
  */
@@ -614,9 +720,14 @@ declare class TextTrackRadioButton extends RadioButton {
614
720
  private readonly _onTrackChange;
615
721
  attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
616
722
  }
723
+ declare global {
724
+ interface HTMLElementTagNameMap {
725
+ 'theoplayer-text-track-radio-button': TextTrackRadioButton;
726
+ }
727
+ }
617
728
 
618
729
  /**
619
- * A radio button that disables the active subtitle track when clicked.
730
+ * `<theoplayer-text-track-off-radio-button>` - A radio button that disables the active subtitle track when clicked.
620
731
  *
621
732
  * @group Components
622
733
  */
@@ -630,6 +741,11 @@ declare class TextTrackOffRadioButton extends RadioButton {
630
741
  private readonly _onTrackChange;
631
742
  attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
632
743
  }
744
+ declare global {
745
+ interface HTMLElementTagNameMap {
746
+ 'theoplayer-text-track-off-radio-button': TextTrackOffRadioButton;
747
+ }
748
+ }
633
749
 
634
750
  interface TextTrackStyleMap {
635
751
  fontFamily: string | undefined;
@@ -648,7 +764,8 @@ declare const TextTrackStyleRadioGroup_base: {
648
764
  prototype: HTMLElement;
649
765
  } & Constructor<StateReceiverElement>;
650
766
  /**
651
- * A radio group that shows a list of values for a text track style option, from which the user can choose a desired value.
767
+ * `<theoplayer-text-track-style-radio-group>` - A radio group that shows a list of values for a text track style option,
768
+ * from which the user can choose a desired value.
652
769
  *
653
770
  * @attribute `property` - The property name of the text track style option. One of {@link TextTrackStyleOption}.
654
771
  * @slot {@link RadioButton} - The possible options for the text track style option.
@@ -683,13 +800,19 @@ declare class TextTrackStyleRadioGroup extends TextTrackStyleRadioGroup_base {
683
800
  private _updateToPlayer;
684
801
  attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
685
802
  }
803
+ declare global {
804
+ interface HTMLElementTagNameMap {
805
+ 'theoplayer-text-track-style-radio-group': TextTrackStyleRadioGroup;
806
+ }
807
+ }
686
808
 
687
809
  declare const TextTrackStyleDisplay_base: {
688
810
  new (): HTMLElement;
689
811
  prototype: HTMLElement;
690
812
  } & Constructor<StateReceiverElement>;
691
813
  /**
692
- * Displays the value of a single text track style option in a human-readable format.
814
+ * `<theoplayer-text-track-style-display>` - A control that displays the value of a single text track style option
815
+ * in a human-readable format.
693
816
  *
694
817
  * @attribute `property` - The property name of the text track style option. One of {@link TextTrackStyleOption}.
695
818
  * @group Components
@@ -711,19 +834,33 @@ declare class TextTrackStyleDisplay extends TextTrackStyleDisplay_base {
711
834
  private readonly _updateFromPlayer;
712
835
  attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
713
836
  }
837
+ declare global {
838
+ interface HTMLElementTagNameMap {
839
+ 'theoplayer-text-track-style-display': TextTrackStyleDisplay;
840
+ }
841
+ }
714
842
 
715
843
  /**
716
- * A menu to change the {@link theoplayer!TextTrackStyle | text track style} of the player.
844
+ * `<theoplayer-text-track-style-menu>` - A menu to change the {@link theoplayer!TextTrackStyle | text track style} of the player.
845
+ *
846
+ * @slot `heading` - A slot for the menu's heading.
717
847
  *
718
848
  * @group Components
719
849
  */
720
850
  declare class TextTrackStyleMenu extends MenuGroup {
721
851
  constructor();
722
852
  }
853
+ declare global {
854
+ interface HTMLElementTagNameMap {
855
+ 'theoplayer-text-track-style-menu': TextTrackStyleMenu;
856
+ }
857
+ }
723
858
 
724
859
  declare const LanguageMenu_base: typeof MenuGroup & Constructor<StateReceiverElement>;
725
860
  /**
726
- * A menu to change the spoken language and subtitles of the stream.
861
+ * `<theoplayer-language-menu>` - A menu to change the spoken language and subtitles of the stream.
862
+ *
863
+ * @slot `heading` - A slot for the menu's heading.
727
864
  *
728
865
  * @group Components
729
866
  */
@@ -737,10 +874,15 @@ declare class LanguageMenu extends LanguageMenu_base {
737
874
  private readonly _updateTextTracks;
738
875
  attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
739
876
  }
877
+ declare global {
878
+ interface HTMLElementTagNameMap {
879
+ 'theoplayer-language-menu': LanguageMenu;
880
+ }
881
+ }
740
882
 
741
883
  declare const LanguageMenuButton_base: typeof MenuButton & Constructor<StateReceiverElement>;
742
884
  /**
743
- * A menu button that opens a {@link LanguageMenu}.
885
+ * `<theoplayer-language-menu-button>` - A menu button that opens a {@link LanguageMenu}.
744
886
  *
745
887
  * When there are no alternative audio languages or subtitles, this button automatically hides itself.
746
888
  *
@@ -755,13 +897,19 @@ declare class LanguageMenuButton extends LanguageMenuButton_base {
755
897
  set player(player: ChromelessPlayer | undefined);
756
898
  private readonly _updateTracks;
757
899
  }
900
+ declare global {
901
+ interface HTMLElementTagNameMap {
902
+ 'theoplayer-language-menu-button': LanguageMenuButton;
903
+ }
904
+ }
758
905
 
759
906
  declare const PlaybackRateRadioGroup_base: {
760
907
  new (): HTMLElement;
761
908
  prototype: HTMLElement;
762
909
  } & Constructor<StateReceiverElement>;
763
910
  /**
764
- * A radio group that shows a list of playback rates, from which the user can choose a desired playback rate.
911
+ * `<theoplayer-playback-rate-radio-group>` - A radio group that shows a list of playback rates,
912
+ * from which the user can choose a desired playback rate.
765
913
  *
766
914
  * @slot {@link RadioButton} - The possible options for the playback rate.
767
915
  * The value of each radio button must be a valid number.
@@ -788,9 +936,14 @@ declare class PlaybackRateRadioGroup extends PlaybackRateRadioGroup_base {
788
936
  private readonly _onChange;
789
937
  private readonly _updateFromPlayer;
790
938
  }
939
+ declare global {
940
+ interface HTMLElementTagNameMap {
941
+ 'theoplayer-playback-rate-radio-group': PlaybackRateRadioGroup;
942
+ }
943
+ }
791
944
 
792
945
  /**
793
- * A menu button that opens a [playback rate menu]{@link PlaybackRateMenu}.
946
+ * `<theoplayer-playback-rate-menu-button>` - A menu button that opens a [playback rate menu]{@link PlaybackRateMenu}.
794
947
  *
795
948
  * @attribute menu - The ID of the playback rate menu.
796
949
  * @group Components
@@ -799,21 +952,35 @@ declare class PlaybackRateMenuButton extends MenuButton {
799
952
  constructor();
800
953
  connectedCallback(): void;
801
954
  }
955
+ declare global {
956
+ interface HTMLElementTagNameMap {
957
+ 'theoplayer-playback-rate-menu-button': PlaybackRateMenuButton;
958
+ }
959
+ }
802
960
 
803
961
  /**
804
- * A menu to change the playback rate of the player.
962
+ * `<theoplayer-playback-rate-menu>` - A menu to change the playback rate of the player.
963
+ *
964
+ * @slot `heading` - A slot for the menu's heading.
805
965
  *
806
966
  * @group Components
807
967
  */
808
968
  declare class PlaybackRateMenu extends Menu {
809
969
  constructor();
810
970
  }
971
+ declare global {
972
+ interface HTMLElementTagNameMap {
973
+ 'theoplayer-playback-rate-menu': PlaybackRateMenu;
974
+ }
975
+ }
811
976
 
812
977
  declare const PlaybackRateDisplay_base: {
813
978
  new (): HTMLElement;
814
979
  prototype: HTMLElement;
815
980
  } & Constructor<StateReceiverElement>;
816
981
  /**
982
+ * `<theoplayer-playback-rate-display>` - A control that displays the current playback rate of the player.
983
+ *
817
984
  * @group Components
818
985
  */
819
986
  declare class PlaybackRateDisplay extends PlaybackRateDisplay_base {
@@ -825,12 +992,19 @@ declare class PlaybackRateDisplay extends PlaybackRateDisplay_base {
825
992
  get playbackRate(): number;
826
993
  set playbackRate(value: number);
827
994
  }
995
+ declare global {
996
+ interface HTMLElementTagNameMap {
997
+ 'theoplayer-playback-rate-display': PlaybackRateDisplay;
998
+ }
999
+ }
828
1000
 
829
1001
  declare const ActiveQualityDisplay_base: {
830
1002
  new (): HTMLElement;
831
1003
  prototype: HTMLElement;
832
1004
  } & Constructor<StateReceiverElement>;
833
1005
  /**
1006
+ * `<theoplayer-active-quality-display>` - A control that displays the name of the active video quality.
1007
+ *
834
1008
  * @group Components
835
1009
  */
836
1010
  declare class ActiveQualityDisplay extends ActiveQualityDisplay_base {
@@ -846,10 +1020,15 @@ declare class ActiveQualityDisplay extends ActiveQualityDisplay_base {
846
1020
  set targetVideoQualities(qualities: VideoQuality[] | undefined);
847
1021
  private update_;
848
1022
  }
1023
+ declare global {
1024
+ interface HTMLElementTagNameMap {
1025
+ 'theoplayer-active-quality-display': ActiveQualityDisplay;
1026
+ }
1027
+ }
849
1028
 
850
1029
  /**
851
- * A radio button that shows the label of a given video quality, and switches the video track's
852
- * {@link theoplayer!MediaTrack.targetQuality | target quality} to that quality when clicked.
1030
+ * `<theoplayer-quality-radio-button>` - A radio button that shows the label of a given video quality,
1031
+ * and switches the video track's {@link theoplayer!MediaTrack.targetQuality | target quality} to that quality when clicked.
853
1032
  *
854
1033
  * @group Components
855
1034
  */
@@ -873,13 +1052,19 @@ declare class QualityRadioButton extends RadioButton {
873
1052
  private _updateTargetQuality;
874
1053
  attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
875
1054
  }
1055
+ declare global {
1056
+ interface HTMLElementTagNameMap {
1057
+ 'theoplayer-quality-radio-button': QualityRadioButton;
1058
+ }
1059
+ }
876
1060
 
877
1061
  declare const QualityRadioGroup_base: {
878
1062
  new (): HTMLElement;
879
1063
  prototype: HTMLElement;
880
1064
  } & Constructor<StateReceiverElement>;
881
1065
  /**
882
- * A radio group that shows a list of available video qualities, from which the user can choose a desired target quality.
1066
+ * `<theoplayer-quality-radio-group>` - A radio group that shows a list of available video qualities,
1067
+ * from which the user can choose a desired target quality.
883
1068
  *
884
1069
  * @group Components
885
1070
  */
@@ -897,10 +1082,15 @@ declare class QualityRadioGroup extends QualityRadioGroup_base {
897
1082
  private readonly _updateTrack;
898
1083
  private readonly _update;
899
1084
  }
1085
+ declare global {
1086
+ interface HTMLElementTagNameMap {
1087
+ 'theoplayer-quality-radio-group': QualityRadioGroup;
1088
+ }
1089
+ }
900
1090
 
901
1091
  declare const TextTrackStyleResetButton_base: typeof Button & Constructor<StateReceiverElement>;
902
1092
  /**
903
- * A button that resets the text track style.
1093
+ * `<theoplayer-text-track-style-reset-button>` - A button that resets the text track style.
904
1094
  *
905
1095
  * @group Components
906
1096
  */
@@ -912,18 +1102,31 @@ declare class TextTrackStyleResetButton extends TextTrackStyleResetButton_base {
912
1102
  set player(player: ChromelessPlayer | undefined);
913
1103
  protected handleClick(): void;
914
1104
  }
1105
+ declare global {
1106
+ interface HTMLElementTagNameMap {
1107
+ 'theoplayer-text-track-style-reset-button': TextTrackStyleResetButton;
1108
+ }
1109
+ }
915
1110
 
916
1111
  /**
917
- * A menu to change the settings of the player, such as the active video quality and the playback speed.
1112
+ * `<theoplayer-settings-menu>` - A menu to change the settings of the player,
1113
+ * such as the active video quality and the playback speed.
1114
+ *
1115
+ * @slot `heading` - A slot for the menu's heading.
918
1116
  *
919
1117
  * @group Components
920
1118
  */
921
1119
  declare class SettingsMenu extends MenuGroup {
922
1120
  constructor();
923
1121
  }
1122
+ declare global {
1123
+ interface HTMLElementTagNameMap {
1124
+ 'theoplayer-settings-menu': SettingsMenu;
1125
+ }
1126
+ }
924
1127
 
925
1128
  /**
926
- * A menu button that opens a {@link SettingsMenu}.
1129
+ * `<theoplayer-settings-menu-button>` - A menu button that opens a {@link SettingsMenu}.
927
1130
  *
928
1131
  * @attribute `menu` - The ID of the settings menu.
929
1132
  * @group Components
@@ -932,10 +1135,15 @@ declare class SettingsMenuButton extends MenuButton {
932
1135
  constructor();
933
1136
  connectedCallback(): void;
934
1137
  }
1138
+ declare global {
1139
+ interface HTMLElementTagNameMap {
1140
+ 'theoplayer-settings-menu-button': SettingsMenuButton;
1141
+ }
1142
+ }
935
1143
 
936
1144
  declare const FullscreenButton_base: typeof Button & Constructor<StateReceiverElement>;
937
1145
  /**
938
- * A button that toggles fullscreen.
1146
+ * `<theoplayer-fullscreen-button>` - A button that toggles fullscreen.
939
1147
  *
940
1148
  * @group Components
941
1149
  */
@@ -949,6 +1157,11 @@ declare class FullscreenButton extends FullscreenButton_base {
949
1157
  attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
950
1158
  private _updateAriaLabel;
951
1159
  }
1160
+ declare global {
1161
+ interface HTMLElementTagNameMap {
1162
+ 'theoplayer-fullscreen-button': FullscreenButton;
1163
+ }
1164
+ }
952
1165
 
953
1166
  declare class ColorStops {
954
1167
  private _stops;
@@ -961,6 +1174,10 @@ interface RangeOptions {
961
1174
  template: HTMLTemplateElement;
962
1175
  }
963
1176
  declare function rangeTemplate(range: string, extraCss?: string): string;
1177
+ declare const Range_base: {
1178
+ new (): HTMLElement;
1179
+ prototype: HTMLElement;
1180
+ } & Constructor<StateReceiverElement>;
964
1181
  /**
965
1182
  * A slider to select a value from a range.
966
1183
  *
@@ -969,7 +1186,7 @@ declare function rangeTemplate(range: string, extraCss?: string): string;
969
1186
  *
970
1187
  * @group Components
971
1188
  */
972
- declare abstract class Range extends HTMLElement {
1189
+ declare abstract class Range extends Range_base {
973
1190
  static get observedAttributes(): Attribute[];
974
1191
  protected readonly _rangeEl: HTMLInputElement;
975
1192
  protected readonly _pointerEl: HTMLElement;
@@ -1007,6 +1224,8 @@ declare abstract class Range extends HTMLElement {
1007
1224
  */
1008
1225
  get step(): number | 'any';
1009
1226
  set step(step: number | 'any');
1227
+ get deviceType(): DeviceType;
1228
+ set deviceType(deviceType: DeviceType);
1010
1229
  attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
1011
1230
  private readonly _onInput;
1012
1231
  protected handleInput(): void;
@@ -1033,6 +1252,8 @@ declare abstract class Range extends HTMLElement {
1033
1252
  protected getBarColors(): ColorStops;
1034
1253
  private readonly _updatePointerBar;
1035
1254
  protected updatePointer_(mousePercent: number, rangeRect: DOMRectReadOnly): void;
1255
+ private readonly _onKeyDown;
1256
+ protected handleKeyDown_(e: KeyboardEvent): void;
1036
1257
  }
1037
1258
 
1038
1259
  declare const PreviewThumbnail_base: {
@@ -1040,7 +1261,8 @@ declare const PreviewThumbnail_base: {
1040
1261
  prototype: HTMLElement;
1041
1262
  } & Constructor<StateReceiverElement>;
1042
1263
  /**
1043
- * A display that shows the thumbnail image at the current preview time of a {@link TimeRange | `<theoplayer-time-range>`}.
1264
+ * `<theoplayer-preview-thumbnail>` - A display that shows the thumbnail image at the current preview time
1265
+ * of a {@link TimeRange | `<theoplayer-time-range>`}.
1044
1266
  *
1045
1267
  * The first `metadata` text track whose label equals `"thumbnails"` is used as source for the thumbnails.
1046
1268
  * This track is expected to contain cues whose content is the URL for the thumbnail image.
@@ -1071,13 +1293,18 @@ declare class PreviewThumbnail extends PreviewThumbnail_base {
1071
1293
  private showThumbnail_;
1072
1294
  private hideThumbnail_;
1073
1295
  }
1296
+ declare global {
1297
+ interface HTMLElementTagNameMap {
1298
+ 'theoplayer-preview-thumbnail': PreviewThumbnail;
1299
+ }
1300
+ }
1074
1301
 
1075
1302
  declare const PreviewTimeDisplay_base: {
1076
1303
  new (): HTMLElement;
1077
1304
  prototype: HTMLElement;
1078
1305
  } & Constructor<StateReceiverElement>;
1079
1306
  /**
1080
- * A display that shows the current preview time of a {@link TimeRange | `<theoplayer-time-range>`}.
1307
+ * `<theoplayer-preview-time-display>` - A display that shows the current preview time of a {@link TimeRange | `<theoplayer-time-range>`}.
1081
1308
  *
1082
1309
  * @attribute `remaining` - If set, shows the remaining time of the stream.
1083
1310
  * @attribute `remaining-when-live` - If set, and the stream is a livestream, shows the remaining time
@@ -1101,10 +1328,16 @@ declare class PreviewTimeDisplay extends PreviewTimeDisplay_base {
1101
1328
  private readonly _update;
1102
1329
  attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
1103
1330
  }
1331
+ declare global {
1332
+ interface HTMLElementTagNameMap {
1333
+ 'theoplayer-preview-time-display': PreviewTimeDisplay;
1334
+ }
1335
+ }
1104
1336
 
1105
1337
  declare const TimeRange_base: typeof Range & Constructor<StateReceiverElement>;
1106
1338
  /**
1107
- * A seek bar, showing the current time of the player, and which seeks the player when clicked or dragged.
1339
+ * `<theoplayer-time-range>` - A seek bar, showing the current time of the player,
1340
+ * and which seeks the player when clicked or dragged.
1108
1341
  *
1109
1342
  * @slot `preview` - A slot holding a preview of the seek time, shown while hovering the seek bar.
1110
1343
  * By default, this shows the {@link PreviewTimeDisplay | preview time} and
@@ -1142,11 +1375,18 @@ declare class TimeRange extends TimeRange_base {
1142
1375
  protected updatePointer_(mousePercent: number, rangeRect: DOMRectReadOnly): void;
1143
1376
  protected getBarColors(): ColorStops;
1144
1377
  private readonly _onAdChange;
1378
+ protected handleKeyDown_(e: KeyboardEvent): void;
1379
+ }
1380
+ declare global {
1381
+ interface HTMLElementTagNameMap {
1382
+ 'theoplayer-time-range': TimeRange;
1383
+ }
1145
1384
  }
1146
1385
 
1147
1386
  declare const VolumeRange_base: typeof Range & Constructor<StateReceiverElement>;
1148
1387
  /**
1149
- * A volume slider, showing the current audio volume of the player, and which changes the volume when clicked or dragged.
1388
+ * `<theoplayer-volume-range>` - A volume slider, showing the current audio volume of the player,
1389
+ * and which changes the volume when clicked or dragged.
1150
1390
  *
1151
1391
  * @group Components
1152
1392
  */
@@ -1160,13 +1400,18 @@ declare class VolumeRange extends VolumeRange_base {
1160
1400
  protected getAriaValueText(): string;
1161
1401
  protected handleInput(): void;
1162
1402
  }
1403
+ declare global {
1404
+ interface HTMLElementTagNameMap {
1405
+ 'theoplayer-volume-range': VolumeRange;
1406
+ }
1407
+ }
1163
1408
 
1164
1409
  declare const ErrorDisplay_base: {
1165
1410
  new (): HTMLElement;
1166
1411
  prototype: HTMLElement;
1167
1412
  } & Constructor<StateReceiverElement>;
1168
1413
  /**
1169
- * A screen that shows the details of a fatal player error.
1414
+ * `<theoplayer-error-display>` - A screen that shows the details of a fatal player error.
1170
1415
  *
1171
1416
  * @group Components
1172
1417
  */
@@ -1186,11 +1431,16 @@ declare class ErrorDisplay extends ErrorDisplay_base {
1186
1431
  set fullscreen(fullscreen: boolean);
1187
1432
  attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
1188
1433
  }
1434
+ declare global {
1435
+ interface HTMLElementTagNameMap {
1436
+ 'theoplayer-error-display': ErrorDisplay;
1437
+ }
1438
+ }
1189
1439
 
1190
1440
  /**
1191
1441
  * A generic button to start and stop casting.
1192
1442
  *
1193
- * For a concrete implementation, see {@link ChromecastButton}.
1443
+ * For a concrete implementation, see {@link ChromecastButton} and {@link AirPlayButton}.
1194
1444
  * @group Components
1195
1445
  */
1196
1446
  declare class CastButton extends Button {
@@ -1199,7 +1449,7 @@ declare class CastButton extends Button {
1199
1449
  constructor(options?: ButtonOptions);
1200
1450
  connectedCallback(): void;
1201
1451
  /**
1202
- * The cast API for which this cast button.
1452
+ * The cast API for this cast button.
1203
1453
  */
1204
1454
  get castApi(): VendorCast | undefined;
1205
1455
  set castApi(castApi: VendorCast | undefined);
@@ -1214,7 +1464,7 @@ declare class CastButton extends Button {
1214
1464
 
1215
1465
  declare const ChromecastButton_base: typeof CastButton & Constructor<StateReceiverElement>;
1216
1466
  /**
1217
- * A button to start and stop casting using Chromecast.
1467
+ * `<theoplayer-chromecast-button>` - A button to start and stop casting using Chromecast.
1218
1468
  *
1219
1469
  * @group Components
1220
1470
  */
@@ -1227,13 +1477,18 @@ declare class ChromecastButton extends ChromecastButton_base {
1227
1477
  attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
1228
1478
  private _updateAriaLabel;
1229
1479
  }
1480
+ declare global {
1481
+ interface HTMLElementTagNameMap {
1482
+ 'theoplayer-chromecast-button': ChromecastButton;
1483
+ }
1484
+ }
1230
1485
 
1231
1486
  declare const ChromecastDisplay_base: {
1232
1487
  new (): HTMLElement;
1233
1488
  prototype: HTMLElement;
1234
1489
  } & Constructor<StateReceiverElement>;
1235
1490
  /**
1236
- * A control that displays the casting status while using Chromecast.
1491
+ * `<theoplayer-chromecast-display>` - A control that displays the casting status while using Chromecast.
1237
1492
  *
1238
1493
  * @group Components
1239
1494
  */
@@ -1247,10 +1502,15 @@ declare class ChromecastDisplay extends ChromecastDisplay_base {
1247
1502
  set player(player: ChromelessPlayer | undefined);
1248
1503
  private readonly _updateFromPlayer;
1249
1504
  }
1505
+ declare global {
1506
+ interface HTMLElementTagNameMap {
1507
+ 'theoplayer-chromecast-display': ChromecastDisplay;
1508
+ }
1509
+ }
1250
1510
 
1251
1511
  declare const AirPlayButton_base: typeof CastButton & Constructor<StateReceiverElement>;
1252
1512
  /**
1253
- * A button to start and stop casting using AirPlay.
1513
+ * `<theoplayer-airplay-button>` - A button to start and stop casting using AirPlay.
1254
1514
  *
1255
1515
  * @group Components
1256
1516
  */
@@ -1263,13 +1523,18 @@ declare class AirPlayButton extends AirPlayButton_base {
1263
1523
  attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
1264
1524
  private _updateAriaLabel;
1265
1525
  }
1526
+ declare global {
1527
+ interface HTMLElementTagNameMap {
1528
+ 'theoplayer-airplay-button': AirPlayButton;
1529
+ }
1530
+ }
1266
1531
 
1267
1532
  declare const LoadingIndicator_base: {
1268
1533
  new (): HTMLElement;
1269
1534
  prototype: HTMLElement;
1270
1535
  } & Constructor<StateReceiverElement>;
1271
1536
  /**
1272
- * An indicator that shows whether the player is currently waiting for more data to resume playback.
1537
+ * `<theoplayer-loading-indicator>` - An indicator that shows whether the player is currently waiting for more data to resume playback.
1273
1538
  *
1274
1539
  * @attribute `loading` (readonly) - Whether the player is waiting for more data. If set, the indicator is shown.
1275
1540
  * @group Components
@@ -1285,13 +1550,18 @@ declare class LoadingIndicator extends LoadingIndicator_base {
1285
1550
  private readonly _updateFromPlayer;
1286
1551
  attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
1287
1552
  }
1553
+ declare global {
1554
+ interface HTMLElementTagNameMap {
1555
+ 'theoplayer-loading-indicator': LoadingIndicator;
1556
+ }
1557
+ }
1288
1558
 
1289
1559
  declare const GestureReceiver_base: {
1290
1560
  new (): HTMLElement;
1291
1561
  prototype: HTMLElement;
1292
1562
  } & Constructor<StateReceiverElement>;
1293
1563
  /**
1294
- * An overlay that receives and handles gestures on the player.
1564
+ * `<theoplayer-gesture-receiver>` - An overlay that receives and handles gestures on the player.
1295
1565
  *
1296
1566
  * On desktop devices, this plays or pauses the player whenever it is clicked.
1297
1567
  * On mobile devices, this currently does nothing.
@@ -1311,10 +1581,16 @@ declare class GestureReceiver extends GestureReceiver_base {
1311
1581
  handleTap(_event: MouseEvent): void;
1312
1582
  handleMouseClick(_event: MouseEvent): void;
1313
1583
  }
1584
+ declare global {
1585
+ interface HTMLElementTagNameMap {
1586
+ 'theoplayer-gesture-receiver': GestureReceiver;
1587
+ }
1588
+ }
1314
1589
 
1315
1590
  declare const LiveButton_base: typeof Button & Constructor<StateReceiverElement>;
1316
1591
  /**
1317
- * A button that shows whether the player is currently playing at the live point, and seeks to the live point when clicked.
1592
+ * `<theoplayer-live-button>` - A button that shows whether the player is currently playing at the live point,
1593
+ * and seeks to the live point when clicked.
1318
1594
  *
1319
1595
  * @attribute `live-threshold` - The maximum distance (in seconds) from the live point that the player's current time
1320
1596
  * can be for it to still be considered "at the live point". If unset, defaults to 10 seconds.
@@ -1341,12 +1617,20 @@ declare class LiveButton extends LiveButton_base {
1341
1617
  protected handleClick(): void;
1342
1618
  attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
1343
1619
  }
1620
+ declare global {
1621
+ interface HTMLElementTagNameMap {
1622
+ 'theoplayer-live-button': LiveButton;
1623
+ }
1624
+ }
1344
1625
 
1345
1626
  declare const AdDisplay_base: {
1346
1627
  new (): HTMLElement;
1347
1628
  prototype: HTMLElement;
1348
1629
  } & Constructor<StateReceiverElement>;
1349
1630
  /**
1631
+ * `<theoplayer-ad-countdown>` - A control that shows when an advertisement is playing,
1632
+ * and the number of the current ad in the ad break (if the break has multiple ads).
1633
+ *
1350
1634
  * @group Components
1351
1635
  */
1352
1636
  declare class AdDisplay extends AdDisplay_base {
@@ -1359,12 +1643,19 @@ declare class AdDisplay extends AdDisplay_base {
1359
1643
  set player(player: ChromelessPlayer | undefined);
1360
1644
  private readonly _updateFromPlayer;
1361
1645
  }
1646
+ declare global {
1647
+ interface HTMLElementTagNameMap {
1648
+ 'theoplayer-ad-display': AdDisplay;
1649
+ }
1650
+ }
1362
1651
 
1363
1652
  declare const AdCountdown_base: {
1364
1653
  new (): HTMLElement;
1365
1654
  prototype: HTMLElement;
1366
1655
  } & Constructor<StateReceiverElement>;
1367
1656
  /**
1657
+ * `<theoplayer-ad-countdown>` - A control that displays the remaining time of the current ad break.
1658
+ *
1368
1659
  * @group Components
1369
1660
  */
1370
1661
  declare class AdCountdown extends AdCountdown_base {
@@ -1378,9 +1669,16 @@ declare class AdCountdown extends AdCountdown_base {
1378
1669
  private readonly _onAdChange;
1379
1670
  private readonly _update;
1380
1671
  }
1672
+ declare global {
1673
+ interface HTMLElementTagNameMap {
1674
+ 'theoplayer-ad-countdown': AdCountdown;
1675
+ }
1676
+ }
1381
1677
 
1382
1678
  declare const AdClickThroughButton_base: typeof LinkButton & Constructor<StateReceiverElement>;
1383
1679
  /**
1680
+ * `<theoplayer-ad-clickthrough-button>` - A button to open the advertisement's click-through webpage.
1681
+ *
1384
1682
  * @group Components
1385
1683
  */
1386
1684
  declare class AdClickThroughButton extends AdClickThroughButton_base {
@@ -1396,9 +1694,17 @@ declare class AdClickThroughButton extends AdClickThroughButton_base {
1396
1694
  private readonly _updateFromPlayer;
1397
1695
  protected handleClick(): void;
1398
1696
  }
1697
+ declare global {
1698
+ interface HTMLElementTagNameMap {
1699
+ 'theoplayer-ad-clickthrough-button': AdClickThroughButton;
1700
+ }
1701
+ }
1399
1702
 
1400
1703
  declare const AdSkipButton_base: typeof Button & Constructor<StateReceiverElement>;
1401
1704
  /**
1705
+ * `<theoplayer-ad-skip-button>` - A button that skips the current advertisement (if skippable).
1706
+ * If the ad cannot be skipped yet, it shows the remaining time until it can be skipped.
1707
+ *
1402
1708
  * @group Components
1403
1709
  */
1404
1710
  declare class AdSkipButton extends AdSkipButton_base {
@@ -1415,6 +1721,11 @@ declare class AdSkipButton extends AdSkipButton_base {
1415
1721
  private readonly _onAdChange;
1416
1722
  private readonly _update;
1417
1723
  }
1724
+ declare global {
1725
+ interface HTMLElementTagNameMap {
1726
+ 'theoplayer-ad-skip-button': AdSkipButton;
1727
+ }
1728
+ }
1418
1729
 
1419
1730
  declare enum ExtensionSlot {
1420
1731
  TopControlBar = "top-control-bar",
@@ -1422,8 +1733,10 @@ declare enum ExtensionSlot {
1422
1733
  Menu = "menu"
1423
1734
  }
1424
1735
 
1736
+ declare const READY_EVENT: "theoplayerready";
1737
+
1425
1738
  /**
1426
- * A default UI for THEOplayer.
1739
+ * `<theoplayer-default-ui>` - A default UI for THEOplayer.
1427
1740
  *
1428
1741
  * This default UI provides a great player experience out-of-the-box, that works well on all types of devices
1429
1742
  * and for all types of streams. It provides all the common playback controls for playing, seeking,
@@ -1448,8 +1761,10 @@ declare enum ExtensionSlot {
1448
1761
  * @attribute `fluid` - If set, the player automatically adjusts its height to fit the video's aspect ratio.
1449
1762
  * @attribute `muted` - If set, the player starts out as muted. Reflects `ui.player.muted`.
1450
1763
  * @attribute `autoplay` - If set, the player attempts to automatically start playing (if allowed).
1451
- * @attribute `mobile` - Whether to use a mobile-optimized UI layout instead.
1452
- * Can be used in CSS to show/hide certain desktop-specific or mobile-specific UI controls.
1764
+ * @attribute `device-type` - The device type, either "desktop", "mobile" or "tv".
1765
+ * Can be used in CSS to show/hide certain device-specific UI controls.
1766
+ * @attribute `mobile` - Whether the user is on a mobile device. Equivalent to `device-type == "mobile"`.
1767
+ * @attribute `tv` - Whether the user is on a TV device. Equivalent to `device-type == "tv"`.
1453
1768
  * @attribute `stream-type` - The stream type, either "vod", "live" or "dvr".
1454
1769
  * Can be used to show/hide certain UI controls specific for livestreams, such as
1455
1770
  * a {@link LiveButton | `<theoplayer-live-button>`}.
@@ -1460,12 +1775,19 @@ declare enum ExtensionSlot {
1460
1775
  * @attribute `dvr-threshold` - The minimum length (in seconds) of a livestream's sliding window for the stream to be DVR
1461
1776
  * and its stream type to be set to "dvr".
1462
1777
  *
1778
+ * @slot `title` - A slot for the stream's title in the top control bar.
1463
1779
  * @slot `top-control-bar` - A slot for extra UI controls in the top control bar.
1464
1780
  * @slot `bottom-control-bar` - A slot for extra UI controls in the bottom control bar.
1465
1781
  * @slot `menu` - A slot for extra menus (see {@link Menu | `<theoplayer-menu>`}).
1466
1782
  * @group Components
1467
1783
  */
1468
1784
  declare class DefaultUI extends HTMLElement {
1785
+ /**
1786
+ * Fired when the backing player is created, and the {@link DefaultUI.player} property is set.
1787
+ *
1788
+ * @group Events
1789
+ */
1790
+ static READY_EVENT: typeof READY_EVENT;
1469
1791
  static get observedAttributes(): Attribute[];
1470
1792
  private readonly _ui;
1471
1793
  private readonly _titleSlot;
@@ -1500,6 +1822,11 @@ declare class DefaultUI extends HTMLElement {
1500
1822
  */
1501
1823
  get source(): SourceDescription | undefined;
1502
1824
  set source(value: SourceDescription | undefined);
1825
+ /**
1826
+ * Whether to automatically adjusts the player's height to fit the video's aspect ratio.
1827
+ */
1828
+ get fluid(): boolean;
1829
+ set fluid(value: boolean);
1503
1830
  /**
1504
1831
  * Whether the player's audio is muted.
1505
1832
  */
@@ -1534,8 +1861,14 @@ declare class DefaultUI extends HTMLElement {
1534
1861
  disconnectedCallback(): void;
1535
1862
  attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
1536
1863
  private readonly _updateStreamType;
1864
+ private readonly _dispatchReadyEvent;
1537
1865
  private readonly _onTitleSlotChange;
1538
1866
  }
1867
+ declare global {
1868
+ interface HTMLElementTagNameMap {
1869
+ 'theoplayer-default-ui': DefaultUI;
1870
+ }
1871
+ }
1539
1872
 
1540
1873
  /**
1541
1874
  * An extension for the default UI.
@@ -1570,7 +1903,7 @@ type Extension = (ui: DefaultUI) => void;
1570
1903
  declare function registerExtension(extension: Extension): void;
1571
1904
 
1572
1905
  /**
1573
- * The container element for a THEOplayer UI.
1906
+ * `<theoplayer-ui>` - The container element for a THEOplayer UI.
1574
1907
  *
1575
1908
  * This element provides a basic layout structure for a general player UI, and handles the creation and management
1576
1909
  * of a {@link theoplayer!ChromelessPlayer | THEOplayer player instance} for this UI.
@@ -1596,8 +1929,10 @@ declare function registerExtension(extension: Extension): void;
1596
1929
  * @attribute `fluid` - If set, the player automatically adjusts its height to fit the video's aspect ratio.
1597
1930
  * @attribute `muted` - If set, the player starts out as muted. Reflects `ui.player.muted`.
1598
1931
  * @attribute `autoplay` - If set, the player attempts to automatically start playing (if allowed).
1599
- * @attribute `mobile` - Whether to use a mobile-optimized UI layout instead.
1600
- * Can be used in CSS to show/hide certain desktop-specific or mobile-specific UI controls.
1932
+ * @attribute `device-type` - The device type, either "desktop", "mobile" or "tv".
1933
+ * Can be used in CSS to show/hide certain device-specific UI controls.
1934
+ * @attribute `mobile` - Whether the user is on a mobile device. Equivalent to `device-type == "mobile"`.
1935
+ * @attribute `tv` - Whether the user is on a TV device. Equivalent to `device-type == "tv"`.
1601
1936
  * @attribute `stream-type` - The stream type, either "vod", "live" or "dvr".
1602
1937
  * Can be used to show/hide certain UI controls specific for livestreams, such as
1603
1938
  * a {@link LiveButton | `<theoplayer-live-button>`}.
@@ -1612,7 +1947,7 @@ declare function registerExtension(extension: Extension): void;
1612
1947
  * and its stream type to be set to "dvr".
1613
1948
  * @attribute `paused` (readonly) - Whether the player is paused. Reflects `ui.player.paused`.
1614
1949
  * @attribute `ended` (readonly) - Whether the player is ended. Reflects `ui.player.ended`.
1615
- * @attribute `casting` (readonly) - Whether the player is ended. Reflects `ui.player.cast.casting`.
1950
+ * @attribute `casting` (readonly) - Whether the player is casting. Reflects `ui.player.cast.casting`.
1616
1951
  * @attribute `playing-ad` (readonly) - Whether the player is playing a linear ad. Reflects `ui.player.ads.playing`.
1617
1952
  * @attribute `has-error` (readonly) - Whether the player has encountered a fatal error.
1618
1953
  * @attribute `has-first-play` (readonly) - Whether the player has (previously) started playback for this stream.
@@ -1633,6 +1968,12 @@ declare function registerExtension(extension: Extension): void;
1633
1968
  * @group Components
1634
1969
  */
1635
1970
  declare class UIContainer extends HTMLElement {
1971
+ /**
1972
+ * Fired when the backing player is created, and the {@link UIContainer.player} property is set.
1973
+ *
1974
+ * @group Events
1975
+ */
1976
+ static READY_EVENT: typeof READY_EVENT;
1636
1977
  static get observedAttributes(): Attribute[];
1637
1978
  private _configuration;
1638
1979
  private readonly _playerEl;
@@ -1683,6 +2024,11 @@ declare class UIContainer extends HTMLElement {
1683
2024
  get source(): SourceDescription | undefined;
1684
2025
  set source(value: SourceDescription | undefined);
1685
2026
  private _setSource;
2027
+ /**
2028
+ * Whether to automatically adjusts the player's height to fit the video's aspect ratio.
2029
+ */
2030
+ get fluid(): boolean;
2031
+ set fluid(value: boolean);
1686
2032
  /**
1687
2033
  * Whether the player's audio is muted.
1688
2034
  */
@@ -1715,6 +2061,10 @@ declare class UIContainer extends HTMLElement {
1715
2061
  */
1716
2062
  get userIdleTimeout(): number;
1717
2063
  set userIdleTimeout(value: number);
2064
+ /**
2065
+ * The device type, either "desktop", "mobile" or "tv".
2066
+ */
2067
+ get deviceType(): DeviceType;
1718
2068
  /**
1719
2069
  * The stream type, either "vod", "live" or "dvr".
1720
2070
  *
@@ -1769,6 +2119,7 @@ declare class UIContainer extends HTMLElement {
1769
2119
  private readonly setUserIdle_;
1770
2120
  private readonly scheduleUserIdle_;
1771
2121
  private isPlayerOrMedia_;
2122
+ private readonly _onTvKeyDown;
1772
2123
  private readonly _onKeyUp;
1773
2124
  private readonly _onPointerUp;
1774
2125
  private readonly _onClickAfterPointerUp;
@@ -1778,6 +2129,11 @@ declare class UIContainer extends HTMLElement {
1778
2129
  private readonly _updateTextTrackMargins;
1779
2130
  private readonly _onPreviewTimeChange;
1780
2131
  }
2132
+ declare global {
2133
+ interface HTMLElementTagNameMap {
2134
+ 'theoplayer-ui': UIContainer;
2135
+ }
2136
+ }
1781
2137
 
1782
- export { ActiveQualityDisplay, AdClickThroughButton, AdCountdown, AdDisplay, AdSkipButton, AirPlayButton, Attribute, Button, ButtonOptions, CastButton, ChromecastButton, ChromecastDisplay, CloseMenuButton, ColorStops, Constructor, ControlBar, DefaultUI, DurationDisplay, ErrorDisplay, Extension, ExtensionSlot, FullscreenButton, GestureReceiver, LanguageMenu, LanguageMenuButton, LinkButton, LiveButton, LoadingIndicator, MediaTrackRadioButton, Menu, MenuButton, MenuGroup, MenuGroupOptions, MenuOptions, MuteButton, PlayButton, PlaybackRateDisplay, PlaybackRateMenu, PlaybackRateMenuButton, PlaybackRateRadioGroup, PreviewThumbnail, PreviewTimeDisplay, QualityRadioButton, QualityRadioGroup, RadioButton, RadioGroup, Range, RangeOptions, SeekButton, SettingsMenu, SettingsMenuButton, StateReceiverElement, StateReceiverMixin, StateReceiverPropertyMap, StreamType, TextTrackOffRadioButton, TextTrackRadioButton, TextTrackStyleDisplay, TextTrackStyleMap, TextTrackStyleMenu, TextTrackStyleOption, TextTrackStyleRadioGroup, TextTrackStyleResetButton, TimeDisplay, TimeRange, TrackRadioGroup, TrackType, UIContainer, VolumeLevel, VolumeRange, buttonTemplate, linkButtonTemplate, menuGroupTemplate, menuTemplate, rangeTemplate, registerExtension };
2138
+ export { ActiveQualityDisplay, AdClickThroughButton, AdCountdown, AdDisplay, AdSkipButton, AirPlayButton, Attribute, Button, ButtonOptions, CastButton, ChromecastButton, ChromecastDisplay, CloseMenuButton, ColorStops, Constructor, ControlBar, DefaultUI, DeviceType, DurationDisplay, ErrorDisplay, Extension, ExtensionSlot, FullscreenButton, GestureReceiver, LanguageMenu, LanguageMenuButton, LinkButton, LiveButton, LoadingIndicator, MediaTrackRadioButton, Menu, MenuButton, MenuGroup, MenuGroupOptions, MenuOptions, MuteButton, PlayButton, PlaybackRateDisplay, PlaybackRateMenu, PlaybackRateMenuButton, PlaybackRateRadioGroup, PreviewThumbnail, PreviewTimeDisplay, QualityRadioButton, QualityRadioGroup, RadioButton, RadioGroup, Range, RangeOptions, SeekButton, SettingsMenu, SettingsMenuButton, StateReceiverElement, StateReceiverMixin, StateReceiverPropertyMap, StreamType, TextTrackOffRadioButton, TextTrackRadioButton, TextTrackStyleDisplay, TextTrackStyleMap, TextTrackStyleMenu, TextTrackStyleOption, TextTrackStyleRadioGroup, TextTrackStyleResetButton, TimeDisplay, TimeRange, TrackRadioGroup, TrackType, UIContainer, VolumeLevel, VolumeRange, buttonTemplate, linkButtonTemplate, menuGroupTemplate, menuTemplate, rangeTemplate, registerExtension };
1783
2139
  export as namespace THEOplayerUI;