react-native-theoplayer 8.11.0 → 8.12.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.
- package/CHANGELOG.md +27 -1
- package/android/proguard-rules.pro +4 -0
- package/android/src/main/java/com/theoplayer/PlayerConfigAdapter.kt +8 -1
- package/android/src/main/java/com/theoplayer/ReactTHEOplayerContext.kt +1 -1
- package/ios/THEOplayerRCTBridge.m +0 -2
- package/ios/THEOplayerRCTPlayerAPI.swift +0 -10
- package/ios/THEOplayerRCTView.swift +29 -34
- package/ios/THEOplayerRCTViewManager.swift +0 -9
- package/ios/ads/THEOplayerRCTView+Ads.swift +4 -0
- package/ios/ads/THEOplayerRCTView+AdsConfig.swift +6 -1
- package/ios/backgroundAudio/THEOplayerRCTBackgroundAudioManager.swift +105 -0
- package/ios/backgroundAudio/THEOplayerRCTView+BackgroundAudioConfig.swift +8 -79
- package/ios/pip/THEOplayerRCTPipManager.swift +34 -0
- package/ios/pip/THEOplayerRCTView+PipConfig.swift +3 -14
- package/ios/presentationMode/THEOplayerRCTPresentationModeManager.swift +28 -10
- package/lib/commonjs/internal/THEOplayerView.js +0 -1
- package/lib/commonjs/internal/THEOplayerView.js.map +1 -1
- package/lib/commonjs/internal/THEOplayerView.web.js +2 -11
- package/lib/commonjs/internal/THEOplayerView.web.js.map +1 -1
- package/lib/commonjs/internal/adapter/THEOplayerAdapter.js +0 -5
- package/lib/commonjs/internal/adapter/THEOplayerAdapter.js.map +1 -1
- package/lib/commonjs/internal/adapter/WebEventForwarder.js +3 -3
- package/lib/commonjs/internal/adapter/WebEventForwarder.js.map +1 -1
- package/lib/commonjs/internal/adapter/event/DefaultEventDispatcher.js +18 -2
- package/lib/commonjs/internal/adapter/event/DefaultEventDispatcher.js.map +1 -1
- package/lib/commonjs/internal/adapter/web/WebPresentationModeManager.js +6 -2
- package/lib/commonjs/internal/adapter/web/WebPresentationModeManager.js.map +1 -1
- package/lib/commonjs/manifest.json +1 -1
- package/lib/module/internal/THEOplayerView.js +0 -1
- package/lib/module/internal/THEOplayerView.js.map +1 -1
- package/lib/module/internal/THEOplayerView.web.js +2 -11
- package/lib/module/internal/THEOplayerView.web.js.map +1 -1
- package/lib/module/internal/adapter/THEOplayerAdapter.js +0 -5
- package/lib/module/internal/adapter/THEOplayerAdapter.js.map +1 -1
- package/lib/module/internal/adapter/WebEventForwarder.js +3 -3
- package/lib/module/internal/adapter/WebEventForwarder.js.map +1 -1
- package/lib/module/internal/adapter/event/DefaultEventDispatcher.js +18 -2
- package/lib/module/internal/adapter/event/DefaultEventDispatcher.js.map +1 -1
- package/lib/module/internal/adapter/web/WebPresentationModeManager.js +6 -2
- package/lib/module/internal/adapter/web/WebPresentationModeManager.js.map +1 -1
- package/lib/module/manifest.json +1 -1
- package/lib/typescript/api/ads/GoogleImaConfiguration.d.ts +5 -0
- package/lib/typescript/api/ads/GoogleImaConfiguration.d.ts.map +1 -1
- package/lib/typescript/api/config/PlayerConfiguration.d.ts +1 -0
- package/lib/typescript/api/config/PlayerConfiguration.d.ts.map +1 -1
- package/lib/typescript/api/player/THEOplayer.d.ts +0 -4
- package/lib/typescript/api/player/THEOplayer.d.ts.map +1 -1
- package/lib/typescript/internal/THEOplayerView.web.d.ts.map +1 -1
- package/lib/typescript/internal/adapter/THEOplayerAdapter.d.ts +0 -1
- package/lib/typescript/internal/adapter/THEOplayerAdapter.d.ts.map +1 -1
- package/lib/typescript/internal/adapter/event/DefaultEventDispatcher.d.ts +6 -4
- package/lib/typescript/internal/adapter/event/DefaultEventDispatcher.d.ts.map +1 -1
- package/lib/typescript/internal/adapter/web/WebPresentationModeManager.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/api/ads/GoogleImaConfiguration.ts +6 -0
- package/src/api/config/PlayerConfiguration.ts +1 -0
- package/src/api/player/THEOplayer.ts +0 -5
- package/src/internal/THEOplayerView.tsx +1 -1
- package/src/internal/THEOplayerView.web.tsx +2 -12
- package/src/internal/adapter/THEOplayerAdapter.ts +0 -6
- package/src/internal/adapter/WebEventForwarder.ts +4 -4
- package/src/internal/adapter/event/DefaultEventDispatcher.ts +26 -8
- package/src/internal/adapter/web/WebPresentationModeManager.ts +6 -2
- package/src/manifest.json +1 -1
- package/lib/commonjs/internal/utils/ServiceWorkerUtils.js +0 -44
- package/lib/commonjs/internal/utils/ServiceWorkerUtils.js.map +0 -1
- package/lib/module/internal/utils/ServiceWorkerUtils.js +0 -36
- package/lib/module/internal/utils/ServiceWorkerUtils.js.map +0 -1
- package/lib/typescript/internal/utils/ServiceWorkerUtils.d.ts +0 -4
- package/lib/typescript/internal/utils/ServiceWorkerUtils.d.ts.map +0 -1
- package/src/internal/utils/ServiceWorkerUtils.ts +0 -39
|
@@ -18,7 +18,7 @@ import type {
|
|
|
18
18
|
VolumeChangeEvent as NativeVolumeChangeEvent,
|
|
19
19
|
DimensionChangeEvent as NativeDimensionChangeEvent,
|
|
20
20
|
} from 'theoplayer';
|
|
21
|
-
import type { AdEvent, MediaTrack,
|
|
21
|
+
import type { AdEvent, MediaTrack, TimeRange } from 'react-native-theoplayer';
|
|
22
22
|
import {
|
|
23
23
|
AdEventType,
|
|
24
24
|
CastState,
|
|
@@ -267,7 +267,7 @@ export class WebEventForwarder {
|
|
|
267
267
|
track.addEventListener('removecue', this.onRemoveTextTrackCue(track));
|
|
268
268
|
track.addEventListener('entercue', this.onEnterTextTrackCue(track));
|
|
269
269
|
track.addEventListener('exitcue', this.onExitTextTrackCue(track));
|
|
270
|
-
this._facade.dispatchEvent(new DefaultTextTrackListEvent(TrackListEventType.ADD_TRACK, track
|
|
270
|
+
this._facade.dispatchEvent(new DefaultTextTrackListEvent(TrackListEventType.ADD_TRACK, fromNativeTextTrack(track)));
|
|
271
271
|
};
|
|
272
272
|
|
|
273
273
|
private readonly onRemoveTextTrack = (event: RemoveTrackEvent) => {
|
|
@@ -276,11 +276,11 @@ export class WebEventForwarder {
|
|
|
276
276
|
track.removeEventListener('removecue', this.onRemoveTextTrackCue(track));
|
|
277
277
|
track.removeEventListener('entercue', this.onEnterTextTrackCue(track));
|
|
278
278
|
track.removeEventListener('exitcue', this.onExitTextTrackCue(track));
|
|
279
|
-
this._facade.dispatchEvent(new DefaultTextTrackListEvent(TrackListEventType.REMOVE_TRACK, track
|
|
279
|
+
this._facade.dispatchEvent(new DefaultTextTrackListEvent(TrackListEventType.REMOVE_TRACK, fromNativeTextTrack(track)));
|
|
280
280
|
};
|
|
281
281
|
|
|
282
282
|
private readonly onChangeTextTrack = (event: TrackChangeEvent) => {
|
|
283
|
-
this._facade.dispatchEvent(new DefaultTextTrackListEvent(TrackListEventType.CHANGE_TRACK, event.track as NativeTextTrack
|
|
283
|
+
this._facade.dispatchEvent(new DefaultTextTrackListEvent(TrackListEventType.CHANGE_TRACK, fromNativeTextTrack(event.track as NativeTextTrack)));
|
|
284
284
|
};
|
|
285
285
|
|
|
286
286
|
private readonly onAddAudioTrack = (event: AddTrackEvent) => {
|
|
@@ -1,17 +1,25 @@
|
|
|
1
|
-
import type { EventDispatcher, EventMap, StringKeyOf } from '
|
|
2
|
-
import type { EventListener } from '
|
|
1
|
+
import type { EventDispatcher, EventMap, StringKeyOf } from 'react-native-theoplayer';
|
|
2
|
+
import type { EventListener } from 'react-native-theoplayer';
|
|
3
3
|
import { arrayRemoveElement } from '../../utils/arrayUtil';
|
|
4
4
|
|
|
5
5
|
export class DefaultEventDispatcher<TMap extends EventMap<StringKeyOf<TMap>>> implements EventDispatcher<TMap> {
|
|
6
6
|
readonly _eventListeners: Map<StringKeyOf<TMap>, EventListener<TMap[StringKeyOf<TMap>]>[]> = new Map();
|
|
7
7
|
|
|
8
|
-
addEventListener<K extends StringKeyOf<TMap>>(type: K, listener: EventListener<TMap[K]>): void {
|
|
8
|
+
addEventListener<K extends StringKeyOf<TMap>>(type: K | readonly K[], listener: EventListener<TMap[K]>): void {
|
|
9
|
+
if (typeof listener !== 'function') {
|
|
10
|
+
return;
|
|
11
|
+
} else if (Array.isArray(type)) {
|
|
12
|
+
type.forEach((t) => this.addSingleEventListener(t, listener));
|
|
13
|
+
} else {
|
|
14
|
+
this.addSingleEventListener(type as K, listener);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
private addSingleEventListener<K extends StringKeyOf<TMap>>(type: K, listener: EventListener<TMap[K]>): void {
|
|
9
19
|
if (!this._eventListeners.has(type)) {
|
|
10
|
-
|
|
11
|
-
this._eventListeners.set(type, [listener]);
|
|
20
|
+
this._eventListeners.set(type, [listener as EventListener<TMap[StringKeyOf<TMap>]>]);
|
|
12
21
|
} else {
|
|
13
|
-
|
|
14
|
-
this._eventListeners.get(type)?.push(listener);
|
|
22
|
+
this._eventListeners.get(type)?.push(listener as EventListener<TMap[StringKeyOf<TMap>]>);
|
|
15
23
|
}
|
|
16
24
|
}
|
|
17
25
|
|
|
@@ -26,7 +34,17 @@ export class DefaultEventDispatcher<TMap extends EventMap<StringKeyOf<TMap>>> im
|
|
|
26
34
|
}
|
|
27
35
|
};
|
|
28
36
|
|
|
29
|
-
removeEventListener<K extends StringKeyOf<TMap>>(type: K, listener: EventListener<TMap[K]>): void {
|
|
37
|
+
removeEventListener<K extends StringKeyOf<TMap>>(type: K | readonly K[], listener: EventListener<TMap[K]>): void {
|
|
38
|
+
if (typeof listener !== 'function') {
|
|
39
|
+
return;
|
|
40
|
+
} else if (Array.isArray(type)) {
|
|
41
|
+
type.forEach((t) => this.removeSingleEventListener(t, listener));
|
|
42
|
+
} else {
|
|
43
|
+
this.removeSingleEventListener(type as K, listener);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
private removeSingleEventListener<K extends StringKeyOf<TMap>>(type: K, listener: EventListener<TMap[K]>): void {
|
|
30
48
|
const listeners = this._eventListeners.get(type);
|
|
31
49
|
if (listeners) {
|
|
32
50
|
arrayRemoveElement(listeners, listener);
|
|
@@ -66,8 +66,12 @@ export class WebPresentationModeManager {
|
|
|
66
66
|
private prepareForPresentationModeChanges() {
|
|
67
67
|
const elements = this._player.element.children;
|
|
68
68
|
for (const element of Array.from(elements)) {
|
|
69
|
-
if (element.tagName === 'VIDEO'
|
|
70
|
-
|
|
69
|
+
if (element.tagName === 'VIDEO') {
|
|
70
|
+
const videoElement = element as HTMLVideoElement;
|
|
71
|
+
if ((videoElement.src !== null && videoElement.src !== '') || videoElement.srcObject !== null) {
|
|
72
|
+
this._element = videoElement;
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
71
75
|
}
|
|
72
76
|
}
|
|
73
77
|
// listen for pip updates on element
|
package/src/manifest.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"8.
|
|
1
|
+
{"version":"8.12.0","buildDate":"2025-01-09T15:09:23.405Z"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.browserCanPlayHLSAndHasNoMSE = browserCanPlayHLSAndHasNoMSE;
|
|
7
|
-
exports.maybeUnregisterServiceWorker = maybeUnregisterServiceWorker;
|
|
8
|
-
exports.registerServiceWorker = registerServiceWorker;
|
|
9
|
-
function browserCanPlayHLSAndHasNoMSE() {
|
|
10
|
-
const videoElement = document.createElement('video');
|
|
11
|
-
const canPlayHls = videoElement && videoElement.canPlayType && videoElement.canPlayType('application/vnd.apple.mpegURL') !== '';
|
|
12
|
-
// @ts-ignore
|
|
13
|
-
const canPlayMse = Boolean(window.MediaSource || window.WebKitMediaSource || window.ManagedMediaSource);
|
|
14
|
-
return canPlayHls && !canPlayMse;
|
|
15
|
-
}
|
|
16
|
-
async function registerServiceWorker(libraryLocation) {
|
|
17
|
-
if ('serviceWorker' in navigator) {
|
|
18
|
-
try {
|
|
19
|
-
const serviceWorkerName = 'theoplayer.sw.js';
|
|
20
|
-
const serviceWorkerPath = libraryLocation ? (libraryLocation.endsWith('/') ? libraryLocation : `${libraryLocation}/`) + serviceWorkerName : serviceWorkerName;
|
|
21
|
-
const serviceWorkerScope = libraryLocation ? libraryLocation.endsWith('/') ? libraryLocation : `${libraryLocation}/` : '/';
|
|
22
|
-
|
|
23
|
-
// unregister beforehand to solve an issue when doing a hard reload of the page causing the service worker to not intercept the manifests.
|
|
24
|
-
await maybeUnregisterServiceWorker(serviceWorkerPath);
|
|
25
|
-
await navigator.serviceWorker.register(serviceWorkerPath, {
|
|
26
|
-
scope: serviceWorkerScope
|
|
27
|
-
});
|
|
28
|
-
//console.log('Successfully registered server worker');
|
|
29
|
-
} catch (error) {
|
|
30
|
-
console.error(`Service worker registration failed: ${error}`);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
async function maybeUnregisterServiceWorker(serviceWorkerPath) {
|
|
35
|
-
if ('serviceWorker' in navigator) {
|
|
36
|
-
try {
|
|
37
|
-
const registration = await navigator.serviceWorker.getRegistration(serviceWorkerPath);
|
|
38
|
-
await registration?.unregister();
|
|
39
|
-
} catch (error) {
|
|
40
|
-
console.error(`Service worker unregistration failed: ${error}`);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=ServiceWorkerUtils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["browserCanPlayHLSAndHasNoMSE","videoElement","document","createElement","canPlayHls","canPlayType","canPlayMse","Boolean","window","MediaSource","WebKitMediaSource","ManagedMediaSource","registerServiceWorker","libraryLocation","navigator","serviceWorkerName","serviceWorkerPath","endsWith","serviceWorkerScope","maybeUnregisterServiceWorker","serviceWorker","register","scope","error","console","registration","getRegistration","unregister"],"sourceRoot":"../../../../src","sources":["internal/utils/ServiceWorkerUtils.ts"],"mappings":";;;;;;;;AAAO,SAASA,4BAA4BA,CAAA,EAAG;EAC7C,MAAMC,YAAY,GAAGC,QAAQ,CAACC,aAAa,CAAC,OAAO,CAAC;EACpD,MAAMC,UAAU,GAAGH,YAAY,IAAIA,YAAY,CAACI,WAAW,IAAIJ,YAAY,CAACI,WAAW,CAAC,+BAA+B,CAAC,KAAK,EAAE;EAC/H;EACA,MAAMC,UAAU,GAAGC,OAAO,CAACC,MAAM,CAACC,WAAW,IAAID,MAAM,CAACE,iBAAiB,IAAIF,MAAM,CAACG,kBAAkB,CAAC;EACvG,OAAOP,UAAU,IAAI,CAACE,UAAU;AAClC;AAEO,eAAeM,qBAAqBA,CAACC,eAAwB,EAAiB;EACnF,IAAI,eAAe,IAAIC,SAAS,EAAE;IAChC,IAAI;MACF,MAAMC,iBAAiB,GAAG,kBAAkB;MAC5C,MAAMC,iBAAiB,GAAGH,eAAe,GACrC,CAACA,eAAe,CAACI,QAAQ,CAAC,GAAG,CAAC,GAAGJ,eAAe,GAAG,GAAGA,eAAe,GAAG,IAAIE,iBAAiB,GAC7FA,iBAAiB;MACrB,MAAMG,kBAAkB,GAAGL,eAAe,GAAIA,eAAe,CAACI,QAAQ,CAAC,GAAG,CAAC,GAAGJ,eAAe,GAAG,GAAGA,eAAe,GAAG,GAAI,GAAG;;MAE5H;MACA,MAAMM,4BAA4B,CAACH,iBAAiB,CAAC;MACrD,MAAMF,SAAS,CAACM,aAAa,CAACC,QAAQ,CAACL,iBAAiB,EAAE;QACxDM,KAAK,EAAEJ;MACT,CAAC,CAAC;MACF;IACF,CAAC,CAAC,OAAOK,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,uCAAuCA,KAAK,EAAE,CAAC;IAC/D;EACF;AACF;AAEO,eAAeJ,4BAA4BA,CAACH,iBAA0B,EAAiB;EAC5F,IAAI,eAAe,IAAIF,SAAS,EAAE;IAChC,IAAI;MACF,MAAMW,YAAY,GAAG,MAAMX,SAAS,CAACM,aAAa,CAACM,eAAe,CAACV,iBAAiB,CAAC;MACrF,MAAMS,YAAY,EAAEE,UAAU,CAAC,CAAC;IAClC,CAAC,CAAC,OAAOJ,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,yCAAyCA,KAAK,EAAE,CAAC;IACjE;EACF;AACF","ignoreList":[]}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
export function browserCanPlayHLSAndHasNoMSE() {
|
|
2
|
-
const videoElement = document.createElement('video');
|
|
3
|
-
const canPlayHls = videoElement && videoElement.canPlayType && videoElement.canPlayType('application/vnd.apple.mpegURL') !== '';
|
|
4
|
-
// @ts-ignore
|
|
5
|
-
const canPlayMse = Boolean(window.MediaSource || window.WebKitMediaSource || window.ManagedMediaSource);
|
|
6
|
-
return canPlayHls && !canPlayMse;
|
|
7
|
-
}
|
|
8
|
-
export async function registerServiceWorker(libraryLocation) {
|
|
9
|
-
if ('serviceWorker' in navigator) {
|
|
10
|
-
try {
|
|
11
|
-
const serviceWorkerName = 'theoplayer.sw.js';
|
|
12
|
-
const serviceWorkerPath = libraryLocation ? (libraryLocation.endsWith('/') ? libraryLocation : `${libraryLocation}/`) + serviceWorkerName : serviceWorkerName;
|
|
13
|
-
const serviceWorkerScope = libraryLocation ? libraryLocation.endsWith('/') ? libraryLocation : `${libraryLocation}/` : '/';
|
|
14
|
-
|
|
15
|
-
// unregister beforehand to solve an issue when doing a hard reload of the page causing the service worker to not intercept the manifests.
|
|
16
|
-
await maybeUnregisterServiceWorker(serviceWorkerPath);
|
|
17
|
-
await navigator.serviceWorker.register(serviceWorkerPath, {
|
|
18
|
-
scope: serviceWorkerScope
|
|
19
|
-
});
|
|
20
|
-
//console.log('Successfully registered server worker');
|
|
21
|
-
} catch (error) {
|
|
22
|
-
console.error(`Service worker registration failed: ${error}`);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
export async function maybeUnregisterServiceWorker(serviceWorkerPath) {
|
|
27
|
-
if ('serviceWorker' in navigator) {
|
|
28
|
-
try {
|
|
29
|
-
const registration = await navigator.serviceWorker.getRegistration(serviceWorkerPath);
|
|
30
|
-
await registration?.unregister();
|
|
31
|
-
} catch (error) {
|
|
32
|
-
console.error(`Service worker unregistration failed: ${error}`);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=ServiceWorkerUtils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["browserCanPlayHLSAndHasNoMSE","videoElement","document","createElement","canPlayHls","canPlayType","canPlayMse","Boolean","window","MediaSource","WebKitMediaSource","ManagedMediaSource","registerServiceWorker","libraryLocation","navigator","serviceWorkerName","serviceWorkerPath","endsWith","serviceWorkerScope","maybeUnregisterServiceWorker","serviceWorker","register","scope","error","console","registration","getRegistration","unregister"],"sourceRoot":"../../../../src","sources":["internal/utils/ServiceWorkerUtils.ts"],"mappings":"AAAA,OAAO,SAASA,4BAA4BA,CAAA,EAAG;EAC7C,MAAMC,YAAY,GAAGC,QAAQ,CAACC,aAAa,CAAC,OAAO,CAAC;EACpD,MAAMC,UAAU,GAAGH,YAAY,IAAIA,YAAY,CAACI,WAAW,IAAIJ,YAAY,CAACI,WAAW,CAAC,+BAA+B,CAAC,KAAK,EAAE;EAC/H;EACA,MAAMC,UAAU,GAAGC,OAAO,CAACC,MAAM,CAACC,WAAW,IAAID,MAAM,CAACE,iBAAiB,IAAIF,MAAM,CAACG,kBAAkB,CAAC;EACvG,OAAOP,UAAU,IAAI,CAACE,UAAU;AAClC;AAEA,OAAO,eAAeM,qBAAqBA,CAACC,eAAwB,EAAiB;EACnF,IAAI,eAAe,IAAIC,SAAS,EAAE;IAChC,IAAI;MACF,MAAMC,iBAAiB,GAAG,kBAAkB;MAC5C,MAAMC,iBAAiB,GAAGH,eAAe,GACrC,CAACA,eAAe,CAACI,QAAQ,CAAC,GAAG,CAAC,GAAGJ,eAAe,GAAG,GAAGA,eAAe,GAAG,IAAIE,iBAAiB,GAC7FA,iBAAiB;MACrB,MAAMG,kBAAkB,GAAGL,eAAe,GAAIA,eAAe,CAACI,QAAQ,CAAC,GAAG,CAAC,GAAGJ,eAAe,GAAG,GAAGA,eAAe,GAAG,GAAI,GAAG;;MAE5H;MACA,MAAMM,4BAA4B,CAACH,iBAAiB,CAAC;MACrD,MAAMF,SAAS,CAACM,aAAa,CAACC,QAAQ,CAACL,iBAAiB,EAAE;QACxDM,KAAK,EAAEJ;MACT,CAAC,CAAC;MACF;IACF,CAAC,CAAC,OAAOK,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,uCAAuCA,KAAK,EAAE,CAAC;IAC/D;EACF;AACF;AAEA,OAAO,eAAeJ,4BAA4BA,CAACH,iBAA0B,EAAiB;EAC5F,IAAI,eAAe,IAAIF,SAAS,EAAE;IAChC,IAAI;MACF,MAAMW,YAAY,GAAG,MAAMX,SAAS,CAACM,aAAa,CAACM,eAAe,CAACV,iBAAiB,CAAC;MACrF,MAAMS,YAAY,EAAEE,UAAU,CAAC,CAAC;IAClC,CAAC,CAAC,OAAOJ,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,yCAAyCA,KAAK,EAAE,CAAC;IACjE;EACF;AACF","ignoreList":[]}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export declare function browserCanPlayHLSAndHasNoMSE(): boolean;
|
|
2
|
-
export declare function registerServiceWorker(libraryLocation?: string): Promise<void>;
|
|
3
|
-
export declare function maybeUnregisterServiceWorker(serviceWorkerPath?: string): Promise<void>;
|
|
4
|
-
//# sourceMappingURL=ServiceWorkerUtils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceWorkerUtils.d.ts","sourceRoot":"","sources":["../../../../src/internal/utils/ServiceWorkerUtils.ts"],"names":[],"mappings":"AAAA,wBAAgB,4BAA4B,YAM3C;AAED,wBAAsB,qBAAqB,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBnF;AAED,wBAAsB,4BAA4B,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS5F"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
export function browserCanPlayHLSAndHasNoMSE() {
|
|
2
|
-
const videoElement = document.createElement('video');
|
|
3
|
-
const canPlayHls = videoElement && videoElement.canPlayType && videoElement.canPlayType('application/vnd.apple.mpegURL') !== '';
|
|
4
|
-
// @ts-ignore
|
|
5
|
-
const canPlayMse = Boolean(window.MediaSource || window.WebKitMediaSource || window.ManagedMediaSource);
|
|
6
|
-
return canPlayHls && !canPlayMse;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export async function registerServiceWorker(libraryLocation?: string): Promise<void> {
|
|
10
|
-
if ('serviceWorker' in navigator) {
|
|
11
|
-
try {
|
|
12
|
-
const serviceWorkerName = 'theoplayer.sw.js';
|
|
13
|
-
const serviceWorkerPath = libraryLocation
|
|
14
|
-
? (libraryLocation.endsWith('/') ? libraryLocation : `${libraryLocation}/`) + serviceWorkerName
|
|
15
|
-
: serviceWorkerName;
|
|
16
|
-
const serviceWorkerScope = libraryLocation ? (libraryLocation.endsWith('/') ? libraryLocation : `${libraryLocation}/`) : '/';
|
|
17
|
-
|
|
18
|
-
// unregister beforehand to solve an issue when doing a hard reload of the page causing the service worker to not intercept the manifests.
|
|
19
|
-
await maybeUnregisterServiceWorker(serviceWorkerPath);
|
|
20
|
-
await navigator.serviceWorker.register(serviceWorkerPath, {
|
|
21
|
-
scope: serviceWorkerScope,
|
|
22
|
-
});
|
|
23
|
-
//console.log('Successfully registered server worker');
|
|
24
|
-
} catch (error) {
|
|
25
|
-
console.error(`Service worker registration failed: ${error}`);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export async function maybeUnregisterServiceWorker(serviceWorkerPath?: string): Promise<void> {
|
|
31
|
-
if ('serviceWorker' in navigator) {
|
|
32
|
-
try {
|
|
33
|
-
const registration = await navigator.serviceWorker.getRegistration(serviceWorkerPath);
|
|
34
|
-
await registration?.unregister();
|
|
35
|
-
} catch (error) {
|
|
36
|
-
console.error(`Service worker unregistration failed: ${error}`);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|