@wavemaker/app-ng-runtime 12.0.0-next.45752 → 12.0.0-next.46502

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (318) hide show
  1. app-ng-runtime/build-task/bundles/index.umd.js +53 -45
  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/accordion/accordion-pane/accordion-pane.build.mjs +2 -2
  11. app-ng-runtime/build-task/esm2022/containers/accordion/accordion.build.mjs +3 -3
  12. app-ng-runtime/build-task/esm2022/containers/tile/tile.build.mjs +2 -2
  13. app-ng-runtime/build-task/esm2022/containers/wizard/wizard.build.mjs +2 -2
  14. app-ng-runtime/build-task/esm2022/data/form/form-field/form-field.build.mjs +4 -4
  15. app-ng-runtime/build-task/esm2022/device/barcode-scanner/barcode-scanner.build.mjs +2 -2
  16. app-ng-runtime/build-task/esm2022/device/camera/camera.build.mjs +2 -2
  17. app-ng-runtime/build-task/esm2022/dialogs/alert-dialog/alert-dialog.build.mjs +2 -2
  18. app-ng-runtime/build-task/esm2022/input/calendar/calendar.build.mjs +2 -2
  19. app-ng-runtime/build-task/esm2022/input/chips/chips.build.mjs +2 -2
  20. app-ng-runtime/build-task/esm2022/input/color-picker/color-picker.build.mjs +3 -3
  21. app-ng-runtime/build-task/esm2022/input/currency/currency.build.mjs +3 -3
  22. app-ng-runtime/build-task/esm2022/input/default/button/button.build.mjs +2 -2
  23. app-ng-runtime/build-task/esm2022/input/default/button-group/button-group.build.mjs +2 -2
  24. app-ng-runtime/build-task/esm2022/input/default/switch/switch.build.mjs +2 -2
  25. app-ng-runtime/build-task/esm2022/input/file-upload/file-upload.build.mjs +6 -2
  26. app-ng-runtime/build-task/esm2022/page/footer/footer.build.mjs +2 -2
  27. app-ng-runtime/build-task/esm2022/page/header/header.build.mjs +2 -2
  28. app-ng-runtime/build-task/esm2022/page/layout.build.mjs +2 -2
  29. app-ng-runtime/build-task/esm2022/page/left-panel/left-panel.build.mjs +2 -2
  30. app-ng-runtime/build-task/esm2022/page/page.build.mjs +2 -2
  31. app-ng-runtime/build-task/esm2022/page/right-panel/right-panel.build.mjs +2 -2
  32. app-ng-runtime/build-task/esm2022/page/top-nav/top-nav.build.mjs +2 -2
  33. app-ng-runtime/build-task/fesm2022/index.mjs +53 -45
  34. app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
  35. app-ng-runtime/components/advanced/carousel/bundles/index.umd.js +1 -1
  36. app-ng-runtime/components/advanced/carousel/esm2022/carousel.animator.mjs +2 -2
  37. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs +1 -1
  38. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
  39. app-ng-runtime/components/base/bundles/index.umd.js +1 -6
  40. app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +3 -3
  41. app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +1 -6
  42. app-ng-runtime/components/base/fesm2022/index.mjs +1 -6
  43. app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
  44. app-ng-runtime/components/base/pipes/custom-pipes.d.ts +1 -1
  45. app-ng-runtime/components/basic/default/anchor/anchor.component.d.ts +1 -0
  46. app-ng-runtime/components/basic/default/audio/audio.component.d.ts +3 -0
  47. app-ng-runtime/components/basic/default/bundles/index.umd.js +39 -19
  48. app-ng-runtime/components/basic/default/esm2022/anchor/anchor.component.mjs +4 -4
  49. app-ng-runtime/components/basic/default/esm2022/anchor/anchor.props.mjs +2 -1
  50. app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +14 -6
  51. app-ng-runtime/components/basic/default/esm2022/audio/audio.props.mjs +2 -1
  52. app-ng-runtime/components/basic/default/esm2022/html/html.props.mjs +2 -1
  53. app-ng-runtime/components/basic/default/esm2022/icon/icon.component.mjs +6 -7
  54. app-ng-runtime/components/basic/default/esm2022/icon/icon.props.mjs +2 -1
  55. app-ng-runtime/components/basic/default/esm2022/iframe/iframe.component.mjs +3 -3
  56. app-ng-runtime/components/basic/default/esm2022/iframe/iframe.props.mjs +3 -2
  57. app-ng-runtime/components/basic/default/esm2022/label/label.props.mjs +1 -1
  58. app-ng-runtime/components/basic/default/esm2022/picture/picture.directive.mjs +2 -2
  59. app-ng-runtime/components/basic/default/esm2022/picture/picture.props.mjs +3 -1
  60. app-ng-runtime/components/basic/default/esm2022/spinner/spinner.props.mjs +3 -2
  61. app-ng-runtime/components/basic/default/esm2022/video/video.component.mjs +8 -4
  62. app-ng-runtime/components/basic/default/esm2022/video/video.props.mjs +2 -1
  63. app-ng-runtime/components/basic/default/fesm2022/index.mjs +39 -19
  64. app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
  65. app-ng-runtime/components/basic/default/icon/icon.component.d.ts +1 -0
  66. app-ng-runtime/components/basic/default/iframe/iframe.component.d.ts +1 -0
  67. app-ng-runtime/components/basic/default/picture/picture.directive.d.ts +2 -1
  68. app-ng-runtime/components/basic/default/video/video.component.d.ts +2 -0
  69. app-ng-runtime/components/basic/progress/bundles/index.umd.js +17 -9
  70. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +9 -5
  71. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.props.mjs +2 -1
  72. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +8 -6
  73. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.props.mjs +2 -1
  74. app-ng-runtime/components/basic/progress/fesm2022/index.mjs +17 -9
  75. app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
  76. app-ng-runtime/components/basic/progress/progress-bar/progress-bar.component.d.ts +2 -0
  77. app-ng-runtime/components/basic/progress/progress-circle/progress-circle.component.d.ts +3 -1
  78. app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +2 -0
  79. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +2 -1
  80. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.props.mjs +2 -1
  81. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +2 -0
  82. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
  83. app-ng-runtime/components/basic/search/bundles/index.umd.js +16 -9
  84. app-ng-runtime/components/basic/search/esm2022/search.component.mjs +19 -13
  85. app-ng-runtime/components/basic/search/esm2022/search.props.mjs +2 -1
  86. app-ng-runtime/components/basic/search/fesm2022/index.mjs +16 -9
  87. app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
  88. app-ng-runtime/components/basic/search/search.component.d.ts +4 -2
  89. app-ng-runtime/components/chart/bundles/index.umd.js +1 -0
  90. app-ng-runtime/components/chart/esm2022/chart.utils.mjs +2 -1
  91. app-ng-runtime/components/chart/fesm2022/index.mjs +1 -0
  92. app-ng-runtime/components/chart/fesm2022/index.mjs.map +1 -1
  93. app-ng-runtime/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +1 -0
  94. app-ng-runtime/components/containers/accordion/bundles/index.umd.js +15 -9
  95. app-ng-runtime/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +13 -10
  96. app-ng-runtime/components/containers/accordion/esm2022/accordion.directive.mjs +4 -1
  97. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +15 -9
  98. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  99. app-ng-runtime/components/containers/panel/bundles/index.umd.js +14 -14
  100. app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +15 -15
  101. app-ng-runtime/components/containers/panel/fesm2022/index.mjs +14 -14
  102. app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
  103. app-ng-runtime/components/containers/tabs/bundles/index.umd.js +2 -2
  104. app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +3 -3
  105. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +2 -2
  106. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  107. app-ng-runtime/components/containers/wizard/bundles/index.umd.js +6 -6
  108. app-ng-runtime/components/containers/wizard/esm2022/wizard.component.mjs +7 -7
  109. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs +6 -6
  110. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  111. app-ng-runtime/components/data/list/bundles/index.umd.js +19 -11
  112. app-ng-runtime/components/data/list/esm2022/list-item.directive.mjs +10 -1
  113. app-ng-runtime/components/data/list/esm2022/list.component.mjs +12 -12
  114. app-ng-runtime/components/data/list/fesm2022/index.mjs +20 -12
  115. app-ng-runtime/components/data/list/fesm2022/index.mjs.map +1 -1
  116. app-ng-runtime/components/data/live-table/bundles/index.umd.js +2 -2
  117. app-ng-runtime/components/data/live-table/esm2022/live-table.component.mjs +3 -3
  118. app-ng-runtime/components/data/live-table/fesm2022/index.mjs +2 -2
  119. app-ng-runtime/components/data/live-table/fesm2022/index.mjs.map +1 -1
  120. app-ng-runtime/components/data/pagination/bundles/index.umd.js +2 -0
  121. app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +3 -1
  122. app-ng-runtime/components/data/pagination/fesm2022/index.mjs +2 -0
  123. app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
  124. app-ng-runtime/components/data/table/bundles/index.umd.js +42 -8
  125. app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +14 -5
  126. app-ng-runtime/components/data/table/esm2022/table.component.mjs +28 -5
  127. app-ng-runtime/components/data/table/esm2022/table.props.mjs +3 -1
  128. app-ng-runtime/components/data/table/fesm2022/index.mjs +43 -9
  129. app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
  130. app-ng-runtime/components/data/table/table.component.d.ts +7 -0
  131. app-ng-runtime/components/dialogs/alert-dialog/bundles/index.umd.js +6 -4
  132. app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +7 -5
  133. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs +6 -4
  134. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
  135. app-ng-runtime/components/dialogs/confirm-dialog/bundles/index.umd.js +8 -5
  136. app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +9 -6
  137. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs +8 -5
  138. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
  139. app-ng-runtime/components/dialogs/default/bundles/index.umd.js +9 -3
  140. app-ng-runtime/components/dialogs/default/dialog-header/dialog-header.component.d.ts +2 -1
  141. app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +2 -1
  142. app-ng-runtime/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +9 -4
  143. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +9 -3
  144. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  145. app-ng-runtime/components/dialogs/design-dialog/bundles/index.umd.js +4 -4
  146. app-ng-runtime/components/dialogs/design-dialog/esm2022/dialog.component.mjs +5 -5
  147. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs +4 -4
  148. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
  149. app-ng-runtime/components/dialogs/iframe-dialog/bundles/index.umd.js +9 -5
  150. app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +10 -6
  151. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs +9 -5
  152. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
  153. app-ng-runtime/components/dialogs/partial-dialog/bundles/index.umd.js +9 -5
  154. app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +10 -6
  155. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs +9 -5
  156. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
  157. app-ng-runtime/components/input/calendar/bundles/index.umd.js +2 -4
  158. app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +3 -5
  159. app-ng-runtime/components/input/calendar/fesm2022/index.mjs +2 -4
  160. app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
  161. app-ng-runtime/components/input/chips/bundles/index.umd.js +25 -7
  162. app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +25 -8
  163. app-ng-runtime/components/input/chips/esm2022/chips.props.mjs +2 -1
  164. app-ng-runtime/components/input/chips/fesm2022/index.mjs +25 -7
  165. app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
  166. app-ng-runtime/components/input/color-picker/bundles/index.umd.js +5 -3
  167. app-ng-runtime/components/input/color-picker/color-picker.component.d.ts +1 -0
  168. app-ng-runtime/components/input/color-picker/esm2022/color-picker.component.mjs +6 -5
  169. app-ng-runtime/components/input/color-picker/esm2022/color-picker.props.mjs +2 -1
  170. app-ng-runtime/components/input/color-picker/fesm2022/index.mjs +5 -3
  171. app-ng-runtime/components/input/color-picker/fesm2022/index.mjs.map +1 -1
  172. app-ng-runtime/components/input/currency/bundles/index.umd.js +4 -3
  173. app-ng-runtime/components/input/currency/currency.component.d.ts +1 -0
  174. app-ng-runtime/components/input/currency/esm2022/currency.component.mjs +6 -6
  175. app-ng-runtime/components/input/currency/esm2022/currency.props.mjs +2 -1
  176. app-ng-runtime/components/input/currency/fesm2022/index.mjs +4 -3
  177. app-ng-runtime/components/input/currency/fesm2022/index.mjs.map +1 -1
  178. app-ng-runtime/components/input/default/bundles/index.umd.js +171 -94
  179. app-ng-runtime/components/input/default/button/button.component.d.ts +1 -0
  180. app-ng-runtime/components/input/default/checkbox/checkbox.component.d.ts +1 -0
  181. app-ng-runtime/components/input/default/esm2022/base-form.component.mjs +3 -3
  182. app-ng-runtime/components/input/default/esm2022/button/button.component.mjs +1 -1
  183. app-ng-runtime/components/input/default/esm2022/button/button.props.mjs +2 -1
  184. app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +8 -7
  185. app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +7 -7
  186. app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.props.mjs +2 -1
  187. app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +21 -16
  188. app-ng-runtime/components/input/default/esm2022/number/number.component.mjs +5 -5
  189. app-ng-runtime/components/input/default/esm2022/number/number.props.mjs +3 -1
  190. app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +28 -23
  191. app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +7 -7
  192. app-ng-runtime/components/input/default/esm2022/select/select.props.mjs +2 -1
  193. app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +6 -5
  194. app-ng-runtime/components/input/default/esm2022/switch/switch.props.mjs +2 -1
  195. app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +5 -5
  196. app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.props.mjs +2 -1
  197. app-ng-runtime/components/input/default/esm2022/text/color/input-color.component.mjs +5 -5
  198. app-ng-runtime/components/input/default/esm2022/text/color/input-color.props.mjs +2 -1
  199. app-ng-runtime/components/input/default/esm2022/text/email/input-email.component.mjs +5 -5
  200. app-ng-runtime/components/input/default/esm2022/text/email/input-email.props.mjs +2 -1
  201. app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +66 -13
  202. app-ng-runtime/components/input/default/esm2022/text/number/input-number.component.mjs +5 -5
  203. app-ng-runtime/components/input/default/esm2022/text/number/input-number.props.mjs +2 -1
  204. app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +5 -5
  205. app-ng-runtime/components/input/default/esm2022/text/text/input-text.props.mjs +2 -1
  206. app-ng-runtime/components/input/default/esm2022/textarea/textarea.component.mjs +6 -6
  207. app-ng-runtime/components/input/default/esm2022/textarea/textarea.props.mjs +2 -1
  208. app-ng-runtime/components/input/default/fesm2022/index.mjs +171 -94
  209. app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
  210. app-ng-runtime/components/input/default/number/number.component.d.ts +1 -0
  211. app-ng-runtime/components/input/default/select/select.component.d.ts +2 -0
  212. app-ng-runtime/components/input/default/text/calendar/input-calendar.component.d.ts +1 -0
  213. app-ng-runtime/components/input/default/text/color/input-color.component.d.ts +1 -0
  214. app-ng-runtime/components/input/default/text/email/input-email.component.d.ts +1 -0
  215. app-ng-runtime/components/input/default/text/locale/number-locale.d.ts +1 -0
  216. app-ng-runtime/components/input/default/text/number/input-number.component.d.ts +1 -0
  217. app-ng-runtime/components/input/default/text/text/input-text.component.d.ts +1 -0
  218. app-ng-runtime/components/input/default/textarea/textarea.component.d.ts +1 -0
  219. app-ng-runtime/components/input/epoch/base-date-time.component.d.ts +2 -1
  220. app-ng-runtime/components/input/epoch/bundles/index.umd.js +28 -21
  221. app-ng-runtime/components/input/epoch/date/date.component.d.ts +1 -0
  222. app-ng-runtime/components/input/epoch/date-time/date-time.component.d.ts +2 -1
  223. app-ng-runtime/components/input/epoch/esm2022/base-date-time.component.mjs +10 -6
  224. app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +8 -8
  225. app-ng-runtime/components/input/epoch/esm2022/date/date.props.mjs +2 -1
  226. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +9 -9
  227. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.props.mjs +2 -1
  228. app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +7 -7
  229. app-ng-runtime/components/input/epoch/esm2022/time/time.props.mjs +2 -1
  230. app-ng-runtime/components/input/epoch/fesm2022/index.mjs +25 -18
  231. app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
  232. app-ng-runtime/components/input/epoch/time/time.component.d.ts +1 -0
  233. app-ng-runtime/components/input/file-upload/bundles/index.umd.js +224 -121
  234. app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +220 -123
  235. app-ng-runtime/components/input/file-upload/esm2022/file-upload.props.mjs +7 -1
  236. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +225 -122
  237. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  238. app-ng-runtime/components/input/file-upload/file-upload.component.d.ts +18 -11
  239. app-ng-runtime/components/input/rating/bundles/index.umd.js +2 -2
  240. app-ng-runtime/components/input/rating/esm2022/rating.component.mjs +3 -3
  241. app-ng-runtime/components/input/rating/fesm2022/index.mjs +2 -2
  242. app-ng-runtime/components/input/rating/fesm2022/index.mjs.map +1 -1
  243. app-ng-runtime/components/input/slider/bundles/index.umd.js +5 -6
  244. app-ng-runtime/components/input/slider/esm2022/slider.component.mjs +6 -8
  245. app-ng-runtime/components/input/slider/esm2022/slider.props.mjs +2 -1
  246. app-ng-runtime/components/input/slider/fesm2022/index.mjs +5 -6
  247. app-ng-runtime/components/input/slider/fesm2022/index.mjs.map +1 -1
  248. app-ng-runtime/components/input/slider/slider.component.d.ts +1 -0
  249. app-ng-runtime/components/navigation/breadcrumb/bundles/index.umd.js +6 -6
  250. app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +7 -7
  251. app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs +6 -6
  252. app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
  253. app-ng-runtime/components/navigation/menu/bundles/index.umd.js +8 -6
  254. app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +8 -7
  255. app-ng-runtime/components/navigation/menu/esm2022/menu.props.mjs +2 -1
  256. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +8 -6
  257. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  258. app-ng-runtime/components/navigation/menu/menu.component.d.ts +1 -0
  259. app-ng-runtime/components/navigation/popover/bundles/index.umd.js +121 -13
  260. app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +122 -15
  261. app-ng-runtime/components/navigation/popover/esm2022/popover.props.mjs +2 -1
  262. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs +121 -13
  263. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  264. app-ng-runtime/components/navigation/popover/popover.component.d.ts +15 -3
  265. app-ng-runtime/components/page/default/bundles/index.umd.js +2 -1
  266. app-ng-runtime/components/page/default/esm2022/page.props.mjs +4 -3
  267. app-ng-runtime/components/page/default/fesm2022/index.mjs +2 -1
  268. app-ng-runtime/components/page/default/fesm2022/index.mjs.map +1 -1
  269. app-ng-runtime/components/page/footer/bundles/index.umd.js +2 -1
  270. app-ng-runtime/components/page/footer/esm2022/footer.props.mjs +3 -2
  271. app-ng-runtime/components/page/footer/fesm2022/index.mjs +2 -1
  272. app-ng-runtime/components/page/footer/fesm2022/index.mjs.map +1 -1
  273. app-ng-runtime/components/page/header/bundles/index.umd.js +2 -1
  274. app-ng-runtime/components/page/header/esm2022/header.props.mjs +3 -2
  275. app-ng-runtime/components/page/header/fesm2022/index.mjs +2 -1
  276. app-ng-runtime/components/page/header/fesm2022/index.mjs.map +1 -1
  277. app-ng-runtime/components/page/left-panel/bundles/index.umd.js +2 -1
  278. app-ng-runtime/components/page/left-panel/esm2022/left-panel.props.mjs +3 -2
  279. app-ng-runtime/components/page/left-panel/fesm2022/index.mjs +2 -1
  280. app-ng-runtime/components/page/left-panel/fesm2022/index.mjs.map +1 -1
  281. app-ng-runtime/components/page/right-panel/bundles/index.umd.js +2 -1
  282. app-ng-runtime/components/page/right-panel/esm2022/right-panel.props.mjs +3 -2
  283. app-ng-runtime/components/page/right-panel/fesm2022/index.mjs +2 -1
  284. app-ng-runtime/components/page/right-panel/fesm2022/index.mjs.map +1 -1
  285. app-ng-runtime/components/page/top-nav/bundles/index.umd.js +2 -1
  286. app-ng-runtime/components/page/top-nav/esm2022/top-nav.props.mjs +3 -2
  287. app-ng-runtime/components/page/top-nav/fesm2022/index.mjs +2 -1
  288. app-ng-runtime/components/page/top-nav/fesm2022/index.mjs.map +1 -1
  289. app-ng-runtime/core/bundles/index.umd.js +15 -13
  290. app-ng-runtime/core/esm2022/public_api.mjs +2 -2
  291. app-ng-runtime/core/esm2022/utils/build-utils.mjs +7 -7
  292. app-ng-runtime/core/esm2022/utils/utils.mjs +4 -5
  293. app-ng-runtime/core/fesm2022/index.mjs +11 -11
  294. app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
  295. app-ng-runtime/core/public_api.d.ts +1 -1
  296. app-ng-runtime/core/utils/utils.d.ts +1 -1
  297. app-ng-runtime/mobile/components/device/barcode-scanner/bundles/index.umd.js +2 -1
  298. app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.props.mjs +3 -2
  299. app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs +2 -1
  300. app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +1 -1
  301. app-ng-runtime/mobile/components/device/camera/bundles/index.umd.js +2 -1
  302. app-ng-runtime/mobile/components/device/camera/esm2022/camera.props.mjs +3 -2
  303. app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs +2 -1
  304. app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs.map +1 -1
  305. app-ng-runtime/package.json +1 -1
  306. app-ng-runtime/runtime/base/bundles/index.umd.js +6 -4
  307. app-ng-runtime/runtime/base/components/app-component/app.component.d.ts +2 -3
  308. app-ng-runtime/runtime/base/esm2022/components/app-component/app.component.mjs +5 -5
  309. app-ng-runtime/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +5 -4
  310. app-ng-runtime/runtime/base/fesm2022/index.mjs +6 -4
  311. app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
  312. app-ng-runtime/runtime/base/guards/can-deactivate-page.guard.d.ts +2 -1
  313. app-ng-runtime/scripts/datatable/datatable.js +32 -31
  314. app-ng-runtime/variables/bundles/index.umd.js +34 -16
  315. app-ng-runtime/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +35 -17
  316. app-ng-runtime/variables/fesm2022/index.mjs +34 -16
  317. app-ng-runtime/variables/fesm2022/index.mjs.map +1 -1
  318. app-ng-runtime/variables/manager/variable/web-socket-variable.manager.d.ts +0 -4
@@ -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 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.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.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}\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","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\";\nimport \"x2js\"\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 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 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 && 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': 'object', '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} 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 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.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.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}\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","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 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 _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} 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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"}