playron 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (249) hide show
  1. package/README.md +287 -0
  2. package/dist/Docs.d.ts +2 -0
  3. package/dist/Docs.d.ts.map +1 -0
  4. package/dist/ErrorManager-CDf_sFKX.cjs +1 -0
  5. package/dist/ErrorManager-i9WcRsWb.js +43 -0
  6. package/dist/Why.d.ts +2 -0
  7. package/dist/Why.d.ts.map +1 -0
  8. package/dist/components/PlayerConfig.d.ts +34 -0
  9. package/dist/components/PlayerConfig.d.ts.map +1 -0
  10. package/dist/components/PlayronControls.d.ts +26 -0
  11. package/dist/components/PlayronControls.d.ts.map +1 -0
  12. package/dist/components/PlayronPlayer.d.ts +37 -0
  13. package/dist/components/PlayronPlayer.d.ts.map +1 -0
  14. package/dist/components/SiteHeader.d.ts +6 -0
  15. package/dist/components/SiteHeader.d.ts.map +1 -0
  16. package/dist/constants/sample-intro-outro.d.ts +3 -0
  17. package/dist/constants/sample-intro-outro.d.ts.map +1 -0
  18. package/dist/constants/source.d.ts +2 -0
  19. package/dist/constants/source.d.ts.map +1 -0
  20. package/dist/constants/sports-events.d.ts +58 -0
  21. package/dist/constants/sports-events.d.ts.map +1 -0
  22. package/dist/context/PlayerContext.d.ts +3 -0
  23. package/dist/context/PlayerContext.d.ts.map +1 -0
  24. package/dist/context/PlayerMethodsContext.d.ts +63 -0
  25. package/dist/context/PlayerMethodsContext.d.ts.map +1 -0
  26. package/dist/context/PlayerProvider.d.ts +9 -0
  27. package/dist/context/PlayerProvider.d.ts.map +1 -0
  28. package/dist/context/PlayerStateContext.d.ts +4 -0
  29. package/dist/context/PlayerStateContext.d.ts.map +1 -0
  30. package/dist/context/PlayronContext.d.ts +100 -0
  31. package/dist/context/PlayronContext.d.ts.map +1 -0
  32. package/dist/context/SubtitleStyleContext.d.ts +22 -0
  33. package/dist/context/SubtitleStyleContext.d.ts.map +1 -0
  34. package/dist/core/ConfigManager.d.ts +78 -0
  35. package/dist/core/ConfigManager.d.ts.map +1 -0
  36. package/dist/core/ErrorManager.d.ts +22 -0
  37. package/dist/core/ErrorManager.d.ts.map +1 -0
  38. package/dist/core/EventBus.d.ts +32 -0
  39. package/dist/core/EventBus.d.ts.map +1 -0
  40. package/dist/core/PlayerCore.d.ts +170 -0
  41. package/dist/core/PlayerCore.d.ts.map +1 -0
  42. package/dist/core/PlayronEventEmitter.d.ts +162 -0
  43. package/dist/core/PlayronEventEmitter.d.ts.map +1 -0
  44. package/dist/core/PluginSystem.d.ts +111 -0
  45. package/dist/core/PluginSystem.d.ts.map +1 -0
  46. package/dist/core/StallDetector.d.ts +27 -0
  47. package/dist/core/StallDetector.d.ts.map +1 -0
  48. package/dist/core/StateManager.d.ts +90 -0
  49. package/dist/core/StateManager.d.ts.map +1 -0
  50. package/dist/core/VideoEngine.d.ts +92 -0
  51. package/dist/core/VideoEngine.d.ts.map +1 -0
  52. package/dist/core/adaptive/StreamDetector.d.ts +73 -0
  53. package/dist/core/adaptive/StreamDetector.d.ts.map +1 -0
  54. package/dist/core/drm/DrmCapabilityProbe.d.ts +13 -0
  55. package/dist/core/drm/DrmCapabilityProbe.d.ts.map +1 -0
  56. package/dist/core/network/index.d.ts +6 -0
  57. package/dist/core/network/index.d.ts.map +1 -0
  58. package/dist/core/streaming/DashEngine.d.ts +149 -0
  59. package/dist/core/streaming/DashEngine.d.ts.map +1 -0
  60. package/dist/core/streaming/HlsEngine.d.ts +168 -0
  61. package/dist/core/streaming/HlsEngine.d.ts.map +1 -0
  62. package/dist/core/streaming/SubtitleManager.d.ts +88 -0
  63. package/dist/core/streaming/SubtitleManager.d.ts.map +1 -0
  64. package/dist/core/streaming/ThumbnailManager.d.ts +44 -0
  65. package/dist/core/streaming/ThumbnailManager.d.ts.map +1 -0
  66. package/dist/core/streaming/index.d.ts +11 -0
  67. package/dist/core/streaming/index.d.ts.map +1 -0
  68. package/dist/core/streaming/parsers/WebVttParser.d.ts +56 -0
  69. package/dist/core/streaming/parsers/WebVttParser.d.ts.map +1 -0
  70. package/dist/hooks/useClickOutside.d.ts +4 -0
  71. package/dist/hooks/useClickOutside.d.ts.map +1 -0
  72. package/dist/hooks/useKeyboardControls.d.ts +20 -0
  73. package/dist/hooks/useKeyboardControls.d.ts.map +1 -0
  74. package/dist/hooks/useMobileGestures.d.ts +17 -0
  75. package/dist/hooks/useMobileGestures.d.ts.map +1 -0
  76. package/dist/hooks/useMouseActivity.d.ts +10 -0
  77. package/dist/hooks/useMouseActivity.d.ts.map +1 -0
  78. package/dist/hooks/usePlayer.d.ts +6 -0
  79. package/dist/hooks/usePlayer.d.ts.map +1 -0
  80. package/dist/hooks/usePlayerMethods.d.ts +6 -0
  81. package/dist/hooks/usePlayerMethods.d.ts.map +1 -0
  82. package/dist/hooks/usePlayerState.d.ts +11 -0
  83. package/dist/hooks/usePlayerState.d.ts.map +1 -0
  84. package/dist/index.d.ts +99 -0
  85. package/dist/index.d.ts.map +1 -0
  86. package/dist/layout/ControlsContainer.d.ts +9 -0
  87. package/dist/layout/ControlsContainer.d.ts.map +1 -0
  88. package/dist/layout/ControlsContainer.responsive.d.ts +8 -0
  89. package/dist/layout/ControlsContainer.responsive.d.ts.map +1 -0
  90. package/dist/layout/SeekBarContainer.d.ts +16 -0
  91. package/dist/layout/SeekBarContainer.d.ts.map +1 -0
  92. package/dist/playron.cjs.js +248 -0
  93. package/dist/playron.css +1 -0
  94. package/dist/playron.es.js +47631 -0
  95. package/dist/plugins/AdPlugin.d.ts +8 -0
  96. package/dist/plugins/AdPlugin.d.ts.map +1 -0
  97. package/dist/plugins/AnalyticsPlugin.d.ts +50 -0
  98. package/dist/plugins/AnalyticsPlugin.d.ts.map +1 -0
  99. package/dist/plugins/PluginManager.d.ts +2 -0
  100. package/dist/plugins/PluginManager.d.ts.map +1 -0
  101. package/dist/plugins/SocialPlugin.d.ts +2 -0
  102. package/dist/plugins/SocialPlugin.d.ts.map +1 -0
  103. package/dist/plugins/ads/AdManager.d.ts +79 -0
  104. package/dist/plugins/ads/AdManager.d.ts.map +1 -0
  105. package/dist/plugins/ads/AdPlayer.d.ts +33 -0
  106. package/dist/plugins/ads/AdPlayer.d.ts.map +1 -0
  107. package/dist/plugins/ads/AdTracker.d.ts +34 -0
  108. package/dist/plugins/ads/AdTracker.d.ts.map +1 -0
  109. package/dist/plugins/ads/VASTParser.d.ts +52 -0
  110. package/dist/plugins/ads/VASTParser.d.ts.map +1 -0
  111. package/dist/plugins/ads/VMAPParser.d.ts +31 -0
  112. package/dist/plugins/ads/VMAPParser.d.ts.map +1 -0
  113. package/dist/plugins/ads/types.d.ts +108 -0
  114. package/dist/plugins/ads/types.d.ts.map +1 -0
  115. package/dist/poster.png +0 -0
  116. package/dist/test-ad.xml +37 -0
  117. package/dist/test-vmap.xml +30 -0
  118. package/dist/types/analytics.d.ts +86 -0
  119. package/dist/types/analytics.d.ts.map +1 -0
  120. package/dist/types/chapters.types.d.ts +17 -0
  121. package/dist/types/chapters.types.d.ts.map +1 -0
  122. package/dist/types/config.d.ts +23 -0
  123. package/dist/types/config.d.ts.map +1 -0
  124. package/dist/types/config.types.d.ts +244 -0
  125. package/dist/types/config.types.d.ts.map +1 -0
  126. package/dist/types/controlbar.types.d.ts +5 -0
  127. package/dist/types/controlbar.types.d.ts.map +1 -0
  128. package/dist/types/drm.types.d.ts +163 -0
  129. package/dist/types/drm.types.d.ts.map +1 -0
  130. package/dist/types/events.d.ts +36 -0
  131. package/dist/types/events.d.ts.map +1 -0
  132. package/dist/types/extended.types.d.ts +85 -0
  133. package/dist/types/extended.types.d.ts.map +1 -0
  134. package/dist/types/manifest.types.d.ts +297 -0
  135. package/dist/types/manifest.types.d.ts.map +1 -0
  136. package/dist/types/playbutton.types.d.ts +2 -0
  137. package/dist/types/playbutton.types.d.ts.map +1 -0
  138. package/dist/types/player.types.d.ts +13 -0
  139. package/dist/types/player.types.d.ts.map +1 -0
  140. package/dist/types/seekbar.types.d.ts +5 -0
  141. package/dist/types/seekbar.types.d.ts.map +1 -0
  142. package/dist/types/streaming.types.d.ts +168 -0
  143. package/dist/types/streaming.types.d.ts.map +1 -0
  144. package/dist/types/timeline.types.d.ts +46 -0
  145. package/dist/types/timeline.types.d.ts.map +1 -0
  146. package/dist/types/video-events.d.ts +51 -0
  147. package/dist/types/video-events.d.ts.map +1 -0
  148. package/dist/ui/Common/BufferingIndicator.d.ts +2 -0
  149. package/dist/ui/Common/BufferingIndicator.d.ts.map +1 -0
  150. package/dist/ui/Common/ControlBar.d.ts +3 -0
  151. package/dist/ui/Common/ControlBar.d.ts.map +1 -0
  152. package/dist/ui/Common/ControlBar.responsive.d.ts +3 -0
  153. package/dist/ui/Common/ControlBar.responsive.d.ts.map +1 -0
  154. package/dist/ui/Common/Dropdown/Dropdown.d.ts +14 -0
  155. package/dist/ui/Common/Dropdown/Dropdown.d.ts.map +1 -0
  156. package/dist/ui/Common/Dropdown/DropdownItem.d.ts +11 -0
  157. package/dist/ui/Common/Dropdown/DropdownItem.d.ts.map +1 -0
  158. package/dist/ui/Common/Dropdown/DropdownPanel.d.ts +9 -0
  159. package/dist/ui/Common/Dropdown/DropdownPanel.d.ts.map +1 -0
  160. package/dist/ui/Common/Dropdown/DropdownTrigger.d.ts +7 -0
  161. package/dist/ui/Common/Dropdown/DropdownTrigger.d.ts.map +1 -0
  162. package/dist/ui/Common/LoadingSpinner.d.ts +6 -0
  163. package/dist/ui/Common/LoadingSpinner.d.ts.map +1 -0
  164. package/dist/ui/Common/Overlay.d.ts +11 -0
  165. package/dist/ui/Common/Overlay.d.ts.map +1 -0
  166. package/dist/ui/Common/SeekBar.d.ts +15 -0
  167. package/dist/ui/Common/SeekBar.d.ts.map +1 -0
  168. package/dist/ui/Common/SeekBar.responsive.d.ts +10 -0
  169. package/dist/ui/Common/SeekBar.responsive.d.ts.map +1 -0
  170. package/dist/ui/Common/TimeDisplay.d.ts +2 -0
  171. package/dist/ui/Common/TimeDisplay.d.ts.map +1 -0
  172. package/dist/ui/Common/TimelineMarker.d.ts +11 -0
  173. package/dist/ui/Common/TimelineMarker.d.ts.map +1 -0
  174. package/dist/ui/Common/Tooltip.d.ts +2 -0
  175. package/dist/ui/Common/Tooltip.d.ts.map +1 -0
  176. package/dist/ui/Common/VolumePanel.d.ts +2 -0
  177. package/dist/ui/Common/VolumePanel.d.ts.map +1 -0
  178. package/dist/ui/Controls/AudioTrackSelector.d.ts +2 -0
  179. package/dist/ui/Controls/AudioTrackSelector.d.ts.map +1 -0
  180. package/dist/ui/Controls/CaptionsButton.d.ts +2 -0
  181. package/dist/ui/Controls/CaptionsButton.d.ts.map +1 -0
  182. package/dist/ui/Controls/CastButton.d.ts +17 -0
  183. package/dist/ui/Controls/CastButton.d.ts.map +1 -0
  184. package/dist/ui/Controls/DownloadButton.d.ts +2 -0
  185. package/dist/ui/Controls/DownloadButton.d.ts.map +1 -0
  186. package/dist/ui/Controls/EpisodeSelector.d.ts +2 -0
  187. package/dist/ui/Controls/EpisodeSelector.d.ts.map +1 -0
  188. package/dist/ui/Controls/FullscreenButton.d.ts +5 -0
  189. package/dist/ui/Controls/FullscreenButton.d.ts.map +1 -0
  190. package/dist/ui/Controls/JumpToLiveButton.d.ts +2 -0
  191. package/dist/ui/Controls/JumpToLiveButton.d.ts.map +1 -0
  192. package/dist/ui/Controls/LiveLatencyDisplay.d.ts +2 -0
  193. package/dist/ui/Controls/LiveLatencyDisplay.d.ts.map +1 -0
  194. package/dist/ui/Controls/MuteButton.d.ts +5 -0
  195. package/dist/ui/Controls/MuteButton.d.ts.map +1 -0
  196. package/dist/ui/Controls/NextEpisodeButton.d.ts +7 -0
  197. package/dist/ui/Controls/NextEpisodeButton.d.ts.map +1 -0
  198. package/dist/ui/Controls/PipButton.d.ts +5 -0
  199. package/dist/ui/Controls/PipButton.d.ts.map +1 -0
  200. package/dist/ui/Controls/PlayButton.d.ts +5 -0
  201. package/dist/ui/Controls/PlayButton.d.ts.map +1 -0
  202. package/dist/ui/Controls/PlaybackSpeedSelector.d.ts +2 -0
  203. package/dist/ui/Controls/PlaybackSpeedSelector.d.ts.map +1 -0
  204. package/dist/ui/Controls/PlaylistButton.d.ts +2 -0
  205. package/dist/ui/Controls/PlaylistButton.d.ts.map +1 -0
  206. package/dist/ui/Controls/QualitySelector.d.ts +2 -0
  207. package/dist/ui/Controls/QualitySelector.d.ts.map +1 -0
  208. package/dist/ui/Controls/SeekBar.d.ts +2 -0
  209. package/dist/ui/Controls/SeekBar.d.ts.map +1 -0
  210. package/dist/ui/Controls/SeekBarProgress.d.ts +2 -0
  211. package/dist/ui/Controls/SeekBarProgress.d.ts.map +1 -0
  212. package/dist/ui/Controls/SettingsButton.d.ts +2 -0
  213. package/dist/ui/Controls/SettingsButton.d.ts.map +1 -0
  214. package/dist/ui/Controls/SettingsPanel.d.ts +17 -0
  215. package/dist/ui/Controls/SettingsPanel.d.ts.map +1 -0
  216. package/dist/ui/Controls/SkipBackwardButton.d.ts +6 -0
  217. package/dist/ui/Controls/SkipBackwardButton.d.ts.map +1 -0
  218. package/dist/ui/Controls/SkipForwardButton.d.ts +6 -0
  219. package/dist/ui/Controls/SkipForwardButton.d.ts.map +1 -0
  220. package/dist/ui/Controls/SkipIntroButton.d.ts +7 -0
  221. package/dist/ui/Controls/SkipIntroButton.d.ts.map +1 -0
  222. package/dist/ui/Controls/SubtitleOverlay.d.ts +6 -0
  223. package/dist/ui/Controls/SubtitleOverlay.d.ts.map +1 -0
  224. package/dist/ui/Controls/SubtitlesMenu.d.ts +2 -0
  225. package/dist/ui/Controls/SubtitlesMenu.d.ts.map +1 -0
  226. package/dist/ui/Controls/TheaterModeButton.d.ts +2 -0
  227. package/dist/ui/Controls/TheaterModeButton.d.ts.map +1 -0
  228. package/dist/ui/Controls/TimeDisplay.d.ts +5 -0
  229. package/dist/ui/Controls/TimeDisplay.d.ts.map +1 -0
  230. package/dist/ui/Controls/VolumeControl.d.ts +2 -0
  231. package/dist/ui/Controls/VolumeControl.d.ts.map +1 -0
  232. package/dist/ui/Controls/VolumeSlider.d.ts +2 -0
  233. package/dist/ui/Controls/VolumeSlider.d.ts.map +1 -0
  234. package/dist/ui/Overlay/ContextMenu.d.ts +17 -0
  235. package/dist/ui/Overlay/ContextMenu.d.ts.map +1 -0
  236. package/dist/ui/Overlay/EndCard.d.ts +11 -0
  237. package/dist/ui/Overlay/EndCard.d.ts.map +1 -0
  238. package/dist/ui/Overlay/ErrorOverlay.d.ts +13 -0
  239. package/dist/ui/Overlay/ErrorOverlay.d.ts.map +1 -0
  240. package/dist/ui/Overlay/GestureHintOverlay.d.ts +14 -0
  241. package/dist/ui/Overlay/GestureHintOverlay.d.ts.map +1 -0
  242. package/dist/ui/Overlay/KeyboardShortcutsOverlay.d.ts +7 -0
  243. package/dist/ui/Overlay/KeyboardShortcutsOverlay.d.ts.map +1 -0
  244. package/dist/ui/Overlay/VideoOverlay.d.ts +9 -0
  245. package/dist/ui/Overlay/VideoOverlay.d.ts.map +1 -0
  246. package/dist/ui/Player.d.ts +19 -0
  247. package/dist/ui/Player.d.ts.map +1 -0
  248. package/dist/vite.svg +1 -0
  249. package/package.json +71 -0
