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

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 +42 -14
  60. package/components/basic/search/esm2022/scrollable.directive.mjs +13 -4
  61. package/components/basic/search/esm2022/search.component.mjs +31 -12
  62. package/components/basic/search/fesm2022/index.mjs +42 -14
  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
@@ -1450,11 +1450,11 @@
1450
1450
  }
1451
1451
  };
1452
1452
 
1453
- const $RAF$1 = window.requestAnimationFrame;
1453
+ const $RAF = window.requestAnimationFrame;
1454
1454
  const $RAFQueue = [];
1455
1455
  const invokeLater = fn => {
1456
1456
  if (!$RAFQueue.length) {
1457
- $RAF$1(() => {
1457
+ $RAF(() => {
1458
1458
  $RAFQueue.forEach(f => f());
1459
1459
  $RAFQueue.length = 0;
1460
1460
  });
@@ -1525,7 +1525,23 @@
1525
1525
  sync ? task() : invokeLater(task);
1526
1526
  };
1527
1527
  const setAttr = (node, attrName, val, sync) => {
1528
- const task = () => node instanceof Element && node.setAttribute(attrName, val);
1528
+ const task = () => {
1529
+ if (node instanceof Element) {
1530
+ // Handle tabindex specifically - ensure it's a valid string representation
1531
+ if (attrName === 'tabindex') {
1532
+ // Convert to string, handling 0, null, undefined, and NaN
1533
+ if (val === null || val === undefined || (typeof val === 'number' && isNaN(val))) {
1534
+ node.removeAttribute(attrName);
1535
+ }
1536
+ else {
1537
+ node.setAttribute(attrName, String(val));
1538
+ }
1539
+ }
1540
+ else {
1541
+ node.setAttribute(attrName, val);
1542
+ }
1543
+ }
1544
+ };
1529
1545
  sync ? task() : invokeLater(task);
1530
1546
  };
1531
1547
  const setHtml = (node, html, sync) => {
@@ -2191,14 +2207,25 @@
2191
2207
  return fnExecutor(expr, ExpressionType.Action);
2192
2208
  };
2193
2209
 
2210
+ // Constants
2211
+ const WIDGET_ID_REGEX = /^(widget-[^_]+)/;
2212
+ const WIDGET_PROPERTY_REGEX = /^widget-[^_]+_(.+)$/;
2213
+ const ARRAY_INDEX_PLACEHOLDER = '[$i]';
2214
+ const ARRAY_INDEX_ZERO = '[0]';
2215
+ const DEBOUNCE_WAIT = 100;
2216
+ const MAX_WATCH_CYCLES = 5;
2194
2217
  const registry = new Map();
2195
2218
  const watchIdGenerator = new IDGenerator('watch-id-');
2196
- const FIRST_TIME_WATCH = {};
2197
- Object.freeze(FIRST_TIME_WATCH);
2198
- const isFirstTimeChange = v => v === FIRST_TIME_WATCH;
2219
+ const FIRST_TIME_WATCH = Object.freeze({});
2220
+ // State
2199
2221
  let muted = false;
2222
+ let changedByWatch = false;
2223
+ let skipWatchers = false;
2224
+ let ngZone;
2200
2225
  let appRef;
2201
- const debounce = (fn, wait = 50) => {
2226
+ // Utility functions
2227
+ const isFirstTimeChange = (v) => v === FIRST_TIME_WATCH;
2228
+ const debounce = (fn, wait = DEBOUNCE_WAIT) => {
2202
2229
  let timeout;
2203
2230
  return (...args) => {
2204
2231
  window['__zone_symbol__clearTimeout'](timeout);
@@ -2212,115 +2239,345 @@
2212
2239
  muted = false;
2213
2240
  triggerWatchers();
2214
2241
  };
2242
+ /**
2243
+ * Extracts widget ID from identifier (e.g., "widget-id23_eventsource" -> "widget-id23")
2244
+ */
2245
+ const getWidgetId = (identifier) => {
2246
+ if (!identifier || typeof identifier !== 'string') {
2247
+ return null;
2248
+ }
2249
+ const match = identifier.match(WIDGET_ID_REGEX);
2250
+ return match ? match[1] : null;
2251
+ };
2252
+ /**
2253
+ * Extracts property name from identifier (e.g., "widget-id23_eventsource" -> "eventsource")
2254
+ */
2255
+ const getPropertyName = (identifier) => {
2256
+ if (!identifier || typeof identifier !== 'string') {
2257
+ return identifier;
2258
+ }
2259
+ const match = identifier.match(WIDGET_PROPERTY_REGEX);
2260
+ return match ? match[1] : identifier;
2261
+ };
2262
+ /**
2263
+ * Array consumer wrapper for array-based expressions
2264
+ */
2215
2265
  const arrayConsumer = (listenerFn, restExpr, newVal, oldVal) => {
2216
- let data = newVal, formattedData;
2217
- if (lodashEs.isArray(data)) {
2218
- formattedData = data.map(function (datum) {
2219
- return findValueOf(datum, restExpr);
2220
- });
2221
- // If resulting structure is an array of array, flatten it
2222
- if (lodashEs.isArray(formattedData[0])) {
2223
- formattedData = lodashEs.flatten(formattedData);
2224
- }
2225
- listenerFn(formattedData, oldVal);
2266
+ if (!lodashEs.isArray(newVal)) {
2267
+ return;
2226
2268
  }
2269
+ let formattedData = newVal.map(datum => findValueOf(datum, restExpr));
2270
+ // Flatten if result is array of arrays
2271
+ if (lodashEs.isArray(formattedData[0])) {
2272
+ formattedData = lodashEs.flatten(formattedData);
2273
+ }
2274
+ listenerFn(formattedData, oldVal);
2227
2275
  };
2228
- const getUpdatedWatcInfo = (expr, acceptsArray, listener) => {
2229
- // listener doesn't accept array
2230
- // replace all `[$i]` with `[0]` and return the expression
2231
- let regex = /\[\$i\]/g, $I = '[$i]', $0 = '[0]';
2276
+ /**
2277
+ * Updates watch info for array expressions
2278
+ */
2279
+ const getUpdatedWatchInfo = (expr, acceptsArray, listener) => {
2280
+ const regex = /\[\$i\]/g;
2232
2281
  if (!acceptsArray) {
2233
2282
  return {
2234
- 'expr': expr.replace(regex, $0),
2235
- 'listener': listener
2283
+ expr: expr.replace(regex, ARRAY_INDEX_ZERO),
2284
+ listener
2236
2285
  };
2237
2286
  }
2238
- // listener accepts array
2239
- // replace all except the last `[$i]` with `[0]` and return the expression.
2240
- var index = expr.lastIndexOf($I), _expr = expr.substr(0, index).replace($I, $0), restExpr = expr.substr(index + 5), arrayConsumerFn = listener;
2241
- if (restExpr) {
2242
- arrayConsumerFn = arrayConsumer.bind(undefined, listener, restExpr);
2243
- }
2287
+ const lastIndex = expr.lastIndexOf(ARRAY_INDEX_PLACEHOLDER);
2288
+ const baseExpr = expr.substring(0, lastIndex).replace(ARRAY_INDEX_PLACEHOLDER, ARRAY_INDEX_ZERO);
2289
+ const restExpr = expr.substring(lastIndex + 5);
2290
+ const arrayConsumerFn = restExpr
2291
+ ? arrayConsumer.bind(undefined, listener, restExpr)
2292
+ : listener;
2244
2293
  return {
2245
- 'expr': _expr,
2246
- 'listener': arrayConsumerFn
2294
+ expr: baseExpr,
2295
+ listener: arrayConsumerFn
2247
2296
  };
2248
2297
  };
2298
+ /**
2299
+ * Determines if an expression is static (doesn't need to be watched)
2300
+ */
2301
+ const STATIC_EXPRESSION_NAMES = [
2302
+ "row.getProperty('investment')",
2303
+ "row.getProperty('factsheetLink')",
2304
+ "row.getProperty('isRebalanceEligible')"
2305
+ ];
2306
+ const isStaticExpression = (expr) => {
2307
+ if (typeof expr !== 'string') {
2308
+ return false;
2309
+ }
2310
+ const trimmedExpr = expr.trim();
2311
+ // Expressions that always evaluate to localization strings
2312
+ // if (trimmedExpr.includes('appLocale')) {
2313
+ // return true;
2314
+ // }
2315
+ // Hard-coded static expression names
2316
+ if (STATIC_EXPRESSION_NAMES.includes(trimmedExpr)) {
2317
+ return true;
2318
+ }
2319
+ return false;
2320
+ };
2321
+ /**
2322
+ * Gets the scope type from the scope object
2323
+ */
2324
+ const getScopeType = ($scope) => {
2325
+ if (!$scope) {
2326
+ return null;
2327
+ }
2328
+ if ($scope.pageName)
2329
+ return 'Page';
2330
+ if ($scope.prefabName)
2331
+ return 'Prefab';
2332
+ if ($scope.partialName)
2333
+ return 'Partial';
2334
+ // Check for App scope
2335
+ if ($scope.Variables !== undefined &&
2336
+ $scope.Actions !== undefined &&
2337
+ !$scope.pageName &&
2338
+ !$scope.prefabName &&
2339
+ !$scope.partialName) {
2340
+ return 'App';
2341
+ }
2342
+ if ($scope.constructor?.name === 'AppRef') {
2343
+ return 'App';
2344
+ }
2345
+ return null;
2346
+ };
2347
+ /**
2348
+ * Gets scope name based on scope type
2349
+ */
2350
+ const getScopeName = ($scope, scopeType) => {
2351
+ if (!scopeType || !$scope) {
2352
+ return null;
2353
+ }
2354
+ switch (scopeType) {
2355
+ case 'Prefab': return $scope.prefabName || null;
2356
+ case 'Partial': return $scope.partialName || null;
2357
+ case 'Page': return $scope.pageName || null;
2358
+ default: return null;
2359
+ }
2360
+ };
2361
+ /**
2362
+ * Main watch function
2363
+ */
2249
2364
  const $watch = (expr, $scope, $locals, listener, identifier = watchIdGenerator.nextUid(), doNotClone = false, config = {}, isMuted) => {
2250
- if (expr.indexOf('[$i]') !== -1) {
2251
- let watchInfo = getUpdatedWatcInfo(expr, config && (config.arrayType || config.isList), listener);
2365
+ // Handle array expressions
2366
+ if (expr.includes(ARRAY_INDEX_PLACEHOLDER)) {
2367
+ const watchInfo = getUpdatedWatchInfo(expr, config.arrayType || config.isList || false, listener);
2252
2368
  expr = watchInfo.expr;
2253
2369
  listener = watchInfo.listener;
2254
2370
  }
2371
+ // Handle static expressions
2372
+ if (isStaticExpression(expr)) {
2373
+ try {
2374
+ const fn = $parseExpr(expr);
2375
+ const staticValue = fn($scope, $locals);
2376
+ listener(staticValue, FIRST_TIME_WATCH);
2377
+ }
2378
+ catch (e) {
2379
+ console.warn(`Error evaluating static expression '${expr}':`, e);
2380
+ listener(undefined, FIRST_TIME_WATCH);
2381
+ }
2382
+ return () => { }; // No-op unsubscribe
2383
+ }
2255
2384
  const fn = $parseExpr(expr);
2256
- registry.set(identifier, {
2257
- fn: fn.bind(expr, $scope, $locals),
2385
+ const scopeType = getScopeType($scope);
2386
+ const scopeName = getScopeName($scope, scopeType);
2387
+ const watchInfo = {
2388
+ fn: fn.bind(null, $scope, $locals),
2258
2389
  listener,
2259
2390
  expr,
2260
2391
  last: FIRST_TIME_WATCH,
2261
2392
  doNotClone,
2262
- isMuted: isMuted
2263
- });
2393
+ isMuted,
2394
+ scopeType,
2395
+ scopeName
2396
+ };
2397
+ // Store in registry
2398
+ const widgetId = getWidgetId(identifier);
2399
+ if (widgetId) {
2400
+ const propertyName = getPropertyName(identifier);
2401
+ if (!registry.has(widgetId)) {
2402
+ registry.set(widgetId, {});
2403
+ }
2404
+ const widgetGroup = registry.get(widgetId);
2405
+ widgetGroup[propertyName] = watchInfo;
2406
+ }
2407
+ else {
2408
+ registry.set(identifier, watchInfo);
2409
+ }
2264
2410
  return () => $unwatch(identifier);
2265
2411
  };
2266
- const $unwatch = identifier => registry.delete(identifier);
2267
- let changedByWatch = false;
2268
- const $RAF = window.requestAnimationFrame;
2269
- let ngZone;
2270
- const triggerWatchers = (ignoreMuted) => {
2412
+ /**
2413
+ * Unwatches a single identifier
2414
+ */
2415
+ const $unwatch = (identifier) => {
2416
+ const widgetId = getWidgetId(identifier);
2417
+ if (widgetId) {
2418
+ const propertyName = getPropertyName(identifier);
2419
+ const widgetGroup = registry.get(widgetId);
2420
+ if (widgetGroup && typeof widgetGroup === 'object' && !widgetGroup.fn) {
2421
+ const watchInfo = widgetGroup[propertyName];
2422
+ if (watchInfo) {
2423
+ delete widgetGroup[propertyName];
2424
+ // Clean up empty widget groups
2425
+ if (Object.keys(widgetGroup).length === 0) {
2426
+ registry.delete(widgetId);
2427
+ }
2428
+ return true;
2429
+ }
2430
+ }
2431
+ }
2432
+ // Fallback to direct lookup
2433
+ if (registry.has(identifier)) {
2434
+ registry.delete(identifier);
2435
+ return true;
2436
+ }
2437
+ return false;
2438
+ };
2439
+ /**
2440
+ * Unwatches all watchers for a specific widget ID
2441
+ */
2442
+ const $unwatchAll = (widgetId) => {
2443
+ if (!widgetId || typeof widgetId !== 'string') {
2444
+ return 0;
2445
+ }
2446
+ const widgetGroup = registry.get(widgetId);
2447
+ if (widgetGroup && typeof widgetGroup === 'object' && !widgetGroup.fn) {
2448
+ const count = Object.keys(widgetGroup).length;
2449
+ registry.delete(widgetId);
2450
+ return count;
2451
+ }
2452
+ // Fallback: find all identifiers starting with this widget ID
2453
+ let removedCount = 0;
2454
+ const identifiersToRemove = [];
2455
+ registry.forEach((_, key) => {
2456
+ if (key.startsWith(widgetId + '_')) {
2457
+ identifiersToRemove.push(key);
2458
+ }
2459
+ });
2460
+ identifiersToRemove.forEach(identifier => {
2461
+ if ($unwatch(identifier)) {
2462
+ removedCount++;
2463
+ }
2464
+ });
2465
+ return removedCount;
2466
+ };
2467
+ /**
2468
+ * Unwatches all watchers for a specific scope (Page, Prefab, Partial, or App)
2469
+ * Now works directly with the main registry instead of separate scoped registries
2470
+ */
2471
+ const $unwatchAllByScope = (scopeType, scopeName) => {
2472
+ if (!scopeType) {
2473
+ return 0;
2474
+ }
2475
+ let removedCount = 0;
2476
+ const identifiersToRemove = [];
2477
+ registry.forEach((value, key) => {
2478
+ // Handle grouped structure (widget groups)
2479
+ if (value && typeof value === 'object' && !value.fn) {
2480
+ Object.entries(value).forEach(([propertyName, watchInfo]) => {
2481
+ if (watchInfo?.scopeType === scopeType &&
2482
+ (!scopeName || watchInfo.scopeName === scopeName)) {
2483
+ identifiersToRemove.push(`${key}_${propertyName}`);
2484
+ }
2485
+ });
2486
+ }
2487
+ else {
2488
+ // Direct watchInfo
2489
+ const watchInfo = value;
2490
+ if (watchInfo?.scopeType === scopeType &&
2491
+ (!scopeName || watchInfo.scopeName === scopeName)) {
2492
+ identifiersToRemove.push(key);
2493
+ }
2494
+ }
2495
+ });
2496
+ // Unwatch all collected identifiers
2497
+ identifiersToRemove.forEach(identifier => {
2498
+ if ($unwatch(identifier)) {
2499
+ removedCount++;
2500
+ }
2501
+ });
2502
+ return removedCount;
2503
+ };
2504
+ /**
2505
+ * Processes a single watch info during trigger cycle
2506
+ */
2507
+ const processWatchInfo = (watchInfo) => {
2508
+ if (!watchInfo?.fn || (watchInfo.isMuted?.() ?? false)) {
2509
+ return false;
2510
+ }
2511
+ let newValue;
2512
+ try {
2513
+ newValue = watchInfo.fn();
2514
+ }
2515
+ catch (e) {
2516
+ console.warn(`Error executing expression: '${watchInfo.expr}'`, e);
2517
+ return false;
2518
+ }
2519
+ if (lodashEs.isEqual(newValue, watchInfo.last)) {
2520
+ return false;
2521
+ }
2522
+ // Change detected
2523
+ changedByWatch = true;
2524
+ watchInfo.last = lodashEs.isObject(newValue) && !watchInfo.doNotClone
2525
+ ? lodashEs.clone(newValue)
2526
+ : newValue;
2527
+ watchInfo.listener(newValue, watchInfo.last === newValue ? FIRST_TIME_WATCH : watchInfo.last);
2528
+ changedByWatch = false;
2529
+ return true;
2530
+ };
2531
+ /**
2532
+ * Triggers all watchers
2533
+ */
2534
+ const triggerWatchers = (ignoreMuted = false) => {
2271
2535
  if (muted && !ignoreMuted) {
2272
2536
  return;
2273
2537
  }
2274
- const limit = 5;
2275
2538
  let pass = 1;
2276
2539
  let changeDetected;
2277
2540
  do {
2278
2541
  changeDetected = false;
2279
- registry.forEach(watchInfo => {
2280
- if (watchInfo.isMuted && watchInfo.isMuted()) {
2281
- return;
2282
- }
2283
- const fn = watchInfo.fn;
2284
- const listener = watchInfo.listener;
2285
- const ov = watchInfo.last;
2286
- let nv;
2287
- try {
2288
- nv = fn();
2289
- }
2290
- catch (e) {
2291
- console.warn(`error in executing expression: '${watchInfo.expr}'`);
2542
+ registry.forEach((value) => {
2543
+ // Handle grouped structure
2544
+ if (value && typeof value === 'object' && !value.fn) {
2545
+ Object.values(value).forEach((watchInfo) => {
2546
+ if (processWatchInfo(watchInfo)) {
2547
+ changeDetected = true;
2548
+ }
2549
+ });
2292
2550
  }
2293
- if (!lodashEs.isEqual(nv, ov)) {
2294
- changeDetected = true;
2295
- changedByWatch = true;
2296
- watchInfo.last = nv;
2297
- // @ts-ignore
2298
- if (lodashEs.isObject(nv) && !watchInfo.doNotClone && nv.__cloneable__ !== false) {
2299
- watchInfo.last = lodashEs.clone(nv);
2551
+ else {
2552
+ // Direct watchInfo
2553
+ if (processWatchInfo(value)) {
2554
+ changeDetected = true;
2300
2555
  }
2301
- listener(nv, ov);
2302
- resetChangeFromWatch();
2303
2556
  }
2304
2557
  });
2305
2558
  pass++;
2306
- } while (changeDetected && pass < limit);
2307
- if (changeDetected && pass === limit) {
2308
- console.warn(`Number of watch cycles gone above set limit of: ${limit} `);
2559
+ } while (changeDetected && pass < MAX_WATCH_CYCLES);
2560
+ if (changeDetected && pass === MAX_WATCH_CYCLES) {
2561
+ console.warn(`Watch cycles exceeded limit of ${MAX_WATCH_CYCLES}`);
2309
2562
  }
2310
2563
  };
2311
- const setNgZone = zone => ngZone = zone;
2312
- const setAppRef = ref => {
2564
+ // Angular zone integration
2565
+ const setNgZone = (zone) => {
2566
+ ngZone = zone;
2567
+ };
2568
+ const setAppRef = (ref) => {
2313
2569
  appRef = ref;
2314
2570
  };
2315
2571
  const isChangeFromWatch = () => changedByWatch;
2316
- const resetChangeFromWatch = () => changedByWatch = false;
2317
- window.watchRegistry = registry;
2318
- let skipWatchers;
2572
+ const resetChangeFromWatch = () => {
2573
+ changedByWatch = false;
2574
+ };
2575
+ // Debounced trigger
2319
2576
  const debouncedTriggerWatchers = debounce(() => {
2320
2577
  skipWatchers = true;
2321
2578
  ngZone.run(() => triggerWatchers());
2322
- }, 100);
2323
- const $invokeWatchers = (force, ignoreMuted) => {
2579
+ }, DEBOUNCE_WAIT);
2580
+ const $invokeWatchers = (force = false, ignoreMuted = false) => {
2324
2581
  if (force) {
2325
2582
  triggerWatchers(ignoreMuted);
2326
2583
  }
@@ -2334,7 +2591,8 @@
2334
2591
  };
2335
2592
  const $appDigest = (() => {
2336
2593
  let queued = false;
2337
- return (force) => {
2594
+ const $RAF = window.requestAnimationFrame;
2595
+ return (force = false) => {
2338
2596
  if (!appRef) {
2339
2597
  return;
2340
2598
  }
@@ -2346,16 +2604,16 @@
2346
2604
  if (queued) {
2347
2605
  return;
2348
2606
  }
2349
- else {
2350
- queued = true;
2351
- $RAF(() => {
2352
- ngZone.run(() => appRef.tick());
2353
- queued = false;
2354
- });
2355
- }
2607
+ queued = true;
2608
+ $RAF(() => {
2609
+ ngZone.run(() => appRef.tick());
2610
+ queued = false;
2611
+ });
2356
2612
  }
2357
2613
  };
2358
2614
  })();
2615
+ // Export registry for debugging
2616
+ window.watchRegistry = registry;
2359
2617
 
2360
2618
  exports.ComponentType = void 0;
2361
2619
  (function (ComponentType) {
@@ -2452,6 +2710,7 @@
2452
2710
  SUPPORTED_AUDIO_FORMAT: /\.(mp3|ogg|webm|wma|3gp|wav|m4a)$/i,
2453
2711
  SUPPORTED_VIDEO_FORMAT: /\.(mp4|ogg|webm|wmv|mpeg|mpg|avi|mov)$/i,
2454
2712
  VALID_WEB_URL: /^(http[s]?:\/\/)(www\.){0,1}[a-zA-Z0-9=:?\/\.\-]+(\.[a-zA-Z]{2,5}[\.]{0,1})?/,
2713
+ VALID_IMAGE_URL: /^(https?|blob|data|file|ftp):/i,
2455
2714
  REPLACE_PATTERN: /\$\{([^\}]+)\}/g,
2456
2715
  DATA_URL: /^\s*data:([a-z]+\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s]*)\s*$/i,
2457
2716
  ISO_DATE_FORMAT: /(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2})(\.\d+)?([+-]\d{2}:?\d{2}|Z)$/
@@ -2674,6 +2933,9 @@
2674
2933
  const isValidWebURL = (url) => {
2675
2934
  return (REGEX.VALID_WEB_URL).test(url);
2676
2935
  };
2936
+ const isValidImageUrl = (url) => {
2937
+ return (REGEX.VALID_IMAGE_URL).test(url?.trim());
2938
+ };
2677
2939
  /*This function returns the url to the resource after checking the validity of url*/
2678
2940
  const getResourceURL = (urlString) => {
2679
2941
  return urlString;
@@ -3927,6 +4189,7 @@
3927
4189
  isPageable: isPageable,
3928
4190
  isSafari: isSafari,
3929
4191
  isTablet: isTablet,
4192
+ isValidImageUrl: isValidImageUrl,
3930
4193
  isValidWebURL: isValidWebURL,
3931
4194
  isVideoFile: isVideoFile,
3932
4195
  loadScript: loadScript,
@@ -4020,7 +4283,10 @@
4020
4283
  return noop;
4021
4284
  }
4022
4285
  destroy() {
4023
- this._subject.complete();
4286
+ this._subject.next(null); // optional
4287
+ this._subject.complete(); // clears all observers
4288
+ this._isInitialized = false;
4289
+ this._eventsBeforeInit = [];
4024
4290
  }
4025
4291
  }
4026
4292
  let MINIMUM_TAB_WIDTH = 768;
@@ -4035,9 +4301,11 @@
4035
4301
  this.isTabletType = false;
4036
4302
  this._eventNotifier = new EventNotifier(true);
4037
4303
  this.setScreenType();
4038
- window.addEventListener("resize" /* ViewportEvent.RESIZE */, this.resizeFn.bind(this));
4039
- const query = window.matchMedia('(orientation: portrait)');
4040
- if (query.matches) {
4304
+ // MEMORY LEAK FIX: Store bound function reference for proper removal
4305
+ this.boundResizeFn = this.resizeFn.bind(this);
4306
+ window.addEventListener("resize" /* ViewportEvent.RESIZE */, this.boundResizeFn);
4307
+ this.mediaQuery = window.matchMedia('(orientation: portrait)');
4308
+ if (this.mediaQuery.matches) {
4041
4309
  this.orientation.isPortrait = true;
4042
4310
  }
4043
4311
  else {
@@ -4045,8 +4313,10 @@
4045
4313
  }
4046
4314
  // Add a media query change listener
4047
4315
  // addEventListener is not supported ios browser
4048
- if (query.addEventListener) {
4049
- query.addEventListener('change', $event => this.orientationChange($event, !$event.matches));
4316
+ if (this.mediaQuery.addEventListener) {
4317
+ // MEMORY LEAK FIX: Store bound function reference for proper removal
4318
+ this.boundOrientationChange = ($event) => this.orientationChange($event, !$event.matches);
4319
+ this.mediaQuery.addEventListener('change', this.boundOrientationChange);
4050
4320
  }
4051
4321
  }
4052
4322
  update(selectedViewPort) {
@@ -4073,14 +4343,14 @@
4073
4343
  return this._eventNotifier.subscribe(eventName, callback);
4074
4344
  }
4075
4345
  notify(eventName, ...data) {
4076
- this._eventNotifier.notify.apply(this._eventNotifier, arguments);
4346
+ this._eventNotifier.notify(eventName, ...data);
4077
4347
  }
4078
4348
  setScreenType() {
4079
4349
  const $el = document.querySelector('.wm-app');
4080
4350
  this.screenWidth = $el.clientWidth;
4081
4351
  this.screenHeight = $el.clientHeight;
4082
- this.screenWidth < this.screenHeight ? this.screenWidth : this.screenHeight;
4083
- this.screenWidth > this.screenHeight ? this.screenWidth : this.screenHeight;
4352
+ // const minValue = this.screenWidth < this.screenHeight ? this.screenWidth : this.screenHeight;
4353
+ // const maxValue = this.screenWidth > this.screenHeight ? this.screenWidth : this.screenHeight;
4084
4354
  this.isTabletType = false;
4085
4355
  this.isMobileType = false;
4086
4356
  if (lodashEs.get(this.selectedViewPort, 'deviceCategory')) {
@@ -4112,7 +4382,17 @@
4112
4382
  }
4113
4383
  ngOnDestroy() {
4114
4384
  this._eventNotifier.destroy();
4115
- window.removeEventListener('resize', this.resizeFn);
4385
+ // MEMORY LEAK FIX: Remove resize event listener using stored bound function reference
4386
+ if (this.boundResizeFn) {
4387
+ window.removeEventListener('resize', this.boundResizeFn);
4388
+ this.boundResizeFn = null;
4389
+ }
4390
+ // MEMORY LEAK FIX: Remove media query orientation change listener
4391
+ if (this.mediaQuery && this.boundOrientationChange && this.mediaQuery.removeEventListener) {
4392
+ this.mediaQuery.removeEventListener('change', this.boundOrientationChange);
4393
+ this.boundOrientationChange = null;
4394
+ }
4395
+ this.mediaQuery = null;
4116
4396
  }
4117
4397
  static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: Viewport, deps: [], target: i0__namespace.ɵɵFactoryTarget.Injectable }); }
4118
4398
  static { this.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: Viewport, providedIn: 'root' }); }
@@ -5081,13 +5361,15 @@
5081
5361
  this.onEvict = onEvict;
5082
5362
  this.cache = new Map();
5083
5363
  this.evictQueue = [''];
5364
+ this.evictionIntervalId = null; // MEMORY LEAK FIX: Store interval ID for cleanup
5084
5365
  this.evictQueue.shift();
5085
5366
  if (this.maxAge > 0) {
5086
5367
  if (this.maxAge <= 30) {
5087
5368
  console.warn(`Cache age ${this.maxAge}s is very less. Keep it atleast 30s.`);
5088
5369
  }
5089
5370
  this.maxAge = this.maxAge * 1000;
5090
- setInterval(() => {
5371
+ // MEMORY LEAK FIX: Store interval ID for cleanup
5372
+ this.evictionIntervalId = window.setInterval(() => {
5091
5373
  const max = Date.now() - this.maxAge;
5092
5374
  const expiredData = this.evictQueue.filter(k => {
5093
5375
  return this.cache.get(k).lastAccessedTime <= max;
@@ -5152,6 +5434,18 @@
5152
5434
  clear() {
5153
5435
  this.evict(this.evictQueue.length);
5154
5436
  }
5437
+ /**
5438
+ * MEMORY LEAK FIX: Destroy the cache and clear the eviction interval
5439
+ * Call this method when the cache is no longer needed to prevent memory leaks
5440
+ */
5441
+ destroy() {
5442
+ // CRITICAL FIX: Clear the eviction interval to prevent memory leaks
5443
+ if (this.evictionIntervalId !== null) {
5444
+ clearInterval(this.evictionIntervalId);
5445
+ this.evictionIntervalId = null;
5446
+ }
5447
+ this.clear();
5448
+ }
5155
5449
  }
5156
5450
 
5157
5451
  exports.$appDigest = $appDigest;
@@ -5159,6 +5453,8 @@
5159
5453
  exports.$parseEvent = $parseEvent;
5160
5454
  exports.$parseExpr = $parseExpr;
5161
5455
  exports.$unwatch = $unwatch;
5456
+ exports.$unwatchAll = $unwatchAll;
5457
+ exports.$unwatchAllByScope = $unwatchAllByScope;
5162
5458
  exports.$watch = $watch;
5163
5459
  exports.AbstractDialogService = AbstractDialogService;
5164
5460
  exports.AbstractHttpService = AbstractHttpService;
@@ -5282,6 +5578,7 @@
5282
5578
  exports.isObject = isObject;
5283
5579
  exports.isPageable = isPageable;
5284
5580
  exports.isSafari = isSafari;
5581
+ exports.isValidImageUrl = isValidImageUrl;
5285
5582
  exports.isValidWebURL = isValidWebURL;
5286
5583
  exports.isVideoFile = isVideoFile;
5287
5584
  exports.loadScript = loadScript;