@wavemaker/app-rn-runtime 11.5.0-next.40301 → 11.5.0-rc.5392

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 (270) hide show
  1. app-rn-runtime/components/advanced/carousel/carousel-template/carousel-template.component.js +4 -1
  2. app-rn-runtime/components/advanced/carousel/carousel-template/carousel-template.component.js.map +1 -1
  3. app-rn-runtime/components/advanced/carousel/carousel-template/carousel-template.styles.js +1 -2
  4. app-rn-runtime/components/advanced/carousel/carousel-template/carousel-template.styles.js.map +1 -1
  5. app-rn-runtime/components/advanced/carousel/carousel.component.js +130 -68
  6. app-rn-runtime/components/advanced/carousel/carousel.component.js.map +1 -1
  7. app-rn-runtime/components/advanced/carousel/carousel.props.js +3 -0
  8. app-rn-runtime/components/advanced/carousel/carousel.props.js.map +1 -1
  9. app-rn-runtime/components/advanced/carousel/carousel.styles.js +17 -9
  10. app-rn-runtime/components/advanced/carousel/carousel.styles.js.map +1 -1
  11. app-rn-runtime/components/advanced/login/login.component.js +3 -2
  12. app-rn-runtime/components/advanced/login/login.component.js.map +1 -1
  13. app-rn-runtime/components/advanced/network-info-toaster/network-info-toaster.component.js +17 -16
  14. app-rn-runtime/components/advanced/network-info-toaster/network-info-toaster.component.js.map +1 -1
  15. app-rn-runtime/components/advanced/webview/webview.component.js +1 -0
  16. app-rn-runtime/components/advanced/webview/webview.component.js.map +1 -1
  17. app-rn-runtime/components/basic/anchor/anchor.component.js +7 -5
  18. app-rn-runtime/components/basic/anchor/anchor.component.js.map +1 -1
  19. app-rn-runtime/components/basic/animatedview.component.js +50 -0
  20. app-rn-runtime/components/basic/animatedview.component.js.map +1 -1
  21. app-rn-runtime/components/basic/audio/audio.component.js +5 -0
  22. app-rn-runtime/components/basic/audio/audio.component.js.map +1 -1
  23. app-rn-runtime/components/basic/button/button.component.js +7 -6
  24. app-rn-runtime/components/basic/button/button.component.js.map +1 -1
  25. app-rn-runtime/components/basic/button/button.styles.js +14 -4
  26. app-rn-runtime/components/basic/button/button.styles.js.map +1 -1
  27. app-rn-runtime/components/basic/buttongroup/buttongroup.styles.js +2 -1
  28. app-rn-runtime/components/basic/buttongroup/buttongroup.styles.js.map +1 -1
  29. app-rn-runtime/components/basic/icon/icon.component.js +11 -5
  30. app-rn-runtime/components/basic/icon/icon.component.js.map +1 -1
  31. app-rn-runtime/components/basic/icon/icon.props.js +1 -0
  32. app-rn-runtime/components/basic/icon/icon.props.js.map +1 -1
  33. app-rn-runtime/components/basic/label/label.component.js +60 -3
  34. app-rn-runtime/components/basic/label/label.component.js.map +1 -1
  35. app-rn-runtime/components/basic/label/label.styles.js +2 -1
  36. app-rn-runtime/components/basic/label/label.styles.js.map +1 -1
  37. app-rn-runtime/components/basic/message/message.component.js +6 -3
  38. app-rn-runtime/components/basic/message/message.component.js.map +1 -1
  39. app-rn-runtime/components/basic/picture/picture.component.js +7 -5
  40. app-rn-runtime/components/basic/picture/picture.component.js.map +1 -1
  41. app-rn-runtime/components/basic/progress-bar/progress-bar.component.js +4 -2
  42. app-rn-runtime/components/basic/progress-bar/progress-bar.component.js.map +1 -1
  43. app-rn-runtime/components/basic/progress-bar/progress-bar.styles.js +1 -1
  44. app-rn-runtime/components/basic/progress-bar/progress-bar.styles.js.map +1 -1
  45. app-rn-runtime/components/basic/progress-circle/progress-circle.component.js +3 -2
  46. app-rn-runtime/components/basic/progress-circle/progress-circle.component.js.map +1 -1
  47. app-rn-runtime/components/basic/search/search.component.js +12 -6
  48. app-rn-runtime/components/basic/search/search.component.js.map +1 -1
  49. app-rn-runtime/components/basic/search/search.styles.js +11 -10
  50. app-rn-runtime/components/basic/search/search.styles.js.map +1 -1
  51. app-rn-runtime/components/basic/spinner/spinner.component.js +6 -2
  52. app-rn-runtime/components/basic/spinner/spinner.component.js.map +1 -1
  53. app-rn-runtime/components/basic/spinner/spinner.styles.js +3 -2
  54. app-rn-runtime/components/basic/spinner/spinner.styles.js.map +1 -1
  55. app-rn-runtime/components/basic/video/video.component.js +2 -1
  56. app-rn-runtime/components/basic/video/video.component.js.map +1 -1
  57. app-rn-runtime/components/chart/basechart.component.js +19 -8
  58. app-rn-runtime/components/chart/basechart.component.js.map +1 -1
  59. app-rn-runtime/components/chart/pie-chart/pie-chart.component.js +23 -2
  60. app-rn-runtime/components/chart/pie-chart/pie-chart.component.js.map +1 -1
  61. app-rn-runtime/components/chart/pie-chart/pie-chart.props.js +1 -0
  62. app-rn-runtime/components/chart/pie-chart/pie-chart.props.js.map +1 -1
  63. app-rn-runtime/components/chart/stack-chart/stack-chart.component.js +213 -0
  64. app-rn-runtime/components/chart/stack-chart/stack-chart.component.js.map +1 -0
  65. app-rn-runtime/components/chart/stack-chart/stack-chart.props.js +15 -0
  66. app-rn-runtime/components/chart/stack-chart/stack-chart.props.js.map +1 -0
  67. app-rn-runtime/components/chart/stack-chart/stack-chart.styles.js +7 -0
  68. app-rn-runtime/components/chart/stack-chart/stack-chart.styles.js.map +1 -0
  69. app-rn-runtime/components/container/accordion/accordion.component.js +22 -15
  70. app-rn-runtime/components/container/accordion/accordion.component.js.map +1 -1
  71. app-rn-runtime/components/container/accordion/accordionpane/accordionpane.component.js +6 -24
  72. app-rn-runtime/components/container/accordion/accordionpane/accordionpane.component.js.map +1 -1
  73. app-rn-runtime/components/container/container.component.js +3 -2
  74. app-rn-runtime/components/container/container.component.js.map +1 -1
  75. app-rn-runtime/components/container/panel/collapsible-pane.component.js +26 -0
  76. app-rn-runtime/components/container/panel/collapsible-pane.component.js.map +1 -0
  77. app-rn-runtime/components/container/panel/panel.component.js +44 -62
  78. app-rn-runtime/components/container/panel/panel.component.js.map +1 -1
  79. app-rn-runtime/components/container/panel/panel.styles.js +9 -2
  80. app-rn-runtime/components/container/panel/panel.styles.js.map +1 -1
  81. app-rn-runtime/components/container/partial-host.component.js +1 -1
  82. app-rn-runtime/components/container/partial-host.component.js.map +1 -1
  83. app-rn-runtime/components/container/tabs/tabheader/tabheader.component.js +7 -5
  84. app-rn-runtime/components/container/tabs/tabheader/tabheader.component.js.map +1 -1
  85. app-rn-runtime/components/container/tabs/tabheader/tabheader.styles.js +9 -5
  86. app-rn-runtime/components/container/tabs/tabheader/tabheader.styles.js.map +1 -1
  87. app-rn-runtime/components/container/tabs/tabpane/tabpane.component.js +1 -1
  88. app-rn-runtime/components/container/tabs/tabpane/tabpane.component.js.map +1 -1
  89. app-rn-runtime/components/container/tabs/tabs.component.js +1 -0
  90. app-rn-runtime/components/container/tabs/tabs.component.js.map +1 -1
  91. app-rn-runtime/components/container/tile/tile.component.js +3 -2
  92. app-rn-runtime/components/container/tile/tile.component.js.map +1 -1
  93. app-rn-runtime/components/container/wizard/wizard.component.js +9 -4
  94. app-rn-runtime/components/container/wizard/wizard.component.js.map +1 -1
  95. app-rn-runtime/components/container/wizard/wizard.styles.js +18 -5
  96. app-rn-runtime/components/container/wizard/wizard.styles.js.map +1 -1
  97. app-rn-runtime/components/data/card/card-content/card-content.component.js +1 -1
  98. app-rn-runtime/components/data/card/card-content/card-content.component.js.map +1 -1
  99. app-rn-runtime/components/data/card/card.component.js +3 -2
  100. app-rn-runtime/components/data/card/card.component.js.map +1 -1
  101. app-rn-runtime/components/data/form/form-action/form-action.component.js +1 -0
  102. app-rn-runtime/components/data/form/form-action/form-action.component.js.map +1 -1
  103. app-rn-runtime/components/data/form/form-field/form-field.component.js +3 -2
  104. app-rn-runtime/components/data/form/form-field/form-field.component.js.map +1 -1
  105. app-rn-runtime/components/data/form/form.component.js +3 -0
  106. app-rn-runtime/components/data/form/form.component.js.map +1 -1
  107. app-rn-runtime/components/data/list/list-template/list-template.component.js +15 -1
  108. app-rn-runtime/components/data/list/list-template/list-template.component.js.map +1 -1
  109. app-rn-runtime/components/data/list/list-template/list-template.styles.js +9 -1
  110. app-rn-runtime/components/data/list/list-template/list-template.styles.js.map +1 -1
  111. app-rn-runtime/components/data/list/list.component.js +38 -27
  112. app-rn-runtime/components/data/list/list.component.js.map +1 -1
  113. app-rn-runtime/components/data/list/list.props.js +6 -0
  114. app-rn-runtime/components/data/list/list.props.js.map +1 -1
  115. app-rn-runtime/components/data/list/list.styles.js +12 -5
  116. app-rn-runtime/components/data/list/list.styles.js.map +1 -1
  117. app-rn-runtime/components/device/barcodescanner/barcodescanner.component.js +1 -0
  118. app-rn-runtime/components/device/barcodescanner/barcodescanner.component.js.map +1 -1
  119. app-rn-runtime/components/device/barcodescanner/barcodescanner.styles.js +2 -1
  120. app-rn-runtime/components/device/barcodescanner/barcodescanner.styles.js.map +1 -1
  121. app-rn-runtime/components/device/camera/camera.component.js +1 -0
  122. app-rn-runtime/components/device/camera/camera.component.js.map +1 -1
  123. app-rn-runtime/components/device/camera/camera.styles.js +2 -1
  124. app-rn-runtime/components/device/camera/camera.styles.js.map +1 -1
  125. app-rn-runtime/components/dialogs/alertdialog/alertdialog.component.js +4 -1
  126. app-rn-runtime/components/dialogs/alertdialog/alertdialog.component.js.map +1 -1
  127. app-rn-runtime/components/dialogs/alertdialog/alertdialog.styles.js +9 -3
  128. app-rn-runtime/components/dialogs/alertdialog/alertdialog.styles.js.map +1 -1
  129. app-rn-runtime/components/dialogs/confirmdialog/confirmdialog.component.js +6 -2
  130. app-rn-runtime/components/dialogs/confirmdialog/confirmdialog.component.js.map +1 -1
  131. app-rn-runtime/components/dialogs/confirmdialog/confirmdialog.styles.js +10 -10
  132. app-rn-runtime/components/dialogs/confirmdialog/confirmdialog.styles.js.map +1 -1
  133. app-rn-runtime/components/dialogs/dialog/dialog.component.js +2 -0
  134. app-rn-runtime/components/dialogs/dialog/dialog.component.js.map +1 -1
  135. app-rn-runtime/components/dialogs/dialog/dialog.styles.js +17 -8
  136. app-rn-runtime/components/dialogs/dialog/dialog.styles.js.map +1 -1
  137. app-rn-runtime/components/dialogs/dialogcontent/dialogcontent.component.js +4 -2
  138. app-rn-runtime/components/dialogs/dialogcontent/dialogcontent.component.js.map +1 -1
  139. app-rn-runtime/components/dialogs/dialogcontent/dialogcontent.styles.js +2 -1
  140. app-rn-runtime/components/dialogs/dialogcontent/dialogcontent.styles.js.map +1 -1
  141. app-rn-runtime/components/input/calendar/calendar.component.js +4 -0
  142. app-rn-runtime/components/input/calendar/calendar.component.js.map +1 -1
  143. app-rn-runtime/components/input/calendar/calendar.styles.js +22 -11
  144. app-rn-runtime/components/input/calendar/calendar.styles.js.map +1 -1
  145. app-rn-runtime/components/input/calendar/views/month-view.js +4 -0
  146. app-rn-runtime/components/input/calendar/views/month-view.js.map +1 -1
  147. app-rn-runtime/components/input/checkbox/checkbox.component.js +6 -6
  148. app-rn-runtime/components/input/checkbox/checkbox.component.js.map +1 -1
  149. app-rn-runtime/components/input/checkboxset/checkboxset.component.js +5 -4
  150. app-rn-runtime/components/input/checkboxset/checkboxset.component.js.map +1 -1
  151. app-rn-runtime/components/input/chips/chips.component.js +8 -4
  152. app-rn-runtime/components/input/chips/chips.component.js.map +1 -1
  153. app-rn-runtime/components/input/chips/chips.styles.js +20 -12
  154. app-rn-runtime/components/input/chips/chips.styles.js.map +1 -1
  155. app-rn-runtime/components/input/composite/composite.component.js +8 -1
  156. app-rn-runtime/components/input/composite/composite.component.js.map +1 -1
  157. app-rn-runtime/components/input/composite/composite.props.js +1 -0
  158. app-rn-runtime/components/input/composite/composite.props.js.map +1 -1
  159. app-rn-runtime/components/input/composite/composite.styles.js +16 -1
  160. app-rn-runtime/components/input/composite/composite.styles.js.map +1 -1
  161. app-rn-runtime/components/input/currency/currency.component.js +1 -1
  162. app-rn-runtime/components/input/currency/currency.component.js.map +1 -1
  163. app-rn-runtime/components/input/currency/currency.styles.js +12 -4
  164. app-rn-runtime/components/input/currency/currency.styles.js.map +1 -1
  165. app-rn-runtime/components/input/epoch/base-datetime.component.js +6 -4
  166. app-rn-runtime/components/input/epoch/base-datetime.component.js.map +1 -1
  167. app-rn-runtime/components/input/fileupload/fileupload.component.js +1 -0
  168. app-rn-runtime/components/input/fileupload/fileupload.component.js.map +1 -1
  169. app-rn-runtime/components/input/number/number.component.js +1 -1
  170. app-rn-runtime/components/input/number/number.component.js.map +1 -1
  171. app-rn-runtime/components/input/number/number.styles.js +6 -2
  172. app-rn-runtime/components/input/number/number.styles.js.map +1 -1
  173. app-rn-runtime/components/input/radioset/radioset.component.js +10 -5
  174. app-rn-runtime/components/input/radioset/radioset.component.js.map +1 -1
  175. app-rn-runtime/components/input/radioset/radioset.props.js +6 -0
  176. app-rn-runtime/components/input/radioset/radioset.props.js.map +1 -1
  177. app-rn-runtime/components/input/radioset/radioset.styles.js +4 -8
  178. app-rn-runtime/components/input/radioset/radioset.styles.js.map +1 -1
  179. app-rn-runtime/components/input/rating/rating.component.js +2 -0
  180. app-rn-runtime/components/input/rating/rating.component.js.map +1 -1
  181. app-rn-runtime/components/input/select/select.component.js +17 -13
  182. app-rn-runtime/components/input/select/select.component.js.map +1 -1
  183. app-rn-runtime/components/input/select/select.styles.js +8 -4
  184. app-rn-runtime/components/input/select/select.styles.js.map +1 -1
  185. app-rn-runtime/components/input/slider/slider.component.js +94 -23
  186. app-rn-runtime/components/input/slider/slider.component.js.map +1 -1
  187. app-rn-runtime/components/input/slider/slider.styles.js +27 -2
  188. app-rn-runtime/components/input/slider/slider.styles.js.map +1 -1
  189. app-rn-runtime/components/input/switch/switch.component.js +6 -4
  190. app-rn-runtime/components/input/switch/switch.component.js.map +1 -1
  191. app-rn-runtime/components/input/switch/switch.styles.js +7 -4
  192. app-rn-runtime/components/input/switch/switch.styles.js.map +1 -1
  193. app-rn-runtime/components/input/text/text.component.js +1 -1
  194. app-rn-runtime/components/input/text/text.component.js.map +1 -1
  195. app-rn-runtime/components/input/text/text.styles.js +5 -1
  196. app-rn-runtime/components/input/text/text.styles.js.map +1 -1
  197. app-rn-runtime/components/input/textarea/textarea.component.js +1 -1
  198. app-rn-runtime/components/input/textarea/textarea.component.js.map +1 -1
  199. app-rn-runtime/components/input/toggle/toggle.component.js +3 -2
  200. app-rn-runtime/components/input/toggle/toggle.component.js.map +1 -1
  201. app-rn-runtime/components/input/toggle/toggle.styles.js +21 -9
  202. app-rn-runtime/components/input/toggle/toggle.styles.js.map +1 -1
  203. app-rn-runtime/components/navigation/appnavbar/appnavbar.component.js +7 -2
  204. app-rn-runtime/components/navigation/appnavbar/appnavbar.component.js.map +1 -1
  205. app-rn-runtime/components/navigation/appnavbar/appnavbar.styles.js +1 -1
  206. app-rn-runtime/components/navigation/appnavbar/appnavbar.styles.js.map +1 -1
  207. app-rn-runtime/components/navigation/basenav/basenav.component.js +2 -0
  208. app-rn-runtime/components/navigation/basenav/basenav.component.js.map +1 -1
  209. app-rn-runtime/components/navigation/menu/menu.component.js +5 -3
  210. app-rn-runtime/components/navigation/menu/menu.component.js.map +1 -1
  211. app-rn-runtime/components/navigation/menu/menu.styles.js +10 -6
  212. app-rn-runtime/components/navigation/menu/menu.styles.js.map +1 -1
  213. app-rn-runtime/components/navigation/navbar/navbar.component.js +7 -4
  214. app-rn-runtime/components/navigation/navbar/navbar.component.js.map +1 -1
  215. app-rn-runtime/components/navigation/navitem/navitem.component.js +5 -1
  216. app-rn-runtime/components/navigation/navitem/navitem.component.js.map +1 -1
  217. app-rn-runtime/components/navigation/navitem/navitem.styles.js +14 -10
  218. app-rn-runtime/components/navigation/navitem/navitem.styles.js.map +1 -1
  219. app-rn-runtime/components/navigation/popover/popover.component.js +10 -5
  220. app-rn-runtime/components/navigation/popover/popover.component.js.map +1 -1
  221. app-rn-runtime/components/navigation/popover/popover.props.js.map +1 -1
  222. app-rn-runtime/components/navigation/popover/popover.styles.js +8 -2
  223. app-rn-runtime/components/navigation/popover/popover.styles.js.map +1 -1
  224. app-rn-runtime/components/page/left-panel/left-panel.component.js +1 -1
  225. app-rn-runtime/components/page/left-panel/left-panel.component.js.map +1 -1
  226. app-rn-runtime/components/page/left-panel/left-panel.styles.js +6 -1
  227. app-rn-runtime/components/page/left-panel/left-panel.styles.js.map +1 -1
  228. app-rn-runtime/components/page/tabbar/tabbar.component.js +7 -6
  229. app-rn-runtime/components/page/tabbar/tabbar.component.js.map +1 -1
  230. app-rn-runtime/components/page/tabbar/tabbar.styles.js +22 -0
  231. app-rn-runtime/components/page/tabbar/tabbar.styles.js.map +1 -1
  232. app-rn-runtime/core/base.component.js +80 -37
  233. app-rn-runtime/core/base.component.js.map +1 -1
  234. app-rn-runtime/core/formatters.js +9 -2
  235. app-rn-runtime/core/formatters.js.map +1 -1
  236. app-rn-runtime/core/imageSizeEstimator.js +4 -0
  237. app-rn-runtime/core/imageSizeEstimator.js.map +1 -1
  238. app-rn-runtime/core/key.extractor.js +22 -0
  239. app-rn-runtime/core/key.extractor.js.map +1 -0
  240. app-rn-runtime/core/tappable.component.js +15 -5
  241. app-rn-runtime/core/tappable.component.js.map +1 -1
  242. app-rn-runtime/core/testid.provider.js +5 -0
  243. app-rn-runtime/core/testid.provider.js.map +1 -0
  244. app-rn-runtime/gestures/swipe.animation.js +34 -11
  245. app-rn-runtime/gestures/swipe.animation.js.map +1 -1
  246. app-rn-runtime/package.json +4 -3
  247. app-rn-runtime/runtime/App.js +27 -4
  248. app-rn-runtime/runtime/App.js.map +1 -1
  249. app-rn-runtime/runtime/base-fragment.component.js +13 -3
  250. app-rn-runtime/runtime/base-fragment.component.js.map +1 -1
  251. app-rn-runtime/runtime/base-page.component.js +17 -0
  252. app-rn-runtime/runtime/base-page.component.js.map +1 -1
  253. app-rn-runtime/runtime/services/app-security.service.js +14 -3
  254. app-rn-runtime/runtime/services/app-security.service.js.map +1 -1
  255. app-rn-runtime/runtime/services/device/camera-service.js +26 -9
  256. app-rn-runtime/runtime/services/device/camera-service.js.map +1 -1
  257. app-rn-runtime/runtime/services/device/scan-service.js +16 -2
  258. app-rn-runtime/runtime/services/device/scan-service.js.map +1 -1
  259. app-rn-runtime/styles/theme.js +30 -1
  260. app-rn-runtime/styles/theme.js.map +1 -1
  261. app-rn-runtime/styles/theme.variables.js +14 -3
  262. app-rn-runtime/styles/theme.variables.js.map +1 -1
  263. app-rn-runtime/variables/http.service.js +1 -1
  264. app-rn-runtime/variables/http.service.js.map +1 -1
  265. app-rn-runtime/variables/live-variable.js +1 -0
  266. app-rn-runtime/variables/live-variable.js.map +1 -1
  267. app-rn-runtime/variables/model-variable.js +11 -0
  268. app-rn-runtime/variables/model-variable.js.map +1 -1
  269. app-rn-runtime/variables/service-variable.js +1 -0
  270. app-rn-runtime/variables/service-variable.js.map +1 -1
