teads-react-native 6.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -0
- package/README.md +93 -0
- package/android/bin/build/generated/source/buildConfig/debug/com/outbrainreactnative/BuildConfig.class +0 -0
- package/android/bin/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml +7 -0
- package/android/bin/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output-metadata.json +18 -0
- package/android/bin/build/intermediates/aar_metadata/debug/aar-metadata.properties +6 -0
- package/android/bin/build/intermediates/annotation_processor_list/debug/annotationProcessors.json +1 -0
- package/android/bin/build/intermediates/compile_library_classes_jar/debug/classes.jar +0 -0
- package/android/bin/build/intermediates/compile_r_class_jar/debug/R.jar +0 -0
- package/android/bin/build/intermediates/compile_symbol_list/debug/R.txt +0 -0
- package/android/bin/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +1 -0
- package/android/bin/build/intermediates/incremental/debug/packageDebugResources/merger.xml +2 -0
- package/android/bin/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
- package/android/bin/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
- package/android/bin/build/intermediates/incremental/packageDebugAssets/merger.xml +2 -0
- package/android/bin/build/intermediates/local_only_symbol_list/debug/R-def.txt +2 -0
- package/android/bin/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt +7 -0
- package/android/bin/build/intermediates/merged_manifest/debug/AndroidManifest.xml +7 -0
- package/android/bin/build/intermediates/navigation_json/debug/navigation.json +1 -0
- package/android/bin/build/intermediates/runtime_library_classes_jar/debug/classes.jar +0 -0
- package/android/bin/build/intermediates/symbol_list_with_package_name/debug/package-aware-r.txt +1 -0
- package/android/bin/build/outputs/logs/manifest-merger-debug-report.txt +16 -0
- package/android/bin/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
- package/android/bin/build.gradle +101 -0
- package/android/bin/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/bin/gradle/wrapper/gradle-wrapper.properties +7 -0
- package/android/bin/gradle.properties +5 -0
- package/android/bin/gradlew +249 -0
- package/android/bin/gradlew.bat +92 -0
- package/android/bin/src/main/AndroidManifest.xml +3 -0
- package/android/bin/src/main/AndroidManifestNew.xml +2 -0
- package/android/bin/src/main/java/com/outbrainreactnative/OutbrainNativePackage.class +0 -0
- package/android/bin/src/main/java/com/outbrainreactnative/SFWebViewWidgetManager.class +0 -0
- package/android/bin/src/main/java/com/outbrainreactnative/SFWebViewWidgetWrapper.class +0 -0
- package/android/bin/src/main/java/com/outbrainreactnative/Utils.class +0 -0
- package/android/build.gradle +129 -0
- package/android/generated/java/com/facebook/react/viewmanagers/TeadsAdPlacementFeedManagerDelegate.java +62 -0
- package/android/generated/java/com/facebook/react/viewmanagers/TeadsAdPlacementFeedManagerInterface.java +28 -0
- package/android/generated/java/com/facebook/react/viewmanagers/TeadsAdPlacementMediaManagerDelegate.java +44 -0
- package/android/generated/java/com/facebook/react/viewmanagers/TeadsAdPlacementMediaManagerInterface.java +22 -0
- package/android/generated/jni/CMakeLists.txt +36 -0
- package/android/generated/jni/RNTeadsReactNativeViewSpec-generated.cpp +22 -0
- package/android/generated/jni/RNTeadsReactNativeViewSpec.h +24 -0
- package/android/generated/jni/react/renderer/components/RNTeadsReactNativeViewSpec/ComponentDescriptors.cpp +23 -0
- package/android/generated/jni/react/renderer/components/RNTeadsReactNativeViewSpec/ComponentDescriptors.h +25 -0
- package/android/generated/jni/react/renderer/components/RNTeadsReactNativeViewSpec/EventEmitters.cpp +17 -0
- package/android/generated/jni/react/renderer/components/RNTeadsReactNativeViewSpec/EventEmitters.h +30 -0
- package/android/generated/jni/react/renderer/components/RNTeadsReactNativeViewSpec/Props.cpp +46 -0
- package/android/generated/jni/react/renderer/components/RNTeadsReactNativeViewSpec/Props.h +51 -0
- package/android/generated/jni/react/renderer/components/RNTeadsReactNativeViewSpec/RNTeadsReactNativeViewSpecJSI-generated.cpp +17 -0
- package/android/generated/jni/react/renderer/components/RNTeadsReactNativeViewSpec/RNTeadsReactNativeViewSpecJSI.h +19 -0
- package/android/generated/jni/react/renderer/components/RNTeadsReactNativeViewSpec/ShadowNodes.cpp +18 -0
- package/android/generated/jni/react/renderer/components/RNTeadsReactNativeViewSpec/ShadowNodes.h +43 -0
- package/android/generated/jni/react/renderer/components/RNTeadsReactNativeViewSpec/States.cpp +16 -0
- package/android/generated/jni/react/renderer/components/RNTeadsReactNativeViewSpec/States.h +41 -0
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/AndroidManifestNew.xml +2 -0
- package/android/src/main/java/tv/teads/reactnative/SFWidgetContainer.java +19 -0
- package/android/src/main/java/tv/teads/reactnative/TeadsAdPlacementFeedManager.java +109 -0
- package/android/src/main/java/tv/teads/reactnative/TeadsFeedPackage.java +53 -0
- package/android/src/main/java/tv/teads/reactnative/TeadsMediaPlacementManager.java +76 -0
- package/android/src/main/java/tv/teads/reactnative/TeadsPlacementContainer.java +327 -0
- package/android/src/main/java/tv/teads/reactnative/Utils.java +65 -0
- package/ios/RCTTeadsAdPlacementFeed.h +22 -0
- package/ios/RCTTeadsAdPlacementFeed.mm +114 -0
- package/ios/RCTTeadsAdPlacementMedia.h +23 -0
- package/ios/RCTTeadsAdPlacementMedia.mm +91 -0
- package/ios/TeadsAdContainer.swift +212 -0
- package/ios/TeadsEventModule.h +16 -0
- package/ios/TeadsEventModule.mm +52 -0
- package/ios/TeadsReactNative.h +8 -0
- package/ios/generated/RNTeadsReactNativeViewSpec/ComponentDescriptors.cpp +23 -0
- package/ios/generated/RNTeadsReactNativeViewSpec/ComponentDescriptors.h +25 -0
- package/ios/generated/RNTeadsReactNativeViewSpec/EventEmitters.cpp +17 -0
- package/ios/generated/RNTeadsReactNativeViewSpec/EventEmitters.h +30 -0
- package/ios/generated/RNTeadsReactNativeViewSpec/Props.cpp +46 -0
- package/ios/generated/RNTeadsReactNativeViewSpec/Props.h +51 -0
- package/ios/generated/RNTeadsReactNativeViewSpec/RCTComponentViewHelpers.h +24 -0
- package/ios/generated/RNTeadsReactNativeViewSpec/RNTeadsReactNativeViewSpec-generated.mm +16 -0
- package/ios/generated/RNTeadsReactNativeViewSpec/RNTeadsReactNativeViewSpec.h +38 -0
- package/ios/generated/RNTeadsReactNativeViewSpec/ShadowNodes.cpp +18 -0
- package/ios/generated/RNTeadsReactNativeViewSpec/ShadowNodes.h +43 -0
- package/ios/generated/RNTeadsReactNativeViewSpec/States.cpp +16 -0
- package/ios/generated/RNTeadsReactNativeViewSpec/States.h +41 -0
- package/ios/generated/RNTeadsReactNativeViewSpecJSI-generated.cpp +17 -0
- package/ios/generated/RNTeadsReactNativeViewSpecJSI.h +19 -0
- package/lib/commonjs/DefaultTeadsWidgetHandler.js +21 -0
- package/lib/commonjs/DefaultTeadsWidgetHandler.js.map +1 -0
- package/lib/commonjs/TeadsAdPlacementFeed.js +131 -0
- package/lib/commonjs/TeadsAdPlacementFeed.js.map +1 -0
- package/lib/commonjs/TeadsAdPlacementMedia.js +115 -0
- package/lib/commonjs/TeadsAdPlacementMedia.js.map +1 -0
- package/lib/commonjs/TeadsInAppBrowser.js +48 -0
- package/lib/commonjs/TeadsInAppBrowser.js.map +1 -0
- package/lib/commonjs/TeadsMediaNativeComponent.ts +15 -0
- package/lib/commonjs/WebViewNativeComponent.ts +21 -0
- package/lib/commonjs/constants.js +9 -0
- package/lib/commonjs/constants.js.map +1 -0
- package/lib/commonjs/index.js +20 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/types.d.js +2 -0
- package/lib/commonjs/types.d.js.map +1 -0
- package/lib/commonjs/version.js +8 -0
- package/lib/commonjs/version.js.map +1 -0
- package/lib/module/DefaultTeadsWidgetHandler.js +17 -0
- package/lib/module/DefaultTeadsWidgetHandler.js.map +1 -0
- package/lib/module/TeadsAdPlacementFeed.js +126 -0
- package/lib/module/TeadsAdPlacementFeed.js.map +1 -0
- package/lib/module/TeadsAdPlacementMedia.js +110 -0
- package/lib/module/TeadsAdPlacementMedia.js.map +1 -0
- package/lib/module/TeadsInAppBrowser.js +44 -0
- package/lib/module/TeadsInAppBrowser.js.map +1 -0
- package/lib/module/TeadsMediaNativeComponent.ts +15 -0
- package/lib/module/WebViewNativeComponent.ts +21 -0
- package/lib/module/constants.js +5 -0
- package/lib/module/constants.js.map +1 -0
- package/lib/module/index.js +5 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/types.d.js +2 -0
- package/lib/module/types.d.js.map +1 -0
- package/lib/module/version.js +4 -0
- package/lib/module/version.js.map +1 -0
- package/lib/typescript/commonjs/package.json +1 -0
- package/lib/typescript/commonjs/src/DefaultTeadsWidgetHandler.d.ts +4 -0
- package/lib/typescript/commonjs/src/DefaultTeadsWidgetHandler.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/TeadsAdPlacementFeed.d.ts +3 -0
- package/lib/typescript/commonjs/src/TeadsAdPlacementFeed.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/TeadsAdPlacementMedia.d.ts +3 -0
- package/lib/typescript/commonjs/src/TeadsAdPlacementMedia.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/TeadsInAppBrowser.d.ts +4 -0
- package/lib/typescript/commonjs/src/TeadsInAppBrowser.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/TeadsMediaNativeComponent.d.ts +12 -0
- package/lib/typescript/commonjs/src/TeadsMediaNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/WebViewNativeComponent.d.ts +18 -0
- package/lib/typescript/commonjs/src/WebViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/constants.d.ts +3 -0
- package/lib/typescript/commonjs/src/constants.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/index.d.ts +4 -0
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/version.d.ts +2 -0
- package/lib/typescript/commonjs/src/version.d.ts.map +1 -0
- package/lib/typescript/module/package.json +1 -0
- package/lib/typescript/module/src/DefaultTeadsWidgetHandler.d.ts +4 -0
- package/lib/typescript/module/src/DefaultTeadsWidgetHandler.d.ts.map +1 -0
- package/lib/typescript/module/src/TeadsAdPlacementFeed.d.ts +3 -0
- package/lib/typescript/module/src/TeadsAdPlacementFeed.d.ts.map +1 -0
- package/lib/typescript/module/src/TeadsAdPlacementMedia.d.ts +3 -0
- package/lib/typescript/module/src/TeadsAdPlacementMedia.d.ts.map +1 -0
- package/lib/typescript/module/src/TeadsInAppBrowser.d.ts +4 -0
- package/lib/typescript/module/src/TeadsInAppBrowser.d.ts.map +1 -0
- package/lib/typescript/module/src/TeadsMediaNativeComponent.d.ts +12 -0
- package/lib/typescript/module/src/TeadsMediaNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/WebViewNativeComponent.d.ts +18 -0
- package/lib/typescript/module/src/WebViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/constants.d.ts +3 -0
- package/lib/typescript/module/src/constants.d.ts.map +1 -0
- package/lib/typescript/module/src/index.d.ts +4 -0
- package/lib/typescript/module/src/index.d.ts.map +1 -0
- package/lib/typescript/module/src/version.d.ts +2 -0
- package/lib/typescript/module/src/version.d.ts.map +1 -0
- package/package.json +227 -0
- package/src/DefaultTeadsWidgetHandler.ts +17 -0
- package/src/TeadsAdPlacementFeed.tsx +142 -0
- package/src/TeadsAdPlacementMedia.tsx +127 -0
- package/src/TeadsInAppBrowser.ts +42 -0
- package/src/TeadsMediaNativeComponent.ts +15 -0
- package/src/WebViewNativeComponent.ts +21 -0
- package/src/constants.ts +11 -0
- package/src/index.tsx +9 -0
- package/src/types.d.ts +32 -0
- package/src/version.ts +1 -0
- package/teads-react-native.podspec +42 -0
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
//
|
|
2
|
+
// TeadsAdContainer.swift
|
|
3
|
+
// TeadsReactNative
|
|
4
|
+
//
|
|
5
|
+
// Created by Ofek Cohen on 03/04/2025.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import UIKit
|
|
9
|
+
import TeadsSDK
|
|
10
|
+
import React
|
|
11
|
+
|
|
12
|
+
@objcMembers
|
|
13
|
+
@objc(TeadsAdContainer)
|
|
14
|
+
public class TeadsAdContainer: UIView {
|
|
15
|
+
|
|
16
|
+
private var adView: UIView?
|
|
17
|
+
private var teadsFeedPlacement: TeadsAdPlacementFeed?
|
|
18
|
+
private var teadsMediaPlacement: TeadsAdPlacementMedia?
|
|
19
|
+
let TeadsEventModuleInstance = TeadsEventModule()
|
|
20
|
+
var widgetRandomId: Int = -1
|
|
21
|
+
private var initialPropsSet: Bool = false
|
|
22
|
+
private var isBeingDeallocated: Bool = false
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
public override init(frame: CGRect) {
|
|
26
|
+
super.init(frame: frame)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
deinit {
|
|
30
|
+
// Mark as being deallocated to prevent delegate callbacks from accessing deallocated memory
|
|
31
|
+
isBeingDeallocated = true
|
|
32
|
+
// Clean up TeadsSDK placements
|
|
33
|
+
teadsFeedPlacement = nil
|
|
34
|
+
teadsMediaPlacement = nil
|
|
35
|
+
adView?.removeFromSuperview()
|
|
36
|
+
adView = nil
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
public func configureWith(
|
|
40
|
+
pid: String,
|
|
41
|
+
widgetRandomId: Int,
|
|
42
|
+
url: String,
|
|
43
|
+
installationKey: String,
|
|
44
|
+
packageVersion: String) {
|
|
45
|
+
|
|
46
|
+
guard !initialPropsSet, !isBeingDeallocated else {
|
|
47
|
+
return // prevent reconfiguring or configuring during deallocation
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
self.widgetRandomId = widgetRandomId
|
|
51
|
+
initialPropsSet = true
|
|
52
|
+
guard let pidInt = Int(pid) else {
|
|
53
|
+
print("TeadsAdContainer: Invalid PID: \(pid)")
|
|
54
|
+
return
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
self.teadsMediaPlacement = Teads.createPlacement(with: .init(pid: pidInt, articleUrl: URL(string:"http://t.teads.tv/")) , delegate: self)
|
|
58
|
+
|
|
59
|
+
do {
|
|
60
|
+
guard let placement = self.teadsMediaPlacement else {
|
|
61
|
+
print("TeadsAdContainer: Failed to create media placement")
|
|
62
|
+
return
|
|
63
|
+
}
|
|
64
|
+
adView = try placement.loadAd()
|
|
65
|
+
} catch {
|
|
66
|
+
print("TeadsAdContainer: Failed to load ad: \(error)")
|
|
67
|
+
return
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
guard let adView else {
|
|
71
|
+
print("TeadsAdContainer: adView is nil after loadAd")
|
|
72
|
+
return
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
adView.translatesAutoresizingMaskIntoConstraints = false
|
|
76
|
+
addSubview(adView)
|
|
77
|
+
NSLayoutConstraint.activate([
|
|
78
|
+
adView.topAnchor.constraint(equalTo: topAnchor),
|
|
79
|
+
adView.leadingAnchor.constraint(equalTo: leadingAnchor),
|
|
80
|
+
adView.trailingAnchor.constraint(equalTo: trailingAnchor),
|
|
81
|
+
adView.bottomAnchor.constraint(equalTo: bottomAnchor)
|
|
82
|
+
])
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
public func configureWith(
|
|
86
|
+
widgetId: String,
|
|
87
|
+
widgetRandomId: Int,
|
|
88
|
+
widgetIndex: Int,
|
|
89
|
+
url: String,
|
|
90
|
+
installationKey: String,
|
|
91
|
+
packageVersion: String,
|
|
92
|
+
extId: String?,
|
|
93
|
+
extSecondaryId: String?,
|
|
94
|
+
userId: String?,
|
|
95
|
+
pubImpId: String?,
|
|
96
|
+
darkMode: Bool) {
|
|
97
|
+
|
|
98
|
+
guard !initialPropsSet, !isBeingDeallocated else {
|
|
99
|
+
return // prevent reconfiguring or configuring during deallocation
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
Teads.configure(with: installationKey)
|
|
103
|
+
|
|
104
|
+
self.widgetRandomId = widgetRandomId
|
|
105
|
+
initialPropsSet = true
|
|
106
|
+
|
|
107
|
+
guard let articleUrl = URL(string: url) else {
|
|
108
|
+
print("TeadsAdContainer: Invalid URL: \(url)")
|
|
109
|
+
return
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
self.teadsFeedPlacement = Teads.createPlacement(
|
|
113
|
+
with: .init(articleUrl: articleUrl, widgetId: widgetId, installationKey: installationKey, widgetIndex: widgetIndex, darkMode: darkMode, extId: extId, extSecondaryId: extSecondaryId, obPubImp: pubImpId),
|
|
114
|
+
delegate: self
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
do {
|
|
118
|
+
guard let placement = self.teadsFeedPlacement else {
|
|
119
|
+
print("TeadsAdContainer: Failed to create feed placement")
|
|
120
|
+
return
|
|
121
|
+
}
|
|
122
|
+
adView = try placement.loadAd()
|
|
123
|
+
print("TeadsAdContainer: adView created: \(String(describing: adView))")
|
|
124
|
+
} catch {
|
|
125
|
+
print("TeadsAdContainer: Failed to load ad: \(error)")
|
|
126
|
+
return
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
guard let adView else {
|
|
130
|
+
print("TeadsAdContainer: adView is nil after loadAd")
|
|
131
|
+
return
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
adView.translatesAutoresizingMaskIntoConstraints = false
|
|
135
|
+
addSubview(adView)
|
|
136
|
+
NSLayoutConstraint.activate([
|
|
137
|
+
adView.topAnchor.constraint(equalTo: topAnchor),
|
|
138
|
+
adView.leadingAnchor.constraint(equalTo: leadingAnchor),
|
|
139
|
+
adView.trailingAnchor.constraint(equalTo: trailingAnchor),
|
|
140
|
+
adView.bottomAnchor.constraint(equalTo: bottomAnchor)
|
|
141
|
+
])
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// This initializer is required, but we can make it unavailable
|
|
145
|
+
@available(*, unavailable)
|
|
146
|
+
required init?(coder: NSCoder) {
|
|
147
|
+
fatalError("init(coder:) has not been implemented")
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
@objc public func toggleDarkMode(_ dark: Bool) {
|
|
151
|
+
self.teadsFeedPlacement?.toggleDarkMode(dark)
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/// Called when the view is being recycled by React Native Fabric
|
|
155
|
+
@objc public func cleanup() {
|
|
156
|
+
isBeingDeallocated = true
|
|
157
|
+
teadsFeedPlacement = nil
|
|
158
|
+
teadsMediaPlacement = nil
|
|
159
|
+
adView?.removeFromSuperview()
|
|
160
|
+
adView = nil
|
|
161
|
+
initialPropsSet = false
|
|
162
|
+
isBeingDeallocated = false
|
|
163
|
+
widgetRandomId = -1
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
extension TeadsAdContainer: TeadsAdPlacementEventsDelegate {
|
|
169
|
+
|
|
170
|
+
public func adPlacement(
|
|
171
|
+
_ placement: TeadsAdPlacementIdentifiable?, didEmitEvent event: TeadsAdPlacementEventName,
|
|
172
|
+
data: [String: Any]?
|
|
173
|
+
) {
|
|
174
|
+
// Guard against callbacks during or after deallocation
|
|
175
|
+
guard !isBeingDeallocated else {
|
|
176
|
+
return
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
if event == .clickedOrganic {
|
|
180
|
+
guard let urlString = data?.recClickUrl, let url = URL(string: urlString) else {
|
|
181
|
+
return
|
|
182
|
+
}
|
|
183
|
+
let args: [String: Any] = [
|
|
184
|
+
"widgetRandomId": widgetRandomId,
|
|
185
|
+
"url": url.absoluteString
|
|
186
|
+
]
|
|
187
|
+
self.TeadsEventModuleInstance.sendWidgetEvent("onOrganicClick", withArgs: args )
|
|
188
|
+
|
|
189
|
+
} else if event == .clicked {
|
|
190
|
+
guard let urlString = data?.recClickUrl, let url = URL(string: urlString) else {
|
|
191
|
+
return
|
|
192
|
+
}
|
|
193
|
+
let args: [String: Any] = [
|
|
194
|
+
"widgetRandomId": widgetRandomId,
|
|
195
|
+
"url": url.absoluteString
|
|
196
|
+
]
|
|
197
|
+
|
|
198
|
+
self.TeadsEventModuleInstance.sendWidgetEvent("onRecClick", withArgs: args)
|
|
199
|
+
} else if event == .heightUpdated {
|
|
200
|
+
guard let heightData = data, let height = heightData["height"] else {
|
|
201
|
+
print("TeadsAdContainer: heightUpdated event missing height data")
|
|
202
|
+
return
|
|
203
|
+
}
|
|
204
|
+
let args: [String: Any] = [
|
|
205
|
+
"widgetRandomId": widgetRandomId,
|
|
206
|
+
"height": height
|
|
207
|
+
]
|
|
208
|
+
print("TeadsAdContainer .heightUpdated: \(args)")
|
|
209
|
+
self.TeadsEventModuleInstance.sendWidgetEvent("didChangeHeight", withArgs: args )
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//
|
|
2
|
+
// TeadsEventModule.h
|
|
3
|
+
// TeadsReactNative
|
|
4
|
+
//
|
|
5
|
+
// Created by Ofek Cohen on 08/04/2025.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
#import <React/RCTBridgeModule.h>
|
|
9
|
+
#import <React/RCTEventEmitter.h>
|
|
10
|
+
|
|
11
|
+
@interface TeadsEventModule : RCTEventEmitter <RCTBridgeModule>
|
|
12
|
+
|
|
13
|
+
- (void)sendWidgetEvent:(NSString *)name withArgs:(NSDictionary *)args;
|
|
14
|
+
|
|
15
|
+
@end
|
|
16
|
+
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
//
|
|
2
|
+
// TeadsEventModule.m
|
|
3
|
+
// TeadsReactNative
|
|
4
|
+
//
|
|
5
|
+
// Created by Ofek Cohen on 08/04/2025.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
#import "TeadsEventModule.h"
|
|
9
|
+
|
|
10
|
+
@implementation TeadsEventModule
|
|
11
|
+
{
|
|
12
|
+
bool hasListeners;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
RCT_EXPORT_MODULE();
|
|
16
|
+
|
|
17
|
+
// Make TeadsEventModule a singleton
|
|
18
|
+
+ (id)allocWithZone:(NSZone *)zone {
|
|
19
|
+
static TeadsEventModule *sharedInstance = nil;
|
|
20
|
+
static dispatch_once_t onceToken;
|
|
21
|
+
dispatch_once(&onceToken, ^{
|
|
22
|
+
sharedInstance = [super allocWithZone:zone];
|
|
23
|
+
});
|
|
24
|
+
return sharedInstance;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
- (NSArray<NSString *> *)supportedEvents
|
|
28
|
+
{
|
|
29
|
+
return @[@"didChangeHeight", @"onRecClick", @"onOrganicClick", @"onWidgetEvent"]; // Add all event names you want to support
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Will be called when this module's first listener is added.
|
|
33
|
+
-(void)startObserving {
|
|
34
|
+
hasListeners = YES;
|
|
35
|
+
// Set up any upstream listeners or background tasks as necessary
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Will be called when this module's last listener is removed, or on dealloc.
|
|
39
|
+
-(void)stopObserving {
|
|
40
|
+
hasListeners = NO;
|
|
41
|
+
// Remove upstream listeners, stop unnecessary background tasks
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
- (void)sendWidgetEvent:(NSString *)name withArgs:(NSDictionary *)args
|
|
45
|
+
{
|
|
46
|
+
if (hasListeners) {// Only send events if anyone is listening
|
|
47
|
+
[self sendEventWithName:name body:args];
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
@end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateComponentDescriptorCpp.js
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#include "ComponentDescriptors.h"
|
|
12
|
+
#include <react/renderer/core/ConcreteComponentDescriptor.h>
|
|
13
|
+
#include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
|
|
14
|
+
|
|
15
|
+
namespace facebook::react {
|
|
16
|
+
|
|
17
|
+
void RNTeadsReactNativeViewSpec_registerComponentDescriptorsFromCodegen(
|
|
18
|
+
std::shared_ptr<const ComponentDescriptorProviderRegistry> registry) {
|
|
19
|
+
registry->add(concreteComponentDescriptorProvider<TeadsAdPlacementMediaComponentDescriptor>());
|
|
20
|
+
registry->add(concreteComponentDescriptorProvider<TeadsAdPlacementFeedComponentDescriptor>());
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateComponentDescriptorH.js
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#pragma once
|
|
12
|
+
|
|
13
|
+
#include "ShadowNodes.h"
|
|
14
|
+
#include <react/renderer/core/ConcreteComponentDescriptor.h>
|
|
15
|
+
#include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
|
|
16
|
+
|
|
17
|
+
namespace facebook::react {
|
|
18
|
+
|
|
19
|
+
using TeadsAdPlacementMediaComponentDescriptor = ConcreteComponentDescriptor<TeadsAdPlacementMediaShadowNode>;
|
|
20
|
+
using TeadsAdPlacementFeedComponentDescriptor = ConcreteComponentDescriptor<TeadsAdPlacementFeedShadowNode>;
|
|
21
|
+
|
|
22
|
+
void RNTeadsReactNativeViewSpec_registerComponentDescriptorsFromCodegen(
|
|
23
|
+
std::shared_ptr<const ComponentDescriptorProviderRegistry> registry);
|
|
24
|
+
|
|
25
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateEventEmitterCpp.js
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#include "EventEmitters.h"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
namespace facebook::react {
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateEventEmitterH.js
|
|
9
|
+
*/
|
|
10
|
+
#pragma once
|
|
11
|
+
|
|
12
|
+
#include <react/renderer/components/view/ViewEventEmitter.h>
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
namespace facebook::react {
|
|
16
|
+
class TeadsAdPlacementMediaEventEmitter : public ViewEventEmitter {
|
|
17
|
+
public:
|
|
18
|
+
using ViewEventEmitter::ViewEventEmitter;
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
};
|
|
23
|
+
class TeadsAdPlacementFeedEventEmitter : public ViewEventEmitter {
|
|
24
|
+
public:
|
|
25
|
+
using ViewEventEmitter::ViewEventEmitter;
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
};
|
|
30
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GeneratePropsCpp.js
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#include "Props.h"
|
|
12
|
+
#include <react/renderer/core/PropsParserContext.h>
|
|
13
|
+
#include <react/renderer/core/propsConversions.h>
|
|
14
|
+
|
|
15
|
+
namespace facebook::react {
|
|
16
|
+
|
|
17
|
+
TeadsAdPlacementMediaProps::TeadsAdPlacementMediaProps(
|
|
18
|
+
const PropsParserContext &context,
|
|
19
|
+
const TeadsAdPlacementMediaProps &sourceProps,
|
|
20
|
+
const RawProps &rawProps): ViewProps(context, sourceProps, rawProps),
|
|
21
|
+
|
|
22
|
+
pid(convertRawProp(context, rawProps, "pid", sourceProps.pid, {})),
|
|
23
|
+
widgetRandomId(convertRawProp(context, rawProps, "widgetRandomId", sourceProps.widgetRandomId, {0})),
|
|
24
|
+
url(convertRawProp(context, rawProps, "url", sourceProps.url, {})),
|
|
25
|
+
packageVersion(convertRawProp(context, rawProps, "packageVersion", sourceProps.packageVersion, {})),
|
|
26
|
+
installationKey(convertRawProp(context, rawProps, "installationKey", sourceProps.installationKey, {}))
|
|
27
|
+
{}
|
|
28
|
+
TeadsAdPlacementFeedProps::TeadsAdPlacementFeedProps(
|
|
29
|
+
const PropsParserContext &context,
|
|
30
|
+
const TeadsAdPlacementFeedProps &sourceProps,
|
|
31
|
+
const RawProps &rawProps): ViewProps(context, sourceProps, rawProps),
|
|
32
|
+
|
|
33
|
+
widgetId(convertRawProp(context, rawProps, "widgetId", sourceProps.widgetId, {})),
|
|
34
|
+
widgetRandomId(convertRawProp(context, rawProps, "widgetRandomId", sourceProps.widgetRandomId, {0})),
|
|
35
|
+
widgetIndex(convertRawProp(context, rawProps, "widgetIndex", sourceProps.widgetIndex, {0})),
|
|
36
|
+
url(convertRawProp(context, rawProps, "url", sourceProps.url, {})),
|
|
37
|
+
installationKey(convertRawProp(context, rawProps, "installationKey", sourceProps.installationKey, {})),
|
|
38
|
+
packageVersion(convertRawProp(context, rawProps, "packageVersion", sourceProps.packageVersion, {})),
|
|
39
|
+
extId(convertRawProp(context, rawProps, "extId", sourceProps.extId, {})),
|
|
40
|
+
extSecondaryId(convertRawProp(context, rawProps, "extSecondaryId", sourceProps.extSecondaryId, {})),
|
|
41
|
+
userId(convertRawProp(context, rawProps, "userId", sourceProps.userId, {})),
|
|
42
|
+
pubImpId(convertRawProp(context, rawProps, "pubImpId", sourceProps.pubImpId, {})),
|
|
43
|
+
darkMode(convertRawProp(context, rawProps, "darkMode", sourceProps.darkMode, {false}))
|
|
44
|
+
{}
|
|
45
|
+
|
|
46
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GeneratePropsH.js
|
|
9
|
+
*/
|
|
10
|
+
#pragma once
|
|
11
|
+
|
|
12
|
+
#include <react/renderer/components/view/ViewProps.h>
|
|
13
|
+
#include <react/renderer/core/PropsParserContext.h>
|
|
14
|
+
|
|
15
|
+
namespace facebook::react {
|
|
16
|
+
|
|
17
|
+
class TeadsAdPlacementMediaProps final : public ViewProps {
|
|
18
|
+
public:
|
|
19
|
+
TeadsAdPlacementMediaProps() = default;
|
|
20
|
+
TeadsAdPlacementMediaProps(const PropsParserContext& context, const TeadsAdPlacementMediaProps &sourceProps, const RawProps &rawProps);
|
|
21
|
+
|
|
22
|
+
#pragma mark - Props
|
|
23
|
+
|
|
24
|
+
std::string pid{};
|
|
25
|
+
int widgetRandomId{0};
|
|
26
|
+
std::string url{};
|
|
27
|
+
std::string packageVersion{};
|
|
28
|
+
std::string installationKey{};
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
class TeadsAdPlacementFeedProps final : public ViewProps {
|
|
32
|
+
public:
|
|
33
|
+
TeadsAdPlacementFeedProps() = default;
|
|
34
|
+
TeadsAdPlacementFeedProps(const PropsParserContext& context, const TeadsAdPlacementFeedProps &sourceProps, const RawProps &rawProps);
|
|
35
|
+
|
|
36
|
+
#pragma mark - Props
|
|
37
|
+
|
|
38
|
+
std::string widgetId{};
|
|
39
|
+
int widgetRandomId{0};
|
|
40
|
+
int widgetIndex{0};
|
|
41
|
+
std::string url{};
|
|
42
|
+
std::string installationKey{};
|
|
43
|
+
std::string packageVersion{};
|
|
44
|
+
std::string extId{};
|
|
45
|
+
std::string extSecondaryId{};
|
|
46
|
+
std::string userId{};
|
|
47
|
+
std::string pubImpId{};
|
|
48
|
+
bool darkMode{false};
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
|
+
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
6
|
+
*
|
|
7
|
+
* @generated by codegen project: GenerateComponentHObjCpp.js
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
#import <Foundation/Foundation.h>
|
|
11
|
+
#import <React/RCTDefines.h>
|
|
12
|
+
#import <React/RCTLog.h>
|
|
13
|
+
|
|
14
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
15
|
+
|
|
16
|
+
@protocol RCTTeadsAdPlacementMediaViewProtocol <NSObject>
|
|
17
|
+
|
|
18
|
+
@end
|
|
19
|
+
|
|
20
|
+
@protocol RCTTeadsAdPlacementFeedViewProtocol <NSObject>
|
|
21
|
+
|
|
22
|
+
@end
|
|
23
|
+
|
|
24
|
+
NS_ASSUME_NONNULL_END
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
|
+
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
6
|
+
*
|
|
7
|
+
* @generated by codegen project: GenerateModuleObjCpp
|
|
8
|
+
*
|
|
9
|
+
* We create an umbrella header (and corresponding implementation) here since
|
|
10
|
+
* Cxx compilation in BUCK has a limitation: source-code producing genrule()s
|
|
11
|
+
* must have a single output. More files => more genrule()s => slower builds.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
#import "RNTeadsReactNativeViewSpec.h"
|
|
15
|
+
|
|
16
|
+
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
3
|
+
*
|
|
4
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
5
|
+
* once the code is regenerated.
|
|
6
|
+
*
|
|
7
|
+
* @generated by codegen project: GenerateModuleObjCpp
|
|
8
|
+
*
|
|
9
|
+
* We create an umbrella header (and corresponding implementation) here since
|
|
10
|
+
* Cxx compilation in BUCK has a limitation: source-code producing genrule()s
|
|
11
|
+
* must have a single output. More files => more genrule()s => slower builds.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
#ifndef __cplusplus
|
|
15
|
+
#error This file must be compiled as Obj-C++. If you are importing it, you must change your file extension to .mm.
|
|
16
|
+
#endif
|
|
17
|
+
|
|
18
|
+
// Avoid multiple includes of RNTeadsReactNativeViewSpec symbols
|
|
19
|
+
#ifndef RNTeadsReactNativeViewSpec_H
|
|
20
|
+
#define RNTeadsReactNativeViewSpec_H
|
|
21
|
+
|
|
22
|
+
#import <Foundation/Foundation.h>
|
|
23
|
+
#import <RCTRequired/RCTRequired.h>
|
|
24
|
+
#import <RCTTypeSafety/RCTConvertHelpers.h>
|
|
25
|
+
#import <RCTTypeSafety/RCTTypedModuleConstants.h>
|
|
26
|
+
#import <React/RCTBridgeModule.h>
|
|
27
|
+
#import <React/RCTCxxConvert.h>
|
|
28
|
+
#import <React/RCTManagedPointer.h>
|
|
29
|
+
#import <ReactCommon/RCTTurboModule.h>
|
|
30
|
+
#import <optional>
|
|
31
|
+
#import <vector>
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
NS_ASSUME_NONNULL_END
|
|
38
|
+
#endif // RNTeadsReactNativeViewSpec_H
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateShadowNodeCpp.js
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#include "ShadowNodes.h"
|
|
12
|
+
|
|
13
|
+
namespace facebook::react {
|
|
14
|
+
|
|
15
|
+
extern const char TeadsAdPlacementMediaComponentName[] = "TeadsAdPlacementMedia";
|
|
16
|
+
extern const char TeadsAdPlacementFeedComponentName[] = "TeadsAdPlacementFeed";
|
|
17
|
+
|
|
18
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateShadowNodeH.js
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#pragma once
|
|
12
|
+
|
|
13
|
+
#include "EventEmitters.h"
|
|
14
|
+
#include "Props.h"
|
|
15
|
+
#include "States.h"
|
|
16
|
+
#include <react/renderer/components/view/ConcreteViewShadowNode.h>
|
|
17
|
+
#include <jsi/jsi.h>
|
|
18
|
+
|
|
19
|
+
namespace facebook::react {
|
|
20
|
+
|
|
21
|
+
JSI_EXPORT extern const char TeadsAdPlacementMediaComponentName[];
|
|
22
|
+
|
|
23
|
+
/*
|
|
24
|
+
* `ShadowNode` for <TeadsAdPlacementMedia> component.
|
|
25
|
+
*/
|
|
26
|
+
using TeadsAdPlacementMediaShadowNode = ConcreteViewShadowNode<
|
|
27
|
+
TeadsAdPlacementMediaComponentName,
|
|
28
|
+
TeadsAdPlacementMediaProps,
|
|
29
|
+
TeadsAdPlacementMediaEventEmitter,
|
|
30
|
+
TeadsAdPlacementMediaState>;
|
|
31
|
+
|
|
32
|
+
JSI_EXPORT extern const char TeadsAdPlacementFeedComponentName[];
|
|
33
|
+
|
|
34
|
+
/*
|
|
35
|
+
* `ShadowNode` for <TeadsAdPlacementFeed> component.
|
|
36
|
+
*/
|
|
37
|
+
using TeadsAdPlacementFeedShadowNode = ConcreteViewShadowNode<
|
|
38
|
+
TeadsAdPlacementFeedComponentName,
|
|
39
|
+
TeadsAdPlacementFeedProps,
|
|
40
|
+
TeadsAdPlacementFeedEventEmitter,
|
|
41
|
+
TeadsAdPlacementFeedState>;
|
|
42
|
+
|
|
43
|
+
} // namespace facebook::react
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
|
|
4
|
+
*
|
|
5
|
+
* Do not edit this file as changes may cause incorrect behavior and will be lost
|
|
6
|
+
* once the code is regenerated.
|
|
7
|
+
*
|
|
8
|
+
* @generated by codegen project: GenerateStateCpp.js
|
|
9
|
+
*/
|
|
10
|
+
#include "States.h"
|
|
11
|
+
|
|
12
|
+
namespace facebook::react {
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
} // namespace facebook::react
|