cm-sdk-react-native-v3 3.6.0 → 3.6.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.
@@ -1,4 +1,5 @@
1
1
  import Foundation
2
+ import UIKit
2
3
  import cm_sdk_ios_v3
3
4
  import React
4
5
 
@@ -48,7 +49,7 @@ class CmSdkReactNativeV3: RCTEventEmitter, CMPManagerDelegate {
48
49
  }
49
50
 
50
51
  override func supportedEvents() -> [String]! {
51
- return ["didReceiveConsent", "didShowConsentLayer", "didCloseConsentLayer", "didReceiveError", "onClickLink"]
52
+ return ["didReceiveConsent", "didShowConsentLayer", "didCloseConsentLayer", "didReceiveError", "onClickLink", "didChangeATTStatus"]
52
53
  }
53
54
 
54
55
  override func startObserving() {
@@ -91,6 +92,7 @@ class CmSdkReactNativeV3: RCTEventEmitter, CMPManagerDelegate {
91
92
  @objc public func didCloseConsentLayer() {
92
93
  if isConsentLayerShown {
93
94
  isConsentLayerShown = false
95
+ shouldHandleLinkClicks = false
94
96
  sendEventIfListening(name: "didCloseConsentLayer", body: nil)
95
97
  } else {
96
98
  print("CmSdkReactNativeV3: Ignoring didCloseConsentLayer - consent layer was not shown")
@@ -103,22 +105,132 @@ class CmSdkReactNativeV3: RCTEventEmitter, CMPManagerDelegate {
103
105
 
104
106
  // MARK: - Configuration methods
105
107
 
106
- @objc(setWebViewConfig:withResolver:withRejecter:)
108
+ @objc(setWebViewConfig:resolve:reject:)
107
109
  func setWebViewConfig(_ config: [String: Any], resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
108
- let uiConfig = ConsentLayerUIConfig(
109
- position: .fullScreen,
110
- backgroundStyle: .dimmed(.black, 0.5),
111
- cornerRadius: CGFloat(config["cornerRadius"] as? Double ?? 5),
112
- respectsSafeArea: config["respectsSafeArea"] as? Bool ?? true,
113
- allowsOrientationChanges: config["allowsOrientationChanges"] as? Bool ?? true
114
- )
115
- runOnMainThread{
110
+ runOnMainThread {
111
+ let cornerRadius = CGFloat(config["cornerRadius"] as? Double ?? 5)
112
+ let respectsSafeArea = config["respectsSafeArea"] as? Bool ?? true
113
+ let allowsOrientationChanges = config["allowsOrientationChanges"] as? Bool ?? true
114
+
115
+ let position = self.mapPosition(config: config, respectsSafeArea: respectsSafeArea)
116
+ let backgroundStyle = self.mapBackgroundStyle(config: config)
117
+
118
+ let uiConfig = ConsentLayerUIConfig(
119
+ position: position,
120
+ backgroundStyle: backgroundStyle,
121
+ cornerRadius: cornerRadius,
122
+ respectsSafeArea: respectsSafeArea,
123
+ allowsOrientationChanges: allowsOrientationChanges
124
+ )
125
+
116
126
  self.cmpManager.setWebViewConfig(uiConfig)
117
127
  resolve(nil)
118
128
  }
119
129
  }
120
130
 
121
- @objc(setUrlConfig:withResolver:withRejecter:)
131
+ private func mapPosition(config: [String: Any], respectsSafeArea: Bool) -> Position {
132
+ if let positionValue = config["position"] as? String, positionValue == "custom",
133
+ let rectValue = config["customRect"] as? [String: Any],
134
+ let rect = rectFromDictionary(rectValue, respectsSafeArea: respectsSafeArea) {
135
+ return .custom(rect)
136
+ }
137
+
138
+ let insets = currentSafeAreaInsets()
139
+ let screenBounds = UIScreen.main.bounds
140
+ let usableHeight = screenBounds.height - (respectsSafeArea ? (insets.top + insets.bottom) : 0)
141
+ let halfHeight = usableHeight / 2
142
+
143
+ guard let positionValue = config["position"] as? String else {
144
+ return .fullScreen
145
+ }
146
+
147
+ switch positionValue {
148
+ case "halfScreenTop":
149
+ let originY = respectsSafeArea ? insets.top : 0
150
+ return .custom(CGRect(x: 0, y: originY, width: screenBounds.width, height: halfHeight))
151
+ case "halfScreenBottom":
152
+ let originY = (respectsSafeArea ? insets.top : 0) + halfHeight
153
+ return .custom(CGRect(x: 0, y: originY, width: screenBounds.width, height: halfHeight))
154
+ default:
155
+ return .fullScreen
156
+ }
157
+ }
158
+
159
+ private func mapBackgroundStyle(config: [String: Any]) -> BackgroundStyle {
160
+ guard let backgroundConfig = config["backgroundStyle"] as? [String: Any],
161
+ let type = backgroundConfig["type"] as? String else {
162
+ return .dimmed(.black, 0.5)
163
+ }
164
+
165
+ switch type {
166
+ case "dimmed":
167
+ let colorInput = backgroundConfig["color"] ?? "black"
168
+ let color = RCTConvert.uiColor(colorInput) ?? .black
169
+ let opacity = CGFloat(backgroundConfig["opacity"] as? Double ?? 0.5)
170
+ return .dimmed(color, opacity)
171
+ case "color":
172
+ let colorInput = backgroundConfig["color"] ?? "black"
173
+ let color = RCTConvert.uiColor(colorInput) ?? .black
174
+ return .color(color)
175
+ case "blur":
176
+ let styleString = backgroundConfig["blurEffectStyle"] as? String ?? "dark"
177
+ let blurStyle: UIBlurEffect.Style
178
+ switch styleString {
179
+ case "extraLight": blurStyle = .extraLight
180
+ case "light": blurStyle = .light
181
+ default: blurStyle = .dark
182
+ }
183
+ return .blur(blurStyle)
184
+ case "none":
185
+ return .none
186
+ default:
187
+ return .dimmed(.black, 0.5)
188
+ }
189
+ }
190
+
191
+ private func rectFromDictionary(_ dict: [String: Any], respectsSafeArea: Bool) -> CGRect? {
192
+ guard
193
+ let x = dict["x"] as? Double,
194
+ let y = dict["y"] as? Double,
195
+ let width = dict["width"] as? Double,
196
+ let height = dict["height"] as? Double
197
+ else {
198
+ return nil
199
+ }
200
+
201
+ let insets = respectsSafeArea ? currentSafeAreaInsets() : .zero
202
+ return CGRect(
203
+ x: CGFloat(x) + insets.left,
204
+ y: CGFloat(y) + insets.top,
205
+ width: CGFloat(width) - (insets.left + insets.right),
206
+ height: CGFloat(height) - (insets.top + insets.bottom)
207
+ )
208
+ }
209
+
210
+ private func currentSafeAreaInsets() -> UIEdgeInsets {
211
+ var insets: UIEdgeInsets = .zero
212
+ let work = {
213
+ if #available(iOS 13.0, *) {
214
+ let windowScene = UIApplication.shared.connectedScenes
215
+ .compactMap { $0 as? UIWindowScene }
216
+ .first { $0.activationState == .foregroundActive }
217
+ let window = windowScene?.windows.first { $0.isKeyWindow }
218
+ insets = window?.safeAreaInsets ?? .zero
219
+ } else {
220
+ insets = UIApplication.shared.keyWindow?.safeAreaInsets ?? .zero
221
+ }
222
+ }
223
+
224
+ if Thread.isMainThread {
225
+ work()
226
+ } else {
227
+ DispatchQueue.main.sync { work() }
228
+ }
229
+
230
+ return insets
231
+ }
232
+
233
+ @objc(setUrlConfig:resolve:reject:)
122
234
  func setUrlConfig(_ config: [String: Any], resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
123
235
  runOnMainThread { [self] in
124
236
  do {
@@ -128,9 +240,10 @@ class CmSdkReactNativeV3: RCTEventEmitter, CMPManagerDelegate {
128
240
  let appName = config["appName"] as? String else {
129
241
  throw NSError(domain: "CmSdkReactNativeV3", code: 0, userInfo: [NSLocalizedDescriptionKey: "Invalid config parameters"])
130
242
  }
243
+ let noHash = config["noHash"] as? Bool ?? false
131
244
  print("ID: \(id) - Domain: \(domain)")
132
245
 
133
- let urlConfig = UrlConfig(id: id, domain: domain, language: language, appName: appName)
246
+ let urlConfig = UrlConfig(id: id, domain: domain, language: language, appName: appName, jsonConfig: nil, noHash: noHash)
134
247
  print("urlConfig = \(urlConfig)")
135
248
  self.cmpManager.setUrlConfig(urlConfig)
136
249
  resolve(nil)
@@ -142,49 +255,45 @@ class CmSdkReactNativeV3: RCTEventEmitter, CMPManagerDelegate {
142
255
 
143
256
  // MARK: - New methods
144
257
 
145
- @objc(setATTStatus:withResolver:withRejecter:)
258
+ @objc(setATTStatus:resolve:reject:)
146
259
  func setATTStatus(_ status: NSNumber, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
147
260
  cmpManager.setATTStatus(status.intValue)
148
261
  resolve(nil)
149
262
  }
150
263
 
151
- @objc(getUserStatus:withRejecter:)
264
+ @objc(getUserStatus:reject:)
152
265
  func getUserStatus(resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
153
- do {
154
- let status = cmpManager.getUserStatus()
155
- let response: [String: Any] = [
156
- "status": status.status,
157
- "vendors": status.vendors,
158
- "purposes": status.purposes,
159
- "tcf": status.tcf,
160
- "addtlConsent": status.addtlConsent,
161
- "regulation": status.regulation
162
- ]
163
- resolve(response)
164
- } catch {
165
- reject("ERROR", "Failed to get user status: \(error.localizedDescription)", error)
166
- }
266
+ let status = cmpManager.getUserStatus()
267
+ let response: [String: Any] = [
268
+ "status": status.status,
269
+ "vendors": status.vendors,
270
+ "purposes": status.purposes,
271
+ "tcf": status.tcf,
272
+ "addtlConsent": status.addtlConsent,
273
+ "regulation": status.regulation
274
+ ]
275
+ resolve(response)
167
276
  }
168
277
 
169
- @objc(getStatusForPurpose:withResolver:withRejecter:)
278
+ @objc(getStatusForPurpose:resolve:reject:)
170
279
  func getStatusForPurpose(_ purposeId: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
171
280
  let status = cmpManager.getStatusForPurpose(id: purposeId)
172
281
  resolve(status.rawValue)
173
282
  }
174
283
 
175
- @objc(getStatusForVendor:withResolver:withRejecter:)
284
+ @objc(getStatusForVendor:resolve:reject:)
176
285
  func getStatusForVendor(_ vendorId: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
177
286
  let status = cmpManager.getStatusForVendor(id: vendorId)
178
287
  resolve(status.rawValue)
179
288
  }
180
289
 
181
- @objc(getGoogleConsentModeStatus:withRejecter:)
290
+ @objc(getGoogleConsentModeStatus:reject:)
182
291
  func getGoogleConsentModeStatus(resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
183
292
  let status = cmpManager.getGoogleConsentModeStatus()
184
293
  resolve(status)
185
294
  }
186
295
 
187
- @objc(checkAndOpen:withResolver:withRejecter:)
296
+ @objc(checkAndOpen:resolve:reject:)
188
297
  func checkAndOpen(_ jumpToSettings: Bool, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
189
298
  cmpManager.checkAndOpen(jumpToSettings: jumpToSettings) { error in
190
299
  if let error = error {
@@ -195,7 +304,7 @@ class CmSdkReactNativeV3: RCTEventEmitter, CMPManagerDelegate {
195
304
  }
196
305
  }
197
306
 
198
- @objc(forceOpen:withResolver:withRejecter:)
307
+ @objc(forceOpen:resolve:reject:)
199
308
  func forceOpen(_ jumpToSettings: Bool, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
200
309
  cmpManager.forceOpen(jumpToSettings: jumpToSettings) { error in
201
310
  if let error = error {
@@ -206,41 +315,41 @@ class CmSdkReactNativeV3: RCTEventEmitter, CMPManagerDelegate {
206
315
  }
207
316
  }
208
317
 
209
- @objc(exportCMPInfo:withRejecter:)
318
+ @objc(exportCMPInfo:reject:)
210
319
  func exportCMPInfo(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
211
320
  let info = self.cmpManager.exportCMPInfo()
212
321
  resolve(info)
213
322
  }
214
323
 
215
- @objc(acceptVendors:withResolver:withRejecter:)
324
+ @objc(acceptVendors:resolve:reject:)
216
325
  func acceptVendors(_ vendors: [String], resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
217
326
  self.cmpManager.acceptVendors(vendors) { success in
218
327
  resolve(success)
219
328
  }
220
329
  }
221
330
 
222
- @objc(rejectVendors:withResolver:withRejecter:)
331
+ @objc(rejectVendors:resolve:reject:)
223
332
  func rejectVendors(_ vendors: [String], resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
224
333
  self.cmpManager.rejectVendors(vendors) { success in
225
334
  resolve(success)
226
335
  }
227
336
  }
228
337
 
229
- @objc(acceptPurposes:updatePurpose:withResolver:withRejecter:)
338
+ @objc(acceptPurposes:updatePurpose:resolve:reject:)
230
339
  func acceptPurposes(_ purposes: [String], updatePurpose: Bool, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
231
340
  self.cmpManager.acceptPurposes(purposes, updatePurpose: updatePurpose) { success in
232
341
  resolve(success)
233
342
  }
234
343
  }
235
344
 
236
- @objc(rejectPurposes:updateVendor:withResolver:withRejecter:)
345
+ @objc(rejectPurposes:updateVendor:resolve:reject:)
237
346
  func rejectPurposes(_ purposes: [String], updateVendor: Bool, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
238
347
  self.cmpManager.rejectPurposes(purposes, updateVendor: updateVendor) { success in
239
348
  resolve(success)
240
349
  }
241
350
  }
242
351
 
243
- @objc(rejectAll:withRejecter:)
352
+ @objc(rejectAll:reject:)
244
353
  func rejectAll(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
245
354
  self.cmpManager.rejectAll { error in
246
355
  if let error = error {
@@ -251,7 +360,7 @@ class CmSdkReactNativeV3: RCTEventEmitter, CMPManagerDelegate {
251
360
  }
252
361
  }
253
362
 
254
- @objc(acceptAll:withRejecter:)
363
+ @objc(acceptAll:reject:)
255
364
  func acceptAll(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
256
365
  self.cmpManager.acceptAll { error in
257
366
  if let error = error {
@@ -262,7 +371,7 @@ class CmSdkReactNativeV3: RCTEventEmitter, CMPManagerDelegate {
262
371
  }
263
372
  }
264
373
 
265
- @objc(importCMPInfo:withResolver:withRejecter:)
374
+ @objc(importCMPInfo:resolve:reject:)
266
375
  func importCMPInfo(_ cmpString: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
267
376
  self.cmpManager.importCMPInfo(cmpString) { error in
268
377
  if let error = error {
@@ -273,17 +382,20 @@ class CmSdkReactNativeV3: RCTEventEmitter, CMPManagerDelegate {
273
382
  }
274
383
  }
275
384
 
276
- @objc(resetConsentManagementData:withRejecter:)
385
+ @objc(resetConsentManagementData:reject:)
277
386
  func resetConsentManagementData(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
278
387
  self.cmpManager.resetConsentManagementData(completion: { success in resolve(success)})
279
- resolve(nil)
280
388
  }
281
- }
282
-
283
- #if RCT_NEW_ARCH_ENABLED
284
- import CmSdkReactNativeV3Spec
285
389
 
286
- extension CmSdkReactNativeV3: NativeCmSdkReactNativeV3Spec {
287
- // Protocol is automatically satisfied by @objc methods above
390
+ // MARK: - Event emitter methods
391
+
392
+ @objc(addListener:)
393
+ override func addListener(_ eventName: String) {
394
+ super.addListener(eventName)
395
+ }
396
+
397
+ @objc(removeListeners:)
398
+ override func removeListeners(_ count: Double) {
399
+ super.removeListeners(Double(Int(count)))
400
+ }
288
401
  }
289
- #endif
@@ -3,9 +3,39 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
6
+ exports.default = exports.WebViewPosition = exports.BlurEffectStyle = exports.BackgroundStyleType = exports.ATTStatus = void 0;
7
7
  var _reactNative = require("react-native");
8
8
  // Event payload types for better TypeScript support
9
9
  // Additional type definitions for better TypeScript support
10
- var _default = exports.default = _reactNative.TurboModuleRegistry.getEnforcing('CmSdkReactNativeV3');
10
+ let WebViewPosition = exports.WebViewPosition = /*#__PURE__*/function (WebViewPosition) {
11
+ WebViewPosition["FullScreen"] = "fullScreen";
12
+ WebViewPosition["HalfScreenTop"] = "halfScreenTop";
13
+ WebViewPosition["HalfScreenBottom"] = "halfScreenBottom";
14
+ WebViewPosition["Custom"] = "custom";
15
+ return WebViewPosition;
16
+ }({});
17
+ let BackgroundStyleType = exports.BackgroundStyleType = /*#__PURE__*/function (BackgroundStyleType) {
18
+ BackgroundStyleType["Dimmed"] = "dimmed";
19
+ BackgroundStyleType["Color"] = "color";
20
+ BackgroundStyleType["Blur"] = "blur";
21
+ BackgroundStyleType["None"] = "none";
22
+ return BackgroundStyleType;
23
+ }({});
24
+ let BlurEffectStyle = exports.BlurEffectStyle = /*#__PURE__*/function (BlurEffectStyle) {
25
+ BlurEffectStyle["Light"] = "light";
26
+ BlurEffectStyle["Dark"] = "dark";
27
+ BlurEffectStyle["ExtraLight"] = "extraLight";
28
+ return BlurEffectStyle;
29
+ }({});
30
+ let ATTStatus = exports.ATTStatus = /*#__PURE__*/function (ATTStatus) {
31
+ ATTStatus[ATTStatus["NotDetermined"] = 0] = "NotDetermined";
32
+ ATTStatus[ATTStatus["Restricted"] = 1] = "Restricted";
33
+ ATTStatus[ATTStatus["Denied"] = 2] = "Denied";
34
+ ATTStatus[ATTStatus["Authorized"] = 3] = "Authorized";
35
+ return ATTStatus;
36
+ }({});
37
+ const {
38
+ CmSdkReactNativeV3
39
+ } = _reactNative.NativeModules;
40
+ var _default = exports.default = CmSdkReactNativeV3;
11
41
  //# sourceMappingURL=NativeCmSdkReactNativeV3.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeCmSdkReactNativeV3.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAEA;AAoBA;AAAA,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAoEeC,gCAAmB,CAACC,YAAY,CAAO,oBAAoB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","WebViewPosition","exports","BackgroundStyleType","BlurEffectStyle","ATTStatus","CmSdkReactNativeV3","NativeModules","_default","default"],"sourceRoot":"../../src","sources":["NativeCmSdkReactNativeV3.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA;AAoBA;AAAA,IASYC,eAAe,GAAAC,OAAA,CAAAD,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAcfE,mBAAmB,GAAAD,OAAA,CAAAC,mBAAA,0BAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAA,OAAnBA,mBAAmB;AAAA;AAAA,IAOnBC,eAAe,GAAAF,OAAA,CAAAE,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAMfC,SAAS,GAAAH,OAAA,CAAAG,SAAA,0BAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAATA,SAAS,CAATA,SAAS;EAAA,OAATA,SAAS;AAAA;AAqErB,MAAM;EAAEC;AAAmB,CAAC,GAAGC,0BAAa;AAAC,IAAAC,QAAA,GAAAN,OAAA,CAAAO,OAAA,GAE9BH,kBAAkB","ignoreList":[]}
@@ -3,21 +3,46 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "ATTStatus", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _NativeCmSdkReactNativeV.ATTStatus;
10
+ }
11
+ });
12
+ exports.BackgroundStyle = void 0;
13
+ Object.defineProperty(exports, "BackgroundStyleType", {
14
+ enumerable: true,
15
+ get: function () {
16
+ return _NativeCmSdkReactNativeV.BackgroundStyleType;
17
+ }
18
+ });
19
+ Object.defineProperty(exports, "BlurEffectStyle", {
20
+ enumerable: true,
21
+ get: function () {
22
+ return _NativeCmSdkReactNativeV.BlurEffectStyle;
23
+ }
24
+ });
25
+ Object.defineProperty(exports, "WebViewPosition", {
26
+ enumerable: true,
27
+ get: function () {
28
+ return _NativeCmSdkReactNativeV.WebViewPosition;
29
+ }
30
+ });
6
31
  exports.setWebViewConfig = exports.setUrlConfig = exports.setATTStatus = exports.resetConsentManagementData = exports.rejectVendors = exports.rejectPurposes = exports.rejectAll = exports.importCMPInfo = exports.getUserStatus = exports.getStatusForVendor = exports.getStatusForPurpose = exports.getGoogleConsentModeStatus = exports.forceOpen = exports.exportCMPInfo = exports.default = exports.checkAndOpen = exports.addShowConsentLayerListener = exports.addErrorListener = exports.addConsentListener = exports.addCloseConsentLayerListener = exports.addClickLinkListener = exports.addATTStatusChangeListener = exports.acceptVendors = exports.acceptPurposes = exports.acceptAll = void 0;
7
32
  var _reactNative = require("react-native");
8
- var _NativeCmSdkReactNativeV = _interopRequireDefault(require("./NativeCmSdkReactNativeV3.js"));
9
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
33
+ var _NativeCmSdkReactNativeV = _interopRequireWildcard(require("./NativeCmSdkReactNativeV3.js"));
34
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
35
+ // Re-export enums/constants for consumers
36
+
10
37
  const LINKING_ERROR = `The package 'react-native-cm-sdk-react-native-v3' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
11
38
  ios: "- You have run 'pod install'\n",
12
39
  default: ''
13
40
  }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
14
-
15
- // Use TurboModule if available (New Architecture), fallback to legacy NativeModules
16
- const CmSdkReactNativeV3 = _NativeCmSdkReactNativeV.default ?? (_reactNative.NativeModules.CmSdkReactNativeV3 ? _reactNative.NativeModules.CmSdkReactNativeV3 : new Proxy({}, {
41
+ const CmSdkReactNativeV3 = _NativeCmSdkReactNativeV.default ?? _reactNative.NativeModules.CmSdkReactNativeV3 ?? new Proxy({}, {
17
42
  get() {
18
43
  throw new Error(LINKING_ERROR);
19
44
  }
20
- }));
45
+ });
21
46
  const eventEmitter = new _reactNative.NativeEventEmitter(CmSdkReactNativeV3);
22
47
  const addConsentListener = callback => {
23
48
  return eventEmitter.addListener('didReceiveConsent', event => {
@@ -56,10 +81,15 @@ const setUrlConfig = config => {
56
81
  };
57
82
  exports.setUrlConfig = setUrlConfig;
58
83
  const setWebViewConfig = config => {
59
- return CmSdkReactNativeV3.setWebViewConfig(config);
84
+ const normalized = normalizeWebViewConfig(config);
85
+ return CmSdkReactNativeV3.setWebViewConfig(normalized);
60
86
  };
61
87
  exports.setWebViewConfig = setWebViewConfig;
62
88
  const setATTStatus = status => {
89
+ const allowed = new Set([_NativeCmSdkReactNativeV.ATTStatus.NotDetermined, _NativeCmSdkReactNativeV.ATTStatus.Restricted, _NativeCmSdkReactNativeV.ATTStatus.Denied, _NativeCmSdkReactNativeV.ATTStatus.Authorized]);
90
+ if (!allowed.has(status)) {
91
+ throw new Error(`[cm-sdk-react-native-v3] Invalid ATT status ${status}. Use ATTStatus enum (0–3 from Apple's ATTrackingManagerAuthorizationStatus).`);
92
+ }
63
93
  return CmSdkReactNativeV3.setATTStatus(status);
64
94
  };
65
95
 
@@ -78,7 +108,87 @@ exports.forceOpen = forceOpen;
78
108
  const getUserStatus = () => {
79
109
  return CmSdkReactNativeV3.getUserStatus();
80
110
  };
111
+
112
+ // Helpers
81
113
  exports.getUserStatus = getUserStatus;
114
+ const normalizeWebViewConfig = config => {
115
+ const position = config.position ?? _NativeCmSdkReactNativeV.WebViewPosition.FullScreen;
116
+ const allowedPositions = [_NativeCmSdkReactNativeV.WebViewPosition.FullScreen, _NativeCmSdkReactNativeV.WebViewPosition.HalfScreenTop, _NativeCmSdkReactNativeV.WebViewPosition.HalfScreenBottom, _NativeCmSdkReactNativeV.WebViewPosition.Custom];
117
+ if (!allowedPositions.includes(position)) {
118
+ throw new Error(`Invalid WebView position: ${position}`);
119
+ }
120
+ if (position === _NativeCmSdkReactNativeV.WebViewPosition.Custom) {
121
+ if (!config.customRect) {
122
+ throw new Error('customRect is required when position is "custom"');
123
+ }
124
+ if (_reactNative.Platform.OS === 'android') {
125
+ console.warn('[cm-sdk-react-native-v3] Android native SDK currently ignores customRect/position "custom"; it will fall back to full screen.');
126
+ }
127
+ }
128
+ const backgroundStyle = (() => {
129
+ if (!config.backgroundStyle) {
130
+ return {
131
+ type: _NativeCmSdkReactNativeV.BackgroundStyleType.Dimmed,
132
+ color: normalizeColor('black'),
133
+ opacity: 0.5
134
+ };
135
+ }
136
+ const {
137
+ type
138
+ } = config.backgroundStyle;
139
+ switch (type) {
140
+ case _NativeCmSdkReactNativeV.BackgroundStyleType.Dimmed:
141
+ return {
142
+ type,
143
+ color: normalizeColor(config.backgroundStyle.color ?? 'black'),
144
+ opacity: config.backgroundStyle.opacity ?? 0.5
145
+ };
146
+ case _NativeCmSdkReactNativeV.BackgroundStyleType.Color:
147
+ if (!config.backgroundStyle.color) throw new Error('color is required for backgroundStyle "color"');
148
+ return {
149
+ type,
150
+ color: normalizeColor(config.backgroundStyle.color)
151
+ };
152
+ case _NativeCmSdkReactNativeV.BackgroundStyleType.Blur:
153
+ {
154
+ const blurStyle = config.backgroundStyle.blurEffectStyle ?? (_reactNative.Platform.OS === 'ios' ? _NativeCmSdkReactNativeV.BlurEffectStyle.Dark : _NativeCmSdkReactNativeV.BlurEffectStyle.Dark);
155
+ if (blurStyle !== _NativeCmSdkReactNativeV.BlurEffectStyle.Dark && blurStyle !== _NativeCmSdkReactNativeV.BlurEffectStyle.Light && blurStyle !== _NativeCmSdkReactNativeV.BlurEffectStyle.ExtraLight) {
156
+ throw new Error(`Invalid blurEffectStyle: ${blurStyle}`);
157
+ }
158
+ if (_reactNative.Platform.OS === 'android') {
159
+ console.warn('[cm-sdk-react-native-v3] Android native SDK currently ignores blur backgrounds; using dimmed.');
160
+ }
161
+ return {
162
+ type,
163
+ blurEffectStyle: blurStyle
164
+ };
165
+ }
166
+ case _NativeCmSdkReactNativeV.BackgroundStyleType.None:
167
+ return {
168
+ type
169
+ };
170
+ default:
171
+ throw new Error(`Invalid backgroundStyle type: ${config.backgroundStyle.type}`);
172
+ }
173
+ })();
174
+ if (_reactNative.Platform.OS === 'android' && config.backgroundStyle) {
175
+ console.warn('[cm-sdk-react-native-v3] Android native SDK currently ignores backgroundStyle overrides; it always uses a dimmed background.');
176
+ }
177
+ return {
178
+ position,
179
+ customRect: config.customRect,
180
+ cornerRadius: config.cornerRadius ?? 5,
181
+ respectsSafeArea: config.respectsSafeArea ?? true,
182
+ allowsOrientationChanges: config.allowsOrientationChanges ?? true,
183
+ backgroundStyle
184
+ };
185
+ };
186
+ const normalizeColor = color => {
187
+ if (color === undefined) return undefined;
188
+ const processed = (0, _reactNative.processColor)(color);
189
+ if (processed == null) throw new Error(`Invalid color value: ${color}`);
190
+ return processed;
191
+ };
82
192
  const getStatusForPurpose = purposeId => {
83
193
  return CmSdkReactNativeV3.getStatusForPurpose(purposeId);
84
194
  };
@@ -131,5 +241,26 @@ const acceptAll = () => {
131
241
 
132
242
  // Re-export types for consumer convenience
133
243
  exports.acceptAll = acceptAll;
244
+ /**
245
+ * Helper factory to build strongly-typed background styles.
246
+ */
247
+ const BackgroundStyle = exports.BackgroundStyle = {
248
+ dimmed: (color, opacity) => ({
249
+ type: _NativeCmSdkReactNativeV.BackgroundStyleType.Dimmed,
250
+ color,
251
+ opacity
252
+ }),
253
+ color: color => ({
254
+ type: _NativeCmSdkReactNativeV.BackgroundStyleType.Color,
255
+ color
256
+ }),
257
+ blur: (blurEffectStyle = _NativeCmSdkReactNativeV.BlurEffectStyle.Dark) => ({
258
+ type: _NativeCmSdkReactNativeV.BackgroundStyleType.Blur,
259
+ blurEffectStyle
260
+ }),
261
+ none: () => ({
262
+ type: _NativeCmSdkReactNativeV.BackgroundStyleType.None
263
+ })
264
+ };
134
265
  var _default = exports.default = CmSdkReactNativeV3;
135
266
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_NativeCmSdkReactNativeV","_interopRequireDefault","e","__esModule","default","LINKING_ERROR","Platform","select","ios","CmSdkReactNativeV3","NativeCmSdkReactNativeV3","NativeModules","Proxy","get","Error","eventEmitter","NativeEventEmitter","addConsentListener","callback","addListener","event","consent","jsonObject","exports","addShowConsentLayerListener","addCloseConsentLayerListener","addErrorListener","error","addClickLinkListener","url","addATTStatusChangeListener","setUrlConfig","config","setWebViewConfig","setATTStatus","status","checkAndOpen","jumpToSettings","forceOpen","getUserStatus","getStatusForPurpose","purposeId","getStatusForVendor","vendorId","getGoogleConsentModeStatus","exportCMPInfo","importCMPInfo","cmpString","resetConsentManagementData","acceptVendors","vendors","rejectVendors","acceptPurposes","purposes","updatePurpose","rejectPurposes","updateVendor","rejectAll","acceptAll","_default"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_NativeCmSdkReactNativeV","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","LINKING_ERROR","Platform","select","ios","CmSdkReactNativeV3","NativeCmSdkReactNativeV3","NativeModules","Proxy","Error","eventEmitter","NativeEventEmitter","addConsentListener","callback","addListener","event","consent","jsonObject","exports","addShowConsentLayerListener","addCloseConsentLayerListener","addErrorListener","error","addClickLinkListener","url","addATTStatusChangeListener","setUrlConfig","config","setWebViewConfig","normalized","normalizeWebViewConfig","setATTStatus","status","allowed","Set","ATTStatus","NotDetermined","Restricted","Denied","Authorized","checkAndOpen","jumpToSettings","forceOpen","getUserStatus","position","WebViewPosition","FullScreen","allowedPositions","HalfScreenTop","HalfScreenBottom","Custom","includes","customRect","OS","console","warn","backgroundStyle","type","BackgroundStyleType","Dimmed","color","normalizeColor","opacity","Color","Blur","blurStyle","blurEffectStyle","BlurEffectStyle","Dark","Light","ExtraLight","None","cornerRadius","respectsSafeArea","allowsOrientationChanges","undefined","processed","processColor","getStatusForPurpose","purposeId","getStatusForVendor","vendorId","getGoogleConsentModeStatus","exportCMPInfo","importCMPInfo","cmpString","resetConsentManagementData","acceptVendors","vendors","rejectVendors","acceptPurposes","purposes","updatePurpose","rejectPurposes","updateVendor","rejectAll","acceptAll","BackgroundStyle","dimmed","blur","none","_default"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}