tapjoy-react-native-sdk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +2 -0
- package/README.md +67 -0
- package/android/build.gradle +92 -0
- package/android/gradle.properties +6 -0
- package/android/settings.gradle +3 -0
- package/android/src/main/AndroidManifest.xml +4 -0
- package/android/src/main/java/com/tapjoyreactnativesdk/TapjoyReactNativeSdkModule.kt +307 -0
- package/android/src/main/java/com/tapjoyreactnativesdk/TapjoyReactNativeSdkPackage.kt +16 -0
- package/ios/TapjoyReactNativeSdk-Bridging-Header.h +6 -0
- package/ios/TapjoyReactNativeSdk.m +34 -0
- package/ios/TapjoyReactNativeSdk.swift +232 -0
- package/ios/TapjoyReactNativeSdk.xcodeproj/project.pbxproj +291 -0
- package/ios/TapjoyReactNativeSdk.xcodeproj/project.xcworkspace/contents.xcworkspacedata +4 -0
- package/ios/TapjoyReactNativeSdk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/ios/TapjoyReactNativeSdk.xcodeproj/xcshareddata/xcschemes/TapjoyReactNativeSdk.xcscheme +67 -0
- package/lib/commonjs/TJPlacement.js +65 -0
- package/lib/commonjs/TJPlacement.js.map +1 -0
- package/lib/commonjs/TJPrivacyPolicy.js +25 -0
- package/lib/commonjs/TJPrivacyPolicy.js.map +1 -0
- package/lib/commonjs/TJVersion.js +22 -0
- package/lib/commonjs/TJVersion.js.map +1 -0
- package/lib/commonjs/index.js +42 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/module/TJPlacement.js +58 -0
- package/lib/module/TJPlacement.js.map +1 -0
- package/lib/module/TJPrivacyPolicy.js +18 -0
- package/lib/module/TJPrivacyPolicy.js.map +1 -0
- package/lib/module/TJVersion.js +14 -0
- package/lib/module/TJVersion.js.map +1 -0
- package/lib/module/index.js +16 -0
- package/lib/module/index.js.map +1 -0
- package/lib/typescript/TJPlacement.d.ts +17 -0
- package/lib/typescript/TJPlacement.d.ts.map +1 -0
- package/lib/typescript/TJPrivacyPolicy.d.ts +8 -0
- package/lib/typescript/TJPrivacyPolicy.d.ts.map +1 -0
- package/lib/typescript/TJVersion.d.ts +5 -0
- package/lib/typescript/TJVersion.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +7 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/package/src/TJPlacement.d.ts +17 -0
- package/lib/typescript/package/src/TJPlacement.d.ts.map +1 -0
- package/lib/typescript/package/src/TJPrivacyPolicy.d.ts +8 -0
- package/lib/typescript/package/src/TJPrivacyPolicy.d.ts.map +1 -0
- package/lib/typescript/package/src/TJVersion.d.ts +5 -0
- package/lib/typescript/package/src/TJVersion.d.ts.map +1 -0
- package/lib/typescript/package/src/index.d.ts +7 -0
- package/lib/typescript/package/src/index.d.ts.map +1 -0
- package/lib/typescript/src/TJPlacement.d.ts +17 -0
- package/lib/typescript/src/TJPlacement.d.ts.map +1 -0
- package/lib/typescript/src/TJPrivacyPolicy.d.ts +8 -0
- package/lib/typescript/src/TJPrivacyPolicy.d.ts.map +1 -0
- package/lib/typescript/src/TJVersion.d.ts +5 -0
- package/lib/typescript/src/TJVersion.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +7 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/package.json +163 -0
- package/src/TJPlacement.ts +81 -0
- package/src/TJPrivacyPolicy.ts +23 -0
- package/src/TJVersion.ts +15 -0
- package/src/index.ts +24 -0
- package/tapjoy-react-native-sdk.podspec +36 -0
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
|
|
3
|
+
@objc(TapjoyReactNativeSdk)
|
|
4
|
+
class TapjoyReactNativeSdk: RCTEventEmitter {
|
|
5
|
+
|
|
6
|
+
fileprivate var placements: [ String: TJPlacement? ]
|
|
7
|
+
fileprivate var listeners = 0
|
|
8
|
+
|
|
9
|
+
var storedResolve: RCTPromiseResolveBlock?
|
|
10
|
+
var storedReject: RCTPromiseRejectBlock?
|
|
11
|
+
|
|
12
|
+
override init() {
|
|
13
|
+
self.placements = [:]
|
|
14
|
+
super.init()
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// MARK: - Events
|
|
18
|
+
@objc override func supportedEvents() -> [String] {
|
|
19
|
+
return ["TapjoyPlacement"];
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
@objc override func startObserving() {
|
|
23
|
+
listeners += 1
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@objc override func stopObserving() {
|
|
27
|
+
listeners -= 1
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
func attemptSendEvent(withName name: String, body: [AnyHashable : Any?]?) {
|
|
31
|
+
if (listeners > 0) {
|
|
32
|
+
sendEvent(withName: name, body: body)
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// MARK: - SDK
|
|
37
|
+
/**
|
|
38
|
+
Connect to Tapjoy.
|
|
39
|
+
- Parameter sdkKey: SDK key the app.
|
|
40
|
+
- Parameter connectFlags:Dictionary for the connection flag values.
|
|
41
|
+
- Returns true to javascript if it is succeeded otherwise throws error
|
|
42
|
+
*/
|
|
43
|
+
@objc func connect(_ sdkKey: String, connectFlags: NSDictionary, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
44
|
+
if storedResolve == nil {
|
|
45
|
+
NotificationCenter.default.addObserver(self, selector: #selector(tjcConnectSuccess(_:)), name: NSNotification.Name(TJC_CONNECT_SUCCESS), object: nil)
|
|
46
|
+
NotificationCenter.default.addObserver(self, selector: #selector(tjcConnectFail(_:)), name: NSNotification.Name(TJC_CONNECT_FAILED), object: nil)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
storedResolve = resolve
|
|
50
|
+
storedReject = reject
|
|
51
|
+
|
|
52
|
+
Tapjoy.sharedTapjoyConnect().plugin = "ReactNative"
|
|
53
|
+
|
|
54
|
+
Tapjoy.connect(sdkKey, options: connectFlags as? [AnyHashable: Any])
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@objc func tjcConnectSuccess(_ notifyObj: Notification) {
|
|
58
|
+
if let storedResolve = storedResolve {
|
|
59
|
+
storedResolve(true)
|
|
60
|
+
}
|
|
61
|
+
storedResolve = nil
|
|
62
|
+
storedReject = nil
|
|
63
|
+
NotificationCenter.default.removeObserver(self, name: NSNotification.Name(TJC_CONNECT_SUCCESS), object: nil)
|
|
64
|
+
NotificationCenter.default.removeObserver(self, name: NSNotification.Name(TJC_CONNECT_FAILED), object: nil)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
@objc func tjcConnectFail(_ notifyObj: Notification) {
|
|
68
|
+
if let storedReject = storedReject {
|
|
69
|
+
storedReject("Connect Error", "Connect Call Failed", nil)
|
|
70
|
+
}
|
|
71
|
+
storedResolve = nil;
|
|
72
|
+
storedReject = nil
|
|
73
|
+
NotificationCenter.default.removeObserver(self, name: NSNotification.Name(TJC_CONNECT_SUCCESS), object: nil)
|
|
74
|
+
NotificationCenter.default.removeObserver(self, name: NSNotification.Name(TJC_CONNECT_FAILED), object: nil)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
Enables debug log
|
|
79
|
+
- Parameter enabled: true for enabling and false for disabling
|
|
80
|
+
*/
|
|
81
|
+
@objc func setDebugEnabled(_ enabled: Bool) {
|
|
82
|
+
Tapjoy.setDebugEnabled(enabled)
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
@objc func isConnected() -> NSNumber {
|
|
86
|
+
return NSNumber(value:Tapjoy.isConnected())
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
@objc func setUserId(_ userId: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
90
|
+
Tapjoy.setUserIDWithCompletion(userId) { success, error in
|
|
91
|
+
if (success) {
|
|
92
|
+
resolve(userId)
|
|
93
|
+
} else {
|
|
94
|
+
reject(nil, nil, error)
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// MARK: - Placements
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
Request content for a given placement.
|
|
103
|
+
- Parameter name: Case-sensitive placement name string. Must not be empty or null.
|
|
104
|
+
*/
|
|
105
|
+
@objc func requestPlacement(_ name: String) {
|
|
106
|
+
if let placement = TJPlacement(name: name, delegate: self) {
|
|
107
|
+
placements[name] = placement
|
|
108
|
+
placement.requestContent()
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
Show content for a given placement.
|
|
114
|
+
- Parameter name: Case-sensitive placement name string. Must not be empty or null.
|
|
115
|
+
*/
|
|
116
|
+
@objc func showPlacement(_ name: String) {
|
|
117
|
+
guard let placement = placements[name] as? TJPlacement else {
|
|
118
|
+
return
|
|
119
|
+
}
|
|
120
|
+
placement.showContent(with: nil);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
Check if content has been downloaded and ready to show for a given placement.
|
|
125
|
+
- Parameter name: Case-sensitive placement name string. Must not be empty or null.
|
|
126
|
+
*/
|
|
127
|
+
@objc func isContentReady(_ name: String) -> NSNumber? {
|
|
128
|
+
guard let placement = placements[name] as? TJPlacement else {
|
|
129
|
+
return NSNumber(value: false)
|
|
130
|
+
}
|
|
131
|
+
return NSNumber(value:placement.isContentReady)
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
Check if content is available to cache or stream for a given placement.
|
|
136
|
+
- Parameter name: Case-sensitive placement name string. Must not be empty or null.
|
|
137
|
+
*/
|
|
138
|
+
@objc func isContentAvailable(_ name: String) -> NSNumber? {
|
|
139
|
+
guard let placement = placements[name] as? TJPlacement else {
|
|
140
|
+
return NSNumber(value: false)
|
|
141
|
+
}
|
|
142
|
+
return NSNumber(value:placement.isContentAvailable)
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// MARK: - Currency
|
|
146
|
+
@objc func getCurrencyBalance(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
147
|
+
Tapjoy.getCurrencyBalance(completion: { parameters, error in
|
|
148
|
+
if let error = error {
|
|
149
|
+
reject(nil, nil, error)
|
|
150
|
+
} else {
|
|
151
|
+
resolve(parameters)
|
|
152
|
+
}
|
|
153
|
+
})
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
@objc func spendCurrency(_ amount: Int32, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
157
|
+
Tapjoy.spendCurrency(amount, completion: { parameters, error in
|
|
158
|
+
if let error = error {
|
|
159
|
+
reject(nil, nil, error)
|
|
160
|
+
} else {
|
|
161
|
+
resolve(parameters)
|
|
162
|
+
}
|
|
163
|
+
})
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
@objc func awardCurrency(_ amount: Int32, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
|
167
|
+
Tapjoy.awardCurrency(amount, completion: { parameters, error in
|
|
168
|
+
if let error = error {
|
|
169
|
+
reject(nil, nil, error)
|
|
170
|
+
} else {
|
|
171
|
+
resolve(parameters)
|
|
172
|
+
}
|
|
173
|
+
})
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// MARK: - Privacy
|
|
177
|
+
/**
|
|
178
|
+
Indicate if the user falls in any of the GDPR applicable countries.
|
|
179
|
+
- Parameter isSubjectToGDPR: true for enabling and false for disabling.
|
|
180
|
+
*/
|
|
181
|
+
@objc func setSubjectToGDPR(_ isSubjectToGDPR: Bool) {
|
|
182
|
+
Tapjoy.getPrivacyPolicy().setSubjectToGDPR(isSubjectToGDPR)
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
This method will set ad_tracking_enabled to false for Tapjoy which only shows the user contextual ads. No ad tracking will be done on this user.
|
|
187
|
+
- Parameter isBelowConsentAge: true if the user is affected by COPPA, false if they are not.
|
|
188
|
+
*/
|
|
189
|
+
@objc func setBelowConsentAge(_ isBelowConsentAge: Bool) {
|
|
190
|
+
Tapjoy.getPrivacyPolicy().setBelowConsentAge(isBelowConsentAge)
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
This is used for sending US Privacy value to behavioral advertising such as in the context of GDPR.
|
|
195
|
+
- Parameter privacyValue: The privacy value string. eg. "1YNN" where 1 is char in string for the version, Y = YES, N = No, - = Not Applicable
|
|
196
|
+
*/
|
|
197
|
+
@objc func setUSPrivacy(_ privacyValue: String) {
|
|
198
|
+
Tapjoy.getPrivacyPolicy().setUSPrivacy(privacyValue)
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* This is used for sending User's consent to behavioral advertising such as in the context of GDPR
|
|
203
|
+
* - Parameter userConsent: The value can be "0" (User has not provided consent), "1" (User has provided consent) or a daisybit string as suggested in IAB's Transparency and Consent Framework
|
|
204
|
+
*/
|
|
205
|
+
@objc func setUserConsent(_ userConsent: String) {
|
|
206
|
+
Tapjoy.getPrivacyPolicy().setUserConsent(userConsent)
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
extension TapjoyReactNativeSdk: TJPlacementDelegate {
|
|
211
|
+
func requestDidSucceed(_ placement: TJPlacement) {
|
|
212
|
+
attemptSendEvent(withName:"TapjoyPlacement", body: [ "name" : "requestDidSucceed", "placement": placement.placementName ])
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
func requestDidFail(_ placement: TJPlacement, error: Error?) {
|
|
216
|
+
placements[placement.placementName] = nil
|
|
217
|
+
attemptSendEvent(withName:"TapjoyPlacement", body: [ "name" : "requestDidFail", "placement": placement.placementName, "error" : error?.localizedDescription ])
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
func contentIsReady(_ placement: TJPlacement) {
|
|
221
|
+
attemptSendEvent(withName:"TapjoyPlacement", body: [ "name" : "contentIsReady", "placement": placement.placementName ])
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
func contentDidAppear(_ placement: TJPlacement) {
|
|
225
|
+
attemptSendEvent(withName:"TapjoyPlacement", body: [ "name" : "contentDidAppear", "placement": placement.placementName ])
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
func contentDidDisappear(_ placement: TJPlacement) {
|
|
229
|
+
placements[placement.placementName] = nil
|
|
230
|
+
attemptSendEvent(withName:"TapjoyPlacement", body: [ "name" : "contentDidDisappear", "placement": placement.placementName ])
|
|
231
|
+
}
|
|
232
|
+
}
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
// !$*UTF8*$!
|
|
2
|
+
{
|
|
3
|
+
archiveVersion = 1;
|
|
4
|
+
classes = {
|
|
5
|
+
};
|
|
6
|
+
objectVersion = 46;
|
|
7
|
+
objects = {
|
|
8
|
+
|
|
9
|
+
/* Begin PBXCopyFilesBuildPhase section */
|
|
10
|
+
58B511D91A9E6C8500147676 /* CopyFiles */ = {
|
|
11
|
+
isa = PBXCopyFilesBuildPhase;
|
|
12
|
+
buildActionMask = 2147483647;
|
|
13
|
+
dstPath = "include/$(PRODUCT_NAME)";
|
|
14
|
+
dstSubfolderSpec = 16;
|
|
15
|
+
files = (
|
|
16
|
+
);
|
|
17
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
18
|
+
};
|
|
19
|
+
/* End PBXCopyFilesBuildPhase section */
|
|
20
|
+
|
|
21
|
+
/* Begin PBXFileReference section */
|
|
22
|
+
134814201AA4EA6300B7C361 /* libTapjoyReactNativeSdk.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libTapjoyReactNativeSdk.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
23
|
+
2BDE3C8F29D5AE0E009EB4F1 /* TapjoyPlacement.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TapjoyPlacement.m; sourceTree = "<group>"; };
|
|
24
|
+
2BDE3C9029D5AE54009EB4F1 /* TapjoyPlacement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TapjoyPlacement.swift; sourceTree = "<group>"; };
|
|
25
|
+
B3E7B5891CC2AC0600A0062D /* TapjoyReactNativeSdk.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TapjoyReactNativeSdk.m; sourceTree = "<group>"; };
|
|
26
|
+
F4FF95D5245B92E700C19C63 /* TapjoyReactNativeSdk-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "TapjoyReactNativeSdk-Bridging-Header.h"; sourceTree = "<group>"; };
|
|
27
|
+
F4FF95D6245B92E800C19C63 /* TapjoyReactNativeSdk.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TapjoyReactNativeSdk.swift; sourceTree = "<group>"; };
|
|
28
|
+
/* End PBXFileReference section */
|
|
29
|
+
|
|
30
|
+
/* Begin PBXFrameworksBuildPhase section */
|
|
31
|
+
58B511D81A9E6C8500147676 /* Frameworks */ = {
|
|
32
|
+
isa = PBXFrameworksBuildPhase;
|
|
33
|
+
buildActionMask = 2147483647;
|
|
34
|
+
files = (
|
|
35
|
+
);
|
|
36
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
37
|
+
};
|
|
38
|
+
/* End PBXFrameworksBuildPhase section */
|
|
39
|
+
|
|
40
|
+
/* Begin PBXGroup section */
|
|
41
|
+
134814211AA4EA7D00B7C361 /* Products */ = {
|
|
42
|
+
isa = PBXGroup;
|
|
43
|
+
children = (
|
|
44
|
+
134814201AA4EA6300B7C361 /* libTapjoyReactNativeSdk.a */,
|
|
45
|
+
);
|
|
46
|
+
name = Products;
|
|
47
|
+
sourceTree = "<group>";
|
|
48
|
+
};
|
|
49
|
+
58B511D21A9E6C8500147676 = {
|
|
50
|
+
isa = PBXGroup;
|
|
51
|
+
children = (
|
|
52
|
+
2BDE3C9029D5AE54009EB4F1 /* TapjoyPlacement.swift */,
|
|
53
|
+
2BDE3C8F29D5AE0E009EB4F1 /* TapjoyPlacement.m */,
|
|
54
|
+
F4FF95D6245B92E800C19C63 /* TapjoyReactNativeSdk.swift */,
|
|
55
|
+
B3E7B5891CC2AC0600A0062D /* TapjoyReactNativeSdk.m */,
|
|
56
|
+
F4FF95D5245B92E700C19C63 /* TapjoyReactNativeSdk-Bridging-Header.h */,
|
|
57
|
+
134814211AA4EA7D00B7C361 /* Products */,
|
|
58
|
+
);
|
|
59
|
+
sourceTree = "<group>";
|
|
60
|
+
};
|
|
61
|
+
/* End PBXGroup section */
|
|
62
|
+
|
|
63
|
+
/* Begin PBXNativeTarget section */
|
|
64
|
+
58B511DA1A9E6C8500147676 /* TapjoyReactNativeSdk */ = {
|
|
65
|
+
isa = PBXNativeTarget;
|
|
66
|
+
buildConfigurationList = 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "TapjoyReactNativeSdk" */;
|
|
67
|
+
buildPhases = (
|
|
68
|
+
58B511D71A9E6C8500147676 /* Sources */,
|
|
69
|
+
58B511D81A9E6C8500147676 /* Frameworks */,
|
|
70
|
+
58B511D91A9E6C8500147676 /* CopyFiles */,
|
|
71
|
+
);
|
|
72
|
+
buildRules = (
|
|
73
|
+
);
|
|
74
|
+
dependencies = (
|
|
75
|
+
);
|
|
76
|
+
name = TapjoyReactNativeSdk;
|
|
77
|
+
productName = RCTDataManager;
|
|
78
|
+
productReference = 134814201AA4EA6300B7C361 /* libTapjoyReactNativeSdk.a */;
|
|
79
|
+
productType = "com.apple.product-type.library.static";
|
|
80
|
+
};
|
|
81
|
+
/* End PBXNativeTarget section */
|
|
82
|
+
|
|
83
|
+
/* Begin PBXProject section */
|
|
84
|
+
58B511D31A9E6C8500147676 /* Project object */ = {
|
|
85
|
+
isa = PBXProject;
|
|
86
|
+
attributes = {
|
|
87
|
+
LastUpgradeCheck = 1420;
|
|
88
|
+
ORGANIZATIONNAME = Facebook;
|
|
89
|
+
TargetAttributes = {
|
|
90
|
+
58B511DA1A9E6C8500147676 = {
|
|
91
|
+
CreatedOnToolsVersion = 6.1.1;
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
buildConfigurationList = 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "TapjoyReactNativeSdk" */;
|
|
96
|
+
compatibilityVersion = "Xcode 3.2";
|
|
97
|
+
developmentRegion = English;
|
|
98
|
+
hasScannedForEncodings = 0;
|
|
99
|
+
knownRegions = (
|
|
100
|
+
English,
|
|
101
|
+
en,
|
|
102
|
+
);
|
|
103
|
+
mainGroup = 58B511D21A9E6C8500147676;
|
|
104
|
+
productRefGroup = 58B511D21A9E6C8500147676;
|
|
105
|
+
projectDirPath = "";
|
|
106
|
+
projectRoot = "";
|
|
107
|
+
targets = (
|
|
108
|
+
58B511DA1A9E6C8500147676 /* TapjoyReactNativeSdk */,
|
|
109
|
+
);
|
|
110
|
+
};
|
|
111
|
+
/* End PBXProject section */
|
|
112
|
+
|
|
113
|
+
/* Begin PBXSourcesBuildPhase section */
|
|
114
|
+
58B511D71A9E6C8500147676 /* Sources */ = {
|
|
115
|
+
isa = PBXSourcesBuildPhase;
|
|
116
|
+
buildActionMask = 2147483647;
|
|
117
|
+
files = (
|
|
118
|
+
);
|
|
119
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
120
|
+
};
|
|
121
|
+
/* End PBXSourcesBuildPhase section */
|
|
122
|
+
|
|
123
|
+
/* Begin XCBuildConfiguration section */
|
|
124
|
+
58B511ED1A9E6C8500147676 /* Debug */ = {
|
|
125
|
+
isa = XCBuildConfiguration;
|
|
126
|
+
buildSettings = {
|
|
127
|
+
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
128
|
+
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
|
|
129
|
+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
|
130
|
+
CLANG_CXX_LIBRARY = "libc++";
|
|
131
|
+
CLANG_ENABLE_MODULES = YES;
|
|
132
|
+
CLANG_ENABLE_OBJC_ARC = YES;
|
|
133
|
+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
134
|
+
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
135
|
+
CLANG_WARN_COMMA = YES;
|
|
136
|
+
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
137
|
+
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
|
138
|
+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
139
|
+
CLANG_WARN_EMPTY_BODY = YES;
|
|
140
|
+
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
141
|
+
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
142
|
+
CLANG_WARN_INT_CONVERSION = YES;
|
|
143
|
+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
144
|
+
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
|
145
|
+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
146
|
+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
147
|
+
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
|
148
|
+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
149
|
+
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
150
|
+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
151
|
+
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
152
|
+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
153
|
+
COPY_PHASE_STRIP = NO;
|
|
154
|
+
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
155
|
+
ENABLE_TESTABILITY = YES;
|
|
156
|
+
GCC_C_LANGUAGE_STANDARD = gnu99;
|
|
157
|
+
GCC_DYNAMIC_NO_PIC = NO;
|
|
158
|
+
GCC_NO_COMMON_BLOCKS = YES;
|
|
159
|
+
GCC_OPTIMIZATION_LEVEL = 0;
|
|
160
|
+
GCC_PREPROCESSOR_DEFINITIONS = (
|
|
161
|
+
"DEBUG=1",
|
|
162
|
+
"$(inherited)",
|
|
163
|
+
);
|
|
164
|
+
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
|
165
|
+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
166
|
+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
167
|
+
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
168
|
+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
169
|
+
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
170
|
+
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
171
|
+
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
|
172
|
+
MTL_ENABLE_DEBUG_INFO = YES;
|
|
173
|
+
ONLY_ACTIVE_ARCH = YES;
|
|
174
|
+
SDKROOT = iphoneos;
|
|
175
|
+
};
|
|
176
|
+
name = Debug;
|
|
177
|
+
};
|
|
178
|
+
58B511EE1A9E6C8500147676 /* Release */ = {
|
|
179
|
+
isa = XCBuildConfiguration;
|
|
180
|
+
buildSettings = {
|
|
181
|
+
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
182
|
+
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
|
|
183
|
+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
|
184
|
+
CLANG_CXX_LIBRARY = "libc++";
|
|
185
|
+
CLANG_ENABLE_MODULES = YES;
|
|
186
|
+
CLANG_ENABLE_OBJC_ARC = YES;
|
|
187
|
+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
188
|
+
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
189
|
+
CLANG_WARN_COMMA = YES;
|
|
190
|
+
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
191
|
+
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
|
192
|
+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
193
|
+
CLANG_WARN_EMPTY_BODY = YES;
|
|
194
|
+
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
195
|
+
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
196
|
+
CLANG_WARN_INT_CONVERSION = YES;
|
|
197
|
+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
198
|
+
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
|
199
|
+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
200
|
+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
201
|
+
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
|
202
|
+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
203
|
+
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
204
|
+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
205
|
+
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
206
|
+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
207
|
+
COPY_PHASE_STRIP = YES;
|
|
208
|
+
ENABLE_NS_ASSERTIONS = NO;
|
|
209
|
+
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
210
|
+
GCC_C_LANGUAGE_STANDARD = gnu99;
|
|
211
|
+
GCC_NO_COMMON_BLOCKS = YES;
|
|
212
|
+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
213
|
+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
214
|
+
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
215
|
+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
216
|
+
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
217
|
+
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
218
|
+
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
|
219
|
+
MTL_ENABLE_DEBUG_INFO = NO;
|
|
220
|
+
SDKROOT = iphoneos;
|
|
221
|
+
SWIFT_COMPILATION_MODE = wholemodule;
|
|
222
|
+
VALIDATE_PRODUCT = YES;
|
|
223
|
+
};
|
|
224
|
+
name = Release;
|
|
225
|
+
};
|
|
226
|
+
58B511F01A9E6C8500147676 /* Debug */ = {
|
|
227
|
+
isa = XCBuildConfiguration;
|
|
228
|
+
buildSettings = {
|
|
229
|
+
HEADER_SEARCH_PATHS = (
|
|
230
|
+
"$(inherited)",
|
|
231
|
+
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
|
232
|
+
"$(SRCROOT)/../example/ios/Pods/Headers/Public/React-Core/**",
|
|
233
|
+
"$(SRCROOT)/../../../ios/Pods/Headers/Public/React-Core/**",
|
|
234
|
+
);
|
|
235
|
+
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
|
236
|
+
LIBRARY_SEARCH_PATHS = "$(inherited)";
|
|
237
|
+
OTHER_LDFLAGS = "-ObjC";
|
|
238
|
+
PRODUCT_NAME = TapjoyReactNativeSdk;
|
|
239
|
+
SKIP_INSTALL = YES;
|
|
240
|
+
SWIFT_OBJC_BRIDGING_HEADER = "TapjoyReactNativeSdk-Bridging-Header.h";
|
|
241
|
+
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
|
242
|
+
SWIFT_VERSION = 5.0;
|
|
243
|
+
TARGETED_DEVICE_FAMILY = "1,2";
|
|
244
|
+
};
|
|
245
|
+
name = Debug;
|
|
246
|
+
};
|
|
247
|
+
58B511F11A9E6C8500147676 /* Release */ = {
|
|
248
|
+
isa = XCBuildConfiguration;
|
|
249
|
+
buildSettings = {
|
|
250
|
+
HEADER_SEARCH_PATHS = (
|
|
251
|
+
"$(inherited)",
|
|
252
|
+
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
|
253
|
+
"$(SRCROOT)/../example/ios/Pods/Headers/Public/React-Core/**",
|
|
254
|
+
"$(SRCROOT)/../../../ios/Pods/Headers/Public/React-Core/**",
|
|
255
|
+
);
|
|
256
|
+
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
|
257
|
+
LIBRARY_SEARCH_PATHS = "$(inherited)";
|
|
258
|
+
OTHER_LDFLAGS = "-ObjC";
|
|
259
|
+
PRODUCT_NAME = TapjoyReactNativeSdk;
|
|
260
|
+
SKIP_INSTALL = YES;
|
|
261
|
+
SWIFT_OBJC_BRIDGING_HEADER = "TapjoyReactNativeSdk-Bridging-Header.h";
|
|
262
|
+
SWIFT_VERSION = 5.0;
|
|
263
|
+
TARGETED_DEVICE_FAMILY = "1,2";
|
|
264
|
+
};
|
|
265
|
+
name = Release;
|
|
266
|
+
};
|
|
267
|
+
/* End XCBuildConfiguration section */
|
|
268
|
+
|
|
269
|
+
/* Begin XCConfigurationList section */
|
|
270
|
+
58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "TapjoyReactNativeSdk" */ = {
|
|
271
|
+
isa = XCConfigurationList;
|
|
272
|
+
buildConfigurations = (
|
|
273
|
+
58B511ED1A9E6C8500147676 /* Debug */,
|
|
274
|
+
58B511EE1A9E6C8500147676 /* Release */,
|
|
275
|
+
);
|
|
276
|
+
defaultConfigurationIsVisible = 0;
|
|
277
|
+
defaultConfigurationName = Release;
|
|
278
|
+
};
|
|
279
|
+
58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "TapjoyReactNativeSdk" */ = {
|
|
280
|
+
isa = XCConfigurationList;
|
|
281
|
+
buildConfigurations = (
|
|
282
|
+
58B511F01A9E6C8500147676 /* Debug */,
|
|
283
|
+
58B511F11A9E6C8500147676 /* Release */,
|
|
284
|
+
);
|
|
285
|
+
defaultConfigurationIsVisible = 0;
|
|
286
|
+
defaultConfigurationName = Release;
|
|
287
|
+
};
|
|
288
|
+
/* End XCConfigurationList section */
|
|
289
|
+
};
|
|
290
|
+
rootObject = 58B511D31A9E6C8500147676 /* Project object */;
|
|
291
|
+
}
|
package/ios/TapjoyReactNativeSdk.xcodeproj/xcshareddata/xcschemes/TapjoyReactNativeSdk.xcscheme
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<Scheme
|
|
3
|
+
LastUpgradeVersion = "1420"
|
|
4
|
+
version = "1.3">
|
|
5
|
+
<BuildAction
|
|
6
|
+
parallelizeBuildables = "YES"
|
|
7
|
+
buildImplicitDependencies = "YES">
|
|
8
|
+
<BuildActionEntries>
|
|
9
|
+
<BuildActionEntry
|
|
10
|
+
buildForTesting = "YES"
|
|
11
|
+
buildForRunning = "YES"
|
|
12
|
+
buildForProfiling = "YES"
|
|
13
|
+
buildForArchiving = "YES"
|
|
14
|
+
buildForAnalyzing = "YES">
|
|
15
|
+
<BuildableReference
|
|
16
|
+
BuildableIdentifier = "primary"
|
|
17
|
+
BlueprintIdentifier = "58B511DA1A9E6C8500147676"
|
|
18
|
+
BuildableName = "libTapjoyReactNativeSdk.a"
|
|
19
|
+
BlueprintName = "TapjoyReactNativeSdk"
|
|
20
|
+
ReferencedContainer = "container:TapjoyReactNativeSdk.xcodeproj">
|
|
21
|
+
</BuildableReference>
|
|
22
|
+
</BuildActionEntry>
|
|
23
|
+
</BuildActionEntries>
|
|
24
|
+
</BuildAction>
|
|
25
|
+
<TestAction
|
|
26
|
+
buildConfiguration = "Debug"
|
|
27
|
+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
28
|
+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
29
|
+
shouldUseLaunchSchemeArgsEnv = "YES">
|
|
30
|
+
<Testables>
|
|
31
|
+
</Testables>
|
|
32
|
+
</TestAction>
|
|
33
|
+
<LaunchAction
|
|
34
|
+
buildConfiguration = "Debug"
|
|
35
|
+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
36
|
+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
37
|
+
launchStyle = "0"
|
|
38
|
+
useCustomWorkingDirectory = "NO"
|
|
39
|
+
ignoresPersistentStateOnLaunch = "NO"
|
|
40
|
+
debugDocumentVersioning = "YES"
|
|
41
|
+
debugServiceExtension = "internal"
|
|
42
|
+
allowLocationSimulation = "YES">
|
|
43
|
+
</LaunchAction>
|
|
44
|
+
<ProfileAction
|
|
45
|
+
buildConfiguration = "Release"
|
|
46
|
+
shouldUseLaunchSchemeArgsEnv = "YES"
|
|
47
|
+
savedToolIdentifier = ""
|
|
48
|
+
useCustomWorkingDirectory = "NO"
|
|
49
|
+
debugDocumentVersioning = "YES">
|
|
50
|
+
<MacroExpansion>
|
|
51
|
+
<BuildableReference
|
|
52
|
+
BuildableIdentifier = "primary"
|
|
53
|
+
BlueprintIdentifier = "58B511DA1A9E6C8500147676"
|
|
54
|
+
BuildableName = "libTapjoyReactNativeSdk.a"
|
|
55
|
+
BlueprintName = "TapjoyReactNativeSdk"
|
|
56
|
+
ReferencedContainer = "container:TapjoyReactNativeSdk.xcodeproj">
|
|
57
|
+
</BuildableReference>
|
|
58
|
+
</MacroExpansion>
|
|
59
|
+
</ProfileAction>
|
|
60
|
+
<AnalyzeAction
|
|
61
|
+
buildConfiguration = "Debug">
|
|
62
|
+
</AnalyzeAction>
|
|
63
|
+
<ArchiveAction
|
|
64
|
+
buildConfiguration = "Release"
|
|
65
|
+
revealArchiveInOrganizer = "YES">
|
|
66
|
+
</ArchiveAction>
|
|
67
|
+
</Scheme>
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
var _eventemitter = require("eventemitter3");
|
|
9
|
+
const Tapjoy = _reactNative.NativeModules.TapjoyReactNativeSdk;
|
|
10
|
+
const TapjoyEmitter = new _reactNative.NativeEventEmitter(Tapjoy);
|
|
11
|
+
const TapjoyEventType = 'TapjoyPlacement';
|
|
12
|
+
class TJPlacement extends _eventemitter.EventEmitter {
|
|
13
|
+
static REQUEST_DID_SUCCEED = 'requestDidSucceed';
|
|
14
|
+
static REQUEST_DID_FAIL = 'requestDidFail';
|
|
15
|
+
static CONTENT_IS_READY = 'contentIsReady';
|
|
16
|
+
static CONTENT_DID_APPEAR = 'contentDidAppear';
|
|
17
|
+
static CONTENT_DID_DISAPPEAR = 'contentDidDisappear';
|
|
18
|
+
constructor(name) {
|
|
19
|
+
super();
|
|
20
|
+
this.name = name;
|
|
21
|
+
this.error = undefined;
|
|
22
|
+
}
|
|
23
|
+
requestContent() {
|
|
24
|
+
var subscription = TapjoyEmitter.addListener(TapjoyEventType, event => {
|
|
25
|
+
if (event.name === TJPlacement.REQUEST_DID_SUCCEED) {
|
|
26
|
+
// Remove listener if there is no content available.
|
|
27
|
+
if (!this.isContentAvailable()) {
|
|
28
|
+
subscription.remove();
|
|
29
|
+
}
|
|
30
|
+
this.emit(TJPlacement.REQUEST_DID_SUCCEED, this);
|
|
31
|
+
} else if (event.name === TJPlacement.REQUEST_DID_FAIL) {
|
|
32
|
+
// No more events expected, remove listener.
|
|
33
|
+
subscription.remove();
|
|
34
|
+
this.error = event.error;
|
|
35
|
+
this.emit(TJPlacement.REQUEST_DID_FAIL, this);
|
|
36
|
+
} else if (event.name === TJPlacement.CONTENT_IS_READY) {
|
|
37
|
+
// No more events expected, remove listener.
|
|
38
|
+
subscription.remove();
|
|
39
|
+
this.emit(TJPlacement.CONTENT_IS_READY, this);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
Tapjoy.requestPlacement(this.name);
|
|
43
|
+
}
|
|
44
|
+
showContent() {
|
|
45
|
+
var subscription = TapjoyEmitter.addListener(TapjoyEventType, event => {
|
|
46
|
+
if (event.name === TJPlacement.CONTENT_DID_APPEAR) {
|
|
47
|
+
this.emit(TJPlacement.CONTENT_DID_APPEAR, this);
|
|
48
|
+
} else if (event.name === TJPlacement.CONTENT_DID_DISAPPEAR) {
|
|
49
|
+
// No more events expected, remove listener.
|
|
50
|
+
subscription.remove();
|
|
51
|
+
this.emit(TJPlacement.CONTENT_DID_DISAPPEAR, this);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
Tapjoy.showPlacement(this.name);
|
|
55
|
+
}
|
|
56
|
+
isContentReady() {
|
|
57
|
+
return Tapjoy.isContentReady(this.name);
|
|
58
|
+
}
|
|
59
|
+
isContentAvailable() {
|
|
60
|
+
return Tapjoy.isContentAvailable(this.name);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
var _default = TJPlacement;
|
|
64
|
+
exports.default = _default;
|
|
65
|
+
//# sourceMappingURL=TJPlacement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_eventemitter","Tapjoy","NativeModules","TapjoyReactNativeSdk","TapjoyEmitter","NativeEventEmitter","TapjoyEventType","TJPlacement","EventEmitter","REQUEST_DID_SUCCEED","REQUEST_DID_FAIL","CONTENT_IS_READY","CONTENT_DID_APPEAR","CONTENT_DID_DISAPPEAR","constructor","name","error","undefined","requestContent","subscription","addListener","event","isContentAvailable","remove","emit","requestPlacement","showContent","showPlacement","isContentReady","_default","exports","default"],"sourceRoot":"../../src","sources":["TJPlacement.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAEA,MAAME,MAAM,GAAGC,0BAAa,CAACC,oBAAoB;AACjD,MAAMC,aAAa,GAAG,IAAIC,+BAAkB,CAACJ,MAAM,CAAC;AAEpD,MAAMK,eAAe,GAAG,iBAAiB;AAQzC,MAAMC,WAAW,SAASC,0BAAY,CAAC;EACrC,OAAgBC,mBAAmB,GAAG,mBAAmB;EACzD,OAAgBC,gBAAgB,GAAG,gBAAgB;EACnD,OAAgBC,gBAAgB,GAAG,gBAAgB;EACnD,OAAgBC,kBAAkB,GAAG,kBAAkB;EACvD,OAAgBC,qBAAqB,GAAG,qBAAqB;EAKtDC,WAAWA,CAACC,IAAY,EAAE;IAC/B,KAAK,EAAE;IACP,IAAI,CAACA,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,KAAK,GAAGC,SAAS;EACxB;EAEAC,cAAcA,CAAA,EAAS;IACrB,IAAIC,YAAY,GAAGf,aAAa,CAACgB,WAAW,CAC1Cd,eAAe,EACde,KAA2B,IAAK;MAC/B,IAAIA,KAAK,CAACN,IAAI,KAAKR,WAAW,CAACE,mBAAmB,EAAE;QAClD;QACA,IAAI,CAAC,IAAI,CAACa,kBAAkB,EAAE,EAAE;UAC9BH,YAAY,CAACI,MAAM,EAAE;QACvB;QACA,IAAI,CAACC,IAAI,CAACjB,WAAW,CAACE,mBAAmB,EAAE,IAAI,CAAC;MAClD,CAAC,MAAM,IAAIY,KAAK,CAACN,IAAI,KAAKR,WAAW,CAACG,gBAAgB,EAAE;QACtD;QACAS,YAAY,CAACI,MAAM,EAAE;QACrB,IAAI,CAACP,KAAK,GAAGK,KAAK,CAACL,KAAK;QACxB,IAAI,CAACQ,IAAI,CAACjB,WAAW,CAACG,gBAAgB,EAAE,IAAI,CAAC;MAC/C,CAAC,MAAM,IAAIW,KAAK,CAACN,IAAI,KAAKR,WAAW,CAACI,gBAAgB,EAAE;QACtD;QACAQ,YAAY,CAACI,MAAM,EAAE;QACrB,IAAI,CAACC,IAAI,CAACjB,WAAW,CAACI,gBAAgB,EAAE,IAAI,CAAC;MAC/C;IACF,CAAC,CACF;IACDV,MAAM,CAACwB,gBAAgB,CAAC,IAAI,CAACV,IAAI,CAAC;EACpC;EAEAW,WAAWA,CAAA,EAAS;IAClB,IAAIP,YAAY,GAAGf,aAAa,CAACgB,WAAW,CAC1Cd,eAAe,EACde,KAA2B,IAAK;MAC/B,IAAIA,KAAK,CAACN,IAAI,KAAKR,WAAW,CAACK,kBAAkB,EAAE;QACjD,IAAI,CAACY,IAAI,CAACjB,WAAW,CAACK,kBAAkB,EAAE,IAAI,CAAC;MACjD,CAAC,MAAM,IAAIS,KAAK,CAACN,IAAI,KAAKR,WAAW,CAACM,qBAAqB,EAAE;QAC3D;QACAM,YAAY,CAACI,MAAM,EAAE;QACrB,IAAI,CAACC,IAAI,CAACjB,WAAW,CAACM,qBAAqB,EAAE,IAAI,CAAC;MACpD;IACF,CAAC,CACF;IACDZ,MAAM,CAAC0B,aAAa,CAAC,IAAI,CAACZ,IAAI,CAAC;EACjC;EAEAa,cAAcA,CAAA,EAAY;IACxB,OAAO3B,MAAM,CAAC2B,cAAc,CAAC,IAAI,CAACb,IAAI,CAAC;EACzC;EAEAO,kBAAkBA,CAAA,EAAY;IAC5B,OAAOrB,MAAM,CAACqB,kBAAkB,CAAC,IAAI,CAACP,IAAI,CAAC;EAC7C;AACF;AAAC,IAAAc,QAAA,GAEctB,WAAW;AAAAuB,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
|