cloudx-react-native 3.10.0 → 3.11.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 (105) hide show
  1. package/README.md +1 -0
  2. package/android/build.gradle +1 -1
  3. package/android/src/main/java/com/cloudxreactnative/CloudXAdEvents.kt +10 -0
  4. package/android/src/main/java/com/cloudxreactnative/CloudXAdInfo.kt +40 -0
  5. package/android/src/main/java/com/cloudxreactnative/CloudXNativeAdView.kt +718 -0
  6. package/android/src/main/java/com/cloudxreactnative/CloudXNativeAdViewManagerImpl.kt +119 -0
  7. package/android/src/main/java/com/cloudxreactnative/CloudXPackage.kt +4 -1
  8. package/android/src/main/res/layout/cloudx_rn_native_media_banner_template.xml +100 -0
  9. package/android/src/main/res/layout/cloudx_rn_native_medium_template.xml +99 -0
  10. package/android/src/main/res/layout/cloudx_rn_native_small_template.xml +72 -0
  11. package/android/src/main/res/layout/cloudx_rn_native_vertical_media_template.xml +117 -0
  12. package/android/src/newarch/com/cloudxreactnative/CloudXModule.kt +1 -0
  13. package/android/src/newarch/com/cloudxreactnative/CloudXNativeAdViewManager.kt +86 -0
  14. package/android/src/oldarch/com/cloudxreactnative/CloudXModule.kt +1 -0
  15. package/android/src/oldarch/com/cloudxreactnative/CloudXNativeAdViewManager.kt +118 -0
  16. package/cloudx-react-native.podspec +1 -1
  17. package/ios/CloudX.h +8 -0
  18. package/ios/CloudX.mm +159 -29
  19. package/ios/CloudXNativeAdView.h +75 -0
  20. package/ios/CloudXNativeAdView.mm +979 -0
  21. package/ios/CloudXNativeAdViewManager.h +12 -0
  22. package/ios/CloudXNativeAdViewManager.mm +119 -0
  23. package/lib/commonjs/CloudXAdViewBase.js +8 -97
  24. package/lib/commonjs/CloudXAdViewBase.js.map +1 -1
  25. package/lib/commonjs/CloudXNativeAdView.js +331 -0
  26. package/lib/commonjs/CloudXNativeAdView.js.map +1 -0
  27. package/lib/commonjs/CloudXNativeAdViewComponents.js +252 -0
  28. package/lib/commonjs/CloudXNativeAdViewComponents.js.map +1 -0
  29. package/lib/commonjs/CloudXNativeAdViewProvider.js +117 -0
  30. package/lib/commonjs/CloudXNativeAdViewProvider.js.map +1 -0
  31. package/lib/commonjs/extraParameters.js +52 -0
  32. package/lib/commonjs/extraParameters.js.map +1 -0
  33. package/lib/commonjs/hooks.js +34 -0
  34. package/lib/commonjs/hooks.js.map +1 -1
  35. package/lib/commonjs/index.js +72 -0
  36. package/lib/commonjs/index.js.map +1 -1
  37. package/lib/commonjs/specs/CloudXNativeAdViewNativeComponent.js +41 -0
  38. package/lib/commonjs/specs/CloudXNativeAdViewNativeComponent.js.map +1 -0
  39. package/lib/commonjs/types/NativeAd.js +70 -0
  40. package/lib/commonjs/types/NativeAd.js.map +1 -0
  41. package/lib/commonjs/types/index.js +13 -0
  42. package/lib/commonjs/types/index.js.map +1 -1
  43. package/lib/commonjs/useCloudXSdkInitialization.js +75 -0
  44. package/lib/commonjs/useCloudXSdkInitialization.js.map +1 -0
  45. package/lib/commonjs/version.js +1 -1
  46. package/lib/module/CloudXAdViewBase.js +7 -96
  47. package/lib/module/CloudXAdViewBase.js.map +1 -1
  48. package/lib/module/CloudXNativeAdView.js +324 -0
  49. package/lib/module/CloudXNativeAdView.js.map +1 -0
  50. package/lib/module/CloudXNativeAdViewComponents.js +240 -0
  51. package/lib/module/CloudXNativeAdViewComponents.js.map +1 -0
  52. package/lib/module/CloudXNativeAdViewProvider.js +110 -0
  53. package/lib/module/CloudXNativeAdViewProvider.js.map +1 -0
  54. package/lib/module/extraParameters.js +45 -0
  55. package/lib/module/extraParameters.js.map +1 -0
  56. package/lib/module/hooks.js +34 -0
  57. package/lib/module/hooks.js.map +1 -1
  58. package/lib/module/index.js +13 -0
  59. package/lib/module/index.js.map +1 -1
  60. package/lib/module/specs/CloudXNativeAdViewNativeComponent.js +35 -0
  61. package/lib/module/specs/CloudXNativeAdViewNativeComponent.js.map +1 -0
  62. package/lib/module/types/NativeAd.js +68 -0
  63. package/lib/module/types/NativeAd.js.map +1 -0
  64. package/lib/module/types/index.js +1 -0
  65. package/lib/module/types/index.js.map +1 -1
  66. package/lib/module/useCloudXSdkInitialization.js +68 -0
  67. package/lib/module/useCloudXSdkInitialization.js.map +1 -0
  68. package/lib/module/version.js +1 -1
  69. package/lib/typescript/src/CloudXAdViewBase.d.ts.map +1 -1
  70. package/lib/typescript/src/CloudXNativeAdView.d.ts +24 -0
  71. package/lib/typescript/src/CloudXNativeAdView.d.ts.map +1 -0
  72. package/lib/typescript/src/CloudXNativeAdViewComponents.d.ts +67 -0
  73. package/lib/typescript/src/CloudXNativeAdViewComponents.d.ts.map +1 -0
  74. package/lib/typescript/src/CloudXNativeAdViewProvider.d.ts +72 -0
  75. package/lib/typescript/src/CloudXNativeAdViewProvider.d.ts.map +1 -0
  76. package/lib/typescript/src/extraParameters.d.ts +4 -0
  77. package/lib/typescript/src/extraParameters.d.ts.map +1 -0
  78. package/lib/typescript/src/hooks.d.ts.map +1 -1
  79. package/lib/typescript/src/index.d.ts +4 -1
  80. package/lib/typescript/src/index.d.ts.map +1 -1
  81. package/lib/typescript/src/specs/CloudXNativeAdViewNativeComponent.d.ts +103 -0
  82. package/lib/typescript/src/specs/CloudXNativeAdViewNativeComponent.d.ts.map +1 -0
  83. package/lib/typescript/src/types/AdInfo.d.ts +4 -1
  84. package/lib/typescript/src/types/AdInfo.d.ts.map +1 -1
  85. package/lib/typescript/src/types/NativeAd.d.ts +114 -0
  86. package/lib/typescript/src/types/NativeAd.d.ts.map +1 -0
  87. package/lib/typescript/src/types/index.d.ts +2 -0
  88. package/lib/typescript/src/types/index.d.ts.map +1 -1
  89. package/lib/typescript/src/useCloudXSdkInitialization.d.ts +16 -0
  90. package/lib/typescript/src/useCloudXSdkInitialization.d.ts.map +1 -0
  91. package/lib/typescript/src/version.d.ts +1 -1
  92. package/package.json +1 -1
  93. package/src/CloudXAdViewBase.tsx +8 -125
  94. package/src/CloudXNativeAdView.tsx +419 -0
  95. package/src/CloudXNativeAdViewComponents.tsx +203 -0
  96. package/src/CloudXNativeAdViewProvider.tsx +149 -0
  97. package/src/extraParameters.ts +65 -0
  98. package/src/hooks.ts +38 -0
  99. package/src/index.ts +24 -0
  100. package/src/specs/CloudXNativeAdViewNativeComponent.ts +137 -0
  101. package/src/types/AdInfo.ts +5 -1
  102. package/src/types/NativeAd.ts +125 -0
  103. package/src/types/index.ts +7 -0
  104. package/src/useCloudXSdkInitialization.ts +73 -0
  105. package/src/version.ts +1 -1
