react-native-unit-components 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/android/src/main/java/com/unitreactnativecomponents/UnitAddToWalletButtonViewManager.kt +27 -0
  2. package/android/src/main/java/com/unitreactnativecomponents/UnitReactNativeComponentsEvent.kt +21 -0
  3. package/android/src/main/java/com/unitreactnativecomponents/UnitReactNativeComponentsPackage.kt +2 -1
  4. package/android/src/main/java/com/unitreactnativecomponents/visapresentation/UNGooglePayView.kt +197 -0
  5. package/android/src/main/res/drawable/ic_launcher_background.xml +170 -0
  6. package/android/src/main/res/drawable/un_add_to_googlepay_button_content.xml +54 -0
  7. package/android/src/main/res/drawable/un_black_add_to_googlepay_button_content.xml +54 -0
  8. package/android/src/main/res/drawable/un_black_googlepay_button_background.xml +6 -0
  9. package/android/src/main/res/drawable/un_black_googlepay_button_background_image.9.png +0 -0
  10. package/android/src/main/res/drawable/un_black_googlepay_button_content.xml +48 -0
  11. package/android/src/main/res/drawable/un_black_googlepay_button_no_shadow_background.xml +6 -0
  12. package/android/src/main/res/drawable/un_black_googlepay_button_no_shadow_background_image.9.png +0 -0
  13. package/android/src/main/res/drawable/un_black_googlepay_button_overlay.xml +12 -0
  14. package/android/src/main/res/drawable/un_border.xml +6 -0
  15. package/android/src/main/res/drawable/un_condensed_googlepay.xml +27 -0
  16. package/android/src/main/res/drawable/un_googlepay_button_background.xml +18 -0
  17. package/android/src/main/res/drawable/un_googlepay_button_background_image.9.png +0 -0
  18. package/android/src/main/res/drawable/un_googlepay_button_background_image_focused.9.png +0 -0
  19. package/android/src/main/res/drawable/un_googlepay_button_background_image_pressed.9.png +0 -0
  20. package/android/src/main/res/drawable/un_googlepay_button_content.xml +48 -0
  21. package/android/src/main/res/drawable/un_googlepay_button_no_shadow_background.xml +18 -0
  22. package/android/src/main/res/drawable/un_googlepay_button_no_shadow_background_image.9.png +0 -0
  23. package/android/src/main/res/drawable/un_googlepay_button_no_shadow_background_image_focused.9.png +0 -0
  24. package/android/src/main/res/drawable/un_googlepay_button_no_shadow_background_image_pressed.9.png +0 -0
  25. package/android/src/main/res/drawable/un_googlepay_button_overlay.xml +11 -0
  26. package/android/src/main/res/drawable/un_ic_launcher_foreground.xml +30 -0
  27. package/android/src/main/res/drawable/un_ic_unit_logo.xml +25 -0
  28. package/android/src/main/res/drawable/un_ic_visa.xml +13 -0
  29. package/android/src/main/res/drawable-bg/un_add_to_googlepay_button_content.xml +54 -0
  30. package/android/src/main/res/drawable-bg/un_black_add_to_googlepay_button_content.xml +54 -0
  31. package/android/src/main/res/drawable-ca/un_add_to_googlepay_button_content.xml +30 -0
  32. package/android/src/main/res/drawable-ca/un_black_add_to_googlepay_button_content.xml +30 -0
  33. package/android/src/main/res/drawable-cs/un_add_to_googlepay_button_content.xml +54 -0
  34. package/android/src/main/res/drawable-cs/un_black_add_to_googlepay_button_content.xml +54 -0
  35. package/android/src/main/res/drawable-da/un_add_to_googlepay_button_content.xml +30 -0
  36. package/android/src/main/res/drawable-da/un_black_add_to_googlepay_button_content.xml +30 -0
  37. package/android/src/main/res/drawable-de/un_add_to_googlepay_button_content.xml +60 -0
  38. package/android/src/main/res/drawable-de/un_black_add_to_googlepay_button_content.xml +60 -0
  39. package/android/src/main/res/drawable-el/un_add_to_googlepay_button_content.xml +67 -0
  40. package/android/src/main/res/drawable-el/un_black_add_to_googlepay_button_content.xml +67 -0
  41. package/android/src/main/res/drawable-es/un_add_to_googlepay_button_content.xml +54 -0
  42. package/android/src/main/res/drawable-es/un_black_add_to_googlepay_button_content.xml +54 -0
  43. package/android/src/main/res/drawable-et/un_add_to_googlepay_button_content.xml +64 -0
  44. package/android/src/main/res/drawable-et/un_black_add_to_googlepay_button_content.xml +64 -0
  45. package/android/src/main/res/drawable-fi/un_add_to_googlepay_button_content.xml +39 -0
  46. package/android/src/main/res/drawable-fi/un_black_add_to_googlepay_button_content.xml +39 -0
  47. package/android/src/main/res/drawable-fr/un_add_to_googlepay_button_content.xml +54 -0
  48. package/android/src/main/res/drawable-fr/un_black_add_to_googlepay_button_content.xml +54 -0
  49. package/android/src/main/res/drawable-hr/un_add_to_googlepay_button_content.xml +54 -0
  50. package/android/src/main/res/drawable-hr/un_black_add_to_googlepay_button_content.xml +54 -0
  51. package/android/src/main/res/drawable-hu/un_add_to_googlepay_button_content.xml +64 -0
  52. package/android/src/main/res/drawable-hu/un_black_add_to_googlepay_button_content.xml +64 -0
  53. package/android/src/main/res/drawable-in/un_add_to_googlepay_button_content.xml +54 -0
  54. package/android/src/main/res/drawable-in/un_black_add_to_googlepay_button_content.xml +54 -0
  55. package/android/src/main/res/drawable-it/un_add_to_googlepay_button_content.xml +54 -0
  56. package/android/src/main/res/drawable-it/un_black_add_to_googlepay_button_content.xml +54 -0
  57. package/android/src/main/res/drawable-iw/un_add_to_googlepay_button_content.xml +41 -0
  58. package/android/src/main/res/drawable-iw/un_black_add_to_googlepay_button_content.xml +41 -0
  59. package/android/src/main/res/drawable-ja/un_add_to_googlepay_button_content.xml +54 -0
  60. package/android/src/main/res/drawable-ja/un_black_add_to_googlepay_button_content.xml +54 -0
  61. package/android/src/main/res/drawable-ko/un_add_to_googlepay_button_content.xml +54 -0
  62. package/android/src/main/res/drawable-ko/un_black_add_to_googlepay_button_content.xml +54 -0
  63. package/android/src/main/res/drawable-lt/un_add_to_googlepay_button_content.xml +70 -0
  64. package/android/src/main/res/drawable-lt/un_black_add_to_googlepay_button_content.xml +70 -0
  65. package/android/src/main/res/drawable-lv/un_add_to_googlepay_button_content.xml +61 -0
  66. package/android/src/main/res/drawable-lv/un_black_add_to_googlepay_button_content.xml +61 -0
  67. package/android/src/main/res/drawable-ms/un_add_to_googlepay_button_content.xml +54 -0
  68. package/android/src/main/res/drawable-ms/un_black_add_to_googlepay_button_content.xml +54 -0
  69. package/android/src/main/res/drawable-nb/un_add_to_googlepay_button_content.xml +30 -0
  70. package/android/src/main/res/drawable-nb/un_black_add_to_googlepay_button_content.xml +30 -0
  71. package/android/src/main/res/drawable-nl/un_add_to_googlepay_button_content.xml +58 -0
  72. package/android/src/main/res/drawable-nl/un_black_add_to_googlepay_button_content.xml +54 -0
  73. package/android/src/main/res/drawable-pl/un_add_to_googlepay_button_content.xml +30 -0
  74. package/android/src/main/res/drawable-pl/un_black_add_to_googlepay_button_content.xml +30 -0
  75. package/android/src/main/res/drawable-pt/un_add_to_googlepay_button_content.xml +54 -0
  76. package/android/src/main/res/drawable-pt/un_black_add_to_googlepay_button_content.xml +54 -0
  77. package/android/src/main/res/drawable-ro/un_add_to_googlepay_button_content.xml +58 -0
  78. package/android/src/main/res/drawable-ro/un_black_add_to_googlepay_button_content.xml +58 -0
  79. package/android/src/main/res/drawable-ru/un_add_to_googlepay_button_content.xml +54 -0
  80. package/android/src/main/res/drawable-ru/un_black_add_to_googlepay_button_content.xml +54 -0
  81. package/android/src/main/res/drawable-sk/un_add_to_googlepay_button_content.xml +54 -0
  82. package/android/src/main/res/drawable-sk/un_black_add_to_googlepay_button_content.xml +54 -0
  83. package/android/src/main/res/drawable-sl/un_add_to_googlepay_button_content.xml +54 -0
  84. package/android/src/main/res/drawable-sl/un_black_add_to_googlepay_button_content.xml +54 -0
  85. package/android/src/main/res/drawable-sr/un_add_to_googlepay_button_content.xml +54 -0
  86. package/android/src/main/res/drawable-sr/un_black_add_to_googlepay_button_content.xml +54 -0
  87. package/android/src/main/res/drawable-sv/un_add_to_googlepay_button_content.xml +30 -0
  88. package/android/src/main/res/drawable-sv/un_black_add_to_googlepay_button_content.xml +30 -0
  89. package/android/src/main/res/drawable-th/un_add_to_googlepay_button_content.xml +54 -0
  90. package/android/src/main/res/drawable-th/un_black_add_to_googlepay_button_content.xml +54 -0
  91. package/android/src/main/res/drawable-tr/un_add_to_googlepay_button_content.xml +54 -0
  92. package/android/src/main/res/drawable-tr/un_black_add_to_googlepay_button_content.xml +54 -0
  93. package/android/src/main/res/drawable-uk/un_add_to_googlepay_button_content.xml +54 -0
  94. package/android/src/main/res/drawable-uk/un_black_add_to_googlepay_button_content.xml +54 -0
  95. package/android/src/main/res/drawable-v21/un_black_googlepay_button_background.xml +7 -0
  96. package/android/src/main/res/drawable-v21/un_black_googlepay_button_background_image.9.png +0 -0
  97. package/android/src/main/res/drawable-v21/un_black_googlepay_button_no_shadow_background.xml +7 -0
  98. package/android/src/main/res/drawable-v21/un_black_googlepay_button_no_shadow_background_image.9.png +0 -0
  99. package/android/src/main/res/drawable-v24/ic_launcher_background.xml +170 -0
  100. package/android/src/main/res/drawable-v24/un_border.xml +6 -0
  101. package/android/src/main/res/drawable-v24/un_ic_launcher_foreground.xml +30 -0
  102. package/android/src/main/res/drawable-v24/un_ic_unit_logo.xml +25 -0
  103. package/android/src/main/res/drawable-v24/un_ic_visa.xml +13 -0
  104. package/android/src/main/res/drawable-zh/un_add_to_googlepay_button_content.xml +54 -0
  105. package/android/src/main/res/drawable-zh/un_black_add_to_googlepay_button_content.xml +54 -0
  106. package/android/src/main/res/layout/un_black_add_to_googlepay_button.xml +32 -0
  107. package/android/src/main/res/layout/un_view_google_push_provisioning.xml +45 -0
  108. package/android/src/main/res/layout/un_white_add_to_googlepay_button.xml +31 -0
  109. package/android/src/main/res/layout/un_white_add_to_googlepay_button_no_shadow.xml +31 -0
  110. package/android/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +5 -0
  111. package/android/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +5 -0
  112. package/android/src/main/res/mipmap-hdpi/ic_launcher.webp +0 -0
  113. package/android/src/main/res/mipmap-hdpi/ic_launcher_round.webp +0 -0
  114. package/android/src/main/res/mipmap-mdpi/ic_launcher.webp +0 -0
  115. package/android/src/main/res/mipmap-mdpi/ic_launcher_round.webp +0 -0
  116. package/android/src/main/res/mipmap-xhdpi/black_googlepay_button_background_image.9.png +0 -0
  117. package/android/src/main/res/mipmap-xhdpi/black_googlepay_button_no_shadow_background_image.9.png +0 -0
  118. package/android/src/main/res/mipmap-xhdpi/googlepay_button_background_image.9.png +0 -0
  119. package/android/src/main/res/mipmap-xhdpi/googlepay_button_background_image_focused.9.png +0 -0
  120. package/android/src/main/res/mipmap-xhdpi/googlepay_button_background_image_pressed.9.png +0 -0
  121. package/android/src/main/res/mipmap-xhdpi/googlepay_button_no_shadow_background_image_focused.9.png +0 -0
  122. package/android/src/main/res/mipmap-xhdpi/googlepay_button_no_shadow_background_image_pressed.9.png +0 -0
  123. package/android/src/main/res/mipmap-xhdpi/ic_launcher.webp +0 -0
  124. package/android/src/main/res/mipmap-xhdpi/ic_launcher_round.webp +0 -0
  125. package/android/src/main/res/mipmap-xhdpi/white_googlepay_button_no_shadow_background_image.9.png +0 -0
  126. package/android/src/main/res/mipmap-xxhdpi/black_googlepay_button_background_image.9.png +0 -0
  127. package/android/src/main/res/mipmap-xxhdpi/black_googlepay_button_no_shadow_background_image.9.png +0 -0
  128. package/android/src/main/res/mipmap-xxhdpi/googlepay_button_background_image.9.png +0 -0
  129. package/android/src/main/res/mipmap-xxhdpi/googlepay_button_background_image_focused.9.png +0 -0
  130. package/android/src/main/res/mipmap-xxhdpi/googlepay_button_background_image_pressed.9.png +0 -0
  131. package/android/src/main/res/mipmap-xxhdpi/googlepay_button_no_shadow_background_image.9.png +0 -0
  132. package/android/src/main/res/mipmap-xxhdpi/googlepay_button_no_shadow_background_image_focused.9.png +0 -0
  133. package/android/src/main/res/mipmap-xxhdpi/googlepay_button_no_shadow_background_image_pressed.9.png +0 -0
  134. package/android/src/main/res/mipmap-xxhdpi/ic_launcher.webp +0 -0
  135. package/android/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp +0 -0
  136. package/android/src/main/res/mipmap-xxxhdpi/black_googlepay_button_background_image.9.png +0 -0
  137. package/android/src/main/res/mipmap-xxxhdpi/black_googlepay_button_no_shadow_background_image.9.png +0 -0
  138. package/android/src/main/res/mipmap-xxxhdpi/googlepay_button_background_image.9.png +0 -0
  139. package/android/src/main/res/mipmap-xxxhdpi/googlepay_button_background_image_focused.9.png +0 -0
  140. package/android/src/main/res/mipmap-xxxhdpi/googlepay_button_background_image_pressed.9.png +0 -0
  141. package/android/src/main/res/mipmap-xxxhdpi/googlepay_button_no_shadow_background_image.9.png +0 -0
  142. package/android/src/main/res/mipmap-xxxhdpi/googlepay_button_no_shadow_background_image_focused.9.png +0 -0
  143. package/android/src/main/res/mipmap-xxxhdpi/googlepay_button_no_shadow_background_image_pressed.9.png +0 -0
  144. package/android/src/main/res/mipmap-xxxhdpi/ic_launcher.webp +0 -0
  145. package/android/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp +0 -0
  146. package/android/src/main/res/values/colors.xml +14 -0
  147. package/android/src/main/res/values/googlepay_strings.xml +7 -0
  148. package/android/src/main/res/values/strings.xml +4 -0
  149. package/android/src/main/res/values/themes.xml +16 -0
  150. package/android/src/main/res/values-night/themes.xml +16 -0
  151. package/ios/UnitReactNativeComponents.xcodeproj/project.pbxproj +8 -8
  152. package/ios/UnitReactNativeComponentsViewManager.m +3 -2
  153. package/ios/UnitReactNativeComponentsViewManager.swift +39 -25
  154. package/lib/commonjs/components/UNActivityComponent/UNActivityComponent.js +1 -1
  155. package/lib/commonjs/components/UNActivityComponent/UNActivityComponent.js.map +1 -1
  156. package/lib/commonjs/components/UNBookPaymentComponent/UNBookPaymentComponent.js +1 -1
  157. package/lib/commonjs/components/UNBookPaymentComponent/UNBookPaymentComponent.js.map +1 -1
  158. package/lib/commonjs/components/UNBottomSheetComponent/UNBottomSheetComponent.js +39 -6
  159. package/lib/commonjs/components/UNBottomSheetComponent/UNBottomSheetComponent.js.map +1 -1
  160. package/lib/commonjs/components/UNCardComponent/UNCardComponent.js +1 -1
  161. package/lib/commonjs/components/UNCardComponent/UNCardComponent.js.map +1 -1
  162. package/lib/commonjs/helpers/BottomSheet/BottomSheet.js +7 -6
  163. package/lib/commonjs/helpers/BottomSheet/BottomSheet.js.map +1 -1
  164. package/lib/commonjs/messages/webMessages/pageMessage.js.map +1 -1
  165. package/lib/commonjs/nativeComponent/UNNativeAddToWalletButton.js +13 -0
  166. package/lib/commonjs/nativeComponent/UNNativeAddToWalletButton.js.map +1 -0
  167. package/lib/commonjs/unitSdkManager/UnitSdkManager.js.map +1 -1
  168. package/lib/commonjs/webComponent/WebComponent.js +14 -2
  169. package/lib/commonjs/webComponent/WebComponent.js.map +1 -1
  170. package/lib/module/components/UNActivityComponent/UNActivityComponent.js +1 -1
  171. package/lib/module/components/UNActivityComponent/UNActivityComponent.js.map +1 -1
  172. package/lib/module/components/UNBookPaymentComponent/UNBookPaymentComponent.js +1 -1
  173. package/lib/module/components/UNBookPaymentComponent/UNBookPaymentComponent.js.map +1 -1
  174. package/lib/module/components/UNBottomSheetComponent/UNBottomSheetComponent.js +37 -5
  175. package/lib/module/components/UNBottomSheetComponent/UNBottomSheetComponent.js.map +1 -1
  176. package/lib/module/components/UNCardComponent/UNCardComponent.js +1 -1
  177. package/lib/module/components/UNCardComponent/UNCardComponent.js.map +1 -1
  178. package/lib/module/helpers/BottomSheet/BottomSheet.js +7 -6
  179. package/lib/module/helpers/BottomSheet/BottomSheet.js.map +1 -1
  180. package/lib/module/messages/webMessages/pageMessage.js.map +1 -1
  181. package/lib/module/nativeComponent/UNNativeAddToWalletButton.js +4 -0
  182. package/lib/module/nativeComponent/UNNativeAddToWalletButton.js.map +1 -0
  183. package/lib/module/unitSdkManager/UnitSdkManager.js.map +1 -1
  184. package/lib/module/webComponent/WebComponent.js +14 -2
  185. package/lib/module/webComponent/WebComponent.js.map +1 -1
  186. package/lib/typescript/components/UNBottomSheetComponent/UNBottomSheetComponent.d.ts +6 -0
  187. package/lib/typescript/helpers/BottomSheet/BottomSheet.d.ts +2 -0
  188. package/lib/typescript/nativeComponent/UNNativeAddToWalletButton.d.ts +6 -0
  189. package/lib/typescript/unitSdkManager/UnitSdkManager.d.ts +1 -1
  190. package/lib/typescript/webComponent/WebComponent.d.ts +3 -2
  191. package/package.json +1 -1
  192. package/src/components/UNActivityComponent/UNActivityComponent.tsx +1 -1
  193. package/src/components/UNBookPaymentComponent/UNBookPaymentComponent.tsx +1 -1
  194. package/src/components/UNBottomSheetComponent/UNBottomSheetComponent.tsx +35 -4
  195. package/src/components/UNCardComponent/UNCardComponent.tsx +1 -1
  196. package/src/helpers/BottomSheet/BottomSheet.tsx +7 -5
  197. package/src/messages/webMessages/pageMessage.ts +1 -1
  198. package/src/nativeComponent/UNNativeAddToWalletButton.tsx +12 -0
  199. package/src/unitSdkManager/UnitSdkManager.ts +1 -1
  200. package/src/webComponent/WebComponent.tsx +16 -4
  201. package/android/src/main/java/com/unitreactnativecomponents/UnitReactNativeComponentsViewManager.kt +0 -19
  202. package/lib/commonjs/nativeComponenet/NativeComponentExample.js +0 -19
  203. package/lib/commonjs/nativeComponenet/NativeComponentExample.js.map +0 -1
  204. package/lib/module/nativeComponenet/NativeComponentExample.js +0 -10
  205. package/lib/module/nativeComponenet/NativeComponentExample.js.map +0 -1
  206. package/lib/typescript/nativeComponenet/NativeComponentExample.d.ts +0 -7
  207. package/src/nativeComponenet/NativeComponentExample.tsx +0 -26
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useRef","useState","WebComponent","WebComponentType","Dimensions","Linking","View","BottomSheet","EventBus","PageMessage","UnitMessage","CardMessage","useListenerToBus","getBottomSheetScript","handleHtmlFullHeight","renderingBottomSheetRequest","resetHtml","getStylesObject","PresentationMode","useAppStateListener","UNBottomSheetComponent","isBottomSheetActive","setIsBottomSheetActive","height","setHeight","renderingRequest","setRenderingRequest","shouldEnableWebViewScroll","setShouldEnableWebViewScroll","waitForLoadingNewComponent","setWaitForLoadingNewComponent","newHeightMessage","setNewHeightMessage","isAppActive","styles","webRef","listenerAction","data","current","setNewHeight","busEventKey","UNIT_REQUEST_RENDERING","action","message","nativePlace","JSON","parse","bottomSheetNewHeight","get","details","onWebMessage","type","PAGE_HEIGHT","setTimeout","CARD_STATUS_CHANGED","Instance","event","card","UNIT_REQUEST_CLOSE_FLOW","UNIT_REQUEST_OPEN_LINK","href","openURL","undefined","container","slot","CoverInjectedHeight"],"sources":["UNBottomSheetComponent.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport type WebView from 'react-native-webview';\nimport { WebComponent, WebComponentType } from '../../webComponent/WebComponent';\nimport { Dimensions, Linking, View } from 'react-native';\nimport BottomSheet from '../../helpers/BottomSheet/BottomSheet';\nimport EventBus from '../../helpers/EventBus';\nimport { HeightEvent, PageMessage } from '../../messages/webMessages/pageMessage';\nimport { RequestOpenLinkEvent, RequestRenderingData, RequestRenderingEvent, UnitMessage } from '../../messages/webMessages/unitMessages';\nimport { CardMessage, CardStatusChangedEvent } from '../../messages/webMessages/cardMessage';\nimport { useListenerToBus } from '../../hooks/listenerToBus';\nimport type { WebViewMessage } from '../../messages/webMessages';\nimport { getBottomSheetScript, handleHtmlFullHeight, renderingBottomSheetRequest, resetHtml } from './UNBottomSheetComponent.utils';\nimport { getStylesObject } from './UNBottomSheetComponent.styles';\nimport { PresentationMode } from '../../scripts/html/bodyHtml';\nimport { useAppStateListener } from '../../hooks/useAppStateListener';\n\nexport const UNBottomSheetComponent = () => {\n const [isBottomSheetActive, setIsBottomSheetActive] = useState(false);\n const [height, setHeight] = useState(0);\n\n const [renderingRequest, setRenderingRequest] = useState<string | null>(null);\n const [shouldEnableWebViewScroll, setShouldEnableWebViewScroll] = useState(false);\n\n const [waitForLoadingNewComponent, setWaitForLoadingNewComponent] = useState(false);\n const [newHeightMessage, setNewHeightMessage] = useState<WebViewMessage | null>(null);\n\n const isAppActive = useAppStateListener();\n\n const styles = getStylesObject();\n\n const webRef = useRef<WebView>(null);\n\n const listenerAction = (data: string) => {\n setRenderingRequest(data);\n setIsBottomSheetActive(true);\n };\n\n useEffect(() => {\n if (!isAppActive) {\n setIsBottomSheetActive(false);\n }\n }, [isAppActive]);\n\n useEffect(() => {\n if (!webRef.current) return;\n if (renderingRequest) {\n renderingBottomSheetRequest(webRef.current, renderingRequest);\n }\n }, [webRef.current, renderingRequest]);\n\n useEffect(() => {\n if (!isBottomSheetActive) {\n webRef.current && resetHtml(webRef.current);\n setHeight(0);\n setRenderingRequest(null);\n }\n }, [isBottomSheetActive]);\n\n useEffect(() => {\n if (!waitForLoadingNewComponent && newHeightMessage) {\n setWaitForLoadingNewComponent(false);\n setNewHeight(newHeightMessage);\n }\n }, [waitForLoadingNewComponent, newHeightMessage]);\n\n useListenerToBus([{ busEventKey: UnitMessage.UNIT_REQUEST_RENDERING, action: listenerAction }]);\n\n const setNewHeight = (message: WebViewMessage) => {\n if (renderingRequest) {\n const nativePlace = (JSON.parse(renderingRequest) as RequestRenderingData).nativePlace;\n if (nativePlace == 'overFullScreen') {\n const bottomSheetNewHeight = handleHtmlFullHeight(webRef.current, Dimensions.get('window').height);\n setHeight(bottomSheetNewHeight);\n setShouldEnableWebViewScroll(true);\n } else {\n setHeight((message.details as HeightEvent).height);\n setShouldEnableWebViewScroll(false);\n }\n }\n };\n\n const onWebMessage = (message: WebViewMessage) => {\n switch (message.type) {\n case PageMessage.PAGE_HEIGHT:\n renderingRequest && setNewHeightMessage(message);\n break;\n case UnitMessage.UNIT_REQUEST_RENDERING:\n // eslint-disable-next-line no-case-declarations\n const { data } = (message.details as RequestRenderingEvent);\n if (data != renderingRequest) {\n setHeight(0);\n setRenderingRequest(data);\n setWaitForLoadingNewComponent(true);\n setTimeout(() => setWaitForLoadingNewComponent(false), 400);\n }\n break;\n case CardMessage.CARD_STATUS_CHANGED:\n EventBus.Instance.event(CardMessage.CARD_STATUS_CHANGED, (message.details as CardStatusChangedEvent).card);\n break;\n case UnitMessage.UNIT_REQUEST_CLOSE_FLOW:\n setIsBottomSheetActive(false);\n break;\n case UnitMessage.UNIT_REQUEST_OPEN_LINK:\n // eslint-disable-next-line no-case-declarations\n const { href } = (message.details as RequestOpenLinkEvent);\n Linking.openURL(href);\n break;\n }\n };\n\n return (\n <>\n <View\n pointerEvents={isBottomSheetActive ? undefined : 'none'}\n style={styles.container}\n >\n <BottomSheet\n isOpen={isBottomSheetActive}\n height={height}\n onClose={() => setIsBottomSheetActive(false)}\n onOpen={() => setIsBottomSheetActive(true)}\n >\n { isAppActive && (\n <WebComponent\n ref={webRef}\n type={WebComponentType.slot}\n presentationMode={PresentationMode.CoverInjectedHeight}\n script={getBottomSheetScript()}\n onMessage={onWebMessage}\n shouldEnableWebViewScroll={shouldEnableWebViewScroll}\n />)}\n </BottomSheet>\n </View>\n </>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useEffect","useRef","useState","WebComponent","WebComponentType","Dimensions","Linking","View","BottomSheet","EventBus","PageMessage","UnitMessage","CardMessage","useListenerToBus","getBottomSheetScript","handleHtmlFullHeight","renderingBottomSheetRequest","resetHtml","getStylesObject","PresentationMode","useAppStateListener","ScrollState","UNBottomSheetComponent","isBottomSheetActive","setIsBottomSheetActive","height","setHeight","renderingRequest","setRenderingRequest","scrollState","setScrollState","onTop","waitForLoadingNewComponent","setWaitForLoadingNewComponent","newHeightMessage","setNewHeightMessage","isAppActive","styles","webRef","listenerAction","data","current","setNewHeight","busEventKey","UNIT_REQUEST_RENDERING","action","message","nativePlace","JSON","parse","bottomSheetNewHeight","get","details","unScrollable","onWebMessage","type","PAGE_HEIGHT","setTimeout","CARD_STATUS_CHANGED","Instance","event","card","UNIT_REQUEST_CLOSE_FLOW","UNIT_REQUEST_OPEN_LINK","href","openURL","onScrollWebView","currY","nativeEvent","contentOffset","y","onlyBottomSheet","onlyWebView","handleWebViewScroll","undefined","container","slot","CoverInjectedHeight"],"sources":["UNBottomSheetComponent.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useRef, useState } from 'react';\nimport type WebView from 'react-native-webview';\nimport { WebComponent, WebComponentType } from '../../webComponent/WebComponent';\nimport { Dimensions, Linking, View } from 'react-native';\nimport BottomSheet from '../../helpers/BottomSheet/BottomSheet';\nimport EventBus from '../../helpers/EventBus';\nimport { HeightEvent, PageMessage } from '../../messages/webMessages/pageMessage';\nimport { RequestOpenLinkEvent, RequestRenderingData, RequestRenderingEvent, UnitMessage } from '../../messages/webMessages/unitMessages';\nimport { CardMessage, CardStatusChangedEvent } from '../../messages/webMessages/cardMessage';\nimport { useListenerToBus } from '../../hooks/listenerToBus';\nimport type { WebViewMessage } from '../../messages/webMessages';\nimport { getBottomSheetScript, handleHtmlFullHeight, renderingBottomSheetRequest, resetHtml } from './UNBottomSheetComponent.utils';\nimport { getStylesObject } from './UNBottomSheetComponent.styles';\nimport { PresentationMode } from '../../scripts/html/bodyHtml';\nimport { useAppStateListener } from '../../hooks/useAppStateListener';\n\nexport enum ScrollState {\n onTop = 'onTop',\n onlyWebView = 'webViewScroll',\n onlyBottomSheet = 'onlyBottomSheet',\n unScrollable = 'unScrollable'\n}\n\nexport const UNBottomSheetComponent = () => {\n const [isBottomSheetActive, setIsBottomSheetActive] = useState(false);\n const [height, setHeight] = useState(0);\n\n const [renderingRequest, setRenderingRequest] = useState<string | null>(null);\n const [scrollState, setScrollState] = useState<ScrollState>(ScrollState.onTop);\n\n const [waitForLoadingNewComponent, setWaitForLoadingNewComponent] = useState(false);\n const [newHeightMessage, setNewHeightMessage] = useState<WebViewMessage | null>(null);\n\n const isAppActive = useAppStateListener();\n\n const styles = getStylesObject();\n\n const webRef = useRef<WebView>(null);\n\n const listenerAction = (data: string) => {\n setRenderingRequest(data);\n setIsBottomSheetActive(true);\n };\n\n useEffect(() => {\n if (!isAppActive) {\n setIsBottomSheetActive(false);\n }\n }, [isAppActive]);\n\n useEffect(() => {\n if (!webRef.current) return;\n if (renderingRequest) {\n renderingBottomSheetRequest(webRef.current, renderingRequest);\n }\n }, [webRef.current, renderingRequest]);\n\n useEffect(() => {\n if (!isBottomSheetActive) {\n webRef.current && resetHtml(webRef.current);\n setHeight(0);\n setRenderingRequest(null);\n setScrollState(ScrollState.onTop);\n }\n }, [isBottomSheetActive]);\n\n useEffect(() => {\n if (!waitForLoadingNewComponent && newHeightMessage) {\n setWaitForLoadingNewComponent(false);\n setNewHeight(newHeightMessage);\n }\n }, [waitForLoadingNewComponent, newHeightMessage]);\n\n useListenerToBus([{ busEventKey: UnitMessage.UNIT_REQUEST_RENDERING, action: listenerAction }]);\n\n const setNewHeight = (message: WebViewMessage) => {\n if (renderingRequest) {\n const nativePlace = (JSON.parse(renderingRequest) as RequestRenderingData).nativePlace;\n if (nativePlace == 'overFullScreen') {\n const bottomSheetNewHeight = handleHtmlFullHeight(webRef.current, Dimensions.get('window').height);\n setHeight(bottomSheetNewHeight);\n setScrollState(ScrollState.onTop);\n } else {\n setHeight((message.details as HeightEvent).height);\n setScrollState(ScrollState.unScrollable);\n }\n }\n };\n\n const onWebMessage = (message: WebViewMessage) => {\n switch (message.type) {\n case PageMessage.PAGE_HEIGHT:\n renderingRequest && setNewHeightMessage(message);\n break;\n case UnitMessage.UNIT_REQUEST_RENDERING:\n // eslint-disable-next-line no-case-declarations\n const { data } = (message.details as RequestRenderingEvent);\n if (data != renderingRequest) {\n setHeight(0);\n setRenderingRequest(data);\n setWaitForLoadingNewComponent(true);\n setTimeout(() => setWaitForLoadingNewComponent(false), 400);\n }\n break;\n case CardMessage.CARD_STATUS_CHANGED:\n EventBus.Instance.event(CardMessage.CARD_STATUS_CHANGED, (message.details as CardStatusChangedEvent).card);\n break;\n case UnitMessage.UNIT_REQUEST_CLOSE_FLOW:\n setIsBottomSheetActive(false);\n break;\n case UnitMessage.UNIT_REQUEST_OPEN_LINK:\n // eslint-disable-next-line no-case-declarations\n const { href } = (message.details as RequestOpenLinkEvent);\n Linking.openURL(href);\n break;\n }\n };\n\n const onScrollWebView = (event: any) => {\n if (scrollState === ScrollState.unScrollable) return;\n\n const currY = event.nativeEvent.contentOffset.y;\n\n if (ScrollState.onTop && currY < 5) {\n setScrollState(ScrollState.onlyBottomSheet);\n }\n\n if ( scrollState !== ScrollState.onlyWebView && scrollState === ScrollState.onTop && currY > 5) {\n setScrollState(ScrollState.onlyWebView);\n }\n };\n\n const handleWebViewScroll = () => {\n if (scrollState === ScrollState.unScrollable) return;\n setScrollState(ScrollState.onlyWebView);\n };\n\n return (\n <>\n <View\n pointerEvents={isBottomSheetActive ? undefined : 'none'}\n style={styles.container}\n >\n <BottomSheet\n isOpen={isBottomSheetActive}\n height={height}\n onClose={() => setIsBottomSheetActive(false)}\n onOpen={() => setIsBottomSheetActive(true)}\n handleWebViewScroll={() => handleWebViewScroll()}\n shouldEnableBottomSheetScroll={scrollState !== ScrollState.onlyWebView}\n >\n { isAppActive && (\n <WebComponent\n ref={webRef}\n type={WebComponentType.slot}\n presentationMode={PresentationMode.CoverInjectedHeight}\n script={getBottomSheetScript()}\n onMessage={onWebMessage}\n isScrollable={scrollState === ScrollState.onlyWebView || scrollState === ScrollState.onTop}\n handleScroll={onScrollWebView}\n />)}\n </BottomSheet>\n </View>\n </>\n );\n};\n"],"mappings":"AAAA;AACA,OAAOA,KAAP,IAAgBC,SAAhB,EAA2BC,MAA3B,EAAmCC,QAAnC,QAAmD,OAAnD;AAEA,SAASC,YAAT,EAAuBC,gBAAvB,QAA+C,iCAA/C;AACA,SAASC,UAAT,EAAqBC,OAArB,EAA8BC,IAA9B,QAA0C,cAA1C;AACA,OAAOC,WAAP,MAAwB,uCAAxB;AACA,OAAOC,QAAP,MAAqB,wBAArB;AACA,SAAsBC,WAAtB,QAAyC,wCAAzC;AACA,SAA4EC,WAA5E,QAA+F,yCAA/F;AACA,SAASC,WAAT,QAAoD,wCAApD;AACA,SAASC,gBAAT,QAAiC,2BAAjC;AAEA,SAASC,oBAAT,EAA+BC,oBAA/B,EAAqDC,2BAArD,EAAkFC,SAAlF,QAAmG,gCAAnG;AACA,SAASC,eAAT,QAAgC,iCAAhC;AACA,SAASC,gBAAT,QAAiC,6BAAjC;AACA,SAASC,mBAAT,QAAoC,iCAApC;AAEA,WAAYC,WAAZ;;WAAYA,W;EAAAA,W;EAAAA,W;EAAAA,W;EAAAA,W;GAAAA,W,KAAAA,W;;AAOZ,OAAO,MAAMC,sBAAsB,GAAG,MAAM;EAC1C,MAAM,CAACC,mBAAD,EAAsBC,sBAAtB,IAAgDtB,QAAQ,CAAC,KAAD,CAA9D;EACA,MAAM,CAACuB,MAAD,EAASC,SAAT,IAAsBxB,QAAQ,CAAC,CAAD,CAApC;EAEA,MAAM,CAACyB,gBAAD,EAAmBC,mBAAnB,IAA0C1B,QAAQ,CAAgB,IAAhB,CAAxD;EACA,MAAM,CAAC2B,WAAD,EAAcC,cAAd,IAAgC5B,QAAQ,CAAcmB,WAAW,CAACU,KAA1B,CAA9C;EAEA,MAAM,CAACC,0BAAD,EAA6BC,6BAA7B,IAA8D/B,QAAQ,CAAC,KAAD,CAA5E;EACA,MAAM,CAACgC,gBAAD,EAAmBC,mBAAnB,IAA0CjC,QAAQ,CAAwB,IAAxB,CAAxD;EAEA,MAAMkC,WAAW,GAAGhB,mBAAmB,EAAvC;EAEA,MAAMiB,MAAM,GAAGnB,eAAe,EAA9B;EAEA,MAAMoB,MAAM,GAAGrC,MAAM,CAAU,IAAV,CAArB;;EAEA,MAAMsC,cAAc,GAAIC,IAAD,IAAkB;IACvCZ,mBAAmB,CAACY,IAAD,CAAnB;IACAhB,sBAAsB,CAAC,IAAD,CAAtB;EACD,CAHD;;EAKAxB,SAAS,CAAC,MAAM;IACd,IAAI,CAACoC,WAAL,EAAkB;MAChBZ,sBAAsB,CAAC,KAAD,CAAtB;IACD;EACF,CAJQ,EAIN,CAACY,WAAD,CAJM,CAAT;EAMApC,SAAS,CAAC,MAAM;IACd,IAAI,CAACsC,MAAM,CAACG,OAAZ,EAAqB;;IACrB,IAAId,gBAAJ,EAAsB;MACpBX,2BAA2B,CAACsB,MAAM,CAACG,OAAR,EAAiBd,gBAAjB,CAA3B;IACD;EACF,CALQ,EAKN,CAACW,MAAM,CAACG,OAAR,EAAiBd,gBAAjB,CALM,CAAT;EAOA3B,SAAS,CAAC,MAAM;IACd,IAAI,CAACuB,mBAAL,EAA0B;MACxBe,MAAM,CAACG,OAAP,IAAkBxB,SAAS,CAACqB,MAAM,CAACG,OAAR,CAA3B;MACAf,SAAS,CAAC,CAAD,CAAT;MACAE,mBAAmB,CAAC,IAAD,CAAnB;MACAE,cAAc,CAACT,WAAW,CAACU,KAAb,CAAd;IACD;EACF,CAPQ,EAON,CAACR,mBAAD,CAPM,CAAT;EASAvB,SAAS,CAAC,MAAM;IACd,IAAI,CAACgC,0BAAD,IAA+BE,gBAAnC,EAAqD;MACnDD,6BAA6B,CAAC,KAAD,CAA7B;MACAS,YAAY,CAACR,gBAAD,CAAZ;IACD;EACF,CALQ,EAKN,CAACF,0BAAD,EAA6BE,gBAA7B,CALM,CAAT;EAOArB,gBAAgB,CAAC,CAAC;IAAE8B,WAAW,EAAEhC,WAAW,CAACiC,sBAA3B;IAAmDC,MAAM,EAAEN;EAA3D,CAAD,CAAD,CAAhB;;EAEA,MAAMG,YAAY,GAAII,OAAD,IAA6B;IAChD,IAAInB,gBAAJ,EAAsB;MACpB,MAAMoB,WAAW,GAAIC,IAAI,CAACC,KAAL,CAAWtB,gBAAX,CAAD,CAAuDoB,WAA3E;;MACA,IAAIA,WAAW,IAAI,gBAAnB,EAAqC;QACnC,MAAMG,oBAAoB,GAAGnC,oBAAoB,CAACuB,MAAM,CAACG,OAAR,EAAiBpC,UAAU,CAAC8C,GAAX,CAAe,QAAf,EAAyB1B,MAA1C,CAAjD;QACAC,SAAS,CAACwB,oBAAD,CAAT;QACApB,cAAc,CAACT,WAAW,CAACU,KAAb,CAAd;MACD,CAJD,MAIO;QACLL,SAAS,CAAEoB,OAAO,CAACM,OAAT,CAAiC3B,MAAlC,CAAT;QACAK,cAAc,CAACT,WAAW,CAACgC,YAAb,CAAd;MACD;IACF;EACF,CAZD;;EAcA,MAAMC,YAAY,GAAIR,OAAD,IAA6B;IAChD,QAAQA,OAAO,CAACS,IAAhB;MACE,KAAK7C,WAAW,CAAC8C,WAAjB;QACE7B,gBAAgB,IAAIQ,mBAAmB,CAACW,OAAD,CAAvC;QACA;;MACF,KAAKnC,WAAW,CAACiC,sBAAjB;QACE;QACA,MAAM;UAAEJ;QAAF,IAAYM,OAAO,CAACM,OAA1B;;QACA,IAAIZ,IAAI,IAAIb,gBAAZ,EAA8B;UAC5BD,SAAS,CAAC,CAAD,CAAT;UACAE,mBAAmB,CAACY,IAAD,CAAnB;UACAP,6BAA6B,CAAC,IAAD,CAA7B;UACAwB,UAAU,CAAC,MAAMxB,6BAA6B,CAAC,KAAD,CAApC,EAA6C,GAA7C,CAAV;QACD;;QACD;;MACF,KAAKrB,WAAW,CAAC8C,mBAAjB;QACEjD,QAAQ,CAACkD,QAAT,CAAkBC,KAAlB,CAAwBhD,WAAW,CAAC8C,mBAApC,EAA0DZ,OAAO,CAACM,OAAT,CAA4CS,IAArG;QACA;;MACF,KAAKlD,WAAW,CAACmD,uBAAjB;QACEtC,sBAAsB,CAAC,KAAD,CAAtB;QACA;;MACF,KAAKb,WAAW,CAACoD,sBAAjB;QACE;QACA,MAAM;UAAEC;QAAF,IAAYlB,OAAO,CAACM,OAA1B;QACA9C,OAAO,CAAC2D,OAAR,CAAgBD,IAAhB;QACA;IAxBJ;EA0BD,CA3BD;;EA6BA,MAAME,eAAe,GAAIN,KAAD,IAAgB;IACtC,IAAI/B,WAAW,KAAKR,WAAW,CAACgC,YAAhC,EAA8C;IAE9C,MAAMc,KAAK,GAAGP,KAAK,CAACQ,WAAN,CAAkBC,aAAlB,CAAgCC,CAA9C;;IAEA,IAAIjD,WAAW,CAACU,KAAZ,IAAqBoC,KAAK,GAAG,CAAjC,EAAoC;MAClCrC,cAAc,CAACT,WAAW,CAACkD,eAAb,CAAd;IACD;;IAED,IAAK1C,WAAW,KAAKR,WAAW,CAACmD,WAA5B,IAA2C3C,WAAW,KAAKR,WAAW,CAACU,KAAvE,IAAgFoC,KAAK,GAAG,CAA7F,EAAgG;MAC9FrC,cAAc,CAACT,WAAW,CAACmD,WAAb,CAAd;IACD;EACF,CAZD;;EAcA,MAAMC,mBAAmB,GAAG,MAAM;IAChC,IAAI5C,WAAW,KAAKR,WAAW,CAACgC,YAAhC,EAA8C;IAC9CvB,cAAc,CAACT,WAAW,CAACmD,WAAb,CAAd;EACD,CAHD;;EAKA,oBACE,uDACE,oBAAC,IAAD;IACE,aAAa,EAAEjD,mBAAmB,GAAGmD,SAAH,GAAe,MADnD;IAEE,KAAK,EAAErC,MAAM,CAACsC;EAFhB,gBAIE,oBAAC,WAAD;IACE,MAAM,EAAEpD,mBADV;IAEE,MAAM,EAAEE,MAFV;IAGE,OAAO,EAAE,MAAMD,sBAAsB,CAAC,KAAD,CAHvC;IAIE,MAAM,EAAE,MAAMA,sBAAsB,CAAC,IAAD,CAJtC;IAKE,mBAAmB,EAAE,MAAOiD,mBAAmB,EALjD;IAME,6BAA6B,EAAE5C,WAAW,KAAKR,WAAW,CAACmD;EAN7D,GAQIpC,WAAW,iBACX,oBAAC,YAAD;IACE,GAAG,EAAEE,MADP;IAEE,IAAI,EAAElC,gBAAgB,CAACwE,IAFzB;IAGE,gBAAgB,EAAEzD,gBAAgB,CAAC0D,mBAHrC;IAIE,MAAM,EAAE/D,oBAAoB,EAJ9B;IAKE,SAAS,EAAEwC,YALb;IAME,YAAY,EAAEzB,WAAW,KAAKR,WAAW,CAACmD,WAA5B,IAA2C3C,WAAW,KAAKR,WAAW,CAACU,KANvF;IAOE,YAAY,EAAEmC;EAPhB,EATJ,CAJF,CADF,CADF;AA4BD,CA9IM"}
@@ -59,7 +59,7 @@ export const UNCardComponent = props => {
59
59
  script: getCardScript(),
60
60
  onMessage: message => handleMessage(message),
61
61
  width: windowWidth,
62
- shouldEnableWebViewScroll: false
62
+ isScrollable: false
63
63
  }));
64
64
  };