@@ -55,7 +55,7 @@ class AppSecurityService {
55
55
  }
56
56
  navigateToLandingPage(details) {
57
57
  var _this$appConfig$curre, _details$userInfo;
58
- (_this$appConfig$curre = this.appConfig.currentPage) === null || _this$appConfig$curre === void 0 ? void 0 : _this$appConfig$curre.goToPage(((_details$userInfo = details.userInfo) === null || _details$userInfo === void 0 ? void 0 : _details$userInfo.landingPage) || 'Main');
58
+ (_this$appConfig$curre = this.appConfig.currentPage) === null || _this$appConfig$curre === void 0 ? void 0 : _this$appConfig$curre.goToPage(((_details$userInfo = details.userInfo) === null || _details$userInfo === void 0 ? void 0 : _details$userInfo.landingPage) || 'Main', null, true);
59
59
  }
60
60
  appLogin(options) {
61
61
  // encode all parameters
@@ -74,7 +74,11 @@ class AppSecurityService {
74
74
  this.token = xsrfCookieValue;
75
75
  StorageService.setItem(XSRF_COOKIE_NAME, xsrfCookieValue);
76
76
  this.isLoggedIn = true;
77
- }).then(() => this.load(options.baseURL)).then(() => this.getLoggedInUserDetails(options.baseURL, options.useDefaultSuccessHandler));
77
+ }).then(() => this.load(options.baseURL)).then(async () => {
78
+ const userData = await this.getLoggedInUserDetails(options.baseURL, options.useDefaultSuccessHandler);
79
+ await this.appConfig.app.triggerStartUpVariables();
80
+ return userData;
81
+ });
78
82
  }
79
83
  load(baseURL) {
80
84
  return Promise.resolve().then(() => {
@@ -145,7 +149,7 @@ class AppSecurityService {
145
149
  var _this$securityConfig$, _this$appConfig$curre2;
146
150
  const loginPage = ((_this$securityConfig$ = this.securityConfig.loginConfig) === null || _this$securityConfig$ === void 0 ? void 0 : _this$securityConfig$.pageName) || 'Login';
147
151
  injector.get('APP_CONFIG').landingPage = loginPage;
148
- (_this$appConfig$curre2 = this.appConfig.currentPage) === null || _this$appConfig$curre2 === void 0 ? void 0 : _this$appConfig$curre2.goToPage(loginPage);
152
+ (_this$appConfig$curre2 = this.appConfig.currentPage) === null || _this$appConfig$curre2 === void 0 ? void 0 : _this$appConfig$curre2.goToPage(loginPage, null, true);
149
153
  }
150
154
  this.appConfig.refresh();
151
155
  }
@@ -157,6 +161,13 @@ class AppSecurityService {
157
161
  this.redirectToLogin();
158
162
  });
159
163
  }
