@deuna/react-native-sdk 1.0.3 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/lib/module/DeunaSDK.js +85 -77
  2. package/lib/module/DeunaSDK.js.map +1 -1
  3. package/lib/module/components/DeunaWidget.js +27 -25
  4. package/lib/module/components/DeunaWidget.js.map +1 -1
  5. package/lib/module/components/ExternalUrlWebView.js +56 -0
  6. package/lib/module/components/ExternalUrlWebView.js.map +1 -0
  7. package/lib/module/controllers/BaseWebViewController.js +15 -21
  8. package/lib/module/controllers/BaseWebViewController.js.map +1 -1
  9. package/lib/module/controllers/ElementsWidgetController.js +2 -3
  10. package/lib/module/controllers/ElementsWidgetController.js.map +1 -1
  11. package/lib/module/controllers/{OpenInNewTabController.js → ExternalUrlController.js} +4 -4
  12. package/lib/module/controllers/ExternalUrlController.js.map +1 -0
  13. package/lib/module/controllers/PaymentWidgetController.js +2 -2
  14. package/lib/module/controllers/PaymentWidgetController.js.map +1 -1
  15. package/lib/module/helpers/Completer.js +2 -2
  16. package/lib/module/helpers/Completer.js.map +1 -1
  17. package/lib/module/helpers/CrossPlatformBrowser.js +51 -0
  18. package/lib/module/helpers/CrossPlatformBrowser.js.map +1 -0
  19. package/lib/module/helpers/ExternalUrlHelper.js +96 -0
  20. package/lib/module/helpers/ExternalUrlHelper.js.map +1 -0
  21. package/lib/module/helpers/ViewManager.js +32 -0
  22. package/lib/module/helpers/ViewManager.js.map +1 -0
  23. package/lib/module/helpers/{getController.js → buildDeunaWidgetController.js} +2 -2
  24. package/lib/module/helpers/buildDeunaWidgetController.js.map +1 -0
  25. package/lib/module/helpers/getSubmitStrategy.js +1 -1
  26. package/lib/module/helpers/getSubmitStrategy.js.map +1 -1
  27. package/lib/module/interfaces/constants.js +1 -0
  28. package/lib/module/interfaces/constants.js.map +1 -1
  29. package/lib/module/types/helpers/buildElementsLink.js +3 -1
  30. package/lib/module/types/helpers/buildElementsLink.js.map +1 -1
  31. package/lib/module/types/helpers/buildPaymentLink.js +3 -1
  32. package/lib/module/types/helpers/buildPaymentLink.js.map +1 -1
  33. package/lib/module/types/helpers/buildVoucherLink.js +3 -1
  34. package/lib/module/types/helpers/buildVoucherLink.js.map +1 -1
  35. package/lib/module/types/helpers/constants.js +4 -0
  36. package/lib/module/types/helpers/constants.js.map +1 -0
  37. package/lib/module/types/helpers/urlConfig.js +1 -1
  38. package/lib/module/types/helpers/urlConfig.js.map +1 -1
  39. package/lib/typescript/deuna-sdk-react-native/src/DeunaSDK.d.ts +9 -11
  40. package/lib/typescript/deuna-sdk-react-native/src/DeunaSDK.d.ts.map +1 -1
  41. package/lib/typescript/deuna-sdk-react-native/src/components/DeunaWidget.d.ts.map +1 -1
  42. package/lib/typescript/deuna-sdk-react-native/src/components/ExternalUrlWebView.d.ts +7 -0
  43. package/lib/typescript/deuna-sdk-react-native/src/components/ExternalUrlWebView.d.ts.map +1 -0
  44. package/lib/typescript/deuna-sdk-react-native/src/controllers/BaseWebViewController.d.ts +4 -6
  45. package/lib/typescript/deuna-sdk-react-native/src/controllers/BaseWebViewController.d.ts.map +1 -1
  46. package/lib/typescript/deuna-sdk-react-native/src/controllers/ElementsWidgetController.d.ts.map +1 -1
  47. package/lib/typescript/deuna-sdk-react-native/src/controllers/{OpenInNewTabController.d.ts → ExternalUrlController.d.ts} +2 -2
  48. package/lib/typescript/deuna-sdk-react-native/src/controllers/ExternalUrlController.d.ts.map +1 -0
  49. package/lib/typescript/deuna-sdk-react-native/src/helpers/CrossPlatformBrowser.d.ts +25 -0
  50. package/lib/typescript/deuna-sdk-react-native/src/helpers/CrossPlatformBrowser.d.ts.map +1 -0
  51. package/lib/typescript/deuna-sdk-react-native/src/helpers/ExternalUrlHelper.d.ts +48 -0
  52. package/lib/typescript/deuna-sdk-react-native/src/helpers/ExternalUrlHelper.d.ts.map +1 -0
  53. package/lib/typescript/deuna-sdk-react-native/src/helpers/ViewManager.d.ts +19 -0
  54. package/lib/typescript/deuna-sdk-react-native/src/helpers/ViewManager.d.ts.map +1 -0
  55. package/lib/typescript/deuna-sdk-react-native/src/helpers/{getController.d.ts → buildDeunaWidgetController.d.ts} +2 -2
  56. package/lib/typescript/deuna-sdk-react-native/src/helpers/buildDeunaWidgetController.d.ts.map +1 -0
  57. package/lib/typescript/deuna-sdk-react-native/src/interfaces/constants.d.ts +1 -0
  58. package/lib/typescript/deuna-sdk-react-native/src/interfaces/constants.d.ts.map +1 -1
  59. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildElementsLink.d.ts.map +1 -1
  60. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildPaymentLink.d.ts.map +1 -1
  61. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildVoucherLink.d.ts.map +1 -1
  62. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/constants.d.ts +2 -0
  63. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/constants.d.ts.map +1 -0
  64. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/urlConfig.d.ts +1 -0
  65. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/urlConfig.d.ts.map +1 -1
  66. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/callbacks.d.ts +8 -0
  67. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/callbacks.d.ts.map +1 -1
  68. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/initWidgetBase.d.ts +1 -0
  69. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/initWidgetBase.d.ts.map +1 -1
  70. package/package.json +3 -1
  71. package/src/DeunaSDK.ts +102 -90
  72. package/src/components/DeunaWidget.tsx +38 -35
  73. package/src/components/ExternalUrlWebView.tsx +65 -0
  74. package/src/controllers/BaseWebViewController.ts +21 -27
  75. package/src/controllers/ElementsWidgetController.ts +2 -3
  76. package/src/controllers/{OpenInNewTabController.ts → ExternalUrlController.ts} +3 -3
  77. package/src/controllers/PaymentWidgetController.ts +2 -2
  78. package/src/helpers/Completer.ts +2 -2
  79. package/src/helpers/CrossPlatformBrowser.ts +49 -0
  80. package/src/helpers/ExternalUrlHelper.ts +118 -0
  81. package/src/helpers/ViewManager.ts +45 -0
  82. package/src/helpers/{getController.ts → buildDeunaWidgetController.ts} +1 -1
  83. package/src/helpers/getSubmitStrategy.ts +1 -1
  84. package/src/interfaces/constants.ts +2 -0
  85. package/src/types/helpers/buildElementsLink.ts +4 -1
  86. package/src/types/helpers/buildPaymentLink.ts +2 -0
  87. package/src/types/helpers/buildVoucherLink.ts +2 -0
  88. package/src/types/helpers/constants.ts +1 -0
  89. package/src/types/helpers/urlConfig.ts +3 -1
  90. package/src/types/interfaces/callbacks.ts +10 -1
  91. package/src/types/interfaces/initWidgetBase.ts +1 -0
  92. package/lib/module/components/NewTabWebView.js +0 -56
  93. package/lib/module/components/NewTabWebView.js.map +0 -1
  94. package/lib/module/controllers/OpenInNewTabController.js.map +0 -1
  95. package/lib/module/helpers/getController.js.map +0 -1
  96. package/lib/typescript/deuna-sdk-react-native/src/components/NewTabWebView.d.ts +0 -7
  97. package/lib/typescript/deuna-sdk-react-native/src/components/NewTabWebView.d.ts.map +0 -1
  98. package/lib/typescript/deuna-sdk-react-native/src/controllers/OpenInNewTabController.d.ts.map +0 -1
  99. package/lib/typescript/deuna-sdk-react-native/src/helpers/getController.d.ts.map +0 -1
  100. package/src/components/NewTabWebView.tsx +0 -64
