eb-player 2.5.2 → 2.5.4

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.
Files changed (157) hide show
  1. package/dist/build/eb-player.css +1 -3367
  2. package/dist/build/ebplayer.bundle.js +177 -8721
  3. package/dist/build/types/src/core/browser-support.d.ts +29 -0
  4. package/dist/build/types/src/core/command-handler.d.ts +0 -1
  5. package/dist/build/types/src/core/config.d.ts +0 -1
  6. package/dist/build/types/src/core/engine-state-sync.d.ts +0 -1
  7. package/dist/build/types/src/core/event-bus.d.ts +0 -1
  8. package/dist/build/types/src/core/fsm.d.ts +0 -1
  9. package/dist/build/types/src/core/i18n.d.ts +0 -1
  10. package/dist/build/types/src/core/index.d.ts +0 -1
  11. package/dist/build/types/src/core/lifecycle.d.ts +0 -1
  12. package/dist/build/types/src/core/player-state.d.ts +0 -1
  13. package/dist/build/types/src/core/types.d.ts +0 -1
  14. package/dist/build/types/src/eb-player-standalone.d.ts +0 -1
  15. package/dist/build/types/src/eb-player.d.ts +0 -1
  16. package/dist/build/types/src/engines/abr/dash.d.ts +0 -1
  17. package/dist/build/types/src/engines/abr/hls.d.ts +0 -1
  18. package/dist/build/types/src/engines/base-engine.d.ts +13 -1
  19. package/dist/build/types/src/engines/cdn-loader.d.ts +0 -1
  20. package/dist/build/types/src/engines/cdn-token-manager.d.ts +0 -1
  21. package/dist/build/types/src/engines/dash.d.ts +0 -1
  22. package/dist/build/types/src/engines/drm.d.ts +0 -1
  23. package/dist/build/types/src/engines/hls-discontinuity-patch.d.ts +0 -1
  24. package/dist/build/types/src/engines/hls.d.ts +0 -1
  25. package/dist/build/types/src/engines/index.d.ts +0 -1
  26. package/dist/build/types/src/engines/ios/hls.d.ts +0 -1
  27. package/dist/build/types/src/engines/poster/hls.d.ts +0 -1
  28. package/dist/build/types/src/engines/retry/dash.d.ts +0 -1
  29. package/dist/build/types/src/engines/retry/hls.d.ts +0 -1
  30. package/dist/build/types/src/engines/segment-token-loader.d.ts +0 -1
  31. package/dist/build/types/src/engines/snapshot/dash.d.ts +0 -1
  32. package/dist/build/types/src/engines/snapshot/hls.d.ts +0 -1
  33. package/dist/build/types/src/engines/stall-watchdog.d.ts +0 -1
  34. package/dist/build/types/src/integrations/ads-manager.d.ts +0 -1
  35. package/dist/build/types/src/integrations/chromecast-manager.d.ts +0 -1
  36. package/dist/build/types/src/integrations/epg-manager.d.ts +0 -1
  37. package/dist/build/types/src/integrations/index.d.ts +0 -1
  38. package/dist/build/types/src/integrations/intro-stream-manager.d.ts +0 -1
  39. package/dist/build/types/src/integrations/p2p-manager.d.ts +0 -1
  40. package/dist/build/types/src/integrations/playlist-manager.d.ts +0 -1
  41. package/dist/build/types/src/skin/bars/bottom-bar.d.ts +0 -1
  42. package/dist/build/types/src/skin/bars/middle-bar.d.ts +0 -1
  43. package/dist/build/types/src/skin/bars/top-bar.d.ts +0 -1
  44. package/dist/build/types/src/skin/base-component.d.ts +10 -1
  45. package/dist/build/types/src/skin/brand/forja-playlist-bar.d.ts +0 -1
  46. package/dist/build/types/src/skin/brand/snrt-radio-carousel.d.ts +0 -1
  47. package/dist/build/types/src/skin/component-registry.d.ts +0 -1
  48. package/dist/build/types/src/skin/controllers/auto-hide.d.ts +0 -1
  49. package/dist/build/types/src/skin/controllers/keyboard.d.ts +0 -1
  50. package/dist/build/types/src/skin/controls/cast-button.d.ts +0 -1
  51. package/dist/build/types/src/skin/controls/channel-name.d.ts +0 -1
  52. package/dist/build/types/src/skin/controls/forward-button.d.ts +0 -1
  53. package/dist/build/types/src/skin/controls/fullscreen-button.d.ts +0 -1
  54. package/dist/build/types/src/skin/controls/info-button.d.ts +0 -1
  55. package/dist/build/types/src/skin/controls/live-sync-button.d.ts +0 -1
  56. package/dist/build/types/src/skin/controls/pip-button.d.ts +0 -1
  57. package/dist/build/types/src/skin/controls/play-pause-button.d.ts +0 -1
  58. package/dist/build/types/src/skin/controls/rewind-button.d.ts +0 -1
  59. package/dist/build/types/src/skin/controls/seekbar.d.ts +0 -1
  60. package/dist/build/types/src/skin/controls/settings-panel.d.ts +0 -1
  61. package/dist/build/types/src/skin/controls/share-button.d.ts +0 -1
  62. package/dist/build/types/src/skin/controls/time-display.d.ts +0 -1
  63. package/dist/build/types/src/skin/controls/volume-control.d.ts +13 -4
  64. package/dist/build/types/src/skin/icons/icons-modern.d.ts +0 -1
  65. package/dist/build/types/src/skin/icons/icons.d.ts +0 -1
  66. package/dist/build/types/src/skin/icons/sprite.d.ts +0 -1
  67. package/dist/build/types/src/skin/index.d.ts +0 -1
  68. package/dist/build/types/src/skin/overlays/error-message.d.ts +0 -1
  69. package/dist/build/types/src/skin/overlays/info-overlay.d.ts +0 -1
  70. package/dist/build/types/src/skin/overlays/loading-spinner.d.ts +0 -1
  71. package/dist/build/types/src/skin/overlays/preroll-overlay.d.ts +0 -1
  72. package/dist/build/types/src/skin/overlays/socials-overlay.d.ts +0 -1
  73. package/dist/build/types/src/skin/overlays/toast-notification.d.ts +0 -1
  74. package/dist/build/types/src/skin/skin-root.d.ts +0 -1
  75. package/dist/build/types/src/utils/chapters.d.ts +0 -1
  76. package/dist/build/types/src/utils/format-duration.d.ts +0 -1
  77. package/dist/build/types/src/utils/format-wall-clock.d.ts +0 -1
  78. package/dist/build/types/src/utils/play-quietly.d.ts +17 -0
  79. package/dist/build/types/src/utils/settings-helpers.d.ts +0 -1
  80. package/dist/eb-player.css +1 -3367
  81. package/package.json +5 -3
  82. package/dist/build/ebplayer.bundle.js.map +0 -1
  83. package/dist/build/types/src/core/command-handler.d.ts.map +0 -1
  84. package/dist/build/types/src/core/config.d.ts.map +0 -1
  85. package/dist/build/types/src/core/engine-state-sync.d.ts.map +0 -1
  86. package/dist/build/types/src/core/event-bus.d.ts.map +0 -1
  87. package/dist/build/types/src/core/fsm.d.ts.map +0 -1
  88. package/dist/build/types/src/core/i18n.d.ts.map +0 -1
  89. package/dist/build/types/src/core/index.d.ts.map +0 -1
  90. package/dist/build/types/src/core/lifecycle.d.ts.map +0 -1
  91. package/dist/build/types/src/core/player-state.d.ts.map +0 -1
  92. package/dist/build/types/src/core/types.d.ts.map +0 -1
  93. package/dist/build/types/src/eb-player-standalone.d.ts.map +0 -1
  94. package/dist/build/types/src/eb-player.d.ts.map +0 -1
  95. package/dist/build/types/src/engines/abr/dash.d.ts.map +0 -1
  96. package/dist/build/types/src/engines/abr/hls.d.ts.map +0 -1
  97. package/dist/build/types/src/engines/base-engine.d.ts.map +0 -1
  98. package/dist/build/types/src/engines/cdn-loader.d.ts.map +0 -1
  99. package/dist/build/types/src/engines/cdn-token-manager.d.ts.map +0 -1
  100. package/dist/build/types/src/engines/dash.d.ts.map +0 -1
  101. package/dist/build/types/src/engines/drm.d.ts.map +0 -1
  102. package/dist/build/types/src/engines/hls-discontinuity-patch.d.ts.map +0 -1
  103. package/dist/build/types/src/engines/hls.d.ts.map +0 -1
  104. package/dist/build/types/src/engines/index.d.ts.map +0 -1
  105. package/dist/build/types/src/engines/ios/hls.d.ts.map +0 -1
  106. package/dist/build/types/src/engines/poster/hls.d.ts.map +0 -1
  107. package/dist/build/types/src/engines/retry/dash.d.ts.map +0 -1
  108. package/dist/build/types/src/engines/retry/hls.d.ts.map +0 -1
  109. package/dist/build/types/src/engines/segment-token-loader.d.ts.map +0 -1
  110. package/dist/build/types/src/engines/snapshot/dash.d.ts.map +0 -1
  111. package/dist/build/types/src/engines/snapshot/hls.d.ts.map +0 -1
  112. package/dist/build/types/src/engines/stall-watchdog.d.ts.map +0 -1
  113. package/dist/build/types/src/integrations/ads-manager.d.ts.map +0 -1
  114. package/dist/build/types/src/integrations/chromecast-manager.d.ts.map +0 -1
  115. package/dist/build/types/src/integrations/epg-manager.d.ts.map +0 -1
  116. package/dist/build/types/src/integrations/index.d.ts.map +0 -1
  117. package/dist/build/types/src/integrations/intro-stream-manager.d.ts.map +0 -1
  118. package/dist/build/types/src/integrations/p2p-manager.d.ts.map +0 -1
  119. package/dist/build/types/src/integrations/playlist-manager.d.ts.map +0 -1
  120. package/dist/build/types/src/skin/bars/bottom-bar.d.ts.map +0 -1
  121. package/dist/build/types/src/skin/bars/middle-bar.d.ts.map +0 -1
  122. package/dist/build/types/src/skin/bars/top-bar.d.ts.map +0 -1
  123. package/dist/build/types/src/skin/base-component.d.ts.map +0 -1
  124. package/dist/build/types/src/skin/brand/forja-playlist-bar.d.ts.map +0 -1
  125. package/dist/build/types/src/skin/brand/snrt-radio-carousel.d.ts.map +0 -1
  126. package/dist/build/types/src/skin/component-registry.d.ts.map +0 -1
  127. package/dist/build/types/src/skin/controllers/auto-hide.d.ts.map +0 -1
  128. package/dist/build/types/src/skin/controllers/keyboard.d.ts.map +0 -1
  129. package/dist/build/types/src/skin/controls/cast-button.d.ts.map +0 -1
  130. package/dist/build/types/src/skin/controls/channel-name.d.ts.map +0 -1
  131. package/dist/build/types/src/skin/controls/forward-button.d.ts.map +0 -1
  132. package/dist/build/types/src/skin/controls/fullscreen-button.d.ts.map +0 -1
  133. package/dist/build/types/src/skin/controls/info-button.d.ts.map +0 -1
  134. package/dist/build/types/src/skin/controls/live-sync-button.d.ts.map +0 -1
  135. package/dist/build/types/src/skin/controls/pip-button.d.ts.map +0 -1
  136. package/dist/build/types/src/skin/controls/play-pause-button.d.ts.map +0 -1
  137. package/dist/build/types/src/skin/controls/rewind-button.d.ts.map +0 -1
  138. package/dist/build/types/src/skin/controls/seekbar.d.ts.map +0 -1
  139. package/dist/build/types/src/skin/controls/settings-panel.d.ts.map +0 -1
  140. package/dist/build/types/src/skin/controls/share-button.d.ts.map +0 -1
  141. package/dist/build/types/src/skin/controls/time-display.d.ts.map +0 -1
  142. package/dist/build/types/src/skin/controls/volume-control.d.ts.map +0 -1
  143. package/dist/build/types/src/skin/icons/icons-modern.d.ts.map +0 -1
  144. package/dist/build/types/src/skin/icons/icons.d.ts.map +0 -1
  145. package/dist/build/types/src/skin/icons/sprite.d.ts.map +0 -1
  146. package/dist/build/types/src/skin/index.d.ts.map +0 -1
  147. package/dist/build/types/src/skin/overlays/error-message.d.ts.map +0 -1
  148. package/dist/build/types/src/skin/overlays/info-overlay.d.ts.map +0 -1
  149. package/dist/build/types/src/skin/overlays/loading-spinner.d.ts.map +0 -1
  150. package/dist/build/types/src/skin/overlays/preroll-overlay.d.ts.map +0 -1
  151. package/dist/build/types/src/skin/overlays/socials-overlay.d.ts.map +0 -1
  152. package/dist/build/types/src/skin/overlays/toast-notification.d.ts.map +0 -1
  153. package/dist/build/types/src/skin/skin-root.d.ts.map +0 -1
  154. package/dist/build/types/src/utils/chapters.d.ts.map +0 -1
  155. package/dist/build/types/src/utils/format-duration.d.ts.map +0 -1
  156. package/dist/build/types/src/utils/format-wall-clock.d.ts.map +0 -1
  157. package/dist/build/types/src/utils/settings-helpers.d.ts.map +0 -1
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Runtime feature floor of the player.
3
+ *
4
+ * The bundle's *syntax* floor is ES2017 (see scripts/check-syntax-floor.ts),
5
+ * which parses on Chrome 55+, Safari 10.1+ and Firefox 52+. Some of those
6
+ * engines still lack runtime APIs the player cannot work without:
7
+ *
8
+ * - Proxy — the reactive PlayerState store (Chrome 49, Safari 10)
9
+ * - AbortController — every subscription/listener cleanup (Chrome 66,
10
+ * Safari 12.1, Firefox 57)
11
+ *
12
+ * On such a browser `start()` used to throw a bare ReferenceError from deep
13
+ * inside PlayerController's constructor, leaving the integrator's container
14
+ * as an empty white box. This module lets start() detect the gap up front
15
+ * and show a readable message instead, using only pre-ES2015 DOM APIs.
16
+ */
17
+ export declare const REQUIRED_RUNTIME_FEATURES: readonly ["Proxy", "AbortController"];
18
+ /**
19
+ * Returns the names of the required runtime features that are not
20
+ * constructors on `scope` (defaults to `window`).
21
+ */
22
+ export declare function findMissingRuntimeFeatures(scope?: Record<string, unknown>): string[];
23
+ /**
24
+ * Replaces the container's content with the skin's error overlay markup
25
+ * (same class names as ErrorMessage, so the shipped CSS styles it) carrying
26
+ * the translated "browser not supported" text. Plain DOM calls only: this
27
+ * runs precisely on the browsers where lit-html/PlayerState cannot.
28
+ */
29
+ export declare function renderUnsupportedBrowser(container: HTMLElement, lang?: string): void;
@@ -47,4 +47,3 @@ export declare class CommandHandler {
47
47
  private showToast;
48
48
  private wireAbortCleanup;
49
49
  }