@@ -0,0 +1,12 @@
1
+ //
2
+ // CloudXNativeAdViewManager.h
3
+ // cloudx-react-native
4
+ //
5
+ // Old-Architecture (Paper) view manager for the in-tree CloudXNativeAdView.
6
+ //
7
+
8
+ #import <React/RCTViewManager.h>
9
+
10
+ @interface CloudXNativeAdViewManager : RCTViewManager
11
+
12
+ @end
@@ -0,0 +1,119 @@
1
+ //
2
+ // CloudXNativeAdViewManager.mm
3
+ // cloudx-react-native
4
+ //
5
+
6
+ #import "CloudXNativeAdViewManager.h"
7
+ #import "CloudXNativeAdView.h"
8
+ #import <React/RCTUIManager.h>
9
+ #import <React/RCTBridge.h>
10
+
11
+ @implementation CloudXNativeAdViewManager
12
+
13
+ RCT_EXPORT_MODULE(CloudXNativeAdView)
14
+
15
+ RCT_EXPORT_VIEW_PROPERTY(templateName, NSString)
16
+ RCT_EXPORT_VIEW_PROPERTY(placement, NSString)
17
+ RCT_EXPORT_VIEW_PROPERTY(customData, NSString)
18
+ RCT_EXPORT_VIEW_PROPERTY(disableVideoFullScreen, BOOL)
19
+ RCT_EXPORT_VIEW_PROPERTY(startVideoUnmuted, BOOL)
20
+ RCT_EXPORT_VIEW_PROPERTY(hideVideoMediaControls, BOOL)
21
+ RCT_EXPORT_VIEW_PROPERTY(manualRender, BOOL)
22
+
23
+ // Guard against RCTConvert stringifying a JS null into the literal "<null>",
24
+ // which would otherwise create a loader for a garbage ad unit identifier.
25
+ RCT_CUSTOM_VIEW_PROPERTY(adUnitId, NSString, CloudXNativeAdView)
26
+ {
27
+ view.adUnitId = (json == nil || json == (id)[NSNull null]) ? nil : [RCTConvert NSString: json];
28
+ }
29
+
30
+ RCT_CUSTOM_VIEW_PROPERTY(extraParameters, NSArray, CloudXNativeAdView)
31
+ {
32
+ NSArray<NSDictionary<NSString *, id> *> *entries = [json isKindOfClass: [NSArray class]] ? json : nil;
33
+ [view setExtraParametersFromEntryArray: entries];
34
+ }
35
+
36
+ RCT_CUSTOM_VIEW_PROPERTY(localExtraParameters, NSArray, CloudXNativeAdView)
37
+ {
38
+ NSArray<NSDictionary<NSString *, id> *> *entries = [json isKindOfClass: [NSArray class]] ? json : nil;
39
+ [view setLocalExtraParametersFromEntryArray: entries];
40
+ }
41
+
42
+ // The JS-facing spec names this prop `templateName` (not `template`) because
43
+ // codegen emits a literal `std::string template` struct member on the
44
+ // Fabric props class, and `template` is a reserved word in C++. The Old
45
+ // Architecture is not governed by that generated struct, so it additionally
46
+ // accepts the legacy `template` name and aliases it to the same setter for
47
+ // publisher compatibility.
48
+ RCT_CUSTOM_VIEW_PROPERTY(template, NSString, CloudXNativeAdView)
49
+ {
50
+ view.templateName = (json == nil || json == (id)[NSNull null]) ? nil : [RCTConvert NSString: json];
51
+ }
52
+
53
+ RCT_EXPORT_VIEW_PROPERTY(onAdLoadedEvent, RCTDirectEventBlock)
54
+ RCT_EXPORT_VIEW_PROPERTY(onAdLoadFailedEvent, RCTDirectEventBlock)
55
+ RCT_EXPORT_VIEW_PROPERTY(onAdDisplayFailedEvent, RCTDirectEventBlock)
56
+ RCT_EXPORT_VIEW_PROPERTY(onAdClickedEvent, RCTDirectEventBlock)
57
+ RCT_EXPORT_VIEW_PROPERTY(onAdExpiredEvent, RCTDirectEventBlock)
58
+ RCT_EXPORT_VIEW_PROPERTY(onAdClosedEvent, RCTDirectEventBlock)
59
+ RCT_EXPORT_VIEW_PROPERTY(onAdRevenuePaidEvent, RCTDirectEventBlock)
60
+
61
+ + (BOOL)requiresMainQueueSetup
62
+ {
63
+ return YES;
64
+ }
65
+
66
+ - (UIView *)view
67
+ {
68
+ return [[CloudXNativeAdView alloc] init];
69
+ }
70
+
71
+ #pragma mark - Commands
72
+ //
73
+ // Dispatched to the same selectors CloudXNativeAdView exposes to the New
74
+ // Architecture's generated command protocol (RCTCloudXNativeAdViewViewProtocol),
75
+ // so both architectures share one implementation per command.
76
+
77
+ RCT_EXPORT_METHOD(loadAd:(nonnull NSNumber *)viewTag)
78
+ {
79
+ [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
80
+ UIView *view = viewRegistry[viewTag];
81
+ if ( ![view isKindOfClass: [CloudXNativeAdView class]] ) return;
82
+
83
+ [(CloudXNativeAdView *)view loadAd];
84
+ }];
85
+ }
86
+
87
+ RCT_EXPORT_METHOD(destroyAd:(nonnull NSNumber *)viewTag)
88
+ {
89
+ [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
90
+ UIView *view = viewRegistry[viewTag];
91
+ if ( ![view isKindOfClass: [CloudXNativeAdView class]] ) return;
92
+
93
+ [(CloudXNativeAdView *)view destroyAd];
94
+ }];
95
+ }
96
+
97
+ RCT_EXPORT_METHOD(updateAssetView:(nonnull NSNumber *)viewTag
98
+ assetViewTag:(nonnull NSNumber *)assetViewTag
99
+ assetViewName:(NSString *)assetViewName)
100
+ {
101
+ [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
102
+ UIView *view = viewRegistry[viewTag];
103
+ if ( ![view isKindOfClass: [CloudXNativeAdView class]] ) return;
104
+
105
+ [(CloudXNativeAdView *)view updateAssetView: assetViewTag.integerValue assetName: assetViewName];
106
+ }];
107
+ }
108
+
109
+ RCT_EXPORT_METHOD(renderNativeAd:(nonnull NSNumber *)viewTag)
110
+ {
111
+ [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
112
+ UIView *view = viewRegistry[viewTag];
113
+ if ( ![view isKindOfClass: [CloudXNativeAdView class]] ) return;
114
+
115
+ [(CloudXNativeAdView *)view renderNativeAd];
116
+ }];
117
+ }
118
+
119
+ @end
@@ -8,6 +8,8 @@ var _react = _interopRequireWildcard(require("react"));
8
8
  var _reactNative = require("react-native");
