@solucx/react-native-solucx-widget 0.2.5 → 2.0.7

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 (256) hide show
  1. package/README.md +526 -182
  2. package/lib/SoluCXWidget.d.ts +50 -7
  3. package/lib/SoluCXWidget.d.ts.map +1 -1
  4. package/lib/SoluCXWidget.js +105 -101
  5. package/lib/SoluCXWidget.js.map +1 -1
  6. package/lib/SoluCXWidgetHost.d.ts +3 -0
  7. package/lib/SoluCXWidgetHost.d.ts.map +1 -0
  8. package/lib/SoluCXWidgetHost.js +34 -0
  9. package/lib/SoluCXWidgetHost.js.map +1 -0
  10. package/lib/SoluCXWidgetView.d.ts +12 -0
  11. package/lib/SoluCXWidgetView.d.ts.map +1 -0
  12. package/lib/SoluCXWidgetView.js +61 -0
  13. package/lib/SoluCXWidgetView.js.map +1 -0
  14. package/lib/components/CloseButton.d.ts +1 -1
  15. package/lib/components/CloseButton.d.ts.map +1 -1
  16. package/lib/components/CloseButton.js +4 -1
  17. package/lib/components/CloseButton.js.map +1 -1
  18. package/lib/components/InlineWidget.d.ts.map +1 -1
  19. package/lib/components/InlineWidget.js +2 -7
  20. package/lib/components/InlineWidget.js.map +1 -1
  21. package/lib/components/ModalWidget.d.ts +1 -1
  22. package/lib/components/ModalWidget.d.ts.map +1 -1
  23. package/lib/components/ModalWidget.js +3 -16
  24. package/lib/components/ModalWidget.js.map +1 -1
  25. package/lib/components/OverlayWidget.d.ts.map +1 -1
  26. package/lib/components/OverlayWidget.js +5 -15
  27. package/lib/components/OverlayWidget.js.map +1 -1
  28. package/lib/components/index.d.ts +5 -0
  29. package/lib/components/index.d.ts.map +1 -0
  30. package/lib/components/index.js +12 -0
  31. package/lib/components/index.js.map +1 -0
  32. package/lib/constants/Constants.d.ts +11 -0
  33. package/lib/constants/Constants.d.ts.map +1 -1
  34. package/lib/constants/Constants.js +16 -1
  35. package/lib/constants/Constants.js.map +1 -1
  36. package/lib/{interfaces → domain}/WidgetCallbacks.d.ts +2 -2
  37. package/lib/domain/WidgetCallbacks.d.ts.map +1 -0
  38. package/lib/domain/WidgetCallbacks.js.map +1 -0
  39. package/{src/interfaces/WidgetData.ts → lib/domain/WidgetData.d.ts} +5 -2
  40. package/lib/domain/WidgetData.d.ts.map +1 -0
  41. package/lib/{interfaces → domain}/WidgetData.js.map +1 -1
  42. package/lib/domain/WidgetDisplayResult.d.ts +6 -0
  43. package/lib/domain/WidgetDisplayResult.d.ts.map +1 -0
  44. package/lib/domain/WidgetDisplayResult.js +3 -0
  45. package/lib/domain/WidgetDisplayResult.js.map +1 -0
  46. package/lib/domain/WidgetOptions.d.ts +27 -0
  47. package/lib/domain/WidgetOptions.d.ts.map +1 -0
  48. package/lib/domain/WidgetOptions.js +30 -0
  49. package/lib/domain/WidgetOptions.js.map +1 -0
  50. package/lib/domain/WidgetResponse.d.ts +5 -0
  51. package/lib/domain/WidgetResponse.d.ts.map +1 -0
  52. package/lib/{interfaces/WidgetOptions.js → domain/WidgetResponse.js} +1 -1
  53. package/lib/domain/WidgetResponse.js.map +1 -0
  54. package/lib/domain/WidgetSamplerLog.d.ts +12 -0
  55. package/lib/domain/WidgetSamplerLog.d.ts.map +1 -0
  56. package/lib/domain/WidgetSamplerLog.js.map +1 -0
  57. package/lib/{interfaces → domain}/index.d.ts +1 -2
  58. package/lib/domain/index.d.ts.map +1 -0
  59. package/lib/{interfaces → domain}/index.js.map +1 -1
  60. package/lib/hooks/index.d.ts +2 -2
  61. package/lib/hooks/index.d.ts.map +1 -1
  62. package/lib/hooks/index.js +5 -5
  63. package/lib/hooks/index.js.map +1 -1
  64. package/lib/hooks/useClientVersionCollector.d.ts +3 -0
  65. package/lib/hooks/useClientVersionCollector.d.ts.map +1 -0
  66. package/lib/{services/ClientVersionCollector.js → hooks/useClientVersionCollector.js} +7 -2
  67. package/lib/hooks/useClientVersionCollector.js.map +1 -0
  68. package/lib/hooks/useHeightAnimation.d.ts +0 -1
  69. package/lib/hooks/useHeightAnimation.d.ts.map +1 -1
  70. package/lib/hooks/useHeightAnimation.js +4 -2
  71. package/lib/hooks/useHeightAnimation.js.map +1 -1
  72. package/lib/hooks/useWidget.d.ts +13 -0
  73. package/lib/hooks/useWidget.d.ts.map +1 -0
  74. package/lib/hooks/useWidget.js +44 -0
  75. package/lib/hooks/useWidget.js.map +1 -0
  76. package/lib/hooks/useWidgetBootstrap.d.ts +21 -0
  77. package/lib/hooks/useWidgetBootstrap.d.ts.map +1 -0
  78. package/lib/hooks/useWidgetBootstrap.js +87 -0
  79. package/lib/hooks/useWidgetBootstrap.js.map +1 -0
  80. package/lib/hooks/useWidgetServices.d.ts +19 -0
  81. package/lib/hooks/useWidgetServices.d.ts.map +1 -0
  82. package/lib/hooks/useWidgetServices.js +34 -0
  83. package/lib/hooks/useWidgetServices.js.map +1 -0
  84. package/lib/hooks/useWidgetUI.d.ts +9 -0
  85. package/lib/hooks/useWidgetUI.d.ts.map +1 -0
  86. package/lib/hooks/useWidgetUI.js +33 -0
  87. package/lib/hooks/useWidgetUI.js.map +1 -0
  88. package/lib/index.d.ts +10 -11
  89. package/lib/index.d.ts.map +1 -1
  90. package/lib/index.js +13 -38
  91. package/lib/index.js.map +1 -1
  92. package/lib/services/UserIdentificationService.d.ts +3 -0
  93. package/lib/services/UserIdentificationService.d.ts.map +1 -0
  94. package/lib/services/UserIdentificationService.js +17 -0
  95. package/lib/services/UserIdentificationService.js.map +1 -0
  96. package/lib/services/WidgetBootstrapService.d.ts +12 -0
  97. package/lib/services/WidgetBootstrapService.d.ts.map +1 -0
  98. package/lib/services/{widgetBootstrapService.js → WidgetBootstrapService.js} +36 -15
  99. package/lib/services/WidgetBootstrapService.js.map +1 -0
  100. package/lib/services/WidgetEventService.d.ts +8 -0
  101. package/lib/services/WidgetEventService.d.ts.map +1 -0
  102. package/lib/services/WidgetEventService.js +14 -0
  103. package/lib/services/WidgetEventService.js.map +1 -0
  104. package/lib/services/WidgetStateManager.d.ts +20 -0
  105. package/lib/services/WidgetStateManager.d.ts.map +1 -0
  106. package/lib/services/WidgetStateManager.js +93 -0
  107. package/lib/services/WidgetStateManager.js.map +1 -0
  108. package/lib/services/WidgetValidationService.d.ts +17 -0
  109. package/lib/services/WidgetValidationService.d.ts.map +1 -0
  110. package/lib/services/WidgetValidationService.js +132 -0
  111. package/lib/services/WidgetValidationService.js.map +1 -0
  112. package/lib/services/events/EventHandlerFactory.d.ts +18 -0
  113. package/lib/services/events/EventHandlerFactory.d.ts.map +1 -0
  114. package/lib/services/events/EventHandlerFactory.js +67 -0
  115. package/lib/services/events/EventHandlerFactory.js.map +1 -0
  116. package/lib/services/events/EventHandlers.d.ts +10 -0
  117. package/lib/services/events/EventHandlers.d.ts.map +1 -0
  118. package/lib/services/events/EventHandlers.js +72 -0
  119. package/lib/services/events/EventHandlers.js.map +1 -0
  120. package/lib/services/events/index.d.ts +3 -0
  121. package/lib/services/events/index.d.ts.map +1 -0
  122. package/lib/services/events/index.js +21 -0
  123. package/lib/services/events/index.js.map +1 -0
  124. package/lib/services/height/HeightStrategies.d.ts +3 -0
  125. package/lib/services/height/HeightStrategies.d.ts.map +1 -0
  126. package/lib/services/height/HeightStrategies.js +14 -0
  127. package/lib/services/height/HeightStrategies.js.map +1 -0
  128. package/lib/services/storage/AsyncStorageService.d.ts +13 -0
  129. package/lib/services/storage/AsyncStorageService.d.ts.map +1 -0
  130. package/lib/services/storage/AsyncStorageService.js +73 -0
  131. package/lib/services/storage/AsyncStorageService.js.map +1 -0
  132. package/lib/services/storage/IStorageService.d.ts +30 -0
  133. package/lib/services/storage/IStorageService.d.ts.map +1 -0
  134. package/lib/services/storage/IStorageService.js +3 -0
  135. package/lib/services/storage/IStorageService.js.map +1 -0
  136. package/lib/services/storage/StorageIdBuilder.d.ts +11 -0
  137. package/lib/services/storage/StorageIdBuilder.d.ts.map +1 -0
  138. package/lib/services/storage/StorageIdBuilder.js +17 -0
  139. package/lib/services/storage/StorageIdBuilder.js.map +1 -0
  140. package/lib/services/storage/index.d.ts +3 -0
  141. package/lib/services/storage/index.d.ts.map +1 -0
  142. package/lib/services/storage/index.js +6 -0
  143. package/lib/services/storage/index.js.map +1 -0
  144. package/lib/styles/widgetStyles.d.ts +1 -1
  145. package/lib/styles/widgetStyles.d.ts.map +1 -1
  146. package/package.json +8 -2
  147. package/src/SoluCXWidget.ts +144 -0
  148. package/src/SoluCXWidgetHost.tsx +44 -0
  149. package/src/SoluCXWidgetView.tsx +97 -0
  150. package/src/__tests__/ClientVersionCollector.test.ts +5 -5
  151. package/src/__tests__/OverlayWidget.rendering.test.tsx +12 -14
  152. package/src/__tests__/SoluCXWidget.rendering.test.tsx +103 -60
  153. package/src/__tests__/SoluCXWidget.test.ts +448 -0
  154. package/src/__tests__/WidgetValidationService.test.ts +408 -0
  155. package/src/__tests__/e2e/widget-lifecycle.test.tsx +14 -23
  156. package/src/__tests__/index.test.tsx +39 -0
  157. package/src/__tests__/integration/webview-communication-simple.test.tsx +8 -6
  158. package/src/__tests__/integration/webview-communication.test.tsx +127 -130
  159. package/src/__tests__/normalizeWidgetOptions.test.ts +80 -0
  160. package/src/__tests__/useWidgetBootstrap.test.ts +634 -0
  161. package/src/__tests__/useWidgetState.test.ts +56 -13
  162. package/src/__tests__/widgetBootstrapService.test.ts +15 -17
  163. package/src/components/CloseButton.tsx +6 -2
  164. package/src/components/InlineWidget.tsx +4 -9
  165. package/src/components/ModalWidget.tsx +15 -45
  166. package/src/components/OverlayWidget.tsx +5 -15
  167. package/src/components/index.ts +4 -0
  168. package/src/constants/Constants.ts +15 -0
  169. package/src/{interfaces → domain}/WidgetCallbacks.ts +2 -2
  170. package/{lib/interfaces/WidgetData.d.ts → src/domain/WidgetData.ts} +3 -2
  171. package/src/domain/WidgetDisplayResult.ts +16 -0
  172. package/src/domain/WidgetOptions.ts +53 -0
  173. package/src/domain/WidgetResponse.ts +5 -0
  174. package/src/domain/WidgetSamplerLog.ts +11 -0
  175. package/src/{interfaces → domain}/index.ts +1 -2
  176. package/src/hooks/index.ts +2 -2
  177. package/src/{services/ClientVersionCollector.ts → hooks/useClientVersionCollector.ts} +6 -0
  178. package/src/hooks/useHeightAnimation.ts +6 -3
  179. package/src/hooks/useWidget.ts +46 -0
  180. package/src/hooks/useWidgetBootstrap.ts +117 -0
  181. package/src/hooks/useWidgetServices.ts +44 -0
  182. package/src/hooks/useWidgetUI.ts +38 -0
  183. package/src/index.ts +16 -11
  184. package/src/services/UserIdentificationService.ts +14 -0
  185. package/src/services/{widgetBootstrapService.ts → WidgetBootstrapService.ts} +43 -19
  186. package/src/services/WidgetEventService.ts +15 -0
  187. package/src/services/WidgetStateManager.ts +115 -0
  188. package/src/services/WidgetValidationService.ts +149 -0
  189. package/src/services/events/EventHandlerFactory.ts +70 -0
  190. package/src/services/events/EventHandlers.ts +67 -0
  191. package/src/services/events/index.ts +2 -0
  192. package/src/services/height/HeightStrategies.ts +15 -0
  193. package/src/services/storage/AsyncStorageService.ts +74 -0
  194. package/src/services/storage/IStorageService.ts +32 -0
  195. package/src/services/storage/StorageIdBuilder.ts +15 -0
  196. package/src/services/storage/index.ts +2 -0
  197. package/src/styles/widgetStyles.ts +1 -1
  198. package/README.intern.md +0 -490
  199. package/lib/constants/webViewConstants.d.ts +0 -12
  200. package/lib/constants/webViewConstants.d.ts.map +0 -1
  201. package/lib/constants/webViewConstants.js +0 -19
  202. package/lib/constants/webViewConstants.js.map +0 -1
  203. package/lib/hooks/useWidgetHeight.d.ts +0 -13
  204. package/lib/hooks/useWidgetHeight.d.ts.map +0 -1
  205. package/lib/hooks/useWidgetHeight.js +0 -21
  206. package/lib/hooks/useWidgetHeight.js.map +0 -1
  207. package/lib/hooks/useWidgetState.d.ts +0 -15
  208. package/lib/hooks/useWidgetState.d.ts.map +0 -1
  209. package/lib/hooks/useWidgetState.js +0 -79
  210. package/lib/hooks/useWidgetState.js.map +0 -1
  211. package/lib/interfaces/WidgetCallbacks.d.ts.map +0 -1
  212. package/lib/interfaces/WidgetCallbacks.js.map +0 -1
  213. package/lib/interfaces/WidgetData.d.ts.map +0 -1
  214. package/lib/interfaces/WidgetOptions.d.ts +0 -9
  215. package/lib/interfaces/WidgetOptions.d.ts.map +0 -1
  216. package/lib/interfaces/WidgetOptions.js.map +0 -1
  217. package/lib/interfaces/WidgetResponse.d.ts +0 -10
  218. package/lib/interfaces/WidgetResponse.d.ts.map +0 -1
  219. package/lib/interfaces/WidgetResponse.js +0 -12
  220. package/lib/interfaces/WidgetResponse.js.map +0 -1
  221. package/lib/interfaces/WidgetSamplerLog.d.ts +0 -7
  222. package/lib/interfaces/WidgetSamplerLog.d.ts.map +0 -1
  223. package/lib/interfaces/WidgetSamplerLog.js.map +0 -1
  224. package/lib/interfaces/index.d.ts.map +0 -1
  225. package/lib/services/ClientVersionCollector.d.ts +0 -2
  226. package/lib/services/ClientVersionCollector.d.ts.map +0 -1
  227. package/lib/services/ClientVersionCollector.js.map +0 -1
  228. package/lib/services/storage.d.ts +0 -8
  229. package/lib/services/storage.d.ts.map +0 -1
  230. package/lib/services/storage.js +0 -23
  231. package/lib/services/storage.js.map +0 -1
  232. package/lib/services/widgetBootstrapService.d.ts +0 -6
  233. package/lib/services/widgetBootstrapService.d.ts.map +0 -1
  234. package/lib/services/widgetBootstrapService.js.map +0 -1
  235. package/lib/services/widgetEventService.d.ts +0 -19
  236. package/lib/services/widgetEventService.d.ts.map +0 -1
  237. package/lib/services/widgetEventService.js +0 -79
  238. package/lib/services/widgetEventService.js.map +0 -1
  239. package/lib/services/widgetValidationService.d.ts +0 -18
  240. package/lib/services/widgetValidationService.d.ts.map +0 -1
  241. package/lib/services/widgetValidationService.js +0 -71
  242. package/lib/services/widgetValidationService.js.map +0 -1
  243. package/src/SoluCXWidget.tsx +0 -179
  244. package/src/constants/webViewConstants.ts +0 -15
  245. package/src/hooks/useWidgetHeight.ts +0 -38
  246. package/src/hooks/useWidgetState.ts +0 -101
  247. package/src/interfaces/WidgetOptions.ts +0 -8
  248. package/src/interfaces/WidgetResponse.ts +0 -15
  249. package/src/interfaces/WidgetSamplerLog.ts +0 -6
  250. package/src/services/storage.ts +0 -21
  251. package/src/services/widgetEventService.ts +0 -110
  252. package/src/services/widgetValidationService.ts +0 -102
  253. /package/lib/{interfaces → domain}/WidgetCallbacks.js +0 -0
  254. /package/lib/{interfaces → domain}/WidgetData.js +0 -0
  255. /package/lib/{interfaces → domain}/WidgetSamplerLog.js +0 -0
  256. /package/lib/{interfaces → domain}/index.js +0 -0