65
65
  //# sourceMappingURL=UNCardComponent.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useRef","useState","Dimensions","View","PageMessage","UnitMessage","EventBus","WebComponent","WebComponentType","useListenerToBus","getCardParams","getCardScript","injectRefreshEventIfNeeded","PresentationMode","CardMessage","UNCardComponent","props","height","setHeight","requestRefreshEvent","setRequestRefreshEvent","windowWidth","get","width","webRef","cardStatusChanged","card","onStatusChanged","requestRefresh","data","busEventKey","CARD_STATUS_CHANGED","action","UNIT_REQUEST_REFRESH","current","cardId","handleMessage","message","type","UNIT_REQUEST_RENDERING","Instance","event","details","PAGE_HEIGHT","Default"],"sources":["UNCardComponent.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Dimensions, View } from 'react-native';\nimport type WebView from 'react-native-webview';\nimport { HeightEvent, PageMessage } from '../../messages/webMessages/pageMessage';\nimport { RequestRefreshEvent, RequestRenderingEvent, UnitMessage } from '../../messages/webMessages/unitMessages';\nimport EventBus from '../../helpers/EventBus';\nimport { WebComponent, WebComponentType } from '../../webComponent/WebComponent';\nimport { useListenerToBus } from '../../hooks/listenerToBus';\nimport type { WebViewMessage } from '../../messages/webMessages';\nimport { getCardParams, getCardScript, injectRefreshEventIfNeeded } from './UNCardComponent.utils';\nimport { PresentationMode } from '../../scripts/html/bodyHtml';\nimport type { UNCardData } from '../../sharedTypes';\nimport { CardMessage } from '../../messages/webMessages/cardMessage';\n\nexport interface UNCardComponentProps {\n cardId: string;\n customerToken: string;\n theme?: string;\n onStatusChanged?: (card: UNCardData) => void;\n}\n\nexport const UNCardComponent = (props: UNCardComponentProps) => {\n const [height, setHeight] = useState(0);\n const [requestRefreshEvent, setRequestRefreshEvent] = useState<RequestRefreshEvent | null>(null);\n const windowWidth = Dimensions.get('window').width;\n\n const webRef = useRef<WebView>(null);\n\n const cardStatusChanged = (card: UNCardData) => {\n if (props.onStatusChanged) {\n props.onStatusChanged(card);\n }\n };\n\n const requestRefresh = (data: RequestRefreshEvent) => {\n setRequestRefreshEvent(data);\n };\n\n useListenerToBus([\n { busEventKey: CardMessage.CARD_STATUS_CHANGED, action: cardStatusChanged },\n { busEventKey: UnitMessage.UNIT_REQUEST_REFRESH, action: requestRefresh },\n ]);\n\n useEffect(() => {\n injectRefreshEventIfNeeded(webRef.current, requestRefreshEvent, props.cardId);\n }, [requestRefreshEvent]);\n\n const handleMessage = (message: WebViewMessage) => {\n switch (message.type) {\n case UnitMessage.UNIT_REQUEST_RENDERING:\n EventBus.Instance.event(UnitMessage.UNIT_REQUEST_RENDERING, (message.details as RequestRenderingEvent).data);\n break;\n case PageMessage.PAGE_HEIGHT:\n setHeight((message.details as HeightEvent).height);\n break;\n }\n };\n\n return (\n <View style={{ height }}>\n <WebComponent\n ref={webRef}\n type={WebComponentType.card}\n presentationMode={PresentationMode.Default}\n params={getCardParams(props)}\n script={getCardScript()}\n onMessage={message => handleMessage(message)}\n width={windowWidth}\n shouldEnableWebViewScroll={false}\n />\n </View>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,SAAhB,EAA2BC,MAA3B,EAAmCC,QAAnC,QAAmD,OAAnD;AACA,SAASC,UAAT,EAAqBC,IAArB,QAAiC,cAAjC;AAEA,SAAsBC,WAAtB,QAAyC,wCAAzC;AACA,SAAqDC,WAArD,QAAwE,yCAAxE;AACA,OAAOC,QAAP,MAAqB,wBAArB;AACA,SAASC,YAAT,EAAuBC,gBAAvB,QAA+C,iCAA/C;AACA,SAASC,gBAAT,QAAiC,2BAAjC;AAEA,SAASC,aAAT,EAAwBC,aAAxB,EAAuCC,0BAAvC,QAAyE,yBAAzE;AACA,SAASC,gBAAT,QAAiC,6BAAjC;AAEA,SAASC,WAAT,QAA4B,wCAA5B;AASA,OAAO,MAAMC,eAAe,GAAIC,KAAD,IAAiC;EAC9D,MAAM,CAACC,MAAD,EAASC,SAAT,IAAsBjB,QAAQ,CAAC,CAAD,CAApC;EACA,MAAM,CAACkB,mBAAD,EAAsBC,sBAAtB,IAAgDnB,QAAQ,CAA6B,IAA7B,CAA9D;EACA,MAAMoB,WAAW,GAAGnB,UAAU,CAACoB,GAAX,CAAe,QAAf,EAAyBC,KAA7C;EAEA,MAAMC,MAAM,GAAGxB,MAAM,CAAU,IAAV,CAArB;;EAEA,MAAMyB,iBAAiB,GAAIC,IAAD,IAAsB;IAC9C,IAAIV,KAAK,CAACW,eAAV,EAA2B;MACzBX,KAAK,CAACW,eAAN,CAAsBD,IAAtB;IACD;EACF,CAJD;;EAMA,MAAME,cAAc,GAAIC,IAAD,IAA+B;IACpDT,sBAAsB,CAACS,IAAD,CAAtB;EACD,CAFD;;EAIApB,gBAAgB,CAAC,CACf;IAAEqB,WAAW,EAAEhB,WAAW,CAACiB,mBAA3B;IAAgDC,MAAM,EAAEP;EAAxD,CADe,EAEf;IAAEK,WAAW,EAAEzB,WAAW,CAAC4B,oBAA3B;IAAiDD,MAAM,EAAEJ;EAAzD,CAFe,CAAD,CAAhB;EAKA7B,SAAS,CAAC,MAAM;IACda,0BAA0B,CAACY,MAAM,CAACU,OAAR,EAAiBf,mBAAjB,EAAsCH,KAAK,CAACmB,MAA5C,CAA1B;EACD,CAFQ,EAEN,CAAChB,mBAAD,CAFM,CAAT;;EAIA,MAAMiB,aAAa,GAAIC,OAAD,IAA6B;IACjD,QAAQA,OAAO,CAACC,IAAhB;MACE,KAAKjC,WAAW,CAACkC,sBAAjB;QACEjC,QAAQ,CAACkC,QAAT,CAAkBC,KAAlB,CAAwBpC,WAAW,CAACkC,sBAApC,EAA6DF,OAAO,CAACK,OAAT,CAA2Cb,IAAvG;QACA;;MACF,KAAKzB,WAAW,CAACuC,WAAjB;QACEzB,SAAS,CAAEmB,OAAO,CAACK,OAAT,CAAiCzB,MAAlC,CAAT;QACA;IANJ;EAQD,CATD;;EAWA,oBACE,oBAAC,IAAD;IAAM,KAAK,EAAE;MAAEA;IAAF;EAAb,gBACE,oBAAC,YAAD;IACE,GAAG,EAAEO,MADP;IAEE,IAAI,EAAEhB,gBAAgB,CAACkB,IAFzB;IAGE,gBAAgB,EAAEb,gBAAgB,CAAC+B,OAHrC;IAIE,MAAM,EAAElC,aAAa,CAACM,KAAD,CAJvB;IAKE,MAAM,EAAEL,aAAa,EALvB;IAME,SAAS,EAAE0B,OAAO,IAAID,aAAa,CAACC,OAAD,CANrC;IAOE,KAAK,EAAEhB,WAPT;IAQE,yBAAyB,EAAE;EAR7B,EADF,CADF;AAcD,CAnDM"}
