streamit-player 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 (118) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/LICENSE +203 -0
  3. package/README.md +552 -0
  4. package/dist/Player-BfmqCREY.cjs +11616 -0
  5. package/dist/Player-YpukGRGt.js +11617 -0
  6. package/dist/PlayerController-Bt7Po42U.cjs +14093 -0
  7. package/dist/PlayerController-CW0pxrIt.js +14072 -0
  8. package/dist/core/index.cjs +194 -0
  9. package/dist/core/index.js +194 -0
  10. package/dist/core/src/AdScheduler.d.ts +56 -0
  11. package/dist/core/src/AdScheduler.d.ts.map +1 -0
  12. package/dist/core/src/AdsController.d.ts +48 -0
  13. package/dist/core/src/AdsController.d.ts.map +1 -0
  14. package/dist/core/src/AdsManager.d.ts +181 -0
  15. package/dist/core/src/AdsManager.d.ts.map +1 -0
  16. package/dist/core/src/DrmManager.d.ts +162 -0
  17. package/dist/core/src/DrmManager.d.ts.map +1 -0
  18. package/dist/core/src/DrmValidator.d.ts +36 -0
  19. package/dist/core/src/DrmValidator.d.ts.map +1 -0
  20. package/dist/core/src/KeyboardManager.d.ts +73 -0
  21. package/dist/core/src/KeyboardManager.d.ts.map +1 -0
  22. package/dist/core/src/PictureInPictureManager.d.ts +47 -0
  23. package/dist/core/src/PictureInPictureManager.d.ts.map +1 -0
  24. package/dist/core/src/PlayerController.d.ts +231 -0
  25. package/dist/core/src/PlayerController.d.ts.map +1 -0
  26. package/dist/core/src/PlaylistManager.d.ts +63 -0
  27. package/dist/core/src/PlaylistManager.d.ts.map +1 -0
  28. package/dist/core/src/SourceManager.d.ts +142 -0
  29. package/dist/core/src/SourceManager.d.ts.map +1 -0
  30. package/dist/core/src/SubtitleManager.d.ts +77 -0
  31. package/dist/core/src/SubtitleManager.d.ts.map +1 -0
  32. package/dist/core/src/TimelineMath.d.ts +14 -0
  33. package/dist/core/src/TimelineMath.d.ts.map +1 -0
  34. package/dist/core/src/html-overlay/HtmlOverlayRenderer.d.ts +103 -0
  35. package/dist/core/src/html-overlay/HtmlOverlayRenderer.d.ts.map +1 -0
  36. package/dist/core/src/index.d.ts +21 -0
  37. package/dist/core/src/index.d.ts.map +1 -0
  38. package/dist/core/src/providers/ImaProvider.d.ts +135 -0
  39. package/dist/core/src/providers/ImaProvider.d.ts.map +1 -0
  40. package/dist/core/src/providers/ThumbnailProviders.d.ts +102 -0
  41. package/dist/core/src/providers/ThumbnailProviders.d.ts.map +1 -0
  42. package/dist/core/src/providers/VastProvider.d.ts +202 -0
  43. package/dist/core/src/providers/VastProvider.d.ts.map +1 -0
  44. package/dist/core/src/providers/VmapProvider.d.ts +98 -0
  45. package/dist/core/src/providers/VmapProvider.d.ts.map +1 -0
  46. package/dist/core/src/providers/fetchXmlWithPolicy.d.ts +9 -0
  47. package/dist/core/src/providers/fetchXmlWithPolicy.d.ts.map +1 -0
  48. package/dist/core/src/simid/SimidBridge.d.ts +44 -0
  49. package/dist/core/src/simid/SimidBridge.d.ts.map +1 -0
  50. package/dist/core/src/simid/SimidManager.d.ts +21 -0
  51. package/dist/core/src/simid/SimidManager.d.ts.map +1 -0
  52. package/dist/core/src/simid/SimidRuntime.d.ts +113 -0
  53. package/dist/core/src/simid/SimidRuntime.d.ts.map +1 -0
  54. package/dist/core/src/simid/SimidSession.d.ts +48 -0
  55. package/dist/core/src/simid/SimidSession.d.ts.map +1 -0
  56. package/dist/core/src/simid/types.d.ts +115 -0
  57. package/dist/core/src/simid/types.d.ts.map +1 -0
  58. package/dist/core/src/storage.d.ts +10 -0
  59. package/dist/core/src/storage.d.ts.map +1 -0
  60. package/dist/core/src/types.d.ts +1403 -0
  61. package/dist/core/src/types.d.ts.map +1 -0
  62. package/dist/core/src/utils.d.ts +34 -0
  63. package/dist/core/src/utils.d.ts.map +1 -0
  64. package/dist/core/src/vendorLoaders.d.ts +16 -0
  65. package/dist/core/src/vendorLoaders.d.ts.map +1 -0
  66. package/dist/index.cjs +55 -0
  67. package/dist/index.js +55 -0
  68. package/dist/src/index.d.ts +3 -0
  69. package/dist/src/index.d.ts.map +1 -0
  70. package/dist/streamit-player.esm.js +26226 -0
  71. package/dist/streamit-player.esm.min.js +18830 -0
  72. package/dist/streamit-player.iife.js +26229 -0
  73. package/dist/streamit-player.iife.min.js +4750 -0
  74. package/dist/web-components/index.cjs +15 -0
  75. package/dist/web-components/index.js +15 -0
  76. package/dist/web-components/src/ChaptersButton.d.ts +27 -0
  77. package/dist/web-components/src/ChaptersButton.d.ts.map +1 -0
  78. package/dist/web-components/src/ChaptersButton.styles.d.ts +2 -0
  79. package/dist/web-components/src/ChaptersButton.styles.d.ts.map +1 -0
  80. package/dist/web-components/src/PlayButton.d.ts +17 -0
  81. package/dist/web-components/src/PlayButton.d.ts.map +1 -0
  82. package/dist/web-components/src/PlayButton.styles.d.ts +2 -0
  83. package/dist/web-components/src/PlayButton.styles.d.ts.map +1 -0
  84. package/dist/web-components/src/Player.d.ts +271 -0
  85. package/dist/web-components/src/Player.d.ts.map +1 -0
  86. package/dist/web-components/src/Player.styles.d.ts +2 -0
  87. package/dist/web-components/src/Player.styles.d.ts.map +1 -0
  88. package/dist/web-components/src/SeekButton.d.ts +18 -0
  89. package/dist/web-components/src/SeekButton.d.ts.map +1 -0
  90. package/dist/web-components/src/SeekButton.styles.d.ts +2 -0
  91. package/dist/web-components/src/SeekButton.styles.d.ts.map +1 -0
  92. package/dist/web-components/src/Seekbar.d.ts +101 -0
  93. package/dist/web-components/src/Seekbar.d.ts.map +1 -0
  94. package/dist/web-components/src/Seekbar.styles.d.ts +2 -0
  95. package/dist/web-components/src/Seekbar.styles.d.ts.map +1 -0
  96. package/dist/web-components/src/Themes.d.ts +5 -0
  97. package/dist/web-components/src/Themes.d.ts.map +1 -0
  98. package/dist/web-components/src/VerticalControls.d.ts +49 -0
  99. package/dist/web-components/src/VerticalControls.d.ts.map +1 -0
  100. package/dist/web-components/src/VerticalControls.styles.d.ts +2 -0
  101. package/dist/web-components/src/VerticalControls.styles.d.ts.map +1 -0
  102. package/dist/web-components/src/VolumeControl.d.ts +21 -0
  103. package/dist/web-components/src/VolumeControl.d.ts.map +1 -0
  104. package/dist/web-components/src/VolumeControl.styles.d.ts +2 -0
  105. package/dist/web-components/src/VolumeControl.styles.d.ts.map +1 -0
  106. package/dist/web-components/src/icons/IconRegistry.d.ts +24 -0
  107. package/dist/web-components/src/icons/IconRegistry.d.ts.map +1 -0
  108. package/dist/web-components/src/index.d.ts +10 -0
  109. package/dist/web-components/src/index.d.ts.map +1 -0
  110. package/dist/web-components/src/player-internals/GestureController.d.ts +140 -0
  111. package/dist/web-components/src/player-internals/GestureController.d.ts.map +1 -0
  112. package/dist/web-components/src/player-internals/PrefetchController.d.ts +34 -0
  113. package/dist/web-components/src/player-internals/PrefetchController.d.ts.map +1 -0
  114. package/dist/web-components/src/player-internals/SettingsMenuController.d.ts +59 -0
  115. package/dist/web-components/src/player-internals/SettingsMenuController.d.ts.map +1 -0
  116. package/dist/web-components/src/player-internals/ThumbnailCache.d.ts +64 -0
  117. package/dist/web-components/src/player-internals/ThumbnailCache.d.ts.map +1 -0
  118. package/package.json +84 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdsManager.d.ts","sourceRoot":"","sources":["../../../core/src/AdsManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,162 @@
