@theoplayer/web-ui 1.0.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.
@@ -0,0 +1,1752 @@
1
+ /*!
2
+ * THEOplayer Web UI v1.0.0
3
+ * License: MIT
4
+ */
5
+ import { ChromelessPlayer, VideoQuality, THEOplayerError, MediaTrack, TextTrack, TextTracksList, EdgeStyle, VendorCast, CastState, PlayerConfiguration, SourceDescription } from 'theoplayer';
6
+
7
+ /**
8
+ * A horizontal control bar that can contain other controls.
9
+ *
10
+ * @group Components
11
+ */
12
+ declare class ControlBar extends HTMLElement {
13
+ constructor();
14
+ connectedCallback(): void;
15
+ }
16
+
17
+ declare enum Attribute {
18
+ CONFIGURATION = "configuration",
19
+ SOURCE = "source",
20
+ AUTOPLAY = "autoplay",
21
+ MUTED = "muted",
22
+ FULLSCREEN = "fullscreen",
23
+ FLUID = "fluid",
24
+ MOBILE = "mobile",
25
+ MOBILE_ONLY = "mobile-only",
26
+ MOBILE_HIDDEN = "mobile-hidden",
27
+ USER_IDLE = "user-idle",
28
+ USER_IDLE_TIMEOUT = "user-idle-timeout",
29
+ NO_AUTO_HIDE = "no-auto-hide",
30
+ DISABLED = "disabled",
31
+ HIDDEN = "hidden",
32
+ PAUSED = "paused",
33
+ ENDED = "ended",
34
+ VOLUME_LEVEL = "volume-level",
35
+ CASTING = "casting",
36
+ LOADING = "loading",
37
+ STREAM_TYPE = "stream-type",
38
+ LIVE = "live",
39
+ LIVE_ONLY = "live-only",
40
+ LIVE_HIDDEN = "live-hidden",
41
+ LIVE_THRESHOLD = "live-threshold",
42
+ DVR_THRESHOLD = "dvr-threshold",
43
+ REMAINING = "remaining",
44
+ REMAINING_WHEN_LIVE = "remaining-when-live",
45
+ SHOW_DURATION = "show-duration",
46
+ SEEK_OFFSET = "seek-offset",
47
+ MENU = "menu",
48
+ MENU_OPENED = "menu-opened",
49
+ MENU_CLOSE_ON_INPUT = "menu-close-on-input",
50
+ ARIA_CHECKED = "aria-checked",
51
+ HAS_AUDIO = "has-audio",
52
+ HAS_SUBTITLES = "has-subtitles",
53
+ HAS_ERROR = "has-error",
54
+ HAS_FIRST_PLAY = "has-first-play",
55
+ HAS_TITLE = "has-title",
56
+ CAST_STATE = "cast-state",
57
+ TRACK_TYPE = "track-type",
58
+ SHOW_OFF = "show-off",
59
+ PLAYING_AD = "playing-ad",
60
+ CLICKTHROUGH = "clickthrough",
61
+ PROPERTY = "property",
62
+ VALUE = "value"
63
+ }
64
+
65
+ interface ButtonOptions {
66
+ template: HTMLTemplateElement;
67
+ }
68
+ declare function buttonTemplate(button: string, extraCss?: string): string;
69
+ /**
70
+ * A basic button.
71
+ *
72
+ * @attribute `disabled` - Whether the button is disabled. When disabled, the button cannot be clicked.
73
+ * @group Components
74
+ */
75
+ declare class Button extends HTMLElement {
76
+ static get observedAttributes(): Attribute[];
77
+ /**
78
+ * Creates a basic button.
79
+ *
80
+ * By default, the button renders the contents of its direct children (i.e. it has a single unnamed `<slot>`).
81
+ * Subclasses can override this by passing a different {@link ButtonOptions.template} in the options,
82
+ * using {@link buttonTemplate} to correctly style the custom template.
83
+ *
84
+ * @param options - The options for this button.
85
+ */
86
+ constructor(options?: ButtonOptions);
87
+ protected _upgradeProperty(prop: keyof this): void;
88
+ connectedCallback(): void;
89
+ disconnectedCallback(): void;
90
+ /**
91
+ * Whether the button is disabled.
92
+ *
93
+ * When disabled, the button cannot be clicked.
94
+ */
95
+ get disabled(): boolean;
96
+ set disabled(disabled: boolean);
97
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
98
+ private readonly _onKeyDown;
99
+ private readonly _onClick;
100
+ /**
101
+ * Handle a button click.
102
+ *
103
+ * By default, this does nothing. Subclasses can override this method to add behavior to the button.
104
+ */
105
+ protected handleClick(): void;
106
+ }
107
+
108
+ declare function linkButtonTemplate(button: string, extraCss?: string): string;
109
+ /**
110
+ * A {@link Button | button} that opens a hyperlink.
111
+ *
112
+ * @attribute `disabled` - Whether the button is disabled. When disabled, the button cannot be clicked.
113
+ * @group Components
114
+ */
115
+ declare class LinkButton extends HTMLElement {
116
+ private readonly _linkEl;
117
+ static get observedAttributes(): Attribute[];
118
+ constructor(options?: ButtonOptions);
119
+ protected _upgradeProperty(prop: keyof this): void;
120
+ connectedCallback(): void;
121
+ disconnectedCallback(): void;
122
+ /**
123
+ * Whether the button is disabled.
124
+ *
125
+ * When disabled, the button cannot be clicked.
126
+ */
127
+ get disabled(): boolean;
128
+ set disabled(disabled: boolean);
129
+ protected setLink(href: string, target: string): void;
130
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
131
+ private readonly _onKeyDown;
132
+ private readonly _onClick;
133
+ protected handleClick(): void;
134
+ }
135
+
136
+ type Constructor<T> = abstract new (...args: any[]) => T;
137
+
138
+ type StreamType = 'vod' | 'live' | 'dvr';
139
+
140
+ /** @internal */
141
+ declare const StateReceiverProps: "theoplayerUiObservedProperties";
142
+ interface StateReceiverPropertyMap {
143
+ player: ChromelessPlayer | undefined;
144
+ fullscreen: boolean;
145
+ streamType: StreamType;
146
+ playbackRate: number;
147
+ activeVideoQuality: VideoQuality | undefined;
148
+ targetVideoQualities: VideoQuality[] | undefined;
149
+ error: THEOplayerError | undefined;
150
+ previewTime: number;
151
+ }
152
+ /**
153
+ * A custom element that automatically receives selected state updates
154
+ * from an ancestor {@link UIContainer | `<theoplayer-ui>`} element.
155
+ *
156
+ * Do not implement this interface directly, instead use {@link StateReceiverMixin}.
157
+ *
158
+ * @see {@link StateReceiverMixin}
159
+ */
160
+ interface StateReceiverElement extends Partial<StateReceiverPropertyMap>, Element {
161
+ /**
162
+ * The names of the properties this element will receive.
163
+ */
164
+ readonly [StateReceiverProps]: Array<keyof StateReceiverPropertyMap>;
165
+ }
166
+ /**
167
+ * A [mixin class](https://www.typescriptlang.org/docs/handbook/mixins.html) to apply on the superclass of a custom element,
168
+ * such that it will automatically receive selected state updates from an ancestor {@link UIContainer | `<theoplayer-ui>`} element.
169
+ *
170
+ * For each property name in `props`, the custom element *MUST* implement a corresponding property with a setter.
171
+ * For example, if `props` equals `["player", "fullscreen"]`, then the element must have writable `player` and `fullscreen`
172
+ * properties.
173
+ *
174
+ * @param base - The superclass for the new element class.
175
+ * @param props - The names of the properties this element will receive.
176
+ * @returns A class constructor that extends `base` and implements {@link StateReceiverElement}.
177
+ * @see {@link StateReceiverElement}
178
+ */
179
+ declare function StateReceiverMixin<T extends Constructor<Element>>(base: T, props: Array<keyof StateReceiverPropertyMap>): T & Constructor<StateReceiverElement>;
180
+
181
+ declare const PlayButton_base: typeof Button & Constructor<StateReceiverElement>;
182
+ /**
183
+ * A button that toggles whether the player is playing or paused.
184
+ *
185
+ * @attribute `paused` (readonly) - Whether the player is paused. Reflects `ui.player.paused`.
186
+ * @attribute `ended` (readonly) - Whether the player is ended. Reflects `ui.player.ended`.
187
+ * @group Components
188
+ */
189
+ declare class PlayButton extends PlayButton_base {
190
+ static get observedAttributes(): Attribute[];
191
+ private _player;
192
+ constructor();
193
+ connectedCallback(): void;
194
+ get paused(): boolean;
195
+ set paused(paused: boolean);
196
+ get ended(): boolean;
197
+ set ended(ended: boolean);
198
+ get player(): ChromelessPlayer | undefined;
199
+ set player(player: ChromelessPlayer | undefined);
200
+ private readonly _onPlay;
201
+ private readonly _onPause;
202
+ private readonly _updateFromPlayer;
203
+ private _updateEnded;
204
+ protected handleClick(): void;
205
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
206
+ }
207
+
208
+ type VolumeLevel = 'off' | 'low' | 'high';
209
+ declare const MuteButton_base: typeof Button & Constructor<StateReceiverElement>;
210
+ /**
211
+ * A button that toggles whether audio is muted or not.
212
+ *
213
+ * @attribute `volume-level` (readonly) - The volume level of the player.
214
+ * Can be "off" (muted), "low" (volume < 50%) or "high" (volume >= 50%).
215
+ * @group Components
216
+ */
217
+ declare class MuteButton extends MuteButton_base {
218
+ static get observedAttributes(): Attribute[];
219
+ private _player;
220
+ constructor();
221
+ connectedCallback(): void;
222
+ /**
223
+ * The volume level of the player.
224
+ */
225
+ get volumeLevel(): VolumeLevel;
226
+ get player(): ChromelessPlayer | undefined;
227
+ set player(player: ChromelessPlayer | undefined);
228
+ private readonly _updateFromPlayer;
229
+ protected handleClick(): void;
230
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
231
+ }
232
+
233
+ declare const SeekButton_base: typeof Button & Constructor<StateReceiverElement>;
234
+ /**
235
+ * A button that seeks forward or backward by a fixed offset.
236
+ *
237
+ * @attribute `seek-offset` - The offset (in seconds) by which to seek forward (if positive) or backward (if negative).
238
+ * @group Components
239
+ */
240
+ declare class SeekButton extends SeekButton_base {
241
+ static get observedAttributes(): Attribute[];
242
+ private _player;
243
+ private _offsetEl;
244
+ constructor();
245
+ /**
246
+ * The offset (in seconds) by which to seek forward (if positive) or backward (if negative).
247
+ */
248
+ get seekOffset(): number;
249
+ set seekOffset(value: number);
250
+ get player(): ChromelessPlayer | undefined;
251
+ set player(player: ChromelessPlayer | undefined);
252
+ protected handleClick(): void;
253
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
254
+ }
255
+
256
+ declare const TimeDisplay_base: {
257
+ new (): HTMLElement;
258
+ prototype: HTMLElement;
259
+ } & Constructor<StateReceiverElement>;
260
+ /**
261
+ * A control that displays the current time of the stream.
262
+ *
263
+ * @attribute `show-duration` - If set, also shows the duration of the stream.
264
+ * @attribute `remaining` - If set, shows the remaining time of the stream. Not compatible with `show-duration`.
265
+ * @attribute `remaining-when-live` - If set, and the stream is a livestream, shows the remaining time
266
+ * (until the live point) of the stream.
267
+ * @group Components
268
+ */
269
+ declare class TimeDisplay extends TimeDisplay_base {
270
+ private readonly _spanEl;
271
+ private _player;
272
+ static get observedAttributes(): Attribute[];
273
+ constructor();
274
+ protected _upgradeProperty(prop: keyof this): void;
275
+ connectedCallback(): void;
276
+ get player(): ChromelessPlayer | undefined;
277
+ set player(player: ChromelessPlayer | undefined);
278
+ get streamType(): StreamType;
279
+ set streamType(streamType: StreamType);
280
+ private readonly _updateFromPlayer;
281
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
282
+ }
283
+
284
+ declare const DurationDisplay_base: {
285
+ new (): HTMLElement;
286
+ prototype: HTMLElement;
287
+ } & Constructor<StateReceiverElement>;
288
+ /**
289
+ * A control that displays the duration of the stream.
290
+ *
291
+ * @group Components
292
+ */
293
+ declare class DurationDisplay extends DurationDisplay_base {
294
+ private readonly _spanEl;
295
+ private _player;
296
+ constructor();
297
+ protected _upgradeProperty(prop: keyof this): void;
298
+ connectedCallback(): void;
299
+ get player(): ChromelessPlayer | undefined;
300
+ set player(player: ChromelessPlayer | undefined);
301
+ private readonly _updateFromPlayer;
302
+ }
303
+
304
+ /**
305
+ * A button that can be checked.
306
+ *
307
+ * When part of a {@link RadioGroup}, at most one button in the group can be checked.
308
+ *
309
+ * @group Components
310
+ */
311
+ declare class RadioButton extends Button {
312
+ static get observedAttributes(): Attribute[];
313
+ private _value;
314
+ constructor(options?: ButtonOptions);
315
+ connectedCallback(): void;
316
+ /**
317
+ * Whether this radio button is checked.
318
+ */
319
+ get checked(): boolean;
320
+ set checked(checked: boolean);
321
+ /**
322
+ * The value associated with this radio button.
323
+ */
324
+ get value(): any;
325
+ set value(value: any);
326
+ protected handleClick(): void;
327
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
328
+ }
329
+
330
+ /**
331
+ * A group of {@link RadioButton}s. At most one button in the group can be checked.
332
+ *
333
+ * ## Behavior
334
+ * This radio group implements the [roving tabindex](https://www.w3.org/WAI/ARIA/apg/example-index/radio/radio.html) pattern.
335
+ * - `Tab` moves focus in or out of the radio group.
336
+ * - `Up`/`Left` arrow moves focus to the previous radio button.
337
+ * - `Down`/`Right` arrow moves focus to the next radio button.
338
+ * - `Home` moves focus to the first radio button.
339
+ * - `End` moves focus to the last radio button.
340
+ *
341
+ * @group Components
342
+ */
343
+ declare class RadioGroup extends HTMLElement {
344
+ private _slot;
345
+ private _radioButtons;
346
+ constructor();
347
+ connectedCallback(): void;
348
+ disconnectedCallback(): void;
349
+ private readonly _onSlotChange;
350
+ private readonly _onKeyDown;
351
+ get focusedRadioButton(): RadioButton | null;
352
+ get checkedRadioButton(): RadioButton | null;
353
+ get firstRadioButton(): RadioButton | null;
354
+ get lastRadioButton(): RadioButton | null;
355
+ allRadioButtons(): readonly RadioButton[];
356
+ private _prevRadioButton;
357
+ private _nextRadioButton;
358
+ private _focusPrevButton;
359
+ private _focusNextButton;
360
+ setFocusedRadioButton(button: RadioButton | null): void;
361
+ private _unfocusAll;
362
+ setCheckedRadioButton(checkedButton: RadioButton | null): void;
363
+ private readonly _onButtonChange;
364
+ }
365
+
366
+ interface MenuOptions {
367
+ template?: HTMLTemplateElement;
368
+ }
369
+ declare function menuTemplate(heading: string, content: string, extraCss?: string): string;
370
+ /**
371
+ * A menu that can be opened on top of the player.
372
+ *
373
+ * The menu has a heading at the top, with a {@link CloseMenuButton | close button} and a heading text.
374
+ *
375
+ * @attribute `menu-close-on-input` - Whether to automatically close the menu whenever one of its controls
376
+ * receives an input (e.g. when a radio button is clicked).
377
+ * @attribute `menu-opened` (readonly) - Whether the menu is currently open.
378
+ * @group Components
379
+ */
380
+ declare class Menu extends HTMLElement {
381
+ static get observedAttributes(): Attribute[];
382
+ private readonly _contentEl;
383
+ /**
384
+ * Creates a menu.
385
+ *
386
+ * By default, the button has an unnamed `<slot>` for its contents, and a named `"heading"` `<slot>` for its heading text.
387
+ * Subclasses can override this by passing a different {@link MenuOptions.template} in the options,
388
+ * using {@link menuTemplate} to correctly style the custom template.
389
+ *
390
+ * @param options - The options for this menu.
391
+ */
392
+ constructor(options?: MenuOptions);
393
+ protected _upgradeProperty(prop: keyof this): void;
394
+ connectedCallback(): void;
395
+ disconnectedCallback(): void;
396
+ /**
397
+ * Open the menu.
398
+ */
399
+ openMenu(): void;
400
+ /**
401
+ * Close the menu.
402
+ */
403
+ closeMenu(): void;
404
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
405
+ private readonly _onContentInput;
406
+ }
407
+
408
+ interface MenuGroupOptions {
409
+ template?: HTMLTemplateElement;
410
+ }
411
+ declare function menuGroupTemplate(content: string, extraCss?: string): string;
412
+ /**
413
+ * A group of {@link Menu}s.
414
+ *
415
+ * This can contain multiple other menus, which can be opened with {@link MenuGroup.openMenu}.
416
+ * When a {@link MenuButton} in one menu opens another menu in this group, it is opened as a "submenu".
417
+ * When a submenu is closed, the menu that originally opened it is shown again.
418
+ *
419
+ * @attribute `menu-opened` (readonly) - Whether any menu in the group is currently open.
420
+ * @group Components
421
+ */
422
+ declare class MenuGroup extends HTMLElement {
423
+ static get observedAttributes(): Attribute[];
424
+ private readonly _menuSlot;
425
+ private _menus;
426
+ private readonly _openMenuStack;
427
+ constructor(options?: MenuGroupOptions);
428
+ protected _upgradeProperty(prop: keyof this): void;
429
+ connectedCallback(): void;
430
+ disconnectedCallback(): void;
431
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
432
+ /**
433
+ * Get the menu with the given ID.
434
+ *
435
+ * @param [menuId] - The ID of the menu. If unset, returns this menu group.
436
+ */
437
+ getMenuById(menuId?: string): Menu | MenuGroup | undefined;
438
+ /**
439
+ * Open the menu with the given ID.
440
+ *
441
+ * If no ID is given, the first menu in the group is opened.
442
+ *
443
+ * If there's already an open menu, then the new menu is opened as a "submenu".
444
+ * When it closed, the previous menu is opened.
445
+ *
446
+ * @param [menuId] - The ID of the menu to open.
447
+ * @param [opener] - The control that opened the menu. When the menu is closed, focus is moved back to this control.
448
+ * @returns True if the given menu was found.
449
+ */
450
+ openMenu(menuId?: string, opener?: HTMLElement): boolean;
451
+ /**
452
+ * Closes the menu with the given ID.
453
+ *
454
+ * If no ID is given, then the entire menu group is closed.
455
+ *
456
+ * If the given menu has opened one or more submenus, then those are also closed.
457
+ * If the last open menu is closed, then the menu group also becomes closed.
458
+ *
459
+ * @param [menuId] - The ID of the menu to close.
460
+ * @returns True if the given menu was found and closed.
461
+ */
462
+ closeMenu(menuId?: string): boolean;
463
+ private closeMenusFromIndex_;
464
+ /**
465
+ * Whether this menu group has a currently open menu.
466
+ */
467
+ hasCurrentMenu(): boolean;
468
+ private getCurrentMenu_;
469
+ /**
470
+ * Close the current menu.
471
+ */
472
+ closeCurrentMenu(): boolean;
473
+ /**
474
+ * Whether the menu with the given ID is currently open.
475
+ *
476
+ * @param [menuId] - The ID of the menu.
477
+ */
478
+ isMenuOpen(menuId?: string): boolean;
479
+ /**
480
+ * Update the list of menus whenever the `<slot>` contents change.
481
+ * Note: the `slotchange` event bubbles up, so we don't have to manually attach
482
+ * this listener to each nested `<slot>`.
483
+ */
484
+ private readonly _onMenuListChange;
485
+ private readonly _onToggleMenu;
486
+ private readonly _onCloseMenu;
487
+ private readonly _onMenuChange;
488
+ private readonly _onKeyDown;
489
+ }
490
+
491
+ /**
492
+ * A menu button that opens a {@link Menu}.
493
+ *
494
+ * @attribute `menu` - The ID of the menu to open.
495
+ * @group Components
496
+ */
497
+ declare class MenuButton extends Button {
498
+ static get observedAttributes(): Attribute[];
499
+ constructor(options?: Partial<ButtonOptions>);
500
+ connectedCallback(): void;
501
+ /**
502
+ * The ID of the menu to open.
503
+ */
504
+ get menu(): string | null;
505
+ set menu(menuId: string | null);
506
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
507
+ protected handleClick(): void;
508
+ }
509
+
510
+ /**
511
+ * A button that closes its parent menu.
512
+ *
513
+ * This button must be placed inside a {@link Menu | `<theoplayer-menu>`}.
514
+ *
515
+ * @group Components
516
+ */
517
+ declare class CloseMenuButton extends Button {
518
+ static get observedAttributes(): Attribute[];
519
+ constructor();
520
+ protected handleClick(): void;
521
+ }
522
+
523
+ /**
524
+ * A radio button that shows the label of a given media track, and switches to that track when clicked.
525
+ * @group Components
526
+ */
527
+ declare class MediaTrackRadioButton extends RadioButton {
528
+ private _slotEl;
529
+ private _track;
530
+ constructor();
531
+ /**
532
+ * The media track that is controlled by this radio button.
533
+ */
534
+ get track(): MediaTrack | undefined;
535
+ set track(track: MediaTrack | undefined);
536
+ private _updateFromTrack;
537
+ private _updateTrack;
538
+ private readonly _onTrackChange;
539
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
540
+ }
541
+
542
+ type TrackType = 'audio' | 'video' | 'subtitles';
543
+ declare const TrackRadioGroup_base: {
544
+ new (): HTMLElement;
545
+ prototype: HTMLElement;
546
+ } & Constructor<StateReceiverElement>;
547
+ /**
548
+ * A radio group that shows a list of media or text tracks, from which the user can choose an active track.
549
+ *
550
+ * @attribute `track-type` - The track type of the available tracks. Can be "audio", "video" or "subtitles".
551
+ * @attribute `show-off` - If set, shows an "off" button to disable all tracks.
552
+ * Can only be used with the "subtitles" track type.
553
+ * @group Components
554
+ */
555
+ declare class TrackRadioGroup extends TrackRadioGroup_base {
556
+ static get observedAttributes(): Attribute[];
557
+ private readonly _radioGroup;
558
+ private _offButton;
559
+ private _player;
560
+ private _tracksList;
561
+ constructor();
562
+ protected _upgradeProperty(prop: keyof this): void;
563
+ connectedCallback(): void;
564
+ disconnectedCallback(): void;
565
+ /**
566
+ * The track type of the available tracks.
567
+ */
568
+ get trackType(): TrackType;
569
+ set trackType(value: TrackType);
570
+ /**
571
+ * If set, shows an "off" button to disable all tracks.
572
+ *
573
+ * Can only be used with the `"subtitles"` track type.
574
+ */
575
+ get showOffButton(): boolean;
576
+ set showOffButton(value: boolean);
577
+ get player(): ChromelessPlayer | undefined;
578
+ set player(player: ChromelessPlayer | undefined);
579
+ private _getTracksList;
580
+ private _updateTracksList;
581
+ private _getTracks;
582
+ private readonly _updateTracks;
583
+ private _createTrackButton;
584
+ private _updateOffButton;
585
+ private readonly _onChange;
586
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
587
+ }
588
+
589
+ /**
590
+ * A radio button that shows the label of a given text track, and switches to that track when clicked.
591
+ *
592
+ * @group Components
593
+ */
594
+ declare class TextTrackRadioButton extends RadioButton {
595
+ private _slotEl;
596
+ private _track;
597
+ constructor();
598
+ /**
599
+ * The text track that is controlled by this radio button.
600
+ */
601
+ get track(): TextTrack | undefined;
602
+ set track(track: TextTrack | undefined);
603
+ private _updateFromTrack;
604
+ private _updateTrack;
605
+ private readonly _onTrackChange;
606
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
607
+ }
608
+
609
+ /**
610
+ * A radio button that disables the active subtitle track when clicked.
611
+ *
612
+ * @group Components
613
+ */
614
+ declare class TextTrackOffRadioButton extends RadioButton {
615
+ private _trackList;
616
+ constructor();
617
+ get trackList(): TextTracksList | undefined;
618
+ set trackList(trackList: TextTracksList | undefined);
619
+ private _updateFromTrackList;
620
+ private _updateTrackList;
621
+ private readonly _onTrackChange;
622
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
623
+ }
624
+
625
+ interface TextTrackStyleMap {
626
+ fontFamily: string | undefined;
627
+ fontColor: string | undefined;
628
+ fontOpacity: number | undefined;
629
+ fontSize: string | undefined;
630
+ backgroundColor: string | undefined;
631
+ backgroundOpacity: number | undefined;
632
+ windowColor: string | undefined;
633
+ windowOpacity: number | undefined;
634
+ edgeStyle: EdgeStyle | undefined;
635
+ }
636
+ type TextTrackStyleOption = keyof TextTrackStyleMap;
637
+ declare const TextTrackStyleRadioGroup_base: {
638
+ new (): HTMLElement;
639
+ prototype: HTMLElement;
640
+ } & Constructor<StateReceiverElement>;
641
+ /**
642
+ * A radio group that shows a list of values for a text track style option, from which the user can choose a desired value.
643
+ *
644
+ * @attribute `property` - The property name of the text track style option. One of {@link TextTrackStyleOption}.
645
+ * @slot {@link RadioButton} - The possible options for the text track style option.
646
+ * For example: `<theoplayer-radio-button value="#ff0000">Red</theoplayer-radio-button>`
647
+ * @group Components
648
+ */
649
+ declare class TextTrackStyleRadioGroup extends TextTrackStyleRadioGroup_base {
650
+ static get observedAttributes(): Attribute[];
651
+ private readonly _radioGroup;
652
+ private readonly _optionsSlot;
653
+ private _player;
654
+ private _value;
655
+ constructor();
656
+ connectedCallback(): void;
657
+ disconnectedCallback(): void;
658
+ protected _upgradeProperty(prop: keyof this): void;
659
+ /**
660
+ * The property name of the text track style option.
661
+ */
662
+ get property(): TextTrackStyleOption;
663
+ set property(value: TextTrackStyleOption);
664
+ /**
665
+ * The currently chosen value for the text track style option.
666
+ */
667
+ get value(): string;
668
+ set value(value: string);
669
+ get player(): ChromelessPlayer | undefined;
670
+ set player(player: ChromelessPlayer | undefined);
671
+ private readonly _updateChecked;
672
+ private readonly _onChange;
673
+ private readonly _updateFromPlayer;
674
+ private _updateToPlayer;
675
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
676
+ }
677
+
678
+ declare const TextTrackStyleDisplay_base: {
679
+ new (): HTMLElement;
680
+ prototype: HTMLElement;
681
+ } & Constructor<StateReceiverElement>;
682
+ /**
683
+ * Displays the value of a single text track style option in a human-readable format.
684
+ *
685
+ * @attribute `property` - The property name of the text track style option. One of {@link TextTrackStyleOption}.
686
+ * @group Components
687
+ */
688
+ declare class TextTrackStyleDisplay extends TextTrackStyleDisplay_base {
689
+ static get observedAttributes(): Attribute[];
690
+ private readonly _spanEl;
691
+ private _player;
692
+ constructor();
693
+ connectedCallback(): void;
694
+ protected _upgradeProperty(prop: keyof this): void;
695
+ /**
696
+ * The property name of the text track style option.
697
+ */
698
+ get property(): TextTrackStyleOption;
699
+ set property(value: TextTrackStyleOption);
700
+ get player(): ChromelessPlayer | undefined;
701
+ set player(player: ChromelessPlayer | undefined);
702
+ private readonly _updateFromPlayer;
703
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
704
+ }
705
+
706
+ /**
707
+ * A menu to change the {@link theoplayer!TextTrackStyle | text track style} of the player.
708
+ *
709
+ * @group Components
710
+ */
711
+ declare class TextTrackStyleMenu extends MenuGroup {
712
+ constructor();
713
+ }
714
+
715
+ declare const LanguageMenu_base: typeof MenuGroup & Constructor<StateReceiverElement>;
716
+ /**
717
+ * A menu to change the spoken language and subtitles of the stream.
718
+ *
719
+ * @group Components
720
+ */
721
+ declare class LanguageMenu extends LanguageMenu_base {
722
+ private _player;
723
+ static get observedAttributes(): Attribute[];
724
+ constructor();
725
+ get player(): ChromelessPlayer | undefined;
726
+ set player(player: ChromelessPlayer | undefined);
727
+ private readonly _updateAudioTracks;
728
+ private readonly _updateTextTracks;
729
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
730
+ }
731
+
732
+ declare const LanguageMenuButton_base: typeof MenuButton & Constructor<StateReceiverElement>;
733
+ /**
734
+ * A menu button that opens a {@link LanguageMenu}.
735
+ *
736
+ * When there are no alternative audio languages or subtitles, this button automatically hides itself.
737
+ *
738
+ * @attribute `menu` - The ID of the language menu.
739
+ * @group Components
740
+ */
741
+ declare class LanguageMenuButton extends LanguageMenuButton_base {
742
+ private _player;
743
+ constructor();
744
+ get player(): ChromelessPlayer | undefined;
745
+ set player(player: ChromelessPlayer | undefined);
746
+ private readonly _updateTracks;
747
+ }
748
+
749
+ declare const PlaybackRateRadioGroup_base: {
750
+ new (): HTMLElement;
751
+ prototype: HTMLElement;
752
+ } & Constructor<StateReceiverElement>;
753
+ /**
754
+ * A radio group that shows a list of playback rates, from which the user can choose a desired playback rate.
755
+ *
756
+ * @slot {@link RadioButton} - The possible options for the playback rate.
757
+ * The value of each radio button must be a valid number.
758
+ * For example: `<theoplayer-radio-button value="2">2x</theoplayer-radio-button>`
759
+ * @group Components
760
+ */
761
+ declare class PlaybackRateRadioGroup extends PlaybackRateRadioGroup_base {
762
+ private readonly _radioGroup;
763
+ private readonly _optionsSlot;
764
+ private _player;
765
+ private _value;
766
+ constructor();
767
+ protected _upgradeProperty(prop: keyof this): void;
768
+ connectedCallback(): void;
769
+ disconnectedCallback(): void;
770
+ /**
771
+ * The currently chosen playback rate.
772
+ */
773
+ get value(): number;
774
+ set value(value: number);
775
+ get player(): ChromelessPlayer | undefined;
776
+ set player(player: ChromelessPlayer | undefined);
777
+ private readonly _updateChecked;
778
+ private readonly _onChange;
779
+ private readonly _updateFromPlayer;
780
+ }
781
+
782
+ /**
783
+ * A menu button that opens a [playback rate menu]{@link PlaybackRateMenu}.
784
+ *
785
+ * @attribute menu - The ID of the playback rate menu.
786
+ * @group Components
787
+ */
788
+ declare class PlaybackRateMenuButton extends MenuButton {
789
+ constructor();
790
+ }
791
+
792
+ /**
793
+ * A menu to change the playback rate of the player.
794
+ *
795
+ * @group Components
796
+ */
797
+ declare class PlaybackRateMenu extends Menu {
798
+ constructor();
799
+ }
800
+
801
+ declare const PlaybackRateDisplay_base: {
802
+ new (): HTMLElement;
803
+ prototype: HTMLElement;
804
+ } & Constructor<StateReceiverElement>;
805
+ /**
806
+ * @group Components
807
+ */
808
+ declare class PlaybackRateDisplay extends PlaybackRateDisplay_base {
809
+ private readonly _spanEl;
810
+ private _playbackRate;
811
+ constructor();
812
+ connectedCallback(): void;
813
+ protected _upgradeProperty(prop: keyof this): void;
814
+ get playbackRate(): number;
815
+ set playbackRate(value: number);
816
+ }
817
+
818
+ declare const ActiveQualityDisplay_base: {
819
+ new (): HTMLElement;
820
+ prototype: HTMLElement;
821
+ } & Constructor<StateReceiverElement>;
822
+ /**
823
+ * @group Components
824
+ */
825
+ declare class ActiveQualityDisplay extends ActiveQualityDisplay_base {
826
+ private readonly _spanEl;
827
+ private _activeVideoQuality;
828
+ private _targetVideoQualities;
829
+ constructor();
830
+ connectedCallback(): void;
831
+ protected _upgradeProperty(prop: keyof this): void;
832
+ get activeVideoQuality(): VideoQuality | undefined;
833
+ set activeVideoQuality(quality: VideoQuality | undefined);
834
+ get targetVideoQualities(): VideoQuality[] | undefined;
835
+ set targetVideoQualities(qualities: VideoQuality[] | undefined);
836
+ private update_;
837
+ }
838
+
839
+ /**
840
+ * A radio button that shows the label of a given video quality, and switches the video track's
841
+ * {@link theoplayer!MediaTrack.targetQuality | target quality} to that quality when clicked.
842
+ *
843
+ * @group Components
844
+ */
845
+ declare class QualityRadioButton extends RadioButton {
846
+ private _slotEl;
847
+ private _track;
848
+ private _quality;
849
+ constructor();
850
+ /**
851
+ * The video track containing the quality being controlled.
852
+ */
853
+ get track(): MediaTrack | undefined;
854
+ set track(track: MediaTrack | undefined);
855
+ /**
856
+ * The video quality being controlled.
857
+ */
858
+ get quality(): VideoQuality | undefined;
859
+ set quality(quality: VideoQuality | undefined);
860
+ private readonly _updateFromTrack;
861
+ private readonly _updateFromQuality;
862
+ private _updateTargetQuality;
863
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
864
+ }
865
+
866
+ declare const QualityRadioGroup_base: {
867
+ new (): HTMLElement;
868
+ prototype: HTMLElement;
869
+ } & Constructor<StateReceiverElement>;
870
+ /**
871
+ * A radio group that shows a list of available video qualities, from which the user can choose a desired target quality.
872
+ *
873
+ * @group Components
874
+ */
875
+ declare class QualityRadioGroup extends QualityRadioGroup_base {
876
+ private readonly _radioGroup;
877
+ private _player;
878
+ private _track;
879
+ constructor();
880
+ protected _upgradeProperty(prop: keyof this): void;
881
+ connectedCallback(): void;
882
+ disconnectedCallback(): void;
883
+ get player(): ChromelessPlayer | undefined;
884
+ set player(player: ChromelessPlayer | undefined);
885
+ private readonly _onChange;
886
+ private readonly _updateTrack;
887
+ private readonly _update;
888
+ }
889
+
890
+ declare const TextTrackStyleResetButton_base: typeof Button & Constructor<StateReceiverElement>;
891
+ /**
892
+ * A button that resets the text track style.
893
+ *
894
+ * @group Components
895
+ */
896
+ declare class TextTrackStyleResetButton extends TextTrackStyleResetButton_base {
897
+ static get observedAttributes(): Attribute[];
898
+ private _player;
899
+ constructor();
900
+ get player(): ChromelessPlayer | undefined;
901
+ set player(player: ChromelessPlayer | undefined);
902
+ protected handleClick(): void;
903
+ }
904
+
905
+ /**
906
+ * A menu to change the settings of the player, such as the active video quality and the playback speed.
907
+ *
908
+ * @group Components
909
+ */
910
+ declare class SettingsMenu extends MenuGroup {
911
+ constructor();
912
+ }
913
+
914
+ /**
915
+ * A menu button that opens a {@link SettingsMenu}.
916
+ *
917
+ * @attribute `menu` - The ID of the settings menu.
918
+ * @group Components
919
+ */
920
+ declare class SettingsMenuButton extends MenuButton {
921
+ constructor();
922
+ }
923
+
924
+ declare const FullscreenButton_base: typeof Button & Constructor<StateReceiverElement>;
925
+ /**
926
+ * A button that toggles fullscreen.
927
+ *
928
+ * @group Components
929
+ */
930
+ declare class FullscreenButton extends FullscreenButton_base {
931
+ static get observedAttributes(): Attribute[];
932
+ constructor();
933
+ get fullscreen(): boolean;
934
+ set fullscreen(fullscreen: boolean);
935
+ protected handleClick(): void;
936
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
937
+ }
938
+
939
+ interface RangeOptions {
940
+ template: HTMLTemplateElement;
941
+ }
942
+ declare function rangeTemplate(range: string, extraCss?: string): string;
943
+ /**
944
+ * A slider to select a value from a range.
945
+ *
946
+ * @attribute `disabled` - Whether the range is disabled.
947
+ * When disabled, the slider value cannot be changed, and the slider thumb is hidden.
948
+ *
949
+ * @group Components
950
+ */
951
+ declare abstract class Range extends HTMLElement {
952
+ static get observedAttributes(): Attribute[];
953
+ protected readonly _rangeEl: HTMLInputElement;
954
+ protected readonly _pointerEl: HTMLElement;
955
+ private _lastRangeWidth;
956
+ constructor(options: RangeOptions);
957
+ protected _upgradeProperty(prop: keyof this): void;
958
+ connectedCallback(): void;
959
+ disconnectedCallback(): void;
960
+ /**
961
+ * Whether the range is disabled.
962
+ *
963
+ * When disabled, the slider value cannot be changed, and the slider thumb is hidden.
964
+ */
965
+ get disabled(): boolean;
966
+ set disabled(disabled: boolean);
967
+ /**
968
+ * The current value.
969
+ */
970
+ get value(): number;
971
+ set value(value: number);
972
+ /**
973
+ * The minimum allowed value.
974
+ */
975
+ get min(): number;
976
+ set min(min: number);
977
+ /**
978
+ * The maximum allowed value.
979
+ */
980
+ get max(): number;
981
+ set max(max: number);
982
+ /**
983
+ * The granularity at which the value can change.
984
+ *
985
+ * If set to `"any"`, the value can change with arbitrary precision.
986
+ */
987
+ get step(): number | 'any';
988
+ set step(step: number | 'any');
989
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
990
+ private readonly _onInput;
991
+ protected handleInput(): void;
992
+ protected update(): void;
993
+ /**
994
+ * The value for the `aria-label` attribute of the `<input type="range">` element.
995
+ */
996
+ protected abstract getAriaLabel(): string;
997
+ /**
998
+ * The value for the `aria-valuetext` attribute of the `<input type="range">` element.
999
+ */
1000
+ protected abstract getAriaValueText(): string;
1001
+ /**
1002
+ * Native ranges have a single color for the whole track, which is different
1003
+ * from most video players that have a colored "bar" to the left of the handle
1004
+ * showing playback progress or volume level. Here we're building that bar
1005
+ * by using a background gradient that moves with the range value.
1006
+ */
1007
+ private updateBar_;
1008
+ /**
1009
+ * Build the color gradient for the range bar.
1010
+ * Creating an array so progress-bar can insert the buffered bar.
1011
+ */
1012
+ protected getBarColors(): Array<[string, number]>;
1013
+ private readonly _updatePointerBar;
1014
+ protected updatePointer_(mousePercent: number, rangeRect: DOMRectReadOnly): void;
1015
+ }
1016
+
1017
+ declare const PreviewThumbnail_base: {
1018
+ new (): HTMLElement;
1019
+ prototype: HTMLElement;
1020
+ } & Constructor<StateReceiverElement>;
1021
+ /**
1022
+ * A display that shows the thumbnail image at the current preview time of a {@link TimeRange | `<theoplayer-time-range>`}.
1023
+ *
1024
+ * The first `metadata` text track whose label equals `"thumbnails"` is used as source for the thumbnails.
1025
+ * This track is expected to contain cues whose content is the URL for the thumbnail image.
1026
+ * If the thumbnail image URL ends with a [spatial fragment](https://www.w3.org/TR/media-frags/#naming-space)
1027
+ * (e.g. `#xywh=180,80,60,40`), then the thumbnail is clipped to the rectangle defined by that fragment.
1028
+ *
1029
+ * If the stream does not contain thumbnails, then this display shows nothing.
1030
+ * @group Components
1031
+ */
1032
+ declare class PreviewThumbnail extends PreviewThumbnail_base {
1033
+ private readonly _canvasEl;
1034
+ private readonly _canvasContext;
1035
+ private readonly _thumbnailImageSource;
1036
+ private _player;
1037
+ private _previewTime;
1038
+ private _thumbnailTextTrack;
1039
+ private _lastLoadedThumbnailUrl;
1040
+ constructor();
1041
+ protected _upgradeProperty(prop: keyof this): void;
1042
+ connectedCallback(): void;
1043
+ get player(): ChromelessPlayer | undefined;
1044
+ set player(player: ChromelessPlayer | undefined);
1045
+ get previewTime(): number;
1046
+ set previewTime(previewTime: number);
1047
+ private readonly _updateThumbnailTextTrack;
1048
+ private updateThumbnail_;
1049
+ private loadThumbnailImage_;
1050
+ private showThumbnail_;
1051
+ private hideThumbnail_;
1052
+ }
1053
+
1054
+ declare const PreviewTimeDisplay_base: {
1055
+ new (): HTMLElement;
1056
+ prototype: HTMLElement;
1057
+ } & Constructor<StateReceiverElement>;
1058
+ /**
1059
+ * A display that shows the current preview time of a {@link TimeRange | `<theoplayer-time-range>`}.
1060
+ *
1061
+ * @attribute `remaining` - If set, shows the remaining time of the stream.
1062
+ * @attribute `remaining-when-live` - If set, and the stream is a livestream, shows the remaining time
1063
+ * (until the live point) of the stream.
1064
+ * @group Components
1065
+ */
1066
+ declare class PreviewTimeDisplay extends PreviewTimeDisplay_base {
1067
+ private readonly _spanEl;
1068
+ private _previewTime;
1069
+ private _player;
1070
+ static get observedAttributes(): Attribute[];
1071
+ constructor();
1072
+ protected _upgradeProperty(prop: keyof this): void;
1073
+ connectedCallback(): void;
1074
+ get previewTime(): number;
1075
+ set previewTime(previewTime: number);
1076
+ get streamType(): StreamType;
1077
+ set streamType(streamType: StreamType);
1078
+ get player(): ChromelessPlayer | undefined;
1079
+ set player(player: ChromelessPlayer | undefined);
1080
+ private readonly _update;
1081
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
1082
+ }
1083
+
1084
+ declare const TimeRange_base: typeof Range & Constructor<StateReceiverElement>;
1085
+ /**
1086
+ * A seek bar, showing the current time of the player, and which seeks the player when clicked or dragged.
1087
+ *
1088
+ * @slot `preview` - A slot holding a preview of the seek time, shown while hovering the seek bar.
1089
+ * By default, this shows the {@link PreviewTimeDisplay | preview time} and
1090
+ * the {@link PreviewThumbnail | preview thumbnail}.
1091
+ * @group Components
1092
+ */
1093
+ declare class TimeRange extends TimeRange_base {
1094
+ static get observedAttributes(): Attribute[];
1095
+ private readonly _previewRailEl;
1096
+ private readonly _previewBoxEl;
1097
+ private _player;
1098
+ private _pausedWhileScrubbing;
1099
+ private _autoAdvanceId;
1100
+ private _lastUpdateTime;
1101
+ private _lastCurrentTime;
1102
+ private _lastPlaybackRate;
1103
+ constructor();
1104
+ connectedCallback(): void;
1105
+ disconnectedCallback(): void;
1106
+ get player(): ChromelessPlayer | undefined;
1107
+ set player(player: ChromelessPlayer | undefined);
1108
+ get streamType(): StreamType;
1109
+ set streamType(streamType: StreamType);
1110
+ private readonly _updateFromPlayer;
1111
+ private readonly _updateDisabled;
1112
+ protected getAriaLabel(): string;
1113
+ protected getAriaValueText(): string;
1114
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
1115
+ protected handleInput(): void;
1116
+ private readonly _pauseOnScrubStart;
1117
+ private readonly _playOnScrubEnd;
1118
+ private shouldAutoAdvance_;
1119
+ private readonly _toggleAutoAdvance;
1120
+ private readonly _autoAdvanceWhilePlaying;
1121
+ protected updatePointer_(mousePercent: number, rangeRect: DOMRectReadOnly): void;
1122
+ }
1123
+
1124
+ declare const VolumeRange_base: typeof Range & Constructor<StateReceiverElement>;
1125
+ /**
1126
+ * A volume slider, showing the current audio volume of the player, and which changes the volume when clicked or dragged.
1127
+ *
1128
+ * @group Components
1129
+ */
1130
+ declare class VolumeRange extends VolumeRange_base {
1131
+ private _player;
1132
+ constructor();
1133
+ get player(): ChromelessPlayer | undefined;
1134
+ set player(player: ChromelessPlayer | undefined);
1135
+ private readonly _updateFromPlayer;
1136
+ protected getAriaLabel(): string;
1137
+ protected getAriaValueText(): string;
1138
+ protected handleInput(): void;
1139
+ }
1140
+
1141
+ declare const ErrorDisplay_base: {
1142
+ new (): HTMLElement;
1143
+ prototype: HTMLElement;
1144
+ } & Constructor<StateReceiverElement>;
1145
+ /**
1146
+ * A screen that shows the details of a fatal player error.
1147
+ *
1148
+ * @group Components
1149
+ */
1150
+ declare class ErrorDisplay extends ErrorDisplay_base {
1151
+ private readonly _messageSlot;
1152
+ private _error;
1153
+ static get observedAttributes(): Attribute[];
1154
+ constructor();
1155
+ protected _upgradeProperty(prop: keyof this): void;
1156
+ connectedCallback(): void;
1157
+ /**
1158
+ * The error.
1159
+ */
1160
+ get error(): THEOplayerError | undefined;
1161
+ set error(error: THEOplayerError | undefined);
1162
+ get fullscreen(): boolean;
1163
+ set fullscreen(fullscreen: boolean);
1164
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
1165
+ }
1166
+
1167
+ /**
1168
+ * A generic button to start and stop casting.
1169
+ *
1170
+ * For a concrete implementation, see {@link ChromecastButton}.
1171
+ * @group Components
1172
+ */
1173
+ declare class CastButton extends Button {
1174
+ private _castApi;
1175
+ static get observedAttributes(): Attribute[];
1176
+ constructor(options?: ButtonOptions);
1177
+ connectedCallback(): void;
1178
+ /**
1179
+ * The cast API for which this cast button.
1180
+ */
1181
+ get castApi(): VendorCast | undefined;
1182
+ set castApi(castApi: VendorCast | undefined);
1183
+ /**
1184
+ * The current cast state.
1185
+ */
1186
+ get castState(): CastState;
1187
+ protected handleClick(): void;
1188
+ private readonly _updateCastState;
1189
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
1190
+ }
1191
+
1192
+ declare const ChromecastButton_base: typeof CastButton & Constructor<StateReceiverElement>;
1193
+ /**
1194
+ * A button to start and stop casting using Chromecast.
1195
+ *
1196
+ * @group Components
1197
+ */
1198
+ declare class ChromecastButton extends ChromecastButton_base {
1199
+ private _player;
1200
+ constructor();
1201
+ get player(): ChromelessPlayer | undefined;
1202
+ set player(player: ChromelessPlayer | undefined);
1203
+ }
1204
+
1205
+ declare const ChromecastDisplay_base: {
1206
+ new (): HTMLElement;
1207
+ prototype: HTMLElement;
1208
+ } & Constructor<StateReceiverElement>;
1209
+ /**
1210
+ * A control that displays the casting status while using Chromecast.
1211
+ *
1212
+ * @group Components
1213
+ */
1214
+ declare class ChromecastDisplay extends ChromecastDisplay_base {
1215
+ private readonly _receiverNameEl;
1216
+ private _player;
1217
+ constructor();
1218
+ protected _upgradeProperty(prop: keyof this): void;
1219
+ connectedCallback(): void;
1220
+ get player(): ChromelessPlayer | undefined;
1221
+ set player(player: ChromelessPlayer | undefined);
1222
+ private readonly _updateFromPlayer;
1223
+ }
1224
+
1225
+ declare const AirPlayButton_base: typeof CastButton & Constructor<StateReceiverElement>;
1226
+ /**
1227
+ * A button to start and stop casting using AirPlay.
1228
+ *
1229
+ * @group Components
1230
+ */
1231
+ declare class AirPlayButton extends AirPlayButton_base {
1232
+ private _player;
1233
+ constructor();
1234
+ get player(): ChromelessPlayer | undefined;
1235
+ set player(player: ChromelessPlayer | undefined);
1236
+ }
1237
+
1238
+ declare const LoadingIndicator_base: {
1239
+ new (): HTMLElement;
1240
+ prototype: HTMLElement;
1241
+ } & Constructor<StateReceiverElement>;
1242
+ /**
1243
+ * An indicator that shows whether the player is currently waiting for more data to resume playback.
1244
+ *
1245
+ * @attribute `loading` (readonly) - Whether the player is waiting for more data. If set, the indicator is shown.
1246
+ * @group Components
1247
+ */
1248
+ declare class LoadingIndicator extends LoadingIndicator_base {
1249
+ private _player;
1250
+ static get observedAttributes(): Attribute[];
1251
+ constructor();
1252
+ protected _upgradeProperty(prop: keyof this): void;
1253
+ connectedCallback(): void;
1254
+ get player(): ChromelessPlayer | undefined;
1255
+ set player(player: ChromelessPlayer | undefined);
1256
+ private readonly _updateFromPlayer;
1257
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
1258
+ }
1259
+
1260
+ declare const GestureReceiver_base: {
1261
+ new (): HTMLElement;
1262
+ prototype: HTMLElement;
1263
+ } & Constructor<StateReceiverElement>;
1264
+ /**
1265
+ * An overlay that receives and handles gestures on the player.
1266
+ *
1267
+ * On desktop devices, this plays or pauses the player whenever it is clicked.
1268
+ * On mobile devices, this currently does nothing.
1269
+ *
1270
+ * @group Components
1271
+ */
1272
+ declare class GestureReceiver extends GestureReceiver_base {
1273
+ private _player;
1274
+ private _pointerType;
1275
+ constructor();
1276
+ protected _upgradeProperty(prop: keyof this): void;
1277
+ connectedCallback(): void;
1278
+ get player(): ChromelessPlayer | undefined;
1279
+ set player(player: ChromelessPlayer | undefined);
1280
+ private readonly _onPointerDown;
1281
+ private readonly _onClick;
1282
+ handleTap(_event: MouseEvent): void;
1283
+ handleMouseClick(_event: MouseEvent): void;
1284
+ }
1285
+
1286
+ declare const LiveButton_base: typeof Button & Constructor<StateReceiverElement>;
1287
+ /**
1288
+ * A button that shows whether the player is currently playing at the live point, and seeks to the live point when clicked.
1289
+ *
1290
+ * @attribute `live-threshold` - The maximum distance (in seconds) from the live point that the player's current time
1291
+ * can be for it to still be considered "at the live point". If unset, defaults to 10 seconds.
1292
+ * @attribute `live` (readonly) - Whether the player is considered to be playing at the live point.
1293
+ * @group Components
1294
+ */
1295
+ declare class LiveButton extends LiveButton_base {
1296
+ static get observedAttributes(): Attribute[];
1297
+ private _player;
1298
+ constructor();
1299
+ get paused(): boolean;
1300
+ set paused(paused: boolean);
1301
+ get streamType(): StreamType;
1302
+ set streamType(streamType: StreamType);
1303
+ get liveThreshold(): number;
1304
+ set liveThreshold(value: number);
1305
+ get live(): boolean;
1306
+ set live(live: boolean);
1307
+ get player(): ChromelessPlayer | undefined;
1308
+ set player(player: ChromelessPlayer | undefined);
1309
+ private readonly _updatePaused;
1310
+ private readonly _updateLive;
1311
+ protected handleClick(): void;
1312
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
1313
+ }
1314
+
1315
+ declare const AdDisplay_base: {
1316
+ new (): HTMLElement;
1317
+ prototype: HTMLElement;
1318
+ } & Constructor<StateReceiverElement>;
1319
+ /**
1320
+ * @group Components
1321
+ */
1322
+ declare class AdDisplay extends AdDisplay_base {
1323
+ private readonly _spanEl;
1324
+ private _player;
1325
+ constructor();
1326
+ protected _upgradeProperty(prop: keyof this): void;
1327
+ connectedCallback(): void;
1328
+ get player(): ChromelessPlayer | undefined;
1329
+ set player(player: ChromelessPlayer | undefined);
1330
+ private readonly _updateFromPlayer;
1331
+ }
1332
+
1333
+ declare const AdCountdown_base: {
1334
+ new (): HTMLElement;
1335
+ prototype: HTMLElement;
1336
+ } & Constructor<StateReceiverElement>;
1337
+ /**
1338
+ * @group Components
1339
+ */
1340
+ declare class AdCountdown extends AdCountdown_base {
1341
+ private readonly _spanEl;
1342
+ private _player;
1343
+ constructor();
1344
+ protected _upgradeProperty(prop: keyof this): void;
1345
+ connectedCallback(): void;
1346
+ get player(): ChromelessPlayer | undefined;
1347
+ set player(player: ChromelessPlayer | undefined);
1348
+ private readonly _onAdChange;
1349
+ private readonly _update;
1350
+ }
1351
+
1352
+ declare const AdClickThroughButton_base: typeof LinkButton & Constructor<StateReceiverElement>;
1353
+ /**
1354
+ * @group Components
1355
+ */
1356
+ declare class AdClickThroughButton extends AdClickThroughButton_base {
1357
+ private _player;
1358
+ static get observedAttributes(): Attribute[];
1359
+ constructor();
1360
+ connectedCallback(): void;
1361
+ get clickThrough(): string | null;
1362
+ set clickThrough(clickThrough: string | null);
1363
+ get player(): ChromelessPlayer | undefined;
1364
+ set player(player: ChromelessPlayer | undefined);
1365
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
1366
+ private readonly _updateFromPlayer;
1367
+ protected handleClick(): void;
1368
+ }
1369
+
1370
+ declare const AdSkipButton_base: typeof Button & Constructor<StateReceiverElement>;
1371
+ /**
1372
+ * @group Components
1373
+ */
1374
+ declare class AdSkipButton extends AdSkipButton_base {
1375
+ private readonly _countdownEl;
1376
+ private readonly _skipEl;
1377
+ private _player;
1378
+ static get observedAttributes(): Attribute[];
1379
+ constructor();
1380
+ connectedCallback(): void;
1381
+ get player(): ChromelessPlayer | undefined;
1382
+ set player(player: ChromelessPlayer | undefined);
1383
+ protected handleClick(): void;
1384
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
1385
+ private readonly _onAdChange;
1386
+ private readonly _update;
1387
+ }
1388
+
1389
+ declare enum ExtensionSlot {
1390
+ TopControlBar = "top-control-bar",
1391
+ BottomControlBar = "bottom-control-bar",
1392
+ Menu = "menu"
1393
+ }
1394
+
1395
+ /**
1396
+ * A default UI for THEOplayer.
1397
+ *
1398
+ * This default UI provides a great player experience out-of-the-box, that works well on all types of devices
1399
+ * and for all types of streams. It provides all the common playback controls for playing, seeking,
1400
+ * changing languages and qualities. It also supports advertisements and casting.
1401
+ *
1402
+ * ## Usage
1403
+ *
1404
+ * 1. Create a `<theoplayer-default-ui>` element.
1405
+ * 1. Set its `configuration` attribute or property to a valid player configuration.
1406
+ * 1. Set its `source` attribute or property to a valid stream source.
1407
+ * 1. Optionally, customize the player using CSS custom properties and/or extra controls.
1408
+ *
1409
+ * ## Customization
1410
+ *
1411
+ * The styling can be controlled using CSS custom properties (see {@link UIContainer | `<theoplayer-ui>`}).
1412
+ * Additional controls can be added to the `top-control-bar` and `bottom-control-bar` slots.
1413
+ * For more extensive customizations, we recommend defining your own custom UI using
1414
+ * a {@link UIContainer | `<theoplayer-ui>`}.
1415
+ *
1416
+ * @attribute `configuration` - The THEOplayer {@link theoplayer!PlayerConfiguration | PlayerConfiguration}, as a JSON string.
1417
+ * @attribute `source` - The THEOplayer {@link theoplayer!SourceDescription | SourceDescription}, as a JSON string.
1418
+ * @attribute `fluid` - If set, the player automatically adjusts its height to fit the video's aspect ratio.
1419
+ * @attribute `muted` - If set, the player starts out as muted. Reflects `ui.player.muted`.
1420
+ * @attribute `autoplay` - If set, the player attempts to automatically start playing (if allowed).
1421
+ * @attribute `mobile` - Whether to use a mobile-optimized UI layout instead.
1422
+ * Can be used in CSS to show/hide certain desktop-specific or mobile-specific UI controls.
1423
+ * @attribute `stream-type` - The stream type, either "vod", "live" or "dvr".
1424
+ * Can be used to show/hide certain UI controls specific for livestreams, such as
1425
+ * a {@link LiveButton | `<theoplayer-live-button>`}.
1426
+ * If you know in advance that the source will be a livestream, you can set this attribute to avoid a screen flicker
1427
+ * when the player switches between its VOD-specific and live-only controls.
1428
+ * @attribute `user-idle-timeout` - The timeout (in seconds) between when the user stops interacting with the UI,
1429
+ * and when the user is considered to be "idle".
1430
+ * @attribute `dvr-threshold` - The minimum length (in seconds) of a livestream's sliding window for the stream to be DVR
1431
+ * and its stream type to be set to "dvr".
1432
+ *
1433
+ * @slot `top-control-bar` - A slot for extra UI controls in the top control bar.
1434
+ * @slot `bottom-control-bar` - A slot for extra UI controls in the bottom control bar.
1435
+ * @slot `menu` - A slot for extra menus (see {@link Menu | `<theoplayer-menu>`}).
1436
+ * @group Components
1437
+ */
1438
+ declare class DefaultUI extends HTMLElement {
1439
+ static get observedAttributes(): Attribute[];
1440
+ private readonly _ui;
1441
+ private readonly _titleSlot;
1442
+ private readonly _timeRange;
1443
+ private _appliedExtensions;
1444
+ /**
1445
+ * Creates a new THEOplayer default UI.
1446
+ *
1447
+ * @param configuration - The player configuration.
1448
+ * Will be passed to the {@link theoplayer!ChromelessPlayer | ChromelessPlayer} constructor to create
1449
+ * the underlying THEOplayer instance.
1450
+ * Can also be set later on through the {@link configuration} property.
1451
+ */
1452
+ constructor(configuration?: PlayerConfiguration);
1453
+ private _upgradeProperty;
1454
+ /**
1455
+ * The underlying THEOplayer player instance.
1456
+ *
1457
+ * This is constructed automatically as soon as a valid {@link configuration} is set.
1458
+ */
1459
+ get player(): ChromelessPlayer | undefined;
1460
+ /**
1461
+ * The player configuration.
1462
+ *
1463
+ * Used to create the underlying THEOplayer instance.
1464
+ */
1465
+ get configuration(): PlayerConfiguration;
1466
+ set configuration(configuration: PlayerConfiguration);
1467
+ /**
1468
+ * The player's current source.
1469
+ */
1470
+ get source(): SourceDescription | undefined;
1471
+ set source(value: SourceDescription | undefined);
1472
+ /**
1473
+ * Whether the player's audio is muted.
1474
+ */
1475
+ get muted(): boolean;
1476
+ set muted(value: boolean);
1477
+ /**
1478
+ * Whether the player should attempt to automatically start playback.
1479
+ */
1480
+ get autoplay(): boolean;
1481
+ set autoplay(value: boolean);
1482
+ /**
1483
+ * The stream type, either "vod", "live" or "dvr".
1484
+ *
1485
+ * If you know in advance that the source will be a livestream, you can set this property to avoid a screen flicker
1486
+ * when the player switches between its VOD-specific and live-only controls.
1487
+ */
1488
+ get streamType(): StreamType;
1489
+ set streamType(value: StreamType);
1490
+ /**
1491
+ * The timeout (in seconds) between when the user stops interacting with the UI,
1492
+ * and when the user is considered to be "idle".
1493
+ */
1494
+ get userIdleTimeout(): number;
1495
+ set userIdleTimeout(value: number);
1496
+ /**
1497
+ * The minimum length (in seconds) of a livestream's sliding window for the stream to be DVR
1498
+ * and its stream type to be set to "dvr".
1499
+ */
1500
+ get dvrThreshold(): number;
1501
+ set dvrThreshold(value: number);
1502
+ connectedCallback(): void;
1503
+ disconnectedCallback(): void;
1504
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
1505
+ private readonly _updateStreamType;
1506
+ private readonly _onTitleSlotChange;
1507
+ }
1508
+
1509
+ /**
1510
+ * An extension for the default UI.
1511
+ *
1512
+ * This is called whenever a `<theoplayer-default-ui>` element is created.
1513
+ * The extension can then choose to modify this element, for example by appending extra elements
1514
+ * or attaching extra event listeners.
1515
+ *
1516
+ * @example
1517
+ * The following extension adds an extra button to the bottom control bar of every default UI:
1518
+ * ```javascript
1519
+ * THEOplayerUI.registerExtension((ui) => {
1520
+ * // Create a new button
1521
+ * const button = new THEOplayerUI.Button();
1522
+ * button.innerHTML = "Click me!";
1523
+ * button.addEventListener("click", () => alert("I was clicked!"));
1524
+ * // Place it in the bottom control bar
1525
+ * button.slot = "bottom-control-bar";
1526
+ * ui.appendChild(button);
1527
+ * });
1528
+ * ```
1529
+ * See the documentation of `<theoplayer-default-ui>` for more information about the available slots
1530
+ * in which you can add extra elements.
1531
+ */
1532
+ type Extension = (ui: DefaultUI) => void;
1533
+ /**
1534
+ * Registers an extension for the default UI.
1535
+ *
1536
+ * @param extension The extension.
1537
+ * @see {@link Extension}
1538
+ */
1539
+ declare function registerExtension(extension: Extension): void;
1540
+
1541
+ /**
1542
+ * The container element for a THEOplayer UI.
1543
+ *
1544
+ * This element provides a basic layout structure for a general player UI, and handles the creation and management
1545
+ * of a {@link theoplayer!ChromelessPlayer | THEOplayer player instance} for this UI.
1546
+ *
1547
+ * ## Usage
1548
+ *
1549
+ * 1. Create a `<theoplayer-ui>` element.
1550
+ * 1. Place your UI elements as children of the `<theoplayer-ui>`.
1551
+ * Set their `slot` attribute to one of the defined slots (see below) to place them in the layout.
1552
+ * 1. Set its `configuration` attribute or property to a valid player configuration.
1553
+ * 1. Set its `source` attribute or property to a valid stream source.
1554
+ *
1555
+ * ## Customization
1556
+ *
1557
+ * This element does not provide any UI elements by default, you need to add all elements as children of
1558
+ * the `<theoplayer-ui>` element. If you're looking for a simple out-of-the-box player experience instead,
1559
+ * see {@link DefaultUI | `<theoplayer-default-ui>`}.
1560
+ *
1561
+ * The styling can be controlled using CSS custom properties (see below).
1562
+ *
1563
+ * @attribute `configuration` - The THEOplayer {@link theoplayer!PlayerConfiguration | PlayerConfiguration}, as a JSON string.
1564
+ * @attribute `source` - The THEOplayer {@link theoplayer!SourceDescription | SourceDescription}, as a JSON string.
1565
+ * @attribute `fluid` - If set, the player automatically adjusts its height to fit the video's aspect ratio.
1566
+ * @attribute `muted` - If set, the player starts out as muted. Reflects `ui.player.muted`.
1567
+ * @attribute `autoplay` - If set, the player attempts to automatically start playing (if allowed).
1568
+ * @attribute `mobile` - Whether to use a mobile-optimized UI layout instead.
1569
+ * Can be used in CSS to show/hide certain desktop-specific or mobile-specific UI controls.
1570
+ * @attribute `stream-type` - The stream type, either "vod", "live" or "dvr".
1571
+ * Can be used to show/hide certain UI controls specific for livestreams, such as
1572
+ * a {@link LiveButton | `<theoplayer-live-button>`}.
1573
+ * If you know in advance that the source will be a livestream, you can set this attribute to avoid a screen flicker
1574
+ * when the player switches between its VOD-specific and live-only controls.
1575
+ * @attribute `user-idle` (readonly) - Whether the user is considered to be "idle".
1576
+ * When the user is idle and the video is playing, all slotted UI elements will be hidden
1577
+ * (unless they have the `no-auto-hide` attribute).
1578
+ * @attribute `user-idle-timeout` - The timeout (in seconds) between when the user stops interacting with the UI,
1579
+ * and when the user is considered to be "idle".
1580
+ * @attribute `dvr-threshold` - The minimum length (in seconds) of a livestream's sliding window for the stream to be DVR
1581
+ * and its stream type to be set to "dvr".
1582
+ * @attribute `paused` (readonly) - Whether the player is paused. Reflects `ui.player.paused`.
1583
+ * @attribute `ended` (readonly) - Whether the player is ended. Reflects `ui.player.ended`.
1584
+ * @attribute `casting` (readonly) - Whether the player is ended. Reflects `ui.player.cast.casting`.
1585
+ * @attribute `playing-ad` (readonly) - Whether the player is playing a linear ad. Reflects `ui.player.ads.playing`.
1586
+ * @attribute `has-error` (readonly) - Whether the player has encountered a fatal error.
1587
+ * @attribute `has-first-play` (readonly) - Whether the player has (previously) started playback for this stream.
1588
+ * Can be used in CSS to show/hide certain initial controls, such as a poster image or a centered play button.
1589
+ *
1590
+ * @slot `(no` name, default slot) - A slot for controls at the bottom of the player.
1591
+ * Can be used for controls such as a play button ({@link PlayButton | `<theoplayer-play-button>`}) or a seek bar
1592
+ * ({@link TimeRange | `<theoplayer-time-range>`}).
1593
+ * @slot `top-chrome` - A slot for controls at the top of the player.
1594
+ * Can be used to display the stream's title, or for a cast button ({@link ChromecastButton | `<theoplayer-chromecast-button>`}).
1595
+ * @slot `middle-chrome` - A slot for controls in the middle of the player (between the top and bottom chrome).
1596
+ * @slot `centered-chrome` - A slot for controls centered on the player, on top of other controls.
1597
+ * @slot `centered-loading` - A slot for a loading indicator centered on the player, on top of other controls
1598
+ * but behind the centered chrome.
1599
+ * @slot `menu` - A slot for extra menus (see {@link Menu | `<theoplayer-menu>`}).
1600
+ * @slot `error` - A slot for an error display, to show when the player encounters a fatal error
1601
+ * (see {@link ErrorDisplay | `<theoplayer-error-display>`}).
1602
+ * @group Components
1603
+ */
1604
+ declare class UIContainer extends HTMLElement {
1605
+ static get observedAttributes(): Attribute[];
1606
+ private _configuration;
1607
+ private readonly _playerEl;
1608
+ private readonly _menuEl;
1609
+ private readonly _menuGroup;
1610
+ private _menuOpener;
1611
+ private readonly _topChromeEl;
1612
+ private readonly _topChromeSlot;
1613
+ private readonly _bottomChromeEl;
1614
+ private readonly _bottomChromeSlot;
1615
+ private _pointerType;
1616
+ private _lastPointerUpTime;
1617
+ private readonly _mutationObserver;
1618
+ private readonly _resizeObserver;
1619
+ private readonly _stateReceivers;
1620
+ private _player;
1621
+ private _source;
1622
+ private _userIdleTimer;
1623
+ private _previewTime;
1624
+ private _activeVideoTrack;
1625
+ /**
1626
+ * Creates a new THEOplayer UI container element.
1627
+ *
1628
+ * @param configuration - The player configuration.
1629
+ * Will be passed to the {@link theoplayer!ChromelessPlayer | ChromelessPlayer} constructor to create
1630
+ * the underlying THEOplayer instance.
1631
+ * Can also be set later on through the {@link configuration} property.
1632
+ */
1633
+ constructor(configuration?: PlayerConfiguration);
1634
+ private _upgradeProperty;
1635
+ /**
1636
+ * The underlying THEOplayer player instance.
1637
+ *
1638
+ * This is constructed automatically as soon as a valid {@link configuration} is set.
1639
+ */
1640
+ get player(): ChromelessPlayer | undefined;
1641
+ /**
1642
+ * The player configuration.
1643
+ *
1644
+ * Used to create the underlying THEOplayer instance.
1645
+ */
1646
+ get configuration(): PlayerConfiguration;
1647
+ set configuration(playerConfiguration: PlayerConfiguration);
1648
+ private _setConfiguration;
1649
+ /**
1650
+ * The player's current source.
1651
+ */
1652
+ get source(): SourceDescription | undefined;
1653
+ set source(value: SourceDescription | undefined);
1654
+ private _setSource;
1655
+ /**
1656
+ * Whether the player's audio is muted.
1657
+ */
1658
+ get muted(): boolean;
1659
+ set muted(value: boolean);
1660
+ /**
1661
+ * Whether the player should attempt to automatically start playback.
1662
+ */
1663
+ get autoplay(): boolean;
1664
+ set autoplay(value: boolean);
1665
+ /**
1666
+ * Whether the UI is in fullscreen mode.
1667
+ */
1668
+ get fullscreen(): boolean;
1669
+ /**
1670
+ * Whether the player is paused.
1671
+ */
1672
+ get paused(): boolean;
1673
+ /**
1674
+ * Whether the player is ended.
1675
+ */
1676
+ get ended(): boolean;
1677
+ /**
1678
+ * Whether the player is casting to a remote receiver.
1679
+ */
1680
+ get casting(): boolean;
1681
+ /**
1682
+ * The timeout (in seconds) between when the user stops interacting with the UI,
1683
+ * and when the user is considered to be "idle".
1684
+ */
1685
+ get userIdleTimeout(): number;
1686
+ set userIdleTimeout(value: number);
1687
+ /**
1688
+ * The stream type, either "vod", "live" or "dvr".
1689
+ *
1690
+ * If you know in advance that the source will be a livestream, you can set this property to avoid a screen flicker
1691
+ * when the player switches between its VOD-specific and live-only controls.
1692
+ */
1693
+ get streamType(): StreamType;
1694
+ set streamType(streamType: StreamType);
1695
+ /**
1696
+ * The minimum length (in seconds) of a livestream's sliding window for the stream to be DVR
1697
+ * and its stream type to be set to "dvr".
1698
+ */
1699
+ get dvrThreshold(): number;
1700
+ set dvrThreshold(value: number);
1701
+ connectedCallback(): void;
1702
+ private tryInitializePlayer_;
1703
+ disconnectedCallback(): void;
1704
+ attributeChangedCallback(attrName: string, oldValue: any, newValue: any): void;
1705
+ private readonly _onMutation;
1706
+ private readonly _onSlotChange;
1707
+ private readonly registerStateReceiver_;
1708
+ private readonly unregisterStateReceiver_;
1709
+ private propagateStateToReceiver_;
1710
+ private removeStateFromReceiver_;
1711
+ private openMenu_;
1712
+ private closeMenu_;
1713
+ private readonly _onToggleMenu;
1714
+ private readonly _onCloseMenu;
1715
+ private readonly _onMenuChange;
1716
+ private readonly _onMenuPointerDown;
1717
+ private readonly _onMenuClick;
1718
+ private readonly _onEnterFullscreen;
1719
+ private readonly _onExitFullscreen;
1720
+ private readonly _onFullscreenChange;
1721
+ private readonly _updateAspectRatio;
1722
+ private readonly _updateError;
1723
+ private readonly _onPlay;
1724
+ private readonly _onPause;
1725
+ private readonly _updatePausedAndEnded;
1726
+ private readonly _updateEnded;
1727
+ private readonly _updateStreamType;
1728
+ private readonly _updatePlaybackRate;
1729
+ private readonly _updateMuted;
1730
+ private readonly _updateActiveVideoTrack;
1731
+ private readonly _updateActiveVideoQuality;
1732
+ private readonly _updateTargetVideoQualities;
1733
+ private readonly _updateCasting;
1734
+ private readonly _updatePlayingAd;
1735
+ private readonly _onSourceChange;
1736
+ private isUserIdle_;
1737
+ private setUserActive_;
1738
+ private readonly setUserIdle_;
1739
+ private readonly scheduleUserIdle_;
1740
+ private isPlayerOrMedia_;
1741
+ private readonly _onKeyUp;
1742
+ private readonly _onPointerUp;
1743
+ private readonly _onClickAfterPointerUp;
1744
+ private readonly _onPointerMove;
1745
+ private readonly _onMouseLeave;
1746
+ private readonly _onChromeSlotTransition;
1747
+ private readonly _updateTextTrackMargins;
1748
+ private readonly _onPreviewTimeChange;
1749
+ }
1750
+
1751
+ export { ActiveQualityDisplay, AdClickThroughButton, AdCountdown, AdDisplay, AdSkipButton, AirPlayButton, Attribute, Button, ButtonOptions, CastButton, ChromecastButton, ChromecastDisplay, CloseMenuButton, 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 };
1752
+ export as namespace THEOplayerUI;