164
+ canUserAccessPage(pageName) {
165
+ if (this.baseUrl) {
166
+ return axios.get(this.baseUrl + `/pages/${pageName}/${pageName}.html`).catch(res => res).then(res => res.status === 200 || res.status === 304);
167
+ } else {
168
+ return Promise.resolve(true);
169
+ }
170
+ }
160
171
  matchRoles(widgetRoles, userRoles) {
161
172
  return widgetRoles.some(function (item) {
162
173
  return includes(userRoles, item);
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","axios","each","includes","networkService","injector","StorageService","WebProcessService","USER_ROLE","authCookieStr","XSRF_COOKIE_NAME","xsrf_header_name","AppSecurityService","constructor","_defineProperty","interceptors","request","use","config","onBeforeServiceCall","appConfig","getAppConfig","baseUrl","url","getXsrfToken","then","token","_config$url","startsWith","headers","Promise","resolve","getItem","xsrf_token","get","navigateToLandingPage","details","_this$appConfig$curre","_details$userInfo","currentPage","goToPage","userInfo","landingPage","appLogin","options","payload","formData","value","name","encodeURIComponent","defaults","withCredentials","post","baseURL","response","xsrfCookieValue","data","setItem","isLoggedIn","load","getLoggedInUserDetails","useDefaultSuccessHandler","isConnected","getServiceDefinitions","defaultSecurityConfig","loggedInUser","securityConfig","securityEnabled","authenticated","isAuthenticated","isSecurityEnabled","roles","userRoles","userName","id","userId","tenantId","userAttributes","dataSet","redirectToLogin","arguments","length","undefined","_this$securityConfig","loginConfig","type","authUrl","OS","window","parent","location","href","setTimeout","execute","output","JSON","parse","replace","reject","refresh","_this$securityConfig$","_this$appConfig$curre2","loginPage","pageName","appLogout","catch","matchRoles","widgetRoles","some","item","hasAccessToWidget","_this$loggedInUser$da","_this$loggedInUser$da2","_this$loggedInUser$da3","_this$loggedInUser$da4","widgetRolesArr","split","EVERYONE","ANONYMOUS","AUTHENTICATED","appSecurityService"],"sources":["app-security.service.tsx"],"sourcesContent":["import { Platform } from 'react-native';\nimport axios, { InternalAxiosRequestConfig, AxiosResponse } from 'axios';\nimport { each, includes } from 'lodash';\n\nimport networkService from '@wavemaker/app-rn-runtime/core/network.service';\nimport injector from '@wavemaker/app-rn-runtime/core/injector';\nimport AppConfig from '@wavemaker/app-rn-runtime/core/AppConfig';\nimport StorageService from '@wavemaker/app-rn-runtime/core/storage.service';\nimport { SecurityService } from '@wavemaker/app-rn-runtime/core/security.service';\n\nimport WebProcessService from './webprocess.service';\n\ndeclare const window: any;\n\ninterface LoggedInUserConfig {\n isAuthenticated: Boolean;\n isSecurityEnabled: Boolean;\n roles: Array<string>;\n name: String;\n id: String;\n tenantId: String;\n userAttributes: any;\n}\n\nenum USER_ROLE {\n EVERYONE = 'Everyone',\n ANONYMOUS = 'Anonymous',\n AUTHENTICATED = 'Authenticated'\n}\n\nconst authCookieStr = 'AUTH_COOKIE';\nconst XSRF_COOKIE_NAME = 'wm_xsrf_token';\nconst xsrf_header_name = 'X-WM-XSRF-TOKEN';\n\nclass AppSecurityService implements SecurityService {\n\n securityConfig: any;\n isLoggedIn = false;\n loggedInUser: any = {};\n token: any;\n appConfig: any;\n baseUrl: string = '';\n defaultSecurityConfig: any;\n\n constructor() {\n axios.interceptors.request.use((config: InternalAxiosRequestConfig) => this.onBeforeServiceCall(config));\n }\n\n onBeforeServiceCall(config: InternalAxiosRequestConfig) {\n if (!this.appConfig) {\n this.appConfig = this.getAppConfig();\n this.baseUrl = this.appConfig.url;\n }\n return this.getXsrfToken().then((token: string) => {\n if (config.url?.startsWith(this.baseUrl) && token) {\n if(config.headers) config.headers[xsrf_header_name] = token;\n }\n return config\n });\n }\n\n private getXsrfToken(): Promise<string> {\n if (this.token) {\n return Promise.resolve(this.token);\n }\n return StorageService.getItem(XSRF_COOKIE_NAME).then(xsrf_token => {\n this.token = xsrf_token;\n return this.token;\n });\n }\n\n private getAppConfig() {\n return injector.get<AppConfig>('APP_CONFIG');\n }\n\n public navigateToLandingPage(details: any) {\n this.appConfig.currentPage?.goToPage(details.userInfo?.landingPage || 'Main');\n }\n\n public appLogin(options: any) {\n // encode all parameters\n let payload = '';\n each(options.formData, function (value, name) {\n payload += (payload ? '&' : '') + encodeURIComponent(name) + '=' + encodeURIComponent(value);\n });\n axios.defaults.withCredentials = true;\n return axios.post(options.baseURL + '/j_spring_security_check', payload, {\n withCredentials: true,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n }}).then((response: AxiosResponse) => {\n const xsrfCookieValue = response.data ? response.data[XSRF_COOKIE_NAME] : '';\n this.token = xsrfCookieValue;\n StorageService.setItem(XSRF_COOKIE_NAME, xsrfCookieValue);\n this.isLoggedIn = true;\n }).then(() => this.load(options.baseURL))\n .then(() => this.getLoggedInUserDetails(options.baseURL, options.useDefaultSuccessHandler));\n }\n\n public load(baseURL: string) {\n return Promise.resolve().then(() => {\n if (networkService.isConnected()) {\n return axios.get(baseURL + '/services/security/info')\n .then((response: AxiosResponse) => response.data);\n }\n return this.appConfig.getServiceDefinitions(this.appConfig.url)\n .then(() => Promise.resolve(this.defaultSecurityConfig));\n }).then((details: any) => {\n const loggedInUser = {} as LoggedInUserConfig;\n this.securityConfig = details;\n const appConfig = this.appConfig;\n if (typeof details !== 'string' && (!details.securityEnabled || details.authenticated)) {\n if (details.authenticated) {\n loggedInUser.isAuthenticated = details.authenticated;\n loggedInUser.isSecurityEnabled = details.authenticated;\n loggedInUser.roles = details.userInfo.userRoles;\n loggedInUser.name = details.userInfo.userName;\n loggedInUser.id = details.userInfo.userId;\n loggedInUser.tenantId = details.userInfo.tenantId;\n loggedInUser.userAttributes = details.userInfo.userAttributes;\n appConfig.loggedInUser = loggedInUser;\n this.loggedInUser.dataSet = loggedInUser;\n }\n return appConfig.getServiceDefinitions(appConfig.url)\n .then(() => {\n return details;\n });\n } else {\n return appConfig.getServiceDefinitions(appConfig.url)\n .then(() => {\n this.redirectToLogin();\n });\n }\n });\n }\n\n private getLoggedInUserDetails(baseURL: string, useDefaultSuccessHandler: boolean = true) {\n if (!baseURL) {\n this.loggedInUser = {};\n return Promise.resolve({});\n }\n return this.load(baseURL);\n }\n\n \n public redirectToLogin() {\n if (this.securityConfig?.loginConfig?.type === 'SSO') {\n const authUrl = this.appConfig.url + '/services/security/ssologin';\n if (Platform.OS === 'web') {\n (window.parent || window).location.href = authUrl;\n } else {\n setTimeout(() => {\n WebProcessService.execute('LOGIN', '/services/security/ssologin', false, true)\n .then((output: any) => {\n if (output) {\n return JSON.parse(output.data && output.data.replace(/&quot;/g, \"\\\"\"));\n }\n return Promise.reject();\n }).then((output: any) => {\n if (output[XSRF_COOKIE_NAME]) {\n this.token = output[XSRF_COOKIE_NAME];\n StorageService.setItem(XSRF_COOKIE_NAME, output[XSRF_COOKIE_NAME]);\n }\n }).then(() => {\n this.appConfig.refresh(true);\n }).then(() => this.load(this.baseUrl)).then(() => {\n return this.getLoggedInUserDetails(this.baseUrl);\n });\n }, 1000);\n }\n } else {\n const loginPage = this.securityConfig.loginConfig?.pageName || 'Login';\n injector.get<AppConfig>('APP_CONFIG').landingPage = loginPage;\n this.appConfig.currentPage?.goToPage(loginPage);\n }\n this.appConfig.refresh();\n }\n\n public appLogout(options: any) {\n return axios.post(options.baseURL + '/j_spring_security_logout', null, {\n withCredentials: true\n }).catch(() => {}).then(() => {\n this.isLoggedIn = false;\n this.redirectToLogin();\n });\n }\n\n private matchRoles(widgetRoles: Array<String>, userRoles: Array<String>) {\n return widgetRoles.some(function (item) {\n return includes(userRoles, item);\n });\n }\n\n public hasAccessToWidget(widgetRoles: String) {\n const widgetRolesArr = widgetRoles.split(',');\n // access the widget when 'Everyone' is chosen\n if (includes(widgetRolesArr, USER_ROLE.EVERYONE)) {\n return true;\n }\n\n // access the widget when 'Anonymous' is chosen and user is not authenticated\n if (includes(widgetRolesArr, USER_ROLE.ANONYMOUS) && !this.loggedInUser.dataSet?.isAuthenticated) {\n return true;\n }\n\n // access the widget when 'Only Authenticated Users' is chosen and user is authenticated\n if (includes(widgetRolesArr, USER_ROLE.AUTHENTICATED) && this.loggedInUser.dataSet?.isAuthenticated) {\n return true;\n }\n\n // access the widget when widget role and logged in user role matches\n return this.loggedInUser.dataSet?.isAuthenticated && this.matchRoles(widgetRolesArr, this.loggedInUser.dataSet?.roles);\n }\n}\n\nconst appSecurityService = new AppSecurityService();\n\nexport default appSecurityService;\n"],"mappings":";;;AAAA,SAASA,QAAQ,QAAQ,cAAc;AACvC,OAAOC,KAAK,MAAqD,OAAO;AACxE,SAASC,IAAI,EAAEC,QAAQ,QAAQ,QAAQ;AAEvC,OAAOC,cAAc,MAAM,gDAAgD;AAC3E,OAAOC,QAAQ,MAAM,yCAAyC;AAE9D,OAAOC,cAAc,MAAM,gDAAgD;AAG3E,OAAOC,iBAAiB,MAAM,sBAAsB;AAAC,IAchDC,SAAS,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA,EAATA,SAAS;AAMd,MAAMC,aAAa,GAAG,aAAa;AACnC,MAAMC,gBAAgB,GAAG,eAAe;AACxC,MAAMC,gBAAgB,GAAG,iBAAiB;AAE1C,MAAMC,kBAAkB,CAA4B;EAUhDC,WAAWA,CAAA,EAAG;IAAAC,eAAA;IAAAA,eAAA,qBAPD,KAAK;IAAAA,eAAA,uBACE,CAAC,CAAC;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,kBAGJ,EAAE;IAAAA,eAAA;IAIlBb,KAAK,CAACc,YAAY,CAACC,OAAO,CAACC,GAAG,CAAEC,MAAkC,IAAK,IAAI,CAACC,mBAAmB,CAACD,MAAM,CAAC,CAAC;EAC1G;EAEAC,mBAAmBA,CAACD,MAAkC,EAAE;IACtD,IAAI,CAAC,IAAI,CAACE,SAAS,EAAE;MACnB,IAAI,CAACA,SAAS,GAAG,IAAI,CAACC,YAAY,CAAC,CAAC;MACpC,IAAI,CAACC,OAAO,GAAG,IAAI,CAACF,SAAS,CAACG,GAAG;IACnC;IACA,OAAO,IAAI,CAACC,YAAY,CAAC,CAAC,CAACC,IAAI,CAAEC,KAAa,IAAK;MAAA,IAAAC,WAAA;MACjD,IAAI,CAAAA,WAAA,GAAAT,MAAM,CAACK,GAAG,cAAAI,WAAA,eAAVA,WAAA,CAAYC,UAAU,CAAC,IAAI,CAACN,OAAO,CAAC,IAAII,KAAK,EAAE;QACjD,IAAGR,MAAM,CAACW,OAAO,EAAEX,MAAM,CAACW,OAAO,CAAClB,gBAAgB,CAAC,GAAGe,KAAK;MAC7D;MACA,OAAOR,MAAM;IACf,CAAC,CAAC;EACJ;EAEQM,YAAYA,CAAA,EAAoB;IACtC,IAAI,IAAI,CAACE,KAAK,EAAE;MACd,OAAOI,OAAO,CAACC,OAAO,CAAC,IAAI,CAACL,KAAK,CAAC;IACpC;IACA,OAAOpB,cAAc,CAAC0B,OAAO,CAACtB,gBAAgB,CAAC,CAACe,IAAI,CAACQ,UAAU,IAAI;MACjE,IAAI,CAACP,KAAK,GAAGO,UAAU;MACvB,OAAO,IAAI,CAACP,KAAK;IACnB,CAAC,CAAC;EACJ;EAEQL,YAAYA,CAAA,EAAG;IACrB,OAAOhB,QAAQ,CAAC6B,GAAG,CAAY,YAAY,CAAC;EAC9C;EAEOC,qBAAqBA,CAACC,OAAY,EAAE;IAAA,IAAAC,qBAAA,EAAAC,iBAAA;IACzC,CAAAD,qBAAA,OAAI,CAACjB,SAAS,CAACmB,WAAW,cAAAF,qBAAA,uBAA1BA,qBAAA,CAA4BG,QAAQ,CAAC,EAAAF,iBAAA,GAAAF,OAAO,CAACK,QAAQ,cAAAH,iBAAA,uBAAhBA,iBAAA,CAAkBI,WAAW,KAAI,MAAM,CAAC;EAC/E;EAEOC,QAAQA,CAACC,OAAY,EAAE;IAC1B;IACA,IAAIC,OAAO,GAAG,EAAE;IAChB3C,IAAI,CAAC0C,OAAO,CAACE,QAAQ,EAAE,UAAUC,KAAK,EAAEC,IAAI,EAAE;MAC1CH,OAAO,IAAI,CAACA,OAAO,GAAG,GAAG,GAAG,EAAE,IAAII,kBAAkB,CAACD,IAAI,CAAC,GAAG,GAAG,GAAGC,kBAAkB,CAACF,KAAK,CAAC;IAChG,CAAC,CAAC;IACF9C,KAAK,CAACiD,QAAQ,CAACC,eAAe,GAAG,IAAI;IACrC,OAAOlD,KAAK,CAACmD,IAAI,CAACR,OAAO,CAACS,OAAO,GAAG,0BAA0B,EAAER,OAAO,EAAE;MACrEM,eAAe,EAAE,IAAI;MACrBtB,OAAO,EAAE;QACT,cAAc,EAAE;MAClB;IAAC,CAAC,CAAC,CAACJ,IAAI,CAAE6B,QAAuB,IAAK;MACpC,MAAMC,eAAe,GAAGD,QAAQ,CAACE,IAAI,GAAGF,QAAQ,CAACE,IAAI,CAAC9C,gBAAgB,CAAC,GAAG,EAAE;MAC5E,IAAI,CAACgB,KAAK,GAAG6B,eAAe;MAC5BjD,cAAc,CAACmD,OAAO,CAAC/C,gBAAgB,EAAE6C,eAAe,CAAC;MACzD,IAAI,CAACG,UAAU,GAAG,IAAI;IACxB,CAAC,CAAC,CAACjC,IAAI,CAAC,MAAM,IAAI,CAACkC,IAAI,CAACf,OAAO,CAACS,OAAO,CAAC,CAAC,CACxC5B,IAAI,CAAC,MAAM,IAAI,CAACmC,sBAAsB,CAAChB,OAAO,CAACS,OAAO,EAAET,OAAO,CAACiB,wBAAwB,CAAC,CAAC;EACjG;EAEOF,IAAIA,CAACN,OAAe,EAAE;IAC3B,OAAOvB,OAAO,CAACC,OAAO,CAAC,CAAC,CAACN,IAAI,CAAC,MAAM;MAClC,IAAIrB,cAAc,CAAC0D,WAAW,CAAC,CAAC,EAAE;QAChC,OAAO7D,KAAK,CAACiC,GAAG,CAACmB,OAAO,GAAG,yBAAyB,CAAC,CAClD5B,IAAI,CAAE6B,QAAuB,IAAKA,QAAQ,CAACE,IAAI,CAAC;MACrD;MACA,OAAO,IAAI,CAACpC,SAAS,CAAC2C,qBAAqB,CAAC,IAAI,CAAC3C,SAAS,CAACG,GAAG,CAAC,CAC5DE,IAAI,CAAC,MAAMK,OAAO,CAACC,OAAO,CAAC,IAAI,CAACiC,qBAAqB,CAAC,CAAC;IAC1D,CAAC,CAAC,CAACvC,IAAI,CAAEW,OAAY,IAAK;MACxB,MAAM6B,YAAY,GAAG,CAAC,CAAuB;MAC7C,IAAI,CAACC,cAAc,GAAG9B,OAAO;MAC7B,MAAMhB,SAAS,GAAG,IAAI,CAACA,SAAS;MAChC,IAAI,OAAOgB,OAAO,KAAK,QAAQ,KAAK,CAACA,OAAO,CAAC+B,eAAe,IAAI/B,OAAO,CAACgC,aAAa,CAAC,EAAE;QACpF,IAAIhC,OAAO,CAACgC,aAAa,EAAE;UACvBH,YAAY,CAACI,eAAe,GAAGjC,OAAO,CAACgC,aAAa;UACpDH,YAAY,CAACK,iBAAiB,GAAGlC,OAAO,CAACgC,aAAa;UACtDH,YAAY,CAACM,KAAK,GAAanC,OAAO,CAACK,QAAQ,CAAC+B,SAAS;UACzDP,YAAY,CAACjB,IAAI,GAAcZ,OAAO,CAACK,QAAQ,CAACgC,QAAQ;UACxDR,YAAY,CAACS,EAAE,GAAgBtC,OAAO,CAACK,QAAQ,CAACkC,MAAM;UACtDV,YAAY,CAACW,QAAQ,GAAUxC,OAAO,CAACK,QAAQ,CAACmC,QAAQ;UACxDX,YAAY,CAACY,cAAc,GAAIzC,OAAO,CAACK,QAAQ,CAACoC,cAAc;UAC9DzD,SAAS,CAAC6C,YAAY,GAAGA,YAAY;UACrC,IAAI,CAACA,YAAY,CAACa,OAAO,GAAGb,YAAY;QAC5C;QACA,OAAO7C,SAAS,CAAC2C,qBAAqB,CAAC3C,SAAS,CAACG,GAAG,CAAC,CACpDE,IAAI,CAAC,MAAM;UACV,OAAOW,OAAO;QAChB,CAAC,CAAC;MACN,CAAC,MAAM;QACL,OAAOhB,SAAS,CAAC2C,qBAAqB,CAAC3C,SAAS,CAACG,GAAG,CAAC,CAClDE,IAAI,CAAC,MAAM;UACV,IAAI,CAACsD,eAAe,CAAC,CAAC;QACxB,CAAC,CAAC;MACN;IACF,CAAC,CAAC;EACN;EAEQnB,sBAAsBA,CAACP,OAAe,EAA4C;IAAA,IAA1CQ,wBAAiC,GAAAmB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;IACpF,IAAI,CAAC3B,OAAO,EAAE;MACV,IAAI,CAACY,YAAY,GAAG,CAAC,CAAC;MACtB,OAAOnC,OAAO,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9B;IACA,OAAO,IAAI,CAAC4B,IAAI,CAACN,OAAO,CAAC;EAC7B;EAGO0B,eAAeA,CAAA,EAAG;IAAA,IAAAI,oBAAA;IACvB,IAAI,EAAAA,oBAAA,OAAI,CAACjB,cAAc,cAAAiB,oBAAA,gBAAAA,oBAAA,GAAnBA,oBAAA,CAAqBC,WAAW,cAAAD,oBAAA,uBAAhCA,oBAAA,CAAkCE,IAAI,MAAM,KAAK,EAAE;MACrD,MAAMC,OAAO,GAAG,IAAI,CAAClE,SAAS,CAACG,GAAG,GAAI,6BAA6B;MACnE,IAAIvB,QAAQ,CAACuF,EAAE,KAAK,KAAK,EAAE;QACzB,CAACC,MAAM,CAACC,MAAM,IAAID,MAAM,EAAEE,QAAQ,CAACC,IAAI,GAAGL,OAAO;MACnD,CAAC,MAAM;QACLM,UAAU,CAAC,MAAM;UACfrF,iBAAiB,CAACsF,OAAO,CAAC,OAAO,EAAE,6BAA6B,EAAE,KAAK,EAAE,IAAI,CAAC,CAC7EpE,IAAI,CAAEqE,MAAW,IAAK;YACrB,IAAIA,MAAM,EAAE;cACV,OAAOC,IAAI,CAACC,KAAK,CAACF,MAAM,CAACtC,IAAI,IAAIsC,MAAM,CAACtC,IAAI,CAACyC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACxE;YACA,OAAOnE,OAAO,CAACoE,MAAM,CAAC,CAAC;UACzB,CAAC,CAAC,CAACzE,IAAI,CAAEqE,MAAW,IAAK;YACvB,IAAIA,MAAM,CAACpF,gBAAgB,CAAC,EAAE;cAC5B,IAAI,CAACgB,KAAK,GAAGoE,MAAM,CAACpF,gBAAgB,CAAC;cACrCJ,cAAc,CAACmD,OAAO,CAAC/C,gBAAgB,EAAEoF,MAAM,CAACpF,gBAAgB,CAAC,CAAC;YACpE;UACF,CAAC,CAAC,CAACe,IAAI,CAAC,MAAM;YACZ,IAAI,CAACL,SAAS,CAAC+E,OAAO,CAAC,IAAI,CAAC;UAC9B,CAAC,CAAC,CAAC1E,IAAI,CAAC,MAAM,IAAI,CAACkC,IAAI,CAAC,IAAI,CAACrC,OAAO,CAAC,CAAC,CAACG,IAAI,CAAC,MAAM;YAChD,OAAO,IAAI,CAACmC,sBAAsB,CAAC,IAAI,CAACtC,OAAO,CAAC;UAClD,CAAC,CAAC;QACJ,CAAC,EAAE,IAAI,CAAC;MACV;IACF,CAAC,MAAM;MAAA,IAAA8E,qBAAA,EAAAC,sBAAA;MACL,MAAMC,SAAS,GAAG,EAAAF,qBAAA,OAAI,CAAClC,cAAc,CAACkB,WAAW,cAAAgB,qBAAA,uBAA/BA,qBAAA,CAAiCG,QAAQ,KAAI,OAAO;MACtElG,QAAQ,CAAC6B,GAAG,CAAY,YAAY,CAAC,CAACQ,WAAW,GAAG4D,SAAS;MAC7D,CAAAD,sBAAA,OAAI,CAACjF,SAAS,CAACmB,WAAW,cAAA8D,sBAAA,uBAA1BA,sBAAA,CAA4B7D,QAAQ,CAAC8D,SAAS,CAAC;IACjD;IACA,IAAI,CAAClF,SAAS,CAAC+E,OAAO,CAAC,CAAC;EAC1B;EAEOK,SAASA,CAAC5D,OAAY,EAAE;IAC7B,OAAO3C,KAAK,CAACmD,IAAI,CAACR,OAAO,CAACS,OAAO,GAAG,2BAA2B,EAAE,IAAI,EAAE;MACnEF,eAAe,EAAE;IACrB,CAAC,CAAC,CAACsD,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAChF,IAAI,CAAC,MAAM;MAC1B,IAAI,CAACiC,UAAU,GAAG,KAAK;MACvB,IAAI,CAACqB,eAAe,CAAC,CAAC;IAC1B,CAAC,CAAC;EACJ;EAEQ2B,UAAUA,CAACC,WAA0B,EAAEnC,SAAwB,EAAE;IACrE,OAAOmC,WAAW,CAACC,IAAI,CAAC,UAAUC,IAAI,EAAE;MACpC,OAAO1G,QAAQ,CAACqE,SAAS,EAAEqC,IAAI,CAAC;IACpC,CAAC,CAAC;EACN;EAEOC,iBAAiBA,CAACH,WAAmB,EAAE;IAAA,IAAAI,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA;IAC1C,MAAMC,cAAc,GAAGR,WAAW,CAACS,KAAK,CAAC,GAAG,CAAC;IAC7C;IACA,IAAIjH,QAAQ,CAACgH,cAAc,EAAE3G,SAAS,CAAC6G,QAAQ,CAAC,EAAE;MAC9C,OAAO,IAAI;IACf;;IAEA;IACA,IAAIlH,QAAQ,CAACgH,cAAc,EAAE3G,SAAS,CAAC8G,SAAS,CAAC,IAAI,GAAAP,qBAAA,GAAC,IAAI,CAAC9C,YAAY,CAACa,OAAO,cAAAiC,qBAAA,eAAzBA,qBAAA,CAA2B1C,eAAe,GAAE;MAC9F,OAAO,IAAI;IACf;;IAEA;IACA,IAAIlE,QAAQ,CAACgH,cAAc,EAAE3G,SAAS,CAAC+G,aAAa,CAAC,KAAAP,sBAAA,GAAI,IAAI,CAAC/C,YAAY,CAACa,OAAO,cAAAkC,sBAAA,eAAzBA,sBAAA,CAA2B3C,eAAe,EAAE;MACjG,OAAO,IAAI;IACf;;IAEA;IACA,OAAO,EAAA4C,sBAAA,OAAI,CAAChD,YAAY,CAACa,OAAO,cAAAmC,sBAAA,uBAAzBA,sBAAA,CAA2B5C,eAAe,KAAI,IAAI,CAACqC,UAAU,CAACS,cAAc,GAAAD,sBAAA,GAAE,IAAI,CAACjD,YAAY,CAACa,OAAO,cAAAoC,sBAAA,uBAAzBA,sBAAA,CAA2B3C,KAAK,CAAC;EAC1H;AACJ;AAEA,MAAMiD,kBAAkB,GAAG,IAAI5G,kBAAkB,CAAC,CAAC;AAEnD,eAAe4G,kBAAkB"}
1
+ {"version":3,"names":["Platform","axios","each","includes","networkService","injector","StorageService","WebProcessService","USER_ROLE","authCookieStr","XSRF_COOKIE_NAME","xsrf_header_name","AppSecurityService","constructor","_defineProperty","interceptors","request","use","config","onBeforeServiceCall","appConfig","getAppConfig","baseUrl","url","getXsrfToken","then","token","_config$url","startsWith","headers","Promise","resolve","getItem","xsrf_token","get","navigateToLandingPage","details","_this$appConfig$curre","_details$userInfo","currentPage","goToPage","userInfo","landingPage","appLogin","options","payload","formData","value","name","encodeURIComponent","defaults","withCredentials","post","baseURL","response","xsrfCookieValue","data","setItem","isLoggedIn","load","userData","getLoggedInUserDetails","useDefaultSuccessHandler","app","triggerStartUpVariables","isConnected","getServiceDefinitions","defaultSecurityConfig","loggedInUser","securityConfig","securityEnabled","authenticated","isAuthenticated","isSecurityEnabled","roles","userRoles","userName","id","userId","tenantId","userAttributes","dataSet","redirectToLogin","arguments","length","undefined","_this$securityConfig","loginConfig","type","authUrl","OS","window","parent","location","href","setTimeout","execute","output","JSON","parse","replace","reject","refresh","_this$securityConfig$","_this$appConfig$curre2","loginPage","pageName","appLogout","catch","canUserAccessPage","res","status","matchRoles","widgetRoles","some","item","hasAccessToWidget","_this$loggedInUser$da","_this$loggedInUser$da2","_this$loggedInUser$da3","_this$loggedInUser$da4","widgetRolesArr","split","EVERYONE","ANONYMOUS","AUTHENTICATED","appSecurityService"],"sources":["app-security.service.tsx"],"sourcesContent":["import { Platform } from 'react-native';\nimport axios, { InternalAxiosRequestConfig, AxiosResponse } from 'axios';\nimport { each, includes } from 'lodash';\n\nimport networkService from '@wavemaker/app-rn-runtime/core/network.service';\nimport injector from '@wavemaker/app-rn-runtime/core/injector';\nimport AppConfig from '@wavemaker/app-rn-runtime/core/AppConfig';\nimport StorageService from '@wavemaker/app-rn-runtime/core/storage.service';\nimport { SecurityService } from '@wavemaker/app-rn-runtime/core/security.service';\n\nimport WebProcessService from './webprocess.service';\n\ndeclare const window: any;\n\ninterface LoggedInUserConfig {\n isAuthenticated: Boolean;\n isSecurityEnabled: Boolean;\n roles: Array<string>;\n name: String;\n id: String;\n tenantId: String;\n userAttributes: any;\n}\n\nenum USER_ROLE {\n EVERYONE = 'Everyone',\n ANONYMOUS = 'Anonymous',\n AUTHENTICATED = 'Authenticated'\n}\n\nconst authCookieStr = 'AUTH_COOKIE';\nconst XSRF_COOKIE_NAME = 'wm_xsrf_token';\nconst xsrf_header_name = 'X-WM-XSRF-TOKEN';\n\nclass AppSecurityService implements SecurityService {\n\n securityConfig: any;\n isLoggedIn = false;\n loggedInUser: any = {};\n token: any;\n appConfig: any;\n baseUrl: string = '';\n defaultSecurityConfig: any;\n\n constructor() {\n axios.interceptors.request.use((config: InternalAxiosRequestConfig) => this.onBeforeServiceCall(config));\n }\n\n onBeforeServiceCall(config: InternalAxiosRequestConfig) {\n if (!this.appConfig) {\n this.appConfig = this.getAppConfig();\n this.baseUrl = this.appConfig.url;\n }\n return this.getXsrfToken().then((token: string) => {\n if (config.url?.startsWith(this.baseUrl) && token) {\n if(config.headers) config.headers[xsrf_header_name] = token;\n }\n return config\n });\n }\n\n private getXsrfToken(): Promise<string> {\n if (this.token) {\n return Promise.resolve(this.token);\n }\n return StorageService.getItem(XSRF_COOKIE_NAME).then(xsrf_token => {\n this.token = xsrf_token;\n return this.token;\n });\n }\n\n private getAppConfig() {\n return injector.get<AppConfig>('APP_CONFIG');\n }\n\n public navigateToLandingPage(details: any) {\n this.appConfig.currentPage?.goToPage(details.userInfo?.landingPage || 'Main', null, true);\n }\n\n public appLogin(options: any) {\n // encode all parameters\n let payload = '';\n each(options.formData, function (value, name) {\n payload += (payload ? '&' : '') + encodeURIComponent(name) + '=' + encodeURIComponent(value);\n });\n axios.defaults.withCredentials = true;\n return axios.post(options.baseURL + '/j_spring_security_check', payload, {\n withCredentials: true,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n }}).then((response: AxiosResponse) => {\n const xsrfCookieValue = response.data ? response.data[XSRF_COOKIE_NAME] : '';\n this.token = xsrfCookieValue;\n StorageService.setItem(XSRF_COOKIE_NAME, xsrfCookieValue);\n this.isLoggedIn = true;\n }).then(() => this.load(options.baseURL))\n .then(async () => {\n const userData = await this.getLoggedInUserDetails(options.baseURL, options.useDefaultSuccessHandler);\n await this.appConfig.app.triggerStartUpVariables();\n return userData;\n });\n }\n\n public load(baseURL: string) {\n return Promise.resolve().then(() => {\n if (networkService.isConnected()) {\n return axios.get(baseURL + '/services/security/info')\n .then((response: AxiosResponse) => response.data);\n }\n return this.appConfig.getServiceDefinitions(this.appConfig.url)\n .then(() => Promise.resolve(this.defaultSecurityConfig));\n }).then((details: any) => {\n const loggedInUser = {} as LoggedInUserConfig;\n this.securityConfig = details;\n const appConfig = this.appConfig;\n if (typeof details !== 'string' && (!details.securityEnabled || details.authenticated)) {\n if (details.authenticated) {\n loggedInUser.isAuthenticated = details.authenticated;\n loggedInUser.isSecurityEnabled = details.authenticated;\n loggedInUser.roles = details.userInfo.userRoles;\n loggedInUser.name = details.userInfo.userName;\n loggedInUser.id = details.userInfo.userId;\n loggedInUser.tenantId = details.userInfo.tenantId;\n loggedInUser.userAttributes = details.userInfo.userAttributes;\n appConfig.loggedInUser = loggedInUser;\n this.loggedInUser.dataSet = loggedInUser;\n }\n return appConfig.getServiceDefinitions(appConfig.url)\n .then(() => {\n return details;\n });\n } else {\n return appConfig.getServiceDefinitions(appConfig.url)\n .then(() => {\n this.redirectToLogin();\n });\n }\n });\n }\n\n private getLoggedInUserDetails(baseURL: string, useDefaultSuccessHandler: boolean = true) {\n if (!baseURL) {\n this.loggedInUser = {};\n return Promise.resolve({});\n }\n return this.load(baseURL);\n }\n\n \n public redirectToLogin() {\n if (this.securityConfig?.loginConfig?.type === 'SSO') {\n const authUrl = this.appConfig.url + '/services/security/ssologin';\n if (Platform.OS === 'web') {\n (window.parent || window).location.href = authUrl;\n } else {\n setTimeout(() => {\n WebProcessService.execute('LOGIN', '/services/security/ssologin', false, true)\n .then((output: any) => {\n if (output) {\n return JSON.parse(output.data && output.data.replace(/&quot;/g, \"\\\"\"));\n }\n return Promise.reject();\n }).then((output: any) => {\n if (output[XSRF_COOKIE_NAME]) {\n this.token = output[XSRF_COOKIE_NAME];\n StorageService.setItem(XSRF_COOKIE_NAME, output[XSRF_COOKIE_NAME]);\n }\n }).then(() => {\n this.appConfig.refresh(true);\n }).then(() => this.load(this.baseUrl)).then(() => {\n return this.getLoggedInUserDetails(this.baseUrl);\n });\n }, 1000);\n }\n } else {\n const loginPage = this.securityConfig.loginConfig?.pageName || 'Login';\n injector.get<AppConfig>('APP_CONFIG').landingPage = loginPage;\n this.appConfig.currentPage?.goToPage(loginPage, null, true);\n }\n this.appConfig.refresh();\n }\n\n public appLogout(options: any) {\n return axios.post(options.baseURL + '/j_spring_security_logout', null, {\n withCredentials: true\n }).catch(() => {}).then(() => {\n this.isLoggedIn = false;\n this.redirectToLogin();\n });\n }\n\n public canUserAccessPage(pageName: string) {\n if (this.baseUrl) {\n return axios.get(this.baseUrl + `/pages/${pageName}/${pageName}.html`)\n .catch((res) => res)\n .then((res) => res.status === 200 || res.status === 304); \n } else {\n return Promise.resolve(true);\n }\n }\n\n private matchRoles(widgetRoles: Array<String>, userRoles: Array<String>) {\n return widgetRoles.some(function (item) {\n return includes(userRoles, item);\n });\n }\n\n public hasAccessToWidget(widgetRoles: String) {\n const widgetRolesArr = widgetRoles.split(',');\n // access the widget when 'Everyone' is chosen\n if (includes(widgetRolesArr, USER_ROLE.EVERYONE)) {\n return true;\n }\n\n // access the widget when 'Anonymous' is chosen and user is not authenticated\n if (includes(widgetRolesArr, USER_ROLE.ANONYMOUS) && !this.loggedInUser.dataSet?.isAuthenticated) {\n return true;\n }\n\n // access the widget when 'Only Authenticated Users' is chosen and user is authenticated\n if (includes(widgetRolesArr, USER_ROLE.AUTHENTICATED) && this.loggedInUser.dataSet?.isAuthenticated) {\n return true;\n }\n\n // access the widget when widget role and logged in user role matches\n return this.loggedInUser.dataSet?.isAuthenticated && this.matchRoles(widgetRolesArr, this.loggedInUser.dataSet?.roles);\n }\n}\n\nconst appSecurityService = new AppSecurityService();\n\nexport default appSecurityService;\n"],"mappings":"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"}
@@ -1,8 +1,9 @@
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
1
2
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
3
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
3
4
  function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
4
5
  import React from "react";
5
- import { ImageBackground, TouchableOpacity, View } from "react-native";
6
+ import { ImageBackground, Platform, TouchableOpacity, View } from "react-native";
6
7
  import { Ionicons } from "@expo/vector-icons";
7
8
  import { ResizeMode, Video } from "expo-av";
8
9
  import { Camera, CameraType } from "expo-camera";
@@ -79,6 +80,7 @@ export class CameraService {
79
80
  permissionManager.requestPermissions('video').then(() => {
80
81
  const destroy = this.displayManager.show({
81
82
  content: /*#__PURE__*/React.createElement(CameraView, {
83
+ testID: "camera_view",
82
84
  type: this.type,
83
85
  captureType: 'video',
84
86
  onSuccess: o => {
@@ -104,6 +106,7 @@ export class CameraService {
104
106
  permissionManager.requestPermissions('image').then(() => {
105
107
  const destroy = this.displayManager.show({
106
108
  content: /*#__PURE__*/React.createElement(CameraView, {
109
+ testID: "camera_view",
107
110
  type: this.type,
108
111
  captureType: 'image',
109
112
  onSuccess: o => {
@@ -126,6 +129,7 @@ export class CameraService {
126
129
  }
127
130
  class CameraViewProps {
128
131
  constructor() {
132
+ _defineProperty(this, "testID", 'camera_view');
129
133
  _defineProperty(this, "type", 'back');
130
134
  _defineProperty(this, "captureType", 'image');
131
135
  _defineProperty(this, "onSuccess", () => {});
@@ -194,6 +198,19 @@ export class CameraView extends React.Component {
194
198
  }
195
199
  }
196
200
  }
201
+ getTestProps(suffix) {
202
+ const id = this.props.testID + (suffix ? '_' + suffix : '');
203
+ if (Platform.OS === 'android' || Platform.OS === 'web') {
204
+ return {
205
+ accessibilityLabel: id,
206
+ testID: id
207
+ };
208
+ }
209
+ return {
210
+ accessible: false,
211
+ testID: id
212
+ };
213
+ }
197
214
  async takePicture() {
198
215
  const options = {
199
216
  quality: 0.5,
@@ -227,7 +244,7 @@ export class CameraView extends React.Component {
227
244
  style: styles.actionBar
228
245
  }, /*#__PURE__*/React.createElement(View, {
229
246
  style: styles.leftWrapper
230
- }, /*#__PURE__*/React.createElement(TouchableOpacity, {
247
+ }, /*#__PURE__*/React.createElement(TouchableOpacity, _extends({}, this.getTestProps('close'), {
231
248
  onPress: () => {
232
249
  this.setState({
233
250
  cameraContent: {
@@ -238,26 +255,26 @@ export class CameraView extends React.Component {
238
255
  });
239
256
  this.props.onCancel();
240
257
  }
241
- }, /*#__PURE__*/React.createElement(Ionicons, {
258
+ }), /*#__PURE__*/React.createElement(Ionicons, {
242
259
  name: "close-circle",
243
260
  size: 32,
244
261
  color: "white"
245
262
  }))), /*#__PURE__*/React.createElement(View, {
246
263
  style: styles.midWrapper
247
- }, !this.state.isCaptured ? /*#__PURE__*/React.createElement(TouchableOpacity, {
264
+ }, !this.state.isCaptured ? /*#__PURE__*/React.createElement(TouchableOpacity, _extends({
248
265
  style: [styles.circle, styles.outerCircle, this.props.captureType === 'video' && !this.state.recording ? {
249
266
  backgroundColor: "red"
250
267
  } : {}, this.props.captureType === 'image' ? {
251
268
  backgroundColor: "white"
252
269
  } : {}],
253
270
  onPress: this.toggleCapture.bind(this)
254
- }, /*#__PURE__*/React.createElement(View, {
271
+ }, this.getTestProps('capture')), /*#__PURE__*/React.createElement(View, {
255
272
  style: [styles.circle, this.props.captureType === 'image' ? {} : styles.innerCircle, this.props.captureType === 'image' ? {
256
273
  backgroundColor: "white"
257
274
  } : {}]
258
275
  })) : null), /*#__PURE__*/React.createElement(View, {
259
276
  style: styles.rightWrapper
260
- }, this.state.showActionBtns ? /*#__PURE__*/React.createElement(TouchableOpacity, {
277
+ }, this.state.showActionBtns ? /*#__PURE__*/React.createElement(TouchableOpacity, _extends({
261
278
  onPress: () => {
262
279
  this.setState({
263
280
  isCaptured: false,
@@ -270,17 +287,17 @@ export class CameraView extends React.Component {
270
287
  }
271
288
  });
272
289
  }
273
- }, /*#__PURE__*/React.createElement(Ionicons, {
290
+ }, this.getTestProps('ok')), /*#__PURE__*/React.createElement(Ionicons, {
274
291
  name: "checkmark-circle",
275
292
  size: 32,
276
293
  color: "white"
277
- })) : /*#__PURE__*/React.createElement(TouchableOpacity, {
294
+ })) : /*#__PURE__*/React.createElement(TouchableOpacity, _extends({}, this.getTestProps('toggle'), {
278
295
  onPress: () => {
279
296
  this.setState({
280
297
  cameraType: this.state.cameraType === 'back' ? 'front' : 'back'
281
298
  });
282
299
  }
283
- }, /*#__PURE__*/React.createElement(Ionicons, {
300
+ }), /*#__PURE__*/React.createElement(Ionicons, {
284
301
  name: "camera-reverse",
285
302
  size: 32,
286
303
  color: "white"
@@ -1 +1 @@
1
- {"version":3,"names":["React","ImageBackground","TouchableOpacity","View","Ionicons","ResizeMode","Video","Camera","CameraType","FileSystem","permissionManager","appDisplayManagerService","styles","preview","top","left","right","flexGrow","backgroundColor","actionBtn","flex","padding","paddingHorizontal","alignSelf","margin","actionBar","flexDirection","justifyContent","position","bottom","leftWrapper","alignItems","midWrapper","rightWrapper","circle","display","outerCircle","borderWidth","height","width","borderRadius","borderColor","innerCircle","CameraService","constructor","displayManager","_defineProperty","back","captureVideo","options","Promise","resolve","reject","requestPermissions","then","destroy","show","content","createElement","CameraView","type","captureType","onSuccess","o","call","videoPath","uri","onCancel","captureImage","params","catch","base64","imagePath","CameraViewProps","CameraViewState","Component","props","camera","recordAsync","response","readAsStringAsync","encoding","setState","cameraContent","isCaptured","state","showActionBtns","recording","stopRecording","toggleCapture","takePicture","startRecord","stopRecord","quality","skipProcessing","onPictureSaved","takePictureAsync","getActionsTemplate","style","onPress","closeView","name","size","color","bind","cameraType","getPreviewTemplate","actions","source","resizeMode","CONTAIN","shouldPlay","useNativeControls","isLooping","render","ref","onCameraReady","cameraService"],"sources":["camera-service.tsx"],"sourcesContent":["import React from \"react\";\nimport { ImageBackground, TouchableOpacity, View, ViewStyle } from \"react-native\";\nimport { Ionicons } from \"@expo/vector-icons\";\nimport { ResizeMode, Video } from \"expo-av\";\nimport { Camera, CameraType } from \"expo-camera\";\nimport * as FileSystem from \"expo-file-system\";\n\nimport { DisplayManager } from \"@wavemaker/app-rn-runtime/core/display.manager\";\nimport { CaptureVideoOutput } from \"@wavemaker/app-rn-runtime/variables/device/camera/capture-video.operation\";\nimport { CaptureImageOutput } from \"@wavemaker/app-rn-runtime/variables/device/camera/capture-image.operation\";\nimport permissionManager from '@wavemaker/app-rn-runtime/runtime/services/device/permissions';\nimport { CameraInput } from \"@wavemaker/app-rn-runtime/core/device/camera-service\";\nimport { Input } from \"@wavemaker/app-rn-runtime/variables/device/operation.provider\";\nimport appDisplayManagerService from \"@wavemaker/app-rn-runtime/runtime/services/app-display-manager.service\";\nconst styles = {\n preview: {\n top: 0,\n left: 0,\n right: 0,\n flexGrow: 1,\n backgroundColor: 'black'\n },\n actionBtn: {\n flex: 0,\n padding: 15,\n paddingHorizontal: 20,\n alignSelf: 'center',\n margin: 20,\n } as ViewStyle,\n actionBar: {\n flex: 0,\n flexDirection: 'row',\n justifyContent: 'center',\n backgroundColor: 'rgba(0,0,0,0.6)',\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n padding: 20\n } as ViewStyle,\n leftWrapper: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'flex-start',\n } as ViewStyle,\n midWrapper: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n } as ViewStyle,\n rightWrapper: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'flex-end',\n } as ViewStyle,\n circle: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n } as ViewStyle,\n outerCircle: {\n borderWidth: 3,\n height: 50,\n width: 50,\n borderRadius: 25,\n borderColor: 'white'\n },\n innerCircle: {\n borderRadius:2,\n height: 20,\n width:20,\n backgroundColor: 'red'\n }\n};\n\nexport interface CameraVideoInput extends Input {}\n\nexport class CameraService {\n private type= CameraType.back;\n\n constructor(private displayManager: DisplayManager) {\n }\n\n public captureVideo(options?: CameraVideoInput): Promise<CaptureVideoOutput> {\n return new Promise((resolve, reject) => {\n permissionManager.requestPermissions('video').then(() => {\n const destroy = this.displayManager.show({\n content: (<CameraView type={this.type} captureType={'video'} onSuccess={(o) => {\n destroy.call(this.displayManager);\n /*o.content().catch(() => {}).then(base64 => {\n resolve({videoPath: o.uri, content: base64 || ''});\n });*/\n resolve({videoPath: o.uri, content: ''});\n }}\n onCancel={() => {\n destroy.call(this.displayManager);\n }}\n ></CameraView>)\n });\n }, reject);\n });\n }\n\n public captureImage(params: CameraInput): Promise<CaptureImageOutput> {\n return new Promise((resolve, reject) => {\n permissionManager.requestPermissions('image').then(() => {\n const destroy = this.displayManager.show({\n content: (<CameraView type={this.type} captureType={'image'} onSuccess={(o) => {\n destroy.call(this.displayManager);\n o.content().catch(() => {}).then(base64 => {\n resolve({imagePath: o.uri, content: base64 || ''});\n });\n }} onCancel={() => {destroy.call(this.displayManager);}}\n ></CameraView>)\n });\n }, reject);\n });\n }\n}\n\ninterface CameraOutput {\n uri: string;\n content: () => Promise<string>;\n}\n\nclass CameraViewProps {\n type: 'front' | 'back' = 'back' as CameraType;\n captureType: 'image' | 'video' = 'image';\n onSuccess: (o: CameraOutput) => any = () => {};\n onCancel: () => any = () => {};\n}\n\nclass CameraViewState {\n recording: boolean = false;\n showActionBtns: boolean = false;\n cameraType: CameraType = CameraType.back;\n isCaptured: boolean = false;\n closeView: boolean = false;\n cameraContent: CameraOutput = {} as CameraOutput;\n}\n\nexport class CameraView extends React.Component<CameraViewProps, CameraViewState> {\n private camera: Camera = {} as Camera;\n\n constructor(props: CameraViewProps) {\n super(props);\n this.state = new CameraViewState();\n }\n\n toggleCapture() {\n if (this.props.captureType === 'image') {\n this.takePicture();\n } else {\n if (!this.state.recording) {\n this.startRecord();\n } else {\n this.stopRecord();\n this.setState({showActionBtns: true} as CameraViewState);\n }\n }\n }\n\n async takePicture() {\n const options = {\n quality: 0.5,\n base64: false,\n skipProcessing: true,\n onPictureSaved: (response: any) => {\n response.content = async () => {\n return await FileSystem.readAsStringAsync(response.uri, { encoding: 'base64' });\n };\n this.setState({ \n cameraContent: response,\n isCaptured: true,\n showActionBtns: true } as CameraViewState);\n }\n }\n await this.camera.takePictureAsync(options);\n\n if (this.state.showActionBtns) {\n this.setState({showActionBtns: false} as CameraViewState);\n }\n this.setState({showActionBtns: true} as CameraViewState);\n }\n\n // start recording\n startRecord = async () => {\n this.camera.recordAsync().then((response: any) => {\n response.content = async () => {\n return await FileSystem.readAsStringAsync(response.uri, { encoding: 'base64' });\n };\n this.setState({ cameraContent: response, isCaptured: true } as CameraViewState);\n });\n if (this.state.showActionBtns) {\n this.setState({showActionBtns: false} as CameraViewState);\n }\n\n this.setState({recording: true} as CameraViewState);\n };\n\n // stop recording\n stopRecord = async () => {\n this.camera.stopRecording();\n this.setState({recording: false} as CameraViewState);\n this.setState({showActionBtns: true} as CameraViewState);\n };\n\n getActionsTemplate() {\n return <View style={styles.actionBar}>\n <View style={styles.leftWrapper}>\n <TouchableOpacity\n onPress={() => {\n this.setState({ cameraContent: {uri: ''}, isCaptured: false, closeView: true } as CameraViewState);\n this.props.onCancel();\n }}>\n <Ionicons name='close-circle' size={32} color='white' />\n </TouchableOpacity>\n </View>\n <View style={styles.midWrapper}>\n {!this.state.isCaptured ? <TouchableOpacity style={[styles.circle, styles.outerCircle, this.props.captureType === 'video' && !this.state.recording ? { backgroundColor: \"red\" } : {},\n this.props.captureType === 'image' ? { backgroundColor: \"white\" } : {}]}\n onPress={this.toggleCapture.bind(this)}>\n <View style={[styles.circle as ViewStyle, this.props.captureType === 'image' ? {} : styles.innerCircle, this.props.captureType === 'image' ? { backgroundColor: \"white\" } : {}]}></View>\n </TouchableOpacity> : null}\n </View>\n <View style={styles.rightWrapper}>\n {this.state.showActionBtns ? (<TouchableOpacity\n onPress={() => {\n this.setState({ isCaptured: false, closeView: true } as CameraViewState);\n this.props.onSuccess(this.state.cameraContent);\n this.setState({ cameraContent: {uri: ''} } as CameraViewState);\n }}>\n <Ionicons name='checkmark-circle' size={32} color='white'/>\n </TouchableOpacity>) : (<TouchableOpacity\n onPress={() => {\n this.setState({cameraType: this.state.cameraType === 'back' ? 'front' : 'back'} as CameraViewState);\n }}>\n <Ionicons name='camera-reverse' size={32} color='white' />\n </TouchableOpacity>)}\n </View>\n </View>\n }\n\n getPreviewTemplate(actions: any) {\n return this.props.captureType === 'image' ?\n <ImageBackground source={{uri : this.state.cameraContent.uri}} resizeMode={ResizeMode.CONTAIN} style={{flex: 1}} />\n : <Video\n style={{ flex: 1 }}\n source={{\n uri: this.state.cameraContent.uri,\n }}\n shouldPlay={true}\n useNativeControls\n isLooping\n resizeMode={ResizeMode.CONTAIN}\n ></Video>\n }\n\n render() {\n if (this.state.closeView) {\n return null;\n }\n const actions = this.getActionsTemplate();\n return (\n <View style={styles.preview}>\n {this.state.isCaptured ? (\n this.getPreviewTemplate(actions)\n ) : (\n <Camera type={CameraType[this.state.cameraType]} ref={(ref: Camera) => { this.camera = ref; }}\n style={{flex: 1}}\n onCameraReady={() => {}}>\n\n </Camera>)}\n {actions}\n </View>)\n }\n}\nconst cameraService = new CameraService(appDisplayManagerService);\nexport default cameraService;\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","ImageBackground","Platform","TouchableOpacity","View","Ionicons","ResizeMode","Video","Camera","CameraType","FileSystem","permissionManager","appDisplayManagerService","styles","preview","top","left","right","flexGrow","backgroundColor","actionBtn","flex","padding","paddingHorizontal","alignSelf","margin","actionBar","flexDirection","justifyContent","position","bottom","leftWrapper","alignItems","midWrapper","rightWrapper","circle","display","outerCircle","borderWidth","height","width","borderRadius","borderColor","innerCircle","CameraService","constructor","displayManager","_defineProperty","back","captureVideo","options","Promise","resolve","reject","requestPermissions","then","destroy","show","content","createElement","CameraView","testID","type","captureType","onSuccess","o","call","videoPath","uri","onCancel","captureImage","params","catch","base64","imagePath","CameraViewProps","CameraViewState","Component","props","camera","recordAsync","response","readAsStringAsync","encoding","setState","cameraContent","isCaptured","state","showActionBtns","recording","stopRecording","toggleCapture","takePicture","startRecord","stopRecord","getTestProps","suffix","id","OS","accessibilityLabel","accessible","quality","skipProcessing","onPictureSaved","takePictureAsync","getActionsTemplate","style","_extends","onPress","closeView","name","size","color","bind","cameraType","getPreviewTemplate","actions","source","resizeMode","CONTAIN","shouldPlay","useNativeControls","isLooping","render","ref","onCameraReady","cameraService"],"sources":["camera-service.tsx"],"sourcesContent":["import React from \"react\";\nimport { ImageBackground, Platform, TouchableOpacity, View, ViewStyle } from \"react-native\";\nimport { Ionicons } from \"@expo/vector-icons\";\nimport { ResizeMode, Video } from \"expo-av\";\nimport { Camera, CameraType } from \"expo-camera\";\nimport * as FileSystem from \"expo-file-system\";\nimport * as Application from 'expo-application';\n\nimport { DisplayManager } from \"@wavemaker/app-rn-runtime/core/display.manager\";\nimport { CaptureVideoOutput } from \"@wavemaker/app-rn-runtime/variables/device/camera/capture-video.operation\";\nimport { CaptureImageOutput } from \"@wavemaker/app-rn-runtime/variables/device/camera/capture-image.operation\";\nimport permissionManager from '@wavemaker/app-rn-runtime/runtime/services/device/permissions';\nimport { CameraInput } from \"@wavemaker/app-rn-runtime/core/device/camera-service\";\nimport { Input } from \"@wavemaker/app-rn-runtime/variables/device/operation.provider\";\nimport appDisplayManagerService from \"@wavemaker/app-rn-runtime/runtime/services/app-display-manager.service\";\nconst styles = {\n preview: {\n top: 0,\n left: 0,\n right: 0,\n flexGrow: 1,\n backgroundColor: 'black'\n },\n actionBtn: {\n flex: 0,\n padding: 15,\n paddingHorizontal: 20,\n alignSelf: 'center',\n margin: 20,\n } as ViewStyle,\n actionBar: {\n flex: 0,\n flexDirection: 'row',\n justifyContent: 'center',\n backgroundColor: 'rgba(0,0,0,0.6)',\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n padding: 20\n } as ViewStyle,\n leftWrapper: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'flex-start',\n } as ViewStyle,\n midWrapper: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n } as ViewStyle,\n rightWrapper: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'flex-end',\n } as ViewStyle,\n circle: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n } as ViewStyle,\n outerCircle: {\n borderWidth: 3,\n height: 50,\n width: 50,\n borderRadius: 25,\n borderColor: 'white'\n },\n innerCircle: {\n borderRadius:2,\n height: 20,\n width:20,\n backgroundColor: 'red'\n }\n};\n\nexport interface CameraVideoInput extends Input {}\n\nexport class CameraService {\n private type= CameraType.back;\n\n constructor(private displayManager: DisplayManager) {\n }\n\n public captureVideo(options?: CameraVideoInput): Promise<CaptureVideoOutput> {\n return new Promise((resolve, reject) => {\n permissionManager.requestPermissions('video').then(() => {\n const destroy = this.displayManager.show({\n content: (<CameraView testID={\"camera_view\"} type={this.type} captureType={'video'} onSuccess={(o) => {\n destroy.call(this.displayManager);\n /*o.content().catch(() => {}).then(base64 => {\n resolve({videoPath: o.uri, content: base64 || ''});\n });*/\n resolve({videoPath: o.uri, content: ''});\n }}\n onCancel={() => {\n destroy.call(this.displayManager);\n }}\n ></CameraView>)\n });\n }, reject);\n });\n }\n\n public captureImage(params: CameraInput): Promise<CaptureImageOutput> {\n return new Promise((resolve, reject) => {\n permissionManager.requestPermissions('image').then(() => {\n const destroy = this.displayManager.show({\n content: (<CameraView testID={\"camera_view\"} type={this.type} captureType={'image'} onSuccess={(o) => {\n destroy.call(this.displayManager);\n o.content().catch(() => {}).then(base64 => {\n resolve({imagePath: o.uri, content: base64 || ''});\n });\n }} onCancel={() => {destroy.call(this.displayManager);}}\n ></CameraView>)\n });\n }, reject);\n });\n }\n}\n\ninterface CameraOutput {\n uri: string;\n content: () => Promise<string>;\n}\n\nclass CameraViewProps {\n testID: string = 'camera_view';\n type: 'front' | 'back' = 'back' as CameraType;\n captureType: 'image' | 'video' = 'image';\n onSuccess: (o: CameraOutput) => any = () => {};\n onCancel: () => any = () => {};\n}\n\nclass CameraViewState {\n recording: boolean = false;\n showActionBtns: boolean = false;\n cameraType: CameraType = CameraType.back;\n isCaptured: boolean = false;\n closeView: boolean = false;\n cameraContent: CameraOutput = {} as CameraOutput;\n}\n\nexport class CameraView extends React.Component<CameraViewProps, CameraViewState> {\n private camera: Camera = {} as Camera;\n\n constructor(props: CameraViewProps) {\n super(props);\n this.state = new CameraViewState();\n }\n\n toggleCapture() {\n if (this.props.captureType === 'image') {\n this.takePicture();\n } else {\n if (!this.state.recording) {\n this.startRecord();\n } else {\n this.stopRecord();\n this.setState({showActionBtns: true} as CameraViewState);\n }\n }\n }\n\n getTestProps(suffix: string) {\n const id = this.props.testID + (suffix ? '_' + suffix : '');\n if (Platform.OS === 'android' || Platform.OS === 'web') {\n return {\n accessibilityLabel: id,\n testID: id\n };\n }\n return {\n accessible: false,\n testID: id\n };\n }\n\n async takePicture() {\n const options = {\n quality: 0.5,\n base64: false,\n skipProcessing: true,\n onPictureSaved: (response: any) => {\n response.content = async () => {\n return await FileSystem.readAsStringAsync(response.uri, { encoding: 'base64' });\n };\n this.setState({ \n cameraContent: response,\n isCaptured: true,\n showActionBtns: true } as CameraViewState);\n }\n }\n await this.camera.takePictureAsync(options);\n\n if (this.state.showActionBtns) {\n this.setState({showActionBtns: false} as CameraViewState);\n }\n this.setState({showActionBtns: true} as CameraViewState);\n }\n\n // start recording\n startRecord = async () => {\n this.camera.recordAsync().then((response: any) => {\n response.content = async () => {\n return await FileSystem.readAsStringAsync(response.uri, { encoding: 'base64' });\n };\n this.setState({ cameraContent: response, isCaptured: true } as CameraViewState);\n });\n if (this.state.showActionBtns) {\n this.setState({showActionBtns: false} as CameraViewState);\n }\n\n this.setState({recording: true} as CameraViewState);\n };\n\n // stop recording\n stopRecord = async () => {\n this.camera.stopRecording();\n this.setState({recording: false} as CameraViewState);\n this.setState({showActionBtns: true} as CameraViewState);\n };\n\n getActionsTemplate() {\n return <View style={styles.actionBar}>\n <View style={styles.leftWrapper}>\n <TouchableOpacity\n {...this.getTestProps('close')}\n onPress={() => {\n this.setState({ cameraContent: {uri: ''}, isCaptured: false, closeView: true } as CameraViewState);\n this.props.onCancel();\n }}>\n <Ionicons name='close-circle' size={32} color='white' />\n </TouchableOpacity>\n </View>\n <View style={styles.midWrapper}>\n {!this.state.isCaptured ? <TouchableOpacity style={[styles.circle, styles.outerCircle, this.props.captureType === 'video' && !this.state.recording ? { backgroundColor: \"red\" } : {},\n this.props.captureType === 'image' ? { backgroundColor: \"white\" } : {}]}\n onPress={this.toggleCapture.bind(this)}\n {...this.getTestProps('capture')}>\n <View style={[styles.circle as ViewStyle, this.props.captureType === 'image' ? {} : styles.innerCircle, this.props.captureType === 'image' ? { backgroundColor: \"white\" } : {}]}></View>\n </TouchableOpacity> : null}\n </View>\n <View style={styles.rightWrapper}>\n {this.state.showActionBtns ? (<TouchableOpacity\n onPress={() => {\n this.setState({ isCaptured: false, closeView: true } as CameraViewState);\n this.props.onSuccess(this.state.cameraContent);\n this.setState({ cameraContent: {uri: ''} } as CameraViewState);\n }}\n {...this.getTestProps('ok')}>\n <Ionicons name='checkmark-circle' size={32} color='white'/>\n </TouchableOpacity>) : (<TouchableOpacity\n {...this.getTestProps('toggle')}\n onPress={() => {\n this.setState({cameraType: this.state.cameraType === 'back' ? 'front' : 'back'} as CameraViewState);\n }}>\n <Ionicons name='camera-reverse' size={32} color='white' />\n </TouchableOpacity>)}\n </View>\n </View>\n }\n\n getPreviewTemplate(actions: any) {\n return this.props.captureType === 'image' ?\n <ImageBackground source={{uri : this.state.cameraContent.uri}} resizeMode={ResizeMode.CONTAIN} style={{flex: 1}} />\n : <Video\n style={{ flex: 1 }}\n source={{\n uri: this.state.cameraContent.uri,\n }}\n shouldPlay={true}\n useNativeControls\n isLooping\n resizeMode={ResizeMode.CONTAIN}\n ></Video>\n }\n\n render() {\n if (this.state.closeView) {\n return null;\n }\n const actions = this.getActionsTemplate();\n return (\n <View style={styles.preview}>\n {this.state.isCaptured ? (\n this.getPreviewTemplate(actions)\n ) : (\n <Camera type={CameraType[this.state.cameraType]} ref={(ref: Camera) => { this.camera = ref; }}\n style={{flex: 1}}\n onCameraReady={() => {}}>\n\n </Camera>)}\n {actions}\n </View>)\n }\n}\nconst cameraService = new CameraService(appDisplayManagerService);\nexport default cameraService;\n"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
1
2
  import { Camera } from 'expo-camera';
2
3
  import { Ionicons } from '@expo/vector-icons';
3
4
  import { BarCodeScanner } from 'expo-barcode-scanner';
@@ -62,6 +63,19 @@ export class ScanService {
62
63
  constructor(displayManager) {
63
64
  this.displayManager = displayManager;
64
65
  }
66
+ getTestProps(suffix) {
67
+ const id = "scan" + (suffix ? '_' + suffix : '');
68
+ if (Platform.OS === 'android' || Platform.OS === 'web') {
69
+ return {
70
+ accessibilityLabel: id,
71
+ testID: id
72
+ };
73
+ }
74
+ return {
75
+ accessible: false,
76
+ testID: id
77
+ };
78
+ }
65
79
  scanBarcode(params) {
66
80
  const format = (params === null || params === void 0 ? void 0 : params.barcodeFormat) || 'ALL';
67
81
  const barcodeFormat = Platform.OS === 'ios' ? undefined : barcodeFormatOptions[format];
@@ -91,11 +105,11 @@ export class ScanService {
91
105
  style: styles.bottomWrapper
92
106
  }, /*#__PURE__*/React.createElement(View, {
93
107
  style: styles.closeWrapper
94
- }, /*#__PURE__*/React.createElement(TouchableOpacity, {
108
+ }, /*#__PURE__*/React.createElement(TouchableOpacity, _extends({}, this.getTestProps('close_button'), {
95
109
  onPress: () => {
96
110
  destroy.call(this.displayManager);
97
111
  }
98
- }, /*#__PURE__*/React.createElement(Ionicons, {
112
+ }), /*#__PURE__*/React.createElement(Ionicons, {
99
113
  name: "close-circle",
100
114
  size: 48,
101
115
  color: "white"
@@ -1 +1 @@
1
- {"version":3,"names":["Camera","Ionicons","BarCodeScanner","Platform","StyleSheet","TouchableOpacity","View","React","permissionManager","appDisplayManagerService","barcodeFormatOptions","opacity","styles","create","container","flex","flexDirection","closeWrapper","justifyContent","alignItems","paddingBottom","topWrapper","backgroundColor","centerWrapper","leftWrapper","focused","rightWrapper","bottomWrapper","ScanService","constructor","displayManager","scanBarcode","params","format","barcodeFormat","OS","undefined","Promise","resolve","reject","requestPermissions","then","destroy","show","content","createElement","barCodeScannerSettings","barCodeTypes","Constants","BarCodeType","onBarCodeScanned","result","call","style","absoluteFillObject","onPress","name","size","color","response","type","values","Object","index","indexOf","keys","text","data","cancelled","scanService"],"sources":["scan-service.tsx"],"sourcesContent":["import { Camera } from 'expo-camera';\nimport { Ionicons } from '@expo/vector-icons';\nimport { BarCodeScanner } from 'expo-barcode-scanner';\nimport { Platform, StyleSheet, TouchableOpacity, View } from 'react-native';\nimport React from 'react';\nimport { ScanInput, ScanOutput } from '@wavemaker/app-rn-runtime/variables/device/scan/scan.operation';\nimport { DisplayManager } from '@wavemaker/app-rn-runtime/core/display.manager';\nimport permissionManager from '@wavemaker/app-rn-runtime/runtime/services/device/permissions';\nimport appDisplayManagerService from '@wavemaker/app-rn-runtime/runtime/services/app-display-manager.service';\n\ninterface objectMap {\n [key: string]: string\n}\n\nconst barcodeFormatOptions: objectMap = {\n 'ALL': 'ALL',\n 'CODABAR': 'codabar',\n 'CODE_39': 'code39',\n 'CODE_93': 'code93',\n 'CODE_128': 'code128',\n 'DATA_MATRIX': 'datamatrix',\n 'EAN_8': 'ean8',\n 'EAN_13': 'ean13',\n 'ITF': 'itf14',\n 'PDF_417': 'pdf417',\n 'QR_CODE': 'qr',\n 'RSS14': 'rss14',\n 'RSS_EXPANDED': 'rssexpanded',\n 'UPC_E': 'upc_e',\n 'UPC_A': 'upc_a'\n};\nconst opacity = 'rgba(0, 0, 0, 0.6)';\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n flexDirection: 'column'\n },\n closeWrapper: {\n flex: 1,\n justifyContent: 'flex-end',\n alignItems: 'center',\n paddingBottom: 32\n },\n topWrapper: {\n flex: 2,\n backgroundColor: opacity\n },\n centerWrapper: {\n flex: 2,\n flexDirection: 'row'\n },\n leftWrapper: {\n flex: 2,\n backgroundColor: opacity\n },\n focused: {\n flex: 10\n },\n rightWrapper: {\n flex: 2,\n backgroundColor: opacity\n },\n bottomWrapper: {\n flex: 2,\n backgroundColor: opacity\n },\n});\n\nexport class ScanService {\n\n constructor(private displayManager: DisplayManager) {}\n\n public scanBarcode(params: ScanInput): Promise<ScanOutput> {\n const format = params?.barcodeFormat || 'ALL';\n const barcodeFormat: string | undefined = Platform.OS === 'ios' ? undefined : barcodeFormatOptions[format];\n return new Promise((resolve, reject) => {\n permissionManager.requestPermissions('camera').then(() => {\n const destroy = this.displayManager.show({\n content: (<Camera\n barCodeScannerSettings={barcodeFormat ? {\n barCodeTypes: [BarCodeScanner.Constants.BarCodeType[barcodeFormat]],\n }: undefined}\n onBarCodeScanned={(result) => {\n destroy.call(this.displayManager);\n resolve(result);\n }}\n style={StyleSheet.absoluteFillObject}\n >\n <View style={styles.topWrapper}>\n </View>\n <View style={styles.centerWrapper}>\n <View style={styles.leftWrapper}/>\n <View style={styles.focused}/>\n <View style={styles.rightWrapper}/>\n </View>\n <View style={styles.bottomWrapper}>\n \n <View style={styles.closeWrapper}>\n <TouchableOpacity\n onPress={() => {\n destroy.call(this.displayManager);\n }}>\n <Ionicons name='close-circle' size={48} color='white' />\n </TouchableOpacity>\n </View>\n </View>\n </Camera>)\n });\n }, reject)\n }).then((response: any) => {\n let format;\n if (response.type) {\n const values = Object.values(BarCodeScanner.Constants.BarCodeType);\n const index = values.indexOf(response.type);\n format = index > -1 ? Object.keys(BarCodeScanner.Constants.BarCodeType)[index] : '';\n }\n return Promise.resolve({\n text: response.data,\n format : format || response.type,\n cancelled : false\n });\n });\n }\n}\nconst scanService = new ScanService(appDisplayManagerService);\nexport default scanService;\n"],"mappings":"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"}
1
+ {"version":3,"names":["Camera","Ionicons","BarCodeScanner","Platform","StyleSheet","TouchableOpacity","View","React","permissionManager","appDisplayManagerService","barcodeFormatOptions","opacity","styles","create","container","flex","flexDirection","closeWrapper","justifyContent","alignItems","paddingBottom","topWrapper","backgroundColor","centerWrapper","leftWrapper","focused","rightWrapper","bottomWrapper","ScanService","constructor","displayManager","getTestProps","suffix","id","OS","accessibilityLabel","testID","accessible","scanBarcode","params","format","barcodeFormat","undefined","Promise","resolve","reject","requestPermissions","then","destroy","show","content","createElement","barCodeScannerSettings","barCodeTypes","Constants","BarCodeType","onBarCodeScanned","result","call","style","absoluteFillObject","_extends","onPress","name","size","color","response","type","values","Object","index","indexOf","keys","text","data","cancelled","scanService"],"sources":["scan-service.tsx"],"sourcesContent":["import { Camera } from 'expo-camera';\nimport { Ionicons } from '@expo/vector-icons';\nimport { BarCodeScanner } from 'expo-barcode-scanner';\nimport * as Application from 'expo-application';\nimport { Platform, StyleSheet, TouchableOpacity, View } from 'react-native';\nimport React from 'react';\nimport { ScanInput, ScanOutput } from '@wavemaker/app-rn-runtime/variables/device/scan/scan.operation';\nimport { DisplayManager } from '@wavemaker/app-rn-runtime/core/display.manager';\nimport permissionManager from '@wavemaker/app-rn-runtime/runtime/services/device/permissions';\nimport appDisplayManagerService from '@wavemaker/app-rn-runtime/runtime/services/app-display-manager.service';\n\ninterface objectMap {\n [key: string]: string\n}\n\nconst barcodeFormatOptions: objectMap = {\n 'ALL': 'ALL',\n 'CODABAR': 'codabar',\n 'CODE_39': 'code39',\n 'CODE_93': 'code93',\n 'CODE_128': 'code128',\n 'DATA_MATRIX': 'datamatrix',\n 'EAN_8': 'ean8',\n 'EAN_13': 'ean13',\n 'ITF': 'itf14',\n 'PDF_417': 'pdf417',\n 'QR_CODE': 'qr',\n 'RSS14': 'rss14',\n 'RSS_EXPANDED': 'rssexpanded',\n 'UPC_E': 'upc_e',\n 'UPC_A': 'upc_a'\n};\nconst opacity = 'rgba(0, 0, 0, 0.6)';\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n flexDirection: 'column'\n },\n closeWrapper: {\n flex: 1,\n justifyContent: 'flex-end',\n alignItems: 'center',\n paddingBottom: 32\n },\n topWrapper: {\n flex: 2,\n backgroundColor: opacity\n },\n centerWrapper: {\n flex: 2,\n flexDirection: 'row'\n },\n leftWrapper: {\n flex: 2,\n backgroundColor: opacity\n },\n focused: {\n flex: 10\n },\n rightWrapper: {\n flex: 2,\n backgroundColor: opacity\n },\n bottomWrapper: {\n flex: 2,\n backgroundColor: opacity\n },\n});\n\nexport class ScanService {\n\n constructor(private displayManager: DisplayManager) {}\n\n getTestProps(suffix: string) {\n const id = \"scan\" + (suffix ? '_' + suffix : '');\n if (Platform.OS === 'android' || Platform.OS === 'web') {\n return {\n accessibilityLabel: id,\n testID: id\n };\n }\n return {\n accessible: false,\n testID: id\n };\n }\n\n public scanBarcode(params: ScanInput): Promise<ScanOutput> {\n const format = params?.barcodeFormat || 'ALL';\n const barcodeFormat: string | undefined = Platform.OS === 'ios' ? undefined : barcodeFormatOptions[format];\n return new Promise((resolve, reject) => {\n permissionManager.requestPermissions('camera').then(() => {\n const destroy = this.displayManager.show({\n content: (<Camera\n barCodeScannerSettings={barcodeFormat ? {\n barCodeTypes: [BarCodeScanner.Constants.BarCodeType[barcodeFormat]],\n }: undefined}\n onBarCodeScanned={(result) => {\n destroy.call(this.displayManager);\n resolve(result);\n }}\n style={StyleSheet.absoluteFillObject}\n >\n <View style={styles.topWrapper}>\n </View>\n <View style={styles.centerWrapper}>\n <View style={styles.leftWrapper}/>\n <View style={styles.focused}/>\n <View style={styles.rightWrapper}/>\n </View>\n <View style={styles.bottomWrapper}>\n \n <View style={styles.closeWrapper}>\n <TouchableOpacity\n {... this.getTestProps('close_button')}\n onPress={() => {\n destroy.call(this.displayManager);\n }}>\n <Ionicons name='close-circle' size={48} color='white' />\n </TouchableOpacity>\n </View>\n </View>\n </Camera>)\n });\n }, reject)\n }).then((response: any) => {\n let format;\n if (response.type) {\n const values = Object.values(BarCodeScanner.Constants.BarCodeType);\n const index = values.indexOf(response.type);\n format = index > -1 ? Object.keys(BarCodeScanner.Constants.BarCodeType)[index] : '';\n }\n return Promise.resolve({\n text: response.data,\n format : format || response.type,\n cancelled : false\n });\n });\n }\n}\nconst scanService = new ScanService(appDisplayManagerService);\nexport default scanService;\n"],"mappings":"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"}
@@ -2,7 +2,7 @@ var _class;
2
2
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
3
3
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
4
4
  function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
5
- import { cloneDeep, forEach, flatten, isArray, isEmpty, isObject, isString, get, reverse } from 'lodash';
5
+ import { cloneDeep, isNil, forEach, flatten, isArray, isEmpty, isObject, isString, get, reverse } from 'lodash';
6
6
  import React from 'react';
7
7
  import { deepCopy, isWebPreviewMode } from '@wavemaker/app-rn-runtime/core/utils';
8
8
  import EventNotifier from '@wavemaker/app-rn-runtime/core/event-notifier';
@@ -127,6 +127,34 @@ export class Theme {
127
127
  }
128
128
  return style;
129
129
  }
130
+ cleanseStyleProperties(style) {
131
+ if (!(style && isObject(style)) || isString(style) || isArray(style)) {
132
+ return;
133
+ }
134
+ style = style;
135
+ if (!isNil(style['shadowRadius'])) {
136
+ if (style['shadowRadius'] <= 0) {
137
+ style['shadowColor'] = 'transparent';
138
+ } else if (isNil(style['elevation'])) {
139
+ style['elevation'] = 2;
140
+ }
141
+ }
142
+ if (!isNil(style['margin'])) {
143
+ style['marginLeft'] = style['marginLeft'] || style['margin'];
144
+ style['marginRight'] = style['marginRight'] || style['margin'];
145
+ style['marginTop'] = style['marginTop'] || style['margin'];
146
+ style['marginBottom'] = style['marginBottom'] || style['margin'];
147
+ delete style['margin'];
148
+ }
149
+ if (!isNil(style['padding'])) {
150
+ style['paddingLeft'] = style['paddingLeft'] || style['padding'];
151
+ style['paddingRight'] = style['paddingRight'] || style['padding'];
152
+ style['paddingTop'] = style['paddingTop'] || style['padding'];
153
+ style['paddingBottom'] = style['paddingBottom'] || style['padding'];
154
+ delete style['padding'];
155
+ }
156
+ Object.keys(style).forEach((k, i) => this.cleanseStyleProperties(style[k]));
157
+ }
130
158
  getStyle(name) {
131
159
  let style = this.cache[name];
132
160
  if (style) {
@@ -143,6 +171,7 @@ export class Theme {
143
171
  let clonedStyle = {};
144
172
  if (!mediaQuery || matchMedia(mediaQuery).matches) {
145
173
  clonedStyle = cloneDeep(this.styles[name]);
174
+ this.cleanseStyleProperties(clonedStyle);
146
175
  }
147
176
  if (this !== Theme.BASE && isWebPreviewMode()) {
148
177
  this.checkStyleProperties('', clonedStyle);