@wavemaker/app-ng-runtime 11.14.1-rc.6310 → 11.14.2-rc.6311

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 (412) hide show
  1. package/components/advanced/carousel/bundles/index.umd.js +15 -1
  2. package/components/advanced/carousel/carousel.directive.d.ts +1 -0
  3. package/components/advanced/carousel/esm2022/carousel.directive.mjs +16 -2
  4. package/components/advanced/carousel/fesm2022/index.mjs +15 -1
  5. package/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
  6. package/components/advanced/login/bundles/index.umd.js +24 -3
  7. package/components/advanced/login/esm2022/login.component.mjs +25 -4
  8. package/components/advanced/login/fesm2022/index.mjs +24 -3
  9. package/components/advanced/login/fesm2022/index.mjs.map +1 -1
  10. package/components/advanced/login/login.component.d.ts +5 -2
  11. package/components/base/bundles/index.umd.js +331 -36
  12. package/components/base/directives/show-in-device.directive.d.ts +2 -1
  13. package/components/base/esm2022/directives/show-in-device.directive.mjs +22 -4
  14. package/components/base/esm2022/pipes/custom-pipes.mjs +10 -10
  15. package/components/base/esm2022/utils/widget-utils.mjs +3 -3
  16. package/components/base/esm2022/widgets/common/base/base-container.component.mjs +27 -1
  17. package/components/base/esm2022/widgets/common/base/base-field-validations.mjs +18 -1
  18. package/components/base/esm2022/widgets/common/base/base.component.mjs +68 -7
  19. package/components/base/esm2022/widgets/common/base/custom-widget-container.directive.mjs +9 -1
  20. package/components/base/esm2022/widgets/common/base/dataset-aware-nav.component.mjs +44 -11
  21. package/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +20 -1
  22. package/components/base/esm2022/widgets/common/item-template/item-template.directive.mjs +26 -1
  23. package/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +44 -4
  24. package/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +16 -1
  25. package/components/base/esm2022/widgets/common/pull-to-refresh/pull-to-refresh.mjs +22 -1
  26. package/components/base/esm2022/widgets/framework/property-change-handler.mjs +7 -2
  27. package/components/base/esm2022/widgets/framework/widget-proxy-provider.mjs +5 -3
  28. package/components/base/esm2022/widgets/framework/widget-registry.mjs +6 -3
  29. package/components/base/fesm2022/index.mjs +327 -34
  30. package/components/base/fesm2022/index.mjs.map +1 -1
  31. package/components/base/pipes/custom-pipes.d.ts +5 -5
  32. package/components/base/widgets/common/base/base-container.component.d.ts +3 -2
  33. package/components/base/widgets/common/base/base-field-validations.d.ts +1 -0
  34. package/components/base/widgets/common/base/custom-widget-container.directive.d.ts +3 -2
  35. package/components/base/widgets/common/base/dataset-aware-nav.component.d.ts +6 -2
  36. package/components/base/widgets/common/base/partial-container.directive.d.ts +3 -2
  37. package/components/base/widgets/common/item-template/item-template.directive.d.ts +3 -2
  38. package/components/base/widgets/common/lazy-load/lazy-load.directive.d.ts +1 -1
  39. package/components/base/widgets/common/partial-param/partial-param.directive.d.ts +3 -2
  40. package/components/base/widgets/common/pull-to-refresh/pull-to-refresh.d.ts +3 -2
  41. package/components/basic/anchor/bundles/index.umd.js +13 -1
  42. package/components/basic/anchor/esm2022/anchor.component.mjs +14 -2
  43. package/components/basic/anchor/fesm2022/index.mjs +13 -1
  44. package/components/basic/anchor/fesm2022/index.mjs.map +1 -1
  45. package/components/basic/html/bundles/index.umd.js +13 -1
  46. package/components/basic/html/esm2022/html.directive.mjs +14 -2
  47. package/components/basic/html/fesm2022/index.mjs +13 -1
  48. package/components/basic/html/fesm2022/index.mjs.map +1 -1
  49. package/components/basic/label/bundles/index.umd.js +17 -1
  50. package/components/basic/label/esm2022/label.directive.mjs +18 -2
  51. package/components/basic/label/fesm2022/index.mjs +17 -1
  52. package/components/basic/label/fesm2022/index.mjs.map +1 -1
  53. package/components/basic/label/label.directive.d.ts +3 -2
  54. package/components/basic/progress/progress-circle/bundles/index.umd.js +10 -0
  55. package/components/basic/progress/progress-circle/esm2022/progress-circle.component.mjs +11 -1
  56. package/components/basic/progress/progress-circle/fesm2022/index.mjs +10 -0
  57. package/components/basic/progress/progress-circle/fesm2022/index.mjs.map +1 -1
  58. package/components/basic/progress/progress-circle/progress-circle.component.d.ts +3 -2
  59. package/components/basic/search/bundles/index.umd.js +31 -5
  60. package/components/basic/search/esm2022/scrollable.directive.mjs +13 -4
  61. package/components/basic/search/esm2022/search.component.mjs +20 -3
  62. package/components/basic/search/fesm2022/index.mjs +31 -5
  63. package/components/basic/search/fesm2022/index.mjs.map +1 -1
  64. package/components/basic/search/scrollable.directive.d.ts +5 -3
  65. package/components/basic/search/search.component.d.ts +3 -2
  66. package/components/basic/spinner/bundles/index.umd.js +9 -1
  67. package/components/basic/spinner/esm2022/spinner.component.mjs +10 -2
  68. package/components/basic/spinner/fesm2022/index.mjs +9 -1
  69. package/components/basic/spinner/fesm2022/index.mjs.map +1 -1
  70. package/components/basic/spinner/spinner.component.d.ts +4 -2
  71. package/components/chart/bundles/index.umd.js +21 -3
  72. package/components/chart/esm2022/chart.component.mjs +22 -4
  73. package/components/chart/fesm2022/index.mjs +21 -3
  74. package/components/chart/fesm2022/index.mjs.map +1 -1
  75. package/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +3 -2
  76. package/components/containers/accordion/accordion.directive.d.ts +5 -2
  77. package/components/containers/accordion/bundles/index.umd.js +49 -2
  78. package/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +10 -1
  79. package/components/containers/accordion/esm2022/accordion.directive.mjs +41 -3
  80. package/components/containers/accordion/fesm2022/index.mjs +49 -2
  81. package/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  82. package/components/containers/panel/bundles/index.umd.js +13 -0
  83. package/components/containers/panel/esm2022/panel.component.mjs +14 -1
  84. package/components/containers/panel/fesm2022/index.mjs +13 -0
  85. package/components/containers/panel/fesm2022/index.mjs.map +1 -1
  86. package/components/containers/panel/panel.component.d.ts +3 -2
  87. package/components/containers/tabs/bundles/index.umd.js +54 -2
  88. package/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +10 -1
  89. package/components/containers/tabs/esm2022/tabs.component.mjs +46 -3
  90. package/components/containers/tabs/fesm2022/index.mjs +54 -2
  91. package/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  92. package/components/containers/tabs/tab-pane/tab-pane.component.d.ts +3 -2
  93. package/components/containers/tabs/tabs.component.d.ts +5 -2
  94. package/components/containers/wizard/bundles/index.umd.js +47 -3
  95. package/components/containers/wizard/esm2022/wizard-step/wizard-step.component.mjs +16 -3
  96. package/components/containers/wizard/esm2022/wizard.component.mjs +33 -2
  97. package/components/containers/wizard/fesm2022/index.mjs +47 -3
  98. package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  99. package/components/containers/wizard/wizard-step/wizard-step.component.d.ts +3 -2
  100. package/components/containers/wizard/wizard.component.d.ts +4 -2
  101. package/components/data/card/bundles/index.umd.js +17 -1
  102. package/components/data/card/card-content/card-content.component.d.ts +3 -2
  103. package/components/data/card/card.component.d.ts +4 -2
  104. package/components/data/card/esm2022/card-content/card-content.component.mjs +6 -1
  105. package/components/data/card/esm2022/card.component.mjs +13 -2
  106. package/components/data/card/fesm2022/index.mjs +17 -1
  107. package/components/data/card/fesm2022/index.mjs.map +1 -1
  108. package/components/data/form/bundles/index.umd.js +92 -0
  109. package/components/data/form/esm2022/form-action/form-action.directive.mjs +7 -1
  110. package/components/data/form/esm2022/form-field/form-field.directive.mjs +28 -1
  111. package/components/data/form/esm2022/form-widget.directive.mjs +8 -1
  112. package/components/data/form/esm2022/form.component.mjs +27 -1
  113. package/components/data/form/esm2022/live-actions/live-actions.directive.mjs +7 -1
  114. package/components/data/form/esm2022/live-filter/live-filter.directive.mjs +12 -1
  115. package/components/data/form/esm2022/live-form/live-form.directive.mjs +10 -1
  116. package/components/data/form/fesm2022/index.mjs +92 -0
  117. package/components/data/form/fesm2022/index.mjs.map +1 -1
  118. package/components/data/form/form-action/form-action.directive.d.ts +3 -2
  119. package/components/data/form/form-field/form-field.directive.d.ts +3 -2
  120. package/components/data/form/form-widget.directive.d.ts +3 -2
  121. package/components/data/form/live-actions/live-actions.directive.d.ts +3 -1
  122. package/components/data/form/live-filter/live-filter.directive.d.ts +3 -1
  123. package/components/data/form/live-form/live-form.directive.d.ts +3 -1
  124. package/components/data/list/bundles/index.umd.js +213 -19
  125. package/components/data/list/esm2022/list-item.directive.mjs +95 -11
  126. package/components/data/list/esm2022/list.component.mjs +120 -10
  127. package/components/data/list/fesm2022/index.mjs +213 -19
  128. package/components/data/list/fesm2022/index.mjs.map +1 -1
  129. package/components/data/list/list-item.directive.d.ts +7 -2
  130. package/components/data/list/list.component.d.ts +7 -0
  131. package/components/data/live-table/bundles/index.umd.js +13 -1
  132. package/components/data/live-table/esm2022/live-table.component.mjs +14 -2
  133. package/components/data/live-table/fesm2022/index.mjs +13 -1
  134. package/components/data/live-table/fesm2022/index.mjs.map +1 -1
  135. package/components/data/live-table/live-table.component.d.ts +4 -2
  136. package/components/data/pagination/bundles/index.umd.js +57 -4
  137. package/components/data/pagination/esm2022/pagination.component.mjs +58 -5
  138. package/components/data/pagination/fesm2022/index.mjs +57 -4
  139. package/components/data/pagination/fesm2022/index.mjs.map +1 -1
  140. package/components/data/pagination/pagination.component.d.ts +4 -2
  141. package/components/data/table/bundles/index.umd.js +345 -15
  142. package/components/data/table/esm2022/table-action/table-action.directive.mjs +8 -1
  143. package/components/data/table/esm2022/table-column/table-column.directive.mjs +107 -3
  144. package/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +9 -1
  145. package/components/data/table/esm2022/table-cud.directive.mjs +8 -2
  146. package/components/data/table/esm2022/table-filter.directive.mjs +12 -2
  147. package/components/data/table/esm2022/table-row/table-row.directive.mjs +8 -1
  148. package/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +8 -1
  149. package/components/data/table/esm2022/table.component.mjs +193 -12
  150. package/components/data/table/fesm2022/index.mjs +345 -15
  151. package/components/data/table/fesm2022/index.mjs.map +1 -1
  152. package/components/data/table/table-action/table-action.directive.d.ts +3 -2
  153. package/components/data/table/table-column/table-column.directive.d.ts +3 -2
  154. package/components/data/table/table-column-group/table-column-group.directive.d.ts +3 -2
  155. package/components/data/table/table-cud.directive.d.ts +3 -1
  156. package/components/data/table/table-filter.directive.d.ts +3 -1
  157. package/components/data/table/table-row/table-row.directive.d.ts +3 -2
  158. package/components/data/table/table-row-action/table-row-action.directive.d.ts +3 -2
  159. package/components/data/table/table.component.d.ts +6 -2
  160. package/components/dialogs/alert-dialog/alert-dialog.component.d.ts +3 -2
  161. package/components/dialogs/alert-dialog/bundles/index.umd.js +5 -0
  162. package/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +6 -1
  163. package/components/dialogs/alert-dialog/fesm2022/index.mjs +5 -0
  164. package/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
  165. package/components/dialogs/confirm-dialog/bundles/index.umd.js +5 -0
  166. package/components/dialogs/confirm-dialog/confirm-dialog.component.d.ts +3 -2
  167. package/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +6 -1
  168. package/components/dialogs/confirm-dialog/fesm2022/index.mjs +5 -0
  169. package/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
  170. package/components/dialogs/default/bundles/index.umd.js +15 -2
  171. package/components/dialogs/default/dialog-body/dialog-body.directive.d.ts +4 -2
  172. package/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +16 -3
  173. package/components/dialogs/default/fesm2022/index.mjs +15 -2
  174. package/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  175. package/components/dialogs/design-dialog/bundles/index.umd.js +7 -0
  176. package/components/dialogs/design-dialog/dialog.component.d.ts +3 -2
  177. package/components/dialogs/design-dialog/esm2022/dialog.component.mjs +8 -1
  178. package/components/dialogs/design-dialog/fesm2022/index.mjs +7 -0
  179. package/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
  180. package/components/dialogs/iframe-dialog/bundles/index.umd.js +5 -0
  181. package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +6 -1
  182. package/components/dialogs/iframe-dialog/fesm2022/index.mjs +5 -0
  183. package/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
  184. package/components/dialogs/iframe-dialog/iframe-dialog.component.d.ts +3 -2
  185. package/components/dialogs/partial-dialog/bundles/index.umd.js +23 -3
  186. package/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +24 -4
  187. package/components/dialogs/partial-dialog/fesm2022/index.mjs +23 -3
  188. package/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
  189. package/components/dialogs/partial-dialog/partial-dialog.component.d.ts +4 -2
  190. package/components/input/base-form/base-form.component.d.ts +4 -2
  191. package/components/input/base-form/bundles/index.umd.js +16 -2
  192. package/components/input/base-form/esm2022/base-form.component.mjs +17 -3
  193. package/components/input/base-form/fesm2022/index.mjs +16 -2
  194. package/components/input/base-form/fesm2022/index.mjs.map +1 -1
  195. package/components/input/base-form-custom/base-form-custom.component.d.ts +3 -2
  196. package/components/input/base-form-custom/bundles/index.umd.js +13 -2
  197. package/components/input/base-form-custom/esm2022/base-form-custom.component.mjs +14 -3
  198. package/components/input/base-form-custom/fesm2022/index.mjs +13 -2
  199. package/components/input/base-form-custom/fesm2022/index.mjs.map +1 -1
  200. package/components/input/checkbox/bundles/index.umd.js +7 -0
  201. package/components/input/checkbox/checkbox.component.d.ts +3 -2
  202. package/components/input/checkbox/esm2022/checkbox.component.mjs +8 -1
  203. package/components/input/checkbox/fesm2022/index.mjs +7 -0
  204. package/components/input/checkbox/fesm2022/index.mjs.map +1 -1
  205. package/components/input/checkboxset/bundles/index.umd.js +18 -2
  206. package/components/input/checkboxset/checkboxset.component.d.ts +4 -2
  207. package/components/input/checkboxset/esm2022/checkboxset.component.mjs +19 -3
  208. package/components/input/checkboxset/fesm2022/index.mjs +18 -2
  209. package/components/input/checkboxset/fesm2022/index.mjs.map +1 -1
  210. package/components/input/chips/bundles/index.umd.js +45 -5
  211. package/components/input/chips/chips.component.d.ts +3 -2
  212. package/components/input/chips/esm2022/chips.component.mjs +46 -6
  213. package/components/input/chips/fesm2022/index.mjs +45 -5
  214. package/components/input/chips/fesm2022/index.mjs.map +1 -1
  215. package/components/input/color-picker/bundles/index.umd.js +8 -0
  216. package/components/input/color-picker/color-picker.component.d.ts +3 -2
  217. package/components/input/color-picker/esm2022/color-picker.component.mjs +9 -1
  218. package/components/input/color-picker/fesm2022/index.mjs +8 -0
  219. package/components/input/color-picker/fesm2022/index.mjs.map +1 -1
  220. package/components/input/composite/bundles/index.umd.js +10 -1
  221. package/components/input/composite/composite.directive.d.ts +3 -2
  222. package/components/input/composite/esm2022/composite.directive.mjs +11 -2
  223. package/components/input/composite/fesm2022/index.mjs +10 -1
  224. package/components/input/composite/fesm2022/index.mjs.map +1 -1
  225. package/components/input/currency/bundles/index.umd.js +7 -0
  226. package/components/input/currency/currency.component.d.ts +3 -2
  227. package/components/input/currency/esm2022/currency.component.mjs +8 -1
  228. package/components/input/currency/fesm2022/index.mjs +7 -0
  229. package/components/input/currency/fesm2022/index.mjs.map +1 -1
  230. package/components/input/dataset-aware-form/bundles/index.umd.js +26 -2
  231. package/components/input/dataset-aware-form/esm2022/dataset-aware-form.component.mjs +27 -3
  232. package/components/input/dataset-aware-form/fesm2022/index.mjs +26 -2
  233. package/components/input/dataset-aware-form/fesm2022/index.mjs.map +1 -1
  234. package/components/input/epoch/date/bundles/index.umd.js +22 -0
  235. package/components/input/epoch/date/date.component.d.ts +1 -0
  236. package/components/input/epoch/date/esm2022/date.component.mjs +23 -1
  237. package/components/input/epoch/date/fesm2022/index.mjs +22 -0
  238. package/components/input/epoch/date/fesm2022/index.mjs.map +1 -1
  239. package/components/input/file-upload/bundles/index.umd.js +25 -8
  240. package/components/input/file-upload/esm2022/file-upload.component.mjs +26 -9
  241. package/components/input/file-upload/fesm2022/index.mjs +25 -8
  242. package/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  243. package/components/input/file-upload/file-upload.component.d.ts +3 -0
  244. package/components/input/number/bundles/index.umd.js +8 -0
  245. package/components/input/number/esm2022/number.component.mjs +9 -1
  246. package/components/input/number/fesm2022/index.mjs +8 -0
  247. package/components/input/number/fesm2022/index.mjs.map +1 -1
  248. package/components/input/number/number.component.d.ts +3 -2
  249. package/components/input/radioset/bundles/index.umd.js +18 -2
  250. package/components/input/radioset/esm2022/radioset.component.mjs +19 -3
  251. package/components/input/radioset/fesm2022/index.mjs +18 -2
  252. package/components/input/radioset/fesm2022/index.mjs.map +1 -1
  253. package/components/input/radioset/radioset.component.d.ts +4 -2
  254. package/components/input/rating/bundles/index.umd.js +10 -0
  255. package/components/input/rating/esm2022/rating.component.mjs +11 -1
  256. package/components/input/rating/fesm2022/index.mjs +10 -0
  257. package/components/input/rating/fesm2022/index.mjs.map +1 -1
  258. package/components/input/rating/rating.component.d.ts +3 -2
  259. package/components/input/select/bundles/index.umd.js +6 -0
  260. package/components/input/select/esm2022/select.component.mjs +7 -1
  261. package/components/input/select/fesm2022/index.mjs +6 -0
  262. package/components/input/select/fesm2022/index.mjs.map +1 -1
  263. package/components/input/select/select.component.d.ts +3 -2
  264. package/components/input/slider/bundles/index.umd.js +10 -0
  265. package/components/input/slider/esm2022/slider.component.mjs +11 -1
  266. package/components/input/slider/fesm2022/index.mjs +10 -0
  267. package/components/input/slider/fesm2022/index.mjs.map +1 -1
  268. package/components/input/slider/slider.component.d.ts +3 -2
  269. package/components/input/switch/bundles/index.umd.js +22 -2
  270. package/components/input/switch/esm2022/switch.component.mjs +23 -3
  271. package/components/input/switch/fesm2022/index.mjs +22 -2
  272. package/components/input/switch/fesm2022/index.mjs.map +1 -1
  273. package/components/input/switch/switch.component.d.ts +3 -2
  274. package/components/input/text/bundles/index.umd.js +36 -0
  275. package/components/input/text/esm2022/input-calendar/input-calendar.component.mjs +8 -1
  276. package/components/input/text/esm2022/input-color/input-color.component.mjs +8 -1
  277. package/components/input/text/esm2022/input-email/input-email.component.mjs +8 -1
  278. package/components/input/text/esm2022/input-number/input-number.component.mjs +8 -1
  279. package/components/input/text/esm2022/input-text/input-text.component.mjs +9 -1
  280. package/components/input/text/fesm2022/index.mjs +36 -0
  281. package/components/input/text/fesm2022/index.mjs.map +1 -1
  282. package/components/input/text/input-calendar/input-calendar.component.d.ts +3 -2
  283. package/components/input/text/input-color/input-color.component.d.ts +3 -2
  284. package/components/input/text/input-email/input-email.component.d.ts +3 -2
  285. package/components/input/text/input-number/input-number.component.d.ts +3 -2
  286. package/components/input/text/input-text/input-text.component.d.ts +3 -2
  287. package/components/input/textarea/bundles/index.umd.js +7 -0
  288. package/components/input/textarea/esm2022/textarea.component.mjs +8 -1
  289. package/components/input/textarea/fesm2022/index.mjs +7 -0
  290. package/components/input/textarea/fesm2022/index.mjs.map +1 -1
  291. package/components/input/textarea/textarea.component.d.ts +3 -2
  292. package/components/navigation/menu/bundles/index.umd.js +55 -6
  293. package/components/navigation/menu/esm2022/menu-adapator.component.mjs +17 -3
  294. package/components/navigation/menu/esm2022/menu.component.mjs +10 -3
  295. package/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +6 -1
  296. package/components/navigation/menu/esm2022/nav/nav.component.mjs +11 -1
  297. package/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +16 -3
  298. package/components/navigation/menu/fesm2022/index.mjs +55 -6
  299. package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  300. package/components/navigation/menu/menu-adapator.component.d.ts +4 -2
  301. package/components/navigation/menu/nav/nav-item/nav-item.directive.d.ts +3 -2
  302. package/components/navigation/menu/nav/nav.component.d.ts +3 -2
  303. package/components/navigation/menu/nav/navigation-control.directive.d.ts +4 -2
  304. package/components/navigation/navbar/bundles/index.umd.js +5 -0
  305. package/components/navigation/navbar/esm2022/navbar.component.mjs +6 -1
  306. package/components/navigation/navbar/fesm2022/index.mjs +5 -0
  307. package/components/navigation/navbar/fesm2022/index.mjs.map +1 -1
  308. package/components/navigation/navbar/navbar.component.d.ts +3 -2
  309. package/components/navigation/popover/bundles/index.umd.js +65 -13
  310. package/components/navigation/popover/esm2022/popover.component.mjs +63 -11
  311. package/components/navigation/popover/fesm2022/index.mjs +62 -10
  312. package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  313. package/components/navigation/popover/popover.component.d.ts +11 -3
  314. package/components/page/default/bundles/index.umd.js +30 -6
  315. package/components/page/default/esm2022/layout.directive.mjs +9 -1
  316. package/components/page/default/esm2022/page-content/page-content.component.mjs +13 -3
  317. package/components/page/default/esm2022/router-outlet.directive.mjs +13 -6
  318. package/components/page/default/fesm2022/index.mjs +30 -6
  319. package/components/page/default/fesm2022/index.mjs.map +1 -1
  320. package/components/page/default/layout.directive.d.ts +3 -2
  321. package/components/page/default/page-content/page-content.component.d.ts +3 -2
  322. package/components/page/default/router-outlet.directive.d.ts +5 -2
  323. package/components/page/left-panel/bundles/index.umd.js +16 -0
  324. package/components/page/left-panel/esm2022/left-panel.directive.mjs +17 -1
  325. package/components/page/left-panel/fesm2022/index.mjs +16 -0
  326. package/components/page/left-panel/fesm2022/index.mjs.map +1 -1
  327. package/components/page/left-panel/left-panel.directive.d.ts +3 -2
  328. package/components/page/top-nav/bundles/index.umd.js +2 -1
  329. package/components/page/top-nav/esm2022/top-nav.props.mjs +3 -2
  330. package/components/page/top-nav/fesm2022/index.mjs +2 -1
  331. package/components/page/top-nav/fesm2022/index.mjs.map +1 -1
  332. package/components/prefab/bundles/index.umd.js +4 -0
  333. package/components/prefab/esm2022/prefab.directive.mjs +5 -1
  334. package/components/prefab/fesm2022/index.mjs +4 -0
  335. package/components/prefab/fesm2022/index.mjs.map +1 -1
  336. package/core/bundles/index.umd.js +391 -94
  337. package/core/esm2022/public_api.mjs +3 -3
  338. package/core/esm2022/services/viewport.service.mjs +24 -10
  339. package/core/esm2022/types/types.mjs +1 -1
  340. package/core/esm2022/utils/dom.mjs +18 -2
  341. package/core/esm2022/utils/event-notifier.mjs +5 -2
  342. package/core/esm2022/utils/lru-cache.mjs +16 -2
  343. package/core/esm2022/utils/utils.mjs +6 -2
  344. package/core/esm2022/utils/watcher.mjs +323 -81
  345. package/core/fesm2022/index.mjs +390 -96
  346. package/core/fesm2022/index.mjs.map +1 -1
  347. package/core/public_api.d.ts +2 -2
  348. package/core/services/viewport.service.d.ts +5 -2
  349. package/core/types/types.d.ts +1 -0
  350. package/core/utils/lru-cache.d.ts +6 -0
  351. package/core/utils/utils.d.ts +1 -0
  352. package/core/utils/watcher.d.ts +26 -5
  353. package/http/bundles/index.umd.js +31 -1
  354. package/http/esm2022/http.service.mjs +32 -2
  355. package/http/fesm2022/index.mjs +31 -1
  356. package/http/fesm2022/index.mjs.map +1 -1
  357. package/http/http.service.d.ts +6 -2
  358. package/npm-shrinkwrap.json +2 -2
  359. package/oAuth/bundles/index.umd.js +9 -0
  360. package/oAuth/esm2022/oAuth.service.mjs +10 -1
  361. package/oAuth/fesm2022/index.mjs +9 -0
  362. package/oAuth/fesm2022/index.mjs.map +1 -1
  363. package/oAuth/oAuth.service.d.ts +3 -1
  364. package/package-lock.json +2 -2
  365. package/package.json +1 -1
  366. package/runtime/base/bundles/index.umd.js +367 -32
  367. package/runtime/base/components/app-component/app.component.d.ts +4 -0
  368. package/runtime/base/components/prefab-preview.component.d.ts +5 -2
  369. package/runtime/base/directives/accessroles.directive.d.ts +4 -3
  370. package/runtime/base/directives/prefab.directive.d.ts +3 -2
  371. package/runtime/base/esm2022/components/app-component/app.component.mjs +40 -9
  372. package/runtime/base/esm2022/components/base-custom-widget.component.mjs +33 -2
  373. package/runtime/base/esm2022/components/base-layout.component.mjs +7 -1
  374. package/runtime/base/esm2022/components/base-page.component.mjs +36 -3
  375. package/runtime/base/esm2022/components/base-partial.component.mjs +37 -3
  376. package/runtime/base/esm2022/components/base-prefab.component.mjs +32 -3
  377. package/runtime/base/esm2022/components/base-spa-page.component.mjs +37 -3
  378. package/runtime/base/esm2022/components/prefab-preview.component.mjs +23 -4
  379. package/runtime/base/esm2022/directives/accessroles.directive.mjs +11 -2
  380. package/runtime/base/esm2022/directives/prefab.directive.mjs +9 -1
  381. package/runtime/base/esm2022/services/app.manager.service.mjs +40 -12
  382. package/runtime/base/esm2022/services/app.service.mjs +34 -2
  383. package/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +4 -1
  384. package/runtime/base/esm2022/services/pipe-provider.service.mjs +7 -4
  385. package/runtime/base/esm2022/services/spinner.service.mjs +15 -1
  386. package/runtime/base/esm2022/util/fragment-monitor.mjs +23 -2
  387. package/runtime/base/fesm2022/index.mjs +368 -33
  388. package/runtime/base/fesm2022/index.mjs.map +1 -1
  389. package/runtime/base/runtime-base.module.d.ts +2 -2
  390. package/runtime/base/services/app.manager.service.d.ts +6 -1
  391. package/runtime/base/services/app.service.d.ts +12 -2
  392. package/runtime/base/services/dynamic-component-ref-provider.service.d.ts +2 -1
  393. package/runtime/base/services/spinner.service.d.ts +3 -1
  394. package/runtime/base/util/fragment-monitor.d.ts +6 -0
  395. package/runtime/dynamic/bundles/index.umd.js +5 -0
  396. package/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +6 -1
  397. package/runtime/dynamic/fesm2022/index.mjs +5 -0
  398. package/runtime/dynamic/fesm2022/index.mjs.map +1 -1
  399. package/scripts/@wavemaker/nvd3/build/nv.d3.min.js +1 -1
  400. package/scripts/datatable/datatable.js +100 -14
  401. package/security/bundles/index.umd.js +41 -2
  402. package/security/esm2022/security.service.mjs +42 -3
  403. package/security/fesm2022/index.mjs +41 -2
  404. package/security/fesm2022/index.mjs.map +1 -1
  405. package/security/security.service.d.ts +5 -2
  406. package/variables/bundles/index.umd.js +50 -6
  407. package/variables/esm2022/manager/action/notification-action.manager.mjs +18 -3
  408. package/variables/esm2022/manager/variable/base-variable.manager.mjs +15 -2
  409. package/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +13 -3
  410. package/variables/esm2022/service/variables.service.mjs +8 -2
  411. package/variables/fesm2022/index.mjs +50 -6
  412. package/variables/fesm2022/index.mjs.map +1 -1
