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.
Files changed (71) hide show
  1. package/CHANGELOG.md +27 -1
  2. package/android/proguard-rules.pro +4 -0
  3. package/android/src/main/java/com/theoplayer/PlayerConfigAdapter.kt +8 -1
  4. package/android/src/main/java/com/theoplayer/ReactTHEOplayerContext.kt +1 -1
  5. package/ios/THEOplayerRCTBridge.m +0 -2
  6. package/ios/THEOplayerRCTPlayerAPI.swift +0 -10
  7. package/ios/THEOplayerRCTView.swift +29 -34
  8. package/ios/THEOplayerRCTViewManager.swift +0 -9
  9. package/ios/ads/THEOplayerRCTView+Ads.swift +4 -0
  10. package/ios/ads/THEOplayerRCTView+AdsConfig.swift +6 -1
  11. package/ios/backgroundAudio/THEOplayerRCTBackgroundAudioManager.swift +105 -0
  12. package/ios/backgroundAudio/THEOplayerRCTView+BackgroundAudioConfig.swift +8 -79
  13. package/ios/pip/THEOplayerRCTPipManager.swift +34 -0
  14. package/ios/pip/THEOplayerRCTView+PipConfig.swift +3 -14
  15. package/ios/presentationMode/THEOplayerRCTPresentationModeManager.swift +28 -10
  16. package/lib/commonjs/internal/THEOplayerView.js +0 -1
  17. package/lib/commonjs/internal/THEOplayerView.js.map +1 -1
  18. package/lib/commonjs/internal/THEOplayerView.web.js +2 -11
  19. package/lib/commonjs/internal/THEOplayerView.web.js.map +1 -1
  20. package/lib/commonjs/internal/adapter/THEOplayerAdapter.js +0 -5
  21. package/lib/commonjs/internal/adapter/THEOplayerAdapter.js.map +1 -1
  22. package/lib/commonjs/internal/adapter/WebEventForwarder.js +3 -3
  23. package/lib/commonjs/internal/adapter/WebEventForwarder.js.map +1 -1
  24. package/lib/commonjs/internal/adapter/event/DefaultEventDispatcher.js +18 -2
  25. package/lib/commonjs/internal/adapter/event/DefaultEventDispatcher.js.map +1 -1
  26. package/lib/commonjs/internal/adapter/web/WebPresentationModeManager.js +6 -2
  27. package/lib/commonjs/internal/adapter/web/WebPresentationModeManager.js.map +1 -1
  28. package/lib/commonjs/manifest.json +1 -1
  29. package/lib/module/internal/THEOplayerView.js +0 -1
  30. package/lib/module/internal/THEOplayerView.js.map +1 -1
  31. package/lib/module/internal/THEOplayerView.web.js +2 -11
  32. package/lib/module/internal/THEOplayerView.web.js.map +1 -1
  33. package/lib/module/internal/adapter/THEOplayerAdapter.js +0 -5
  34. package/lib/module/internal/adapter/THEOplayerAdapter.js.map +1 -1
  35. package/lib/module/internal/adapter/WebEventForwarder.js +3 -3
  36. package/lib/module/internal/adapter/WebEventForwarder.js.map +1 -1
  37. package/lib/module/internal/adapter/event/DefaultEventDispatcher.js +18 -2
  38. package/lib/module/internal/adapter/event/DefaultEventDispatcher.js.map +1 -1
  39. package/lib/module/internal/adapter/web/WebPresentationModeManager.js +6 -2
  40. package/lib/module/internal/adapter/web/WebPresentationModeManager.js.map +1 -1
  41. package/lib/module/manifest.json +1 -1
  42. package/lib/typescript/api/ads/GoogleImaConfiguration.d.ts +5 -0
  43. package/lib/typescript/api/ads/GoogleImaConfiguration.d.ts.map +1 -1
  44. package/lib/typescript/api/config/PlayerConfiguration.d.ts +1 -0
  45. package/lib/typescript/api/config/PlayerConfiguration.d.ts.map +1 -1
  46. package/lib/typescript/api/player/THEOplayer.d.ts +0 -4
  47. package/lib/typescript/api/player/THEOplayer.d.ts.map +1 -1
  48. package/lib/typescript/internal/THEOplayerView.web.d.ts.map +1 -1
  49. package/lib/typescript/internal/adapter/THEOplayerAdapter.d.ts +0 -1
  50. package/lib/typescript/internal/adapter/THEOplayerAdapter.d.ts.map +1 -1
  51. package/lib/typescript/internal/adapter/event/DefaultEventDispatcher.d.ts +6 -4
  52. package/lib/typescript/internal/adapter/event/DefaultEventDispatcher.d.ts.map +1 -1
  53. package/lib/typescript/internal/adapter/web/WebPresentationModeManager.d.ts.map +1 -1
  54. package/package.json +1 -1
  55. package/src/api/ads/GoogleImaConfiguration.ts +6 -0
  56. package/src/api/config/PlayerConfiguration.ts +1 -0
  57. package/src/api/player/THEOplayer.ts +0 -5
  58. package/src/internal/THEOplayerView.tsx +1 -1
  59. package/src/internal/THEOplayerView.web.tsx +2 -12
  60. package/src/internal/adapter/THEOplayerAdapter.ts +0 -6
  61. package/src/internal/adapter/WebEventForwarder.ts +4 -4
  62. package/src/internal/adapter/event/DefaultEventDispatcher.ts +26 -8
  63. package/src/internal/adapter/web/WebPresentationModeManager.ts +6 -2
  64. package/src/manifest.json +1 -1
  65. package/lib/commonjs/internal/utils/ServiceWorkerUtils.js +0 -44
  66. package/lib/commonjs/internal/utils/ServiceWorkerUtils.js.map +0 -1
  67. package/lib/module/internal/utils/ServiceWorkerUtils.js +0 -36
  68. package/lib/module/internal/utils/ServiceWorkerUtils.js.map +0 -1
  69. package/lib/typescript/internal/utils/ServiceWorkerUtils.d.ts +0 -4
  70. package/lib/typescript/internal/utils/ServiceWorkerUtils.d.ts.map +0 -1
  71. 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, TextTrack, TimeRange } from 'react-native-theoplayer';
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 as TextTrack));
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 as NativeTextTrack as TextTrack));
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 as TextTrack));
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 '../../../api/event/EventDispatcher';
2
- import type { EventListener } from '../../../api/event/EventListener';
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
- // @ts-ignore
11
- this._eventListeners.set(type, [listener]);
20
+ this._eventListeners.set(type, [listener as EventListener<TMap[StringKeyOf<TMap>]>]);
12
21
  } else {
13
- // @ts-ignore
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' && element.attributes.getNamedItem('src') !== null) {
70
- this._element = element as HTMLVideoElement;
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.11.0","buildDate":"2024-12-13T11:03:38.635Z"}
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
- }