@@ -1,12 +1,55 @@
1
- import React from "react";
2
- import type { SoluCXKey, WidgetData, WidgetOptions, WidgetType, WidgetCallbacks } from "./interfaces";
3
- interface SoluCXWidgetProps {
4
- soluCXKey: SoluCXKey;
1
+ import type { WidgetCallbacks, WidgetData, WidgetOptions, WidgetSamplerLog, WidgetType } from "./domain";
2
+ import { type TimestampField } from "./services/WidgetStateManager";
3
+ export interface WidgetConfig {
4
+ instanceKey: string;
5
5
  type: WidgetType;
6
6
  data: WidgetData;
7
- options: WidgetOptions;
8
- callbacks?: WidgetCallbacks;
7
+ options?: WidgetOptions;
8
+ callbacks: WidgetCallbacks;
9
+ }
10
+ type ShowHandler = (config: WidgetConfig) => void;
11
+ type DismissHandler = () => void;
12
+ export declare function _registerHost(show: ShowHandler, dismiss: DismissHandler): void;
13
+ export declare function _unregisterHost(): void;
14
+ export declare class SoluCXWidget {
15
+ private _instanceKey;
16
+ private _type;
17
+ private _data;
18
+ private _options;
19
+ private _callbacks;
20
+ private constructor();
21
+ static create(instanceKey: string): SoluCXWidget;
22
+ setData(data: WidgetData): this;
23
+ setOptions(options: WidgetOptions): this;
24
+ setCallbacks(callbacks: WidgetCallbacks): this;
25
+ setType(type: WidgetType): this;
26
+ show(): void;
27
+ static dismiss(): void;
28
+ /**
29
+ * Build the storage ID from the builder state.
30
+ * Uses instanceKey + journey (from data) + userId (from data).
31
+ */
32
+ private _buildStorageId;
33
+ private _createStateManager;
34
+ /**
35
+ * Override a specific event timestamp.
36
+ * Uses instanceKey from create() and journey/userId from setData().
37
+ *
38
+ * @param field - The timestamp field to override (e.g., 'lastFirstAccess', 'lastDismiss')
39
+ * @param date - The date to set (Date object or timestamp in milliseconds). Use 0 to clear.
40
+ */
41
+ overrideTimestamp(field: TimestampField, date: Date | number): Promise<this>;
42
+ /**
43
+ * Get the current widget logs.
44
+ * Uses instanceKey from create() and journey/userId from setData().
45
+ */
46
+ getWidgetLogs(): Promise<WidgetSamplerLog>;
47
+ /**
48
+ * Clear all widget logs.
49
+ * Uses instanceKey from create() and journey/userId from setData().
50
+ */
51
+ clearWidgetLogs(): Promise<this>;
52
+ private _cleanup;
9
53
  }
10
- export declare const SoluCXWidget: React.FC<SoluCXWidgetProps>;
11
54
  export {};
12
55
  //# sourceMappingURL=SoluCXWidget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SoluCXWidget.d.ts","sourceRoot":"","sources":["../src/SoluCXWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAIjF,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAUtG,UAAU,iBAAiB;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA4JpD,CAAC"}
1
+ {"version":3,"file":"SoluCXWidget.d.ts","sourceRoot":"","sources":["../src/SoluCXWidget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAIzG,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAExF,MAAM,WAAW,YAAY;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,SAAS,EAAE,eAAe,CAAC;CAC9B;AAED,KAAK,WAAW,GAAG,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;AAClD,KAAK,cAAc,GAAG,MAAM,IAAI,CAAC;AAKjC,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,QAGvE;AAED,wBAAgB,eAAe,SAG9B;AAED,qBAAa,YAAY;IACrB,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,UAAU,CAAuB;IAEzC,OAAO;IAMP,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY;IAIhD,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAK/B,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAMxC,YAAY,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAK9C,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAK/B,IAAI,IAAI,IAAI;IAkBZ,MAAM,CAAC,OAAO,IAAI,IAAI;IAMtB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,mBAAmB;IAM3B;;;;;;OAMG;IACG,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlF;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAIhD;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtC,OAAO,CAAC,QAAQ;CAMnB"}
@@ -1,111 +1,115 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SoluCXWidget = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const react_1 = require("react");
6
- const react_native_1 = require("react-native");
7
- const react_native_webview_1 = require("react-native-webview");
8
- const useWidgetState_1 = require("./hooks/useWidgetState");
9
- const widgetEventService_1 = require("./services/widgetEventService");
10
- const widgetValidationService_1 = require("./services/widgetValidationService");
11
- const webViewConstants_1 = require("./constants/webViewConstants");
12
- const ModalWidget_1 = require("./components/ModalWidget");
13
- const InlineWidget_1 = require("./components/InlineWidget");
14
- const OverlayWidget_1 = require("./components/OverlayWidget");
15
- const widgetBootstrapService_1 = require("./services/widgetBootstrapService");
16
- const SoluCXWidget = ({ soluCXKey, type, data, options, callbacks }) => {
17
- const webviewRef = (0, react_1.useRef)(null);
18
- const { width } = react_native_1.Dimensions.get("window");
19
- const callbacksRef = (0, react_1.useRef)(callbacks);
20
- callbacksRef.current = callbacks;
21
- const serializedData = JSON.stringify(data);
22
- const normalizedData = (0, react_1.useMemo)(() => data, [serializedData]);
23
- const { widgetHeight, isWidgetVisible, setIsWidgetVisible, loadSavedData, resize, open, close, userId } = (0, useWidgetState_1.useWidgetState)(normalizedData, options, type);
24
- const eventService = (0, react_1.useMemo)(() => new widgetEventService_1.WidgetEventService(setIsWidgetVisible, resize, userId, callbacksRef.current), [setIsWidgetVisible, resize]);
25
- const validationService = (0, react_1.useMemo)(() => new widgetValidationService_1.WidgetValidationService(userId), [userId]);
26
- const isForm = Boolean(normalizedData?.form_id);
27
- const [widgetUri, setWidgetUri] = (0, react_1.useState)(null);
28
- (0, react_1.useEffect)(() => {
29
- loadSavedData();
30
- }, [loadSavedData]);
31
- (0, react_1.useEffect)(() => {
32
- let isActive = true;
33
- const prepareWidgetURL = async () => {
34
- if (!data)
35
- return;
36
- setWidgetUri(null);
37
- try {
38
- const widgetUrl = await (0, widgetBootstrapService_1.requestWidgetUrl)(soluCXKey, normalizedData, userId);
39
- if (!isActive || !widgetUrl)
40
- return;
41
- const result = await validationService.shouldDisplayWidget(options);
42
- if (!isActive)
43
- return;
44
- if (!result.canDisplay) {
45
- const blockReason = result?.blockReason;
46
- callbacksRef.current?.onBlock?.(blockReason);
47
- setIsWidgetVisible(false);
48
- return;
49
- }
50
- callbacksRef.current?.onPreOpen?.(userId);
51
- open();
52
- setWidgetUri(widgetUrl);
53
- callbacksRef.current?.onOpened?.(userId);
54
- }
55
- catch (error) {
56
- if (isActive) {
57
- let errorMessage = "Unknown error";
58
- if (error instanceof Error)
59
- errorMessage = error.message;
60
- else if (typeof error === "string")
61
- errorMessage = error;
62
- else if (error !== null && typeof error === "object")
63
- errorMessage = JSON.stringify(error);
64
- callbacksRef.current?.onError?.(errorMessage);
65
- setIsWidgetVisible(false);
66
- }
67
- }
68
- };
69
- prepareWidgetURL();
70
- return () => {
71
- isActive = false;
72
- };
73
- }, [validationService, soluCXKey, normalizedData, isForm, setIsWidgetVisible, options, open, userId]);
74
- const handleWebViewMessage = (0, react_1.useCallback)(async (message) => {
75
- if (message && message.length > 0) {
76
- try {
77
- await eventService.handleMessage(message, isForm);
78
- }
79
- catch (error) {
80
- console.error("Error handling widget message:", error);
81
- }
82
- }
83
- }, [eventService, isForm]);
84
- const handleWebViewLoad = (0, react_1.useCallback)(() => {
85
- webviewRef.current?.injectJavaScript(webViewConstants_1.WEB_VIEW_MESSAGE_LISTENER);
86
- }, []);
87
- const handleClose = (0, react_1.useCallback)(() => {
88
- if (type === "inline" || type === "modal") {
89
- close();
4
+ exports._registerHost = _registerHost;
5
+ exports._unregisterHost = _unregisterHost;
6
+ const WidgetOptions_1 = require("./domain/WidgetOptions");
7
+ const AsyncStorageService_1 = require("./services/storage/AsyncStorageService");
8
+ const StorageIdBuilder_1 = require("./services/storage/StorageIdBuilder");
9
+ const WidgetStateManager_1 = require("./services/WidgetStateManager");
10
+ let registeredShowHandler = null;
11
+ let registeredDismissHandler = null;
12
+ function _registerHost(show, dismiss) {
13
+ registeredShowHandler = show;
14
+ registeredDismissHandler = dismiss;
15
+ }
16
+ function _unregisterHost() {
17
+ registeredShowHandler = null;
18
+ registeredDismissHandler = null;
19
+ }
20
+ class SoluCXWidget {
21
+ constructor(instanceKey) {
22
+ this._instanceKey = "";
23
+ this._type = "bottom";
24
+ this._data = {};
25
+ this._options = {};
26
+ this._callbacks = {};
27
+ this._instanceKey = instanceKey;
28
+ }
29
+ // --- Builder methods ---
30
+ static create(instanceKey) {
31
+ return new SoluCXWidget(instanceKey);
32
+ }
33
+ setData(data) {
34
+ this._data = { ...data };
35
+ return this;
36
+ }
37
+ setOptions(options) {
38
+ const isObjectValid = !!options && Object.keys(options).length > 0;
39
+ this._options = isObjectValid ? (0, WidgetOptions_1.normalizeWidgetOptions)(options) : null;
40
+ return this;
41
+ }
42
+ setCallbacks(callbacks) {
43
+ this._callbacks = { ...callbacks };
44
+ return this;
45
+ }
46
+ setType(type) {
47
+ this._type = type;
48
+ return this;
49
+ }
50
+ show() {
51
+ if (!registeredShowHandler) {
52
+ throw new Error("[SoluCXWidget] Cannot show widget — no <SoluCXWidgetHost /> is mounted. " + "Add <SoluCXWidgetHost /> at the root of your app.");
90
53
  }
91
- setIsWidgetVisible(false);
92
- callbacksRef.current?.onClosed?.();
93
- }, [setIsWidgetVisible, close, type]);
94
- const webViewStyle = [{ height: widgetHeight }, { width }];
95
- if (!data) {
96
- callbacksRef.current?.onError?.("Widget data is required but was not provided");
97
- return null;
54
+ registeredShowHandler({
55
+ instanceKey: this._instanceKey,
56
+ type: this._type,
57
+ data: { ...this._data },
58
+ options: { ...this._options },
59
+ callbacks: { ...this._callbacks },
60
+ });
61
+ this._cleanup();
62
+ }
63
+ // --- Static: dismiss ---
64
+ static dismiss() {
65
+ registeredDismissHandler?.();
66
+ }
67
+ // --- Log management (instance methods) ---
68
+ /**
69
+ * Build the storage ID from the builder state.
70
+ * Uses instanceKey + journey (from data) + userId (from data).
71
+ */
72
+ _buildStorageId() {
73
+ return (0, StorageIdBuilder_1.buildStorageId)(this._instanceKey, this._data);
74
+ }
75
+ _createStateManager() {
76
+ const storageId = this._buildStorageId();
77
+ const storageService = new AsyncStorageService_1.AsyncStorageService(storageId);
78
+ return new WidgetStateManager_1.WidgetStateManager(storageService, storageId);
79
+ }
80
+ /**
81
+ * Override a specific event timestamp.
82
+ * Uses instanceKey from create() and journey/userId from setData().
83
+ *
84
+ * @param field - The timestamp field to override (e.g., 'lastFirstAccess', 'lastDismiss')
85
+ * @param date - The date to set (Date object or timestamp in milliseconds). Use 0 to clear.
86
+ */
87
+ async overrideTimestamp(field, date) {
88
+ await this._createStateManager().overrideTimestamp(field, date);
89
+ return this;
98
90
  }
99
- if (!widgetUri) {
100
- return null;
91
+ /**
92
+ * Get the current widget logs.
93
+ * Uses instanceKey from create() and journey/userId from setData().
94
+ */
95
+ async getWidgetLogs() {
96
+ return this._createStateManager().getLogs();
101
97
  }
102
- if (type === "modal") {
103
- return ((0, jsx_runtime_1.jsx)(ModalWidget_1.ModalWidget, { visible: isWidgetVisible, height: widgetHeight, onClose: handleClose, children: (0, jsx_runtime_1.jsx)(react_native_webview_1.WebView, { ref: webviewRef, style: webViewStyle, source: { uri: widgetUri }, onLoadEnd: handleWebViewLoad, onMessage: (event) => handleWebViewMessage(event.nativeEvent.data), originWhitelist: ["*"] }) }));
98
+ /**
99
+ * Clear all widget logs.
100
+ * Uses instanceKey from create() and journey/userId from setData().
101
+ */
102
+ async clearWidgetLogs() {
103
+ await this._createStateManager().clearLogs();
104
+ return this;
104
105
  }
105
- if (type === "inline") {
106
- return ((0, jsx_runtime_1.jsx)(InlineWidget_1.InlineWidget, { visible: isWidgetVisible, height: widgetHeight, onClose: handleClose, children: (0, jsx_runtime_1.jsx)(react_native_webview_1.WebView, { ref: webviewRef, style: webViewStyle, source: { uri: widgetUri }, onLoadEnd: handleWebViewLoad, onMessage: (event) => handleWebViewMessage(event.nativeEvent.data), originWhitelist: ["*"] }) }));
106
+ // --- Private ---
107
+ _cleanup() {
108
+ this._type = "bottom";
109
+ this._data = {};
110
+ this._options = {};
111
+ this._callbacks = {};
107
112
  }
108
- return ((0, jsx_runtime_1.jsx)(OverlayWidget_1.OverlayWidget, { visible: isWidgetVisible, width: width, height: widgetHeight, position: type, onClose: handleClose, children: (0, jsx_runtime_1.jsx)(react_native_webview_1.WebView, { ref: webviewRef, style: webViewStyle, source: { uri: widgetUri }, onLoadEnd: handleWebViewLoad, onMessage: (event) => handleWebViewMessage(event.nativeEvent.data), originWhitelist: ["*"] }) }));
109
- };
113
+ }
110
114
  exports.SoluCXWidget = SoluCXWidget;
111
115
  //# sourceMappingURL=SoluCXWidget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SoluCXWidget.js","sourceRoot":"","sources":["../src/SoluCXWidget.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SoluCXWidget.js","sourceRoot":"","sources":["../src/SoluCXWidget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ export declare const SoluCXWidgetHost: React.FC;
3
+ //# sourceMappingURL=SoluCXWidgetHost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SoluCXWidgetHost.d.ts","sourceRoot":"","sources":["../src/SoluCXWidgetHost.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAKhE,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAsCpC,CAAC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SoluCXWidgetHost = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const SoluCXWidgetView_1 = require("./SoluCXWidgetView");
7
+ const SoluCXWidget_1 = require("./SoluCXWidget");
8
+ const SoluCXWidgetHost = () => {
9
+ const [config, setConfig] = (0, react_1.useState)(null);
10
+ const [refreshKey, setRefreshKey] = (0, react_1.useState)(0);
11
+ const handleShow = (0, react_1.useCallback)((newConfig) => {
12
+ setConfig(newConfig);
13
+ setRefreshKey((k) => k + 1);
14
+ }, []);
15
+ const handleDismiss = (0, react_1.useCallback)(() => {
16
+ setConfig(null);
17
+ }, []);
18
+ (0, react_1.useEffect)(() => {
19
+ (0, SoluCXWidget_1._registerHost)(handleShow, handleDismiss);
20
+ return () => (0, SoluCXWidget_1._unregisterHost)();
21
+ }, [handleShow, handleDismiss]);
22
+ if (!config)
23
+ return null;
24
+ const wrappedCallbacks = {
25
+ ...config.callbacks,
26
+ onClosed: () => {
27
+ config.callbacks?.onClosed?.();
28
+ setConfig(null);
29
+ },
30
+ };
31
+ return ((0, jsx_runtime_1.jsx)(SoluCXWidgetView_1.SoluCXWidgetView, { soluCXKey: config.instanceKey, type: config.type, data: config.data, options: config.options, callbacks: wrappedCallbacks }, refreshKey));
32
+ };
33
+ exports.SoluCXWidgetHost = SoluCXWidgetHost;
34
+ //# sourceMappingURL=SoluCXWidgetHost.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SoluCXWidgetHost.js","sourceRoot":"","sources":["../src/SoluCXWidgetHost.tsx"],"names":[],"mappings":";;;;AAAA,iCAAgE;AAChE,yDAAsD;AACtD,iDAAgE;AAGzD,MAAM,gBAAgB,GAAa,GAAG,EAAE;IAC3C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAsB,IAAI,CAAC,CAAC;IAChE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,EAAC,CAAC,CAAC,CAAC;IAEhD,MAAM,UAAU,GAAG,IAAA,mBAAW,EAAC,CAAC,SAAuB,EAAE,EAAE;QACvD,SAAS,CAAC,SAAS,CAAC,CAAC;QACrB,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,aAAa,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QACnC,SAAS,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAA,4BAAa,EAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QACzC,OAAO,GAAG,EAAE,CAAC,IAAA,8BAAe,GAAE,CAAC;IACnC,CAAC,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;IAEhC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,MAAM,gBAAgB,GAAG;QACrB,GAAG,MAAM,CAAC,SAAS;QACnB,QAAQ,EAAE,GAAG,EAAE;YACX,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC;YAC/B,SAAS,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;KACJ,CAAC;IAEF,OAAO,CACH,uBAAC,mCAAgB,IAEb,SAAS,EAAE,MAAM,CAAC,WAAW,EAC7B,IAAI,EAAE,MAAM,CAAC,IAAI,EACjB,IAAI,EAAE,MAAM,CAAC,IAAI,EACjB,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,SAAS,EAAE,gBAAgB,IALtB,UAAU,CAMjB,CACL,CAAC;AACN,CAAC,CAAC;AAtCW,QAAA,gBAAgB,oBAsC3B"}
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+ import type { SoluCXKey, WidgetCallbacks, WidgetData, WidgetOptions, WidgetType } from "./domain";
3
+ interface SoluCXWidgetProps {
4
+ soluCXKey: SoluCXKey;
5
+ type: WidgetType;
6
+ data: WidgetData;
7
+ options?: WidgetOptions;
8
+ callbacks?: WidgetCallbacks;
9
+ }
10
+ export declare const SoluCXWidgetView: React.FC<SoluCXWidgetProps>;
11
+ export {};
12
+ //# sourceMappingURL=SoluCXWidgetView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SoluCXWidgetView.d.ts","sourceRoot":"","sources":["../src/SoluCXWidgetView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiC,MAAM,OAAO,CAAC;AAQtD,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAKlG,UAAU,iBAAiB;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA2ExD,CAAC"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SoluCXWidgetView = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const react_native_1 = require("react-native");
7
+ const react_native_webview_1 = require("react-native-webview");
8
+ const InlineWidget_1 = require("./components/InlineWidget");
9
+ const ModalWidget_1 = require("./components/ModalWidget");
10
+ const OverlayWidget_1 = require("./components/OverlayWidget");
11
+ const Constants_1 = require("./constants/Constants");
12
+ const useWidget_1 = require("./hooks/useWidget");
13
+ const useWidgetBootstrap_1 = require("./hooks/useWidgetBootstrap");
14
+ const useWidgetServices_1 = require("./hooks/useWidgetServices");
15
+ const SoluCXWidgetView = ({ soluCXKey, type, data, options, callbacks }) => {
16
+ const { width } = react_native_1.Dimensions.get("window");
17
+ const { widgetHeight, isWidgetVisible, resize, open, hide, userId, stateManager } = (0, useWidget_1.useWidget)(soluCXKey, data, options);
18
+ const { validationService, handleWebViewMessage } = (0, useWidgetServices_1.useWidgetServices)({
19
+ hide,
20
+ resize,
21
+ userId,
22
+ callbacks,
23
+ data,
24
+ stateManager,
25
+ });
26
+ const { widgetUri, bootstrap } = (0, useWidgetBootstrap_1.useWidgetBootstrap)({
27
+ soluCXKey,
28
+ data,
29
+ userId,
30
+ options,
31
+ callbacks,
32
+ open,
33
+ hide,
34
+ validationService,
35
+ stateManager,
36
+ });
37
+ (0, react_1.useEffect)(() => {
38
+ bootstrap();
39
+ }, []);
40
+ const handleClose = (0, react_1.useCallback)(() => {
41
+ hide();
42
+ callbacks?.onClosed?.();
43
+ }, [hide, callbacks]);
44
+ if (!data) {
45
+ callbacks?.onError?.("Widget data is required but was not provided");
46
+ return null;
47
+ }
48
+ if (!widgetUri) {
49
+ return null;
50
+ }
51
+ const webView = ((0, jsx_runtime_1.jsx)(react_native_webview_1.WebView, { style: [{ height: widgetHeight }, { width }], source: { uri: widgetUri }, injectedJavaScript: Constants_1.WEB_VIEW_MESSAGE_LISTENER, onMessage: event => handleWebViewMessage(event.nativeEvent.data), originWhitelist: ["*"] }));
52
+ if (type === "modal") {
53
+ return ((0, jsx_runtime_1.jsx)(ModalWidget_1.ModalWidget, { visible: isWidgetVisible, height: widgetHeight, onClose: handleClose, children: webView }));
54
+ }
55
+ if (type === "inline") {
56
+ return ((0, jsx_runtime_1.jsx)(InlineWidget_1.InlineWidget, { visible: isWidgetVisible, height: widgetHeight, onClose: handleClose, children: webView }));
57
+ }
58
+ return ((0, jsx_runtime_1.jsx)(OverlayWidget_1.OverlayWidget, { visible: isWidgetVisible, width: width, height: widgetHeight, position: type, onClose: handleClose, children: webView }));
59
+ };
60
+ exports.SoluCXWidgetView = SoluCXWidgetView;
61
+ //# sourceMappingURL=SoluCXWidgetView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SoluCXWidgetView.js","sourceRoot":"","sources":["../src/SoluCXWidgetView.tsx"],"names":[],"mappings":";;;;AAAA,iCAAsD;AACtD,+CAA0C;AAC1C,+DAA+C;AAE/C,4DAAyD;AACzD,0DAAuD;AACvD,8DAA2D;AAC3D,qDAAkE;AAElE,iDAA8C;AAC9C,mEAAgE;AAChE,iEAA8D;AAUvD,MAAM,gBAAgB,GAAgC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE;IAC3G,MAAM,EAAE,KAAK,EAAE,GAAG,yBAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE3C,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,IAAA,qBAAS,EAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAExH,MAAM,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,GAAG,IAAA,qCAAiB,EAAC;QAClE,IAAI;QACJ,MAAM;QACN,MAAM;QACN,SAAS;QACT,IAAI;QACJ,YAAY;KACf,CAAC,CAAC;IAEH,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAA,uCAAkB,EAAC;QAChD,SAAS;QACT,IAAI;QACJ,MAAM;QACN,OAAO;QACP,SAAS;QACT,IAAI;QACJ,IAAI;QACJ,iBAAiB;QACjB,YAAY;KACf,CAAC,CAAC;IAEH,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,SAAS,EAAE,CAAC;IAChB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,WAAW,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QACjC,IAAI,EAAE,CAAC;QACP,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC;IAC5B,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAEtB,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,SAAS,EAAE,OAAO,EAAE,CAAC,8CAA8C,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,OAAO,GAAG,CACZ,uBAAC,8BAAO,IACJ,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAC5C,MAAM,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAC1B,kBAAkB,EAAE,qCAAyB,EAC7C,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,EAChE,eAAe,EAAE,CAAC,GAAG,CAAC,GACxB,CACL,CAAC;IAEF,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACnB,OAAO,CACH,uBAAC,yBAAW,IAAC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,YAC5E,OAAO,GACE,CACjB,CAAC;IACN,CAAC;IAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpB,OAAO,CACH,uBAAC,2BAAY,IAAC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,YAC7E,OAAO,GACG,CAClB,CAAC;IACN,CAAC;IAED,OAAO,CACH,uBAAC,6BAAa,IAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,YAC5G,OAAO,GACI,CACnB,CAAC;AACN,CAAC,CAAC;AA3EW,QAAA,gBAAgB,oBA2E3B"}
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  interface CloseButtonProps {
3
- onPress: () => void;
3
+ onPress?: () => void;
4
4
  visible?: boolean;
5
5
  }
6
6
  export declare const CloseButton: React.FC<CloseButtonProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"CloseButton.d.ts","sourceRoot":"","sources":["../../src/components/CloseButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,gBAAgB;IACtB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAQlD,CAAC"}
1
+ {"version":3,"file":"CloseButton.d.ts","sourceRoot":"","sources":["../../src/components/CloseButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,gBAAgB;IACtB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAYlD,CAAC"}
@@ -6,7 +6,10 @@ const react_native_1 = require("react-native");
6
6
  const CloseButton = ({ onPress, visible = true }) => {
7
7
  if (!visible)
8
8
  return null;
9
- return ((0, jsx_runtime_1.jsx)(react_native_1.TouchableOpacity, { style: styles.closeButton, onPress: onPress, children: (0, jsx_runtime_1.jsx)(react_native_1.Text, { style: styles.closeButtonText, children: "\u2715" }) }));
9
+ const handlePress = () => {
10
+ onPress?.();
11
+ };
12
+ return ((0, jsx_runtime_1.jsx)(react_native_1.TouchableOpacity, { style: styles.closeButton, onPress: handlePress, children: (0, jsx_runtime_1.jsx)(react_native_1.Text, { style: styles.closeButtonText, children: "\u2715" }) }));
10
13
  };
11
14
  exports.CloseButton = CloseButton;
12
15
  const styles = react_native_1.StyleSheet.create({
@@ -1 +1 @@
1
- {"version":3,"file":"CloseButton.js","sourceRoot":"","sources":["../../src/components/CloseButton.tsx"],"names":[],"mappings":";;;;AACA,+CAAkE;AAO3D,MAAM,WAAW,GAA+B,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,EAAE,EAAE,EAAE;IACnF,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,OAAO,CACH,uBAAC,+BAAgB,IAAC,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,YACzD,uBAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,eAAe,uBAAU,GAC9B,CACtB,CAAC;AACN,CAAC,CAAC;AARW,QAAA,WAAW,eAQtB;AAEF,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC7B,WAAW,EAAE;QACT,QAAQ,EAAE,UAAU;QACpB,GAAG,EAAE,EAAE;QACP,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;QACV,YAAY,EAAE,EAAE;QAChB,eAAe,EAAE,oBAAoB;QACrC,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,QAAQ;QACpB,MAAM,EAAE,KAAK;KAChB;IACD,eAAe,EAAE;QACb,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,MAAM;KACrB;CACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"CloseButton.js","sourceRoot":"","sources":["../../src/components/CloseButton.tsx"],"names":[],"mappings":";;;;AACA,+CAAkE;AAO3D,MAAM,WAAW,GAA+B,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,EAAE,EAAE,EAAE;IACnF,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,MAAM,WAAW,GAAG,GAAG,EAAE;QACrB,OAAO,EAAE,EAAE,CAAC;IAChB,CAAC,CAAC;IAEF,OAAO,CACH,uBAAC,+BAAgB,IAAC,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,YAC7D,uBAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,eAAe,uBAAU,GAC9B,CACtB,CAAC;AACN,CAAC,CAAC;AAZW,QAAA,WAAW,eAYtB;AAEF,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC7B,WAAW,EAAE;QACT,QAAQ,EAAE,UAAU;QACpB,GAAG,EAAE,EAAE;QACP,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;QACV,YAAY,EAAE,EAAE;QAChB,eAAe,EAAE,oBAAoB;QACrC,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,QAAQ;QACpB,MAAM,EAAE,KAAK;KAChB;IACD,eAAe,EAAE;QACb,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,MAAM;KACrB;CACJ,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"InlineWidget.d.ts","sourceRoot":"","sources":["../../src/components/InlineWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAOzC,UAAU,iBAAiB;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAqBpD,CAAC"}
1
+ {"version":3,"file":"InlineWidget.d.ts","sourceRoot":"","sources":["../../src/components/InlineWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,UAAU,iBAAiB;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAiBpD,CAAC"}
@@ -2,18 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.InlineWidget = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
- const react_1 = require("react");
6
5
  const react_native_1 = require("react-native");
7
6
  const widgetStyles_1 = require("../styles/widgetStyles");
8
7
  const CloseButton_1 = require("./CloseButton");
9
- const react_native_2 = require("react-native");
10
8
  const useHeightAnimation_1 = require("../hooks/useHeightAnimation");
11
9
  const InlineWidget = ({ visible, height, children, onClose, }) => {
12
- const { animatedHeightStyle, updateHeight } = (0, useHeightAnimation_1.useHeightAnimation)(height);
13
- (0, react_1.useEffect)(() => {
14
- updateHeight(height);
15
- }, [height, updateHeight]);
16
- return ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: [widgetStyles_1.styles.inlineWrapper, (0, widgetStyles_1.getWidgetVisibility)(visible)], children: (0, jsx_runtime_1.jsxs)(react_native_2.Animated.View, { style: [widgetStyles_1.styles.inline, animatedHeightStyle, (0, widgetStyles_1.getWidgetVisibility)(visible)], children: [children, (0, jsx_runtime_1.jsx)(CloseButton_1.CloseButton, { visible: visible, onPress: onClose || (() => { }) })] }) }));
10
+ const { animatedHeightStyle } = (0, useHeightAnimation_1.useHeightAnimation)(height);
11
+ return ((0, jsx_runtime_1.jsx)(react_native_1.View, { style: [widgetStyles_1.styles.inlineWrapper, (0, widgetStyles_1.getWidgetVisibility)(visible)], children: (0, jsx_runtime_1.jsxs)(react_native_1.Animated.View, { style: [widgetStyles_1.styles.inline, animatedHeightStyle, (0, widgetStyles_1.getWidgetVisibility)(visible)], children: [children, (0, jsx_runtime_1.jsx)(CloseButton_1.CloseButton, { visible: visible, onPress: onClose })] }) }));
17
12
  };
18
13
  exports.InlineWidget = InlineWidget;
19
14
  //# sourceMappingURL=InlineWidget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InlineWidget.js","sourceRoot":"","sources":["../../src/components/InlineWidget.tsx"],"names":[],"mappings":";;;;AAAA,iCAAyC;AACzC,+CAAoC;AACpC,yDAAqE;AACrE,+CAA4C;AAC5C,+CAAwC;AACxC,oEAAiE;AAS1D,MAAM,YAAY,GAAgC,CAAC,EACtD,OAAO,EACP,MAAM,EACN,QAAQ,EACR,OAAO,GACV,EAAE,EAAE;IACD,MAAM,EAAE,mBAAmB,EAAE,YAAY,EAAE,GAAG,IAAA,uCAAkB,EAAC,MAAM,CAAC,CAAC;IAEzE,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,YAAY,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAE3B,OAAO,CACH,uBAAC,mBAAI,IAAC,KAAK,EAAE,CAAC,qBAAM,CAAC,aAAa,EAAE,IAAA,kCAAmB,EAAC,OAAO,CAAC,CAAC,YAC7D,wBAAC,uBAAQ,CAAC,IAAI,IACV,KAAK,EAAE,CAAC,qBAAM,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAAA,kCAAmB,EAAC,OAAO,CAAC,CAAC,aACxE,QAAQ,EACT,uBAAC,yBAAW,IAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAI,IACtD,GACb,CACV,CAAC;AACN,CAAC,CAAC;AArBW,QAAA,YAAY,gBAqBvB"}
1
+ {"version":3,"file":"InlineWidget.js","sourceRoot":"","sources":["../../src/components/InlineWidget.tsx"],"names":[],"mappings":";;;;AACA,+CAA8C;AAC9C,yDAAqE;AACrE,+CAA4C;AAC5C,oEAAiE;AAS1D,MAAM,YAAY,GAAgC,CAAC,EACtD,OAAO,EACP,MAAM,EACN,QAAQ,EACR,OAAO,GACV,EAAE,EAAE;IACD,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAA,uCAAkB,EAAC,MAAM,CAAC,CAAC;IAE3D,OAAO,CACH,uBAAC,mBAAI,IAAC,KAAK,EAAE,CAAC,qBAAM,CAAC,aAAa,EAAE,IAAA,kCAAmB,EAAC,OAAO,CAAC,CAAC,YAC7D,wBAAC,uBAAQ,CAAC,IAAI,IACV,KAAK,EAAE,CAAC,qBAAM,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAAA,kCAAmB,EAAC,OAAO,CAAC,CAAC,aACxE,QAAQ,EACT,uBAAC,yBAAW,IAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAI,IACvC,GACb,CACV,CAAC;AACN,CAAC,CAAC;AAjBW,QAAA,YAAY,gBAiBvB"}
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React from "react";
2
2
  interface ModalWidgetProps {
3
3
  visible: boolean;
4
4
  height: number;
@@ -1 +1 @@
1
- {"version":3,"file":"ModalWidget.d.ts","sourceRoot":"","sources":["../../src/components/ModalWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAOnD,UAAU,gBAAgB;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA0ClD,CAAC"}
1
+ {"version":3,"file":"ModalWidget.d.ts","sourceRoot":"","sources":["../../src/components/ModalWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,UAAU,gBAAgB;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAalD,CAAC"}
@@ -2,26 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ModalWidget = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
- const react_1 = require("react");
6
5
  const react_native_1 = require("react-native");
7
- const react_native_safe_area_context_1 = require("react-native-safe-area-context");
8
6
  const widgetStyles_1 = require("../styles/widgetStyles");
9
7
  const CloseButton_1 = require("./CloseButton");
10
8
  const useHeightAnimation_1 = require("../hooks/useHeightAnimation");
11
- const ModalWidget = ({ visible, height, children, onClose, }) => {
12
- const { animatedHeightStyle, updateHeight } = (0, useHeightAnimation_1.useHeightAnimation)(height);
13
- (0, react_1.useEffect)(() => {
14
- updateHeight(height);
15
- }, [height, updateHeight]);
16
- return ((0, jsx_runtime_1.jsx)(react_native_safe_area_context_1.SafeAreaView, { children: (0, jsx_runtime_1.jsx)(react_native_1.Modal, { transparent: true, visible: visible, animationType: "slide", hardwareAccelerated: true, children: (0, jsx_runtime_1.jsx)(react_native_1.View, { style: [widgetStyles_1.styles.modalOverlay, (0, widgetStyles_1.getWidgetVisibility)(visible)], children: (0, jsx_runtime_1.jsxs)(react_native_1.Animated.View, { style: [
17
- widgetStyles_1.styles.modalContent,
18
- (0, widgetStyles_1.getWidgetVisibility)(visible),
19
- animatedHeightStyle,
20
- ], children: [children, (0, jsx_runtime_1.jsx)(CloseButton_1.CloseButton, { visible: visible, onPress: () => {
21
- if (onClose) {
22
- onClose();
23
- }
24
- } })] }) }) }) }));
9
+ const ModalWidget = ({ visible, height, children, onClose }) => {
10
+ const { animatedHeightStyle } = (0, useHeightAnimation_1.useHeightAnimation)(height);
11
+ return ((0, jsx_runtime_1.jsx)(react_native_1.Modal, { transparent: true, visible: visible, animationType: "slide", hardwareAccelerated: true, children: (0, jsx_runtime_1.jsx)(react_native_1.View, { style: [widgetStyles_1.styles.modalOverlay, (0, widgetStyles_1.getWidgetVisibility)(visible)], children: (0, jsx_runtime_1.jsxs)(react_native_1.Animated.View, { style: [widgetStyles_1.styles.modalContent, (0, widgetStyles_1.getWidgetVisibility)(visible), animatedHeightStyle], children: [children, (0, jsx_runtime_1.jsx)(CloseButton_1.CloseButton, { visible: visible, onPress: onClose })] }) }) }));
25
12
  };
26
13
  exports.ModalWidget = ModalWidget;
27
14
  //# sourceMappingURL=ModalWidget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModalWidget.js","sourceRoot":"","sources":["../../src/components/ModalWidget.tsx"],"names":[],"mappings":";;;;AAAA,iCAAmD;AACnD,+CAAqD;AACrD,mFAA8D;AAC9D,yDAAqE;AACrE,+CAA4C;AAC5C,oEAAiE;AAS1D,MAAM,WAAW,GAA+B,CAAC,EACpD,OAAO,EACP,MAAM,EACN,QAAQ,EACR,OAAO,GACV,EAAE,EAAE;IACD,MAAM,EAAE,mBAAmB,EAAE,YAAY,EAAE,GAAG,IAAA,uCAAkB,EAAC,MAAM,CAAC,CAAC;IAEzE,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,YAAY,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAE3B,OAAO,CACH,uBAAC,6CAAY,cACT,uBAAC,oBAAK,IACF,WAAW,QACX,OAAO,EAAE,OAAO,EAChB,aAAa,EAAC,OAAO,EACrB,mBAAmB,kBAEnB,uBAAC,mBAAI,IAAC,KAAK,EAAE,CAAC,qBAAM,CAAC,YAAY,EAAE,IAAA,kCAAmB,EAAC,OAAO,CAAC,CAAC,YAC5D,wBAAC,uBAAQ,CAAC,IAAI,IACV,KAAK,EAAE;wBACH,qBAAM,CAAC,YAAY;wBACnB,IAAA,kCAAmB,EAAC,OAAO,CAAC;wBAC5B,mBAAmB;qBACtB,aAEA,QAAQ,EACT,uBAAC,yBAAW,IACR,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,GAAG,EAAE;gCACV,IAAI,OAAO,EAAE,CAAC;oCACV,OAAO,EAAE,CAAC;gCACd,CAAC;4BACL,CAAC,GACH,IACU,GACb,GACH,GACG,CAClB,CAAC;AACN,CAAC,CAAC;AA1CW,QAAA,WAAW,eA0CtB"}
1
+ {"version":3,"file":"ModalWidget.js","sourceRoot":"","sources":["../../src/components/ModalWidget.tsx"],"names":[],"mappings":";;;;AACA,+CAAqD;AACrD,yDAAqE;AACrE,+CAA4C;AAC5C,oEAAiE;AAS1D,MAAM,WAAW,GAA+B,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;IAC9F,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAA,uCAAkB,EAAC,MAAM,CAAC,CAAC;IAE3D,OAAO,CACH,uBAAC,oBAAK,IAAC,WAAW,QAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAC,OAAO,EAAC,mBAAmB,kBAC1E,uBAAC,mBAAI,IAAC,KAAK,EAAE,CAAC,qBAAM,CAAC,YAAY,EAAE,IAAA,kCAAmB,EAAC,OAAO,CAAC,CAAC,YAC5D,wBAAC,uBAAQ,CAAC,IAAI,IAAC,KAAK,EAAE,CAAC,qBAAM,CAAC,YAAY,EAAE,IAAA,kCAAmB,EAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC,aACzF,QAAQ,EACT,uBAAC,yBAAW,IAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAI,IACvC,GACb,GACH,CACX,CAAC;AACN,CAAC,CAAC;AAbW,QAAA,WAAW,eAatB"}
@@ -1 +1 @@
1
- {"version":3,"file":"OverlayWidget.d.ts","sourceRoot":"","sources":["../../src/components/OverlayWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAQnD,UAAU,kBAAkB;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC3B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAsEtD,CAAC"}
1
+ {"version":3,"file":"OverlayWidget.d.ts","sourceRoot":"","sources":["../../src/components/OverlayWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,UAAU,kBAAkB;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC3B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA4DtD,CAAC"}