@@ -0,0 +1,8 @@
1
+ import { VirtusPlugin } from '../core/PluginSystem';
2
+ import { AdConfig } from './ads/types';
3
+ /**
4
+ * Create Ad Plugin
5
+ */
6
+ export declare function createAdPlugin(config: AdConfig): VirtusPlugin;
7
+ export type { AdConfig } from './ads/types';
8
+ //# sourceMappingURL=AdPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/AdPlugin.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,QAAQ,GAAG,YAAY,CA0C7D;AAGD,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,50 @@
1
+ import { PlayerCore } from '../core/PlayerCore';
2
+ import { AnalyticsConfig, AnalyticsSessionMetrics } from '../types/analytics';
3
+ export declare class AnalyticsPlugin {
4
+ private player;
5
+ private config;
6
+ private sessionId;
7
+ private sessionActive;
8
+ private queue;
9
+ private heartbeatTimer;
10
+ private isPlaying;
11
+ private isBuffering;
12
+ private currentQuality;
13
+ private currentSrc;
14
+ private metrics;
15
+ private playStartedAt;
16
+ private bufferStartedAt;
17
+ private qualityStartedAt;
18
+ private loadStartedAt;
19
+ private handlers;
20
+ constructor(player: PlayerCore, config?: AnalyticsConfig);
21
+ /** Start tracking. Call after setSource. */
22
+ start(src?: string): void;
23
+ /** Stop tracking and flush remaining events. */
24
+ end(): void;
25
+ private attachListeners;
26
+ private detachListeners;
27
+ private onPlay;
28
+ private onPause;
29
+ private onSeekStart;
30
+ private onSeekEnd;
31
+ private onBufferStart;
32
+ private onBufferEnd;
33
+ private onQualityChange;
34
+ private finalizePlayInterval;
35
+ private finalizeBufferInterval;
36
+ private finalizeQualityInterval;
37
+ private startHeartbeat;
38
+ private stopHeartbeat;
39
+ private track;
40
+ private flush;
41
+ private buildMeta;
42
+ private buildMetricsSummary;
43
+ private emptyMetrics;
44
+ private log;
45
+ /** Get a snapshot of current session metrics */
46
+ getMetrics(): AnalyticsSessionMetrics;
47
+ /** Get the current session ID */
48
+ getSessionId(): string;
49
+ }
50
+ //# sourceMappingURL=AnalyticsPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnalyticsPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/AnalyticsPlugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EACV,eAAe,EAIf,uBAAuB,EACxB,MAAM,oBAAoB,CAAC;AAgB5B,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,MAAM,CAA4B;IAG1C,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,aAAa,CAAS;IAI9B,OAAO,CAAC,KAAK,CAAwB;IAGrC,OAAO,CAAC,cAAc,CAA+C;IAGrE,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,UAAU,CAAM;IAGxB,OAAO,CAAC,OAAO,CAAgD;IAG/D,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,aAAa,CAAK;IAG1B,OAAO,CAAC,QAAQ,CAAkE;gBAEtE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAE,eAAoB;IAe5D,4CAA4C;IAC5C,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAiBzB,gDAAgD;IAChD,GAAG,IAAI,IAAI;IAoBX,OAAO,CAAC,eAAe;IA0DvB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,MAAM;IAoBd,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,uBAAuB;IAW/B,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,KAAK;IAsBb,OAAO,CAAC,KAAK;IAkCb,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,GAAG;IAYX,gDAAgD;IAChD,UAAU,IAAI,uBAAuB;IAIrC,iCAAiC;IACjC,YAAY,IAAI,MAAM;CAGvB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=PluginManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PluginManager.d.ts","sourceRoot":"","sources":["../../src/plugins/PluginManager.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SocialPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocialPlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/SocialPlugin.ts"],"names":[],"mappings":""}
@@ -0,0 +1,79 @@
1
+ import { AdConfig } from './types';
2
+ type Playron = any;
3
+ export declare class AdManager {
4
+ private player;
5
+ private config;
6
+ private vastParser;
7
+ private vmapParser;
8
+ private adPlayer;
9
+ private preRollPlayed;
10
+ private midRollsPlayed;
11
+ private postRollPlayed;
12
+ private vmapData;
13
+ private videoDuration;
14
+ private loadingContainer;
15
+ private onLoadingChange?;
16
+ constructor(player: Playron, config: AdConfig, onLoadingChange?: (isLoading: boolean) => void);
17
+ /**
18
+ * Wait for video element to be ready (with retry logic)
19
+ */
20
+ private waitForVideoElement;
21
+ /**
22
+ * Setup ad scheduling (listen to player events)
23
+ */
24
+ setup(): Promise<void>;
25
+ /**
26
+ * Handle pre-roll ad
27
+ */
28
+ private handlePreRoll;
29
+ /**
30
+ * Handle mid-roll ads
31
+ */
32
+ private handleMidRoll;
33
+ /**
34
+ * Handle post-roll ad
35
+ */
36
+ private handlePostRoll;
37
+ /**
38
+ * Get pre-roll VAST URL (from VMAP or config)
39
+ */
40
+ private getPreRollVastUrl;
41
+ /**
42
+ * Add unique correlator to VAST URL (prevents caching issues)
43
+ */
44
+ private addCorrelator;
45
+ /**
46
+ * Get post-roll VAST URL (from VMAP)
47
+ */
48
+ private getPostRollVastUrl;
49
+ /**
50
+ * Play ad from VAST URL (with Bitmovin-style retry)
51
+ */
52
+ private playAd;
53
+ /**
54
+ * Skip current ad
55
+ */
56
+ skipAd(): void;
57
+ /**
58
+ * Handle ad click
59
+ */
60
+ handleAdClick(): void;
61
+ /**
62
+ * Get current ad state
63
+ */
64
+ getAdState(): import('./types').AdPlaybackState;
65
+ /**
66
+ * Show ad loading spinner (or trigger external loading via callback)
67
+ */
68
+ private showAdLoading;
69
+ /**
70
+ * Hide ad loading spinner (or trigger external loading via callback)
71
+ */
72
+ private hideAdLoading;
73
+ /**
74
+ * Destroy ad manager
75
+ */
76
+ destroy(): void;
77
+ }
78
+ export {};
79
+ //# sourceMappingURL=AdManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdManager.d.ts","sourceRoot":"","sources":["../../../src/plugins/ads/AdManager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAwB,MAAM,SAAS,CAAC;AAK9D,KAAK,OAAO,GAAG,GAAG,CAAC;AAEnB,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAW;IAE3B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,eAAe,CAAC,CAA+B;gBAE3C,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI;IAe7F;;OAEG;YACW,mBAAmB;IAejC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmJ5B;;OAEG;YACW,aAAa;IAiC3B;;OAEG;YACW,aAAa;IAuB3B;;OAEG;YACW,cAAc;IAa5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAezB;;OAEG;IACH,OAAO,CAAC,aAAa;IAoBrB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;OAEG;YACW,MAAM;IAkEpB;;OAEG;IACH,MAAM,IAAI,IAAI;IAId;;OAEG;IACH,aAAa,IAAI,IAAI;IAIrB;;OAEG;IACH,UAAU;IAIV;;OAEG;IACH,OAAO,CAAC,aAAa;IAgErB;;OAEG;IACH,OAAO,CAAC,aAAa;IAgBrB;;OAEG;IACH,OAAO,IAAI,IAAI;CAShB"}
@@ -0,0 +1,33 @@
1
+ import { Ad, AdConfig, AdPlaybackState, AdPosition } from './types';
2
+ type Playron = any;
3
+ export declare class AdPlayer {
4
+ private player;
5
+ private config;
6
+ private tracker;
7
+ private hideLoadingCallback?;
8
+ private adVideo;
9
+ private adContainer;
10
+ private companionContainer;
11
+ private mainVideoElement;
12
+ private skipButton;
13
+ private countdownElement;
14
+ private vpaidIframe;
15
+ private vpaidCreative;
16
+ private state;
17
+ constructor(player: Playron, config: AdConfig, hideLoadingCallback?: () => void);
18
+ play(ad: Ad, position: AdPosition): Promise<void>;
19
+ playAdPod(ads: Ad[], position: AdPosition): Promise<void>;
20
+ private showCompanionBanners;
21
+ private buildCompanionElement;
22
+ private playVpaidCreative;
23
+ private createAdUI;
24
+ private playAdVideo;
25
+ private updateUI;
26
+ skip(): void;
27
+ handleClick(): void;
28
+ private destroyAdUI;
29
+ getState(): AdPlaybackState;
30
+ destroy(): void;
31
+ }
32
+ export {};
33
+ //# sourceMappingURL=AdPlayer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdPlayer.d.ts","sourceRoot":"","sources":["../../../src/plugins/ads/AdPlayer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAe,MAAM,SAAS,CAAC;AAGtF,KAAK,OAAO,GAAG,GAAG,CAAC;AAanB,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,mBAAmB,CAAC,CAAa;IAEzC,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,kBAAkB,CAA+B;IACzD,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,gBAAgB,CAA+B;IAGvD,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,aAAa,CAA8B;IAEnD,OAAO,CAAC,KAAK,CAOX;gBAEU,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,CAAC,EAAE,MAAM,IAAI;IASzE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAiEjD,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAc/D,OAAO,CAAC,oBAAoB;IAmC5B,OAAO,CAAC,qBAAqB;YA0Cf,iBAAiB;IAkE/B,OAAO,CAAC,UAAU;YAiHJ,WAAW;IA4EzB,OAAO,CAAC,QAAQ;IAkBhB,IAAI,IAAI,IAAI;IAkBZ,WAAW,IAAI,IAAI;IAQnB,OAAO,CAAC,WAAW;IAuCnB,QAAQ,IAAI,eAAe;IAI3B,OAAO,IAAI,IAAI;CAWhB"}
@@ -0,0 +1,34 @@
1
+ import { Ad } from './types';
2
+ export declare class AdTracker {
3
+ private trackingEnabled;
4
+ constructor(trackingEnabled?: boolean);
5
+ /**
6
+ * Track impression
7
+ */
8
+ trackImpression(ad: Ad): void;
9
+ /**
10
+ * Track start
11
+ */
12
+ trackStart(ad: Ad): void;
13
+ /**
14
+ * Track complete
15
+ */
16
+ trackComplete(ad: Ad): void;
17
+ /**
18
+ * Track skip
19
+ */
20
+ trackSkip(ad: Ad): void;
21
+ /**
22
+ * Track error
23
+ */
24
+ trackError(ad: Ad, errorCode: string): void;
25
+ /**
26
+ * Fire tracking pixel (image request)
27
+ */
28
+ private fireTrackingPixel;
29
+ /**
30
+ * Reset tracker (for new ad)
31
+ */
32
+ reset(): void;
33
+ }
34
+ //# sourceMappingURL=AdTracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdTracker.d.ts","sourceRoot":"","sources":["../../../src/plugins/ads/AdTracker.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAElC,qBAAa,SAAS;IACpB,OAAO,CAAC,eAAe,CAAU;gBAErB,eAAe,GAAE,OAAc;IAI3C;;OAEG;IACH,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;IAQ7B;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;IAQxB;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;IAQ3B;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;IAQvB;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAS3C;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,52 @@
1
+ import { Ad } from './types';
2
+ export declare class VASTParser {
3
+ private timeout;
4
+ private maxWrapperDepth;
5
+ constructor(timeout?: number, maxWrapperDepth?: number);
6
+ /**
7
+ * Parse VAST URL to Ad object (with retry for empty responses)
8
+ */
9
+ parse(vastUrl: string, depth?: number, retryCount?: number): Promise<Ad>;
10
+ /**
11
+ * Fetch VAST XML with timeout
12
+ */
13
+ private fetchVAST;
14
+ /**
15
+ * Parse XML string to Document
16
+ */
17
+ private parseXML;
18
+ /**
19
+ * Parse all Ads from a VAST URL — returns an ordered ad pod array.
20
+ * Ads are sorted by their `sequence` attribute (ascending).
21
+ * Wrapper chains are followed for each Ad independently.
22
+ */
23
+ parseAdPod(vastUrl: string): Promise<Ad[]>;
24
+ /**
25
+ * Parse inline VAST ad (first Ad element in document)
26
+ */
27
+ private parseInline;
28
+ /**
29
+ * Parse a single <Ad> element into an Ad object.
30
+ * Returns null if the Ad has no InLine / no MediaFile.
31
+ */
32
+ private parseAdElement;
33
+ private parseCompanions;
34
+ /**
35
+ * Parse duration string (HH:MM:SS) to seconds
36
+ */
37
+ private parseDuration;
38
+ /**
39
+ * Detect VPAID or get best regular media file (prefer MP4).
40
+ * Returns { mediaFile, isVpaid, vpaidUrl }.
41
+ */
42
+ private getMediaFileInfo;
43
+ /**
44
+ * Parse tracking events (impression + all quartile events)
45
+ */
46
+ private parseTrackingEvents;
47
+ /**
48
+ * Get error URLs
49
+ */
50
+ private getErrorUrls;
51
+ }
52
+ //# sourceMappingURL=VASTParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VASTParser.d.ts","sourceRoot":"","sources":["../../../src/plugins/ads/VASTParser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAe,MAAM,SAAS,CAAC;AAE/C,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAS;gBAEpB,OAAO,GAAE,MAAa,EAAE,eAAe,GAAE,MAAU;IAK/D;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,EAAE,UAAU,GAAE,MAAU,GAAG,OAAO,CAAC,EAAE,CAAC;IAkDpF;;OAEG;YACW,SAAS;IAoCvB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAkChB;;;;OAIG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC;IAsChD;;OAEG;IACH,OAAO,CAAC,WAAW;IASnB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAgDtB,OAAO,CAAC,eAAe;IA8CvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAWrB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAiCxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA0B3B;;OAEG;IACH,OAAO,CAAC,YAAY;CAQrB"}
@@ -0,0 +1,31 @@
1
+ import { VMAPData } from './types';
2
+ export declare class VMAPParser {
3
+ private timeout;
4
+ constructor(timeout?: number);
5
+ /**
6
+ * Parse VMAP URL to VMAPData
7
+ */
8
+ parse(vmapUrl: string): Promise<VMAPData>;
9
+ /**
10
+ * Fetch VMAP XML with timeout
11
+ */
12
+ private fetchVMAP;
13
+ /**
14
+ * Parse XML string to Document
15
+ */
16
+ private parseXML;
17
+ /**
18
+ * Parse ad breaks from VMAP document
19
+ */
20
+ private parseAdBreaks;
21
+ /**
22
+ * Parse single AdBreak element
23
+ */
24
+ private parseAdBreak;
25
+ /**
26
+ * Parse timeOffset string to seconds
27
+ * Supports: "start" (0), "end" (-1), "HH:MM:SS" or "MM:SS" or "SS"
28
+ */
29
+ private parseTimeOffset;
30
+ }
31
+ //# sourceMappingURL=VMAPParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VMAPParser.d.ts","sourceRoot":"","sources":["../../../src/plugins/ads/VMAPParser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAe,MAAM,SAAS,CAAC;AAErD,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,GAAE,MAAa;IAIlC;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IA0D/C;;OAEG;YACW,SAAS;IAoDvB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAgBhB;;OAEG;IACH,OAAO,CAAC,aAAa;IAmCrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAiFpB;;;OAGG;IACH,OAAO,CAAC,eAAe;CA8BxB"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Simple Ad System Types
3
+ */
4
+ /**
5
+ * Ad UI Configuration (optional customization)
6
+ */
7
+ export interface AdUIConfig {
8
+ showLabel?: boolean;
9
+ showCountdown?: boolean;
10
+ showSkipButton?: boolean;
11
+ labelText?: string;
12
+ labelPosition?: 'top-left' | 'top-right';
13
+ countdownPosition?: 'top-left' | 'top-right';
14
+ }
15
+ /**
16
+ * Ads configuration (from user config)
17
+ */
18
+ export interface AdConfig {
19
+ enabled: boolean;
20
+ vastUrl?: string;
21
+ vmapUrl?: string;
22
+ skipAfter?: number;
23
+ timeout?: number;
24
+ maxWrapperDepth?: number;
25
+ ui?: AdUIConfig;
26
+ }
27
+ /**
28
+ * Companion banner (displayed alongside the ad)
29
+ */
30
+ export interface CompanionAd {
31
+ id?: string;
32
+ width: number;
33
+ height: number;
34
+ /** Static image / SWF URL */
35
+ staticResource?: string;
36
+ /** Raw HTML snippet */
37
+ htmlResource?: string;
38
+ /** IFrame URL */
39
+ iFrameResource?: string;
40
+ /** MIME type of the staticResource */
41
+ type?: string;
42
+ /** Click-through URL */
43
+ clickThrough?: string;
44
+ /** Alt text for image companions */
45
+ altText?: string;
46
+ /** Tracking URLs to fire on companion view */
47
+ viewTrackingUrls?: string[];
48
+ }
49
+ /**
50
+ * Parsed VAST ad data
51
+ */
52
+ export interface Ad {
53
+ id: string;
54
+ title?: string;
55
+ duration: number;
56
+ mediaFile: string;
57
+ clickThrough?: string;
58
+ trackingEvents: {
59
+ impression?: string[];
60
+ start?: string[];
61
+ complete?: string[];
62
+ skip?: string[];
63
+ firstQuartile?: string[];
64
+ midpoint?: string[];
65
+ thirdQuartile?: string[];
66
+ pause?: string[];
67
+ resume?: string[];
68
+ };
69
+ errorUrls?: string[];
70
+ /** Companion banners to display alongside the linear ad */
71
+ companions?: CompanionAd[];
72
+ /** Whether this is a VPAID creative */
73
+ isVpaid?: boolean;
74
+ /** VPAID JavaScript URL (apiFramework=VPAID) */
75
+ vpaidUrl?: string;
76
+ /** Position within an ad pod (from sequence attribute) */
77
+ podSequence?: number;
78
+ }
79
+ /**
80
+ * Ad position
81
+ */
82
+ export type AdPosition = 'preroll' | 'midroll' | 'postroll';
83
+ /**
84
+ * Ad playback state
85
+ */
86
+ export interface AdPlaybackState {
87
+ isPlaying: boolean;
88
+ ad: Ad | null;
89
+ position: AdPosition | null;
90
+ currentTime: number;
91
+ canSkip: boolean;
92
+ remainingTime: number;
93
+ }
94
+ /**
95
+ * VMAP Ad Break
96
+ */
97
+ export interface VMAPAdBreak {
98
+ timeOffset: number;
99
+ vastUrl: string;
100
+ }
101
+ /**
102
+ * Parsed VMAP data
103
+ */
104
+ export interface VMAPData {
105
+ version: string;
106
+ adBreaks: VMAPAdBreak[];
107
+ }
108
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/plugins/ads/types.ts"],"names":[],"mappings":"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"}
Binary file
@@ -0,0 +1,37 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <VAST version="3.0">
3
+ <Ad id="test-ad-001">
4
+ <InLine>
5
+ <AdSystem>Virtus Player Test</AdSystem>
6
+ <AdTitle>Test Advertisement</AdTitle>
7
+ <Description>This is a test ad for Virtus Player</Description>
8
+ <Impression><![CDATA[https://example.com/impression]]></Impression>
9
+ <Creatives>
10
+ <Creative id="creative-001" sequence="1">
11
+ <Linear>
12
+ <Duration>00:00:10</Duration>
13
+ <TrackingEvents>
14
+ <Tracking event="start"><![CDATA[https://example.com/start]]></Tracking>
15
+ <Tracking event="firstQuartile"><![CDATA[https://example.com/firstQuartile]]></Tracking>
16
+ <Tracking event="midpoint"><![CDATA[https://example.com/midpoint]]></Tracking>
17
+ <Tracking event="thirdQuartile"><![CDATA[https://example.com/thirdQuartile]]></Tracking>
18
+ <Tracking event="complete"><![CDATA[https://example.com/complete]]></Tracking>
19
+ </TrackingEvents>
20
+ <VideoClicks>
21
+ <ClickThrough><![CDATA[https://www.example.com]]></ClickThrough>
22
+ </VideoClicks>
23
+ <MediaFiles>
24
+ <MediaFile delivery="progressive" type="video/mp4" width="1280" height="720">
25
+ <![CDATA[https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4]]>
26
+ </MediaFile>
27
+ </MediaFiles>
28
+ </Linear>
29
+ </Creative>
30
+ </Creatives>
31
+ </InLine>
32
+ </Ad>
33
+ </VAST>
34
+
35
+
36
+
37
+
@@ -0,0 +1,30 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <vmap:VMAP xmlns:vmap="http://www.iab.net/videosuite/vmap" version="1.0">
3
+ <!-- Pre-roll Ad -->
4
+ <vmap:AdBreak timeOffset="start" breakType="linear" breakId="preroll">
5
+ <vmap:AdSource id="preroll-ad" allowMultipleAds="false" followRedirects="true">
6
+ <vmap:AdTagURI templateType="vast3">
7
+ <![CDATA[https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/single_ad_samples&sz=640x480&cust_params=sample_ct%3Dlinear&ciu_szs=300x250%2C728x90&gdfp_req=1&output=vast&unviewed_position_start=1&env=vp&impl=s&correlator=]]>
8
+ </vmap:AdTagURI>
9
+ </vmap:AdSource>
10
+ </vmap:AdBreak>
11
+
12
+ <!-- Mid-roll Ad at 15 seconds -->
13
+ <vmap:AdBreak timeOffset="00:00:15" breakType="linear" breakId="midroll-1">
14
+ <vmap:AdSource id="midroll-ad" allowMultipleAds="false" followRedirects="true">
15
+ <vmap:AdTagURI templateType="vast3">
16
+ <![CDATA[https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/single_ad_samples&sz=640x480&cust_params=sample_ct%3Dlinear&ciu_szs=300x250%2C728x90&gdfp_req=1&output=vast&unviewed_position_start=1&env=vp&impl=s&correlator=]]>
17
+ </vmap:AdTagURI>
18
+ </vmap:AdSource>
19
+ </vmap:AdBreak>
20
+
21
+ <!-- Post-roll Ad -->
22
+ <vmap:AdBreak timeOffset="end" breakType="linear" breakId="postroll">
23
+ <vmap:AdSource id="postroll-ad" allowMultipleAds="false" followRedirects="true">
24
+ <vmap:AdTagURI templateType="vast3">
25
+ <![CDATA[https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/single_ad_samples&sz=640x480&cust_params=sample_ct%3Dlinear&ciu_szs=300x250%2C728x90&gdfp_req=1&output=vast&unviewed_position_start=1&env=vp&impl=s&correlator=]]>
26
+ </vmap:AdTagURI>
27
+ </vmap:AdSource>
28
+ </vmap:AdBreak>
29
+ </vmap:VMAP>
30
+
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Analytics SDK Types
3
+ *
4
+ * Conviva / Youbora-style heartbeat + event tracking for Playron.
5
+ */
6
+ export type AnalyticsEventName = 'session_start' | 'session_end' | 'play' | 'pause' | 'resume' | 'seek_start' | 'seek_end' | 'buffer_start' | 'buffer_end' | 'quality_change' | 'error' | 'heartbeat';
7
+ /** A single analytics event payload sent to the endpoint */
8
+ export interface AnalyticsEvent {
9
+ /** Event name */
10
+ event: AnalyticsEventName;
11
+ /** ISO-8601 timestamp */
12
+ timestamp: string;
13
+ /** Unique session ID for this playback session */
14
+ sessionId: string;
15
+ /** Player / content metadata */
16
+ meta: AnalyticsMeta;
17
+ /** Event-specific data */
18
+ data: Record<string, unknown>;
19
+ }
20
+ /** Player + content metadata attached to every event */
21
+ export interface AnalyticsMeta {
22
+ /** Content source URL */
23
+ src: string;
24
+ /** Stream type — hls | dash | progressive | unknown */
25
+ streamType: string;
26
+ /** Whether the stream is live */
27
+ isLive: boolean;
28
+ /** Total content duration in seconds (NaN for live) */
29
+ duration: number;
30
+ /** Player version string */
31
+ playerVersion: string;
32
+ /** User agent */
33
+ userAgent: string;
34
+ /** Custom metadata provided by the integrator */
35
+ custom?: Record<string, unknown>;
36
+ }
37
+ export interface AnalyticsSessionMetrics {
38
+ /** Total play time in seconds */
39
+ playTime: number;
40
+ /** Total buffering time in seconds */
41
+ bufferingTime: number;
42
+ /** Number of buffering events */
43
+ bufferingCount: number;
44
+ /** Number of seek events */
45
+ seekCount: number;
46
+ /** Number of quality changes */
47
+ qualityChangeCount: number;
48
+ /** Timestamp (ms) when playback first started */
49
+ playbackStartTime: number;
50
+ /** Time-to-first-frame in seconds (setSource → first 'playing' event) */
51
+ timeToFirstFrame: number;
52
+ /** Map of quality label → seconds played at that quality */
53
+ qualityTime: Record<string, number>;
54
+ /** Average bandwidth estimate (bps) during session */
55
+ avgBandwidth: number;
56
+ }
57
+ export interface AnalyticsConfig {
58
+ /**
59
+ * Analytics endpoint URL.
60
+ * Events are POST-ed as JSON: `{ events: AnalyticsEvent[] }`.
61
+ * If omitted, events are only dispatched to `onEvent` callback.
62
+ */
63
+ endpointUrl?: string;
64
+ /** Extra HTTP headers for each analytics request */
65
+ headers?: Record<string, string>;
66
+ /**
67
+ * Heartbeat interval in seconds (default: 30).
68
+ * Set to 0 to disable heartbeats.
69
+ */
70
+ heartbeatInterval?: number;
71
+ /**
72
+ * Maximum number of events to batch before flushing (default: 10).
73
+ * Events are also flushed on heartbeat and session end.
74
+ */
75
+ batchSize?: number;
76
+ /** Custom metadata attached to `AnalyticsMeta.custom` */
77
+ customMeta?: Record<string, unknown>;
78
+ /**
79
+ * Optional event hook — called synchronously for every tracked event.
80
+ * Use this for custom integrations (e.g. gtag, Segment, Mixpanel).
81
+ */
82
+ onEvent?: (event: AnalyticsEvent) => void;
83
+ /** Whether to log events to the console (default: false) */
84
+ debug?: boolean;
85
+ }
86
+ //# sourceMappingURL=analytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/types/analytics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,MAAM,kBAAkB,GAC1B,eAAe,GACf,aAAa,GACb,MAAM,GACN,OAAO,GACP,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,cAAc,GACd,YAAY,GACZ,gBAAgB,GAChB,OAAO,GACP,WAAW,CAAC;AAEhB,4DAA4D;AAC5D,MAAM,WAAW,cAAc;IAC7B,iBAAiB;IACjB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,IAAI,EAAE,aAAa,CAAC;IACpB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,wDAAwD;AACxD,MAAM,WAAW,aAAa;IAC5B,yBAAyB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAID,MAAM,WAAW,uBAAuB;IACtC,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iDAAiD;IACjD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yEAAyE;IACzE,gBAAgB,EAAE,MAAM,CAAC;IACzB,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,sDAAsD;IACtD,YAAY,EAAE,MAAM,CAAC;CACtB;AAID,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAErC;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAE1C,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB"}
@@ -0,0 +1,17 @@
1
+ export interface Chapter {
2
+ id: string;
3
+ title: string;
4
+ startTime: number;
5
+ endTime?: number;
6
+ }
7
+ export interface IntroOutro {
8
+ intro?: {
9
+ start: number;
10
+ end: number;
11
+ };
12
+ outro?: {
13
+ start: number;
14
+ end: number;
15
+ };
16
+ }
17
+ //# sourceMappingURL=chapters.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chapters.types.d.ts","sourceRoot":"","sources":["../../src/types/chapters.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH"}
@@ -0,0 +1,23 @@
1
+ export interface VanillaPlayerConfig {
2
+ container: string | HTMLElement;
3
+ src: string;
4
+ width?: string | number;
5
+ height?: string | number;
6
+ autoplay?: boolean;
7
+ muted?: boolean;
8
+ poster?: string;
9
+ className?: string;
10
+ controls?: boolean;
11
+ }
12
+ export interface PlayerState {
13
+ isPlaying: boolean;
14
+ isMuted: boolean;
15
+ volume: number;
16
+ currentTime: number;
17
+ duration: number;
18
+ playbackRate?: number;
19
+ isLive?: boolean;
20
+ isAtLiveEdge?: boolean;
21
+ liveLatency?: number;
22
+ }
23
+ //# sourceMappingURL=config.d.ts.map