50
- //# sourceMappingURL=command-handler.d.ts.map
@@ -202,4 +202,3 @@ export declare const DEFAULT_CONFIG: PlayerConfig;
202
202
  * - null/undefined entries: silently ignored
203
203
  */
204
204
  export declare function mergeConfig(...configs: Array<Partial<PlayerConfig> | null | undefined>): PlayerConfig;
205
- //# sourceMappingURL=config.d.ts.map
@@ -35,4 +35,3 @@ export declare abstract class EngineStateSync {
35
35
  */
36
36
  abstract detach(): void;
37
37
  }
38
- //# sourceMappingURL=engine-state-sync.d.ts.map
@@ -91,4 +91,3 @@ export declare class TypedEventBus {
91
91
  dispose(): void;
92
92
  }
93
93
  export {};
94
- //# sourceMappingURL=event-bus.d.ts.map
@@ -33,4 +33,3 @@ export declare const TRANSITIONS: Readonly<Record<PlaybackState, ReadonlyArray<P
33
33
  * Returns true if transitioning from `from` to `to` is valid per the FSM.
34
34
  */
35
35
  export declare function isValidTransition(from: PlaybackState, to: PlaybackState): boolean;
36
- //# sourceMappingURL=fsm.d.ts.map
@@ -48,4 +48,3 @@ export declare class I18n {
48
48
  getLocale(): string;
49
49
  }
