@vynix-org/react-native-ads-sdk 0.1.1

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 (128) hide show
  1. package/AdsSdk.podspec +52 -0
  2. package/LICENSE +20 -0
  3. package/README.md +95 -0
  4. package/android/build.gradle +108 -0
  5. package/android/gradle.properties +5 -0
  6. package/android/src/main/AndroidManifest.xml +5 -0
  7. package/android/src/main/java/com/adssdk/AdsSdkModule.kt +23 -0
  8. package/android/src/main/java/com/adssdk/AdsSdkPackage.kt +33 -0
  9. package/ios/AdsSdk.h +5 -0
  10. package/ios/AdsSdk.mm +18 -0
  11. package/lib/module/ads-manager/AppOpenAdsManager.js +131 -0
  12. package/lib/module/ads-manager/AppOpenAdsManager.js.map +1 -0
  13. package/lib/module/ads-manager/GoogleMobileAdsManager.js +62 -0
  14. package/lib/module/ads-manager/GoogleMobileAdsManager.js.map +1 -0
  15. package/lib/module/ads-manager/InterstitialAdsManager.js +291 -0
  16. package/lib/module/ads-manager/InterstitialAdsManager.js.map +1 -0
  17. package/lib/module/ads-manager/NativeAdsManager.js +405 -0
  18. package/lib/module/ads-manager/NativeAdsManager.js.map +1 -0
  19. package/lib/module/ads-manager/RewardedAdsManager.js +328 -0
  20. package/lib/module/ads-manager/RewardedAdsManager.js.map +1 -0
  21. package/lib/module/ads-manager/RewardedInterstitialAdsManager.js +328 -0
  22. package/lib/module/ads-manager/RewardedInterstitialAdsManager.js.map +1 -0
  23. package/lib/module/components/BannerAdComponent.js +159 -0
  24. package/lib/module/components/BannerAdComponent.js.map +1 -0
  25. package/lib/module/components/FullscreenStyles.js +162 -0
  26. package/lib/module/components/FullscreenStyles.js.map +1 -0
  27. package/lib/module/components/NativeAdComponent.js +172 -0
  28. package/lib/module/components/NativeAdComponent.js.map +1 -0
  29. package/lib/module/components/NativeAdFullscreenComponent.js +205 -0
  30. package/lib/module/components/NativeAdFullscreenComponent.js.map +1 -0
  31. package/lib/module/components/NativeStyles.js +143 -0
  32. package/lib/module/components/NativeStyles.js.map +1 -0
  33. package/lib/module/event/custom-event.js +29 -0
  34. package/lib/module/event/custom-event.js.map +1 -0
  35. package/lib/module/hook/useAppOpenAd.js +138 -0
  36. package/lib/module/hook/useAppOpenAd.js.map +1 -0
  37. package/lib/module/hook/useInterstitialAd.js +157 -0
  38. package/lib/module/hook/useInterstitialAd.js.map +1 -0
  39. package/lib/module/hook/useNativeAd.js +147 -0
  40. package/lib/module/hook/useNativeAd.js.map +1 -0
  41. package/lib/module/hook/useRewardedAd.js +166 -0
  42. package/lib/module/hook/useRewardedAd.js.map +1 -0
  43. package/lib/module/hook/useRewardedInterstitialAd.js +166 -0
  44. package/lib/module/hook/useRewardedInterstitialAd.js.map +1 -0
  45. package/lib/module/index.js +14 -0
  46. package/lib/module/index.js.map +1 -0
  47. package/lib/module/package.json +1 -0
  48. package/lib/module/stores/interstitial-ads-store.js +205 -0
  49. package/lib/module/stores/interstitial-ads-store.js.map +1 -0
  50. package/lib/module/stores/native-ads-store.js +204 -0
  51. package/lib/module/stores/native-ads-store.js.map +1 -0
  52. package/lib/module/stores/rewarded-ads-store.js +216 -0
  53. package/lib/module/stores/rewarded-ads-store.js.map +1 -0
  54. package/lib/module/stores/rewarded-interstitial-ads-store.js +216 -0
  55. package/lib/module/stores/rewarded-interstitial-ads-store.js.map +1 -0
  56. package/lib/module/types/ads-types.js +25 -0
  57. package/lib/module/types/ads-types.js.map +1 -0
  58. package/lib/typescript/package.json +1 -0
  59. package/lib/typescript/src/ads-manager/AppOpenAdsManager.d.ts +38 -0
  60. package/lib/typescript/src/ads-manager/AppOpenAdsManager.d.ts.map +1 -0
  61. package/lib/typescript/src/ads-manager/GoogleMobileAdsManager.d.ts +22 -0
  62. package/lib/typescript/src/ads-manager/GoogleMobileAdsManager.d.ts.map +1 -0
  63. package/lib/typescript/src/ads-manager/InterstitialAdsManager.d.ts +22 -0
  64. package/lib/typescript/src/ads-manager/InterstitialAdsManager.d.ts.map +1 -0
  65. package/lib/typescript/src/ads-manager/NativeAdsManager.d.ts +59 -0
  66. package/lib/typescript/src/ads-manager/NativeAdsManager.d.ts.map +1 -0
  67. package/lib/typescript/src/ads-manager/RewardedAdsManager.d.ts +25 -0
  68. package/lib/typescript/src/ads-manager/RewardedAdsManager.d.ts.map +1 -0
  69. package/lib/typescript/src/ads-manager/RewardedInterstitialAdsManager.d.ts +25 -0
  70. package/lib/typescript/src/ads-manager/RewardedInterstitialAdsManager.d.ts.map +1 -0
  71. package/lib/typescript/src/components/BannerAdComponent.d.ts +22 -0
  72. package/lib/typescript/src/components/BannerAdComponent.d.ts.map +1 -0
  73. package/lib/typescript/src/components/FullscreenStyles.d.ts +155 -0
  74. package/lib/typescript/src/components/FullscreenStyles.d.ts.map +1 -0
  75. package/lib/typescript/src/components/NativeAdComponent.d.ts +24 -0
  76. package/lib/typescript/src/components/NativeAdComponent.d.ts.map +1 -0
  77. package/lib/typescript/src/components/NativeAdFullscreenComponent.d.ts +26 -0
  78. package/lib/typescript/src/components/NativeAdFullscreenComponent.d.ts.map +1 -0
  79. package/lib/typescript/src/components/NativeStyles.d.ts +139 -0
  80. package/lib/typescript/src/components/NativeStyles.d.ts.map +1 -0
  81. package/lib/typescript/src/event/custom-event.d.ts +8 -0
  82. package/lib/typescript/src/event/custom-event.d.ts.map +1 -0
  83. package/lib/typescript/src/hook/useAppOpenAd.d.ts +19 -0
  84. package/lib/typescript/src/hook/useAppOpenAd.d.ts.map +1 -0
  85. package/lib/typescript/src/hook/useInterstitialAd.d.ts +20 -0
  86. package/lib/typescript/src/hook/useInterstitialAd.d.ts.map +1 -0
  87. package/lib/typescript/src/hook/useNativeAd.d.ts +20 -0
  88. package/lib/typescript/src/hook/useNativeAd.d.ts.map +1 -0
  89. package/lib/typescript/src/hook/useRewardedAd.d.ts +27 -0
  90. package/lib/typescript/src/hook/useRewardedAd.d.ts.map +1 -0
  91. package/lib/typescript/src/hook/useRewardedInterstitialAd.d.ts +27 -0
  92. package/lib/typescript/src/hook/useRewardedInterstitialAd.d.ts.map +1 -0
  93. package/lib/typescript/src/index.d.ts +10 -0
  94. package/lib/typescript/src/index.d.ts.map +1 -0
  95. package/lib/typescript/src/stores/interstitial-ads-store.d.ts +36 -0
  96. package/lib/typescript/src/stores/interstitial-ads-store.d.ts.map +1 -0
  97. package/lib/typescript/src/stores/native-ads-store.d.ts +36 -0
  98. package/lib/typescript/src/stores/native-ads-store.d.ts.map +1 -0
  99. package/lib/typescript/src/stores/rewarded-ads-store.d.ts +39 -0
  100. package/lib/typescript/src/stores/rewarded-ads-store.d.ts.map +1 -0
  101. package/lib/typescript/src/stores/rewarded-interstitial-ads-store.d.ts +39 -0
  102. package/lib/typescript/src/stores/rewarded-interstitial-ads-store.d.ts.map +1 -0
  103. package/lib/typescript/src/types/ads-types.d.ts +164 -0
  104. package/lib/typescript/src/types/ads-types.d.ts.map +1 -0
  105. package/package.json +177 -0
  106. package/src/ads-manager/AppOpenAdsManager.ts +155 -0
  107. package/src/ads-manager/GoogleMobileAdsManager.ts +68 -0
  108. package/src/ads-manager/InterstitialAdsManager.ts +371 -0
  109. package/src/ads-manager/NativeAdsManager.ts +445 -0
  110. package/src/ads-manager/RewardedAdsManager.ts +383 -0
  111. package/src/ads-manager/RewardedInterstitialAdsManager.ts +410 -0
  112. package/src/components/BannerAdComponent.tsx +205 -0
  113. package/src/components/FullscreenStyles.ts +158 -0
  114. package/src/components/NativeAdComponent.tsx +208 -0
  115. package/src/components/NativeAdFullscreenComponent.tsx +261 -0
  116. package/src/components/NativeStyles.ts +141 -0
  117. package/src/event/custom-event.ts +30 -0
  118. package/src/hook/useAppOpenAd.ts +161 -0
  119. package/src/hook/useInterstitialAd.ts +195 -0
  120. package/src/hook/useNativeAd.ts +173 -0
  121. package/src/hook/useRewardedAd.ts +205 -0
  122. package/src/hook/useRewardedInterstitialAd.ts +212 -0
  123. package/src/index.tsx +33 -0
  124. package/src/stores/interstitial-ads-store.ts +287 -0
  125. package/src/stores/native-ads-store.ts +272 -0
  126. package/src/stores/rewarded-ads-store.ts +290 -0
  127. package/src/stores/rewarded-interstitial-ads-store.ts +318 -0
  128. package/src/types/ads-types.ts +239 -0