@@ -1,5 +1,5 @@
1
1
  import { Attribute, ImplicitReceiver, PropertyRead, LiteralPrimitive, LiteralArray, LiteralMap, PropertyWrite, KeyedRead, PrefixNot, Unary, Binary, Conditional, Call, Chain, BindingPipe, Parser, Lexer } from '@angular/compiler';
2
- import { isArray, startsWith, includes, get, flatten, isEqual, isObject as isObject$1, clone, camelCase, split, map, attempt, isError, isFunction, isDate, isString, cloneDeep, identity, intersection, omit, keys, toLower, replace as replace$1, forEach, trim, isEqualWith, every, indexOf, isNumber, filter, isUndefined, isNull, noop as noop$2, toUpper, assign, merge, isEmpty, debounce as debounce$1, isNil } from 'lodash-es';
2
+ import { isArray, startsWith, includes, get, flatten, isEqual, clone, isObject as isObject$1, camelCase, split, map, attempt, isError, isFunction, isDate, isString, cloneDeep, identity, intersection, omit, keys, toLower, replace as replace$1, forEach, trim, isEqualWith, every, indexOf, isNumber, filter, isUndefined, isNull, noop as noop$2, toUpper, assign, merge, isEmpty, debounce as debounce$1, isNil } from 'lodash-es';
3
3
  import { Subject } from 'rxjs';