50
50
  export {};
51
- //# sourceMappingURL=i18n.d.ts.map
@@ -20,4 +20,3 @@ export type { PlayerConfig, SkinColors, EngineSettings } from './config';
20
20
  export { I18n } from './i18n';
21
21
  export { PlayerController } from './lifecycle';
22
22
  export { EngineStateSync } from './engine-state-sync';
23
- //# sourceMappingURL=index.d.ts.map
@@ -106,4 +106,3 @@ export declare class PlayerController {
106
106
  */
107
107
  private initIntegrations;
108
108
  }
109
- //# sourceMappingURL=lifecycle.d.ts.map
@@ -12,4 +12,3 @@ import type { StateMap, PlayerState } from './types';
12
12
  */
13
13
  export declare function createPlayerState(initial?: Partial<StateMap>): PlayerState;
14
14
  export type { PlayerState };
15
- //# sourceMappingURL=player-state.d.ts.map
@@ -82,4 +82,3 @@ export type PlayerState = StateMap & {
82
82
  signal?: AbortSignal;
83
83
  }) => void;
84
84
  };
85
- //# sourceMappingURL=types.d.ts.map
@@ -20,4 +20,3 @@ import type { PlayerReference } from './eb-player';
20
20
  * Merge order: DEFAULT_CONFIG → brandConfig → runtimeConfig
