eb-player 2.0.20 → 2.0.21

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 (151) hide show
  1. package/dist/build/ebplayer.bundle.js +586 -138
  2. package/dist/build/ebplayer.bundle.js.map +1 -1
  3. package/dist/build/types/src/core/command-handler.d.ts +50 -0
  4. package/dist/build/types/src/core/command-handler.d.ts.map +1 -0
  5. package/dist/build/types/src/core/config.d.ts +187 -0
  6. package/dist/build/types/src/core/config.d.ts.map +1 -0
  7. package/dist/build/types/src/core/engine-state-sync.d.ts +38 -0
  8. package/dist/build/types/src/core/engine-state-sync.d.ts.map +1 -0
  9. package/dist/build/types/src/core/event-bus.d.ts +91 -0
  10. package/dist/build/types/src/core/event-bus.d.ts.map +1 -0
  11. package/dist/build/types/src/core/fsm.d.ts +30 -0
  12. package/dist/build/types/src/core/fsm.d.ts.map +1 -0
  13. package/dist/build/types/src/core/i18n.d.ts +51 -0
  14. package/dist/build/types/src/core/i18n.d.ts.map +1 -0
  15. package/dist/build/types/src/core/index.d.ts +23 -0
  16. package/dist/build/types/src/core/index.d.ts.map +1 -0
  17. package/dist/build/types/src/core/lifecycle.d.ts +96 -0
  18. package/dist/build/types/src/core/lifecycle.d.ts.map +1 -0
  19. package/dist/build/types/src/core/player-state.d.ts +15 -0
  20. package/dist/build/types/src/core/player-state.d.ts.map +1 -0
  21. package/dist/build/types/src/core/types.d.ts +85 -0
  22. package/dist/build/types/src/core/types.d.ts.map +1 -0
  23. package/dist/build/types/src/eb-player-standalone.d.ts +23 -0
  24. package/dist/build/types/src/eb-player-standalone.d.ts.map +1 -0
  25. package/dist/build/types/src/eb-player.d.ts +56 -0
  26. package/dist/build/types/src/eb-player.d.ts.map +1 -0
  27. package/dist/build/types/src/engines/abr/dash.d.ts +56 -0
  28. package/dist/build/types/src/engines/abr/dash.d.ts.map +1 -0
  29. package/dist/build/types/src/engines/abr/hls.d.ts +105 -0
  30. package/dist/build/types/src/engines/abr/hls.d.ts.map +1 -0
  31. package/dist/build/types/src/engines/base-engine.d.ts +72 -0
  32. package/dist/build/types/src/engines/base-engine.d.ts.map +1 -0
  33. package/dist/build/types/src/engines/cdn-loader.d.ts +20 -0
  34. package/dist/build/types/src/engines/cdn-loader.d.ts.map +1 -0
  35. package/dist/build/types/src/engines/cdn-token-manager.d.ts +137 -0
  36. package/dist/build/types/src/engines/cdn-token-manager.d.ts.map +1 -0
  37. package/dist/build/types/src/engines/dash.d.ts +95 -0
  38. package/dist/build/types/src/engines/dash.d.ts.map +1 -0
  39. package/dist/build/types/src/engines/drm.d.ts +54 -0
  40. package/dist/build/types/src/engines/drm.d.ts.map +1 -0
  41. package/dist/build/types/src/engines/hls-discontinuity-patch.d.ts +43 -0
  42. package/dist/build/types/src/engines/hls-discontinuity-patch.d.ts.map +1 -0
  43. package/dist/build/types/src/engines/hls.d.ts +53 -0
  44. package/dist/build/types/src/engines/hls.d.ts.map +1 -0
  45. package/dist/build/types/src/engines/index.d.ts +26 -0
  46. package/dist/build/types/src/engines/index.d.ts.map +1 -0
  47. package/dist/build/types/src/engines/ios/hls.d.ts +20 -0
  48. package/dist/build/types/src/engines/ios/hls.d.ts.map +1 -0
  49. package/dist/build/types/src/engines/poster/hls.d.ts +35 -0
  50. package/dist/build/types/src/engines/poster/hls.d.ts.map +1 -0
  51. package/dist/build/types/src/engines/retry/dash.d.ts +51 -0
  52. package/dist/build/types/src/engines/retry/dash.d.ts.map +1 -0
  53. package/dist/build/types/src/engines/retry/hls.d.ts +47 -0
  54. package/dist/build/types/src/engines/retry/hls.d.ts.map +1 -0
  55. package/dist/build/types/src/engines/snapshot/dash.d.ts +55 -0
  56. package/dist/build/types/src/engines/snapshot/dash.d.ts.map +1 -0
  57. package/dist/build/types/src/engines/snapshot/hls.d.ts +118 -0
  58. package/dist/build/types/src/engines/snapshot/hls.d.ts.map +1 -0
  59. package/dist/build/types/src/engines/stall-watchdog.d.ts +41 -0
  60. package/dist/build/types/src/engines/stall-watchdog.d.ts.map +1 -0
  61. package/dist/build/types/src/integrations/ads-manager.d.ts +79 -0
  62. package/dist/build/types/src/integrations/ads-manager.d.ts.map +1 -0
  63. package/dist/build/types/src/integrations/chromecast-manager.d.ts +50 -0
  64. package/dist/build/types/src/integrations/chromecast-manager.d.ts.map +1 -0
  65. package/dist/build/types/src/integrations/epg-manager.d.ts +22 -0
  66. package/dist/build/types/src/integrations/epg-manager.d.ts.map +1 -0
  67. package/dist/build/types/src/integrations/index.d.ts +7 -0
  68. package/dist/build/types/src/integrations/index.d.ts.map +1 -0
  69. package/dist/build/types/src/integrations/intro-stream-manager.d.ts +62 -0
  70. package/dist/build/types/src/integrations/intro-stream-manager.d.ts.map +1 -0
  71. package/dist/build/types/src/integrations/p2p-manager.d.ts +42 -0
  72. package/dist/build/types/src/integrations/p2p-manager.d.ts.map +1 -0
  73. package/dist/build/types/src/integrations/playlist-manager.d.ts +21 -0
  74. package/dist/build/types/src/integrations/playlist-manager.d.ts.map +1 -0
  75. package/dist/build/types/src/skin/bars/bottom-bar.d.ts +16 -0
  76. package/dist/build/types/src/skin/bars/bottom-bar.d.ts.map +1 -0
  77. package/dist/build/types/src/skin/bars/middle-bar.d.ts +16 -0
  78. package/dist/build/types/src/skin/bars/middle-bar.d.ts.map +1 -0
  79. package/dist/build/types/src/skin/bars/top-bar.d.ts +15 -0
  80. package/dist/build/types/src/skin/bars/top-bar.d.ts.map +1 -0
  81. package/dist/build/types/src/skin/base-component.d.ts +69 -0
  82. package/dist/build/types/src/skin/base-component.d.ts.map +1 -0
  83. package/dist/build/types/src/skin/brand/forja-playlist-bar.d.ts +15 -0
  84. package/dist/build/types/src/skin/brand/forja-playlist-bar.d.ts.map +1 -0
  85. package/dist/build/types/src/skin/brand/snrt-radio-carousel.d.ts +16 -0
  86. package/dist/build/types/src/skin/brand/snrt-radio-carousel.d.ts.map +1 -0
  87. package/dist/build/types/src/skin/component-registry.d.ts +16 -0
  88. package/dist/build/types/src/skin/component-registry.d.ts.map +1 -0
  89. package/dist/build/types/src/skin/controllers/auto-hide.d.ts +27 -0
  90. package/dist/build/types/src/skin/controllers/auto-hide.d.ts.map +1 -0
  91. package/dist/build/types/src/skin/controllers/keyboard.d.ts +29 -0
  92. package/dist/build/types/src/skin/controllers/keyboard.d.ts.map +1 -0
  93. package/dist/build/types/src/skin/controls/cast-button.d.ts +15 -0
  94. package/dist/build/types/src/skin/controls/cast-button.d.ts.map +1 -0
  95. package/dist/build/types/src/skin/controls/channel-name.d.ts +16 -0
  96. package/dist/build/types/src/skin/controls/channel-name.d.ts.map +1 -0
  97. package/dist/build/types/src/skin/controls/forward-button.d.ts +15 -0
  98. package/dist/build/types/src/skin/controls/forward-button.d.ts.map +1 -0
  99. package/dist/build/types/src/skin/controls/fullscreen-button.d.ts +30 -0
  100. package/dist/build/types/src/skin/controls/fullscreen-button.d.ts.map +1 -0
  101. package/dist/build/types/src/skin/controls/info-button.d.ts +10 -0
  102. package/dist/build/types/src/skin/controls/info-button.d.ts.map +1 -0
  103. package/dist/build/types/src/skin/controls/live-sync-button.d.ts +20 -0
  104. package/dist/build/types/src/skin/controls/live-sync-button.d.ts.map +1 -0
  105. package/dist/build/types/src/skin/controls/pip-button.d.ts +21 -0
  106. package/dist/build/types/src/skin/controls/pip-button.d.ts.map +1 -0
  107. package/dist/build/types/src/skin/controls/play-pause-button.d.ts +14 -0
  108. package/dist/build/types/src/skin/controls/play-pause-button.d.ts.map +1 -0
  109. package/dist/build/types/src/skin/controls/rewind-button.d.ts +15 -0
  110. package/dist/build/types/src/skin/controls/rewind-button.d.ts.map +1 -0
  111. package/dist/build/types/src/skin/controls/seekbar.d.ts +48 -0
  112. package/dist/build/types/src/skin/controls/seekbar.d.ts.map +1 -0
  113. package/dist/build/types/src/skin/controls/settings-panel.d.ts +53 -0
  114. package/dist/build/types/src/skin/controls/settings-panel.d.ts.map +1 -0
  115. package/dist/build/types/src/skin/controls/share-button.d.ts +11 -0
  116. package/dist/build/types/src/skin/controls/share-button.d.ts.map +1 -0
  117. package/dist/build/types/src/skin/controls/time-display.d.ts +19 -0
  118. package/dist/build/types/src/skin/controls/time-display.d.ts.map +1 -0
  119. package/dist/build/types/src/skin/controls/volume-control.d.ts +21 -0
  120. package/dist/build/types/src/skin/controls/volume-control.d.ts.map +1 -0
  121. package/dist/build/types/src/skin/icons/icons-modern.d.ts +10 -0
  122. package/dist/build/types/src/skin/icons/icons-modern.d.ts.map +1 -0
  123. package/dist/build/types/src/skin/icons/icons.d.ts +10 -0
  124. package/dist/build/types/src/skin/icons/icons.d.ts.map +1 -0
  125. package/dist/build/types/src/skin/icons/sprite.d.ts +39 -0
  126. package/dist/build/types/src/skin/icons/sprite.d.ts.map +1 -0
  127. package/dist/build/types/src/skin/index.d.ts +24 -0
  128. package/dist/build/types/src/skin/index.d.ts.map +1 -0
  129. package/dist/build/types/src/skin/overlays/error-message.d.ts +14 -0
  130. package/dist/build/types/src/skin/overlays/error-message.d.ts.map +1 -0
  131. package/dist/build/types/src/skin/overlays/info-overlay.d.ts +15 -0
  132. package/dist/build/types/src/skin/overlays/info-overlay.d.ts.map +1 -0
  133. package/dist/build/types/src/skin/overlays/loading-spinner.d.ts +17 -0
  134. package/dist/build/types/src/skin/overlays/loading-spinner.d.ts.map +1 -0
  135. package/dist/build/types/src/skin/overlays/preroll-overlay.d.ts +39 -0
  136. package/dist/build/types/src/skin/overlays/preroll-overlay.d.ts.map +1 -0
  137. package/dist/build/types/src/skin/overlays/socials-overlay.d.ts +17 -0
  138. package/dist/build/types/src/skin/overlays/socials-overlay.d.ts.map +1 -0
  139. package/dist/build/types/src/skin/overlays/toast-notification.d.ts +18 -0
  140. package/dist/build/types/src/skin/overlays/toast-notification.d.ts.map +1 -0
  141. package/dist/build/types/src/skin/skin-root.d.ts +88 -0
  142. package/dist/build/types/src/skin/skin-root.d.ts.map +1 -0
  143. package/dist/build/types/src/utils/chapters.d.ts +16 -0
  144. package/dist/build/types/src/utils/chapters.d.ts.map +1 -0
  145. package/dist/build/types/src/utils/format-duration.d.ts +9 -0
  146. package/dist/build/types/src/utils/format-duration.d.ts.map +1 -0
  147. package/dist/build/types/src/utils/format-wall-clock.d.ts +6 -0
  148. package/dist/build/types/src/utils/format-wall-clock.d.ts.map +1 -0
  149. package/dist/build/types/src/utils/settings-helpers.d.ts +41 -0
  150. package/dist/build/types/src/utils/settings-helpers.d.ts.map +1 -0
  151. package/package.json +34 -33
