@deuna/react-native-sdk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +15 -0
  3. package/lib/module/DeunaLogs.js +18 -0
  4. package/lib/module/DeunaLogs.js.map +1 -0
  5. package/lib/module/DeunaSDK.js +207 -0
  6. package/lib/module/DeunaSDK.js.map +1 -0
  7. package/lib/module/components/DeunaWebView.js +37 -0
  8. package/lib/module/components/DeunaWebView.js.map +1 -0
  9. package/lib/module/components/DeunaWidget.js +82 -0
  10. package/lib/module/components/DeunaWidget.js.map +1 -0
  11. package/lib/module/components/NewTabWebView.js +55 -0
  12. package/lib/module/components/NewTabWebView.js.map +1 -0
  13. package/lib/module/components/WebViewLoader.js +25 -0
  14. package/lib/module/components/WebViewLoader.js.map +1 -0
  15. package/lib/module/controllers/BaseWebViewController.js +252 -0
  16. package/lib/module/controllers/BaseWebViewController.js.map +1 -0
  17. package/lib/module/controllers/ElementsWidgetController.js +64 -0
  18. package/lib/module/controllers/ElementsWidgetController.js.map +1 -0
  19. package/lib/module/controllers/OpenInNewTabController.js +34 -0
  20. package/lib/module/controllers/OpenInNewTabController.js.map +1 -0
  21. package/lib/module/controllers/PaymentWidgetController.js +98 -0
  22. package/lib/module/controllers/PaymentWidgetController.js.map +1 -0
  23. package/lib/module/helpers/Completer.js +30 -0
  24. package/lib/module/helpers/Completer.js.map +1 -0
  25. package/lib/module/helpers/getController.js +48 -0
  26. package/lib/module/helpers/getController.js.map +1 -0
  27. package/lib/module/index.js +7 -0
  28. package/lib/module/index.js.map +1 -0
  29. package/lib/module/interfaces/constants.js +8 -0
  30. package/lib/module/interfaces/constants.js.map +1 -0
  31. package/lib/module/interfaces/errors.js +36 -0
  32. package/lib/module/interfaces/errors.js.map +1 -0
  33. package/lib/module/interfaces/events/checkout.js +45 -0
  34. package/lib/module/interfaces/events/checkout.js.map +1 -0
  35. package/lib/module/interfaces/events/elements.js +28 -0
  36. package/lib/module/interfaces/events/elements.js.map +1 -0
  37. package/lib/module/interfaces/index.js +6 -0
  38. package/lib/module/interfaces/index.js.map +1 -0
  39. package/lib/module/interfaces/types.js +13 -0
  40. package/lib/module/interfaces/types.js.map +1 -0
  41. package/lib/module/package.json +1 -0
  42. package/lib/module/types/base.js +24 -0
  43. package/lib/module/types/base.js.map +1 -0
  44. package/lib/module/types/env.js +48 -0
  45. package/lib/module/types/env.js.map +1 -0
  46. package/lib/module/types/helpers/buildElementsLink.js +75 -0
  47. package/lib/module/types/helpers/buildElementsLink.js.map +1 -0
  48. package/lib/module/types/helpers/buildNextActionLink.js +33 -0
  49. package/lib/module/types/helpers/buildNextActionLink.js.map +1 -0
  50. package/lib/module/types/helpers/buildPaymentLink.js +54 -0
  51. package/lib/module/types/helpers/buildPaymentLink.js.map +1 -0
  52. package/lib/module/types/helpers/buildVoucherLink.js +48 -0
  53. package/lib/module/types/helpers/buildVoucherLink.js.map +1 -0
  54. package/lib/module/types/helpers/index.js +13 -0
  55. package/lib/module/types/helpers/index.js.map +1 -0
  56. package/lib/module/types/helpers/urlConfig.js +19 -0
  57. package/lib/module/types/helpers/urlConfig.js.map +1 -0
  58. package/lib/module/types/index.js +7 -0
  59. package/lib/module/types/index.js.map +1 -0
  60. package/lib/module/types/interfaces/callbacks.js +2 -0
  61. package/lib/module/types/interfaces/callbacks.js.map +1 -0
  62. package/lib/module/types/interfaces/customStyle.js +2 -0
  63. package/lib/module/types/interfaces/customStyle.js.map +1 -0
  64. package/lib/module/types/interfaces/index.js +9 -0
  65. package/lib/module/types/interfaces/index.js.map +1 -0
  66. package/lib/module/types/interfaces/initWidgetBase.js +4 -0
  67. package/lib/module/types/interfaces/initWidgetBase.js.map +1 -0
  68. package/lib/module/types/interfaces/merchant.js +2 -0
  69. package/lib/module/types/interfaces/merchant.js.map +1 -0
  70. package/lib/module/types/interfaces/order.js +2 -0
  71. package/lib/module/types/interfaces/order.js.map +1 -0
  72. package/lib/module/types/interfaces/user.js +2 -0
  73. package/lib/module/types/interfaces/user.js.map +1 -0
  74. package/lib/module/types/utils/hasKey.js +8 -0
  75. package/lib/module/types/utils/hasKey.js.map +1 -0
  76. package/lib/module/types/utils/index.js +4 -0
  77. package/lib/module/types/utils/index.js.map +1 -0
  78. package/lib/typescript/deuna-sdk-react-native/src/DeunaLogs.d.ts +6 -0
  79. package/lib/typescript/deuna-sdk-react-native/src/DeunaLogs.d.ts.map +1 -0
  80. package/lib/typescript/deuna-sdk-react-native/src/DeunaSDK.d.ts +88 -0
  81. package/lib/typescript/deuna-sdk-react-native/src/DeunaSDK.d.ts.map +1 -0
  82. package/lib/typescript/deuna-sdk-react-native/src/components/DeunaWebView.d.ts +11 -0
  83. package/lib/typescript/deuna-sdk-react-native/src/components/DeunaWebView.d.ts.map +1 -0
  84. package/lib/typescript/deuna-sdk-react-native/src/components/DeunaWidget.d.ts +7 -0
  85. package/lib/typescript/deuna-sdk-react-native/src/components/DeunaWidget.d.ts.map +1 -0
  86. package/lib/typescript/deuna-sdk-react-native/src/components/NewTabWebView.d.ts +7 -0
  87. package/lib/typescript/deuna-sdk-react-native/src/components/NewTabWebView.d.ts.map +1 -0
  88. package/lib/typescript/deuna-sdk-react-native/src/components/WebViewLoader.d.ts +2 -0
  89. package/lib/typescript/deuna-sdk-react-native/src/components/WebViewLoader.d.ts.map +1 -0
  90. package/lib/typescript/deuna-sdk-react-native/src/controllers/BaseWebViewController.d.ts +83 -0
  91. package/lib/typescript/deuna-sdk-react-native/src/controllers/BaseWebViewController.d.ts.map +1 -0
  92. package/lib/typescript/deuna-sdk-react-native/src/controllers/ElementsWidgetController.d.ts +9 -0
  93. package/lib/typescript/deuna-sdk-react-native/src/controllers/ElementsWidgetController.d.ts.map +1 -0
  94. package/lib/typescript/deuna-sdk-react-native/src/controllers/OpenInNewTabController.d.ts +12 -0
  95. package/lib/typescript/deuna-sdk-react-native/src/controllers/OpenInNewTabController.d.ts.map +1 -0
  96. package/lib/typescript/deuna-sdk-react-native/src/controllers/PaymentWidgetController.d.ts +12 -0
  97. package/lib/typescript/deuna-sdk-react-native/src/controllers/PaymentWidgetController.d.ts.map +1 -0
  98. package/lib/typescript/deuna-sdk-react-native/src/helpers/Completer.d.ts +12 -0
  99. package/lib/typescript/deuna-sdk-react-native/src/helpers/Completer.d.ts.map +1 -0
  100. package/lib/typescript/deuna-sdk-react-native/src/helpers/getController.d.ts +22 -0
  101. package/lib/typescript/deuna-sdk-react-native/src/helpers/getController.d.ts.map +1 -0
  102. package/lib/typescript/deuna-sdk-react-native/src/index.d.ts +5 -0
  103. package/lib/typescript/deuna-sdk-react-native/src/index.d.ts.map +1 -0
  104. package/lib/typescript/deuna-sdk-react-native/src/interfaces/constants.d.ts +6 -0
  105. package/lib/typescript/deuna-sdk-react-native/src/interfaces/constants.d.ts.map +1 -0
  106. package/lib/typescript/deuna-sdk-react-native/src/interfaces/errors.d.ts +32 -0
  107. package/lib/typescript/deuna-sdk-react-native/src/interfaces/errors.d.ts.map +1 -0
  108. package/lib/typescript/deuna-sdk-react-native/src/interfaces/events/checkout.d.ts +46 -0
  109. package/lib/typescript/deuna-sdk-react-native/src/interfaces/events/checkout.d.ts.map +1 -0
  110. package/lib/typescript/deuna-sdk-react-native/src/interfaces/events/elements.d.ts +29 -0
  111. package/lib/typescript/deuna-sdk-react-native/src/interfaces/events/elements.d.ts.map +1 -0
  112. package/lib/typescript/deuna-sdk-react-native/src/interfaces/index.d.ts +4 -0
  113. package/lib/typescript/deuna-sdk-react-native/src/interfaces/index.d.ts.map +1 -0
  114. package/lib/typescript/deuna-sdk-react-native/src/interfaces/types.d.ts +15 -0
  115. package/lib/typescript/deuna-sdk-react-native/src/interfaces/types.d.ts.map +1 -0
  116. package/lib/typescript/deuna-sdk-react-native/src/types/base.d.ts +91 -0
  117. package/lib/typescript/deuna-sdk-react-native/src/types/base.d.ts.map +1 -0
  118. package/lib/typescript/deuna-sdk-react-native/src/types/env.d.ts +45 -0
  119. package/lib/typescript/deuna-sdk-react-native/src/types/env.d.ts.map +1 -0
  120. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildElementsLink.d.ts +3 -0
  121. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildElementsLink.d.ts.map +1 -0
  122. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildNextActionLink.d.ts +3 -0
  123. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildNextActionLink.d.ts.map +1 -0
  124. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildPaymentLink.d.ts +8 -0
  125. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildPaymentLink.d.ts.map +1 -0
  126. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildVoucherLink.d.ts +8 -0
  127. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildVoucherLink.d.ts.map +1 -0
  128. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/index.d.ts +7 -0
  129. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/index.d.ts.map +1 -0
  130. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/urlConfig.d.ts +34 -0
  131. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/urlConfig.d.ts.map +1 -0
  132. package/lib/typescript/deuna-sdk-react-native/src/types/index.d.ts +5 -0
  133. package/lib/typescript/deuna-sdk-react-native/src/types/index.d.ts.map +1 -0
  134. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/callbacks.d.ts +38 -0
  135. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/callbacks.d.ts.map +1 -0
  136. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/customStyle.d.ts +156 -0
  137. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/customStyle.d.ts.map +1 -0
  138. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/index.d.ts +7 -0
  139. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/index.d.ts.map +1 -0
  140. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/initWidgetBase.d.ts +78 -0
  141. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/initWidgetBase.d.ts.map +1 -0
  142. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/merchant.d.ts +76 -0
  143. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/merchant.d.ts.map +1 -0
  144. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/order.d.ts +3 -0
  145. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/order.d.ts.map +1 -0
  146. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/user.d.ts +23 -0
  147. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/user.d.ts.map +1 -0
  148. package/lib/typescript/deuna-sdk-react-native/src/types/utils/hasKey.d.ts +2 -0
  149. package/lib/typescript/deuna-sdk-react-native/src/types/utils/hasKey.d.ts.map +1 -0
  150. package/lib/typescript/deuna-sdk-react-native/src/types/utils/index.d.ts +2 -0
  151. package/lib/typescript/deuna-sdk-react-native/src/types/utils/index.d.ts.map +1 -0
  152. package/lib/typescript/package.json +1 -0
  153. package/package.json +159 -0
  154. package/src/DeunaLogs.ts +17 -0
  155. package/src/DeunaSDK.ts +269 -0
  156. package/src/components/DeunaWebView.tsx +38 -0
  157. package/src/components/DeunaWidget.tsx +92 -0
  158. package/src/components/NewTabWebView.tsx +61 -0
  159. package/src/components/WebViewLoader.tsx +22 -0
  160. package/src/controllers/BaseWebViewController.ts +289 -0
  161. package/src/controllers/ElementsWidgetController.ts +78 -0
  162. package/src/controllers/OpenInNewTabController.ts +39 -0
  163. package/src/controllers/PaymentWidgetController.ts +118 -0
  164. package/src/helpers/Completer.ts +33 -0
  165. package/src/helpers/getController.ts +83 -0
  166. package/src/index.tsx +4 -0
  167. package/src/interfaces/constants.ts +5 -0
  168. package/src/interfaces/errors.ts +34 -0
  169. package/src/interfaces/events/checkout.ts +46 -0
  170. package/src/interfaces/events/elements.ts +29 -0
  171. package/src/interfaces/index.ts +3 -0
  172. package/src/interfaces/types.ts +13 -0
  173. package/src/types/base.ts +126 -0
  174. package/src/types/env.ts +51 -0
  175. package/src/types/helpers/buildElementsLink.ts +87 -0
  176. package/src/types/helpers/buildNextActionLink.ts +42 -0
  177. package/src/types/helpers/buildPaymentLink.ts +63 -0
  178. package/src/types/helpers/buildVoucherLink.ts +53 -0
  179. package/src/types/helpers/index.ts +11 -0
  180. package/src/types/helpers/urlConfig.ts +80 -0
  181. package/src/types/index.ts +4 -0
  182. package/src/types/interfaces/callbacks.ts +43 -0
  183. package/src/types/interfaces/customStyle.ts +189 -0
  184. package/src/types/interfaces/index.ts +6 -0
  185. package/src/types/interfaces/initWidgetBase.ts +97 -0
  186. package/src/types/interfaces/merchant.ts +79 -0
  187. package/src/types/interfaces/order.ts +1 -0
  188. package/src/types/interfaces/user.ts +22 -0
  189. package/src/types/utils/hasKey.ts +5 -0
  190. package/src/types/utils/index.ts +1 -0
