react-native-theoplayer 7.9.0 → 8.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 (101) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +9 -1
  3. package/android/build.gradle +2 -2
  4. package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/8.0.0/ads-wrapper-8.0.0.aar +0 -0
  5. package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/{7.6.1/ads-wrapper-7.6.1.pom → 8.0.0/ads-wrapper-8.0.0.pom} +2 -2
  6. package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/maven-metadata-local.xml +4 -4
  7. package/android/src/main/java/com/theoplayer/PlayerConfigAdapter.kt +0 -26
  8. package/android/src/main/java/com/theoplayer/PlayerEventEmitter.kt +1 -3
  9. package/android/src/main/java/com/theoplayer/ReactTHEOplayerView.kt +0 -1
  10. package/android/src/main/java/com/theoplayer/ads/AdAdapter.kt +13 -6
  11. package/android/src/main/java/com/theoplayer/ads/AdEventAdapter.kt +23 -24
  12. package/android/src/main/java/com/theoplayer/ads/AdsModule.kt +1 -5
  13. package/android/src/main/java/com/theoplayer/broadcast/EventBroadcastModule.kt +1 -5
  14. package/android/src/main/java/com/theoplayer/cache/CacheModule.kt +8 -8
  15. package/android/src/main/java/com/theoplayer/drm/ContentProtectionModule.kt +2 -1
  16. package/android/src/main/java/com/theoplayer/player/PlayerModule.kt +1 -5
  17. package/android/src/main/java/com/theoplayer/source/GoogleDaiSourceAdapter.kt +1 -0
  18. package/android/src/main/java/com/theoplayer/source/SSAIAdapterRegistry.kt +1 -1
  19. package/android/src/main/java/com/theoplayer/track/QualityListAdapter.kt +3 -20
  20. package/android/src/main/java/com/theoplayer/track/TextTrackStyleAdapter.kt +12 -12
  21. package/android/src/main/java/com/theoplayer/util/BridgeUtils.kt +1 -1
  22. package/app.plugin.js +32 -35
  23. package/ios/THEOplayerRCTTypeUtils.swift +2 -8
  24. package/ios/THEOplayerRCTView.swift +0 -2
  25. package/ios/ads/THEOplayerRCTAdAdapter.swift +19 -18
  26. package/ios/ads/THEOplayerRCTAdsNative.swift +11 -11
  27. package/ios/ads/THEOplayerRCTView+AdsConfig.swift +0 -30
  28. package/ios/style.css +0 -1
  29. package/lib/commonjs/api/source/ads/Ads.js +6 -2
  30. package/lib/commonjs/api/source/ads/Ads.js.map +1 -1
  31. package/lib/commonjs/internal/THEOplayerView.js +1 -1
  32. package/lib/commonjs/internal/THEOplayerView.js.map +1 -1
  33. package/lib/commonjs/internal/adapter/DefaultNativePlayerState.js +1 -1
  34. package/lib/commonjs/internal/adapter/DefaultNativePlayerState.js.map +1 -1
  35. package/lib/commonjs/internal/adapter/DefaultTextTrackState.js.map +1 -1
  36. package/lib/commonjs/internal/adapter/broadcast/EventBroadcastAdapter.js.map +1 -1
  37. package/lib/commonjs/internal/adapter/broadcast/EventBroadcastAdapter.web.js.map +1 -1
  38. package/lib/commonjs/internal/adapter/broadcast/web/DefaultWebEventDispatcher.js.map +1 -1
  39. package/lib/commonjs/internal/adapter/cast/THEOplayerNativeCastAdapter.js.map +1 -1
  40. package/lib/commonjs/internal/adapter/event/BaseEvent.js.map +1 -1
  41. package/lib/commonjs/internal/adapter/event/PlayerEvents.js.map +1 -1
  42. package/lib/commonjs/internal/adapter/track/TextTrackStyleAdapter.js +1 -1
  43. package/lib/commonjs/internal/adapter/track/TextTrackStyleAdapter.js.map +1 -1
  44. package/lib/commonjs/internal/cache/MediaCache.js.map +1 -1
  45. package/lib/commonjs/internal/cache/NativeCachingTaskParametersAdapter.js.map +1 -1
  46. package/lib/commonjs/internal/drm/ContentProtectionRegistry.js.map +1 -1
  47. package/lib/commonjs/internal/poster/Poster.js +1 -1
  48. package/lib/commonjs/internal/poster/Poster.js.map +1 -1
  49. package/lib/commonjs/internal/utils/Dimensions.js.map +1 -1
  50. package/lib/module/api/source/ads/Ads.js +6 -2
  51. package/lib/module/api/source/ads/Ads.js.map +1 -1
  52. package/lib/module/internal/THEOplayerView.js.map +1 -1
  53. package/lib/module/internal/adapter/DefaultNativePlayerState.js +1 -1
  54. package/lib/module/internal/adapter/DefaultNativePlayerState.js.map +1 -1
  55. package/lib/module/internal/adapter/DefaultTextTrackState.js.map +1 -1
  56. package/lib/module/internal/adapter/broadcast/EventBroadcastAdapter.js.map +1 -1
  57. package/lib/module/internal/adapter/broadcast/EventBroadcastAdapter.web.js +2 -2
  58. package/lib/module/internal/adapter/broadcast/EventBroadcastAdapter.web.js.map +1 -1
  59. package/lib/module/internal/adapter/broadcast/web/DefaultWebEventDispatcher.js.map +1 -1
  60. package/lib/module/internal/adapter/cast/THEOplayerNativeCastAdapter.js.map +1 -1
  61. package/lib/module/internal/adapter/event/BaseEvent.js.map +1 -1
  62. package/lib/module/internal/adapter/event/PlayerEvents.js.map +1 -1
  63. package/lib/module/internal/cache/MediaCache.js.map +1 -1
  64. package/lib/module/internal/cache/NativeCachingTaskAdapter.js +1 -1
  65. package/lib/module/internal/cache/NativeCachingTaskParametersAdapter.js.map +1 -1
  66. package/lib/module/internal/drm/ContentProtectionRegistry.js.map +1 -1
  67. package/lib/module/internal/utils/Dimensions.js.map +1 -1
  68. package/lib/typescript/api/source/ads/Ads.d.ts +7 -3
  69. package/lib/typescript/api/source/ads/Ads.d.ts.map +1 -1
  70. package/lib/typescript/internal/adapter/DefaultNativePlayerState.d.ts.map +1 -1
  71. package/lib/typescript/internal/adapter/DefaultTextTrackState.d.ts.map +1 -1
  72. package/lib/typescript/internal/adapter/NativePlayerState.d.ts.map +1 -1
  73. package/lib/typescript/internal/adapter/broadcast/EventBroadcastAdapter.web.d.ts +5 -5
  74. package/lib/typescript/internal/adapter/broadcast/EventBroadcastAdapter.web.d.ts.map +1 -1
  75. package/lib/typescript/internal/adapter/broadcast/web/DefaultWebEventDispatcher.d.ts +1 -1
  76. package/lib/typescript/internal/adapter/broadcast/web/DefaultWebEventDispatcher.d.ts.map +1 -1
  77. package/lib/typescript/internal/adapter/cast/THEOplayerNativeCastAdapter.d.ts.map +1 -1
  78. package/lib/typescript/internal/adapter/event/BaseEvent.d.ts.map +1 -1
  79. package/lib/typescript/internal/adapter/event/PlayerEvents.d.ts.map +1 -1
  80. package/lib/typescript/internal/cache/NativeCachingTaskAdapter.d.ts +1 -1
  81. package/lib/typescript/internal/cache/NativeCachingTaskParametersAdapter.d.ts +1 -1
  82. package/lib/typescript/internal/cache/NativeCachingTaskParametersAdapter.d.ts.map +1 -1
  83. package/lib/typescript/internal/utils/Dimensions.d.ts.map +1 -1
  84. package/package.json +18 -13
  85. package/react-native-theoplayer.json +4 -8
  86. package/react-native-theoplayer.podspec +7 -8
  87. package/src/api/source/ads/Ads.ts +7 -3
  88. package/src/internal/THEOplayerView.tsx +2 -2
  89. package/src/internal/adapter/DefaultNativePlayerState.ts +1 -1
  90. package/src/internal/adapter/DefaultTextTrackState.ts +2 -2
  91. package/src/internal/adapter/NativePlayerState.ts +1 -2
  92. package/src/internal/adapter/broadcast/EventBroadcastAdapter.web.ts +12 -12
  93. package/src/internal/adapter/broadcast/web/DefaultWebEventDispatcher.ts +47 -47
  94. package/src/internal/adapter/cast/THEOplayerNativeCastAdapter.ts +4 -1
  95. package/src/internal/adapter/event/BaseEvent.ts +4 -1
  96. package/src/internal/adapter/event/PlayerEvents.ts +39 -9
  97. package/src/internal/adapter/web/FullscreenAPI.ts +4 -4
  98. package/src/internal/cache/NativeCachingTaskAdapter.ts +1 -1
  99. package/src/internal/cache/NativeCachingTaskParametersAdapter.ts +7 -9
  100. package/src/internal/utils/Dimensions.ts +5 -3
  101. package/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/7.6.1/ads-wrapper-7.6.1.aar +0 -0