1
+ import { DrmConfig, DrmSystemConfig } from './types';
2
+ import { PlayerController } from './PlayerController';
3
+
4
+ export type EmeDiagnostics = {
5
+ requestMediaKeySystemAccess: boolean;
6
+ mediaKeysCreated: boolean;
7
+ mediaKeysAttached: boolean;
8
+ encryptedEventsCount: number;
9
+ challengesGenerated: number;
10
+ licenseRequestsSent: number;
11
+ licenseResponsesReceived: number;
12
+ sessionsUpdated: number;
13
+ keyStatusesChanges: number;
14
+ usableKeysCount: number;
15
+ expiredKeysCount: number;
16
+ outputRestrictedCount: number;
17
+ internalErrorsCount: number;
18
+ closedSessionsCount: number;
19
+ lastInternalError: string | null;
20
+ certificatesLoaded: number;
21
+ certificateLoadLatenciesMs: number[];
22
+ licenseRequestLatenciesMs: number[];
23
+ retryCount: number;
24
+ };
25
+ export declare function normalizeClearKeyValue(value: string): string;
26
+ export declare function normalizeClearKeys(clearkeys?: Record<string, string>): Record<string, string>;
27
+ /**
28
+ * Checks if a specific key system is supported by the client browser.
29
+ * SSR-safe, handles rejection gracefully, and never throws.
30
+ */
31
+ export declare function isKeySystemSupported(keySystem: string, contentType?: string): Promise<boolean>;
32
+ export declare function isWidevineSupported(): Promise<boolean>;
33
+ /**
34
+ * Checks if Microsoft PlayReady DRM is supported.
35
+ */
36
+ export declare function isPlayReadySupported(): Promise<boolean>;
37
+ /**
38
+ * Checks if Apple FairPlay DRM is supported.
39
+ * Supports standard EME and legacy WebKit prefixed checks.
40
+ */
41
+ export declare function isFairPlaySupported(): Promise<boolean>;
42
+ /**
43
+ * Checks if ClearKey decryption is supported.
44
+ */
45
+ export declare function isClearKeySupported(): Promise<boolean>;
46
+ /**
47
+ * Detects all supported DRM key systems dynamically.
48
+ * SSR-safe, returns support status mapping without throwing.
49
+ */
50
+ export declare function detectSupportedKeySystems(): Promise<Record<string, boolean>>;
51
+ /**
52
+ * Core DRM engine managing browser EME setups, certificates caching,
53
+ * license request pipelines, and active sessions garbage collections.
54
+ */
55
+ export declare class DrmManager {
56
+ static activeManagers: Set<DrmManager>;
57
+ emeDiagnostics: EmeDiagnostics;
58
+ private video;
59
+ private config;
60
+ private controller;
61
+ private mediaKeys;
62
+ private activeSessions;
63
+ /** Package-internal accessors used by DrmValidator's diagnostics report,
64
+ * which otherwise has no typed way to inspect this manager's private
65
+ * config/session state. */
66
+ getConfig(): DrmConfig | null;
67
+ getActiveSessions(): Set<MediaKeySession>;
68
+ private isDestroyed;
69
+ private destroyAbortController;
70
+ private eventListeners;
71
+ private sessionToContentId;
72
+ private pendingLicenseRequests;
73
+ private static certCache;
74
+ /**
75
+ * Bind DrmManager to HTMLVideoElement with DRM configurations.
76
+ * Does not run active browser CDM integrations until requested.
77
+ */
78
+ load(video: HTMLVideoElement, config: DrmConfig, controller: PlayerController, skipVideoListeners?: boolean): void;
79
+ registerSession(session: MediaKeySession): void;
80
+ unregisterSession(session: MediaKeySession): void;
81
+ triggerDrmError(message: string, errorType: 'key-system' | 'session' | 'license' | 'certificate', originalError?: unknown): void;
82
+ /**
83
+ * Handle video element standard encrypted event and trigger EME flow.
84
+ */
85
+ handleEncryptedEvent(event: MediaEncryptedEvent): Promise<void>;
86
+ /**
87
+ * Auto-selects the supported key system matching the configuration.
88
+ */
89
+ private selectSupportedKeySystem;
90
+ /**
91
+ * Lazily ensure MediaKeys instantiation and set them on video.
92
+ */
93
+ private ensureMediaKeys;
94
+ /**
95
+ * Helper fetch wrapper managing transient failure retries, timeouts, and destroy abort events.
96
+ */
97
+ private fetchWithRetryAndTimeout;
98
+ /**
99
+ * Load and cache server certificate DER binary.
100
+ */
101
+ loadCertificate(systemConfig: DrmSystemConfig): Promise<Uint8Array | null>;
102
+ /**
103
+ * EME License request acquisition pipeline.
104
+ */
105
+ private fetchLicense;
106
+ /**
107
+ * Resolve the config block for a given DRM system key name.
108
+ */
109
+ private resolveSystemConfig;
110
+ /**
111
+ * Standard EME Session creation and challenge update loop.
112
+ */
113
+ private initializeSession;
114
+ /**
115
+ * Legacy Safari WebKitMediaKeys implementation.
116
+ */
117
+ private initializeLegacyWebKitSession;
118
+ /**
119
+ * Helper preparing Apple FairPlay EME initialization payload.
120
+ */
121
+ private prepareFairPlayInitData;
122
+ /**
123
+ * Handle ClearKey inline keys mapping.
124
+ */
125
+ private handleClearKeyInlineUpdate;
126
+ /**
127
+ * Propagate DRM events and bubble errors to the player error card.
128
+ */
129
+ private handleDrmError;
130
+ /**
131
+ * Buffer ArrayBuffer to HEX string translation helper.
132
+ */
133
+ /** @internal Called from the module-level EME patch functions above. */
134
+ bufferToHex(buffer: BufferSource): string;
135
+ /**
136
+ * Dispose DRM Sessions, detach MediaKeys, and cleanly remove EME listeners.
137
+ */
138
+ destroy(): void;
139
+ getController(): PlayerController | null;
140
+ noteLicenseRequest(system: string, url: string): void;
141
+ noteLicenseResponse(system: string, url: string): void;
142
+ private now;
143
+ private getConfiguredSystemName;
144
+ private createLicenseRequestKey;
145
+ private recordLicenseRequest;
146
+ private recordLicenseResponse;
147
+ private recordCertificateLoaded;
148
+ /** @internal Called from the module-level EME patch functions above. */
149
+ recordChallengeGenerated(): void;
150
+ /** @internal Called from the module-level EME patch functions above. */
151
+ recordSessionUpdated(): void;
152
+ /** @internal Called from the module-level EME patch functions above. */
153
+ recordClosedSession(_session: object): void;
154
+ /** @internal Called from the module-level EME patch functions above. */
155
+ recordKeyStatusesChange(session: MediaKeySession): void;
156
+ private getContentId;
157
+ private concatInitData;
158
+ private fetchFairPlayLicense;
159
+ private arrayBufferToBase64;
160
+ private base64ToArrayBuffer;
161
+ }
162
+ //# sourceMappingURL=DrmManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DrmManager.d.ts","sourceRoot":"","sources":["../../../core/src/DrmManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { PlayerController } from './PlayerController';
2
+
3
+ export interface ValidationReport {
4
+ emeSupported: boolean;
5
+ keySystems: Record<string, boolean>;
6
+ activeSystem: string | null;
7
+ hasMediaKeys: boolean;
8
+ activeSessionsCount: number;
9
+ sessionIds: string[];
10
+ keyStatuses: string[];
11
+ hasUsableKey: boolean;
12
+ errors: string[];
13
+ passed: boolean;
14
+ requestMediaKeySystemAccessChecked: boolean;
15
+ mediaKeysCreatedChecked: boolean;
16
+ mediaKeysAttachedChecked: boolean;
17
+ encryptedEventCount: number;
18
+ licenseChallengeGeneratedCount: number;
19
+ licenseRequestSentCount: number;
20
+ licenseResponseReceivedCount: number;
21
+ sessionUpdatedCount: number;
22
+ keyStatusesChangeCount: number;
23
+ usableKeysCount: number;
24
+ expiredKeysCount: number;
25
+ outputRestrictedCount: number;
26
+ internalErrorsCount: number;
27
+ closedSessionsCount: number;
28
+ lastInternalError: string | null;
29
+ }
30
+ export declare class DrmValidator {
31
+ /**
32
+ * Performs an automated validation of the player's DRM state.
33
+ */
34
+ static validate(controller: PlayerController): Promise<ValidationReport>;
35
+ }
36
+ //# sourceMappingURL=DrmValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DrmValidator.d.ts","sourceRoot":"","sources":["../../../core/src/DrmValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAGhB,kCAAkC,EAAE,OAAO,CAAC;IAC5C,uBAAuB,EAAE,OAAO,CAAC;IACjC,wBAAwB,EAAE,OAAO,CAAC;IAClC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,8BAA8B,EAAE,MAAM,CAAC;IACvC,uBAAuB,EAAE,MAAM,CAAC;IAChC,4BAA4B,EAAE,MAAM,CAAC;IACrC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,qBAAa,YAAY;IACvB;;OAEG;WACiB,QAAQ,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CA+KtF"}
@@ -0,0 +1,73 @@
1
+ import { PlayerController } from './PlayerController';
2
+
3
+ export interface KeyboardActionDetail {
4
+ key?: string;
5
+ seconds?: number;
6
+ volume?: number;
7
+ isMuted?: boolean;
8
+ }
9
+ export type ShortcutAction = (controller: PlayerController, event: KeyboardEvent, detail?: KeyboardActionDetail) => void;
10
+ export interface ShortcutBinding {
11
+ key: string;
12
+ shiftKey?: boolean;
13
+ ctrlKey?: boolean;
14
+ altKey?: boolean;
15
+ action: string;
16
+ }
17
+ export type ActionHook = (actionName: string, detail?: KeyboardActionDetail) => void;
18
+ export declare class KeyboardManager {
19
+ private controller;
20
+ private bindings;
21
+ private actions;
22
+ private hooks;
23
+ private enabled;
24
+ constructor(controller: PlayerController);
25
+ /**
26
+ * Enable keyboard shortcuts processing.
27
+ */
28
+ enable(): void;
29
+ /**
30
+ * Disable keyboard shortcuts processing.
31
+ */
32
+ disable(): void;
33
+ /**
34
+ * Check if shortcuts are enabled.
35
+ */
36
+ isEnabled(): boolean;
37
+ /**
38
+ * Register a custom action handler.
39
+ */
40
+ registerAction(name: string, handler: ShortcutAction): void;
41
+ /**
42
+ * Unregister an action handler.
43
+ */
44
+ unregisterAction(name: string): void;
45
+ /**
46
+ * Bind a shortcut combo to an action.
47
+ */
48
+ bind(binding: ShortcutBinding): void;
49
+ /**
50
+ * Unbind a shortcut combo.
51
+ */
52
+ unbind(key: string, shiftKey?: boolean, ctrlKey?: boolean, altKey?: boolean): void;
53
+ /**
54
+ * Set a completely new shortcut mapping configuration.
55
+ */
56
+ setMap(newBindings: ShortcutBinding[]): void;
57
+ /**
58
+ * Subscribe to executed actions to show overlays or dispatch events in UI layer.
59
+ */
60
+ onAction(callback: ActionHook): () => void;
61
+ /**
62
+ * Process and route keydown events.
63
+ */
64
+ handleKeyDown(e: KeyboardEvent): void;
65
+ private dispatchHook;
66
+ private registerDefaultActions;
67
+ private registerDefaultBindings;
68
+ /**
69
+ * Release references and clean up all bindings, actions and hooks.
70
+ */
71
+ destroy(): void;
72
+ }
73
+ //# sourceMappingURL=KeyboardManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeyboardManager.d.ts","sourceRoot":"","sources":["../../../core/src/KeyboardManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,cAAc,GAAG,CAC3B,UAAU,EAAE,gBAAgB,EAC5B,KAAK,EAAE,aAAa,EACpB,MAAM,CAAC,EAAE,oBAAoB,KAC1B,IAAI,CAAC;AAEV,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,oBAAoB,KAAK,IAAI,CAAC;AAErF,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,OAAO,CAA0C;IACzD,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,OAAO,CAAQ;gBAEX,UAAU,EAAE,gBAAgB;IAqBxC;;OAEG;IACI,MAAM;IAIb;;OAEG;IACI,OAAO;IAId;;OAEG;IACI,SAAS,IAAI,OAAO;IAI3B;;OAEG;IACI,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc;IAI3D;;OAEG;IACI,gBAAgB,CAAC,IAAI,EAAE,MAAM;IAIpC;;OAEG;IACI,IAAI,CAAC,OAAO,EAAE,eAAe;IASpC;;OAEG;IACI,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,UAAQ,EAAE,OAAO,UAAQ,EAAE,MAAM,UAAQ;IAa5E;;OAEG;IACI,MAAM,CAAC,WAAW,EAAE,eAAe,EAAE;IAO5C;;OAEG;IACI,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,IAAI;IAOjD;;OAEG;IACI,aAAa,CAAC,CAAC,EAAE,aAAa;IAqGrC,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,sBAAsB;IA4I9B,OAAO,CAAC,uBAAuB;IA+C/B;;OAEG;IACI,OAAO;CAKf"}
@@ -0,0 +1,47 @@
1
+ import { PlayerEvents, PlayerState } from './types';
2
+
3
+ /**
4
+ * The minimal surface of `PlayerController` that `PictureInPictureManager`
5
+ * depends on.
6
+ */
7
+ export interface PictureInPictureManagerHost {
8
+ getVideoElement(): HTMLVideoElement;
9
+ getState(): PlayerState;
10
+ updateStatePublic(changes: Partial<PlayerState>): void;
11
+ dispatchEvent<K extends keyof PlayerEvents>(event: K, detail?: PlayerEvents[K]): void;
12
+ }
13
+ /**
14
+ * Owns Picture-in-Picture support detection, entering/exiting PiP (standard and
15
+ * legacy WebKit presentation-mode APIs) and the associated video events.
16
+ */
17
+ export declare class PictureInPictureManager {
18
+ private readonly host;
19
+ constructor(host: PictureInPictureManagerHost);
20
+ private get video();
21
+ private get state();
22
+ /**
23
+ * Detects Picture-in-Picture browser support, including Safari's WebKit
24
+ * presentation-mode API. Called once from `PlayerController`'s constructor.
25
+ */
26
+ detectSupport(): boolean;
27
+ private handleEnterPiP;
28
+ private handleLeavePiP;
29
+ private handleWebkitPresentationModeChanged;
30
+ /** Called from `PlayerController.setupEventListeners()`. */
31
+ attach(): void;
32
+ /** Mirror of {@link attach}. Called from `PlayerController.destroy()`. */
33
+ detach(): void;
34
+ isPictureInPictureSupported(): boolean;
35
+ enterPictureInPicture(): Promise<PictureInPictureWindow | undefined>;
36
+ exitPictureInPicture(): Promise<void>;
37
+ /**
38
+ * Whether the video is currently presented in Picture-in-Picture.
39
+ *
40
+ * NOTE: the toggle itself deliberately stays on `PlayerController`, because it
41
+ * must dispatch through the controller's own public `enterPictureInPicture()`
42
+ * / `exitPictureInPicture()` methods - consumers (and tests) rely on being
43
+ * able to observe or wrap those calls.
44
+ */
45
+ isInPictureInPicture(): boolean;
46
+ }
47
+ //# sourceMappingURL=PictureInPictureManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PictureInPictureManager.d.ts","sourceRoot":"","sources":["../../../core/src/PictureInPictureManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AASpD;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C,eAAe,IAAI,gBAAgB,CAAC;IACpC,QAAQ,IAAI,WAAW,CAAC;IACxB,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IACvD,aAAa,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CACvF;AAED;;;GAGG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA8B;gBAEvC,IAAI,EAAE,2BAA2B;IAI7C,OAAO,KAAK,KAAK,GAEhB;IAED,OAAO,KAAK,KAAK,GAEhB;IAED;;;OAGG;IACI,aAAa,IAAI,OAAO;IAc/B,OAAO,CAAC,cAAc,CAGpB;IAEF,OAAO,CAAC,cAAc,CAGpB;IAEF,OAAO,CAAC,mCAAmC,CAMzC;IAEF,4DAA4D;IACrD,MAAM,IAAI,IAAI;IAUrB,0EAA0E;IACnE,MAAM,IAAI,IAAI;IAUd,2BAA2B,IAAI,OAAO;IAIhC,qBAAqB,IAAI,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC;IAoBpE,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBlD;;;;;;;OAOG;IACI,oBAAoB,IAAI,OAAO;CAGvC"}
@@ -0,0 +1,231 @@
1
+ import { PlayerConfiguration, PlayerState, PlayerSource, TextTrackSource, ThumbnailProvider, Chapter, TimelineMarker, PlayerPlugin, SubtitleTrack, SubtitleAppearance, PlayerEvents, PlayerStatistics, PlaybackInterceptor, Advertisement, AdBreak, SleepTimerFullState, OverlayOptions } from './types';
2
+ import { DrmManager } from './DrmManager';
3
+ import { KeyboardManager } from './KeyboardManager';
4
+ import { AdsController } from './AdsController';
5
+ import { ScheduledAdRequest } from './AdScheduler';
6
+
7
+ export declare class PlayerController {
8
+ private video;
9
+ private sourceManager;
10
+ private stateCallbacks;
11
+ readonly shortcuts: KeyboardManager;
12
+ readonly ads: AdsController;
13
+ config: PlayerConfiguration;
14
+ /**
15
+ * The UI-layer player instance (e.g. `@player/web-components`'s `<player-player>`)
16
+ * that wired itself up to this controller, if any. `@player/core` has zero UI
17
+ * dependencies, so the concrete shape is intentionally unknown here - only the
18
+ * minimal duck-typed surface this class actually calls is declared.
19
+ */
20
+ player?: {
21
+ registerOverlay?: (id: string, options: OverlayOptions) => void;
22
+ };
23
+ private analyticsHandlers;
24
+ private playbackInterceptors;
25
+ pendingOverlays: Map<string, OverlayOptions>;
26
+ private thumbnailProvider?;
27
+ private plugins;
28
+ private eventListeners;
29
+ private isDestroyed;
30
+ private readonly playlistManager;
31
+ private readonly subtitleManager;
32
+ private readonly pictureInPictureManager;
33
+ preSeekVolume: number | null;
34
+ private lastFpsTimestamp;
35
+ private lastDecodedFrames;
36
+ private lastCalculatedFps;
37
+ private sleepTimerEndTimeMs?;
38
+ private handleVisibilityChange;
39
+ private state;
40
+ private hlsRetryCount;
41
+ private stallTimer?;
42
+ private lastNonZeroVolume;
43
+ private bufferingTimeout?;
44
+ private sleepTimerId?;
45
+ private createUnifiedConfig;
46
+ private validateConfig;
47
+ constructor(video: HTMLVideoElement, config?: PlayerConfiguration);
48
+ onStateChange(callback: (state: PlayerState) => void): () => void;
49
+ private updateState;
50
+ getState(): PlayerState;
51
+ updateStatePublic(changes: Partial<PlayerState>): void;
52
+ getThumbnailProvider(): ThumbnailProvider | undefined;
53
+ setThumbnailProvider(provider: ThumbnailProvider): void;
54
+ setDisplayMode(mode: 'standard' | 'vertical' | 'audio-only' | 'custom' | 'mini' | 'floating'): void;
55
+ setLiveMode(mode: 'live-only' | 'live-dvr'): void;
56
+ loadPlaylist(sources: PlayerSource[], startIndex?: number): void;
57
+ setPlaylist(sources: PlayerSource[], startIndex?: number): void;
58
+ setNearEndThreshold(threshold: number): void;
59
+ getNearEndThreshold(): number;
60
+ getPlaylist(): PlayerSource[];
61
+ getCurrentPlaylistIndex(): number;
62
+ getHistoryStack(): number[];
63
+ getCurrentPlaylistItem(): PlayerSource | null;
64
+ getPlaylistLength(): number;
65
+ hasPlaylist(): boolean;
66
+ isFirstPlaylistItem(): boolean;
67
+ isLastPlaylistItem(): boolean;
68
+ next(): void;
69
+ previous(): void;
70
+ appendPlaylistItem(source: PlayerSource): void;
71
+ insertPlaylistItem(index: number, source: PlayerSource): void;
72
+ removePlaylistItem(index: number): void;
73
+ clearPlaylist(): void;
74
+ replacePlaylistItem(index: number, source: PlayerSource): void;
75
+ movePlaylistItem(fromIndex: number, toIndex: number): void;
76
+ setPlaylistRepeatMode(mode: 'off' | 'repeat-all'): void;
77
+ getPlaylistRepeatMode(): 'off' | 'repeat-all';
78
+ getAutoAdvanceIndexOnEnded(): number | null;
79
+ private setupEventListeners;
80
+ destroy(): void;
81
+ private handlePlay;
82
+ private handlePause;
83
+ private clearBufferingTimeout;
84
+ private getSeekableStateBatch;
85
+ private handleWaiting;
86
+ private handlePlaying;
87
+ private handleSeeking;
88
+ private handleSeeked;
89
+ private handleCanPlay;
90
+ private handleNativeError;
91
+ private handleTimeUpdate;
92
+ private updateActiveChapter;
93
+ private handleDurationChange;
94
+ private handleVolumeChange;
95
+ private handleProgress;
96
+ private handleLoadedMetadata;
97
+ private handleEnded;
98
+ setManagedSubtitleTracks(source: 'hls' | 'dash', tracks: Array<{
99
+ label: string;
100
+ language: string;
101
+ default?: boolean;
102
+ forced?: boolean;
103
+ kind?: string;
104
+ }>, activeIndex: number): void;
105
+ private handleFullscreenChange;
106
+ private handleWebkitBeginFullscreen;
107
+ private handleWebkitEndFullscreen;
108
+ play(): void;
109
+ pause(): void;
110
+ togglePlay(): void;
111
+ seek(time: number): void;
112
+ seekBy(seconds: number): void;
113
+ setVolume(vol: number): void;
114
+ setMuted(muted: boolean): void;
115
+ toggleMute(): void;
116
+ setPlaybackRate(rate: number): void;
117
+ toggleFullscreen(container?: HTMLElement): void;
118
+ isPictureInPictureSupported(): boolean;
119
+ enterPictureInPicture(): Promise<PictureInPictureWindow | undefined>;
120
+ exitPictureInPicture(): Promise<void>;
121
+ togglePictureInPicture(): Promise<void>;
122
+ loadCaptions(track: TextTrackSource): void;
123
+ toggleCaptions(enable?: boolean): void;
124
+ replay(): void;
125
+ private validateSource;
126
+ private parseAndSanitizeEmbedSource;
127
+ loadSource(source: PlayerSource, clearPlaylist?: boolean): void;
128
+ setQuality(qualityIndex: number): void;
129
+ getAudioTracks(): string[];
130
+ getCurrentAudioTrack(): number;
131
+ setAudioTrack(trackIndex: number): void;
132
+ setSubtitleTrack(trackId: string | number): void;
133
+ disableSubtitles(): void;
134
+ hasSubtitles(): boolean;
135
+ getSubtitleTracks(): SubtitleTrack[];
136
+ getActiveSubtitleTrack(): SubtitleTrack | null;
137
+ getSubtitleAppearance(): SubtitleAppearance;
138
+ setSubtitleAppearance(appearance: Partial<SubtitleAppearance>): void;
139
+ resetSubtitleAppearance(): void;
140
+ private startStallCheck;
141
+ private stopStallCheck;
142
+ getVideoElement(): HTMLVideoElement;
143
+ /** The currently-active source handler's DRM manager, if any - used by
144
+ * DrmValidator's diagnostics report. Returns null when no source is
145
+ * loaded, or the active handler doesn't use DRM. */
146
+ getDrmManager(): DrmManager | null;
147
+ setChapters(chapters: Chapter[]): void;
148
+ nextChapter(): void;
149
+ prevChapter(): void;
150
+ getChapters(): Chapter[];
151
+ getActiveChapter(): Chapter | null;
152
+ seekToChapter(idOrIndex: string | number): void;
153
+ setMarkers(markers: TimelineMarker[]): void;
154
+ addMarker(marker: TimelineMarker): void;
155
+ clearMarkers(): void;
156
+ setLoop(enabled: boolean): void;
157
+ toggleLoop(): void;
158
+ setAutoScroll(enabled: boolean): void;
159
+ toggleAutoScroll(): void;
160
+ private tickSleepTimer;
161
+ setSleepTimer(setting: 'off' | 10 | 15 | 20 | 30 | 45 | 60 | 'end'): void;
162
+ private startSleepTimerCountdown;
163
+ private clearSleepTimer;
164
+ clearSleepTimerExpired(): void;
165
+ private triggerSleepTimerExpiration;
166
+ getSleepTimerState(): SleepTimerFullState;
167
+ getSleepTimerRemaining(): number | null;
168
+ getSleepTimerPreset(): 'off' | 10 | 15 | 20 | 30 | 45 | 60 | 'end';
169
+ isSleepTimerRunning(): boolean;
170
+ isPluginsEnabled(): boolean;
171
+ isAnalyticsEnabled(): boolean;
172
+ isSubtitlesEnabled(): boolean;
173
+ isAudioTracksEnabled(): boolean;
174
+ isQualityEnabled(): boolean;
175
+ isPlaybackSpeedEnabled(): boolean;
176
+ isSmartSeekEnabled(): boolean;
177
+ isChaptersEnabled(): boolean;
178
+ isMarkersEnabled(): boolean;
179
+ isPreciseSeekEnabled(): boolean;
180
+ shouldSnapToChapters(): boolean;
181
+ shouldSnapToMarkers(): boolean;
182
+ isKeyboardPrecisionEnabled(): boolean;
183
+ isFrameAccurateSeekingEnabled(): boolean;
184
+ isLiveDraggingEnabled(): boolean;
185
+ isSmoothDraggingEnabled(): boolean;
186
+ isContinuousUpdatesEnabled(): boolean;
187
+ exportConfig(): PlayerConfiguration;
188
+ updateConfig(newConfig: Partial<PlayerConfiguration>): void;
189
+ getPlugins(): PlayerPlugin[];
190
+ use(plugin: PlayerPlugin): void;
191
+ getPlugin(name: string): PlayerPlugin | undefined;
192
+ addEventListener<K extends keyof PlayerEvents>(event: K, callback: (detail: PlayerEvents[K]) => void): void;
193
+ removeEventListener<K extends keyof PlayerEvents>(event: K, callback: (detail: PlayerEvents[K]) => void): void;
194
+ dispatchEvent<K extends keyof PlayerEvents>(event: K, detail?: PlayerEvents[K]): void;
195
+ on<K extends keyof PlayerEvents>(event: K, callback: (detail: PlayerEvents[K]) => void): void;
196
+ off<K extends keyof PlayerEvents>(event: K, callback: (detail: PlayerEvents[K]) => void): void;
197
+ emit<K extends keyof PlayerEvents>(event: K, detail?: PlayerEvents[K]): void;
198
+ registerAnalyticsHandler(handler: (event: string, detail: unknown) => void): void;
199
+ unregisterAnalyticsHandler(handler: (event: string, detail: unknown) => void): void;
200
+ registerPlaybackInterceptor(interceptor: PlaybackInterceptor): void;
201
+ unregisterPlaybackInterceptor(interceptor: PlaybackInterceptor): void;
202
+ getAdsState(): Partial<PlayerState>;
203
+ getCurrentAd(): Advertisement | null;
204
+ getCurrentAdBreak(): AdBreak | null;
205
+ isPlayingAd(): boolean;
206
+ getAdProvider(): string | null;
207
+ setAdsEnabled(enabled: boolean): void;
208
+ skipAd(): void;
209
+ scheduleAd(request: ScheduledAdRequest): string;
210
+ unscheduleAd(id: string): void;
211
+ playAd(tagUrl: string): Promise<void>;
212
+ registerOverlay(id: string, options: OverlayOptions): void;
213
+ load(source: string | PlayerSource): void;
214
+ addPlaylistItem(source: PlayerSource): void;
215
+ getCurrentItem(): PlayerSource | null;
216
+ repeat(mode: 'off' | 'one' | 'all' | boolean): void;
217
+ getLiveEdgeTarget(): number;
218
+ buildLiveCapabilities(): import('./types').LiveCapabilities | null;
219
+ updateLiveState(): void;
220
+ seekToLiveEdge(): void;
221
+ getLiveLatency(): number | null;
222
+ isAtLiveEdge(): boolean;
223
+ showMarkerTypes(types: string[]): void;
224
+ hideMarkerTypes(types: string[]): void;
225
+ setMarkerVisibility(types: string[] | null): void;
226
+ getStatistics(): PlayerStatistics;
227
+ private updateMediaSession;
228
+ private updateMediaSessionPosition;
229
+ private updateMediaSessionPlaybackState;
230
+ }
231
+ //# sourceMappingURL=PlayerController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlayerController.d.ts","sourceRoot":"","sources":["../../../core/src/PlayerController.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { PlayerConfiguration, PlayerEvents, PlayerSource, PlayerState } from './types';
2
+
3
+ /**
4
+ * The minimal surface of `PlayerController` that `PlaylistManager` depends on.
5
+ * Declared explicitly so the manager's dependency surface stays small and
6
+ * auditable rather than "the whole controller as `any`".
7
+ */
8
+ export interface PlaylistManagerHost {
9
+ readonly config: PlayerConfiguration;
10
+ getState(): PlayerState;
11
+ updateStatePublic(changes: Partial<PlayerState>): void;
12
+ dispatchEvent<K extends keyof PlayerEvents>(event: K, detail?: PlayerEvents[K]): void;
13
+ loadSource(source: PlayerSource, clearPlaylist?: boolean): void;
14
+ play(): void;
15
+ }
16
+ /**
17
+ * Owns all playlist state and navigation behaviour previously inlined in
18
+ * `PlayerController`. `PlayerController` keeps identical public methods that
19
+ * delegate one-for-one into this class.
20
+ */
21
+ export declare class PlaylistManager {
22
+ private readonly host;
23
+ private originalPlaylist;
24
+ private historyStack;
25
+ private nearEndThreshold;
26
+ private hasDispatchedNearEndForCurrentBoundary;
27
+ constructor(host: PlaylistManagerHost);
28
+ private get state();
29
+ private updateState;
30
+ private dispatchEvent;
31
+ loadPlaylist(sources: PlayerSource[], startIndex?: number): void;
32
+ setPlaylist(sources: PlayerSource[], startIndex?: number): void;
33
+ setNearEndThreshold(threshold: number): void;
34
+ getNearEndThreshold(): number;
35
+ getPlaylist(): PlayerSource[];
36
+ getCurrentPlaylistIndex(): number;
37
+ getHistoryStack(): number[];
38
+ getCurrentPlaylistItem(): PlayerSource | null;
39
+ getPlaylistLength(): number;
40
+ hasPlaylist(): boolean;
41
+ isFirstPlaylistItem(): boolean;
42
+ isLastPlaylistItem(): boolean;
43
+ next(): void;
44
+ previous(): void;
45
+ appendPlaylistItem(source: PlayerSource): void;
46
+ insertPlaylistItem(index: number, source: PlayerSource): void;
47
+ removePlaylistItem(index: number): void;
48
+ clearPlaylist(): void;
49
+ replacePlaylistItem(index: number, source: PlayerSource): void;
50
+ movePlaylistItem(fromIndex: number, toIndex: number): void;
51
+ private loadPlaylistItem;
52
+ setPlaylistRepeatMode(mode: 'off' | 'repeat-all'): void;
53
+ getPlaylistRepeatMode(): 'off' | 'repeat-all';
54
+ getAutoAdvanceIndexOnEnded(): number | null;
55
+ private checkPlaylistNearEnd;
56
+ /**
57
+ * Called by `PlayerController.loadSource()` when a standalone source replaces
58
+ * an active playlist. Mirrors the previous inline block exactly.
59
+ */
60
+ clearForExternalSourceLoad(): void;
61
+ destroy(): void;
62
+ }
63
+ //# sourceMappingURL=PlaylistManager.d.ts.map