@@ -17,14 +17,14 @@ export class Completer<T> {
17
17
 
18
18
  complete(value: T): void {
19
19
  if (this.completed) return;
20
- this.completed = true;
21
20
  this.resolvePromise?.(value);
21
+ this.completed = true;
22
22
  }
23
23
 
24
24
  completeError(error: any): void {
25
25
  if (this.completed) return;
26
- this.completed = true;
27
26
  this.rejectPromise?.(error);
27
+ this.completed = true;
28
28
  }
29
29
 
30
30
  isCompleted(): boolean {
@@ -0,0 +1,49 @@
1
+ import * as WebBrowser from 'expo-web-browser';
2
+ import { Platform } from 'react-native';
3
+
4
+ /**
5
+ * This class is used to open a browser in a SafariView Controller (iOS) or
6
+ * a Chrome Custom Tab (Android) depending on the platform.
7
+ *
8
+ * It is used to open the external URLs in the DEUNA widget.
9
+ */
10
+ class CrossPlatformBrowser {
11
+ private initialized = false;
12
+ /**
13
+ * Initialize the browser
14
+ */
15
+ async initialize() {
16
+ if (this.initialized) return;
17
+ await WebBrowser.maybeCompleteAuthSession();
18
+ this.initialized = true;
19
+ }
20
+
21
+ /**
22
+ * Open an URL in a SafariView Controller (iOS) or a Chrome Custom Tab (Android) depending on the platform
23
+ * @param url - The URL to open
24
+ */
25
+ async openBrowser(url: string) {
26
+ try {
27
+ await this.initialize();
28
+ await WebBrowser.openBrowserAsync(url);
29
+ } catch (error) {
30
+ console.error('Error opening browser', error);
31
+ }
32
+ }
33
+
34
+ /**
35
+ * Close the browser
36
+ */
37
+ async closeBrowser() {
38
+ if (Platform.OS !== 'ios') {
39
+ return;
40
+ }
41
+ try {
42
+ await WebBrowser.dismissBrowser();
43
+ } catch (error) {
44
+ console.error('Error closing browser', error);
45
+ }
46
+ }
47
+ }
48
+
49
+ export const crossPlatformBrowser = new CrossPlatformBrowser();
@@ -0,0 +1,118 @@
1
+ import { AppState, Platform } from 'react-native';
2
+ import { WebViewDelegate } from '../controllers/BaseWebViewController';
3
+ import { ExternalUrlController } from '../controllers/ExternalUrlController';
4
+ import { Completer } from './Completer';
5
+ import { crossPlatformBrowser } from './CrossPlatformBrowser';
6
+
7
+ export enum ExternalUrlBrowser {
8
+ WEB_VIEW = 'web_view',
9
+ CROSS_PLATFORM_BROWSER = 'cross_platform_browser',
10
+ }
11
+
12
+ interface OpenUrlParams {
13
+ url: string;
14
+ browser: ExternalUrlBrowser;
15
+ delegate: WebViewDelegate;
16
+ }
17
+
18
+ interface ExternalUrlManager<T extends ExternalUrlBrowser> {
19
+ type: T;
20
+ }
21
+
22
+ export interface WebViewManager
23
+ extends ExternalUrlManager<ExternalUrlBrowser.WEB_VIEW> {
24
+ controller: ExternalUrlController;
25
+ }
26
+
27
+ export interface CrossPlatformBrowserManager
28
+ extends ExternalUrlManager<ExternalUrlBrowser.CROSS_PLATFORM_BROWSER> {
29
+ type: ExternalUrlBrowser.CROSS_PLATFORM_BROWSER;
30
+ }
31
+
32
+ export class ExternalUrlHelper {
33
+ private manager: ExternalUrlManager<ExternalUrlBrowser> | null = null;
34
+ private completer: Completer<void> | null = null;
35
+
36
+ constructor() {
37
+ this.startCloseChecker();
38
+ }
39
+
40
+ get externalUrlWebViewController() {
41
+ if (this.manager?.type === ExternalUrlBrowser.WEB_VIEW) {
42
+ return (this.manager as WebViewManager).controller;
43
+ }
44
+ return null;
45
+ }
46
+
47
+ /**
48
+ * Wait until the webview or cross platform browser is closed
49
+ */
50
+ async waitForClose() {
51
+ if (this.completer) {
52
+ await this.completer.wait;
53
+ this.completer = null;
54
+ }
55
+ }
56
+
57
+ /**
58
+ * Listen when the app is brought back to the foreground
59
+ */
60
+ private startCloseChecker() {
61
+ AppState.addEventListener('change', (state) => {
62
+ if (
63
+ state === 'active' &&
64
+ this.manager?.type === ExternalUrlBrowser.CROSS_PLATFORM_BROWSER
65
+ ) {
66
+ this.manager = null;
67
+ this.completeClose();
68
+ }
69
+ });
70
+ }
71
+
72
+ /**
73
+ * Opens the webview or cross platform browser
74
+ */
75
+ async openUrl(params: OpenUrlParams) {
76
+ const { url, browser, delegate } = params;
77
+
78
+ const mapper = {
79
+ [ExternalUrlBrowser.WEB_VIEW]: async () => {
80
+ const controller = new ExternalUrlController(url);
81
+ controller.delegate = delegate;
82
+ this.manager = {
83
+ type: ExternalUrlBrowser.WEB_VIEW,
84
+ controller,
85
+ } as WebViewManager;
86
+ },
87
+ [ExternalUrlBrowser.CROSS_PLATFORM_BROWSER]: async () => {
88
+ this.completer = new Completer<void>();
89
+ this.manager = {
90
+ type: ExternalUrlBrowser.CROSS_PLATFORM_BROWSER,
91
+ };
92
+
93
+ await crossPlatformBrowser.openBrowser(url);
94
+ if (Platform.OS === 'ios') {
95
+ this.completer?.complete();
96
+ }
97
+ },
98
+ };
99
+ await mapper[browser]();
100
+ }
101
+
102
+ /**
103
+ * Notify that the browser has been closed
104
+ */
105
+ private completeClose() {
106
+ this.completer?.complete();
107
+ }
108
+
109
+ /**
110
+ * Closes the web view
111
+ */
112
+ async closeWebView() {
113
+ if (this.manager?.type === ExternalUrlBrowser.WEB_VIEW) {
114
+ (this.manager as WebViewManager).controller?.dispose();
115
+ this.manager = null;
116
+ }
117
+ }
118
+ }
@@ -0,0 +1,45 @@
1
+ import {
2
+ BaseWebViewController,
3
+ WebViewDelegate,
4
+ } from '../controllers/BaseWebViewController';
5
+ import { Mode } from '../interfaces';
6
+
7
+ export class WebViewManager<
8
+ T extends BaseWebViewController = BaseWebViewController,
9
+ > {
10
+ private _controller: T | null = null;
11
+ private _mode: Mode | null = null;
12
+
13
+ initialize = (params: {
14
+ controller: T;
15
+ delegate: WebViewDelegate;
16
+ mode: Mode;
17
+ }): void => {
18
+ this._controller = params.controller;
19
+ this._controller.delegate = params.delegate;
20
+ this._mode = params.mode;
21
+ };
22
+
23
+ get isInitialized(): boolean {
24
+ return !!this._controller;
25
+ }
26
+
27
+ get mode(): Mode | null {
28
+ return this._mode;
29
+ }
30
+
31
+ get controller(): T {
32
+ if (!this._controller) {
33
+ throw new Error('WebView not initialized');
34
+ }
35
+ return this._controller;
36
+ }
37
+
38
+ /**
39
+ * Destroy the webview and the modal (if it exists)
40
+ */
41
+ destroy = () => {
42
+ this._controller?.dispose();
43
+ this._controller = null;
44
+ };
45
+ }
@@ -34,7 +34,7 @@ type ControllerProps =
34
34
  | VoucherWidgetControllerProps
35
35
  | ElementsWidgetControllerProps;
36
36
 
37
- export const getWidgetController = (
37
+ export const buildDeunaWidgetController = (
38
38
  config: InitializeParams,
39
39
  props: ControllerProps & { mode?: Mode; sessionId?: string }
40
40
  ): DeunaWebViewController => {
@@ -10,7 +10,7 @@ export const getSubmitStrategy = async (
10
10
  return null;
11
11
  }
12
12
 
13
- const { widgetConfig } = deunaSDK.safeWebViewController;
13
+ const { widgetConfig } = deunaSDK.deunaWidgetManager.controller;
14
14
 
15
15
  const processorName = selectedPaymentMethod.processor_name as string;
16
16
 
@@ -8,3 +8,5 @@ export const DEVICE_FINGERPRINT_URL =
8
8
  'https://cdn.stg.deuna.io/mobile-sdks/get_fraud_id.html';
9
9
 
10
10
  export const TWO_STEP_FLOW = 'twoStep';
11
+
12
+ export const DOMAINS_MUST_BE_USE_CROSS_PLATFORM_BROWSER = ['mercadopago.com'];
@@ -1,9 +1,10 @@
1
1
  import { Environment } from "../base";
2
2
  import { hasKey } from "../utils/hasKey";
3
3
  import { getIntegrationType, UrlConfig } from "./urlConfig";
4
+ import { PLATFORM_DEFAULT } from "./constants";
4
5
 
5
6
  const ELEMENTS_URLS: Record<Environment, string> = {
6
- production: "https://elements.deuna.io",
7
+ production: "https://elements.deuna.com",
7
8
  sandbox: "https://elements.sandbox.deuna.io",
8
9
  staging: "https://elements.stg.deuna.io",
9
10
  develop: "https://elements.dev.deuna.io",
@@ -28,6 +29,7 @@ interface SearchParams {
28
29
  userToken?: string;
29
30
  showSavedCardsFlow?: string;
30
31
  showDefaultCardFlow?: string;
32
+ platform?: string;
31
33
  }
32
34
 
33
35
  /**
@@ -50,6 +52,7 @@ const buildSearchParams = (config: UrlConfig): URLSearchParams => {
50
52
  const searchParams: SearchParams = {
51
53
  publicApiKey: config.publicApiKey,
52
54
  orderToken: config.orderToken,
55
+ platform: config.platform || PLATFORM_DEFAULT,
53
56
  email: userInfo?.email || "",
54
57
  firstName: userInfo?.firstName || "",
55
58
  lastName: userInfo?.lastName || "",
@@ -10,6 +10,7 @@ import {
10
10
  getIntegrationType,
11
11
  UrlConfig,
12
12
  } from "./urlConfig";
13
+ import { PLATFORM_DEFAULT } from "./constants";
13
14
 
14
15
  const urls: Record<Environment, string> = {
15
16
  production: "https://pay.deuna.io",
@@ -31,6 +32,7 @@ export const buildPaymentLink = (config: UrlConfig): string => {
31
32
  mode: "widget",
32
33
  int: getIntegrationType(config.mode),
33
34
  language: config.language,
35
+ platform: config.platform || PLATFORM_DEFAULT,
34
36
  });
35
37
 
36
38
  // config.
@@ -5,6 +5,7 @@
5
5
  */
6
6
 
7
7
  import { Environment } from "../base";
8
+ import { PLATFORM_DEFAULT } from "./constants";
8
9
  import { getIntegrationType, UrlConfig } from "./urlConfig";
9
10
 
10
11
  const urls: Record<Environment, string> = {
@@ -28,6 +29,7 @@ export const buildVoucherLink = (config: UrlConfig): string => {
28
29
  int: getIntegrationType(config.mode),
29
30
  language: config.language,
30
31
  orderToken,
32
+ platform: config.platform || PLATFORM_DEFAULT,
31
33
  });
32
34
 
33
35
  const xpropsB64 = {
@@ -0,0 +1 @@
1
+ export const PLATFORM_DEFAULT = "custom";
@@ -23,7 +23,7 @@ export const getIntegrationType = (mode?: string) => {
23
23
  target: "embedded",
24
24
  };
25
25
 
26
- return modeMap[mode || ""] || "redirect";
26
+ return modeMap[mode || ""] || "link";
27
27
  };
28
28
 
29
29
  interface PaymentMethods {
@@ -71,6 +71,8 @@ export interface UrlConfig {
71
71
  sessionId: string;
72
72
 
73
73
  types?: ElementWidgetType[];
74
+
75
+ platform?: string;
74
76
  }
75
77
 
76
78
  export interface ElementWidgetType {
@@ -20,11 +20,16 @@ interface OnInstallmentSelectedPayload {
20
20
  installmentPlanOptionId: string;
21
21
  }
22
22
 
23
+ interface Dimensions {
24
+ height: number;
25
+ width: number;
26
+ }
23
27
  interface BaseCallbacks {
24
28
  onSuccess?: (data: Json) => void;
25
29
  onError?: (data: OnError) => void;
26
30
  onClosed?: (action: ClosedAction) => void;
27
31
  onEventDispatch?: (event: string, payload: Json) => void;
32
+ onResize?: (dimensions: Dimensions) => void;
28
33
  }
29
34
 
30
35
  export interface PaymentWidgetCallbacks extends BaseCallbacks {
@@ -40,4 +45,8 @@ export interface ElementsWidgetCallbacks extends BaseCallbacks {
40
45
 
41
46
  export interface NextActionWidgetCallbacks extends BaseCallbacks {}
42
47
 
43
- export interface VoucherWidgetCallbacks extends BaseCallbacks {}
48
+ export interface VoucherWidgetCallbacks extends BaseCallbacks {
49
+ onCardBinDetected?: (data: OnCardBinDetected) => void;
50
+ onInstallmentSelected?: (data: OnInstallmentSelectedPayload) => void;
51
+ onPaymentProcessing?: () => void;
52
+ }
@@ -83,6 +83,7 @@ export interface InitWidgetBase {
83
83
  userInfo?: Partial<UserInfo>;
84
84
  behavior?: BehaviorWidget;
85
85
  domain?: string;
86
+ platform?: string;
86
87
  hidePayButton?: boolean;
87
88
  callbacks?: PaymentWidgetCallbacks &
88
89
  ElementsWidgetCallbacks &
@@ -1,56 +0,0 @@
1
- "use strict";
2
-
3
- import { useEffect, useRef, useState } from 'react';
4
- import { Modal, SafeAreaView, StyleSheet } from 'react-native';
5
- import { DeunaWebView } from "./DeunaWebView.js";
6
- import { jsx as _jsx } from "react/jsx-runtime";
7
- export const NewTabWebView = props => {
8
- const {
9
- instance
10
- } = props;
11
- const instanceRef = useRef(instance);
12
- const [visible, setVisible] = useState(false);
13
- useEffect(() => {
14
- instanceRef.current = instance;
15
- }, [instance]);
16
-
17
- // Listen when the DeunaSDK instance configuration
18
- // has changed
19
- useEffect(() => {
20
- const ref = instanceRef.current;
21
- const listener = () => {
22
- const isVisible = !!ref.newTabWebViewController;
23
- setVisible(isVisible);
24
- };
25
- instanceRef.current.addListener(listener);
26
- return () => {
27
- ref.removeListener(listener);
28
- ref.newTabWebViewController?.dispose();
29
- };
30
- }, []);
31
- const newTabController = instanceRef.current.newTabWebViewController;
32
- return /*#__PURE__*/_jsx(Modal, {
33
- presentationStyle: "pageSheet",
34
- visible: visible,
35
- animationType: "slide",
36
- onRequestClose: instanceRef.current.onCloseNewTab,
37
- onDismiss: instanceRef.current.onNewTabDismissed,
38
- children: visible && /*#__PURE__*/_jsx(SafeAreaView, {
39
- style: styles.container,
40
- children: /*#__PURE__*/_jsx(DeunaWebView, {
41
- url: newTabController?.url ?? '',
42
- onWebView: newTabController?.setWebView,
43
- onMessage: newTabController?.onMessage,
44
- onLoad: newTabController?.onLoad,
45
- onError: newTabController?.onError,
46
- onShouldStartLoadWithRequest: newTabController?.onShouldStartLoadWithRequest
47
- })
48
- })
49
- });
50
- };
51
- const styles = StyleSheet.create({
52
- container: {
53
- flex: 1
54
- }
55
- });
56
- //# sourceMappingURL=NewTabWebView.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useEffect","useRef","useState","Modal","SafeAreaView","StyleSheet","DeunaWebView","jsx","_jsx","NewTabWebView","props","instance","instanceRef","visible","setVisible","current","ref","listener","isVisible","newTabWebViewController","addListener","removeListener","dispose","newTabController","presentationStyle","animationType","onRequestClose","onCloseNewTab","onDismiss","onNewTabDismissed","children","style","styles","container","url","onWebView","setWebView","onMessage","onLoad","onError","onShouldStartLoadWithRequest","create","flex"],"sourceRoot":"../../../src","sources":["components/NewTabWebView.tsx"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAEnD,SAASC,KAAK,EAAEC,YAAY,EAAEC,UAAU,QAAQ,cAAc;AAC9D,SAASC,YAAY,QAAQ,mBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAM9C,OAAO,MAAMC,aAAa,GAAIC,KAAyB,IAAK;EAC1D,MAAM;IAAEC;EAAS,CAAC,GAAGD,KAAK;EAC1B,MAAME,WAAW,GAAGX,MAAM,CAAWU,QAAQ,CAAC;EAC9C,MAAM,CAACE,OAAO,EAAEC,UAAU,CAAC,GAAGZ,QAAQ,CAAC,KAAK,CAAC;EAE7CF,SAAS,CAAC,MAAM;IACdY,WAAW,CAACG,OAAO,GAAGJ,QAAQ;EAChC,CAAC,EAAE,CAACA,QAAQ,CAAC,CAAC;;EAEd;EACA;EACAX,SAAS,CAAC,MAAM;IACd,MAAMgB,GAAG,GAAGJ,WAAW,CAACG,OAAO;IAC/B,MAAME,QAAQ,GAAGA,CAAA,KAAM;MACrB,MAAMC,SAAS,GAAG,CAAC,CAACF,GAAG,CAACG,uBAAuB;MAC/CL,UAAU,CAACI,SAAS,CAAC;IACvB,CAAC;IAEDN,WAAW,CAACG,OAAO,CAACK,WAAW,CAACH,QAAQ,CAAC;IAEzC,OAAO,MAAM;MACXD,GAAG,CAACK,cAAc,CAACJ,QAAQ,CAAC;MAC5BD,GAAG,CAACG,uBAAuB,EAAEG,OAAO,CAAC,CAAC;IACxC,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,gBAAgB,GAAGX,WAAW,CAACG,OAAO,CAACI,uBAAuB;EAEpE,oBACEX,IAAA,CAACL,KAAK;IACJqB,iBAAiB,EAAC,WAAW;IAC7BX,OAAO,EAAEA,OAAQ;IACjBY,aAAa,EAAC,OAAO;IACrBC,cAAc,EAAEd,WAAW,CAACG,OAAO,CAACY,aAAc;IAClDC,SAAS,EAAEhB,WAAW,CAACG,OAAO,CAACc,iBAAkB;IAAAC,QAAA,EAEhDjB,OAAO,iBACNL,IAAA,CAACJ,YAAY;MAAC2B,KAAK,EAAEC,MAAM,CAACC,SAAU;MAAAH,QAAA,eACpCtB,IAAA,CAACF,YAAY;QACX4B,GAAG,EAAEX,gBAAgB,EAAEW,GAAG,IAAI,EAAG;QACjCC,SAAS,EAAEZ,gBAAgB,EAAEa,UAAW;QACxCC,SAAS,EAAEd,gBAAgB,EAAEc,SAAU;QACvCC,MAAM,EAAEf,gBAAgB,EAAEe,MAAO;QACjCC,OAAO,EAAEhB,gBAAgB,EAAEgB,OAAQ;QACnCC,4BAA4B,EAC1BjB,gBAAgB,EAAEiB;MACnB,CACF;IAAC,CACU;EACf,CACI,CAAC;AAEZ,CAAC;AAED,MAAMR,MAAM,GAAG3B,UAAU,CAACoC,MAAM,CAAC;EAAER,SAAS,EAAE;IAAES,IAAI,EAAE;EAAE;AAAE,CAAC,CAAC","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["BaseWebViewController","WebViewEventType","DeunaLogs","OpenInNewTabController","constructor","url","onLoad","setXprops","onError","event","console","warn","urlMustBeLoadedInTheSameWebView","isDownloadUrl","delegate","onFileDownload","onMessage","eventData","JSON","parse","nativeEvent","data","type","info","message","webView","injectJavaScript","consoleLog","newTabWindowClose"],"sourceRoot":"../../../src","sources":["controllers/OpenInNewTabController.ts"],"mappings":";;AACA,SACEA,qBAAqB,EACrBC,gBAAgB,QACX,4BAAyB;AAChC,SAASC,SAAS,QAAQ,iBAAc;AAExC,OAAO,MAAMC,sBAAsB,SAASH,qBAAqB,CAAC;EAChEI,WAAWA,CAAUC,GAAW,EAAE;IAChC,KAAK,CAAC,CAAC;IAAC,KADWA,GAAW,GAAXA,GAAW;IAE9B,IAAI,CAACA,GAAG,GAAGA,GAAG;EAChB;EAEAC,MAAM,GAAGA,CAAA,KAAM;IACb,IAAI,CAACC,SAAS,CAAC,CAAC;EAClB,CAAC;EAEDC,OAAO,GAAIC,KAAU,IAAK;IACxBC,OAAO,CAACC,IAAI,CAACF,KAAK,CAAC;EACrB,CAAC;EAEDG,+BAA+B,GAAIP,GAAW,IAAK;IACjD,IAAI,IAAI,CAACQ,aAAa,CAACR,GAAG,CAAC,EAAE;MAC3B,IAAI,CAACS,QAAQ,EAAEC,cAAc,GAAGV,GAAG,CAAC;MACpC,OAAO,KAAK;IACd;IACA,OAAO,IAAI;EACb,CAAC;EAEDW,SAAS,GAAIP,KAA0B,IAAK;IAC1C,MAAMQ,SAAS,GAAGC,IAAI,CAACC,KAAK,CAACV,KAAK,CAACW,WAAW,CAACC,IAAI,CAAC;IACpD,IAAIJ,SAAS,CAACK,IAAI,KAAK,aAAa,EAAE;MACpCpB,SAAS,CAACqB,IAAI,CAAC,aAAa,EAAEN,SAAS,CAACO,OAAO,CAAC;IAClD;EACF,CAAC;EAEDjB,SAAS,GAAGA,CAAA,KAAM;IAChB;IACA,IAAI,CAACkB,OAAO,EAAEC,gBAAgB,CAAC;AACnC;AACA,wEAAwEzB,gBAAgB,CAAC0B,UAAU;AACnG;AACA;AACA,wEAAwE1B,gBAAgB,CAAC2B,iBAAiB;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;EACJ,CAAC;AACH","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["PaymentWidgetController","ElementsWidgetController","linkBuilders","Mode","DeunaLogs","getWidgetController","config","props","widget","mode","callbacks","rest","baseParams","env","environment","publicApiKey","orderToken","userToken","language","sessionId","MODAL","domain","widgetMappers","elements","userInfo","styleFile","behavior","widgetExperience","types","payment","paymentMethods","nextAction","voucher","widgetConfig","controller","url","hidePayButton","info"],"sourceRoot":"../../../src","sources":["helpers/getController.ts"],"mappings":";;AACA,SAASA,uBAAuB,QAAQ,2CAAwC;AAChF,SAASC,wBAAwB,QAAQ,4CAAyC;AAQlF,SAASC,YAAY,QAAQ,2BAAkB;AAC/C,SAASC,IAAI,QAAQ,wBAAqB;AAC1C,SAASC,SAAS,QAAQ,iBAAc;AAwBxC,OAAO,MAAMC,mBAAmB,GAAGA,CACjCC,MAAwB,EACxBC,KAA4D,KACjC;EAC3B,MAAM;IAAEC,MAAM;IAAEC,IAAI;IAAEC,SAAS;IAAE,GAAGC;EAAK,CAAC,GAAGJ,KAAK;EAElD,MAAMK,UAAU,GAAG;IACjBC,GAAG,EAAEP,MAAM,CAACQ,WAAY;IACxBC,YAAY,EAAET,MAAM,CAACS,YAAY;IACjCC,UAAU,EAAEL,IAAI,CAACK,UAAU,IAAI,EAAE;IACjCC,SAAS,EAAEN,IAAI,CAACM,SAAS,IAAI,EAAE;IAC/BC,QAAQ,EAAEP,IAAI,CAACO,QAAQ,IAAI,IAAI;IAC/BC,SAAS,EAAER,IAAI,CAACQ,SAAS,IAAI,EAAE;IAC/BV,IAAI,EAAEA,IAAI,KAAKN,IAAI,CAACiB,KAAK,GAAG,OAAO,GAAG,QAAQ;IAC9C,IAAIT,IAAI,CAACU,MAAM,IAAI;MAAEA,MAAM,EAAEV,IAAI,CAACU;IAAO,CAAC;EAC5C,CAAC;EAED,MAAMC,aAAa,GAAG;IACpBC,QAAQ,EAAEA,CAAA,MAAO;MACf,GAAGX,UAAU;MACbY,QAAQ,EAAEb,IAAI,CAACa,QAAQ;MACvBC,SAAS,EAAEd,IAAI,CAACc,SAAS;MACzBC,QAAQ,EAAEf,IAAI,CAACe,QAAQ;MACvBC,gBAAgB,EAAEhB,IAAI,CAACgB,gBAAgB;MACvCC,KAAK,EAAGrB,KAAK,CAAmCqB;IAClD,CAAC,CAAC;IACFC,OAAO,EAAEA,CAAA,MAAO;MACd,GAAGjB,UAAU;MACbc,QAAQ,EAAEf,IAAI,CAACe,QAAQ;MACvBI,cAAc,EAAGvB,KAAK,CAAkCuB,cAAc;MACtEL,SAAS,EAAEd,IAAI,CAACc;IAClB,CAAC,CAAC;IACFM,UAAU,EAAEA,CAAA,KAAMnB,UAAU;IAC5BoB,OAAO,EAAEA,CAAA,KAAMpB;EACjB,CAAC;EAED,MAAMqB,YAAY,GAAG;IACnBjB,UAAU,EAAEL,IAAI,CAACK,UAAU;IAC3BU,QAAQ,EAAEf,IAAI,CAACe,QAAQ;IACvBT,SAAS,EAAEN,IAAI,CAACM;EAClB,CAAC;EAED,MAAMiB,UAAU,GACd1B,MAAM,KAAK,UAAU,GACjB,IAAIP,wBAAwB,CAACS,SAAS,EAAEuB,YAAY,CAAC,GACrD,IAAIjC,uBAAuB,CAACU,SAAS,EAAEuB,YAAY,CAAC;EAE1DC,UAAU,CAACC,GAAG,GAAGjC,YAAY,CAACM,MAAM,CAAC,CAACc,aAAa,CAACd,MAAM,CAAC,CAAC,CAAC,CAAC;EAC9D0B,UAAU,CAACE,aAAa,GAAGzB,IAAI,CAACyB,aAAa,IAAI,KAAK;EAEtDhC,SAAS,CAACiC,IAAI,CAAC,iBAAiB,EAAEH,UAAU,CAACC,GAAG,CAAC;EAEjD,OAAOD,UAAU;AACnB,CAAC","ignoreList":[]}
@@ -1,7 +0,0 @@
1
- import { DeunaSDK } from '../DeunaSDK';
2
- interface NewTabWebViewProps {
3
- instance: DeunaSDK;
4
- }
5
- export declare const NewTabWebView: (props: NewTabWebViewProps) => import("react/jsx-runtime").JSX.Element;
6
- export {};
7
- //# sourceMappingURL=NewTabWebView.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NewTabWebView.d.ts","sourceRoot":"","sources":["../../../../../src/components/NewTabWebView.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIvC,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,eAAO,MAAM,aAAa,GAAI,OAAO,kBAAkB,4CAoDtD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"OpenInNewTabController.d.ts","sourceRoot":"","sources":["../../../../../src/controllers/OpenInNewTabController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EACL,qBAAqB,EAEtB,MAAM,yBAAyB,CAAC;AAGjC,qBAAa,sBAAuB,SAAQ,qBAAqB;IACnD,QAAQ,CAAC,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM;IAKhC,MAAM,aAEJ;IAEF,OAAO,GAAI,OAAO,GAAG,UAEnB;IAEF,+BAA+B,GAAI,KAAK,MAAM,aAM5C;IAEF,SAAS,GAAI,OAAO,mBAAmB,UAKrC;IAEF,SAAS,aAkBP;CACH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"getController.d.ts","sourceRoot":"","sources":["../../../../../src/helpers/getController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAG9E,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,0BAA0B,EAC1B,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAG3C,KAAK,4BAA4B,GAAG,uBAAuB,GAAG;IAC5D,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,KAAK,+BAA+B,GAAG,0BAA0B,GAAG;IAClE,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF,KAAK,4BAA4B,GAAG,uBAAuB,GAAG;IAC5D,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,KAAK,6BAA6B,GAAG,wBAAwB,GAAG;IAC9D,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEF,KAAK,eAAe,GAChB,4BAA4B,GAC5B,+BAA+B,GAC/B,4BAA4B,GAC5B,6BAA6B,CAAC;AAElC,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,gBAAgB,EACxB,OAAO,eAAe,GAAG;IAAE,IAAI,CAAC,EAAE,IAAI,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,KAC3D,sBAkDF,CAAC"}
@@ -1,64 +0,0 @@
1
- import { useEffect, useRef, useState } from 'react';
2
- import { DeunaSDK } from '../DeunaSDK';
3
- import { Modal, SafeAreaView, StyleSheet } from 'react-native';
4
- import { DeunaWebView } from './DeunaWebView';
5
-
6
- interface NewTabWebViewProps {
7
- instance: DeunaSDK;
8
- }
9
-
10
- export const NewTabWebView = (props: NewTabWebViewProps) => {
11
- const { instance } = props;
12
- const instanceRef = useRef<DeunaSDK>(instance);
13
- const [visible, setVisible] = useState(false);
14
-
15
- useEffect(() => {
16
- instanceRef.current = instance;
17
- }, [instance]);
18
-
19
- // Listen when the DeunaSDK instance configuration
20
- // has changed
21
- useEffect(() => {
22
- const ref = instanceRef.current;
23
- const listener = () => {
24
- const isVisible = !!ref.newTabWebViewController;
25
- setVisible(isVisible);
26
- };
27
-
28
- instanceRef.current.addListener(listener);
29
-
30
- return () => {
31
- ref.removeListener(listener);
32
- ref.newTabWebViewController?.dispose();
33
- };
34
- }, []);
35
-
36
- const newTabController = instanceRef.current.newTabWebViewController;
37
-
38
- return (
39
- <Modal
40
- presentationStyle="pageSheet"
41
- visible={visible}
42
- animationType="slide"
43
- onRequestClose={instanceRef.current.onCloseNewTab}
44
- onDismiss={instanceRef.current.onNewTabDismissed}
45
- >
46
- {visible && (
47
- <SafeAreaView style={styles.container}>
48
- <DeunaWebView
49
- url={newTabController?.url ?? ''}
50
- onWebView={newTabController?.setWebView}
51
- onMessage={newTabController?.onMessage}
52
- onLoad={newTabController?.onLoad}
53
- onError={newTabController?.onError}
54
- onShouldStartLoadWithRequest={
55
- newTabController?.onShouldStartLoadWithRequest
56
- }
57
- />
58
- </SafeAreaView>
59
- )}
60
- </Modal>
61
- );
62
- };
63
-
64
- const styles = StyleSheet.create({ container: { flex: 1 } });