novvy-ads-react-native 1.0.0-beta.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 (149) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +210 -0
  3. package/android/build.gradle +84 -0
  4. package/android/gradle.properties +4 -0
  5. package/android/src/main/AndroidManifest.xml +4 -0
  6. package/android/src/main/java/ai/novvy/reactnative/NovvyAdContainerView.kt +63 -0
  7. package/android/src/main/java/ai/novvy/reactnative/NovvyAdsModule.kt +390 -0
  8. package/android/src/main/java/ai/novvy/reactnative/NovvyAdsPackage.kt +46 -0
  9. package/android/src/main/java/ai/novvy/reactnative/NovvyPauseAdViewManager.kt +68 -0
  10. package/android/src/main/java/ai/novvy/reactnative/NovvyScrollAdViewManager.kt +72 -0
  11. package/android/src/main/java/ai/novvy/reactnative/RnPlayerAdapter.kt +18 -0
  12. package/android/src/main/java/ai/novvy/reactnative/ViewReadyEvent.kt +26 -0
  13. package/app.plugin.js +4 -0
  14. package/ios/NovvyAds.mm +168 -0
  15. package/ios/NovvyAdsImpl.swift +409 -0
  16. package/ios/NovvyPauseAdView.mm +79 -0
  17. package/ios/NovvyScrollAdView.mm +80 -0
  18. package/ios/RnPlayerAdapter.swift +14 -0
  19. package/lib/commonjs/NovvyAds.js +87 -0
  20. package/lib/commonjs/NovvyAds.js.map +1 -0
  21. package/lib/commonjs/ads/NovvyAd.js +121 -0
  22. package/lib/commonjs/ads/NovvyAd.js.map +1 -0
  23. package/lib/commonjs/ads/NovvyEndAd.js +19 -0
  24. package/lib/commonjs/ads/NovvyEndAd.js.map +1 -0
  25. package/lib/commonjs/ads/NovvyFullScreenAd.js +49 -0
  26. package/lib/commonjs/ads/NovvyFullScreenAd.js.map +1 -0
  27. package/lib/commonjs/ads/NovvyInterstitialAd.js +19 -0
  28. package/lib/commonjs/ads/NovvyInterstitialAd.js.map +1 -0
  29. package/lib/commonjs/ads/NovvyMidAd.js +19 -0
  30. package/lib/commonjs/ads/NovvyMidAd.js.map +1 -0
  31. package/lib/commonjs/ads/NovvyPauseAd.js +116 -0
  32. package/lib/commonjs/ads/NovvyPauseAd.js.map +1 -0
  33. package/lib/commonjs/ads/NovvyRewardedAd.js +53 -0
  34. package/lib/commonjs/ads/NovvyRewardedAd.js.map +1 -0
  35. package/lib/commonjs/ads/NovvyScrollAd.js +136 -0
  36. package/lib/commonjs/ads/NovvyScrollAd.js.map +1 -0
  37. package/lib/commonjs/eventBus.js +60 -0
  38. package/lib/commonjs/eventBus.js.map +1 -0
  39. package/lib/commonjs/index.js +90 -0
  40. package/lib/commonjs/index.js.map +1 -0
  41. package/lib/commonjs/package.json +1 -0
  42. package/lib/commonjs/spec/NativeNovvyAds.js +27 -0
  43. package/lib/commonjs/spec/NativeNovvyAds.js.map +1 -0
  44. package/lib/commonjs/spec/NovvyPauseAdViewNativeComponent.js +16 -0
  45. package/lib/commonjs/spec/NovvyPauseAdViewNativeComponent.js.map +1 -0
  46. package/lib/commonjs/spec/NovvyScrollAdViewNativeComponent.js +17 -0
  47. package/lib/commonjs/spec/NovvyScrollAdViewNativeComponent.js.map +1 -0
  48. package/lib/commonjs/spec/codegen-event-emitter.d.js +2 -0
  49. package/lib/commonjs/spec/codegen-event-emitter.d.js.map +1 -0
  50. package/lib/commonjs/types.js +54 -0
  51. package/lib/commonjs/types.js.map +1 -0
  52. package/lib/commonjs/views/NovvyPauseAdView.js +76 -0
  53. package/lib/commonjs/views/NovvyPauseAdView.js.map +1 -0
  54. package/lib/commonjs/views/NovvyScrollAdView.js +63 -0
  55. package/lib/commonjs/views/NovvyScrollAdView.js.map +1 -0
  56. package/lib/module/NovvyAds.js +83 -0
  57. package/lib/module/NovvyAds.js.map +1 -0
  58. package/lib/module/ads/NovvyAd.js +117 -0
  59. package/lib/module/ads/NovvyAd.js.map +1 -0
  60. package/lib/module/ads/NovvyEndAd.js +15 -0
  61. package/lib/module/ads/NovvyEndAd.js.map +1 -0
  62. package/lib/module/ads/NovvyFullScreenAd.js +45 -0
  63. package/lib/module/ads/NovvyFullScreenAd.js.map +1 -0
  64. package/lib/module/ads/NovvyInterstitialAd.js +15 -0
  65. package/lib/module/ads/NovvyInterstitialAd.js.map +1 -0
  66. package/lib/module/ads/NovvyMidAd.js +15 -0
  67. package/lib/module/ads/NovvyMidAd.js.map +1 -0
  68. package/lib/module/ads/NovvyPauseAd.js +112 -0
  69. package/lib/module/ads/NovvyPauseAd.js.map +1 -0
  70. package/lib/module/ads/NovvyRewardedAd.js +49 -0
  71. package/lib/module/ads/NovvyRewardedAd.js.map +1 -0
  72. package/lib/module/ads/NovvyScrollAd.js +132 -0
  73. package/lib/module/ads/NovvyScrollAd.js.map +1 -0
  74. package/lib/module/eventBus.js +55 -0
  75. package/lib/module/eventBus.js.map +1 -0
  76. package/lib/module/index.js +22 -0
  77. package/lib/module/index.js.map +1 -0
  78. package/lib/module/package.json +1 -0
  79. package/lib/module/spec/NativeNovvyAds.js +28 -0
  80. package/lib/module/spec/NativeNovvyAds.js.map +1 -0
  81. package/lib/module/spec/NovvyPauseAdViewNativeComponent.js +13 -0
  82. package/lib/module/spec/NovvyPauseAdViewNativeComponent.js.map +1 -0
  83. package/lib/module/spec/NovvyScrollAdViewNativeComponent.js +14 -0
  84. package/lib/module/spec/NovvyScrollAdViewNativeComponent.js.map +1 -0
  85. package/lib/module/spec/codegen-event-emitter.d.js +2 -0
  86. package/lib/module/spec/codegen-event-emitter.d.js.map +1 -0
  87. package/lib/module/types.js +56 -0
  88. package/lib/module/types.js.map +1 -0
  89. package/lib/module/views/NovvyPauseAdView.js +70 -0
  90. package/lib/module/views/NovvyPauseAdView.js.map +1 -0
  91. package/lib/module/views/NovvyScrollAdView.js +57 -0
  92. package/lib/module/views/NovvyScrollAdView.js.map +1 -0
  93. package/lib/typescript/NovvyAds.d.ts +69 -0
  94. package/lib/typescript/NovvyAds.d.ts.map +1 -0
  95. package/lib/typescript/ads/NovvyAd.d.ts +57 -0
  96. package/lib/typescript/ads/NovvyAd.d.ts.map +1 -0
  97. package/lib/typescript/ads/NovvyEndAd.d.ts +7 -0
  98. package/lib/typescript/ads/NovvyEndAd.d.ts.map +1 -0
  99. package/lib/typescript/ads/NovvyFullScreenAd.d.ts +19 -0
  100. package/lib/typescript/ads/NovvyFullScreenAd.d.ts.map +1 -0
  101. package/lib/typescript/ads/NovvyInterstitialAd.d.ts +7 -0
  102. package/lib/typescript/ads/NovvyInterstitialAd.d.ts.map +1 -0
  103. package/lib/typescript/ads/NovvyMidAd.d.ts +7 -0
  104. package/lib/typescript/ads/NovvyMidAd.d.ts.map +1 -0
  105. package/lib/typescript/ads/NovvyPauseAd.d.ts +45 -0
  106. package/lib/typescript/ads/NovvyPauseAd.d.ts.map +1 -0
  107. package/lib/typescript/ads/NovvyRewardedAd.d.ts +19 -0
  108. package/lib/typescript/ads/NovvyRewardedAd.d.ts.map +1 -0
  109. package/lib/typescript/ads/NovvyScrollAd.d.ts +57 -0
  110. package/lib/typescript/ads/NovvyScrollAd.d.ts.map +1 -0
  111. package/lib/typescript/eventBus.d.ts +15 -0
  112. package/lib/typescript/eventBus.d.ts.map +1 -0
  113. package/lib/typescript/index.d.ts +15 -0
  114. package/lib/typescript/index.d.ts.map +1 -0
  115. package/lib/typescript/spec/NativeNovvyAds.d.ts +73 -0
  116. package/lib/typescript/spec/NativeNovvyAds.d.ts.map +1 -0
  117. package/lib/typescript/spec/NovvyPauseAdViewNativeComponent.d.ts +18 -0
  118. package/lib/typescript/spec/NovvyPauseAdViewNativeComponent.d.ts.map +1 -0
  119. package/lib/typescript/spec/NovvyScrollAdViewNativeComponent.d.ts +19 -0
  120. package/lib/typescript/spec/NovvyScrollAdViewNativeComponent.d.ts.map +1 -0
  121. package/lib/typescript/types.d.ts +77 -0
  122. package/lib/typescript/types.d.ts.map +1 -0
  123. package/lib/typescript/views/NovvyPauseAdView.d.ts +21 -0
  124. package/lib/typescript/views/NovvyPauseAdView.d.ts.map +1 -0
  125. package/lib/typescript/views/NovvyScrollAdView.d.ts +22 -0
  126. package/lib/typescript/views/NovvyScrollAdView.d.ts.map +1 -0
  127. package/novvy-ads-react-native.podspec +71 -0
  128. package/package.json +84 -0
  129. package/plugin/build/index.d.ts +11 -0
  130. package/plugin/build/index.js +53 -0
  131. package/react-native.config.js +7 -0
  132. package/src/NovvyAds.ts +98 -0
  133. package/src/ads/NovvyAd.ts +125 -0
  134. package/src/ads/NovvyEndAd.ts +13 -0
  135. package/src/ads/NovvyFullScreenAd.ts +46 -0
  136. package/src/ads/NovvyInterstitialAd.ts +13 -0
  137. package/src/ads/NovvyMidAd.ts +13 -0
  138. package/src/ads/NovvyPauseAd.ts +125 -0
  139. package/src/ads/NovvyRewardedAd.ts +49 -0
  140. package/src/ads/NovvyScrollAd.ts +138 -0
  141. package/src/eventBus.ts +59 -0
  142. package/src/index.tsx +29 -0
  143. package/src/spec/NativeNovvyAds.ts +134 -0
  144. package/src/spec/NovvyPauseAdViewNativeComponent.ts +20 -0
  145. package/src/spec/NovvyScrollAdViewNativeComponent.ts +21 -0
  146. package/src/spec/codegen-event-emitter.d.ts +10 -0
  147. package/src/types.ts +82 -0
  148. package/src/views/NovvyPauseAdView.tsx +80 -0
  149. package/src/views/NovvyScrollAdView.tsx +71 -0
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ import NovvyAdsNative from './spec/NativeNovvyAds';
4
+
5
+ /**
6
+ * Central hub over the single native→JS `onAdEvent` stream.
7
+ *
8
+ * Mirrors the Flutter plugin's `_NovvyAdsImpl` broadcast stream: one native
9
+ * event source is fanned out to per-ad handlers filtered by `adObjectId`.
10
+ */
11
+
12
+ const handlers = new Map();
13
+ let subscription = null;
14
+ function ensureSubscribed() {
15
+ if (subscription) {
16
+ return;
17
+ }
18
+ subscription = NovvyAdsNative.onAdEvent(event => {
19
+ const set = handlers.get(event.adObjectId);
20
+ if (!set) {
21
+ return;
22
+ }
23
+ // Copy so a handler may unsubscribe/destroy during dispatch.
24
+ for (const handler of Array.from(set)) {
25
+ handler(event);
26
+ }
27
+ });
28
+ }
29
+
30
+ /**
31
+ * Subscribe to events for a single ad instance. Returns an unsubscribe fn.
32
+ */
33
+ export function subscribe(adObjectId, handler) {
34
+ ensureSubscribed();
35
+ let set = handlers.get(adObjectId);
36
+ if (!set) {
37
+ set = new Set();
38
+ handlers.set(adObjectId, set);
39
+ }
40
+ set.add(handler);
41
+ return () => {
42
+ const current = handlers.get(adObjectId);
43
+ if (!current) {
44
+ return;
45
+ }
46
+ current.delete(handler);
47
+ if (current.size === 0) {
48
+ handlers.delete(adObjectId);
49
+ }
50
+ };
51
+ }
52
+
53
+ /** The underlying TurboModule instance. */
54
+ export const Native = NovvyAdsNative;
55
+ //# sourceMappingURL=eventBus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NovvyAdsNative","handlers","Map","subscription","ensureSubscribed","onAdEvent","event","set","get","adObjectId","handler","Array","from","subscribe","Set","add","current","delete","size","Native"],"sourceRoot":"../../src","sources":["eventBus.ts"],"mappings":";;AAAA,OAAOA,cAAc,MAAM,uBAAuB;;AAGlD;AACA;AACA;AACA;AACA;AACA;;AAIA,MAAMC,QAAQ,GAAG,IAAIC,GAAG,CAA8B,CAAC;AACvD,IAAIC,YAAuC,GAAG,IAAI;AAElD,SAASC,gBAAgBA,CAAA,EAAS;EAChC,IAAID,YAAY,EAAE;IAChB;EACF;EACAA,YAAY,GAAGH,cAAc,CAACK,SAAS,CAAEC,KAAoB,IAAK;IAChE,MAAMC,GAAG,GAAGN,QAAQ,CAACO,GAAG,CAACF,KAAK,CAACG,UAAU,CAAC;IAC1C,IAAI,CAACF,GAAG,EAAE;MACR;IACF;IACA;IACA,KAAK,MAAMG,OAAO,IAAIC,KAAK,CAACC,IAAI,CAACL,GAAG,CAAC,EAAE;MACrCG,OAAO,CAACJ,KAAK,CAAC;IAChB;EACF,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA,OAAO,SAASO,SAASA,CACvBJ,UAAkB,EAClBC,OAAuB,EACX;EACZN,gBAAgB,CAAC,CAAC;EAClB,IAAIG,GAAG,GAAGN,QAAQ,CAACO,GAAG,CAACC,UAAU,CAAC;EAClC,IAAI,CAACF,GAAG,EAAE;IACRA,GAAG,GAAG,IAAIO,GAAG,CAAC,CAAC;IACfb,QAAQ,CAACM,GAAG,CAACE,UAAU,EAAEF,GAAG,CAAC;EAC/B;EACAA,GAAG,CAACQ,GAAG,CAACL,OAAO,CAAC;EAChB,OAAO,MAAM;IACX,MAAMM,OAAO,GAAGf,QAAQ,CAACO,GAAG,CAACC,UAAU,CAAC;IACxC,IAAI,CAACO,OAAO,EAAE;MACZ;IACF;IACAA,OAAO,CAACC,MAAM,CAACP,OAAO,CAAC;IACvB,IAAIM,OAAO,CAACE,IAAI,KAAK,CAAC,EAAE;MACtBjB,QAAQ,CAACgB,MAAM,CAACR,UAAU,CAAC;IAC7B;EACF,CAAC;AACH;;AAEA;AACA,OAAO,MAAMU,MAAM,GAAGnB,cAAc","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ // Public entry point for the Novvy Ads React Native SDK.
4
+
5
+ export { NovvyAds } from './NovvyAds';
6
+
7
+ // Ad types
8
+ export { NovvyAd } from './ads/NovvyAd';
9
+ export { NovvyFullScreenAd } from './ads/NovvyFullScreenAd';
10
+ export { NovvyInterstitialAd } from './ads/NovvyInterstitialAd';
11
+ export { NovvyRewardedAd } from './ads/NovvyRewardedAd';
12
+ export { NovvyMidAd } from './ads/NovvyMidAd';
13
+ export { NovvyEndAd } from './ads/NovvyEndAd';
14
+ export { NovvyScrollAd } from './ads/NovvyScrollAd';
15
+ export { NovvyPauseAd } from './ads/NovvyPauseAd';
16
+
17
+ // Embedded views
18
+ export { NovvyScrollAdView } from './views/NovvyScrollAdView';
19
+ export { NovvyPauseAdView } from './views/NovvyPauseAdView';
20
+ // Data types
21
+ export { NovvyAdEvent } from './types';
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NovvyAds","NovvyAd","NovvyFullScreenAd","NovvyInterstitialAd","NovvyRewardedAd","NovvyMidAd","NovvyEndAd","NovvyScrollAd","NovvyPauseAd","NovvyScrollAdView","NovvyPauseAdView","NovvyAdEvent"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA;;AAEA,SAASA,QAAQ,QAAQ,YAAY;;AAErC;AACA,SAASC,OAAO,QAAQ,eAAe;AACvC,SAASC,iBAAiB,QAAQ,yBAAyB;AAC3D,SAASC,mBAAmB,QAAQ,2BAA2B;AAC/D,SAASC,eAAe,QAAQ,uBAAuB;AACvD,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,QAAQ,qBAAqB;AACnD,SAASC,YAAY,QAAQ,oBAAoB;;AAEjD;AACA,SAASC,iBAAiB,QAAQ,2BAA2B;AAE7D,SAASC,gBAAgB,QAAQ,0BAA0B;AAG3D;AACA,SACEC,YAAY,QAMP,SAAS","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ import { TurboModuleRegistry } from 'react-native';
4
+
5
+ /**
6
+ * Codegen-facing spec for the Novvy Ads TurboModule (new architecture only).
7
+ *
8
+ * Method surface mirrors the Flutter plugin's Pigeon `NovvyAdHostApi`
9
+ * (pigeons/novvy_ads_api.dart) one-to-one. The single `onAdEvent` emitter
10
+ * mirrors Pigeon's `NovvyAdsFlutterApi.onAdEvent`; each JS ad object filters
11
+ * this stream by its own `adObjectId`.
12
+ *
13
+ * NOTE: Codegen struct/event types must live in this file. The public,
14
+ * richly-documented aliases are re-exported from `../types`.
15
+ */
16
+
17
+ // ── Data structs (codegen-facing) ───────────────────────────────────────────
18
+
19
+ /**
20
+ * Single native→JS ad lifecycle event. `event` is one of the NovvyAdEvent
21
+ * string values. `remainingSeconds` is only populated for `playbackTick`
22
+ * (flattened from Pigeon's `data` map for codegen compatibility).
23
+ */
24
+
25
+ // ── TurboModule ─────────────────────────────────────────────────────────────
26
+
27
+ export default TurboModuleRegistry.getEnforcing('NovvyAds');
28
+ //# sourceMappingURL=NativeNovvyAds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["spec/NativeNovvyAds.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;;AAQlD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AA0BA;AACA;AACA;AACA;AACA;;AASA;;AAyEA,eAAeA,mBAAmB,CAACC,YAAY,CAAO,UAAU,CAAC","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
4
+
5
+ /**
6
+ * Fabric component for an inline realtime pause-card ad container
7
+ * (fixed 260×90). The native view registers its container in the TurboModule
8
+ * keyed by `adObjectId`, then fires `onViewReady`, at which point JS issues
9
+ * `attachPauseAd` (there is no load step for pause ads).
10
+ */
11
+
12
+ export default codegenNativeComponent('NovvyPauseAdView');
13
+ //# sourceMappingURL=NovvyPauseAdViewNativeComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["codegenNativeComponent"],"sourceRoot":"../../../src","sources":["spec/NovvyPauseAdViewNativeComponent.ts"],"mappings":";;AACA,OAAOA,sBAAsB,MAAM,yDAAyD;;AAG5F;AACA;AACA;AACA;AACA;AACA;;AAQA,eAAeA,sBAAsB,CACnC,kBACF,CAAC","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
4
+
5
+ /**
6
+ * Fabric component for an inline scroll (feed) ad container.
7
+ *
8
+ * The native view registers its container in the TurboModule keyed by
9
+ * `adObjectId`, then fires `onViewReady` (mirrors the Flutter plugin's
10
+ * `onPlatformViewCreated`), at which point JS issues `attachScrollAd`.
11
+ */
12
+
13
+ export default codegenNativeComponent('NovvyScrollAdView');
14
+ //# sourceMappingURL=NovvyScrollAdViewNativeComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["codegenNativeComponent"],"sourceRoot":"../../../src","sources":["spec/NovvyScrollAdViewNativeComponent.ts"],"mappings":";;AACA,OAAOA,sBAAsB,MAAM,yDAAyD;;AAG5F;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA,eAAeA,sBAAsB,CACnC,mBACF,CAAC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=codegen-event-emitter.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["spec/codegen-event-emitter.d.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Public types for the Novvy Ads React Native SDK.
5
+ *
6
+ * These mirror the Flutter plugin's Pigeon data classes
7
+ * (pigeons/novvy_ads_api.dart). At runtime they are structurally identical to
8
+ * the codegen structs in `spec/NativeNovvyAds.ts`, so instances pass straight
9
+ * through the TurboModule with no conversion.
10
+ */
11
+
12
+ /** A single drama-watch history entry used for ad targeting. */
13
+
14
+ /** User gender values accepted by the SDK. */
15
+
16
+ /**
17
+ * User identity and subscription context.
18
+ *
19
+ * Pass to {@link NovvyAds.setUserContext} (full replace) or
20
+ * {@link NovvyAds.updateUserContext} (incremental merge).
21
+ */
22
+
23
+ /**
24
+ * Content and episode context used for ad targeting.
25
+ *
26
+ * Pass to {@link NovvyAds.setContentContext} (full replace) or
27
+ * {@link NovvyAds.updateContentContext} (incremental merge).
28
+ */
29
+
30
+ /** Ad lifecycle event names (mirror Pigeon's `NovvyAdEvent` enum). */
31
+ export let NovvyAdEvent = /*#__PURE__*/function (NovvyAdEvent) {
32
+ /** Ad and creative are ready to show (not emitted for Pause — realtime). */
33
+ NovvyAdEvent["Loaded"] = "loaded";
34
+ /** Ad failed to load / request. */
35
+ NovvyAdEvent["FailedToLoad"] = "failedToLoad";
36
+ /** Ad was shown (full-screen) or became visible (Scroll / Pause). */
37
+ NovvyAdEvent["Showed"] = "showed";
38
+ /** Full-screen ad was closed by the user (Rewarded / Interstitial / Mid / End). */
39
+ NovvyAdEvent["Dismissed"] = "dismissed";
40
+ /** Inline ad was hidden / removed (Scroll onAdHidden, Pause hidden). */
41
+ NovvyAdEvent["Hidden"] = "hidden";
42
+ /** Rewarded ad earned a reward. Carries no data payload. */
43
+ NovvyAdEvent["EarnedReward"] = "earnedReward";
44
+ /** Scroll ad playback tick. Carries `remainingSeconds`. */
45
+ NovvyAdEvent["PlaybackTick"] = "playbackTick";
46
+ return NovvyAdEvent;
47
+ }({});
48
+
49
+ /**
50
+ * Interface for a media player that a {@link NovvyPauseAd} monitors.
51
+ *
52
+ * Implement this to bridge your video/audio player so the SDK can detect
53
+ * playback position and resumption. Mirrors the Flutter plugin's
54
+ * `NovvyPlayerAdapter`.
55
+ */
56
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NovvyAdEvent"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAQA;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAcA;AACA;AACA;AACA;AACA;AACA;;AAOA;AACA,WAAYA,YAAY,0BAAZA,YAAY;EACtB;EADUA,YAAY;EAGtB;EAHUA,YAAY;EAKtB;EALUA,YAAY;EAOtB;EAPUA,YAAY;EAStB;EATUA,YAAY;EAWtB;EAXUA,YAAY;EAatB;EAbUA,YAAY;EAAA,OAAZA,YAAY;AAAA;;AAiBxB;AACA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ import React, { useEffect, useRef, useState } from 'react';
4
+ import { StyleSheet, View } from 'react-native';
5
+ import { NovvyPauseAd } from '../ads/NovvyPauseAd';
6
+ import NativePauseView from '../spec/NovvyPauseAdViewNativeComponent';
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ /**
9
+ * Embeds a {@link NovvyPauseAd} as a native view. Fixed to
10
+ * {@link NovvyPauseAd.cardWidth} × {@link NovvyPauseAd.cardHeight}; position it
11
+ * within your own layout. Mirrors the Flutter plugin's `NovvyPauseAdView`.
12
+ *
13
+ * Touch passthrough / opacity follow the card's shown state so the view is
14
+ * transparent and non-interactive until the ad actually appears.
15
+ */
16
+ export function NovvyPauseAdView({
17
+ ad,
18
+ player,
19
+ style
20
+ }) {
21
+ const attached = useRef(false);
22
+ const [shown, setShown] = useState(false);
23
+ useEffect(() => {
24
+ const prev = ad.onShownChanged;
25
+ ad.onShownChanged = isShown => {
26
+ setShown(isShown);
27
+ prev?.(isShown);
28
+ };
29
+ return () => {
30
+ ad.onShownChanged = prev;
31
+ if (attached.current) {
32
+ ad.detach();
33
+ }
34
+ };
35
+ // eslint-disable-next-line react-hooks/exhaustive-deps
36
+ }, []);
37
+ return /*#__PURE__*/_jsx(View, {
38
+ style: [styles.container, style],
39
+ pointerEvents: shown ? 'auto' : 'none'
40
+ // Claim the RN JS responder while the card is shown so an outer
41
+ // Pressable/Touchable in the host layout can't also fire onPress on
42
+ // the same tap and race with the SDK's CTA (which would resume the
43
+ // video and destroy the ad before the browser opens). The SDK's
44
+ // native tap handling is unaffected: on Android JSTouchDispatcher
45
+ // runs in parallel to native dispatch, and on iOS RCTTouchHandler
46
+ // uses cancelsTouchesInView=NO so native touches still reach the
47
+ // ad view's own gesture recognizer.
48
+ ,
49
+ onStartShouldSetResponder: shown ? () => true : undefined,
50
+ children: /*#__PURE__*/_jsx(NativePauseView, {
51
+ style: [StyleSheet.absoluteFill, {
52
+ opacity: shown ? 1 : 0
53
+ }],
54
+ adObjectId: ad.adObjectId,
55
+ onViewReady: () => {
56
+ if (!attached.current) {
57
+ attached.current = true;
58
+ ad.attach(player);
59
+ }
60
+ }
61
+ })
62
+ });
63
+ }
64
+ const styles = StyleSheet.create({
65
+ container: {
66
+ width: NovvyPauseAd.cardWidth,
67
+ height: NovvyPauseAd.cardHeight
68
+ }
69
+ });
70
+ //# sourceMappingURL=NovvyPauseAdView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useEffect","useRef","useState","StyleSheet","View","NovvyPauseAd","NativePauseView","jsx","_jsx","NovvyPauseAdView","ad","player","style","attached","shown","setShown","prev","onShownChanged","isShown","current","detach","styles","container","pointerEvents","onStartShouldSetResponder","undefined","children","absoluteFill","opacity","adObjectId","onViewReady","attach","create","width","cardWidth","height","cardHeight"],"sourceRoot":"../../../src","sources":["views/NovvyPauseAdView.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAC1D,SAASC,UAAU,EAAEC,IAAI,QAAwC,cAAc;AAE/E,SAASC,YAAY,QAAQ,qBAAqB;AAElD,OAAOC,eAAe,MAAM,yCAAyC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAUtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAAC;EAC/BC,EAAE;EACFC,MAAM;EACNC;AACqB,CAAC,EAAsB;EAC5C,MAAMC,QAAQ,GAAGZ,MAAM,CAAC,KAAK,CAAC;EAC9B,MAAM,CAACa,KAAK,EAAEC,QAAQ,CAAC,GAAGb,QAAQ,CAAC,KAAK,CAAC;EAEzCF,SAAS,CAAC,MAAM;IACd,MAAMgB,IAAI,GAAGN,EAAE,CAACO,cAAc;IAC9BP,EAAE,CAACO,cAAc,GAAIC,OAAO,IAAK;MAC/BH,QAAQ,CAACG,OAAO,CAAC;MACjBF,IAAI,GAAGE,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,MAAM;MACXR,EAAE,CAACO,cAAc,GAAGD,IAAI;MACxB,IAAIH,QAAQ,CAACM,OAAO,EAAE;QACpBT,EAAE,CAACU,MAAM,CAAC,CAAC;MACb;IACF,CAAC;IACD;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,oBACEZ,IAAA,CAACJ,IAAI;IACHQ,KAAK,EAAE,CAACS,MAAM,CAACC,SAAS,EAAEV,KAAK,CAAE;IACjCW,aAAa,EAAET,KAAK,GAAG,MAAM,GAAG;IAChC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAAA;IACAU,yBAAyB,EAAEV,KAAK,GAAG,MAAM,IAAI,GAAGW,SAAU;IAAAC,QAAA,eAE1DlB,IAAA,CAACF,eAAe;MACdM,KAAK,EAAE,CAACT,UAAU,CAACwB,YAAY,EAAE;QAAEC,OAAO,EAAEd,KAAK,GAAG,CAAC,GAAG;MAAE,CAAC,CAAE;MAC7De,UAAU,EAAEnB,EAAE,CAACmB,UAAW;MAC1BC,WAAW,EAAEA,CAAA,KAAM;QACjB,IAAI,CAACjB,QAAQ,CAACM,OAAO,EAAE;UACrBN,QAAQ,CAACM,OAAO,GAAG,IAAI;UACvBT,EAAE,CAACqB,MAAM,CAACpB,MAAM,CAAC;QACnB;MACF;IAAE,CACH;EAAC,CACE,CAAC;AAEX;AAEA,MAAMU,MAAM,GAAGlB,UAAU,CAAC6B,MAAM,CAAC;EAC/BV,SAAS,EAAE;IACTW,KAAK,EAAE5B,YAAY,CAAC6B,SAAS;IAC7BC,MAAM,EAAE9B,YAAY,CAAC+B;EACvB;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ import React, { useEffect, useRef } from 'react';
4
+ import { StyleSheet, View } from 'react-native';
5
+ import NativeScrollView from '../spec/NovvyScrollAdViewNativeComponent';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ /**
8
+ * Embeds a {@link NovvyScrollAd} as a native view. Wrap it in a container with
9
+ * the desired height for your feed item. Mirrors the Flutter plugin's
10
+ * `NovvyScrollAdView`.
11
+ *
12
+ * A black backdrop paints immediately so the previous page can't show through
13
+ * the slot while the native view is created.
14
+ */
15
+ export function NovvyScrollAdView({
16
+ ad,
17
+ durationSeconds,
18
+ useDefaultSwipeOverlay = true,
19
+ style
20
+ }) {
21
+ const attached = useRef(false);
22
+ useEffect(() => {
23
+ return () => {
24
+ if (attached.current) {
25
+ ad.detach();
26
+ }
27
+ };
28
+ // Detach only on unmount; `ad` identity is stable for the view's lifetime.
29
+ // eslint-disable-next-line react-hooks/exhaustive-deps
30
+ }, []);
31
+ return /*#__PURE__*/_jsx(View, {
32
+ style: [styles.container, style]
33
+ // Claim the RN JS responder for taps so an outer Pressable/Touchable
34
+ // in the host layout can't also fire onPress and race with the SDK's
35
+ // CTA. Only onStart is claimed — a subsequent move gesture can still
36
+ // migrate to an ancestor ScrollView/FlatList via the normal responder
37
+ // negotiation, so vertical feed swiping is preserved.
38
+ ,
39
+ onStartShouldSetResponder: () => true,
40
+ children: /*#__PURE__*/_jsx(NativeScrollView, {
41
+ style: StyleSheet.absoluteFill,
42
+ adObjectId: ad.adObjectId,
43
+ onViewReady: () => {
44
+ if (!attached.current) {
45
+ attached.current = true;
46
+ ad.attach(durationSeconds, useDefaultSwipeOverlay);
47
+ }
48
+ }
49
+ })
50
+ });
51
+ }
52
+ const styles = StyleSheet.create({
53
+ container: {
54
+ backgroundColor: '#000000'
55
+ }
56
+ });
57
+ //# sourceMappingURL=NovvyScrollAdView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useEffect","useRef","StyleSheet","View","NativeScrollView","jsx","_jsx","NovvyScrollAdView","ad","durationSeconds","useDefaultSwipeOverlay","style","attached","current","detach","styles","container","onStartShouldSetResponder","children","absoluteFill","adObjectId","onViewReady","attach","create","backgroundColor"],"sourceRoot":"../../../src","sources":["views/NovvyScrollAdView.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAChD,SAASC,UAAU,EAAEC,IAAI,QAAwC,cAAc;AAG/E,OAAOC,gBAAgB,MAAM,0CAA0C;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAYxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAAC;EAChCC,EAAE;EACFC,eAAe;EACfC,sBAAsB,GAAG,IAAI;EAC7BC;AACsB,CAAC,EAAsB;EAC7C,MAAMC,QAAQ,GAAGX,MAAM,CAAC,KAAK,CAAC;EAE9BD,SAAS,CAAC,MAAM;IACd,OAAO,MAAM;MACX,IAAIY,QAAQ,CAACC,OAAO,EAAE;QACpBL,EAAE,CAACM,MAAM,CAAC,CAAC;MACb;IACF,CAAC;IACD;IACA;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,oBACER,IAAA,CAACH,IAAI;IACHQ,KAAK,EAAE,CAACI,MAAM,CAACC,SAAS,EAAEL,KAAK;IAC/B;IACA;IACA;IACA;IACA;IAAA;IACAM,yBAAyB,EAAEA,CAAA,KAAM,IAAK;IAAAC,QAAA,eAEtCZ,IAAA,CAACF,gBAAgB;MACfO,KAAK,EAAET,UAAU,CAACiB,YAAa;MAC/BC,UAAU,EAAEZ,EAAE,CAACY,UAAW;MAC1BC,WAAW,EAAEA,CAAA,KAAM;QACjB,IAAI,CAACT,QAAQ,CAACC,OAAO,EAAE;UACrBD,QAAQ,CAACC,OAAO,GAAG,IAAI;UACvBL,EAAE,CAACc,MAAM,CAACb,eAAe,EAAEC,sBAAsB,CAAC;QACpD;MACF;IAAE,CACH;EAAC,CACE,CAAC;AAEX;AAEA,MAAMK,MAAM,GAAGb,UAAU,CAACqB,MAAM,CAAC;EAC/BP,SAAS,EAAE;IACTQ,eAAe,EAAE;EACnB;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,69 @@
1
+ import type { NovvyUserContext, NovvyContentContext } from './types';
2
+ /**
3
+ * SDK entry point for Novvy Ads.
4
+ *
5
+ * A **thin** surface — it only wraps the native SDK's top-level entry (init +
6
+ * user/content context + email hashing). Ads themselves are created and driven
7
+ * directly through their classes ({@link NovvyInterstitialAd},
8
+ * {@link NovvyRewardedAd}, {@link NovvyMidAd}, {@link NovvyEndAd},
9
+ * {@link NovvyScrollAd}, {@link NovvyPauseAd}); the host owns each instance and
10
+ * wires its per-ad callbacks. Mirrors the Flutter plugin's `NovvyAds`.
11
+ *
12
+ * ```ts
13
+ * // 1. Initialize once at app startup (optionally with a user profile).
14
+ * const ok = await NovvyAds.initialize({
15
+ * appId: '...', endpoint: '...', apiKey: '...',
16
+ * userContext: { userId: '...', isPaidUser: true },
17
+ * });
18
+ *
19
+ * // 2. Set / refresh content context (and user profile if not set above).
20
+ * NovvyAds.setContentContext({ seriesName: '...', episodeNumber: 1 });
21
+ *
22
+ * // 3. Create an ad, wire callbacks, load & show.
23
+ * const ad = new NovvyRewardedAd('...');
24
+ * let earned = false;
25
+ * ad.onAdLoaded = () => ad.show();
26
+ * ad.onUserEarnedReward = () => { earned = true; };
27
+ * ad.onAdDismissed = () => { if (earned) grantReward(); };
28
+ * ad.onAdFailedToLoad = () => {};
29
+ * ad.load();
30
+ * ```
31
+ */
32
+ export declare const NovvyAds: {
33
+ /**
34
+ * Initialize the Novvy SDK. Must be called before creating any ads.
35
+ *
36
+ * Resolves with the native init-complete signal — `true` on success, `false`
37
+ * if initialization failed. May be called again (e.g. after login/logout);
38
+ * the native SDK handles re-initialization idempotently.
39
+ *
40
+ * @param userContext optional user-targeting context applied at init time
41
+ * (equivalent to calling {@link setUserContext} right after).
42
+ */
43
+ initialize(options: {
44
+ appId: string;
45
+ endpoint: string;
46
+ apiKey: string;
47
+ userContext?: NovvyUserContext | null;
48
+ }): Promise<boolean>;
49
+ /**
50
+ * Hashes an email address using SHA-256 for privacy compliance. Use before
51
+ * passing an email to {@link NovvyUserContext.hashedEmail}. Pure JS — mirrors
52
+ * the native SDK's `helperHashEmail()`.
53
+ */
54
+ helperHashEmail(email: string): string;
55
+ /** Replaces the entire user context (null fields clear existing values). */
56
+ setUserContext(context: NovvyUserContext): void;
57
+ /** Incrementally merges user context fields (null fields preserve existing values). */
58
+ updateUserContext(partial: NovvyUserContext): void;
59
+ /**
60
+ * Replaces the entire content context (null fields clear existing values).
61
+ *
62
+ * Call before each `load()` / `attach()` in drama scenarios — the backend
63
+ * needs the current series/episode or it returns no fill.
64
+ */
65
+ setContentContext(context: NovvyContentContext): void;
66
+ /** Incrementally merges content context fields (null fields preserve existing values). */
67
+ updateContentContext(partial: NovvyContentContext): void;
68
+ };
69
+ //# sourceMappingURL=NovvyAds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NovvyAds.d.ts","sourceRoot":"","sources":["../../src/NovvyAds.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,QAAQ;IACnB;;;;;;;;;OASG;wBACuB;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;KACvC,GAAG,OAAO,CAAC,OAAO,CAAC;IAapB;;;;OAIG;2BACoB,MAAM,GAAG,MAAM;IAItC,4EAA4E;4BACpD,gBAAgB,GAAG,IAAI;IAI/C,uFAAuF;+BAC5D,gBAAgB,GAAG,IAAI;IAIlD;;;;;OAKG;+BACwB,mBAAmB,GAAG,IAAI;IAIrD,0FAA0F;kCAC5D,mBAAmB,GAAG,IAAI;CAGzD,CAAC"}
@@ -0,0 +1,57 @@
1
+ import type { NativeAdEvent } from '../spec/NativeNovvyAds';
2
+ /**
3
+ * Base class for all Novvy ad types.
4
+ *
5
+ * Mirrors the Flutter plugin's `NovvyAd` (lib/novvy_ads_plugin.dart).
6
+ * Instances are owned by the host: keep a reference alive until the ad
7
+ * completes (`onAdDismissed` / `onAdHidden`) and then call {@link destroy}.
8
+ */
9
+ export declare abstract class NovvyAd {
10
+ readonly adUnitId: string;
11
+ private readonly _adObjectId;
12
+ protected _isReady: boolean;
13
+ protected _disposed: boolean;
14
+ private _unsubscribe;
15
+ /** Called when the ad has loaded successfully. */
16
+ onAdLoaded?: () => void;
17
+ /** Called when the ad fails to load / request. */
18
+ onAdFailedToLoad?: (error: string) => void;
19
+ constructor(adUnitId: string);
20
+ /** The unique object ID for this ad instance. */
21
+ get adObjectId(): string;
22
+ /** Whether the ad is loaded and ready to show. */
23
+ get isReady(): boolean;
24
+ /**
25
+ * Subscribes to this ad's native event stream (filtered by object ID).
26
+ * Idempotent.
27
+ */
28
+ protected _subscribe(): void;
29
+ /**
30
+ * Loads the ad. Not used by {@link NovvyPauseAd} (realtime, no load step).
31
+ *
32
+ * Callback-driven: the outcome is delivered via {@link onAdLoaded} /
33
+ * {@link onAdFailedToLoad}.
34
+ */
35
+ load(): void;
36
+ /** Releases the ad resources. Idempotent. */
37
+ destroy(): void;
38
+ protected abstract _loadNative(): void;
39
+ protected abstract _handleInternalEvent(event: NativeAdEvent): void;
40
+ /**
41
+ * Shared handling of the common load / fail transitions.
42
+ * Returns true if the event was consumed here.
43
+ */
44
+ protected _handleCommonLoad(event: NativeAdEvent): boolean;
45
+ /**
46
+ * Monotonically increasing per-process counter guaranteeing `adObjectId`
47
+ * uniqueness even when many ads are constructed within the same millisecond
48
+ * (e.g. batch-preloading feed items in a synchronous loop). `Date.now()` has
49
+ * only millisecond resolution, so timestamp + random alone left a real
50
+ * (~1/10000 per pair) collision window; a colliding id would cross-wire two
51
+ * ads' event streams. The counter closes that window; the timestamp/random
52
+ * still disambiguate ids across separate app launches.
53
+ */
54
+ private static _counter;
55
+ private static _generateUniqueId;
56
+ }
57
+ //# sourceMappingURL=NovvyAd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NovvyAd.d.ts","sourceRoot":"","sources":["../../../src/ads/NovvyAd.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAG5D;;;;;;GAMG;AACH,8BAAsB,OAAO;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAErC,SAAS,CAAC,QAAQ,UAAS;IAC3B,SAAS,CAAC,SAAS,UAAS;IAE5B,OAAO,CAAC,YAAY,CAA6B;IAEjD,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,kDAAkD;IAClD,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;gBAE/B,QAAQ,EAAE,MAAM;IAK5B,iDAAiD;IACjD,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,kDAAkD;IAClD,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;;OAGG;IACH,SAAS,CAAC,UAAU,IAAI,IAAI;IAS5B;;;;;OAKG;IACH,IAAI,IAAI,IAAI;IAaZ,6CAA6C;IAC7C,OAAO,IAAI,IAAI;IAWf,SAAS,CAAC,QAAQ,CAAC,WAAW,IAAI,IAAI;IACtC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAEnE;;;OAGG;IACH,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO;IAgB1D;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAK;IAE5B,OAAO,CAAC,MAAM,CAAC,iBAAiB;CAMjC"}
@@ -0,0 +1,7 @@
1
+ import { NovvyFullScreenAd } from './NovvyFullScreenAd';
2
+ /** An end-roll (full-screen) ad, shown after an episode finishes. */
3
+ export declare class NovvyEndAd extends NovvyFullScreenAd {
4
+ protected _loadNative(): void;
5
+ show(): void;
6
+ }
7
+ //# sourceMappingURL=NovvyEndAd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NovvyEndAd.d.ts","sourceRoot":"","sources":["../../../src/ads/NovvyEndAd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,qEAAqE;AACrE,qBAAa,UAAW,SAAQ,iBAAiB;IAC/C,SAAS,CAAC,WAAW,IAAI,IAAI;IAI7B,IAAI,IAAI,IAAI;CAIb"}
@@ -0,0 +1,19 @@
1
+ import type { NativeAdEvent } from '../spec/NativeNovvyAds';
2
+ import { NovvyAd } from './NovvyAd';
3
+ /**
4
+ * Base for full-screen ads that follow load → show → dismissed.
5
+ * Mirrors the Flutter plugin's `_NovvyFullScreenAd`.
6
+ */
7
+ export declare abstract class NovvyFullScreenAd extends NovvyAd {
8
+ /** Called when the ad is displayed. */
9
+ onAdShowed?: () => void;
10
+ /** Called when the ad is dismissed (closed) by the user. */
11
+ onAdDismissed?: () => void;
12
+ /** Shows the ad. Must be called after it has loaded. */
13
+ abstract show(): void;
14
+ protected _handleInternalEvent(event: NativeAdEvent): void;
15
+ protected _assertReady(): void;
16
+ /** Uses the module accessor in subclasses. */
17
+ protected get native(): import("../spec/NativeNovvyAds").Spec;
18
+ }
19
+ //# sourceMappingURL=NovvyFullScreenAd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NovvyFullScreenAd.d.ts","sourceRoot":"","sources":["../../../src/ads/NovvyFullScreenAd.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;GAGG;AACH,8BAAsB,iBAAkB,SAAQ,OAAO;IACrD,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAE3B,wDAAwD;IACxD,QAAQ,CAAC,IAAI,IAAI,IAAI;IAErB,SAAS,CAAC,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAiB1D,SAAS,CAAC,YAAY,IAAI,IAAI;IAM9B,8CAA8C;IAC9C,SAAS,KAAK,MAAM,0CAEnB;CACF"}
@@ -0,0 +1,7 @@
1
+ import { NovvyFullScreenAd } from './NovvyFullScreenAd';
2
+ /** An interstitial (full-screen) ad. */
3
+ export declare class NovvyInterstitialAd extends NovvyFullScreenAd {
4
+ protected _loadNative(): void;
5
+ show(): void;
6
+ }
7
+ //# sourceMappingURL=NovvyInterstitialAd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NovvyInterstitialAd.d.ts","sourceRoot":"","sources":["../../../src/ads/NovvyInterstitialAd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,wCAAwC;AACxC,qBAAa,mBAAoB,SAAQ,iBAAiB;IACxD,SAAS,CAAC,WAAW,IAAI,IAAI;IAI7B,IAAI,IAAI,IAAI;CAIb"}
@@ -0,0 +1,7 @@
1
+ import { NovvyFullScreenAd } from './NovvyFullScreenAd';
2
+ /** A mid-roll (full-screen) ad, shown at an in-episode break. */
3
+ export declare class NovvyMidAd extends NovvyFullScreenAd {
4
+ protected _loadNative(): void;
5
+ show(): void;
6
+ }
7
+ //# sourceMappingURL=NovvyMidAd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NovvyMidAd.d.ts","sourceRoot":"","sources":["../../../src/ads/NovvyMidAd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,iEAAiE;AACjE,qBAAa,UAAW,SAAQ,iBAAiB;IAC/C,SAAS,CAAC,WAAW,IAAI,IAAI;IAI7B,IAAI,IAAI,IAAI;CAIb"}
@@ -0,0 +1,45 @@
1
+ import type { NativeAdEvent } from '../spec/NativeNovvyAds';
2
+ import { type NovvyPlayerAdapter } from '../types';
3
+ import { NovvyAd } from './NovvyAd';
4
+ /**
5
+ * A realtime pause card (fixed 260×90) shown while the player is paused.
6
+ *
7
+ * Unlike other ads there is **no** {@link load} step: embedding
8
+ * `<NovvyPauseAdView>` issues the request immediately via {@link attach}.
9
+ * Show it the moment playback is paused and {@link destroy} on resume
10
+ * ({@link onAdHidden}). Mirrors the Flutter plugin's `NovvyPauseAd`.
11
+ */
12
+ export declare class NovvyPauseAd extends NovvyAd {
13
+ /** The Fabric component name used by `<NovvyPauseAdView>`. */
14
+ static readonly viewType = "NovvyPauseAdView";
15
+ /** Pause card width in logical pixels (matches native SDK). */
16
+ static readonly cardWidth = 260;
17
+ /** Pause card height in logical pixels (matches native SDK). */
18
+ static readonly cardHeight = 90;
19
+ /** Called when the pause card is shown. */
20
+ onAdShowed?: () => void;
21
+ /** Called when the card is hidden (playback resumed). */
22
+ onAdHidden?: () => void;
23
+ /**
24
+ * Called when the native card's shown state changes, so a view can toggle
25
+ * touch passthrough / opacity (mirrors Flutter's `shownNotifier`).
26
+ */
27
+ onShownChanged?: (shown: boolean) => void;
28
+ private _player;
29
+ private _timer;
30
+ protected _loadNative(): never;
31
+ /**
32
+ * Attach the pause ad and issue the request in realtime.
33
+ *
34
+ * The player's current state is read once and sent with the request; a
35
+ * 500ms timer then keeps pushing state so the SDK can detect resumption.
36
+ */
37
+ attach(player: NovvyPlayerAdapter): void;
38
+ /** Detach the pause ad and stop pushing player state. */
39
+ detach(): void;
40
+ destroy(): void;
41
+ private _startPlayerTimer;
42
+ private _stopPlayerTimer;
43
+ protected _handleInternalEvent(event: NativeAdEvent): void;
44
+ }
45
+ //# sourceMappingURL=NovvyPauseAd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NovvyPauseAd.d.ts","sourceRoot":"","sources":["../../../src/ads/NovvyPauseAd.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC;;;;;;;GAOG;AACH,qBAAa,YAAa,SAAQ,OAAO;IACvC,8DAA8D;IAC9D,MAAM,CAAC,QAAQ,CAAC,QAAQ,sBAAsB;IAC9C,+DAA+D;IAC/D,MAAM,CAAC,QAAQ,CAAC,SAAS,OAAO;IAChC,gEAAgE;IAChE,MAAM,CAAC,QAAQ,CAAC,UAAU,MAAM;IAEhC,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAE1C,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,MAAM,CAA+C;IAE7D,SAAS,CAAC,WAAW,IAAI,KAAK;IAI9B;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAexC,yDAAyD;IACzD,MAAM,IAAI,IAAI;IAMd,OAAO,IAAI,IAAI;IASf,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,gBAAgB;IAOxB,SAAS,CAAC,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;CAwB3D"}
@@ -0,0 +1,19 @@
1
+ import type { NativeAdEvent } from '../spec/NativeNovvyAds';
2
+ import { NovvyAd } from './NovvyAd';
3
+ /** A rewarded video ad. */
4
+ export declare class NovvyRewardedAd extends NovvyAd {
5
+ /** Called when the ad is displayed. */
6
+ onAdShowed?: () => void;
7
+ /** Called when the ad is dismissed by the user. */
8
+ onAdDismissed?: () => void;
9
+ /**
10
+ * Called once when the user earns the reward. No reward payload — the native
11
+ * SDKs deliver a parameterless signal (grant the host's own reward).
12
+ */
13
+ onUserEarnedReward?: () => void;
14
+ protected _loadNative(): void;
15
+ /** Shows the rewarded video ad. Must be called after it has loaded. */
16
+ show(): void;
17
+ protected _handleInternalEvent(event: NativeAdEvent): void;
18
+ }
19
+ //# sourceMappingURL=NovvyRewardedAd.d.ts.map