@wavemaker/app-ng-runtime 12.0.0-next.45104 → 12.0.0-next.45127

Sign up to get free protection for your applications and to get access to all the features.
Files changed (304) hide show
  1. app-ng-runtime/build-task/bundles/index.umd.js +46 -38
  2. app-ng-runtime/build-task/esm2022/basic/default/anchor/anchor.build.mjs +2 -2
  3. app-ng-runtime/build-task/esm2022/basic/default/html/html.build.mjs +2 -2
  4. app-ng-runtime/build-task/esm2022/basic/default/icon/icon.build.mjs +2 -2
  5. app-ng-runtime/build-task/esm2022/basic/default/label/label.build.mjs +2 -2
  6. app-ng-runtime/build-task/esm2022/basic/default/picture/picture.build.mjs +2 -2
  7. app-ng-runtime/build-task/esm2022/basic/default/spinner/spinner.build.mjs +2 -2
  8. app-ng-runtime/build-task/esm2022/basic/progress/progress-circle/progress-circle.build.mjs +7 -2
  9. app-ng-runtime/build-task/esm2022/basic/rich-text-editor/rich-text-editor.build.mjs +2 -2
  10. app-ng-runtime/build-task/esm2022/containers/tile/tile.build.mjs +2 -2
  11. app-ng-runtime/build-task/esm2022/data/form/form-field/form-field.build.mjs +2 -2
  12. app-ng-runtime/build-task/esm2022/device/barcode-scanner/barcode-scanner.build.mjs +2 -2
  13. app-ng-runtime/build-task/esm2022/device/camera/camera.build.mjs +2 -2
  14. app-ng-runtime/build-task/esm2022/dialogs/alert-dialog/alert-dialog.build.mjs +2 -2
  15. app-ng-runtime/build-task/esm2022/input/calendar/calendar.build.mjs +2 -2
  16. app-ng-runtime/build-task/esm2022/input/color-picker/color-picker.build.mjs +3 -3
  17. app-ng-runtime/build-task/esm2022/input/currency/currency.build.mjs +3 -3
  18. app-ng-runtime/build-task/esm2022/input/default/button/button.build.mjs +2 -2
  19. app-ng-runtime/build-task/esm2022/input/default/button-group/button-group.build.mjs +2 -2
  20. app-ng-runtime/build-task/esm2022/input/default/switch/switch.build.mjs +2 -2
  21. app-ng-runtime/build-task/esm2022/input/file-upload/file-upload.build.mjs +5 -1
  22. app-ng-runtime/build-task/esm2022/page/footer/footer.build.mjs +2 -2
  23. app-ng-runtime/build-task/esm2022/page/header/header.build.mjs +2 -2
  24. app-ng-runtime/build-task/esm2022/page/layout.build.mjs +2 -2
  25. app-ng-runtime/build-task/esm2022/page/left-panel/left-panel.build.mjs +2 -2
  26. app-ng-runtime/build-task/esm2022/page/page.build.mjs +2 -2
  27. app-ng-runtime/build-task/esm2022/page/right-panel/right-panel.build.mjs +2 -2
  28. app-ng-runtime/build-task/esm2022/page/top-nav/top-nav.build.mjs +2 -2
  29. app-ng-runtime/build-task/fesm2022/index.mjs +46 -38
  30. app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
  31. app-ng-runtime/components/advanced/carousel/bundles/index.umd.js +1 -1
  32. app-ng-runtime/components/advanced/carousel/esm2022/carousel.animator.mjs +2 -2
  33. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs +1 -1
  34. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
  35. app-ng-runtime/components/base/bundles/index.umd.js +8 -2
  36. app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +3 -3
  37. app-ng-runtime/components/base/esm2022/utils/live-utils.mjs +8 -2
  38. app-ng-runtime/components/base/fesm2022/index.mjs +8 -2
  39. app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
  40. app-ng-runtime/components/base/pipes/custom-pipes.d.ts +1 -1
  41. app-ng-runtime/components/base/widgets/common/base/base-field-validations.d.ts +1 -1
  42. app-ng-runtime/components/basic/default/anchor/anchor.component.d.ts +1 -0
  43. app-ng-runtime/components/basic/default/audio/audio.component.d.ts +1 -0
  44. app-ng-runtime/components/basic/default/bundles/index.umd.js +27 -18
  45. app-ng-runtime/components/basic/default/esm2022/anchor/anchor.component.mjs +4 -4
  46. app-ng-runtime/components/basic/default/esm2022/anchor/anchor.props.mjs +2 -1
  47. app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +5 -5
  48. app-ng-runtime/components/basic/default/esm2022/audio/audio.props.mjs +2 -1
  49. app-ng-runtime/components/basic/default/esm2022/html/html.props.mjs +2 -1
  50. app-ng-runtime/components/basic/default/esm2022/icon/icon.component.mjs +6 -7
  51. app-ng-runtime/components/basic/default/esm2022/icon/icon.props.mjs +2 -1
  52. app-ng-runtime/components/basic/default/esm2022/iframe/iframe.component.mjs +3 -3
  53. app-ng-runtime/components/basic/default/esm2022/iframe/iframe.props.mjs +3 -2
  54. app-ng-runtime/components/basic/default/esm2022/label/label.props.mjs +1 -1
  55. app-ng-runtime/components/basic/default/esm2022/picture/picture.directive.mjs +2 -2
  56. app-ng-runtime/components/basic/default/esm2022/picture/picture.props.mjs +3 -1
  57. app-ng-runtime/components/basic/default/esm2022/spinner/spinner.props.mjs +3 -2
  58. app-ng-runtime/components/basic/default/esm2022/video/video.component.mjs +5 -4
  59. app-ng-runtime/components/basic/default/esm2022/video/video.props.mjs +2 -1
  60. app-ng-runtime/components/basic/default/fesm2022/index.mjs +27 -18
  61. app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
  62. app-ng-runtime/components/basic/default/icon/icon.component.d.ts +1 -0
  63. app-ng-runtime/components/basic/default/iframe/iframe.component.d.ts +1 -0
  64. app-ng-runtime/components/basic/default/picture/picture.directive.d.ts +2 -1
  65. app-ng-runtime/components/basic/default/video/video.component.d.ts +1 -0
  66. app-ng-runtime/components/basic/progress/bundles/index.umd.js +12 -8
  67. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +4 -4
  68. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.props.mjs +2 -1
  69. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +8 -6
  70. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.props.mjs +2 -1
  71. app-ng-runtime/components/basic/progress/fesm2022/index.mjs +12 -8
  72. app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
  73. app-ng-runtime/components/basic/progress/progress-bar/progress-bar.component.d.ts +1 -0
  74. app-ng-runtime/components/basic/progress/progress-circle/progress-circle.component.d.ts +3 -1
  75. app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +2 -0
  76. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +2 -1
  77. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.props.mjs +2 -1
  78. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +2 -0
  79. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
  80. app-ng-runtime/components/basic/search/bundles/index.umd.js +11 -9
  81. app-ng-runtime/components/basic/search/esm2022/search.component.mjs +14 -13
  82. app-ng-runtime/components/basic/search/esm2022/search.props.mjs +2 -1
  83. app-ng-runtime/components/basic/search/fesm2022/index.mjs +11 -9
  84. app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
  85. app-ng-runtime/components/basic/search/search.component.d.ts +1 -0
  86. app-ng-runtime/components/containers/accordion/bundles/index.umd.js +3 -3
  87. app-ng-runtime/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +4 -4
  88. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +3 -3
  89. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  90. app-ng-runtime/components/containers/panel/bundles/index.umd.js +14 -14
  91. app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +15 -15
  92. app-ng-runtime/components/containers/panel/fesm2022/index.mjs +14 -14
  93. app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
  94. app-ng-runtime/components/containers/tabs/bundles/index.umd.js +2 -2
  95. app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +3 -3
  96. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +2 -2
  97. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  98. app-ng-runtime/components/containers/wizard/bundles/index.umd.js +17 -0
  99. app-ng-runtime/components/containers/wizard/esm2022/wizard.component.mjs +18 -1
  100. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs +17 -0
  101. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  102. app-ng-runtime/components/containers/wizard/wizard.component.d.ts +1 -0
  103. app-ng-runtime/components/data/form/bundles/index.umd.js +4 -0
  104. app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +5 -3
  105. app-ng-runtime/components/data/form/fesm2022/index.mjs +4 -2
  106. app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
  107. app-ng-runtime/components/data/form/form-field/form-field.directive.d.ts +1 -0
  108. app-ng-runtime/components/data/live-table/bundles/index.umd.js +2 -2
  109. app-ng-runtime/components/data/live-table/esm2022/live-table.component.mjs +3 -3
  110. app-ng-runtime/components/data/live-table/fesm2022/index.mjs +2 -2
  111. app-ng-runtime/components/data/live-table/fesm2022/index.mjs.map +1 -1
  112. app-ng-runtime/components/data/pagination/bundles/index.umd.js +2 -0
  113. app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +3 -1
  114. app-ng-runtime/components/data/pagination/fesm2022/index.mjs +2 -0
  115. app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
  116. app-ng-runtime/components/data/table/bundles/index.umd.js +44 -10
  117. app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +14 -5
  118. app-ng-runtime/components/data/table/esm2022/table.component.mjs +30 -7
  119. app-ng-runtime/components/data/table/esm2022/table.props.mjs +3 -1
  120. app-ng-runtime/components/data/table/fesm2022/index.mjs +45 -11
  121. app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
  122. app-ng-runtime/components/data/table/table.component.d.ts +8 -1
  123. app-ng-runtime/components/dialogs/alert-dialog/bundles/index.umd.js +6 -4
  124. app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +7 -5
  125. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs +6 -4
  126. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
  127. app-ng-runtime/components/dialogs/confirm-dialog/bundles/index.umd.js +8 -5
  128. app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +9 -6
  129. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs +8 -5
  130. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
  131. app-ng-runtime/components/dialogs/default/bundles/index.umd.js +20 -3
  132. app-ng-runtime/components/dialogs/default/dialog-header/dialog-header.component.d.ts +2 -1
  133. app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +13 -1
  134. app-ng-runtime/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +9 -4
  135. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +20 -3
  136. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  137. app-ng-runtime/components/dialogs/design-dialog/bundles/index.umd.js +4 -4
  138. app-ng-runtime/components/dialogs/design-dialog/esm2022/dialog.component.mjs +5 -5
  139. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs +4 -4
  140. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
  141. app-ng-runtime/components/dialogs/iframe-dialog/bundles/index.umd.js +9 -5
  142. app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +10 -6
  143. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs +9 -5
  144. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
  145. app-ng-runtime/components/dialogs/partial-dialog/bundles/index.umd.js +9 -5
  146. app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +10 -6
  147. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs +9 -5
  148. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
  149. app-ng-runtime/components/input/calendar/bundles/index.umd.js +2 -4
  150. app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +3 -5
  151. app-ng-runtime/components/input/calendar/fesm2022/index.mjs +2 -4
  152. app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
  153. app-ng-runtime/components/input/chips/bundles/index.umd.js +3 -2
  154. app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +3 -3
  155. app-ng-runtime/components/input/chips/esm2022/chips.props.mjs +2 -1
  156. app-ng-runtime/components/input/chips/fesm2022/index.mjs +3 -2
  157. app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
  158. app-ng-runtime/components/input/color-picker/bundles/index.umd.js +5 -3
  159. app-ng-runtime/components/input/color-picker/color-picker.component.d.ts +1 -0
  160. app-ng-runtime/components/input/color-picker/esm2022/color-picker.component.mjs +6 -5
  161. app-ng-runtime/components/input/color-picker/esm2022/color-picker.props.mjs +2 -1
  162. app-ng-runtime/components/input/color-picker/fesm2022/index.mjs +5 -3
  163. app-ng-runtime/components/input/color-picker/fesm2022/index.mjs.map +1 -1
  164. app-ng-runtime/components/input/currency/bundles/index.umd.js +4 -3
  165. app-ng-runtime/components/input/currency/currency.component.d.ts +1 -0
  166. app-ng-runtime/components/input/currency/esm2022/currency.component.mjs +6 -6
  167. app-ng-runtime/components/input/currency/esm2022/currency.props.mjs +2 -1
  168. app-ng-runtime/components/input/currency/fesm2022/index.mjs +4 -3
  169. app-ng-runtime/components/input/currency/fesm2022/index.mjs.map +1 -1
  170. app-ng-runtime/components/input/default/bundles/index.umd.js +206 -110
  171. app-ng-runtime/components/input/default/button/button.component.d.ts +1 -0
  172. app-ng-runtime/components/input/default/checkbox/checkbox.component.d.ts +1 -0
  173. app-ng-runtime/components/input/default/esm2022/button/button.component.mjs +1 -1
  174. app-ng-runtime/components/input/default/esm2022/button/button.props.mjs +2 -1
  175. app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +8 -7
  176. app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +7 -7
  177. app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.props.mjs +2 -1
  178. app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +21 -16
  179. app-ng-runtime/components/input/default/esm2022/number/number.component.mjs +5 -5
  180. app-ng-runtime/components/input/default/esm2022/number/number.props.mjs +3 -1
  181. app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +28 -23
  182. app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +60 -30
  183. app-ng-runtime/components/input/default/esm2022/select/select.props.mjs +2 -1
  184. app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +6 -5
  185. app-ng-runtime/components/input/default/esm2022/switch/switch.props.mjs +2 -1
  186. app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +5 -5
  187. app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.props.mjs +2 -1
  188. app-ng-runtime/components/input/default/esm2022/text/color/input-color.component.mjs +5 -5
  189. app-ng-runtime/components/input/default/esm2022/text/color/input-color.props.mjs +2 -1
  190. app-ng-runtime/components/input/default/esm2022/text/email/input-email.component.mjs +5 -5
  191. app-ng-runtime/components/input/default/esm2022/text/email/input-email.props.mjs +2 -1
  192. app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +51 -14
  193. app-ng-runtime/components/input/default/esm2022/text/number/input-number.component.mjs +5 -5
  194. app-ng-runtime/components/input/default/esm2022/text/number/input-number.props.mjs +2 -1
  195. app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +5 -5
  196. app-ng-runtime/components/input/default/esm2022/text/text/input-text.props.mjs +2 -1
  197. app-ng-runtime/components/input/default/esm2022/textarea/textarea.component.mjs +9 -6
  198. app-ng-runtime/components/input/default/esm2022/textarea/textarea.props.mjs +2 -1
  199. app-ng-runtime/components/input/default/fesm2022/index.mjs +206 -110
  200. app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
  201. app-ng-runtime/components/input/default/number/number.component.d.ts +1 -0
  202. app-ng-runtime/components/input/default/select/select.component.d.ts +4 -4
  203. app-ng-runtime/components/input/default/text/calendar/input-calendar.component.d.ts +1 -0
  204. app-ng-runtime/components/input/default/text/color/input-color.component.d.ts +1 -0
  205. app-ng-runtime/components/input/default/text/email/input-email.component.d.ts +1 -0
  206. app-ng-runtime/components/input/default/text/locale/number-locale.d.ts +1 -0
  207. app-ng-runtime/components/input/default/text/number/input-number.component.d.ts +1 -0
  208. app-ng-runtime/components/input/default/text/text/input-text.component.d.ts +1 -0
  209. app-ng-runtime/components/input/default/textarea/textarea.component.d.ts +4 -2
  210. app-ng-runtime/components/input/epoch/bundles/index.umd.js +15 -9
  211. app-ng-runtime/components/input/epoch/date/date.component.d.ts +1 -0
  212. app-ng-runtime/components/input/epoch/date-time/date-time.component.d.ts +2 -1
  213. app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +6 -6
  214. app-ng-runtime/components/input/epoch/esm2022/date/date.props.mjs +2 -1
  215. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +10 -7
  216. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.props.mjs +2 -1
  217. app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +7 -7
  218. app-ng-runtime/components/input/epoch/esm2022/time/time.props.mjs +2 -1
  219. app-ng-runtime/components/input/epoch/fesm2022/index.mjs +15 -9
  220. app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
  221. app-ng-runtime/components/input/epoch/time/time.component.d.ts +1 -0
  222. app-ng-runtime/components/input/file-upload/bundles/index.umd.js +208 -95
  223. app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +206 -98
  224. app-ng-runtime/components/input/file-upload/esm2022/file-upload.props.mjs +6 -1
  225. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +209 -96
  226. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  227. app-ng-runtime/components/input/file-upload/file-upload.component.d.ts +17 -11
  228. app-ng-runtime/components/input/slider/bundles/index.umd.js +5 -6
  229. app-ng-runtime/components/input/slider/esm2022/slider.component.mjs +6 -8
  230. app-ng-runtime/components/input/slider/esm2022/slider.props.mjs +2 -1
  231. app-ng-runtime/components/input/slider/fesm2022/index.mjs +5 -6
  232. app-ng-runtime/components/input/slider/fesm2022/index.mjs.map +1 -1
  233. app-ng-runtime/components/input/slider/slider.component.d.ts +1 -0
  234. app-ng-runtime/components/navigation/menu/bundles/index.umd.js +10 -8
  235. app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +9 -8
  236. app-ng-runtime/components/navigation/menu/esm2022/menu.props.mjs +2 -1
  237. app-ng-runtime/components/navigation/menu/esm2022/nav/nav.component.mjs +2 -2
  238. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +10 -8
  239. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  240. app-ng-runtime/components/navigation/menu/menu.component.d.ts +1 -0
  241. app-ng-runtime/components/navigation/popover/bundles/index.umd.js +121 -13
  242. app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +122 -15
  243. app-ng-runtime/components/navigation/popover/esm2022/popover.props.mjs +2 -1
  244. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs +121 -13
  245. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  246. app-ng-runtime/components/navigation/popover/popover.component.d.ts +15 -3
  247. app-ng-runtime/components/page/default/bundles/index.umd.js +2 -1
  248. app-ng-runtime/components/page/default/esm2022/page.props.mjs +4 -3
  249. app-ng-runtime/components/page/default/fesm2022/index.mjs +2 -1
  250. app-ng-runtime/components/page/default/fesm2022/index.mjs.map +1 -1
  251. app-ng-runtime/components/page/footer/bundles/index.umd.js +2 -1
  252. app-ng-runtime/components/page/footer/esm2022/footer.props.mjs +3 -2
  253. app-ng-runtime/components/page/footer/fesm2022/index.mjs +2 -1
  254. app-ng-runtime/components/page/footer/fesm2022/index.mjs.map +1 -1
  255. app-ng-runtime/components/page/header/bundles/index.umd.js +2 -1
  256. app-ng-runtime/components/page/header/esm2022/header.props.mjs +3 -2
  257. app-ng-runtime/components/page/header/fesm2022/index.mjs +2 -1
  258. app-ng-runtime/components/page/header/fesm2022/index.mjs.map +1 -1
  259. app-ng-runtime/components/page/left-panel/bundles/index.umd.js +2 -1
  260. app-ng-runtime/components/page/left-panel/esm2022/left-panel.props.mjs +3 -2
  261. app-ng-runtime/components/page/left-panel/fesm2022/index.mjs +2 -1
  262. app-ng-runtime/components/page/left-panel/fesm2022/index.mjs.map +1 -1
  263. app-ng-runtime/components/page/right-panel/bundles/index.umd.js +2 -1
  264. app-ng-runtime/components/page/right-panel/esm2022/right-panel.props.mjs +3 -2
  265. app-ng-runtime/components/page/right-panel/fesm2022/index.mjs +2 -1
  266. app-ng-runtime/components/page/right-panel/fesm2022/index.mjs.map +1 -1
  267. app-ng-runtime/components/page/top-nav/bundles/index.umd.js +2 -1
  268. app-ng-runtime/components/page/top-nav/esm2022/top-nav.props.mjs +3 -2
  269. app-ng-runtime/components/page/top-nav/fesm2022/index.mjs +2 -1
  270. app-ng-runtime/components/page/top-nav/fesm2022/index.mjs.map +1 -1
  271. app-ng-runtime/core/bundles/index.umd.js +12 -9
  272. app-ng-runtime/core/esm2022/public_api.mjs +2 -2
  273. app-ng-runtime/core/esm2022/utils/build-utils.mjs +7 -7
  274. app-ng-runtime/core/esm2022/utils/utils.mjs +5 -4
  275. app-ng-runtime/core/fesm2022/index.mjs +12 -10
  276. app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
  277. app-ng-runtime/core/public_api.d.ts +1 -1
  278. app-ng-runtime/core/utils/utils.d.ts +1 -0
  279. app-ng-runtime/locales/moment-timezone/moment-timezone-with-data.js +37 -37
  280. app-ng-runtime/mobile/components/device/barcode-scanner/bundles/index.umd.js +2 -1
  281. app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.props.mjs +3 -2
  282. app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs +2 -1
  283. app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +1 -1
  284. app-ng-runtime/mobile/components/device/camera/bundles/index.umd.js +2 -1
  285. app-ng-runtime/mobile/components/device/camera/esm2022/camera.props.mjs +3 -2
  286. app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs +2 -1
  287. app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs.map +1 -1
  288. app-ng-runtime/mobile/core/bundles/index.umd.js +18 -2
  289. app-ng-runtime/mobile/core/esm2022/native.xhr.mjs +19 -3
  290. app-ng-runtime/mobile/core/fesm2022/index.mjs +18 -2
  291. app-ng-runtime/mobile/core/fesm2022/index.mjs.map +1 -1
  292. app-ng-runtime/package.json +1 -1
  293. app-ng-runtime/runtime/base/bundles/index.umd.js +7 -5
  294. app-ng-runtime/runtime/base/components/app-component/app.component.d.ts +2 -3
  295. app-ng-runtime/runtime/base/esm2022/components/app-component/app.component.mjs +5 -5
  296. app-ng-runtime/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +5 -4
  297. app-ng-runtime/runtime/base/esm2022/services/i18n.service.mjs +2 -2
  298. app-ng-runtime/runtime/base/fesm2022/index.mjs +7 -5
  299. app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
  300. app-ng-runtime/runtime/base/guards/can-deactivate-page.guard.d.ts +2 -1
  301. app-ng-runtime/runtime/base/services/i18n.service.d.ts +1 -1
  302. app-ng-runtime/scripts/@wavemaker/nvd3/build/nv.d3.min.js +1 -1
  303. app-ng-runtime/scripts/datatable/datatable.js +29 -29
  304. app-ng-runtime/scripts/summernote/dist/summernote-lite.min.js +2 -3
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../projects/core/src/enums/enums.ts","../../../projects/core/src/utils/build-utils.ts","../../../projects/core/src/constants/currency-constants.ts","../../../projects/core/src/utils/dom.ts","../../../projects/core/src/utils/wm-project-properties.ts","../../../projects/core/src/utils/id-generator.ts","../../../projects/core/src/utils/expression-parser.ts","../../../projects/core/src/utils/watcher.ts","../../../projects/core/src/types/types.ts","../../../projects/core/src/utils/utils.ts","../../../projects/core/src/utils/event-notifier.ts","../../../projects/core/src/services/viewport.service.ts","../../../projects/core/src/services/constant.service.ts","../../../projects/core/src/services/utils.service.ts","../../../projects/core/src/services/field-type.service.ts","../../../projects/core/src/services/field-widget.service.ts","../../../projects/core/src/services/script-loader.service.ts","../../../projects/core/src/services/user-custom-pipe-manager.service.ts","../../../projects/core/src/services/custom-icons-loader.service.ts","../../../projects/core/src/services/state-persistence.service.ts","../../../projects/core/src/services/pagination.service.ts","../../../projects/core/src/core.module.ts","../../../projects/core/src/utils/lru-cache.ts","../../../projects/core/src/public_api.ts","../../../projects/core/src/index.ts"],"sourcesContent":["export enum FormWidgetType {\n AUTOCOMPLETE = 'autocomplete',\n CHECKBOX = 'checkbox',\n CHECKBOXSET = 'checkboxset',\n CHIPS = 'chips',\n COLORPICKER = 'colorpicker',\n CURRENCY = 'currency',\n CUSTOMWIDGET = 'custom-widget',\n DATE = 'date',\n DATETIME = 'datetime',\n NUMBER = 'number',\n PASSWORD = 'password',\n RADIOSET = 'radioset',\n RATING = 'rating',\n RICHTEXT = 'richtext',\n SELECT = 'select',\n TOGGLE = 'toggle',\n SLIDER = 'slider',\n SWITCH = 'switch',\n TEXT = 'text',\n TEXTAREA = 'textarea',\n TIME = 'time',\n TIMESTAMP = 'timestamp',\n TYPEAHEAD = 'typeahead',\n UPLOAD = 'upload'\n}\n\nexport enum DataType {\n INTEGER = 'integer',\n BIG_INTEGER = 'big_integer',\n SHORT = 'short',\n FLOAT = 'float',\n BIG_DECIMAL = 'big_decimal',\n DOUBLE = 'double',\n LONG = 'long',\n BYTE = 'byte',\n STRING = 'string',\n CHARACTER = 'character',\n TEXT = 'text',\n DATE = 'date',\n TIME = 'time',\n TIMESTAMP = 'timestamp',\n DATETIME = 'datetime',\n LOCALDATETIME = 'localdatetime',\n BOOLEAN = 'boolean',\n LIST = 'list',\n CLOB = 'clob',\n BLOB = 'blob'\n}\n\nexport enum MatchMode {\n BETWEEN = 'between',\n GREATER = 'greaterthanequal',\n LESSER = 'lessthanequal',\n NULL = 'null',\n EMPTY = 'empty',\n NULLOREMPTY = 'nullorempty',\n EQUALS = 'exact'\n}\n\nexport enum DEFAULT_FORMATS {\n DATE = 'yyyy-MM-dd',\n TIME = 'HH:mm:ss',\n TIMESTAMP = 'timestamp',\n DATETIME = 'yyyy-MM-ddTHH:mm:ss',\n LOCALDATETIME = 'yyyy-MM-ddTHH:mm:ss',\n DATETIME_ORACLE = 'yyyy-MM-dd HH:mm:ss',\n DATE_TIME = 'yyyy-MM-dd HH:mm:ss'\n}\n","import { Attribute, Element } from '@angular/compiler';\nimport { FormWidgetType } from '../enums/enums';\nimport {includes, isArray, startsWith} from \"lodash-es\";\n\n// For html upload widget, add events on input tag\nconst getUploadEventTmpl = (attrs, counter?, fieldName?) => {\n let eventTmpl = '';\n attrs.forEach((val, key) => {\n if (key && key.endsWith('.event')) {\n const eventName = key.split('.')[0];\n const counterTl = counter ? `${counter}.` : '';\n eventTmpl = ` ${eventTmpl} (${eventName})=\"${counterTl}triggerUploadEvent($event, '${eventName}', '${fieldName}', row)\" `;\n }\n });\n return eventTmpl;\n};\n\n// Method to get the form widget template\nexport const getFormWidgetTemplate = (widgetType: string, innerTmpl: string, attrs?: Map<string, string>, options: any = {}) => {\n let tmpl;\n const updateOn = attrs.get('updateon');\n const updateOnTmpl = updateOn ? `updateon=\"${updateOn}\"` : '';\n const showineditmode = attrs.get('showineditmode') || attrs.get('showineditmode.bind') || true;\n const showTmpl: string = showineditmode == 'false'? `show=\"${showineditmode}\"`: `show.bind=\"${showineditmode}\"`;\n switch (widgetType) {\n case FormWidgetType.AUTOCOMPLETE:\n case FormWidgetType.TYPEAHEAD:\n tmpl = `<div wmSearch type=\"autocomplete\" debouncetime=\"${attrs.get('debouncetime')}\" ${innerTmpl} ${showTmpl}></div>`;\n break;\n case FormWidgetType.CHECKBOX:\n tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required')==='true' ? 'required=true' : ''} ${showTmpl}></div>`;\n break;\n case FormWidgetType.CHECKBOXSET:\n tmpl = `<ul role=\"group\" wmCheckboxset ${innerTmpl} ${attrs.get('required')==='true' ? 'required=true' : ''} ${showTmpl}></ul>`;\n break;\n case FormWidgetType.CHIPS:\n tmpl = `<ul wmChips role=\"input\" debouncetime=\"${attrs.get('debouncetime')}\" ${innerTmpl} ${showTmpl}></ul>`;\n break;\n case FormWidgetType.COLORPICKER:\n tmpl = `<div wmColorPicker ${attrs.get('required')==='true' ? 'required=true' : ''} ${innerTmpl} ${showTmpl}></div>`;\n break;\n case FormWidgetType.CURRENCY:\n tmpl = `<div wmCurrency ${attrs.get('required')==='true' ? 'required=true' : ''} ${updateOnTmpl} ${innerTmpl} ${showTmpl}></div>`;\n break;\n case FormWidgetType.CUSTOMWIDGET:\n tmpl = `<div wmWidgetContainer customWidgetContainer ${attrs.get('required')==='true' ? 'required=true' : ''} ${updateOnTmpl} ${innerTmpl} ${showTmpl}></div>`;\n break;\n case FormWidgetType.DATE:\n tmpl = `<div wmDate ${attrs.get('required')==='true' ? 'required=true' : ''} dataentrymode=\"${attrs.get('dataentrymode')}\" ${innerTmpl} ${showTmpl}></div>`;\n break;\n case FormWidgetType.DATETIME:\n tmpl = `<div wmDateTime ${attrs.get('required')==='true' ? 'required=true' : ''} dataentrymode=\"${attrs.get('dataentrymode')}\" ${innerTmpl} ${showTmpl}></div>`;\n break;\n case FormWidgetType.NUMBER:\n tmpl = `<div wmNumber ${innerTmpl} ${attrs.get('required')==='true' ? 'required=true' : ''} type=\"number\" aria-label=\"Only numbers\" ${updateOnTmpl} ${showTmpl}></div>`;\n break;\n case FormWidgetType.PASSWORD:\n tmpl = `<wm-input ${innerTmpl} ${attrs.get('required')==='true' ? 'required=true' : ''} type=\"password\" aria-label=\"Enter password\" ${updateOnTmpl} ${showTmpl}></wm-input>`;\n break;\n case FormWidgetType.RADIOSET:\n tmpl = `<ul role=\"radiogroup\" wmRadioset ${innerTmpl} ${showTmpl}></ul>`;\n break;\n case FormWidgetType.RATING:\n tmpl = `<div wmRating ${innerTmpl} ${showTmpl}></div>`;\n break;\n case FormWidgetType.RICHTEXT:\n tmpl = `<div wmRichTextEditor role=\"textbox\" ${innerTmpl} ${showTmpl}></div>`;\n break;\n case FormWidgetType.SELECT:\n tmpl = `<wm-select ${attrs.get('required')==='true' ? 'required=true' : ''} ${innerTmpl} ${showTmpl}></wm-select>`;\n break;\n case FormWidgetType.TOGGLE:\n tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required')==='true' ? 'required=true' : ''} type=\"toggle\" role=\"checkbox\" aria-label=\"Toggle button\" ${showTmpl}></div>`;\n break;\n case FormWidgetType.SLIDER:\n tmpl = `<div wmSlider ${innerTmpl} ${showTmpl}></div>`;\n break;\n case FormWidgetType.SWITCH:\n tmpl = `<div wmSwitch ${innerTmpl} ${showTmpl}></div>`;\n break;\n case FormWidgetType.TEXT:\n const inputType = options.inputType || 'inputtype';\n tmpl = `<wm-input ${innerTmpl} ${attrs.get('required')==='true' ? 'required=true' : ''} type=\"${attrs.get(inputType) || 'text'}\" ${updateOnTmpl} ${showTmpl}></wm-input>`;\n break;\n case FormWidgetType.TEXTAREA:\n tmpl = `<wm-textarea ${innerTmpl} ${attrs.get('required')==='true' ? 'required=true' : ''} role=\"textbox\" ${updateOnTmpl} ${showTmpl}></wm-textarea>`;\n break;\n case FormWidgetType.TIME:\n tmpl = `<div wmTime ${attrs.get('required')==='true' ? 'required=true' : ''} dataentrymode=\"${attrs.get('dataentrymode')}\" ${innerTmpl} ${showTmpl}></div>`;\n break;\n case FormWidgetType.TIMESTAMP:\n tmpl = `<div wmDateTime ${attrs.get('required')==='true' ? 'required=true' : ''} dataentrymode=\"${attrs.get('dataentrymode')}\" ${innerTmpl} role=\"input\" ${showTmpl}></div>`;\n break;\n case FormWidgetType.UPLOAD:\n const counter = options.counter;\n const pCounter = options.pCounter;\n const uploadProps = options.uploadProps;\n const eventTmpl = getUploadEventTmpl(attrs, counter, uploadProps && uploadProps.name);\n if (uploadProps) {\n tmpl = `<form name=\"${uploadProps.formName}\" ${innerTmpl}>\n <input focus-target class=\"file-upload\" type=\"file\" name=\"${uploadProps.name}\" ${eventTmpl} ${showTmpl}/>\n </form>`;\n } else {\n tmpl = `<a class=\"form-control-static\" href=\"{{${counter}.href}}\" target=\"_blank\" *ngIf=\"${counter}.filetype === 'image' && ${counter}.href\">\n <img style=\"height:2em\" class=\"wi wi-file\" [src]=\"${counter}.href\"/></a>\n <a class=\"form-control-static\" target=\"_blank\" href=\"{{${counter}.href}}\" *ngIf=\"${counter}.filetype !== 'image' && ${counter}.href\">\n <i class=\"wi wi-file\"></i></a>\n <input ${innerTmpl} class=\"app-blob-upload\" [ngClass]=\"{'file-readonly': ${counter}.readonly}\" ${eventTmpl}\n [required]=\"${counter}.required\" type=\"file\" name=\"${attrs.get('key') || attrs.get('name')}_formWidget\" [readonly]=\"${counter}.readonly\"\n [class.hidden]=\"!${pCounter}.isUpdateMode\" [accept]=\"${counter}.permitted\" ${showTmpl}>`;\n }\n break;\n default:\n tmpl = `<wm-input ${innerTmpl} ${attrs.get('required')==='true' ? 'required=true' : ''} type=\"text\" ${updateOnTmpl} ${showTmpl}></wm-input>`;\n break;\n }\n return tmpl;\n};\n\nexport const getRequiredFormWidget = (widgetType): string => {\n switch (widgetType) {\n case FormWidgetType.AUTOCOMPLETE:\n case FormWidgetType.TYPEAHEAD:\n return 'wm-search';\n case FormWidgetType.CHIPS:\n return 'wm-chips';\n case FormWidgetType.COLORPICKER:\n return 'wm-colorpicker';\n case FormWidgetType.CURRENCY:\n return 'wm-currency';\n case FormWidgetType.CUSTOMWIDGET:\n return 'wm-custom-widget';\n case FormWidgetType.DATE:\n return 'wm-date';\n case FormWidgetType.DATETIME:\n return 'wm-datetime';\n case FormWidgetType.TIME:\n case FormWidgetType.TIMESTAMP:\n return 'wm-time';\n case FormWidgetType.RATING:\n return 'wm-rating';\n case FormWidgetType.RICHTEXT:\n return 'wm-richtexteditor';\n case FormWidgetType.SLIDER:\n return 'wm-slider';\n default:\n return 'wm-text';\n }\n};\n\n// This mehtod is used to add datasetboundexpr attribute for node\nconst addDatasetBoundExprAttribute = (childNode: Element, attr: Attribute, attrValue: string) => {\n attrValue = attrValue.replace('bind:', '');\n const datasetBoundAttribute = childNode.attrs.find( a => a.name === 'datasetboundexpr');\n if (attr.name === 'dataset' && !datasetBoundAttribute) {\n childNode.attrs.push(new Attribute('datasetboundexpr', attrValue, attr.sourceSpan, attr.keySpan, attr.valueSpan, undefined, undefined));\n }\n};\n\n\n/**\n * exp: User built bind expression\n * To check the custom pipe expressions.\n * If user use the custom pipe expression it will check in the exp. that \"custom\" string exist or not with (:) syntax.\n * Eg: custom:\n * custom :\n */\nexport const checkIsCustomPipeExpression = function(exp){\n let customRegEx = /(custom(\\s*:))/g;\n let matches = exp.match(customRegEx);\n return matches && matches.length;\n}\n\n\n// The bound value is replaced with {{item.fieldname}} here. This is needed by the liveList when compiling inner elements\nexport const updateTemplateAttrs = (rootNode: Element | Array<Element>, parentDataSet: string, widgetName: string, instance: string = '', referenceName: string = 'item') => {\n\n const sanitizedParentDataset = parentDataSet.replace(/([^a-zA-Z0-9.])/g, '\\\\$1');\n const regex = new RegExp('(' + sanitizedParentDataset + ')(\\\\[0\\\\])?(.data\\\\[\\\\$i\\\\])?(.content\\\\[\\\\$i\\\\])?(\\\\[\\\\$i\\\\])?', 'g');\n let currentItemRegEx;\n let currentItemWidgetsRegEx;\n let formWidgetsRegex;\n let nodes: Array<Element>;\n const widgetList = {\n 'wm-list': ['itemclass', 'disableitem', 'dataset']\n };\n\n if (widgetName) {\n currentItemRegEx = new RegExp(`(Widgets.${widgetName}.currentItem)\\\\b`, 'g');\n currentItemWidgetsRegEx = new RegExp(`(Widgets.${widgetName}.currentItemWidgets)\\\\b`, 'g');\n formWidgetsRegex = new RegExp(`(Widgets.(.*).(formWidgets|filterWidgets))\\\\b`, 'g');\n }\n\n if (!isArray(rootNode)) {\n // [WMS-16712],[WMS-16769],[WMS-16805] The markup of root node(table, list, carousel) need to be updated only for the widgets mentioned in widgetList map.\n nodes = widgetList[(rootNode as any).name] ? [rootNode as Element] : ((rootNode as any).children || []) as Array<Element>;\n } else {\n nodes = rootNode as Array<Element>;\n }\n\n nodes.forEach((childNode: Element) => {\n if (childNode.name) {\n const nodeName = childNode.name;\n const parentDataSetLengthRegex = new RegExp('bind:\\\\s*\\\\(*' + parentDataSet + '\\\\)*\\\\.length\\\\)*');\n childNode.attrs.forEach((attr) => {\n // trim the extra spaces in bindings\n let value = attr.value && attr.value.trim();\n if (startsWith(value, 'bind:')) {\n // The markup of root node(table, list, carousel) attributes conatains same dataset variable binding then those attributes need to be updated only for specific properties mentioned in widgetList map.\n if (!widgetList[nodeName] || (widgetList[nodeName] && widgetList[nodeName].indexOf(attr.name) > -1)) {\n // if the attribute value is \"bind:xxxxx.xxxx\", either the dataSet/scopeDataSet has to contain \"xxxx.xxxx\"\n // [WMS-17908]: if child widget contains bind expression as parendataset.length > 0 then dont replace it with item\n if (includes(value, parentDataSet) && value !== 'bind:' + parentDataSet && !parentDataSetLengthRegex.test(value)) {\n value = value.replace('bind:', '');\n addDatasetBoundExprAttribute(childNode, attr, value);\n value = value.replace(regex, referenceName);\n value = 'bind:' + value;\n // Check is this custom bind expression and currentWidgetItem regex\n if(checkIsCustomPipeExpression(value) && currentItemRegEx){\n // Adding the currentItem as last argument for the expression.\n // For the custom pipes(expresion), it will send the currentItem as context.\n value += ':'+ currentItemRegEx.exec(currentItemRegEx.source)[0];\n }\n }\n }\n // Replace item if widget property is bound to livelist currentItem\n if (currentItemRegEx && currentItemRegEx.test(value)) {\n // Change value from 'bind:Widgets.formName.formWidgets.listName.currentItem' to 'bind:Widgets.listName.currentItem'\n if (value.includes('.formWidgets') || value.includes('.filterWidgets')) {\n value = value.replace(formWidgetsRegex, 'Widgets');\n }\n addDatasetBoundExprAttribute(childNode, attr, value);\n value = value.replace(currentItemRegEx, referenceName);\n }\n if (currentItemWidgetsRegEx && currentItemWidgetsRegEx.test(value)) {\n value = value.replace(currentItemWidgetsRegEx, `${instance}currentItemWidgets`);\n }\n\n attr.value = value;\n }\n });\n updateTemplateAttrs(childNode.children as Array<Element>, parentDataSet, widgetName, instance, referenceName);\n }\n });\n};\n\n// If formControlName attribute is present, dont add the ngModel\nexport const getNgModelAttr = attrs => {\n if (attrs.has('formControlName') || attrs.has('formControlName.bind')) {\n return '';\n }\n return 'ngModel';\n};\n\nconst rowActionAttrs = new Map(\n [\n ['display-name', 'caption'],\n ['display-name.bind', 'caption.bind'],\n ['title', 'hint'],\n ['title.bind', 'hint.bind'],\n ['show', 'show'],\n ['show.bind', 'show.bind'],\n ['disabled', 'disabled'],\n ['disabled.bind', 'disabled.bind'],\n ['hyperlink', 'hyperlink'],\n ['hyperlink.bind', 'hyperlink.bind'],\n ['target', 'target'],\n ['conditionalclass.bind', 'conditionalclass.bind'],\n ['conditionalstyle.bind', 'conditionalstyle.bind']\n ]\n);\n\nexport const getRowActionAttrs = attrs => {\n let tmpl = '';\n attrs.forEach((val, key) => {\n const newAttr = rowActionAttrs.get(key);\n if (newAttr) {\n tmpl += `${newAttr}=\"${val}\" `;\n }\n });\n return tmpl;\n};\n","export const CURRENCY_INFO = {\n 'USD': {\n 'symbol': '$',\n 'name': 'US Dollar',\n 'symbol_native': '$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'USD',\n 'name_plural': 'US dollars'\n },\n 'CAD': {\n 'symbol': 'CA$',\n 'name': 'Canadian Dollar',\n 'symbol_native': '$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'CAD',\n 'name_plural': 'Canadian dollars'\n },\n 'EUR': {\n 'symbol': '€',\n 'name': 'Euro',\n 'symbol_native': '€',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'EUR',\n 'name_plural': 'euros'\n },\n 'AED': {\n 'symbol': 'AED',\n 'name': 'United Arab Emirates Dirham',\n 'symbol_native': 'د.إ.‏',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'AED',\n 'name_plural': 'UAE dirhams'\n },\n 'AFN': {\n 'symbol': 'Af',\n 'name': 'Afghan Afghani',\n 'symbol_native': '؋',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'AFN',\n 'name_plural': 'Afghan Afghanis'\n },\n 'ALL': {\n 'symbol': 'ALL',\n 'name': 'Albanian Lek',\n 'symbol_native': 'Lek',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'ALL',\n 'name_plural': 'Albanian lekë'\n },\n 'AMD': {\n 'symbol': 'AMD',\n 'name': 'Armenian Dram',\n 'symbol_native': 'դր.',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'AMD',\n 'name_plural': 'Armenian drams'\n },\n 'ARS': {\n 'symbol': 'AR$',\n 'name': 'Argentine Peso',\n 'symbol_native': '$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'ARS',\n 'name_plural': 'Argentine pesos'\n },\n 'AUD': {\n 'symbol': 'AU$',\n 'name': 'Australian Dollar',\n 'symbol_native': '$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'AUD',\n 'name_plural': 'Australian dollars'\n },\n 'AZN': {\n 'symbol': 'man.',\n 'name': 'Azerbaijani Manat',\n 'symbol_native': 'ман.',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'AZN',\n 'name_plural': 'Azerbaijani manats'\n },\n 'BAM': {\n 'symbol': 'KM',\n 'name': 'Bosnia-Herzegovina Convertible Mark',\n 'symbol_native': 'KM',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'BAM',\n 'name_plural': 'Bosnia-Herzegovina convertible marks'\n },\n 'BDT': {\n 'symbol': 'Tk',\n 'name': 'Bangladeshi Taka',\n 'symbol_native': '৳',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'BDT',\n 'name_plural': 'Bangladeshi takas'\n },\n 'BGN': {\n 'symbol': 'BGN',\n 'name': 'Bulgarian Lev',\n 'symbol_native': 'лв.',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'BGN',\n 'name_plural': 'Bulgarian leva'\n },\n 'BHD': {\n 'symbol': 'BD',\n 'name': 'Bahraini Dinar',\n 'symbol_native': 'د.ب.‏',\n 'decimal_digits': 3,\n 'rounding': 0,\n 'code': 'BHD',\n 'name_plural': 'Bahraini dinars'\n },\n 'BIF': {\n 'symbol': 'FBu',\n 'name': 'Burundian Franc',\n 'symbol_native': 'FBu',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'BIF',\n 'name_plural': 'Burundian francs'\n },\n 'BND': {\n 'symbol': 'BN$',\n 'name': 'Brunei Dollar',\n 'symbol_native': '$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'BND',\n 'name_plural': 'Brunei dollars'\n },\n 'BOB': {\n 'symbol': 'Bs',\n 'name': 'Bolivian Boliviano',\n 'symbol_native': 'Bs',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'BOB',\n 'name_plural': 'Bolivian bolivianos'\n },\n 'BRL': {\n 'symbol': 'R$',\n 'name': 'Brazilian Real',\n 'symbol_native': 'R$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'BRL',\n 'name_plural': 'Brazilian reals'\n },\n 'BWP': {\n 'symbol': 'BWP',\n 'name': 'Botswanan Pula',\n 'symbol_native': 'P',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'BWP',\n 'name_plural': 'Botswanan pulas'\n },\n 'BYR': {\n 'symbol': 'BYR',\n 'name': 'Belarusian Ruble',\n 'symbol_native': 'BYR',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'BYR',\n 'name_plural': 'Belarusian rubles'\n },\n 'BZD': {\n 'symbol': 'BZ$',\n 'name': 'Belize Dollar',\n 'symbol_native': '$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'BZD',\n 'name_plural': 'Belize dollars'\n },\n 'CDF': {\n 'symbol': 'CDF',\n 'name': 'Congolese Franc',\n 'symbol_native': 'FrCD',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'CDF',\n 'name_plural': 'Congolese francs'\n },\n 'CHF': {\n 'symbol': 'CHF',\n 'name': 'Swiss Franc',\n 'symbol_native': 'CHF',\n 'decimal_digits': 2,\n 'rounding': 0.05,\n 'code': 'CHF',\n 'name_plural': 'Swiss francs'\n },\n 'CLP': {\n 'symbol': 'CL$',\n 'name': 'Chilean Peso',\n 'symbol_native': '$',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'CLP',\n 'name_plural': 'Chilean pesos'\n },\n 'CNY': {\n 'symbol': 'CN¥',\n 'name': 'Chinese Yuan',\n 'symbol_native': 'CN¥',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'CNY',\n 'name_plural': 'Chinese yuan'\n },\n 'COP': {\n 'symbol': 'CO$',\n 'name': 'Colombian Peso',\n 'symbol_native': '$',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'COP',\n 'name_plural': 'Colombian pesos'\n },\n 'CRC': {\n 'symbol': '₡',\n 'name': 'Costa Rican Colón',\n 'symbol_native': '₡',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'CRC',\n 'name_plural': 'Costa Rican colóns'\n },\n 'CVE': {\n 'symbol': 'CV$',\n 'name': 'Cape Verdean Escudo',\n 'symbol_native': 'CV$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'CVE',\n 'name_plural': 'Cape Verdean escudos'\n },\n 'CZK': {\n 'symbol': 'Kč',\n 'name': 'Czech Republic Koruna',\n 'symbol_native': 'Kč',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'CZK',\n 'name_plural': 'Czech Republic korunas'\n },\n 'DJF': {\n 'symbol': 'Fdj',\n 'name': 'Djiboutian Franc',\n 'symbol_native': 'Fdj',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'DJF',\n 'name_plural': 'Djiboutian francs'\n },\n 'DKK': {\n 'symbol': 'Dkr',\n 'name': 'Danish Krone',\n 'symbol_native': 'kr',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'DKK',\n 'name_plural': 'Danish kroner'\n },\n 'DOP': {\n 'symbol': 'RD$',\n 'name': 'Dominican Peso',\n 'symbol_native': 'RD$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'DOP',\n 'name_plural': 'Dominican pesos'\n },\n 'DZD': {\n 'symbol': 'DA',\n 'name': 'Algerian Dinar',\n 'symbol_native': 'د.ج.‏',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'DZD',\n 'name_plural': 'Algerian dinars'\n },\n 'EEK': {\n 'symbol': 'Ekr',\n 'name': 'Estonian Kroon',\n 'symbol_native': 'kr',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'EEK',\n 'name_plural': 'Estonian kroons'\n },\n 'EGP': {\n 'symbol': 'EGP',\n 'name': 'Egyptian Pound',\n 'symbol_native': 'ج.م.‏',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'EGP',\n 'name_plural': 'Egyptian pounds'\n },\n 'ERN': {\n 'symbol': 'Nfk',\n 'name': 'Eritrean Nakfa',\n 'symbol_native': 'Nfk',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'ERN',\n 'name_plural': 'Eritrean nakfas'\n },\n 'ETB': {\n 'symbol': 'Br',\n 'name': 'Ethiopian Birr',\n 'symbol_native': 'Br',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'ETB',\n 'name_plural': 'Ethiopian birrs'\n },\n 'GBP': {\n 'symbol': '£',\n 'name': 'British Pound Sterling',\n 'symbol_native': '£',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'GBP',\n 'name_plural': 'British pounds sterling'\n },\n 'GEL': {\n 'symbol': 'GEL',\n 'name': 'Georgian Lari',\n 'symbol_native': 'GEL',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'GEL',\n 'name_plural': 'Georgian laris'\n },\n 'GHS': {\n 'symbol': 'GH₵',\n 'name': 'Ghanaian Cedi',\n 'symbol_native': 'GH₵',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'GHS',\n 'name_plural': 'Ghanaian cedis'\n },\n 'GNF': {\n 'symbol': 'FG',\n 'name': 'Guinean Franc',\n 'symbol_native': 'FG',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'GNF',\n 'name_plural': 'Guinean francs'\n },\n 'GTQ': {\n 'symbol': 'GTQ',\n 'name': 'Guatemalan Quetzal',\n 'symbol_native': 'Q',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'GTQ',\n 'name_plural': 'Guatemalan quetzals'\n },\n 'HKD': {\n 'symbol': 'HK$',\n 'name': 'Hong Kong Dollar',\n 'symbol_native': '$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'HKD',\n 'name_plural': 'Hong Kong dollars'\n },\n 'HNL': {\n 'symbol': 'HNL',\n 'name': 'Honduran Lempira',\n 'symbol_native': 'L',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'HNL',\n 'name_plural': 'Honduran lempiras'\n },\n 'HRK': {\n 'symbol': 'kn',\n 'name': 'Croatian Kuna',\n 'symbol_native': 'kn',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'HRK',\n 'name_plural': 'Croatian kunas'\n },\n 'HUF': {\n 'symbol': 'Ft',\n 'name': 'Hungarian Forint',\n 'symbol_native': 'Ft',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'HUF',\n 'name_plural': 'Hungarian forints'\n },\n 'IDR': {\n 'symbol': 'Rp',\n 'name': 'Indonesian Rupiah',\n 'symbol_native': 'Rp',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'IDR',\n 'name_plural': 'Indonesian rupiahs'\n },\n 'ILS': {\n 'symbol': '₪',\n 'name': 'Israeli New Sheqel',\n 'symbol_native': '₪',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'ILS',\n 'name_plural': 'Israeli new sheqels'\n },\n 'INR': {\n 'symbol': '₹',\n 'name': 'Indian Rupee',\n 'symbol_native': 'টকা',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'INR',\n 'name_plural': 'Indian rupees'\n },\n 'IQD': {\n 'symbol': 'IQD',\n 'name': 'Iraqi Dinar',\n 'symbol_native': 'د.ع.‏',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'IQD',\n 'name_plural': 'Iraqi dinars'\n },\n 'IRR': {\n 'symbol': 'IRR',\n 'name': 'Iranian Rial',\n 'symbol_native': '﷼',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'IRR',\n 'name_plural': 'Iranian rials'\n },\n 'ISK': {\n 'symbol': 'Ikr',\n 'name': 'Icelandic Króna',\n 'symbol_native': 'kr',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'ISK',\n 'name_plural': 'Icelandic krónur'\n },\n 'JMD': {\n 'symbol': 'J$',\n 'name': 'Jamaican Dollar',\n 'symbol_native': '$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'JMD',\n 'name_plural': 'Jamaican dollars'\n },\n 'JOD': {\n 'symbol': 'JD',\n 'name': 'Jordanian Dinar',\n 'symbol_native': 'د.أ.‏',\n 'decimal_digits': 3,\n 'rounding': 0,\n 'code': 'JOD',\n 'name_plural': 'Jordanian dinars'\n },\n 'JPY': {\n 'symbol': '¥',\n 'name': 'Japanese Yen',\n 'symbol_native': '¥',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'JPY',\n 'name_plural': 'Japanese yen'\n },\n 'KES': {\n 'symbol': 'Ksh',\n 'name': 'Kenyan Shilling',\n 'symbol_native': 'Ksh',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'KES',\n 'name_plural': 'Kenyan shillings'\n },\n 'KHR': {\n 'symbol': 'KHR',\n 'name': 'Cambodian Riel',\n 'symbol_native': '៛',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'KHR',\n 'name_plural': 'Cambodian riels'\n },\n 'KMF': {\n 'symbol': 'CF',\n 'name': 'Comorian Franc',\n 'symbol_native': 'FC',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'KMF',\n 'name_plural': 'Comorian francs'\n },\n 'KRW': {\n 'symbol': '₩',\n 'name': 'South Korean Won',\n 'symbol_native': '₩',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'KRW',\n 'name_plural': 'South Korean won'\n },\n 'KWD': {\n 'symbol': 'KD',\n 'name': 'Kuwaiti Dinar',\n 'symbol_native': 'د.ك.‏',\n 'decimal_digits': 3,\n 'rounding': 0,\n 'code': 'KWD',\n 'name_plural': 'Kuwaiti dinars'\n },\n 'KZT': {\n 'symbol': 'KZT',\n 'name': 'Kazakhstani Tenge',\n 'symbol_native': 'тңг.',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'KZT',\n 'name_plural': 'Kazakhstani tenges'\n },\n 'LBP': {\n 'symbol': 'LB£',\n 'name': 'Lebanese Pound',\n 'symbol_native': 'ل.ل.‏',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'LBP',\n 'name_plural': 'Lebanese pounds'\n },\n 'LKR': {\n 'symbol': 'SLRs',\n 'name': 'Sri Lankan Rupee',\n 'symbol_native': 'SL Re',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'LKR',\n 'name_plural': 'Sri Lankan rupees'\n },\n 'LTL': {\n 'symbol': 'Lt',\n 'name': 'Lithuanian Litas',\n 'symbol_native': 'Lt',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'LTL',\n 'name_plural': 'Lithuanian litai'\n },\n 'LVL': {\n 'symbol': 'Ls',\n 'name': 'Latvian Lats',\n 'symbol_native': 'Ls',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'LVL',\n 'name_plural': 'Latvian lati'\n },\n 'LYD': {\n 'symbol': 'LD',\n 'name': 'Libyan Dinar',\n 'symbol_native': 'د.ل.‏',\n 'decimal_digits': 3,\n 'rounding': 0,\n 'code': 'LYD',\n 'name_plural': 'Libyan dinars'\n },\n 'MAD': {\n 'symbol': 'MAD',\n 'name': 'Moroccan Dirham',\n 'symbol_native': 'د.م.‏',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'MAD',\n 'name_plural': 'Moroccan dirhams'\n },\n 'MDL': {\n 'symbol': 'MDL',\n 'name': 'Moldovan Leu',\n 'symbol_native': 'MDL',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'MDL',\n 'name_plural': 'Moldovan lei'\n },\n 'MGA': {\n 'symbol': 'MGA',\n 'name': 'Malagasy Ariary',\n 'symbol_native': 'MGA',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'MGA',\n 'name_plural': 'Malagasy Ariaries'\n },\n 'MKD': {\n 'symbol': 'MKD',\n 'name': 'Macedonian Denar',\n 'symbol_native': 'MKD',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'MKD',\n 'name_plural': 'Macedonian denari'\n },\n 'MMK': {\n 'symbol': 'MMK',\n 'name': 'Myanma Kyat',\n 'symbol_native': 'K',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'MMK',\n 'name_plural': 'Myanma kyats'\n },\n 'MOP': {\n 'symbol': 'MOP$',\n 'name': 'Macanese Pataca',\n 'symbol_native': 'MOP$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'MOP',\n 'name_plural': 'Macanese patacas'\n },\n 'MUR': {\n 'symbol': 'MURs',\n 'name': 'Mauritian Rupee',\n 'symbol_native': 'MURs',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'MUR',\n 'name_plural': 'Mauritian rupees'\n },\n 'MXN': {\n 'symbol': 'MX$',\n 'name': 'Mexican Peso',\n 'symbol_native': '$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'MXN',\n 'name_plural': 'Mexican pesos'\n },\n 'MYR': {\n 'symbol': 'RM',\n 'name': 'Malaysian Ringgit',\n 'symbol_native': 'RM',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'MYR',\n 'name_plural': 'Malaysian ringgits'\n },\n 'MZN': {\n 'symbol': 'MTn',\n 'name': 'Mozambican Metical',\n 'symbol_native': 'MTn',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'MZN',\n 'name_plural': 'Mozambican meticals'\n },\n 'NAD': {\n 'symbol': 'N$',\n 'name': 'Namibian Dollar',\n 'symbol_native': 'N$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'NAD',\n 'name_plural': 'Namibian dollars'\n },\n 'NGN': {\n 'symbol': '₦',\n 'name': 'Nigerian Naira',\n 'symbol_native': '₦',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'NGN',\n 'name_plural': 'Nigerian nairas'\n },\n 'NIO': {\n 'symbol': 'C$',\n 'name': 'Nicaraguan Córdoba',\n 'symbol_native': 'C$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'NIO',\n 'name_plural': 'Nicaraguan córdobas'\n },\n 'NOK': {\n 'symbol': 'Nkr',\n 'name': 'Norwegian Krone',\n 'symbol_native': 'kr',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'NOK',\n 'name_plural': 'Norwegian kroner'\n },\n 'NPR': {\n 'symbol': 'NPRs',\n 'name': 'Nepalese Rupee',\n 'symbol_native': 'नेरू',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'NPR',\n 'name_plural': 'Nepalese rupees'\n },\n 'NZD': {\n 'symbol': 'NZ$',\n 'name': 'New Zealand Dollar',\n 'symbol_native': '$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'NZD',\n 'name_plural': 'New Zealand dollars'\n },\n 'OMR': {\n 'symbol': 'OMR',\n 'name': 'Omani Rial',\n 'symbol_native': 'ر.ع.‏',\n 'decimal_digits': 3,\n 'rounding': 0,\n 'code': 'OMR',\n 'name_plural': 'Omani rials'\n },\n 'PAB': {\n 'symbol': 'B/.',\n 'name': 'Panamanian Balboa',\n 'symbol_native': 'B/.',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'PAB',\n 'name_plural': 'Panamanian balboas'\n },\n 'PEN': {\n 'symbol': 'S/.',\n 'name': 'Peruvian Nuevo Sol',\n 'symbol_native': 'S/.',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'PEN',\n 'name_plural': 'Peruvian nuevos soles'\n },\n 'PHP': {\n 'symbol': '₱',\n 'name': 'Philippine Peso',\n 'symbol_native': '₱',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'PHP',\n 'name_plural': 'Philippine pesos'\n },\n 'PKR': {\n 'symbol': 'PKRs',\n 'name': 'Pakistani Rupee',\n 'symbol_native': '₨',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'PKR',\n 'name_plural': 'Pakistani rupees'\n },\n 'PLN': {\n 'symbol': 'zł',\n 'name': 'Polish Zloty',\n 'symbol_native': 'zł',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'PLN',\n 'name_plural': 'Polish zlotys'\n },\n 'PYG': {\n 'symbol': '₲',\n 'name': 'Paraguayan Guarani',\n 'symbol_native': '₲',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'PYG',\n 'name_plural': 'Paraguayan guaranis'\n },\n 'QAR': {\n 'symbol': 'QR',\n 'name': 'Qatari Rial',\n 'symbol_native': 'ر.ق.‏',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'QAR',\n 'name_plural': 'Qatari rials'\n },\n 'RON': {\n 'symbol': 'RON',\n 'name': 'Romanian Leu',\n 'symbol_native': 'RON',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'RON',\n 'name_plural': 'Romanian lei'\n },\n 'RSD': {\n 'symbol': 'din.',\n 'name': 'Serbian Dinar',\n 'symbol_native': 'дин.',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'RSD',\n 'name_plural': 'Serbian dinars'\n },\n 'RUB': {\n 'symbol': 'RUB',\n 'name': 'Russian Ruble',\n 'symbol_native': 'руб.',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'RUB',\n 'name_plural': 'Russian rubles'\n },\n 'RWF': {\n 'symbol': 'RWF',\n 'name': 'Rwandan Franc',\n 'symbol_native': 'FR',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'RWF',\n 'name_plural': 'Rwandan francs'\n },\n 'SAR': {\n 'symbol': 'SR',\n 'name': 'Saudi Riyal',\n 'symbol_native': 'ر.س.‏',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'SAR',\n 'name_plural': 'Saudi riyals'\n },\n 'SDG': {\n 'symbol': 'SDG',\n 'name': 'Sudanese Pound',\n 'symbol_native': 'SDG',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'SDG',\n 'name_plural': 'Sudanese pounds'\n },\n 'SEK': {\n 'symbol': 'Skr',\n 'name': 'Swedish Krona',\n 'symbol_native': 'kr',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'SEK',\n 'name_plural': 'Swedish kronor'\n },\n 'SGD': {\n 'symbol': 'S$',\n 'name': 'Singapore Dollar',\n 'symbol_native': '$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'SGD',\n 'name_plural': 'Singapore dollars'\n },\n 'SOS': {\n 'symbol': 'Ssh',\n 'name': 'Somali Shilling',\n 'symbol_native': 'Ssh',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'SOS',\n 'name_plural': 'Somali shillings'\n },\n 'SYP': {\n 'symbol': 'SY£',\n 'name': 'Syrian Pound',\n 'symbol_native': 'ل.س.‏',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'SYP',\n 'name_plural': 'Syrian pounds'\n },\n 'THB': {\n 'symbol': '฿',\n 'name': 'Thai Baht',\n 'symbol_native': '฿',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'THB',\n 'name_plural': 'Thai baht'\n },\n 'TND': {\n 'symbol': 'DT',\n 'name': 'Tunisian Dinar',\n 'symbol_native': 'د.ت.‏',\n 'decimal_digits': 3,\n 'rounding': 0,\n 'code': 'TND',\n 'name_plural': 'Tunisian dinars'\n },\n 'TOP': {\n 'symbol': 'T$',\n 'name': 'Tongan Paʻanga',\n 'symbol_native': 'T$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'TOP',\n 'name_plural': 'Tongan paʻanga'\n },\n 'TRY': {\n 'symbol': 'TL',\n 'name': 'Turkish Lira',\n 'symbol_native': 'TL',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'TRY',\n 'name_plural': 'Turkish Lira'\n },\n 'TTD': {\n 'symbol': 'TT$',\n 'name': 'Trinidad and Tobago Dollar',\n 'symbol_native': '$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'TTD',\n 'name_plural': 'Trinidad and Tobago dollars'\n },\n 'TWD': {\n 'symbol': 'NT$',\n 'name': 'New Taiwan Dollar',\n 'symbol_native': 'NT$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'TWD',\n 'name_plural': 'New Taiwan dollars'\n },\n 'TZS': {\n 'symbol': 'TSh',\n 'name': 'Tanzanian Shilling',\n 'symbol_native': 'TSh',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'TZS',\n 'name_plural': 'Tanzanian shillings'\n },\n 'UAH': {\n 'symbol': '₴',\n 'name': 'Ukrainian Hryvnia',\n 'symbol_native': '₴',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'UAH',\n 'name_plural': 'Ukrainian hryvnias'\n },\n 'UGX': {\n 'symbol': 'USh',\n 'name': 'Ugandan Shilling',\n 'symbol_native': 'USh',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'UGX',\n 'name_plural': 'Ugandan shillings'\n },\n 'UYU': {\n 'symbol': '$U',\n 'name': 'Uruguayan Peso',\n 'symbol_native': '$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'UYU',\n 'name_plural': 'Uruguayan pesos'\n },\n 'UZS': {\n 'symbol': 'UZS',\n 'name': 'Uzbekistan Som',\n 'symbol_native': 'UZS',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'UZS',\n 'name_plural': 'Uzbekistan som'\n },\n 'VEF': {\n 'symbol': 'Bs.F.',\n 'name': 'Venezuelan Bolívar',\n 'symbol_native': 'Bs.F.',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'VEF',\n 'name_plural': 'Venezuelan bolívars'\n },\n 'VND': {\n 'symbol': '₫',\n 'name': 'Vietnamese Dong',\n 'symbol_native': '₫',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'VND',\n 'name_plural': 'Vietnamese dong'\n },\n 'XAF': {\n 'symbol': 'FCFA',\n 'name': 'CFA Franc BEAC',\n 'symbol_native': 'FCFA',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'XAF',\n 'name_plural': 'CFA francs BEAC'\n },\n 'XOF': {\n 'symbol': 'CFA',\n 'name': 'CFA Franc BCEAO',\n 'symbol_native': 'CFA',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'XOF',\n 'name_plural': 'CFA francs BCEAO'\n },\n 'YER': {\n 'symbol': 'YR',\n 'name': 'Yemeni Rial',\n 'symbol_native': 'ر.ي.‏',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'YER',\n 'name_plural': 'Yemeni rials'\n },\n 'ZAR': {\n 'symbol': 'R',\n 'name': 'South African Rand',\n 'symbol_native': 'R',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'ZAR',\n 'name_plural': 'South African rand'\n },\n 'ZMK': {\n 'symbol': 'ZK',\n 'name': 'Zambian Kwacha',\n 'symbol_native': 'ZK',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'ZMK',\n 'name_plural': 'Zambian kwachas'\n }\n};","const $RAF = window.requestAnimationFrame;\nconst $RAFQueue = [];\n\nconst invokeLater = fn => {\n if (!$RAFQueue.length) {\n $RAF(() => {\n $RAFQueue.forEach(f => f());\n $RAFQueue.length = 0;\n });\n }\n $RAFQueue.push(fn);\n};\n\nexport const appendNode = (node: HTMLElement, parent: HTMLElement, sync?: boolean) => {\n const task = () => parent.appendChild(node);\n sync ? task() : invokeLater(task);\n};\n\nexport const insertBefore = (node: HTMLElement, ref: HTMLElement, sync?: boolean) => {\n const task = () => ref.parentNode.insertBefore(node, ref);\n sync ? task() : invokeLater(task);\n};\n\nexport const insertAfter = (node: HTMLElement, ref: HTMLElement, sync?: boolean) => {\n const task = () => ref.parentNode.insertBefore(node, ref.nextSibling);\n sync ? task() : invokeLater(task);\n};\n\nexport const removeNode = (node: HTMLElement, sync?: boolean) => {\n const task = () => node.remove();\n sync ? task() : invokeLater(task);\n};\n\nexport const removeClass = (node: HTMLElement, ov: string, sync?: boolean) => {\n ov = ov || '';\n const task = c => node.classList.remove(c);\n ov.split(' ').forEach(c => {\n if (c.length) {\n sync ? task(c) : invokeLater(() => task(c));\n }\n });\n};\n\nexport const addClass = (node: HTMLElement, nv: string, sync?: boolean) => {\n nv = nv || '';\n const task = c => node.classList.add(c);\n nv.split(' ').forEach(c => {\n if (c.length) {\n sync ? task(c) : invokeLater(() => task(c));\n }\n });\n};\n\nexport const switchClass = (node: HTMLElement, toAdd: string = '', toRemove: string = '', sync?: boolean) => {\n // After NG15 upgrade ng-invalid class is added even the field is valid, so we are removing the ng-invalid manually\n const isNgUntouchedValid = node.classList.contains('ng-untouched') && node.classList.contains('ng-valid');\n if(isNgUntouchedValid && toAdd.includes('ng-untouched') && toAdd.includes('ng-invalid')) {\n toAdd = toAdd.replace('ng-invalid', '');\n }\n removeClass(node, toRemove, sync);\n addClass(node, toAdd, sync);\n};\n\nexport const toggleClass = (node: HTMLElement, cls: string, condition: boolean, sync?: boolean) => {\n if (condition) {\n addClass(node, cls, sync);\n } else {\n removeClass(node, cls, sync);\n }\n};\n\nexport const setCSS = (node: HTMLElement, cssName: string, val?: string | number, sync?: boolean) => {\n const task = () => node.style[cssName] = val;\n sync ? task() : invokeLater(task);\n};\n\nexport const setCSSFromObj = (node: HTMLElement, cssObj: any, sync?: boolean) => {\n const keys = Object.keys(cssObj || {});\n keys.forEach(key => setCSS(node, key, cssObj[key], sync));\n};\n\nexport const setProperty = (node: HTMLElement, propName: string, val: any, sync?: boolean) => {\n const task = () => node[propName] = val;\n sync ? task() : invokeLater(task);\n};\n\nexport const setAttr = (node: HTMLElement, attrName: string, val: any, sync?: boolean) => {\n const task = () => node instanceof Element && node.setAttribute(attrName, val);\n sync ? task() : invokeLater(task);\n};\n\nexport const setHtml = (node: HTMLElement, html: string, sync?: boolean) => {\n const task = () => node.innerHTML = html;\n sync ? task() : invokeLater(task);\n};\n\nexport const removeAttr = (node: HTMLElement, attrName: string, sync?: boolean) => {\n const task = () => node.removeAttribute(attrName);\n sync ? task() : invokeLater(task);\n};\n\nexport const createElement = (nodeType: string, attrs: any, sync?: boolean): HTMLElement => {\n const node = document.createElement(nodeType);\n\n if (attrs) {\n Object.keys(attrs).forEach(attrName => {\n setAttr(node, attrName, attrs[attrName], sync);\n });\n }\n return node;\n};\n\n// for width and height if a numeric value is specified return in px\n// else return the same value\nexport const toDimension = (v: string | number) => {\n // @ts-ignore\n if (v == +v) {\n return `${v}px`;\n }\n return v;\n};\n","const properties: any = {};\n\ndeclare const window;\n\nexport function getWmProjectProperties() {\n if (window._WM_APP_PROPERTIES) {\n return window._WM_APP_PROPERTIES;\n } else {\n return properties;\n }\n}\n\nexport function setWmProjectProperties(props: any) {\n Object.setPrototypeOf(properties, props);\n}\n","function* idGenerator(token) {\n let id = 1;\n while (1) {\n yield `${token}${id++}`;\n }\n}\n\nexport class IDGenerator {\n private generator: Iterator<any>;\n\n constructor(key: string) {\n this.generator = idGenerator(key);\n }\n\n public nextUid(): string {\n return this.generator.next().value;\n }\n}\n","import {\n Binary,\n BindingPipe,\n Call,\n Chain,\n Conditional,\n ImplicitReceiver,\n KeyedRead,\n Lexer,\n LiteralArray,\n LiteralMap,\n LiteralPrimitive,\n Parser,\n PrefixNot,\n PropertyRead,\n PropertyWrite,\n Unary\n} from '@angular/compiler';\nimport {get} from \"lodash-es\";\n\nconst isDef = v => v !== void 0;\nconst ifDef = (v, d) => v === void 0 ? d : v;\nconst plus = (a, b) => void 0 === a ? b : void 0 === b ? a : a + b;\nconst minus = (a, b) => ifDef(a, 0) - ifDef(b, 0);\nconst noop = () => {};\n\nexport type ParseExprResult = (data?: any, locals?: any) => any;\n\nconst exprFnCache = new Map();\nconst eventFnCache = new Map();\nconst purePipes = new Map();\n\nconst primitiveEquals = (a, b) => {\n if (typeof a === 'object' || typeof b === 'object') {\n return false;\n }\n if (a !== a && b !== b) { // NaN case\n return true;\n }\n return a === b;\n};\n\nconst detectChanges = (ov, nv) => {\n const len = nv.length;\n let hasChange = len > 10;\n switch (len) {\n case 10:\n hasChange = !primitiveEquals(ov[9], nv[9]);\n if (hasChange) {\n break;\n }\n case 9:\n hasChange = !primitiveEquals(ov[8], nv[8]);\n if (hasChange) {\n break;\n }\n case 8:\n hasChange = !primitiveEquals(ov[7], nv[7]);\n if (hasChange) {\n break;\n }\n case 7:\n hasChange = !primitiveEquals(ov[6], nv[6]);\n if (hasChange) {\n break;\n }\n case 6:\n hasChange = !primitiveEquals(ov[5], nv[5]);\n if (hasChange) {\n break;\n }\n case 5:\n hasChange = !primitiveEquals(ov[4], nv[4]);\n if (hasChange) {\n break;\n }\n case 4:\n hasChange = !primitiveEquals(ov[3], nv[3]);\n if (hasChange) {\n break;\n }\n case 3:\n hasChange = !primitiveEquals(ov[2], nv[2]);\n if (hasChange) {\n break;\n }\n case 2:\n hasChange = !primitiveEquals(ov[1], nv[1]);\n if (hasChange) {\n break;\n }\n case 1:\n hasChange = !primitiveEquals(ov[0], nv[0]);\n if (hasChange) {\n break;\n }\n }\n return hasChange;\n};\n\nconst getPurePipeVal = (pipe, cache, identifier, ...args) => {\n let lastResult = cache.get(identifier);\n let result;\n if (lastResult) {\n const isModified = detectChanges(lastResult.args, args);\n if (!isModified) {\n return lastResult.result;\n }\n }\n result = pipe.transform(...args);\n lastResult = {args, result};\n cache.set(identifier, lastResult);\n return result;\n};\n\nconst STR_ESCAPE_REGEX = /[^ a-zA-Z0-9]/g;\n\nconst stringEscapeFn = str => {\n return '\\\\u' + ('0000' + str.charCodeAt(0).toString(16)).slice(-4);\n};\n\nclass ASTCompiler {\n ast; // ast to be compiled\n declarations; // variable names\n stmts; // function body statements\n pipes; // used pipes\n vIdx; // variable name index\n cAst; // current AST node in the process\n cStmts;\n pipeNameVsIsPureMap;\n exprType: ExpressionType;\n\n constructor(ast, exprType, pipeNameVsIsPureMap?) {\n this.ast = ast;\n this.declarations = [];\n this.stmts = [];\n this.pipes = [];\n this.vIdx = 0;\n this.exprType = exprType;\n this.pipeNameVsIsPureMap = pipeNameVsIsPureMap;\n }\n\n createVar() {\n const v = `v${this.vIdx++}`;\n this.declarations.push(v);\n return v;\n }\n\n processImplicitReceiver() {\n return 'ctx';\n }\n\n processLiteralPrimitive() {\n const ast = this.cAst;\n return typeof (ast.value) === 'string' ? `\"${ast.value.replace(/\"/g, '\\\"').replace(STR_ESCAPE_REGEX, stringEscapeFn)}\"` : ast.value;\n }\n\n processLiteralArray() {\n const ast = this.cAst;\n const stmts = this.cStmts;\n const v = this.createVar();\n const s = [];\n for (const item of ast.expressions) {\n s.push(this.build(item, stmts));\n }\n stmts.push(`${v}=[${s.join(',')}]`);\n return v;\n }\n\n processLiteralMap() {\n const ast = this.cAst;\n const stmts = this.cStmts;\n const v = this.createVar();\n const _values = [];\n for (const _value of ast.values) {\n _values.push(this.build(_value, stmts));\n }\n stmts.push(`${v}={${ast.keys.map((k, i) => `'${k.key}':${_values[i]}`)}}`);\n return v;\n }\n\n processPropertyRead() {\n const ast = this.cAst;\n const stmts = this.cStmts;\n const r = this.build(ast.receiver, stmts);\n const v = this.createVar();\n stmts.push(`${v}=${r}&&${r}.${ast.name}`);\n return v;\n }\n\n processKeyedRead() {\n const ast = this.cAst;\n const stmts = this.cStmts;\n const k = this.build(ast.key, stmts);\n const o = this.build(ast.receiver, stmts);\n const v = this.createVar();\n stmts.push(`${v}=${o}&&${o}[${k}]`);\n return v;\n }\n\n processPrefixNot() {\n const ast = this.cAst;\n const stmts = this.cStmts;\n const r = this.build(ast.expression, stmts);\n stmts.push(`${r}=!${r}`);\n return r;\n }\n\n handleBinaryPlus_Minus() {\n const ast = this.cAst;\n const stmts = this.cStmts;\n const l = this.build(ast.left, stmts);\n const r = this.build(ast.right, stmts);\n const v = this.createVar();\n const m = ast.operation === '+' ? '_plus' : '_minus';\n stmts.push(`${v}=${m}(${l},${r})`);\n return v;\n }\n\n handleBinaryAND_OR() {\n const ast = this.cAst;\n const stmts = this.cStmts;\n const _s1 = [];\n const _sl = [];\n const _sr = [];\n const l = this.build(ast.left, _sl);\n const r = this.build(ast.right, _sr);\n\n const v = this.createVar();\n\n if (ast.operation === '&&') {\n _s1.push(\n _sl.join(';'),\n `;${v}=false`,\n `;if(${l}){`,\n _sr.join(';'),\n `;${v}=${r};`,\n `}`\n );\n } else {\n _s1.push(\n _sl.join(';'),\n `;${v}=${l}`,\n `;if(!${l}){`,\n _sr.join(';'),\n `;${v}=${r};`,\n `}`\n );\n }\n stmts.push(_s1.join(''));\n return v;\n }\n\n handleBinaryDefault() {\n const ast = this.cAst;\n const stmts = this.cStmts;\n const l = this.build(ast.left, stmts);\n const r = this.build(ast.right, stmts);\n const v = this.createVar();\n stmts.push(`${v}=${l}${ast.operation}${r}`);\n return v;\n }\n\n processBinary() {\n const ast = this.cAst;\n const op = ast.operation;\n if (op === '+' || op === '-') {\n return this.handleBinaryPlus_Minus();\n }\n if (op === '&&' || op === '||') {\n return this.handleBinaryAND_OR();\n }\n\n return this.handleBinaryDefault();\n }\n\n processUnary() {\n const ast = this.cAst;\n const stmts = this.cStmts;\n const e = this.build(ast.expr, stmts);\n const v = this.createVar();\n stmts.push(`${v}=${ast.operator}${e}`);\n return v;\n }\n\n processConditional() {\n const ast = this.cAst;\n const stmts = this.cStmts;\n const condition = this.build(ast.condition, stmts);\n const v = this.createVar();\n const _s1 = [];\n const _s2 = [];\n const _s3 = [];\n const trueExp = this.build(ast.trueExp, _s2);\n const falseExp = this.build(ast.falseExp, _s3);\n\n _s1.push(\n `if(${condition}){`,\n _s2.join(';'),\n `;${v}=${trueExp};`,\n `}else{`,\n _s3.join(';'),\n `;${v}=${falseExp};`,\n `}`\n );\n\n stmts.push(_s1.join(' '));\n return v;\n }\n\n processMethodCall() {\n const ast = this.cAst;\n const stmts = this.cStmts;\n const _args = [];\n for (const arg of ast.args) {\n _args.push(this.build(arg, stmts));\n }\n const fn = this.build(ast.receiver, stmts);\n const v = this.createVar();\n const isImplicitReceiver = ast.receiver instanceof ImplicitReceiver || (ast.receiver instanceof PropertyRead && ast.receiver?.receiver instanceof ImplicitReceiver);\n const context = stmts[stmts.length - 1].split('&&')[0].split('=')[1];\n stmts.push(`${v}= ${fn}&&${fn}${isImplicitReceiver ? '.bind(_ctx)' : `.bind(${context})`}(${_args.join(',')})`);\n return v;\n }\n\n processChain() {\n const ast = this.cAst;\n return ast.expressions.map(e => this.build(e)).join(';');\n }\n\n processPropertyWrite() {\n const ast = this.cAst;\n const stmts = this.cStmts;\n let receiver, lhs;\n if (ast.receiver instanceof ImplicitReceiver) {\n lhs = `_ctx.${ast.name}`;\n } else {\n receiver = this.build(ast.receiver, stmts);\n lhs = `${receiver}${receiver.length ? '.' : ''}${ast.name}`;\n }\n\n const rhs = this.build(ast.value, stmts);\n stmts.push(`${lhs}=${rhs}`);\n }\n\n processPipe() {\n const ast = this.cAst;\n const stmts = this.cStmts;\n const t = this.createVar();\n const _args = [];\n const _s1 = [];\n const _s2 = [];\n const exp = this.build(ast.exp, stmts);\n for (const arg of ast.args) {\n _args.push(this.build(arg, _s2));\n }\n\n const p = `_p${this.pipes.length}`;\n this.pipes.push([ast.name, p]);\n\n _args.unshift(exp);\n\n _s1.push(\n _s2.length ? _s2.join(';') + ';' : '',\n this.pipeNameVsIsPureMap.get(ast.name) ? `${t}=getPPVal(${p},_ppc,\"${p}\",${_args})` : `${t}=${p}.transform(${_args})`\n );\n\n stmts.push(_s1.join(''));\n return t;\n }\n\n build(ast, cStmts?) {\n this.cAst = ast;\n this.cStmts = cStmts || this.stmts;\n\n if (ast instanceof ImplicitReceiver) {\n return this.processImplicitReceiver();\n } else if (ast instanceof LiteralPrimitive) {\n return this.processLiteralPrimitive();\n } else if (ast instanceof LiteralArray) {\n return this.processLiteralArray();\n } else if (ast instanceof LiteralMap) {\n return this.processLiteralMap();\n } else if (ast instanceof PropertyRead) {\n return this.processPropertyRead();\n } else if (ast instanceof PropertyWrite) {\n return this.processPropertyWrite();\n } else if (ast instanceof KeyedRead) {\n return this.processKeyedRead();\n } else if (ast instanceof PrefixNot) {\n return this.processPrefixNot();\n } else if (ast instanceof Unary) {\n return this.processUnary();\n } else if (ast instanceof Binary) {\n return this.processBinary();\n } else if (ast instanceof Conditional) {\n return this.processConditional();\n } else if (ast instanceof Call) {\n return this.processMethodCall();\n } else if (ast instanceof Chain) {\n return this.processChain();\n } else if (ast instanceof BindingPipe) {\n return this.processPipe();\n }\n }\n\n extendCtxWithLocals() {\n const v1 = this.createVar();\n this.stmts.push(\n `${v1}=Object.assign({}, locals)`,\n `Object.setPrototypeOf(${v1}, _ctx)`,\n `ctx=${v1}`\n );\n }\n\n fnBody() {\n this.declarations.push('ctx');\n return '\"use strict\";\\nvar ' + this.declarations.join(',') + ';\\n' + this.stmts.join(';');\n }\n\n fnArgs() {\n const args = ['_plus', '_minus', '_isDef'];\n\n if (this.exprType === ExpressionType.Binding) {\n args.push('getPPVal', '_ppc');\n for (const [, pipeVar] of this.pipes) {\n args.push(pipeVar);\n }\n }\n\n args.push('_ctx', 'locals');\n\n return args.join(',');\n }\n\n addReturnStmt(result) {\n // if (this.exprType === ExpressionType.Binding) {\n this.stmts.push(`return ${result};`);\n // }\n }\n\n cleanup() {\n this.ast = this.cAst = this.stmts = this.cStmts = this.declarations = this.pipes = this.pipeNameVsIsPureMap = undefined;\n }\n\n compile(defOnly?) {\n this.extendCtxWithLocals();\n this.addReturnStmt(this.build(this.ast));\n if (defOnly) {\n return {fnBody: this.fnBody(), fnArgs: this.fnArgs(), pipes: this.pipes};\n }\n const fn = new Function(this.fnArgs(), this.fnBody());\n let boundFn;\n if (this.exprType === ExpressionType.Binding) {\n boundFn = fn.bind(undefined, plus, minus, isDef, getPurePipeVal);\n boundFn.usedPipes = this.pipes.slice(0); // clone\n } else {\n boundFn = fn.bind(undefined, plus, minus, isDef);\n }\n\n this.cleanup();\n return boundFn;\n }\n}\n\nconst nullPipe = () => {\n return {\n transform: noop\n };\n};\n\nlet _cspEnabled;\nconst isCSPEnabled = () => {\n if(typeof _cspEnabled !== 'undefined') {\n return _cspEnabled;\n }\n try {\n new Function();\n _cspEnabled = false;\n } catch(e) {\n _cspEnabled = true;\n }\n return _cspEnabled;\n};\n\nlet pipeProvider;\n\nexport function setPipeProvider(_pipeProvider) {\n pipeProvider = _pipeProvider;\n}\n\nenum ExpressionType {\n Binding,\n Action\n}\n\nexport function $parseExpr(expr: string, defOnly?: boolean): ParseExprResult {\n\n if (!pipeProvider) {\n return noop;\n }\n\n if (typeof (expr) !== 'string') {\n return noop;\n }\n\n expr = expr.trim();\n\n if (expr.endsWith(';')) {\n expr = expr.slice(0, -1); // remove the trailing semicolon\n }\n\n if (!expr.length) {\n return noop;\n }\n\n let fn = exprFnCache.get(expr);\n\n if (fn) {\n return fn;\n }\n\n let boundFn;\n if (!defOnly) {\n boundFn = getFnForBindExpr(expr);\n }\n\n // fallback to generate function in runtime. This will break if CSP is enabled\n if (!boundFn) {\n // If CSP enabled, function def not found from the generated fn expressions for the page.\n // Handle bind expressions used internally inside WM components. e.g. wmAnchor used inside nav.comp.html\n if (isCSPEnabled()) {\n boundFn = function(ctx, locals) {\n // handle internal bindings for wm widgets used inside a component\n let _ctx = Object.assign({}, locals);\n Object.setPrototypeOf(_ctx, ctx);\n return get(_ctx, expr);\n };\n } else {\n const parser = new Parser(new Lexer);\n const ast = parser.parseBinding(expr, '',0);\n\n if (ast.errors.length) {\n fn = noop;\n boundFn = fn;\n } else {\n const pipeNameVsIsPureMap = pipeProvider.getPipeNameVsIsPureMap();\n const astCompiler = new ASTCompiler(ast.ast, ExpressionType.Binding, pipeNameVsIsPureMap);\n fn = astCompiler.compile(defOnly);\n if (defOnly) {\n return fn;\n }\n\n if (fn.usedPipes.length) {\n const pipeArgs = [];\n let hasPurePipe = false;\n for (const [pipeName] of fn.usedPipes) {\n const pipeInfo = pipeProvider.meta(pipeName);\n let pipeInstance;\n if (!pipeInfo) {\n pipeInstance = nullPipe;\n } else {\n if (pipeInfo.pure) {\n hasPurePipe = true;\n pipeInstance = purePipes.get(pipeName);\n }\n\n if (!pipeInstance) {\n pipeInstance = pipeProvider.getInstance(pipeName);\n }\n\n if (pipeInfo.pure) {\n purePipes.set(pipeName, pipeInstance);\n }\n }\n pipeArgs.push(pipeInstance);\n }\n\n pipeArgs.unshift(hasPurePipe ? new Map() : undefined);\n boundFn = fn.bind(undefined, ...pipeArgs);\n } else {\n boundFn = fn.bind(undefined, undefined);\n }\n }\n }\n }\n\n exprFnCache.set(expr, boundFn);\n\n return boundFn;\n}\n\nfunction simpleFunctionEvaluator(expr, ctx, locals) {\n let _ctx = Object.assign({}, locals);\n Object.setPrototypeOf(_ctx, ctx);\n\n let parts = expr.split('(');\n let fnName = parts[0];\n let computedFn = get(ctx, fnName);\n\n if (computedFn) {\n let args = parts[1].replace(')', '');\n args = args.split(',');\n let computedArgs = [];\n args.forEach((arg)=> {\n arg = arg && arg.trim();\n computedArgs.push(get(_ctx, arg));\n });\n return computedFn.bind(_ctx)(...computedArgs);\n }\n}\n\nexport function $parseEvent(expr, defOnly?): ParseExprResult {\n if (typeof (expr) !== 'string') {\n return noop;\n }\n\n expr = expr.trim();\n\n if (!expr.length) {\n return noop;\n }\n\n let fn = eventFnCache.get(expr);\n\n if (fn) {\n return fn;\n }\n\n if (!defOnly) {\n fn = getFnForEventExpr(expr);\n }\n\n // fallback to generate function in runtime. This will break if CSP is enabled\n if(!fn) {\n if (isCSPEnabled()) {\n fn = simpleFunctionEvaluator.bind(undefined, expr);\n } else {\n const parser = new Parser(new Lexer);\n const ast = parser.parseAction(expr, '', 0);\n\n if (ast.errors.length) {\n return noop;\n }\n const astCompiler = new ASTCompiler(ast.ast, ExpressionType.Action);\n fn = astCompiler.compile(defOnly);\n }\n }\n\n eventFnCache.set(expr, fn);\n return fn;\n}\n\nconst fnNameMap = new Map();\n\nexport const registerFnByExpr = (expr, fn, usedPipes?) => {\n fn.usedPipes = usedPipes || [];\n fnNameMap.set(expr, fn);\n}\n\nexport const getFnByExpr = (expr) => fnNameMap.get(expr)\n\nconst fnExecutor = (expr, exprType) => {\n let fn = getFnByExpr(expr);\n if (!fn) {\n return;\n }\n const usedPipes = fn.usedPipes || [];\n\n if(exprType === ExpressionType.Binding) {\n fn = fn.bind(undefined, plus, minus, isDef, getPurePipeVal);\n } else {\n fn = fn.bind(undefined, plus, minus, isDef);\n }\n\n if (usedPipes.length) {\n const pipeArgs = [];\n let hasPurePipe = false;\n for (const [pipeName] of usedPipes) {\n const pipeInfo = pipeProvider.meta(pipeName);\n let pipeInstance;\n if (!pipeInfo) {\n pipeInstance = nullPipe;\n } else {\n if (pipeInfo.pure) {\n hasPurePipe = true;\n pipeInstance = purePipes.get(pipeName);\n }\n\n if (!pipeInstance) {\n pipeInstance = pipeProvider.getInstance(pipeName);\n }\n\n if (pipeInfo.pure) {\n purePipes.set(pipeName, pipeInstance);\n }\n }\n pipeArgs.push(pipeInstance);\n }\n\n pipeArgs.unshift(hasPurePipe ? new Map() : undefined);\n fn = fn.bind(undefined, ...pipeArgs);\n } else {\n if (exprType === ExpressionType.Binding) {\n fn = fn.bind(undefined, undefined);\n }\n }\n\n return fn;\n}\n\nexport const getFnForBindExpr = (expr) => {\n return fnExecutor(expr, ExpressionType.Binding);\n}\n\nexport const getFnForEventExpr = (expr) => {\n return fnExecutor(expr, ExpressionType.Action);\n}\n","import { IDGenerator } from './id-generator';\n\nimport { $parseExpr } from './expression-parser';\nimport { findValueOf } from './utils';\nimport {clone, flatten, isArray, isEqual, isObject} from \"lodash-es\";\n\nconst registry = new Map<string, any>();\n\nconst watchIdGenerator = new IDGenerator('watch-id-');\n\nexport const FIRST_TIME_WATCH = {};\n\nObject.freeze(FIRST_TIME_WATCH);\n\nexport const isFirstTimeChange = v => v === FIRST_TIME_WATCH;\n\nlet muted = false;\nlet appRef;\n\nexport const debounce = (fn: Function, wait: number = 50) => {\n let timeout;\n return (...args) => {\n window['__zone_symbol__clearTimeout'](timeout);\n timeout = window['__zone_symbol__setTimeout'](() => fn(...args), wait);\n };\n};\n\nexport const muteWatchers = () => {\n muted = true;\n};\n\nexport const unMuteWatchers = () => {\n muted = false;\n triggerWatchers();\n};\n\nconst arrayConsumer = (listenerFn, restExpr, newVal, oldVal) => {\n let data = newVal,\n formattedData;\n\n if (isArray(data)) {\n formattedData = data.map(function (datum) {\n return findValueOf(datum, restExpr);\n });\n\n // If resulting structure is an array of array, flatten it\n if (isArray(formattedData[0])) {\n formattedData = flatten(formattedData);\n }\n\n listenerFn(formattedData, oldVal);\n }\n};\n\nconst getUpdatedWatcInfo = (expr, acceptsArray, listener) => {\n // listener doesn't accept array\n // replace all `[$i]` with `[0]` and return the expression\n let regex = /\\[\\$i\\]/g,\n $I = '[$i]',\n $0 = '[0]';\n if (!acceptsArray) {\n return {\n 'expr' : expr.replace(regex, $0),\n 'listener' : listener\n };\n }\n\n // listener accepts array\n // replace all except the last `[$i]` with `[0]` and return the expression.\n var index = expr.lastIndexOf($I),\n _expr = expr.substr(0, index).replace($I, $0),\n restExpr = expr.substr(index + 5),\n arrayConsumerFn = listener;\n\n if (restExpr) {\n arrayConsumerFn = arrayConsumer.bind(undefined, listener, restExpr);\n }\n\n return {\n 'expr' : _expr,\n 'listener' : arrayConsumerFn\n };\n};\n\nexport const $watch = (expr, $scope, $locals, listener, identifier = watchIdGenerator.nextUid(), doNotClone = false, config:any={}, isMuted?: () => boolean) => {\n if (expr.indexOf('[$i]') !== -1) {\n let watchInfo = getUpdatedWatcInfo(expr, config && (config.arrayType || config.isList), listener);\n expr = watchInfo.expr;\n listener = watchInfo.listener;\n }\n const fn = $parseExpr(expr);\n\n registry.set(identifier, {\n fn: fn.bind(expr, $scope, $locals),\n listener,\n expr,\n last: FIRST_TIME_WATCH,\n doNotClone,\n isMuted: isMuted\n });\n\n return () => $unwatch(identifier);\n};\n\nexport const $unwatch = identifier => registry.delete(identifier);\n\nlet changedByWatch = false;\n\nconst $RAF = window.requestAnimationFrame;\n\nlet ngZone;\n\nconst triggerWatchers = (ignoreMuted?: boolean) => {\n\n if (muted && !ignoreMuted) {\n return;\n }\n\n const limit = 5;\n let pass = 1;\n let changeDetected;\n\n do {\n changeDetected = false;\n registry.forEach(watchInfo => {\n if(watchInfo.isMuted && watchInfo.isMuted()) {\n return;\n }\n const fn = watchInfo.fn;\n const listener = watchInfo.listener;\n const ov = watchInfo.last;\n let nv;\n\n try {\n nv = fn();\n } catch (e) {\n console.warn(`error in executing expression: '${watchInfo.expr}'`);\n }\n\n if (!isEqual(nv, ov)) {\n changeDetected = true;\n changedByWatch = true;\n watchInfo.last = nv;\n\n // @ts-ignore\n if (isObject(nv) && !watchInfo.doNotClone && nv.__cloneable__ !== false) {\n watchInfo.last = clone(nv);\n }\n listener(nv, ov);\n resetChangeFromWatch();\n }\n });\n pass++;\n\n } while (changeDetected && pass < limit);\n\n if (changeDetected && pass === limit) {\n console.warn(`Number of watch cycles gone above set limit of: ${limit} `);\n }\n};\n\nexport const setNgZone = zone => ngZone = zone;\n\nexport const setAppRef = ref => {\n appRef = ref\n};\n\nexport const isChangeFromWatch = () => changedByWatch;\nexport const resetChangeFromWatch = () => changedByWatch = false;\n\n(<any>window).watchRegistry = registry;\n\nlet skipWatchers;\n\nconst debouncedTriggerWatchers = debounce(() => {\n skipWatchers = true;\n ngZone.run(() => triggerWatchers());\n}, 100);\n\nexport const $invokeWatchers = (force?: boolean, ignoreMuted?: boolean) => {\n if (force) {\n triggerWatchers(ignoreMuted);\n } else {\n\n if (skipWatchers) {\n skipWatchers = false;\n return;\n }\n debouncedTriggerWatchers();\n }\n};\n\nexport const $appDigest = (() => {\n let queued = false;\n return (force?: boolean) => {\n if (!appRef) {\n return;\n }\n if (force) {\n ngZone.run(() => appRef.tick());\n queued = false;\n } else {\n if (queued) {\n return;\n } else {\n queued = true;\n $RAF(() => {\n ngZone.run(() => appRef.tick());\n queued = false;\n });\n }\n }\n };\n})();\n","export enum ComponentType {\n PAGE,\n PREFAB,\n PARTIAL,\n WIDGET\n}\n\nexport class IDataSource {\n execute: (operation: Operation, options?: any) => boolean | string | Promise<any>;\n}\n\nenum Operation {\n LIST_RECORDS = 'listRecords',\n UPDATE_RECORD = 'updateRecord',\n INSERT_RECORD = 'insertRecord',\n DELETE_RECORD = 'deleteRecord',\n INVOKE = 'invoke',\n UPDATE = 'update',\n NOTIFY = 'notify',\n IS_API_AWARE = 'isApiAware',\n SUPPORTS_CRUD = 'supportsCRUD',\n SUPPORTS_DISTINCT_API = 'supportsDistinctAPI',\n IS_PAGEABLE = 'isPageable',\n IS_SORTABLE = 'isSortable',\n GET_OPERATION_TYPE = 'getOperationType',\n GET_RELATED_PRIMARY_KEYS = 'getRelatedTablePrimaryKeys',\n GET_ENTITY_NAME = 'getEntityName',\n SET_INPUT = 'setinput',\n GET_RELATED_TABLE_DATA = 'getRelatedTableData',\n GET_DISTINCT_DATA_BY_FIELDS = 'getDistinctDataByFields',\n GET_AGGREGATED_DATA = 'getAggregatedData',\n GET_MATCH_MODE = 'getMatchMode',\n DOWNLOAD = 'download',\n GET_NAME = 'getName',\n GET_PROPERTIES_MAP = 'getPropertiesMap',\n GET_PRIMARY_KEY = 'getPrimaryKey',\n GET_BLOB_URL = 'getBlobURL',\n SUPPORTS_SERVER_FILTER = 'supportsServerFilter',\n GET_OPTIONS = 'getOptions',\n SEARCH_RECORDS = 'searchRecords',\n GET_REQUEST_PARAMS = 'getRequestParams',\n GET_PAGING_OPTIONS = 'getPagingOptions',\n FETCH_DISTINCT_VALUES = 'fetchDistinctValues',\n GET_UNIQUE_IDENTIFIER = 'getUniqueIdentifier',\n GET_CONTEXT_IDENTIFIER = 'getContextIdentifier',\n IS_UPDATE_REQUIRED = 'isUpdateRequired',\n ADD_ITEM = 'addItem',\n SET_ITEM = 'setItem',\n REMOVE_ITEM = 'removeItem',\n IS_BOUND_TO_LOCALE = 'isBoundToLocale',\n GET_DEFAULT_LOCALE = 'getDefaultLocale',\n CANCEL = 'cancel',\n SET_PAGINATION = 'setPagination'\n}\n\nexport const DataSource = {\n Operation\n};\n\nexport abstract class App {\n appLocale: any;\n Variables: any;\n Actions: any;\n onAppVariablesReady: Function;\n onSessionTimeout: Function;\n onBeforeAppReady: Function;\n onPageReady: Function;\n onBeforePageLeave: Function;\n onBeforeServiceCall: Function;\n onServiceSuccess: Function;\n onServiceError: Function;\n projectName: string;\n isPrefabType: boolean;\n isApplicationType: boolean;\n setwidgetLocale: Function;\n isTabletApplicationType: boolean;\n isTemplateBundleType: boolean;\n changeLocale: Function;\n getSelectedLocale: Function;\n setTimezone: Function;\n reload: Function;\n on401: Function;\n notifyApp: Function;\n getDependency: Function;\n networkStatus: any;\n notify: (eventName: string, data?: any) => void;\n deployedUrl: string;\n customUrlScheme: string;\n selectedViewPort: Object;\n subscribe: (eventName, callback: (data: any) => void) => () => void;\n dynamicComponentContainerRef: any;\n clearPageCache: (pageName?: string) => void;\n\n activePageName: string;\n activePage: any;\n Page: any;\n activePageLoadTime: number;\n landingPageName: string;\n lastActivePageName: string;\n deviceCategory: string;\n\n activeLayoutName: string;\n layoutPages: string[];\n}\n\n\nexport abstract class AbstractDialogService {\n public abstract register(name: string, dialogRef: any, scope: any);\n public abstract deRegister(name: string, scope: any);\n public abstract open(name: string, scope?: any, initState?: any);\n public abstract close(name: string, scope?: any);\n public abstract showAppConfirmDialog(initState?: any);\n public abstract closeAppConfirmDialog();\n public abstract getAppConfirmDialog();\n public abstract setAppConfirmDialog(dialogName: string);\n public abstract closeAllDialogs: Function;\n public abstract addToOpenedDialogs(ref: any);\n public abstract getLastOpenedDialog();\n public abstract removeFromOpenedDialogs(ref: any);\n public abstract getOpenedDialogs();\n public abstract addToClosedDialogs(ref: any);\n public abstract removeFromClosedDialogs(ref: any);\n public abstract getDialogRefFromClosedDialogs();\n}\n\nexport abstract class AbstractHttpService {\n public abstract send(options: any);\n public abstract setLocale(locale);\n public abstract getLocale();\n public abstract getHeader(error, headerKey);\n public abstract isPlatformSessionTimeout(error);\n public abstract get(url: string, options?: any);\n public abstract post(url, data, options);\n public abstract put(url, data, options);\n public abstract patch(url, data, options);\n public abstract delete(url, options);\n public abstract head(url, options);\n public abstract jsonp(url, options);\n public abstract upload(url, data, options);\n public abstract registerOnSessionTimeout(callback);\n public abstract on401();\n public abstract pushToSessionFailureQueue(callback);\n public abstract executeSessionFailureRequests();\n public abstract sendCallAsObservable(options: any, params?: any): any;\n}\n\nexport abstract class AbstractI18nService {\n public abstract getSelectedLocale(): string;\n public abstract getDefaultSupportedLocale(): string;\n public abstract getAppLocale(): any;\n public abstract setSelectedLocale(locale);\n public abstract loadDefaultLocale();\n public abstract getLocalizedMessage(message, ...args);\n public abstract initCalendarLocale(): Promise<any>;\n protected abstract loadAppLocaleBundle();\n protected abstract loadMomentLocaleBundle(localeLang);\n protected abstract loadLocaleBundles(localeLang);\n public abstract setTimezone(locale, compInstance?);\n public abstract getFormatsByLocale();\n public abstract getTimezone(compInstance?);\n public abstract getPrefabLocaleBundle(prefabName: string): any;\n public abstract setwidgetLocale(locale);\n public abstract getwidgetLocale();\n}\n\nexport abstract class AbstractToasterService {\n public abstract success(title: string, desc: string);\n public abstract error(title: string, desc: string);\n public abstract info(title: string, desc: string);\n public abstract warn(title: string, desc: string);\n public abstract show(\n type: string,\n title: string,\n desc: string,\n timeout: number,\n bodyOutputType: string,\n onClickHandler: Function,\n onHideCallback: Function\n );\n public abstract hide(toasterObj: any);\n public abstract showCustom(pageName: string, options?: any);\n}\n\nexport abstract class AbstractSpinnerService {\n public abstract getMessageSource();\n public abstract showContextSpinner(spinnerContext: string, message: string, id: string);\n public abstract showAppSpinner(msg: string, id: string);\n public abstract hideContextSpinner(ctx: string, id: string);\n public abstract show(message: string, id?: string, spinnerClass?: string, spinnerContext?: string, variableScopeId?: string);\n public abstract hide(id: string);\n}\nexport abstract class UserDefinedExecutionContext {\n\n}\n\nexport interface NavigationOptions {\n $event?: any;\n pageName?: string;\n transition?: string;\n urlParams?: any;\n viewName?: string;\n}\n\nexport abstract class AbstractNavigationService {\n public abstract getPageTransition(): string;\n public abstract goToPage(pageName: string, options: NavigationOptions);\n public abstract goToPrevious();\n public abstract goToView(viewName: string, options: NavigationOptions, variable: any);\n}\n\nexport abstract class AppDefaults {\n public dateFormat;\n public timeFormat;\n public dateTimeFormat;\n public currencyCode;\n public abstract setFormats(formats: any);\n}\n\nexport abstract class DynamicComponentRefProvider {\n public abstract getComponentFactoryRef(selector: string, markup: string, options?: any);\n}\n\nexport abstract class PartialRefProvider {\n abstract getComponentFactoryRef(partialName: string, componentType: ComponentType, options?: any): Promise<any>;\n}\n\nexport abstract class CustomWidgetRefProvider {\n abstract getComponentFactoryRef(customWidgetName: string, componentType: ComponentType, options?: any): Promise<any>;\n}\n","import {Subject} from 'rxjs';\n\nimport {getWmProjectProperties} from './wm-project-properties';\n\nimport {$appDigest, $watch} from './watcher';\nimport {DataType} from '../enums/enums';\nimport {DataSource} from '../types/types';\nimport {setAttr} from './dom';\nimport {$parseEvent} from './expression-parser';\nimport {\n attempt,\n camelCase, cloneDeep, every,\n filter, forEach, get, identity,\n includes, indexOf, intersection, isArray, isDate,\n isEqual, isEqualWith, isError,\n isFunction,\n isNull,\n isNumber, isString,\n isUndefined, keys, map, noop as _noop, omit, replace as _replace,\n split,\n startsWith, toLower, toUpper, trim\n} from \"lodash-es\";\n\ndeclare const $;\ndeclare const X2JS;\ndeclare const moment;\ndeclare const document;\ndeclare const resolveLocalFileSystemURL;\ndeclare const WM_CUSTOM_FORMATTERS;\ndeclare const MSCSSMatrix;\ndeclare const _WM_APP_PROPERTIES;\ndeclare const cordova;\n\nconst userAgent = window.navigator.userAgent;\nconst REGEX = {\n SNAKE_CASE: /[A-Z]/g,\n ANDROID: /Android/i,\n IPHONE: /iPhone/i,\n IPOD: /iPod/i,\n IPAD: /iPad/i,\n MAC: /Mac/i,\n MACINTEL: /MacIntel/i,\n ANDROID_TABLET: /android|android 3.0|xoom|sch-i800|playbook|tablet|kindle/i,\n MOBILE: /Mobile/i,\n WINDOWS: /Windows Phone/i,\n SUPPORTED_IMAGE_FORMAT: /\\.(bmp|gif|jpe|jpg|jpeg|tif|tiff|pbm|png|ico)$/i,\n SUPPORTED_FILE_FORMAT: /\\.(txt|js|css|html|script|properties|json|java|xml|smd|xmi|sql|log|wsdl|vm|ftl|jrxml|yml|yaml|md|less|jsp)$/i,\n SUPPORTED_AUDIO_FORMAT: /\\.(mp3|ogg|webm|wma|3gp|wav|m4a)$/i,\n SUPPORTED_VIDEO_FORMAT: /\\.(mp4|ogg|webm|wmv|mpeg|mpg|avi|mov)$/i,\n PAGE_RESOURCE_PATH: /^\\/pages\\/.*\\.(js|css|html|json)$/,\n MIN_PAGE_RESOURCE_PATH: /.*(page.min.html)$/,\n VALID_EMAIL: /^[a-zA-Z][\\w.+]+@[a-zA-Z_]+?\\.[a-zA-Z.]{1,4}[a-zA-Z]$/,\n VALID_WEB_URL: /^(http[s]?:\\/\\/)(www\\.){0,1}[a-zA-Z0-9=:?\\/\\.\\-]+(\\.[a-zA-Z]{2,5}[\\.]{0,1})?/,\n VALID_WEBSOCKET_URL: /^(ws[s]?:\\/\\/)(www\\.){0,1}[a-zA-Z0-9=:?\\/\\.\\-]+(\\.[a-zA-Z]{2,5}[\\.]{0,1})?/,\n VALID_RELATIVE_URL: /^(?!www\\.|(?:http|ftp)s?:\\/\\/|[A-Za-z]:\\\\|\\/\\/).*/,\n REPLACE_PATTERN: /\\$\\{([^\\}]+)\\}/g,\n ZIP_FILE: /\\.zip$/i,\n EXE_FILE: /\\.exe$/i,\n NO_QUOTES_ALLOWED: /^[^'|\"]*$/,\n NO_DOUBLE_QUOTES_ALLOWED: /^[^\"]*$/,\n VALID_HTML: /<[a-z][\\s\\S]*>/i,\n VALID_PASSWORD: /^[0-9a-zA-Z-_.@&*!#$%]+$/,\n SPECIAL_CHARACTERS: /[^A-Z0-9a-z_]+/i,\n APP_SERVER_URL_FORMAT: /^(http[s]?:\\/\\/)(www\\.){0,1}[a-zA-Z0-9\\.\\-]+([:]?[0-9]{2,5}|\\.[a-zA-Z]{2,5}[\\.]{0,1})\\/+[^?#&=]+$/,\n JSON_DATE_FORMAT: /\\d{4}-[0-1]\\d-[0-3]\\d(T[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d{1,3}Z$)?/,\n DATA_URL: /^\\s*data:([a-z]+\\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\\-._~:@\\/?%\\s]*)\\s*$/i,\n ISO_DATE_FORMAT: /(\\d{4}-\\d{2}-\\d{2})T(\\d{2}:\\d{2}:\\d{2})(\\.\\d+)?([+-]\\d{2}:?\\d{2}|Z)$/\n},\n compareBySeparator = ':';\n\nconst NUMBER_TYPES = ['int', DataType.INTEGER, DataType.FLOAT, DataType.DOUBLE, DataType.LONG, DataType.SHORT, DataType.BYTE, DataType.BIG_INTEGER, DataType.BIG_DECIMAL];\nconst now: Date = new Date();\nconst CURRENT_DATE = 'CURRENT_DATE';\n\nexport const getNavClass = (suffix: string) : string => {\n const APP_NAV_CLASS_PREFIX = 'app-nav-';\n return APP_NAV_CLASS_PREFIX + suffix;\n}\n \nexport const getSheetPositionClass = (suffix: string): string => {\n const SHEET_POSITION_CLASS_PREFIX = 'sheet-position-';\n return SHEET_POSITION_CLASS_PREFIX + suffix;\n}\n\nexport const enum EVENT_LIFE { ONCE, WINDOW }\n\nexport const isDefined = v => 'undefined' !== typeof v;\n\nexport const isObject = v => null !== v && 'object' === typeof v;\n\nexport const toBoolean = (val, identity?) => ((val && val !== 'false') ? true : (identity ? val === identity : false));\n\nfunction isIE11() {\n return window.navigator.appVersion.indexOf('Trident/') > -1;\n}\n\nexport const isIE = () => {\n return isIE11() || window.navigator.userAgent.indexOf('MSIE') > -1;\n};\n\n\nexport const isAndroid = () => REGEX.ANDROID.test(userAgent);\n\nexport const isAndroidTablet = () => REGEX.ANDROID_TABLET.test(userAgent) && !((/Tablet PC 2.0/i).test(userAgent));\n\nexport const isIphone = () => REGEX.IPHONE.test(userAgent);\nexport const isIpod = () => REGEX.IPOD.test(userAgent);\nexport const isIpad = () => {\n return REGEX.IPAD.test(userAgent) || (window.navigator.maxTouchPoints && window.navigator.maxTouchPoints > 2 && (REGEX.MAC.test(window.navigator.platform) || REGEX.MACINTEL.test(window.navigator.platform)));\n};\n\nexport const isIos = () => isIphone() || isIpod() || isIpad();\n\nexport const isLargeTabletLandscape = (landScapeWidth, landScapeHeight) => {\n const width = landScapeWidth || '1366px';\n const height = landScapeHeight || '1024px';\n return window.matchMedia(\"only screen and (min-device-width : \"+width+\") and (max-device-width : \"+width+\") and (min-device-height : \"+height+\") and (max-device-height : \"+height+\") and (min-width: \"+width+\") and (max-width: \"+width+\")\").matches;\n}\n\nexport const isLargeTabletPortrait = (landScapeWidth, landScapeHeight) => {\n const height = landScapeWidth || '1366px';\n const width = landScapeHeight || '1024px';\n return window.matchMedia(\"only screen and (min-device-width : \"+width+\") and (max-device-width : \"+width+\") and (min-device-height : \"+height+\") and (max-device-height : \"+height+\") and (min-width: \"+width+\") and (max-width: \"+width+\")\").matches;\n}\n\nexport const isMobile = () => isAndroid() || isIos() || isAndroidTablet() || $('#wm-mobile-display:visible').length > 0;\n\nexport const isTablet = () => {\n const scope = document.querySelector('.app-page').widget;\n return scope && scope.viewParent.Viewport.isTabletType;\n};\n\nexport const isMobileApp = () => getWmProjectProperties().platformType === 'MOBILE' && getWmProjectProperties().type === 'APPLICATION';\n\nexport const getAndroidVersion = () => {\n const match = (window.navigator.userAgent.toLowerCase()).match(/android\\s([0-9\\.]*)/);\n return match ? match[1] : '';\n};\n\nexport const isKitkatDevice = () => isAndroid() && parseInt(getAndroidVersion(), 10) === 4;\n\n/**\n * this method encodes the url and returns the encoded string\n */\nexport const encodeUrl = (url: string): string => {\n const index = url.indexOf('?');\n if (index > -1) {\n // encode the relative path\n url = encodeURI(url.substring(0, index)) + url.substring(index);\n // encode url params, not encoded through encodeURI\n url = encodeUrlParams(url);\n } else {\n url = encodeURI(url);\n }\n\n return url;\n};\n\n/**\n * this method encodes the url params and is private to the class only\n */\nexport const encodeUrlParams = (url: string): string => {\n let queryParams, encodedParams = '', queryParamsString, index;\n index = url.indexOf('?');\n if (index > -1) {\n index += 1;\n queryParamsString = url.substring(index);\n // Encoding the query params if exist\n if (queryParamsString) {\n queryParams = queryParamsString.split('&');\n queryParams.forEach(function (param) {\n let decodedParamValue;\n const i = includes(param, '=') ? param.indexOf('=') : (param && param.length),\n paramName = param.substr(0, i),\n paramValue = param.substr(i + 1);\n\n // add the = for param name only when the param value exists in the given param or empty value is assigned\n if (paramValue || includes(param, '=')) {\n try {\n decodedParamValue = decodeURIComponent(paramValue);\n } catch (e) {\n decodedParamValue = paramValue;\n }\n encodedParams += paramName + '=' + encodeURIComponent(decodedParamValue) + '&';\n } else {\n encodedParams += paramName + '&';\n }\n });\n encodedParams = encodedParams.slice(0, -1);\n url = url.replace(queryParamsString, encodedParams);\n }\n }\n return url;\n};\n\n/* capitalize the first-letter of the string passed */\nexport const initCaps = name => {\n if (!name) {\n return '';\n }\n return name.charAt(0).toUpperCase() + name.substring(1);\n};\n\n/* convert camelCase string to a space separated string */\nexport const spaceSeparate = name => {\n if (name === name.toUpperCase()) {\n return name;\n }\n return name.replace(REGEX.SNAKE_CASE, function (letter, pos) {\n return (pos ? ' ' : '') + letter;\n });\n};\n\n/*Replace the character at a particular index*/\nexport const replaceAt = (string, index, character) => string.substr(0, index) + character + string.substr(index + character.length);\n\n/*Replace '.' with space and capitalize the next letter*/\nexport const periodSeparate = name => {\n let dotIndex;\n dotIndex = name.indexOf('.');\n if (dotIndex !== -1) {\n name = replaceAt(name, dotIndex + 1, name.charAt(dotIndex + 1).toUpperCase());\n name = replaceAt(name, dotIndex, ' ');\n }\n return name;\n};\n\nexport const prettifyLabel = label => {\n label = camelCase(label);\n /*capitalize the initial Letter*/\n label = initCaps(label);\n /*Convert camel case words to separated words*/\n label = spaceSeparate(label);\n /*Replace '.' with space and capitalize the next letter*/\n label = periodSeparate(label);\n return label;\n};\n\nexport const deHyphenate = (name) => {\n return name.split('-').join(' ');\n};\n\n/*Accepts an array or a string separated with symbol and returns prettified result*/\nexport const prettifyLabels = (names, separator = ',') => {\n let modifiedNames, namesArray = [];\n\n if (!isArray(names)) {\n namesArray = split(names, separator);\n }\n\n modifiedNames = map(namesArray, prettifyLabel);\n if (isArray(names)) {\n return modifiedNames;\n }\n return modifiedNames.join(separator);\n};\n\n/**\n * this method checks if a insecure content request is being made\n */\nexport const isInsecureContentRequest = (url: string): boolean => {\n\n const parser: HTMLAnchorElement = document.createElement('a');\n parser.href = url;\n\n // for relative urls IE returns the protocol as empty string\n if (parser.protocol === '') {\n return false;\n }\n\n // If the inputted source is a base64 url, do not throw insecure content error\n if (REGEX.DATA_URL.test(url)) {\n return false;\n }\n\n if (stringStartsWith(location.href, 'https://')) {\n return parser.protocol !== 'https:' && parser.protocol !== 'wss:';\n }\n\n return false;\n};\n\n/**\n * this method checks if a given string starts with the given string\n */\nexport const stringStartsWith = (str: string, startsWith: string, ignoreCase?): boolean => {\n if (!str) {\n return false;\n }\n\n const regEx = new RegExp('^' + startsWith, ignoreCase ? 'i' : '');\n\n return regEx.test(str);\n};\n\nexport const getEvaluatedExprValue = (object, expression) => {\n let val;\n /**\n * Evaluate the expression with the scope and object.\n * $eval is used, as expression can be in format of field1 + ' ' + field2\n * $eval can fail, if expression is not in correct format, so attempt the eval function\n */\n val = attempt(function () {\n\n const argsExpr = Object.keys(object).map((fieldName) => {\n return `var ${fieldName} = data['${fieldName}'];`;\n }).join(' ');\n const f = new Function('data', `${argsExpr} return ${expression}`);\n return f(object);\n });\n /**\n * $eval fails if field expression has spaces. Ex: 'field name' or 'field@name'\n * As a fallback, get value directly from object or scope\n */\n if (isError(val)) {\n val = get(object, expression);\n }\n return val;\n};\n\n/* functions for resource Tab*/\nexport const isImageFile = (fileName) => {\n return (REGEX.SUPPORTED_IMAGE_FORMAT).test(fileName);\n};\n\nexport const isAudioFile = (fileName) => {\n return (REGEX.SUPPORTED_AUDIO_FORMAT).test(fileName);\n};\n\nexport const isVideoFile = (fileName) => {\n return (REGEX.SUPPORTED_VIDEO_FORMAT).test(fileName);\n};\n\nexport const isValidWebURL = (url: string): boolean => {\n return (REGEX.VALID_WEB_URL).test(url);\n};\n\n/*This function returns the url to the resource after checking the validity of url*/\nexport const getResourceURL = (urlString) => {\n if (isValidWebURL(urlString)) {\n /*TODO: Use DomSanitizer*/\n // return sanitizer.bypassSecurityTrustResourceUrl(urlString);\n }\n return urlString;\n};\n\n/*function to check if fn is a function and then execute*/\nexport function triggerFn(fn, ...argmnts) {\n /* Use of slice on arguments will make this function not optimizable\n * https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n * */\n\n let start = 1;\n const len = arguments.length, args = new Array(len - start);\n for (start; start < len; start++) {\n args[start - 1] = arguments[start];\n }\n\n if (isFunction(fn)) {\n return fn.apply(null, args);\n }\n}\n\n/**\n * This method is used to get the formatted date\n */\nexport const getFormattedDate = (datePipe, dateObj, format, timeZone?, isTimeStampType?, isIntervalDateTime?, compInstance?): any => {\n if (!dateObj) {\n return undefined;\n }\n if (format === 'timestamp') {\n return moment(dateObj).valueOf();\n }\n\n if (format === 'UTC') {\n return new Date(dateObj).toISOString();\n }\n\n if (timeZone) {\n const momentFormat = format.replaceAll('y', 'Y').replaceAll('d', 'D').replace('a', 'A');\n if (isIntervalDateTime ) { // dates which are of type time widget (value is hh:mm:ss) but returned as date string from time comp\n return moment(dateObj).format(momentFormat);\n }\n if (isTimeStampType === 'datetimestamp') {\n dateObj = getMomentLocaleObject(timeZone, dateObj);\n return moment(dateObj).format(momentFormat);\n }\n }\n\n return datePipe.transform(dateObj, format, timeZone, compInstance);\n};\n\n/**\n * This method is used to check if the date has timezone information or not\n */\nexport const hasOffsetStr = (dateStr) => {\n if (typeof dateStr !== 'string') return;\n const matches = dateStr.match(REGEX.ISO_DATE_FORMAT);\n if (matches && matches[4]) {\n return true;\n }\n}\n\n/**\n * method to get the date object from the input received\n */\nexport const getDateObj = (value, options?, timezone?): Date => {\n // Handling localization\n if (options && options.pattern && options.pattern !== 'timestamp') {\n // Fix for WMS-19601, invalid date is returned on date selection.\n const isNativePicker = (options && options.hasOwnProperty('isNativePicker')) ? get(options, 'isNativePicker') : isMobile();\n const pattern = isNativePicker ? 'YYYY/MM/DD HH:mm:ss' : momentPattern(options.pattern);\n value = moment(value, pattern).toDate();\n }\n\n /*if the value is a date object, no need to covert it*/\n if (isDate(value)) {\n return value;\n }\n\n /*if the value is a timestamp string, convert it to a number*/\n if (!isNaN(value)) {\n value = parseInt(value, 10);\n }\n\n if (!moment(value).isValid() || value === '' || value === null || value === undefined) {\n return undefined;\n }\n let dateObj = new Date(value);\n /**\n * if date value is string \"20-05-2019\" then new Date(value) return 20May2019 with current time in India,\n * whereas this will return 19May2019 with time lagging for few hours.\n * This is because it returns UTC time i.e. Coordinated Universal Time (UTC).\n * To create date in local time use moment\n */\n if (isString(value)) {\n /*\n * If selected locale is Arabic, moment(value).format() is giving date in Arabic language\n * (Ex: If date value is \"1990-11-23\" and moment(value).format() is \"١٩٩٠-١١-٢٣T٠٠:٠٠:٠٠+٠٥:٣٠\")\n * and new Date(moment(value).format()) is giving Invalid Date. So frst converting it to timestamp value.\n */\n\n dateObj = !timezone ? new Date(moment(moment(value).format()).valueOf()) : getMomentLocaleObject(timezone, value);;\n }\n\n if (value === CURRENT_DATE || isNaN(dateObj.getDay())) {\n return now;\n }\n return dateObj;\n};\n\nexport const addEventListenerOnElement = (_element: Element, excludeElement: Element, nativeElement: Element, eventType, isDropDownDisplayEnabledOnInput, successCB, life: EVENT_LIFE, isCapture = false) => {\n const element: Element = _element;\n const eventListener = (event) => {\n if (excludeElement && (excludeElement.contains(event.target) || excludeElement === event.target)) {\n return;\n }\n if (nativeElement.contains(event.target)) {\n if ($(event.target).is('input') && !isDropDownDisplayEnabledOnInput) {\n return;\n }\n element.removeEventListener(eventType, eventListener, isCapture);\n return;\n }\n if (life === EVENT_LIFE.ONCE) {\n element.removeEventListener(eventType, eventListener, isCapture);\n }\n successCB();\n };\n element.addEventListener(eventType, eventListener, isCapture);\n const removeEventListener = () => {\n element.removeEventListener(eventType, eventListener, isCapture);\n };\n return removeEventListener;\n};\n\n/**\n * Returns a deep cloned replica of the passed object/array\n * @param object object/array to clone\n * @returns a clone of the passed object\n */\nexport const getClonedObject = (object) => {\n return cloneDeep(object);\n};\n\nexport const getFiles = (formName, fieldName, isList) => {\n const files = get(document.forms, [formName, fieldName, 'files']);\n return isList ? map(files, identity) : files && files[0];\n};\n\n/*Function to generate a random number*/\nfunction random() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n}\n\n/*Function to generate a guid based on random numbers.*/\nexport const generateGUId = () => {\n return random() + '-' + random() + '-' + random();\n};\n\n/**\n * Validate if given access role is in current loggedin user access roles\n */\nexport const validateAccessRoles = (roleExp, loggedInUser) => {\n let roles;\n\n if (roleExp && loggedInUser) {\n\n roles = roleExp && roleExp.split(',').map(Function.prototype.call, String.prototype.trim);\n\n return intersection(roles, loggedInUser.userRoles).length;\n }\n\n return true;\n};\n\nexport const getValidJSON = (content) => {\n if (!content) {\n return undefined;\n }\n try {\n const parsedIntValue = parseInt(content, 10);\n /*obtaining json from editor content string*/\n return isObject(content) || !isNaN(parsedIntValue) ? content : JSON.parse(content);\n } catch (e) {\n /*terminating execution if new variable object is not valid json.*/\n return undefined;\n }\n};\n\nexport const xmlToJson = (xmlString) => {\n const x2jsObj = new X2JS({ 'emptyNodeForm': 'content', 'attributePrefix': '', 'enableToStringFunc': false });\n let json = x2jsObj.xml2js(xmlString);\n if (json) {\n json = get(json, Object.keys(json)[0]);\n }\n return json;\n};\n\n/*\n * Util method to find the value of a key in the object\n * if key not found and create is true, an object is created against that node\n * Examples:\n * var a = {\n * b: {\n * c : {\n * d: 'test'\n * }\n * }\n * }\n * Utils.findValue(a, 'b.c.d') --> 'test'\n * Utils.findValue(a, 'b.c') --> {d: 'test'}\n * Utils.findValue(a, 'e') --> undefined\n * Utils.findValue(a, 'e', true) --> {} and a will become:\n * {\n * b: {\n * c : {\n * d: 'test'\n * }\n * },\n * e: {\n * }\n * }\n */\nexport const findValueOf = (obj, key, create?) => {\n\n if (!obj || !key) {\n return;\n }\n\n if (!create) {\n return get(obj, key);\n }\n\n const parts = key.split('.'),\n keys = [];\n\n let skipProcessing;\n\n parts.forEach((part) => {\n if (!parts.length) { // if the part of a key is not valid, skip the processing.\n skipProcessing = true;\n return false;\n }\n\n const subParts = part.match(/\\w+/g);\n let subPart;\n\n while (subParts.length) {\n subPart = subParts.shift();\n keys.push({ 'key': subPart, 'value': subParts.length ? [] : {} }); // determine whether to create an array or an object\n }\n });\n\n if (skipProcessing) {\n return undefined;\n }\n\n keys.forEach((_key) => {\n let tempObj = obj[_key.key];\n if (!isObject(tempObj)) {\n tempObj = getValidJSON(tempObj);\n if (!tempObj) {\n tempObj = _key.value;\n }\n }\n obj[_key.key] = tempObj;\n obj = tempObj;\n });\n\n return obj;\n};\n\n/*\n* extracts and returns the last bit from full typeRef of a field\n* e.g. returns 'String' for typeRef = 'java.lang.String'\n* @params: {typeRef} type reference\n*/\nexport const extractType = (typeRef: string): string => {\n let type;\n if (!typeRef) {\n return DataType.STRING;\n }\n type = typeRef && typeRef.substring(typeRef.lastIndexOf('.') + 1);\n type = type && type.toLowerCase();\n type = type === DataType.LOCALDATETIME ? DataType.DATETIME : type;\n return type;\n};\n\n/* returns true if the provided data type matches number type */\nexport const isNumberType = (type: any): boolean => {\n return (NUMBER_TYPES.indexOf(extractType(type).toLowerCase()) !== -1);\n};\n\n/* function to check if provided object is empty*/\nexport const isEmptyObject = (obj: any): boolean => {\n if (isObject(obj) && !isArray(obj)) {\n return Object.keys(obj).length === 0;\n }\n return false;\n};\n\n// Function expects an element on which the scrolling should be applied, Depending on the offset of the element scrollbar will be adjusted\nexport const scrollToElement = (element) => {\n const $element = $(element);\n const formPosition = $element.offset().top;\n const $scrollParent = $element.closest('[wmsmoothscroll=\"true\"]');\n if (isMobileApp() && $scrollParent.length) {\n const iScroll = get($scrollParent[0], 'iscroll');\n let to = -(formPosition - iScroll.y);\n to = (iScroll.maxScrollY > to) ? iScroll.maxScrollY : to;\n iScroll.scrollTo(0, to);\n } else {\n window.scroll({\n top: formPosition,\n left: 0,\n behavior: 'smooth'\n });\n }\n}\n\n// Function will return whether the given element is in viewport or not\nexport const isElementInViewport = (element) => {\n var rect = element.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n}\n\n/*Function to check whether the specified object is a pageable object or not.*/\nexport const isPageable = (obj: any): boolean => {\n const pageable = {\n 'content': [],\n 'first': true,\n 'last': true,\n 'number': 0,\n 'numberOfElements': 10,\n 'size': 20,\n 'sort': null,\n 'totalElements': 10,\n 'totalPages': 1\n };\n // paginated object may or may not contain 'empty' property. In either case, Pageable should return as true.\n const paginatedObj = omit(obj, 'empty');\n return (isEqual(keys(pageable), keys(paginatedObj).sort()));\n};\n\n/*\n * Util method to replace patterns in string with object keys or array values\n * Examples:\n * Utils.replace('Hello, ${first} ${last} !', {first: 'wavemaker', last: 'ng'}) --> Hello, wavemaker ng\n * Utils.replace('Hello, ${0} ${1} !', ['wavemaker','ng']) --> Hello, wavemaker ng\n * Examples if parseError is true:\n * Utils.replace('Hello, {0} {1} !', ['wavemaker','ng']) --> Hello, wavemaker ng\n */\nexport const replace = (template, map, parseError?: boolean) => {\n let regEx = REGEX.REPLACE_PATTERN;\n if (!template) {\n return;\n }\n if (parseError) {\n regEx = /\\{([^\\}]+)\\}/g;\n }\n\n return template.replace(regEx, function (match, key) {\n return get(map, key);\n });\n};\n\n/*Function to check if date time type*/\nexport const isDateTimeType = type => {\n if (includes(type, '.')) {\n type = toLower(extractType(type));\n }\n return includes([DataType.DATE, DataType.TIME, DataType.TIMESTAMP, DataType.DATETIME, DataType.LOCALDATETIME], type);\n};\n\nconst momentPattern = (pattern) => {\n if (includes(pattern, 'E')) {\n pattern = _replace(pattern, /E[,]?/g, '');\n }\n return _replace(pattern, /y*d*/g, (val) => val.toUpperCase());\n};\n\n/* This function returns date object. If val is undefined it returns invalid date */\nexport const getValidDateObject = (val, options?) => {\n const defaultMeridian = ['AM', 'PM'];\n const momentMeridian = moment()._locale.meridiem();\n // Updating localized meridians with default meridians when moment meridian is not defined\n if (options && options.meridians && includes(defaultMeridian, momentMeridian)) {\n forEach(options.meridians, (meridian, index) => {\n if (includes(val, meridian)) {\n val = val.replace(meridian, defaultMeridian[index]);\n }\n });\n }\n const isNativePicker = (options && options.hasOwnProperty('isNativePicker')) ? get(options, 'isNativePicker') : isMobile();\n const pattern = isNativePicker ? (get(options, 'pattern') || 'YYYY/MM/DD HH:mm:ss') : (momentPattern(get(options, 'pattern')) || '');\n // Handling localization\n if (options && options.pattern && options.pattern !== 'timestamp') {\n if (!isNaN((new Date(val)).getTime())) {\n // check whether val is a valid date or not\n if (isIos()) {\n // For iOS, explicitly setting the format to consider even the seconds.\n val = moment(val).format('YYYY/MM/DD HH:mm:ss');\n }\n val = moment(new Date(val), pattern);\n } else {\n val = moment(val, pattern);\n }\n val = val.toDate();\n }\n\n if (moment(val, pattern).isValid()) {\n // date with +5 hours is returned in safari browser which is not a valid date.\n // Hence converting the date to the supported format \"YYYY/MM/DD HH:mm:ss\" in IOS\n if (isIos()) {\n val = moment(moment(val).valueOf()).format('YYYY/MM/DD HH:mm:ss');\n }\n return val;\n }\n /*if the value is a timestamp string, convert it to a number*/\n if (!isNaN(val)) {\n val = parseInt(val, 10);\n } else {\n /*if the value is in HH:mm:ss format, it returns a wrong date. So append the date to the given value to get date*/\n if (!(new Date(val).getTime())) {\n val = moment((moment().format('YYYY-MM-DD') + ' ' + val), 'YYYY-MM-DD HH:mm:ss A');\n\n }\n }\n return new Date(moment(val).valueOf());\n};\n\n/* This function returns javascript date object*/\nexport const getNativeDateObject = (val, options?) => {\n val = getValidDateObject(val, options);\n return new Date(val);\n};\n\n\n/**\n * prepare a blob object based on the content and content type provided\n * if content is blob itself, simply returns it back\n * @param val\n * @param valContentType\n * @returns {*}\n */\nexport const getBlob = (val, valContentType?) => {\n if (val instanceof Blob) {\n return val;\n }\n const jsonVal = getValidJSON(val);\n if (jsonVal && jsonVal instanceof Object) {\n val = new Blob([JSON.stringify(jsonVal)], { type: valContentType || 'application/json' });\n } else {\n val = new Blob([val], { type: valContentType || 'text/plain' });\n }\n return val;\n};\n\n/**\n * This function returns true by comparing two objects based on the fields\n * @param obj1 object\n * @param obj2 object\n * @param compareBy string field values to compare\n * @returns {boolean} true if object equality returns true based on fields\n */\nexport const isEqualWithFields = (obj1, obj2, compareBy) => {\n // compareBy can be 'id' or 'id1, id2' or 'id1, id2:id3'\n // Split the compareby comma separated values\n let _compareBy = isArray(compareBy) ? compareBy : split(compareBy, ',');\n\n _compareBy = map(_compareBy, trim);\n\n return isEqualWith(obj1, obj2, function (o1, o2) {\n return every(_compareBy, function (cb) {\n let cb1, cb2, _cb;\n\n // If compareby contains : , compare the values by the keys on either side of :\n if (indexOf(cb, compareBySeparator) === -1) {\n cb1 = cb2 = trim(cb);\n } else {\n _cb = split(cb, compareBySeparator);\n cb1 = trim(_cb[0]);\n cb2 = trim(_cb[1]);\n }\n\n return get(o1, cb1) === get(o2, cb2);\n });\n });\n};\n\nconst getNode = selector => document.querySelector(selector);\n\n// function to check if the stylesheet is already loaded\nconst isStyleSheetLoaded = href => !!getNode(`link[href=\"${href}\"]`);\n\n// function to remove stylesheet if the stylesheet is already loaded\nconst removeStyleSheet = href => {\n const node = getNode(`link[href=\"${href}\"]`);\n if (node) {\n node.remove();\n }\n};\n\n// function to load a stylesheet\nexport const loadStyleSheet = (url, attr) => {\n if (isStyleSheetLoaded(url)) {\n return;\n }\n const link = document.createElement('link');\n link.href = url;\n // To add attributes to link tag\n if (attr && attr.name) {\n link.setAttribute(attr.name, attr.value);\n }\n link.setAttribute('rel', 'stylesheet');\n link.setAttribute('type', 'text/css');\n document.head.appendChild(link);\n return link;\n};\n\n// function to load stylesheets\nexport const loadStyleSheets = (urls = []) => {\n // if the first argument is not an array, convert it to an array\n if (!Array.isArray(urls)) {\n urls = [urls];\n }\n urls.forEach(loadStyleSheet);\n};\n\n// function to check if the script is already loaded\nconst isScriptLoaded = src => !!getNode(`script[src=\"${src}\"], script[data-src=\"${src}\"]`);\n\nexport const getMomentLocaleObject = (timeZone, dateObj?) => {\n if (dateObj) {\n return new Date(new Date(moment(dateObj).tz(timeZone).format()).toLocaleString(\"en-US\", {timeZone: timeZone}));\n } else {\n return new Date(new Date(moment().tz(timeZone).format()).toLocaleString(\"en-US\", {timeZone: timeZone}));\n }\n}\n\nexport const loadScript = async (url, loadViaScriptTag, cacheable = false) => {\n const _url = url.trim();\n if (!_url.length || isScriptLoaded(_url)) {\n return Promise.resolve();\n }\n\n if (loadViaScriptTag) {\n return new Promise<any>((resolve, reject)=>{\n let script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = _url;\n script.async = false;\n if (script.readyState) { //IE\n script.onreadystatechange = () => {\n if (script.readyState === \"loaded\" || script.readyState === \"complete\") {\n script.onreadystatechange = null;\n resolve(true);\n }\n };\n } else { //Other browsers\n script.onload = () => {\n resolve(true);\n };\n }\n script.onerror = (error: any) => reject(error);\n document.getElementsByTagName('head')[0].appendChild(script);\n });\n } else if(cacheable) {\n return $.ajax({\n dataType: 'script',\n cache: true,\n url: url\n }).done(response => response)\n .fail(reason => reason);\n } else {\n return $.getScript(url)\n .done(response => response)\n .fail(reason => reason);\n }\n};\n\nexport const loadScripts = async (urls = [], loadViaScriptTag = true) => {\n for (const url of urls) {\n await loadScript(url, loadViaScriptTag);\n }\n return Promise.resolve();\n};\n\nexport let _WM_APP_PROJECT: any = {};\n\n/**\n * This function sets session storage item based on the project ID\n * @param key string\n * @param value string\n */\nexport const setSessionStorageItem = (key, value) => {\n let item: any = window.sessionStorage.getItem(_WM_APP_PROJECT.id);\n\n if (item) {\n item = JSON.parse(item);\n } else {\n item = {};\n }\n item[key] = value;\n\n window.sessionStorage.setItem(_WM_APP_PROJECT.id, JSON.stringify(item));\n};\n\n/**\n * This function gets session storage item based on the project ID\n * @param key string\n */\nexport const getSessionStorageItem = key => {\n // sanity check for this to work with ng-codegen\n let item = window && window.sessionStorage && window.sessionStorage.getItem(_WM_APP_PROJECT.id);\n\n if (item) {\n item = JSON.parse(item);\n return item[key];\n }\n};\n\nexport const noop = (...args) => { };\n\n/**\n * This function returns a blob object from the given file path\n * @param filepath\n * @returns promise having blob object\n */\nexport const convertToBlob = (filepath): Promise<any> => {\n return new Promise<any>((resolve, reject) => {\n // Read the file entry from the file URL\n resolveLocalFileSystemURL(filepath, function (fileEntry) {\n fileEntry.file(function (file) {\n // file has the cordova file structure. To submit to the backend, convert this file to javascript file\n const reader = new FileReader();\n reader.onloadend = () => {\n const imgBlob = new Blob([reader.result], {\n 'type': file.type\n });\n resolve({ 'blob': imgBlob, 'filepath': filepath });\n };\n reader.onerror = reject;\n reader.readAsArrayBuffer(file);\n });\n }, reject);\n });\n};\n\nexport const hasCordova = () => {\n return !!window['cordova'];\n};\n\nexport const AppConstants = {\n INT_MAX_VALUE: 2147483647\n};\n\nexport const openLink = (link: string, target: string = '_self') => {\n if (hasCordova() && startsWith(link, '#')) {\n location.hash = link;\n } else {\n window.open(link, target);\n }\n};\n\n/* util function to load the content from a url */\nexport const fetchContent = (dataType, url: string, inSync: boolean = false, success?, error?): Promise<any> => {\n return $.ajax({ type: 'get', dataType: dataType, url: url, async: !inSync })\n .done(response => success && success(response))\n .fail(reason => error && error(reason));\n};\n\n/**\n * If the given object is a promise, then object is returned. Otherwise, a promise is resolved with the given object.\n * @param {Promise<T> | T} a\n * @returns {Promise<T>}\n */\nexport const toPromise = <T>(a: T | Promise<T>): Promise<T> => {\n if (a instanceof Promise) {\n return a;\n } else {\n return Promise.resolve(a as T);\n }\n};\n\n/**\n * This function invokes the given the function (fn) until the function successfully executes or the maximum number\n * of retries is reached or onBeforeRetry returns false.\n *\n * @param fn - a function that is needs to be invoked. The function can also return a promise as well.\n * @param interval - minimum time gap between successive retries. This argument should be greater or equal to 0.\n * @param maxRetries - maximum number of retries. This argument should be greater than 0. For all other values,\n * maxRetries is infinity.\n * @param onBeforeRetry - a callback function that will be invoked before re-invoking again. This function can\n * return false or a promise that is resolved to false to stop further retry attempts.\n * @returns {*} a promise that is resolved when fn is success (or) maximum retry attempts reached\n * (or) onBeforeRetry returned false.\n */\nexport const retryIfFails = (fn: () => any, interval: number, maxRetries: number, onBeforeRetry = () => Promise.resolve(false)) => {\n let retryCount = 0;\n const tryFn = () => {\n retryCount++;\n if (isFunction(fn)) {\n return fn();\n }\n };\n maxRetries = (isNumber(maxRetries) && maxRetries > 0 ? maxRetries : 0);\n interval = (isNumber(interval) && interval > 0 ? interval : 0);\n return new Promise((resolve, reject) => {\n const errorFn = function () {\n const errArgs = arguments;\n setTimeout(() => {\n toPromise<boolean>(onBeforeRetry()).then(function (retry) {\n if (retry !== false && (!maxRetries || retryCount <= maxRetries)) {\n toPromise(tryFn()).then(resolve, errorFn);\n } else {\n reject(errArgs);\n }\n }, () => reject(errArgs));\n }, interval);\n };\n toPromise(tryFn()).then(resolve, errorFn);\n });\n};\n\n/**\n * Promise of a defer created using this function, has abort function that will reject the defer when called.\n * @returns {*} angular defer object\n */\nexport const getAbortableDefer = () => {\n const _defer: any = {\n promise: null,\n reject: null,\n resolve: null,\n onAbort: () => { },\n isAborted: false\n };\n _defer.promise = new Promise((resolve, reject) => {\n _defer.resolve = resolve;\n _defer.reject = reject;\n });\n _defer.promise.abort = () => {\n triggerFn(_defer.onAbort);\n _defer.reject('aborted');\n _defer.isAborted = true;\n };\n return _defer;\n};\n\nexport const createCSSRule = (ruleSelector: string, rules: string) => {\n const stylesheet = document.styleSheets[0];\n stylesheet.insertRule(`${ruleSelector} { ${rules} }`);\n};\n\nexport const getUrlParams = (link) => {\n const params = {};\n // If url params are present, construct params object and pass it to search\n const index = link.indexOf('?');\n if (index !== -1) {\n const queryParams = split(link.substring(index + 1, link.length), '&');\n queryParams.forEach((param) => {\n let paramArray = split(param, '=');\n params[paramArray[0]] = paramArray[1];\n });\n }\n return params;\n};\n\nexport const getRouteNameFromLink = (link) => {\n link = link.replace('#/', '/');\n const index = link.indexOf('?');\n if (index !== -1) {\n link = link.substring(0, index);\n }\n return link;\n};\n\nexport const isAppleProduct = /Mac|iPod|iPhone|iPad/.test(window.navigator.platform);\n\nexport const defer = () => {\n const d = {\n promise: null,\n resolve: noop,\n reject: noop\n };\n d.promise = new Promise((resolve, reject) => {\n d.resolve = resolve;\n d.reject = reject;\n });\n return d;\n};\n\n/*\n * Invokes the given list of functions sequentially with the given arguments. If a function returns a promise,\n * then next function will be invoked only if the promise is resolved.\n */\nexport const executePromiseChain = (fns, args, d?, i?) => {\n d = d || defer();\n i = i || 0;\n if (i === 0) {\n fns = filter(fns, function (fn) {\n return !(isUndefined(fn) || isNull(fn));\n });\n }\n if (fns && i < fns.length) {\n try {\n toPromise(fns[i].apply(undefined, args))\n .then(() => executePromiseChain(fns, args, d, i + 1), d.reject);\n } catch (e) {\n d.reject(e);\n }\n } else {\n d.resolve();\n }\n return d.promise;\n};\n\n/**\n * This function accepts two data sources and will check if both are same by comparing the unique id and\n * context in which datasources are present\n * @returns {*} boolean true/ false\n */\nexport const isDataSourceEqual = (d1, d2) => {\n return d1.execute(DataSource.Operation.GET_UNIQUE_IDENTIFIER) === d2.execute(DataSource.Operation.GET_UNIQUE_IDENTIFIER) &&\n isEqual(d1.execute(DataSource.Operation.GET_CONTEXT_IDENTIFIER), d2.execute(DataSource.Operation.GET_CONTEXT_IDENTIFIER));\n};\n\n/**\n * checks if the passed datasource context matches with passed context\n * @param ds, datasource having a context\n * @param ctx, context to compare with\n * @returns {boolean}\n */\nexport const validateDataSourceCtx = (ds, ctx) => {\n return ds.execute(DataSource.Operation.GET_CONTEXT_IDENTIFIER) === ctx;\n};\n\n/**\n * This traverses the filterexpressions object recursively and process the bind string if any in the object\n * @param variable variable object\n * @param name name of the variable\n * @param context scope of the variable\n */\nexport const processFilterExpBindNode = (context, filterExpressions, variable?) => {\n const destroyFn = context.registerDestroyListener ? context.registerDestroyListener.bind(context) : _noop;\n const filter$ = new Subject();\n\n const bindFilExpObj = (obj, targetNodeKey) => {\n const listener = (newVal, oldVal) => {\n if ((newVal === oldVal && isUndefined(newVal)) || (isUndefined(newVal) && !isUndefined(oldVal))) {\n return;\n }\n // Skip cloning for blob column\n if (!includes(['blob', 'file'], obj.type)) {\n newVal = getClonedObject(newVal);\n }\n // backward compatibility: where we are allowing the user to bind complete object\n if (obj.target === 'dataBinding') {\n // remove the existing databinding element\n filterExpressions.rules = [];\n // now add all the returned values\n forEach(newVal, function (value, target) {\n filterExpressions.rules.push({\n 'target': target,\n 'value': value,\n 'matchMode': obj.matchMode || 'startignorecase',\n 'required': false,\n 'type': ''\n });\n });\n } else {\n // setting value to the root node\n obj[targetNodeKey] = newVal;\n }\n filter$.next({ filterExpressions, newVal });\n }\n\n if (stringStartsWith(obj[targetNodeKey], 'bind:')) {\n // [Todo-CSP]: needs a check, where is this used\n destroyFn(\n $watch(obj[targetNodeKey].replace('bind:', ''), context, {}, variable ? variable.invokeOnFiltertExpressionChange.bind(variable, obj, targetNodeKey) : listener, undefined, false, {arrayType: includes(['in', 'notin'], obj.matchMode)})\n );\n }\n };\n\n const traverseFilterExpressions = expressions => {\n if (expressions.rules) {\n forEach(expressions.rules, (filExpObj, i) => {\n if (filExpObj.rules) {\n traverseFilterExpressions(filExpObj);\n } else {\n if (filExpObj.matchMode === 'between') {\n bindFilExpObj(filExpObj, 'secondvalue');\n }\n bindFilExpObj(filExpObj, 'value');\n }\n });\n }\n };\n traverseFilterExpressions(filterExpressions);\n\n return filter$;\n};\n\n// This method will set the given proto on the target\nexport const extendProto = (target, proto) => {\n let _proto = Object.getPrototypeOf(target);\n while (Object.getPrototypeOf(_proto).constructor !== Object) {\n _proto = Object.getPrototypeOf(_proto);\n // return if the prototype of created component and prototype of context are same\n if (proto === _proto) {\n return;\n }\n }\n Object.setPrototypeOf(_proto, proto);\n};\n\nexport const removeExtraSlashes = function (url) {\n const base64regex = /^data:image\\/([a-z]{2,});base64,/;\n if (isString(url)) {\n /*\n * support for mobile apps having local file path url starting with file:/// and\n * support for base64 format\n * */\n if (startsWith(url, 'file:///') || base64regex.test(url)) {\n return url;\n }\n return url.replace(new RegExp('([^:]\\/)(\\/)+', 'g'), '$1');\n }\n};\n\n$.cachedScript = (() => {\n const inProgress = new Map();\n const resolved = new Set();\n\n const isInProgress = url => inProgress.has(url);\n const isResolved = url => resolved.has(url);\n const onLoad = url => {\n resolved.add(url);\n inProgress.get(url).resolve();\n inProgress.delete(url);\n };\n\n const setInProgress = url => {\n let resFn;\n let rejFn;\n const promise: any = new Promise((res, rej) => {\n resFn = res;\n rejFn = rej;\n });\n\n promise.resolve = resFn;\n promise.reject = rejFn;\n\n inProgress.set(url, promise);\n };\n\n return function (url) {\n if (isResolved(url)) {\n return Promise.resolve();\n }\n\n if (isInProgress(url)) {\n return inProgress.get(url);\n }\n\n setInProgress(url);\n\n const options = {\n dataType: 'script',\n cache: true,\n url\n };\n\n $.ajax(options).done(() => onLoad(url));\n\n return inProgress.get(url);\n };\n})();\n\nconst DEFAULT_DISPLAY_FORMATS = {\n DATE: 'yyyy-MM-dd',\n TIME: 'hh:mm a',\n TIMESTAMP: 'yyyy-MM-dd hh:mm:ss a',\n DATETIME: 'yyyy-MM-dd hh:mm:ss a',\n};\n// This method returns the display date format for given type\nexport const getDisplayDateTimeFormat = type => {\n return DEFAULT_DISPLAY_FORMATS[toUpper(type)];\n};\n\n// Generate for attribute on label and ID on input element, so that label elements are associated to form controls\nexport const addForIdAttributes = (element: HTMLElement) => {\n const labelEl = element.querySelectorAll('label.control-label');\n let inputEl = element.querySelectorAll('[focus-target]');\n if (!inputEl.length) {\n inputEl = element.querySelectorAll('input, select, textarea');\n }\n /*if there are only one input el and label El add id and for attribute*/\n if (labelEl.length && inputEl.length) {\n const widgetId = $(inputEl[0] as HTMLElement).closest('[widget-id]').attr('widget-id');\n if (widgetId) {\n setAttr(inputEl[0] as HTMLElement, 'id', widgetId);\n setAttr(labelEl[0] as HTMLElement, 'for', widgetId);\n }\n }\n /*Adding aria-labelledby to radioset, checkboxset widgets*/\n const ulEl = element.querySelectorAll('ul');\n if (labelEl.length && ulEl.length && (ulEl[0].getAttribute('role') === 'radiogroup' || ulEl[0].getAttribute('role') === 'group')) {\n const widgetId = 'wm-group-label-' + generateGUId();\n setAttr(ulEl[0] as HTMLElement, 'aria-labelledby', widgetId);\n setAttr(labelEl[0] as HTMLElement, 'id', widgetId);\n }\n};\n\n/**\n * This method is used to adjust the container position\n * For example: 1. When datepicker control placed closed to the screen left edges, it is going to negative values which is cutting the container.\n * To Fix the container overlapping issue changing the contrainer left translation to 0\n * @param containerElem - picker/dropdown container element(jquery)\n * @param parentElem - widget native element\n * @param ref - scope of particular library directive\n * @param ele - Child element(jquery). For some of the widgets(time, search) containerElem doesn't have height. The inner element(dropdown-menu) has height so passing it as optional.\n */\nexport const adjustContainerPosition = (containerElem, parentElem, ref, ele?) => {\n const zoneRef = ref._ngZone || ref.ngZone;\n zoneRef.onStable.subscribe(() => {\n const containerEleTransformations = getWebkitTraslationMatrix(containerElem);\n if (containerEleTransformations.m41 < 0) {\n containerEleTransformations.m41 = 0;\n } else {\n return;\n }\n setTranslation3dPosition(containerElem, containerEleTransformations);\n });\n };\n\n\n/**\n * This method is used to adjust the container position\n * For example: 1. When datepicker control placed closed to the screen right edges, it is going to out of the viewport values which is cutting the container.\n * @param containerElem picker/dropdown container element(jquery)\n * @param parentElem widget native element\n * @param ref scope of particular library directive\n * @param ele Child element(jquery). For some of the widgets(time, search) containerElem doesn't have height. The inner element(dropdown-menu) has height so passing it as optional.\n */\n export const adjustContainerRightEdges = (containerElem, parentElem, ref, ele?) => {\n const containerWidth = ele ? parseInt(ele.css('width')) : parseInt(containerElem.css('width'));\n const viewPortWidth = $(window).width() + window.scrollX;\n const parentDimesion = parentElem.getBoundingClientRect();\n const parentRight = parentDimesion.right + window.scrollX;\n let newLeft;\n const zoneRef = ref._ngZone || ref.ngZone;\n zoneRef.onStable.subscribe(() => {\n const containerEleTransformations = getWebkitTraslationMatrix(containerElem);\n\n if (viewPortWidth - (parentRight + parentDimesion.width) < containerWidth) {\n newLeft = parentRight - containerWidth;\n if (newLeft < 0) {\n newLeft = 0;\n }\n containerEleTransformations.m41 = newLeft;\n } else {\n return;\n }\n setTranslation3dPosition(containerElem, containerEleTransformations);\n });\n };\n\n /**\n * For given element set the traslation\n * @param containerElem tanslated element\n *\n * @param containerEleTransformations translate matrix positions\n */\n export const setTranslation3dPosition = (containerElem, containerEleTransformations) => {\n const translatePosition = 'translate3d(' + containerEleTransformations.m41 + 'px, ' + containerEleTransformations.m42 + 'px, 0px)';\n containerElem[0].style.webkitTransform = translatePosition;\n containerElem[0].style.MozTransform = translatePosition;\n containerElem[0].style.msTransform = translatePosition;\n containerElem[0].style.OTransform = translatePosition;\n containerElem[0].style.transform = translatePosition;\n };\n\n /**\n *\n * @param containerElem elemet for the WebKitCSSMatrix\n */\n export const getWebkitTraslationMatrix = (containerElem) => {\n if (typeof WebKitCSSMatrix === 'undefined') {\n return new MSCSSMatrix(window.getComputedStyle(containerElem[0]).transform);\n }\n return new WebKitCSSMatrix(window.getComputedStyle(containerElem[0]).webkitTransform);\n }\n\n// close all the popovers.\nexport const closePopover = (element) => {\n if (!element.closest('.app-popover').length) {\n const popoverElements = document.querySelectorAll('.app-popover-wrapper');\n forEach(popoverElements, (ele) => {\n if (ele.widget.isOpen) {\n ele.widget.isOpen = false;\n }\n });\n }\n};\n\n/**\n * This method is to trigger change detection in the app\n * This is exposed for the end user developer of WM app\n * This is the alternative for $rs.$safeApply() in AngularJS\n * See $appDigest in utils for more info\n */\nexport const detectChanges = $appDigest;\n\n/**\n * This method is to trigger the action/link of menu/nav item\n * @param scope - scope of the widget\n * @param item - item object\n */\nexport const triggerItemAction = (scope, item) => {\n let itemLink = item.link;\n const itemAction = item.action;\n const linkTarget = item.target;\n if (itemAction) {\n if (!scope.itemActionFn) {\n //[Todo-CSP]: This will not work as function will be dynamic\n scope.itemActionFn = $parseEvent(itemAction);\n }\n\n scope.itemActionFn(scope.userDefinedExecutionContext, Object.create(item));\n }\n if (itemLink) {\n if (itemLink.startsWith('#/') && (!linkTarget || linkTarget === '_self')) {\n const queryParams = getUrlParams(itemLink);\n itemLink = getRouteNameFromLink(itemLink);\n const router = get(scope, 'route') || get(scope, 'menuRef.route');\n router.navigate([itemLink], { queryParams });\n } else {\n openLink(itemLink, linkTarget);\n }\n }\n};\n\n/**\n * This method is to get datsource from the expression\n * @param expr - expression of the dataset\n * @param scope - scope of the widget\n * Example1: expr - \"Variables.staticVar1.dataSet.details[$i].addresses\" then the method will return datasource as Variables.staticVar1\n * Example2: expr - \"Widgets.list1.currentItem.addresses\" and list1 is bound to \"Variables.staticVar1.dataSet.details\" then the method will return datasource as Variables.staticVar1\n */\nexport const getDatasourceFromExpr = (expr, scope) => {\n const isBoundToVariable = startsWith(expr, 'Variables.');\n const isBoundToWidget = startsWith(expr, 'Widgets.');\n const parts = expr.split('.');\n if (isBoundToVariable) {\n return get(scope.viewParent.Variables, parts[1]);\n }\n if (isBoundToWidget) {\n const widgetScope = get(scope.viewParent.Widgets, parts[1]);\n const widgetDatasetBoundExpr = widgetScope.$attrs.get('datasetboundexpr');\n let widgetBoundExpression;\n widgetBoundExpression = (!widgetScope.datasource && widgetDatasetBoundExpr) ? widgetDatasetBoundExpr : widgetScope.binddataset;\n return getDatasourceFromExpr(widgetBoundExpression, widgetScope);\n }\n};\n\n/**\n * This method is to get dataset bound expression from list currentitem expression\n * @param expr - bound dataset expression\n * @param scope - scope of the widget\n * Example1: expr - \"Widgets.list1.currentItem.details\" and list1 is bound to \"Variables.staticVar1.dataSet\" then it returns expression as \"Variables.staticVar1.dataSet[$i].details\"\n */\nexport const extractCurrentItemExpr = (expr, scope) => {\n const currentItemRegEx = /^Widgets\\..*\\.currentItem/g;\n if (currentItemRegEx.test(expr)) {\n const parts = expr.split('.');\n const widgetScope = get(scope.viewParent.Widgets, parts[1]);\n const widgetDatasetBoundExpr = widgetScope.$attrs.get('datasetboundexpr');\n if (!widgetScope.datasource && widgetDatasetBoundExpr) {\n expr = expr.replace(/^Widgets\\..*\\.currentItem/g, `${widgetDatasetBoundExpr}[$i]`);\n return extractCurrentItemExpr(expr, scope);\n } else {\n expr = expr.replace(/^Widgets\\..*\\.currentItem/g, `${widgetScope.binddataset}[$i]`);\n }\n }\n return expr;\n};\n\n// this will add the html tag to the widget to scope the css to the page.\nexport const findRootContainer = ($el) => {\n let root = $el.closest('.app-prefab');\n if (!root.length) {\n root = $el.closest('.app-partial');\n }\n if(!root.length) {\n root = $el.closest('.app-spa-page');\n }\n if (!root.length) {\n root = $el.closest('.app-page');\n }\n return root.length && root.parent()[0].tagName;\n};\n\nexport const VALIDATOR = {\n REQUIRED: 'required',\n MAXCHARS: 'maxchars',\n MINVALUE: 'minvalue',\n MAXVALUE: 'maxvalue',\n REGEXP: 'regexp',\n MINDATE: 'mindate',\n MAXDATE: 'maxdate',\n MINTIME: 'mintime',\n MAXTIME: 'maxtime',\n EXCLUDEDATES: 'excludedates',\n EXCLUDEDAYS: 'excludedays'\n};\n\nexport const transformFileURI = (url) => {\n if (isString(url) && hasCordova() && url.startsWith('file://')) {\n if (isIos()) {\n return url.replace('file://', '/_app_file_');\n } else if (isAndroid() && location.href.startsWith('http')) {\n if (url.startsWith(cordova.file.applicationDirectory)) {\n return url.replace(cordova.file.applicationDirectory + 'www', '');\n } else if (url.startsWith('file://')) {\n return url.replace('file://', '/_app_file_');\n }\n }\n }\n return url;\n};\n\nexport const appendScriptToHead = (callback) =>{\n\n const scriptele = document.createElement('script');\n scriptele.onload = () => {\n callback(WM_CUSTOM_FORMATTERS);\n };\n scriptele.onerror = err => {\n console.warn('Error while loading the file ' + scriptele.src + '\\n' + err);\n };\n scriptele.type = 'text/javascript';\n scriptele.src = './extensions/formatters.js';\n document.head.appendChild(scriptele);\n};\n\nexport const getAppSetting = (key, defaultValue) => {\n return (_WM_APP_PROPERTIES.extra_settings && get(_WM_APP_PROPERTIES.extra_settings, key)) || defaultValue;\n};\n\n/* this function sets the itemclass depending on itemsperrow.\n * if itemsperrow is 2 for large device, then itemclass is 'col-xs-1 col-sm-1 col-lg-2'\n * if itemsperrow is 'lg-3' then itemclass is 'col-lg-3'\n*/\nexport const setListClass = (scope) => {\n let temp = '';\n if (scope.itemsperrow) {\n if (isNaN(parseInt(scope.itemsperrow, 10))) {\n // handling itemsperrow containing string of classes\n split(scope.itemsperrow, ' ').forEach((cls: string) => {\n const keys = split(cls, '-');\n cls = `${keys[0]}-${(12 / parseInt(keys[1], 10))}`;\n temp += ` col-${cls}`;\n });\n scope.itemsPerRowClass = temp.trim();\n } else {\n // handling itemsperrow having integer value.\n scope.itemsPerRowClass = `col-xs-${(12 / parseInt(scope.itemsperrow, 10))}`;\n }\n } else { // If itemsperrow is not specified make it full width\n scope.itemsPerRowClass = 'col-xs-12';\n }\n};\n\nexport const findParent = (lView: any, viewParentApp?: any) => {\n let parent = findViewParent(lView);\n return parent ? parent : viewParentApp;\n}\n\nexport const findViewParent = (lView: any) => {\n return lView[15] ? lView[15][8] : lView[15];\n /*if(lView[3] === null) {\n return lView[8];\n }\n let parentlView = lView[3];\n if(typeof lView[1] === \"boolean\") {\n return findViewParent(parentlView);\n }\n let componentType = lView[1][\"type\"];\n if(componentType === 0 || componentType === 1) {\n let p = lView[8];\n // ts-ignore\n if(p.hasOwnProperty(\"isDialogComponent\") || p.hasOwnProperty(\"isContainerDirective\")) {\n return findViewParent(parentlView);\n } else {\n return p;\n }\n } else {\n return findViewParent(parentlView);\n }*/\n}\n\n/*export const getParent = (parent: any) => {\n if(parent.hasOwnProperty(\"isDynamicComponent\") || parent.hasOwnProperty(\"isPageComponent\")) {\n return parent\n } else{\n return parent.viewParent ? getParent(parent.viewParent) : parent;\n }\n\n}*/\n","import { Subject } from 'rxjs';\n\nimport { isObject, noop } from './utils';\n\nexport class EventNotifier {\n\n private _subject = new Subject();\n private _isInitialized = false;\n private _eventsBeforeInit = [];\n\n constructor(start = true) {\n if (start) {\n this.start();\n }\n }\n\n /**\n * A event can be fired, but will be sent to subscribers only after exchange is started.\n *\n * @param {string} eventName\n * @param data\n */\n public notify(eventName: string, ...data: Array<any>) {\n if (this._isInitialized) {\n this._subject.next({\n name: eventName,\n data: data\n });\n } else {\n this._eventsBeforeInit.push({\n name: eventName,\n data: data\n });\n }\n }\n\n /**\n * starts the exchange and send the pending events to subscribers.\n */\n public start() {\n if (!this._isInitialized) {\n this._isInitialized = true;\n this._eventsBeforeInit.forEach((event) => this._subject.next(event));\n }\n }\n\n /**\n * upon subscription, method to cancel subscription is returned.\n *\n * @param eventName\n * @param {(data: any) => void} callback\n * @returns {() => void}\n */\n public subscribe(eventName, callback: (...data: Array<any>) => void): () => void {\n let eventListener;\n if (eventName && callback) {\n eventListener = this._subject\n .subscribe((event: any) => {\n if (event && isObject(event) && event.name === eventName) {\n callback.apply(undefined, event.data);\n }\n });\n return () => {\n eventListener.unsubscribe();\n };\n }\n return noop;\n }\n\n public destroy(): void {\n this._subject.complete();\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { EventNotifier } from '../utils/event-notifier';\nimport { isAndroid, isAndroidTablet, isIos, isIpad } from '../utils/utils';\nimport {get} from \"lodash-es\";\n\nlet MINIMUM_MOBILE_WIDTH = 480;\nlet MINIMUM_TAB_WIDTH = 768;\nlet MINIMUM_LARGE_SCREEN_WIDTH = 1200;\n\nconst enum SCREEN_TYPE {\n MOBILE,\n TABLET,\n LARGE_SCREEN_DEVICES\n}\n\nexport class IViewportService {\n notify: (eventname: ViewportEvent, options?: Array<any>) => void;\n subscribe: (eventname: ViewportEvent, callback: (data: any) => void) => void;\n}\n\nexport const enum ViewportEvent {\n ORIENTATION_CHANGE = 'orientationchange',\n RESIZE = 'resize'\n}\n\n@Injectable({providedIn: 'root'})\nexport class Viewport implements IViewportService, OnDestroy {\n public orientation = {\n isPortrait: false,\n isLandscape: false\n };\n public isMobileType = false;\n public isTabletType = false;\n private type;\n public _eventNotifier = new EventNotifier(true);\n private screenWidth;\n private screenHeight;\n private selectedViewPort: any;\n\n constructor() {\n this.setScreenType();\n\n window.addEventListener(ViewportEvent.RESIZE, this.resizeFn.bind(this));\n\n const query = window.matchMedia('(orientation: portrait)');\n if (query.matches) {\n this.orientation.isPortrait = true;\n } else {\n this.orientation.isLandscape = true;\n }\n\n // Add a media query change listener\n // addEventListener is not supported ios browser\n if (query.addEventListener) {\n query.addEventListener('change', $event => this.orientationChange($event, !$event.matches));\n }\n }\n\n update(selectedViewPort: Object) {\n this.selectedViewPort = selectedViewPort;\n this.setScreenType();\n }\n\n private orientationChange($event, isLandscape) {\n if (isLandscape !== this.orientation.isLandscape) {\n this.orientation.isPortrait = !isLandscape;\n this.orientation.isLandscape = isLandscape;\n this.notify(ViewportEvent.ORIENTATION_CHANGE, { $event, data: {isPortrait: !isLandscape, isLandscape: isLandscape} });\n }\n }\n\n private resizeFn($event) {\n this.setScreenType();\n this.orientationChange($event, this.screenWidth >= this.screenHeight);\n this.notify(ViewportEvent.RESIZE, {$event, data: {screenWidth: this.screenWidth, screenHeight: this.screenHeight}});\n }\n\n public subscribe(eventName, callback: (data: any) => void): () => void {\n return this._eventNotifier.subscribe(eventName, callback);\n }\n\n public notify(eventName: string, ...data: Array<any>) {\n this._eventNotifier.notify.apply(this._eventNotifier, arguments);\n }\n\n private setScreenType() {\n const $el = document.querySelector('.wm-app');\n this.screenWidth = $el.clientWidth;\n this.screenHeight = $el.clientHeight;\n\n var minValue = this.screenWidth < this.screenHeight ? this.screenWidth : this.screenHeight;\n var maxValue = this.screenWidth > this.screenHeight ? this.screenWidth : this.screenHeight;\n\n this.isTabletType = false;\n this.isMobileType = false;\n\n if (get(this.selectedViewPort, 'deviceCategory')) {\n const deviceCategory = this.selectedViewPort.deviceCategory;\n if (deviceCategory === 'Tab') {\n this.isTabletType = true;\n } else if (deviceCategory === 'Smartphone') {\n this.isMobileType = true;\n }\n } else {\n MINIMUM_MOBILE_WIDTH = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--screen-xs')) || 480;\n MINIMUM_TAB_WIDTH = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--screen-sm')) || 768;\n MINIMUM_LARGE_SCREEN_WIDTH = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--screen-lg')) || 1200;\n if (this.screenWidth >= MINIMUM_LARGE_SCREEN_WIDTH) {\n this.isTabletType = isAndroid() || isIos() || isAndroidTablet();\n this.isMobileType = false;\n } else if (this.screenWidth >= MINIMUM_TAB_WIDTH) {\n this.type = SCREEN_TYPE.TABLET;\n this.isTabletType = true;\n } else {\n this.type = SCREEN_TYPE.MOBILE;\n this.isMobileType = true;\n }\n }\n }\n\n ngOnDestroy() {\n this._eventNotifier.destroy();\n window.removeEventListener('resize', this.resizeFn);\n }\n}\n","import { Injectable} from '@angular/core';\nimport { VALIDATOR } from '../utils/utils';\n\n@Injectable({providedIn: 'root'})\nexport class ConstantService {\n MATCH_MODES = {\n STARTS_WITH_IGNORE_CASE: 'startignorecase',\n STARTS_WITH: 'start',\n ENDS_WITH_IGNORE_CASE: 'endignorecase',\n ENDS_WITH: 'end',\n CONTAINS: 'anywhere',\n CONTAINS_IGNORE_CASE: 'anywhereignorecase',\n IS_EQUAL_WITH_IGNORE_CASE: 'exactignorecase',\n IS_EQUAL: 'exact'\n };\n\n VALIDATOR = VALIDATOR;\n}\n","import { Injectable } from '@angular/core';\n\nimport * as Utils from '../utils/utils';\nimport {assign} from \"lodash-es\";\n\n@Injectable({providedIn: 'root'})\nexport class UtilsService {\n constructor() {\n assign(this, Utils);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {assign} from \"lodash-es\";\n\n@Injectable({providedIn: 'root'})\nexport class FieldTypeService {\n constructor() {\n assign(this, {\n INTEGER : 'integer',\n BIG_INTEGER : 'big_integer',\n SHORT : 'short',\n FLOAT : 'float',\n BIG_DECIMAL : 'big_decimal',\n DOUBLE : 'double',\n LONG : 'long',\n BYTE : 'byte',\n STRING : 'string',\n CHARACTER : 'character',\n TEXT : 'text',\n DATE : 'date',\n TIME : 'time',\n TIMESTAMP : 'timestamp',\n DATETIME : 'datetime',\n BOOLEAN: 'boolean',\n LIST : 'list',\n CLOB : 'clob',\n BLOB : 'blob'\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport {assign} from \"lodash-es\";\n\n@Injectable({providedIn: 'root'})\nexport class FieldWidgetService {\n constructor() {\n assign(this, {\n TEXT : 'text',\n NUMBER : 'number',\n TEXTAREA : 'textarea',\n PASSWORD : 'password',\n CHECKBOX : 'checkbox',\n SLIDER : 'slider',\n RICHTEXT : 'richtext',\n CURRENCY : 'currency',\n SWITCH : 'switch',\n SELECT : 'select',\n CHECKBOXSET : 'checkboxset',\n RADIOSET : 'radioset',\n DATE : 'date',\n TIME : 'time',\n TIMESTAMP : 'timestamp',\n UPLOAD : 'upload',\n RATING : 'rating',\n DATETIME : 'datetime',\n AUTOCOMPLETE : 'autocomplete',\n CHIPS : 'chips',\n COLORPICKER : 'colorpicker'\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { _WM_APP_PROJECT } from '../utils/utils';\n\ninterface Scripts {\n name: string;\n src: string;\n}\n\nexport const ScriptStore: Scripts[] = [];\n\ndeclare var document: any;\n\n@Injectable({providedIn: 'root'})\nexport class ScriptLoaderService {\n\n private scripts: any = {};\n private pathMappings;\n\n constructor(private http: HttpClient) {\n ScriptStore.forEach((script: any) => {\n this.scripts[script.name] = {\n loaded: false,\n src: script.src\n };\n });\n }\n\n load(...scripts: string[]): Promise<any> {\n if (scripts && scripts.length) {\n return Promise.resolve()\n .then(() => this.pathMappings || this.loadPathMappings())\n .then(() => {\n return Promise.all(scripts.map( s => {\n return this.loadScript(s);\n }));\n });\n }\n return Promise.resolve();\n }\n\n private loadPathMappings() {\n const path = (_WM_APP_PROJECT.cdnUrl || _WM_APP_PROJECT.ngDest) + 'path_mapping.json';\n return this.http.get(path).toPromise().then((data) => {\n this.pathMappings = data;\n }, () => {\n this.pathMappings = {};\n })\n }\n\n private loadScript(name: string) {\n return new Promise((resolve, reject) => {\n if (this.scripts[name] && this.scripts[name].loaded) {\n resolve({ script: name, loaded: true });\n return;\n } else if (!this.scripts[name]) {\n this.scripts[name] = {\n loaded: false,\n src: name\n };\n }\n //load script\n let script = document.createElement('script');\n script.type = 'text/javascript';\n script.async = false;\n let src = this.scripts[name].src;\n src = this.pathMappings[src] || src;\n if (src.startsWith(\"http\")) {\n script.src = src;\n } else {\n script.src = (_WM_APP_PROJECT.cdnUrl || _WM_APP_PROJECT.ngDest) + src;\n }\n if (script.readyState) { //IE\n script.onreadystatechange = () => {\n if (script.readyState === \"loaded\" || script.readyState === \"complete\") {\n script.onreadystatechange = null;\n this.scripts[name].loaded = true;\n resolve({script: name, loaded: true });\n }\n };\n } else { //Others\n script.onload = () => {\n this.scripts[name].loaded = true;\n resolve({script: name, loaded: true });\n };\n }\n script.onerror = (error: any) => resolve({script: name, loaded: false, status: 'Loaded'});\n document.getElementsByTagName('head')[0].appendChild(script);\n });\n }\n\n}\n","import { Injectable } from \"@angular/core\";\n\n@Injectable({ providedIn: 'root' })\nexport class CustomPipeManager {\n private customPipes: any = new Map();\n\n public setCustomPipe(key: string, value: any) {\n this.customPipes.set(key, value);\n }\n\n public getCustomPipe(key: string) {\n return this.customPipes.get(key);\n }\n\n public hasCustomPipe(key: string): boolean {\n return this.customPipes.has(key);\n }\n\n\n}\n\n","import { inject, Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { loadStyleSheets } from \"../utils/utils\";\n\n@Injectable({providedIn: 'root'})\nexport class CustomIconsLoaderService {\n private http = inject(HttpClient);\n load() {\n this.http.get('./font.config.js', {responseType: 'text'}).subscribe((fontConfig: any) => {\n const cssPaths = [],\n regex = /\"csspath\":\\s*\"([^\"]+)\"/g;\n let match;\n while ((match = regex.exec(fontConfig)) !== null) {\n cssPaths.push(match[1]);\n }\n loadStyleSheets(cssPaths);\n }, (error) => {});\n }\n}\n\n","import { Injectable } from '@angular/core';\nimport {clone, get, includes, isArray, isEmpty, isObject, merge} from \"lodash-es\";\n\n@Injectable({ providedIn: 'root' })\nexport class StatePersistence {\n private HISTORY_HANDLER = 'replace';\n private HISTORY_HANDLER_TYPES = {'push': 'pushState', 'replace': 'replaceState'};\n private WIDGET_STATE_KEY = 'ws';\n\n /**\n * Sets the passed value as the History handler if it exists in the History_Handler_Types object\n * @param val\n */\n public setHistoryHandler(val) {\n if (Object.keys(this.HISTORY_HANDLER_TYPES).indexOf(val) > -1) {\n this.HISTORY_HANDLER = val;\n }\n }\n\n /**\n * Constructs a unique key for setting state param by using the viewParent property of a widget\n * so that name conflicts are avoided when the same widget name is\n * present inside a Page, a Partial within a Page or a Prefab within a Page and so on.\n * E.g.:\n * if a page has a tabs widget with the name tabs1, a partial Partial1(inside container1) inclusion within which\n * there is a tabs with name tabs1 and a prefab MyPrefab inclusion with a tabs widget with the name tabs1,\n * getNestedPath will return tabs1, container1.Partial1.tabs1 and MyPrefab1.MyPrefab.tabs1 respectively.\n * @param viewParent\n * @param widgetName\n * @param currentOutput\n */\n public getNestedPath(viewParent: any, widgetName: string, currentOutput?: string) {\n let out = currentOutput || widgetName;\n if (viewParent && (viewParent.prefabName || viewParent.partialName)) {\n out = out.length > 0 ? out + '.' + (viewParent.prefabName || viewParent.partialName) : (viewParent.prefabName || viewParent.partialName);\n // same partial/prefab can be dropped multiple times in a page. Appending container's name for uniqueness.\n out = out + '.' + viewParent.containerWidget.name;\n return this.getNestedPath(viewParent.containerWidget.viewParent, widgetName, out);\n }\n return out.split('.').reverse().join('.');\n }\n\n /**\n * Decodes and parses the state information and returns the parsed state object\n * @param mode : optional parameter if the widget/variable uses a state handling mode(url, local storage, session storage)\n * other than the project level mode\n */\n public getStateInformation(mode) {\n let parsedStateInfo, stateInfo;\n if (mode.toLowerCase() === 'url') {\n const decodedURI = decodeURIComponent(window.location.href);\n stateInfo = decodedURI.match(/(wm_state=).*?(&|$)/);\n if (stateInfo) {\n stateInfo = stateInfo[0].replace('wm_state=', '');\n parsedStateInfo = this.uriToJson(stateInfo);\n return parsedStateInfo;\n }\n } else if (mode.toLowerCase() === 'localstorage') {\n stateInfo = localStorage.getItem(window.location.pathname.replace(/\\//g, '') + '_wm_state');\n } else if (mode.toLowerCase() === 'sessionstorage') {\n stateInfo = sessionStorage.getItem(window.location.pathname.replace(/\\//g, '') + '_wm_state');\n }\n if (stateInfo) {\n parsedStateInfo = JSON.parse(stateInfo);\n return parsedStateInfo;\n }\n\n return;\n }\n\n /**\n * Checks if the passed widget instance has any state information available or not\n * @param widget\n * @param mode : optional parameter if the widget uses a state handling mode(url, local storage, session storage)\n * other than the project level mode\n */\n public getWidgetState(widget, mode?) {\n mode = mode || this.computeMode(widget.statehandler);\n if (!mode) {\n return;\n }\n let parsedStateInfo = this.getStateInformation(mode);\n if (parsedStateInfo && widget && widget.getAppInstance().activePageName && (mode.toLowerCase() === 'localstorage' || mode.toLowerCase() === 'sessionstorage')) {\n parsedStateInfo = parsedStateInfo[widget.getAppInstance().activePageName];\n }\n if (get(parsedStateInfo, this.WIDGET_STATE_KEY)) {\n const stateKey = this.getNestedPath(widget.viewParent, widget.getWidget().name);\n return parsedStateInfo[this.WIDGET_STATE_KEY][stateKey];\n }\n return;\n }\n\n public computeMode(widgetStateHandler) {\n if (!widgetStateHandler) {\n return 'url';\n } else if (widgetStateHandler && widgetStateHandler.toLowerCase() === 'none') {\n return;\n } else {\n return widgetStateHandler.toLowerCase();\n }\n }\n\n /**\n * Sets the passed value to the state information by using the passed widget instance\n * @param widget\n * @param value\n * @param mode : optional parameter if the widget uses a state handling mode(url, local storage, session storage)\n * other than the project level mode\n */\n public setWidgetState(widget, value, mode?) {\n const stateKey = this.getNestedPath(widget.viewParent, widget.getWidget().name);\n mode = mode || this.computeMode(widget.statehandler);\n if (!mode) {\n return;\n }\n this.setStateParams(this.WIDGET_STATE_KEY, stateKey, value, mode, widget);\n }\n\n /**\n * Removes the passed widget’s state information from the State Object. If a key is passed, then only that\n * particular entry will be removed, not any other entries for that widget.\n * @param widget\n * @param key\n * @param mode : optional parameter if the widget uses a state handling mode(url, local storage, session storage)\n * other than the project level mode\n */\n public removeWidgetState(widget, key?, mode?) {\n mode = mode || this.computeMode(widget.statehandler);\n if (!mode) {\n return;\n }\n const stateKey = this.getNestedPath(widget.viewParent, widget.getWidget().name);\n this.removeStateParam(this.WIDGET_STATE_KEY, stateKey, key, mode, widget);\n }\n\n /**\n * Sets the passed value to the state information by using the passed variable name as key\n * @param variableName\n * @param value\n * @param mode : optional parameter if the variable uses a state handling mode(url, local storage, session storage)\n * other than the project level mode\n */\n public setStateVariable(variableName, value, mode?) {\n mode = mode || this.computeMode(mode);\n if (!mode) {\n return;\n }\n this.setStateParams('', variableName, value, mode);\n }\n\n /**\n * Checks if the passed variable name has any state information available in the url or not\n * @param variableName\n * @param mode : optional parameter if the variable uses a state handling mode(url, local storage, session storage)\n * other than the project level mode\n */\n public getStateVariable(variableName: string, mode?) {\n mode = mode || this.computeMode(mode);\n if (!mode) {\n return;\n }\n const parsedStateInfo = this.getStateInformation(mode);\n if (parsedStateInfo) {\n return parsedStateInfo[variableName];\n }\n return;\n }\n\n /**\n * Removes the passed variable’s state information from the URL.\n * @param variableName\n * @param mode : optional parameter if the widget uses a state handling mode(url, local storage, session storage)\n * other than the project level mode\n */\n public removeStateVariable(variableName, mode?) {\n mode = mode || this.computeMode(mode);\n if (!mode) {\n return;\n }\n this.removeStateParam('', variableName, null, mode);\n }\n\n /**\n * Sets the passed state information in the url by parsing the passed value and checking\n * its type. If its an array type, then the passed values will be pushed into an array and then set in the state\n * E.g.\n * Current state information is like :\n {\n \"widget_state\": {\n \"Table1\": {\n \"selectedItem\": [\n {\n \"page\": \"1\",\n \"index\": \"1\"\n }\n ],\n \"pagination\": \"1\"\n }\n }\n }\n * Input value will be like:\n {\n \"selectedItem\": [\n {\n \"page\": \"1\",\n \"index\": \"2\"\n }\n ]\n }\n\n * This parsing logic will convert it to the following\n {\n \"widget_state\": {\n \"Table1\": {\n \"selectedItem\": [\n {\n \"page\": \"1\",\n \"index\": \"1\"\n },\n {\n \"page\": \"1\",\n \"index\": \"2\"\n }\n ],\n \"pagination\": \"1\"\n }\n }\n }\n * Based on how the HISTORY_HANDLER is configured, the updated url will either replace the existing url or\n * push a new state in the url so that back button may track each update to the state.\n * @param stateParam\n * @param key\n * @param val\n * @param mode : optional parameter if the widget/variable uses a state handling mode(url, local storage, session storage)\n * other than the project level mode\n */\n public setStateParams(stateParam: string, key: string, val: any, mode?, widget?) {\n let url = '', parsedObj;\n const stateObj = this.getStateInformation(mode);\n if (widget && stateObj && widget.getAppInstance().activePageName && (mode.toLowerCase() === 'localstorage' || mode.toLowerCase() === 'sessionstorage')) {\n parsedObj = stateObj[widget.getAppInstance().activePageName];\n } else {\n parsedObj = clone(stateObj);\n }\n if (stateParam) {\n if (parsedObj && !parsedObj[stateParam]) {\n parsedObj[stateParam] = {};\n } else if (!parsedObj) {\n parsedObj = {[stateParam]: {}};\n }\n if (isObject(val) && !isArray(val)) {\n parsedObj[stateParam][key] = parsedObj[stateParam][key] || {};\n merge(parsedObj[stateParam][key], val);\n } else {\n parsedObj[stateParam][key] = val;\n }\n } else {\n if (parsedObj && !parsedObj[key]) {\n parsedObj[key] = {};\n } else if (!parsedObj) {\n parsedObj = {[key]: {}};\n }\n if (isObject(val) && !isArray(val)) {\n parsedObj[key] = parsedObj[key] || {};\n merge(parsedObj[key], val);\n } else {\n parsedObj[key] = val;\n }\n }\n // for Local and Session Storage, wrap state object inside page name so that widget name conflicts don't arise between pages.\n if (widget && widget.getAppInstance().activePageName && (mode.toLowerCase() === 'localstorage' || mode.toLowerCase() === 'sessionstorage')) {\n if (stateObj) {\n stateObj[widget.getAppInstance().activePageName] = parsedObj;\n parsedObj = stateObj;\n } else {\n parsedObj = {[widget.getAppInstance().activePageName]: parsedObj};\n }\n\n }\n\n\n let decodedURI = decodeURIComponent(window.location.href);\n if (decodedURI.indexOf('?') < 0) {\n decodedURI = decodedURI + '?wm_state=';\n } else if (decodedURI.indexOf('wm_state') < 0) {\n decodedURI = decodedURI + '&wm_state=';\n }\n url = decodedURI.replace(/(wm_state=).*?(&|$)/ ,'$1' + this.jsonToUri(parsedObj) + '$2');\n\n if (mode.toLowerCase() === 'localstorage') {\n localStorage.setItem(window.location.pathname.replace(/\\//g, '') + '_wm_state', JSON.stringify(parsedObj));\n return;\n } else if (mode.toLowerCase() === 'sessionstorage') {\n sessionStorage.setItem(window.location.pathname.replace(/\\//g, '') + '_wm_state', JSON.stringify(parsedObj));\n return;\n }\n\n if (decodeURIComponent(window.location.href) === decodeURIComponent(url)) {\n return;\n }\n if (this.HISTORY_HANDLER === 'push') {\n window.history.pushState({ path: url }, '', url);\n } else if (this.HISTORY_HANDLER === 'replace') {\n window.history.replaceState({ path: url }, '', url);\n }\n }\n\n /**\n * Removes the passed state information from the url\n * E.g.\n * Current state information is like :\n {\n \"widget_state\": {\n \"Table1\": {\n \"selectedItem\": [\n {\n \"page\": \"1\",\n \"index\": \"1\"\n },\n {\n \"page\": \"2\",\n \"index\": \"1\"\n }\n ],\n \"pagination\": \"1\"\n }\n }\n }\n * Input values will be like:\n subParam : 'selectedItem'\n\n * This method will convert it to the following\n {\n \"widget_state\": {\n \"Table1\": {\n \"pagination\": \"1\"\n }\n }\n }\n * @param stateParam\n * @param key\n * @param subParam\n * @param mode : optional parameter if the widget/variable uses a state handling mode(url, local storage, session storage)\n * other than the project level mode\n */\n public removeStateParam(stateParam, key, subParam?, mode?, widget?) {\n let url = '', parsedObj;\n const stateObj = this.getStateInformation(mode);\n if (widget && stateObj && widget.getAppInstance().activePageName && (mode.toLowerCase() === 'localstorage' || mode.toLowerCase() === 'sessionstorage')) {\n parsedObj = stateObj[widget.getAppInstance().activePageName];\n } else {\n parsedObj = clone(stateObj);\n }\n if (!get(parsedObj, [stateParam]) && !get(parsedObj, key)) {\n return;\n }\n // Fix for [WMS-24698]: when table is inside a prefab, state persistence key is like \"TestLabel_11.TestLabel_1.staticVariable1Table1\"\n // get(parsedObj, stateParam + '.' + key) is undefined so using (parsedObj && parsedObj[stateParam] && parsedObj[stateParam][key]) condition.\n if (get(parsedObj, stateParam + '.' + key) || (parsedObj && parsedObj[stateParam] && parsedObj[stateParam][key])) {\n if (subParam) {\n delete parsedObj[stateParam][key][subParam];\n } else {\n delete parsedObj[stateParam][key];\n }\n if (isEmpty(parsedObj[stateParam][key])) {\n delete parsedObj[stateParam][key];\n }\n if (isEmpty(parsedObj[stateParam])) {\n delete parsedObj[stateParam];\n }\n } else if (!stateParam && get(parsedObj, key)) {\n delete parsedObj[key];\n }\n\n // for Local and Session Storage, wrap state object inside page name so that widget name conflicts don't arise between pages.\n if (widget && widget.getAppInstance().activePageName && (mode.toLowerCase() === 'localstorage' || mode.toLowerCase() === 'sessionstorage')) {\n if (stateObj) {\n stateObj[widget.getAppInstance().activePageName] = parsedObj;\n parsedObj = stateObj;\n } else {\n parsedObj = {[widget.getAppInstance().activePageName]: parsedObj};\n }\n\n }\n if (mode.toLowerCase() === 'localstorage') {\n localStorage.setItem(window.location.pathname.replace(/\\//g, '') + '_wm_state', JSON.stringify(parsedObj));\n return;\n } else if (mode.toLowerCase() === 'sessionstorage') {\n sessionStorage.setItem(window.location.pathname.replace(/\\//g, '') + '_wm_state', JSON.stringify(parsedObj));\n return;\n }\n\n const decodedURI = decodeURIComponent(window.location.href);\n if (isEmpty(parsedObj)) {\n url = decodedURI.replace(/(wm_state=).*?(&|$)/ ,'' + '$2');\n if (includes(['&', '?'], url.charAt(url.length - 1))) {\n url = url.replace(url.charAt(url.length - 1), '');\n }\n } else {\n url = decodedURI.replace(/(wm_state=).*?(&|$)/ ,'$1' + this.jsonToUri(parsedObj) + '$2');\n }\n\n window.history.replaceState({ path: url }, '', url);\n }\n\n /**\n * Converts the State Information object into an encoded object when state handling mode is URL\n * so that a meaningful URL can be formed and the user can make changes easily to the URL.\n * E.g.\n * state information input will be like :\n {\n \"widget-state\": {\n \"Table1\": {\n \"pagination\": \"3\",\n \"search\":[\n {\n \"field\":\"state\",\n \"value\":\"NY\",\n \"matchMode\":\"anywhereignorecase\",\n \"type\":\"string\"\n }\n ]\n }\n }\n },\n \"CustomVariableSelectedItems\": [\"2\", \"3\"]\n }\n\n\n * This method will convert it to the following\n ('widget-state'~('Table1'~('pagination'~'3'_'search'~!('field'~'state'_'value'~'NY'_'matchMode'~'anywhereignorecase'_'type'~'string')*))_'CustomVariableSelectedItems'~!'2'_'3'*)\n * @param jsonObj\n */\n private jsonToUri(jsonObj) {\n return encodeURIComponent(\n JSON.stringify(jsonObj)\n .replace(/[()'~_!*]/g, function(c) {\n // Replace ()'~_!* with \\u0000 escape sequences\n return '\\\\u' + ('0000' + c.charCodeAt(0).toString(16)).slice(-4)\n })\n .replace(/\\{/g, '(') // { -> (\n .replace(/\\}/g, ')') // } -> )\n .replace(/\"/g, \"'\") // \" -> '\n .replace(/\\:/g, '~') // : -> ~\n .replace(/,/g, '_') // , -> _\n .replace(/\\[/g, '!') // [ -> !\n .replace(/\\]/g, '*') // ] -> *\n );\n }\n\n /**\n * Decodes the encoded State Information object into a JSON object when state handling mode is URL\n * so that state information can be parsed and applied to the widgets.\n * E.g.\n * encoded state information input will be like :\n ('widget-state'~('Table1'~('pagination'~'3'_'search'~!('field'~'state'_'value'~'NY'_'matchMode'~'anywhereignorecase'_'type'~'string')*))_'CustomVariableSelectedItems'~!'2'_'3'*)\n\n\n * This method will convert it to the following\n {\n \"widget-state\": {\n \"Table1\": {\n \"pagination\": \"3\",\n \"search\":[\n {\n \"field\":\"state\",\n \"value\":\"NY\",\n \"matchMode\":\"anywhereignorecase\",\n \"type\":\"string\"\n }\n ]\n }\n }\n },\n \"CustomVariableSelectedItems\": [\"2\", \"3\"]\n }\n * @param encodedObj\n */\n private uriToJson(encodedObj) {\n let response: any;\n try {\n response = JSON.parse(\n decodeURIComponent(encodedObj)\n .replace(/\\(/g, '{') // ( -> {\n .replace(/\\)/g, '}') // ) -> }\n .replace(/'/g, '\"') // ' -> \"\n .replace(/~/g, ':') // ~ -> :\n .replace(/_/g, ',') // _ -> ,\n .replace(/\\!/g, '[') // ! -> [\n .replace(/\\*/g, ']') // * -> ]\n );\n } catch (e) {\n console.warn(e);\n }\n return response;\n }\n}\n\n","import { isDefined } from '../utils/utils';\nimport { Injectable } from '@angular/core';\nimport {debounce, get, isEmpty, isEqual} from \"lodash-es\";\n\ndeclare const $;\n@Injectable({ providedIn: 'root' })\n\nexport class PaginationService {\n /**\n * @description\n * This function returns the updated fields and the current page index when navigated to the next set of data\n * @param {object} parent table / list instance\n * @param {object} newVal updated fields info\n * @returns fieldDefs and current page index\n */\n public updateFieldsOnPagination(parent, newVal) {\n let fieldDefs = parent.widgetType === 'wm-table' ? parent.gridData : parent.fieldDefs;\n // remove the deleted row from the list\n if (parent.widgetType === 'wm-table' && (parent.gridOptions.isNavTypeScrollOrOndemand()) && parent.gridOptions.deletedRowIndex !== -1) {\n fieldDefs.splice(parent.gridOptions.deletedRowIndex, 1);\n parent.gridOptions.setDeletedRowIndex(-1);\n }\n // reset fieldDefs if last action performed is search or sort\n if (parent.widgetType === 'wm-table' && (parent.gridOptions.isNavTypeScrollOrOndemand()) && (parent.gridOptions.lastActionPerformed === parent.gridOptions.ACTIONS.SEARCH_OR_SORT || parent.gridOptions.lastActionPerformed === parent.gridOptions.ACTIONS.FILTER_CRITERIA || parent.gridOptions.lastActionPerformed === parent.gridOptions.ACTIONS.DATASET_UPDATE)) {\n fieldDefs = [];\n parent.gridOptions.setCurrentPage(1);\n }\n let currentPage;\n if (parent.widgetType === 'wm-table') {\n currentPage = parent.gridOptions.showviewlessbutton && (parent.gridOptions.mode === 'viewless') ? parent.gridOptions.getCurrentPage() : parent.currentPage;\n } else {\n currentPage = parent.currentPage;\n }\n const dataNavigator = parent.dataNavigator;\n const pagesize = parent.pagesize;\n\n if (!isDefined(fieldDefs) || dataNavigator.isFirstPage()) {\n fieldDefs = [];\n currentPage = 1;\n } else if (fieldDefs.length / pagesize <= dataNavigator.pageCount) {\n let itemsLength,\n itemsToPush = [];\n // we push the newVal only when dn.currentPage gets incremented because that is when new items gets added to newVal\n if (fieldDefs.length === currentPage * pagesize && (currentPage + 1) === dataNavigator.dn.currentPage) {\n itemsToPush = newVal;\n currentPage++;\n } else if (fieldDefs.length < currentPage * pagesize) {\n if ((fieldDefs.length === (currentPage - 1) * pagesize) && ((currentPage - 1) === dataNavigator.dn.currentPage)) {\n // if dn.currentPage is not incremented still only old newVal is present hence we push empty array\n newVal = [];\n } else if (dataNavigator.dataSize < currentPage * pagesize) {\n // if number of elements added to dataNavigator is less than product of currentPage and pageSize we only add elements extra elements added\n itemsLength = dataNavigator.dataSize - fieldDefs.length;\n } else {\n // if number of elements added to dataNavigator is greater than product of currentPage and pageSize we add elements the extra elements in newVal\n itemsLength = currentPage * pagesize - fieldDefs.length;\n currentPage++;\n }\n const startIndex = newVal.length - itemsLength;\n itemsToPush = newVal.slice(startIndex);\n } else if (fieldDefs.length === currentPage * pagesize && currentPage === dataNavigator.dn.currentPage) {\n // if dn.currentPage is not incremented still only old newVal is present hence we push empty array\n itemsToPush = [];\n }\n newVal = itemsToPush;\n }\n\n // Add unique records to fieldDefs\n if (parent.widgetType === 'wm-table' && (parent.gridOptions.lastActionPerformed === parent.gridOptions.ACTIONS.DELETE || parent.gridOptions.lastActionPerformed === parent.gridOptions.ACTIONS.EDIT)) {\n fieldDefs = this.getUniqueRecordsInFieldDef(fieldDefs, newVal);\n } else {\n fieldDefs = [...fieldDefs, ...newVal];\n }\n return [fieldDefs, currentPage];\n }\n\n // Add the unique records to fieldDefs\n public getUniqueRecordsInFieldDef(fieldDefs, newVal) {\n let flag = false;\n if (!fieldDefs.length) {\n fieldDefs = newVal;\n } else {\n newVal.forEach(function (newObj) {\n flag = false;\n fieldDefs.forEach(function (obj) {\n if (isEqual(newObj, obj)) {\n flag = true;\n }\n });\n if (flag === false) {\n fieldDefs.push(newObj);\n }\n });\n }\n return fieldDefs;\n }\n\n /**\n * @description\n * This function registers scroll events on the scrollable el, if the page doesn't have a scroll el then wheel event is registered on the requested node\n * @param {object} parent table / list instance\n * @param {string} nodeName tbody/ul\n * @param {number} debounceNum provided to lodash debounce\n * @returns null\n */\n public bindScrollEvt(parent, nodeName, debounceNum) {\n const dataNavigator = parent.dataNavigator;\n const $el = parent.$element;\n const $rootEl = $el.find(nodeName);\n const $firstChild = $rootEl.children().first();\n\n const self = this;\n let $scrollParent;\n let scrollNode;\n let lastScrollTop = 0;\n\n if (!$firstChild.length) {\n return;\n }\n\n $scrollParent = $firstChild.scrollParent(false);\n\n if ($scrollParent[0] === document) {\n scrollNode = document.body;\n } else {\n scrollNode = $scrollParent[0];\n }\n\n // has scroll\n if (scrollNode.scrollHeight > scrollNode.clientHeight) {\n $scrollParent\n .each((index: number, node) => {\n // scrollTop property is 0 or undefined for body in IE, safari.\n lastScrollTop = node === document ? (node.body.scrollTop || $(window).scrollTop()) : (node as HTMLElement).scrollTop;\n })\n .off('scroll.scroll_evt')\n .on('scroll.scroll_evt', function (evt) {\n let target = evt.target;\n let clientHeight;\n let totalHeight;\n let scrollTop;\n // scrollingElement is undefined for IE, safari. use body as target Element\n target = target === document ? (target.scrollingElement || document.body) : target;\n if (parent.widgetType === 'wm-table' && parent.gridOptions.isNavTypeScrollOrOndemand()) {\n evt.stopPropagation();\n }\n\n clientHeight = target.clientHeight;\n totalHeight = target.scrollHeight;\n scrollTop = target === document.body ? $(window).scrollTop() : target.scrollTop;\n\n if ((lastScrollTop < scrollTop) && (totalHeight * 0.9 < scrollTop + clientHeight)) {\n $(this).off('scroll.scroll_evt');\n self.debouncedFetchNextDatasetOnScroll(dataNavigator, debounceNum, parent)();\n }\n\n lastScrollTop = scrollTop;\n });\n $rootEl.off('wheel.scroll_evt');\n } else {\n // if there is no scrollable element register wheel event on ul element\n $rootEl.on('wheel.scroll_evt', e => {\n if (parent.widgetType === 'wm-table' && parent.gridOptions.isNavTypeScrollOrOndemand()) {\n e.stopPropagation();\n }\n if (e.originalEvent.deltaY > 0) {\n $rootEl.off('wheel.scroll_evt');\n this.debouncedFetchNextDatasetOnScroll(dataNavigator, debounceNum, parent)();\n }\n });\n }\n }\n\n /**\n * @description\n * This function calls fetchNextDatasetOnScroll fn on debounced time\n * @param {object} dataNavigator pagination instance\n * @param {number} debounceNum provided to lodash debounce\n * @returns debounced function definition\n */\n public debouncedFetchNextDatasetOnScroll(dataNavigator, debounceNum, parent) {\n return debounce(() => this.fetchNextDatasetOnScroll(dataNavigator, parent), debounceNum);\n }\n\n /**\n * @description\n * This function calls next set of data when navigated to next page\n * @param {object} dataNavigator pagination instance\n * @returns null\n */\n public fetchNextDatasetOnScroll(dataNavigator, parent) {\n // Load next set of data only after the success of current call\n if (!parent.variableInflight) {\n // Fix for [WMS-23263]: set 'isNextPageData' flag to true & 'isDataUpdatedByUser' to false as next page data is being rendered on Scroll\n if (parent.widgetType === 'wm-table') {\n // set isNextPageData flag to true as next page data is being rendered\n parent.gridOptions.setIsNextPageData(true);\n parent.gridOptions.setIsDataUpdatedByUser(false);\n }\n dataNavigator.navigatePage('next');\n }\n }\n\n /**\n * @description\n * This function registers scroll events on the scrollable el for mobile projects\n * @param {object} parent list instance\n * @param {number} debounceNum provided to lodash debounce\n * @returns null\n */\n public bindIScrollEvt(parent, debounceNum) {\n const $element = parent.$element;\n const dataNavigator = parent.dataNavigator;\n const app = parent.app;\n\n const $scrollParent = $element.closest('[wmsmoothscroll=\"true\"]');\n\n const iScroll = get($scrollParent[0], 'iscroll');\n\n // when iscroll is not initialised the notify the smoothscroll and subscribe to the iscroll update\n if (!iScroll) {\n const iScrollSubscription = app.subscribe('iscroll-update', (_el) => {\n if (!isEmpty(_el) && _el.isSameNode($scrollParent[0])) {\n this.setIscrollHandlers($scrollParent[0], dataNavigator, debounceNum);\n iScrollSubscription();\n }\n });\n app.notify('no-iscroll', $scrollParent[0]);\n return;\n }\n this.setIscrollHandlers($scrollParent[0], dataNavigator, debounceNum);\n }\n\n /**\n * @description\n * This function registers scrollEnd event on the scrollable el for mobile projects\n * @param {object} el scrollable element scope\n * @param {object} dataNavigator pagination instance\n * @param {number} debounceNum provided to lodash debounce\n * @returns null\n */\n public setIscrollHandlers(el, dataNavigator, debounceNum) {\n let lastScrollTop = 0;\n const wrapper = get(el.iscroll, 'wrapper');\n const self = el.iscroll;\n\n el.iscroll.on('scrollEnd', () => {\n const clientHeight = wrapper.clientHeight,\n totalHeight = wrapper.scrollHeight,\n scrollTop = Math.abs(el.iscroll.y);\n\n if ((lastScrollTop < scrollTop) && (totalHeight * 0.9 < scrollTop + clientHeight)) {\n this.debouncedFetchNextDatasetOnScroll(dataNavigator, debounceNum, parent)();\n if (self.indicatorRefresh) {\n self.indicatorRefresh();\n }\n }\n\n lastScrollTop = scrollTop;\n });\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { HttpClientModule } from '@angular/common/http';\n\n@NgModule({\n declarations: [],\n imports: [\n HttpClientModule\n ],\n providers: [],\n bootstrap: []\n})\nexport class CoreModule {\n\n static forRoot(): ModuleWithProviders<CoreModule> {\n return {\n ngModule: CoreModule,\n providers: [\n ]\n };\n }\n}\n","import {isNil} from \"lodash-es\";\n\ninterface CachedData<T> {\n instance: T;\n lastAccessedTime: number;\n}\n\nexport class LRUCache<T> {\n private cache = new Map<string, CachedData<T>>();\n private evictQueue: [string] = [''];\n\n constructor(\n private maxSize = 100,\n private maxAge = 60,\n private onEvict?: ((key: string, value: T) => any)) {\n this.evictQueue.shift();\n if(this.maxAge > 0) {\n if (this.maxAge <= 30) {\n console.warn(`Cache age ${this.maxAge}s is very less. Keep it atleast 30s.`);\n }\n this.maxAge = this.maxAge * 1000;\n setInterval(() => {\n const max = Date.now() - this.maxAge;\n const expiredData = this.evictQueue.filter(k => {\n return this.cache.get(k).lastAccessedTime <= max;\n });\n this.evict(expiredData.length);\n }, this.maxAge);\n }\n }\n\n private addToEvictQueue(key: string) {\n const index = this.evictQueue.findIndex(k => (k === key));\n if (index >= 0) {\n this.evictQueue.splice(index, 1);\n }\n this.evictQueue.push(key);\n }\n\n private evict(count = 1): void {\n for (let i = 0; i < count; i++) {\n this.delete(this.evictQueue[0]);\n }\n }\n\n public keys() {\n return this.cache.keys();\n }\n\n public set(key: string, dataToCache: T): void {\n if (isNil(dataToCache)) {\n return;\n }\n const cachedData = {\n instance: dataToCache,\n lastAccessedTime: Date.now()\n };\n this.cache.set(key, cachedData);\n this.addToEvictQueue(key);\n this.evict(this.evictQueue.length - this.maxSize);\n }\n\n public get(key: string): T {\n const cachedData = this.cache.get(key);\n if (cachedData) {\n cachedData.lastAccessedTime = Date.now();\n this.addToEvictQueue(key);\n return cachedData.instance;\n }\n return null;\n }\n\n public delete(key: string) {\n if(key && this.cache.has(key)) {\n const cachedData = this.cache.get(key);\n this.cache.delete(key);\n this.onEvict && this.onEvict(key, cachedData.instance);\n const index = this.evictQueue.findIndex(k => (k === key));\n if (index >= 0) {\n this.evictQueue.splice(index, 1);\n }\n }\n }\n\n public has(key: string): boolean {\n return this.cache.has(key);\n }\n\n public size(): number {\n return this.evictQueue.length;\n }\n\n public clear() {\n this.evict(this.evictQueue.length);\n }\n}\n","/*\n * Public API Surface of core\n */\n\nexport * from './utils/build-utils';\nexport * from './constants/currency-constants';\nexport {\n appendNode,\n insertBefore,\n insertAfter,\n removeNode,\n removeClass,\n addClass,\n switchClass,\n toggleClass,\n setCSS,\n setCSSFromObj,\n setProperty,\n setAttr,\n setHtml,\n removeAttr,\n createElement,\n toDimension\n} from './utils/dom';\nexport * from './enums/enums';\nexport * from './utils/event-notifier';\nexport {\n ParseExprResult,\n $parseExpr,\n $parseEvent,\n registerFnByExpr,\n setPipeProvider,\n getFnByExpr,\n getFnForBindExpr,\n getFnForEventExpr\n} from './utils/expression-parser';\nexport {\n EVENT_LIFE,\n isDefined,\n isObject,\n toBoolean,\n isIE,\n isAndroid,\n isAndroidTablet,\n isIphone,\n isIpod,\n isIpad,\n isIos,\n isLargeTabletLandscape,\n isLargeTabletPortrait,\n isMobile,\n isMobileApp,\n getAndroidVersion,\n isKitkatDevice,\n encodeUrl,\n encodeUrlParams,\n initCaps,\n spaceSeparate,\n replaceAt,\n periodSeparate,\n prettifyLabel,\n deHyphenate,\n prettifyLabels,\n isInsecureContentRequest,\n stringStartsWith,\n getEvaluatedExprValue,\n isImageFile,\n isAudioFile,\n isVideoFile,\n isValidWebURL,\n getResourceURL,\n triggerFn,\n hasOffsetStr,\n getFormattedDate,\n getDateObj,\n addEventListenerOnElement,\n getClonedObject,\n getFiles,\n generateGUId,\n validateAccessRoles,\n getValidJSON,\n xmlToJson,\n findValueOf,\n extractType,\n isNumberType,\n isEmptyObject,\n scrollToElement,\n isElementInViewport,\n isPageable,\n replace,\n isDateTimeType,\n getValidDateObject,\n getNativeDateObject,\n getBlob,\n isEqualWithFields,\n loadStyleSheet,\n loadStyleSheets,\n loadScript,\n loadScripts,\n _WM_APP_PROJECT,\n setSessionStorageItem,\n getSessionStorageItem,\n noop,\n convertToBlob,\n hasCordova,\n AppConstants,\n openLink,\n fetchContent,\n toPromise,\n retryIfFails,\n getAbortableDefer,\n createCSSRule,\n getUrlParams,\n getMomentLocaleObject,\n getRouteNameFromLink,\n isAppleProduct,\n defer,\n executePromiseChain,\n isDataSourceEqual,\n validateDataSourceCtx,\n processFilterExpBindNode,\n extendProto,\n removeExtraSlashes,\n getDisplayDateTimeFormat,\n addForIdAttributes,\n adjustContainerPosition,\n adjustContainerRightEdges,\n setTranslation3dPosition,\n getWebkitTraslationMatrix,\n closePopover,\n detectChanges,\n triggerItemAction,\n getDatasourceFromExpr,\n extractCurrentItemExpr,\n findRootContainer,\n VALIDATOR,\n transformFileURI,\n appendScriptToHead,\n getAppSetting,\n setListClass,\n findParent,\n getNavClass,\n getSheetPositionClass\n} from './utils/utils';\nexport {\n FIRST_TIME_WATCH,\n isFirstTimeChange,\n debounce,\n muteWatchers,\n unMuteWatchers,\n $watch,\n $unwatch,\n setNgZone,\n setAppRef,\n isChangeFromWatch,\n resetChangeFromWatch,\n $invokeWatchers,\n $appDigest\n} from './utils/watcher';\nexport * from './utils/id-generator';\nexport * from './types/types';\nexport { Viewport, ViewportEvent } from './services/viewport.service';\nexport * from './services/constant.service';\nexport * from './services/utils.service';\nexport * from './services/field-type.service';\nexport * from './services/field-widget.service';\nexport * from './services/script-loader.service';\nexport * from './services/user-custom-pipe-manager.service';\nexport * from './services/custom-icons-loader.service';\nexport { StatePersistence } from './services/state-persistence.service';\nexport { PaginationService } from './services/pagination.service';\nexport * from './core.module';\nexport * from './utils/wm-project-properties';\nexport * from './utils/lru-cache';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["$RAF","noop","detectChanges","isObject","_replace","_noop","debounce"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../projects/core/src/enums/enums.ts","../../../projects/core/src/utils/build-utils.ts","../../../projects/core/src/constants/currency-constants.ts","../../../projects/core/src/utils/dom.ts","../../../projects/core/src/utils/wm-project-properties.ts","../../../projects/core/src/utils/id-generator.ts","../../../projects/core/src/utils/expression-parser.ts","../../../projects/core/src/utils/watcher.ts","../../../projects/core/src/types/types.ts","../../../projects/core/src/utils/utils.ts","../../../projects/core/src/utils/event-notifier.ts","../../../projects/core/src/services/viewport.service.ts","../../../projects/core/src/services/constant.service.ts","../../../projects/core/src/services/utils.service.ts","../../../projects/core/src/services/field-type.service.ts","../../../projects/core/src/services/field-widget.service.ts","../../../projects/core/src/services/script-loader.service.ts","../../../projects/core/src/services/user-custom-pipe-manager.service.ts","../../../projects/core/src/services/custom-icons-loader.service.ts","../../../projects/core/src/services/state-persistence.service.ts","../../../projects/core/src/services/pagination.service.ts","../../../projects/core/src/core.module.ts","../../../projects/core/src/utils/lru-cache.ts","../../../projects/core/src/public_api.ts","../../../projects/core/src/index.ts"],"sourcesContent":["export enum FormWidgetType {\n AUTOCOMPLETE = 'autocomplete',\n CHECKBOX = 'checkbox',\n CHECKBOXSET = 'checkboxset',\n CHIPS = 'chips',\n COLORPICKER = 'colorpicker',\n CURRENCY = 'currency',\n CUSTOMWIDGET = 'custom-widget',\n DATE = 'date',\n DATETIME = 'datetime',\n NUMBER = 'number',\n PASSWORD = 'password',\n RADIOSET = 'radioset',\n RATING = 'rating',\n RICHTEXT = 'richtext',\n SELECT = 'select',\n TOGGLE = 'toggle',\n SLIDER = 'slider',\n SWITCH = 'switch',\n TEXT = 'text',\n TEXTAREA = 'textarea',\n TIME = 'time',\n TIMESTAMP = 'timestamp',\n TYPEAHEAD = 'typeahead',\n UPLOAD = 'upload'\n}\n\nexport enum DataType {\n INTEGER = 'integer',\n BIG_INTEGER = 'big_integer',\n SHORT = 'short',\n FLOAT = 'float',\n BIG_DECIMAL = 'big_decimal',\n DOUBLE = 'double',\n LONG = 'long',\n BYTE = 'byte',\n STRING = 'string',\n CHARACTER = 'character',\n TEXT = 'text',\n DATE = 'date',\n TIME = 'time',\n TIMESTAMP = 'timestamp',\n DATETIME = 'datetime',\n LOCALDATETIME = 'localdatetime',\n BOOLEAN = 'boolean',\n LIST = 'list',\n CLOB = 'clob',\n BLOB = 'blob'\n}\n\nexport enum MatchMode {\n BETWEEN = 'between',\n GREATER = 'greaterthanequal',\n LESSER = 'lessthanequal',\n NULL = 'null',\n EMPTY = 'empty',\n NULLOREMPTY = 'nullorempty',\n EQUALS = 'exact'\n}\n\nexport enum DEFAULT_FORMATS {\n DATE = 'yyyy-MM-dd',\n TIME = 'HH:mm:ss',\n TIMESTAMP = 'timestamp',\n DATETIME = 'yyyy-MM-ddTHH:mm:ss',\n LOCALDATETIME = 'yyyy-MM-ddTHH:mm:ss',\n DATETIME_ORACLE = 'yyyy-MM-dd HH:mm:ss',\n DATE_TIME = 'yyyy-MM-dd HH:mm:ss'\n}\n","import {Attribute, Element} from '@angular/compiler';\nimport {FormWidgetType} from '../enums/enums';\nimport {includes, isArray, startsWith} from \"lodash-es\";\n\n// For html upload widget, add events on input tag\nconst getUploadEventTmpl = (attrs, counter?, fieldName?) => {\n let eventTmpl = '';\n attrs.forEach((val, key) => {\n if (key && key.endsWith('.event')) {\n const eventName = key.split('.')[0];\n const counterTl = counter ? `${counter}.` : '';\n eventTmpl = ` ${eventTmpl} (${eventName})=\"${counterTl}triggerUploadEvent($event, '${eventName}', '${fieldName}', row)\" `;\n }\n });\n return eventTmpl;\n};\n\n// Method to get the form widget template\nexport const getFormWidgetTemplate = (widgetType: string, innerTmpl: string, attrs?: Map<string, string>, options: any = {}) => {\n let tmpl;\n const updateOn = attrs.get('updateon');\n const updateOnTmpl = updateOn ? `updateon=\"${updateOn}\"` : '';\n const showineditmode = attrs.get('showineditmode') || attrs.get('showineditmode.bind') || true;\n const showTmpl: string = showineditmode == 'false'? `show=\"${showineditmode}\"`: `show.bind=\"${showineditmode}\"`;\n switch (widgetType) {\n case FormWidgetType.AUTOCOMPLETE:\n case FormWidgetType.TYPEAHEAD:\n tmpl = `<div wmSearch type=\"autocomplete\" debouncetime=\"${attrs.get('debouncetime')}\" ${innerTmpl} ${showTmpl}></div>`;\n break;\n case FormWidgetType.CHECKBOX:\n tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required')==='true' ? 'required=true' : ''} ${showTmpl}></div>`;\n break;\n case FormWidgetType.CHECKBOXSET:\n tmpl = `<ul role=\"group\" wmCheckboxset ${innerTmpl} ${attrs.get('required')==='true' ? 'required=true' : ''} ${showTmpl}></ul>`;\n break;\n case FormWidgetType.CHIPS:\n tmpl = `<ul wmChips debouncetime=\"${attrs.get('debouncetime')}\" ${innerTmpl} ${showTmpl}></ul>`;\n break;\n case FormWidgetType.COLORPICKER:\n tmpl = `<div wmColorPicker ${attrs.get('required')==='true' ? 'required=true' : ''} ${innerTmpl} ${showTmpl}></div>`;\n break;\n case FormWidgetType.CURRENCY:\n tmpl = `<div wmCurrency ${attrs.get('required')==='true' ? 'required=true' : ''} ${updateOnTmpl} ${innerTmpl} ${showTmpl}></div>`;\n break;\n case FormWidgetType.CUSTOMWIDGET:\n tmpl = `<div wmWidgetContainer customWidgetContainer ${attrs.get('required')==='true' ? 'required=true' : ''} ${updateOnTmpl} ${innerTmpl} ${showTmpl}></div>`;\n break;\n case FormWidgetType.DATE:\n tmpl = `<div wmDate ${attrs.get('required')==='true' ? 'required=true' : ''} dataentrymode=\"${attrs.get('dataentrymode')}\" ${innerTmpl} ${showTmpl}></div>`;\n break;\n case FormWidgetType.DATETIME:\n tmpl = `<div wmDateTime ${attrs.get('required')==='true' ? 'required=true' : ''} dataentrymode=\"${attrs.get('dataentrymode')}\" ${innerTmpl} ${showTmpl}></div>`;\n break;\n case FormWidgetType.NUMBER:\n tmpl = `<div wmNumber ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type=\"number\" ${updateOnTmpl} ${showTmpl}></div>`;\n break;\n case FormWidgetType.PASSWORD:\n tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type=\"password\" ${updateOnTmpl} ${showTmpl}></wm-input>`;\n break;\n case FormWidgetType.RADIOSET:\n tmpl = `<ul role=\"radiogroup\" wmRadioset ${innerTmpl} ${showTmpl}></ul>`;\n break;\n case FormWidgetType.RATING:\n tmpl = `<div wmRating ${innerTmpl} ${showTmpl}></div>`;\n break;\n case FormWidgetType.RICHTEXT:\n tmpl = `<div wmRichTextEditor role=\"textbox\" ${innerTmpl} ${showTmpl}></div>`;\n break;\n case FormWidgetType.SELECT:\n tmpl = `<wm-select ${attrs.get('required')==='true' ? 'required=true' : ''} ${innerTmpl} ${showTmpl}></wm-select>`;\n break;\n case FormWidgetType.TOGGLE:\n tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type=\"toggle\" ${showTmpl}></div>`;\n break;\n case FormWidgetType.SLIDER:\n tmpl = `<div wmSlider ${innerTmpl} ${showTmpl}></div>`;\n break;\n case FormWidgetType.SWITCH:\n tmpl = `<div wmSwitch ${innerTmpl} ${showTmpl}></div>`;\n break;\n case FormWidgetType.TEXT:\n const inputType = options.inputType || 'inputtype';\n tmpl = `<wm-input ${innerTmpl} ${attrs.get('required')==='true' ? 'required=true' : ''} type=\"${attrs.get(inputType) || 'text'}\" ${updateOnTmpl} ${showTmpl}></wm-input>`;\n break;\n case FormWidgetType.TEXTAREA:\n tmpl = `<wm-textarea ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} ${updateOnTmpl} ${showTmpl}></wm-textarea>`;\n break;\n case FormWidgetType.TIME:\n tmpl = `<div wmTime ${attrs.get('required')==='true' ? 'required=true' : ''} dataentrymode=\"${attrs.get('dataentrymode')}\" ${innerTmpl} ${showTmpl}></div>`;\n break;\n case FormWidgetType.TIMESTAMP:\n tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode=\"${attrs.get('dataentrymode')}\" ${innerTmpl} ${showTmpl}></div>`;\n break;\n case FormWidgetType.UPLOAD:\n const counter = options.counter;\n const pCounter = options.pCounter;\n const uploadProps = options.uploadProps;\n const eventTmpl = getUploadEventTmpl(attrs, counter, uploadProps && uploadProps.name);\n if (uploadProps) {\n tmpl = `<form name=\"${uploadProps.formName}\" ${innerTmpl}>\n <input focus-target class=\"file-upload\" type=\"file\" name=\"${uploadProps.name}\" ${eventTmpl} ${showTmpl}/>\n </form>`;\n } else {\n tmpl = `<a class=\"form-control-static\" href=\"{{${counter}.href}}\" target=\"_blank\" *ngIf=\"${counter}.filetype === 'image' && ${counter}.href\">\n <img style=\"height:2em\" class=\"wi wi-file\" [src]=\"${counter}.href\"/></a>\n <a class=\"form-control-static\" target=\"_blank\" href=\"{{${counter}.href}}\" *ngIf=\"${counter}.filetype !== 'image' && ${counter}.href\">\n <i class=\"wi wi-file\"></i></a>\n <input ${innerTmpl} class=\"app-blob-upload\" [ngClass]=\"{'file-readonly': ${counter}.readonly}\" ${eventTmpl}\n [required]=\"${counter}.required\" type=\"file\" name=\"${attrs.get('key') || attrs.get('name')}_formWidget\" [readonly]=\"${counter}.readonly\"\n [class.hidden]=\"!${pCounter}.isUpdateMode\" [accept]=\"${counter}.permitted\" ${showTmpl}>`;\n }\n break;\n default:\n tmpl = `<wm-input ${innerTmpl} ${attrs.get('required')==='true' ? 'required=true' : ''} type=\"text\" ${updateOnTmpl} ${showTmpl}></wm-input>`;\n break;\n }\n return tmpl;\n};\n\nexport const getRequiredFormWidget = (widgetType): string => {\n switch (widgetType) {\n case FormWidgetType.AUTOCOMPLETE:\n case FormWidgetType.TYPEAHEAD:\n return 'wm-search';\n case FormWidgetType.CHIPS:\n return 'wm-chips';\n case FormWidgetType.COLORPICKER:\n return 'wm-colorpicker';\n case FormWidgetType.CURRENCY:\n return 'wm-currency';\n case FormWidgetType.CUSTOMWIDGET:\n return 'wm-custom-widget';\n case FormWidgetType.DATE:\n return 'wm-date';\n case FormWidgetType.DATETIME:\n return 'wm-datetime';\n case FormWidgetType.TIME:\n case FormWidgetType.TIMESTAMP:\n return 'wm-time';\n case FormWidgetType.RATING:\n return 'wm-rating';\n case FormWidgetType.RICHTEXT:\n return 'wm-richtexteditor';\n case FormWidgetType.SLIDER:\n return 'wm-slider';\n default:\n return 'wm-text';\n }\n};\n\n// This mehtod is used to add datasetboundexpr attribute for node\nconst addDatasetBoundExprAttribute = (childNode: Element, attr: Attribute, attrValue: string) => {\n attrValue = attrValue.replace('bind:', '');\n const datasetBoundAttribute = childNode.attrs.find( a => a.name === 'datasetboundexpr');\n if (attr.name === 'dataset' && !datasetBoundAttribute) {\n childNode.attrs.push(new Attribute('datasetboundexpr', attrValue, attr.sourceSpan, attr.keySpan, attr.valueSpan, undefined, undefined));\n }\n};\n\n\n/**\n * exp: User built bind expression\n * To check the custom pipe expressions.\n * If user use the custom pipe expression it will check in the exp. that \"custom\" string exist or not with (:) syntax.\n * Eg: custom:\n * custom :\n */\nexport const checkIsCustomPipeExpression = function(exp){\n let customRegEx = /(custom(\\s*:))/g;\n let matches = exp.match(customRegEx);\n return matches && matches.length;\n}\n\n\n// The bound value is replaced with {{item.fieldname}} here. This is needed by the liveList when compiling inner elements\nexport const updateTemplateAttrs = (rootNode: Element | Array<Element>, parentDataSet: string, widgetName: string, instance: string = '', referenceName: string = 'item') => {\n\n const sanitizedParentDataset = parentDataSet.replace(/([^a-zA-Z0-9.])/g, '\\\\$1');\n const regex = new RegExp('(' + sanitizedParentDataset + ')(\\\\[0\\\\])?(.data\\\\[\\\\$i\\\\])?(.content\\\\[\\\\$i\\\\])?(\\\\[\\\\$i\\\\])?', 'g');\n let currentItemRegEx;\n let currentItemWidgetsRegEx;\n let formWidgetsRegex;\n let nodes: Array<Element>;\n const widgetList = {\n 'wm-list': ['itemclass', 'disableitem', 'dataset']\n };\n\n if (widgetName) {\n currentItemRegEx = new RegExp(`(Widgets.${widgetName}.currentItem)\\\\b`, 'g');\n currentItemWidgetsRegEx = new RegExp(`(Widgets.${widgetName}.currentItemWidgets)\\\\b`, 'g');\n formWidgetsRegex = new RegExp(`(Widgets.(.*).(formWidgets|filterWidgets))\\\\b`, 'g');\n }\n\n if (!isArray(rootNode)) {\n // [WMS-16712],[WMS-16769],[WMS-16805] The markup of root node(table, list, carousel) need to be updated only for the widgets mentioned in widgetList map.\n nodes = widgetList[(rootNode as any).name] ? [rootNode as Element] : ((rootNode as any).children || []) as Array<Element>;\n } else {\n nodes = rootNode as Array<Element>;\n }\n\n nodes.forEach((childNode: Element) => {\n if (childNode.name) {\n const nodeName = childNode.name;\n const parentDataSetLengthRegex = new RegExp('bind:\\\\s*\\\\(*' + parentDataSet + '\\\\)*\\\\.length\\\\)*');\n childNode.attrs.forEach((attr) => {\n // trim the extra spaces in bindings\n let value = attr.value && attr.value.trim();\n if (startsWith(value, 'bind:')) {\n // The markup of root node(table, list, carousel) attributes conatains same dataset variable binding then those attributes need to be updated only for specific properties mentioned in widgetList map.\n if (!widgetList[nodeName] || (widgetList[nodeName] && widgetList[nodeName].indexOf(attr.name) > -1)) {\n // if the attribute value is \"bind:xxxxx.xxxx\", either the dataSet/scopeDataSet has to contain \"xxxx.xxxx\"\n // [WMS-17908]: if child widget contains bind expression as parendataset.length > 0 then dont replace it with item\n if (includes(value, parentDataSet) && value !== 'bind:' + parentDataSet && !parentDataSetLengthRegex.test(value)) {\n value = value.replace('bind:', '');\n addDatasetBoundExprAttribute(childNode, attr, value);\n value = value.replace(regex, referenceName);\n value = 'bind:' + value;\n // Check is this custom bind expression and currentWidgetItem regex\n if(checkIsCustomPipeExpression(value) && currentItemRegEx){\n // Adding the currentItem as last argument for the expression.\n // For the custom pipes(expresion), it will send the currentItem as context.\n value += ':'+ currentItemRegEx.exec(currentItemRegEx.source)[0];\n }\n }\n }\n // Replace item if widget property is bound to livelist currentItem\n if (currentItemRegEx && currentItemRegEx.test(value)) {\n // Change value from 'bind:Widgets.formName.formWidgets.listName.currentItem' to 'bind:Widgets.listName.currentItem'\n if (value.includes('.formWidgets') || value.includes('.filterWidgets')) {\n value = value.replace(formWidgetsRegex, 'Widgets');\n }\n addDatasetBoundExprAttribute(childNode, attr, value);\n value = value.replace(currentItemRegEx, referenceName);\n }\n if (currentItemWidgetsRegEx && currentItemWidgetsRegEx.test(value)) {\n value = value.replace(currentItemWidgetsRegEx, `${instance}currentItemWidgets`);\n }\n\n attr.value = value;\n }\n });\n updateTemplateAttrs(childNode.children as Array<Element>, parentDataSet, widgetName, instance, referenceName);\n }\n });\n};\n\n// If formControlName attribute is present, dont add the ngModel\nexport const getNgModelAttr = attrs => {\n if (attrs.has('formControlName') || attrs.has('formControlName.bind')) {\n return '';\n }\n return 'ngModel';\n};\n\nconst rowActionAttrs = new Map(\n [\n ['display-name', 'caption'],\n ['display-name.bind', 'caption.bind'],\n ['title', 'hint'],\n ['title.bind', 'hint.bind'],\n ['show', 'show'],\n ['show.bind', 'show.bind'],\n ['disabled', 'disabled'],\n ['disabled.bind', 'disabled.bind'],\n ['hyperlink', 'hyperlink'],\n ['hyperlink.bind', 'hyperlink.bind'],\n ['target', 'target'],\n ['conditionalclass.bind', 'conditionalclass.bind'],\n ['conditionalstyle.bind', 'conditionalstyle.bind']\n ]\n);\n\nexport const getRowActionAttrs = attrs => {\n let tmpl = '';\n attrs.forEach((val, key) => {\n const newAttr = rowActionAttrs.get(key);\n if (newAttr) {\n tmpl += `${newAttr}=\"${val}\" `;\n }\n });\n return tmpl;\n};\n","export const CURRENCY_INFO = {\n 'USD': {\n 'symbol': '$',\n 'name': 'US Dollar',\n 'symbol_native': '$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'USD',\n 'name_plural': 'US dollars'\n },\n 'CAD': {\n 'symbol': 'CA$',\n 'name': 'Canadian Dollar',\n 'symbol_native': '$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'CAD',\n 'name_plural': 'Canadian dollars'\n },\n 'EUR': {\n 'symbol': '€',\n 'name': 'Euro',\n 'symbol_native': '€',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'EUR',\n 'name_plural': 'euros'\n },\n 'AED': {\n 'symbol': 'AED',\n 'name': 'United Arab Emirates Dirham',\n 'symbol_native': 'د.إ.‏',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'AED',\n 'name_plural': 'UAE dirhams'\n },\n 'AFN': {\n 'symbol': 'Af',\n 'name': 'Afghan Afghani',\n 'symbol_native': '؋',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'AFN',\n 'name_plural': 'Afghan Afghanis'\n },\n 'ALL': {\n 'symbol': 'ALL',\n 'name': 'Albanian Lek',\n 'symbol_native': 'Lek',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'ALL',\n 'name_plural': 'Albanian lekë'\n },\n 'AMD': {\n 'symbol': 'AMD',\n 'name': 'Armenian Dram',\n 'symbol_native': 'դր.',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'AMD',\n 'name_plural': 'Armenian drams'\n },\n 'ARS': {\n 'symbol': 'AR$',\n 'name': 'Argentine Peso',\n 'symbol_native': '$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'ARS',\n 'name_plural': 'Argentine pesos'\n },\n 'AUD': {\n 'symbol': 'AU$',\n 'name': 'Australian Dollar',\n 'symbol_native': '$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'AUD',\n 'name_plural': 'Australian dollars'\n },\n 'AZN': {\n 'symbol': 'man.',\n 'name': 'Azerbaijani Manat',\n 'symbol_native': 'ман.',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'AZN',\n 'name_plural': 'Azerbaijani manats'\n },\n 'BAM': {\n 'symbol': 'KM',\n 'name': 'Bosnia-Herzegovina Convertible Mark',\n 'symbol_native': 'KM',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'BAM',\n 'name_plural': 'Bosnia-Herzegovina convertible marks'\n },\n 'BDT': {\n 'symbol': 'Tk',\n 'name': 'Bangladeshi Taka',\n 'symbol_native': '৳',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'BDT',\n 'name_plural': 'Bangladeshi takas'\n },\n 'BGN': {\n 'symbol': 'BGN',\n 'name': 'Bulgarian Lev',\n 'symbol_native': 'лв.',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'BGN',\n 'name_plural': 'Bulgarian leva'\n },\n 'BHD': {\n 'symbol': 'BD',\n 'name': 'Bahraini Dinar',\n 'symbol_native': 'د.ب.‏',\n 'decimal_digits': 3,\n 'rounding': 0,\n 'code': 'BHD',\n 'name_plural': 'Bahraini dinars'\n },\n 'BIF': {\n 'symbol': 'FBu',\n 'name': 'Burundian Franc',\n 'symbol_native': 'FBu',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'BIF',\n 'name_plural': 'Burundian francs'\n },\n 'BND': {\n 'symbol': 'BN$',\n 'name': 'Brunei Dollar',\n 'symbol_native': '$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'BND',\n 'name_plural': 'Brunei dollars'\n },\n 'BOB': {\n 'symbol': 'Bs',\n 'name': 'Bolivian Boliviano',\n 'symbol_native': 'Bs',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'BOB',\n 'name_plural': 'Bolivian bolivianos'\n },\n 'BRL': {\n 'symbol': 'R$',\n 'name': 'Brazilian Real',\n 'symbol_native': 'R$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'BRL',\n 'name_plural': 'Brazilian reals'\n },\n 'BWP': {\n 'symbol': 'BWP',\n 'name': 'Botswanan Pula',\n 'symbol_native': 'P',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'BWP',\n 'name_plural': 'Botswanan pulas'\n },\n 'BYR': {\n 'symbol': 'BYR',\n 'name': 'Belarusian Ruble',\n 'symbol_native': 'BYR',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'BYR',\n 'name_plural': 'Belarusian rubles'\n },\n 'BZD': {\n 'symbol': 'BZ$',\n 'name': 'Belize Dollar',\n 'symbol_native': '$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'BZD',\n 'name_plural': 'Belize dollars'\n },\n 'CDF': {\n 'symbol': 'CDF',\n 'name': 'Congolese Franc',\n 'symbol_native': 'FrCD',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'CDF',\n 'name_plural': 'Congolese francs'\n },\n 'CHF': {\n 'symbol': 'CHF',\n 'name': 'Swiss Franc',\n 'symbol_native': 'CHF',\n 'decimal_digits': 2,\n 'rounding': 0.05,\n 'code': 'CHF',\n 'name_plural': 'Swiss francs'\n },\n 'CLP': {\n 'symbol': 'CL$',\n 'name': 'Chilean Peso',\n 'symbol_native': '$',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'CLP',\n 'name_plural': 'Chilean pesos'\n },\n 'CNY': {\n 'symbol': 'CN¥',\n 'name': 'Chinese Yuan',\n 'symbol_native': 'CN¥',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'CNY',\n 'name_plural': 'Chinese yuan'\n },\n 'COP': {\n 'symbol': 'CO$',\n 'name': 'Colombian Peso',\n 'symbol_native': '$',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'COP',\n 'name_plural': 'Colombian pesos'\n },\n 'CRC': {\n 'symbol': '₡',\n 'name': 'Costa Rican Colón',\n 'symbol_native': '₡',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'CRC',\n 'name_plural': 'Costa Rican colóns'\n },\n 'CVE': {\n 'symbol': 'CV$',\n 'name': 'Cape Verdean Escudo',\n 'symbol_native': 'CV$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'CVE',\n 'name_plural': 'Cape Verdean escudos'\n },\n 'CZK': {\n 'symbol': 'Kč',\n 'name': 'Czech Republic Koruna',\n 'symbol_native': 'Kč',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'CZK',\n 'name_plural': 'Czech Republic korunas'\n },\n 'DJF': {\n 'symbol': 'Fdj',\n 'name': 'Djiboutian Franc',\n 'symbol_native': 'Fdj',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'DJF',\n 'name_plural': 'Djiboutian francs'\n },\n 'DKK': {\n 'symbol': 'Dkr',\n 'name': 'Danish Krone',\n 'symbol_native': 'kr',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'DKK',\n 'name_plural': 'Danish kroner'\n },\n 'DOP': {\n 'symbol': 'RD$',\n 'name': 'Dominican Peso',\n 'symbol_native': 'RD$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'DOP',\n 'name_plural': 'Dominican pesos'\n },\n 'DZD': {\n 'symbol': 'DA',\n 'name': 'Algerian Dinar',\n 'symbol_native': 'د.ج.‏',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'DZD',\n 'name_plural': 'Algerian dinars'\n },\n 'EEK': {\n 'symbol': 'Ekr',\n 'name': 'Estonian Kroon',\n 'symbol_native': 'kr',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'EEK',\n 'name_plural': 'Estonian kroons'\n },\n 'EGP': {\n 'symbol': 'EGP',\n 'name': 'Egyptian Pound',\n 'symbol_native': 'ج.م.‏',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'EGP',\n 'name_plural': 'Egyptian pounds'\n },\n 'ERN': {\n 'symbol': 'Nfk',\n 'name': 'Eritrean Nakfa',\n 'symbol_native': 'Nfk',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'ERN',\n 'name_plural': 'Eritrean nakfas'\n },\n 'ETB': {\n 'symbol': 'Br',\n 'name': 'Ethiopian Birr',\n 'symbol_native': 'Br',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'ETB',\n 'name_plural': 'Ethiopian birrs'\n },\n 'GBP': {\n 'symbol': '£',\n 'name': 'British Pound Sterling',\n 'symbol_native': '£',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'GBP',\n 'name_plural': 'British pounds sterling'\n },\n 'GEL': {\n 'symbol': 'GEL',\n 'name': 'Georgian Lari',\n 'symbol_native': 'GEL',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'GEL',\n 'name_plural': 'Georgian laris'\n },\n 'GHS': {\n 'symbol': 'GH₵',\n 'name': 'Ghanaian Cedi',\n 'symbol_native': 'GH₵',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'GHS',\n 'name_plural': 'Ghanaian cedis'\n },\n 'GNF': {\n 'symbol': 'FG',\n 'name': 'Guinean Franc',\n 'symbol_native': 'FG',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'GNF',\n 'name_plural': 'Guinean francs'\n },\n 'GTQ': {\n 'symbol': 'GTQ',\n 'name': 'Guatemalan Quetzal',\n 'symbol_native': 'Q',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'GTQ',\n 'name_plural': 'Guatemalan quetzals'\n },\n 'HKD': {\n 'symbol': 'HK$',\n 'name': 'Hong Kong Dollar',\n 'symbol_native': '$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'HKD',\n 'name_plural': 'Hong Kong dollars'\n },\n 'HNL': {\n 'symbol': 'HNL',\n 'name': 'Honduran Lempira',\n 'symbol_native': 'L',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'HNL',\n 'name_plural': 'Honduran lempiras'\n },\n 'HRK': {\n 'symbol': 'kn',\n 'name': 'Croatian Kuna',\n 'symbol_native': 'kn',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'HRK',\n 'name_plural': 'Croatian kunas'\n },\n 'HUF': {\n 'symbol': 'Ft',\n 'name': 'Hungarian Forint',\n 'symbol_native': 'Ft',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'HUF',\n 'name_plural': 'Hungarian forints'\n },\n 'IDR': {\n 'symbol': 'Rp',\n 'name': 'Indonesian Rupiah',\n 'symbol_native': 'Rp',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'IDR',\n 'name_plural': 'Indonesian rupiahs'\n },\n 'ILS': {\n 'symbol': '₪',\n 'name': 'Israeli New Sheqel',\n 'symbol_native': '₪',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'ILS',\n 'name_plural': 'Israeli new sheqels'\n },\n 'INR': {\n 'symbol': '₹',\n 'name': 'Indian Rupee',\n 'symbol_native': 'টকা',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'INR',\n 'name_plural': 'Indian rupees'\n },\n 'IQD': {\n 'symbol': 'IQD',\n 'name': 'Iraqi Dinar',\n 'symbol_native': 'د.ع.‏',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'IQD',\n 'name_plural': 'Iraqi dinars'\n },\n 'IRR': {\n 'symbol': 'IRR',\n 'name': 'Iranian Rial',\n 'symbol_native': '﷼',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'IRR',\n 'name_plural': 'Iranian rials'\n },\n 'ISK': {\n 'symbol': 'Ikr',\n 'name': 'Icelandic Króna',\n 'symbol_native': 'kr',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'ISK',\n 'name_plural': 'Icelandic krónur'\n },\n 'JMD': {\n 'symbol': 'J$',\n 'name': 'Jamaican Dollar',\n 'symbol_native': '$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'JMD',\n 'name_plural': 'Jamaican dollars'\n },\n 'JOD': {\n 'symbol': 'JD',\n 'name': 'Jordanian Dinar',\n 'symbol_native': 'د.أ.‏',\n 'decimal_digits': 3,\n 'rounding': 0,\n 'code': 'JOD',\n 'name_plural': 'Jordanian dinars'\n },\n 'JPY': {\n 'symbol': '¥',\n 'name': 'Japanese Yen',\n 'symbol_native': '¥',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'JPY',\n 'name_plural': 'Japanese yen'\n },\n 'KES': {\n 'symbol': 'Ksh',\n 'name': 'Kenyan Shilling',\n 'symbol_native': 'Ksh',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'KES',\n 'name_plural': 'Kenyan shillings'\n },\n 'KHR': {\n 'symbol': 'KHR',\n 'name': 'Cambodian Riel',\n 'symbol_native': '៛',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'KHR',\n 'name_plural': 'Cambodian riels'\n },\n 'KMF': {\n 'symbol': 'CF',\n 'name': 'Comorian Franc',\n 'symbol_native': 'FC',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'KMF',\n 'name_plural': 'Comorian francs'\n },\n 'KRW': {\n 'symbol': '₩',\n 'name': 'South Korean Won',\n 'symbol_native': '₩',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'KRW',\n 'name_plural': 'South Korean won'\n },\n 'KWD': {\n 'symbol': 'KD',\n 'name': 'Kuwaiti Dinar',\n 'symbol_native': 'د.ك.‏',\n 'decimal_digits': 3,\n 'rounding': 0,\n 'code': 'KWD',\n 'name_plural': 'Kuwaiti dinars'\n },\n 'KZT': {\n 'symbol': 'KZT',\n 'name': 'Kazakhstani Tenge',\n 'symbol_native': 'тңг.',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'KZT',\n 'name_plural': 'Kazakhstani tenges'\n },\n 'LBP': {\n 'symbol': 'LB£',\n 'name': 'Lebanese Pound',\n 'symbol_native': 'ل.ل.‏',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'LBP',\n 'name_plural': 'Lebanese pounds'\n },\n 'LKR': {\n 'symbol': 'SLRs',\n 'name': 'Sri Lankan Rupee',\n 'symbol_native': 'SL Re',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'LKR',\n 'name_plural': 'Sri Lankan rupees'\n },\n 'LTL': {\n 'symbol': 'Lt',\n 'name': 'Lithuanian Litas',\n 'symbol_native': 'Lt',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'LTL',\n 'name_plural': 'Lithuanian litai'\n },\n 'LVL': {\n 'symbol': 'Ls',\n 'name': 'Latvian Lats',\n 'symbol_native': 'Ls',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'LVL',\n 'name_plural': 'Latvian lati'\n },\n 'LYD': {\n 'symbol': 'LD',\n 'name': 'Libyan Dinar',\n 'symbol_native': 'د.ل.‏',\n 'decimal_digits': 3,\n 'rounding': 0,\n 'code': 'LYD',\n 'name_plural': 'Libyan dinars'\n },\n 'MAD': {\n 'symbol': 'MAD',\n 'name': 'Moroccan Dirham',\n 'symbol_native': 'د.م.‏',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'MAD',\n 'name_plural': 'Moroccan dirhams'\n },\n 'MDL': {\n 'symbol': 'MDL',\n 'name': 'Moldovan Leu',\n 'symbol_native': 'MDL',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'MDL',\n 'name_plural': 'Moldovan lei'\n },\n 'MGA': {\n 'symbol': 'MGA',\n 'name': 'Malagasy Ariary',\n 'symbol_native': 'MGA',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'MGA',\n 'name_plural': 'Malagasy Ariaries'\n },\n 'MKD': {\n 'symbol': 'MKD',\n 'name': 'Macedonian Denar',\n 'symbol_native': 'MKD',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'MKD',\n 'name_plural': 'Macedonian denari'\n },\n 'MMK': {\n 'symbol': 'MMK',\n 'name': 'Myanma Kyat',\n 'symbol_native': 'K',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'MMK',\n 'name_plural': 'Myanma kyats'\n },\n 'MOP': {\n 'symbol': 'MOP$',\n 'name': 'Macanese Pataca',\n 'symbol_native': 'MOP$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'MOP',\n 'name_plural': 'Macanese patacas'\n },\n 'MUR': {\n 'symbol': 'MURs',\n 'name': 'Mauritian Rupee',\n 'symbol_native': 'MURs',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'MUR',\n 'name_plural': 'Mauritian rupees'\n },\n 'MXN': {\n 'symbol': 'MX$',\n 'name': 'Mexican Peso',\n 'symbol_native': '$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'MXN',\n 'name_plural': 'Mexican pesos'\n },\n 'MYR': {\n 'symbol': 'RM',\n 'name': 'Malaysian Ringgit',\n 'symbol_native': 'RM',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'MYR',\n 'name_plural': 'Malaysian ringgits'\n },\n 'MZN': {\n 'symbol': 'MTn',\n 'name': 'Mozambican Metical',\n 'symbol_native': 'MTn',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'MZN',\n 'name_plural': 'Mozambican meticals'\n },\n 'NAD': {\n 'symbol': 'N$',\n 'name': 'Namibian Dollar',\n 'symbol_native': 'N$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'NAD',\n 'name_plural': 'Namibian dollars'\n },\n 'NGN': {\n 'symbol': '₦',\n 'name': 'Nigerian Naira',\n 'symbol_native': '₦',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'NGN',\n 'name_plural': 'Nigerian nairas'\n },\n 'NIO': {\n 'symbol': 'C$',\n 'name': 'Nicaraguan Córdoba',\n 'symbol_native': 'C$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'NIO',\n 'name_plural': 'Nicaraguan córdobas'\n },\n 'NOK': {\n 'symbol': 'Nkr',\n 'name': 'Norwegian Krone',\n 'symbol_native': 'kr',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'NOK',\n 'name_plural': 'Norwegian kroner'\n },\n 'NPR': {\n 'symbol': 'NPRs',\n 'name': 'Nepalese Rupee',\n 'symbol_native': 'नेरू',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'NPR',\n 'name_plural': 'Nepalese rupees'\n },\n 'NZD': {\n 'symbol': 'NZ$',\n 'name': 'New Zealand Dollar',\n 'symbol_native': '$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'NZD',\n 'name_plural': 'New Zealand dollars'\n },\n 'OMR': {\n 'symbol': 'OMR',\n 'name': 'Omani Rial',\n 'symbol_native': 'ر.ع.‏',\n 'decimal_digits': 3,\n 'rounding': 0,\n 'code': 'OMR',\n 'name_plural': 'Omani rials'\n },\n 'PAB': {\n 'symbol': 'B/.',\n 'name': 'Panamanian Balboa',\n 'symbol_native': 'B/.',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'PAB',\n 'name_plural': 'Panamanian balboas'\n },\n 'PEN': {\n 'symbol': 'S/.',\n 'name': 'Peruvian Nuevo Sol',\n 'symbol_native': 'S/.',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'PEN',\n 'name_plural': 'Peruvian nuevos soles'\n },\n 'PHP': {\n 'symbol': '₱',\n 'name': 'Philippine Peso',\n 'symbol_native': '₱',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'PHP',\n 'name_plural': 'Philippine pesos'\n },\n 'PKR': {\n 'symbol': 'PKRs',\n 'name': 'Pakistani Rupee',\n 'symbol_native': '₨',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'PKR',\n 'name_plural': 'Pakistani rupees'\n },\n 'PLN': {\n 'symbol': 'zł',\n 'name': 'Polish Zloty',\n 'symbol_native': 'zł',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'PLN',\n 'name_plural': 'Polish zlotys'\n },\n 'PYG': {\n 'symbol': '₲',\n 'name': 'Paraguayan Guarani',\n 'symbol_native': '₲',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'PYG',\n 'name_plural': 'Paraguayan guaranis'\n },\n 'QAR': {\n 'symbol': 'QR',\n 'name': 'Qatari Rial',\n 'symbol_native': 'ر.ق.‏',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'QAR',\n 'name_plural': 'Qatari rials'\n },\n 'RON': {\n 'symbol': 'RON',\n 'name': 'Romanian Leu',\n 'symbol_native': 'RON',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'RON',\n 'name_plural': 'Romanian lei'\n },\n 'RSD': {\n 'symbol': 'din.',\n 'name': 'Serbian Dinar',\n 'symbol_native': 'дин.',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'RSD',\n 'name_plural': 'Serbian dinars'\n },\n 'RUB': {\n 'symbol': 'RUB',\n 'name': 'Russian Ruble',\n 'symbol_native': 'руб.',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'RUB',\n 'name_plural': 'Russian rubles'\n },\n 'RWF': {\n 'symbol': 'RWF',\n 'name': 'Rwandan Franc',\n 'symbol_native': 'FR',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'RWF',\n 'name_plural': 'Rwandan francs'\n },\n 'SAR': {\n 'symbol': 'SR',\n 'name': 'Saudi Riyal',\n 'symbol_native': 'ر.س.‏',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'SAR',\n 'name_plural': 'Saudi riyals'\n },\n 'SDG': {\n 'symbol': 'SDG',\n 'name': 'Sudanese Pound',\n 'symbol_native': 'SDG',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'SDG',\n 'name_plural': 'Sudanese pounds'\n },\n 'SEK': {\n 'symbol': 'Skr',\n 'name': 'Swedish Krona',\n 'symbol_native': 'kr',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'SEK',\n 'name_plural': 'Swedish kronor'\n },\n 'SGD': {\n 'symbol': 'S$',\n 'name': 'Singapore Dollar',\n 'symbol_native': '$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'SGD',\n 'name_plural': 'Singapore dollars'\n },\n 'SOS': {\n 'symbol': 'Ssh',\n 'name': 'Somali Shilling',\n 'symbol_native': 'Ssh',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'SOS',\n 'name_plural': 'Somali shillings'\n },\n 'SYP': {\n 'symbol': 'SY£',\n 'name': 'Syrian Pound',\n 'symbol_native': 'ل.س.‏',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'SYP',\n 'name_plural': 'Syrian pounds'\n },\n 'THB': {\n 'symbol': '฿',\n 'name': 'Thai Baht',\n 'symbol_native': '฿',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'THB',\n 'name_plural': 'Thai baht'\n },\n 'TND': {\n 'symbol': 'DT',\n 'name': 'Tunisian Dinar',\n 'symbol_native': 'د.ت.‏',\n 'decimal_digits': 3,\n 'rounding': 0,\n 'code': 'TND',\n 'name_plural': 'Tunisian dinars'\n },\n 'TOP': {\n 'symbol': 'T$',\n 'name': 'Tongan Paʻanga',\n 'symbol_native': 'T$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'TOP',\n 'name_plural': 'Tongan paʻanga'\n },\n 'TRY': {\n 'symbol': 'TL',\n 'name': 'Turkish Lira',\n 'symbol_native': 'TL',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'TRY',\n 'name_plural': 'Turkish Lira'\n },\n 'TTD': {\n 'symbol': 'TT$',\n 'name': 'Trinidad and Tobago Dollar',\n 'symbol_native': '$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'TTD',\n 'name_plural': 'Trinidad and Tobago dollars'\n },\n 'TWD': {\n 'symbol': 'NT$',\n 'name': 'New Taiwan Dollar',\n 'symbol_native': 'NT$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'TWD',\n 'name_plural': 'New Taiwan dollars'\n },\n 'TZS': {\n 'symbol': 'TSh',\n 'name': 'Tanzanian Shilling',\n 'symbol_native': 'TSh',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'TZS',\n 'name_plural': 'Tanzanian shillings'\n },\n 'UAH': {\n 'symbol': '₴',\n 'name': 'Ukrainian Hryvnia',\n 'symbol_native': '₴',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'UAH',\n 'name_plural': 'Ukrainian hryvnias'\n },\n 'UGX': {\n 'symbol': 'USh',\n 'name': 'Ugandan Shilling',\n 'symbol_native': 'USh',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'UGX',\n 'name_plural': 'Ugandan shillings'\n },\n 'UYU': {\n 'symbol': '$U',\n 'name': 'Uruguayan Peso',\n 'symbol_native': '$',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'UYU',\n 'name_plural': 'Uruguayan pesos'\n },\n 'UZS': {\n 'symbol': 'UZS',\n 'name': 'Uzbekistan Som',\n 'symbol_native': 'UZS',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'UZS',\n 'name_plural': 'Uzbekistan som'\n },\n 'VEF': {\n 'symbol': 'Bs.F.',\n 'name': 'Venezuelan Bolívar',\n 'symbol_native': 'Bs.F.',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'VEF',\n 'name_plural': 'Venezuelan bolívars'\n },\n 'VND': {\n 'symbol': '₫',\n 'name': 'Vietnamese Dong',\n 'symbol_native': '₫',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'VND',\n 'name_plural': 'Vietnamese dong'\n },\n 'XAF': {\n 'symbol': 'FCFA',\n 'name': 'CFA Franc BEAC',\n 'symbol_native': 'FCFA',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'XAF',\n 'name_plural': 'CFA francs BEAC'\n },\n 'XOF': {\n 'symbol': 'CFA',\n 'name': 'CFA Franc BCEAO',\n 'symbol_native': 'CFA',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'XOF',\n 'name_plural': 'CFA francs BCEAO'\n },\n 'YER': {\n 'symbol': 'YR',\n 'name': 'Yemeni Rial',\n 'symbol_native': 'ر.ي.‏',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'YER',\n 'name_plural': 'Yemeni rials'\n },\n 'ZAR': {\n 'symbol': 'R',\n 'name': 'South African Rand',\n 'symbol_native': 'R',\n 'decimal_digits': 2,\n 'rounding': 0,\n 'code': 'ZAR',\n 'name_plural': 'South African rand'\n },\n 'ZMK': {\n 'symbol': 'ZK',\n 'name': 'Zambian Kwacha',\n 'symbol_native': 'ZK',\n 'decimal_digits': 0,\n 'rounding': 0,\n 'code': 'ZMK',\n 'name_plural': 'Zambian kwachas'\n }\n};","const $RAF = window.requestAnimationFrame;\nconst $RAFQueue = [];\n\nconst invokeLater = fn => {\n if (!$RAFQueue.length) {\n $RAF(() => {\n $RAFQueue.forEach(f => f());\n $RAFQueue.length = 0;\n });\n }\n $RAFQueue.push(fn);\n};\n\nexport const appendNode = (node: HTMLElement, parent: HTMLElement, sync?: boolean) => {\n const task = () => parent.appendChild(node);\n sync ? task() : invokeLater(task);\n};\n\nexport const insertBefore = (node: HTMLElement, ref: HTMLElement, sync?: boolean) => {\n const task = () => ref.parentNode.insertBefore(node, ref);\n sync ? task() : invokeLater(task);\n};\n\nexport const insertAfter = (node: HTMLElement, ref: HTMLElement, sync?: boolean) => {\n const task = () => ref.parentNode.insertBefore(node, ref.nextSibling);\n sync ? task() : invokeLater(task);\n};\n\nexport const removeNode = (node: HTMLElement, sync?: boolean) => {\n const task = () => node.remove();\n sync ? task() : invokeLater(task);\n};\n\nexport const removeClass = (node: HTMLElement, ov: string, sync?: boolean) => {\n ov = ov || '';\n const task = c => node.classList.remove(c);\n ov.split(' ').forEach(c => {\n if (c.length) {\n sync ? task(c) : invokeLater(() => task(c));\n }\n });\n};\n\nexport const addClass = (node: HTMLElement, nv: string, sync?: boolean) => {\n nv = nv || '';\n const task = c => node.classList.add(c);\n nv.split(' ').forEach(c => {\n if (c.length) {\n sync ? task(c) : invokeLater(() => task(c));\n }\n });\n};\n\nexport const switchClass = (node: HTMLElement, toAdd: string = '', toRemove: string = '', sync?: boolean) => {\n // After NG15 upgrade ng-invalid class is added even the field is valid, so we are removing the ng-invalid manually\n const isNgUntouchedValid = node.classList.contains('ng-untouched') && node.classList.contains('ng-valid');\n if(isNgUntouchedValid && toAdd.includes('ng-untouched') && toAdd.includes('ng-invalid')) {\n toAdd = toAdd.replace('ng-invalid', '');\n }\n removeClass(node, toRemove, sync);\n addClass(node, toAdd, sync);\n};\n\nexport const toggleClass = (node: HTMLElement, cls: string, condition: boolean, sync?: boolean) => {\n if (condition) {\n addClass(node, cls, sync);\n } else {\n removeClass(node, cls, sync);\n }\n};\n\nexport const setCSS = (node: HTMLElement, cssName: string, val?: string | number, sync?: boolean) => {\n const task = () => node.style[cssName] = val;\n sync ? task() : invokeLater(task);\n};\n\nexport const setCSSFromObj = (node: HTMLElement, cssObj: any, sync?: boolean) => {\n const keys = Object.keys(cssObj || {});\n keys.forEach(key => setCSS(node, key, cssObj[key], sync));\n};\n\nexport const setProperty = (node: HTMLElement, propName: string, val: any, sync?: boolean) => {\n const task = () => node[propName] = val;\n sync ? task() : invokeLater(task);\n};\n\nexport const setAttr = (node: HTMLElement, attrName: string, val: any, sync?: boolean) => {\n const task = () => node instanceof Element && node.setAttribute(attrName, val);\n sync ? task() : invokeLater(task);\n};\n\nexport const setHtml = (node: HTMLElement, html: string, sync?: boolean) => {\n const task = () => node.innerHTML = html;\n sync ? task() : invokeLater(task);\n};\n\nexport const removeAttr = (node: HTMLElement, attrName: string, sync?: boolean) => {\n const task = () => node.removeAttribute(attrName);\n sync ? task() : invokeLater(task);\n};\n\nexport const createElement = (nodeType: string, attrs: any, sync?: boolean): HTMLElement => {\n const node = document.createElement(nodeType);\n\n if (attrs) {\n Object.keys(attrs).forEach(attrName => {\n setAttr(node, attrName, attrs[attrName], sync);\n });\n }\n return node;\n};\n\n// for width and height if a numeric value is specified return in px\n// else return the same value\nexport const toDimension = (v: string | number) => {\n // @ts-ignore\n if (v == +v) {\n return `${v}px`;\n }\n return v;\n};\n","const properties: any = {};\n\ndeclare const window;\n\nexport function getWmProjectProperties() {\n if (window._WM_APP_PROPERTIES) {\n return window._WM_APP_PROPERTIES;\n } else {\n return properties;\n }\n}\n\nexport function setWmProjectProperties(props: any) {\n Object.setPrototypeOf(properties, props);\n}\n","function* idGenerator(token) {\n let id = 1;\n while (1) {\n yield `${token}${id++}`;\n }\n}\n\nexport class IDGenerator {\n private generator: Iterator<any>;\n\n constructor(key: string) {\n this.generator = idGenerator(key);\n }\n\n public nextUid(): string {\n return this.generator.next().value;\n }\n}\n","import {\n Binary,\n BindingPipe,\n Call,\n Chain,\n Conditional,\n ImplicitReceiver,\n KeyedRead,\n Lexer,\n LiteralArray,\n LiteralMap,\n LiteralPrimitive,\n Parser,\n PrefixNot,\n PropertyRead,\n PropertyWrite,\n Unary\n} from '@angular/compiler';\nimport {get} from \"lodash-es\";\n\nconst isDef = v => v !== void 0;\nconst ifDef = (v, d) => v === void 0 ? d : v;\nconst plus = (a, b) => void 0 === a ? b : void 0 === b ? a : a + b;\nconst minus = (a, b) => ifDef(a, 0) - ifDef(b, 0);\nconst noop = () => {};\n\nexport type ParseExprResult = (data?: any, locals?: any) => any;\n\nconst exprFnCache = new Map();\nconst eventFnCache = new Map();\nconst purePipes = new Map();\n\nconst primitiveEquals = (a, b) => {\n if (typeof a === 'object' || typeof b === 'object') {\n return false;\n }\n if (a !== a && b !== b) { // NaN case\n return true;\n }\n return a === b;\n};\n\nconst detectChanges = (ov, nv) => {\n const len = nv.length;\n let hasChange = len > 10;\n switch (len) {\n case 10:\n hasChange = !primitiveEquals(ov[9], nv[9]);\n if (hasChange) {\n break;\n }\n case 9:\n hasChange = !primitiveEquals(ov[8], nv[8]);\n if (hasChange) {\n break;\n }\n case 8:\n hasChange = !primitiveEquals(ov[7], nv[7]);\n if (hasChange) {\n break;\n }\n case 7:\n hasChange = !primitiveEquals(ov[6], nv[6]);\n if (hasChange) {\n break;\n }\n case 6:\n hasChange = !primitiveEquals(ov[5], nv[5]);\n if (hasChange) {\n break;\n }\n case 5:\n hasChange = !primitiveEquals(ov[4], nv[4]);\n if (hasChange) {\n break;\n }\n case 4:\n hasChange = !primitiveEquals(ov[3], nv[3]);\n if (hasChange) {\n break;\n }\n case 3:\n hasChange = !primitiveEquals(ov[2], nv[2]);\n if (hasChange) {\n break;\n }\n case 2:\n hasChange = !primitiveEquals(ov[1], nv[1]);\n if (hasChange) {\n break;\n }\n case 1:\n hasChange = !primitiveEquals(ov[0], nv[0]);\n if (hasChange) {\n break;\n }\n }\n return hasChange;\n};\n\nconst getPurePipeVal = (pipe, cache, identifier, ...args) => {\n let lastResult = cache.get(identifier);\n let result;\n if (lastResult) {\n const isModified = detectChanges(lastResult.args, args);\n if (!isModified) {\n return lastResult.result;\n }\n }\n result = pipe.transform(...args);\n lastResult = {args, result};\n cache.set(identifier, lastResult);\n return result;\n};\n\nconst STR_ESCAPE_REGEX = /[^ a-zA-Z0-9]/g;\n\nconst stringEscapeFn = str => {\n return '\\\\u' + ('0000' + str.charCodeAt(0).toString(16)).slice(-4);\n};\n\nclass ASTCompiler {\n ast; // ast to be compiled\n declarations; // variable names\n stmts; // function body statements\n pipes; // used pipes\n vIdx; // variable name index\n cAst; // current AST node in the process\n cStmts;\n pipeNameVsIsPureMap;\n exprType: ExpressionType;\n\n constructor(ast, exprType, pipeNameVsIsPureMap?) {\n this.ast = ast;\n this.declarations = [];\n this.stmts = [];\n this.pipes = [];\n this.vIdx = 0;\n this.exprType = exprType;\n this.pipeNameVsIsPureMap = pipeNameVsIsPureMap;\n }\n\n createVar() {\n const v = `v${this.vIdx++}`;\n this.declarations.push(v);\n return v;\n }\n\n processImplicitReceiver() {\n return 'ctx';\n }\n\n processLiteralPrimitive() {\n const ast = this.cAst;\n return typeof (ast.value) === 'string' ? `\"${ast.value.replace(/\"/g, '\\\"').replace(STR_ESCAPE_REGEX, stringEscapeFn)}\"` : ast.value;\n }\n\n processLiteralArray() {\n const ast = this.cAst;\n const stmts = this.cStmts;\n const v = this.createVar();\n const s = [];\n for (const item of ast.expressions) {\n s.push(this.build(item, stmts));\n }\n stmts.push(`${v}=[${s.join(',')}]`);\n return v;\n }\n\n processLiteralMap() {\n const ast = this.cAst;\n const stmts = this.cStmts;\n const v = this.createVar();\n const _values = [];\n for (const _value of ast.values) {\n _values.push(this.build(_value, stmts));\n }\n stmts.push(`${v}={${ast.keys.map((k, i) => `'${k.key}':${_values[i]}`)}}`);\n return v;\n }\n\n processPropertyRead() {\n const ast = this.cAst;\n const stmts = this.cStmts;\n const r = this.build(ast.receiver, stmts);\n const v = this.createVar();\n stmts.push(`${v}=${r}&&${r}.${ast.name}`);\n return v;\n }\n\n processKeyedRead() {\n const ast = this.cAst;\n const stmts = this.cStmts;\n const k = this.build(ast.key, stmts);\n const o = this.build(ast.receiver, stmts);\n const v = this.createVar();\n stmts.push(`${v}=${o}&&${o}[${k}]`);\n return v;\n }\n\n processPrefixNot() {\n const ast = this.cAst;\n const stmts = this.cStmts;\n const r = this.build(ast.expression, stmts);\n stmts.push(`${r}=!${r}`);\n return r;\n }\n\n handleBinaryPlus_Minus() {\n const ast = this.cAst;\n const stmts = this.cStmts;\n const l = this.build(ast.left, stmts);\n const r = this.build(ast.right, stmts);\n const v = this.createVar();\n const m = ast.operation === '+' ? '_plus' : '_minus';\n stmts.push(`${v}=${m}(${l},${r})`);\n return v;\n }\n\n handleBinaryAND_OR() {\n const ast = this.cAst;\n const stmts = this.cStmts;\n const _s1 = [];\n const _sl = [];\n const _sr = [];\n const l = this.build(ast.left, _sl);\n const r = this.build(ast.right, _sr);\n\n const v = this.createVar();\n\n if (ast.operation === '&&') {\n _s1.push(\n _sl.join(';'),\n `;${v}=false`,\n `;if(${l}){`,\n _sr.join(';'),\n `;${v}=${r};`,\n `}`\n );\n } else {\n _s1.push(\n _sl.join(';'),\n `;${v}=${l}`,\n `;if(!${l}){`,\n _sr.join(';'),\n `;${v}=${r};`,\n `}`\n );\n }\n stmts.push(_s1.join(''));\n return v;\n }\n\n handleBinaryDefault() {\n const ast = this.cAst;\n const stmts = this.cStmts;\n const l = this.build(ast.left, stmts);\n const r = this.build(ast.right, stmts);\n const v = this.createVar();\n stmts.push(`${v}=${l}${ast.operation}${r}`);\n return v;\n }\n\n processBinary() {\n const ast = this.cAst;\n const op = ast.operation;\n if (op === '+' || op === '-') {\n return this.handleBinaryPlus_Minus();\n }\n if (op === '&&' || op === '||') {\n return this.handleBinaryAND_OR();\n }\n\n return this.handleBinaryDefault();\n }\n\n processUnary() {\n const ast = this.cAst;\n const stmts = this.cStmts;\n const e = this.build(ast.expr, stmts);\n const v = this.createVar();\n stmts.push(`${v}=${ast.operator}${e}`);\n return v;\n }\n\n processConditional() {\n const ast = this.cAst;\n const stmts = this.cStmts;\n const condition = this.build(ast.condition, stmts);\n const v = this.createVar();\n const _s1 = [];\n const _s2 = [];\n const _s3 = [];\n const trueExp = this.build(ast.trueExp, _s2);\n const falseExp = this.build(ast.falseExp, _s3);\n\n _s1.push(\n `if(${condition}){`,\n _s2.join(';'),\n `;${v}=${trueExp};`,\n `}else{`,\n _s3.join(';'),\n `;${v}=${falseExp};`,\n `}`\n );\n\n stmts.push(_s1.join(' '));\n return v;\n }\n\n processMethodCall() {\n const ast = this.cAst;\n const stmts = this.cStmts;\n const _args = [];\n for (const arg of ast.args) {\n _args.push(this.build(arg, stmts));\n }\n const fn = this.build(ast.receiver, stmts);\n const v = this.createVar();\n const isImplicitReceiver = ast.receiver instanceof ImplicitReceiver || (ast.receiver instanceof PropertyRead && ast.receiver?.receiver instanceof ImplicitReceiver);\n const context = stmts[stmts.length - 1].split('&&')[0].split('=')[1];\n stmts.push(`${v}= ${fn}&&${fn}${isImplicitReceiver ? '.bind(_ctx)' : `.bind(${context})`}(${_args.join(',')})`);\n return v;\n }\n\n processChain() {\n const ast = this.cAst;\n return ast.expressions.map(e => this.build(e)).join(';');\n }\n\n processPropertyWrite() {\n const ast = this.cAst;\n const stmts = this.cStmts;\n let receiver, lhs;\n if (ast.receiver instanceof ImplicitReceiver) {\n lhs = `_ctx.${ast.name}`;\n } else {\n receiver = this.build(ast.receiver, stmts);\n lhs = `${receiver}${receiver.length ? '.' : ''}${ast.name}`;\n }\n\n const rhs = this.build(ast.value, stmts);\n stmts.push(`${lhs}=${rhs}`);\n }\n\n processPipe() {\n const ast = this.cAst;\n const stmts = this.cStmts;\n const t = this.createVar();\n const _args = [];\n const _s1 = [];\n const _s2 = [];\n const exp = this.build(ast.exp, stmts);\n for (const arg of ast.args) {\n _args.push(this.build(arg, _s2));\n }\n\n const p = `_p${this.pipes.length}`;\n this.pipes.push([ast.name, p]);\n\n _args.unshift(exp);\n\n _s1.push(\n _s2.length ? _s2.join(';') + ';' : '',\n this.pipeNameVsIsPureMap.get(ast.name) ? `${t}=getPPVal(${p},_ppc,\"${p}\",${_args})` : `${t}=${p}.transform(${_args})`\n );\n\n stmts.push(_s1.join(''));\n return t;\n }\n\n build(ast, cStmts?) {\n this.cAst = ast;\n this.cStmts = cStmts || this.stmts;\n\n if (ast instanceof ImplicitReceiver) {\n return this.processImplicitReceiver();\n } else if (ast instanceof LiteralPrimitive) {\n return this.processLiteralPrimitive();\n } else if (ast instanceof LiteralArray) {\n return this.processLiteralArray();\n } else if (ast instanceof LiteralMap) {\n return this.processLiteralMap();\n } else if (ast instanceof PropertyRead) {\n return this.processPropertyRead();\n } else if (ast instanceof PropertyWrite) {\n return this.processPropertyWrite();\n } else if (ast instanceof KeyedRead) {\n return this.processKeyedRead();\n } else if (ast instanceof PrefixNot) {\n return this.processPrefixNot();\n } else if (ast instanceof Unary) {\n return this.processUnary();\n } else if (ast instanceof Binary) {\n return this.processBinary();\n } else if (ast instanceof Conditional) {\n return this.processConditional();\n } else if (ast instanceof Call) {\n return this.processMethodCall();\n } else if (ast instanceof Chain) {\n return this.processChain();\n } else if (ast instanceof BindingPipe) {\n return this.processPipe();\n }\n }\n\n extendCtxWithLocals() {\n const v1 = this.createVar();\n this.stmts.push(\n `${v1}=Object.assign({}, locals)`,\n `Object.setPrototypeOf(${v1}, _ctx)`,\n `ctx=${v1}`\n );\n }\n\n fnBody() {\n this.declarations.push('ctx');\n return '\"use strict\";\\nvar ' + this.declarations.join(',') + ';\\n' + this.stmts.join(';');\n }\n\n fnArgs() {\n const args = ['_plus', '_minus', '_isDef'];\n\n if (this.exprType === ExpressionType.Binding) {\n args.push('getPPVal', '_ppc');\n for (const [, pipeVar] of this.pipes) {\n args.push(pipeVar);\n }\n }\n\n args.push('_ctx', 'locals');\n\n return args.join(',');\n }\n\n addReturnStmt(result) {\n // if (this.exprType === ExpressionType.Binding) {\n this.stmts.push(`return ${result};`);\n // }\n }\n\n cleanup() {\n this.ast = this.cAst = this.stmts = this.cStmts = this.declarations = this.pipes = this.pipeNameVsIsPureMap = undefined;\n }\n\n compile(defOnly?) {\n this.extendCtxWithLocals();\n this.addReturnStmt(this.build(this.ast));\n if (defOnly) {\n return {fnBody: this.fnBody(), fnArgs: this.fnArgs(), pipes: this.pipes};\n }\n const fn = new Function(this.fnArgs(), this.fnBody());\n let boundFn;\n if (this.exprType === ExpressionType.Binding) {\n boundFn = fn.bind(undefined, plus, minus, isDef, getPurePipeVal);\n boundFn.usedPipes = this.pipes.slice(0); // clone\n } else {\n boundFn = fn.bind(undefined, plus, minus, isDef);\n }\n\n this.cleanup();\n return boundFn;\n }\n}\n\nconst nullPipe = () => {\n return {\n transform: noop\n };\n};\n\nlet _cspEnabled;\nconst isCSPEnabled = () => {\n if(typeof _cspEnabled !== 'undefined') {\n return _cspEnabled;\n }\n try {\n new Function();\n _cspEnabled = false;\n } catch(e) {\n _cspEnabled = true;\n }\n return _cspEnabled;\n};\n\nlet pipeProvider;\n\nexport function setPipeProvider(_pipeProvider) {\n pipeProvider = _pipeProvider;\n}\n\nenum ExpressionType {\n Binding,\n Action\n}\n\nexport function $parseExpr(expr: string, defOnly?: boolean): ParseExprResult {\n\n if (!pipeProvider) {\n return noop;\n }\n\n if (typeof (expr) !== 'string') {\n return noop;\n }\n\n expr = expr.trim();\n\n if (expr.endsWith(';')) {\n expr = expr.slice(0, -1); // remove the trailing semicolon\n }\n\n if (!expr.length) {\n return noop;\n }\n\n let fn = exprFnCache.get(expr);\n\n if (fn) {\n return fn;\n }\n\n let boundFn;\n if (!defOnly) {\n boundFn = getFnForBindExpr(expr);\n }\n\n // fallback to generate function in runtime. This will break if CSP is enabled\n if (!boundFn) {\n // If CSP enabled, function def not found from the generated fn expressions for the page.\n // Handle bind expressions used internally inside WM components. e.g. wmAnchor used inside nav.comp.html\n if (isCSPEnabled()) {\n boundFn = function(ctx, locals) {\n // handle internal bindings for wm widgets used inside a component\n let _ctx = Object.assign({}, locals);\n Object.setPrototypeOf(_ctx, ctx);\n return get(_ctx, expr);\n };\n } else {\n const parser = new Parser(new Lexer);\n const ast = parser.parseBinding(expr, '',0);\n\n if (ast.errors.length) {\n fn = noop;\n boundFn = fn;\n } else {\n const pipeNameVsIsPureMap = pipeProvider.getPipeNameVsIsPureMap();\n const astCompiler = new ASTCompiler(ast.ast, ExpressionType.Binding, pipeNameVsIsPureMap);\n fn = astCompiler.compile(defOnly);\n if (defOnly) {\n return fn;\n }\n\n if (fn.usedPipes.length) {\n const pipeArgs = [];\n let hasPurePipe = false;\n for (const [pipeName] of fn.usedPipes) {\n const pipeInfo = pipeProvider.meta(pipeName);\n let pipeInstance;\n if (!pipeInfo) {\n pipeInstance = nullPipe;\n } else {\n if (pipeInfo.pure) {\n hasPurePipe = true;\n pipeInstance = purePipes.get(pipeName);\n }\n\n if (!pipeInstance) {\n pipeInstance = pipeProvider.getInstance(pipeName);\n }\n\n if (pipeInfo.pure) {\n purePipes.set(pipeName, pipeInstance);\n }\n }\n pipeArgs.push(pipeInstance);\n }\n\n pipeArgs.unshift(hasPurePipe ? new Map() : undefined);\n boundFn = fn.bind(undefined, ...pipeArgs);\n } else {\n boundFn = fn.bind(undefined, undefined);\n }\n }\n }\n }\n\n exprFnCache.set(expr, boundFn);\n\n return boundFn;\n}\n\nfunction simpleFunctionEvaluator(expr, ctx, locals) {\n let _ctx = Object.assign({}, locals);\n Object.setPrototypeOf(_ctx, ctx);\n\n let parts = expr.split('(');\n let fnName = parts[0];\n let computedFn = get(ctx, fnName);\n\n if (computedFn) {\n let args = parts[1].replace(')', '');\n args = args.split(',');\n let computedArgs = [];\n args.forEach((arg)=> {\n arg = arg && arg.trim();\n computedArgs.push(get(_ctx, arg));\n });\n return computedFn.bind(_ctx)(...computedArgs);\n }\n}\n\nexport function $parseEvent(expr, defOnly?): ParseExprResult {\n if (typeof (expr) !== 'string') {\n return noop;\n }\n\n expr = expr.trim();\n\n if (!expr.length) {\n return noop;\n }\n\n let fn = eventFnCache.get(expr);\n\n if (fn) {\n return fn;\n }\n\n if (!defOnly) {\n fn = getFnForEventExpr(expr);\n }\n\n // fallback to generate function in runtime. This will break if CSP is enabled\n if(!fn) {\n if (isCSPEnabled()) {\n fn = simpleFunctionEvaluator.bind(undefined, expr);\n } else {\n const parser = new Parser(new Lexer);\n const ast = parser.parseAction(expr, '', 0);\n\n if (ast.errors.length) {\n return noop;\n }\n const astCompiler = new ASTCompiler(ast.ast, ExpressionType.Action);\n fn = astCompiler.compile(defOnly);\n }\n }\n\n eventFnCache.set(expr, fn);\n return fn;\n}\n\nconst fnNameMap = new Map();\n\nexport const registerFnByExpr = (expr, fn, usedPipes?) => {\n fn.usedPipes = usedPipes || [];\n fnNameMap.set(expr, fn);\n}\n\nexport const getFnByExpr = (expr) => fnNameMap.get(expr)\n\nconst fnExecutor = (expr, exprType) => {\n let fn = getFnByExpr(expr);\n if (!fn) {\n return;\n }\n const usedPipes = fn.usedPipes || [];\n\n if(exprType === ExpressionType.Binding) {\n fn = fn.bind(undefined, plus, minus, isDef, getPurePipeVal);\n } else {\n fn = fn.bind(undefined, plus, minus, isDef);\n }\n\n if (usedPipes.length) {\n const pipeArgs = [];\n let hasPurePipe = false;\n for (const [pipeName] of usedPipes) {\n const pipeInfo = pipeProvider.meta(pipeName);\n let pipeInstance;\n if (!pipeInfo) {\n pipeInstance = nullPipe;\n } else {\n if (pipeInfo.pure) {\n hasPurePipe = true;\n pipeInstance = purePipes.get(pipeName);\n }\n\n if (!pipeInstance) {\n pipeInstance = pipeProvider.getInstance(pipeName);\n }\n\n if (pipeInfo.pure) {\n purePipes.set(pipeName, pipeInstance);\n }\n }\n pipeArgs.push(pipeInstance);\n }\n\n pipeArgs.unshift(hasPurePipe ? new Map() : undefined);\n fn = fn.bind(undefined, ...pipeArgs);\n } else {\n if (exprType === ExpressionType.Binding) {\n fn = fn.bind(undefined, undefined);\n }\n }\n\n return fn;\n}\n\nexport const getFnForBindExpr = (expr) => {\n return fnExecutor(expr, ExpressionType.Binding);\n}\n\nexport const getFnForEventExpr = (expr) => {\n return fnExecutor(expr, ExpressionType.Action);\n}\n","import { IDGenerator } from './id-generator';\n\nimport { $parseExpr } from './expression-parser';\nimport { findValueOf } from './utils';\nimport {clone, flatten, isArray, isEqual, isObject} from \"lodash-es\";\n\nconst registry = new Map<string, any>();\n\nconst watchIdGenerator = new IDGenerator('watch-id-');\n\nexport const FIRST_TIME_WATCH = {};\n\nObject.freeze(FIRST_TIME_WATCH);\n\nexport const isFirstTimeChange = v => v === FIRST_TIME_WATCH;\n\nlet muted = false;\nlet appRef;\n\nexport const debounce = (fn: Function, wait: number = 50) => {\n let timeout;\n return (...args) => {\n window['__zone_symbol__clearTimeout'](timeout);\n timeout = window['__zone_symbol__setTimeout'](() => fn(...args), wait);\n };\n};\n\nexport const muteWatchers = () => {\n muted = true;\n};\n\nexport const unMuteWatchers = () => {\n muted = false;\n triggerWatchers();\n};\n\nconst arrayConsumer = (listenerFn, restExpr, newVal, oldVal) => {\n let data = newVal,\n formattedData;\n\n if (isArray(data)) {\n formattedData = data.map(function (datum) {\n return findValueOf(datum, restExpr);\n });\n\n // If resulting structure is an array of array, flatten it\n if (isArray(formattedData[0])) {\n formattedData = flatten(formattedData);\n }\n\n listenerFn(formattedData, oldVal);\n }\n};\n\nconst getUpdatedWatcInfo = (expr, acceptsArray, listener) => {\n // listener doesn't accept array\n // replace all `[$i]` with `[0]` and return the expression\n let regex = /\\[\\$i\\]/g,\n $I = '[$i]',\n $0 = '[0]';\n if (!acceptsArray) {\n return {\n 'expr' : expr.replace(regex, $0),\n 'listener' : listener\n };\n }\n\n // listener accepts array\n // replace all except the last `[$i]` with `[0]` and return the expression.\n var index = expr.lastIndexOf($I),\n _expr = expr.substr(0, index).replace($I, $0),\n restExpr = expr.substr(index + 5),\n arrayConsumerFn = listener;\n\n if (restExpr) {\n arrayConsumerFn = arrayConsumer.bind(undefined, listener, restExpr);\n }\n\n return {\n 'expr' : _expr,\n 'listener' : arrayConsumerFn\n };\n};\n\nexport const $watch = (expr, $scope, $locals, listener, identifier = watchIdGenerator.nextUid(), doNotClone = false, config:any={}, isMuted?: () => boolean) => {\n if (expr.indexOf('[$i]') !== -1) {\n let watchInfo = getUpdatedWatcInfo(expr, config && (config.arrayType || config.isList), listener);\n expr = watchInfo.expr;\n listener = watchInfo.listener;\n }\n const fn = $parseExpr(expr);\n\n registry.set(identifier, {\n fn: fn.bind(expr, $scope, $locals),\n listener,\n expr,\n last: FIRST_TIME_WATCH,\n doNotClone,\n isMuted: isMuted\n });\n\n return () => $unwatch(identifier);\n};\n\nexport const $unwatch = identifier => registry.delete(identifier);\n\nlet changedByWatch = false;\n\nconst $RAF = window.requestAnimationFrame;\n\nlet ngZone;\n\nconst triggerWatchers = (ignoreMuted?: boolean) => {\n\n if (muted && !ignoreMuted) {\n return;\n }\n\n const limit = 5;\n let pass = 1;\n let changeDetected;\n\n do {\n changeDetected = false;\n registry.forEach(watchInfo => {\n if(watchInfo.isMuted && watchInfo.isMuted()) {\n return;\n }\n const fn = watchInfo.fn;\n const listener = watchInfo.listener;\n const ov = watchInfo.last;\n let nv;\n\n try {\n nv = fn();\n } catch (e) {\n console.warn(`error in executing expression: '${watchInfo.expr}'`);\n }\n\n if (!isEqual(nv, ov)) {\n changeDetected = true;\n changedByWatch = true;\n watchInfo.last = nv;\n\n // @ts-ignore\n if (isObject(nv) && !watchInfo.doNotClone && nv.__cloneable__ !== false) {\n watchInfo.last = clone(nv);\n }\n listener(nv, ov);\n resetChangeFromWatch();\n }\n });\n pass++;\n\n } while (changeDetected && pass < limit);\n\n if (changeDetected && pass === limit) {\n console.warn(`Number of watch cycles gone above set limit of: ${limit} `);\n }\n};\n\nexport const setNgZone = zone => ngZone = zone;\n\nexport const setAppRef = ref => {\n appRef = ref\n};\n\nexport const isChangeFromWatch = () => changedByWatch;\nexport const resetChangeFromWatch = () => changedByWatch = false;\n\n(<any>window).watchRegistry = registry;\n\nlet skipWatchers;\n\nconst debouncedTriggerWatchers = debounce(() => {\n skipWatchers = true;\n ngZone.run(() => triggerWatchers());\n}, 100);\n\nexport const $invokeWatchers = (force?: boolean, ignoreMuted?: boolean) => {\n if (force) {\n triggerWatchers(ignoreMuted);\n } else {\n\n if (skipWatchers) {\n skipWatchers = false;\n return;\n }\n debouncedTriggerWatchers();\n }\n};\n\nexport const $appDigest = (() => {\n let queued = false;\n return (force?: boolean) => {\n if (!appRef) {\n return;\n }\n if (force) {\n ngZone.run(() => appRef.tick());\n queued = false;\n } else {\n if (queued) {\n return;\n } else {\n queued = true;\n $RAF(() => {\n ngZone.run(() => appRef.tick());\n queued = false;\n });\n }\n }\n };\n})();\n","export enum ComponentType {\n PAGE,\n PREFAB,\n PARTIAL,\n WIDGET\n}\n\nexport class IDataSource {\n execute: (operation: Operation, options?: any) => boolean | string | Promise<any>;\n}\n\nenum Operation {\n LIST_RECORDS = 'listRecords',\n UPDATE_RECORD = 'updateRecord',\n INSERT_RECORD = 'insertRecord',\n DELETE_RECORD = 'deleteRecord',\n INVOKE = 'invoke',\n UPDATE = 'update',\n NOTIFY = 'notify',\n IS_API_AWARE = 'isApiAware',\n SUPPORTS_CRUD = 'supportsCRUD',\n SUPPORTS_DISTINCT_API = 'supportsDistinctAPI',\n IS_PAGEABLE = 'isPageable',\n IS_SORTABLE = 'isSortable',\n GET_OPERATION_TYPE = 'getOperationType',\n GET_RELATED_PRIMARY_KEYS = 'getRelatedTablePrimaryKeys',\n GET_ENTITY_NAME = 'getEntityName',\n SET_INPUT = 'setinput',\n GET_RELATED_TABLE_DATA = 'getRelatedTableData',\n GET_DISTINCT_DATA_BY_FIELDS = 'getDistinctDataByFields',\n GET_AGGREGATED_DATA = 'getAggregatedData',\n GET_MATCH_MODE = 'getMatchMode',\n DOWNLOAD = 'download',\n GET_NAME = 'getName',\n GET_PROPERTIES_MAP = 'getPropertiesMap',\n GET_PRIMARY_KEY = 'getPrimaryKey',\n GET_BLOB_URL = 'getBlobURL',\n SUPPORTS_SERVER_FILTER = 'supportsServerFilter',\n GET_OPTIONS = 'getOptions',\n SEARCH_RECORDS = 'searchRecords',\n GET_REQUEST_PARAMS = 'getRequestParams',\n GET_PAGING_OPTIONS = 'getPagingOptions',\n FETCH_DISTINCT_VALUES = 'fetchDistinctValues',\n GET_UNIQUE_IDENTIFIER = 'getUniqueIdentifier',\n GET_CONTEXT_IDENTIFIER = 'getContextIdentifier',\n IS_UPDATE_REQUIRED = 'isUpdateRequired',\n ADD_ITEM = 'addItem',\n SET_ITEM = 'setItem',\n REMOVE_ITEM = 'removeItem',\n IS_BOUND_TO_LOCALE = 'isBoundToLocale',\n GET_DEFAULT_LOCALE = 'getDefaultLocale',\n CANCEL = 'cancel',\n SET_PAGINATION = 'setPagination'\n}\n\nexport const DataSource = {\n Operation\n};\n\nexport abstract class App {\n appLocale: any;\n Variables: any;\n Actions: any;\n onAppVariablesReady: Function;\n onSessionTimeout: Function;\n onBeforeAppReady: Function;\n onPageReady: Function;\n onBeforePageLeave: Function;\n onBeforeServiceCall: Function;\n onServiceSuccess: Function;\n onServiceError: Function;\n projectName: string;\n isPrefabType: boolean;\n isApplicationType: boolean;\n setwidgetLocale: Function;\n isTabletApplicationType: boolean;\n isTemplateBundleType: boolean;\n changeLocale: Function;\n getSelectedLocale: Function;\n setTimezone: Function;\n reload: Function;\n on401: Function;\n notifyApp: Function;\n getDependency: Function;\n networkStatus: any;\n notify: (eventName: string, data?: any) => void;\n deployedUrl: string;\n customUrlScheme: string;\n selectedViewPort: Object;\n subscribe: (eventName, callback: (data: any) => void) => () => void;\n dynamicComponentContainerRef: any;\n clearPageCache: (pageName?: string) => void;\n\n activePageName: string;\n activePage: any;\n Page: any;\n activePageLoadTime: number;\n landingPageName: string;\n lastActivePageName: string;\n deviceCategory: string;\n\n activeLayoutName: string;\n layoutPages: string[];\n}\n\n\nexport abstract class AbstractDialogService {\n public abstract register(name: string, dialogRef: any, scope: any);\n public abstract deRegister(name: string, scope: any);\n public abstract open(name: string, scope?: any, initState?: any);\n public abstract close(name: string, scope?: any);\n public abstract showAppConfirmDialog(initState?: any);\n public abstract closeAppConfirmDialog();\n public abstract getAppConfirmDialog();\n public abstract setAppConfirmDialog(dialogName: string);\n public abstract closeAllDialogs: Function;\n public abstract addToOpenedDialogs(ref: any);\n public abstract getLastOpenedDialog();\n public abstract removeFromOpenedDialogs(ref: any);\n public abstract getOpenedDialogs();\n public abstract addToClosedDialogs(ref: any);\n public abstract removeFromClosedDialogs(ref: any);\n public abstract getDialogRefFromClosedDialogs();\n}\n\nexport abstract class AbstractHttpService {\n public abstract send(options: any);\n public abstract setLocale(locale);\n public abstract getLocale();\n public abstract getHeader(error, headerKey);\n public abstract isPlatformSessionTimeout(error);\n public abstract get(url: string, options?: any);\n public abstract post(url, data, options);\n public abstract put(url, data, options);\n public abstract patch(url, data, options);\n public abstract delete(url, options);\n public abstract head(url, options);\n public abstract jsonp(url, options);\n public abstract upload(url, data, options);\n public abstract registerOnSessionTimeout(callback);\n public abstract on401();\n public abstract pushToSessionFailureQueue(callback);\n public abstract executeSessionFailureRequests();\n public abstract sendCallAsObservable(options: any, params?: any): any;\n}\n\nexport abstract class AbstractI18nService {\n public abstract getSelectedLocale(): string;\n public abstract getDefaultSupportedLocale(): string;\n public abstract getAppLocale(): any;\n public abstract setSelectedLocale(locale);\n public abstract loadDefaultLocale();\n public abstract getLocalizedMessage(message, ...args);\n public abstract initCalendarLocale(): Promise<any>;\n protected abstract loadAppLocaleBundle();\n protected abstract loadMomentLocaleBundle(localeLang);\n protected abstract loadLocaleBundles(localeLang);\n public abstract setTimezone(locale, compInstance?);\n public abstract getFormatsByLocale();\n public abstract getTimezone(compInstance?);\n public abstract getPrefabLocaleBundle(prefabName: string): any;\n public abstract setwidgetLocale(locale);\n public abstract getwidgetLocale();\n}\n\nexport abstract class AbstractToasterService {\n public abstract success(title: string, desc: string);\n public abstract error(title: string, desc: string);\n public abstract info(title: string, desc: string);\n public abstract warn(title: string, desc: string);\n public abstract show(\n type: string,\n title: string,\n desc: string,\n timeout: number,\n bodyOutputType: string,\n onClickHandler: Function,\n onHideCallback: Function\n );\n public abstract hide(toasterObj: any);\n public abstract showCustom(pageName: string, options?: any);\n}\n\nexport abstract class AbstractSpinnerService {\n public abstract getMessageSource();\n public abstract showContextSpinner(spinnerContext: string, message: string, id: string);\n public abstract showAppSpinner(msg: string, id: string);\n public abstract hideContextSpinner(ctx: string, id: string);\n public abstract show(message: string, id?: string, spinnerClass?: string, spinnerContext?: string, variableScopeId?: string);\n public abstract hide(id: string);\n}\nexport abstract class UserDefinedExecutionContext {\n\n}\n\nexport interface NavigationOptions {\n $event?: any;\n pageName?: string;\n transition?: string;\n urlParams?: any;\n viewName?: string;\n}\n\nexport abstract class AbstractNavigationService {\n public abstract getPageTransition(): string;\n public abstract goToPage(pageName: string, options: NavigationOptions);\n public abstract goToPrevious();\n public abstract goToView(viewName: string, options: NavigationOptions, variable: any);\n}\n\nexport abstract class AppDefaults {\n public dateFormat;\n public timeFormat;\n public dateTimeFormat;\n public currencyCode;\n public abstract setFormats(formats: any);\n}\n\nexport abstract class DynamicComponentRefProvider {\n public abstract getComponentFactoryRef(selector: string, markup: string, options?: any);\n}\n\nexport abstract class PartialRefProvider {\n abstract getComponentFactoryRef(partialName: string, componentType: ComponentType, options?: any): Promise<any>;\n}\n\nexport abstract class CustomWidgetRefProvider {\n abstract getComponentFactoryRef(customWidgetName: string, componentType: ComponentType, options?: any): Promise<any>;\n}\n","import {Subject} from 'rxjs';\n\nimport {getWmProjectProperties} from './wm-project-properties';\n\nimport {$appDigest, $watch} from './watcher';\nimport {DataType} from '../enums/enums';\nimport {DataSource} from '../types/types';\nimport {setAttr} from './dom';\nimport {$parseEvent} from './expression-parser';\nimport {\n attempt,\n camelCase, cloneDeep, every,\n filter, forEach, get, identity,\n includes, indexOf, intersection, isArray, isDate,\n isEqual, isEqualWith, isError,\n isFunction,\n isNull,\n isNumber, isString,\n isUndefined, keys, map, noop as _noop, omit, replace as _replace,\n split,\n startsWith, toLower, toUpper, trim\n} from \"lodash-es\";\n\ndeclare const X2JS;\ndeclare const $;\ndeclare const moment;\ndeclare const document;\ndeclare const resolveLocalFileSystemURL;\ndeclare const WM_CUSTOM_FORMATTERS;\ndeclare const MSCSSMatrix;\ndeclare const _WM_APP_PROPERTIES;\ndeclare const cordova;\n\nconst userAgent = window.navigator.userAgent;\nconst REGEX = {\n SNAKE_CASE: /[A-Z]/g,\n ANDROID: /Android/i,\n IPHONE: /iPhone/i,\n IPOD: /iPod/i,\n IPAD: /iPad/i,\n MAC: /Mac/i,\n ANDROID_TABLET: /android|android 3.0|xoom|sch-i800|playbook|tablet|kindle/i,\n MOBILE: /Mobile/i,\n WINDOWS: /Windows Phone/i,\n SUPPORTED_IMAGE_FORMAT: /\\.(bmp|gif|jpe|jpg|jpeg|tif|tiff|pbm|png|ico)$/i,\n SUPPORTED_FILE_FORMAT: /\\.(txt|js|css|html|script|properties|json|java|xml|smd|xmi|sql|log|wsdl|vm|ftl|jrxml|yml|yaml|md|less|jsp)$/i,\n SUPPORTED_AUDIO_FORMAT: /\\.(mp3|ogg|webm|wma|3gp|wav|m4a)$/i,\n SUPPORTED_VIDEO_FORMAT: /\\.(mp4|ogg|webm|wmv|mpeg|mpg|avi|mov)$/i,\n PAGE_RESOURCE_PATH: /^\\/pages\\/.*\\.(js|css|html|json)$/,\n MIN_PAGE_RESOURCE_PATH: /.*(page.min.html)$/,\n VALID_EMAIL: /^[a-zA-Z][\\w.+]+@[a-zA-Z_]+?\\.[a-zA-Z.]{1,4}[a-zA-Z]$/,\n VALID_WEB_URL: /^(http[s]?:\\/\\/)(www\\.){0,1}[a-zA-Z0-9=:?\\/\\.\\-]+(\\.[a-zA-Z]{2,5}[\\.]{0,1})?/,\n VALID_WEBSOCKET_URL: /^(ws[s]?:\\/\\/)(www\\.){0,1}[a-zA-Z0-9=:?\\/\\.\\-]+(\\.[a-zA-Z]{2,5}[\\.]{0,1})?/,\n VALID_RELATIVE_URL: /^(?!www\\.|(?:http|ftp)s?:\\/\\/|[A-Za-z]:\\\\|\\/\\/).*/,\n REPLACE_PATTERN: /\\$\\{([^\\}]+)\\}/g,\n ZIP_FILE: /\\.zip$/i,\n EXE_FILE: /\\.exe$/i,\n NO_QUOTES_ALLOWED: /^[^'|\"]*$/,\n NO_DOUBLE_QUOTES_ALLOWED: /^[^\"]*$/,\n VALID_HTML: /<[a-z][\\s\\S]*>/i,\n VALID_PASSWORD: /^[0-9a-zA-Z-_.@&*!#$%]+$/,\n SPECIAL_CHARACTERS: /[^A-Z0-9a-z_]+/i,\n APP_SERVER_URL_FORMAT: /^(http[s]?:\\/\\/)(www\\.){0,1}[a-zA-Z0-9\\.\\-]+([:]?[0-9]{2,5}|\\.[a-zA-Z]{2,5}[\\.]{0,1})\\/+[^?#&=]+$/,\n JSON_DATE_FORMAT: /\\d{4}-[0-1]\\d-[0-3]\\d(T[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d{1,3}Z$)?/,\n DATA_URL: /^\\s*data:([a-z]+\\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\\-._~:@\\/?%\\s]*)\\s*$/i,\n ISO_DATE_FORMAT: /(\\d{4}-\\d{2}-\\d{2})T(\\d{2}:\\d{2}:\\d{2})(\\.\\d+)?([+-]\\d{2}:?\\d{2}|Z)$/\n},\n compareBySeparator = ':';\n\nconst NUMBER_TYPES = ['int', DataType.INTEGER, DataType.FLOAT, DataType.DOUBLE, DataType.LONG, DataType.SHORT, DataType.BYTE, DataType.BIG_INTEGER, DataType.BIG_DECIMAL];\nconst now: Date = new Date();\nconst CURRENT_DATE = 'CURRENT_DATE';\n\nexport const getNavClass = (suffix: string) : string => {\n const APP_NAV_CLASS_PREFIX = 'app-nav-';\n return APP_NAV_CLASS_PREFIX + suffix;\n}\n \nexport const getSheetPositionClass = (suffix: string): string => {\n const SHEET_POSITION_CLASS_PREFIX = 'sheet-position-';\n return SHEET_POSITION_CLASS_PREFIX + suffix;\n}\n\nexport const enum EVENT_LIFE { ONCE, WINDOW }\n\nexport const isDefined = v => 'undefined' !== typeof v;\n\nexport const isObject = v => null !== v && 'object' === typeof v;\n\nexport const toBoolean = (val, identity?) => ((val && val !== 'false') ? true : (identity ? val === identity : false));\n\nfunction isIE11() {\n return window.navigator.appVersion.indexOf('Trident/') > -1;\n}\n\nexport const isIE = () => {\n return isIE11() || window.navigator.userAgent.indexOf('MSIE') > -1;\n};\n\n\nexport const isAndroid = () => REGEX.ANDROID.test(userAgent);\n\nexport const isAndroidTablet = () => REGEX.ANDROID_TABLET.test(userAgent) && !((/Tablet PC 2.0/i).test(userAgent));\n\nexport const isIphone = () => REGEX.IPHONE.test(userAgent);\nexport const isIpod = () => REGEX.IPOD.test(userAgent);\nexport const isIpad = () => {\n return REGEX.IPAD.test(userAgent) || (window.navigator.maxTouchPoints && window.navigator.maxTouchPoints > 2 && REGEX.MAC.test(window.navigator.platform));\n};\n\nexport const isIos = () => isIphone() || isIpod() || isIpad();\n\nexport const isSafari = () => navigator.userAgent.indexOf('Safari') !== -1 && navigator.userAgent.indexOf('Chrome') === -1;\n\n\nexport const isLargeTabletLandscape = (landScapeWidth, landScapeHeight) => {\n const width = landScapeWidth || '1366px';\n const height = landScapeHeight || '1024px';\n return window.matchMedia(\"only screen and (min-device-width : \"+width+\") and (max-device-width : \"+width+\") and (min-device-height : \"+height+\") and (max-device-height : \"+height+\") and (min-width: \"+width+\") and (max-width: \"+width+\")\").matches;\n}\n\nexport const isLargeTabletPortrait = (landScapeWidth, landScapeHeight) => {\n const height = landScapeWidth || '1366px';\n const width = landScapeHeight || '1024px';\n return window.matchMedia(\"only screen and (min-device-width : \"+width+\") and (max-device-width : \"+width+\") and (min-device-height : \"+height+\") and (max-device-height : \"+height+\") and (min-width: \"+width+\") and (max-width: \"+width+\")\").matches;\n}\n\nexport const isMobile = () => isAndroid() || isIos() || isAndroidTablet() || $('#wm-mobile-display:visible').length > 0;\n\nexport const isTablet = () => {\n const scope = document.querySelector('.app-page').widget;\n return scope && scope.viewParent.Viewport.isTabletType;\n};\n\nexport const isMobileApp = () => getWmProjectProperties().platformType === 'MOBILE' && getWmProjectProperties().type === 'APPLICATION';\n\nexport const getAndroidVersion = () => {\n const match = (window.navigator.userAgent.toLowerCase()).match(/android\\s([0-9\\.]*)/);\n return match ? match[1] : '';\n};\n\nexport const isKitkatDevice = () => isAndroid() && parseInt(getAndroidVersion(), 10) === 4;\n\n/**\n * this method encodes the url and returns the encoded string\n */\nexport const encodeUrl = (url: string): string => {\n const index = url.indexOf('?');\n if (index > -1) {\n // encode the relative path\n url = encodeURI(url.substring(0, index)) + url.substring(index);\n // encode url params, not encoded through encodeURI\n url = encodeUrlParams(url);\n } else {\n url = encodeURI(url);\n }\n\n return url;\n};\n\n/**\n * this method encodes the url params and is private to the class only\n */\nexport const encodeUrlParams = (url: string): string => {\n let queryParams, encodedParams = '', queryParamsString, index;\n index = url.indexOf('?');\n if (index > -1) {\n index += 1;\n queryParamsString = url.substring(index);\n // Encoding the query params if exist\n if (queryParamsString) {\n queryParams = queryParamsString.split('&');\n queryParams.forEach(function (param) {\n let decodedParamValue;\n const i = includes(param, '=') ? param.indexOf('=') : (param && param.length),\n paramName = param.substr(0, i),\n paramValue = param.substr(i + 1);\n\n // add the = for param name only when the param value exists in the given param or empty value is assigned\n if (paramValue || includes(param, '=')) {\n try {\n decodedParamValue = decodeURIComponent(paramValue);\n } catch (e) {\n decodedParamValue = paramValue;\n }\n encodedParams += paramName + '=' + encodeURIComponent(decodedParamValue) + '&';\n } else {\n encodedParams += paramName + '&';\n }\n });\n encodedParams = encodedParams.slice(0, -1);\n url = url.replace(queryParamsString, encodedParams);\n }\n }\n return url;\n};\n\n/* capitalize the first-letter of the string passed */\nexport const initCaps = name => {\n if (!name) {\n return '';\n }\n return name.charAt(0).toUpperCase() + name.substring(1);\n};\n\n/* convert camelCase string to a space separated string */\nexport const spaceSeparate = name => {\n if (name === name.toUpperCase()) {\n return name;\n }\n return name.replace(REGEX.SNAKE_CASE, function (letter, pos) {\n return (pos ? ' ' : '') + letter;\n });\n};\n\n/*Replace the character at a particular index*/\nexport const replaceAt = (string, index, character) => string.substr(0, index) + character + string.substr(index + character.length);\n\n/*Replace '.' with space and capitalize the next letter*/\nexport const periodSeparate = name => {\n let dotIndex;\n dotIndex = name.indexOf('.');\n if (dotIndex !== -1) {\n name = replaceAt(name, dotIndex + 1, name.charAt(dotIndex + 1).toUpperCase());\n name = replaceAt(name, dotIndex, ' ');\n }\n return name;\n};\n\nexport const prettifyLabel = label => {\n label = camelCase(label);\n /*capitalize the initial Letter*/\n label = initCaps(label);\n /*Convert camel case words to separated words*/\n label = spaceSeparate(label);\n /*Replace '.' with space and capitalize the next letter*/\n label = periodSeparate(label);\n return label;\n};\n\nexport const deHyphenate = (name) => {\n return name.split('-').join(' ');\n};\n\n/*Accepts an array or a string separated with symbol and returns prettified result*/\nexport const prettifyLabels = (names, separator = ',') => {\n let modifiedNames, namesArray = [];\n\n if (!isArray(names)) {\n namesArray = split(names, separator);\n }\n\n modifiedNames = map(namesArray, prettifyLabel);\n if (isArray(names)) {\n return modifiedNames;\n }\n return modifiedNames.join(separator);\n};\n\n/**\n * this method checks if a insecure content request is being made\n */\nexport const isInsecureContentRequest = (url: string): boolean => {\n\n const parser: HTMLAnchorElement = document.createElement('a');\n parser.href = url;\n\n // for relative urls IE returns the protocol as empty string\n if (parser.protocol === '') {\n return false;\n }\n\n // If the inputted source is a base64 url, do not throw insecure content error\n if (REGEX.DATA_URL.test(url)) {\n return false;\n }\n\n if (stringStartsWith(location.href, 'https://')) {\n return parser.protocol !== 'https:' && parser.protocol !== 'wss:';\n }\n\n return false;\n};\n\n/**\n * this method checks if a given string starts with the given string\n */\nexport const stringStartsWith = (str: string, startsWith: string, ignoreCase?): boolean => {\n if (!str) {\n return false;\n }\n\n const regEx = new RegExp('^' + startsWith, ignoreCase ? 'i' : '');\n\n return regEx.test(str);\n};\n\nexport const getEvaluatedExprValue = (object, expression) => {\n let val;\n /**\n * Evaluate the expression with the scope and object.\n * $eval is used, as expression can be in format of field1 + ' ' + field2\n * $eval can fail, if expression is not in correct format, so attempt the eval function\n */\n val = attempt(function () {\n\n const argsExpr = Object.keys(object).map((fieldName) => {\n return `var ${fieldName} = data['${fieldName}'];`;\n }).join(' ');\n const f = new Function('data', `${argsExpr} return ${expression}`);\n return f(object);\n });\n /**\n * $eval fails if field expression has spaces. Ex: 'field name' or 'field@name'\n * As a fallback, get value directly from object or scope\n */\n if (isError(val)) {\n val = get(object, expression);\n }\n return val;\n};\n\n/* functions for resource Tab*/\nexport const isImageFile = (fileName) => {\n return (REGEX.SUPPORTED_IMAGE_FORMAT).test(fileName);\n};\n\nexport const isAudioFile = (fileName) => {\n return (REGEX.SUPPORTED_AUDIO_FORMAT).test(fileName);\n};\n\nexport const isVideoFile = (fileName) => {\n return (REGEX.SUPPORTED_VIDEO_FORMAT).test(fileName);\n};\n\nexport const isValidWebURL = (url: string): boolean => {\n return (REGEX.VALID_WEB_URL).test(url);\n};\n\n/*This function returns the url to the resource after checking the validity of url*/\nexport const getResourceURL = (urlString) => {\n if (isValidWebURL(urlString)) {\n /*TODO: Use DomSanitizer*/\n // return sanitizer.bypassSecurityTrustResourceUrl(urlString);\n }\n return urlString;\n};\n\n/*function to check if fn is a function and then execute*/\nexport function triggerFn(fn, ...argmnts) {\n /* Use of slice on arguments will make this function not optimizable\n * https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n * */\n\n let start = 1;\n const len = arguments.length, args = new Array(len - start);\n for (start; start < len; start++) {\n args[start - 1] = arguments[start];\n }\n\n if (isFunction(fn)) {\n return fn.apply(null, args);\n }\n}\n\n/**\n * This method is used to get the formatted date\n */\nexport const getFormattedDate = (datePipe, dateObj, format, timeZone?, isTimeStampType?, isIntervalDateTime?, compInstance?): any => {\n if (!dateObj) {\n return undefined;\n }\n if (format === 'timestamp') {\n return moment(dateObj).valueOf();\n }\n\n if (format === 'UTC') {\n return new Date(dateObj).toISOString();\n }\n\n if (timeZone && timeZone !== moment.defaultZone?.name) {\n const momentFormat = format.replaceAll('y', 'Y').replaceAll('d', 'D').replace('a', 'A');\n if (isIntervalDateTime ) { // dates which are of type time widget (value is hh:mm:ss) but returned as date string from time comp\n return moment(dateObj).format(momentFormat);\n }\n if (isTimeStampType === 'datetimestamp') {\n dateObj = getMomentLocaleObject(timeZone, dateObj);\n return moment(dateObj).format(momentFormat);\n }\n }\n\n return datePipe.transform(dateObj, format, timeZone, compInstance);\n};\n\n/**\n * This method is used to check if the date has timezone information or not\n */\nexport const hasOffsetStr = (dateStr) => {\n if (typeof dateStr !== 'string') return;\n const matches = dateStr.match(REGEX.ISO_DATE_FORMAT);\n if (matches && matches[4]) {\n return true;\n }\n}\n\n/**\n * method to get the date object from the input received\n */\nexport const getDateObj = (value, options?, timezone?): Date => {\n // Handling localization\n if (options && options.pattern && options.pattern !== 'timestamp') {\n // Fix for WMS-19601, invalid date is returned on date selection.\n const isNativePicker = (options && options.hasOwnProperty('isNativePicker')) ? get(options, 'isNativePicker') : isMobile();\n const pattern = isNativePicker ? 'YYYY/MM/DD HH:mm:ss' : momentPattern(options.pattern);\n value = moment(value, pattern).toDate();\n }\n\n /*if the value is a date object, no need to covert it*/\n if (isDate(value)) {\n return value;\n }\n\n /*if the value is a timestamp string, convert it to a number*/\n if (!isNaN(value)) {\n value = parseInt(value, 10);\n }\n\n if (!moment(value).isValid() || value === '' || value === null || value === undefined) {\n return undefined;\n }\n let dateObj = new Date(value);\n /**\n * if date value is string \"20-05-2019\" then new Date(value) return 20May2019 with current time in India,\n * whereas this will return 19May2019 with time lagging for few hours.\n * This is because it returns UTC time i.e. Coordinated Universal Time (UTC).\n * To create date in local time use moment\n */\n if (isString(value)) {\n /*\n * If selected locale is Arabic, moment(value).format() is giving date in Arabic language\n * (Ex: If date value is \"1990-11-23\" and moment(value).format() is \"١٩٩٠-١١-٢٣T٠٠:٠٠:٠٠+٠٥:٣٠\")\n * and new Date(moment(value).format()) is giving Invalid Date. So frst converting it to timestamp value.\n */\n\n dateObj = !timezone ? new Date(moment(moment(value).format()).valueOf()) : getMomentLocaleObject(timezone, value);;\n }\n\n if (value === CURRENT_DATE || isNaN(dateObj.getDay())) {\n return now;\n }\n return dateObj;\n};\n\nexport const addEventListenerOnElement = (_element: Element, excludeElement: Element, nativeElement: Element, eventType, isDropDownDisplayEnabledOnInput, successCB, life: EVENT_LIFE, isCapture = false) => {\n const element: Element = _element;\n const eventListener = (event) => {\n if (excludeElement && (excludeElement.contains(event.target) || excludeElement === event.target)) {\n return;\n }\n if (nativeElement.contains(event.target)) {\n if ($(event.target).is('input') && !isDropDownDisplayEnabledOnInput) {\n return;\n }\n element.removeEventListener(eventType, eventListener, isCapture);\n return;\n }\n if (life === EVENT_LIFE.ONCE) {\n element.removeEventListener(eventType, eventListener, isCapture);\n }\n successCB();\n };\n element.addEventListener(eventType, eventListener, isCapture);\n const removeEventListener = () => {\n element.removeEventListener(eventType, eventListener, isCapture);\n };\n return removeEventListener;\n};\n\n/**\n * Returns a deep cloned replica of the passed object/array\n * @param object object/array to clone\n * @returns a clone of the passed object\n */\nexport const getClonedObject = (object) => {\n return cloneDeep(object);\n};\n\nexport const getFiles = (formName, fieldName, isList) => {\n const files = get(document.forms, [formName, fieldName, 'files']);\n return isList ? map(files, identity) : files && files[0];\n};\n\n/*Function to generate a random number*/\nfunction random() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n}\n\n/*Function to generate a guid based on random numbers.*/\nexport const generateGUId = () => {\n return random() + '-' + random() + '-' + random();\n};\n\n/**\n * Validate if given access role is in current loggedin user access roles\n */\nexport const validateAccessRoles = (roleExp, loggedInUser) => {\n let roles;\n\n if (roleExp && loggedInUser) {\n\n roles = roleExp && roleExp.split(',').map(Function.prototype.call, String.prototype.trim);\n\n return intersection(roles, loggedInUser.userRoles).length;\n }\n\n return true;\n};\n\nexport const getValidJSON = (content) => {\n if (!content) {\n return undefined;\n }\n try {\n const parsedIntValue = parseInt(content, 10);\n /*obtaining json from editor content string*/\n return isObject(content) || !isNaN(parsedIntValue) ? content : JSON.parse(content);\n } catch (e) {\n /*terminating execution if new variable object is not valid json.*/\n return undefined;\n }\n};\n\nexport const xmlToJson = (xmlString) => {\n const x2jsObj = new X2JS({ 'emptyNodeForm': 'content', 'attributePrefix': '', 'enableToStringFunc': false });\n let json = x2jsObj.xml2js(xmlString);\n if (json) {\n json = get(json, Object.keys(json)[0]);\n }\n return json;\n};\n\n/*\n * Util method to find the value of a key in the object\n * if key not found and create is true, an object is created against that node\n * Examples:\n * var a = {\n * b: {\n * c : {\n * d: 'test'\n * }\n * }\n * }\n * Utils.findValue(a, 'b.c.d') --> 'test'\n * Utils.findValue(a, 'b.c') --> {d: 'test'}\n * Utils.findValue(a, 'e') --> undefined\n * Utils.findValue(a, 'e', true) --> {} and a will become:\n * {\n * b: {\n * c : {\n * d: 'test'\n * }\n * },\n * e: {\n * }\n * }\n */\nexport const findValueOf = (obj, key, create?) => {\n\n if (!obj || !key) {\n return;\n }\n\n if (!create) {\n return get(obj, key);\n }\n\n const parts = key.split('.'),\n keys = [];\n\n let skipProcessing;\n\n parts.forEach((part) => {\n if (!parts.length) { // if the part of a key is not valid, skip the processing.\n skipProcessing = true;\n return false;\n }\n\n const subParts = part.match(/\\w+/g);\n let subPart;\n\n while (subParts.length) {\n subPart = subParts.shift();\n keys.push({ 'key': subPart, 'value': subParts.length ? [] : {} }); // determine whether to create an array or an object\n }\n });\n\n if (skipProcessing) {\n return undefined;\n }\n\n keys.forEach((_key) => {\n let tempObj = obj[_key.key];\n if (!isObject(tempObj)) {\n tempObj = getValidJSON(tempObj);\n if (!tempObj) {\n tempObj = _key.value;\n }\n }\n obj[_key.key] = tempObj;\n obj = tempObj;\n });\n\n return obj;\n};\n\n/*\n* extracts and returns the last bit from full typeRef of a field\n* e.g. returns 'String' for typeRef = 'java.lang.String'\n* @params: {typeRef} type reference\n*/\nexport const extractType = (typeRef: string): string => {\n let type;\n if (!typeRef) {\n return DataType.STRING;\n }\n type = typeRef && typeRef.substring(typeRef.lastIndexOf('.') + 1);\n type = type && type.toLowerCase();\n type = type === DataType.LOCALDATETIME ? DataType.DATETIME : type;\n return type;\n};\n\n/* returns true if the provided data type matches number type */\nexport const isNumberType = (type: any): boolean => {\n return (NUMBER_TYPES.indexOf(extractType(type).toLowerCase()) !== -1);\n};\n\n/* function to check if provided object is empty*/\nexport const isEmptyObject = (obj: any): boolean => {\n if (isObject(obj) && !isArray(obj)) {\n return Object.keys(obj).length === 0;\n }\n return false;\n};\n\n// Function expects an element on which the scrolling should be applied, Depending on the offset of the element scrollbar will be adjusted\nexport const scrollToElement = (element) => {\n const $element = $(element);\n const formPosition = $element.offset().top;\n const $scrollParent = $element.closest('[wmsmoothscroll=\"true\"]');\n if (isMobileApp() && $scrollParent.length) {\n const iScroll = get($scrollParent[0], 'iscroll');\n let to = -(formPosition - iScroll.y);\n to = (iScroll.maxScrollY > to) ? iScroll.maxScrollY : to;\n iScroll.scrollTo(0, to);\n } else {\n window.scroll({\n top: formPosition,\n left: 0,\n behavior: 'smooth'\n });\n }\n}\n\n// Function will return whether the given element is in viewport or not\nexport const isElementInViewport = (element) => {\n var rect = element.getBoundingClientRect();\n return (\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n );\n}\n\n/*Function to check whether the specified object is a pageable object or not.*/\nexport const isPageable = (obj: any): boolean => {\n const pageable = {\n 'content': [],\n 'first': true,\n 'last': true,\n 'number': 0,\n 'numberOfElements': 10,\n 'size': 20,\n 'sort': null,\n 'totalElements': 10,\n 'totalPages': 1\n };\n // paginated object may or may not contain 'empty' property. In either case, Pageable should return as true.\n const paginatedObj = omit(obj, 'empty');\n return (isEqual(keys(pageable), keys(paginatedObj).sort()));\n};\n\n/*\n * Util method to replace patterns in string with object keys or array values\n * Examples:\n * Utils.replace('Hello, ${first} ${last} !', {first: 'wavemaker', last: 'ng'}) --> Hello, wavemaker ng\n * Utils.replace('Hello, ${0} ${1} !', ['wavemaker','ng']) --> Hello, wavemaker ng\n * Examples if parseError is true:\n * Utils.replace('Hello, {0} {1} !', ['wavemaker','ng']) --> Hello, wavemaker ng\n */\nexport const replace = (template, map, parseError?: boolean) => {\n let regEx = REGEX.REPLACE_PATTERN;\n if (!template) {\n return;\n }\n if (parseError) {\n regEx = /\\{([^\\}]+)\\}/g;\n }\n\n return template.replace(regEx, function (match, key) {\n return get(map, key);\n });\n};\n\n/*Function to check if date time type*/\nexport const isDateTimeType = type => {\n if (includes(type, '.')) {\n type = toLower(extractType(type));\n }\n return includes([DataType.DATE, DataType.TIME, DataType.TIMESTAMP, DataType.DATETIME, DataType.LOCALDATETIME], type);\n};\n\nconst momentPattern = (pattern) => {\n if (includes(pattern, 'E')) {\n pattern = _replace(pattern, /E[,]?/g, '');\n }\n return _replace(pattern, /y*d*/g, (val) => val.toUpperCase());\n};\n\n/* This function returns date object. If val is undefined it returns invalid date */\nexport const getValidDateObject = (val, options?) => {\n const defaultMeridian = ['AM', 'PM'];\n const momentMeridian = moment()._locale.meridiem();\n // Updating localized meridians with default meridians when moment meridian is not defined\n if (options && options.meridians && includes(defaultMeridian, momentMeridian)) {\n forEach(options.meridians, (meridian, index) => {\n if (includes(val, meridian)) {\n val = val.replace(meridian, defaultMeridian[index]);\n }\n });\n }\n const isNativePicker = (options && options.hasOwnProperty('isNativePicker')) ? get(options, 'isNativePicker') : isMobile();\n const pattern = isNativePicker ? (get(options, 'pattern') || 'YYYY/MM/DD HH:mm:ss') : (momentPattern(get(options, 'pattern')) || '');\n // Handling localization\n if (options && options.pattern && options.pattern !== 'timestamp') {\n if (!isNaN((new Date(val)).getTime())) {\n // check whether val is a valid date or not\n if (isIos()) {\n // For iOS, explicitly setting the format to consider even the seconds.\n val = moment(val).format('YYYY/MM/DD HH:mm:ss');\n }\n val = moment(new Date(val), pattern);\n } else {\n val = moment(val, pattern);\n }\n val = val.toDate();\n }\n\n if (moment(val, pattern).isValid()) {\n // date with +5 hours is returned in safari browser which is not a valid date.\n // Hence converting the date to the supported format \"YYYY/MM/DD HH:mm:ss\" in IOS\n if (isIos()) {\n val = moment(moment(val).valueOf()).format('YYYY/MM/DD HH:mm:ss');\n }\n return val;\n }\n /*if the value is a timestamp string, convert it to a number*/\n if (!isNaN(val)) {\n val = parseInt(val, 10);\n } else {\n /*if the value is in HH:mm:ss format, it returns a wrong date. So append the date to the given value to get date*/\n if (!(new Date(val).getTime())) {\n val = moment((moment().format('YYYY-MM-DD') + ' ' + val), 'YYYY-MM-DD HH:mm:ss A');\n\n }\n }\n return new Date(moment(val).valueOf());\n};\n\n/* This function returns javascript date object*/\nexport const getNativeDateObject = (val, options?) => {\n val = getValidDateObject(val, options);\n return new Date(val);\n};\n\n\n/**\n * prepare a blob object based on the content and content type provided\n * if content is blob itself, simply returns it back\n * @param val\n * @param valContentType\n * @returns {*}\n */\nexport const getBlob = (val, valContentType?) => {\n if (val instanceof Blob) {\n return val;\n }\n const jsonVal = getValidJSON(val);\n if (jsonVal && jsonVal instanceof Object) {\n val = new Blob([JSON.stringify(jsonVal)], { type: valContentType || 'application/json' });\n } else {\n val = new Blob([val], { type: valContentType || 'text/plain' });\n }\n return val;\n};\n\n/**\n * This function returns true by comparing two objects based on the fields\n * @param obj1 object\n * @param obj2 object\n * @param compareBy string field values to compare\n * @returns {boolean} true if object equality returns true based on fields\n */\nexport const isEqualWithFields = (obj1, obj2, compareBy) => {\n // compareBy can be 'id' or 'id1, id2' or 'id1, id2:id3'\n // Split the compareby comma separated values\n let _compareBy = isArray(compareBy) ? compareBy : split(compareBy, ',');\n \n //@ts-ignore\n _compareBy = map(_compareBy, trim);\n\n return isEqualWith(obj1, obj2, function (o1, o2) {\n return every(_compareBy, function (cb) {\n let cb1, cb2, _cb;\n\n // If compareby contains : , compare the values by the keys on either side of :\n if (indexOf(cb, compareBySeparator) === -1) {\n cb1 = cb2 = trim(cb);\n } else {\n _cb = split(cb, compareBySeparator);\n cb1 = trim(_cb[0]);\n cb2 = trim(_cb[1]);\n }\n\n return get(o1, cb1) === get(o2, cb2);\n });\n });\n};\n\nconst getNode = selector => document.querySelector(selector);\n\n// function to check if the stylesheet is already loaded\nconst isStyleSheetLoaded = href => !!getNode(`link[href=\"${href}\"]`);\n\n// function to remove stylesheet if the stylesheet is already loaded\nconst removeStyleSheet = href => {\n const node = getNode(`link[href=\"${href}\"]`);\n if (node) {\n node.remove();\n }\n};\n\n// function to load a stylesheet\nexport const loadStyleSheet = (url, attr) => {\n if (isStyleSheetLoaded(url)) {\n return;\n }\n const link = document.createElement('link');\n link.href = url;\n // To add attributes to link tag\n if (attr && attr.name) {\n link.setAttribute(attr.name, attr.value);\n }\n link.setAttribute('rel', 'stylesheet');\n link.setAttribute('type', 'text/css');\n document.head.appendChild(link);\n return link;\n};\n\n// function to load stylesheets\nexport const loadStyleSheets = (urls = []) => {\n // if the first argument is not an array, convert it to an array\n if (!Array.isArray(urls)) {\n urls = [urls];\n }\n urls.forEach(loadStyleSheet);\n};\n\n// function to check if the script is already loaded\nconst isScriptLoaded = src => !!getNode(`script[src=\"${src}\"], script[data-src=\"${src}\"]`);\n\nexport const getMomentLocaleObject = (timeZone, dateObj?) => {\n if (dateObj) {\n return new Date(new Date(moment(dateObj).tz(timeZone).format()).toLocaleString(\"en-US\", {timeZone: timeZone}));\n } else {\n return new Date(new Date(moment().tz(timeZone).format()).toLocaleString(\"en-US\", {timeZone: timeZone}));\n }\n}\n\nexport const loadScript = async (url, loadViaScriptTag, cacheable = false) => {\n const _url = url.trim();\n if (!_url.length || isScriptLoaded(_url)) {\n return Promise.resolve();\n }\n\n if (loadViaScriptTag) {\n return new Promise<any>((resolve, reject)=>{\n let script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = _url;\n script.async = false;\n if (script.readyState) { //IE\n script.onreadystatechange = () => {\n if (script.readyState === \"loaded\" || script.readyState === \"complete\") {\n script.onreadystatechange = null;\n resolve(true);\n }\n };\n } else { //Other browsers\n script.onload = () => {\n resolve(true);\n };\n }\n script.onerror = (error: any) => reject(error);\n document.getElementsByTagName('head')[0].appendChild(script);\n });\n } else if(cacheable) {\n return $.ajax({\n dataType: 'script',\n cache: true,\n url: url\n }).done(response => response)\n .fail(reason => reason);\n } else {\n return $.getScript(url)\n .done(response => response)\n .fail(reason => reason);\n }\n};\n\nexport const loadScripts = async (urls = [], loadViaScriptTag = true) => {\n for (const url of urls) {\n await loadScript(url, loadViaScriptTag);\n }\n return Promise.resolve();\n};\n\nexport let _WM_APP_PROJECT: any = {};\n\n/**\n * This function sets session storage item based on the project ID\n * @param key string\n * @param value string\n */\nexport const setSessionStorageItem = (key, value) => {\n let item: any = window.sessionStorage.getItem(_WM_APP_PROJECT.id);\n\n if (item) {\n item = JSON.parse(item);\n } else {\n item = {};\n }\n item[key] = value;\n\n window.sessionStorage.setItem(_WM_APP_PROJECT.id, JSON.stringify(item));\n};\n\n/**\n * This function gets session storage item based on the project ID\n * @param key string\n */\nexport const getSessionStorageItem = key => {\n // sanity check for this to work with ng-codegen\n let item = window && window.sessionStorage && window.sessionStorage.getItem(_WM_APP_PROJECT.id);\n\n if (item) {\n item = JSON.parse(item);\n return item[key];\n }\n};\n\nexport const noop = (...args) => { };\n\n/**\n * This function returns a blob object from the given file path\n * @param filepath\n * @returns promise having blob object\n */\nexport const convertToBlob = (filepath): Promise<any> => {\n return new Promise<any>((resolve, reject) => {\n // Read the file entry from the file URL\n resolveLocalFileSystemURL(filepath, function (fileEntry) {\n fileEntry.file(function (file) {\n // file has the cordova file structure. To submit to the backend, convert this file to javascript file\n const reader = new FileReader();\n reader.onloadend = () => {\n const imgBlob = new Blob([reader.result], {\n 'type': file.type\n });\n resolve({ 'blob': imgBlob, 'filepath': filepath });\n };\n reader.onerror = reject;\n reader.readAsArrayBuffer(file);\n });\n }, reject);\n });\n};\n\nexport const hasCordova = () => {\n return !!window['cordova'];\n};\n\nexport const AppConstants = {\n INT_MAX_VALUE: 2147483647\n};\n\nexport const openLink = (link: string, target: string = '_self') => {\n if (hasCordova() && startsWith(link, '#')) {\n location.hash = link;\n } else {\n window.open(link, target);\n }\n};\n\n/* util function to load the content from a url */\nexport const fetchContent = (dataType, url: string, inSync: boolean = false, success?, error?): Promise<any> => {\n return $.ajax({ type: 'get', dataType: dataType, url: url, async: !inSync })\n .done(response => success && success(response))\n .fail(reason => error && error(reason));\n};\n\n/**\n * If the given object is a promise, then object is returned. Otherwise, a promise is resolved with the given object.\n * @param {Promise<T> | T} a\n * @returns {Promise<T>}\n */\nexport const toPromise = <T>(a: T | Promise<T>): Promise<T> => {\n if (a instanceof Promise) {\n return a;\n } else {\n return Promise.resolve(a as T);\n }\n};\n\n/**\n * This function invokes the given the function (fn) until the function successfully executes or the maximum number\n * of retries is reached or onBeforeRetry returns false.\n *\n * @param fn - a function that is needs to be invoked. The function can also return a promise as well.\n * @param interval - minimum time gap between successive retries. This argument should be greater or equal to 0.\n * @param maxRetries - maximum number of retries. This argument should be greater than 0. For all other values,\n * maxRetries is infinity.\n * @param onBeforeRetry - a callback function that will be invoked before re-invoking again. This function can\n * return false or a promise that is resolved to false to stop further retry attempts.\n * @returns {*} a promise that is resolved when fn is success (or) maximum retry attempts reached\n * (or) onBeforeRetry returned false.\n */\nexport const retryIfFails = (fn: () => any, interval: number, maxRetries: number, onBeforeRetry = () => Promise.resolve(false)) => {\n let retryCount = 0;\n const tryFn = () => {\n retryCount++;\n if (isFunction(fn)) {\n return fn();\n }\n };\n maxRetries = (isNumber(maxRetries) && maxRetries > 0 ? maxRetries : 0);\n interval = (isNumber(interval) && interval > 0 ? interval : 0);\n return new Promise((resolve, reject) => {\n const errorFn = function () {\n const errArgs = arguments;\n setTimeout(() => {\n toPromise<boolean>(onBeforeRetry()).then(function (retry) {\n if (retry !== false && (!maxRetries || retryCount <= maxRetries)) {\n toPromise(tryFn()).then(resolve, errorFn);\n } else {\n reject(errArgs);\n }\n }, () => reject(errArgs));\n }, interval);\n };\n toPromise(tryFn()).then(resolve, errorFn);\n });\n};\n\n/**\n * Promise of a defer created using this function, has abort function that will reject the defer when called.\n * @returns {*} angular defer object\n */\nexport const getAbortableDefer = () => {\n const _defer: any = {\n promise: null,\n reject: null,\n resolve: null,\n onAbort: () => { },\n isAborted: false\n };\n _defer.promise = new Promise((resolve, reject) => {\n _defer.resolve = resolve;\n _defer.reject = reject;\n });\n _defer.promise.abort = () => {\n triggerFn(_defer.onAbort);\n _defer.reject('aborted');\n _defer.isAborted = true;\n };\n return _defer;\n};\n\nexport const createCSSRule = (ruleSelector: string, rules: string) => {\n const stylesheet = document.styleSheets[0];\n stylesheet.insertRule(`${ruleSelector} { ${rules} }`);\n};\n\nexport const getUrlParams = (link) => {\n const params = {};\n // If url params are present, construct params object and pass it to search\n const index = link.indexOf('?');\n if (index !== -1) {\n const queryParams = split(link.substring(index + 1, link.length), '&');\n queryParams.forEach((param) => {\n let paramArray = split(param, '=');\n params[paramArray[0]] = paramArray[1];\n });\n }\n return params;\n};\n\nexport const getRouteNameFromLink = (link) => {\n link = link.replace('#/', '/');\n const index = link.indexOf('?');\n if (index !== -1) {\n link = link.substring(0, index);\n }\n return link;\n};\n\nexport const isAppleProduct = /Mac|iPod|iPhone|iPad/.test(window.navigator.platform);\n\nexport const defer = () => {\n const d = {\n promise: null,\n resolve: noop,\n reject: noop\n };\n d.promise = new Promise((resolve, reject) => {\n d.resolve = resolve;\n d.reject = reject;\n });\n return d;\n};\n\n/*\n * Invokes the given list of functions sequentially with the given arguments. If a function returns a promise,\n * then next function will be invoked only if the promise is resolved.\n */\nexport const executePromiseChain = (fns, args, d?, i?) => {\n d = d || defer();\n i = i || 0;\n if (i === 0) {\n fns = filter(fns, function (fn) {\n return !(isUndefined(fn) || isNull(fn));\n });\n }\n if (fns && i < fns.length) {\n try {\n toPromise(fns[i].apply(undefined, args))\n .then(() => executePromiseChain(fns, args, d, i + 1), d.reject);\n } catch (e) {\n d.reject(e);\n }\n } else {\n d.resolve();\n }\n return d.promise;\n};\n\n/**\n * This function accepts two data sources and will check if both are same by comparing the unique id and\n * context in which datasources are present\n * @returns {*} boolean true/ false\n */\nexport const isDataSourceEqual = (d1, d2) => {\n return d1.execute(DataSource.Operation.GET_UNIQUE_IDENTIFIER) === d2.execute(DataSource.Operation.GET_UNIQUE_IDENTIFIER) &&\n isEqual(d1.execute(DataSource.Operation.GET_CONTEXT_IDENTIFIER), d2.execute(DataSource.Operation.GET_CONTEXT_IDENTIFIER));\n};\n\n/**\n * checks if the passed datasource context matches with passed context\n * @param ds, datasource having a context\n * @param ctx, context to compare with\n * @returns {boolean}\n */\nexport const validateDataSourceCtx = (ds, ctx) => {\n return ds.execute(DataSource.Operation.GET_CONTEXT_IDENTIFIER) === ctx;\n};\n\n/**\n * This traverses the filterexpressions object recursively and process the bind string if any in the object\n * @param variable variable object\n * @param name name of the variable\n * @param context scope of the variable\n */\nexport const processFilterExpBindNode = (context, filterExpressions, variable?) => {\n const destroyFn = context.registerDestroyListener ? context.registerDestroyListener.bind(context) : _noop;\n const filter$ = new Subject();\n\n const bindFilExpObj = (obj, targetNodeKey) => {\n const listener = (newVal, oldVal) => {\n if ((newVal === oldVal && isUndefined(newVal)) || (isUndefined(newVal) && !isUndefined(oldVal))) {\n return;\n }\n // Skip cloning for blob column\n if (!includes(['blob', 'file'], obj.type)) {\n newVal = getClonedObject(newVal);\n }\n // backward compatibility: where we are allowing the user to bind complete object\n if (obj.target === 'dataBinding') {\n // remove the existing databinding element\n filterExpressions.rules = [];\n // now add all the returned values\n forEach(newVal, function (value, target) {\n filterExpressions.rules.push({\n 'target': target,\n 'value': value,\n 'matchMode': obj.matchMode || 'startignorecase',\n 'required': false,\n 'type': ''\n });\n });\n } else {\n // setting value to the root node\n obj[targetNodeKey] = newVal;\n }\n filter$.next({ filterExpressions, newVal });\n }\n\n if (stringStartsWith(obj[targetNodeKey], 'bind:')) {\n // [Todo-CSP]: needs a check, where is this used\n destroyFn(\n $watch(obj[targetNodeKey].replace('bind:', ''), context, {}, variable ? variable.invokeOnFiltertExpressionChange.bind(variable, obj, targetNodeKey) : listener, undefined, false, {arrayType: includes(['in', 'notin'], obj.matchMode)})\n );\n }\n };\n\n const traverseFilterExpressions = expressions => {\n if (expressions.rules) {\n forEach(expressions.rules, (filExpObj, i) => {\n if (filExpObj.rules) {\n traverseFilterExpressions(filExpObj);\n } else {\n if (filExpObj.matchMode === 'between') {\n bindFilExpObj(filExpObj, 'secondvalue');\n }\n bindFilExpObj(filExpObj, 'value');\n }\n });\n }\n };\n traverseFilterExpressions(filterExpressions);\n\n return filter$;\n};\n\n// This method will set the given proto on the target\nexport const extendProto = (target, proto) => {\n let _proto = Object.getPrototypeOf(target);\n while (Object.getPrototypeOf(_proto).constructor !== Object) {\n _proto = Object.getPrototypeOf(_proto);\n // return if the prototype of created component and prototype of context are same\n if (proto === _proto) {\n return;\n }\n }\n Object.setPrototypeOf(_proto, proto);\n};\n\nexport const removeExtraSlashes = function (url) {\n const base64regex = /^data:image\\/([a-z]{2,});base64,/;\n if (isString(url)) {\n /*\n * support for mobile apps having local file path url starting with file:/// and\n * support for base64 format\n * */\n if (startsWith(url, 'file:///') || base64regex.test(url)) {\n return url;\n }\n return url.replace(new RegExp('([^:]\\/)(\\/)+', 'g'), '$1');\n }\n};\n\n$.cachedScript = (() => {\n const inProgress = new Map();\n const resolved = new Set();\n\n const isInProgress = url => inProgress.has(url);\n const isResolved = url => resolved.has(url);\n const onLoad = url => {\n resolved.add(url);\n inProgress.get(url).resolve();\n inProgress.delete(url);\n };\n\n const setInProgress = url => {\n let resFn;\n let rejFn;\n const promise: any = new Promise((res, rej) => {\n resFn = res;\n rejFn = rej;\n });\n\n promise.resolve = resFn;\n promise.reject = rejFn;\n\n inProgress.set(url, promise);\n };\n\n return function (url) {\n if (isResolved(url)) {\n return Promise.resolve();\n }\n\n if (isInProgress(url)) {\n return inProgress.get(url);\n }\n\n setInProgress(url);\n\n const options = {\n dataType: 'script',\n cache: true,\n url\n };\n\n $.ajax(options).done(() => onLoad(url));\n\n return inProgress.get(url);\n };\n})();\n\nconst DEFAULT_DISPLAY_FORMATS = {\n DATE: 'yyyy-MM-dd',\n TIME: 'hh:mm a',\n TIMESTAMP: 'yyyy-MM-dd hh:mm:ss a',\n DATETIME: 'yyyy-MM-dd hh:mm:ss a',\n};\n// This method returns the display date format for given type\nexport const getDisplayDateTimeFormat = type => {\n return DEFAULT_DISPLAY_FORMATS[toUpper(type)];\n};\n\n// Generate for attribute on label and ID on input element, so that label elements are associated to form controls\nexport const addForIdAttributes = (element: HTMLElement) => {\n const labelEl = element.querySelectorAll('label.control-label');\n let inputEl = element.querySelectorAll('[focus-target]');\n if (!inputEl.length) {\n inputEl = element.querySelectorAll('input, select, textarea');\n }\n /*if there are only one input el and label El add id and for attribute*/\n if (labelEl.length && inputEl.length) {\n const widgetId = $(inputEl[0] as HTMLElement).closest('[widget-id]').attr('widget-id');\n if (widgetId) {\n setAttr(inputEl[0] as HTMLElement, 'id', widgetId);\n setAttr(labelEl[0] as HTMLElement, 'for', widgetId);\n }\n }\n /*Adding aria-labelledby to radioset, checkboxset widgets*/\n const ulEl = element.querySelectorAll('ul');\n if (labelEl.length && ulEl.length && (ulEl[0].getAttribute('role') === 'radiogroup' || ulEl[0].getAttribute('role') === 'group')) {\n const widgetId = 'wm-group-label-' + generateGUId();\n setAttr(ulEl[0] as HTMLElement, 'aria-labelledby', widgetId);\n setAttr(labelEl[0] as HTMLElement, 'id', widgetId);\n }\n};\n\n/**\n * This method is used to adjust the container position\n * For example: 1. When datepicker control placed closed to the screen left edges, it is going to negative values which is cutting the container.\n * To Fix the container overlapping issue changing the contrainer left translation to 0\n * @param containerElem - picker/dropdown container element(jquery)\n * @param parentElem - widget native element\n * @param ref - scope of particular library directive\n * @param ele - Child element(jquery). For some of the widgets(time, search) containerElem doesn't have height. The inner element(dropdown-menu) has height so passing it as optional.\n */\nexport const adjustContainerPosition = (containerElem, parentElem, ref, ele?) => {\n const zoneRef = ref._ngZone || ref.ngZone;\n zoneRef.onStable.subscribe(() => {\n const containerEleTransformations = getWebkitTraslationMatrix(containerElem);\n if (containerEleTransformations.m41 < 0) {\n containerEleTransformations.m41 = 0;\n } else {\n return;\n }\n setTranslation3dPosition(containerElem, containerEleTransformations);\n });\n };\n\n\n/**\n * This method is used to adjust the container position\n * For example: 1. When datepicker control placed closed to the screen right edges, it is going to out of the viewport values which is cutting the container.\n * @param containerElem picker/dropdown container element(jquery)\n * @param parentElem widget native element\n * @param ref scope of particular library directive\n * @param ele Child element(jquery). For some of the widgets(time, search) containerElem doesn't have height. The inner element(dropdown-menu) has height so passing it as optional.\n */\n export const adjustContainerRightEdges = (containerElem, parentElem, ref, ele?) => {\n const containerWidth = ele ? parseInt(ele.css('width')) : parseInt(containerElem.css('width'));\n const viewPortWidth = $(window).width() + window.scrollX;\n const parentDimesion = parentElem.getBoundingClientRect();\n const parentRight = parentDimesion.right + window.scrollX;\n let newLeft;\n const zoneRef = ref._ngZone || ref.ngZone;\n zoneRef.onStable.subscribe(() => {\n const containerEleTransformations = getWebkitTraslationMatrix(containerElem);\n\n if (viewPortWidth - (parentRight + parentDimesion.width) < containerWidth) {\n newLeft = parentRight - containerWidth;\n if (newLeft < 0) {\n newLeft = 0;\n }\n containerEleTransformations.m41 = newLeft;\n } else {\n return;\n }\n setTranslation3dPosition(containerElem, containerEleTransformations);\n });\n };\n\n /**\n * For given element set the traslation\n * @param containerElem tanslated element\n *\n * @param containerEleTransformations translate matrix positions\n */\n export const setTranslation3dPosition = (containerElem, containerEleTransformations) => {\n const translatePosition = 'translate3d(' + containerEleTransformations.m41 + 'px, ' + containerEleTransformations.m42 + 'px, 0px)';\n containerElem[0].style.webkitTransform = translatePosition;\n containerElem[0].style.MozTransform = translatePosition;\n containerElem[0].style.msTransform = translatePosition;\n containerElem[0].style.OTransform = translatePosition;\n containerElem[0].style.transform = translatePosition;\n };\n\n /**\n *\n * @param containerElem elemet for the WebKitCSSMatrix\n */\n export const getWebkitTraslationMatrix = (containerElem) => {\n if (typeof WebKitCSSMatrix === 'undefined') {\n return new MSCSSMatrix(window.getComputedStyle(containerElem[0]).transform);\n }\n return new WebKitCSSMatrix(window.getComputedStyle(containerElem[0]).webkitTransform);\n }\n\n// close all the popovers.\nexport const closePopover = (element) => {\n if (!element.closest('.app-popover').length) {\n const popoverElements = document.querySelectorAll('.app-popover-wrapper');\n forEach(popoverElements, (ele) => {\n if (ele.widget.isOpen) {\n ele.widget.isOpen = false;\n }\n });\n }\n};\n\n/**\n * This method is to trigger change detection in the app\n * This is exposed for the end user developer of WM app\n * This is the alternative for $rs.$safeApply() in AngularJS\n * See $appDigest in utils for more info\n */\nexport const detectChanges = $appDigest;\n\n/**\n * This method is to trigger the action/link of menu/nav item\n * @param scope - scope of the widget\n * @param item - item object\n */\nexport const triggerItemAction = (scope, item) => {\n let itemLink = item.link;\n const itemAction = item.action;\n const linkTarget = item.target;\n if (itemAction) {\n if (!scope.itemActionFn) {\n //[Todo-CSP]: This will not work as function will be dynamic\n scope.itemActionFn = $parseEvent(itemAction);\n }\n\n scope.itemActionFn(scope.userDefinedExecutionContext, Object.create(item));\n }\n if (itemLink) {\n if (itemLink.startsWith('#/') && (!linkTarget || linkTarget === '_self')) {\n const queryParams = getUrlParams(itemLink);\n itemLink = getRouteNameFromLink(itemLink);\n const router = get(scope, 'route') || get(scope, 'menuRef.route');\n router.navigate([itemLink], { queryParams });\n } else {\n openLink(itemLink, linkTarget);\n }\n }\n};\n\n/**\n * This method is to get datsource from the expression\n * @param expr - expression of the dataset\n * @param scope - scope of the widget\n * Example1: expr - \"Variables.staticVar1.dataSet.details[$i].addresses\" then the method will return datasource as Variables.staticVar1\n * Example2: expr - \"Widgets.list1.currentItem.addresses\" and list1 is bound to \"Variables.staticVar1.dataSet.details\" then the method will return datasource as Variables.staticVar1\n */\nexport const getDatasourceFromExpr = (expr, scope) => {\n const isBoundToVariable = startsWith(expr, 'Variables.');\n const isBoundToWidget = startsWith(expr, 'Widgets.');\n const parts = expr.split('.');\n if (isBoundToVariable) {\n return get(scope.viewParent.Variables, parts[1]);\n }\n if (isBoundToWidget) {\n const widgetScope = get(scope.viewParent.Widgets, parts[1]);\n const widgetDatasetBoundExpr = widgetScope.$attrs.get('datasetboundexpr');\n let widgetBoundExpression;\n widgetBoundExpression = (!widgetScope.datasource && widgetDatasetBoundExpr) ? widgetDatasetBoundExpr : widgetScope.binddataset;\n return getDatasourceFromExpr(widgetBoundExpression, widgetScope);\n }\n};\n\n/**\n * This method is to get dataset bound expression from list currentitem expression\n * @param expr - bound dataset expression\n * @param scope - scope of the widget\n * Example1: expr - \"Widgets.list1.currentItem.details\" and list1 is bound to \"Variables.staticVar1.dataSet\" then it returns expression as \"Variables.staticVar1.dataSet[$i].details\"\n */\nexport const extractCurrentItemExpr = (expr, scope) => {\n const currentItemRegEx = /^Widgets\\..*\\.currentItem/g;\n if (currentItemRegEx.test(expr)) {\n const parts = expr.split('.');\n const widgetScope = get(scope.viewParent.Widgets, parts[1]);\n const widgetDatasetBoundExpr = widgetScope.$attrs.get('datasetboundexpr');\n if (!widgetScope.datasource && widgetDatasetBoundExpr) {\n expr = expr.replace(/^Widgets\\..*\\.currentItem/g, `${widgetDatasetBoundExpr}[$i]`);\n return extractCurrentItemExpr(expr, scope);\n } else {\n expr = expr.replace(/^Widgets\\..*\\.currentItem/g, `${widgetScope.binddataset}[$i]`);\n }\n }\n return expr;\n};\n\n// this will add the html tag to the widget to scope the css to the page.\nexport const findRootContainer = ($el) => {\n let root = $el.closest('.app-prefab');\n if (!root.length) {\n root = $el.closest('.app-partial');\n }\n if(!root.length) {\n root = $el.closest('.app-spa-page');\n }\n if (!root.length) {\n root = $el.closest('.app-page');\n }\n return root.length && root.parent()[0].tagName;\n};\n\nexport const VALIDATOR = {\n REQUIRED: 'required',\n MAXCHARS: 'maxchars',\n MINVALUE: 'minvalue',\n MAXVALUE: 'maxvalue',\n REGEXP: 'regexp',\n MINDATE: 'mindate',\n MAXDATE: 'maxdate',\n MINTIME: 'mintime',\n MAXTIME: 'maxtime',\n EXCLUDEDATES: 'excludedates',\n EXCLUDEDAYS: 'excludedays'\n};\n\nexport const transformFileURI = (url) => {\n if (isString(url) && hasCordova() && url.startsWith('file://')) {\n if (isIos()) {\n return url.replace('file://', '/_app_file_');\n } else if (isAndroid() && location.href.startsWith('http')) {\n if (url.startsWith(cordova.file.applicationDirectory)) {\n return url.replace(cordova.file.applicationDirectory + 'www', '');\n } else if (url.startsWith('file://')) {\n return url.replace('file://', '/_app_file_');\n }\n }\n }\n return url;\n};\n\nexport const appendScriptToHead = (callback) =>{\n\n const scriptele = document.createElement('script');\n scriptele.onload = () => {\n callback(WM_CUSTOM_FORMATTERS);\n };\n scriptele.onerror = err => {\n console.warn('Error while loading the file ' + scriptele.src + '\\n' + err);\n };\n scriptele.type = 'text/javascript';\n scriptele.src = './extensions/formatters.js';\n document.head.appendChild(scriptele);\n};\n\nexport const getAppSetting = (key, defaultValue) => {\n return (_WM_APP_PROPERTIES.extra_settings && get(_WM_APP_PROPERTIES.extra_settings, key)) || defaultValue;\n};\n\n/* this function sets the itemclass depending on itemsperrow.\n * if itemsperrow is 2 for large device, then itemclass is 'col-xs-1 col-sm-1 col-lg-2'\n * if itemsperrow is 'lg-3' then itemclass is 'col-lg-3'\n*/\nexport const setListClass = (scope) => {\n let temp = '';\n if (scope.itemsperrow) {\n if (isNaN(parseInt(scope.itemsperrow, 10))) {\n // handling itemsperrow containing string of classes\n split(scope.itemsperrow, ' ').forEach((cls: string) => {\n const keys = split(cls, '-');\n cls = `${keys[0]}-${(12 / parseInt(keys[1], 10))}`;\n temp += ` col-${cls}`;\n });\n scope.itemsPerRowClass = temp.trim();\n } else {\n // handling itemsperrow having integer value.\n scope.itemsPerRowClass = `col-xs-${(12 / parseInt(scope.itemsperrow, 10))}`;\n }\n } else { // If itemsperrow is not specified make it full width\n scope.itemsPerRowClass = 'col-xs-12';\n }\n};\n\nexport const findParent = (lView: any, viewParentApp?: any) => {\n let parent = findViewParent(lView);\n return parent ? parent : viewParentApp;\n}\n\nexport const findViewParent = (lView: any) => {\n return lView[15] ? lView[15][8] : lView[15];\n /*if(lView[3] === null) {\n return lView[8];\n }\n let parentlView = lView[3];\n if(typeof lView[1] === \"boolean\") {\n return findViewParent(parentlView);\n }\n let componentType = lView[1][\"type\"];\n if(componentType === 0 || componentType === 1) {\n let p = lView[8];\n // ts-ignore\n if(p.hasOwnProperty(\"isDialogComponent\") || p.hasOwnProperty(\"isContainerDirective\")) {\n return findViewParent(parentlView);\n } else {\n return p;\n }\n } else {\n return findViewParent(parentlView);\n }*/\n}\n\n/*export const getParent = (parent: any) => {\n if(parent.hasOwnProperty(\"isDynamicComponent\") || parent.hasOwnProperty(\"isPageComponent\")) {\n return parent\n } else{\n return parent.viewParent ? getParent(parent.viewParent) : parent;\n }\n\n}*/\n","import { Subject } from 'rxjs';\n\nimport { isObject, noop } from './utils';\n\nexport class EventNotifier {\n\n private _subject = new Subject();\n private _isInitialized = false;\n private _eventsBeforeInit = [];\n\n constructor(start = true) {\n if (start) {\n this.start();\n }\n }\n\n /**\n * A event can be fired, but will be sent to subscribers only after exchange is started.\n *\n * @param {string} eventName\n * @param data\n */\n public notify(eventName: string, ...data: Array<any>) {\n if (this._isInitialized) {\n this._subject.next({\n name: eventName,\n data: data\n });\n } else {\n this._eventsBeforeInit.push({\n name: eventName,\n data: data\n });\n }\n }\n\n /**\n * starts the exchange and send the pending events to subscribers.\n */\n public start() {\n if (!this._isInitialized) {\n this._isInitialized = true;\n this._eventsBeforeInit.forEach((event) => this._subject.next(event));\n }\n }\n\n /**\n * upon subscription, method to cancel subscription is returned.\n *\n * @param eventName\n * @param {(data: any) => void} callback\n * @returns {() => void}\n */\n public subscribe(eventName, callback: (...data: Array<any>) => void): () => void {\n let eventListener;\n if (eventName && callback) {\n eventListener = this._subject\n .subscribe((event: any) => {\n if (event && isObject(event) && event.name === eventName) {\n callback.apply(undefined, event.data);\n }\n });\n return () => {\n eventListener.unsubscribe();\n };\n }\n return noop;\n }\n\n public destroy(): void {\n this._subject.complete();\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { EventNotifier } from '../utils/event-notifier';\nimport { isAndroid, isAndroidTablet, isIos, isIpad } from '../utils/utils';\nimport {get} from \"lodash-es\";\n\nlet MINIMUM_MOBILE_WIDTH = 480;\nlet MINIMUM_TAB_WIDTH = 768;\nlet MINIMUM_LARGE_SCREEN_WIDTH = 1200;\n\nconst enum SCREEN_TYPE {\n MOBILE,\n TABLET,\n LARGE_SCREEN_DEVICES\n}\n\nexport class IViewportService {\n notify: (eventname: ViewportEvent, options?: Array<any>) => void;\n subscribe: (eventname: ViewportEvent, callback: (data: any) => void) => void;\n}\n\nexport const enum ViewportEvent {\n ORIENTATION_CHANGE = 'orientationchange',\n RESIZE = 'resize'\n}\n\n@Injectable({providedIn: 'root'})\nexport class Viewport implements IViewportService, OnDestroy {\n public orientation = {\n isPortrait: false,\n isLandscape: false\n };\n public isMobileType = false;\n public isTabletType = false;\n private type;\n public _eventNotifier = new EventNotifier(true);\n private screenWidth;\n private screenHeight;\n private selectedViewPort: any;\n\n constructor() {\n this.setScreenType();\n\n window.addEventListener(ViewportEvent.RESIZE, this.resizeFn.bind(this));\n\n const query = window.matchMedia('(orientation: portrait)');\n if (query.matches) {\n this.orientation.isPortrait = true;\n } else {\n this.orientation.isLandscape = true;\n }\n\n // Add a media query change listener\n // addEventListener is not supported ios browser\n if (query.addEventListener) {\n query.addEventListener('change', $event => this.orientationChange($event, !$event.matches));\n }\n }\n\n update(selectedViewPort: Object) {\n this.selectedViewPort = selectedViewPort;\n this.setScreenType();\n }\n\n private orientationChange($event, isLandscape) {\n if (isLandscape !== this.orientation.isLandscape) {\n this.orientation.isPortrait = !isLandscape;\n this.orientation.isLandscape = isLandscape;\n this.notify(ViewportEvent.ORIENTATION_CHANGE, { $event, data: {isPortrait: !isLandscape, isLandscape: isLandscape} });\n }\n }\n\n private resizeFn($event) {\n this.setScreenType();\n this.orientationChange($event, this.screenWidth >= this.screenHeight);\n this.notify(ViewportEvent.RESIZE, {$event, data: {screenWidth: this.screenWidth, screenHeight: this.screenHeight}});\n }\n\n public subscribe(eventName, callback: (data: any) => void): () => void {\n return this._eventNotifier.subscribe(eventName, callback);\n }\n\n public notify(eventName: string, ...data: Array<any>) {\n this._eventNotifier.notify.apply(this._eventNotifier, arguments);\n }\n\n private setScreenType() {\n const $el = document.querySelector('.wm-app');\n this.screenWidth = $el.clientWidth;\n this.screenHeight = $el.clientHeight;\n\n var minValue = this.screenWidth < this.screenHeight ? this.screenWidth : this.screenHeight;\n var maxValue = this.screenWidth > this.screenHeight ? this.screenWidth : this.screenHeight;\n\n this.isTabletType = false;\n this.isMobileType = false;\n\n if (get(this.selectedViewPort, 'deviceCategory')) {\n const deviceCategory = this.selectedViewPort.deviceCategory;\n if (deviceCategory === 'Tab') {\n this.isTabletType = true;\n } else if (deviceCategory === 'Smartphone') {\n this.isMobileType = true;\n }\n } else {\n MINIMUM_MOBILE_WIDTH = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--screen-xs')) || 480;\n MINIMUM_TAB_WIDTH = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--screen-sm')) || 768;\n MINIMUM_LARGE_SCREEN_WIDTH = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--screen-lg')) || 1200;\n if (this.screenWidth >= MINIMUM_LARGE_SCREEN_WIDTH) {\n this.isTabletType = isAndroid() || isIos() || isAndroidTablet();\n this.isMobileType = false;\n } else if (this.screenWidth >= MINIMUM_TAB_WIDTH) {\n this.type = SCREEN_TYPE.TABLET;\n this.isTabletType = true;\n } else {\n this.type = SCREEN_TYPE.MOBILE;\n this.isMobileType = true;\n }\n }\n }\n\n ngOnDestroy() {\n this._eventNotifier.destroy();\n window.removeEventListener('resize', this.resizeFn);\n }\n}\n","import { Injectable} from '@angular/core';\nimport { VALIDATOR } from '../utils/utils';\n\n@Injectable({providedIn: 'root'})\nexport class ConstantService {\n MATCH_MODES = {\n STARTS_WITH_IGNORE_CASE: 'startignorecase',\n STARTS_WITH: 'start',\n ENDS_WITH_IGNORE_CASE: 'endignorecase',\n ENDS_WITH: 'end',\n CONTAINS: 'anywhere',\n CONTAINS_IGNORE_CASE: 'anywhereignorecase',\n IS_EQUAL_WITH_IGNORE_CASE: 'exactignorecase',\n IS_EQUAL: 'exact'\n };\n\n VALIDATOR = VALIDATOR;\n}\n","import { Injectable } from '@angular/core';\n\nimport * as Utils from '../utils/utils';\nimport {assign} from \"lodash-es\";\n\n@Injectable({providedIn: 'root'})\nexport class UtilsService {\n constructor() {\n assign(this, Utils);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {assign} from \"lodash-es\";\n\n@Injectable({providedIn: 'root'})\nexport class FieldTypeService {\n constructor() {\n assign(this, {\n INTEGER : 'integer',\n BIG_INTEGER : 'big_integer',\n SHORT : 'short',\n FLOAT : 'float',\n BIG_DECIMAL : 'big_decimal',\n DOUBLE : 'double',\n LONG : 'long',\n BYTE : 'byte',\n STRING : 'string',\n CHARACTER : 'character',\n TEXT : 'text',\n DATE : 'date',\n TIME : 'time',\n TIMESTAMP : 'timestamp',\n DATETIME : 'datetime',\n BOOLEAN: 'boolean',\n LIST : 'list',\n CLOB : 'clob',\n BLOB : 'blob'\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport {assign} from \"lodash-es\";\n\n@Injectable({providedIn: 'root'})\nexport class FieldWidgetService {\n constructor() {\n assign(this, {\n TEXT : 'text',\n NUMBER : 'number',\n TEXTAREA : 'textarea',\n PASSWORD : 'password',\n CHECKBOX : 'checkbox',\n SLIDER : 'slider',\n RICHTEXT : 'richtext',\n CURRENCY : 'currency',\n SWITCH : 'switch',\n SELECT : 'select',\n CHECKBOXSET : 'checkboxset',\n RADIOSET : 'radioset',\n DATE : 'date',\n TIME : 'time',\n TIMESTAMP : 'timestamp',\n UPLOAD : 'upload',\n RATING : 'rating',\n DATETIME : 'datetime',\n AUTOCOMPLETE : 'autocomplete',\n CHIPS : 'chips',\n COLORPICKER : 'colorpicker'\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { _WM_APP_PROJECT } from '../utils/utils';\n\ninterface Scripts {\n name: string;\n src: string;\n}\n\nexport const ScriptStore: Scripts[] = [];\n\ndeclare var document: any;\n\n@Injectable({providedIn: 'root'})\nexport class ScriptLoaderService {\n\n private scripts: any = {};\n private pathMappings;\n\n constructor(private http: HttpClient) {\n ScriptStore.forEach((script: any) => {\n this.scripts[script.name] = {\n loaded: false,\n src: script.src\n };\n });\n }\n\n load(...scripts: string[]): Promise<any> {\n if (scripts && scripts.length) {\n return Promise.resolve()\n .then(() => this.pathMappings || this.loadPathMappings())\n .then(() => {\n return Promise.all(scripts.map( s => {\n return this.loadScript(s);\n }));\n });\n }\n return Promise.resolve();\n }\n\n private loadPathMappings() {\n const path = (_WM_APP_PROJECT.cdnUrl || _WM_APP_PROJECT.ngDest) + 'path_mapping.json';\n return this.http.get(path).toPromise().then((data) => {\n this.pathMappings = data;\n }, () => {\n this.pathMappings = {};\n })\n }\n\n private loadScript(name: string) {\n return new Promise((resolve, reject) => {\n if (this.scripts[name] && this.scripts[name].loaded) {\n resolve({ script: name, loaded: true });\n return;\n } else if (!this.scripts[name]) {\n this.scripts[name] = {\n loaded: false,\n src: name\n };\n }\n //load script\n let script = document.createElement('script');\n script.type = 'text/javascript';\n script.async = false;\n let src = this.scripts[name].src;\n src = this.pathMappings[src] || src;\n if (src.startsWith(\"http\")) {\n script.src = src;\n } else {\n script.src = (_WM_APP_PROJECT.cdnUrl || _WM_APP_PROJECT.ngDest) + src;\n }\n if (script.readyState) { //IE\n script.onreadystatechange = () => {\n if (script.readyState === \"loaded\" || script.readyState === \"complete\") {\n script.onreadystatechange = null;\n this.scripts[name].loaded = true;\n resolve({script: name, loaded: true });\n }\n };\n } else { //Others\n script.onload = () => {\n this.scripts[name].loaded = true;\n resolve({script: name, loaded: true });\n };\n }\n script.onerror = (error: any) => resolve({script: name, loaded: false, status: 'Loaded'});\n document.getElementsByTagName('head')[0].appendChild(script);\n });\n }\n\n}\n","import { Injectable } from \"@angular/core\";\n\n@Injectable({ providedIn: 'root' })\nexport class CustomPipeManager {\n private customPipes: any = new Map();\n\n public setCustomPipe(key: string, value: any) {\n this.customPipes.set(key, value);\n }\n\n public getCustomPipe(key: string) {\n return this.customPipes.get(key);\n }\n\n public hasCustomPipe(key: string): boolean {\n return this.customPipes.has(key);\n }\n\n\n}\n\n","import { inject, Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { loadStyleSheets } from \"../utils/utils\";\n\n@Injectable({providedIn: 'root'})\nexport class CustomIconsLoaderService {\n private http = inject(HttpClient);\n load() {\n this.http.get('./font.config.js', {responseType: 'text'}).subscribe((fontConfig: any) => {\n const cssPaths = [],\n regex = /\"csspath\":\\s*\"([^\"]+)\"/g;\n let match;\n while ((match = regex.exec(fontConfig)) !== null) {\n cssPaths.push(match[1]);\n }\n loadStyleSheets(cssPaths);\n }, (error) => {});\n }\n}\n\n","import { Injectable } from '@angular/core';\nimport {clone, get, includes, isArray, isEmpty, isObject, merge} from \"lodash-es\";\n\n@Injectable({ providedIn: 'root' })\nexport class StatePersistence {\n private HISTORY_HANDLER = 'replace';\n private HISTORY_HANDLER_TYPES = {'push': 'pushState', 'replace': 'replaceState'};\n private WIDGET_STATE_KEY = 'ws';\n\n /**\n * Sets the passed value as the History handler if it exists in the History_Handler_Types object\n * @param val\n */\n public setHistoryHandler(val) {\n if (Object.keys(this.HISTORY_HANDLER_TYPES).indexOf(val) > -1) {\n this.HISTORY_HANDLER = val;\n }\n }\n\n /**\n * Constructs a unique key for setting state param by using the viewParent property of a widget\n * so that name conflicts are avoided when the same widget name is\n * present inside a Page, a Partial within a Page or a Prefab within a Page and so on.\n * E.g.:\n * if a page has a tabs widget with the name tabs1, a partial Partial1(inside container1) inclusion within which\n * there is a tabs with name tabs1 and a prefab MyPrefab inclusion with a tabs widget with the name tabs1,\n * getNestedPath will return tabs1, container1.Partial1.tabs1 and MyPrefab1.MyPrefab.tabs1 respectively.\n * @param viewParent\n * @param widgetName\n * @param currentOutput\n */\n public getNestedPath(viewParent: any, widgetName: string, currentOutput?: string) {\n let out = currentOutput || widgetName;\n if (viewParent && (viewParent.prefabName || viewParent.partialName)) {\n out = out.length > 0 ? out + '.' + (viewParent.prefabName || viewParent.partialName) : (viewParent.prefabName || viewParent.partialName);\n // same partial/prefab can be dropped multiple times in a page. Appending container's name for uniqueness.\n out = out + '.' + viewParent.containerWidget.name;\n return this.getNestedPath(viewParent.containerWidget.viewParent, widgetName, out);\n }\n return out.split('.').reverse().join('.');\n }\n\n /**\n * Decodes and parses the state information and returns the parsed state object\n * @param mode : optional parameter if the widget/variable uses a state handling mode(url, local storage, session storage)\n * other than the project level mode\n */\n public getStateInformation(mode) {\n let parsedStateInfo, stateInfo;\n if (mode.toLowerCase() === 'url') {\n const decodedURI = decodeURIComponent(window.location.href);\n stateInfo = decodedURI.match(/(wm_state=).*?(&|$)/);\n if (stateInfo) {\n stateInfo = stateInfo[0].replace('wm_state=', '');\n parsedStateInfo = this.uriToJson(stateInfo);\n return parsedStateInfo;\n }\n } else if (mode.toLowerCase() === 'localstorage') {\n stateInfo = localStorage.getItem(window.location.pathname.replace(/\\//g, '') + '_wm_state');\n } else if (mode.toLowerCase() === 'sessionstorage') {\n stateInfo = sessionStorage.getItem(window.location.pathname.replace(/\\//g, '') + '_wm_state');\n }\n if (stateInfo) {\n parsedStateInfo = JSON.parse(stateInfo);\n return parsedStateInfo;\n }\n\n return;\n }\n\n /**\n * Checks if the passed widget instance has any state information available or not\n * @param widget\n * @param mode : optional parameter if the widget uses a state handling mode(url, local storage, session storage)\n * other than the project level mode\n */\n public getWidgetState(widget, mode?) {\n mode = mode || this.computeMode(widget.statehandler);\n if (!mode) {\n return;\n }\n let parsedStateInfo = this.getStateInformation(mode);\n if (parsedStateInfo && widget && widget.getAppInstance().activePageName && (mode.toLowerCase() === 'localstorage' || mode.toLowerCase() === 'sessionstorage')) {\n parsedStateInfo = parsedStateInfo[widget.getAppInstance().activePageName];\n }\n if (get(parsedStateInfo, this.WIDGET_STATE_KEY)) {\n const stateKey = this.getNestedPath(widget.viewParent, widget.getWidget().name);\n return parsedStateInfo[this.WIDGET_STATE_KEY][stateKey];\n }\n return;\n }\n\n public computeMode(widgetStateHandler) {\n if (!widgetStateHandler) {\n return 'url';\n } else if (widgetStateHandler && widgetStateHandler.toLowerCase() === 'none') {\n return;\n } else {\n return widgetStateHandler.toLowerCase();\n }\n }\n\n /**\n * Sets the passed value to the state information by using the passed widget instance\n * @param widget\n * @param value\n * @param mode : optional parameter if the widget uses a state handling mode(url, local storage, session storage)\n * other than the project level mode\n */\n public setWidgetState(widget, value, mode?) {\n const stateKey = this.getNestedPath(widget.viewParent, widget.getWidget().name);\n mode = mode || this.computeMode(widget.statehandler);\n if (!mode) {\n return;\n }\n this.setStateParams(this.WIDGET_STATE_KEY, stateKey, value, mode, widget);\n }\n\n /**\n * Removes the passed widget’s state information from the State Object. If a key is passed, then only that\n * particular entry will be removed, not any other entries for that widget.\n * @param widget\n * @param key\n * @param mode : optional parameter if the widget uses a state handling mode(url, local storage, session storage)\n * other than the project level mode\n */\n public removeWidgetState(widget, key?, mode?) {\n mode = mode || this.computeMode(widget.statehandler);\n if (!mode) {\n return;\n }\n const stateKey = this.getNestedPath(widget.viewParent, widget.getWidget().name);\n this.removeStateParam(this.WIDGET_STATE_KEY, stateKey, key, mode, widget);\n }\n\n /**\n * Sets the passed value to the state information by using the passed variable name as key\n * @param variableName\n * @param value\n * @param mode : optional parameter if the variable uses a state handling mode(url, local storage, session storage)\n * other than the project level mode\n */\n public setStateVariable(variableName, value, mode?) {\n mode = mode || this.computeMode(mode);\n if (!mode) {\n return;\n }\n this.setStateParams('', variableName, value, mode);\n }\n\n /**\n * Checks if the passed variable name has any state information available in the url or not\n * @param variableName\n * @param mode : optional parameter if the variable uses a state handling mode(url, local storage, session storage)\n * other than the project level mode\n */\n public getStateVariable(variableName: string, mode?) {\n mode = mode || this.computeMode(mode);\n if (!mode) {\n return;\n }\n const parsedStateInfo = this.getStateInformation(mode);\n if (parsedStateInfo) {\n return parsedStateInfo[variableName];\n }\n return;\n }\n\n /**\n * Removes the passed variable’s state information from the URL.\n * @param variableName\n * @param mode : optional parameter if the widget uses a state handling mode(url, local storage, session storage)\n * other than the project level mode\n */\n public removeStateVariable(variableName, mode?) {\n mode = mode || this.computeMode(mode);\n if (!mode) {\n return;\n }\n this.removeStateParam('', variableName, null, mode);\n }\n\n /**\n * Sets the passed state information in the url by parsing the passed value and checking\n * its type. If its an array type, then the passed values will be pushed into an array and then set in the state\n * E.g.\n * Current state information is like :\n {\n \"widget_state\": {\n \"Table1\": {\n \"selectedItem\": [\n {\n \"page\": \"1\",\n \"index\": \"1\"\n }\n ],\n \"pagination\": \"1\"\n }\n }\n }\n * Input value will be like:\n {\n \"selectedItem\": [\n {\n \"page\": \"1\",\n \"index\": \"2\"\n }\n ]\n }\n\n * This parsing logic will convert it to the following\n {\n \"widget_state\": {\n \"Table1\": {\n \"selectedItem\": [\n {\n \"page\": \"1\",\n \"index\": \"1\"\n },\n {\n \"page\": \"1\",\n \"index\": \"2\"\n }\n ],\n \"pagination\": \"1\"\n }\n }\n }\n * Based on how the HISTORY_HANDLER is configured, the updated url will either replace the existing url or\n * push a new state in the url so that back button may track each update to the state.\n * @param stateParam\n * @param key\n * @param val\n * @param mode : optional parameter if the widget/variable uses a state handling mode(url, local storage, session storage)\n * other than the project level mode\n */\n public setStateParams(stateParam: string, key: string, val: any, mode?, widget?) {\n let url = '', parsedObj;\n const stateObj = this.getStateInformation(mode);\n if (widget && stateObj && widget.getAppInstance().activePageName && (mode.toLowerCase() === 'localstorage' || mode.toLowerCase() === 'sessionstorage')) {\n parsedObj = stateObj[widget.getAppInstance().activePageName];\n } else {\n parsedObj = clone(stateObj);\n }\n if (stateParam) {\n if (parsedObj && !parsedObj[stateParam]) {\n parsedObj[stateParam] = {};\n } else if (!parsedObj) {\n parsedObj = {[stateParam]: {}};\n }\n if (isObject(val) && !isArray(val)) {\n parsedObj[stateParam][key] = parsedObj[stateParam][key] || {};\n merge(parsedObj[stateParam][key], val);\n } else {\n parsedObj[stateParam][key] = val;\n }\n } else {\n if (parsedObj && !parsedObj[key]) {\n parsedObj[key] = {};\n } else if (!parsedObj) {\n parsedObj = {[key]: {}};\n }\n if (isObject(val) && !isArray(val)) {\n parsedObj[key] = parsedObj[key] || {};\n merge(parsedObj[key], val);\n } else {\n parsedObj[key] = val;\n }\n }\n // for Local and Session Storage, wrap state object inside page name so that widget name conflicts don't arise between pages.\n if (widget && widget.getAppInstance().activePageName && (mode.toLowerCase() === 'localstorage' || mode.toLowerCase() === 'sessionstorage')) {\n if (stateObj) {\n stateObj[widget.getAppInstance().activePageName] = parsedObj;\n parsedObj = stateObj;\n } else {\n parsedObj = {[widget.getAppInstance().activePageName]: parsedObj};\n }\n\n }\n\n\n let decodedURI = decodeURIComponent(window.location.href);\n if (decodedURI.indexOf('?') < 0) {\n decodedURI = decodedURI + '?wm_state=';\n } else if (decodedURI.indexOf('wm_state') < 0) {\n decodedURI = decodedURI + '&wm_state=';\n }\n url = decodedURI.replace(/(wm_state=).*?(&|$)/ ,'$1' + this.jsonToUri(parsedObj) + '$2');\n\n if (mode.toLowerCase() === 'localstorage') {\n localStorage.setItem(window.location.pathname.replace(/\\//g, '') + '_wm_state', JSON.stringify(parsedObj));\n return;\n } else if (mode.toLowerCase() === 'sessionstorage') {\n sessionStorage.setItem(window.location.pathname.replace(/\\//g, '') + '_wm_state', JSON.stringify(parsedObj));\n return;\n }\n\n if (decodeURIComponent(window.location.href) === decodeURIComponent(url)) {\n return;\n }\n if (this.HISTORY_HANDLER === 'push') {\n window.history.pushState({ path: url }, '', url);\n } else if (this.HISTORY_HANDLER === 'replace') {\n window.history.replaceState({ path: url }, '', url);\n }\n }\n\n /**\n * Removes the passed state information from the url\n * E.g.\n * Current state information is like :\n {\n \"widget_state\": {\n \"Table1\": {\n \"selectedItem\": [\n {\n \"page\": \"1\",\n \"index\": \"1\"\n },\n {\n \"page\": \"2\",\n \"index\": \"1\"\n }\n ],\n \"pagination\": \"1\"\n }\n }\n }\n * Input values will be like:\n subParam : 'selectedItem'\n\n * This method will convert it to the following\n {\n \"widget_state\": {\n \"Table1\": {\n \"pagination\": \"1\"\n }\n }\n }\n * @param stateParam\n * @param key\n * @param subParam\n * @param mode : optional parameter if the widget/variable uses a state handling mode(url, local storage, session storage)\n * other than the project level mode\n */\n public removeStateParam(stateParam, key, subParam?, mode?, widget?) {\n let url = '', parsedObj;\n const stateObj = this.getStateInformation(mode);\n if (widget && stateObj && widget.getAppInstance().activePageName && (mode.toLowerCase() === 'localstorage' || mode.toLowerCase() === 'sessionstorage')) {\n parsedObj = stateObj[widget.getAppInstance().activePageName];\n } else {\n parsedObj = clone(stateObj);\n }\n if (!get(parsedObj, [stateParam]) && !get(parsedObj, key)) {\n return;\n }\n // Fix for [WMS-24698]: when table is inside a prefab, state persistence key is like \"TestLabel_11.TestLabel_1.staticVariable1Table1\"\n // get(parsedObj, stateParam + '.' + key) is undefined so using (parsedObj && parsedObj[stateParam] && parsedObj[stateParam][key]) condition.\n if (get(parsedObj, stateParam + '.' + key) || (parsedObj && parsedObj[stateParam] && parsedObj[stateParam][key])) {\n if (subParam) {\n delete parsedObj[stateParam][key][subParam];\n } else {\n delete parsedObj[stateParam][key];\n }\n if (isEmpty(parsedObj[stateParam][key])) {\n delete parsedObj[stateParam][key];\n }\n if (isEmpty(parsedObj[stateParam])) {\n delete parsedObj[stateParam];\n }\n } else if (!stateParam && get(parsedObj, key)) {\n delete parsedObj[key];\n }\n\n // for Local and Session Storage, wrap state object inside page name so that widget name conflicts don't arise between pages.\n if (widget && widget.getAppInstance().activePageName && (mode.toLowerCase() === 'localstorage' || mode.toLowerCase() === 'sessionstorage')) {\n if (stateObj) {\n stateObj[widget.getAppInstance().activePageName] = parsedObj;\n parsedObj = stateObj;\n } else {\n parsedObj = {[widget.getAppInstance().activePageName]: parsedObj};\n }\n\n }\n if (mode.toLowerCase() === 'localstorage') {\n localStorage.setItem(window.location.pathname.replace(/\\//g, '') + '_wm_state', JSON.stringify(parsedObj));\n return;\n } else if (mode.toLowerCase() === 'sessionstorage') {\n sessionStorage.setItem(window.location.pathname.replace(/\\//g, '') + '_wm_state', JSON.stringify(parsedObj));\n return;\n }\n\n const decodedURI = decodeURIComponent(window.location.href);\n if (isEmpty(parsedObj)) {\n url = decodedURI.replace(/(wm_state=).*?(&|$)/ ,'' + '$2');\n if (includes(['&', '?'], url.charAt(url.length - 1))) {\n url = url.replace(url.charAt(url.length - 1), '');\n }\n } else {\n url = decodedURI.replace(/(wm_state=).*?(&|$)/ ,'$1' + this.jsonToUri(parsedObj) + '$2');\n }\n\n window.history.replaceState({ path: url }, '', url);\n }\n\n /**\n * Converts the State Information object into an encoded object when state handling mode is URL\n * so that a meaningful URL can be formed and the user can make changes easily to the URL.\n * E.g.\n * state information input will be like :\n {\n \"widget-state\": {\n \"Table1\": {\n \"pagination\": \"3\",\n \"search\":[\n {\n \"field\":\"state\",\n \"value\":\"NY\",\n \"matchMode\":\"anywhereignorecase\",\n \"type\":\"string\"\n }\n ]\n }\n }\n },\n \"CustomVariableSelectedItems\": [\"2\", \"3\"]\n }\n\n\n * This method will convert it to the following\n ('widget-state'~('Table1'~('pagination'~'3'_'search'~!('field'~'state'_'value'~'NY'_'matchMode'~'anywhereignorecase'_'type'~'string')*))_'CustomVariableSelectedItems'~!'2'_'3'*)\n * @param jsonObj\n */\n private jsonToUri(jsonObj) {\n return encodeURIComponent(\n JSON.stringify(jsonObj)\n .replace(/[()'~_!*]/g, function(c) {\n // Replace ()'~_!* with \\u0000 escape sequences\n return '\\\\u' + ('0000' + c.charCodeAt(0).toString(16)).slice(-4)\n })\n .replace(/\\{/g, '(') // { -> (\n .replace(/\\}/g, ')') // } -> )\n .replace(/\"/g, \"'\") // \" -> '\n .replace(/\\:/g, '~') // : -> ~\n .replace(/,/g, '_') // , -> _\n .replace(/\\[/g, '!') // [ -> !\n .replace(/\\]/g, '*') // ] -> *\n );\n }\n\n /**\n * Decodes the encoded State Information object into a JSON object when state handling mode is URL\n * so that state information can be parsed and applied to the widgets.\n * E.g.\n * encoded state information input will be like :\n ('widget-state'~('Table1'~('pagination'~'3'_'search'~!('field'~'state'_'value'~'NY'_'matchMode'~'anywhereignorecase'_'type'~'string')*))_'CustomVariableSelectedItems'~!'2'_'3'*)\n\n\n * This method will convert it to the following\n {\n \"widget-state\": {\n \"Table1\": {\n \"pagination\": \"3\",\n \"search\":[\n {\n \"field\":\"state\",\n \"value\":\"NY\",\n \"matchMode\":\"anywhereignorecase\",\n \"type\":\"string\"\n }\n ]\n }\n }\n },\n \"CustomVariableSelectedItems\": [\"2\", \"3\"]\n }\n * @param encodedObj\n */\n private uriToJson(encodedObj) {\n let response: any;\n try {\n response = JSON.parse(\n decodeURIComponent(encodedObj)\n .replace(/\\(/g, '{') // ( -> {\n .replace(/\\)/g, '}') // ) -> }\n .replace(/'/g, '\"') // ' -> \"\n .replace(/~/g, ':') // ~ -> :\n .replace(/_/g, ',') // _ -> ,\n .replace(/\\!/g, '[') // ! -> [\n .replace(/\\*/g, ']') // * -> ]\n );\n } catch (e) {\n console.warn(e);\n }\n return response;\n }\n}\n\n","import { isDefined } from '../utils/utils';\nimport { Injectable } from '@angular/core';\nimport {debounce, get, isEmpty, isEqual} from \"lodash-es\";\n\ndeclare const $;\n@Injectable({ providedIn: 'root' })\n\nexport class PaginationService {\n /**\n * @description\n * This function returns the updated fields and the current page index when navigated to the next set of data\n * @param {object} parent table / list instance\n * @param {object} newVal updated fields info\n * @returns fieldDefs and current page index\n */\n public updateFieldsOnPagination(parent, newVal) {\n let fieldDefs = parent.widgetType === 'wm-table' ? parent.gridData : parent.fieldDefs;\n // remove the deleted row from the list\n if (parent.widgetType === 'wm-table' && (parent.gridOptions.isNavTypeScrollOrOndemand()) && parent.gridOptions.deletedRowIndex !== -1) {\n fieldDefs.splice(parent.gridOptions.deletedRowIndex, 1);\n parent.gridOptions.setDeletedRowIndex(-1);\n }\n // reset fieldDefs if last action performed is search or sort\n if (parent.widgetType === 'wm-table' && (parent.gridOptions.isNavTypeScrollOrOndemand()) && (parent.gridOptions.lastActionPerformed === parent.gridOptions.ACTIONS.SEARCH_OR_SORT || parent.gridOptions.lastActionPerformed === parent.gridOptions.ACTIONS.FILTER_CRITERIA || parent.gridOptions.lastActionPerformed === parent.gridOptions.ACTIONS.DATASET_UPDATE)) {\n fieldDefs = [];\n parent.gridOptions.setCurrentPage(1);\n }\n let currentPage;\n if (parent.widgetType === 'wm-table') {\n currentPage = parent.gridOptions.showviewlessbutton && (parent.gridOptions.mode === 'viewless') ? parent.gridOptions.getCurrentPage() : parent.currentPage;\n } else {\n currentPage = parent.currentPage;\n }\n const dataNavigator = parent.dataNavigator;\n const pagesize = parent.pagesize;\n\n if (!isDefined(fieldDefs) || dataNavigator.isFirstPage()) {\n fieldDefs = [];\n currentPage = 1;\n } else if (fieldDefs.length / pagesize <= dataNavigator.pageCount) {\n let itemsLength,\n itemsToPush = [];\n // we push the newVal only when dn.currentPage gets incremented because that is when new items gets added to newVal\n if (fieldDefs.length === currentPage * pagesize && (currentPage + 1) === dataNavigator.dn.currentPage) {\n itemsToPush = newVal;\n currentPage++;\n } else if (fieldDefs.length < currentPage * pagesize) {\n if ((fieldDefs.length === (currentPage - 1) * pagesize) && ((currentPage - 1) === dataNavigator.dn.currentPage)) {\n // if dn.currentPage is not incremented still only old newVal is present hence we push empty array\n newVal = [];\n } else if (dataNavigator.dataSize < currentPage * pagesize) {\n // if number of elements added to dataNavigator is less than product of currentPage and pageSize we only add elements extra elements added\n itemsLength = dataNavigator.dataSize - fieldDefs.length;\n } else {\n // if number of elements added to dataNavigator is greater than product of currentPage and pageSize we add elements the extra elements in newVal\n itemsLength = currentPage * pagesize - fieldDefs.length;\n currentPage++;\n }\n const startIndex = newVal.length - itemsLength;\n itemsToPush = newVal.slice(startIndex);\n } else if (fieldDefs.length === currentPage * pagesize && currentPage === dataNavigator.dn.currentPage) {\n // if dn.currentPage is not incremented still only old newVal is present hence we push empty array\n itemsToPush = [];\n }\n newVal = itemsToPush;\n }\n\n // Add unique records to fieldDefs\n if (parent.widgetType === 'wm-table' && (parent.gridOptions.lastActionPerformed === parent.gridOptions.ACTIONS.DELETE || parent.gridOptions.lastActionPerformed === parent.gridOptions.ACTIONS.EDIT)) {\n fieldDefs = this.getUniqueRecordsInFieldDef(fieldDefs, newVal);\n } else {\n fieldDefs = [...fieldDefs, ...newVal];\n }\n return [fieldDefs, currentPage];\n }\n\n // Add the unique records to fieldDefs\n public getUniqueRecordsInFieldDef(fieldDefs, newVal) {\n let flag = false;\n if (!fieldDefs.length) {\n fieldDefs = newVal;\n } else {\n newVal.forEach(function (newObj) {\n flag = false;\n fieldDefs.forEach(function (obj) {\n if (isEqual(newObj, obj)) {\n flag = true;\n }\n });\n if (flag === false) {\n fieldDefs.push(newObj);\n }\n });\n }\n return fieldDefs;\n }\n\n /**\n * @description\n * This function registers scroll events on the scrollable el, if the page doesn't have a scroll el then wheel event is registered on the requested node\n * @param {object} parent table / list instance\n * @param {string} nodeName tbody/ul\n * @param {number} debounceNum provided to lodash debounce\n * @returns null\n */\n public bindScrollEvt(parent, nodeName, debounceNum) {\n const dataNavigator = parent.dataNavigator;\n const $el = parent.$element;\n const $rootEl = $el.find(nodeName);\n const $firstChild = $rootEl.children().first();\n\n const self = this;\n let $scrollParent;\n let scrollNode;\n let lastScrollTop = 0;\n\n if (!$firstChild.length) {\n return;\n }\n\n $scrollParent = $firstChild.scrollParent(false);\n\n if ($scrollParent[0] === document) {\n scrollNode = document.body;\n } else {\n scrollNode = $scrollParent[0];\n }\n\n // has scroll\n if (scrollNode.scrollHeight > scrollNode.clientHeight) {\n $scrollParent\n .each((index: number, node) => {\n // scrollTop property is 0 or undefined for body in IE, safari.\n lastScrollTop = node === document ? (node.body.scrollTop || $(window).scrollTop()) : (node as HTMLElement).scrollTop;\n })\n .off('scroll.scroll_evt')\n .on('scroll.scroll_evt', function (evt) {\n let target = evt.target;\n let clientHeight;\n let totalHeight;\n let scrollTop;\n // scrollingElement is undefined for IE, safari. use body as target Element\n target = target === document ? (target.scrollingElement || document.body) : target;\n if (parent.widgetType === 'wm-table' && parent.gridOptions.isNavTypeScrollOrOndemand()) {\n evt.stopPropagation();\n }\n\n clientHeight = target.clientHeight;\n totalHeight = target.scrollHeight;\n scrollTop = target === document.body ? $(window).scrollTop() : target.scrollTop;\n\n if ((lastScrollTop < scrollTop) && (totalHeight * 0.9 < scrollTop + clientHeight)) {\n $(this).off('scroll.scroll_evt');\n self.debouncedFetchNextDatasetOnScroll(dataNavigator, debounceNum, parent)();\n }\n\n lastScrollTop = scrollTop;\n });\n $rootEl.off('wheel.scroll_evt');\n } else {\n // if there is no scrollable element register wheel event on ul element\n $rootEl.on('wheel.scroll_evt', e => {\n if (parent.widgetType === 'wm-table' && parent.gridOptions.isNavTypeScrollOrOndemand()) {\n e.stopPropagation();\n }\n if (e.originalEvent.deltaY > 0) {\n $rootEl.off('wheel.scroll_evt');\n this.debouncedFetchNextDatasetOnScroll(dataNavigator, debounceNum, parent)();\n }\n });\n }\n }\n\n /**\n * @description\n * This function calls fetchNextDatasetOnScroll fn on debounced time\n * @param {object} dataNavigator pagination instance\n * @param {number} debounceNum provided to lodash debounce\n * @returns debounced function definition\n */\n public debouncedFetchNextDatasetOnScroll(dataNavigator, debounceNum, parent) {\n return debounce(() => this.fetchNextDatasetOnScroll(dataNavigator, parent), debounceNum);\n }\n\n /**\n * @description\n * This function calls next set of data when navigated to next page\n * @param {object} dataNavigator pagination instance\n * @returns null\n */\n public fetchNextDatasetOnScroll(dataNavigator, parent) {\n // Load next set of data only after the success of current call\n if (!parent.variableInflight) {\n // Fix for [WMS-23263]: set 'isNextPageData' flag to true & 'isDataUpdatedByUser' to false as next page data is being rendered on Scroll\n if (parent.widgetType === 'wm-table') {\n // set isNextPageData flag to true as next page data is being rendered\n parent.gridOptions.setIsNextPageData(true);\n parent.gridOptions.setIsDataUpdatedByUser(false);\n }\n dataNavigator.navigatePage('next');\n }\n }\n\n /**\n * @description\n * This function registers scroll events on the scrollable el for mobile projects\n * @param {object} parent list instance\n * @param {number} debounceNum provided to lodash debounce\n * @returns null\n */\n public bindIScrollEvt(parent, debounceNum) {\n const $element = parent.$element;\n const dataNavigator = parent.dataNavigator;\n const app = parent.app;\n\n const $scrollParent = $element.closest('[wmsmoothscroll=\"true\"]');\n\n const iScroll = get($scrollParent[0], 'iscroll');\n\n // when iscroll is not initialised the notify the smoothscroll and subscribe to the iscroll update\n if (!iScroll) {\n const iScrollSubscription = app.subscribe('iscroll-update', (_el) => {\n if (!isEmpty(_el) && _el.isSameNode($scrollParent[0])) {\n this.setIscrollHandlers($scrollParent[0], dataNavigator, debounceNum);\n iScrollSubscription();\n }\n });\n app.notify('no-iscroll', $scrollParent[0]);\n return;\n }\n this.setIscrollHandlers($scrollParent[0], dataNavigator, debounceNum);\n }\n\n /**\n * @description\n * This function registers scrollEnd event on the scrollable el for mobile projects\n * @param {object} el scrollable element scope\n * @param {object} dataNavigator pagination instance\n * @param {number} debounceNum provided to lodash debounce\n * @returns null\n */\n public setIscrollHandlers(el, dataNavigator, debounceNum) {\n let lastScrollTop = 0;\n const wrapper = get(el.iscroll, 'wrapper');\n const self = el.iscroll;\n\n el.iscroll.on('scrollEnd', () => {\n const clientHeight = wrapper.clientHeight,\n totalHeight = wrapper.scrollHeight,\n scrollTop = Math.abs(el.iscroll.y);\n\n if ((lastScrollTop < scrollTop) && (totalHeight * 0.9 < scrollTop + clientHeight)) {\n this.debouncedFetchNextDatasetOnScroll(dataNavigator, debounceNum, parent)();\n if (self.indicatorRefresh) {\n self.indicatorRefresh();\n }\n }\n\n lastScrollTop = scrollTop;\n });\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { HttpClientModule } from '@angular/common/http';\n\n@NgModule({\n declarations: [],\n imports: [\n HttpClientModule\n ],\n providers: [],\n bootstrap: []\n})\nexport class CoreModule {\n\n static forRoot(): ModuleWithProviders<CoreModule> {\n return {\n ngModule: CoreModule,\n providers: [\n ]\n };\n }\n}\n","import {isNil} from \"lodash-es\";\n\ninterface CachedData<T> {\n instance: T;\n lastAccessedTime: number;\n}\n\nexport class LRUCache<T> {\n private cache = new Map<string, CachedData<T>>();\n private evictQueue: [string] = [''];\n\n constructor(\n private maxSize = 100,\n private maxAge = 60,\n private onEvict?: ((key: string, value: T) => any)) {\n this.evictQueue.shift();\n if(this.maxAge > 0) {\n if (this.maxAge <= 30) {\n console.warn(`Cache age ${this.maxAge}s is very less. Keep it atleast 30s.`);\n }\n this.maxAge = this.maxAge * 1000;\n setInterval(() => {\n const max = Date.now() - this.maxAge;\n const expiredData = this.evictQueue.filter(k => {\n return this.cache.get(k).lastAccessedTime <= max;\n });\n this.evict(expiredData.length);\n }, this.maxAge);\n }\n }\n\n private addToEvictQueue(key: string) {\n const index = this.evictQueue.findIndex(k => (k === key));\n if (index >= 0) {\n this.evictQueue.splice(index, 1);\n }\n this.evictQueue.push(key);\n }\n\n private evict(count = 1): void {\n for (let i = 0; i < count; i++) {\n this.delete(this.evictQueue[0]);\n }\n }\n\n public keys() {\n return this.cache.keys();\n }\n\n public set(key: string, dataToCache: T): void {\n if (isNil(dataToCache)) {\n return;\n }\n const cachedData = {\n instance: dataToCache,\n lastAccessedTime: Date.now()\n };\n this.cache.set(key, cachedData);\n this.addToEvictQueue(key);\n this.evict(this.evictQueue.length - this.maxSize);\n }\n\n public get(key: string): T {\n const cachedData = this.cache.get(key);\n if (cachedData) {\n cachedData.lastAccessedTime = Date.now();\n this.addToEvictQueue(key);\n return cachedData.instance;\n }\n return null;\n }\n\n public delete(key: string) {\n if(key && this.cache.has(key)) {\n const cachedData = this.cache.get(key);\n this.cache.delete(key);\n this.onEvict && this.onEvict(key, cachedData.instance);\n const index = this.evictQueue.findIndex(k => (k === key));\n if (index >= 0) {\n this.evictQueue.splice(index, 1);\n }\n }\n }\n\n public has(key: string): boolean {\n return this.cache.has(key);\n }\n\n public size(): number {\n return this.evictQueue.length;\n }\n\n public clear() {\n this.evict(this.evictQueue.length);\n }\n}\n","/*\n * Public API Surface of core\n */\n\nexport * from './utils/build-utils';\nexport * from './constants/currency-constants';\nexport {\n appendNode,\n insertBefore,\n insertAfter,\n removeNode,\n removeClass,\n addClass,\n switchClass,\n toggleClass,\n setCSS,\n setCSSFromObj,\n setProperty,\n setAttr,\n setHtml,\n removeAttr,\n createElement,\n toDimension\n} from './utils/dom';\nexport * from './enums/enums';\nexport * from './utils/event-notifier';\nexport {\n ParseExprResult,\n $parseExpr,\n $parseEvent,\n registerFnByExpr,\n setPipeProvider,\n getFnByExpr,\n getFnForBindExpr,\n getFnForEventExpr\n} from './utils/expression-parser';\nexport {\n EVENT_LIFE,\n isDefined,\n isObject,\n toBoolean,\n isIE,\n isAndroid,\n isAndroidTablet,\n isIphone,\n isIpod,\n isIpad,\n isIos,\n isSafari,\n isLargeTabletLandscape,\n isLargeTabletPortrait,\n isMobile,\n isMobileApp,\n getAndroidVersion,\n isKitkatDevice,\n encodeUrl,\n encodeUrlParams,\n initCaps,\n spaceSeparate,\n replaceAt,\n periodSeparate,\n prettifyLabel,\n deHyphenate,\n prettifyLabels,\n isInsecureContentRequest,\n stringStartsWith,\n getEvaluatedExprValue,\n isImageFile,\n isAudioFile,\n isVideoFile,\n isValidWebURL,\n getResourceURL,\n triggerFn,\n hasOffsetStr,\n getFormattedDate,\n getDateObj,\n addEventListenerOnElement,\n getClonedObject,\n getFiles,\n generateGUId,\n validateAccessRoles,\n getValidJSON,\n xmlToJson,\n findValueOf,\n extractType,\n isNumberType,\n isEmptyObject,\n scrollToElement,\n isElementInViewport,\n isPageable,\n replace,\n isDateTimeType,\n getValidDateObject,\n getNativeDateObject,\n getBlob,\n isEqualWithFields,\n loadStyleSheet,\n loadStyleSheets,\n loadScript,\n loadScripts,\n _WM_APP_PROJECT,\n setSessionStorageItem,\n getSessionStorageItem,\n noop,\n convertToBlob,\n hasCordova,\n AppConstants,\n openLink,\n fetchContent,\n toPromise,\n retryIfFails,\n getAbortableDefer,\n createCSSRule,\n getUrlParams,\n getMomentLocaleObject,\n getRouteNameFromLink,\n isAppleProduct,\n defer,\n executePromiseChain,\n isDataSourceEqual,\n validateDataSourceCtx,\n processFilterExpBindNode,\n extendProto,\n removeExtraSlashes,\n getDisplayDateTimeFormat,\n addForIdAttributes,\n adjustContainerPosition,\n adjustContainerRightEdges,\n setTranslation3dPosition,\n getWebkitTraslationMatrix,\n closePopover,\n detectChanges,\n triggerItemAction,\n getDatasourceFromExpr,\n extractCurrentItemExpr,\n findRootContainer,\n VALIDATOR,\n transformFileURI,\n appendScriptToHead,\n getAppSetting,\n setListClass,\n findParent,\n getNavClass,\n getSheetPositionClass\n} from './utils/utils';\nexport {\n FIRST_TIME_WATCH,\n isFirstTimeChange,\n debounce,\n muteWatchers,\n unMuteWatchers,\n $watch,\n $unwatch,\n setNgZone,\n setAppRef,\n isChangeFromWatch,\n resetChangeFromWatch,\n $invokeWatchers,\n $appDigest\n} from './utils/watcher';\nexport * from './utils/id-generator';\nexport * from './types/types';\nexport { Viewport, ViewportEvent } from './services/viewport.service';\nexport * from './services/constant.service';\nexport * from './services/utils.service';\nexport * from './services/field-type.service';\nexport * from './services/field-widget.service';\nexport * from './services/script-loader.service';\nexport * from './services/user-custom-pipe-manager.service';\nexport * from './services/custom-icons-loader.service';\nexport { StatePersistence } from './services/state-persistence.service';\nexport { PaginationService } from './services/pagination.service';\nexport * from './core.module';\nexport * from './utils/wm-project-properties';\nexport * from './utils/lru-cache';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["$RAF","noop","detectChanges","isObject","_replace","_noop","debounce"],"mappings":"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"}