react-native-applovin-max 9.0.0 → 9.1.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/android/build.gradle +3 -3
- package/android/src/main/java/com/applovin/reactnative/AppLovinMAXAdView.java +1 -1
- package/android/src/main/java/com/applovin/reactnative/AppLovinMAXModuleImpl.java +2 -1
- package/ios/AppLovinMAX.mm +2 -1
- package/lib/commonjs/AdView.js +60 -76
- package/lib/commonjs/AdView.js.map +1 -1
- package/lib/commonjs/AppLovinMAX.js +43 -29
- package/lib/commonjs/AppLovinMAX.js.map +1 -1
- package/lib/commonjs/ErrorCode.js +24 -31
- package/lib/commonjs/ErrorCode.js.map +1 -1
- package/lib/commonjs/EventEmitter.js +22 -1
- package/lib/commonjs/EventEmitter.js.map +1 -1
- package/lib/commonjs/Utils.js +22 -4
- package/lib/commonjs/Utils.js.map +1 -1
- package/lib/commonjs/nativeAd/NativeAdView.js +33 -22
- package/lib/commonjs/nativeAd/NativeAdView.js.map +1 -1
- package/lib/commonjs/nativeAd/NativeAdViewComponents.js +84 -41
- package/lib/commonjs/nativeAd/NativeAdViewComponents.js.map +1 -1
- package/lib/commonjs/nativeAd/NativeAdViewProvider.js +29 -0
- package/lib/commonjs/nativeAd/NativeAdViewProvider.js.map +1 -1
- package/lib/commonjs/specs/AppLovinMAXAdViewNativeComponent.js +27 -0
- package/lib/commonjs/specs/AppLovinMAXAdViewNativeComponent.js.map +1 -1
- package/lib/commonjs/specs/AppLovinMAXNativeAdViewNativeComponent.js +23 -0
- package/lib/commonjs/specs/AppLovinMAXNativeAdViewNativeComponent.js.map +1 -1
- package/lib/commonjs/specs/NativeAppLovinMAXModule.js +7 -0
- package/lib/commonjs/specs/NativeAppLovinMAXModule.js.map +1 -1
- package/lib/commonjs/types/AdInfo.js +13 -16
- package/lib/commonjs/types/AdInfo.js.map +1 -1
- package/lib/module/AdView.js +60 -76
- package/lib/module/AdView.js.map +1 -1
- package/lib/module/AppLovinMAX.js +44 -29
- package/lib/module/AppLovinMAX.js.map +1 -1
- package/lib/module/ErrorCode.js +24 -31
- package/lib/module/ErrorCode.js.map +1 -1
- package/lib/module/EventEmitter.js +22 -1
- package/lib/module/EventEmitter.js.map +1 -1
- package/lib/module/Utils.js +22 -4
- package/lib/module/Utils.js.map +1 -1
- package/lib/module/nativeAd/NativeAdView.js +34 -21
- package/lib/module/nativeAd/NativeAdView.js.map +1 -1
- package/lib/module/nativeAd/NativeAdViewComponents.js +87 -40
- package/lib/module/nativeAd/NativeAdViewComponents.js.map +1 -1
- package/lib/module/nativeAd/NativeAdViewProvider.js +30 -0
- package/lib/module/nativeAd/NativeAdViewProvider.js.map +1 -1
- package/lib/module/specs/AppLovinMAXAdViewNativeComponent.js +28 -0
- package/lib/module/specs/AppLovinMAXAdViewNativeComponent.js.map +1 -1
- package/lib/module/specs/AppLovinMAXNativeAdViewNativeComponent.js +24 -0
- package/lib/module/specs/AppLovinMAXNativeAdViewNativeComponent.js.map +1 -1
- package/lib/module/specs/NativeAppLovinMAXModule.js +9 -0
- package/lib/module/specs/NativeAppLovinMAXModule.js.map +1 -1
- package/lib/module/types/AdInfo.js +13 -16
- package/lib/module/types/AdInfo.js.map +1 -1
- package/lib/typescript/src/AdView.d.ts +27 -21
- package/lib/typescript/src/AdView.d.ts.map +1 -1
- package/lib/typescript/src/AppLovinMAX.d.ts +22 -21
- package/lib/typescript/src/AppLovinMAX.d.ts.map +1 -1
- package/lib/typescript/src/ErrorCode.d.ts +24 -31
- package/lib/typescript/src/ErrorCode.d.ts.map +1 -1
- package/lib/typescript/src/EventEmitter.d.ts +16 -0
- package/lib/typescript/src/EventEmitter.d.ts.map +1 -1
- package/lib/typescript/src/Utils.d.ts +15 -0
- package/lib/typescript/src/Utils.d.ts.map +1 -1
- package/lib/typescript/src/nativeAd/NativeAdView.d.ts +15 -7
- package/lib/typescript/src/nativeAd/NativeAdView.d.ts.map +1 -1
- package/lib/typescript/src/nativeAd/NativeAdViewComponents.d.ts +65 -1
- package/lib/typescript/src/nativeAd/NativeAdViewComponents.d.ts.map +1 -1
- package/lib/typescript/src/nativeAd/NativeAdViewProvider.d.ts +17 -0
- package/lib/typescript/src/nativeAd/NativeAdViewProvider.d.ts.map +1 -1
- package/lib/typescript/src/specs/AppLovinMAXAdViewNativeComponent.d.ts +45 -1
- package/lib/typescript/src/specs/AppLovinMAXAdViewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/specs/AppLovinMAXNativeAdViewNativeComponent.d.ts +57 -6
- package/lib/typescript/src/specs/AppLovinMAXNativeAdViewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/specs/NativeAppLovinMAXModule.d.ts +10 -0
- package/lib/typescript/src/specs/NativeAppLovinMAXModule.d.ts.map +1 -1
- package/lib/typescript/src/types/AdEvent.d.ts +10 -4
- package/lib/typescript/src/types/AdEvent.d.ts.map +1 -1
- package/lib/typescript/src/types/AdInfo.d.ts +78 -85
- package/lib/typescript/src/types/AdInfo.d.ts.map +1 -1
- package/lib/typescript/src/types/AdProps.d.ts +14 -15
- package/lib/typescript/src/types/AdProps.d.ts.map +1 -1
- package/lib/typescript/src/types/AdViewProps.d.ts +28 -29
- package/lib/typescript/src/types/AdViewProps.d.ts.map +1 -1
- package/lib/typescript/src/types/AppLovinMAX.d.ts +50 -53
- package/lib/typescript/src/types/AppLovinMAX.d.ts.map +1 -1
- package/lib/typescript/src/types/BannerAd.d.ts +22 -17
- package/lib/typescript/src/types/BannerAd.d.ts.map +1 -1
- package/lib/typescript/src/types/CMPError.d.ts +7 -4
- package/lib/typescript/src/types/CMPError.d.ts.map +1 -1
- package/lib/typescript/src/types/Configuration.d.ts +12 -14
- package/lib/typescript/src/types/Configuration.d.ts.map +1 -1
- package/lib/typescript/src/types/FullscreenAd.d.ts +39 -46
- package/lib/typescript/src/types/FullscreenAd.d.ts.map +1 -1
- package/lib/typescript/src/types/MRecAd.d.ts +7 -3
- package/lib/typescript/src/types/MRecAd.d.ts.map +1 -1
- package/lib/typescript/src/types/NativeAd.d.ts +12 -11
- package/lib/typescript/src/types/NativeAd.d.ts.map +1 -1
- package/lib/typescript/src/types/NativeAdViewProps.d.ts +4 -3
- package/lib/typescript/src/types/NativeAdViewProps.d.ts.map +1 -1
- package/lib/typescript/src/types/Privacy.d.ts +13 -6
- package/lib/typescript/src/types/Privacy.d.ts.map +1 -1
- package/lib/typescript/src/types/RewardedAd.d.ts +7 -5
- package/lib/typescript/src/types/RewardedAd.d.ts.map +1 -1
- package/lib/typescript/src/types/ViewAd.d.ts +46 -50
- package/lib/typescript/src/types/ViewAd.d.ts.map +1 -1
- package/package.json +1 -1
- package/react-native-applovin-max.podspec +2 -2
- package/src/AdView.tsx +62 -80
- package/src/AppLovinMAX.ts +39 -29
- package/src/ErrorCode.ts +24 -31
- package/src/EventEmitter.ts +20 -2
- package/src/Utils.ts +20 -1
- package/src/nativeAd/NativeAdView.tsx +31 -21
- package/src/nativeAd/NativeAdViewComponents.tsx +97 -38
- package/src/nativeAd/NativeAdViewProvider.tsx +23 -0
- package/src/specs/AppLovinMAXAdViewNativeComponent.ts +62 -1
- package/src/specs/AppLovinMAXNativeAdViewNativeComponent.ts +70 -6
- package/src/specs/NativeAppLovinMAXModule.ts +75 -55
- package/src/types/AdEvent.ts +10 -4
- package/src/types/AdInfo.ts +78 -85
- package/src/types/AdProps.ts +14 -15
- package/src/types/AdViewProps.ts +28 -29
- package/src/types/AppLovinMAX.ts +50 -53
- package/src/types/BannerAd.ts +22 -17
- package/src/types/CMPError.ts +7 -4
- package/src/types/Configuration.ts +12 -14
- package/src/types/FullscreenAd.ts +39 -46
- package/src/types/MRecAd.ts +7 -3
- package/src/types/NativeAd.ts +12 -11
- package/src/types/NativeAdViewProps.ts +4 -3
- package/src/types/Privacy.ts +13 -6
- package/src/types/RewardedAd.ts +7 -5
- package/src/types/ViewAd.ts +46 -50
package/lib/module/ErrorCode.js
CHANGED
|
@@ -15,74 +15,67 @@ const {
|
|
|
15
15
|
} = AppLovinMAX.getConstants();
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
|
-
*
|
|
19
|
-
* display.
|
|
18
|
+
* Error codes returned by the AppLovin MAX SDK when an ad fails to load or display.
|
|
20
19
|
*/
|
|
21
20
|
export let ErrorCode = /*#__PURE__*/function (ErrorCode) {
|
|
22
21
|
/**
|
|
23
|
-
*
|
|
24
|
-
*
|
|
22
|
+
* An unspecified error occurred.
|
|
23
|
+
* See the `message` field for more details.
|
|
25
24
|
*/
|
|
26
25
|
ErrorCode[ErrorCode["UNSPECIFIED"] = MAX_ERROR_CODE_UNSPECIFIED] = "UNSPECIFIED";
|
|
27
26
|
/**
|
|
28
|
-
*
|
|
29
|
-
* app/device.
|
|
27
|
+
* No eligible ads were returned from any mediated networks.
|
|
30
28
|
*/
|
|
31
29
|
ErrorCode[ErrorCode["NO_FILL"] = MAX_ERROR_CODE_NO_FILL] = "NO_FILL";
|
|
32
30
|
/**
|
|
33
|
-
*
|
|
34
|
-
*
|
|
31
|
+
* Eligible ads were returned but all failed to load.
|
|
32
|
+
* See `adLoadFailureInfo` for more details.
|
|
35
33
|
*/
|
|
36
34
|
ErrorCode[ErrorCode["AD_LOAD_FAILED"] = MAX_ERROR_CODE_AD_LOAD_FAILED] = "AD_LOAD_FAILED";
|
|
37
35
|
/**
|
|
38
|
-
*
|
|
36
|
+
* An error occurred while attempting to display the ad.
|
|
39
37
|
*/
|
|
40
38
|
ErrorCode[ErrorCode["AD_DISPLAY_FAILED"] = MAX_ERROR_CODE_AD_DISPLAY_FAILED] = "AD_DISPLAY_FAILED";
|
|
41
39
|
/**
|
|
42
|
-
*
|
|
43
|
-
*
|
|
40
|
+
* The ad request failed due to a general network issue.
|
|
41
|
+
* See the `message` field for details.
|
|
44
42
|
*/
|
|
45
43
|
ErrorCode[ErrorCode["NETWORK_ERROR"] = MAX_ERROR_CODE_NETWORK_ERROR] = "NETWORK_ERROR";
|
|
46
44
|
/**
|
|
47
|
-
*
|
|
45
|
+
* The ad request timed out, likely due to a slow internet connection.
|
|
48
46
|
*/
|
|
49
47
|
ErrorCode[ErrorCode["NETWORK_TIMEOUT"] = MAX_ERROR_CODE_NETWORK_TIMEOUT] = "NETWORK_TIMEOUT";
|
|
50
48
|
/**
|
|
51
|
-
*
|
|
52
|
-
* internet.
|
|
49
|
+
* The ad request failed because the device was offline.
|
|
53
50
|
*/
|
|
54
51
|
ErrorCode[ErrorCode["NO_NETWORK"] = MAX_ERROR_CODE_NO_NETWORK] = "NO_NETWORK";
|
|
55
52
|
/**
|
|
56
|
-
*
|
|
57
|
-
* is still showing.
|
|
53
|
+
* A fullscreen ad was requested while another one was already showing.
|
|
58
54
|
*/
|
|
59
55
|
ErrorCode[ErrorCode["FULLSCREEN_AD_ALREADY_SHOWING"] = MAX_ERROR_CODE_FULLSCREEN_AD_ALREADY_SHOWING] = "FULLSCREEN_AD_ALREADY_SHOWING";
|
|
60
56
|
/**
|
|
61
|
-
*
|
|
62
|
-
* loaded.
|
|
57
|
+
* A fullscreen ad was requested before it had finished loading.
|
|
63
58
|
*/
|
|
64
59
|
ErrorCode[ErrorCode["FULLSCREEN_AD_NOT_READY"] = MAX_ERROR_CODE_FULLSCREEN_AD_NOT_READY] = "FULLSCREEN_AD_NOT_READY";
|
|
65
60
|
/**
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
* **iOS ONLY**.
|
|
61
|
+
* The ad was presented from an invalid view controller.
|
|
62
|
+
* **iOS only**.
|
|
69
63
|
*/
|
|
70
64
|
ErrorCode[ErrorCode["FULLSCREEN_AD_INVALID_VIEW_CONTROLLER"] = MAX_ERROR_CODE_FULLSCREEN_AD_INVALID_VIEW_CONTROLLER] = "FULLSCREEN_AD_INVALID_VIEW_CONTROLLER";
|
|
71
65
|
/**
|
|
72
|
-
*
|
|
73
|
-
* "Don't Keep Activities" developer setting enabled.
|
|
74
|
-
* **Android
|
|
66
|
+
* The SDK was unable to display the ad because the
|
|
67
|
+
* "Don't Keep Activities" developer setting is enabled.
|
|
68
|
+
* **Android only**.
|
|
75
69
|
*/
|
|
76
70
|
ErrorCode[ErrorCode["DONT_KEEP_ACTIVITIES_ENABLED"] = MAX_ERROR_CODE_DONT_KEEP_ACTIVITIES_ENABLED] = "DONT_KEEP_ACTIVITIES_ENABLED";
|
|
77
71
|
/**
|
|
78
|
-
*
|
|
79
|
-
* invalid ad unit identifier.
|
|
72
|
+
* The ad failed to load due to an invalid ad unit identifier.
|
|
80
73
|
*
|
|
81
|
-
* Possible
|
|
82
|
-
* 1.
|
|
83
|
-
* 2.
|
|
84
|
-
* 3.
|
|
85
|
-
* 4.
|
|
74
|
+
* Possible causes:
|
|
75
|
+
* 1. The ad unit ID is malformed or does not exist.
|
|
76
|
+
* 2. The ad unit is disabled.
|
|
77
|
+
* 3. The ad unit is not linked to the current app’s package name.
|
|
78
|
+
* 4. The ad unit was recently created (less than ~30–60 minutes ago).
|
|
86
79
|
*/
|
|
87
80
|
ErrorCode[ErrorCode["INVALID_AD_UNIT_ID"] = MAX_ERROR_CODE_INVALID_AD_UNIT_ID] = "INVALID_AD_UNIT_ID";
|
|
88
81
|
return ErrorCode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AppLovinMAX","MAX_ERROR_CODE_UNSPECIFIED","MAX_ERROR_CODE_NO_FILL","MAX_ERROR_CODE_AD_LOAD_FAILED","MAX_ERROR_CODE_AD_DISPLAY_FAILED","MAX_ERROR_CODE_NETWORK_ERROR","MAX_ERROR_CODE_NETWORK_TIMEOUT","MAX_ERROR_CODE_NO_NETWORK","MAX_ERROR_CODE_FULLSCREEN_AD_ALREADY_SHOWING","MAX_ERROR_CODE_FULLSCREEN_AD_NOT_READY","MAX_ERROR_CODE_FULLSCREEN_AD_INVALID_VIEW_CONTROLLER","MAX_ERROR_CODE_DONT_KEEP_ACTIVITIES_ENABLED","MAX_ERROR_CODE_INVALID_AD_UNIT_ID","getConstants","ErrorCode"],"sourceRoot":"../../src","sources":["ErrorCode.ts"],"mappings":"AAAA,OAAOA,WAAW,MAAM,iCAAiC;AAEzD,MAAM;EACFC,0BAA0B;EAC1BC,sBAAsB;EACtBC,6BAA6B;EAC7BC,gCAAgC;EAChCC,4BAA4B;EAC5BC,8BAA8B;EAC9BC,yBAAyB;EACzBC,4CAA4C;EAC5CC,sCAAsC;EACtCC,oDAAoD;EACpDC,2CAA2C;EAC3CC;AACJ,CAAC,GAAGZ,WAAW,CAACa,YAAY,CAAC,CAAC;;AAE9B;AACA;AACA;AACA
|
|
1
|
+
{"version":3,"names":["AppLovinMAX","MAX_ERROR_CODE_UNSPECIFIED","MAX_ERROR_CODE_NO_FILL","MAX_ERROR_CODE_AD_LOAD_FAILED","MAX_ERROR_CODE_AD_DISPLAY_FAILED","MAX_ERROR_CODE_NETWORK_ERROR","MAX_ERROR_CODE_NETWORK_TIMEOUT","MAX_ERROR_CODE_NO_NETWORK","MAX_ERROR_CODE_FULLSCREEN_AD_ALREADY_SHOWING","MAX_ERROR_CODE_FULLSCREEN_AD_NOT_READY","MAX_ERROR_CODE_FULLSCREEN_AD_INVALID_VIEW_CONTROLLER","MAX_ERROR_CODE_DONT_KEEP_ACTIVITIES_ENABLED","MAX_ERROR_CODE_INVALID_AD_UNIT_ID","getConstants","ErrorCode"],"sourceRoot":"../../src","sources":["ErrorCode.ts"],"mappings":"AAAA,OAAOA,WAAW,MAAM,iCAAiC;AAEzD,MAAM;EACFC,0BAA0B;EAC1BC,sBAAsB;EACtBC,6BAA6B;EAC7BC,gCAAgC;EAChCC,4BAA4B;EAC5BC,8BAA8B;EAC9BC,yBAAyB;EACzBC,4CAA4C;EAC5CC,sCAAsC;EACtCC,oDAAoD;EACpDC,2CAA2C;EAC3CC;AACJ,CAAC,GAAGZ,WAAW,CAACa,YAAY,CAAC,CAAC;;AAE9B;AACA;AACA;AACA,WAAYC,SAAS,0BAATA,SAAS;EACjB;AACJ;AACA;AACA;EAJYA,SAAS,CAATA,SAAS,kBAKHb,0BAA0B;EAExC;AACJ;AACA;EATYa,SAAS,CAATA,SAAS,cAUPZ,sBAAsB;EAEhC;AACJ;AACA;AACA;EAfYY,SAAS,CAATA,SAAS,qBAgBAX,6BAA6B;EAE9C;AACJ;AACA;EApBYW,SAAS,CAATA,SAAS,wBAqBGV,gCAAgC;EAEpD;AACJ;AACA;AACA;EA1BYU,SAAS,CAATA,SAAS,oBA2BDT,4BAA4B;EAE5C;AACJ;AACA;EA/BYS,SAAS,CAATA,SAAS,sBAgCCR,8BAA8B;EAEhD;AACJ;AACA;EApCYQ,SAAS,CAATA,SAAS,iBAqCJP,yBAAyB;EAEtC;AACJ;AACA;EAzCYO,SAAS,CAATA,SAAS,oCA0CeN,4CAA4C;EAE5E;AACJ;AACA;EA9CYM,SAAS,CAATA,SAAS,8BA+CSL,sCAAsC;EAEhE;AACJ;AACA;AACA;EApDYK,SAAS,CAATA,SAAS,4CAqDuBJ,oDAAoD;EAE5F;AACJ;AACA;AACA;AACA;EA3DYI,SAAS,CAATA,SAAS,mCA4DcH,2CAA2C;EAE1E;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAtEYG,SAAS,CAATA,SAAS,yBAuEIF,iCAAiC;EAAA,OAvE9CE,SAAS;AAAA","ignoreList":[]}
|
|
@@ -1,9 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manages AppLovin MAX ad event listeners using a shared NativeEventEmitter.
|
|
3
|
+
* Ensures only one active subscription per event type at any given time.
|
|
4
|
+
*/
|
|
5
|
+
|
|
1
6
|
import { NativeEventEmitter } from 'react-native';
|
|
2
7
|
import AppLovinMAX from './specs/NativeAppLovinMAXModule';
|
|
3
8
|
|
|
4
|
-
//
|
|
9
|
+
// Singleton event emitter for AppLovin MAX native events.
|
|
5
10
|
const emitter = new NativeEventEmitter(AppLovinMAX);
|
|
11
|
+
|
|
12
|
+
// Tracks active subscriptions by event type.
|
|
6
13
|
const subscriptions = {};
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Subscribes to a specific ad event.
|
|
17
|
+
* If a listener already exists for the event, it will be replaced.
|
|
18
|
+
*
|
|
19
|
+
* @param event - The event name to listen for.
|
|
20
|
+
* @param handler - The callback to handle the event.
|
|
21
|
+
*/
|
|
7
22
|
export const addEventListener = (event, handler) => {
|
|
8
23
|
const subscription = emitter.addListener(event, handler);
|
|
9
24
|
const currentSubscription = subscriptions[event];
|
|
@@ -12,6 +27,12 @@ export const addEventListener = (event, handler) => {
|
|
|
12
27
|
}
|
|
13
28
|
subscriptions[event] = subscription;
|
|
14
29
|
};
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Unsubscribes from a specific ad event, if a listener exists.
|
|
33
|
+
*
|
|
34
|
+
* @param event - The event name to unsubscribe from.
|
|
35
|
+
*/
|
|
15
36
|
export const removeEventListener = event => {
|
|
16
37
|
const currentSubscription = subscriptions[event];
|
|
17
38
|
if (currentSubscription) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeEventEmitter","AppLovinMAX","emitter","subscriptions","addEventListener","event","handler","subscription","addListener","currentSubscription","remove","removeEventListener"],"sourceRoot":"../../src","sources":["EventEmitter.ts"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,cAAc;AAGjD,OAAOC,WAAW,MAAM,iCAAiC;;AAEzD;AACA,MAAMC,OAAO,GAAG,IAAIF,kBAAkB,CAACC,WAAW,CAAC;
|
|
1
|
+
{"version":3,"names":["NativeEventEmitter","AppLovinMAX","emitter","subscriptions","addEventListener","event","handler","subscription","addListener","currentSubscription","remove","removeEventListener"],"sourceRoot":"../../src","sources":["EventEmitter.ts"],"mappings":"AAAA;AACA;AACA;AACA;;AAEA,SAASA,kBAAkB,QAAQ,cAAc;AAGjD,OAAOC,WAAW,MAAM,iCAAiC;;AAEzD;AACA,MAAMC,OAAO,GAAG,IAAIF,kBAAkB,CAACC,WAAW,CAAC;;AAEnD;AACA,MAAME,aAAgD,GAAG,CAAC,CAAC;;AAE3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,GAAGA,CAA0BC,KAAa,EAAEC,OAA2B,KAAW;EAC3G,MAAMC,YAAY,GAAGL,OAAO,CAACM,WAAW,CAACH,KAAK,EAAEC,OAAO,CAAC;EACxD,MAAMG,mBAAmB,GAAGN,aAAa,CAACE,KAAK,CAAC;EAChD,IAAII,mBAAmB,EAAE;IACrBA,mBAAmB,CAACC,MAAM,CAAC,CAAC;EAChC;EACAP,aAAa,CAACE,KAAK,CAAC,GAAGE,YAAY;AACvC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMI,mBAAmB,GAAIN,KAAa,IAAW;EACxD,MAAMI,mBAAmB,GAAGN,aAAa,CAACE,KAAK,CAAC;EAChD,IAAII,mBAAmB,EAAE;IACrBA,mBAAmB,CAACC,MAAM,CAAC,CAAC;IAC5B,OAAOP,aAAa,CAACE,KAAK,CAAC;EAC/B;AACJ,CAAC","ignoreList":[]}
|
package/lib/module/Utils.js
CHANGED
|
@@ -1,7 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Converts a record of string-based extra parameters into an array of `{ key, value }` objects.
|
|
3
|
+
* Used for sending extra parameters to the native SDK.
|
|
4
|
+
*
|
|
5
|
+
* @param input - An optional map of key-value string pairs (or null values).
|
|
6
|
+
* @returns An array of `{ key, value }` objects. Returns an empty array if input is undefined.
|
|
7
|
+
*/
|
|
8
|
+
export const makeExtraParametersArray = input => {
|
|
9
|
+
if (!input) return [];
|
|
10
|
+
return Object.entries(input).map(([key, value]) => ({
|
|
11
|
+
key,
|
|
12
|
+
value
|
|
13
|
+
}));
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Converts a map of local extra parameters into a filtered array of `{ key, value }` pairs.
|
|
17
|
+
* Only values matching the specified type (`'str'` or `'bool'`) are included.
|
|
18
|
+
*
|
|
19
|
+
* @param input - A record of local extra parameters (string, boolean, or null).
|
|
20
|
+
* @param type - The expected type of each value: `'str'` for strings, `'bool'` for booleans.
|
|
21
|
+
* @returns A filtered array of `{ key, value }` objects, cast to the specified type.
|
|
22
|
+
*/
|
|
5
23
|
export const makeLocalExtraParametersArray = (input, type) => {
|
|
6
24
|
if (!input) return [];
|
|
7
25
|
return Object.entries(input).filter(([_, value]) => {
|
package/lib/module/Utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["makeExtraParametersArray","input","Object","entries","map","key","value","makeLocalExtraParametersArray","type","filter","_"],"sourceRoot":"../../src","sources":["Utils.ts"],"mappings":"AAEA,OAAO,MAAMA,wBAAwB,GAAIC,KAAqC,
|
|
1
|
+
{"version":3,"names":["makeExtraParametersArray","input","Object","entries","map","key","value","makeLocalExtraParametersArray","type","filter","_"],"sourceRoot":"../../src","sources":["Utils.ts"],"mappings":"AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,wBAAwB,GAAIC,KAAqC,IAA8C;EACxH,IAAI,CAACA,KAAK,EAAE,OAAO,EAAE;EAErB,OAAOC,MAAM,CAACC,OAAO,CAACF,KAAK,CAAC,CAACG,GAAG,CAAC,CAAC,CAACC,GAAG,EAAEC,KAAK,CAAC,MAAM;IAAED,GAAG;IAAEC;EAAM,CAAC,CAAC,CAAC;AACxE,CAAC;AASD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,6BAA6B,GAAGA,CACzCN,KAA2D,EAC3DO,IAAO,KACoD;EAC3D,IAAI,CAACP,KAAK,EAAE,OAAO,EAAE;EAErB,OAAOC,MAAM,CAACC,OAAO,CAACF,KAAK,CAAC,CACvBQ,MAAM,CAAC,CAAC,CAACC,CAAC,EAAEJ,KAAK,CAAC,KAAK;IACpB,IAAIA,KAAK,KAAK,IAAI,EAAE,OAAO,IAAI;IAC/B,IAAIE,IAAI,KAAK,KAAK,EAAE,OAAO,OAAOF,KAAK,KAAK,QAAQ;IACpD,IAAIE,IAAI,KAAK,MAAM,EAAE,OAAO,OAAOF,KAAK,KAAK,SAAS;IACtD,OAAO,KAAK;EAChB,CAAC,CAAC,CACDF,GAAG,CAAC,CAAC,CAACC,GAAG,EAAEC,KAAK,CAAC,MAAM;IAAED,GAAG;IAAEC,KAAK,EAAEA;EAAwC,CAAC,CAAC,CAAC;AACzF,CAAC","ignoreList":[]}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
+
/**
|
|
3
|
+
* Provides the NativeAdView component, which manages loading and rendering of native ads using the
|
|
4
|
+
* AppLovin MAX SDK in React Native.
|
|
5
|
+
*/
|
|
6
|
+
|
|
2
7
|
import * as React from 'react';
|
|
3
8
|
import { forwardRef, useContext, useImperativeHandle, useRef, useState, useEffect, useCallback } from 'react';
|
|
4
9
|
import { findNodeHandle, View } from 'react-native';
|
|
@@ -8,8 +13,7 @@ import { NativeAdViewContext, NativeAdViewProvider } from './NativeAdViewProvide
|
|
|
8
13
|
import { makeExtraParametersArray, makeLocalExtraParametersArray } from '../Utils';
|
|
9
14
|
|
|
10
15
|
/**
|
|
11
|
-
* The {@link NativeAdView} component
|
|
12
|
-
* renders it with the asset views:
|
|
16
|
+
* The {@link NativeAdView} component renders a native ad and binds it to asset views:
|
|
13
17
|
*
|
|
14
18
|
* - {@link IconView}
|
|
15
19
|
* - {@link TitleView}
|
|
@@ -19,19 +23,21 @@ import { makeExtraParametersArray, makeLocalExtraParametersArray } from '../Util
|
|
|
19
23
|
* - {@link MediaView}
|
|
20
24
|
* - {@link CallToActionView}
|
|
21
25
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
26
|
+
* Each asset view must be manually laid out and styled.
|
|
27
|
+
* The component automatically populates content once an ad is loaded.
|
|
28
|
+
* You can reload the ad using the component’s ref via `loadAd()`.
|
|
29
|
+
*
|
|
30
|
+
* **Note:** The AppLovin SDK must be initialized before using this component.
|
|
25
31
|
*
|
|
26
32
|
* ### Example:
|
|
27
|
-
* ```
|
|
33
|
+
* ```tsx
|
|
28
34
|
* <NativeAdView
|
|
29
35
|
* ref={nativeAdViewHandler}
|
|
30
36
|
* adUnitId={adUnitId}
|
|
31
37
|
* style={styles.nativead}
|
|
32
38
|
* onAdLoaded={(adInfo: AdInfo) => { ... }}
|
|
33
39
|
* >
|
|
34
|
-
* <View style={
|
|
40
|
+
* <View style={...}>
|
|
35
41
|
* <IconView style={styles.icon} />
|
|
36
42
|
* <TitleView style={styles.title} />
|
|
37
43
|
* <AdvertiserView style={styles.advertiser} />
|
|
@@ -43,6 +49,9 @@ import { makeExtraParametersArray, makeLocalExtraParametersArray } from '../Util
|
|
|
43
49
|
* </View>
|
|
44
50
|
* </NativeAdView>
|
|
45
51
|
* ```
|
|
52
|
+
*
|
|
53
|
+
* For a complete implementation example, see:
|
|
54
|
+
* https://github.com/AppLovin/AppLovin-MAX-React-Native/blob/master/example/src/NativeAdViewExample.tsx
|
|
46
55
|
*/
|
|
47
56
|
export const NativeAdView = /*#__PURE__*/forwardRef(function NativeAdView(props, ref) {
|
|
48
57
|
const [isInitialized, setIsInitialized] = useState(false);
|
|
@@ -64,21 +73,14 @@ export const NativeAdView = /*#__PURE__*/forwardRef(function NativeAdView(props,
|
|
|
64
73
|
ref: ref
|
|
65
74
|
})));
|
|
66
75
|
});
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Extracts native ad info from a synthetic event and invokes the provided callback, if any.
|
|
79
|
+
* Ensures optional native ad fields have fallback defaults.
|
|
80
|
+
*/
|
|
67
81
|
const handleNativeAdViewEvent = (event, callback) => {
|
|
68
82
|
if (!callback) return;
|
|
69
|
-
|
|
70
|
-
...event.nativeEvent
|
|
71
|
-
};
|
|
72
|
-
if ('nativeAd' in event.nativeEvent) {
|
|
73
|
-
var _event$nativeEvent$na, _event$nativeEvent$na2, _event$nativeEvent$na3;
|
|
74
|
-
adInfo.nativeAd = {
|
|
75
|
-
...event.nativeEvent.nativeAd,
|
|
76
|
-
isIconImageAvailable: ((_event$nativeEvent$na = event.nativeEvent.nativeAd) === null || _event$nativeEvent$na === void 0 ? void 0 : _event$nativeEvent$na.isIconImageAvailable) ?? false,
|
|
77
|
-
isOptionsViewAvailable: ((_event$nativeEvent$na2 = event.nativeEvent.nativeAd) === null || _event$nativeEvent$na2 === void 0 ? void 0 : _event$nativeEvent$na2.isOptionsViewAvailable) ?? false,
|
|
78
|
-
isMediaViewAvailable: ((_event$nativeEvent$na3 = event.nativeEvent.nativeAd) === null || _event$nativeEvent$na3 === void 0 ? void 0 : _event$nativeEvent$na3.isMediaViewAvailable) ?? false
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
callback(adInfo);
|
|
83
|
+
callback(event.nativeEvent);
|
|
82
84
|
};
|
|
83
85
|
const NativeAdViewImpl = /*#__PURE__*/forwardRef(function NativeAdViewImpl({
|
|
84
86
|
adUnitId,
|
|
@@ -107,13 +109,17 @@ const NativeAdViewImpl = /*#__PURE__*/forwardRef(function NativeAdViewImpl({
|
|
|
107
109
|
} = useContext(NativeAdViewContext);
|
|
108
110
|
const nativeAdViewRef = useRef();
|
|
109
111
|
|
|
110
|
-
//
|
|
112
|
+
// Triggers a native ad load via the native command
|
|
111
113
|
const loadAd = useCallback(() => {
|
|
112
114
|
nativeAdViewRef.current && Commands.loadAd(nativeAdViewRef.current);
|
|
113
115
|
}, []);
|
|
114
116
|
useImperativeHandle(ref, () => ({
|
|
115
117
|
loadAd
|
|
116
118
|
}), [loadAd]);
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Updates the native asset view binding for a given view type (e.g., TitleView, MediaView).
|
|
122
|
+
*/
|
|
117
123
|
const updateAssetView = useCallback((assetViewRef, type) => {
|
|
118
124
|
if (!nativeAdViewRef.current || !assetViewRef.current) return;
|
|
119
125
|
const node = findNodeHandle(assetViewRef.current);
|
|
@@ -121,6 +127,13 @@ const NativeAdViewImpl = /*#__PURE__*/forwardRef(function NativeAdViewImpl({
|
|
|
121
127
|
Commands.updateAssetView(nativeAdViewRef.current, node, type);
|
|
122
128
|
}
|
|
123
129
|
}, []);
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Handles native ad load event:
|
|
133
|
+
* - Updates context with the new native ad data
|
|
134
|
+
* - Notifies native module of updated asset view mappings
|
|
135
|
+
* - Triggers native rendering after all asset views are registered
|
|
136
|
+
*/
|
|
124
137
|
const onAdLoadedEvent = useCallback(event => {
|
|
125
138
|
const nativeAdImpl = event.nativeEvent.nativeAdImpl;
|
|
126
139
|
if (nativeAdImpl) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","forwardRef","useContext","useImperativeHandle","useRef","useState","useEffect","useCallback","findNodeHandle","View","AppLovinMAX","NativeAdViewComponent","Commands","NativeAdViewContext","NativeAdViewProvider","makeExtraParametersArray","makeLocalExtraParametersArray","NativeAdView","props","ref","isInitialized","setIsInitialized","result","console","warn","createElement","NativeAdViewImpl","_extends","handleNativeAdViewEvent","event","callback","
|
|
1
|
+
{"version":3,"names":["React","forwardRef","useContext","useImperativeHandle","useRef","useState","useEffect","useCallback","findNodeHandle","View","AppLovinMAX","NativeAdViewComponent","Commands","NativeAdViewContext","NativeAdViewProvider","makeExtraParametersArray","makeLocalExtraParametersArray","NativeAdView","props","ref","isInitialized","setIsInitialized","result","console","warn","createElement","NativeAdViewImpl","_extends","handleNativeAdViewEvent","event","callback","nativeEvent","adUnitId","placement","customData","extraParameters","localExtraParameters","onAdLoaded","onAdLoadFailed","onAdClicked","onAdRevenuePaid","children","style","otherProps","titleRef","advertiserRef","bodyRef","callToActionRef","imageRef","optionViewRef","mediaViewRef","setNativeAd","nativeAdViewRef","loadAd","current","updateAssetView","assetViewRef","type","node","onAdLoadedEvent","nativeAdImpl","title","advertiser","body","callToAction","url","image","imageSource","isOptionsViewAvailable","isMediaViewAvailable","renderNativeAd","onAdLoadFailedEvent","onAdClickedEvent","onAdRevenuePaidEvent","element","undefined","strLocalExtraParameters","boolLocalExtraParameters"],"sourceRoot":"../../../src","sources":["nativeAd/NativeAdView.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,8 +1,28 @@
|
|
|
1
1
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
+
/**
|
|
3
|
+
* Provides pre-styled React Native components for each native ad asset view:
|
|
4
|
+
*
|
|
5
|
+
* - TitleView
|
|
6
|
+
* - AdvertiserView
|
|
7
|
+
* - BodyView
|
|
8
|
+
* - CallToActionView
|
|
9
|
+
* - IconView
|
|
10
|
+
* - OptionsView
|
|
11
|
+
* - MediaView
|
|
12
|
+
* - StarRatingView
|
|
13
|
+
*
|
|
14
|
+
* Each component pulls ad content and view refs from NativeAdView context,
|
|
15
|
+
* and must be rendered inside a {@link NativeAdView}.
|
|
16
|
+
*/
|
|
17
|
+
|
|
2
18
|
import * as React from 'react';
|
|
3
19
|
import { useContext, useMemo } from 'react';
|
|
4
20
|
import { Text, Image, View, TouchableOpacity, StyleSheet, Platform } from 'react-native';
|
|
5
21
|
import { NativeAdViewContext } from './NativeAdViewProvider';
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Renders the native ad’s title.
|
|
25
|
+
*/
|
|
6
26
|
export const TitleView = props => {
|
|
7
27
|
const {
|
|
8
28
|
titleRef,
|
|
@@ -12,6 +32,10 @@ export const TitleView = props => {
|
|
|
12
32
|
ref: titleRef
|
|
13
33
|
}), nativeAd.title ?? '');
|
|
14
34
|
};
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Renders the advertiser name.
|
|
38
|
+
*/
|
|
15
39
|
export const AdvertiserView = props => {
|
|
16
40
|
const {
|
|
17
41
|
advertiserRef,
|
|
@@ -21,6 +45,10 @@ export const AdvertiserView = props => {
|
|
|
21
45
|
ref: advertiserRef
|
|
22
46
|
}), nativeAd.advertiser ?? '');
|
|
23
47
|
};
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Renders the ad’s body text (description).
|
|
51
|
+
*/
|
|
24
52
|
export const BodyView = props => {
|
|
25
53
|
const {
|
|
26
54
|
bodyRef,
|
|
@@ -30,29 +58,37 @@ export const BodyView = props => {
|
|
|
30
58
|
ref: bodyRef
|
|
31
59
|
}), nativeAd.body ?? '');
|
|
32
60
|
};
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Renders the call-to-action label.
|
|
64
|
+
* On iOS, wraps the text with a TouchableOpacity for better click behavior.
|
|
65
|
+
*/
|
|
33
66
|
export const CallToActionView = props => {
|
|
34
67
|
const {
|
|
35
68
|
callToActionRef,
|
|
36
69
|
nativeAd
|
|
37
70
|
} = useContext(NativeAdViewContext);
|
|
38
|
-
// TouchableOpacity disables clicking on certain Android devices.
|
|
39
71
|
if (Platform.OS === 'android') {
|
|
40
72
|
return /*#__PURE__*/React.createElement(Text, _extends({}, props, {
|
|
41
73
|
ref: callToActionRef
|
|
42
74
|
}), nativeAd.callToAction ?? '');
|
|
43
|
-
} else {
|
|
44
|
-
return /*#__PURE__*/React.createElement(TouchableOpacity, null, /*#__PURE__*/React.createElement(Text, _extends({}, props, {
|
|
45
|
-
ref: callToActionRef
|
|
46
|
-
}), nativeAd.callToAction ?? ''));
|
|
47
75
|
}
|
|
76
|
+
return /*#__PURE__*/React.createElement(TouchableOpacity, null, /*#__PURE__*/React.createElement(Text, _extends({}, props, {
|
|
77
|
+
ref: callToActionRef
|
|
78
|
+
}), nativeAd.callToAction ?? ''));
|
|
48
79
|
};
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Renders the icon image for the native ad.
|
|
83
|
+
* Falls back to a blank placeholder if not available.
|
|
84
|
+
*/
|
|
49
85
|
export const IconView = props => {
|
|
50
86
|
const {
|
|
51
87
|
imageRef,
|
|
52
88
|
nativeAd
|
|
53
89
|
} = useContext(NativeAdViewContext);
|
|
54
90
|
const defaultIcon = require('./img/blank_icon.png');
|
|
55
|
-
const imageSource = (() => {
|
|
91
|
+
const imageSource = useMemo(() => {
|
|
56
92
|
if (nativeAd !== null && nativeAd !== void 0 && nativeAd.url) {
|
|
57
93
|
return {
|
|
58
94
|
uri: nativeAd.url
|
|
@@ -64,12 +100,16 @@ export const IconView = props => {
|
|
|
64
100
|
};
|
|
65
101
|
}
|
|
66
102
|
return defaultIcon;
|
|
67
|
-
})
|
|
103
|
+
}, [nativeAd.url, nativeAd.imageSource, defaultIcon]);
|
|
68
104
|
return /*#__PURE__*/React.createElement(Image, _extends({}, props, {
|
|
69
105
|
ref: imageRef,
|
|
70
106
|
source: imageSource
|
|
71
107
|
}));
|
|
72
108
|
};
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Renders the native ad’s options view.
|
|
112
|
+
*/
|
|
73
113
|
export const OptionsView = props => {
|
|
74
114
|
const {
|
|
75
115
|
optionViewRef
|
|
@@ -78,6 +118,10 @@ export const OptionsView = props => {
|
|
|
78
118
|
ref: optionViewRef
|
|
79
119
|
}));
|
|
80
120
|
};
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Renders the native ad’s media content.
|
|
124
|
+
*/
|
|
81
125
|
export const MediaView = props => {
|
|
82
126
|
const {
|
|
83
127
|
mediaViewRef
|
|
@@ -86,58 +130,61 @@ export const MediaView = props => {
|
|
|
86
130
|
ref: mediaViewRef
|
|
87
131
|
}));
|
|
88
132
|
};
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Props for the {@link StarRatingView} component, which displays a star rating
|
|
136
|
+
* using Unicode stars (★ and ☆) styled with color, shadow, and size.
|
|
137
|
+
*/
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Renders the star rating of the ad, using Unicode stars (★ and ☆).
|
|
141
|
+
* Filled stars are rendered over hollow stars using a clipped view.
|
|
142
|
+
*/
|
|
143
|
+
export const StarRatingView = ({
|
|
144
|
+
color = '#ffe234',
|
|
145
|
+
shadowColor = '#dedede',
|
|
146
|
+
size = 10,
|
|
147
|
+
style
|
|
148
|
+
}) => {
|
|
98
149
|
const {
|
|
99
150
|
nativeAd
|
|
100
151
|
} = useContext(NativeAdViewContext);
|
|
101
|
-
|
|
102
|
-
|
|
152
|
+
const maxStarCount = 5;
|
|
153
|
+
const containerStyle = useMemo(() => StyleSheet.flatten([style, styles.starRatingContainer]), [style]);
|
|
103
154
|
const stars = useMemo(() => {
|
|
104
|
-
|
|
105
|
-
return Array.from({
|
|
106
|
-
length: maxStarCount
|
|
107
|
-
}).map((_, index) => /*#__PURE__*/React.createElement(Text, {
|
|
108
|
-
key: index,
|
|
109
|
-
style: {
|
|
110
|
-
fontSize: starSize
|
|
111
|
-
}
|
|
112
|
-
}, ' '));
|
|
113
|
-
}
|
|
155
|
+
const starRating = Math.max(0, Math.min(maxStarCount, nativeAd.starRating ?? 0));
|
|
114
156
|
return Array.from({
|
|
115
157
|
length: maxStarCount
|
|
116
158
|
}).map((_, index) => {
|
|
117
|
-
const
|
|
118
|
-
const width = (starRating - index) *
|
|
159
|
+
const isFull = starRating > index;
|
|
160
|
+
const width = Math.min(size, Math.max(0, (starRating - index) * size));
|
|
119
161
|
return /*#__PURE__*/React.createElement(View, {
|
|
120
162
|
key: index
|
|
121
163
|
}, /*#__PURE__*/React.createElement(Text, {
|
|
122
164
|
style: {
|
|
123
|
-
fontSize:
|
|
124
|
-
color:
|
|
165
|
+
fontSize: size,
|
|
166
|
+
color: isFull ? color : shadowColor
|
|
125
167
|
}
|
|
126
|
-
}, String.fromCodePoint(0x2606)),
|
|
168
|
+
}, String.fromCodePoint(0x2606)), isFull && /*#__PURE__*/React.createElement(View, {
|
|
127
169
|
style: [{
|
|
128
|
-
width
|
|
170
|
+
width
|
|
129
171
|
}, styles.starRating]
|
|
130
172
|
}, /*#__PURE__*/React.createElement(Text, {
|
|
131
173
|
style: {
|
|
132
|
-
fontSize:
|
|
133
|
-
color
|
|
174
|
+
fontSize: size,
|
|
175
|
+
color
|
|
134
176
|
}
|
|
135
177
|
}, String.fromCodePoint(0x2605))));
|
|
136
178
|
});
|
|
137
|
-
}, [nativeAd.starRating,
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
179
|
+
}, [nativeAd.starRating, color, shadowColor, size]);
|
|
180
|
+
if (!nativeAd.starRating) {
|
|
181
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
182
|
+
style: containerStyle
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
186
|
+
style: containerStyle
|
|
187
|
+
}, stars);
|
|
141
188
|
};
|
|
142
189
|
const styles = StyleSheet.create({
|
|
143
190
|
starRatingContainer: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useContext","useMemo","Text","Image","View","TouchableOpacity","StyleSheet","Platform","NativeAdViewContext","TitleView","props","titleRef","nativeAd","createElement","_extends","ref","title","AdvertiserView","advertiserRef","advertiser","BodyView","bodyRef","body","CallToActionView","callToActionRef","OS","callToAction","IconView","imageRef","defaultIcon","require","imageSource","url","uri","source","OptionsView","optionViewRef","MediaView","mediaViewRef","StarRatingView","
|
|
1
|
+
{"version":3,"names":["React","useContext","useMemo","Text","Image","View","TouchableOpacity","StyleSheet","Platform","NativeAdViewContext","TitleView","props","titleRef","nativeAd","createElement","_extends","ref","title","AdvertiserView","advertiserRef","advertiser","BodyView","bodyRef","body","CallToActionView","callToActionRef","OS","callToAction","IconView","imageRef","defaultIcon","require","imageSource","url","uri","source","OptionsView","optionViewRef","MediaView","mediaViewRef","StarRatingView","color","shadowColor","size","style","maxStarCount","containerStyle","flatten","styles","starRatingContainer","stars","starRating","Math","max","min","Array","from","length","map","_","index","isFull","width","key","fontSize","String","fromCodePoint","create","flexDirection","alignItems","overflow","position"],"sourceRoot":"../../../src","sources":["nativeAd/NativeAdViewComponents.tsx"],"mappings":"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","ignoreList":[]}
|