@@ -0,0 +1,405 @@
1
+ "use strict";
2
+
3
+ import { AdStatus } from "../types/ads-types.js";
4
+ import { googleMobileAdsManager } from "./GoogleMobileAdsManager.js";
5
+ import { CustomEventEmitter } from "../event/custom-event.js";
6
+ export class NativeAdsManager extends CustomEventEmitter {
7
+ state = {
8
+ ads: new Map(),
9
+ loadingKeys: new Set(),
10
+ displayedKeys: new Set()
11
+ };
12
+ configs = new Map();
13
+ loadPromises = new Map();
14
+ constructor() {
15
+ super();
16
+ // Tự động khởi tạo Google Mobile Ads SDK
17
+ this.initializeGoogleMobileAds();
18
+ }
19
+
20
+ /**
21
+ * Khởi tạo Google Mobile Ads SDK
22
+ */
23
+ async initializeGoogleMobileAds() {
24
+ try {
25
+ await googleMobileAdsManager.initialize();
26
+ } catch (error) {
27
+ console.warn('Failed to initialize Google Mobile Ads SDK:', error);
28
+ }
29
+ }
30
+
31
+ /**
32
+ * Preload một native ad với config
33
+ */
34
+ async preloadAd(config) {
35
+ const fullConfig = {
36
+ ...config,
37
+ timeout: config.timeout ?? 10000,
38
+ maxRetries: config.maxRetries ?? 3
39
+ };
40
+ const {
41
+ adKey,
42
+ adId
43
+ } = fullConfig;
44
+ this.configs.set(adKey, fullConfig);
45
+
46
+ // Tạo ad instance nếu chưa tồn tại
47
+ if (!this.state.ads.has(adKey)) {
48
+ const adInstance = {
49
+ adKey,
50
+ adId,
51
+ status: AdStatus.IDLE,
52
+ data: null,
53
+ error: null,
54
+ loadTime: null,
55
+ displayTime: null,
56
+ retryCount: 0,
57
+ isUsingHighPriority: false,
58
+ hasTriedHighPriority: false
59
+ };
60
+ this.state.ads.set(adKey, adInstance);
61
+ }
62
+
63
+ // Nếu đang load rồi thì return promise hiện tại
64
+ if (this.loadPromises.has(adKey)) {
65
+ return this.loadPromises.get(adKey);
66
+ }
67
+
68
+ // Bắt đầu load
69
+ const loadPromise = this.loadAdInternal(adKey);
70
+ this.loadPromises.set(adKey, loadPromise);
71
+ try {
72
+ await loadPromise;
73
+ } finally {
74
+ this.loadPromises.delete(adKey);
75
+ }
76
+ }
77
+
78
+ /**
79
+ * Load ad ngay lập tức (alias của preloadAd)
80
+ */
81
+ async loadAd(config) {
82
+ return this.preloadAd(config);
83
+ }
84
+
85
+ /**
86
+ * Hiển thị ad đã được load
87
+ */
88
+ async displayAd(adKey) {
89
+ const ad = this.state.ads.get(adKey);
90
+ if (!ad) {
91
+ console.warn(`Ad with key "${adKey}" not found`);
92
+ return null;
93
+ }
94
+ if (ad.status === AdStatus.LOADED) {
95
+ ad.status = AdStatus.DISPLAYED;
96
+ ad.displayTime = Date.now();
97
+ this.state.displayedKeys.add(adKey);
98
+ this.emit('adDisplayed', ad);
99
+
100
+ // const config = this.configs.get(adKey);
101
+ // if (config) {
102
+ // // Preload ad mới trong background (không await để không block)
103
+ // this.preloadAd(adKey, config.adId, config).catch((error) => {
104
+ // console.warn(`Failed to preload new ad for key "${adKey}":`, error);
105
+ // });
106
+ // }
107
+
108
+ return ad;
109
+ }
110
+ if (ad.status === AdStatus.LOADING) {
111
+ // Đợi load xong
112
+ await this.waitForAdLoad(adKey);
113
+ return this.displayAd(adKey);
114
+ }
115
+ if (ad.status === AdStatus.ERROR) {
116
+ // Thử load lại
117
+ await this.refreshAd(adKey);
118
+ return this.displayAd(adKey);
119
+ }
120
+ console.warn(`Cannot display ad with key "${adKey}" in status: ${ad.status}`);
121
+ return null;
122
+ }
123
+
124
+ /**
125
+ * Lấy ad instance
126
+ */
127
+ getAd(adKey) {
128
+ return this.state.ads.get(adKey) || null;
129
+ }
130
+
131
+ /**
132
+ * Xóa ad
133
+ */
134
+ removeAd(adKey) {
135
+ const ad = this.state.ads.get(adKey);
136
+ if (ad?.data?.unsubscribeListeners) {
137
+ ad.data.unsubscribeListeners();
138
+ }
139
+ this.state.ads.delete(adKey);
140
+ this.state.loadingKeys.delete(adKey);
141
+ this.state.displayedKeys.delete(adKey);
142
+ this.configs.delete(adKey);
143
+ this.loadPromises.delete(adKey);
144
+ this.emit('adRemoved', adKey);
145
+ }
146
+
147
+ /**
148
+ * Refresh ad (load lại)
149
+ */
150
+ async refreshAd(adKey) {
151
+ const config = this.configs.get(adKey);
152
+ if (!config) {
153
+ throw new Error(`Config for key "${adKey}" not found`);
154
+ }
155
+
156
+ // Reset status
157
+ const ad = this.state.ads.get(adKey);
158
+ if (ad) {
159
+ ad.status = AdStatus.IDLE;
160
+ ad.error = null;
161
+ ad.retryCount = 0;
162
+ }
163
+ return this.preloadAd(config);
164
+ }
165
+
166
+ /**
167
+ * Clear tất cả ads
168
+ */
169
+ clearAllAds() {
170
+ const keys = Array.from(this.state.ads.keys());
171
+ keys.forEach(adKey => this.removeAd(adKey));
172
+ this.emit('allAdsCleared');
173
+ }
174
+
175
+ /**
176
+ * Lấy state hiện tại
177
+ */
178
+ getState() {
179
+ return {
180
+ ads: new Map(this.state.ads),
181
+ loadingKeys: new Set(this.state.loadingKeys),
182
+ displayedKeys: new Set(this.state.displayedKeys)
183
+ };
184
+ }
185
+
186
+ /**
187
+ * Internal method để load ad
188
+ */
189
+ async loadAdInternal(adKey) {
190
+ const ad = this.state.ads.get(adKey);
191
+ const config = this.configs.get(adKey);
192
+ if (!ad || !config) {
193
+ throw new Error(`Ad or config for key "${adKey}" not found`);
194
+ }
195
+
196
+ // Xác định adId sẽ được sử dụng
197
+ let adIdToLoad = config.adId;
198
+
199
+ // Nếu có adHighpriorityId và chưa thử load high priority
200
+ if (config.adHighpriorityId && !ad.hasTriedHighPriority) {
201
+ adIdToLoad = config.adHighpriorityId;
202
+ ad.isUsingHighPriority = true;
203
+ } else {
204
+ ad.isUsingHighPriority = false;
205
+ }
206
+
207
+ // Kiểm tra retry limit
208
+ if (ad.retryCount >= config.maxRetries) {
209
+ // Nếu đang dùng high priority và đã hết retry, fallback về adId bình thường
210
+ if (ad.isUsingHighPriority) {
211
+ console.log(`High priority ad failed after ${config.maxRetries} retries, falling back to normal ad`);
212
+ ad.hasTriedHighPriority = true;
213
+ ad.retryCount = 0; // Reset retry count cho adId bình thường
214
+ ad.isUsingHighPriority = false;
215
+ // Không return, tiếp tục load với adId bình thường ở lần recursive call
216
+ return this.loadAdInternal(adKey);
217
+ } else {
218
+ // Nếu đã dùng adId bình thường mà vẫn lỗi
219
+ ad.status = AdStatus.ERROR;
220
+ ad.error = `Max retries (${config.maxRetries}) exceeded`;
221
+ this.emit('adError', ad);
222
+ return;
223
+ }
224
+ }
225
+ ad.status = AdStatus.LOADING;
226
+ ad.retryCount++;
227
+ this.state.loadingKeys.add(adKey);
228
+ this.emit('adLoading', ad);
229
+ try {
230
+ // Gọi native method để load ad
231
+ const adData = await this.loadNativeAd(adIdToLoad, config.timeout);
232
+ ad.status = AdStatus.LOADED;
233
+ ad.data = adData;
234
+ ad.error = null;
235
+ ad.loadTime = Date.now();
236
+ ad.retryCount = 0;
237
+
238
+ // Nếu load high priority thành công, đánh dấu đã thử
239
+ if (ad.isUsingHighPriority) {
240
+ ad.hasTriedHighPriority = true;
241
+ }
242
+ this.state.loadingKeys.delete(adKey);
243
+ this.emit('adLoaded', ad);
244
+ } catch (error) {
245
+ ad.status = AdStatus.ERROR;
246
+ ad.error = error instanceof Error ? error.message : String(error);
247
+ this.state.loadingKeys.delete(adKey);
248
+ this.emit('adError', ad);
249
+ throw error;
250
+ }
251
+ }
252
+
253
+ /**
254
+ * Đợi ad load xong
255
+ */
256
+ async waitForAdLoad(adKey) {
257
+ return new Promise((resolve, reject) => {
258
+ const timeout = setTimeout(() => {
259
+ reject(new Error(`Timeout waiting for ad "${adKey}" to load`));
260
+ }, 10000);
261
+ const checkAd = () => {
262
+ const ad = this.state.ads.get(adKey);
263
+ if (!ad) {
264
+ clearTimeout(timeout);
265
+ reject(new Error(`Ad "${adKey}" not found`));
266
+ return;
267
+ }
268
+ if (ad.status === AdStatus.LOADED) {
269
+ clearTimeout(timeout);
270
+ resolve();
271
+ } else if (ad.status === AdStatus.ERROR) {
272
+ clearTimeout(timeout);
273
+ reject(new Error(ad.error || 'Unknown error'));
274
+ } else {
275
+ setTimeout(checkAd, 100);
276
+ }
277
+ };
278
+ checkAd();
279
+ });
280
+ }
281
+ googleMobileAdsModule = null;
282
+
283
+ /**
284
+ * Load native ad sử dụng react-native-google-mobile-ads
285
+ */
286
+ async loadNativeAd(adId, timeout) {
287
+ try {
288
+ // Đảm bảo Google Mobile Ads SDK đã được khởi tạo
289
+ await googleMobileAdsManager.initialize();
290
+
291
+ // Cache import để tránh import nhiều lần
292
+ if (!this.googleMobileAdsModule) {
293
+ this.googleMobileAdsModule = await import('react-native-google-mobile-ads');
294
+ }
295
+ const {
296
+ NativeAd,
297
+ TestIds,
298
+ NativeAdChoicesPlacement,
299
+ NativeAdEventType,
300
+ NativeMediaAspectRatio
301
+ } = this.googleMobileAdsModule;
302
+
303
+ // Sử dụng test ID nếu adId là test
304
+ const finalAdId = adId === 'test' ? TestIds.NATIVE : adId;
305
+
306
+ // Tạo promise với timeout
307
+ const loadPromise = new Promise((resolve, reject) => {
308
+ const timeoutId = setTimeout(() => {
309
+ reject(new Error(`Timeout loading ad after ${timeout}ms`));
310
+ }, timeout);
311
+
312
+ // Tạo native ad request
313
+ NativeAd.createForAdRequest(finalAdId, {
314
+ aspectRatio: NativeMediaAspectRatio.LANDSCAPE,
315
+ adChoicesPlacement: NativeAdChoicesPlacement.TOP_RIGHT,
316
+ startVideoMuted: false
317
+ }).then(nativeAd => {
318
+ clearTimeout(timeoutId);
319
+ console.log('nativeAd', 'loadNativeAd');
320
+
321
+ // Thêm event listeners cho native ad
322
+ const unsubscribeClicked = nativeAd.addAdEventListener(NativeAdEventType.CLICKED, () => {
323
+ console.log('Native ad clicked');
324
+ this.emit('adClicked', {
325
+ adId,
326
+ nativeAd
327
+ });
328
+ });
329
+ const unsubscribeImpression = nativeAd.addAdEventListener(NativeAdEventType.IMPRESSION, () => {
330
+ console.log('Native ad impression recorded');
331
+ this.emit('adImpression', {
332
+ adId,
333
+ nativeAd
334
+ });
335
+ });
336
+ // const unsubscribeOpened = nativeAd.addAdEventListener(
337
+ // AdEventType.OPENED,
338
+ // () => {
339
+ // console.log('Native ad opened');
340
+ // this.emit('adOpened', { adId, nativeAd });
341
+ // }
342
+ // );
343
+
344
+ // const unsubscribeClosed = nativeAd.addAdEventListener(
345
+ // AdEventType.CLOSED,
346
+ // () => {
347
+ // console.log('Native ad closed');
348
+ // this.emit('adClosed', { adId, nativeAd });
349
+ // }
350
+ // );
351
+
352
+ // Chuyển đổi native ad data thành AdData format
353
+ const adData = {
354
+ id: adId,
355
+ title: nativeAd.headline || '',
356
+ description: nativeAd.body || '',
357
+ imageUrl: nativeAd.images?.[0]?.url || nativeAd.icon?.url || '',
358
+ callToAction: nativeAd.callToAction || 'Learn More',
359
+ advertiser: nativeAd.advertiser || '',
360
+ rating: nativeAd.starRating || undefined,
361
+ price: nativeAd.price || undefined,
362
+ store: nativeAd.store || undefined,
363
+ // Thêm các field khác từ native ad
364
+ nativeAd: nativeAd,
365
+ // Lưu reference đến native ad object
366
+ iconUrl: nativeAd.icon?.url,
367
+ images: nativeAd.images?.map(img => img.url) || [],
368
+ // Lưu unsubscribe functions để cleanup sau này
369
+ unsubscribeListeners: () => {
370
+ unsubscribeClicked();
371
+ unsubscribeImpression();
372
+ }
373
+ };
374
+ resolve(adData);
375
+ }).catch(error => {
376
+ clearTimeout(timeoutId);
377
+ reject(new Error(`Failed to load native ad: ${error.message}`));
378
+ });
379
+ });
380
+ return await loadPromise;
381
+ } catch (error) {
382
+ // Fallback về mock data nếu có lỗi import hoặc load
383
+ console.warn('Failed to load native ad, using mock data:', error);
384
+ return new Promise(resolve => {
385
+ setTimeout(() => {
386
+ resolve({
387
+ id: adId,
388
+ title: 'Sample Ad Title',
389
+ description: 'This is a sample ad description',
390
+ imageUrl: 'https://via.placeholder.com/300x200',
391
+ callToAction: 'Learn More',
392
+ advertiser: 'Sample Advertiser',
393
+ rating: 4.5,
394
+ price: '$9.99',
395
+ store: 'App Store'
396
+ });
397
+ }, 1000 + Math.random() * 2000);
398
+ });
399
+ }
400
+ }
401
+ }
402
+
403
+ // Singleton instance
404
+ export const nativeAdsManager = new NativeAdsManager();
405
+ //# sourceMappingURL=NativeAdsManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AdStatus","googleMobileAdsManager","CustomEventEmitter","NativeAdsManager","state","ads","Map","loadingKeys","Set","displayedKeys","configs","loadPromises","constructor","initializeGoogleMobileAds","initialize","error","console","warn","preloadAd","config","fullConfig","timeout","maxRetries","adKey","adId","set","has","adInstance","status","IDLE","data","loadTime","displayTime","retryCount","isUsingHighPriority","hasTriedHighPriority","get","loadPromise","loadAdInternal","delete","loadAd","displayAd","ad","LOADED","DISPLAYED","Date","now","add","emit","LOADING","waitForAdLoad","ERROR","refreshAd","getAd","removeAd","unsubscribeListeners","Error","clearAllAds","keys","Array","from","forEach","getState","adIdToLoad","adHighpriorityId","log","adData","loadNativeAd","message","String","Promise","resolve","reject","setTimeout","checkAd","clearTimeout","googleMobileAdsModule","NativeAd","TestIds","NativeAdChoicesPlacement","NativeAdEventType","NativeMediaAspectRatio","finalAdId","NATIVE","timeoutId","createForAdRequest","aspectRatio","LANDSCAPE","adChoicesPlacement","TOP_RIGHT","startVideoMuted","then","nativeAd","unsubscribeClicked","addAdEventListener","CLICKED","unsubscribeImpression","IMPRESSION","id","title","headline","description","body","imageUrl","images","url","icon","callToAction","advertiser","rating","starRating","undefined","price","store","iconUrl","map","img","catch","Math","random","nativeAdsManager"],"sourceRoot":"../../../src","sources":["ads-manager/NativeAdsManager.ts"],"mappings":"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","ignoreList":[]}