package/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 DEUNA
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ of this software and associated documentation files (the "Software"), to deal
6
+ in the Software without restriction, including without limitation the rights
7
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the Software is
9
+ furnished to do so, subject to the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in all
12
+ copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,15 @@
1
+ # @deuna/react-native-sdk
2
+
3
+ React Native SDK
4
+
5
+
6
+ ## Usage
7
+
8
+ For detailed installation and usage instructions, please refer to our official documentation at [DEUNA React Native SDK Documentation](https://docs.deuna.com/reference/react-native-sdk).
9
+
10
+
11
+ ## License
12
+
13
+ MIT
14
+
15
+ ---
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ export class DeunaLogs {
4
+ static enable = true;
5
+ static info(tag, message) {
6
+ if (!DeunaLogs.enable) {
7
+ return;
8
+ }
9
+ console.info(`✅ DeunaSDK: ${tag}`, message);
10
+ }
11
+ static error(tag, message) {
12
+ if (!DeunaLogs.enable) {
13
+ return;
14
+ }
15
+ console.error(`❌ DeunaSDK: ${tag}`, message);
16
+ }
17
+ }
18
+ //# sourceMappingURL=DeunaLogs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DeunaLogs","enable","info","tag","message","console","error"],"sourceRoot":"../../src","sources":["DeunaLogs.ts"],"mappings":";;AAAA,OAAO,MAAMA,SAAS,CAAC;EACrB,OAAOC,MAAM,GAAG,IAAI;EAEpB,OAAOC,IAAIA,CAACC,GAAW,EAAEC,OAAY,EAAE;IACrC,IAAI,CAACJ,SAAS,CAACC,MAAM,EAAE;MACrB;IACF;IACAI,OAAO,CAACH,IAAI,CAAC,eAAeC,GAAG,EAAE,EAAEC,OAAO,CAAC;EAC7C;EAEA,OAAOE,KAAKA,CAACH,GAAW,EAAEC,OAAY,EAAE;IACtC,IAAI,CAACJ,SAAS,CAACC,MAAM,EAAE;MACrB;IACF;IACAI,OAAO,CAACC,KAAK,CAAC,eAAeH,GAAG,EAAE,EAAEC,OAAO,CAAC;EAC9C;AACF","ignoreList":[]}
@@ -0,0 +1,207 @@
1
+ "use strict";
2
+
3
+ import { BaseDeuna } from "./types/index.js";
4
+ import { PaymentWidgetController } from "./controllers/PaymentWidgetController.js";
5
+ import { OpenInNewTabController } from "./controllers/OpenInNewTabController.js";
6
+ import { getWidgetController } from "./helpers/getController.js";
7
+ import { Completer } from "./helpers/Completer.js";
8
+ import { ElementsWidgetController } from "./controllers/ElementsWidgetController.js";
9
+ import { Mode } from "./interfaces/types.js";
10
+ import { Platform } from 'react-native';
11
+ export class DeunaSDK extends BaseDeuna {
12
+ constructor(config) {
13
+ super();
14
+ this.config = config;
15
+ }
16
+ mode = null;
17
+ listeners = new Set();
18
+ webViewController = null;
19
+ newTabWebViewController = null;
20
+ modalDismissPromise = null;
21
+ newTabModalDismissPromise = null;
22
+ get safeWebViewController() {
23
+ if (!this.webViewController) {
24
+ const errorMessage = 'A variant of the init method must be called first. Please call initPaymentWidget, initVoucherWidget, or another init method before using this functionality.';
25
+ console.error(errorMessage);
26
+ throw new Error(errorMessage);
27
+ }
28
+ return this.webViewController;
29
+ }
30
+ getSessionId() {
31
+ throw new Error('Method not implemented.');
32
+ }
33
+ static initialize(config) {
34
+ return new DeunaSDK(config);
35
+ }
36
+
37
+ /**
38
+ * Sets the DEUNA widget controller
39
+ * @param params - The parameters for the widget controller
40
+ * @param params.controller - The controller for the widget
41
+ * @param params.mode - The mode for the widget
42
+ */
43
+ setWidgetController = params => {
44
+ const {
45
+ controller,
46
+ mode
47
+ } = params;
48
+ this.mode = mode ?? Mode.MODAL;
49
+ if (this.mode === Mode.MODAL && Platform.OS === 'ios') {
50
+ this.modalDismissPromise = new Completer();
51
+ }
52
+ this.webViewController = controller;
53
+ this.webViewController.delegate = this.buildDelegate();
54
+ this.notifyListeners();
55
+ };
56
+
57
+ /**
58
+ * Shows the payment widget
59
+ * @param props - The parameters for the payment widget controller
60
+ * @param props.mode - The mode for the widget
61
+ */
62
+ async initPaymentWidget(props) {
63
+ this.setWidgetController({
64
+ controller: getWidgetController(this.config, {
65
+ widget: 'payment',
66
+ ...props
67
+ }),
68
+ mode: props.mode
69
+ });
70
+ }
71
+
72
+ /**
73
+ * Shows the elements widget
74
+ * @param props - The parameters for the elements widget controller
75
+ * @param props.mode - The mode for the widget
76
+ */
77
+ async initElements(props) {
78
+ this.setWidgetController({
79
+ controller: getWidgetController(this.config, {
80
+ widget: 'elements',
81
+ ...props
82
+ }),
83
+ mode: props.mode
84
+ });
85
+ }
86
+
87
+ /**
88
+ * Shows the next action widget
89
+ * @param props - The parameters for the next action widget controller
90
+ * @param props.mode - The mode for the widget
91
+ */
92
+ async initNextAction(props) {
93
+ this.setWidgetController({
94
+ controller: getWidgetController(this.config, {
95
+ widget: 'nextAction',
96
+ ...props
97
+ }),
98
+ mode: props.mode
99
+ });
100
+ }
101
+
102
+ /**
103
+ * Shows the voucher widget
104
+ * @param props - The parameters for the voucher widget controller
105
+ * @param props.mode - The mode for the widget
106
+ */
107
+ async initVoucherWidget(props) {
108
+ this.setWidgetController({
109
+ controller: getWidgetController(this.config, {
110
+ widget: 'voucher',
111
+ ...props
112
+ }),
113
+ mode: props.mode
114
+ });
115
+ }
116
+ isValid = async () => {
117
+ return this.safeWebViewController.isValid();
118
+ };
119
+ submit = async () => {
120
+ return this.safeWebViewController.submit();
121
+ };
122
+ setCustomStyle = async style => {
123
+ return this.safeWebViewController.setCustomStyle(style);
124
+ };
125
+ refetchOrder = async () => {
126
+ return this.safeWebViewController.refetchOrder();
127
+ };
128
+ getWidgetState = async () => {
129
+ return this.safeWebViewController.getWidgetState();
130
+ };
131
+
132
+ /**
133
+ * Closes the DEUNA widget and releases the resources
134
+ */
135
+ close = async () => {
136
+ if (this.webViewController instanceof PaymentWidgetController) {
137
+ this.webViewController.callbacks.onClosed?.(this.webViewController.closedAction);
138
+ } else if (this.webViewController instanceof ElementsWidgetController) {
139
+ this.webViewController.callbacks.onClosed?.(this.webViewController.closedAction);
140
+ }
141
+ this.onCloseNewTab();
142
+ await this.newTabModalDismissPromise?.wait;
143
+ this.newTabWebViewController?.dispose();
144
+ this.webViewController?.dispose();
145
+ // reset all prop
146
+ this.newTabWebViewController = null;
147
+ this.webViewController = null;
148
+ this.mode = null;
149
+ this.notifyListeners();
150
+
151
+ // if the widget was shown in modal mode, wait for the modal to be dismissed
152
+ await this.modalDismissPromise?.wait;
153
+ this.modalDismissPromise = null;
154
+ };
155
+ onModalDismissed = () => {
156
+ this.modalDismissPromise?.complete();
157
+ };
158
+ onNewTabDismissed = () => {
159
+ this.newTabModalDismissPromise?.complete();
160
+ };
161
+ addListener = listener => {
162
+ this.listeners.add(listener);
163
+ };
164
+ removeListener = listener => {
165
+ this.listeners.delete(listener);
166
+ };
167
+ notifyListeners = () => {
168
+ this.listeners.forEach(listener => listener());
169
+ };
170
+ onCloseNewTab = () => {
171
+ if (this.webViewController) {
172
+ this.webViewController.redirectUrl = null;
173
+ }
174
+ this.newTabWebViewController?.dispose();
175
+ this.newTabWebViewController = null;
176
+ this.notifyListeners();
177
+ };
178
+
179
+ /**
180
+ * Builds the delegate for the DEUNA widget to listen to the events
181
+ * like when the user presses the close button or when the user
182
+ * opens a new tab.
183
+ * @returns The delegate for the DEUNA widget
184
+ */
185
+ buildDelegate = () => {
186
+ return {
187
+ onOpenInNewTab: url => {
188
+ this.newTabWebViewController = new OpenInNewTabController(url);
189
+ if (Platform.OS === 'ios') {
190
+ this.newTabModalDismissPromise = new Completer();
191
+ }
192
+ this.notifyListeners();
193
+ },
194
+ onCloseButtonPressed: () => {
195
+ // Close the payment widget when the user
196
+ // presses the close button
197
+ this.close();
198
+ },
199
+ onCloseSubWebView: () => {
200
+ // Close the new tab web view when the DEUNA widget
201
+ // emits an error event or when the purchase is successful
202
+ this.onCloseNewTab();
203
+ }
204
+ };
205
+ };
206
+ }
207
+ //# sourceMappingURL=DeunaSDK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BaseDeuna","PaymentWidgetController","OpenInNewTabController","getWidgetController","Completer","ElementsWidgetController","Mode","Platform","DeunaSDK","constructor","config","mode","listeners","Set","webViewController","newTabWebViewController","modalDismissPromise","newTabModalDismissPromise","safeWebViewController","errorMessage","console","error","Error","getSessionId","initialize","setWidgetController","params","controller","MODAL","OS","delegate","buildDelegate","notifyListeners","initPaymentWidget","props","widget","initElements","initNextAction","initVoucherWidget","isValid","submit","setCustomStyle","style","refetchOrder","getWidgetState","close","callbacks","onClosed","closedAction","onCloseNewTab","wait","dispose","onModalDismissed","complete","onNewTabDismissed","addListener","listener","add","removeListener","delete","forEach","redirectUrl","onOpenInNewTab","url","onCloseButtonPressed","onCloseSubWebView"],"sourceRoot":"../../src","sources":["DeunaSDK.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ import { StyleSheet, View } from 'react-native';
4
+ import WebView from 'react-native-webview';
5
+ import { WebViewLoader } from "./WebViewLoader.js";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ export const DeunaWebView = props => {
8
+ return /*#__PURE__*/_jsx(View, {
9
+ style: styles.container,
10
+ children: /*#__PURE__*/_jsx(WebView, {
11
+ ref: webView => {
12
+ if (webView && props.onWebView) {
13
+ props.onWebView(webView);
14
+ }
15
+ },
16
+ source: {
17
+ uri: props.url
18
+ },
19
+ onMessage: props.onMessage,
20
+ onLoad: () => {
21
+ props.onLoad?.();
22
+ },
23
+ startInLoadingState: true,
24
+ renderLoading: () => /*#__PURE__*/_jsx(WebViewLoader, {}),
25
+ javaScriptEnabled: true,
26
+ onError: props.onError,
27
+ setSupportMultipleWindows: false,
28
+ javaScriptCanOpenWindowsAutomatically: false
29
+ })
30
+ });
31
+ };
32
+ const styles = StyleSheet.create({
33
+ container: {
34
+ flex: 1
35
+ }
36
+ });
37
+ //# sourceMappingURL=DeunaWebView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["StyleSheet","View","WebView","WebViewLoader","jsx","_jsx","DeunaWebView","props","style","styles","container","children","ref","webView","onWebView","source","uri","url","onMessage","onLoad","startInLoadingState","renderLoading","javaScriptEnabled","onError","setSupportMultipleWindows","javaScriptCanOpenWindowsAutomatically","create","flex"],"sourceRoot":"../../../src","sources":["components/DeunaWebView.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,OAAOC,OAAO,MAAM,sBAAsB;AAC1C,SAASC,aAAa,QAAQ,oBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAUhD,OAAO,MAAMC,YAAY,GAAIC,KAAwB,IAAK;EACxD,oBACEF,IAAA,CAACJ,IAAI;IAACO,KAAK,EAAEC,MAAM,CAACC,SAAU;IAAAC,QAAA,eAC5BN,IAAA,CAACH,OAAO;MACNU,GAAG,EAAGC,OAAO,IAAK;QAChB,IAAIA,OAAO,IAAIN,KAAK,CAACO,SAAS,EAAE;UAC9BP,KAAK,CAACO,SAAS,CAACD,OAAO,CAAC;QAC1B;MACF,CAAE;MACFE,MAAM,EAAE;QAAEC,GAAG,EAAET,KAAK,CAACU;MAAI,CAAE;MAC3BC,SAAS,EAAEX,KAAK,CAACW,SAAU;MAC3BC,MAAM,EAAEA,CAAA,KAAM;QACZZ,KAAK,CAACY,MAAM,GAAG,CAAC;MAClB,CAAE;MACFC,mBAAmB;MACnBC,aAAa,EAAEA,CAAA,kBAAMhB,IAAA,CAACF,aAAa,IAAE,CAAE;MACvCmB,iBAAiB,EAAE,IAAK;MACxBC,OAAO,EAAEhB,KAAK,CAACgB,OAAQ;MACvBC,yBAAyB,EAAE,KAAM;MACjCC,qCAAqC,EAAE;IAAM,CAC9C;EAAC,CACE,CAAC;AAEX,CAAC;AAED,MAAMhB,MAAM,GAAGT,UAAU,CAAC0B,MAAM,CAAC;EAAEhB,SAAS,EAAE;IAAEiB,IAAI,EAAE;EAAE;AAAE,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+
3
+ import { Modal, SafeAreaView, StyleSheet, View } from 'react-native';
4
+ import { useEffect, useRef, useState } from 'react';
5
+ import { DeunaWebView } from "./DeunaWebView.js";
6
+ import { NewTabWebView } from "./NewTabWebView.js";
7
+ import { Mode } from "../interfaces/types.js";
8
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
9
+ export const DeunaWidget = props => {
10
+ const {
11
+ instance
12
+ } = props;
13
+ const instanceRef = useRef(instance);
14
+ const [mode, setMode] = useState(instance.mode);
15
+ useEffect(() => {
16
+ instanceRef.current = instance;
17
+ }, [instance]);
18
+
19
+ // Listen when the DeunaSDK instance configuration
20
+ // has changed
21
+ useEffect(() => {
22
+ const listener = () => {
23
+ setMode(instanceRef.current.mode);
24
+ };
25
+ instanceRef.current.addListener(listener);
26
+ return () => {
27
+ instanceRef.current.removeListener(listener);
28
+ instanceRef.current.webViewController?.dispose();
29
+ };
30
+ }, []);
31
+ const isModal = mode === Mode.MODAL;
32
+ const isEmbedded = mode === Mode.EMBEDDED;
33
+
34
+ /**
35
+ * This function is used to close the widget
36
+ */
37
+ const onClose = () => {
38
+ const controller = instanceRef.current.webViewController;
39
+ controller.closedAction = 'userAction';
40
+ instanceRef.current.close();
41
+ };
42
+
43
+ // render the widget if mode is not null
44
+ return /*#__PURE__*/_jsxs(_Fragment, {
45
+ children: [/*#__PURE__*/_jsx(Modal, {
46
+ presentationStyle: "pageSheet",
47
+ animationType: "slide",
48
+ onRequestClose: onClose,
49
+ onDismiss: instanceRef.current.onModalDismissed,
50
+ visible: isModal,
51
+ children: isModal && /*#__PURE__*/_jsx(SafeAreaView, {
52
+ style: styles.container,
53
+ children: /*#__PURE__*/_jsxs(View, {
54
+ style: styles.container,
55
+ children: [/*#__PURE__*/_jsx(DeunaWebView, {
56
+ url: instanceRef.current.webViewController?.url ?? '',
57
+ onWebView: instanceRef.current.webViewController?.setWebView,
58
+ onMessage: instanceRef.current.webViewController?.onMessage,
59
+ onLoad: instanceRef.current.webViewController?.onLoad,
60
+ onError: instanceRef.current.webViewController?.onError
61
+ }), /*#__PURE__*/_jsx(NewTabWebView, {
62
+ instance: instanceRef.current
63
+ })]
64
+ })
65
+ })
66
+ }), isEmbedded && /*#__PURE__*/_jsx(NewTabWebView, {
67
+ instance: instanceRef.current
68
+ }), isEmbedded && /*#__PURE__*/_jsx(DeunaWebView, {
69
+ url: instanceRef.current.webViewController?.url ?? '',
70
+ onWebView: instanceRef.current.webViewController?.setWebView,
71
+ onMessage: instanceRef.current.webViewController?.onMessage,
72
+ onLoad: instanceRef.current.webViewController?.onLoad,
73
+ onError: instanceRef.current.webViewController?.onError
74
+ })]
75
+ });
76
+ };
77
+ const styles = StyleSheet.create({
78
+ container: {
79
+ flex: 1
80
+ }
81
+ });
82
+ //# sourceMappingURL=DeunaWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Modal","SafeAreaView","StyleSheet","View","useEffect","useRef","useState","DeunaWebView","NewTabWebView","Mode","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DeunaWidget","props","instance","instanceRef","mode","setMode","current","listener","addListener","removeListener","webViewController","dispose","isModal","MODAL","isEmbedded","EMBEDDED","onClose","controller","closedAction","close","children","presentationStyle","animationType","onRequestClose","onDismiss","onModalDismissed","visible","style","styles","container","url","onWebView","setWebView","onMessage","onLoad","onError","create","flex"],"sourceRoot":"../../../src","sources":["components/DeunaWidget.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,55 @@
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
+ })
47
+ })
48
+ });
49
+ };
50
+ const styles = StyleSheet.create({
51
+ container: {
52
+ flex: 1
53
+ }
54
+ });
55
+ //# sourceMappingURL=NewTabWebView.js.map
@@ -0,0 +1 @@
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","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;MAAQ,CACpC;IAAC,CACU;EACf,CACI,CAAC;AAEZ,CAAC;AAED,MAAMP,MAAM,GAAG3B,UAAU,CAACmC,MAAM,CAAC;EAAEP,SAAS,EAAE;IAAEQ,IAAI,EAAE;EAAE;AAAE,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ import { ActivityIndicator, StyleSheet, View } from 'react-native';
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ export const WebViewLoader = () => {
6
+ return /*#__PURE__*/_jsx(View, {
7
+ style: styles.container,
8
+ children: /*#__PURE__*/_jsx(ActivityIndicator, {
9
+ size: "small"
10
+ })
11
+ });
12
+ };
13
+ const styles = StyleSheet.create({
14
+ container: {
15
+ position: 'absolute',
16
+ top: 0,
17
+ left: 0,
18
+ right: 0,
19
+ bottom: 0,
20
+ justifyContent: 'center',
21
+ alignItems: 'center',
22
+ backgroundColor: '#FFFFFF'
23
+ }
24
+ });
25
+ //# sourceMappingURL=WebViewLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ActivityIndicator","StyleSheet","View","jsx","_jsx","WebViewLoader","style","styles","container","children","size","create","position","top","left","right","bottom","justifyContent","alignItems","backgroundColor"],"sourceRoot":"../../../src","sources":["components/WebViewLoader.tsx"],"mappings":";;AAAA,SAASA,iBAAiB,EAAEC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEnE,OAAO,MAAMC,aAAa,GAAGA,CAAA,KAAM;EACjC,oBACED,IAAA,CAACF,IAAI;IAACI,KAAK,EAAEC,MAAM,CAACC,SAAU;IAAAC,QAAA,eAC5BL,IAAA,CAACJ,iBAAiB;MAACU,IAAI,EAAC;IAAO,CAAE;EAAC,CAC9B,CAAC;AAEX,CAAC;AAED,MAAMH,MAAM,GAAGN,UAAU,CAACU,MAAM,CAAC;EAC/BH,SAAS,EAAE;IACTI,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBC,eAAe,EAAE;EACnB;AACF,CAAC,CAAC","ignoreList":[]}