4
4
  import X2JS from 'x2js';
5
5
  import * as momentLib from 'moment-timezone/moment-timezone';
@@ -1432,11 +1432,11 @@ const CURRENCY_INFO = {
1432
1432
  }
1433
1433
  };
1434
1434
 
1435
- const $RAF$1 = window.requestAnimationFrame;
1435
+ const $RAF = window.requestAnimationFrame;
1436
1436
  const $RAFQueue = [];
1437
1437
  const invokeLater = fn => {
1438
1438
  if (!$RAFQueue.length) {
1439
- $RAF$1(() => {
1439
+ $RAF(() => {
1440
1440
  $RAFQueue.forEach(f => f());
1441
1441
  $RAFQueue.length = 0;
1442
1442
  });
@@ -1507,7 +1507,23 @@ const setProperty = (node, propName, val, sync) => {
1507
1507
  sync ? task() : invokeLater(task);
1508
1508
  };
1509
1509
  const setAttr = (node, attrName, val, sync) => {
1510
- const task = () => node instanceof Element && node.setAttribute(attrName, val);
1510
+ const task = () => {
1511
+ if (node instanceof Element) {
1512
+ // Handle tabindex specifically - ensure it's a valid string representation
1513
+ if (attrName === 'tabindex') {
1514
+ // Convert to string, handling 0, null, undefined, and NaN
1515
+ if (val === null || val === undefined || (typeof val === 'number' && isNaN(val))) {
1516
+ node.removeAttribute(attrName);
1517
+ }
1518
+ else {
1519
+ node.setAttribute(attrName, String(val));
1520
+ }
1521
+ }
1522
+ else {
1523
+ node.setAttribute(attrName, val);
1524
+ }
1525
+ }
1526
+ };
1511
1527
  sync ? task() : invokeLater(task);
1512
1528
  };
1513
1529
  const setHtml = (node, html, sync) => {
@@ -2173,14 +2189,25 @@ const getFnForEventExpr = (expr) => {
2173
2189
  return fnExecutor(expr, ExpressionType.Action);
2174
2190
  };
2175
2191
 
2192
+ // Constants
2193
+ const WIDGET_ID_REGEX = /^(widget-[^_]+)/;
2194
+ const WIDGET_PROPERTY_REGEX = /^widget-[^_]+_(.+)$/;
2195
+ const ARRAY_INDEX_PLACEHOLDER = '[$i]';
2196
+ const ARRAY_INDEX_ZERO = '[0]';
2197
+ const DEBOUNCE_WAIT = 100;
2198
+ const MAX_WATCH_CYCLES = 5;
2176
2199
  const registry = new Map();
2177
2200
  const watchIdGenerator = new IDGenerator('watch-id-');
2178
- const FIRST_TIME_WATCH = {};
2179
- Object.freeze(FIRST_TIME_WATCH);
2180
- const isFirstTimeChange = v => v === FIRST_TIME_WATCH;
2201
+ const FIRST_TIME_WATCH = Object.freeze({});
2202
+ // State
2181
2203
  let muted = false;
2204
+ let changedByWatch = false;
2205
+ let skipWatchers = false;
2206
+ let ngZone;
2182
2207
  let appRef;
2183
- const debounce = (fn, wait = 50) => {
2208
+ // Utility functions
2209
+ const isFirstTimeChange = (v) => v === FIRST_TIME_WATCH;
2210
+ const debounce = (fn, wait = DEBOUNCE_WAIT) => {
2184
2211
  let timeout;
2185
2212
  return (...args) => {
2186
2213
  window['__zone_symbol__clearTimeout'](timeout);
@@ -2194,115 +2221,345 @@ const unMuteWatchers = () => {
2194
2221
  muted = false;
2195
2222
  triggerWatchers();
2196
2223
  };
2224
+ /**
2225
+ * Extracts widget ID from identifier (e.g., "widget-id23_eventsource" -> "widget-id23")
2226
+ */
2227
+ const getWidgetId = (identifier) => {
2228
+ if (!identifier || typeof identifier !== 'string') {
2229
+ return null;
2230
+ }
2231
+ const match = identifier.match(WIDGET_ID_REGEX);
2232
+ return match ? match[1] : null;
2233
+ };
2234
+ /**
2235
+ * Extracts property name from identifier (e.g., "widget-id23_eventsource" -> "eventsource")
2236
+ */
2237
+ const getPropertyName = (identifier) => {
2238
+ if (!identifier || typeof identifier !== 'string') {
2239
+ return identifier;
2240
+ }
2241
+ const match = identifier.match(WIDGET_PROPERTY_REGEX);
2242
+ return match ? match[1] : identifier;
2243
+ };
2244
+ /**
2245
+ * Array consumer wrapper for array-based expressions
2246
+ */
2197
2247
  const arrayConsumer = (listenerFn, restExpr, newVal, oldVal) => {
2198
- let data = newVal, formattedData;
2199
- if (isArray(data)) {
2200
- formattedData = data.map(function (datum) {
2201
- return findValueOf(datum, restExpr);
2202
- });
2203
- // If resulting structure is an array of array, flatten it
2204
- if (isArray(formattedData[0])) {
2205
- formattedData = flatten(formattedData);
2206
- }
2207
- listenerFn(formattedData, oldVal);
2248
+ if (!isArray(newVal)) {
2249
+ return;
2208
2250
  }
2251
+ let formattedData = newVal.map(datum => findValueOf(datum, restExpr));
2252
+ // Flatten if result is array of arrays
2253
+ if (isArray(formattedData[0])) {
2254
+ formattedData = flatten(formattedData);
2255
+ }
2256
+ listenerFn(formattedData, oldVal);
2209
2257
  };
2210
- const getUpdatedWatcInfo = (expr, acceptsArray, listener) => {
2211
- // listener doesn't accept array
2212
- // replace all `[$i]` with `[0]` and return the expression
2213
- let regex = /\[\$i\]/g, $I = '[$i]', $0 = '[0]';
2258
+ /**
2259
+ * Updates watch info for array expressions
2260
+ */
2261
+ const getUpdatedWatchInfo = (expr, acceptsArray, listener) => {
2262
+ const regex = /\[\$i\]/g;
2214
2263
  if (!acceptsArray) {
2215
2264
  return {
2216
- 'expr': expr.replace(regex, $0),
2217
- 'listener': listener
2265
+ expr: expr.replace(regex, ARRAY_INDEX_ZERO),
2266
+ listener
2218
2267
  };
2219
2268
  }
2220
- // listener accepts array
2221
- // replace all except the last `[$i]` with `[0]` and return the expression.
2222
- var index = expr.lastIndexOf($I), _expr = expr.substr(0, index).replace($I, $0), restExpr = expr.substr(index + 5), arrayConsumerFn = listener;
2223
- if (restExpr) {
2224
- arrayConsumerFn = arrayConsumer.bind(undefined, listener, restExpr);
2225
- }
2269
+ const lastIndex = expr.lastIndexOf(ARRAY_INDEX_PLACEHOLDER);
2270
+ const baseExpr = expr.substring(0, lastIndex).replace(ARRAY_INDEX_PLACEHOLDER, ARRAY_INDEX_ZERO);
2271
+ const restExpr = expr.substring(lastIndex + 5);
2272
+ const arrayConsumerFn = restExpr
2273
+ ? arrayConsumer.bind(undefined, listener, restExpr)
2274
+ : listener;
2226
2275
  return {
2227
- 'expr': _expr,
2228
- 'listener': arrayConsumerFn
2276
+ expr: baseExpr,
2277
+ listener: arrayConsumerFn
2229
2278
  };
2230
2279
  };
2280
+ /**
2281
+ * Determines if an expression is static (doesn't need to be watched)
2282
+ */
2283
+ const STATIC_EXPRESSION_NAMES = [
2284
+ "row.getProperty('investment')",
2285
+ "row.getProperty('factsheetLink')",
2286
+ "row.getProperty('isRebalanceEligible')"
2287
+ ];
2288
+ const isStaticExpression = (expr) => {
2289
+ if (typeof expr !== 'string') {
2290
+ return false;
2291
+ }
2292
+ const trimmedExpr = expr.trim();
2293
+ // Expressions that always evaluate to localization strings
2294
+ // if (trimmedExpr.includes('appLocale')) {
2295
+ // return true;
2296
+ // }
2297
+ // Hard-coded static expression names
2298
+ if (STATIC_EXPRESSION_NAMES.includes(trimmedExpr)) {
2299
+ return true;
2300
+ }
2301
+ return false;
2302
+ };
2303
+ /**
2304
+ * Gets the scope type from the scope object
2305
+ */
2306
+ const getScopeType = ($scope) => {
2307
+ if (!$scope) {
2308
+ return null;
2309
+ }
2310
+ if ($scope.pageName)
2311
+ return 'Page';
2312
+ if ($scope.prefabName)
2313
+ return 'Prefab';
2314
+ if ($scope.partialName)
2315
+ return 'Partial';
2316
+ // Check for App scope
2317
+ if ($scope.Variables !== undefined &&
2318
+ $scope.Actions !== undefined &&
2319
+ !$scope.pageName &&
2320
+ !$scope.prefabName &&
2321
+ !$scope.partialName) {
2322
+ return 'App';
2323
+ }
2324
+ if ($scope.constructor?.name === 'AppRef') {
2325
+ return 'App';
2326
+ }
2327
+ return null;
2328
+ };
2329
+ /**
2330
+ * Gets scope name based on scope type
2331
+ */
2332
+ const getScopeName = ($scope, scopeType) => {
2333
+ if (!scopeType || !$scope) {
2334
+ return null;
2335
+ }
2336
+ switch (scopeType) {
2337
+ case 'Prefab': return $scope.prefabName || null;
2338
+ case 'Partial': return $scope.partialName || null;
2339
+ case 'Page': return $scope.pageName || null;
2340
+ default: return null;
2341
+ }
2342
+ };
2343
+ /**
2344
+ * Main watch function
2345
+ */
2231
2346
  const $watch = (expr, $scope, $locals, listener, identifier = watchIdGenerator.nextUid(), doNotClone = false, config = {}, isMuted) => {
2232
- if (expr.indexOf('[$i]') !== -1) {
2233
- let watchInfo = getUpdatedWatcInfo(expr, config && (config.arrayType || config.isList), listener);
2347
+ // Handle array expressions
2348
+ if (expr.includes(ARRAY_INDEX_PLACEHOLDER)) {
2349
+ const watchInfo = getUpdatedWatchInfo(expr, config.arrayType || config.isList || false, listener);
2234
2350
  expr = watchInfo.expr;
2235
2351
  listener = watchInfo.listener;
2236
2352
  }
2353
+ // Handle static expressions
2354
+ if (isStaticExpression(expr)) {
2355
+ try {
2356
+ const fn = $parseExpr(expr);
2357
+ const staticValue = fn($scope, $locals);
2358
+ listener(staticValue, FIRST_TIME_WATCH);
2359
+ }
2360
+ catch (e) {
2361
+ console.warn(`Error evaluating static expression '${expr}':`, e);
2362
+ listener(undefined, FIRST_TIME_WATCH);
2363
+ }
2364
+ return () => { }; // No-op unsubscribe
2365
+ }
2237
2366
  const fn = $parseExpr(expr);
2238
- registry.set(identifier, {
2239
- fn: fn.bind(expr, $scope, $locals),
2367
+ const scopeType = getScopeType($scope);
2368
+ const scopeName = getScopeName($scope, scopeType);
2369
+ const watchInfo = {
2370
+ fn: fn.bind(null, $scope, $locals),
2240
2371
  listener,
2241
2372
  expr,
2242
2373
  last: FIRST_TIME_WATCH,
2243
2374
  doNotClone,
2244
- isMuted: isMuted
2245
- });
2375
+ isMuted,
2376
+ scopeType,
2377
+ scopeName
2378
+ };
2379
+ // Store in registry
2380
+ const widgetId = getWidgetId(identifier);
2381
+ if (widgetId) {
2382
+ const propertyName = getPropertyName(identifier);
2383
+ if (!registry.has(widgetId)) {
2384
+ registry.set(widgetId, {});
2385
+ }
2386
+ const widgetGroup = registry.get(widgetId);
2387
+ widgetGroup[propertyName] = watchInfo;
2388
+ }
2389
+ else {
2390
+ registry.set(identifier, watchInfo);
2391
+ }
2246
2392
  return () => $unwatch(identifier);
2247
2393
  };
2248
- const $unwatch = identifier => registry.delete(identifier);
2249
- let changedByWatch = false;
2250
- const $RAF = window.requestAnimationFrame;
2251
- let ngZone;
2252
- const triggerWatchers = (ignoreMuted) => {
2394
+ /**
2395
+ * Unwatches a single identifier
2396
+ */
2397
+ const $unwatch = (identifier) => {
2398
+ const widgetId = getWidgetId(identifier);
2399
+ if (widgetId) {
2400
+ const propertyName = getPropertyName(identifier);
2401
+ const widgetGroup = registry.get(widgetId);
2402
+ if (widgetGroup && typeof widgetGroup === 'object' && !widgetGroup.fn) {
2403
+ const watchInfo = widgetGroup[propertyName];
2404
+ if (watchInfo) {
2405
+ delete widgetGroup[propertyName];
2406
+ // Clean up empty widget groups
2407
+ if (Object.keys(widgetGroup).length === 0) {
2408
+ registry.delete(widgetId);
2409
+ }
2410
+ return true;
2411
+ }
2412
+ }
2413
+ }
2414
+ // Fallback to direct lookup
2415
+ if (registry.has(identifier)) {
2416
+ registry.delete(identifier);
2417
+ return true;
2418
+ }
2419
+ return false;
2420
+ };
2421
+ /**
2422
+ * Unwatches all watchers for a specific widget ID
2423
+ */
2424
+ const $unwatchAll = (widgetId) => {
2425
+ if (!widgetId || typeof widgetId !== 'string') {
2426
+ return 0;
2427
+ }
2428
+ const widgetGroup = registry.get(widgetId);
2429
+ if (widgetGroup && typeof widgetGroup === 'object' && !widgetGroup.fn) {
2430
+ const count = Object.keys(widgetGroup).length;
2431
+ registry.delete(widgetId);
2432
+ return count;
2433
+ }
2434
+ // Fallback: find all identifiers starting with this widget ID
2435
+ let removedCount = 0;
2436
+ const identifiersToRemove = [];
2437
+ registry.forEach((_, key) => {
2438
+ if (key.startsWith(widgetId + '_')) {
2439
+ identifiersToRemove.push(key);
2440
+ }
2441
+ });
2442
+ identifiersToRemove.forEach(identifier => {
2443
+ if ($unwatch(identifier)) {
2444
+ removedCount++;
2445
+ }
2446
+ });
2447
+ return removedCount;
2448
+ };
2449
+ /**
2450
+ * Unwatches all watchers for a specific scope (Page, Prefab, Partial, or App)
2451
+ * Now works directly with the main registry instead of separate scoped registries
2452
+ */
2453
+ const $unwatchAllByScope = (scopeType, scopeName) => {
2454
+ if (!scopeType) {
2455
+ return 0;
2456
+ }
2457
+ let removedCount = 0;
2458
+ const identifiersToRemove = [];
2459
+ registry.forEach((value, key) => {
2460
+ // Handle grouped structure (widget groups)
2461
+ if (value && typeof value === 'object' && !value.fn) {
2462
+ Object.entries(value).forEach(([propertyName, watchInfo]) => {
2463
+ if (watchInfo?.scopeType === scopeType &&
2464
+ (!scopeName || watchInfo.scopeName === scopeName)) {
2465
+ identifiersToRemove.push(`${key}_${propertyName}`);
2466
+ }
2467
+ });
2468
+ }
2469
+ else {
2470
+ // Direct watchInfo
2471
+ const watchInfo = value;
2472
+ if (watchInfo?.scopeType === scopeType &&
2473
+ (!scopeName || watchInfo.scopeName === scopeName)) {
2474
+ identifiersToRemove.push(key);
2475
+ }
2476
+ }
2477
+ });
2478
+ // Unwatch all collected identifiers
2479
+ identifiersToRemove.forEach(identifier => {
2480
+ if ($unwatch(identifier)) {
2481
+ removedCount++;
2482
+ }
2483
+ });
2484
+ return removedCount;
2485
+ };
2486
+ /**
2487
+ * Processes a single watch info during trigger cycle
2488
+ */
2489
+ const processWatchInfo = (watchInfo) => {
2490
+ if (!watchInfo?.fn || (watchInfo.isMuted?.() ?? false)) {
2491
+ return false;
2492
+ }
2493
+ let newValue;
2494
+ try {
2495
+ newValue = watchInfo.fn();
2496
+ }
2497
+ catch (e) {
2498
+ console.warn(`Error executing expression: '${watchInfo.expr}'`, e);
2499
+ return false;
2500
+ }
2501
+ if (isEqual(newValue, watchInfo.last)) {
2502
+ return false;
2503
+ }
2504
+ // Change detected
2505
+ changedByWatch = true;
2506
+ watchInfo.last = isObject$1(newValue) && !watchInfo.doNotClone
2507
+ ? clone(newValue)
2508
+ : newValue;
2509
+ watchInfo.listener(newValue, watchInfo.last === newValue ? FIRST_TIME_WATCH : watchInfo.last);
2510
+ changedByWatch = false;
2511
+ return true;
2512
+ };
2513
+ /**
2514
+ * Triggers all watchers
2515
+ */
2516
+ const triggerWatchers = (ignoreMuted = false) => {
2253
2517
  if (muted && !ignoreMuted) {
2254
2518
  return;
2255
2519
  }
2256
- const limit = 5;
2257
2520
  let pass = 1;
2258
2521
  let changeDetected;
2259
2522
  do {
2260
2523
  changeDetected = false;
2261
- registry.forEach(watchInfo => {
2262
- if (watchInfo.isMuted && watchInfo.isMuted()) {
2263
- return;
2264
- }
2265
- const fn = watchInfo.fn;
2266
- const listener = watchInfo.listener;
2267
- const ov = watchInfo.last;
2268
- let nv;
2269
- try {
2270
- nv = fn();
2271
- }
2272
- catch (e) {
2273
- console.warn(`error in executing expression: '${watchInfo.expr}'`);
2524
+ registry.forEach((value) => {
2525
+ // Handle grouped structure
2526
+ if (value && typeof value === 'object' && !value.fn) {
2527
+ Object.values(value).forEach((watchInfo) => {
2528
+ if (processWatchInfo(watchInfo)) {
2529
+ changeDetected = true;
2530
+ }
2531
+ });
2274
2532
  }
2275
- if (!isEqual(nv, ov)) {
2276
- changeDetected = true;
2277
- changedByWatch = true;
2278
- watchInfo.last = nv;
2279
- // @ts-ignore
2280
- if (isObject$1(nv) && !watchInfo.doNotClone && nv.__cloneable__ !== false) {
2281
- watchInfo.last = clone(nv);
2533
+ else {
2534
+ // Direct watchInfo
2535
+ if (processWatchInfo(value)) {
2536
+ changeDetected = true;
2282
2537
  }
2283
- listener(nv, ov);
2284
- resetChangeFromWatch();
2285
2538
  }
2286
2539
  });
2287
2540
  pass++;
2288
- } while (changeDetected && pass < limit);
2289
- if (changeDetected && pass === limit) {
2290
- console.warn(`Number of watch cycles gone above set limit of: ${limit} `);
2541
+ } while (changeDetected && pass < MAX_WATCH_CYCLES);
2542
+ if (changeDetected && pass === MAX_WATCH_CYCLES) {
2543
+ console.warn(`Watch cycles exceeded limit of ${MAX_WATCH_CYCLES}`);
2291
2544
  }
2292
2545
  };
2293
- const setNgZone = zone => ngZone = zone;
2294
- const setAppRef = ref => {
2546
+ // Angular zone integration
2547
+ const setNgZone = (zone) => {
2548
+ ngZone = zone;
2549
+ };
2550
+ const setAppRef = (ref) => {
2295
2551
  appRef = ref;
2296
2552
  };
2297
2553
  const isChangeFromWatch = () => changedByWatch;
2298
- const resetChangeFromWatch = () => changedByWatch = false;
2299
- window.watchRegistry = registry;
2300
- let skipWatchers;
2554
+ const resetChangeFromWatch = () => {
2555
+ changedByWatch = false;
2556
+ };
2557
+ // Debounced trigger
2301
2558
  const debouncedTriggerWatchers = debounce(() => {
2302
2559
  skipWatchers = true;
2303
2560
  ngZone.run(() => triggerWatchers());
2304
- }, 100);
2305
- const $invokeWatchers = (force, ignoreMuted) => {
2561
+ }, DEBOUNCE_WAIT);
2562
+ const $invokeWatchers = (force = false, ignoreMuted = false) => {
2306
2563
  if (force) {
2307
2564
  triggerWatchers(ignoreMuted);
2308
2565
  }
@@ -2316,7 +2573,8 @@ const $invokeWatchers = (force, ignoreMuted) => {
2316
2573
  };
2317
2574
  const $appDigest = (() => {
2318
2575
  let queued = false;
2319
- return (force) => {
2576
+ const $RAF = window.requestAnimationFrame;
2577
+ return (force = false) => {
2320
2578
  if (!appRef) {
2321
2579
  return;
2322
2580
  }
@@ -2328,16 +2586,16 @@ const $appDigest = (() => {
2328
2586
  if (queued) {
2329
2587
  return;
2330
2588
  }
2331
- else {
2332
- queued = true;
2333
- $RAF(() => {
2334
- ngZone.run(() => appRef.tick());
2335
- queued = false;
2336
- });
2337
- }
2589
+ queued = true;
2590
+ $RAF(() => {
2591
+ ngZone.run(() => appRef.tick());
2592
+ queued = false;
2593
+ });
2338
2594
  }
2339
2595
  };
2340
2596
  })();
2597
+ // Export registry for debugging
2598
+ window.watchRegistry = registry;
2341
2599
 
2342
2600
  var ComponentType;
2343
2601
  (function (ComponentType) {
@@ -2440,6 +2698,7 @@ const REGEX = {
2440
2698
  MIN_PAGE_RESOURCE_PATH: /.*(page.min.html)$/,
2441
2699
  VALID_EMAIL: /^[a-zA-Z][\w.+]+@[a-zA-Z_]+?\.[a-zA-Z.]{1,4}[a-zA-Z]$/,
2442
2700
  VALID_WEB_URL: /^(http[s]?:\/\/)(www\.){0,1}[a-zA-Z0-9=:?\/\.\-]+(\.[a-zA-Z]{2,5}[\.]{0,1})?/,
2701
+ VALID_IMAGE_URL: /^(https?|blob|data|file|ftp):/i,
2443
2702
  VALID_WEBSOCKET_URL: /^(ws[s]?:\/\/)(www\.){0,1}[a-zA-Z0-9=:?\/\.\-]+(\.[a-zA-Z]{2,5}[\.]{0,1})?/,
2444
2703
  VALID_RELATIVE_URL: /^(?!www\.|(?:http|ftp)s?:\/\/|[A-Za-z]:\\|\/\/).*/,
2445
2704
  REPLACE_PATTERN: /\$\{([^\}]+)\}/g,
@@ -2673,6 +2932,9 @@ const isVideoFile = (fileName) => {
2673
2932
  const isValidWebURL = (url) => {
2674
2933
  return (REGEX.VALID_WEB_URL).test(url);
2675
2934
  };
2935
+ const isValidImageUrl = (url) => {
2936
+ return (REGEX.VALID_IMAGE_URL).test(url?.trim());
2937
+ };
2676
2938
  /*This function returns the url to the resource after checking the validity of url*/
2677
2939
  const getResourceURL = (urlString) => {
2678
2940
  if (isValidWebURL(urlString)) {
@@ -3938,6 +4200,7 @@ var Utils = /*#__PURE__*/Object.freeze({
3938
4200
  isPageable: isPageable,
3939
4201
  isSafari: isSafari,
3940
4202
  isTablet: isTablet,
4203
+ isValidImageUrl: isValidImageUrl,
3941
4204
  isValidWebURL: isValidWebURL,
3942
4205
  isVideoFile: isVideoFile,
3943
4206
  loadScript: loadScript,
@@ -4031,7 +4294,10 @@ class EventNotifier {
4031
4294
  return noop;
4032
4295
  }
4033
4296
  destroy() {
4034
- this._subject.complete();
4297
+ this._subject.next(null); // optional
4298
+ this._subject.complete(); // clears all observers
4299
+ this._isInitialized = false;
4300
+ this._eventsBeforeInit = [];
4035
4301
  }
4036
4302
  }
4037
4303
 
@@ -4050,9 +4316,11 @@ class Viewport {
4050
4316
  this.isTabletType = false;
4051
4317
  this._eventNotifier = new EventNotifier(true);
4052
4318
  this.setScreenType();
4053
- window.addEventListener("resize" /* ViewportEvent.RESIZE */, this.resizeFn.bind(this));
4054
- const query = window.matchMedia('(orientation: portrait)');
4055
- if (query.matches) {
4319
+ // MEMORY LEAK FIX: Store bound function reference for proper removal
4320
+ this.boundResizeFn = this.resizeFn.bind(this);
4321
+ window.addEventListener("resize" /* ViewportEvent.RESIZE */, this.boundResizeFn);
4322
+ this.mediaQuery = window.matchMedia('(orientation: portrait)');
4323
+ if (this.mediaQuery.matches) {
4056
4324
  this.orientation.isPortrait = true;
4057
4325
  }
4058
4326
  else {
@@ -4060,8 +4328,10 @@ class Viewport {
4060
4328
  }
4061
4329
  // Add a media query change listener
4062
4330
  // addEventListener is not supported ios browser
4063
- if (query.addEventListener) {
4064
- query.addEventListener('change', $event => this.orientationChange($event, !$event.matches));
4331
+ if (this.mediaQuery.addEventListener) {
4332
+ // MEMORY LEAK FIX: Store bound function reference for proper removal
4333
+ this.boundOrientationChange = ($event) => this.orientationChange($event, !$event.matches);
4334
+ this.mediaQuery.addEventListener('change', this.boundOrientationChange);
4065
4335
  }
4066
4336
  }
4067
4337
  update(selectedViewPort) {
@@ -4088,14 +4358,14 @@ class Viewport {
4088
4358
  return this._eventNotifier.subscribe(eventName, callback);
4089
4359
  }
4090
4360
  notify(eventName, ...data) {
4091
- this._eventNotifier.notify.apply(this._eventNotifier, arguments);
4361
+ this._eventNotifier.notify(eventName, ...data);
4092
4362
  }
4093
4363
  setScreenType() {
4094
4364
  const $el = document.querySelector('.wm-app');
4095
4365
  this.screenWidth = $el.clientWidth;
4096
4366
  this.screenHeight = $el.clientHeight;
4097
- var minValue = this.screenWidth < this.screenHeight ? this.screenWidth : this.screenHeight;
4098
- var maxValue = this.screenWidth > this.screenHeight ? this.screenWidth : this.screenHeight;
4367
+ // const minValue = this.screenWidth < this.screenHeight ? this.screenWidth : this.screenHeight;
4368
+ // const maxValue = this.screenWidth > this.screenHeight ? this.screenWidth : this.screenHeight;
4099
4369
  this.isTabletType = false;
4100
4370
  this.isMobileType = false;
4101
4371
  if (get(this.selectedViewPort, 'deviceCategory')) {
@@ -4127,7 +4397,17 @@ class Viewport {
4127
4397
  }
4128
4398
  ngOnDestroy() {
4129
4399
  this._eventNotifier.destroy();
4130
- window.removeEventListener('resize', this.resizeFn);
4400
+ // MEMORY LEAK FIX: Remove resize event listener using stored bound function reference
4401
+ if (this.boundResizeFn) {
4402
+ window.removeEventListener('resize', this.boundResizeFn);
4403
+ this.boundResizeFn = null;
4404
+ }
4405
+ // MEMORY LEAK FIX: Remove media query orientation change listener
4406
+ if (this.mediaQuery && this.boundOrientationChange && this.mediaQuery.removeEventListener) {
4407
+ this.mediaQuery.removeEventListener('change', this.boundOrientationChange);
4408
+ this.boundOrientationChange = null;
4409
+ }
4410
+ this.mediaQuery = null;
4131
4411
  }
4132
4412
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Viewport, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4133
4413
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Viewport, providedIn: 'root' }); }
@@ -5096,13 +5376,15 @@ class LRUCache {
5096
5376
  this.onEvict = onEvict;
5097
5377
  this.cache = new Map();
5098
5378
  this.evictQueue = [''];
5379
+ this.evictionIntervalId = null; // MEMORY LEAK FIX: Store interval ID for cleanup
5099
5380
  this.evictQueue.shift();
5100
5381
  if (this.maxAge > 0) {
5101
5382
  if (this.maxAge <= 30) {
5102
5383
  console.warn(`Cache age ${this.maxAge}s is very less. Keep it atleast 30s.`);
5103
5384
  }
5104
5385
  this.maxAge = this.maxAge * 1000;
5105
- setInterval(() => {
5386
+ // MEMORY LEAK FIX: Store interval ID for cleanup
5387
+ this.evictionIntervalId = window.setInterval(() => {
5106
5388
  const max = Date.now() - this.maxAge;
5107
5389
  const expiredData = this.evictQueue.filter(k => {
5108
5390
  return this.cache.get(k).lastAccessedTime <= max;
@@ -5167,6 +5449,18 @@ class LRUCache {
5167
5449
  clear() {
5168
5450
  this.evict(this.evictQueue.length);
5169
5451
  }
5452
+ /**
5453
+ * MEMORY LEAK FIX: Destroy the cache and clear the eviction interval
5454
+ * Call this method when the cache is no longer needed to prevent memory leaks
5455
+ */
5456
+ destroy() {
5457
+ // CRITICAL FIX: Clear the eviction interval to prevent memory leaks
5458
+ if (this.evictionIntervalId !== null) {
5459
+ clearInterval(this.evictionIntervalId);
5460
+ this.evictionIntervalId = null;
5461
+ }
5462
+ this.clear();
5463
+ }
5170
5464
  }
5171
5465
 
5172
5466
  /*
@@ -5177,5 +5471,5 @@ class LRUCache {
5177
5471
  * Generated bundle index. Do not edit.
5178
5472
  */
5179
5473
 
5180
- export { $appDigest, $invokeWatchers, $parseEvent, $parseExpr, $unwatch, $watch, AbstractDialogService, AbstractHttpService, AbstractI18nService, AbstractNavigationService, AbstractSpinnerService, AbstractToasterService, App, AppConstants, AppDefaults, CURRENCY_INFO, ComponentType, ConstantService, CustomIconsLoaderService, CustomPipeManager, CustomWidgetRefProvider, DEFAULT_FORMATS, DataSource, DataType, DynamicComponentRefProvider, EventNotifier, FIRST_TIME_WATCH, FieldTypeService, FieldWidgetService, FormWidgetType, IDGenerator, IDataSource, LRUCache, MatchMode, PaginationService, PartialRefProvider, ScriptLoaderService, ScriptStore, StatePersistence, UserDefinedExecutionContext, UtilsService, VALIDATOR, Viewport, _WM_APP_PROJECT, addClass, addEventListenerOnElement, addForIdAttributes, adjustContainerPosition, adjustContainerRightEdges, appendNode, appendScriptToHead, checkIsCustomPipeExpression, closePopover, convertToBlob, createCSSRule, createElement, deHyphenate, debounce, defer, detectChanges, encodeUrl, encodeUrlParams, executePromiseChain, extendProto, extractCurrentItemExpr, extractType, fetchContent, findParent, findRootContainer, findValueOf, generateGUId, getAbortableDefer, getAndroidVersion, getAppSetting, getBlob, getClonedObject, getDatasourceFromExpr, getDateObj, getDisplayDateTimeFormat, getEvaluatedExprValue, getFiles, getFnByExpr, getFnForBindExpr, getFnForEventExpr, getFormWidgetTemplate, getFormattedDate, getMomentLocaleObject, getNativeDateObject, getNavClass, getNgModelAttr, getPreviewProperties, getRequiredFormWidget, getResourceURL, getRouteNameFromLink, getRowActionAttrs, getSessionStorageItem, getSheetPositionClass, getUrlParams, getValidDateObject, getValidJSON, getWebkitTraslationMatrix, getWmProjectProperties, hasOffsetStr, initCaps, insertAfter, insertBefore, isAndroid, isAndroidTablet, isAppleProduct, isAudioFile, isChangeFromWatch, isDataSourceEqual, isDateTimeType, isDefined, isElementInViewport, isEmptyObject, isEqualWithFields, isFirstTimeChange, isIE, isImageFile, isInsecureContentRequest, isIos, isIpad, isIphone, isIpod, isKitkatDevice, isLargeTabletLandscape, isLargeTabletPortrait, isMobile, isNumberType, isObject, isPageable, isSafari, isValidWebURL, isVideoFile, loadScript, loadScripts, loadStyleSheet, loadStyleSheets, muteWatchers, noop, openLink, periodSeparate, prettifyLabel, prettifyLabels, processFilterExpBindNode, registerFnByExpr, removeAttr, removeClass, removeExtraSlashes, removeNode, replace, replaceAt, resetChangeFromWatch, retryIfFails, scrollToElement, setAppRef, setAttr, setCSS, setCSSFromObj, setHtml, setListClass, setNgZone, setPipeProvider, setPreviewProperties, setProperty, setSessionStorageItem, setTranslation3dPosition, setWmProjectProperties, spaceSeparate, stringStartsWith, switchClass, toBoolean, toDimension, toPromise, toggleClass, transformFileURI, triggerFn, triggerItemAction, unMuteWatchers, updateTemplateAttrs, validateAccessRoles, validateDataSourceCtx, xmlToJson };
5474
+ export { $appDigest, $invokeWatchers, $parseEvent, $parseExpr, $unwatch, $unwatchAll, $unwatchAllByScope, $watch, AbstractDialogService, AbstractHttpService, AbstractI18nService, AbstractNavigationService, AbstractSpinnerService, AbstractToasterService, App, AppConstants, AppDefaults, CURRENCY_INFO, ComponentType, ConstantService, CustomIconsLoaderService, CustomPipeManager, CustomWidgetRefProvider, DEFAULT_FORMATS, DataSource, DataType, DynamicComponentRefProvider, EventNotifier, FIRST_TIME_WATCH, FieldTypeService, FieldWidgetService, FormWidgetType, IDGenerator, IDataSource, LRUCache, MatchMode, PaginationService, PartialRefProvider, ScriptLoaderService, ScriptStore, StatePersistence, UserDefinedExecutionContext, UtilsService, VALIDATOR, Viewport, _WM_APP_PROJECT, addClass, addEventListenerOnElement, addForIdAttributes, adjustContainerPosition, adjustContainerRightEdges, appendNode, appendScriptToHead, checkIsCustomPipeExpression, closePopover, convertToBlob, createCSSRule, createElement, deHyphenate, debounce, defer, detectChanges, encodeUrl, encodeUrlParams, executePromiseChain, extendProto, extractCurrentItemExpr, extractType, fetchContent, findParent, findRootContainer, findValueOf, generateGUId, getAbortableDefer, getAndroidVersion, getAppSetting, getBlob, getClonedObject, getDatasourceFromExpr, getDateObj, getDisplayDateTimeFormat, getEvaluatedExprValue, getFiles, getFnByExpr, getFnForBindExpr, getFnForEventExpr, getFormWidgetTemplate, getFormattedDate, getMomentLocaleObject, getNativeDateObject, getNavClass, getNgModelAttr, getPreviewProperties, getRequiredFormWidget, getResourceURL, getRouteNameFromLink, getRowActionAttrs, getSessionStorageItem, getSheetPositionClass, getUrlParams, getValidDateObject, getValidJSON, getWebkitTraslationMatrix, getWmProjectProperties, hasOffsetStr, initCaps, insertAfter, insertBefore, isAndroid, isAndroidTablet, isAppleProduct, isAudioFile, isChangeFromWatch, isDataSourceEqual, isDateTimeType, isDefined, isElementInViewport, isEmptyObject, isEqualWithFields, isFirstTimeChange, isIE, isImageFile, isInsecureContentRequest, isIos, isIpad, isIphone, isIpod, isKitkatDevice, isLargeTabletLandscape, isLargeTabletPortrait, isMobile, isNumberType, isObject, isPageable, isSafari, isValidImageUrl, isValidWebURL, isVideoFile, loadScript, loadScripts, loadStyleSheet, loadStyleSheets, muteWatchers, noop, openLink, periodSeparate, prettifyLabel, prettifyLabels, processFilterExpBindNode, registerFnByExpr, removeAttr, removeClass, removeExtraSlashes, removeNode, replace, replaceAt, resetChangeFromWatch, retryIfFails, scrollToElement, setAppRef, setAttr, setCSS, setCSSFromObj, setHtml, setListClass, setNgZone, setPipeProvider, setPreviewProperties, setProperty, setSessionStorageItem, setTranslation3dPosition, setWmProjectProperties, spaceSeparate, stringStartsWith, switchClass, toBoolean, toDimension, toPromise, toggleClass, transformFileURI, triggerFn, triggerItemAction, unMuteWatchers, updateTemplateAttrs, validateAccessRoles, validateDataSourceCtx, xmlToJson };
5181
5475
  //# sourceMappingURL=index.mjs.map