boss-web-player-sdk 1.1.11 → 1.1.13
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.
- package/README.md +18 -18
- package/dist/boss-web-player-sdk.css +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.d.ts +23 -0
- package/dist/core.js +1 -1
- package/dist/index.cjs +4 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +87 -1
- package/dist/index.js +1151 -960
- package/dist/index.js.map +1 -1
- package/dist/{src-a2B5ZIDF.js → src-CcXy_WIu.js} +36 -15
- package/dist/{src-a2B5ZIDF.js.map → src-CcXy_WIu.js.map} +1 -1
- package/dist/{src-CsMBVhOP.cjs → src-ynqyJ4on.cjs} +5 -5
- package/dist/{src-CsMBVhOP.cjs.map → src-ynqyJ4on.cjs.map} +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export declare interface AnalyticsEvent {
|
|
|
15
15
|
speed?: number;
|
|
16
16
|
errorMessage?: string;
|
|
17
17
|
errorCode?: number;
|
|
18
|
+
isRecoverable?: boolean;
|
|
18
19
|
sessionId?: string;
|
|
19
20
|
videoId?: string;
|
|
20
21
|
deviceType?: string;
|
|
@@ -35,6 +36,7 @@ export declare interface AnalyticsEvent {
|
|
|
35
36
|
audioTrack?: string;
|
|
36
37
|
subtitleLanguage?: string;
|
|
37
38
|
subtitleEnabled?: boolean;
|
|
39
|
+
isAutoSwitch?: boolean;
|
|
38
40
|
}
|
|
39
41
|
|
|
40
42
|
declare class AnalyticsModule {
|
|
@@ -100,7 +102,7 @@ declare interface AnalyticsSessionSnapshot {
|
|
|
100
102
|
milestonesHit: string[];
|
|
101
103
|
}
|
|
102
104
|
|
|
103
|
-
export declare function BossVideoPlayer({ playerKey, src, subtitles, licenseKey, themeColor, firebaseConfig, proxyDomains, apiBaseUrl, adTrackingUrl, overlayAdUrl, title, watermark, autoplay, muted, autoFullscreen, enableControls, enableSkipAd, skipAdAfterSeconds, chaptersDisplayMode, volumeControlType, subtitleStyle, drmConfig, onAnalyticsEvent, onKeyMomentsLoaded, initialTime, onTimeUpdate, }: BossVideoPlayerProps): JSX.Element;
|
|
105
|
+
export declare function BossVideoPlayer({ playerKey, src, subtitles, licenseKey, themeColor, firebaseConfig, proxyDomains, apiBaseUrl, adTrackingUrl, overlayAdUrl, title, watermark, autoplay, muted, autoFullscreen, enableControls, enableSkipAd, skipAdAfterSeconds, chaptersDisplayMode, volumeControlType, subtitleStyle, drmConfig, onAnalyticsEvent, delegate, onKeyMomentsLoaded, initialTime, onTimeUpdate, }: BossVideoPlayerProps): JSX.Element;
|
|
104
106
|
|
|
105
107
|
export declare interface BossVideoPlayerProps {
|
|
106
108
|
/** Player key from the GoBOSS dashboard — identifies your tenant. */
|
|
@@ -154,6 +156,13 @@ export declare interface BossVideoPlayerProps {
|
|
|
154
156
|
drmConfig?: DRMConfig;
|
|
155
157
|
/** Called for every analytics event — lets consumers add custom tracking. */
|
|
156
158
|
onAnalyticsEvent?: (event: AnalyticsEvent) => void;
|
|
159
|
+
/**
|
|
160
|
+
* Typed per-event callbacks (playerDidStartPlaying, playerDidPause, …) that
|
|
161
|
+
* receive only the arguments relevant to each event. Prefer this over
|
|
162
|
+
* `onAnalyticsEvent` for analytics, logging, and business logic; implement
|
|
163
|
+
* only the methods you need.
|
|
164
|
+
*/
|
|
165
|
+
delegate?: PlayerDelegate;
|
|
157
166
|
/** Called when chapter/key-moment data is parsed from the stream. */
|
|
158
167
|
onKeyMomentsLoaded?: (keyMoments: Chapter[]) => void;
|
|
159
168
|
/** Seek to this position (in seconds) when the video is ready. Use for resume-playback. */
|
|
@@ -177,6 +186,11 @@ declare class CastingModule {
|
|
|
177
186
|
deviceName: string;
|
|
178
187
|
};
|
|
179
188
|
getRemoteState(): RemoteCastState | null;
|
|
189
|
+
/**
|
|
190
|
+
* Derives the Cast MediaInfo content type from the stream URL so HLS/DASH manifests
|
|
191
|
+
* aren't sent to the receiver mislabeled as video/mp4, which causes load failures.
|
|
192
|
+
*/
|
|
193
|
+
private getContentType;
|
|
180
194
|
/**
|
|
181
195
|
* Prompts the native Google Cast device picker overlay, then loads media on the remote device.
|
|
182
196
|
* The caller is responsible for pausing local playback before/after this resolves.
|
|
@@ -362,6 +376,62 @@ declare class KeyMomentsModule {
|
|
|
362
376
|
onChapterChange(callback: (chapter: KeyMoment | null, index: number) => void): void;
|
|
363
377
|
}
|
|
364
378
|
|
|
379
|
+
/**
|
|
380
|
+
* Typed per-event callbacks for tenant applications.
|
|
381
|
+
*
|
|
382
|
+
* Unlike `AnalyticsCallback` (which receives the full analytics event for every
|
|
383
|
+
* event type), each delegate method receives only the arguments relevant to that
|
|
384
|
+
* event — clean signatures for logging, custom UI, and business logic.
|
|
385
|
+
*
|
|
386
|
+
* All methods are optional; implement only the ones you need.
|
|
387
|
+
*
|
|
388
|
+
* Conventions:
|
|
389
|
+
* - Arguments named `*Time` / `*At` are playback positions in seconds.
|
|
390
|
+
* - `watchDuration` and `seekDuration` are wall-clock seconds.
|
|
391
|
+
* - `from*` arguments are `undefined` when there was no previous value
|
|
392
|
+
* (e.g. the first quality selection after load).
|
|
393
|
+
*/
|
|
394
|
+
export declare interface PlayerDelegate {
|
|
395
|
+
/** Playback started for the first time (or restarted after finishing). */
|
|
396
|
+
playerDidStartPlaying?(startTime: number, autoplay: boolean): void;
|
|
397
|
+
/** Playback resumed after a pause. */
|
|
398
|
+
playerDidResumePlaying?(resumedAt: number): void;
|
|
399
|
+
/** Playback paused by the user (not fired for the implicit pause at end of stream). */
|
|
400
|
+
playerDidPause?(pausedAt: number): void;
|
|
401
|
+
/** Playback reached the end of the stream. */
|
|
402
|
+
playerDidFinishPlaying?(finishedAt: number, watchDuration: number): void;
|
|
403
|
+
/** The player was torn down (unmount / tab close) before playback finished. Fired at most once. */
|
|
404
|
+
playerDidDismiss?(dismissedAt: number, watchDuration: number): void;
|
|
405
|
+
/** A seek started (scrubber, ±10s skip). Fired once per seek gesture. */
|
|
406
|
+
playerDidStartSeeking?(fromTime: number): void;
|
|
407
|
+
/** The seek landed. `fromTime` is where the gesture began, `seekDuration` is wall-clock seconds it took. */
|
|
408
|
+
playerDidFinishSeeking?(fromTime: number, toTime: number, seekDuration: number): void;
|
|
409
|
+
/** Playback position update — fires on every native `timeupdate` (roughly 4×/second). */
|
|
410
|
+
playerDidUpdateCurrentTime?(currentTime: number, duration: number): void;
|
|
411
|
+
playerDidStartBuffering?(startedAt: number): void;
|
|
412
|
+
playerDidFinishBuffering?(endedAt: number): void;
|
|
413
|
+
/** Rendition changed. `isAutoSwitch` is true when ABR picked the level, false for a manual selection. */
|
|
414
|
+
playerDidChangeQuality?(fromQuality: string | undefined, toQuality: string, isAutoSwitch: boolean): void;
|
|
415
|
+
/** Subtitle track changed (languages, e.g. 'en' → 'fr'). */
|
|
416
|
+
playerDidChangeSubtitle?(fromSubtitle: string | undefined, toSubtitle: string): void;
|
|
417
|
+
/** Subtitles were turned off. `disabledSubtitle` is the language that was active. */
|
|
418
|
+
playerDidDisableSubtitle?(disabledSubtitle: string | undefined): void;
|
|
419
|
+
/** Audio track changed (track labels). */
|
|
420
|
+
playerDidChangeAudioTrack?(fromAudioTrack: string | undefined, toAudioTrack: string): void;
|
|
421
|
+
playerDidChangePlaybackSpeed?(fromSpeed: number, toSpeed: number): void;
|
|
422
|
+
/** `orientation` is the current `screen.orientation.type` (e.g. 'landscape-primary') when available. */
|
|
423
|
+
playerDidEnterFullscreen?(orientation?: string): void;
|
|
424
|
+
playerDidExitFullscreen?(orientation?: string): void;
|
|
425
|
+
/** A key moment was selected. `fromTime`/`toTime` are the chapter's start/end. */
|
|
426
|
+
playerDidSelectKeyMoment?(chapterId: string | undefined, chapterTitle: string, fromTime: number, toTime: number): void;
|
|
427
|
+
playerDidEnterPictureInPicture?(enteredAt?: number): void;
|
|
428
|
+
playerDidExitPictureInPicture?(exitedAt?: number): void;
|
|
429
|
+
/** A media/playback error. `isRecoverable` is true when the player will attempt recovery itself. */
|
|
430
|
+
playerDidEncounterPlaybackError?(errorCode: string, message: string, isRecoverable: boolean): void;
|
|
431
|
+
/** A network/CDN error. `statusCode` is the HTTP status when known, 0 otherwise. */
|
|
432
|
+
playerDidEncounterNetworkError?(statusCode: number, message: string, isRecoverable: boolean): void;
|
|
433
|
+
}
|
|
434
|
+
|
|
365
435
|
/**
|
|
366
436
|
* In-session telemetry payload for POST /api/player/sdk/events.
|
|
367
437
|
* `eventType`, `sessionId` and `currentTime` are always required; `videoId` and any
|
|
@@ -663,6 +733,22 @@ export declare class VideoPlayerSDK {
|
|
|
663
733
|
private parseAdBreaksFromFragments;
|
|
664
734
|
private parseAdBreaksFromPlaylist;
|
|
665
735
|
private isTimeInAdBreak;
|
|
736
|
+
/**
|
|
737
|
+
* Syncs isAdBreak/playbackRate/ad-mode UI state against `time` and emits
|
|
738
|
+
* adbreakchange on transitions. Called from timeupdate, but also called
|
|
739
|
+
* eagerly as soon as ad breaks or metadata become known — timeupdate alone
|
|
740
|
+
* doesn't fire until playback actually starts, which left a preroll ad's
|
|
741
|
+
* first frame briefly showing content controls (rewind/forward, etc.)
|
|
742
|
+
* while autoplay was blocked or the source was still buffering.
|
|
743
|
+
*/
|
|
744
|
+
private refreshAdBreakState;
|
|
745
|
+
/**
|
|
746
|
+
* Converts raw (stitched) video time to content-only time by subtracting the
|
|
747
|
+
* ad time elapsed before `time`. During an ad break the result is frozen at
|
|
748
|
+
* the content timestamp where the break started. Identity when no ad breaks
|
|
749
|
+
* are known. Mirrors the seekbar mapping in the UI layer.
|
|
750
|
+
*/
|
|
751
|
+
private videoTimeToContentTime;
|
|
666
752
|
getAdBreaks(): Array<{
|
|
667
753
|
startTime: number;
|
|
668
754
|
endTime: number;
|