@@ -1,5 +1,5 @@
1
1
  import type { CachingTaskParameters } from 'react-native-theoplayer';
2
- import type { CachingPreferredTrackSelection } from "../../api/cache/CachingPreferredTrackSelection";
2
+ import type { CachingPreferredTrackSelection } from '../../api/cache/CachingPreferredTrackSelection';
3
3
  export interface NativeCachingTaskParameters {
4
4
  readonly amount: number | string;
5
5
  readonly expirationDate: number | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeCachingTaskParametersAdapter.d.ts","sourceRoot":"","sources":["../../../../src/internal/cache/NativeCachingTaskParametersAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,gDAAgD,CAAC;AAErG,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,uBAAuB,EAAE,8BAA8B,GAAG,SAAS,CAAC;IAC7E,QAAQ,CAAC,oBAAoB,EAAE,OAAO,GAAG,SAAS,CAAC;CACpD;AAED,wBAAgB,+BAA+B,CAAC,UAAU,EAAE,2BAA2B,GAAG,qBAAqB,CAQ9G;AAED,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,qBAAqB,GAAG,2BAA2B,CAQ5G"}
1
+ {"version":3,"file":"NativeCachingTaskParametersAdapter.d.ts","sourceRoot":"","sources":["../../../../src/internal/cache/NativeCachingTaskParametersAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,gDAAgD,CAAC;AAErG,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,uBAAuB,EAAE,8BAA8B,GAAG,SAAS,CAAC;IAC7E,QAAQ,CAAC,oBAAoB,EAAE,OAAO,GAAG,SAAS,CAAC;CACpD;AAED,wBAAgB,+BAA+B,CAAC,UAAU,EAAE,2BAA2B,GAAG,qBAAqB,CAQ9G;AAED,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,qBAAqB,GAAG,2BAA2B,CAQ5G"}
@@ -1 +1 @@
1
- {"version":3,"file":"Dimensions.d.ts","sourceRoot":"","sources":["../../../../src/internal/utils/Dimensions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAC;AAG9E;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,UAAU,CAiB9C"}
1
+ {"version":3,"file":"Dimensions.d.ts","sourceRoot":"","sources":["../../../../src/internal/utils/Dimensions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAC;AAG9E;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,UAAU,CAmB9C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-theoplayer",
3
- "version": "7.9.0",
3
+ "version": "8.0.0",
4
4
  "description": "A THEOplayer video component for react-native.",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -25,7 +25,10 @@
25
25
  ],
26
26
  "scripts": {
27
27
  "typescript": "tsc --noEmit",
28
+ "prettier": "prettier --check .",
29
+ "prettier:fix": "prettier --write .",
28
30
  "lint": "eslint \"**/*.{ts,tsx}\"",
31
+ "lint:fix": "npm run lint -- --fix",
29
32
  "prepare": "bob build && husky install",
30
33
  "pods": "cd example && pod-install --quiet",
31
34
  "docs": "typedoc --treatWarningsAsErrors"
@@ -47,26 +50,28 @@
47
50
  "registry": "https://registry.npmjs.org/"
48
51
  },
49
52
  "devDependencies": {
50
- "@react-native/eslint-config": "^0.74.83",
51
- "@types/react": "^18.2.24",
52
- "@types/react-native": "^0.73.0",
53
- "eslint": "^8.56.0",
54
- "husky": "^6.0.0",
53
+ "@eslint/js": "^9.9.1",
54
+ "@react-native/eslint-config": "^0.74.87",
55
+ "@types/react": "^18.3.5",
56
+ "eslint": "^8.57.0",
57
+ "eslint-config-prettier": "^9.1.0",
58
+ "husky": "^9.1.5",
55
59
  "pod-install": "^0.1.39",
56
- "prettier": "^3.2.5",
60
+ "prettier": "^3.3.3",
57
61
  "react": "^18.2.0",
58
- "react-native": "^0.74.1",
62
+ "react-native": "^0.74.5",
59
63
  "react-native-builder-bob": "^0.23.2",
60
- "theoplayer": "^7.6.0",
61
- "typedoc": "^0.25.12",
64
+ "theoplayer": "^8.0.0",
65
+ "typedoc": "^0.25.13",
62
66
  "typedoc-plugin-external-resolver": "^1.0.3",
63
- "typedoc-plugin-mdn-links": "^3.1.18",
64
- "typescript": "5.0.4"
67
+ "typedoc-plugin-mdn-links": "^3.2.11",
68
+ "typescript": "5.1.6",
69
+ "typescript-eslint": "^8.4.0"
65
70
  },
66
71
  "peerDependencies": {
67
72
  "react": "*",
68
73
  "react-native": "*",
69
- "theoplayer": "^6.0.0 || ^7.0.0"
74
+ "theoplayer": "^6 || ^7 || ^8"
70
75
  },
71
76
  "peerDependenciesMeta": {
72
77
  "theoplayer": {
@@ -1,9 +1,5 @@
1
1
  {
2
- "ios": {
3
- "features": [
4
- "GOOGLE_IMA",
5
- "CHROMECAST",
6
- "SIDELOADED_TEXTTRACKS"
7
- ]
8
- }
9
- }
2
+ "ios": {
3
+ "features": ["GOOGLE_IMA", "CHROMECAST", "SIDELOADED_TEXTTRACKS"]
4
+ }
5
+ }
@@ -32,23 +32,22 @@ Pod::Spec.new do |s|
32
32
  s.dependency "React-Core"
33
33
 
34
34
  # THEOplayer core Dependency
35
- s.dependency "THEOplayerSDK-core", "~> 7.12"
36
-
37
- if theofeatures.include?("GOOGLE_IMA")
35
+ puts "Adding THEOplayerSDK-core"
36
+ s.dependency "THEOplayerSDK-core", "~> 8.0"
37
+
38
+ if theofeatures.include?("GOOGLE_IMA")
38
39
  puts "Adding THEOplayer-Integration-GoogleIMA"
39
- s.dependency "THEOplayer-Integration-GoogleIMA/Base", "~> 7.12"
40
- s.dependency "THEOplayer-Integration-GoogleIMA/Dependencies", "~> 7.12"
40
+ s.dependency "THEOplayer-Integration-GoogleIMA", "~> 8.0"
41
41
  end
42
42
 
43
43
  if theofeatures.include?("CHROMECAST")
44
44
  puts "Adding THEOplayer-Integration-GoogleCast"
45
- s.ios.dependency "THEOplayer-Integration-GoogleCast/Base", "~> 7.12"
46
- s.ios.dependency "google-cast-sdk-dynamic-xcframework", "~> 4.8"
45
+ s.ios.dependency "THEOplayer-Integration-GoogleCast", "~> 8.0"
47
46
  end
48
47
 
49
48
  if theofeatures.include?("SIDELOADED_TEXTTRACKS")
50
49
  puts "Adding THEOplayer-Connector-SideloadedSubtitle"
51
- s.dependency "THEOplayer-Connector-SideloadedSubtitle", "~> 7.12"
50
+ s.dependency "THEOplayer-Connector-SideloadedSubtitle", "~> 8.0"
52
51
  end
53
52
 
54
53
  end
@@ -39,7 +39,7 @@ export interface AdDescription {
39
39
  /**
40
40
  * The integration of the ad break.
41
41
  *
42
- * @defaultValue `'theo'`
42
+ * @defaultValue `'csai'`
43
43
  */
44
44
  integration?: AdIntegrationKind;
45
45
 
@@ -88,8 +88,10 @@ export interface AdDescription {
88
88
 
89
89
  /**
90
90
  * The integration of an ad break, represented by a value from the following list:
91
- * <br/> - `'theo'`: Default ad playback.
92
- * <br/> - `'google-ima'`: {@link https://developers.google.com/interactive-media-ads/docs/sdks/html5|Google IMA} pre-integrated ad playback.
91
+ * <br/> - `'csai'`: Default CSAI ad playback.
92
+ * <br/> - `'theo'`: Old naming for `'csai'` - Default ad playback. (Deprecated)
93
+ * <br/> - `'google-ima'`: {@link https://developers.google.com/interactive-media-ads/docs/sdks/html5|Google IMA}.
94
+ * <br/> - `'google-dai'`: {@link https://developers.google.com/ad-manager/dynamic-ad-insertion/sdk/html5 | Google DAI}.
93
95
  * <br/> - `'spotx'`: {@link https://developer.spotxchange.com/|SpotX} pre-integrated ad playback.
94
96
  * <br/> - `'freewheel'`: {@link https://vi.freewheel.tv/|FreeWheel} pre-integrated ad playback.
95
97
  * <br/> - `'theoads'`: [Experimental] - API under development, do not use without consulting THEO Technologies.
@@ -102,7 +104,9 @@ export interface AdDescription {
102
104
  export enum AdIntegrationKind {
103
105
  freewheel = 'freewheel',
104
106
  google_ima = 'google-ima',
107
+ google_dai = 'google-dai',
105
108
  spotx = 'spotx',
109
+ csai = 'csai',
106
110
  theo = 'theo',
107
111
  theoads = 'theoads',
108
112
  }
@@ -161,9 +161,9 @@ export class THEOplayerView extends PureComponent<React.PropsWithChildren<THEOpl
161
161
  }
162
162
 
163
163
  private reset() {
164
- this.setState( prevState => ({
164
+ this.setState((prevState) => ({
165
165
  ...prevState,
166
- error: undefined
166
+ error: undefined,
167
167
  }));
168
168
  }
169
169
 
@@ -25,7 +25,7 @@ export class DefaultNativePlayerState extends DefaultTextTrackState implements N
25
25
  seeking = false;
26
26
  volume = 1;
27
27
  currentTime = 0;
28
- duration = 0;
28
+ duration = NaN;
29
29
  playbackRate = 1;
30
30
  preload: PreloadType = 'none';
31
31
  aspectRatio: AspectRatio = AspectRatio.FIT;
@@ -1,7 +1,8 @@
1
1
  import {
2
2
  addTextTrackCue,
3
3
  addTrack,
4
- findTextTrackByUid, type LoadedMetadataEvent,
4
+ findTextTrackByUid,
5
+ type LoadedMetadataEvent,
5
6
  PlayerEventType,
6
7
  removeTextTrackCue,
7
8
  removeTrack,
@@ -16,7 +17,6 @@ import {
16
17
  import { TextTrackState } from './NativePlayerState';
17
18
 
18
19
  export class DefaultTextTrackState implements TextTrackState {
19
-
20
20
  private _textTracks: TextTrack[] = [];
21
21
  private _selectedTextTrack: number | undefined;
22
22
 
@@ -40,5 +40,4 @@ export interface TextTrackState {
40
40
  selectedTextTrack: number | undefined;
41
41
  }
42
42
 
43
- export interface NativePlayerState extends PlayerConfigState, PlaybackState, TextTrackState, MediaTrackState {
44
- }
43
+ export interface NativePlayerState extends PlayerConfigState, PlaybackState, TextTrackState, MediaTrackState {}
@@ -1,14 +1,13 @@
1
- import type { EventBroadcastAPI } from "react-native-theoplayer";
2
- import type { THEOplayer } from "react-native-theoplayer";
3
- import type { THEOplayerWebAdapter } from "../THEOplayerWebAdapter";
4
- import type { StringKeyOf } from "../../../api/event/EventDispatcher";
5
- import type { PlayerEventMap } from "react-native-theoplayer";
1
+ import type { EventBroadcastAPI } from 'react-native-theoplayer';
2
+ import type { THEOplayer } from 'react-native-theoplayer';
3
+ import type { THEOplayerWebAdapter } from '../THEOplayerWebAdapter';
4
+ import type { StringKeyOf } from '../../../api/event/EventDispatcher';
5
+ import type { PlayerEventMap } from 'react-native-theoplayer';
6
6
  import type { Event as WebEvent, EventMap } from 'theoplayer';
7
- import { AdEvent, PlayerEventType } from "react-native-theoplayer";
8
- import { DefaultWebEventDispatcher } from "./web/DefaultWebEventDispatcher";
7
+ import { AdEvent, PlayerEventType } from 'react-native-theoplayer';
8
+ import { DefaultWebEventDispatcher } from './web/DefaultWebEventDispatcher';
9
9
 
10
10
  export class EventBroadcastAdapter extends DefaultWebEventDispatcher<EventMap<string>> implements EventBroadcastAPI {
11
-
12
11
  constructor(private _player: THEOplayer) {
13
12
  super();
14
13
  }
@@ -27,10 +26,11 @@ export class EventBroadcastAdapter extends DefaultWebEventDispatcher<EventMap<st
27
26
 
28
27
  function toNativeEvent<K extends StringKeyOf<PlayerEventMap>>(event: PlayerEventMap[K]): WebEvent | undefined {
29
28
  switch (event.type) {
30
- case PlayerEventType.AD_EVENT: return toNativeAdEvent(event);
29
+ case PlayerEventType.AD_EVENT:
30
+ return toNativeAdEvent(event);
31
31
  default: {
32
- console.warn(`EventBroadcastAdapter: native event of type ${event?.type}} not supported`)
33
- return undefined
32
+ console.warn(`EventBroadcastAdapter: native event of type ${event?.type}} not supported`);
33
+ return undefined;
34
34
  }
35
35
  }
36
36
  }
@@ -39,6 +39,6 @@ function toNativeAdEvent(event: AdEvent): WebEvent | undefined {
39
39
  return {
40
40
  type: event.subType,
41
41
  ad: event.ad,
42
- date: event.date
42
+ date: event.date,
43
43
  } as WebEvent;
44
44
  }
@@ -1,66 +1,66 @@
1
- import type { EventDispatcher, EventMap, StringKeyOf, EventListener } from "theoplayer";
1
+ import type { EventDispatcher, EventMap, StringKeyOf, EventListener } from 'theoplayer';
2
2
 
3
3
  export function arrayRemoveElement<T>(array: T[], element: T): boolean {
4
- const index = array.indexOf(element);
5
- if (index === -1) {
6
- return false;
7
- }
8
- arrayRemoveAt(array, index);
9
- return true;
4
+ const index = array.indexOf(element);
5
+ if (index === -1) {
6
+ return false;
7
+ }
8
+ arrayRemoveAt(array, index);
9
+ return true;
10
10
  }
11
11
 
12
12
  export function arrayRemoveAt<T>(array: T[], index: number): void {
13
- array.splice(index, 1);
13
+ array.splice(index, 1);
14
14
  }
15
15
 
16
16
  export class DefaultWebEventDispatcher<TMap extends EventMap<StringKeyOf<TMap>>> implements EventDispatcher<TMap> {
17
- readonly _eventListeners: Map<StringKeyOf<TMap>, EventListener<TMap[StringKeyOf<TMap>]>[]> = new Map();
17
+ readonly _eventListeners: Map<StringKeyOf<TMap>, EventListener<TMap[StringKeyOf<TMap>]>[]> = new Map();
18
18
 
19
- addEventListener<K extends StringKeyOf<TMap>>(types: K | K[], listener: EventListener<TMap[K]>): void {
20
- if (typeof types === 'string') {
21
- this.addSingleEventListener_(types, listener);
22
- } else {
23
- types.forEach(type => {
24
- this.addSingleEventListener_(type, listener);
25
- })
26
- }
19
+ addEventListener<K extends StringKeyOf<TMap>>(types: K | K[], listener: EventListener<TMap[K]>): void {
20
+ if (typeof types === 'string') {
21
+ this.addSingleEventListener_(types, listener);
22
+ } else {
23
+ types.forEach((type) => {
24
+ this.addSingleEventListener_(type, listener);
25
+ });
27
26
  }
27
+ }
28
28
 
29
- private addSingleEventListener_<K extends StringKeyOf<TMap>>(type: K, listener: EventListener<TMap[K]>): void {
30
- if (!this._eventListeners.has(type)) {
31
- // @ts-ignore
32
- this._eventListeners.set(type, [listener]);
33
- } else {
34
- // @ts-ignore
35
- this._eventListeners.get(type)?.push(listener);
36
- }
29
+ private addSingleEventListener_<K extends StringKeyOf<TMap>>(type: K, listener: EventListener<TMap[K]>): void {
30
+ if (!this._eventListeners.has(type)) {
31
+ // @ts-ignore
32
+ this._eventListeners.set(type, [listener]);
33
+ } else {
34
+ // @ts-ignore
35
+ this._eventListeners.get(type)?.push(listener);
37
36
  }
37
+ }
38
38
 
39
- clearEventListeners(): void {
40
- this._eventListeners.clear();
41
- }
39
+ clearEventListeners(): void {
40
+ this._eventListeners.clear();
41
+ }
42
42
 
43
- dispatchEvent = <K extends StringKeyOf<TMap>>(event: TMap[K]): void => {
44
- const listeners = (this._eventListeners.get(event.type as K) ?? []).slice();
45
- for (const listener of listeners) {
46
- listener.call(this, event);
47
- }
48
- };
43
+ dispatchEvent = <K extends StringKeyOf<TMap>>(event: TMap[K]): void => {
44
+ const listeners = (this._eventListeners.get(event.type as K) ?? []).slice();
45
+ for (const listener of listeners) {
46
+ listener.call(this, event);
47
+ }
48
+ };
49
49
 
50
- removeEventListener<K extends StringKeyOf<TMap>>(types: K | K[], listener: EventListener<TMap[K]>): void {
51
- if (typeof types === 'string') {
52
- this.removeSingleEventListener(types, listener);
53
- } else {
54
- types.forEach(type => {
55
- this.removeSingleEventListener(type, listener);
56
- });
57
- }
50
+ removeEventListener<K extends StringKeyOf<TMap>>(types: K | K[], listener: EventListener<TMap[K]>): void {
51
+ if (typeof types === 'string') {
52
+ this.removeSingleEventListener(types, listener);
53
+ } else {
54
+ types.forEach((type) => {
55
+ this.removeSingleEventListener(type, listener);
56
+ });
58
57
  }
58
+ }
59
59
 
60
- removeSingleEventListener<K extends StringKeyOf<TMap>>(type: K, listener: EventListener<TMap[K]>): void {
61
- const listeners = this._eventListeners.get(type);
62
- if (listeners) {
63
- arrayRemoveElement(listeners, listener);
64
- }
60
+ removeSingleEventListener<K extends StringKeyOf<TMap>>(type: K, listener: EventListener<TMap[K]>): void {
61
+ const listeners = this._eventListeners.get(type);
62
+ if (listeners) {
63
+ arrayRemoveElement(listeners, listener);
65
64
  }
65
+ }
66
66
  }
@@ -8,7 +8,10 @@ export class THEOplayerNativeCastAdapter implements CastAPI {
8
8
  private readonly _chromecast: THEOplayerNativeChromecast;
9
9
  private readonly _airplay: THEOplayerNativeAirplay | undefined;
10
10
 
11
- constructor(private readonly _player: THEOplayer, private readonly _view: THEOplayerView) {
11
+ constructor(
12
+ private readonly _player: THEOplayer,
13
+ private readonly _view: THEOplayerView,
14
+ ) {
12
15
  this._chromecast = new THEOplayerNativeChromecast(this._player, this._view);
13
16
  if (Platform.OS !== 'android') {
14
17
  this._airplay = new THEOplayerNativeAirplay(this._player);
@@ -1,5 +1,8 @@
1
1
  import type { Event } from 'react-native-theoplayer';
2
2
 
3
3
  export class BaseEvent<TType extends string = string> implements Event<TType> {
4
- constructor(readonly type: TType, readonly date: Date = new Date()) {}
4
+ constructor(
5
+ readonly type: TType,
6
+ readonly date: Date = new Date(),
7
+ ) {}
5
8
  }
@@ -71,13 +71,19 @@ export class DefaultPresentationModeChangeEvent extends BaseEvent<PlayerEventTyp
71
71
  }
72
72
 
73
73
  export class DefaultVolumeChangeEvent extends BaseEvent<PlayerEventType.VOLUME_CHANGE> implements VolumeChangeEvent {
74
- constructor(public volume: number, public muted: boolean) {
74
+ constructor(
75
+ public volume: number,
76
+ public muted: boolean,
77
+ ) {
75
78
  super(PlayerEventType.VOLUME_CHANGE);
76
79
  }
77
80
  }
78
81
 
79
82
  export class DefaultResizeEvent extends BaseEvent<PlayerEventType.RESIZE> implements ResizeEvent {
80
- constructor(public width: number, public height: number) {
83
+ constructor(
84
+ public width: number,
85
+ public height: number,
86
+ ) {
81
87
  super(PlayerEventType.RESIZE);
82
88
  }
83
89
  }
@@ -89,13 +95,19 @@ export class DefaultErrorEvent extends BaseEvent<PlayerEventType.ERROR> implemen
89
95
  }
90
96
 
91
97
  export class DefaultProgressEvent extends BaseEvent<PlayerEventType.PROGRESS> implements ProgressEvent {
92
- constructor(public seekable: TimeRange[], public buffered: TimeRange[]) {
98
+ constructor(
99
+ public seekable: TimeRange[],
100
+ public buffered: TimeRange[],
101
+ ) {
93
102
  super(PlayerEventType.PROGRESS);
94
103
  }
95
104
  }
96
105
 
97
106
  export class DefaultTimeupdateEvent extends BaseEvent<PlayerEventType.TIME_UPDATE> implements TimeUpdateEvent {
98
- constructor(public currentTime: number, public currentProgramDateTime?: number) {
107
+ constructor(
108
+ public currentTime: number,
109
+ public currentProgramDateTime?: number,
110
+ ) {
99
111
  super(PlayerEventType.TIME_UPDATE);
100
112
  }
101
113
  }
@@ -113,25 +125,40 @@ export class DefaultRateChangeEvent extends BaseEvent<PlayerEventType.RATE_CHANG
113
125
  }
114
126
 
115
127
  export class DefaultSegmentNotFoundEvent extends BaseEvent<PlayerEventType.SEGMENT_NOT_FOUND> implements SegmentNotFoundEvent {
116
- constructor(public readonly segmentStartTime: number, public error: string, public retryCount: number) {
128
+ constructor(
129
+ public readonly segmentStartTime: number,
130
+ public error: string,
131
+ public retryCount: number,
132
+ ) {
117
133
  super(PlayerEventType.SEGMENT_NOT_FOUND);
118
134
  }
119
135
  }
120
136
 
121
137
  export class DefaultTextTrackListEvent extends BaseEvent<PlayerEventType.TEXT_TRACK_LIST> implements TextTrackListEvent {
122
- constructor(public subType: TrackListEventType, public track: TextTrack) {
138
+ constructor(
139
+ public subType: TrackListEventType,
140
+ public track: TextTrack,
141
+ ) {
123
142
  super(PlayerEventType.TEXT_TRACK_LIST);
124
143
  }
125
144
  }
126
145
 
127
146
  export class DefaultTextTrackEvent extends BaseEvent<PlayerEventType.TEXT_TRACK> implements TextTrackEvent {
128
- constructor(public subType: TextTrackEventType, public trackUid: number, public cue: TextTrackCue) {
147
+ constructor(
148
+ public subType: TextTrackEventType,
149
+ public trackUid: number,
150
+ public cue: TextTrackCue,
151
+ ) {
129
152
  super(PlayerEventType.TEXT_TRACK);
130
153
  }
131
154
  }
132
155
 
133
156
  export class DefaultMediaTrackListEvent extends BaseEvent<PlayerEventType.MEDIA_TRACK_LIST> implements MediaTrackListEvent {
134
- constructor(public subType: TrackListEventType, public trackType: MediaTrackType, public track: MediaTrack) {
157
+ constructor(
158
+ public subType: TrackListEventType,
159
+ public trackType: MediaTrackType,
160
+ public track: MediaTrack,
161
+ ) {
135
162
  super(PlayerEventType.MEDIA_TRACK_LIST);
136
163
  }
137
164
  }
@@ -148,7 +175,10 @@ export class DefaultMediaTrackEvent extends BaseEvent<PlayerEventType.MEDIA_TRAC
148
175
  }
149
176
 
150
177
  export class DefaultAdEvent extends BaseEvent<PlayerEventType.AD_EVENT> implements AdEvent {
151
- constructor(public subType: AdEventType, public ad: Ad | AdBreak) {
178
+ constructor(
179
+ public subType: AdEventType,
180
+ public ad: Ad | AdBreak,
181
+ ) {
152
182
  super(PlayerEventType.AD_EVENT);
153
183
  }
154
184
  }
@@ -24,7 +24,7 @@ export const fullscreenAPI: FullscreenAPIMap | undefined = (() => {
24
24
  'webkitFullscreenElement',
25
25
  'webkitFullscreenEnabled',
26
26
  'webkitfullscreenchange',
27
- 'webkitfullscreenerror'
27
+ 'webkitfullscreenerror',
28
28
  ],
29
29
  // Old WebKit (Safari 5.1)
30
30
  [
@@ -33,12 +33,12 @@ export const fullscreenAPI: FullscreenAPIMap | undefined = (() => {
33
33
  'webkitCurrentFullScreenElement',
34
34
  'webkitCancelFullScreen',
35
35
  'webkitfullscreenchange',
36
- 'webkitfullscreenerror'
36
+ 'webkitfullscreenerror',
37
37
  ],
38
38
  // Mozilla
39
39
  ['mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror'],
40
40
  // Microsoft
41
- ['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError']
41
+ ['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError'],
42
42
  ];
43
43
 
44
44
  for (const browserMap of apiMap) {
@@ -50,7 +50,7 @@ export const fullscreenAPI: FullscreenAPIMap | undefined = (() => {
50
50
  fullscreenElement_: browserMap[2],
51
51
  fullscreenEnabled_: browserMap[3],
52
52
  fullscreenchange_: browserMap[4],
53
- fullscreenerror_: browserMap[5]
53
+ fullscreenerror_: browserMap[5],
54
54
  } as FullscreenAPIMap;
55
55
  }
56
56
  }
@@ -10,7 +10,7 @@ import type {
10
10
  import type { CacheTaskStatus } from 'react-native-theoplayer';
11
11
  import { NativeModules } from 'react-native';
12
12
  import type { DRMConfiguration } from 'react-native-theoplayer';
13
- import { fromNativeCachingTaskParameters, NativeCachingTaskParameters } from "./NativeCachingTaskParametersAdapter";
13
+ import { fromNativeCachingTaskParameters, NativeCachingTaskParameters } from './NativeCachingTaskParametersAdapter';
14
14
 
15
15
  const NativeCacheModule = NativeModules.THEORCTCacheModule;
16
16
 
@@ -1,7 +1,5 @@
1
- import type {
2
- CachingTaskParameters,
3
- } from 'react-native-theoplayer';
4
- import type { CachingPreferredTrackSelection } from "../../api/cache/CachingPreferredTrackSelection";
1
+ import type { CachingTaskParameters } from 'react-native-theoplayer';
2
+ import type { CachingPreferredTrackSelection } from '../../api/cache/CachingPreferredTrackSelection';
5
3
 
6
4
  export interface NativeCachingTaskParameters {
7
5
  readonly amount: number | string;
@@ -14,11 +12,11 @@ export interface NativeCachingTaskParameters {
14
12
  export function fromNativeCachingTaskParameters(parameters: NativeCachingTaskParameters): CachingTaskParameters {
15
13
  return {
16
14
  amount: parameters.amount,
17
- expirationDate: parameters?.expirationDate? new Date(parameters?.expirationDate) : undefined,
15
+ expirationDate: parameters?.expirationDate ? new Date(parameters?.expirationDate) : undefined,
18
16
  bandwidth: parameters.bandwidth,
19
17
  preferredTrackSelection: parameters.preferredTrackSelection,
20
- allowsCellularAccess: parameters.allowsCellularAccess
21
- }
18
+ allowsCellularAccess: parameters.allowsCellularAccess,
19
+ };
22
20
  }
23
21
 
24
22
  export function toNativeCachingTaskParameters(parameters: CachingTaskParameters): NativeCachingTaskParameters {
@@ -27,6 +25,6 @@ export function toNativeCachingTaskParameters(parameters: CachingTaskParameters)
27
25
  expirationDate: parameters?.expirationDate?.getTime(),
28
26
  bandwidth: parameters.bandwidth,
29
27
  preferredTrackSelection: parameters.preferredTrackSelection,
30
- allowsCellularAccess: parameters.allowsCellularAccess
31
- }
28
+ allowsCellularAccess: parameters.allowsCellularAccess,
29
+ };
32
30
  }
@@ -9,12 +9,14 @@ export function getFullscreenSize(): ScaledSize {
9
9
 
10
10
  // Adjust for statusBar height on Android, depending on the device's current orientation.
11
11
  if (Platform.OS === 'android' && Platform.Version >= 29) {
12
- const statusBarHeight = (StatusBar.currentHeight || 0);
13
- if (screenSize.width < screenSize.height) { // portrait
12
+ const statusBarHeight = StatusBar.currentHeight || 0;
13
+ if (screenSize.width < screenSize.height) {
14
+ // portrait
14
15
  if (screenSize.height !== Dimensions.get('window').height + statusBarHeight) {
15
16
  screenSize.height = screenSize.height - statusBarHeight;
16
17
  }
17
- } else { // landscape
18
+ } else {
19
+ // landscape
18
20
  if (screenSize.width !== Dimensions.get('window').width) {
19
21
  screenSize.width = screenSize.width - statusBarHeight;
20
22
  }