21
21
  */
22
22
  export declare function start(runtimeConfig?: Partial<PlayerConfig>): PlayerReference;
23
- //# sourceMappingURL=eb-player-standalone.d.ts.map
@@ -57,4 +57,3 @@ export declare function destroy(): void;
57
57
  declare const VERSION: string;
58
58
  export { AVAILABLE_THEMES, THEME_LAYOUTS };
59
59
  export { VERSION as version };
60
- //# sourceMappingURL=eb-player.d.ts.map
@@ -53,4 +53,3 @@ export interface DashjsForAbr {
53
53
  }
54
54
  export declare function createDashAbrRule(dashjs: DashjsForAbr): unknown;
55
55
  export {};
56
- //# sourceMappingURL=dash.d.ts.map
@@ -102,4 +102,3 @@ interface HlsFragStats {
102
102
  */
103
103
  export declare function createHlsAbrController(HlsConstructor: AbrHlsConstructorLike): AbrControllerConstructor;
104
104
  export {};
105
- //# sourceMappingURL=hls.d.ts.map
@@ -26,6 +26,14 @@ export declare abstract class BaseEngine extends EngineStateSync {
26
26
  */
27
27
  protected loadSourceUrl: string;
28
28
  private watchdog;
29
+ /**
30
+ * Every native video listener bound by bindVideoEvents(), so detach() can
31
+ * remove them itself. They are also registered with `{ signal }`, but
32
+ * Chromium < 90, Safari < 15 and Firefox < 86 silently ignore that option:
33
+ * on those engines the listeners outlived destroy() and kept writing a
34
+ * disposed PlayerState on every timeupdate (Sentry FORJA-FRONTWEB-5B9/5BA).
35
+ */
36
+ private videoListeners;
29
37
  /**
30
38
  * Promise that resolves when the engine driver (hls.js/dash.js) is created
31
39
  * and ready for integration (e.g., P2P SDK). Resolved inside onAttach().
@@ -49,6 +57,11 @@ export declare abstract class BaseEngine extends EngineStateSync {
49
57
  */
50
58
  setLoadSource(src: string): void;
51
59
  protected bindVideoEvents(video: HTMLVideoElement, state: PlayerState, signal: AbortSignal): void;
60
+ /**
61
+ * Removes every listener bound by bindVideoEvents() — the explicit half of
62
+ * the cleanup that `{ signal }` was supposed to do on its own.
63
+ */
64
+ private unbindVideoEvents;
52
65
  protected abstract recoverFromStall(attempt: number): void;
53
66
  protected abstract onAttach(): Promise<void> | void;
54
67
  protected abstract onDetach(): void;
@@ -69,4 +82,3 @@ export declare abstract class BaseEngine extends EngineStateSync {
69
82
  */
70
83
  abstract getDriver(): unknown | null;
71
84
  }
72
- //# sourceMappingURL=base-engine.d.ts.map
@@ -17,4 +17,3 @@ export interface LoadScriptOptions {
17
17
  * - If neither onload nor onerror fires within `options.timeout` ms (default 10000), rejects.
18
18
  */
19
19
  export declare function loadScript<T>(url: string, globalName: string, options?: LoadScriptOptions): Promise<T>;
20
- //# sourceMappingURL=cdn-loader.d.ts.map
@@ -156,4 +156,3 @@ export declare class CDNTokenManager {
156
156
  responseParameters?: CloudflareResponseParameters | ResponseParameters;
157
157
  }): string;
158
158
  }
159
- //# sourceMappingURL=cdn-token-manager.d.ts.map
@@ -97,4 +97,3 @@ export declare class DashEngine extends BaseEngine {
97
97
  private handleDriverError;
98
98
  }
99
99
  export {};
100
- //# sourceMappingURL=dash.d.ts.map
@@ -51,4 +51,3 @@ export declare class DrmConfigurator {
51
51
  */
52
52
  buildHlsConfig(engineSettings: EngineSettings): DrmConfig;
53
53
  }
54
- //# sourceMappingURL=drm.d.ts.map
@@ -40,4 +40,3 @@ interface HlsEvents {
40
40
  }
41
41
  export declare function applyDiscontinuityWorkaround(driver: HlsLike, hlsEvents: HlsEvents): void;
42
42
  export {};
43
- //# sourceMappingURL=hls-discontinuity-patch.d.ts.map
@@ -86,4 +86,3 @@ export declare class HlsEngine extends BaseEngine {
86
86
  private _onSubtitleTracksUpdated;
87
87
  private _onSubtitleTrackSwitch;
88
88
  }
89
- //# sourceMappingURL=hls.d.ts.map
@@ -23,4 +23,3 @@ export { createHlsAbrController } from './abr/hls';
23
23
  export { createDashAbrRule } from './abr/dash';
24
24
  export { HlsSnapshotHandler } from './snapshot/hls';
25
25
  export { DashSnapshotHandler } from './snapshot/dash';
26
- //# sourceMappingURL=index.d.ts.map
@@ -17,4 +17,3 @@ interface IosHandler {
17
17
  }
18
18
  export declare function createIosHandler(src: string): IosHandler;
19
19
  export {};
20
- //# sourceMappingURL=hls.d.ts.map
@@ -32,4 +32,3 @@ interface PosterHandler {
32
32
  }
33
33
  export declare function createPosterHandler(): PosterHandler;
34
34
  export {};
35
- //# sourceMappingURL=hls.d.ts.map
@@ -48,4 +48,3 @@ export interface DashRetryOptions {
48
48
  }
49
49
  export declare function applyDashRetrySettings(driver: DashDriverLike, options?: DashRetryOptions): void;
50
50
  export {};
51
- //# sourceMappingURL=dash.d.ts.map
@@ -50,4 +50,3 @@ interface EngineContext {
50
50
  }
51
51
  export declare function handleHlsRetry(driver: HlsDriverLike, engine?: EngineContext): void;
52
52
  export {};
53
- //# sourceMappingURL=hls.d.ts.map
@@ -148,4 +148,3 @@ export declare function readPlaylistGrantExpiry(parentPlaylistUrl: string): {
148
148
  * used to acquire or refresh a token.
149
149
  */
150
150
  export declare function createSegmentTokenLoaderClass(BaseLoader: SegmentLoaderClass, tokenSource: SegmentSigningTokenSource): SegmentLoaderClass;
151
- //# sourceMappingURL=segment-token-loader.d.ts.map
@@ -52,4 +52,3 @@ export declare class DashSnapshotHandler {
52
52
  private cleanup;
53
53
  }
54
54
  export {};
55
- //# sourceMappingURL=dash.d.ts.map
@@ -103,4 +103,3 @@ export declare class HlsSnapshotHandler {
103
103
  destroy(): void;
104
104
  }
105
105
  export {};
106
- //# sourceMappingURL=hls.d.ts.map
@@ -38,4 +38,3 @@ export declare class StallWatchdog {
38
38
  stop(): void;
39
39
  private tick;
40
40
  }
41
- //# sourceMappingURL=stall-watchdog.d.ts.map
@@ -76,4 +76,3 @@ export declare class AdsManager {
76
76
  */
77
77
  private waitForUserGesture;
78
78
  }
79
- //# sourceMappingURL=ads-manager.d.ts.map
@@ -47,4 +47,3 @@ export declare class ChromecastManager {
47
47
  private buildCastOptions;
48
48
  private registerAbortCleanup;
49
49
  }
50
- //# sourceMappingURL=chromecast-manager.d.ts.map
@@ -19,4 +19,3 @@ export declare class EpgManager {
19
19
  start(config: PlayerConfig, state: PlayerState, signal: AbortSignal): Promise<void>;
20
20
  private fetchEpg;
21
21
  }
22
- //# sourceMappingURL=epg-manager.d.ts.map
@@ -4,4 +4,3 @@ export { P2PManager } from './p2p-manager';
4
4
  export { PlaylistManager } from './playlist-manager';
5
5
  export { AdsManager } from './ads-manager';
6
6
  export { IntroStreamManager } from './intro-stream-manager';
7
- //# sourceMappingURL=index.d.ts.map
@@ -59,4 +59,3 @@ export declare class IntroStreamManager {
59
59
  */
60
60
  init(config: PlayerConfig, state: PlayerState, bus: TypedEventBus, video: HTMLVideoElement, signal: AbortSignal): Promise<void>;
61
61
  }
62
- //# sourceMappingURL=intro-stream-manager.d.ts.map
@@ -39,4 +39,3 @@ export declare class P2PManager {
39
39
  */
40
40
  stop(): void;
41
41
  }
42
- //# sourceMappingURL=p2p-manager.d.ts.map
@@ -18,4 +18,3 @@ export declare class PlaylistManager {
18
18
  init(config: PlayerConfig, state: PlayerState, bus: TypedEventBus, signal: AbortSignal): void;
19
19
  private advance;
20
20
  }
21
- //# sourceMappingURL=playlist-manager.d.ts.map
@@ -13,4 +13,3 @@ export declare class BottomBar extends BaseComponent {
13
13
  protected onConnect(): void;
14
14
  protected template(): TemplateResult;
15
15
  }
16
- //# sourceMappingURL=bottom-bar.d.ts.map
@@ -13,4 +13,3 @@ export declare class MiddleBar extends BaseComponent {
13
13
  protected template(): TemplateResult;
14
14
  private handleClick;
15
15
  }
16
- //# sourceMappingURL=middle-bar.d.ts.map
@@ -12,4 +12,3 @@ export declare class TopBar extends BaseComponent {
12
12
  protected onConnect(): void;
13
13
  protected template(): TemplateResult;
14
14
  }
15
- //# sourceMappingURL=top-bar.d.ts.map
@@ -63,7 +63,16 @@ export declare abstract class BaseComponent {
63
63
  /**
64
64
  * Renders the component into this.el using lit-html.
65
65
  * No-op if el is null (e.g., after disconnect()).
66
+ *
67
+ * A render that throws is contained: lit-html keeps its parts alive through
68
+ * comment markers inside the component's subtree, and a DOM rewriter
69
+ * outside the player (page translation, an extension) that rebuilds that
70
+ * markup without the markers breaks the part for good — every later render
71
+ * throws the same `this._$AA.nextSibling is null` and, with a component
72
+ * re-rendering on each state tick, that is thousands of identical errors
73
+ * per session (Sentry FORJA-FRONTWEB-5EZ..5F1). The failure is logged once,
74
+ * the view is unsubscribed from state/bus updates, and render() becomes a
75
+ * no-op. disconnect() stays safe to call afterwards.
66
76
  */
67
77
  protected render(): void;
68
78
  }
69
- //# sourceMappingURL=base-component.d.ts.map
@@ -12,4 +12,3 @@ export declare class ForjaPlaylistBar extends BaseComponent {
12
12
  protected template(): TemplateResult;
13
13
  private formatDuration;
14
14
  }
15
- //# sourceMappingURL=forja-playlist-bar.d.ts.map
@@ -13,4 +13,3 @@ export declare class SnrtRadioCarousel extends BaseComponent {
13
13
  protected template(): TemplateResult;
14
14
  private formatTime;
15
15
  }
16
- //# sourceMappingURL=snrt-radio-carousel.d.ts.map
@@ -13,4 +13,3 @@ export declare const COMPONENT_REGISTRY: Record<ComponentId, ComponentFactory>;
13
13
  */
14
14
  export declare function slotSelector(componentId: ComponentId): string;
15
15
  export {};
16
- //# sourceMappingURL=component-registry.d.ts.map
@@ -24,4 +24,3 @@ export declare class AutoHideController {
24
24
  private show;
25
25
  private hide;
26
26
  }
27
- //# sourceMappingURL=auto-hide.d.ts.map
@@ -26,4 +26,3 @@ import type { PlayerConfig } from '../../core/config';
26
26
  export declare class KeyboardController {
27
27
  constructor(container: HTMLElement, state: PlayerState, bus: TypedEventBus, config: PlayerConfig, signal: AbortSignal);
28
28
  }
29
- //# sourceMappingURL=keyboard.d.ts.map
@@ -12,4 +12,3 @@ export declare class CastButton extends BaseComponent {
12
12
  protected onConnect(): void;
13
13
  protected template(): TemplateResult;
14
14
  }
15
- //# sourceMappingURL=cast-button.d.ts.map
@@ -13,4 +13,3 @@ export declare class ChannelName extends BaseComponent {
13
13
  protected onConnect(): void;
14
14
  protected template(): TemplateResult;
15
15
  }
16
- //# sourceMappingURL=channel-name.d.ts.map
@@ -12,4 +12,3 @@ export declare class ForwardButton extends BaseComponent {
12
12
  protected template(): TemplateResult;
13
13
  private handleClick;
14
14
  }
15
- //# sourceMappingURL=forward-button.d.ts.map
@@ -27,4 +27,3 @@ export declare class FullscreenButton extends BaseComponent {
27
27
  private handleClick;
28
28
  protected template(): TemplateResult;
29
29
  }
30
- //# sourceMappingURL=fullscreen-button.d.ts.map
@@ -7,4 +7,3 @@ export declare class InfoButton extends BaseComponent {
7
7
  protected onConnect(): void;
8
8
  protected template(): TemplateResult;
9
9
  }
10
- //# sourceMappingURL=info-button.d.ts.map
@@ -17,4 +17,3 @@ export declare class LiveSyncButton extends BaseComponent {
17
17
  protected onConnect(): void;
18
18
  protected template(): TemplateResult;
19
19
  }
20
- //# sourceMappingURL=live-sync-button.d.ts.map
@@ -18,4 +18,3 @@ export declare class PipButton extends BaseComponent {
18
18
  private handleClick;
19
19
  protected template(): TemplateResult;
20
20
  }
21
- //# sourceMappingURL=pip-button.d.ts.map
@@ -11,4 +11,3 @@ export declare class PlayPauseButton extends BaseComponent {
11
11
  protected onConnect(): void;
12
12
  protected template(): TemplateResult;
13
13
  }
14
- //# sourceMappingURL=play-pause-button.d.ts.map
@@ -12,4 +12,3 @@ export declare class RewindButton extends BaseComponent {
12
12
  protected template(): TemplateResult;
13
13
  private handleClick;
14
14
  }
15
- //# sourceMappingURL=rewind-button.d.ts.map
@@ -45,4 +45,3 @@ export declare class Seekbar extends BaseComponent {
45
45
  private renderEpgSegments;
46
46
  protected template(): TemplateResult;
47
47
  }
48
- //# sourceMappingURL=seekbar.d.ts.map
@@ -50,4 +50,3 @@ export declare class SettingsPanel extends BaseComponent {
50
50
  private toggleSettings;
51
51
  protected template(): TemplateResult;
52
52
  }
53
- //# sourceMappingURL=settings-panel.d.ts.map
@@ -8,4 +8,3 @@ export declare class ShareButton extends BaseComponent {
8
8
  protected onConnect(): void;
9
9
  protected template(): TemplateResult;
10
10
  }
11
- //# sourceMappingURL=share-button.d.ts.map
@@ -16,4 +16,3 @@ export declare class TimeDisplay extends BaseComponent {
16
16
  private scheduleRender;
17
17
  protected template(): TemplateResult;
18
18
  }
19
- //# sourceMappingURL=time-display.d.ts.map
@@ -4,18 +4,27 @@ import { BaseComponent } from '../base-component';
4
4
  * Volume control with mute toggle button and draggable slider.
5
5
  *
6
6
  * - Mute button emits 'mute-toggle'
7
- * - Slider uses Pointer Events API (pointerdown/pointermove/pointerup)
7
+ * - Slider uses Pointer Events API (pointerdown/pointermove/pointerup/pointercancel)
8
8
  * - Slider fill width reflects current volume (0% to 100%)
9
9
  * - When muted, fill shows 0% visually
10
+ *
11
+ * The document-level drag listeners are stable instance methods, never
12
+ * per-drag closures: a second pointerdown landing during a drag (a second
13
+ * finger on a phone) used to overwrite the stored closure, so the first
14
+ * drag's listeners could never be removed again and kept calling
15
+ * eventToVolume() against a track rect that pointerup had already nulled
16
+ * (Sentry FORJA-FRONTWEB-5E3/5E4). With one function reference per event
17
+ * type, addEventListener is idempotent and removeEventListener always pairs.
10
18
  */
11
19
  export declare class VolumeControl extends BaseComponent {
12
20
  private trackRect;
13
- private onPointerMove;
14
- private onPointerUp;
21
+ private readonly onDocumentPointerMove;
22
+ private readonly onDocumentPointerUp;
23
+ private readonly onDocumentPointerCancel;
15
24
  protected onConnect(): void;
16
25
  private eventToVolume;
17
26
  private handlePointerDown;
27
+ private endDrag;
18
28
  private getVolumeIcon;
19
29
  protected template(): TemplateResult;
20
30
  }
21
- //# sourceMappingURL=volume-control.d.ts.map
@@ -7,4 +7,3 @@
7
7
  * Extracted from the player-reference.html design.
8
8
  */
9
9
  export declare const MODERN_ICONS: Record<string, string>;
10
- //# sourceMappingURL=icons-modern.d.ts.map
@@ -7,4 +7,3 @@
7
7
  * Skin authors can extend with registerBrandIcons() from sprite.ts.
8
8
  */
9
9
  export declare const DEFAULT_ICONS: Record<string, string>;
10
- //# sourceMappingURL=icons.d.ts.map
@@ -36,4 +36,3 @@ export declare function registerBrandIcons(extras: Record<string, string>): void
36
36
  export declare function resetSprite(): void;
37
37
  export type { TemplateResult };
38
38
  export { litHtml as html };
39
- //# sourceMappingURL=sprite.d.ts.map
@@ -21,4 +21,3 @@ export { AutoHideController } from './controllers/auto-hide';
21
21
  export { KeyboardController } from './controllers/keyboard';
22
22
  export { SnrtRadioCarousel } from './brand/snrt-radio-carousel';
23
23
  export { ForjaPlaylistBar } from './brand/forja-playlist-bar';
24
- //# sourceMappingURL=index.d.ts.map
@@ -11,4 +11,3 @@ export declare class ErrorMessage extends BaseComponent {
11
11
  protected onConnect(): void;
12
12
  protected template(): TemplateResult;
13
13
  }
14
- //# sourceMappingURL=error-message.d.ts.map
@@ -12,4 +12,3 @@ export declare class InfoOverlay extends BaseComponent {
12
12
  protected onConnect(): void;
13
13
  protected template(): TemplateResult;
14
14
  }
15
- //# sourceMappingURL=info-overlay.d.ts.map
@@ -14,4 +14,3 @@ export declare class LoadingSpinner extends BaseComponent {
14
14
  protected onConnect(): void;
15
15
  protected template(): TemplateResult;
16
16
  }
17
- //# sourceMappingURL=loading-spinner.d.ts.map
@@ -36,4 +36,3 @@ export declare class PrerollOverlay extends BaseComponent {
36
36
  private handleSkip;
37
37
  private handleOverlayClick;
38
38
  }
39
- //# sourceMappingURL=preroll-overlay.d.ts.map
@@ -14,4 +14,3 @@ export declare class SocialsOverlay extends BaseComponent {
14
14
  protected onConnect(): void;
15
15
  protected template(): TemplateResult;
16
16
  }
17
- //# sourceMappingURL=socials-overlay.d.ts.map
@@ -15,4 +15,3 @@ export declare class ToastNotification extends BaseComponent {
15
15
  protected onConnect(): void;
16
16
  protected template(): TemplateResult;
17
17
  }
18
- //# sourceMappingURL=toast-notification.d.ts.map
@@ -91,4 +91,3 @@ export declare class SkinRoot extends BaseComponent {
91
91
  private invokeExtensions;
92
92
  disconnect(): void;
93
93
  }
94
- //# sourceMappingURL=skin-root.d.ts.map
@@ -13,4 +13,3 @@ export declare function parseChapters(vttContent: string): ChapterMark[];
13
13
  * Returns an empty array if the fetch or parse fails.
14
14
  */
15
15
  export declare function fetchChapters(url: string): Promise<ChapterMark[]>;
16
- //# sourceMappingURL=chapters.d.ts.map
@@ -6,4 +6,3 @@
6
6
  * - >= 3600 seconds → "H:MM:SS"
7
7
  */
8
8
  export declare function formatDuration(seconds: number): string;
9
- //# sourceMappingURL=format-duration.d.ts.map
@@ -3,4 +3,3 @@
3
3
  * Used for live stream time displays.
4
4
  */
5
5
  export declare function formatWallClock(timestampMs: number): string;
6
- //# sourceMappingURL=format-wall-clock.d.ts.map
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Call `video.play()` and swallow its rejection.
3
+ *
4
+ * play() returns a promise that rejects with `AbortError` whenever pause() —
5
+ * or a new load — interrupts the pending play request. That is the normal
6
+ * outcome of a fast pause after play, an ad break, a cast hand-over or a
7
+ * source switch, never something the caller can act on, and left unhandled
8
+ * it reaches the page as an unhandled promise rejection (Sentry issues 18
9
+ * and W, ~420 users/day on forja.ma). Browsers predating the promise return
10
+ * (and jsdom) return undefined, so the catch is only attached when there is
11
+ * something to attach it to.
12
+ */
13
+ /** Anything with a media-element-shaped play(): HTMLVideoElement, or the poster loop's minimal media handle. */
14
+ export interface Playable {
15
+ play(): unknown;
16
+ }
17
+ export declare function playQuietly(video: Playable): void;
@@ -38,4 +38,3 @@ export declare function getSubtitleItems(tracks: SubtitleTrack[], currentTrack:
38
38
  */
39
39
  export declare function getSpeedItems(currentRate: number): SettingsMenuItem[];
40
40
  export {};
41
- //# sourceMappingURL=settings-helpers.d.ts.map