9
9
  var _CloudXAdViewNativeComponent = _interopRequireDefault(require("./specs/CloudXAdViewNativeComponent"));
10
10
  var _NativeCloudX = _interopRequireDefault(require("./specs/NativeCloudX"));
11
+ var _extraParameters = require("./extraParameters");
12
+ var _useCloudXSdkInitialization = require("./useCloudXSdkInitialization");
11
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
14
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
15
  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); }
@@ -42,14 +44,6 @@ const AD_SIZE = {
42
44
  * phone->leader; every later mount reads the resolved value synchronously.
43
45
  */
44
46
  let cachedIsTablet = null;
45
-
46
- /*
47
- * Once the SDK reports initialized it stays initialized for the JS VM's life,
48
- * so cache it module-wide: only the first ad view mounted before init has to
49
- * poll + show a placeholder; every later mount renders the native view
50
- * immediately. Mirrors cachedIsTablet above.
51
- */
52
- let cachedIsInitialized = false;
53
47
  const parseAdValues = json => {
54
48
  if (!json) {
55
49
  return {};
@@ -76,50 +70,6 @@ const toLoadFailedInfo = event => ({
76
70
  code: event.code,
77
71
  message: event.message || null
78
72
  });
79
- const warnIgnoredUndefinedExtraParameter = keyPath => {
80
- console.warn(`CloudXAdView ignored extra parameter "${keyPath}" because ` + 'undefined values are not supported. Use null when a value is intentional.');
81
- };
82
- const normalizeExtraParameterValue = (keyPath, value) => {
83
- if (value === undefined) {
84
- warnIgnoredUndefinedExtraParameter(keyPath);
85
- return undefined;
86
- }
87
- if (Array.isArray(value)) {
88
- return value.reduce((items, item, index) => {
89
- const normalized = normalizeExtraParameterValue(`${keyPath}[${index}]`, item);
90
- if (normalized !== undefined) {
91
- items.push(normalized);
92
- }
93
- return items;
94
- }, []);
95
- }
96
- if (value !== null && typeof value === 'object') {
97
- return Object.entries(value).reduce((object, [childKey, childValue]) => {
98
- const normalized = normalizeExtraParameterValue(`${keyPath}.${childKey}`, childValue);
99
- if (normalized !== undefined) {
100
- object[childKey] = normalized;
101
- }
102
- return object;
103
- }, {});
104
- }
105
- return value;
106
- };
107
- const toNativeExtraParameterEntries = extraParameters => {
108
- if (!extraParameters) {
109
- return [];
110
- }
111
- return Object.entries(extraParameters).reduce((entries, [key, value]) => {
112
- const normalizedValue = normalizeExtraParameterValue(key, value);
113
- if (normalizedValue === undefined) {
114
- return entries;
115
- }
116
- entries.push({
117
- key,
118
- value: normalizedValue
119
- });
120
- return entries;
121
- }, []);
122
- };
123
73
 
124
74
  /**
125
75
  * Shared implementation for the in-tree banner/MREC view component. Resolves a
@@ -155,51 +105,12 @@ const CloudXAdViewBase = ({
155
105
  * Gate native ad-view creation on SDK initialization. A view mounted before
156
106
  * CloudX.initialize() completes would create the ad against an uninitialized
157
107
  * SDK — on iOS createBannerWithAdUnitId: returns nil and the view is
158
- * permanently dead (no retry, no load-failed event). There is no init event
159
- * to subscribe to, so poll isInitialized() until ready, then mount the
160
- * native view (which is what delivers adUnitId/adFormat and triggers create).
161
- * Mirrors CloudXNativeAdView. Cached module-wide so only the first pre-init
162
- * mount pays the placeholder + poll.
108
+ * permanently dead (no retry, no load-failed event). Shared with
109
+ * CloudXNativeAdView via useCloudXSdkInitializationGate: cached module-wide
110
+ * so only the first pre-init mount across any ad-view type pays the
111
+ * placeholder + poll.
163
112
  */
164
- const [isInitialized, setIsInitialized] = (0, _react.useState)(cachedIsInitialized);
165
- (0, _react.useEffect)(() => {
166
- if (cachedIsInitialized) {
167
- return;
168
- }
169
- let cancelled = false;
170
- let timer;
171
- let warnedOnce = false;
172
- const check = () => {
173
- _NativeCloudX.default.isInitialized().then(ready => {
174
- if (cancelled) {
175
- return;
176
- }
177
- if (ready) {
178
- cachedIsInitialized = true;
179
- setIsInitialized(true);
180
- return;
181
- }
182
- if (!warnedOnce) {
183
- warnedOnce = true;
184
- console.warn('CloudXAdView mounted before CloudX SDK initialization; will render once initialize() completes.');
185
- }
186
- timer = setTimeout(check, 1000);
187
- }).catch(error => {
188
- if (cancelled) {
189
- return;
190
- }
191
- console.warn('CloudXAdView failed to read initialization state:', error);
192
- timer = setTimeout(check, 1000);
193
- });
194
- };
195
- check();
196
- return () => {
197
- cancelled = true;
198
- if (timer) {
199
- clearTimeout(timer);
200
- }
201
- };
202
- }, []);
113
+ const isInitialized = (0, _useCloudXSdkInitialization.useCloudXSdkInitializationGate)('CloudXAdView');
203
114
  (0, _react.useEffect)(() => {
204
115
  if (adFormat !== 'BANNER' || cachedIsTablet !== null) {
205
116
  return;
@@ -224,7 +135,7 @@ const CloudXAdViewBase = ({
224
135
  return isTablet ? AD_SIZE.leader : AD_SIZE.banner;
225
136
  }, [adFormat, isTablet]);
226
137
  const resolvedStyle = (0, _react.useMemo)(() => [defaultSize, style], [defaultSize, style]);
227
- const nativeExtraParameters = (0, _react.useMemo)(() => toNativeExtraParameterEntries(extraParameters), [extraParameters]);
138
+ const nativeExtraParameters = (0, _react.useMemo)(() => (0, _extraParameters.toNativeExtraParameterEntries)(extraParameters), [extraParameters]);
228
139
 
229
140
  // Until the SDK is initialized, render a sized placeholder that reserves the
230
141
  // ad slot's layout but does NOT mount the native view (so no pre-init
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_CloudXAdViewNativeComponent","_interopRequireDefault","_NativeCloudX","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_extends","assign","bind","arguments","length","apply","AD_SIZE","banner","width","height","leader","mrec","cachedIsTablet","cachedIsInitialized","parseAdValues","json","parsed","JSON","parse","toAdInfo","event","adUnitId","adFormat","networkName","networkPlacement","placement","creativeId","revenue","adValues","adValuesJson","toLoadFailedInfo","code","message","warnIgnoredUndefinedExtraParameter","keyPath","console","warn","normalizeExtraParameterValue","value","undefined","Array","isArray","reduce","items","item","index","normalized","push","entries","object","childKey","childValue","toNativeExtraParameterEntries","extraParameters","key","normalizedValue","CloudXAdViewBase","customData","onAdLoaded","onAdLoadFailed","onAdClicked","onAdRevenuePaid","style","viewProps","isTablet","setIsTablet","useState","nativeViewProps","onAdExpanded","onAdCollapsed","isInitialized","setIsInitialized","useEffect","cancelled","timer","warnedOnce","check","NativeCloudX","then","ready","setTimeout","catch","error","clearTimeout","tablet","defaultSize","useMemo","resolvedStyle","nativeExtraParameters","createElement","View","onAdLoadedEvent","nativeEvent","onAdLoadFailedEvent","onAdClickedEvent","onAdRevenuePaidEvent","exports"],"sourceRoot":"../../src","sources":["CloudXAdViewBase.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_CloudXAdViewNativeComponent","_interopRequireDefault","_NativeCloudX","_extraParameters","_useCloudXSdkInitialization","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_extends","assign","bind","arguments","length","apply","AD_SIZE","banner","width","height","leader","mrec","cachedIsTablet","parseAdValues","json","parsed","JSON","parse","toAdInfo","event","adUnitId","adFormat","networkName","networkPlacement","placement","creativeId","revenue","adValues","adValuesJson","toLoadFailedInfo","code","message","CloudXAdViewBase","customData","extraParameters","onAdLoaded","onAdLoadFailed","onAdClicked","onAdRevenuePaid","style","viewProps","isTablet","setIsTablet","useState","nativeViewProps","onAdExpanded","onAdCollapsed","isInitialized","useCloudXSdkInitializationGate","useEffect","cancelled","NativeCloudX","then","tablet","catch","defaultSize","useMemo","resolvedStyle","nativeExtraParameters","toNativeExtraParameterEntries","createElement","View","onAdLoadedEvent","nativeEvent","onAdLoadFailedEvent","onAdClickedEvent","onAdRevenuePaidEvent","exports"],"sourceRoot":"../../src","sources":["CloudXAdViewBase.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,4BAAA,GAAAC,sBAAA,CAAAH,OAAA;AAEA,IAAAI,aAAA,GAAAD,sBAAA,CAAAH,OAAA;AAIA,IAAAK,gBAAA,GAAAL,OAAA;AACA,IAAAM,2BAAA,GAAAN,OAAA;AAA8E,SAAAG,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAR,wBAAAQ,CAAA,EAAAG,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAZ,uBAAA,YAAAA,CAAAQ,CAAA,EAAAG,CAAA,SAAAA,CAAA,IAAAH,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,MAAAO,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAR,OAAA,EAAAF,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAS,CAAA,MAAAF,CAAA,GAAAJ,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAE,CAAA,CAAAI,GAAA,CAAAX,CAAA,UAAAO,CAAA,CAAAK,GAAA,CAAAZ,CAAA,GAAAO,CAAA,CAAAM,GAAA,CAAAb,CAAA,EAAAS,CAAA,gBAAAN,CAAA,IAAAH,CAAA,gBAAAG,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAG,CAAA,OAAAK,CAAA,IAAAD,CAAA,GAAAS,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAG,CAAA,OAAAK,CAAA,CAAAI,GAAA,IAAAJ,CAAA,CAAAK,GAAA,IAAAN,CAAA,CAAAE,CAAA,EAAAN,CAAA,EAAAK,CAAA,IAAAC,CAAA,CAAAN,CAAA,IAAAH,CAAA,CAAAG,CAAA,WAAAM,CAAA,KAAAT,CAAA,EAAAG,CAAA;AAAA,SAAAgB,SAAA,WAAAA,QAAA,GAAAH,MAAA,CAAAI,MAAA,GAAAJ,MAAA,CAAAI,MAAA,CAAAC,IAAA,eAAAf,CAAA,aAAAN,CAAA,MAAAA,CAAA,GAAAsB,SAAA,CAAAC,MAAA,EAAAvB,CAAA,UAAAG,CAAA,GAAAmB,SAAA,CAAAtB,CAAA,YAAAK,CAAA,IAAAF,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAZ,CAAA,EAAAE,CAAA,MAAAC,CAAA,CAAAD,CAAA,IAAAF,CAAA,CAAAE,CAAA,aAAAC,CAAA,KAAAa,QAAA,CAAAK,KAAA,OAAAF,SAAA;AAE9E;AACA;AACA;;AAGA;AACA;AACA;;AAGA;;AAKA,MAAMG,OAAO,GAAG;EACZC,MAAM,EAAE;IAAEC,KAAK,EAAE,GAAG;IAAEC,MAAM,EAAE;EAAG,CAAC;EAClCC,MAAM,EAAE;IAAEF,KAAK,EAAE,GAAG;IAAEC,MAAM,EAAE;EAAG,CAAC;EAClCE,IAAI,EAAE;IAAEH,KAAK,EAAE,GAAG;IAAEC,MAAM,EAAE;EAAI;AACpC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,IAAIG,cAA8B,GAAG,IAAI;AAEzC,MAAMC,aAAa,GAAIC,IAAoB,IAA6B;EACpE,IAAI,CAACA,IAAI,EAAE;IACP,OAAO,CAAC,CAAC;EACb;EACA,IAAI;IACA,MAAMC,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACH,IAAI,CAAC;IAC/B,OAAOC,MAAM,IAAI,OAAOA,MAAM,KAAK,QAAQ,GAAGA,MAAM,GAAG,CAAC,CAAC;EAC7D,CAAC,CAAC,MAAM;IACJ,OAAO,CAAC,CAAC;EACb;AACJ,CAAC;AAED,MAAMG,QAAQ,GAAIC,KAAwB,KAAoB;EAC1DC,QAAQ,EAAED,KAAK,CAACC,QAAQ;EACxBC,QAAQ,EAAEF,KAAK,CAACE,QAAQ;EACxBC,WAAW,EAAEH,KAAK,CAACG,WAAW;EAC9BC,gBAAgB,EAAEJ,KAAK,CAACI,gBAAgB,IAAI,IAAI;EAChDC,SAAS,EAAEL,KAAK,CAACK,SAAS,IAAI,IAAI;EAClCC,UAAU,EAAEN,KAAK,CAACM,UAAU,IAAI,IAAI;EACpCC,OAAO,EAAEP,KAAK,CAACO,OAAO,IAAI,CAAC;EAC3BC,QAAQ,EAAEd,aAAa,CAACM,KAAK,CAACS,YAAY;AAC9C,CAAC,CAAC;AAEF,MAAMC,gBAAgB,GAAIV,KAA8B,KAA8B;EAClFC,QAAQ,EAAED,KAAK,CAACC,QAAQ;EACxBU,IAAI,EAAEX,KAAK,CAACW,IAAuB;EACnCC,OAAO,EAAEZ,KAAK,CAACY,OAAO,IAAI;AAC9B,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,gBAAiD,GAAGA,CAAC;EAC9DX,QAAQ;EACRD,QAAQ;EACRI,SAAS;EACTS,UAAU;EACVC,eAAe;EACfC,UAAU;EACVC,cAAc;EACdC,WAAW;EACXC,eAAe;EACfC,KAAK;EACL,GAAGC;AACP,CAAC,KAAK;EACF,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAG,IAAAC,eAAQ,EAAC/B,cAAc,IAAI,KAAK,CAAC;EACjE,MAAMgC,eAAe,GAAG;IAAE,GAAGJ;EAAU,CAGtC;EACD,OAAOI,eAAe,CAACC,YAAY;EACnC,OAAOD,eAAe,CAACE,aAAa;;EAEpC;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI,MAAMC,aAAa,GAAG,IAAAC,0DAA8B,EAAC,cAAc,CAAC;EAEpE,IAAAC,gBAAS,EAAC,MAAM;IACZ,IAAI5B,QAAQ,KAAK,QAAQ,IAAIT,cAAc,KAAK,IAAI,EAAE;MAClD;IACJ;IACA,IAAIsC,SAAS,GAAG,KAAK;IACrBC,qBAAY,CAACV,QAAQ,CAAC,CAAC,CAClBW,IAAI,CAAEC,MAAM,IAAK;MACdzC,cAAc,GAAGyC,MAAM;MACvB,IAAI,CAACH,SAAS,EAAE;QACZR,WAAW,CAACW,MAAM,CAAC;MACvB;IACJ,CAAC,CAAC,CACDC,KAAK,CAAC,MAAM;MACT;IAAA,CACH,CAAC;IACN,OAAO,MAAM;MACTJ,SAAS,GAAG,IAAI;IACpB,CAAC;EACL,CAAC,EAAE,CAAC7B,QAAQ,CAAC,CAAC;EAEd,MAAMkC,WAAW,GAAG,IAAAC,cAAO,EAAY,MAAM;IACzC,IAAInC,QAAQ,KAAK,MAAM,EAAE;MACrB,OAAOf,OAAO,CAACK,IAAI;IACvB;IACA,OAAO8B,QAAQ,GAAGnC,OAAO,CAACI,MAAM,GAAGJ,OAAO,CAACC,MAAM;EACrD,CAAC,EAAE,CAACc,QAAQ,EAAEoB,QAAQ,CAAC,CAAC;EAExB,MAAMgB,aAAa,GAAG,IAAAD,cAAO,EACzB,MAAM,CAACD,WAAW,EAAEhB,KAAK,CAAC,EAC1B,CAACgB,WAAW,EAAEhB,KAAK,CACvB,CAAC;EACD,MAAMmB,qBAAqB,GAAG,IAAAF,cAAO,EACjC,MAAM,IAAAG,8CAA6B,EAACzB,eAAe,CAAC,EACpD,CAACA,eAAe,CACpB,CAAC;;EAED;EACA;EACA;EACA,IAAI,CAACa,aAAa,EAAE;IAChB,oBAAO3E,MAAA,CAAAW,OAAA,CAAA6E,aAAA,CAACrF,YAAA,CAAAsF,IAAI,EAAA7D,QAAA;MAACuC,KAAK,EAAEkB;IAAc,GAAKb,eAAe,CAAG,CAAC;EAC9D;EAEA,oBACIxE,MAAA,CAAAW,OAAA,CAAA6E,aAAA,CAACpF,4BAAA,CAAAO,OAAkB,EAAAiB,QAAA,KACX4C,eAAe;IACnBL,KAAK,EAAEkB,aAAc;IACrBrC,QAAQ,EAAEA,QAAS;IACnBC,QAAQ,EAAEA,QAAS;IACnBG,SAAS,EAAEA,SAAS,IAAI,IAAK;IAC7BS,UAAU,EAAEA,UAAU,IAAI,IAAK;IAC/BC,eAAe,EAAEwB,qBAAsB;IACvCI,eAAe,EAAGjF,CAA0C,IACxDsD,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAGjB,QAAQ,CAACrC,CAAC,CAACkF,WAAW,CAAC,CACvC;IACDC,mBAAmB,EAAGnF,CAAgD,IAClEuD,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAGP,gBAAgB,CAAChD,CAAC,CAACkF,WAAW,CAAC,CACnD;IACDE,gBAAgB,EAAGpF,CAA0C,IACzDwD,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAGnB,QAAQ,CAACrC,CAAC,CAACkF,WAAW,CAAC,CACxC;IACDG,oBAAoB,EAAGrF,CAA0C,IAC7DyD,eAAe,aAAfA,eAAe,uBAAfA,eAAe,CAAGpB,QAAQ,CAACrC,CAAC,CAACkF,WAAW,CAAC;EAC5C,EACJ,CAAC;AAEV,CAAC;AAACI,OAAA,CAAAnC,gBAAA,GAAAA,gBAAA","ignoreList":[]}
@@ -0,0 +1,331 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.CloudXNativeAdView = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var React = _react;
9
+ var _reactNative = require("react-native");
10
+ var _CloudXNativeAdViewNativeComponent = _interopRequireWildcard(require("./specs/CloudXNativeAdViewNativeComponent"));
11
+ var _extraParameters = require("./extraParameters");
12
+ var _NativeAd = require("./types/NativeAd");
13
+ var _CloudXNativeAdViewProvider = require("./CloudXNativeAdViewProvider");
14
+ var _useCloudXSdkInitialization = require("./useCloudXSdkInitialization");
15
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
16
+ 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); }
17
+ const parseAdValues = json => {
18
+ if (!json) {
19
+ return {};
20
+ }
21
+ try {
22
+ const parsed = JSON.parse(json);
23
+ return parsed && typeof parsed === 'object' ? parsed : {};
24
+ } catch {
25
+ return {};
26
+ }
27
+ };
28
+ const parseNativeAdMetadata = json => {
29
+ if (!json) {
30
+ return null;
31
+ }
32
+ try {
33
+ const parsed = JSON.parse(json);
34
+ return parsed && typeof parsed === 'object' ? parsed : null;
35
+ } catch {
36
+ return null;
37
+ }
38
+ };
39
+ const toAdInfo = event => {
40
+ const nativeAd = parseNativeAdMetadata(event.nativeAdJson);
41
+ return {
42
+ adUnitId: event.adUnitId,
43
+ adFormat: event.adFormat,
44
+ networkName: event.networkName,
45
+ networkPlacement: event.networkPlacement || null,
46
+ placement: event.placement || null,
47
+ creativeId: event.creativeId || null,
48
+ revenue: event.revenue ?? 0,
49
+ adValues: parseAdValues(event.adValuesJson),
50
+ nativeAd
51
+ };
52
+ };
53
+ const toLoadFailedInfo = event => ({
54
+ adUnitId: event.adUnitId,
55
+ code: event.code,
56
+ message: event.message || null
57
+ });
58
+
59
+ /**
60
+ * Renders a native ad. Defaults to the SDK's bundled template layouts;
61
+ * set `renderMode="manual"` to drive layout through the pre-built asset
62
+ * components (`CloudXTitleView`, `CloudXMediaView`, etc.) instead.
63
+ *
64
+ * Manual mode is never inferred from the presence of children — `renderMode`
65
+ * is always explicit so a publisher's intent is visible at the call site.
66
+ */
67
+ const CloudXNativeAdView = exports.CloudXNativeAdView = /*#__PURE__*/(0, _react.forwardRef)(function CloudXNativeAdView(props, ref) {
68
+ const {
69
+ renderMode = 'template',
70
+ style,
71
+ testID,
72
+ children
73
+ } = props;
74
+
75
+ /*
76
+ * Gate native ad-view creation on SDK initialization; shared with
77
+ * CloudXAdViewBase (banner/MREC) via useCloudXSdkInitializationGate.
78
+ * See that hook for why polling (rather than an init event) is
79
+ * required.
80
+ */
81
+ const isInitialized = (0, _useCloudXSdkInitialization.useCloudXSdkInitializationGate)('CloudXNativeAdView');
82
+
83
+ // Dev-only guard: an asset component (CloudXTitleView, etc.) mounted
84
+ // while renderMode is 'template' silently does nothing on the native
85
+ // side, which is almost always a publisher forgetting to set
86
+ // renderMode="manual". Warn once per host instance.
87
+ const warnedAssetInTemplateMode = (0, _react.useRef)(false);
88
+ const handleAssetRoleRegistered = (0, _react.useCallback)(role => {
89
+ if (renderMode !== 'template' || warnedAssetInTemplateMode.current) {
90
+ return;
91
+ }
92
+ warnedAssetInTemplateMode.current = true;
93
+ console.warn(`CloudXNativeAdView: <${role}/> is a manual-render asset component, but this ` + 'CloudXNativeAdView has renderMode="template" (the default). Set renderMode="manual" ' + 'to bind asset views, or remove the child to use the bundled template layout.');
94
+ }, [renderMode]);
95
+ if (!isInitialized) {
96
+ // Preserve children + view-safe props so a manual layout's asset
97
+ // views mount and reserve their space before the SDK is ready.
98
+ // The imperative ref is NOT forwarded here — it stays unset until
99
+ // the native view mounts, so callers can't dispatch
100
+ // loadAd/destroyAd at a placeholder.
101
+ return /*#__PURE__*/React.createElement(_CloudXNativeAdViewProvider.CloudXNativeAdViewProvider, {
102
+ onAssetRoleRegistered: handleAssetRoleRegistered
103
+ }, /*#__PURE__*/React.createElement(_reactNative.View, {
104
+ style: style,
105
+ testID: testID
106
+ }, children));
107
+ }
108
+ return /*#__PURE__*/React.createElement(_CloudXNativeAdViewProvider.CloudXNativeAdViewProvider, {
109
+ onAssetRoleRegistered: handleAssetRoleRegistered
110
+ }, /*#__PURE__*/React.createElement(CloudXNativeAdViewImpl, _extends({}, props, {
111
+ ref: ref
112
+ })));
113
+ });
114
+ var _default = exports.default = CloudXNativeAdView;
115
+ const CloudXNativeAdViewImpl = /*#__PURE__*/(0, _react.forwardRef)(function CloudXNativeAdViewImpl(props, ref) {
116
+ const {
117
+ adUnitId,
118
+ placement,
119
+ customData,
120
+ template,
121
+ disableVideoFullScreen,
122
+ startVideoUnmuted,
123
+ hideVideoMediaControls,
124
+ extraParameters,
125
+ localExtraParameters,
126
+ renderMode = 'template',
127
+ onAdLoaded,
128
+ onAdLoadFailed,
129
+ onAdDisplayFailed,
130
+ onAdClicked,
131
+ onAdExpired,
132
+ onAdClosed,
133
+ onAdRevenuePaid,
134
+ style,
135
+ testID,
136
+ children,
137
+ ...rest
138
+ } = props;
139
+ const isManual = renderMode === 'manual';
140
+ const {
141
+ setNativeAd,
142
+ titleRef,
143
+ advertiserRef,
144
+ bodyRef,
145
+ callToActionRef,
146
+ iconRef,
147
+ optionsRef,
148
+ mediaRef,
149
+ starRatingRef,
150
+ mountedAssetRoles
151
+ } = (0, _react.useContext)(_CloudXNativeAdViewProvider.CloudXNativeAdViewContext);
152
+ const nativeRef = (0, _react.useRef)(null);
153
+ const pendingMetadata = (0, _react.useRef)(null);
154
+ // Cache of the last successfully loaded ad, used to backfill the
155
+ // CloudXAdInfo fields onAdDisplayFailedEvent doesn't carry (the
156
+ // native event is a bare {adUnitId, code, message} — a display
157
+ // failure always follows a prior load of the same ad).
158
+ const lastAdInfoRef = (0, _react.useRef)(null);
159
+ const [bindTick, setBindTick] = (0, _react.useState)(0);
160
+ const loadAd = (0, _react.useCallback)(() => {
161
+ if (nativeRef.current) {
162
+ _CloudXNativeAdViewNativeComponent.Commands.loadAd(nativeRef.current);
163
+ }
164
+ }, []);
165
+ const destroyAd = (0, _react.useCallback)(() => {
166
+ if (nativeRef.current) {
167
+ _CloudXNativeAdViewNativeComponent.Commands.destroyAd(nativeRef.current);
168
+ }
169
+ // Clear the shared metadata so asset components stop rendering the
170
+ // destroyed ad's content and a subsequent load starts clean.
171
+ pendingMetadata.current = null;
172
+ lastAdInfoRef.current = null;
173
+ setNativeAd(null);
174
+ }, [setNativeAd]);
175
+
176
+ /**
177
+ * Escape hatch for imperative control. The native view auto-loads on
178
+ * attach and tears down its native ad on unmount; most integrations
179
+ * never need this ref. Primary lifecycle is still mount/props/unmount.
180
+ *
181
+ * `loadAd()` does NOT force a new auction. Both native SDKs re-serve the
182
+ * ad they already hold while it is neither expired nor destroyed —
183
+ * including after its impression — so changed targeting is not picked
184
+ * up. Call `destroyAd()` first to get a genuinely fresh ad.
185
+ */
186
+ (0, _react.useImperativeHandle)(ref, () => ({
187
+ loadAd,
188
+ destroyAd
189
+ }), [loadAd, destroyAd]);
190
+ const nativeExtraParameters = (0, _react.useMemo)(() => (0, _extraParameters.toNativeExtraParameterEntries)(extraParameters), [extraParameters]);
191
+ const nativeLocalExtraParameters = (0, _react.useMemo)(() => (0, _extraParameters.toNativeExtraParameterEntries)(localExtraParameters), [localExtraParameters]);
192
+ const bindAssetView = (0, _react.useCallback)((assetRef, assetName) => {
193
+ if (!nativeRef.current || !(assetRef !== null && assetRef !== void 0 && assetRef.current)) return false;
194
+ const assetTag = (0, _reactNative.findNodeHandle)(assetRef.current);
195
+ if (assetTag == null) return false;
196
+ _CloudXNativeAdViewNativeComponent.Commands.updateAssetView(nativeRef.current, assetTag, assetName);
197
+ return true;
198
+ }, []);
199
+ const handleAdLoaded = (0, _react.useCallback)(event => {
200
+ const adInfo = toAdInfo(event.nativeEvent);
201
+ lastAdInfoRef.current = adInfo;
202
+ if (isManual && adInfo.nativeAd) {
203
+ pendingMetadata.current = adInfo.nativeAd;
204
+ setNativeAd(adInfo.nativeAd);
205
+ setBindTick(n => n + 1);
206
+ }
207
+ onAdLoaded === null || onAdLoaded === void 0 || onAdLoaded(adInfo);
208
+ }, [isManual, setNativeAd, onAdLoaded]);
209
+ const handleAdLoadFailed = (0, _react.useCallback)(event => {
210
+ onAdLoadFailed === null || onAdLoadFailed === void 0 || onAdLoadFailed(toLoadFailedInfo(event.nativeEvent));
211
+ }, [onAdLoadFailed]);
212
+ const handleAdDisplayFailed = (0, _react.useCallback)(event => {
213
+ if (!onAdDisplayFailed) return;
214
+ const {
215
+ adUnitId: failedAdUnitId,
216
+ code,
217
+ message
218
+ } = event.nativeEvent;
219
+ // The cached ad info is only a valid description of this
220
+ // failure if it describes the ad unit that actually failed. A
221
+ // display failure arriving after a re-target would otherwise
222
+ // report the previous unit's network, placement and revenue.
223
+ const cached = lastAdInfoRef.current;
224
+ const base = cached && cached.adUnitId === failedAdUnitId ? cached : null;
225
+ const displayFailedInfo = {
226
+ // The event's own adUnitId is authoritative.
227
+ adUnitId: failedAdUnitId || (base === null || base === void 0 ? void 0 : base.adUnitId) || '',
228
+ adFormat: (base === null || base === void 0 ? void 0 : base.adFormat) ?? 'NATIVE',
229
+ networkName: (base === null || base === void 0 ? void 0 : base.networkName) ?? '',
230
+ networkPlacement: (base === null || base === void 0 ? void 0 : base.networkPlacement) ?? null,
231
+ placement: (base === null || base === void 0 ? void 0 : base.placement) ?? null,
232
+ revenue: (base === null || base === void 0 ? void 0 : base.revenue) ?? 0,
233
+ adValues: (base === null || base === void 0 ? void 0 : base.adValues) ?? {},
234
+ nativeAd: (base === null || base === void 0 ? void 0 : base.nativeAd) ?? null,
235
+ code: code,
236
+ message: message || null
237
+ };
238
+ onAdDisplayFailed(displayFailedInfo);
239
+ }, [onAdDisplayFailed]);
240
+ const handleAdClicked = (0, _react.useCallback)(event => onAdClicked === null || onAdClicked === void 0 ? void 0 : onAdClicked(toAdInfo(event.nativeEvent)), [onAdClicked]);
241
+ const handleAdExpired = (0, _react.useCallback)(event => onAdExpired === null || onAdExpired === void 0 ? void 0 : onAdExpired(toAdInfo(event.nativeEvent)), [onAdExpired]);
242
+ const handleAdClosed = (0, _react.useCallback)(event => onAdClosed === null || onAdClosed === void 0 ? void 0 : onAdClosed(toAdInfo(event.nativeEvent)), [onAdClosed]);
243
+ const handleAdRevenuePaid = (0, _react.useCallback)(event => onAdRevenuePaid === null || onAdRevenuePaid === void 0 ? void 0 : onAdRevenuePaid(toAdInfo(event.nativeEvent)), [onAdRevenuePaid]);
244
+ (0, _react.useEffect)(() => {
245
+ if (!isManual || bindTick === 0) return;
246
+ const metadata = pendingMetadata.current;
247
+ if (!metadata) return;
248
+ const iconAvailable = metadata.isIconImageAvailable;
249
+ const plan = [[titleRef, _NativeAd.CloudXNativeAssetType.TITLE, Boolean(metadata.title)], [advertiserRef, _NativeAd.CloudXNativeAssetType.ADVERTISER, Boolean(metadata.advertiser)], [bodyRef, _NativeAd.CloudXNativeAssetType.BODY, Boolean(metadata.body)], [callToActionRef, _NativeAd.CloudXNativeAssetType.CALL_TO_ACTION, Boolean(metadata.callToAction)], [iconRef, _NativeAd.CloudXNativeAssetType.ICON, iconAvailable], [optionsRef, _NativeAd.CloudXNativeAssetType.OPTIONS, metadata.isOptionsViewAvailable], [mediaRef, _NativeAd.CloudXNativeAssetType.MEDIA, metadata.isMediaViewAvailable], [starRatingRef, _NativeAd.CloudXNativeAssetType.STAR_RATING, metadata.starRating != null && metadata.starRating > 0]];
250
+
251
+ // Asset refs mount asynchronously: components render from context
252
+ // state that was just set, so on the first frame after onAdLoaded
253
+ // some refs may still be null. Retry binding across a few frames
254
+ // and only dispatch renderNativeAd (which registers click +
255
+ // impression tracking) once every wanted asset is bound — or,
256
+ // after exhausting retries, render with what did bind and warn.
257
+ const MAX_BIND_ATTEMPTS = 10;
258
+ let cancelled = false;
259
+ // Track every retry timer so unmount can cancel the chain instead
260
+ // of leaving fire-and-forget timers that dispatch commands at a
261
+ // recycled or unmounted view tag.
262
+ const pendingTimers = new Set();
263
+ const scheduleRetry = fn => {
264
+ const timer = setTimeout(fn, 16);
265
+ pendingTimers.add(timer);
266
+ };
267
+ const attemptBind = (attempt, remaining) => {
268
+ if (cancelled || pendingMetadata.current == null) return;
269
+ if (!nativeRef.current) {
270
+ if (attempt < MAX_BIND_ATTEMPTS) {
271
+ scheduleRetry(() => attemptBind(attempt + 1, remaining));
272
+ }
273
+ return;
274
+ }
275
+ for (const [assetRef, assetName, wanted] of plan) {
276
+ if (!wanted || !remaining.has(assetName)) continue;
277
+ if (bindAssetView(assetRef, assetName)) {
278
+ remaining.delete(assetName);
279
+ }
280
+ }
281
+ if (remaining.size > 0 && attempt < MAX_BIND_ATTEMPTS) {
282
+ scheduleRetry(() => attemptBind(attempt + 1, remaining));
283
+ return;
284
+ }
285
+ if (remaining.size > 0) {
286
+ console.warn(`CloudXNativeAdView: asset view(s) never mounted for binding: ${[...remaining].join(', ')}. ` + 'Rendering with the bound subset; click/impression tracking may be incomplete.');
287
+ }
288
+ _CloudXNativeAdViewNativeComponent.Commands.renderNativeAd(nativeRef.current);
289
+ };
290
+
291
+ // An asset is only worth waiting for when the ad carries it AND the
292
+ // publisher mounted its component. Waiting on the ad's asset set
293
+ // alone made every layout that omits an optional component (an ad
294
+ // with an advertiser rendered by a layout with no
295
+ // CloudXAdvertiserView, say) burn all MAX_BIND_ATTEMPTS retries
296
+ // before dispatching renderNativeAd, delaying impression and click
297
+ // registration, and warn about it on every such ad.
298
+ const wanted = new Set(plan.filter(([, name, w]) => w && mountedAssetRoles.current.has(`CloudX${name}`)).map(([, name]) => name));
299
+ attemptBind(1, wanted);
300
+ return () => {
301
+ cancelled = true;
302
+ pendingTimers.forEach(timer => clearTimeout(timer));
303
+ pendingTimers.clear();
304
+ };
305
+ }, [bindTick, isManual, bindAssetView, titleRef, advertiserRef, bodyRef, callToActionRef, iconRef, optionsRef, mediaRef, starRatingRef, mountedAssetRoles]);
306
+ return /*#__PURE__*/React.createElement(_CloudXNativeAdViewNativeComponent.default, _extends({}, rest, {
307
+ ref: r => {
308
+ nativeRef.current = r;
309
+ },
310
+ adUnitId: adUnitId,
311
+ templateName: template,
312
+ placement: placement ?? null,
313
+ customData: customData ?? null,
314
+ disableVideoFullScreen: disableVideoFullScreen,
315
+ startVideoUnmuted: startVideoUnmuted,
316
+ hideVideoMediaControls: hideVideoMediaControls,
317
+ extraParameters: nativeExtraParameters,
318
+ localExtraParameters: nativeLocalExtraParameters,
319
+ manualRender: isManual,
320
+ onAdLoadedEvent: handleAdLoaded,
321
+ onAdLoadFailedEvent: handleAdLoadFailed,
322
+ onAdDisplayFailedEvent: handleAdDisplayFailed,
323
+ onAdClickedEvent: handleAdClicked,
324
+ onAdExpiredEvent: handleAdExpired,
325
+ onAdClosedEvent: handleAdClosed,
326
+ onAdRevenuePaidEvent: handleAdRevenuePaid,
327
+ style: style,
328
+ testID: testID
329
+ }), children);
330
+ });
331
+ //# sourceMappingURL=CloudXNativeAdView.js.map