@usercentrics/react-native-sdk 2.25.1 → 2.26.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.
- package/android/build-legacy.gradle +1 -1
- package/android/build.gradle.kts +1 -1
- package/android/src/main/java/com/usercentrics/reactnative/RNUsercentricsModule.kt +102 -2
- package/android/src/main/java/com/usercentrics/reactnative/RNUsercentricsModuleSpec.kt +19 -1
- package/android/src/main/java/com/usercentrics/reactnative/extensions/BannerSettingsExtensions.kt +2 -1
- package/android/src/main/java/com/usercentrics/reactnative/extensions/GppDataExtensions.kt +83 -0
- package/android/src/main/java/com/usercentrics/reactnative/extensions/UserDecisionExtensions.kt +2 -1
- package/android/src/main/java/com/usercentrics/reactnative/extensions/UsercentricsCMPDataExtensions.kt +44 -2
- package/android/src/test/java/com/usercentrics/reactnative/extensions/NullabilityTest.kt +189 -0
- package/ios/Extensions/GppData+Dict.swift +45 -0
- package/ios/Extensions/GppSectionChangePayload+Dict.swift +10 -0
- package/ios/Extensions/UIImage+UsercentricsLogoDict.swift +31 -6
- package/ios/Extensions/UsercentricsCMPData+Dict.swift +6 -2
- package/ios/Manager/UsercentricsManager.swift +28 -3
- package/ios/RNUsercentricsModule.mm +11 -7
- package/ios/RNUsercentricsModule.swift +56 -15
- package/ios/RNUsercentricsModuleSpec.h +13 -0
- package/lib/NativeUsercentrics.d.ts +8 -2
- package/lib/NativeUsercentrics.js.map +1 -1
- package/lib/Usercentrics.d.ts +8 -2
- package/lib/Usercentrics.js +23 -3
- package/lib/Usercentrics.js.map +1 -1
- package/lib/fabric/NativeUsercentricsModule.d.ts +7 -1
- package/lib/fabric/NativeUsercentricsModule.js.map +1 -1
- package/lib/models/CCPASettings.d.ts +3 -1
- package/lib/models/CCPASettings.js +3 -1
- package/lib/models/CCPASettings.js.map +1 -1
- package/lib/models/GppData.d.ts +6 -0
- package/lib/models/GppData.js +8 -0
- package/lib/models/GppData.js.map +1 -0
- package/lib/models/GppSectionChangePayload.d.ts +4 -0
- package/lib/models/GppSectionChangePayload.js +6 -0
- package/lib/models/GppSectionChangePayload.js.map +1 -0
- package/lib/models/TCF2Settings.d.ts +2 -2
- package/lib/models/TCF2Settings.js +2 -2
- package/lib/models/TCF2Settings.js.map +1 -1
- package/lib/models/UsercentricsSettings.d.ts +3 -1
- package/lib/models/UsercentricsSettings.js +3 -1
- package/lib/models/UsercentricsSettings.js.map +1 -1
- package/lib/models/index.d.ts +2 -0
- package/lib/models/index.js +2 -0
- package/lib/models/index.js.map +1 -1
- package/package.json +2 -2
- package/src/NativeUsercentrics.ts +10 -1
- package/src/Usercentrics.tsx +31 -3
- package/src/__tests__/index.test.ts +66 -1
- package/src/__tests__/mocks.ts +17 -1
- package/src/fabric/NativeUsercentricsModule.ts +8 -1
- package/src/models/CCPASettings.tsx +7 -1
- package/src/models/GppData.tsx +15 -0
- package/src/models/GppSectionChangePayload.tsx +7 -0
- package/src/models/TCF2Settings.tsx +3 -3
- package/src/models/UsercentricsSettings.tsx +6 -0
- package/src/models/index.tsx +2 -0
|
@@ -3,13 +3,38 @@ import UIKit
|
|
|
3
3
|
|
|
4
4
|
extension UIImage {
|
|
5
5
|
convenience init?(from dictionary: NSDictionary?) {
|
|
6
|
-
guard
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
guard let dictionary = dictionary else { return nil }
|
|
7
|
+
|
|
8
|
+
if let logoPath = dictionary["logoPath"] as? String, !logoPath.isEmpty,
|
|
9
|
+
let image = Self.image(fromLogoPath: logoPath),
|
|
10
|
+
let cgImage = image.cgImage {
|
|
11
|
+
self.init(cgImage: cgImage, scale: image.scale, orientation: image.imageOrientation)
|
|
12
|
+
return
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
if let logoName = dictionary["logoName"] as? String, !logoName.isEmpty {
|
|
16
|
+
self.init(named: logoName)
|
|
17
|
+
return
|
|
11
18
|
}
|
|
12
19
|
|
|
13
|
-
|
|
20
|
+
return nil
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
private static func image(fromLogoPath logoPath: String) -> UIImage? {
|
|
24
|
+
if logoPath.hasPrefix("file://") {
|
|
25
|
+
let path = logoPath.replacingOccurrences(of: "file://", with: "")
|
|
26
|
+
if let image = UIImage(contentsOfFile: path) { return image }
|
|
27
|
+
}
|
|
28
|
+
else if logoPath.hasPrefix("/") {
|
|
29
|
+
if let image = UIImage(contentsOfFile: logoPath) { return image }
|
|
30
|
+
}
|
|
31
|
+
else if logoPath.hasPrefix("http://") || logoPath.hasPrefix("https://"),
|
|
32
|
+
let url = URL(string: logoPath),
|
|
33
|
+
let data = try? Data(contentsOf: url),
|
|
34
|
+
let image = UIImage(data: data) {
|
|
35
|
+
return image
|
|
36
|
+
}
|
|
37
|
+
if let image = UIImage(named: logoPath) { return image }
|
|
38
|
+
return nil
|
|
14
39
|
}
|
|
15
40
|
}
|
|
@@ -45,6 +45,8 @@ extension UsercentricsSettings {
|
|
|
45
45
|
"publishedApps": (self.publishedApps?.map { $0.toDictionary() } ?? nil) as Any,
|
|
46
46
|
"renewConsentsTimestamp": self.renewConsentsTimestamp as Any,
|
|
47
47
|
"consentWebhook": self.consentWebhook as Any,
|
|
48
|
+
"gppSignalingEnabled": self.gppSignalingEnabled,
|
|
49
|
+
"gpcSignalHonoured": self.gpcSignalHonoured,
|
|
48
50
|
]
|
|
49
51
|
}
|
|
50
52
|
}
|
|
@@ -164,6 +166,8 @@ extension CCPASettings {
|
|
|
164
166
|
"secondLayerDescription" : self.secondLayerDescription as Any,
|
|
165
167
|
"secondLayerHideLanguageSwitch" : self.secondLayerHideLanguageSwitch,
|
|
166
168
|
"btnMoreInfo" : self.btnMoreInfo as Any,
|
|
169
|
+
"mspaCoveredTransaction" : self.mspaCoveredTransaction,
|
|
170
|
+
"mspaMode" : self.mspaMode?.ordinal as Any,
|
|
167
171
|
]
|
|
168
172
|
}
|
|
169
173
|
}
|
|
@@ -208,7 +212,6 @@ extension TCF2Settings {
|
|
|
208
212
|
"disabledSpecialFeatures" : self.disabledSpecialFeatures,
|
|
209
213
|
"firstLayerShowDescriptions" : self.firstLayerShowDescriptions,
|
|
210
214
|
"hideNonIabOnFirstLayer" : self.hideNonIabOnFirstLayer,
|
|
211
|
-
"resurfacePeriodEnded" : self.resurfacePeriodEnded,
|
|
212
215
|
"resurfacePurposeChanged" : self.resurfacePurposeChanged,
|
|
213
216
|
"resurfaceVendorAdded" : self.resurfaceVendorAdded,
|
|
214
217
|
"firstLayerDescription" : self.firstLayerDescription as Any,
|
|
@@ -231,7 +234,8 @@ extension TCF2Settings {
|
|
|
231
234
|
"scope": self.scope.ordinal,
|
|
232
235
|
"changedPurposes": self.changedPurposes?.toDictionary() as Any,
|
|
233
236
|
"acmV2Enabled": self.acmV2Enabled,
|
|
234
|
-
"selectedATPIds": self.selectedATPIds
|
|
237
|
+
"selectedATPIds": self.selectedATPIds,
|
|
238
|
+
"resurfacePeriod": self.resurfacePeriod,
|
|
235
239
|
]
|
|
236
240
|
}
|
|
237
241
|
}
|
|
@@ -19,16 +19,21 @@ public protocol UsercentricsManager {
|
|
|
19
19
|
func getCMPData() -> UsercentricsCMPData
|
|
20
20
|
func getUserSessionData() -> String
|
|
21
21
|
func getUSPData() -> CCPAData
|
|
22
|
+
func getGPPData() -> GppData
|
|
23
|
+
func getGPPString() -> String?
|
|
24
|
+
func setGPPConsent(sectionName: String, fieldName: String, value: Any)
|
|
22
25
|
func getTCFData(callback: @escaping (TCFData) -> Void)
|
|
23
26
|
func getABTestingVariant() -> String?
|
|
27
|
+
func getDpsMetadata(templateId: String) -> [String: Any]?
|
|
24
28
|
func getAdditionalConsentModeData() -> AdditionalConsentModeData
|
|
29
|
+
func onGppSectionChange(callback: @escaping (GppSectionChangePayload) -> Void) -> UsercentricsDisposableEvent<GppSectionChangePayload>
|
|
25
30
|
|
|
26
31
|
func changeLanguage(language: String, onSuccess: @escaping (() -> Void), onFailure: @escaping ((Error) -> Void))
|
|
27
32
|
|
|
28
33
|
func acceptAllForTCF(fromLayer: TCFDecisionUILayer, consentType: UsercentricsConsentType) -> [UsercentricsServiceConsent]
|
|
29
34
|
func acceptAll(consentType: UsercentricsConsentType) -> [UsercentricsServiceConsent]
|
|
30
35
|
|
|
31
|
-
func denyAllForTCF(fromLayer: TCFDecisionUILayer, consentType: UsercentricsConsentType, unsavedPurposeLIDecisions: [KotlinInt: KotlinBoolean]?) -> [UsercentricsServiceConsent]
|
|
36
|
+
func denyAllForTCF(fromLayer: TCFDecisionUILayer, consentType: UsercentricsConsentType, unsavedPurposeLIDecisions: [KotlinInt: KotlinBoolean]?, unsavedVendorLIDecisions: [KotlinInt: KotlinBoolean]?) -> [UsercentricsServiceConsent]
|
|
32
37
|
func denyAll(consentType: UsercentricsConsentType) -> [UsercentricsServiceConsent]
|
|
33
38
|
|
|
34
39
|
func saveDecisionsForTCF(tcfDecisions: TCFUserDecisions,
|
|
@@ -92,10 +97,30 @@ final class UsercentricsManagerImplementation: UsercentricsManager {
|
|
|
92
97
|
return UsercentricsCore.shared.getUSPData()
|
|
93
98
|
}
|
|
94
99
|
|
|
100
|
+
func getGPPData() -> GppData {
|
|
101
|
+
return UsercentricsCore.shared.getGPPData()
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
func getGPPString() -> String? {
|
|
105
|
+
return UsercentricsCore.shared.getGPPString()
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
func setGPPConsent(sectionName: String, fieldName: String, value: Any) {
|
|
109
|
+
UsercentricsCore.shared.setGPPConsent(sectionName: sectionName, fieldName: fieldName, value: value)
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
func onGppSectionChange(callback: @escaping (GppSectionChangePayload) -> Void) -> UsercentricsDisposableEvent<GppSectionChangePayload> {
|
|
113
|
+
return UsercentricsEvent.shared.onGppSectionChange(callback: callback)
|
|
114
|
+
}
|
|
115
|
+
|
|
95
116
|
func getTCFData(callback: @escaping (TCFData) -> Void) {
|
|
96
117
|
UsercentricsCore.shared.getTCFData(callback: callback)
|
|
97
118
|
}
|
|
98
119
|
|
|
120
|
+
func getDpsMetadata(templateId: String) -> [String: Any]? {
|
|
121
|
+
return UsercentricsCore.shared.getDpsMetadata(templateId: templateId)
|
|
122
|
+
}
|
|
123
|
+
|
|
99
124
|
func getAdditionalConsentModeData() -> AdditionalConsentModeData {
|
|
100
125
|
return UsercentricsCore.shared.getAdditionalConsentModeData()
|
|
101
126
|
}
|
|
@@ -112,8 +137,8 @@ final class UsercentricsManagerImplementation: UsercentricsManager {
|
|
|
112
137
|
return UsercentricsCore.shared.acceptAll(consentType: consentType)
|
|
113
138
|
}
|
|
114
139
|
|
|
115
|
-
func denyAllForTCF(fromLayer: TCFDecisionUILayer, consentType: UsercentricsConsentType, unsavedPurposeLIDecisions: [KotlinInt: KotlinBoolean]?) -> [UsercentricsServiceConsent] {
|
|
116
|
-
return UsercentricsCore.shared.denyAllForTCF(fromLayer: fromLayer, consentType: consentType, unsavedPurposeLIDecisions: unsavedPurposeLIDecisions)
|
|
140
|
+
func denyAllForTCF(fromLayer: TCFDecisionUILayer, consentType: UsercentricsConsentType, unsavedPurposeLIDecisions: [KotlinInt: KotlinBoolean]?, unsavedVendorLIDecisions: [KotlinInt: KotlinBoolean]?) -> [UsercentricsServiceConsent] {
|
|
141
|
+
return UsercentricsCore.shared.denyAllForTCF(fromLayer: fromLayer, consentType: consentType, unsavedPurposeLIDecisions: unsavedPurposeLIDecisions, unsavedVendorLIDecisions: unsavedVendorLIDecisions)
|
|
117
142
|
}
|
|
118
143
|
|
|
119
144
|
func denyAll(consentType: UsercentricsConsentType) -> [UsercentricsServiceConsent] {
|
|
@@ -10,10 +10,6 @@
|
|
|
10
10
|
@interface RCT_EXTERN_MODULE(RNUsercentricsModule, NSObject)
|
|
11
11
|
RCT_EXTERN_METHOD(configure:(NSDictionary *)dict)
|
|
12
12
|
|
|
13
|
-
RCT_EXTERN_METHOD(showCMP:(NSDictionary *)dict
|
|
14
|
-
resolve:(RCTPromiseResolveBlock)resolve
|
|
15
|
-
reject:(RCTPromiseRejectBlock)reject)
|
|
16
|
-
|
|
17
13
|
RCT_EXTERN_METHOD(showFirstLayer:(NSDictionary *)dict
|
|
18
14
|
resolve:(RCTPromiseResolveBlock)resolve
|
|
19
15
|
reject:(RCTPromiseRejectBlock)reject)
|
|
@@ -29,9 +25,6 @@ RCT_EXTERN_METHOD(restoreUserSession:(NSString *)controllerId
|
|
|
29
25
|
RCT_EXTERN_METHOD(isReady:(RCTPromiseResolveBlock)resolve
|
|
30
26
|
reject:(RCTPromiseRejectBlock)reject)
|
|
31
27
|
|
|
32
|
-
RCT_EXTERN_METHOD(getTCFString:(RCTPromiseResolveBlock)resolve
|
|
33
|
-
reject:(RCTPromiseRejectBlock)reject)
|
|
34
|
-
|
|
35
28
|
RCT_EXTERN_METHOD(getControllerId:(RCTPromiseResolveBlock)resolve
|
|
36
29
|
reject:(RCTPromiseRejectBlock)reject)
|
|
37
30
|
|
|
@@ -50,6 +43,12 @@ RCT_EXTERN_METHOD(getUserSessionData:(RCTPromiseResolveBlock)resolve
|
|
|
50
43
|
RCT_EXTERN_METHOD(getUSPData:(RCTPromiseResolveBlock)resolve
|
|
51
44
|
reject:(RCTPromiseRejectBlock)reject)
|
|
52
45
|
|
|
46
|
+
RCT_EXTERN_METHOD(getGPPData:(RCTPromiseResolveBlock)resolve
|
|
47
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
48
|
+
|
|
49
|
+
RCT_EXTERN_METHOD(getGPPString:(RCTPromiseResolveBlock)resolve
|
|
50
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
51
|
+
|
|
53
52
|
RCT_EXTERN_METHOD(getTCFData:(RCTPromiseResolveBlock)resolve
|
|
54
53
|
reject:(RCTPromiseRejectBlock)reject)
|
|
55
54
|
|
|
@@ -72,6 +71,7 @@ RCT_EXTERN_METHOD(acceptAll:(double)consentType
|
|
|
72
71
|
RCT_EXTERN_METHOD(denyAllForTCF:(double)fromLayer
|
|
73
72
|
consentType:(double)consentType
|
|
74
73
|
unsavedPurposeLIDecisions:(NSArray)unsavedPurposeLIDecisions
|
|
74
|
+
unsavedVendorLIDecisions:(NSArray)unsavedVendorLIDecisions
|
|
75
75
|
resolve:(RCTPromiseResolveBlock)resolve
|
|
76
76
|
reject:(RCTPromiseRejectBlock)reject)
|
|
77
77
|
|
|
@@ -100,6 +100,10 @@ RCT_EXTERN_METHOD(setCMPId:(double)id)
|
|
|
100
100
|
|
|
101
101
|
RCT_EXTERN_METHOD(setABTestingVariant:(NSString *)variant)
|
|
102
102
|
|
|
103
|
+
RCT_EXTERN_METHOD(setGPPConsent:(NSString *)sectionName
|
|
104
|
+
fieldName:(NSString *)fieldName
|
|
105
|
+
value:(NSDictionary *)value)
|
|
106
|
+
|
|
103
107
|
RCT_EXTERN_METHOD(track:(double)event)
|
|
104
108
|
|
|
105
109
|
RCT_EXTERN_METHOD(clearUserSession:(RCTPromiseResolveBlock)resolve
|
|
@@ -17,18 +17,35 @@ import RNUsercentricsModuleSpec
|
|
|
17
17
|
#endif
|
|
18
18
|
|
|
19
19
|
@objc(RNUsercentricsModule)
|
|
20
|
-
class RNUsercentricsModule:
|
|
20
|
+
class RNUsercentricsModule: RCTEventEmitter {
|
|
21
21
|
|
|
22
22
|
var usercentricsManager: UsercentricsManager = UsercentricsManagerImplementation()
|
|
23
23
|
var queue: DispatchQueueManager = DispatchQueue.main
|
|
24
|
+
private var gppSectionChangeSubscription: UsercentricsDisposableEvent<GppSectionChangePayload>?
|
|
24
25
|
|
|
25
|
-
@objc static func moduleName() -> String! {
|
|
26
|
+
@objc override static func moduleName() -> String! {
|
|
26
27
|
return "RNUsercentricsModule"
|
|
27
28
|
}
|
|
28
29
|
|
|
29
|
-
@objc static func requiresMainQueueSetup() -> Bool {
|
|
30
|
+
@objc override static func requiresMainQueueSetup() -> Bool {
|
|
30
31
|
return true
|
|
31
32
|
}
|
|
33
|
+
|
|
34
|
+
override func supportedEvents() -> [String]! {
|
|
35
|
+
return [Self.onGppSectionChangeEvent]
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
override func startObserving() {
|
|
39
|
+
guard gppSectionChangeSubscription == nil else { return }
|
|
40
|
+
gppSectionChangeSubscription = usercentricsManager.onGppSectionChange { [weak self] payload in
|
|
41
|
+
self?.sendEvent(withName: Self.onGppSectionChangeEvent, body: payload.toDictionary())
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
override func stopObserving() {
|
|
46
|
+
gppSectionChangeSubscription?.dispose()
|
|
47
|
+
gppSectionChangeSubscription = nil
|
|
48
|
+
}
|
|
32
49
|
|
|
33
50
|
@objc func configure(_ dict: NSDictionary) -> Void {
|
|
34
51
|
queue.async { [weak self] in
|
|
@@ -125,10 +142,28 @@ class RNUsercentricsModule: NSObject {
|
|
|
125
142
|
resolve(usercentricsManager.getUSPData().toDictionary())
|
|
126
143
|
}
|
|
127
144
|
|
|
145
|
+
@objc func getGPPData(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
|
|
146
|
+
resolve(usercentricsManager.getGPPData().toDictionary())
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
@objc func getGPPString(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
|
|
150
|
+
resolve(usercentricsManager.getGPPString())
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
@objc func setGPPConsent(_ sectionName: String, fieldName: String, value: NSDictionary) -> Void {
|
|
154
|
+
let unwrapped = value["value"] ?? NSNull()
|
|
155
|
+
usercentricsManager.setGPPConsent(sectionName: sectionName, fieldName: fieldName, value: unwrapped)
|
|
156
|
+
}
|
|
157
|
+
|
|
128
158
|
@objc func getABTestingVariant(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
|
|
129
159
|
resolve(usercentricsManager.getABTestingVariant())
|
|
130
160
|
}
|
|
131
161
|
|
|
162
|
+
@objc func getDpsMetadata(_ templateId: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
|
|
163
|
+
let metadata = usercentricsManager.getDpsMetadata(templateId: templateId)
|
|
164
|
+
resolve(metadata as NSDictionary?)
|
|
165
|
+
}
|
|
166
|
+
|
|
132
167
|
@objc func getAdditionalConsentModeData(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
|
|
133
168
|
resolve(usercentricsManager.getAdditionalConsentModeData().toDictionary())
|
|
134
169
|
}
|
|
@@ -160,20 +195,26 @@ class RNUsercentricsModule: NSObject {
|
|
|
160
195
|
@objc func denyAllForTCF(_ fromLayer: Double,
|
|
161
196
|
consentType: Double,
|
|
162
197
|
unsavedPurposeLIDecisions: [NSDictionary],
|
|
198
|
+
unsavedVendorLIDecisions: [NSDictionary],
|
|
163
199
|
resolve: @escaping RCTPromiseResolveBlock,
|
|
164
200
|
reject: @escaping RCTPromiseRejectBlock) -> Void {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
201
|
+
let services = usercentricsManager.denyAllForTCF(
|
|
202
|
+
fromLayer: .initialize(from: Int(fromLayer)),
|
|
203
|
+
consentType: .initialize(from: Int(consentType)),
|
|
204
|
+
unsavedPurposeLIDecisions: extractLIDecisionsMap(unsavedPurposeLIDecisions),
|
|
205
|
+
unsavedVendorLIDecisions: extractLIDecisionsMap(unsavedVendorLIDecisions)
|
|
206
|
+
)
|
|
207
|
+
resolve(services.toListOfDictionary())
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
private func extractLIDecisionsMap(_ decisions: [NSDictionary]) -> [KotlinInt: KotlinBoolean]? {
|
|
211
|
+
guard !decisions.isEmpty else { return nil }
|
|
212
|
+
return decisions.reduce(into: [:]) { result, dict in
|
|
213
|
+
if let id = dict["id"] as? Int,
|
|
214
|
+
let consent = dict["legitimateInterestConsent"] as? Bool {
|
|
215
|
+
result[KotlinInt(int: Int32(id))] = KotlinBoolean(bool: consent)
|
|
173
216
|
}
|
|
174
217
|
}
|
|
175
|
-
let services = usercentricsManager.denyAllForTCF(fromLayer: .initialize(from: Int(fromLayer)), consentType: .initialize(from: Int(consentType)), unsavedPurposeLIDecisions: decisions)
|
|
176
|
-
resolve(services.toListOfDictionary())
|
|
177
218
|
}
|
|
178
219
|
|
|
179
220
|
@objc func denyAll(_ consentType: Double,
|
|
@@ -227,6 +268,8 @@ class RNUsercentricsModule: NSObject {
|
|
|
227
268
|
reject("usercentrics_reactNative_clearUserSession_error", error.localizedDescription, error)
|
|
228
269
|
}
|
|
229
270
|
}
|
|
271
|
+
|
|
272
|
+
private static let onGppSectionChangeEvent = "onGppSectionChange"
|
|
230
273
|
}
|
|
231
274
|
|
|
232
275
|
// MARK: - RCTBridgeModule & TurboModule Conformance
|
|
@@ -246,6 +289,4 @@ extension RNUsercentricsModule: NativeUsercentricsSpec {
|
|
|
246
289
|
}
|
|
247
290
|
}
|
|
248
291
|
#endif
|
|
249
|
-
#else
|
|
250
|
-
extension RNUsercentricsModule: RCTBridgeModule {}
|
|
251
292
|
#endif
|
|
@@ -36,6 +36,10 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
36
36
|
- (void)getCMPData:(RCTPromiseResolveBlock)resolve
|
|
37
37
|
reject:(RCTPromiseRejectBlock)reject;
|
|
38
38
|
|
|
39
|
+
- (void)getDpsMetadata:(NSString *)templateId
|
|
40
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
41
|
+
reject:(RCTPromiseRejectBlock)reject;
|
|
42
|
+
|
|
39
43
|
- (void)getAdditionalConsentModeData:(RCTPromiseResolveBlock)resolve
|
|
40
44
|
reject:(RCTPromiseRejectBlock)reject;
|
|
41
45
|
|
|
@@ -48,12 +52,21 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
48
52
|
- (void)getUSPData:(RCTPromiseResolveBlock)resolve
|
|
49
53
|
reject:(RCTPromiseRejectBlock)reject;
|
|
50
54
|
|
|
55
|
+
- (void)getGPPData:(RCTPromiseResolveBlock)resolve
|
|
56
|
+
reject:(RCTPromiseRejectBlock)reject;
|
|
57
|
+
|
|
58
|
+
- (void)getGPPString:(RCTPromiseResolveBlock)resolve
|
|
59
|
+
reject:(RCTPromiseRejectBlock)reject;
|
|
60
|
+
|
|
51
61
|
- (void)getABTestingVariant:(RCTPromiseResolveBlock)resolve
|
|
52
62
|
reject:(RCTPromiseRejectBlock)reject;
|
|
53
63
|
|
|
54
64
|
// Configuration Setters
|
|
55
65
|
- (void)setCMPId:(double)cmpId;
|
|
56
66
|
- (void)setABTestingVariant:(NSString *)variant;
|
|
67
|
+
- (void)setGPPConsent:(NSString *)sectionName
|
|
68
|
+
fieldName:(NSString *)fieldName
|
|
69
|
+
value:(NSDictionary *)value;
|
|
57
70
|
- (void)changeLanguage:(NSString *)language
|
|
58
71
|
resolve:(RCTPromiseResolveBlock)resolve
|
|
59
72
|
reject:(RCTPromiseRejectBlock)reject;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TurboModule } from 'react-native';
|
|
2
|
-
import type { UsercentricsOptions, UsercentricsReadyStatus, BannerSettings, UsercentricsConsentUserResponse, UsercentricsServiceConsent, UsercentricsCMPData, AdditionalConsentModeData, TCFData, CCPAData, UserDecision, TCFUserDecisions, TCFUserDecisionOnPurpose } from './models';
|
|
2
|
+
import type { UsercentricsOptions, UsercentricsReadyStatus, BannerSettings, UsercentricsConsentUserResponse, UsercentricsServiceConsent, UsercentricsCMPData, AdditionalConsentModeData, TCFData, CCPAData, GppData, UserDecision, TCFUserDecisions, TCFUserDecisionOnPurpose, TCFUserDecisionOnVendor } from './models';
|
|
3
3
|
export interface Spec extends TurboModule {
|
|
4
4
|
configure(options: UsercentricsOptions): void;
|
|
5
5
|
isReady(): Promise<UsercentricsReadyStatus>;
|
|
@@ -14,18 +14,24 @@ export interface Spec extends TurboModule {
|
|
|
14
14
|
getTCFData(): Promise<TCFData>;
|
|
15
15
|
getUserSessionData(): Promise<string>;
|
|
16
16
|
getUSPData(): Promise<CCPAData>;
|
|
17
|
+
getGPPData(): Promise<GppData>;
|
|
18
|
+
getGPPString(): Promise<string | null>;
|
|
17
19
|
getABTestingVariant(): Promise<string>;
|
|
20
|
+
getDpsMetadata(templateId: string): Promise<Record<string, unknown> | null>;
|
|
18
21
|
setCMPId(id: number): void;
|
|
19
22
|
setABTestingVariant(variant: string): void;
|
|
23
|
+
setGPPConsent(sectionName: string, fieldName: string, value: Object): void;
|
|
20
24
|
changeLanguage(language: string): Promise<void>;
|
|
21
25
|
acceptAll(consentType: number): Promise<Array<UsercentricsServiceConsent>>;
|
|
22
26
|
acceptAllForTCF(fromLayer: number, consentType: number): Promise<Array<UsercentricsServiceConsent>>;
|
|
23
27
|
denyAll(consentType: number): Promise<Array<UsercentricsServiceConsent>>;
|
|
24
|
-
denyAllForTCF(fromLayer: number, consentType: number, unsavedPurposeLIDecisions: Array<TCFUserDecisionOnPurpose>): Promise<Array<UsercentricsServiceConsent>>;
|
|
28
|
+
denyAllForTCF(fromLayer: number, consentType: number, unsavedPurposeLIDecisions: Array<TCFUserDecisionOnPurpose>, unsavedVendorLIDecisions: Array<TCFUserDecisionOnVendor>): Promise<Array<UsercentricsServiceConsent>>;
|
|
25
29
|
saveDecisions(decisions: Array<UserDecision>, consentType: number): Promise<Array<UsercentricsServiceConsent>>;
|
|
26
30
|
saveDecisionsForTCF(tcfDecisions: TCFUserDecisions, fromLayer: number, saveDecisions: Array<UserDecision>, consentType: number): Promise<Array<UsercentricsServiceConsent>>;
|
|
27
31
|
saveOptOutForCCPA(isOptedOut: boolean, consentType: number): Promise<Array<UsercentricsServiceConsent>>;
|
|
28
32
|
track(event: number): void;
|
|
33
|
+
addListener(eventName: string): void;
|
|
34
|
+
removeListeners(count: number): void;
|
|
29
35
|
}
|
|
30
36
|
declare const _default: Spec;
|
|
31
37
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeUsercentrics.js","sourceRoot":"","sources":["../src/NativeUsercentrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAe,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"NativeUsercentrics.js","sourceRoot":"","sources":["../src/NativeUsercentrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAe,MAAM,cAAc,CAAC;AAwE/E,yDAAyD;AACzD,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,GAAG,CAAO,sBAAsB,CAAC,IAAI,aAAa,CAAC,oBAAoB,CAAC;AAEzH,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC1B,MAAM,IAAI,KAAK,CACb,0DAA0D;QAC1D,sDAAsD;QACtD,wCAAwC;QACxC,0DAA0D,CAC3D,CAAC;AACJ,CAAC;AAED,eAAe,oBAA4B,CAAC"}
|
package/lib/Usercentrics.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EmitterSubscription } from 'react-native';
|
|
2
|
+
import { AdditionalConsentModeData, BannerSettings, CCPAData, GppData, GppSectionChangePayload, TCFData, TCFDecisionUILayer, TCFUserDecisionOnPurpose, TCFUserDecisionOnVendor, TCFUserDecisions, UsercentricsAnalyticsEventType, UsercentricsCMPData, UsercentricsConsentType, UsercentricsConsentUserResponse, UsercentricsOptions, UsercentricsReadyStatus, UsercentricsServiceConsent, UserDecision } from './models';
|
|
2
3
|
export declare const Usercentrics: {
|
|
3
4
|
configure: (options: UsercentricsOptions) => void;
|
|
4
5
|
status: () => Promise<UsercentricsReadyStatus>;
|
|
@@ -11,18 +12,23 @@ export declare const Usercentrics: {
|
|
|
11
12
|
getCMPData: () => Promise<UsercentricsCMPData>;
|
|
12
13
|
getUserSessionData: () => Promise<string>;
|
|
13
14
|
getCCPAData: () => Promise<CCPAData>;
|
|
15
|
+
getGPPData: () => Promise<GppData>;
|
|
16
|
+
getGPPString: () => Promise<string | null>;
|
|
14
17
|
getTCFData: () => Promise<TCFData>;
|
|
15
18
|
getAdditionalConsentModeData: () => Promise<AdditionalConsentModeData>;
|
|
19
|
+
getDpsMetadata: (templateId: string) => Promise<Record<string, unknown> | null>;
|
|
16
20
|
changeLanguage: (language: string) => Promise<void>;
|
|
17
21
|
acceptAll: (consentType: UsercentricsConsentType) => Promise<Array<UsercentricsServiceConsent>>;
|
|
18
22
|
acceptAllForTCF: (fromLayer: TCFDecisionUILayer, consentType: UsercentricsConsentType) => Promise<Array<UsercentricsServiceConsent>>;
|
|
19
23
|
denyAll: (consentType: UsercentricsConsentType) => Promise<Array<UsercentricsServiceConsent>>;
|
|
20
|
-
denyAllForTCF: (fromLayer: TCFDecisionUILayer, consentType: UsercentricsConsentType, unsavedPurposeLIDecisions?: TCFUserDecisionOnPurpose[]) => Promise<Array<UsercentricsServiceConsent>>;
|
|
24
|
+
denyAllForTCF: (fromLayer: TCFDecisionUILayer, consentType: UsercentricsConsentType, unsavedPurposeLIDecisions?: TCFUserDecisionOnPurpose[], unsavedVendorLIDecisions?: TCFUserDecisionOnVendor[]) => Promise<Array<UsercentricsServiceConsent>>;
|
|
21
25
|
saveDecisions: (decisions: UserDecision[], consentType: UsercentricsConsentType) => Promise<Array<UsercentricsServiceConsent>>;
|
|
22
26
|
saveDecisionsForTCF: (tcfDecisions: TCFUserDecisions, fromLayer: TCFDecisionUILayer, decisions: UserDecision[], consentType: UsercentricsConsentType) => Promise<Array<UsercentricsServiceConsent>>;
|
|
23
27
|
saveOptOutForCCPA: (isOptedOut: boolean, consentType: UsercentricsConsentType) => Promise<Array<UsercentricsServiceConsent>>;
|
|
24
28
|
setCMPId: (id: number) => void;
|
|
25
29
|
setABTestingVariant: (variant: string) => void;
|
|
30
|
+
setGPPConsent: (sectionName: string, fieldName: string, value: unknown) => Promise<void>;
|
|
26
31
|
track: (event: UsercentricsAnalyticsEventType) => Promise<void>;
|
|
27
32
|
clearUserSession: () => Promise<UsercentricsReadyStatus>;
|
|
33
|
+
onGppSectionChange: (callback: (payload: GppSectionChangePayload) => void) => EmitterSubscription;
|
|
28
34
|
};
|
package/lib/Usercentrics.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { NativeModules } from 'react-native';
|
|
1
|
+
import { NativeEventEmitter, NativeModules } from 'react-native';
|
|
2
2
|
import NativeUsercentrics from './NativeUsercentrics';
|
|
3
3
|
// Use TurboModule when available, fallback to legacy bridge
|
|
4
4
|
const RNUsercentricsModule = NativeUsercentrics || NativeModules.RNUsercentricsModule;
|
|
5
|
+
const eventEmitter = new NativeEventEmitter(RNUsercentricsModule);
|
|
5
6
|
export const Usercentrics = {
|
|
6
7
|
configure: (options) => {
|
|
7
8
|
RNUsercentricsModule.configure(options);
|
|
@@ -45,6 +46,14 @@ export const Usercentrics = {
|
|
|
45
46
|
await RNUsercentricsModule.isReady();
|
|
46
47
|
return RNUsercentricsModule.getUSPData();
|
|
47
48
|
},
|
|
49
|
+
getGPPData: async () => {
|
|
50
|
+
await RNUsercentricsModule.isReady();
|
|
51
|
+
return RNUsercentricsModule.getGPPData();
|
|
52
|
+
},
|
|
53
|
+
getGPPString: async () => {
|
|
54
|
+
await RNUsercentricsModule.isReady();
|
|
55
|
+
return RNUsercentricsModule.getGPPString();
|
|
56
|
+
},
|
|
48
57
|
getTCFData: async () => {
|
|
49
58
|
await RNUsercentricsModule.isReady();
|
|
50
59
|
return RNUsercentricsModule.getTCFData();
|
|
@@ -53,6 +62,10 @@ export const Usercentrics = {
|
|
|
53
62
|
await RNUsercentricsModule.isReady();
|
|
54
63
|
return RNUsercentricsModule.getAdditionalConsentModeData();
|
|
55
64
|
},
|
|
65
|
+
getDpsMetadata: async (templateId) => {
|
|
66
|
+
await RNUsercentricsModule.isReady();
|
|
67
|
+
return RNUsercentricsModule.getDpsMetadata(templateId);
|
|
68
|
+
},
|
|
56
69
|
changeLanguage: async (language) => {
|
|
57
70
|
await RNUsercentricsModule.isReady();
|
|
58
71
|
return RNUsercentricsModule.changeLanguage(language);
|
|
@@ -69,9 +82,9 @@ export const Usercentrics = {
|
|
|
69
82
|
await RNUsercentricsModule.isReady();
|
|
70
83
|
return RNUsercentricsModule.denyAll(consentType);
|
|
71
84
|
},
|
|
72
|
-
denyAllForTCF: async (fromLayer, consentType, unsavedPurposeLIDecisions = []) => {
|
|
85
|
+
denyAllForTCF: async (fromLayer, consentType, unsavedPurposeLIDecisions = [], unsavedVendorLIDecisions = []) => {
|
|
73
86
|
await RNUsercentricsModule.isReady();
|
|
74
|
-
return RNUsercentricsModule.denyAllForTCF(fromLayer, consentType, unsavedPurposeLIDecisions);
|
|
87
|
+
return RNUsercentricsModule.denyAllForTCF(fromLayer, consentType, unsavedPurposeLIDecisions, unsavedVendorLIDecisions);
|
|
75
88
|
},
|
|
76
89
|
saveDecisions: async (decisions, consentType) => {
|
|
77
90
|
await RNUsercentricsModule.isReady();
|
|
@@ -91,6 +104,10 @@ export const Usercentrics = {
|
|
|
91
104
|
setABTestingVariant: (variant) => {
|
|
92
105
|
RNUsercentricsModule.setABTestingVariant(variant);
|
|
93
106
|
},
|
|
107
|
+
setGPPConsent: async (sectionName, fieldName, value) => {
|
|
108
|
+
await RNUsercentricsModule.isReady();
|
|
109
|
+
RNUsercentricsModule.setGPPConsent(sectionName, fieldName, { value });
|
|
110
|
+
},
|
|
94
111
|
track: async (event) => {
|
|
95
112
|
await RNUsercentricsModule.isReady();
|
|
96
113
|
RNUsercentricsModule.track(event);
|
|
@@ -99,5 +116,8 @@ export const Usercentrics = {
|
|
|
99
116
|
await RNUsercentricsModule.isReady();
|
|
100
117
|
return RNUsercentricsModule.clearUserSession();
|
|
101
118
|
},
|
|
119
|
+
onGppSectionChange: (callback) => {
|
|
120
|
+
return eventEmitter.addListener("onGppSectionChange", callback);
|
|
121
|
+
},
|
|
102
122
|
};
|
|
103
123
|
//# sourceMappingURL=Usercentrics.js.map
|
package/lib/Usercentrics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Usercentrics.js","sourceRoot":"","sources":["../src/Usercentrics.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Usercentrics.js","sourceRoot":"","sources":["../src/Usercentrics.tsx"],"names":[],"mappings":"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"}
|
|
@@ -13,18 +13,24 @@ export interface Spec extends TurboModule {
|
|
|
13
13
|
getTCFData(): Promise<Object>;
|
|
14
14
|
getUserSessionData(): Promise<string>;
|
|
15
15
|
getUSPData(): Promise<Object>;
|
|
16
|
+
getGPPData(): Promise<Object>;
|
|
17
|
+
getGPPString(): Promise<string | null>;
|
|
16
18
|
getABTestingVariant(): Promise<string>;
|
|
19
|
+
getDpsMetadata(templateId: string): Promise<Object | null>;
|
|
17
20
|
setCMPId(id: number): void;
|
|
18
21
|
setABTestingVariant(variant: string): void;
|
|
22
|
+
setGPPConsent(sectionName: string, fieldName: string, value: Object): void;
|
|
19
23
|
changeLanguage(language: string): Promise<void>;
|
|
20
24
|
acceptAll(consentType: number): Promise<Array<Object>>;
|
|
21
25
|
acceptAllForTCF(fromLayer: number, consentType: number): Promise<Array<Object>>;
|
|
22
26
|
denyAll(consentType: number): Promise<Array<Object>>;
|
|
23
|
-
denyAllForTCF(fromLayer: number, consentType: number, unsavedPurposeLIDecisions: Array<Object>): Promise<Array<Object>>;
|
|
27
|
+
denyAllForTCF(fromLayer: number, consentType: number, unsavedPurposeLIDecisions: Array<Object>, unsavedVendorLIDecisions: Array<Object>): Promise<Array<Object>>;
|
|
24
28
|
saveDecisions(decisions: Array<Object>, consentType: number): Promise<Array<Object>>;
|
|
25
29
|
saveDecisionsForTCF(tcfDecisions: Object, fromLayer: number, saveDecisions: Array<Object>, consentType: number): Promise<Array<Object>>;
|
|
26
30
|
saveOptOutForCCPA(isOptedOut: boolean, consentType: number): Promise<Array<Object>>;
|
|
27
31
|
track(event: number): void;
|
|
32
|
+
addListener(eventName: string): void;
|
|
33
|
+
removeListeners(count: number): void;
|
|
28
34
|
}
|
|
29
35
|
declare const _default: Spec | null;
|
|
30
36
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeUsercentricsModule.js","sourceRoot":"","sources":["../../src/fabric/NativeUsercentricsModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"NativeUsercentricsModule.js","sourceRoot":"","sources":["../../src/fabric/NativeUsercentricsModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAwDnD,eAAe,mBAAmB,CAAC,GAAG,CAAO,sBAAsB,CAAC,CAAC"}
|
|
@@ -13,5 +13,7 @@ export declare class CCPASettings {
|
|
|
13
13
|
secondLayerDescription: string;
|
|
14
14
|
secondLayerHideLanguageSwitch: boolean;
|
|
15
15
|
btnMoreInfo: string;
|
|
16
|
-
|
|
16
|
+
mspaCoveredTransaction?: boolean;
|
|
17
|
+
mspaMode?: number;
|
|
18
|
+
constructor(optOutNoticeLabel: string, btnSave: string, firstLayerTitle: string, isActive: boolean, showOnPageLoad: boolean, reshowAfterDays: number, iabAgreementExists: boolean, appFirstLayerDescription: string, firstLayerMobileDescriptionIsActive: boolean, firstLayerMobileDescription: string, secondLayerTitle: string, secondLayerDescription: string, secondLayerHideLanguageSwitch: boolean, btnMoreInfo: string, mspaCoveredTransaction?: boolean, mspaMode?: number);
|
|
17
19
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export class CCPASettings {
|
|
2
|
-
constructor(optOutNoticeLabel, btnSave, firstLayerTitle, isActive, showOnPageLoad, reshowAfterDays, iabAgreementExists, appFirstLayerDescription, firstLayerMobileDescriptionIsActive, firstLayerMobileDescription, secondLayerTitle, secondLayerDescription, secondLayerHideLanguageSwitch, btnMoreInfo) {
|
|
2
|
+
constructor(optOutNoticeLabel, btnSave, firstLayerTitle, isActive, showOnPageLoad, reshowAfterDays, iabAgreementExists, appFirstLayerDescription, firstLayerMobileDescriptionIsActive, firstLayerMobileDescription, secondLayerTitle, secondLayerDescription, secondLayerHideLanguageSwitch, btnMoreInfo, mspaCoveredTransaction, mspaMode) {
|
|
3
3
|
this.optOutNoticeLabel = optOutNoticeLabel;
|
|
4
4
|
this.btnSave = btnSave;
|
|
5
5
|
this.firstLayerTitle = firstLayerTitle;
|
|
@@ -14,6 +14,8 @@ export class CCPASettings {
|
|
|
14
14
|
this.secondLayerDescription = secondLayerDescription;
|
|
15
15
|
this.secondLayerHideLanguageSwitch = secondLayerHideLanguageSwitch;
|
|
16
16
|
this.btnMoreInfo = btnMoreInfo;
|
|
17
|
+
this.mspaCoveredTransaction = mspaCoveredTransaction;
|
|
18
|
+
this.mspaMode = mspaMode;
|
|
17
19
|
}
|
|
18
20
|
}
|
|
19
21
|
//# sourceMappingURL=CCPASettings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CCPASettings.js","sourceRoot":"","sources":["../../src/models/CCPASettings.tsx"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAY;
|
|
1
|
+
{"version":3,"file":"CCPASettings.js","sourceRoot":"","sources":["../../src/models/CCPASettings.tsx"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAY;IAmBrB,YACI,iBAAyB,EACzB,OAAe,EACf,eAAuB,EACvB,QAAiB,EACjB,cAAuB,EACvB,eAAuB,EACvB,kBAA2B,EAC3B,wBAAgC,EAChC,mCAA4C,EAC5C,2BAAmC,EACnC,gBAAwB,EACxB,sBAA8B,EAC9B,6BAAsC,EACtC,WAAmB,EACnB,sBAAgC,EAChC,QAAiB;QAEjB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;QAC1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QACtC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;QACpC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;QACtC,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAA;QAC5C,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,CAAA;QACxD,IAAI,CAAC,mCAAmC,GAAG,mCAAmC,CAAA;QAC9E,IAAI,CAAC,2BAA2B,GAAG,2BAA2B,CAAA;QAC9D,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;QACxC,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAA;QACpD,IAAI,CAAC,6BAA6B,GAAG,6BAA6B,CAAA;QAClE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAA;QACpD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC5B,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GppData.js","sourceRoot":"","sources":["../../src/models/GppData.tsx"],"names":[],"mappings":"AAAA,MAAM,OAAO,OAAO;IAKhB,YACI,SAAiB,EACjB,kBAA4B,EAC5B,QAAiD;QAEjD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAA;QAC5C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC5B,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GppSectionChangePayload.js","sourceRoot":"","sources":["../../src/models/GppSectionChangePayload.tsx"],"names":[],"mappings":"AAAA,MAAM,OAAO,uBAAuB;IAGhC,YAAY,IAAY;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IACpB,CAAC;CACJ"}
|