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,100 @@
1
+ import { ReactNode } from 'react';
2
+ import { PlayerCore } from '../core/PlayerCore';
3
+ import { PlayerState } from '../types/config';
4
+ import { PlayerConfig } from '../types/config.types';
5
+ import { AudioTrack } from '../types/extended.types';
6
+ import { QualityLevel } from '../types/streaming.types';
7
+ /**
8
+ * Virtus Context Value
9
+ * Single source of truth for all player state, methods, and config
10
+ */
11
+ export interface PlayronContextValue {
12
+ player: PlayerCore;
13
+ state: PlayerState;
14
+ methods: {
15
+ play: () => Promise<void>;
16
+ pause: () => void;
17
+ togglePlay: () => Promise<void>;
18
+ seekTo: (time: number) => void;
19
+ setPlaybackRate: (rate: number) => void;
20
+ toggleMute: () => void;
21
+ setVolume: (volume: number) => void;
22
+ setQuality: (quality: string) => void;
23
+ getQuality: () => QualityLevel | null;
24
+ getAvailableQualities: () => QualityLevel[];
25
+ setAudioTrack: (trackId: string) => void;
26
+ getAudioTrack: () => string;
27
+ getAvailableAudioTracks: () => AudioTrack[];
28
+ toggleFullscreen: () => void;
29
+ togglePip: () => Promise<void>;
30
+ toggleTheaterMode: () => void;
31
+ skipBackward: (seconds?: number) => void;
32
+ skipForward: (seconds?: number) => void;
33
+ setLoop: (loop: boolean) => void;
34
+ getLoop: () => boolean;
35
+ };
36
+ ui: {
37
+ showControls: boolean;
38
+ isFullscreen: boolean;
39
+ isPip: boolean;
40
+ isTheaterMode: boolean;
41
+ };
42
+ config: Required<PlayerConfig>;
43
+ }
44
+ /**
45
+ * Virtus Context
46
+ */
47
+ export declare const PlayronContext: import('react').Context<PlayronContextValue | null>;
48
+ /**
49
+ * Virtus Provider Props
50
+ */
51
+ interface VirtusProviderProps {
52
+ children: ReactNode;
53
+ playerInstance: PlayerCore;
54
+ showControls?: boolean;
55
+ }
56
+ /**
57
+ * Virtus Provider
58
+ * Provides unified context to all child components
59
+ */
60
+ export declare function VirtusProvider({ children, playerInstance, showControls, }: VirtusProviderProps): import("react/jsx-runtime").JSX.Element;
61
+ /**
62
+ * Use Virtus Hook
63
+ * Single hook to access all player functionality
64
+ */
65
+ export declare function useVirtus(): PlayronContextValue;
66
+ /**
67
+ * Use Virtus State Hook (with selector for optimization)
68
+ */
69
+ export declare function useVirtusState<T = PlayerState>(selector?: (state: PlayerState) => T): T;
70
+ /**
71
+ * Use Virtus Methods Hook
72
+ */
73
+ export declare function useVirtusMethods(): {
74
+ play: () => Promise<void>;
75
+ pause: () => void;
76
+ togglePlay: () => Promise<void>;
77
+ seekTo: (time: number) => void;
78
+ setPlaybackRate: (rate: number) => void;
79
+ toggleMute: () => void;
80
+ setVolume: (volume: number) => void;
81
+ setQuality: (quality: string) => void;
82
+ getQuality: () => QualityLevel | null;
83
+ getAvailableQualities: () => QualityLevel[];
84
+ setAudioTrack: (trackId: string) => void;
85
+ getAudioTrack: () => string;
86
+ getAvailableAudioTracks: () => AudioTrack[];
87
+ toggleFullscreen: () => void;
88
+ togglePip: () => Promise<void>;
89
+ toggleTheaterMode: () => void;
90
+ skipBackward: (seconds?: number) => void;
91
+ skipForward: (seconds?: number) => void;
92
+ setLoop: (loop: boolean) => void;
93
+ getLoop: () => boolean;
94
+ };
95
+ /**
96
+ * Use Virtus Config Hook
97
+ */
98
+ export declare function useVirtusConfig(): Required<PlayerConfig>;
99
+ export {};
100
+ //# sourceMappingURL=PlayronContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlayronContext.d.ts","sourceRoot":"","sources":["../../src/context/PlayronContext.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { ReactNode } from 'react';
2
+ export interface SubtitleStyle {
3
+ /** Alt kenara olan mesafe (px). Varsayılan: 40 */
4
+ bottomOffset: number;
5
+ /** Font boyutu (px). Varsayılan: 18 */
6
+ fontSize: number;
7
+ /** Metin rengi. Varsayılan: #ffffff */
8
+ color: string;
9
+ /** Arka plan. Varsayılan: rgba(0,0,0,0.75) — "" ise kapalı */
10
+ background: string;
11
+ }
12
+ export declare const DEFAULT_SUBTITLE_STYLE: SubtitleStyle;
13
+ interface SubtitleStyleContextValue {
14
+ style: SubtitleStyle;
15
+ setStyle: (patch: Partial<SubtitleStyle>) => void;
16
+ }
17
+ export declare function SubtitleStyleProvider({ children }: {
18
+ children: ReactNode;
19
+ }): import("react/jsx-runtime").JSX.Element;
20
+ export declare function useSubtitleStyle(): SubtitleStyleContextValue;
21
+ export {};
22
+ //# sourceMappingURL=SubtitleStyleContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubtitleStyleContext.d.ts","sourceRoot":"","sources":["../../src/context/SubtitleStyleContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,aAAa;IAC5B,kDAAkD;IAClD,YAAY,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,sBAAsB,EAAE,aAKpC,CAAC;AAEF,UAAU,yBAAyB;IACjC,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;CACnD;AAOD,wBAAgB,qBAAqB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAW1E;AAED,wBAAgB,gBAAgB,8BAE/B"}
@@ -0,0 +1,78 @@
1
+ import { VanillaPlayerConfig } from '../types/config';
2
+ export declare class ConfigManager {
3
+ private config;
4
+ private defaultConfig;
5
+ constructor(config: VanillaPlayerConfig);
6
+ /**
7
+ * Varsayılan konfigürasyonu döndür
8
+ */
9
+ private getDefaultConfig;
10
+ /**
11
+ * Konfigürasyonları birleştir
12
+ */
13
+ private mergeConfig;
14
+ /**
15
+ * Konfigürasyonu doğrula
16
+ */
17
+ private validateConfig;
18
+ /**
19
+ * Konfigürasyonu güncelle
20
+ */
21
+ updateConfig(updates: Partial<VanillaPlayerConfig>): void;
22
+ /**
23
+ * Mevcut konfigürasyonu döndür
24
+ */
25
+ getConfig(): VanillaPlayerConfig;
26
+ /**
27
+ * Belirli bir konfigürasyon değerini al
28
+ */
29
+ get<K extends keyof VanillaPlayerConfig>(key: K): VanillaPlayerConfig[K];
30
+ /**
31
+ * Belirli bir konfigürasyon değerini ayarla
32
+ */
33
+ set<K extends keyof VanillaPlayerConfig>(key: K, value: VanillaPlayerConfig[K]): void;
34
+ /**
35
+ * Container element'ini döndür
36
+ */
37
+ getContainer(): HTMLElement | null;
38
+ /**
39
+ * Video boyutlarını döndür
40
+ */
41
+ getDimensions(): {
42
+ width: number;
43
+ height: number;
44
+ };
45
+ /**
46
+ * Konfigürasyonu sıfırla
47
+ */
48
+ reset(): void;
49
+ /**
50
+ * Konfigürasyonu export et
51
+ */
52
+ export(): string;
53
+ /**
54
+ * Konfigürasyonu import et
55
+ */
56
+ import(configString: string): void;
57
+ /**
58
+ * Konfigürasyon değişikliklerini dinle
59
+ */
60
+ private listeners;
61
+ /**
62
+ * Konfigürasyon değişiklik dinleyicisi ekle
63
+ */
64
+ onChange(callback: (config: VanillaPlayerConfig) => void): void;
65
+ /**
66
+ * Konfigürasyon değişiklik dinleyicisini kaldır
67
+ */
68
+ offChange(callback: (config: VanillaPlayerConfig) => void): void;
69
+ /**
70
+ * Konfigürasyon değişikliklerini bildir
71
+ */
72
+ private notifyChange;
73
+ /**
74
+ * Konfigürasyonu güncelle ve değişiklikleri bildir
75
+ */
76
+ updateConfigAndNotify(updates: Partial<VanillaPlayerConfig>): void;
77
+ }
78
+ //# sourceMappingURL=ConfigManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigManager.d.ts","sourceRoot":"","sources":["../../src/core/ConfigManager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,aAAa,CAAsB;gBAE/B,MAAM,EAAE,mBAAmB;IAMvC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAcxB;;OAEG;IACH,OAAO,CAAC,WAAW;IAOnB;;OAEG;IACH,OAAO,CAAC,cAAc;IAwBtB;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,IAAI;IAMzD;;OAEG;IACH,SAAS,IAAI,mBAAmB;IAIhC;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,mBAAmB,EAAE,GAAG,EAAE,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC;IAIxE;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,mBAAmB,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI;IAKrF;;OAEG;IACH,YAAY,IAAI,WAAW,GAAG,IAAI;IAOlC;;OAEG;IACH,aAAa,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAOlD;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,MAAM,IAAI,MAAM;IAIhB;;OAEG;IACH,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAUlC;;OAEG;IACH,OAAO,CAAC,SAAS,CAAoD;IAErE;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,GAAG,IAAI;IAI/D;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,GAAG,IAAI;IAOhE;;OAEG;IACH,OAAO,CAAC,YAAY;IAUpB;;OAEG;IACH,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,IAAI;CAInE"}
@@ -0,0 +1,22 @@
1
+ export type ErrorCategory = 'Network Error' | 'Manifest Parse Error' | 'Frag Load Error' | 'Key System Error' | 'Playback Error' | 'Unknown Error';
2
+ export interface PlayerError {
3
+ category: ErrorCategory;
4
+ code: string;
5
+ message: string;
6
+ details?: any;
7
+ timestamp: number;
8
+ }
9
+ export declare class ErrorManager {
10
+ private static instance;
11
+ private listeners;
12
+ private errorHistory;
13
+ private constructor();
14
+ static getInstance(): ErrorManager;
15
+ registerListener(listener: (error: PlayerError) => void): void;
16
+ unregisterListener(listener: (error: PlayerError) => void): void;
17
+ dispatchError(category: ErrorCategory, code: string, message: string, details?: any): PlayerError;
18
+ getHistory(): PlayerError[];
19
+ clearHistory(): void;
20
+ }
21
+ export declare const errorManager: ErrorManager;
22
+ //# sourceMappingURL=ErrorManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorManager.d.ts","sourceRoot":"","sources":["../../src/core/ErrorManager.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,sBAAsB,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,eAAe,CAAC;AAEnJ,MAAM,WAAW,WAAW;IACxB,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,YAAY;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAe;IACtC,OAAO,CAAC,SAAS,CAAgD;IACjE,OAAO,CAAC,YAAY,CAAqB;IAEzC,OAAO;WAEO,WAAW,IAAI,YAAY;IAOlC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAI9D,kBAAkB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI;IAIhE,aAAa,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,WAAW;IAuBjG,UAAU,IAAI,WAAW,EAAE;IAI3B,YAAY,IAAI,IAAI;CAG9B;AAED,eAAO,MAAM,YAAY,cAA6B,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { AllPlayerEvents, EventCallback } from '../types/events';
2
+ export declare class EventBus {
3
+ private listeners;
4
+ /**
5
+ * Event dinleyicisi ekle
6
+ * @param eventType Event tipi
7
+ * @param callback Event gerçekleştiğinde çağrılacak fonksiyon
8
+ */
9
+ on<T extends AllPlayerEvents>(eventType: T['type'], callback: EventCallback<T>): void;
10
+ /**
11
+ * Event dinleyicisini kaldır
12
+ * @param eventType Event tipi
13
+ * @param callback Kaldırılacak fonksiyon
14
+ */
15
+ off<T extends AllPlayerEvents>(eventType: T['type'], callback: EventCallback<T>): void;
16
+ /**
17
+ * Event gönder
18
+ * @param event Gönderilecek event
19
+ */
20
+ emit<T extends AllPlayerEvents>(event: T): void;
21
+ /**
22
+ * Tüm dinleyicileri temizle
23
+ */
24
+ clear(): void;
25
+ /**
26
+ * Belirli bir event tipinin dinleyici sayısını döndür
27
+ * @param eventType Event tipi
28
+ */
29
+ listenerCount(eventType: string): number;
30
+ }
31
+ export declare const eventBus: EventBus;
32
+ //# sourceMappingURL=EventBus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventBus.d.ts","sourceRoot":"","sources":["../../src/core/EventBus.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,qBAAa,QAAQ;IACnB,OAAO,CAAC,SAAS,CAA8C;IAE/D;;;;OAIG;IACH,EAAE,CAAC,CAAC,SAAS,eAAe,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI;IAOrF;;;;OAIG;IACH,GAAG,CAAC,CAAC,SAAS,eAAe,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI;IAUtF;;;OAGG;IACH,IAAI,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAa/C;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;;OAGG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAGzC;AAGD,eAAO,MAAM,QAAQ,UAAiB,CAAC"}
@@ -0,0 +1,170 @@
1
+ import { VideoEngine } from './VideoEngine';
2
+ import { ConfigManager } from './ConfigManager';
3
+ import { StateManager } from './StateManager';
4
+ import { VanillaPlayerConfig, PlayerState } from '../types/config';
5
+ import { PlayronEventEmitter } from './PlayronEventEmitter';
6
+ import { StreamType, StreamInfo } from './adaptive/StreamDetector';
7
+ import { QualityLevel } from '../types/streaming.types';
8
+ import { PlayerConfig } from '../types/config.types';
9
+ export declare class PlayerCore {
10
+ private videoEngine;
11
+ private configManager;
12
+ private stateManager;
13
+ private videoElement;
14
+ private container;
15
+ events: PlayronEventEmitter;
16
+ private streamType;
17
+ private streamInfo;
18
+ private hlsEngine;
19
+ private dashEngine;
20
+ private airPlayAvailable;
21
+ private airPlayActive;
22
+ private onAirPlayAvailabilityChanged;
23
+ private onAirPlayTargetChanged;
24
+ private stallDetector;
25
+ private liveLatencyTimer;
26
+ /** Seconds within which the playhead is considered "at live edge" */
27
+ private atLiveEdgeTolerance;
28
+ private drmConfig;
29
+ constructor(videoElement: HTMLVideoElement);
30
+ /**
31
+ * PlayerCore'u başlat
32
+ */
33
+ private initialize;
34
+ /**
35
+ * State değişikliklerini dinle
36
+ */
37
+ private setupStateListeners;
38
+ /**
39
+ * Konfigürasyon ile PlayerCore'u başlat
40
+ */
41
+ static createWithConfig(config: VanillaPlayerConfig): PlayerCore;
42
+ /**
43
+ * DRM konfigürasyonunu ayarla. setSource() çağrısından ÖNCE çağrılmalı.
44
+ * Widevine (Chrome/Firefox) ve PlayReady (Edge) desteklenir.
45
+ */
46
+ setupDrm(config: PlayerConfig['drm']): void;
47
+ /**
48
+ * Video'yu oynat
49
+ */
50
+ play(): Promise<void>;
51
+ /**
52
+ * Video'yu duraklat
53
+ */
54
+ pause(): void;
55
+ /**
56
+ * Video'yu sessize al/aç
57
+ */
58
+ toggleMute(): void;
59
+ /**
60
+ * Ses seviyesini ayarla
61
+ */
62
+ setVolume(volume: number): void;
63
+ /**
64
+ * Buffered time ranges from the video element.
65
+ */
66
+ getBufferedRanges(): Array<{
67
+ start: number;
68
+ end: number;
69
+ }>;
70
+ /**
71
+ * Real-time playback statistics (Stats for Nerds).
72
+ */
73
+ getPlayerStats(): {
74
+ bandwidth: number;
75
+ bufferHealth: number;
76
+ droppedFrames: number;
77
+ totalFrames: number;
78
+ codec: string;
79
+ resolution: string;
80
+ segmentUrl: string;
81
+ streamType: string;
82
+ };
83
+ private persistVolume;
84
+ private loadPersistedVolume;
85
+ /**
86
+ * Belirli bir zamana git
87
+ */
88
+ seekTo(time: number): void;
89
+ /**
90
+ * Oynatma hızını ayarla
91
+ */
92
+ setPlaybackRate(rate: number): void;
93
+ /**
94
+ * Video source'unu değiştir.
95
+ * HLS (.m3u8) → HlsEngine (hls.js)
96
+ * DASH (.mpd) → Faz 2'de dash.js
97
+ * Diğerleri → native <video>
98
+ */
99
+ setSource(src: string): Promise<void>;
100
+ /**
101
+ * Aktif streaming engine'i temizle
102
+ */
103
+ private destroyStreamingEngines;
104
+ /**
105
+ * Native video element fallback
106
+ */
107
+ private fallbackToNative;
108
+ getStreamType(): StreamType;
109
+ getStreamInfo(): StreamInfo | null;
110
+ isLive(): boolean;
111
+ getLiveEdgeTime(): number;
112
+ getCurrentLatency(): number;
113
+ isAtLiveEdge(tolerance?: number): boolean;
114
+ seekToLiveEdge(): void;
115
+ getDVRRange(): {
116
+ start: number;
117
+ end: number;
118
+ } | null;
119
+ private startLiveLatencyTracking;
120
+ private stopLiveLatencyTracking;
121
+ private startStallDetector;
122
+ setPoster(poster: string): void;
123
+ setDimensions(width: number | string, height: number | string): void;
124
+ getState(): PlayerState | null;
125
+ getVideoEngine(): VideoEngine | null;
126
+ getConfigManager(): ConfigManager | null;
127
+ getStateManager(): StateManager | null;
128
+ getVideoElement(): HTMLVideoElement | null;
129
+ toggleFullscreen(): void;
130
+ togglePip(): Promise<void>;
131
+ skipBackward(seconds?: number): void;
132
+ skipForward(seconds?: number): void;
133
+ setLoop(loop: boolean): void;
134
+ getLoop(): boolean;
135
+ /**
136
+ * Kalite değiştir. 'auto' → ABR, diğerleri → level index.
137
+ */
138
+ setQuality(qualityId: string): void;
139
+ getQuality(): QualityLevel | null;
140
+ getAvailableQualities(): QualityLevel[];
141
+ /**
142
+ * Ses izini değiştir (dublaj seçimi).
143
+ */
144
+ setAudioTrack(trackId: string): void;
145
+ getAudioTrack(): string;
146
+ getAvailableAudioTracks(): Array<{
147
+ id: string;
148
+ label: string;
149
+ language: string;
150
+ }>;
151
+ getSubtitleTracks(): Array<{
152
+ language: string;
153
+ label: string;
154
+ url: string;
155
+ }>;
156
+ setSubtitleTrack(language: string | null): Promise<void>;
157
+ getActiveSubtitleLanguage(): string | null;
158
+ private setupAirPlay;
159
+ showAirPlayPicker(): void;
160
+ isAirPlayAvailable(): boolean;
161
+ isAirPlayActive(): boolean;
162
+ private destroyAirPlay;
163
+ toggleTheaterMode(): void;
164
+ isTheaterMode(): boolean;
165
+ /**
166
+ * PlayerCore'u tamamen temizle.
167
+ */
168
+ destroy(): void;
169
+ }
170
+ //# sourceMappingURL=PlayerCore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlayerCore.d.ts","sourceRoot":"","sources":["../../src/core/PlayerCore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAIxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,qBAAa,UAAU;IACrB,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,YAAY,CAAiC;IACrD,OAAO,CAAC,SAAS,CAA4B;IAGtC,MAAM,EAAE,mBAAmB,CAAC;IAGnC,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,UAAU,CAA2B;IAG7C,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,UAAU,CAA2B;IAG7C,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,4BAA4B,CAAqC;IACzE,OAAO,CAAC,sBAAsB,CAA6B;IAG3D,OAAO,CAAC,aAAa,CAA8B;IAGnD,OAAO,CAAC,gBAAgB,CAA+C;IACvE,qEAAqE;IACrE,OAAO,CAAC,mBAAmB,CAAM;IAGjC,OAAO,CAAC,SAAS,CAAoC;gBAEzC,YAAY,EAAE,gBAAgB;IAM1C;;OAEG;IACH,OAAO,CAAC,UAAU;IA6BlB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmF3B;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,GAAG,UAAU;IAkChE;;;OAGG;IACI,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI;IAIlD;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAc3B;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,UAAU,IAAI,IAAI;IAOlB;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAO/B;;OAEG;IACH,iBAAiB,IAAI,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAU1D;;OAEG;IACH,cAAc,IAAI;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACpB;IAiCD,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,mBAAmB;IAW3B;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK1B;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMnC;;;;;OAKG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyL3C;;OAEG;YACW,uBAAuB;IAYrC;;OAEG;YACW,gBAAgB;IAyB9B,aAAa,IAAI,UAAU;IAI3B,aAAa,IAAI,UAAU,GAAG,IAAI;IAIlC,MAAM,IAAI,OAAO;IAMjB,eAAe,IAAI,MAAM;IAIzB,iBAAiB,IAAI,MAAM;IAO3B,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO;IAKzC,cAAc,IAAI,IAAI;IAMtB,WAAW,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAIpD,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,kBAAkB;IA2B1B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK/B,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKpE,QAAQ,IAAI,WAAW,GAAG,IAAI;IAK9B,cAAc,IAAI,WAAW,GAAG,IAAI;IAIpC,gBAAgB,IAAI,aAAa,GAAG,IAAI;IAIxC,eAAe,IAAI,YAAY,GAAG,IAAI;IAItC,eAAe,IAAI,gBAAgB,GAAG,IAAI;IAM1C,gBAAgB,IAAI,IAAI;IASlB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAehC,YAAY,CAAC,OAAO,GAAE,MAAW,GAAG,IAAI;IAMxC,WAAW,CAAC,OAAO,GAAE,MAAW,GAAG,IAAI;IASvC,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAK5B,OAAO,IAAI,OAAO;IAMlB;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAUnC,UAAU,IAAI,YAAY,GAAG,IAAI;IAIjC,qBAAqB,IAAI,YAAY,EAAE;IAMvC;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKpC,aAAa,IAAI,MAAM;IAIvB,uBAAuB,IAAI,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAMjF,iBAAiB,IAAI,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAItE,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9D,yBAAyB,IAAI,MAAM,GAAG,IAAI;IAM1C,OAAO,CAAC,YAAY;IAoCpB,iBAAiB,IAAI,IAAI;IAWzB,kBAAkB,IAAI,OAAO;IAI7B,eAAe,IAAI,OAAO;IAI1B,OAAO,CAAC,cAAc;IAoBtB,iBAAiB,IAAI,IAAI;IAazB,aAAa,IAAI,OAAO;IAOxB;;OAEG;IACH,OAAO,IAAI,IAAI;CAyBhB"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * PlayronEventEmitter - Unified event system for player
3
+ * Provides type-safe, consistent event handling across the player
4
+ */
5
+ export type VirtusEventMap = {
6
+ 'play': {
7
+ timestamp: number;
8
+ };
9
+ 'pause': {
10
+ timestamp: number;
11
+ };
12
+ 'ended': {
13
+ timestamp: number;
14
+ };
15
+ 'timeupdate': {
16
+ currentTime: number;
17
+ duration: number;
18
+ };
19
+ 'seeking': {
20
+ targetTime: number;
21
+ };
22
+ 'seeked': {
23
+ currentTime: number;
24
+ };
25
+ 'volumechange': {
26
+ volume: number;
27
+ isMuted: boolean;
28
+ };
29
+ 'ratechange': {
30
+ playbackRate: number;
31
+ };
32
+ 'loadedmetadata': {
33
+ duration: number;
34
+ videoWidth: number;
35
+ videoHeight: number;
36
+ };
37
+ 'buffering': {
38
+ isBuffering: boolean;
39
+ };
40
+ 'qualitychange': {
41
+ from: string;
42
+ to: string;
43
+ };
44
+ 'audiotrackchange': {
45
+ from: string;
46
+ to: string;
47
+ };
48
+ 'fullscreenchange': {
49
+ isFullscreen: boolean;
50
+ };
51
+ 'pipchange': {
52
+ isPip: boolean;
53
+ };
54
+ 'theatermodechange': {
55
+ isTheaterMode: boolean;
56
+ };
57
+ 'chapterchange': {
58
+ chapterId: string;
59
+ title: string;
60
+ };
61
+ 'skipintro': {
62
+ skipped: boolean;
63
+ time: number;
64
+ };
65
+ 'skipoutro': {
66
+ skipped: boolean;
67
+ time: number;
68
+ };
69
+ 'streamTypeDetected': {
70
+ type: 'vod' | 'live' | 'unknown';
71
+ info: any;
72
+ };
73
+ /** Fired immediately after manifest is parsed and tracks/qualities are populated. */
74
+ 'tracksready': {
75
+ hasQualities: boolean;
76
+ hasAudioTracks: boolean;
77
+ hasSubtitleTracks: boolean;
78
+ };
79
+ /** Fires when AirPlay device availability or connection state changes */
80
+ 'airplaychange': {
81
+ isAvailable: boolean;
82
+ isActive: boolean;
83
+ };
84
+ /** Periodic latency update — only emitted during live playback (~1s interval) */
85
+ 'livelatencyupdate': {
86
+ latency: number;
87
+ isAtLiveEdge: boolean;
88
+ liveEdgeTime: number;
89
+ };
90
+ 'drm:keysystem': {
91
+ keySystem: string;
92
+ };
93
+ 'drm:ready': {
94
+ keySystem?: string;
95
+ };
96
+ /** Emitted when playback freezes (currentTime stops advancing) */
97
+ 'stall': {
98
+ duration: number;
99
+ attempt: number;
100
+ };
101
+ /** Emitted when a stall is resolved by the recovery mechanism */
102
+ 'stallrecovered': {
103
+ duration: number;
104
+ method: 'seek' | 'quality';
105
+ };
106
+ 'error': {
107
+ code: string;
108
+ message: string;
109
+ details?: any;
110
+ };
111
+ 'warning': {
112
+ code: string;
113
+ message: string;
114
+ };
115
+ 'statechange': {
116
+ state: any;
117
+ };
118
+ 'ready': {
119
+ player: any;
120
+ };
121
+ 'destroy': {
122
+ timestamp: number;
123
+ };
124
+ };
125
+ export type VirtusEventType = keyof VirtusEventMap;
126
+ export type VirtusEventCallback<T extends VirtusEventType> = (data: VirtusEventMap[T]) => void;
127
+ /**
128
+ * Unified event emitter for Playron
129
+ */
130
+ export declare class PlayronEventEmitter {
131
+ private listeners;
132
+ private onceListeners;
133
+ /**
134
+ * Subscribe to an event
135
+ */
136
+ on<T extends VirtusEventType>(event: T, callback: VirtusEventCallback<T>): void;
137
+ /**
138
+ * Subscribe to an event (fires only once)
139
+ */
140
+ once<T extends VirtusEventType>(event: T, callback: VirtusEventCallback<T>): void;
141
+ /**
142
+ * Unsubscribe from an event
143
+ */
144
+ off<T extends VirtusEventType>(event: T, callback: VirtusEventCallback<T>): void;
145
+ /**
146
+ * Emit an event
147
+ */
148
+ emit<T extends VirtusEventType>(event: T, data: VirtusEventMap[T]): void;
149
+ /**
150
+ * Remove all listeners for a specific event or all events
151
+ */
152
+ removeAllListeners(event?: VirtusEventType): void;
153
+ /**
154
+ * Get listener count for an event
155
+ */
156
+ listenerCount(event: VirtusEventType): number;
157
+ /**
158
+ * Get all registered event types
159
+ */
160
+ eventNames(): VirtusEventType[];
161
+ }
162
+ //# sourceMappingURL=PlayronEventEmitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlayronEventEmitter.d.ts","sourceRoot":"","sources":["../../src/core/PlayronEventEmitter.ts"],"names":[],"mappings":"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"}