1
+ {"version":3,"names":["React","useEffect","useRef","useState","Dimensions","View","PageMessage","UnitMessage","EventBus","WebComponent","WebComponentType","useListenerToBus","getCardParams","getCardScript","injectRefreshEventIfNeeded","PresentationMode","CardMessage","UNCardComponent","props","height","setHeight","requestRefreshEvent","setRequestRefreshEvent","windowWidth","get","width","webRef","cardStatusChanged","card","onStatusChanged","requestRefresh","data","busEventKey","CARD_STATUS_CHANGED","action","UNIT_REQUEST_REFRESH","current","cardId","handleMessage","message","type","UNIT_REQUEST_RENDERING","Instance","event","details","PAGE_HEIGHT","Default"],"sources":["UNCardComponent.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Dimensions, View } from 'react-native';\nimport type WebView from 'react-native-webview';\nimport { HeightEvent, PageMessage } from '../../messages/webMessages/pageMessage';\nimport { RequestRefreshEvent, RequestRenderingEvent, UnitMessage } from '../../messages/webMessages/unitMessages';\nimport EventBus from '../../helpers/EventBus';\nimport { WebComponent, WebComponentType } from '../../webComponent/WebComponent';\nimport { useListenerToBus } from '../../hooks/listenerToBus';\nimport type { WebViewMessage } from '../../messages/webMessages';\nimport { getCardParams, getCardScript, injectRefreshEventIfNeeded } from './UNCardComponent.utils';\nimport { PresentationMode } from '../../scripts/html/bodyHtml';\nimport type { UNCardData } from '../../sharedTypes';\nimport { CardMessage } from '../../messages/webMessages/cardMessage';\n\nexport interface UNCardComponentProps {\n cardId: string;\n customerToken: string;\n theme?: string;\n onStatusChanged?: (card: UNCardData) => void;\n}\n\nexport const UNCardComponent = (props: UNCardComponentProps) => {\n const [height, setHeight] = useState(0);\n const [requestRefreshEvent, setRequestRefreshEvent] = useState<RequestRefreshEvent | null>(null);\n const windowWidth = Dimensions.get('window').width;\n\n const webRef = useRef<WebView>(null);\n\n const cardStatusChanged = (card: UNCardData) => {\n if (props.onStatusChanged) {\n props.onStatusChanged(card);\n }\n };\n\n const requestRefresh = (data: RequestRefreshEvent) => {\n setRequestRefreshEvent(data);\n };\n\n useListenerToBus([\n { busEventKey: CardMessage.CARD_STATUS_CHANGED, action: cardStatusChanged },\n { busEventKey: UnitMessage.UNIT_REQUEST_REFRESH, action: requestRefresh },\n ]);\n\n useEffect(() => {\n injectRefreshEventIfNeeded(webRef.current, requestRefreshEvent, props.cardId);\n }, [requestRefreshEvent]);\n\n const handleMessage = (message: WebViewMessage) => {\n switch (message.type) {\n case UnitMessage.UNIT_REQUEST_RENDERING:\n EventBus.Instance.event(UnitMessage.UNIT_REQUEST_RENDERING, (message.details as RequestRenderingEvent).data);\n break;\n case PageMessage.PAGE_HEIGHT:\n setHeight((message.details as HeightEvent).height);\n break;\n }\n };\n\n return (\n <View style={{ height }}>\n <WebComponent\n ref={webRef}\n type={WebComponentType.card}\n presentationMode={PresentationMode.Default}\n params={getCardParams(props)}\n script={getCardScript()}\n onMessage={message => handleMessage(message)}\n width={windowWidth}\n isScrollable={false}\n />\n </View>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,SAAhB,EAA2BC,MAA3B,EAAmCC,QAAnC,QAAmD,OAAnD;AACA,SAASC,UAAT,EAAqBC,IAArB,QAAiC,cAAjC;AAEA,SAAsBC,WAAtB,QAAyC,wCAAzC;AACA,SAAqDC,WAArD,QAAwE,yCAAxE;AACA,OAAOC,QAAP,MAAqB,wBAArB;AACA,SAASC,YAAT,EAAuBC,gBAAvB,QAA+C,iCAA/C;AACA,SAASC,gBAAT,QAAiC,2BAAjC;AAEA,SAASC,aAAT,EAAwBC,aAAxB,EAAuCC,0BAAvC,QAAyE,yBAAzE;AACA,SAASC,gBAAT,QAAiC,6BAAjC;AAEA,SAASC,WAAT,QAA4B,wCAA5B;AASA,OAAO,MAAMC,eAAe,GAAIC,KAAD,IAAiC;EAC9D,MAAM,CAACC,MAAD,EAASC,SAAT,IAAsBjB,QAAQ,CAAC,CAAD,CAApC;EACA,MAAM,CAACkB,mBAAD,EAAsBC,sBAAtB,IAAgDnB,QAAQ,CAA6B,IAA7B,CAA9D;EACA,MAAMoB,WAAW,GAAGnB,UAAU,CAACoB,GAAX,CAAe,QAAf,EAAyBC,KAA7C;EAEA,MAAMC,MAAM,GAAGxB,MAAM,CAAU,IAAV,CAArB;;EAEA,MAAMyB,iBAAiB,GAAIC,IAAD,IAAsB;IAC9C,IAAIV,KAAK,CAACW,eAAV,EAA2B;MACzBX,KAAK,CAACW,eAAN,CAAsBD,IAAtB;IACD;EACF,CAJD;;EAMA,MAAME,cAAc,GAAIC,IAAD,IAA+B;IACpDT,sBAAsB,CAACS,IAAD,CAAtB;EACD,CAFD;;EAIApB,gBAAgB,CAAC,CACf;IAAEqB,WAAW,EAAEhB,WAAW,CAACiB,mBAA3B;IAAgDC,MAAM,EAAEP;EAAxD,CADe,EAEf;IAAEK,WAAW,EAAEzB,WAAW,CAAC4B,oBAA3B;IAAiDD,MAAM,EAAEJ;EAAzD,CAFe,CAAD,CAAhB;EAKA7B,SAAS,CAAC,MAAM;IACda,0BAA0B,CAACY,MAAM,CAACU,OAAR,EAAiBf,mBAAjB,EAAsCH,KAAK,CAACmB,MAA5C,CAA1B;EACD,CAFQ,EAEN,CAAChB,mBAAD,CAFM,CAAT;;EAIA,MAAMiB,aAAa,GAAIC,OAAD,IAA6B;IACjD,QAAQA,OAAO,CAACC,IAAhB;MACE,KAAKjC,WAAW,CAACkC,sBAAjB;QACEjC,QAAQ,CAACkC,QAAT,CAAkBC,KAAlB,CAAwBpC,WAAW,CAACkC,sBAApC,EAA6DF,OAAO,CAACK,OAAT,CAA2Cb,IAAvG;QACA;;MACF,KAAKzB,WAAW,CAACuC,WAAjB;QACEzB,SAAS,CAAEmB,OAAO,CAACK,OAAT,CAAiCzB,MAAlC,CAAT;QACA;IANJ;EAQD,CATD;;EAWA,oBACE,oBAAC,IAAD;IAAM,KAAK,EAAE;MAAEA;IAAF;EAAb,gBACE,oBAAC,YAAD;IACE,GAAG,EAAEO,MADP;IAEE,IAAI,EAAEhB,gBAAgB,CAACkB,IAFzB;IAGE,gBAAgB,EAAEb,gBAAgB,CAAC+B,OAHrC;IAIE,MAAM,EAAElC,aAAa,CAACM,KAAD,CAJvB;IAKE,MAAM,EAAEL,aAAa,EALvB;IAME,SAAS,EAAE0B,OAAO,IAAID,aAAa,CAACC,OAAD,CANrC;IAOE,KAAK,EAAEhB,WAPT;IAQE,YAAY,EAAE;EARhB,EADF,CADF;AAcD,CAnDM"}
@@ -17,13 +17,15 @@ const BottomSheet = props => {
17
17
  const [dy, setDy] = useState(0);
18
18
 
19
19
  const _parentPanResponder = PanResponder.create({
20
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
21
- onMoveShouldSetPanResponderCapture: _ => {
22
- //gestureState) => {
23
- return false; // return Math.abs(gestureState.dy) > 10
20
+ onMoveShouldSetPanResponderCapture: (_, gestureState) => {
21
+ return props.shouldEnableBottomSheetScroll && Math.abs(gestureState.dy) > 10;
24
22
  },
25
23
 
26
24
  onPanResponderMove(_, gestureState) {
25
+ if (props.shouldEnableBottomSheetScroll && gestureState.dy < 5) {
26
+ props.handleWebViewScroll();
27
+ }
28
+
27
29
  if (currentHeight + gestureState.dy < 0) return;
28
30
  if (!props.expandToMaxHeightEnabled && contentHeight && currentHeight + gestureState.dy < sliderMaxHeight - contentHeight) return;
29
31
  panelHeightValue.setValue(currentHeight + gestureState.dy);
@@ -171,8 +173,7 @@ const BottomSheet = props => {
171
173
  }, /*#__PURE__*/React.createElement(Image, {
172
174
  source: CloseIcon
173
175
  })), /*#__PURE__*/React.createElement(View, {
174
- onLayout: _setSize,
175
- style: [styles.innerContent]
176
+ onLayout: _setSize
176
177
  }, /*#__PURE__*/React.createElement(KeyboardAvoidingView, {
177
178
  behavior: "padding",
178
179
  style: {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useRef","useState","Animated","BackHandler","Dimensions","Easing","Image","KeyboardAvoidingView","PanResponder","TouchableOpacity","View","PropTypes","CloseIcon","BOTTOM_SHEET_MAX_PRECANTAGE_SIZE","getStylesObject","BottomSheet","props","panelHeightValue","Value","sliderMaxHeight","current","fadeAnim","styles","isPanelOpened","setIsPanelOpened","isOpen","contentHeight","setContentHeight","undefined","currentHeight","setCurrentHeight","dy","setDy","_parentPanResponder","create","onMoveShouldSetPanResponderCapture","_","onPanResponderMove","gestureState","expandToMaxHeightEnabled","setValue","onPanResponderRelease","collapse","setToContentHeight","expand","fadeIn","_dismiss","addEventListener","_onBackPress","id","addListener","e","value","removeEventListener","removeListener","timing","toValue","duration","useNativeDriver","start","fadeOut","onClose","animationDuration","easing","quad","_setSize","newContentHeight","nativeEvent","layout","height","children","outsideContainer","animation","panHandlers","container","transform","translateY","outerContent","closeButton","innerContent","propTypes","oneOfType","node","bool","number","func","onOpen","defaultProps","get"],"sources":["BottomSheet.tsx"],"sourcesContent":["import React, { ReactNode, useEffect, useRef, useState } from 'react';\nimport {\n Animated,\n BackHandler,\n Dimensions,\n Easing,\n Image,\n KeyboardAvoidingView,\n LayoutChangeEvent,\n PanResponder,\n TouchableOpacity,\n View,\n} from 'react-native';\nimport PropTypes from 'prop-types';\nimport { CloseIcon } from '../../assets/images';\nimport { BOTTOM_SHEET_MAX_PRECANTAGE_SIZE } from '../../components/UNBottomSheetComponent/UNBottomSheetComponent.constants';\nimport { getStylesObject } from './BottomSheet.styles';\n\nexport interface BottomSheetProps {\n isOpen: boolean\n children: ReactNode\n sliderMaxHeight: number\n onOpen: () => void\n onClose: () => void\n height: number,\n animationDuration: number,\n expandToMaxHeightEnabled: boolean\n}\n\nconst BottomSheet = (props: BottomSheetProps) => {\n const panelHeightValue = useRef(new Animated.Value(props.sliderMaxHeight)).current;\n const fadeAnim = useRef(new Animated.Value(0)).current;\n const styles = getStylesObject(fadeAnim);\n const [isPanelOpened, setIsPanelOpened] = useState(props.isOpen);\n const [contentHeight, setContentHeight] = useState<number | undefined>(undefined);\n\n const [currentHeight, setCurrentHeight] = useState<number>(props.sliderMaxHeight);\n\n const [dy, setDy] = useState(0);\n\n const _parentPanResponder = PanResponder.create({\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onMoveShouldSetPanResponderCapture: (_,) => { //gestureState) => {\n return false;\n // return Math.abs(gestureState.dy) > 10\n },\n onPanResponderMove(_, gestureState) {\n if (currentHeight + gestureState.dy < 0) return;\n if (!props.expandToMaxHeightEnabled && contentHeight && currentHeight + gestureState.dy < sliderMaxHeight - contentHeight) return;\n panelHeightValue.setValue(currentHeight + gestureState.dy);\n setDy(gestureState.dy);\n },\n onPanResponderRelease: () => {\n if (dy > 0) {\n collapse();\n } else if (!props.expandToMaxHeightEnabled) {\n contentHeight && setToContentHeight(contentHeight);\n } else if (dy < 0) {\n expand();\n } else {\n expand();\n }\n }\n });\n\n useEffect(() => {\n if (props.isOpen && !isPanelOpened) {\n fadeIn();\n } else if (isPanelOpened) {\n setContentHeight(0);\n _dismiss();\n }\n }, [props.isOpen]);\n\n useEffect(() => {\n BackHandler.addEventListener('hardwareBackPress', _onBackPress);\n const id = panelHeightValue.addListener(e => setCurrentHeight(e.value));\n\n return (() => {\n BackHandler.removeEventListener('hardwareBackPress', _onBackPress);\n panelHeightValue.removeListener(id);\n });\n }, []);\n\n const fadeIn = () => {\n Animated.timing(fadeAnim, {\n toValue: 0.3,\n duration: 500,\n useNativeDriver: false\n }).start(() => { setIsPanelOpened(true); });\n };\n\n const fadeOut = () => {\n Animated.timing(fadeAnim, {\n toValue: 0,\n duration: 500,\n useNativeDriver: false\n }).start(() => {\n setIsPanelOpened(false);\n props.onClose();\n });\n };\n\n const setToContentHeight = (contentHeight: number) => {\n Animated.timing(panelHeightValue, {\n duration: props.animationDuration,\n easing: Easing.quad,\n toValue: sliderMaxHeight - contentHeight,\n useNativeDriver: false,\n }).start();\n };\n\n const expand = () => {\n const { animationDuration } = props;\n\n if (contentHeight && currentHeight > (sliderMaxHeight - contentHeight)) {\n setToContentHeight(contentHeight);\n return;\n }\n\n Animated.timing(panelHeightValue, {\n duration: animationDuration,\n easing: Easing.quad,\n toValue: 0,\n useNativeDriver: false,\n }).start();\n };\n\n const collapse = () => {\n if (contentHeight && currentHeight > (sliderMaxHeight - contentHeight)) {\n _dismiss();\n return;\n }\n\n contentHeight && setToContentHeight(contentHeight);\n };\n\n const _onBackPress = () => {\n isPanelOpened && collapse();\n return isPanelOpened;\n };\n\n const _setSize = (e: LayoutChangeEvent) => {\n const newContentHeight = e.nativeEvent.layout.height;\n\n setContentHeight(newContentHeight);\n setToContentHeight(newContentHeight);\n };\n\n const _dismiss = () => {\n const { animationDuration } = props;\n Animated.timing(panelHeightValue, {\n duration: animationDuration,\n easing: Easing.quad,\n toValue: sliderMaxHeight,\n useNativeDriver: false,\n }).start(() => {\n null;\n });\n fadeOut();\n };\n\n const {\n sliderMaxHeight,\n children,\n } = props;\n\n return (\n <>\n <TouchableOpacity\n style={styles.outsideContainer} activeOpacity={1}\n onPress={_dismiss}\n >\n <Animated.View\n style={styles.animation}\n >\n </Animated.View>\n </TouchableOpacity>\n <Animated.View\n {..._parentPanResponder.panHandlers}\n style={{\n ...styles.container,\n height: sliderMaxHeight,\n transform: [\n { translateY: panelHeightValue },\n ],\n }}\n >\n <View\n style={styles.outerContent}\n >\n <TouchableOpacity\n activeOpacity={1}\n style={styles.closeButton}\n onPress={_dismiss}\n >\n <Image source={CloseIcon} />\n </TouchableOpacity>\n\n <View\n onLayout={_setSize}\n style={[styles.innerContent]}\n >\n <KeyboardAvoidingView\n behavior=\"padding\"\n style={{ height: props.height }}\n keyboardVerticalOffset={props.height * (1 - BOTTOM_SHEET_MAX_PRECANTAGE_SIZE)}\n >\n {children}\n </KeyboardAvoidingView>\n </View>\n </View>\n </Animated.View>\n </>\n );\n};\n\nBottomSheet.propTypes = {\n children: PropTypes.oneOfType([PropTypes.node]),\n isOpen: PropTypes.bool,\n sliderMaxHeight: PropTypes.number,\n animation: PropTypes.func,\n animationDuration: PropTypes.number,\n onOpen: PropTypes.func,\n onClose: PropTypes.func,\n expandToMaxHeightEnabled: PropTypes.bool\n};\n\nBottomSheet.defaultProps = {\n children: <View />,\n isOpen: true,\n sliderMaxHeight: Dimensions.get('window').height * BOTTOM_SHEET_MAX_PRECANTAGE_SIZE,\n animationDuration: 200,\n onOpen: () => null,\n onClose: () => null,\n expandToMaxHeightEnabled: false\n};\n\nexport default BottomSheet;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","useEffect","useRef","useState","Animated","BackHandler","Dimensions","Easing","Image","KeyboardAvoidingView","PanResponder","TouchableOpacity","View","PropTypes","CloseIcon","BOTTOM_SHEET_MAX_PRECANTAGE_SIZE","getStylesObject","BottomSheet","props","panelHeightValue","Value","sliderMaxHeight","current","fadeAnim","styles","isPanelOpened","setIsPanelOpened","isOpen","contentHeight","setContentHeight","undefined","currentHeight","setCurrentHeight","dy","setDy","_parentPanResponder","create","onMoveShouldSetPanResponderCapture","_","gestureState","shouldEnableBottomSheetScroll","Math","abs","onPanResponderMove","handleWebViewScroll","expandToMaxHeightEnabled","setValue","onPanResponderRelease","collapse","setToContentHeight","expand","fadeIn","_dismiss","addEventListener","_onBackPress","id","addListener","e","value","removeEventListener","removeListener","timing","toValue","duration","useNativeDriver","start","fadeOut","onClose","animationDuration","easing","quad","_setSize","newContentHeight","nativeEvent","layout","height","children","outsideContainer","animation","panHandlers","container","transform","translateY","outerContent","closeButton","propTypes","oneOfType","node","bool","number","func","onOpen","defaultProps","get"],"sources":["BottomSheet.tsx"],"sourcesContent":["import React, { ReactNode, useEffect, useRef, useState } from 'react';\nimport {\n Animated,\n BackHandler,\n Dimensions,\n Easing,\n Image,\n KeyboardAvoidingView,\n LayoutChangeEvent,\n PanResponder,\n TouchableOpacity,\n View,\n} from 'react-native';\nimport PropTypes from 'prop-types';\nimport { CloseIcon } from '../../assets/images';\nimport { BOTTOM_SHEET_MAX_PRECANTAGE_SIZE } from '../../components/UNBottomSheetComponent/UNBottomSheetComponent.constants';\nimport { getStylesObject } from './BottomSheet.styles';\n\nexport interface BottomSheetProps {\n isOpen: boolean\n children: ReactNode\n sliderMaxHeight: number\n onOpen: () => void\n onClose: () => void\n height: number,\n animationDuration: number,\n expandToMaxHeightEnabled: boolean\n handleWebViewScroll: () => void\n shouldEnableBottomSheetScroll: boolean\n}\n\nconst BottomSheet = (props: BottomSheetProps) => {\n const panelHeightValue = useRef(new Animated.Value(props.sliderMaxHeight)).current;\n const fadeAnim = useRef(new Animated.Value(0)).current;\n const styles = getStylesObject(fadeAnim);\n const [isPanelOpened, setIsPanelOpened] = useState(props.isOpen);\n const [contentHeight, setContentHeight] = useState<number | undefined>(undefined);\n\n const [currentHeight, setCurrentHeight] = useState<number>(props.sliderMaxHeight);\n\n const [dy, setDy] = useState(0);\n\n const _parentPanResponder = PanResponder.create({\n onMoveShouldSetPanResponderCapture: (_, gestureState) => {\n return props.shouldEnableBottomSheetScroll && Math.abs(gestureState.dy) > 10;\n },\n onPanResponderMove(_, gestureState) {\n if (props.shouldEnableBottomSheetScroll && gestureState.dy < 5) {\n props.handleWebViewScroll();\n }\n if (currentHeight + gestureState.dy < 0) return;\n if (!props.expandToMaxHeightEnabled && contentHeight && currentHeight + gestureState.dy < sliderMaxHeight - contentHeight) return;\n panelHeightValue.setValue(currentHeight + gestureState.dy);\n setDy(gestureState.dy);\n },\n onPanResponderRelease: () => {\n if (dy > 0) {\n collapse();\n } else if (!props.expandToMaxHeightEnabled) {\n contentHeight && setToContentHeight(contentHeight);\n } else if (dy < 0) {\n expand();\n } else {\n expand();\n }\n }\n });\n\n useEffect(() => {\n if (props.isOpen && !isPanelOpened) {\n fadeIn();\n } else if (isPanelOpened) {\n setContentHeight(0);\n _dismiss();\n }\n }, [props.isOpen]);\n\n useEffect(() => {\n BackHandler.addEventListener('hardwareBackPress', _onBackPress);\n const id = panelHeightValue.addListener(e => setCurrentHeight(e.value));\n\n return (() => {\n BackHandler.removeEventListener('hardwareBackPress', _onBackPress);\n panelHeightValue.removeListener(id);\n });\n }, []);\n\n const fadeIn = () => {\n Animated.timing(fadeAnim, {\n toValue: 0.3,\n duration: 500,\n useNativeDriver: false\n }).start(() => { setIsPanelOpened(true); });\n };\n\n const fadeOut = () => {\n Animated.timing(fadeAnim, {\n toValue: 0,\n duration: 500,\n useNativeDriver: false\n }).start(() => {\n setIsPanelOpened(false);\n props.onClose();\n });\n };\n\n const setToContentHeight = (contentHeight: number) => {\n Animated.timing(panelHeightValue, {\n duration: props.animationDuration,\n easing: Easing.quad,\n toValue: sliderMaxHeight - contentHeight,\n useNativeDriver: false,\n }).start();\n };\n\n const expand = () => {\n const { animationDuration } = props;\n\n if (contentHeight && currentHeight > (sliderMaxHeight - contentHeight)) {\n setToContentHeight(contentHeight);\n return;\n }\n\n Animated.timing(panelHeightValue, {\n duration: animationDuration,\n easing: Easing.quad,\n toValue: 0,\n useNativeDriver: false,\n }).start();\n };\n\n const collapse = () => {\n if (contentHeight && currentHeight > (sliderMaxHeight - contentHeight)) {\n _dismiss();\n return;\n }\n\n contentHeight && setToContentHeight(contentHeight);\n };\n\n const _onBackPress = () => {\n isPanelOpened && collapse();\n return isPanelOpened;\n };\n\n const _setSize = (e: LayoutChangeEvent) => {\n const newContentHeight = e.nativeEvent.layout.height;\n\n setContentHeight(newContentHeight);\n setToContentHeight(newContentHeight);\n };\n\n const _dismiss = () => {\n const { animationDuration } = props;\n Animated.timing(panelHeightValue, {\n duration: animationDuration,\n easing: Easing.quad,\n toValue: sliderMaxHeight,\n useNativeDriver: false,\n }).start(() => {\n null;\n });\n fadeOut();\n };\n\n const {\n sliderMaxHeight,\n children,\n } = props;\n\n return (\n <>\n <TouchableOpacity\n style={styles.outsideContainer} activeOpacity={1}\n onPress={_dismiss}\n >\n <Animated.View\n style={styles.animation}\n >\n </Animated.View>\n </TouchableOpacity>\n <Animated.View\n {..._parentPanResponder.panHandlers}\n style={{\n ...styles.container,\n height: sliderMaxHeight,\n transform: [\n { translateY: panelHeightValue },\n ],\n }}\n >\n <View\n style={styles.outerContent}\n >\n <TouchableOpacity\n activeOpacity={1}\n style={styles.closeButton}\n onPress={_dismiss}\n >\n <Image source={CloseIcon} />\n </TouchableOpacity>\n\n <View\n onLayout={_setSize}\n >\n <KeyboardAvoidingView\n behavior=\"padding\"\n style={{ height: props.height }}\n keyboardVerticalOffset={props.height * (1 - BOTTOM_SHEET_MAX_PRECANTAGE_SIZE)}\n >\n {children}\n </KeyboardAvoidingView>\n </View>\n </View>\n </Animated.View>\n </>\n );\n};\n\nBottomSheet.propTypes = {\n children: PropTypes.oneOfType([PropTypes.node]),\n isOpen: PropTypes.bool,\n sliderMaxHeight: PropTypes.number,\n animation: PropTypes.func,\n animationDuration: PropTypes.number,\n onOpen: PropTypes.func,\n onClose: PropTypes.func,\n expandToMaxHeightEnabled: PropTypes.bool\n};\n\nBottomSheet.defaultProps = {\n children: <View />,\n isOpen: true,\n sliderMaxHeight: Dimensions.get('window').height * BOTTOM_SHEET_MAX_PRECANTAGE_SIZE,\n animationDuration: 200,\n onOpen: () => null,\n onClose: () => null,\n expandToMaxHeightEnabled: false\n};\n\nexport default BottomSheet;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["PageMessage"],"sources":["pageMessage.ts"],"sourcesContent":["export enum PageMessage {\n PAGE_LOADED = 'pageLoaded',\n PAGE_HEIGHT = 'pageHeight'\n}\n\nexport interface HeightEvent {\n height: number;\n}\n\nexport type PageEvent =\n | HeightEvent\n"],"mappings":"AAAA,WAAYA,WAAZ;;WAAYA,W;EAAAA,W;EAAAA,W;GAAAA,W,KAAAA,W"}
1
+ {"version":3,"names":["PageMessage"],"sources":["pageMessage.ts"],"sourcesContent":["export enum PageMessage {\n PAGE_LOADED = 'pageLoaded',\n PAGE_HEIGHT = 'pageHeight',\n}\n\nexport interface HeightEvent {\n height: number;\n}\n\nexport type PageEvent =\n | HeightEvent\n"],"mappings":"AAAA,WAAYA,WAAZ;;WAAYA,W;EAAAA,W;EAAAA,W;GAAAA,W,KAAAA,W"}
@@ -0,0 +1,4 @@
1
+ import { requireNativeComponent } from 'react-native';
2
+ const UnitAddToWalletButtonView = requireNativeComponent('UnitAddToWalletButtonView');
3
+ export default UnitAddToWalletButtonView;
4
+ //# sourceMappingURL=UNNativeAddToWalletButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["requireNativeComponent","UnitAddToWalletButtonView"],"sources":["UNNativeAddToWalletButton.tsx"],"sourcesContent":["import {\n requireNativeComponent,\n} from 'react-native';\n\ntype UnitAddToWalletButtonViewProps = {\n style: object;\n onAddToWalletClicked: () => void;\n};\n\nconst UnitAddToWalletButtonView = requireNativeComponent<UnitAddToWalletButtonViewProps>('UnitAddToWalletButtonView');\n\nexport default UnitAddToWalletButtonView;\n"],"mappings":"AAAA,SACEA,sBADF,QAEO,cAFP;AASA,MAAMC,yBAAyB,GAAGD,sBAAsB,CAAiC,2BAAjC,CAAxD;AAEA,eAAeC,yBAAf"}
@@ -1 +1 @@
1
- {"version":3,"names":["fetchUnitScript","UNEnvironment","UNIT_SCRIPT_URL","sandbox","production","UnitSDK","env","theme","e","console","log"],"sources":["UnitSdkManager.ts"],"sourcesContent":["import { fetchUnitScript } from './UnitSdk.api';\n\nexport enum UNEnvironment {\n sandbox = 'sandbox',\n production = 'production'\n}\n\nexport const UNIT_SCRIPT_URL = {\n [UNEnvironment.sandbox]: 'https://ui.s.unit.sh/components.js',\n [UNEnvironment.production]: 'https://ui.unit.co/components.js'\n};\nexport class UnitSDK {\n protected static env?: UNEnvironment;\n protected static theme?: string;\n\n public static init = async (env: UNEnvironment, theme: string) => {\n try {\n this.env = env;\n this.theme = theme;\n await fetchUnitScript();\n } catch (e) {\n console.log(e);\n }\n };\n\n public static getEnv = () => {\n return this.env;\n };\n\n public static getTheme = () => {\n return this.theme;\n };\n}\n"],"mappings":";;AAAA,SAASA,eAAT,QAAgC,eAAhC;AAEA,WAAYC,aAAZ;;WAAYA,a;EAAAA,a;EAAAA,a;GAAAA,a,KAAAA,a;;AAKZ,OAAO,MAAMC,eAAe,GAAG;EAC7B,CAACD,aAAa,CAACE,OAAf,GAAyB,oCADI;EAE7B,CAACF,aAAa,CAACG,UAAf,GAA4B;AAFC,CAAxB;AAIP,OAAO,MAAMC,OAAN,CAAc;;gBAARA,O;;gBAAAA,O;;gBAAAA,O,UAIU,OAAOC,GAAP,EAA2BC,KAA3B,KAA6C;EAChE,IAAI;IALKF,OAMP,CAAKC,GAAL,GAAWA,GAAX;IANOD,OAOP,CAAKE,KAAL,GAAaA,KAAb;IACA,MAAMP,eAAe,EAArB;EACD,CAJD,CAIE,OAAOQ,CAAP,EAAU;IACVC,OAAO,CAACC,GAAR,CAAYF,CAAZ;EACD;AACF,C;;gBAZUH,O,YAcY,MAAM;EAC3B,OAfSA,OAeF,CAAKC,GAAZ;AACD,C;;gBAhBUD,O,cAkBc,MAAM;EAC7B,OAnBSA,OAmBF,CAAKE,KAAZ;AACD,C"}
1
+ {"version":3,"names":["fetchUnitScript","UNEnvironment","UNIT_SCRIPT_URL","sandbox","production","UnitSDK","env","theme","e","console","log"],"sources":["UnitSdkManager.ts"],"sourcesContent":["import { fetchUnitScript } from './UnitSdk.api';\n\nexport enum UNEnvironment {\n sandbox = 'sandbox',\n production = 'production'\n}\n\nexport const UNIT_SCRIPT_URL = {\n [UNEnvironment.sandbox]: 'https://ui.s.unit.sh/components.js',\n [UNEnvironment.production]: 'https://ui.unit.co/components.js'\n};\nexport class UnitSDK {\n protected static env?: UNEnvironment;\n protected static theme?: string;\n\n public static init = async (env: UNEnvironment, theme?: string) => {\n try {\n this.env = env;\n this.theme = theme;\n await fetchUnitScript();\n } catch (e) {\n console.log(e);\n }\n };\n\n public static getEnv = () => {\n return this.env;\n };\n\n public static getTheme = () => {\n return this.theme;\n };\n}\n"],"mappings":";;AAAA,SAASA,eAAT,QAAgC,eAAhC;AAEA,WAAYC,aAAZ;;WAAYA,a;EAAAA,a;EAAAA,a;GAAAA,a,KAAAA,a;;AAKZ,OAAO,MAAMC,eAAe,GAAG;EAC7B,CAACD,aAAa,CAACE,OAAf,GAAyB,oCADI;EAE7B,CAACF,aAAa,CAACG,UAAf,GAA4B;AAFC,CAAxB;AAIP,OAAO,MAAMC,OAAN,CAAc;;gBAARA,O;;gBAAAA,O;;gBAAAA,O,UAIU,OAAOC,GAAP,EAA2BC,KAA3B,KAA8C;EACjE,IAAI;IALKF,OAMP,CAAKC,GAAL,GAAWA,GAAX;IANOD,OAOP,CAAKE,KAAL,GAAaA,KAAb;IACA,MAAMP,eAAe,EAArB;EACD,CAJD,CAIE,OAAOQ,CAAP,EAAU;IACVC,OAAO,CAACC,GAAR,CAAYF,CAAZ;EACD;AACF,C;;gBAZUH,O,YAcY,MAAM;EAC3B,OAfSA,OAeF,CAAKC,GAAZ;AACD,C;;gBAhBUD,O,cAkBc,MAAM;EAC7B,OAnBSA,OAmBF,CAAKE,KAAZ;AACD,C"}
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
1
2
  import React, { useEffect, useState } from 'react';
2
3
  import { WebView } from 'react-native-webview';
3
4
  import EventBus from '../helpers/EventBus';
@@ -19,6 +20,7 @@ export let WebComponentType;
19
20
  export const WebComponent = /*#__PURE__*/React.forwardRef(function WebComponent(props, webRef) {
20
21
  const [unitScript, setUnitScript] = useState(globalUnitScript);
21
22
  const [sourceHtml, setSourceHtml] = useState(null);
23
+ const width = props.width ?? '100%';
22
24
 
23
25
  const listenerAction = data => {
24
26
  setUnitScript(data.unitScript);
@@ -50,14 +52,24 @@ export const WebComponent = /*#__PURE__*/React.forwardRef(function WebComponent(
50
52
  };
51
53
 
52
54
  if (!sourceHtml) return null;
55
+
56
+ const _onScroll = event => {
57
+ if (props.handleScroll) {
58
+ props.handleScroll(event);
59
+ }
60
+
61
+ return null;
62
+ };
63
+
53
64
  return /*#__PURE__*/React.createElement(WebView, {
54
65
  ref: webRef,
55
66
  cacheEnabled: false,
56
- scrollEnabled: props.shouldEnableWebViewScroll,
67
+ scrollEnabled: props.isScrollable,
68
+ onScroll: _onScroll,
57
69
  overScrollMode: "never",
58
70
  injectedJavaScript: unitScript,
59
71
  style: {
60
- width: props.width ?? '100%',
72
+ width: width,
61
73
  flex: 1
62
74
  },
63
75
  source: {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useState","WebView","EventBus","html","HTML_PLACEHOLDER","UnitMessage","useListenerToBus","getHtmlBody","fetchUnitScript","globalUnitScript","NativeMessage","WebComponentType","WebComponent","forwardRef","props","webRef","unitScript","setUnitScript","sourceHtml","setSourceHtml","listenerAction","data","busEventKey","IS_SCRIPT_FETCHED","action","newHtml","replace","BODY","type","valueOf","params","presentationMode","SCRIPT_FROM_NATIVE","script","onMessage","e","message","JSON","parse","nativeEvent","UNIT_REQUEST_REFRESH","details","Instance","event","shouldEnableWebViewScroll","width","flex"],"sources":["WebComponent.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { WebView, WebViewMessageEvent } from 'react-native-webview';\nimport EventBus from '../helpers/EventBus';\nimport html, { HTML_PLACEHOLDER } from './html';\nimport { RequestRefreshEvent, UnitMessage } from '../messages/webMessages/unitMessages';\nimport { useListenerToBus } from '../hooks/listenerToBus';\nimport type { WebViewMessage } from '../messages/webMessages';\nimport { getHtmlBody, PresentationMode } from '../scripts/html/bodyHtml';\nimport { fetchUnitScript, globalUnitScript } from '../unitSdkManager/UnitSdk.api';\nimport { NativeMessage } from '../messages/nativeMessages';\n\nexport interface WebComponentProps {\n type: WebComponentType;\n presentationMode?: PresentationMode,\n params?: string;\n onMessage?: (message: WebViewMessage) => void;\n script?: string;\n width?: number;\n shouldEnableWebViewScroll?: boolean;\n}\n\nexport enum WebComponentType {\n card = 'unit-elements-card',\n bookPayment = 'unit-elements-book-payment',\n activity = 'unit-elements-activity',\n slot = 'unit-elements-sdk-slot'\n}\n\nexport const WebComponent = React.forwardRef<WebView, WebComponentProps>(function WebComponent(props, webRef) {\n const [unitScript, setUnitScript] = useState<string | undefined>(globalUnitScript);\n const [sourceHtml, setSourceHtml] = useState<string | null>(null);\n\n const listenerAction = (data: { unitScript?: string }) => {\n setUnitScript(data.unitScript);\n };\n\n useListenerToBus([{ busEventKey: NativeMessage.IS_SCRIPT_FETCHED, action: listenerAction }]);\n\n useEffect(() => {\n if (!unitScript) {\n fetchUnitScript();\n return;\n }\n\n let newHtml = html.replace(HTML_PLACEHOLDER.BODY, getHtmlBody(props.type.valueOf(), props.params, props.presentationMode));\n newHtml = newHtml.replace(HTML_PLACEHOLDER.SCRIPT_FROM_NATIVE, props.script || '');\n setSourceHtml(newHtml);\n\n }, [props.params, unitScript]);\n\n const onMessage = (e: WebViewMessageEvent) => {\n const message = JSON.parse(e.nativeEvent.data) as WebViewMessage;\n if (message.type == UnitMessage.UNIT_REQUEST_REFRESH && message.details) {\n EventBus.Instance.event(UnitMessage.UNIT_REQUEST_REFRESH, message.details as RequestRefreshEvent);\n } else {\n props.onMessage && props.onMessage(message);\n }\n };\n\n if (!sourceHtml) return null;\n\n return (\n <WebView\n ref={webRef}\n cacheEnabled={false}\n scrollEnabled={props.shouldEnableWebViewScroll}\n overScrollMode=\"never\"\n injectedJavaScript={unitScript}\n style={{ width: props.width ?? '100%', flex: 1 }}\n source={{ html: sourceHtml }}\n onMessage={onMessage} />\n );\n});\n"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,SAAhB,EAA2BC,QAA3B,QAA2C,OAA3C;AACA,SAASC,OAAT,QAA6C,sBAA7C;AACA,OAAOC,QAAP,MAAqB,qBAArB;AACA,OAAOC,IAAP,IAAeC,gBAAf,QAAuC,QAAvC;AACA,SAA8BC,WAA9B,QAAiD,sCAAjD;AACA,SAASC,gBAAT,QAAiC,wBAAjC;AAEA,SAASC,WAAT,QAA8C,0BAA9C;AACA,SAASC,eAAT,EAA0BC,gBAA1B,QAAkD,+BAAlD;AACA,SAASC,aAAT,QAA8B,4BAA9B;AAYA,WAAYC,gBAAZ;;WAAYA,gB;EAAAA,gB;EAAAA,gB;EAAAA,gB;EAAAA,gB;GAAAA,gB,KAAAA,gB;;AAOZ,OAAO,MAAMC,YAAY,gBAAGd,KAAK,CAACe,UAAN,CAA6C,SAASD,YAAT,CAAsBE,KAAtB,EAA6BC,MAA7B,EAAqC;EAC5G,MAAM,CAACC,UAAD,EAAaC,aAAb,IAA8BjB,QAAQ,CAAqBS,gBAArB,CAA5C;EACA,MAAM,CAACS,UAAD,EAAaC,aAAb,IAA8BnB,QAAQ,CAAgB,IAAhB,CAA5C;;EAEA,MAAMoB,cAAc,GAAIC,IAAD,IAAmC;IACxDJ,aAAa,CAACI,IAAI,CAACL,UAAN,CAAb;EACD,CAFD;;EAIAV,gBAAgB,CAAC,CAAC;IAAEgB,WAAW,EAAEZ,aAAa,CAACa,iBAA7B;IAAgDC,MAAM,EAAEJ;EAAxD,CAAD,CAAD,CAAhB;EAEArB,SAAS,CAAC,MAAM;IACd,IAAI,CAACiB,UAAL,EAAiB;MACfR,eAAe;MACf;IACD;;IAED,IAAIiB,OAAO,GAAGtB,IAAI,CAACuB,OAAL,CAAatB,gBAAgB,CAACuB,IAA9B,EAAoCpB,WAAW,CAACO,KAAK,CAACc,IAAN,CAAWC,OAAX,EAAD,EAAuBf,KAAK,CAACgB,MAA7B,EAAqChB,KAAK,CAACiB,gBAA3C,CAA/C,CAAd;IACAN,OAAO,GAAGA,OAAO,CAACC,OAAR,CAAgBtB,gBAAgB,CAAC4B,kBAAjC,EAAqDlB,KAAK,CAACmB,MAAN,IAAgB,EAArE,CAAV;IACAd,aAAa,CAACM,OAAD,CAAb;EAED,CAVQ,EAUN,CAACX,KAAK,CAACgB,MAAP,EAAed,UAAf,CAVM,CAAT;;EAYA,MAAMkB,SAAS,GAAIC,CAAD,IAA4B;IAC5C,MAAMC,OAAO,GAAGC,IAAI,CAACC,KAAL,CAAWH,CAAC,CAACI,WAAF,CAAclB,IAAzB,CAAhB;;IACA,IAAIe,OAAO,CAACR,IAAR,IAAgBvB,WAAW,CAACmC,oBAA5B,IAAoDJ,OAAO,CAACK,OAAhE,EAAyE;MACvEvC,QAAQ,CAACwC,QAAT,CAAkBC,KAAlB,CAAwBtC,WAAW,CAACmC,oBAApC,EAA0DJ,OAAO,CAACK,OAAlE;IACD,CAFD,MAEO;MACL3B,KAAK,CAACoB,SAAN,IAAmBpB,KAAK,CAACoB,SAAN,CAAgBE,OAAhB,CAAnB;IACD;EACF,CAPD;;EASA,IAAI,CAAClB,UAAL,EAAiB,OAAO,IAAP;EAEjB,oBACE,oBAAC,OAAD;IACE,GAAG,EAAEH,MADP;IAEE,YAAY,EAAE,KAFhB;IAGE,aAAa,EAAED,KAAK,CAAC8B,yBAHvB;IAIE,cAAc,EAAC,OAJjB;IAKE,kBAAkB,EAAE5B,UALtB;IAME,KAAK,EAAE;MAAE6B,KAAK,EAAE/B,KAAK,CAAC+B,KAAN,IAAe,MAAxB;MAAgCC,IAAI,EAAE;IAAtC,CANT;IAOE,MAAM,EAAE;MAAE3C,IAAI,EAAEe;IAAR,CAPV;IAQE,SAAS,EAAEgB;EARb,EADF;AAWD,CA5C2B,CAArB"}
1
+ {"version":3,"names":["React","useEffect","useState","WebView","EventBus","html","HTML_PLACEHOLDER","UnitMessage","useListenerToBus","getHtmlBody","fetchUnitScript","globalUnitScript","NativeMessage","WebComponentType","WebComponent","forwardRef","props","webRef","unitScript","setUnitScript","sourceHtml","setSourceHtml","width","listenerAction","data","busEventKey","IS_SCRIPT_FETCHED","action","newHtml","replace","BODY","type","valueOf","params","presentationMode","SCRIPT_FROM_NATIVE","script","onMessage","e","message","JSON","parse","nativeEvent","UNIT_REQUEST_REFRESH","details","Instance","event","_onScroll","handleScroll","isScrollable","flex"],"sources":["WebComponent.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useState } from 'react';\nimport { WebView, WebViewMessageEvent } from 'react-native-webview';\nimport EventBus from '../helpers/EventBus';\nimport html, { HTML_PLACEHOLDER } from './html';\nimport { RequestRefreshEvent, UnitMessage } from '../messages/webMessages/unitMessages';\nimport { useListenerToBus } from '../hooks/listenerToBus';\nimport { getHtmlBody, PresentationMode } from '../scripts/html/bodyHtml';\nimport { fetchUnitScript, globalUnitScript } from '../unitSdkManager/UnitSdk.api';\nimport { NativeMessage } from '../messages/nativeMessages';\nimport type { WebViewMessage } from '../messages/webMessages';\n\nexport interface WebComponentProps {\n type: WebComponentType;\n presentationMode?: PresentationMode,\n params?: string;\n onMessage?: (message: WebViewMessage) => void;\n script?: string;\n isScrollable?: boolean,\n handleScroll?: (event: any) => void,\n width?: number;\n}\n\nexport enum WebComponentType {\n card = 'unit-elements-card',\n bookPayment = 'unit-elements-book-payment',\n activity = 'unit-elements-activity',\n slot = 'unit-elements-sdk-slot'\n}\n\nexport const WebComponent = React.forwardRef<WebView, WebComponentProps>(function WebComponent(props, webRef) {\n const [unitScript, setUnitScript] = useState<string | undefined>(globalUnitScript);\n const [sourceHtml, setSourceHtml] = useState<string | null>(null);\n const width = props.width ?? '100%';\n\n const listenerAction = (data: { unitScript?: string }) => {\n setUnitScript(data.unitScript);\n };\n\n useListenerToBus([{ busEventKey: NativeMessage.IS_SCRIPT_FETCHED, action: listenerAction }]);\n\n useEffect(() => {\n if (!unitScript) {\n fetchUnitScript();\n return;\n }\n\n let newHtml = html.replace(HTML_PLACEHOLDER.BODY, getHtmlBody(props.type.valueOf(), props.params, props.presentationMode));\n newHtml = newHtml.replace(HTML_PLACEHOLDER.SCRIPT_FROM_NATIVE, props.script || '');\n setSourceHtml(newHtml);\n\n }, [props.params, unitScript]);\n\n const onMessage = (e: WebViewMessageEvent) => {\n const message = JSON.parse(e.nativeEvent.data) as WebViewMessage;\n if (message.type == UnitMessage.UNIT_REQUEST_REFRESH && message.details) {\n EventBus.Instance.event(UnitMessage.UNIT_REQUEST_REFRESH, message.details as RequestRefreshEvent);\n } else {\n props.onMessage && props.onMessage(message);\n }\n };\n\n if (!sourceHtml) return null;\n\n const _onScroll = (event: any) => {\n if (props.handleScroll) {\n props.handleScroll(event);\n }\n\n return null;\n };\n\n return (\n <WebView\n ref={webRef}\n cacheEnabled={false}\n scrollEnabled={props.isScrollable}\n onScroll={_onScroll}\n overScrollMode=\"never\"\n injectedJavaScript={unitScript}\n style={{ width: width, flex: 1 }}\n source={{ html: sourceHtml }}\n onMessage={onMessage} />\n );\n});\n"],"mappings":"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"}
@@ -1 +1,7 @@
1
+ export declare enum ScrollState {
2
+ onTop = "onTop",
3
+ onlyWebView = "webViewScroll",
4
+ onlyBottomSheet = "onlyBottomSheet",
5
+ unScrollable = "unScrollable"
6
+ }
1
7
  export declare const UNBottomSheetComponent: () => JSX.Element;
@@ -9,6 +9,8 @@ export interface BottomSheetProps {
9
9
  height: number;
10
10
  animationDuration: number;
11
11
  expandToMaxHeightEnabled: boolean;
12
+ handleWebViewScroll: () => void;
13
+ shouldEnableBottomSheetScroll: boolean;
12
14
  }
13
15
  declare const BottomSheet: {
14
16
  (props: BottomSheetProps): JSX.Element;
@@ -0,0 +1,6 @@
1
+ declare type UnitAddToWalletButtonViewProps = {
2
+ style: object;
3
+ onAddToWalletClicked: () => void;
4
+ };
5
+ declare const UnitAddToWalletButtonView: import("react-native").HostComponent<UnitAddToWalletButtonViewProps>;
6
+ export default UnitAddToWalletButtonView;
@@ -9,7 +9,7 @@ export declare const UNIT_SCRIPT_URL: {
9
9
  export declare class UnitSDK {
10
10
  protected static env?: UNEnvironment;
11
11
  protected static theme?: string;
12
- static init: (env: UNEnvironment, theme: string) => Promise<void>;
12
+ static init: (env: UNEnvironment, theme?: string) => Promise<void>;
13
13
  static getEnv: () => UNEnvironment | undefined;
14
14
  static getTheme: () => string | undefined;
15
15
  }
@@ -1,15 +1,16 @@
1
1
  import React from 'react';
2
2
  import { WebView } from 'react-native-webview';
3
- import type { WebViewMessage } from '../messages/webMessages';
4
3
  import { PresentationMode } from '../scripts/html/bodyHtml';
4
+ import type { WebViewMessage } from '../messages/webMessages';
5
5
  export interface WebComponentProps {
6
6
  type: WebComponentType;
7
7
  presentationMode?: PresentationMode;
8
8
  params?: string;
9
9
  onMessage?: (message: WebViewMessage) => void;
10
10
  script?: string;
11
+ isScrollable?: boolean;
12
+ handleScroll?: (event: any) => void;
11
13
  width?: number;
12
- shouldEnableWebViewScroll?: boolean;
13
14
  }
14
15
  export declare enum WebComponentType {
15
16
  card = "unit-elements-card",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-unit-components",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Unit React Native components",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -15,7 +15,7 @@ export const UNActivityComponent = (props: UNActivityComponentProps) => {
15
15
  type={WebComponentType.activity}
16
16
  presentationMode={PresentationMode.Inherit}
17
17
  params={getActivityParams(props)}
18
- shouldEnableWebViewScroll={false}
18
+ isScrollable={false}
19
19
  />
20
20
  );
21
21
  };
@@ -31,7 +31,7 @@ export const UNBookPaymentComponent = (props: UNBookPaymentComponentProps) => {
31
31
  params={getBookPaymentParams(props)}
32
32
  script={getBookPaymentScript()}
33
33
  onMessage={(message: WebViewMessage) => handleWebViewMessage(message)}
34
- shouldEnableWebViewScroll={false}
34
+ isScrollable={false}
35
35
  />
36
36
  );
37
37
  };
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
1
2
  import React, { useEffect, useRef, useState } from 'react';
2
3
  import type WebView from 'react-native-webview';
3
4
  import { WebComponent, WebComponentType } from '../../webComponent/WebComponent';
@@ -14,12 +15,19 @@ import { getStylesObject } from './UNBottomSheetComponent.styles';
14
15
  import { PresentationMode } from '../../scripts/html/bodyHtml';
15
16
  import { useAppStateListener } from '../../hooks/useAppStateListener';
16
17
 
18
+ export enum ScrollState {
19
+ onTop = 'onTop',
20
+ onlyWebView = 'webViewScroll',
21
+ onlyBottomSheet = 'onlyBottomSheet',
22
+ unScrollable = 'unScrollable'
23
+ }
24
+
17
25
  export const UNBottomSheetComponent = () => {
18
26
  const [isBottomSheetActive, setIsBottomSheetActive] = useState(false);
19
27
  const [height, setHeight] = useState(0);
20
28
 
21
29
  const [renderingRequest, setRenderingRequest] = useState<string | null>(null);
22
- const [shouldEnableWebViewScroll, setShouldEnableWebViewScroll] = useState(false);
30
+ const [scrollState, setScrollState] = useState<ScrollState>(ScrollState.onTop);
23
31
 
24
32
  const [waitForLoadingNewComponent, setWaitForLoadingNewComponent] = useState(false);
25
33
  const [newHeightMessage, setNewHeightMessage] = useState<WebViewMessage | null>(null);
@@ -53,6 +61,7 @@ export const UNBottomSheetComponent = () => {
53
61
  webRef.current && resetHtml(webRef.current);
54
62
  setHeight(0);
55
63
  setRenderingRequest(null);
64
+ setScrollState(ScrollState.onTop);
56
65
  }
57
66
  }, [isBottomSheetActive]);
58
67
 
@@ -71,10 +80,10 @@ export const UNBottomSheetComponent = () => {
71
80
  if (nativePlace == 'overFullScreen') {
72
81
  const bottomSheetNewHeight = handleHtmlFullHeight(webRef.current, Dimensions.get('window').height);
73
82
  setHeight(bottomSheetNewHeight);
74
- setShouldEnableWebViewScroll(true);
83
+ setScrollState(ScrollState.onTop);
75
84
  } else {
76
85
  setHeight((message.details as HeightEvent).height);
77
- setShouldEnableWebViewScroll(false);
86
+ setScrollState(ScrollState.unScrollable);
78
87
  }
79
88
  }
80
89
  };
@@ -108,6 +117,25 @@ export const UNBottomSheetComponent = () => {
108
117
  }
109
118
  };
110
119
 
120
+ const onScrollWebView = (event: any) => {
121
+ if (scrollState === ScrollState.unScrollable) return;
122
+
123
+ const currY = event.nativeEvent.contentOffset.y;
124
+
125
+ if (ScrollState.onTop && currY < 5) {
126
+ setScrollState(ScrollState.onlyBottomSheet);
127
+ }
128
+
129
+ if ( scrollState !== ScrollState.onlyWebView && scrollState === ScrollState.onTop && currY > 5) {
130
+ setScrollState(ScrollState.onlyWebView);
131
+ }
132
+ };
133
+
134
+ const handleWebViewScroll = () => {
135
+ if (scrollState === ScrollState.unScrollable) return;
136
+ setScrollState(ScrollState.onlyWebView);
137
+ };
138
+
111
139
  return (
112
140
  <>
113
141
  <View
@@ -119,6 +147,8 @@ export const UNBottomSheetComponent = () => {
119
147
  height={height}
120
148
  onClose={() => setIsBottomSheetActive(false)}
121
149
  onOpen={() => setIsBottomSheetActive(true)}
150
+ handleWebViewScroll={() => handleWebViewScroll()}
151
+ shouldEnableBottomSheetScroll={scrollState !== ScrollState.onlyWebView}
122
152
  >
123
153
  { isAppActive && (
124
154
  <WebComponent
@@ -127,7 +157,8 @@ export const UNBottomSheetComponent = () => {
127
157
  presentationMode={PresentationMode.CoverInjectedHeight}
128
158
  script={getBottomSheetScript()}
129
159
  onMessage={onWebMessage}
130
- shouldEnableWebViewScroll={shouldEnableWebViewScroll}
160
+ isScrollable={scrollState === ScrollState.onlyWebView || scrollState === ScrollState.onTop}
161
+ handleScroll={onScrollWebView}
131
162
  />)}
132
163
  </BottomSheet>
133
164
  </View>
@@ -66,7 +66,7 @@ export const UNCardComponent = (props: UNCardComponentProps) => {
66
66
  script={getCardScript()}
67
67
  onMessage={message => handleMessage(message)}
68
68
  width={windowWidth}
69
- shouldEnableWebViewScroll={false}
69
+ isScrollable={false}
70
70
  />
71
71
  </View>
72
72
  );
@@ -25,6 +25,8 @@ export interface BottomSheetProps {
25
25
  height: number,
26
26
  animationDuration: number,
27
27
  expandToMaxHeightEnabled: boolean
28
+ handleWebViewScroll: () => void
29
+ shouldEnableBottomSheetScroll: boolean
28
30
  }
29
31
 
30
32
  const BottomSheet = (props: BottomSheetProps) => {
@@ -39,12 +41,13 @@ const BottomSheet = (props: BottomSheetProps) => {
39
41
  const [dy, setDy] = useState(0);
40
42
 
41
43
  const _parentPanResponder = PanResponder.create({
42
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
43
- onMoveShouldSetPanResponderCapture: (_,) => { //gestureState) => {
44
- return false;
45
- // return Math.abs(gestureState.dy) > 10
44
+ onMoveShouldSetPanResponderCapture: (_, gestureState) => {
45
+ return props.shouldEnableBottomSheetScroll && Math.abs(gestureState.dy) > 10;
46
46
  },
47
47
  onPanResponderMove(_, gestureState) {
48
+ if (props.shouldEnableBottomSheetScroll && gestureState.dy < 5) {
49
+ props.handleWebViewScroll();
50
+ }
48
51
  if (currentHeight + gestureState.dy < 0) return;
49
52
  if (!props.expandToMaxHeightEnabled && contentHeight && currentHeight + gestureState.dy < sliderMaxHeight - contentHeight) return;
50
53
  panelHeightValue.setValue(currentHeight + gestureState.dy);
@@ -199,7 +202,6 @@ const BottomSheet = (props: BottomSheetProps) => {
199
202
 
200
203
  <View
201
204
  onLayout={_setSize}
202
- style={[styles.innerContent]}
203
205
  >
204
206
  <KeyboardAvoidingView
205
207
  behavior="padding"
@@ -1,6 +1,6 @@
1
1
  export enum PageMessage {
2
2
  PAGE_LOADED = 'pageLoaded',
3
- PAGE_HEIGHT = 'pageHeight'
3
+ PAGE_HEIGHT = 'pageHeight',
4
4
  }
5
5
 
6
6
  export interface HeightEvent {
@@ -0,0 +1,12 @@
1
+ import {
2
+ requireNativeComponent,
3
+ } from 'react-native';
4
+
5
+ type UnitAddToWalletButtonViewProps = {
6
+ style: object;
7
+ onAddToWalletClicked: () => void;
8
+ };
9
+
10
+ const UnitAddToWalletButtonView = requireNativeComponent<UnitAddToWalletButtonViewProps>('UnitAddToWalletButtonView');
11
+
12
+ export default UnitAddToWalletButtonView;
@@ -13,7 +13,7 @@ export class UnitSDK {
13
13
  protected static env?: UNEnvironment;
14
14
  protected static theme?: string;
15
15
 
16
- public static init = async (env: UNEnvironment, theme: string) => {
16
+ public static init = async (env: UNEnvironment, theme?: string) => {
17
17
  try {
18
18
  this.env = env;
19
19
  this.theme = theme;
@@ -1,13 +1,14 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
1
2
  import React, { useEffect, useState } from 'react';
2
3
  import { WebView, WebViewMessageEvent } from 'react-native-webview';
3
4
  import EventBus from '../helpers/EventBus';
4
5
  import html, { HTML_PLACEHOLDER } from './html';
5
6
  import { RequestRefreshEvent, UnitMessage } from '../messages/webMessages/unitMessages';
6
7
  import { useListenerToBus } from '../hooks/listenerToBus';
7
- import type { WebViewMessage } from '../messages/webMessages';
8
8
  import { getHtmlBody, PresentationMode } from '../scripts/html/bodyHtml';
9
9
  import { fetchUnitScript, globalUnitScript } from '../unitSdkManager/UnitSdk.api';
10
10
  import { NativeMessage } from '../messages/nativeMessages';
11
+ import type { WebViewMessage } from '../messages/webMessages';
11
12
 
12
13
  export interface WebComponentProps {
13
14
  type: WebComponentType;
@@ -15,8 +16,9 @@ export interface WebComponentProps {
15
16
  params?: string;
16
17
  onMessage?: (message: WebViewMessage) => void;
17
18
  script?: string;
19
+ isScrollable?: boolean,
20
+ handleScroll?: (event: any) => void,
18
21
  width?: number;
19
- shouldEnableWebViewScroll?: boolean;
20
22
  }
21
23
 
22
24
  export enum WebComponentType {
@@ -29,6 +31,7 @@ export enum WebComponentType {
29
31
  export const WebComponent = React.forwardRef<WebView, WebComponentProps>(function WebComponent(props, webRef) {
30
32
  const [unitScript, setUnitScript] = useState<string | undefined>(globalUnitScript);
31
33
  const [sourceHtml, setSourceHtml] = useState<string | null>(null);
34
+ const width = props.width ?? '100%';
32
35
 
33
36
  const listenerAction = (data: { unitScript?: string }) => {
34
37
  setUnitScript(data.unitScript);
@@ -59,14 +62,23 @@ export const WebComponent = React.forwardRef<WebView, WebComponentProps>(functio
59
62
 
60
63
  if (!sourceHtml) return null;
61
64
 
65
+ const _onScroll = (event: any) => {
66
+ if (props.handleScroll) {
67
+ props.handleScroll(event);
68
+ }
69
+
70
+ return null;
71
+ };
72
+
62
73
  return (
63
74
  <WebView
64
75
  ref={webRef}
65
76
  cacheEnabled={false}
66
- scrollEnabled={props.shouldEnableWebViewScroll}
77
+ scrollEnabled={props.isScrollable}
78
+ onScroll={_onScroll}
67
79
  overScrollMode="never"
68
80
  injectedJavaScript={unitScript}
69
- style={{ width: props.width ?? '100%', flex: 1 }}
81
+ style={{ width: width, flex: 1 }}
70
82
  source={{ html: sourceHtml }}
71
83
  onMessage={onMessage} />
72
84
  );