react-native-theoplayer 8.6.0 → 8.8.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 -0
- package/android/build.gradle +2 -0
- package/android/proguard-rules.pro +3 -0
- package/android/src/main/java/com/theoplayer/ReactTHEOplayerContext.kt +2 -1
- package/android/src/main/java/com/theoplayer/ads/AdsModule.kt +52 -0
- package/android/src/main/java/com/theoplayer/media/MediaPlaybackService.kt +4 -0
- package/android/src/main/java/com/theoplayer/player/PlayerModule.kt +7 -0
- package/android/src/main/java/com/theoplayer/util/ViewResolver.kt +6 -5
- package/app.plugin.js +3 -2
- package/ios/THEOplayerRCTBridge.m +8 -0
- package/ios/THEOplayerRCTPlayerAPI.swift +6 -0
- package/ios/THEOplayerRCTTypeUtils.swift +16 -0
- package/ios/THEOplayerRCTView.swift +9 -0
- package/ios/ads/THEOplayerRCTAdsAPI+Omid.swift +55 -0
- package/ios/backgroundAudio/THEOplayerRCTNowPlayingManager.swift +7 -2
- package/ios/presentationMode/THEOplayerRCTPresentationModeManager.swift +25 -27
- package/ios/viewController/HomeIndicatorViewController.swift +14 -0
- package/lib/commonjs/api/ads/Omid.js +17 -0
- package/lib/commonjs/api/ads/Omid.js.map +1 -0
- package/lib/commonjs/api/ads/barrel.js +11 -0
- package/lib/commonjs/api/ads/barrel.js.map +1 -1
- package/lib/commonjs/api/barrel.js +11 -0
- package/lib/commonjs/api/barrel.js.map +1 -1
- package/lib/commonjs/api/version/barrel.js +17 -0
- package/lib/commonjs/api/version/barrel.js.map +1 -0
- package/lib/commonjs/index.js +9 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/internal/adapter/ads/THEOplayerNativeAdsAdapter.js +5 -0
- package/lib/commonjs/internal/adapter/ads/THEOplayerNativeAdsAdapter.js.map +1 -1
- package/lib/commonjs/internal/adapter/ads/THEOplayerNativeOmid.js +25 -0
- package/lib/commonjs/internal/adapter/ads/THEOplayerNativeOmid.js.map +1 -0
- package/lib/commonjs/internal/adapter/ads/THEOplayerWebAdsAdapter.js +5 -0
- package/lib/commonjs/internal/adapter/ads/THEOplayerWebAdsAdapter.js.map +1 -1
- package/lib/commonjs/internal/version/Version.js +20 -0
- package/lib/commonjs/internal/version/Version.js.map +1 -0
- package/lib/commonjs/internal/version/Version.web.js +18 -0
- package/lib/commonjs/internal/version/Version.web.js.map +1 -0
- package/lib/commonjs/manifest.json +1 -0
- package/lib/module/api/ads/Omid.js +12 -0
- package/lib/module/api/ads/Omid.js.map +1 -0
- package/lib/module/api/ads/barrel.js +1 -0
- package/lib/module/api/ads/barrel.js.map +1 -1
- package/lib/module/api/barrel.js +1 -0
- package/lib/module/api/barrel.js.map +1 -1
- package/lib/module/api/version/barrel.js +2 -0
- package/lib/module/api/version/barrel.js.map +1 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/internal/adapter/ads/THEOplayerNativeAdsAdapter.js +5 -0
- package/lib/module/internal/adapter/ads/THEOplayerNativeAdsAdapter.js.map +1 -1
- package/lib/module/internal/adapter/ads/THEOplayerNativeOmid.js +18 -0
- package/lib/module/internal/adapter/ads/THEOplayerNativeOmid.js.map +1 -0
- package/lib/module/internal/adapter/ads/THEOplayerWebAdsAdapter.js +5 -0
- package/lib/module/internal/adapter/ads/THEOplayerWebAdsAdapter.js.map +1 -1
- package/lib/module/internal/version/Version.js +11 -0
- package/lib/module/internal/version/Version.js.map +1 -0
- package/lib/module/internal/version/Version.web.js +10 -0
- package/lib/module/internal/version/Version.web.js.map +1 -0
- package/lib/module/manifest.json +1 -0
- package/lib/typescript/api/ads/AdsAPI.d.ts +7 -0
- package/lib/typescript/api/ads/AdsAPI.d.ts.map +1 -1
- package/lib/typescript/api/ads/Omid.d.ts +49 -0
- package/lib/typescript/api/ads/Omid.d.ts.map +1 -0
- package/lib/typescript/api/ads/barrel.d.ts +1 -0
- package/lib/typescript/api/ads/barrel.d.ts.map +1 -1
- package/lib/typescript/api/barrel.d.ts +1 -0
- package/lib/typescript/api/barrel.d.ts.map +1 -1
- package/lib/typescript/api/player/THEOplayer.d.ts +2 -0
- package/lib/typescript/api/player/THEOplayer.d.ts.map +1 -1
- package/lib/typescript/api/version/barrel.d.ts +2 -0
- package/lib/typescript/api/version/barrel.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +1 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/internal/adapter/ads/THEOplayerNativeAdsAdapter.d.ts +3 -0
- package/lib/typescript/internal/adapter/ads/THEOplayerNativeAdsAdapter.d.ts.map +1 -1
- package/lib/typescript/internal/adapter/ads/THEOplayerNativeOmid.d.ts +9 -0
- package/lib/typescript/internal/adapter/ads/THEOplayerNativeOmid.d.ts.map +1 -0
- package/lib/typescript/internal/adapter/ads/THEOplayerWebAdsAdapter.d.ts +2 -0
- package/lib/typescript/internal/adapter/ads/THEOplayerWebAdsAdapter.d.ts.map +1 -1
- package/lib/typescript/internal/version/Version.d.ts +3 -0
- package/lib/typescript/internal/version/Version.d.ts.map +1 -0
- package/lib/typescript/internal/version/Version.web.d.ts +3 -0
- package/lib/typescript/internal/version/Version.web.d.ts.map +1 -0
- package/package.json +3 -2
- package/react-native-theoplayer.podspec +1 -1
- package/src/api/ads/AdsAPI.ts +8 -0
- package/src/api/ads/Omid.ts +58 -0
- package/src/api/ads/barrel.ts +1 -0
- package/src/api/barrel.ts +1 -0
- package/src/api/player/THEOplayer.ts +2 -0
- package/src/api/version/barrel.ts +1 -0
- package/src/index.tsx +1 -0
- package/src/internal/adapter/ads/THEOplayerNativeAdsAdapter.ts +8 -0
- package/src/internal/adapter/ads/THEOplayerNativeOmid.ts +21 -0
- package/src/internal/adapter/ads/THEOplayerWebAdsAdapter.ts +7 -0
- package/src/internal/version/Version.ts +12 -0
- package/src/internal/version/Version.web.ts +11 -0
- package/src/manifest.json +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Version.web.d.ts","sourceRoot":"","sources":["../../../../src/internal/version/Version.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAItD,eAAO,MAAM,WAAW,QAAa,QAAQ,WAAW,CAMvD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-theoplayer",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.8.0",
|
|
4
4
|
"description": "A THEOplayer video component for react-native.",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -29,7 +29,8 @@
|
|
|
29
29
|
"prettier:fix": "prettier --write \"(src|example|e2e)/**/*.{js,jsx,ts,tsx}\"",
|
|
30
30
|
"lint": "eslint \"**/*.{ts,tsx}\"",
|
|
31
31
|
"lint:fix": "npm run lint -- --fix",
|
|
32
|
-
"
|
|
32
|
+
"manifest": "node manifest.js > src/manifest.json",
|
|
33
|
+
"prepare": "npm run manifest && bob build && husky",
|
|
33
34
|
"pods": "cd example && pod-install --quiet",
|
|
34
35
|
"docs": "typedoc --treatWarningsAsErrors"
|
|
35
36
|
},
|
|
@@ -25,7 +25,7 @@ Pod::Spec.new do |s|
|
|
|
25
25
|
s.platforms = { :ios => "13.4", :tvos => "13.4" }
|
|
26
26
|
s.source = { :git => "https://www.theoplayer.com/.git", :tag => "#{s.version}" }
|
|
27
27
|
|
|
28
|
-
s.source_files = 'ios/*.{h,m,swift}', 'ios/ads/*.swift', 'ios/casting/*.swift', 'ios/contentprotection/*.swift', 'ios/pip/*.swift', 'ios/backgroundAudio/*.swift', 'ios/cache/*.swift', 'ios/sideloadedMetadata/*.swift', 'ios/eventBroadcasting/*.swift' , 'ios/ui/*.swift', 'ios/presentationMode/*.swift'
|
|
28
|
+
s.source_files = 'ios/*.{h,m,swift}', 'ios/ads/*.swift', 'ios/casting/*.swift', 'ios/contentprotection/*.swift', 'ios/pip/*.swift', 'ios/backgroundAudio/*.swift', 'ios/cache/*.swift', 'ios/sideloadedMetadata/*.swift', 'ios/eventBroadcasting/*.swift' , 'ios/ui/*.swift', 'ios/presentationMode/*.swift', 'ios/viewController/*.swift'
|
|
29
29
|
s.resources = ['ios/*.css']
|
|
30
30
|
|
|
31
31
|
# ReactNative Dependency
|
package/src/api/ads/AdsAPI.ts
CHANGED
|
@@ -5,6 +5,7 @@ import type { AdDescription } from "../source/ads/Ads";
|
|
|
5
5
|
import type { AdBreak } from "./AdBreak";
|
|
6
6
|
import type { Ad } from "./Ad";
|
|
7
7
|
import type { GoogleDAI } from "./GoogleDai";
|
|
8
|
+
import { Omid } from './Omid';
|
|
8
9
|
|
|
9
10
|
export interface AdsAPI {
|
|
10
11
|
/**
|
|
@@ -50,4 +51,11 @@ export interface AdsAPI {
|
|
|
50
51
|
* <br/> - Only available when the feature or extension `'google-dai'` is enabled.
|
|
51
52
|
*/
|
|
52
53
|
readonly dai?: GoogleDAI;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* The Omid API, which can be used to add as well as remove friendly video controls overlay obstructions.
|
|
57
|
+
*
|
|
58
|
+
* @since React Native THEOplayer SDK v8.7.0.
|
|
59
|
+
*/
|
|
60
|
+
readonly omid?: Omid;
|
|
53
61
|
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { View } from 'react-native';
|
|
3
|
+
|
|
4
|
+
export enum OmidFriendlyObstructionPurpose {
|
|
5
|
+
/**
|
|
6
|
+
* The video overlay is one of the video player's control button.
|
|
7
|
+
*/
|
|
8
|
+
VIDEO_CONTROLS = 'videoControls',
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* The video overlay is for the purpose of closing the advertisement.
|
|
12
|
+
*/
|
|
13
|
+
CLOSE_AD = 'closeAd',
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* The video overlay is transparent and will not affect viewability.
|
|
17
|
+
*/
|
|
18
|
+
NOT_VISIBLE = 'notVisible',
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The video overlay is meant for other purposes.
|
|
22
|
+
*/
|
|
23
|
+
OTHER = 'other',
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface OmidFriendlyObstruction {
|
|
27
|
+
/**
|
|
28
|
+
* The View of the friendly obstruction.
|
|
29
|
+
*/
|
|
30
|
+
view: React.RefObject<View>;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* The {@link OmidFriendlyObstructionPurpose} of the friendly obstruction.
|
|
34
|
+
*/
|
|
35
|
+
purpose: OmidFriendlyObstructionPurpose;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* The optional reason for the friendly obstruction.
|
|
39
|
+
*/
|
|
40
|
+
reason?: string;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* The Omid API, which can be used to add as well as remove friendly video controls overlay obstructions.
|
|
45
|
+
*/
|
|
46
|
+
export interface Omid {
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Adds an {@link OmidFriendlyObstruction}.
|
|
50
|
+
* @param obstruction
|
|
51
|
+
*/
|
|
52
|
+
addFriendlyObstruction(obstruction: OmidFriendlyObstruction): void;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Removes all {@link OmidFriendlyObstruction}s.
|
|
56
|
+
*/
|
|
57
|
+
removeAllFriendlyObstructions(): void;
|
|
58
|
+
}
|
package/src/api/ads/barrel.ts
CHANGED
package/src/api/barrel.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './SdkVersions';
|
package/src/index.tsx
CHANGED
|
@@ -3,3 +3,4 @@ export { THEOplayerView } from './internal/THEOplayerView';
|
|
|
3
3
|
export { ContentProtectionRegistry } from './internal/drm/ContentProtectionRegistry';
|
|
4
4
|
export { MediaCache } from './internal/cache/MediaCache';
|
|
5
5
|
export { PlaybackSettings } from './internal/playback/PlaybackSettings';
|
|
6
|
+
export { sdkVersions } from './internal/version/Version';
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import type { Ad, AdBreak, AdDescription, AdsAPI, GoogleDAI, THEOplayerView } from 'react-native-theoplayer';
|
|
2
2
|
import { NativeModules } from 'react-native';
|
|
3
3
|
import { THEOplayerNativeGoogleDAI } from './THEOplayerNativeGoogleDAI';
|
|
4
|
+
import { THEOplayerNativeOmid } from './THEOplayerNativeOmid';
|
|
5
|
+
import { Omid } from '../../../api/ads/Omid';
|
|
4
6
|
|
|
5
7
|
const NativeAdsModule = NativeModules.THEORCTAdsModule;
|
|
6
8
|
|
|
7
9
|
export class THEOplayerNativeAdsAdapter implements AdsAPI {
|
|
8
10
|
private readonly _dai: GoogleDAI;
|
|
11
|
+
private readonly _omid: Omid;
|
|
9
12
|
|
|
10
13
|
constructor(private _player: THEOplayerView) {
|
|
11
14
|
this._dai = new THEOplayerNativeGoogleDAI(this._player);
|
|
15
|
+
this._omid = new THEOplayerNativeOmid(this._player);
|
|
12
16
|
}
|
|
13
17
|
|
|
14
18
|
playing(): Promise<boolean> {
|
|
@@ -38,4 +42,8 @@ export class THEOplayerNativeAdsAdapter implements AdsAPI {
|
|
|
38
42
|
get dai(): GoogleDAI | undefined {
|
|
39
43
|
return this._dai;
|
|
40
44
|
}
|
|
45
|
+
|
|
46
|
+
get omid(): Omid | undefined {
|
|
47
|
+
return this._omid;
|
|
48
|
+
}
|
|
41
49
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { THEOplayerView } from 'react-native-theoplayer';
|
|
2
|
+
import { findNodeHandle, NativeModules } from 'react-native';
|
|
3
|
+
import { Omid, OmidFriendlyObstruction } from '../../../api/ads/Omid';
|
|
4
|
+
|
|
5
|
+
const NativeAdsModule = NativeModules.THEORCTAdsModule;
|
|
6
|
+
|
|
7
|
+
export class THEOplayerNativeOmid implements Omid {
|
|
8
|
+
public constructor(private readonly _player: THEOplayerView) {}
|
|
9
|
+
|
|
10
|
+
addFriendlyObstruction(obstruction: OmidFriendlyObstruction): void {
|
|
11
|
+
NativeAdsModule.addFriendlyObstruction(this._player.nativeHandle, {
|
|
12
|
+
view: findNodeHandle(obstruction.view.current),
|
|
13
|
+
purpose: obstruction.purpose,
|
|
14
|
+
reason: obstruction.reason,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
removeAllFriendlyObstructions(): void {
|
|
19
|
+
NativeAdsModule.removeAllFriendlyObstructions(this._player.nativeHandle);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Ad, AdBreak, AdDescription, AdsAPI, GoogleDAI } from 'react-native-theoplayer';
|
|
2
2
|
import { THEOplayerWebGoogleDAI } from './THEOplayerWebGoogleDAI';
|
|
3
3
|
import type { ChromelessPlayer } from 'theoplayer';
|
|
4
|
+
import { Omid } from '../../../api/ads/Omid';
|
|
4
5
|
|
|
5
6
|
export class THEOplayerWebAdsAdapter implements AdsAPI {
|
|
6
7
|
private readonly _player: ChromelessPlayer;
|
|
@@ -48,4 +49,10 @@ export class THEOplayerWebAdsAdapter implements AdsAPI {
|
|
|
48
49
|
}
|
|
49
50
|
return this._dai;
|
|
50
51
|
}
|
|
52
|
+
|
|
53
|
+
get omid(): Omid | undefined {
|
|
54
|
+
// NYI
|
|
55
|
+
console.warn('The Omid API is not yet implemented for Web platforms.');
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
51
58
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { NativeModules } from 'react-native';
|
|
2
|
+
import type { SdkVersions } from 'react-native-theoplayer';
|
|
3
|
+
import * as manifest from '../../manifest.json';
|
|
4
|
+
|
|
5
|
+
export const sdkVersions = async (): Promise<SdkVersions> => {
|
|
6
|
+
const rnVersionString = manifest.version ?? '';
|
|
7
|
+
const nativeVersionString = await NativeModules.THEORCTPlayerModule.version();
|
|
8
|
+
return {
|
|
9
|
+
rn: rnVersionString,
|
|
10
|
+
native: nativeVersionString,
|
|
11
|
+
};
|
|
12
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SdkVersions } from 'react-native-theoplayer';
|
|
2
|
+
import { version as nativeVersionString } from 'theoplayer';
|
|
3
|
+
import manifest from '../../manifest.json';
|
|
4
|
+
|
|
5
|
+
export const sdkVersions = async (): Promise<SdkVersions> => {
|
|
6
|
+
const rnVersionString = manifest.version ?? '';
|
|
7
|
+
return {
|
|
8
|
+
rn: rnVersionString,
|
|
9
|
+
native: nativeVersionString,
|
|
10
|
+
};
|
|
11
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":"8.8.0","buildDate":"2024-11-19T15:05:29.967Z"}
|