eb-player 2.0.20 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build/ebplayer.bundle.js +767 -140
- package/dist/build/ebplayer.bundle.js.map +1 -1
- package/dist/build/types/src/core/command-handler.d.ts +50 -0
- package/dist/build/types/src/core/command-handler.d.ts.map +1 -0
- package/dist/build/types/src/core/config.d.ts +195 -0
- package/dist/build/types/src/core/config.d.ts.map +1 -0
- package/dist/build/types/src/core/engine-state-sync.d.ts +38 -0
- package/dist/build/types/src/core/engine-state-sync.d.ts.map +1 -0
- package/dist/build/types/src/core/event-bus.d.ts +91 -0
- package/dist/build/types/src/core/event-bus.d.ts.map +1 -0
- package/dist/build/types/src/core/fsm.d.ts +30 -0
- package/dist/build/types/src/core/fsm.d.ts.map +1 -0
- package/dist/build/types/src/core/i18n.d.ts +51 -0
- package/dist/build/types/src/core/i18n.d.ts.map +1 -0
- package/dist/build/types/src/core/index.d.ts +23 -0
- package/dist/build/types/src/core/index.d.ts.map +1 -0
- package/dist/build/types/src/core/lifecycle.d.ts +96 -0
- package/dist/build/types/src/core/lifecycle.d.ts.map +1 -0
- package/dist/build/types/src/core/player-state.d.ts +15 -0
- package/dist/build/types/src/core/player-state.d.ts.map +1 -0
- package/dist/build/types/src/core/types.d.ts +85 -0
- package/dist/build/types/src/core/types.d.ts.map +1 -0
- package/dist/build/types/src/eb-player-standalone.d.ts +23 -0
- package/dist/build/types/src/eb-player-standalone.d.ts.map +1 -0
- package/dist/build/types/src/eb-player.d.ts +56 -0
- package/dist/build/types/src/eb-player.d.ts.map +1 -0
- package/dist/build/types/src/engines/abr/dash.d.ts +56 -0
- package/dist/build/types/src/engines/abr/dash.d.ts.map +1 -0
- package/dist/build/types/src/engines/abr/hls.d.ts +105 -0
- package/dist/build/types/src/engines/abr/hls.d.ts.map +1 -0
- package/dist/build/types/src/engines/base-engine.d.ts +72 -0
- package/dist/build/types/src/engines/base-engine.d.ts.map +1 -0
- package/dist/build/types/src/engines/cdn-loader.d.ts +20 -0
- package/dist/build/types/src/engines/cdn-loader.d.ts.map +1 -0
- package/dist/build/types/src/engines/cdn-token-manager.d.ts +137 -0
- package/dist/build/types/src/engines/cdn-token-manager.d.ts.map +1 -0
- package/dist/build/types/src/engines/dash.d.ts +100 -0
- package/dist/build/types/src/engines/dash.d.ts.map +1 -0
- package/dist/build/types/src/engines/drm.d.ts +54 -0
- package/dist/build/types/src/engines/drm.d.ts.map +1 -0
- package/dist/build/types/src/engines/hls-discontinuity-patch.d.ts +43 -0
- package/dist/build/types/src/engines/hls-discontinuity-patch.d.ts.map +1 -0
- package/dist/build/types/src/engines/hls.d.ts +53 -0
- package/dist/build/types/src/engines/hls.d.ts.map +1 -0
- package/dist/build/types/src/engines/index.d.ts +26 -0
- package/dist/build/types/src/engines/index.d.ts.map +1 -0
- package/dist/build/types/src/engines/ios/hls.d.ts +20 -0
- package/dist/build/types/src/engines/ios/hls.d.ts.map +1 -0
- package/dist/build/types/src/engines/poster/hls.d.ts +35 -0
- package/dist/build/types/src/engines/poster/hls.d.ts.map +1 -0
- package/dist/build/types/src/engines/retry/dash.d.ts +51 -0
- package/dist/build/types/src/engines/retry/dash.d.ts.map +1 -0
- package/dist/build/types/src/engines/retry/hls.d.ts +47 -0
- package/dist/build/types/src/engines/retry/hls.d.ts.map +1 -0
- package/dist/build/types/src/engines/segment-token-loader.d.ts +117 -0
- package/dist/build/types/src/engines/segment-token-loader.d.ts.map +1 -0
- package/dist/build/types/src/engines/snapshot/dash.d.ts +55 -0
- package/dist/build/types/src/engines/snapshot/dash.d.ts.map +1 -0
- package/dist/build/types/src/engines/snapshot/hls.d.ts +106 -0
- package/dist/build/types/src/engines/snapshot/hls.d.ts.map +1 -0
- package/dist/build/types/src/engines/stall-watchdog.d.ts +41 -0
- package/dist/build/types/src/engines/stall-watchdog.d.ts.map +1 -0
- package/dist/build/types/src/integrations/ads-manager.d.ts +79 -0
- package/dist/build/types/src/integrations/ads-manager.d.ts.map +1 -0
- package/dist/build/types/src/integrations/chromecast-manager.d.ts +50 -0
- package/dist/build/types/src/integrations/chromecast-manager.d.ts.map +1 -0
- package/dist/build/types/src/integrations/epg-manager.d.ts +22 -0
- package/dist/build/types/src/integrations/epg-manager.d.ts.map +1 -0
- package/dist/build/types/src/integrations/index.d.ts +7 -0
- package/dist/build/types/src/integrations/index.d.ts.map +1 -0
- package/dist/build/types/src/integrations/intro-stream-manager.d.ts +62 -0
- package/dist/build/types/src/integrations/intro-stream-manager.d.ts.map +1 -0
- package/dist/build/types/src/integrations/p2p-manager.d.ts +42 -0
- package/dist/build/types/src/integrations/p2p-manager.d.ts.map +1 -0
- package/dist/build/types/src/integrations/playlist-manager.d.ts +21 -0
- package/dist/build/types/src/integrations/playlist-manager.d.ts.map +1 -0
- package/dist/build/types/src/skin/bars/bottom-bar.d.ts +16 -0
- package/dist/build/types/src/skin/bars/bottom-bar.d.ts.map +1 -0
- package/dist/build/types/src/skin/bars/middle-bar.d.ts +16 -0
- package/dist/build/types/src/skin/bars/middle-bar.d.ts.map +1 -0
- package/dist/build/types/src/skin/bars/top-bar.d.ts +15 -0
- package/dist/build/types/src/skin/bars/top-bar.d.ts.map +1 -0
- package/dist/build/types/src/skin/base-component.d.ts +69 -0
- package/dist/build/types/src/skin/base-component.d.ts.map +1 -0
- package/dist/build/types/src/skin/brand/forja-playlist-bar.d.ts +15 -0
- package/dist/build/types/src/skin/brand/forja-playlist-bar.d.ts.map +1 -0
- package/dist/build/types/src/skin/brand/snrt-radio-carousel.d.ts +16 -0
- package/dist/build/types/src/skin/brand/snrt-radio-carousel.d.ts.map +1 -0
- package/dist/build/types/src/skin/component-registry.d.ts +16 -0
- package/dist/build/types/src/skin/component-registry.d.ts.map +1 -0
- package/dist/build/types/src/skin/controllers/auto-hide.d.ts +27 -0
- package/dist/build/types/src/skin/controllers/auto-hide.d.ts.map +1 -0
- package/dist/build/types/src/skin/controllers/keyboard.d.ts +29 -0
- package/dist/build/types/src/skin/controllers/keyboard.d.ts.map +1 -0
- package/dist/build/types/src/skin/controls/cast-button.d.ts +15 -0
- package/dist/build/types/src/skin/controls/cast-button.d.ts.map +1 -0
- package/dist/build/types/src/skin/controls/channel-name.d.ts +16 -0
- package/dist/build/types/src/skin/controls/channel-name.d.ts.map +1 -0
- package/dist/build/types/src/skin/controls/forward-button.d.ts +15 -0
- package/dist/build/types/src/skin/controls/forward-button.d.ts.map +1 -0
- package/dist/build/types/src/skin/controls/fullscreen-button.d.ts +30 -0
- package/dist/build/types/src/skin/controls/fullscreen-button.d.ts.map +1 -0
- package/dist/build/types/src/skin/controls/info-button.d.ts +10 -0
- package/dist/build/types/src/skin/controls/info-button.d.ts.map +1 -0
- package/dist/build/types/src/skin/controls/live-sync-button.d.ts +20 -0
- package/dist/build/types/src/skin/controls/live-sync-button.d.ts.map +1 -0
- package/dist/build/types/src/skin/controls/pip-button.d.ts +21 -0
- package/dist/build/types/src/skin/controls/pip-button.d.ts.map +1 -0
- package/dist/build/types/src/skin/controls/play-pause-button.d.ts +14 -0
- package/dist/build/types/src/skin/controls/play-pause-button.d.ts.map +1 -0
- package/dist/build/types/src/skin/controls/rewind-button.d.ts +15 -0
- package/dist/build/types/src/skin/controls/rewind-button.d.ts.map +1 -0
- package/dist/build/types/src/skin/controls/seekbar.d.ts +48 -0
- package/dist/build/types/src/skin/controls/seekbar.d.ts.map +1 -0
- package/dist/build/types/src/skin/controls/settings-panel.d.ts +53 -0
- package/dist/build/types/src/skin/controls/settings-panel.d.ts.map +1 -0
- package/dist/build/types/src/skin/controls/share-button.d.ts +11 -0
- package/dist/build/types/src/skin/controls/share-button.d.ts.map +1 -0
- package/dist/build/types/src/skin/controls/time-display.d.ts +19 -0
- package/dist/build/types/src/skin/controls/time-display.d.ts.map +1 -0
- package/dist/build/types/src/skin/controls/volume-control.d.ts +21 -0
- package/dist/build/types/src/skin/controls/volume-control.d.ts.map +1 -0
- package/dist/build/types/src/skin/icons/icons-modern.d.ts +10 -0
- package/dist/build/types/src/skin/icons/icons-modern.d.ts.map +1 -0
- package/dist/build/types/src/skin/icons/icons.d.ts +10 -0
- package/dist/build/types/src/skin/icons/icons.d.ts.map +1 -0
- package/dist/build/types/src/skin/icons/sprite.d.ts +39 -0
- package/dist/build/types/src/skin/icons/sprite.d.ts.map +1 -0
- package/dist/build/types/src/skin/index.d.ts +24 -0
- package/dist/build/types/src/skin/index.d.ts.map +1 -0
- package/dist/build/types/src/skin/overlays/error-message.d.ts +14 -0
- package/dist/build/types/src/skin/overlays/error-message.d.ts.map +1 -0
- package/dist/build/types/src/skin/overlays/info-overlay.d.ts +15 -0
- package/dist/build/types/src/skin/overlays/info-overlay.d.ts.map +1 -0
- package/dist/build/types/src/skin/overlays/loading-spinner.d.ts +17 -0
- package/dist/build/types/src/skin/overlays/loading-spinner.d.ts.map +1 -0
- package/dist/build/types/src/skin/overlays/preroll-overlay.d.ts +39 -0
- package/dist/build/types/src/skin/overlays/preroll-overlay.d.ts.map +1 -0
- package/dist/build/types/src/skin/overlays/socials-overlay.d.ts +17 -0
- package/dist/build/types/src/skin/overlays/socials-overlay.d.ts.map +1 -0
- package/dist/build/types/src/skin/overlays/toast-notification.d.ts +18 -0
- package/dist/build/types/src/skin/overlays/toast-notification.d.ts.map +1 -0
- package/dist/build/types/src/skin/skin-root.d.ts +88 -0
- package/dist/build/types/src/skin/skin-root.d.ts.map +1 -0
- package/dist/build/types/src/utils/chapters.d.ts +16 -0
- package/dist/build/types/src/utils/chapters.d.ts.map +1 -0
- package/dist/build/types/src/utils/format-duration.d.ts +9 -0
- package/dist/build/types/src/utils/format-duration.d.ts.map +1 -0
- package/dist/build/types/src/utils/format-wall-clock.d.ts +6 -0
- package/dist/build/types/src/utils/format-wall-clock.d.ts.map +1 -0
- package/dist/build/types/src/utils/settings-helpers.d.ts +41 -0
- package/dist/build/types/src/utils/settings-helpers.d.ts.map +1 -0
- package/package.json +34 -33
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { TemplateResult } from 'lit-html';
|
|
2
|
+
import { BaseComponent } from '../base-component';
|
|
3
|
+
/**
|
|
4
|
+
* SnrtRadioCarousel renders a horizontal carousel of radio program items
|
|
5
|
+
* for the SNRT brand skin.
|
|
6
|
+
*
|
|
7
|
+
* Subscribes to state.epgPrograms for data. Each item shows the program
|
|
8
|
+
* title and time range. This component is registered as a brand extra
|
|
9
|
+
* by the SNRT configuration.
|
|
10
|
+
*/
|
|
11
|
+
export declare class SnrtRadioCarousel extends BaseComponent {
|
|
12
|
+
protected onConnect(): void;
|
|
13
|
+
protected template(): TemplateResult;
|
|
14
|
+
private formatTime;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=snrt-radio-carousel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snrt-radio-carousel.d.ts","sourceRoot":"","sources":["../../../../../../src/skin/brand/snrt-radio-carousel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGjD;;;;;;;GAOG;AACH,qBAAa,iBAAkB,SAAQ,aAAa;IAClD,SAAS,CAAC,SAAS,IAAI,IAAI;IAU3B,SAAS,CAAC,QAAQ,IAAI,cAAc;IAiBpC,OAAO,CAAC,UAAU;CAInB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ComponentId } from '../core/config';
|
|
2
|
+
import type { BaseComponent } from './base-component';
|
|
3
|
+
type ComponentFactory = () => BaseComponent;
|
|
4
|
+
/**
|
|
5
|
+
* Maps ComponentId strings to factory functions that create component instances.
|
|
6
|
+
* Used by SkinRoot.connectChildComponents() to dynamically mount components
|
|
7
|
+
* based on the layout config.
|
|
8
|
+
*/
|
|
9
|
+
export declare const COMPONENT_REGISTRY: Record<ComponentId, ComponentFactory>;
|
|
10
|
+
/**
|
|
11
|
+
* Returns the CSS selector for a component's slot element.
|
|
12
|
+
* Seekbar uses a special class for flex:1 behavior.
|
|
13
|
+
*/
|
|
14
|
+
export declare function slotSelector(componentId: ComponentId): string;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=component-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-registry.d.ts","sourceRoot":"","sources":["../../../../../src/skin/component-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAgBrD,KAAK,gBAAgB,GAAG,MAAM,aAAa,CAAA;AAE3C;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,WAAW,EAAE,gBAAgB,CAepE,CAAA;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAG7D"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { PlayerState } from '../../core/types';
|
|
2
|
+
/**
|
|
3
|
+
* AutoHideController manages the 3-second auto-hide timer for player controls.
|
|
4
|
+
*
|
|
5
|
+
* On any user activity (pointermove, touchstart, keyup), the timer resets to 3s.
|
|
6
|
+
* When the timer fires, controls are hidden — but ONLY if no panel is open,
|
|
7
|
+
* no ad is playing, and no intro stream is playing.
|
|
8
|
+
*
|
|
9
|
+
* Note: Uses manual removeEventListener instead of the { signal } option in
|
|
10
|
+
* addEventListener. JSDOM 28 rejects non-JSDOM AbortSignal instances in the
|
|
11
|
+
* options dict, making the signal approach non-testable. Production behavior
|
|
12
|
+
* is identical — cleanup is triggered by the signal's 'abort' event.
|
|
13
|
+
*
|
|
14
|
+
* Usage:
|
|
15
|
+
* const controller = new AutoHideController(container, state, signal)
|
|
16
|
+
* // cleanup happens automatically when signal aborts
|
|
17
|
+
*/
|
|
18
|
+
export declare class AutoHideController {
|
|
19
|
+
private timer;
|
|
20
|
+
private readonly state;
|
|
21
|
+
private readonly onActivity;
|
|
22
|
+
private readonly container;
|
|
23
|
+
constructor(container: HTMLElement, state: PlayerState, signal: AbortSignal);
|
|
24
|
+
private show;
|
|
25
|
+
private hide;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=auto-hide.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-hide.d.ts","sourceRoot":"","sources":["../../../../../../src/skin/controllers/auto-hide.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,kBAAkB;IAE7B,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAa;gBAE3B,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW;IAyB3E,OAAO,CAAC,IAAI;IAQZ,OAAO,CAAC,IAAI;CAYb"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { PlayerState } from '../../core/types';
|
|
2
|
+
import type { TypedEventBus } from '../../core/event-bus';
|
|
3
|
+
import type { PlayerConfig } from '../../core/config';
|
|
4
|
+
/**
|
|
5
|
+
* KeyboardController handles player keyboard shortcuts.
|
|
6
|
+
*
|
|
7
|
+
* Space: toggles play/pause, prevents default scroll behavior.
|
|
8
|
+
* ArrowLeft: seek back by config.seekOffset seconds (clamped to 0).
|
|
9
|
+
* ArrowRight: seek forward by config.seekOffset seconds (clamped to duration).
|
|
10
|
+
* m: mutes/unmutes — only when config.supportHotKeys is true.
|
|
11
|
+
*
|
|
12
|
+
* All shortcuts are disabled during ads or intro streams (state.adPlaying || state.introStreamPlaying).
|
|
13
|
+
*
|
|
14
|
+
* The container must be focusable to receive keyboard events.
|
|
15
|
+
* If container.tabIndex < 0, it is set to 0 automatically.
|
|
16
|
+
*
|
|
17
|
+
* Note: Uses manual removeEventListener instead of the { signal } option in
|
|
18
|
+
* addEventListener. JSDOM 28 rejects non-JSDOM AbortSignal instances in the
|
|
19
|
+
* options dict, making the signal approach non-testable. Production behavior
|
|
20
|
+
* is identical — cleanup is triggered by the signal's 'abort' event.
|
|
21
|
+
*
|
|
22
|
+
* Usage:
|
|
23
|
+
* const controller = new KeyboardController(container, state, bus, config, signal)
|
|
24
|
+
* // cleanup happens automatically when signal aborts
|
|
25
|
+
*/
|
|
26
|
+
export declare class KeyboardController {
|
|
27
|
+
constructor(container: HTMLElement, state: PlayerState, bus: TypedEventBus, config: PlayerConfig, signal: AbortSignal);
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=keyboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../../../../../../src/skin/controllers/keyboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,kBAAkB;gBAE3B,SAAS,EAAE,WAAW,EACtB,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,WAAW;CAyDtB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { TemplateResult } from 'lit-html';
|
|
2
|
+
import { BaseComponent } from '../base-component';
|
|
3
|
+
/**
|
|
4
|
+
* Chromecast button.
|
|
5
|
+
*
|
|
6
|
+
* - Visible only when state.castAvailable is true
|
|
7
|
+
* - Click emits 'cast-start' with { src: state.src }
|
|
8
|
+
* - Has eb-cast-active class when state.isCasting is true
|
|
9
|
+
* - Re-renders when state.castAvailable or state.isCasting changes
|
|
10
|
+
*/
|
|
11
|
+
export declare class CastButton extends BaseComponent {
|
|
12
|
+
protected onConnect(): void;
|
|
13
|
+
protected template(): TemplateResult;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=cast-button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cast-button.d.ts","sourceRoot":"","sources":["../../../../../../src/skin/controls/cast-button.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGjD;;;;;;;GAOG;AACH,qBAAa,UAAW,SAAQ,aAAa;IAC3C,SAAS,CAAC,SAAS,IAAI,IAAI;IAM3B,SAAS,CAAC,QAAQ,IAAI,cAAc;CAiBrC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { TemplateResult } from 'lit-html';
|
|
2
|
+
import { BaseComponent } from '../base-component';
|
|
3
|
+
/**
|
|
4
|
+
* ChannelName displays a static label (e.g. channel or program name)
|
|
5
|
+
* in the bottom bar, next to the live badge and time display.
|
|
6
|
+
*
|
|
7
|
+
* Reads config.channelName and renders nothing if unset.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* EBPlayer.start({ src: '...', skin: 'v2', channelName: 'ALOULA' })
|
|
11
|
+
*/
|
|
12
|
+
export declare class ChannelName extends BaseComponent {
|
|
13
|
+
protected onConnect(): void;
|
|
14
|
+
protected template(): TemplateResult;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=channel-name.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel-name.d.ts","sourceRoot":"","sources":["../../../../../../src/skin/controls/channel-name.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEjD;;;;;;;;GAQG;AACH,qBAAa,WAAY,SAAQ,aAAa;IAC5C,SAAS,CAAC,SAAS,IAAI,IAAI;IAI3B,SAAS,CAAC,QAAQ,IAAI,cAAc;CAOrC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { TemplateResult } from 'lit-html';
|
|
2
|
+
import { BaseComponent } from '../base-component';
|
|
3
|
+
/**
|
|
4
|
+
* Forward button — seeks forward by config.seekOffset seconds (default 15).
|
|
5
|
+
*
|
|
6
|
+
* Displayed in the middle bar beside the play/pause button.
|
|
7
|
+
* Renders a circular arrow icon with the seek offset number below.
|
|
8
|
+
* Hidden during ad playback or intro-stream playback.
|
|
9
|
+
*/
|
|
10
|
+
export declare class ForwardButton extends BaseComponent {
|
|
11
|
+
protected onConnect(): void;
|
|
12
|
+
protected template(): TemplateResult;
|
|
13
|
+
private handleClick;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=forward-button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forward-button.d.ts","sourceRoot":"","sources":["../../../../../../src/skin/controls/forward-button.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGjD;;;;;;GAMG;AACH,qBAAa,aAAc,SAAQ,aAAa;IAC9C,SAAS,CAAC,SAAS,IAAI,IAAI;IAM3B,SAAS,CAAC,QAAQ,IAAI,cAAc;IAwBpC,OAAO,CAAC,WAAW;CAKpB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { TemplateResult } from 'lit-html';
|
|
2
|
+
import { BaseComponent } from '../base-component';
|
|
3
|
+
/**
|
|
4
|
+
* Fullscreen toggle button.
|
|
5
|
+
*
|
|
6
|
+
* - Calls screenfull.toggle() with the closest .eb-player ancestor on click
|
|
7
|
+
* - Subscribes to screenfull 'change' event to update state.isFullscreen
|
|
8
|
+
* - Falls back to video-element fullscreen on mobile (iOS Safari webkitEnterFullscreen,
|
|
9
|
+
* Android Chrome video.requestFullscreen) when the Fullscreen API is not available
|
|
10
|
+
* for arbitrary elements
|
|
11
|
+
* - Re-renders when state.isFullscreen changes
|
|
12
|
+
*/
|
|
13
|
+
export declare class FullscreenButton extends BaseComponent {
|
|
14
|
+
private changeHandler;
|
|
15
|
+
private videoEl;
|
|
16
|
+
private videoFullscreenBeginHandler;
|
|
17
|
+
private videoFullscreenEndHandler;
|
|
18
|
+
private useVideoFallback;
|
|
19
|
+
protected onConnect(): void;
|
|
20
|
+
/**
|
|
21
|
+
* On mobile browsers the Fullscreen API may not work on arbitrary elements,
|
|
22
|
+
* but the <video> element itself supports fullscreen via webkitEnterFullscreen
|
|
23
|
+
* (iOS Safari) or video.requestFullscreen() (Android Chrome).
|
|
24
|
+
*/
|
|
25
|
+
private initVideoFallback;
|
|
26
|
+
private handleDocFullscreenChange;
|
|
27
|
+
private handleClick;
|
|
28
|
+
protected template(): TemplateResult;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=fullscreen-button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fullscreen-button.d.ts","sourceRoot":"","sources":["../../../../../../src/skin/controls/fullscreen-button.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAajD;;;;;;;;;GASG;AACH,qBAAa,gBAAiB,SAAQ,aAAa;IACjD,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,2BAA2B,CAA4B;IAC/D,OAAO,CAAC,yBAAyB,CAA4B;IAC7D,OAAO,CAAC,gBAAgB,CAAQ;IAEhC,SAAS,CAAC,SAAS,IAAI,IAAI;IAsB3B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IA4CzB,OAAO,CAAC,yBAAyB,CAIhC;IAED,OAAO,CAAC,WAAW;IA0BnB,SAAS,CAAC,QAAQ,IAAI,cAAc;CAqBrC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { TemplateResult } from 'lit-html';
|
|
2
|
+
import { BaseComponent } from '../base-component';
|
|
3
|
+
/**
|
|
4
|
+
* InfoButton opens the info/about overlay.
|
|
5
|
+
*/
|
|
6
|
+
export declare class InfoButton extends BaseComponent {
|
|
7
|
+
protected onConnect(): void;
|
|
8
|
+
protected template(): TemplateResult;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=info-button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info-button.d.ts","sourceRoot":"","sources":["../../../../../../src/skin/controls/info-button.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGjD;;GAEG;AACH,qBAAa,UAAW,SAAQ,aAAa;IAC3C,SAAS,CAAC,SAAS,IAAI,IAAI;IAI3B,SAAS,CAAC,QAAQ,IAAI,cAAc;CASrC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { TemplateResult } from 'lit-html';
|
|
2
|
+
import { BaseComponent } from '../base-component';
|
|
3
|
+
/**
|
|
4
|
+
* Live sync button.
|
|
5
|
+
*
|
|
6
|
+
* Visible when:
|
|
7
|
+
* - state.isLive === true (auto-detected live stream), OR
|
|
8
|
+
* - config.liveButton === true (forced by config)
|
|
9
|
+
*
|
|
10
|
+
* Has eb-live-synced class when state.isSyncWithLive is true.
|
|
11
|
+
* Click emits 'sync-live' to jump back to the live edge.
|
|
12
|
+
*
|
|
13
|
+
* Renders both an icon (for default/icon themes) and a text label
|
|
14
|
+
* with blinking dot (for v2/badge themes). CSS controls which is shown.
|
|
15
|
+
*/
|
|
16
|
+
export declare class LiveSyncButton extends BaseComponent {
|
|
17
|
+
protected onConnect(): void;
|
|
18
|
+
protected template(): TemplateResult;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=live-sync-button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-sync-button.d.ts","sourceRoot":"","sources":["../../../../../../src/skin/controls/live-sync-button.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGjD;;;;;;;;;;;;GAYG;AACH,qBAAa,cAAe,SAAQ,aAAa;IAC/C,SAAS,CAAC,SAAS,IAAI,IAAI;IAM3B,SAAS,CAAC,QAAQ,IAAI,cAAc;CAoBrC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { TemplateResult } from 'lit-html';
|
|
2
|
+
import { BaseComponent } from '../base-component';
|
|
3
|
+
/**
|
|
4
|
+
* Picture-in-Picture (PiP) toggle button.
|
|
5
|
+
*
|
|
6
|
+
* - Hidden when config.pip is false or the PiP API is unavailable
|
|
7
|
+
* - Click calls video.requestPictureInPicture() when not in PiP
|
|
8
|
+
* - Click calls document.exitPictureInPicture() when already in PiP
|
|
9
|
+
* - Listens to 'enterpictureinpicture' / 'leavepictureinpicture' events on the video element
|
|
10
|
+
* - Re-renders when state.isPip changes
|
|
11
|
+
*/
|
|
12
|
+
export declare class PipButton extends BaseComponent {
|
|
13
|
+
private pipEnabled;
|
|
14
|
+
private videoEl;
|
|
15
|
+
private enterHandler;
|
|
16
|
+
private leaveHandler;
|
|
17
|
+
protected onConnect(): void;
|
|
18
|
+
private handleClick;
|
|
19
|
+
protected template(): TemplateResult;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=pip-button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pip-button.d.ts","sourceRoot":"","sources":["../../../../../../src/skin/controls/pip-button.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGjD;;;;;;;;GAQG;AACH,qBAAa,SAAU,SAAQ,aAAa;IAC1C,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,YAAY,CAA4B;IAEhD,SAAS,CAAC,SAAS,IAAI,IAAI;IAmC3B,OAAO,CAAC,WAAW;IASnB,SAAS,CAAC,QAAQ,IAAI,cAAc;CAiBrC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { TemplateResult } from 'lit-html';
|
|
2
|
+
import { BaseComponent } from '../base-component';
|
|
3
|
+
/**
|
|
4
|
+
* Play/pause toggle button.
|
|
5
|
+
*
|
|
6
|
+
* Emits 'play' when clicked while paused/idle/buffering,
|
|
7
|
+
* emits 'pause' when clicked while playing.
|
|
8
|
+
* Re-renders when state.playbackState changes.
|
|
9
|
+
*/
|
|
10
|
+
export declare class PlayPauseButton extends BaseComponent {
|
|
11
|
+
protected onConnect(): void;
|
|
12
|
+
protected template(): TemplateResult;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=play-pause-button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"play-pause-button.d.ts","sourceRoot":"","sources":["../../../../../../src/skin/controls/play-pause-button.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGjD;;;;;;GAMG;AACH,qBAAa,eAAgB,SAAQ,aAAa;IAChD,SAAS,CAAC,SAAS,IAAI,IAAI;IAK3B,SAAS,CAAC,QAAQ,IAAI,cAAc;CAgBrC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { TemplateResult } from 'lit-html';
|
|
2
|
+
import { BaseComponent } from '../base-component';
|
|
3
|
+
/**
|
|
4
|
+
* Rewind button — seeks back by config.seekOffset seconds (default 15).
|
|
5
|
+
*
|
|
6
|
+
* Displayed in the middle bar beside the play/pause button.
|
|
7
|
+
* Renders a circular arrow icon with the seek offset number below.
|
|
8
|
+
* Hidden during ad playback or intro-stream playback.
|
|
9
|
+
*/
|
|
10
|
+
export declare class RewindButton extends BaseComponent {
|
|
11
|
+
protected onConnect(): void;
|
|
12
|
+
protected template(): TemplateResult;
|
|
13
|
+
private handleClick;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=rewind-button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rewind-button.d.ts","sourceRoot":"","sources":["../../../../../../src/skin/controls/rewind-button.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGjD;;;;;;GAMG;AACH,qBAAa,YAAa,SAAQ,aAAa;IAC7C,SAAS,CAAC,SAAS,IAAI,IAAI;IAM3B,SAAS,CAAC,QAAQ,IAAI,cAAc;IAwBpC,OAAO,CAAC,WAAW;CAKpB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { TemplateResult } from 'lit-html';
|
|
2
|
+
import { BaseComponent } from '../base-component';
|
|
3
|
+
/**
|
|
4
|
+
* Seekbar component.
|
|
5
|
+
*
|
|
6
|
+
* Renders a full-featured seekbar with:
|
|
7
|
+
* - Progress and buffered region tracks
|
|
8
|
+
* - Pointer Events drag with setPointerCapture
|
|
9
|
+
* - RTL coordinate flip
|
|
10
|
+
* - Chapter markers with active state and skip button
|
|
11
|
+
* - EPG program segments
|
|
12
|
+
* - Tooltip with time on hover, optional snapshot preview
|
|
13
|
+
* - Disabled state during ad playback
|
|
14
|
+
*
|
|
15
|
+
* rAF batching prevents excessive re-renders during high-frequency currentTime updates.
|
|
16
|
+
*/
|
|
17
|
+
export declare class Seekbar extends BaseComponent {
|
|
18
|
+
private isDragging;
|
|
19
|
+
private dragValue;
|
|
20
|
+
private rafPending;
|
|
21
|
+
private tooltipVisible;
|
|
22
|
+
private tooltipTime;
|
|
23
|
+
private tooltipX;
|
|
24
|
+
private previewVideoEl;
|
|
25
|
+
private snapshotTake;
|
|
26
|
+
private trackEl;
|
|
27
|
+
private boundDocPointerMove;
|
|
28
|
+
protected onConnect(): void;
|
|
29
|
+
disconnect(): void;
|
|
30
|
+
private scheduleRender;
|
|
31
|
+
/**
|
|
32
|
+
* Converts a PointerEvent clientX to a time value, accounting for RTL mode.
|
|
33
|
+
* Clamps result to [0, duration].
|
|
34
|
+
*/
|
|
35
|
+
private eventToTime;
|
|
36
|
+
private startDocumentTracking;
|
|
37
|
+
private stopDocumentTracking;
|
|
38
|
+
private onDocPointerMove;
|
|
39
|
+
private handlePointerDown;
|
|
40
|
+
private handlePointerMove;
|
|
41
|
+
private handlePointerUp;
|
|
42
|
+
private updateTooltip;
|
|
43
|
+
private findActiveChapter;
|
|
44
|
+
private findSkippableChapter;
|
|
45
|
+
private renderEpgSegments;
|
|
46
|
+
protected template(): TemplateResult;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=seekbar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seekbar.d.ts","sourceRoot":"","sources":["../../../../../../src/skin/controls/seekbar.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAMjD;;;;;;;;;;;;;GAaG;AACH,qBAAa,OAAQ,SAAQ,aAAa;IACxC,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,SAAS,CAAI;IACrB,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,WAAW,CAAI;IACvB,OAAO,CAAC,QAAQ,CAAI;IACpB,OAAO,CAAC,cAAc,CAAgC;IACtD,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,mBAAmB,CAA+C;IAE1E,SAAS,CAAC,SAAS,IAAI,IAAI;IAuBlB,UAAU,IAAI,IAAI;IAO3B,OAAO,CAAC,cAAc;IAWtB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,aAAa;IA6BrB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,iBAAiB;IA6BzB,SAAS,CAAC,QAAQ,IAAI,cAAc;CA0FrC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { TemplateResult } from 'lit-html';
|
|
2
|
+
import { BaseComponent } from '../base-component';
|
|
3
|
+
/**
|
|
4
|
+
* Multi-mode settings panel.
|
|
5
|
+
*
|
|
6
|
+
* Root mode: shows category buttons (Quality, Speed, Audio, Subtitles).
|
|
7
|
+
* Sub-menu mode: shows items from the selected category with a back button.
|
|
8
|
+
*
|
|
9
|
+
* Categories are conditionally shown:
|
|
10
|
+
* - Quality: only when state.qualityLevels is non-empty
|
|
11
|
+
* - Speed: only when config.speed is true
|
|
12
|
+
* - Audio: only when state.audioTracks has more than 1 track
|
|
13
|
+
* - Subtitles: only when state.subtitleTracks is non-empty
|
|
14
|
+
*
|
|
15
|
+
* Panel is visible only when state.settingsOpen is true.
|
|
16
|
+
*
|
|
17
|
+
* Panel placement is computed from the toggle button's position relative
|
|
18
|
+
* to the .eb-player container:
|
|
19
|
+
* - Top half → panel drops downward (eb-settings-panel--down)
|
|
20
|
+
* - Bottom half → panel opens upward (eb-settings-panel--up) [default]
|
|
21
|
+
* - Left half → panel aligns left (eb-settings-panel--left)
|
|
22
|
+
* - Right half → panel aligns right (eb-settings-panel--right) [default]
|
|
23
|
+
*/
|
|
24
|
+
export declare class SettingsPanel extends BaseComponent {
|
|
25
|
+
private mode;
|
|
26
|
+
private verticalDir;
|
|
27
|
+
private horizontalDir;
|
|
28
|
+
private outsideClickHandler;
|
|
29
|
+
private outsideClickTimer;
|
|
30
|
+
protected onConnect(): void;
|
|
31
|
+
/**
|
|
32
|
+
* Determines which quadrant of the player the toggle button sits in,
|
|
33
|
+
* so the panel can open in the direction with the most available space.
|
|
34
|
+
*/
|
|
35
|
+
private computePlacement;
|
|
36
|
+
private navigateTo;
|
|
37
|
+
private navigateBack;
|
|
38
|
+
/**
|
|
39
|
+
* Returns the display label for the currently selected value in a category.
|
|
40
|
+
*/
|
|
41
|
+
private currentValueLabel;
|
|
42
|
+
private renderRootMenu;
|
|
43
|
+
private renderSubMenu;
|
|
44
|
+
private renderQualityMenu;
|
|
45
|
+
private renderSpeedMenu;
|
|
46
|
+
private renderAudioMenu;
|
|
47
|
+
private renderSubtitlesMenu;
|
|
48
|
+
private addOutsideClickListener;
|
|
49
|
+
private removeOutsideClickListener;
|
|
50
|
+
private toggleSettings;
|
|
51
|
+
protected template(): TemplateResult;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=settings-panel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-panel.d.ts","sourceRoot":"","sources":["../../../../../../src/skin/controls/settings-panel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAOjD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,aAAc,SAAQ,aAAa;IAC9C,OAAO,CAAC,IAAI,CAAuB;IACnC,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,mBAAmB,CAA6C;IACxE,OAAO,CAAC,iBAAiB,CAA6C;IAEtE,SAAS,CAAC,SAAS,IAAI,IAAI;IA4B3B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA+BzB,OAAO,CAAC,cAAc;IA4BtB,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,0BAA0B;IAWlC,OAAO,CAAC,cAAc;IAItB,SAAS,CAAC,QAAQ,IAAI,cAAc;CA4CrC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { TemplateResult } from 'lit-html';
|
|
2
|
+
import { BaseComponent } from '../base-component';
|
|
3
|
+
/**
|
|
4
|
+
* ShareButton opens the socials overlay.
|
|
5
|
+
* Renders hidden when config.socials is false.
|
|
6
|
+
*/
|
|
7
|
+
export declare class ShareButton extends BaseComponent {
|
|
8
|
+
protected onConnect(): void;
|
|
9
|
+
protected template(): TemplateResult;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=share-button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"share-button.d.ts","sourceRoot":"","sources":["../../../../../../src/skin/controls/share-button.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGjD;;;GAGG;AACH,qBAAa,WAAY,SAAQ,aAAa;IAC5C,SAAS,CAAC,SAAS,IAAI,IAAI;IAI3B,SAAS,CAAC,QAAQ,IAAI,cAAc;CAYrC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { TemplateResult } from 'lit-html';
|
|
2
|
+
import { BaseComponent } from '../base-component';
|
|
3
|
+
/**
|
|
4
|
+
* Time display component.
|
|
5
|
+
*
|
|
6
|
+
* For VOD: shows "currentTime / duration" (e.g., "1:23 / 5:00")
|
|
7
|
+
* For live + synced: shows current wall-clock time (e.g., "19:25:30")
|
|
8
|
+
* For live + not synced: shows negative offset (e.g., "-0:30")
|
|
9
|
+
*
|
|
10
|
+
* Uses requestAnimationFrame batching for currentTime updates
|
|
11
|
+
* to avoid excessive re-renders during playback.
|
|
12
|
+
*/
|
|
13
|
+
export declare class TimeDisplay extends BaseComponent {
|
|
14
|
+
private rafPending;
|
|
15
|
+
protected onConnect(): void;
|
|
16
|
+
private scheduleRender;
|
|
17
|
+
protected template(): TemplateResult;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=time-display.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-display.d.ts","sourceRoot":"","sources":["../../../../../../src/skin/controls/time-display.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAIjD;;;;;;;;;GASG;AACH,qBAAa,WAAY,SAAQ,aAAa;IAC5C,OAAO,CAAC,UAAU,CAAQ;IAE1B,SAAS,CAAC,SAAS,IAAI,IAAI;IAY3B,OAAO,CAAC,cAAc;IAStB,SAAS,CAAC,QAAQ,IAAI,cAAc;CAyBrC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { TemplateResult } from 'lit-html';
|
|
2
|
+
import { BaseComponent } from '../base-component';
|
|
3
|
+
/**
|
|
4
|
+
* Volume control with mute toggle button and draggable slider.
|
|
5
|
+
*
|
|
6
|
+
* - Mute button emits 'mute-toggle'
|
|
7
|
+
* - Slider uses Pointer Events API (pointerdown/pointermove/pointerup)
|
|
8
|
+
* - Slider fill width reflects current volume (0% to 100%)
|
|
9
|
+
* - When muted, fill shows 0% visually
|
|
10
|
+
*/
|
|
11
|
+
export declare class VolumeControl extends BaseComponent {
|
|
12
|
+
private trackRect;
|
|
13
|
+
private onPointerMove;
|
|
14
|
+
private onPointerUp;
|
|
15
|
+
protected onConnect(): void;
|
|
16
|
+
private eventToVolume;
|
|
17
|
+
private handlePointerDown;
|
|
18
|
+
private getVolumeIcon;
|
|
19
|
+
protected template(): TemplateResult;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=volume-control.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"volume-control.d.ts","sourceRoot":"","sources":["../../../../../../src/skin/controls/volume-control.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGjD;;;;;;;GAOG;AACH,qBAAa,aAAc,SAAQ,aAAa;IAC9C,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,aAAa,CAA+C;IACpE,OAAO,CAAC,WAAW,CAA+C;IAElE,SAAS,CAAC,SAAS,IAAI,IAAI;IAiB3B,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,aAAa;IAMrB,SAAS,CAAC,QAAQ,IAAI,cAAc;CAwBrC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MODERN_ICONS — Material-design-style filled icons for the modern theme.
|
|
3
|
+
*
|
|
4
|
+
* These override the default Lucide stroke icons. The modern theme uses
|
|
5
|
+
* fill-based icons with fill="currentColor" rather than stroked paths.
|
|
6
|
+
*
|
|
7
|
+
* Extracted from the player-reference.html design.
|
|
8
|
+
*/
|
|
9
|
+
export declare const MODERN_ICONS: Record<string, string>;
|
|
10
|
+
//# sourceMappingURL=icons-modern.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icons-modern.d.ts","sourceRoot":"","sources":["../../../../../../src/skin/icons/icons-modern.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA8C/C,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DEFAULT_ICONS maps icon names to SVG symbol markup.
|
|
3
|
+
* Each entry is a <symbol id="eb-{name}" viewBox="0 0 24 24">...</symbol> string.
|
|
4
|
+
*
|
|
5
|
+
* Icons are from Lucide (https://lucide.dev) — stroke-based, 24x24 viewBox.
|
|
6
|
+
* CSS sets stroke: currentColor, stroke-width: 2, stroke-linecap/linejoin: round.
|
|
7
|
+
* Skin authors can extend with registerBrandIcons() from sprite.ts.
|
|
8
|
+
*/
|
|
9
|
+
export declare const DEFAULT_ICONS: Record<string, string>;
|
|
10
|
+
//# sourceMappingURL=icons.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../../../../../src/skin/icons/icons.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAmDhD,CAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { html as litHtml } from 'lit-html';
|
|
2
|
+
import type { TemplateResult } from 'lit-html';
|
|
3
|
+
/**
|
|
4
|
+
* Injects the SVG sprite into document.body.
|
|
5
|
+
*
|
|
6
|
+
* Calling this multiple times is safe — if the sprite is already injected
|
|
7
|
+
* and no extra icons are provided, it returns early.
|
|
8
|
+
*
|
|
9
|
+
* If extraIcons are provided, the sprite innerHTML is updated with the
|
|
10
|
+
* merged symbol set.
|
|
11
|
+
*
|
|
12
|
+
* @param extraIcons - Additional SVG symbol strings to merge with DEFAULT_ICONS
|
|
13
|
+
*/
|
|
14
|
+
export declare function injectSprite(extraIcons?: Record<string, string>): void;
|
|
15
|
+
/**
|
|
16
|
+
* Returns a lit-html TemplateResult for an SVG icon using the sprite.
|
|
17
|
+
*
|
|
18
|
+
* The icon is referenced via <use href="#eb-{name}">.
|
|
19
|
+
* The sprite must be injected before icons are rendered to screen.
|
|
20
|
+
*
|
|
21
|
+
* @param name - Icon name (e.g. 'play', 'pause', 'fullscreen')
|
|
22
|
+
* @param className - Optional additional CSS class
|
|
23
|
+
*/
|
|
24
|
+
export declare function icon(name: string, className?: string): TemplateResult;
|
|
25
|
+
/**
|
|
26
|
+
* Merges additional brand-specific SVG symbols into the sprite.
|
|
27
|
+
* Calling this updates the #eb-sprite element with the new symbols.
|
|
28
|
+
*
|
|
29
|
+
* @param extras - Record mapping icon names to SVG symbol strings
|
|
30
|
+
*/
|
|
31
|
+
export declare function registerBrandIcons(extras: Record<string, string>): void;
|
|
32
|
+
/**
|
|
33
|
+
* Resets the sprite back to DEFAULT_ICONS, discarding any brand overrides.
|
|
34
|
+
* The DOM sprite element is updated immediately.
|
|
35
|
+
*/
|
|
36
|
+
export declare function resetSprite(): void;
|
|
37
|
+
export type { TemplateResult };
|
|
38
|
+
export { litHtml as html };
|
|
39
|
+
//# sourceMappingURL=sprite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sprite.d.ts","sourceRoot":"","sources":["../../../../../../src/skin/icons/sprite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,UAAU,CAAA;AAE1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAiB9C;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAwBtE;AAED;;;;;;;;GAQG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,cAAc,CAGrE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAEvE;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAOlC;AAGD,YAAY,EAAE,cAAc,EAAE,CAAA;AAG9B,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import './css/skin.css';
|
|
2
|
+
export { BaseComponent } from './base-component';
|
|
3
|
+
export { SkinRoot } from './skin-root';
|
|
4
|
+
export { TopBar } from './bars/top-bar';
|
|
5
|
+
export { BottomBar } from './bars/bottom-bar';
|
|
6
|
+
export { MiddleBar } from './bars/middle-bar';
|
|
7
|
+
export { PlayPauseButton } from './controls/play-pause-button';
|
|
8
|
+
export { VolumeControl } from './controls/volume-control';
|
|
9
|
+
export { TimeDisplay } from './controls/time-display';
|
|
10
|
+
export { LiveSyncButton } from './controls/live-sync-button';
|
|
11
|
+
export { FullscreenButton } from './controls/fullscreen-button';
|
|
12
|
+
export { PipButton } from './controls/pip-button';
|
|
13
|
+
export { CastButton } from './controls/cast-button';
|
|
14
|
+
export { SettingsPanel } from './controls/settings-panel';
|
|
15
|
+
export { Seekbar } from './controls/seekbar';
|
|
16
|
+
export { LoadingSpinner } from './overlays/loading-spinner';
|
|
17
|
+
export { ErrorMessage } from './overlays/error-message';
|
|
18
|
+
export { SocialsOverlay } from './overlays/socials-overlay';
|
|
19
|
+
export { InfoOverlay } from './overlays/info-overlay';
|
|
20
|
+
export { AutoHideController } from './controllers/auto-hide';
|
|
21
|
+
export { KeyboardController } from './controllers/keyboard';
|
|
22
|
+
export { SnrtRadioCarousel } from './brand/snrt-radio-carousel';
|
|
23
|
+
export { ForjaPlaylistBar } from './brand/forja-playlist-bar';
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/skin/index.ts"],"names":[],"mappings":"AACA,OAAO,gBAAgB,CAAA;AAGvB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAGhD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAGtC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAG5C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAGrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAG3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { TemplateResult } from 'lit-html';
|
|
2
|
+
import { BaseComponent } from '../base-component';
|
|
3
|
+
/**
|
|
4
|
+
* Error message overlay.
|
|
5
|
+
*
|
|
6
|
+
* Visible when state.error is not null.
|
|
7
|
+
* Shows the error string (raw text — i18n lookup can be applied at a higher level).
|
|
8
|
+
* Has a retry button that emits 'request-reload'.
|
|
9
|
+
*/
|
|
10
|
+
export declare class ErrorMessage extends BaseComponent {
|
|
11
|
+
protected onConnect(): void;
|
|
12
|
+
protected template(): TemplateResult;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=error-message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-message.d.ts","sourceRoot":"","sources":["../../../../../../src/skin/overlays/error-message.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEjD;;;;;;GAMG;AACH,qBAAa,YAAa,SAAQ,aAAa;IAC7C,SAAS,CAAC,SAAS,IAAI,IAAI;IAK3B,SAAS,CAAC,QAAQ,IAAI,cAAc;CAmBrC"}
|