@@ -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"}
@@ -0,0 +1,15 @@
1
+ import type { TemplateResult } from 'lit-html';
2
+ import { BaseComponent } from '../base-component';
3
+ /**
4
+ * Info overlay.
5
+ *
6
+ * Visible when state.infoOpen is true.
7
+ * Renders config.about text (using unsafeHTML would allow HTML, but we use
8
+ * textContent binding here to avoid XSS from consumer-provided strings).
9
+ * Close button sets state.infoOpen = false.
10
+ */
11
+ export declare class InfoOverlay extends BaseComponent {
12
+ protected onConnect(): void;
13
+ protected template(): TemplateResult;
14
+ }
15
+ //# sourceMappingURL=info-overlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info-overlay.d.ts","sourceRoot":"","sources":["../../../../../../src/skin/overlays/info-overlay.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEjD;;;;;;;GAOG;AACH,qBAAa,WAAY,SAAQ,aAAa;IAC5C,SAAS,CAAC,SAAS,IAAI,IAAI;IAK3B,SAAS,CAAC,QAAQ,IAAI,cAAc;CAsBrC"}
@@ -0,0 +1,17 @@
1
+ import type { TemplateResult } from 'lit-html';
2
+ import { BaseComponent } from '../base-component';
3
+ /**
4
+ * Buffering/loading spinner overlay.
5
+ *
6
+ * Shows in two modes:
7
+ * - Buffering: visible when state.playbackState === 'buffering' (no text)
8
+ * - Reconnecting: visible when state.reconnecting === true (shows "Reconnecting..." text)
9
+ *
10
+ * Hidden when not buffering and not reconnecting.
11
+ * Renders a CSS arc ring that spins around the center (wrapping the play/pause button).
12
+ */
13
+ export declare class LoadingSpinner extends BaseComponent {
14
+ protected onConnect(): void;
15
+ protected template(): TemplateResult;
16
+ }
17
+ //# sourceMappingURL=loading-spinner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loading-spinner.d.ts","sourceRoot":"","sources":["../../../../../../src/skin/overlays/loading-spinner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEjD;;;;;;;;;GASG;AACH,qBAAa,cAAe,SAAQ,aAAa;IAC/C,SAAS,CAAC,SAAS,IAAI,IAAI;IAM3B,SAAS,CAAC,QAAQ,IAAI,cAAc;CAiBrC"}
@@ -0,0 +1,39 @@
1
+ import type { TemplateResult } from 'lit-html';
2
+ import { BaseComponent } from '../base-component';
3
+ /**
4
+ * PrerollOverlay — V1 parity for the intro-stream skip + click-through UX.
5
+ *
6
+ * Two responsibilities:
7
+ * 1. Skip button + countdown (D-13 / D-14). `Number.isFinite(config.prerollSkip)`
8
+ * gates existence. While the countdown is > 0 the button shows `Skip (N)` and
9
+ * is disabled. At 0 it shows `Skip` and is clickable. Clicking emits
10
+ * `preroll-skip` on the bus.
11
+ * 2. Whole-overlay click-through (D-16, INTRO-04). Clicks landing on the
12
+ * overlay (outside the skip button) open `config.prerollLink` in a new
13
+ * tab with the security argument required by ASVS V14 / T-07-05 (blocks
14
+ * reverse tabnabbing and Referer leaks). Skip-button clicks
15
+ * `stopPropagation()` so they never reach this handler.
16
+ *
17
+ * Hidden (empty div) when `state.introStreamPlaying === false`.
18
+ *
19
+ * The skip countdown is derived from intro PLAYBACK progress
20
+ * (`state.currentTime`), not a wall-clock timer — so it only advances while the
21
+ * intro is actually playing. While the intro is paused (e.g. `autoplay:false`
22
+ * waiting for the user's gesture, or buffering) the countdown holds. Without
23
+ * this the skip control would unlock before the user ever saw the intro play.
24
+ * State subscriptions auto-clean via the `{ signal }` option — no manual timer
25
+ * teardown is required.
26
+ */
27
+ export declare class PrerollOverlay extends BaseComponent {
28
+ protected onConnect(): void;
29
+ /**
30
+ * Seconds remaining before the intro can be skipped, derived from intro
31
+ * playback position (`state.currentTime`). Infinity when prerollSkip is
32
+ * Infinity (no skip button). Clamped at 0 (never negative).
33
+ */
34
+ private remainingSkip;
35
+ protected template(): TemplateResult;
36
+ private handleSkip;
37
+ private handleOverlayClick;
38
+ }
39
+ //# sourceMappingURL=preroll-overlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preroll-overlay.d.ts","sourceRoot":"","sources":["../../../../../../src/skin/overlays/preroll-overlay.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEjD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,cAAe,SAAQ,aAAa;IAC/C,SAAS,CAAC,SAAS,IAAI,IAAI;IAO3B;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAMrB,SAAS,CAAC,QAAQ,IAAI,cAAc;IA6BpC,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,kBAAkB;CAiB3B"}
@@ -0,0 +1,17 @@
1
+ import type { TemplateResult } from 'lit-html';
2
+ import { BaseComponent } from '../base-component';
3
+ /**
4
+ * Social sharing overlay.
5
+ *
6
+ * Visible when state.socialsOpen is true.
7
+ * Shows sharing links from config.socials (Record<string, string>).
8
+ * Close button sets state.socialsOpen = false.
9
+ *
10
+ * If config.socials is false, no links are rendered.
11
+ * Each link opens in a new tab.
12
+ */
13
+ export declare class SocialsOverlay extends BaseComponent {
14
+ protected onConnect(): void;
15
+ protected template(): TemplateResult;
16
+ }
17
+ //# sourceMappingURL=socials-overlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socials-overlay.d.ts","sourceRoot":"","sources":["../../../../../../src/skin/overlays/socials-overlay.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEjD;;;;;;;;;GASG;AACH,qBAAa,cAAe,SAAQ,aAAa;IAC/C,SAAS,CAAC,SAAS,IAAI,IAAI;IAK3B,SAAS,CAAC,QAAQ,IAAI,cAAc;CAqCrC"}