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

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 (407) 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 +323 -28
  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 +1 -1
  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 +319 -26
  30. package/components/base/fesm2022/index.mjs.map +1 -1
  31. package/components/base/widgets/common/base/base-container.component.d.ts +3 -2
  32. package/components/base/widgets/common/base/base-field-validations.d.ts +1 -0
  33. package/components/base/widgets/common/base/custom-widget-container.directive.d.ts +3 -2
  34. package/components/base/widgets/common/base/dataset-aware-nav.component.d.ts +6 -2
  35. package/components/base/widgets/common/base/partial-container.directive.d.ts +3 -2
  36. package/components/base/widgets/common/item-template/item-template.directive.d.ts +3 -2
  37. package/components/base/widgets/common/lazy-load/lazy-load.directive.d.ts +1 -1
  38. package/components/base/widgets/common/partial-param/partial-param.directive.d.ts +3 -2
  39. package/components/base/widgets/common/pull-to-refresh/pull-to-refresh.d.ts +3 -2
  40. package/components/basic/anchor/bundles/index.umd.js +13 -1
  41. package/components/basic/anchor/esm2022/anchor.component.mjs +14 -2
  42. package/components/basic/anchor/fesm2022/index.mjs +13 -1
  43. package/components/basic/anchor/fesm2022/index.mjs.map +1 -1
  44. package/components/basic/html/bundles/index.umd.js +13 -1
  45. package/components/basic/html/esm2022/html.directive.mjs +14 -2
  46. package/components/basic/html/fesm2022/index.mjs +13 -1
  47. package/components/basic/html/fesm2022/index.mjs.map +1 -1
  48. package/components/basic/label/bundles/index.umd.js +17 -1
  49. package/components/basic/label/esm2022/label.directive.mjs +18 -2
  50. package/components/basic/label/fesm2022/index.mjs +17 -1
  51. package/components/basic/label/fesm2022/index.mjs.map +1 -1
  52. package/components/basic/label/label.directive.d.ts +3 -2
  53. package/components/basic/progress/progress-circle/bundles/index.umd.js +10 -0
  54. package/components/basic/progress/progress-circle/esm2022/progress-circle.component.mjs +11 -1
  55. package/components/basic/progress/progress-circle/fesm2022/index.mjs +10 -0
  56. package/components/basic/progress/progress-circle/fesm2022/index.mjs.map +1 -1
  57. package/components/basic/progress/progress-circle/progress-circle.component.d.ts +3 -2
  58. package/components/basic/search/bundles/index.umd.js +27 -1
  59. package/components/basic/search/esm2022/scrollable.directive.mjs +11 -2
  60. package/components/basic/search/esm2022/search.component.mjs +18 -1
  61. package/components/basic/search/fesm2022/index.mjs +27 -1
  62. package/components/basic/search/fesm2022/index.mjs.map +1 -1
  63. package/components/basic/search/scrollable.directive.d.ts +4 -2
  64. package/components/basic/search/search.component.d.ts +3 -2
  65. package/components/basic/spinner/bundles/index.umd.js +9 -1
  66. package/components/basic/spinner/esm2022/spinner.component.mjs +10 -2
  67. package/components/basic/spinner/fesm2022/index.mjs +9 -1
  68. package/components/basic/spinner/fesm2022/index.mjs.map +1 -1
  69. package/components/basic/spinner/spinner.component.d.ts +4 -2
  70. package/components/chart/bundles/index.umd.js +21 -3
  71. package/components/chart/esm2022/chart.component.mjs +22 -4
  72. package/components/chart/fesm2022/index.mjs +21 -3
  73. package/components/chart/fesm2022/index.mjs.map +1 -1
  74. package/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +3 -2
  75. package/components/containers/accordion/accordion.directive.d.ts +5 -2
  76. package/components/containers/accordion/bundles/index.umd.js +49 -2
  77. package/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +10 -1
  78. package/components/containers/accordion/esm2022/accordion.directive.mjs +41 -3
  79. package/components/containers/accordion/fesm2022/index.mjs +49 -2
  80. package/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  81. package/components/containers/panel/bundles/index.umd.js +13 -0
  82. package/components/containers/panel/esm2022/panel.component.mjs +14 -1
  83. package/components/containers/panel/fesm2022/index.mjs +13 -0
  84. package/components/containers/panel/fesm2022/index.mjs.map +1 -1
  85. package/components/containers/panel/panel.component.d.ts +3 -2
  86. package/components/containers/tabs/bundles/index.umd.js +54 -2
  87. package/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +10 -1
  88. package/components/containers/tabs/esm2022/tabs.component.mjs +46 -3
  89. package/components/containers/tabs/fesm2022/index.mjs +54 -2
  90. package/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  91. package/components/containers/tabs/tab-pane/tab-pane.component.d.ts +3 -2
  92. package/components/containers/tabs/tabs.component.d.ts +5 -2
  93. package/components/containers/wizard/bundles/index.umd.js +47 -3
  94. package/components/containers/wizard/esm2022/wizard-step/wizard-step.component.mjs +16 -3
  95. package/components/containers/wizard/esm2022/wizard.component.mjs +33 -2
  96. package/components/containers/wizard/fesm2022/index.mjs +47 -3
  97. package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  98. package/components/containers/wizard/wizard-step/wizard-step.component.d.ts +3 -2
  99. package/components/containers/wizard/wizard.component.d.ts +4 -2
  100. package/components/data/card/bundles/index.umd.js +17 -1
  101. package/components/data/card/card-content/card-content.component.d.ts +3 -2
  102. package/components/data/card/card.component.d.ts +4 -2
  103. package/components/data/card/esm2022/card-content/card-content.component.mjs +6 -1
  104. package/components/data/card/esm2022/card.component.mjs +13 -2
  105. package/components/data/card/fesm2022/index.mjs +17 -1
  106. package/components/data/card/fesm2022/index.mjs.map +1 -1
  107. package/components/data/form/bundles/index.umd.js +92 -0
  108. package/components/data/form/esm2022/form-action/form-action.directive.mjs +7 -1
  109. package/components/data/form/esm2022/form-field/form-field.directive.mjs +28 -1
  110. package/components/data/form/esm2022/form-widget.directive.mjs +8 -1
  111. package/components/data/form/esm2022/form.component.mjs +27 -1
  112. package/components/data/form/esm2022/live-actions/live-actions.directive.mjs +7 -1
  113. package/components/data/form/esm2022/live-filter/live-filter.directive.mjs +12 -1
  114. package/components/data/form/esm2022/live-form/live-form.directive.mjs +10 -1
  115. package/components/data/form/fesm2022/index.mjs +92 -0
  116. package/components/data/form/fesm2022/index.mjs.map +1 -1
  117. package/components/data/form/form-action/form-action.directive.d.ts +3 -2
  118. package/components/data/form/form-field/form-field.directive.d.ts +3 -2
  119. package/components/data/form/form-widget.directive.d.ts +3 -2
  120. package/components/data/form/live-actions/live-actions.directive.d.ts +3 -1
  121. package/components/data/form/live-filter/live-filter.directive.d.ts +3 -1
  122. package/components/data/form/live-form/live-form.directive.d.ts +3 -1
  123. package/components/data/list/bundles/index.umd.js +180 -17
  124. package/components/data/list/esm2022/list-item.directive.mjs +95 -11
  125. package/components/data/list/esm2022/list.component.mjs +87 -8
  126. package/components/data/list/fesm2022/index.mjs +180 -17
  127. package/components/data/list/fesm2022/index.mjs.map +1 -1
  128. package/components/data/list/list-item.directive.d.ts +7 -2
  129. package/components/data/list/list.component.d.ts +3 -0
  130. package/components/data/live-table/bundles/index.umd.js +13 -1
  131. package/components/data/live-table/esm2022/live-table.component.mjs +14 -2
  132. package/components/data/live-table/fesm2022/index.mjs +13 -1
  133. package/components/data/live-table/fesm2022/index.mjs.map +1 -1
  134. package/components/data/live-table/live-table.component.d.ts +4 -2
  135. package/components/data/pagination/bundles/index.umd.js +57 -4
  136. package/components/data/pagination/esm2022/pagination.component.mjs +58 -5
  137. package/components/data/pagination/fesm2022/index.mjs +57 -4
  138. package/components/data/pagination/fesm2022/index.mjs.map +1 -1
  139. package/components/data/pagination/pagination.component.d.ts +4 -2
  140. package/components/data/table/bundles/index.umd.js +311 -12
  141. package/components/data/table/esm2022/table-action/table-action.directive.mjs +8 -1
  142. package/components/data/table/esm2022/table-column/table-column.directive.mjs +107 -3
  143. package/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +9 -1
  144. package/components/data/table/esm2022/table-cud.directive.mjs +8 -2
  145. package/components/data/table/esm2022/table-filter.directive.mjs +12 -2
  146. package/components/data/table/esm2022/table-row/table-row.directive.mjs +8 -1
  147. package/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +8 -1
  148. package/components/data/table/esm2022/table.component.mjs +159 -9
  149. package/components/data/table/fesm2022/index.mjs +311 -12
  150. package/components/data/table/fesm2022/index.mjs.map +1 -1
  151. package/components/data/table/table-action/table-action.directive.d.ts +3 -2
  152. package/components/data/table/table-column/table-column.directive.d.ts +3 -2
  153. package/components/data/table/table-column-group/table-column-group.directive.d.ts +3 -2
  154. package/components/data/table/table-cud.directive.d.ts +3 -1
  155. package/components/data/table/table-filter.directive.d.ts +3 -1
  156. package/components/data/table/table-row/table-row.directive.d.ts +3 -2
  157. package/components/data/table/table-row-action/table-row-action.directive.d.ts +3 -2
  158. package/components/data/table/table.component.d.ts +2 -2
  159. package/components/dialogs/alert-dialog/alert-dialog.component.d.ts +3 -2
  160. package/components/dialogs/alert-dialog/bundles/index.umd.js +5 -0
  161. package/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +6 -1
  162. package/components/dialogs/alert-dialog/fesm2022/index.mjs +5 -0
  163. package/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
  164. package/components/dialogs/confirm-dialog/bundles/index.umd.js +5 -0
  165. package/components/dialogs/confirm-dialog/confirm-dialog.component.d.ts +3 -2
  166. package/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +6 -1
  167. package/components/dialogs/confirm-dialog/fesm2022/index.mjs +5 -0
  168. package/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
  169. package/components/dialogs/default/bundles/index.umd.js +15 -2
  170. package/components/dialogs/default/dialog-body/dialog-body.directive.d.ts +4 -2
  171. package/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +16 -3
  172. package/components/dialogs/default/fesm2022/index.mjs +15 -2
  173. package/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  174. package/components/dialogs/design-dialog/bundles/index.umd.js +7 -0
  175. package/components/dialogs/design-dialog/dialog.component.d.ts +3 -2
  176. package/components/dialogs/design-dialog/esm2022/dialog.component.mjs +8 -1
  177. package/components/dialogs/design-dialog/fesm2022/index.mjs +7 -0
  178. package/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
  179. package/components/dialogs/iframe-dialog/bundles/index.umd.js +5 -0
  180. package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +6 -1
  181. package/components/dialogs/iframe-dialog/fesm2022/index.mjs +5 -0
  182. package/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
  183. package/components/dialogs/iframe-dialog/iframe-dialog.component.d.ts +3 -2
  184. package/components/dialogs/partial-dialog/bundles/index.umd.js +23 -3
  185. package/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +24 -4
  186. package/components/dialogs/partial-dialog/fesm2022/index.mjs +23 -3
  187. package/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
  188. package/components/dialogs/partial-dialog/partial-dialog.component.d.ts +4 -2
  189. package/components/input/base-form/base-form.component.d.ts +4 -2
  190. package/components/input/base-form/bundles/index.umd.js +16 -2
  191. package/components/input/base-form/esm2022/base-form.component.mjs +17 -3
  192. package/components/input/base-form/fesm2022/index.mjs +16 -2
  193. package/components/input/base-form/fesm2022/index.mjs.map +1 -1
  194. package/components/input/base-form-custom/base-form-custom.component.d.ts +3 -2
  195. package/components/input/base-form-custom/bundles/index.umd.js +13 -2
  196. package/components/input/base-form-custom/esm2022/base-form-custom.component.mjs +14 -3
  197. package/components/input/base-form-custom/fesm2022/index.mjs +13 -2
  198. package/components/input/base-form-custom/fesm2022/index.mjs.map +1 -1
  199. package/components/input/checkbox/bundles/index.umd.js +7 -0
  200. package/components/input/checkbox/checkbox.component.d.ts +3 -2
  201. package/components/input/checkbox/esm2022/checkbox.component.mjs +8 -1
  202. package/components/input/checkbox/fesm2022/index.mjs +7 -0
  203. package/components/input/checkbox/fesm2022/index.mjs.map +1 -1
  204. package/components/input/checkboxset/bundles/index.umd.js +18 -2
  205. package/components/input/checkboxset/checkboxset.component.d.ts +4 -2
  206. package/components/input/checkboxset/esm2022/checkboxset.component.mjs +19 -3
  207. package/components/input/checkboxset/fesm2022/index.mjs +18 -2
  208. package/components/input/checkboxset/fesm2022/index.mjs.map +1 -1
  209. package/components/input/chips/bundles/index.umd.js +45 -5
  210. package/components/input/chips/chips.component.d.ts +3 -2
  211. package/components/input/chips/esm2022/chips.component.mjs +46 -6
  212. package/components/input/chips/fesm2022/index.mjs +45 -5
  213. package/components/input/chips/fesm2022/index.mjs.map +1 -1
  214. package/components/input/color-picker/bundles/index.umd.js +8 -0
  215. package/components/input/color-picker/color-picker.component.d.ts +3 -2
  216. package/components/input/color-picker/esm2022/color-picker.component.mjs +9 -1
  217. package/components/input/color-picker/fesm2022/index.mjs +8 -0
  218. package/components/input/color-picker/fesm2022/index.mjs.map +1 -1
  219. package/components/input/composite/bundles/index.umd.js +10 -1
  220. package/components/input/composite/composite.directive.d.ts +3 -2
  221. package/components/input/composite/esm2022/composite.directive.mjs +11 -2
  222. package/components/input/composite/fesm2022/index.mjs +10 -1
  223. package/components/input/composite/fesm2022/index.mjs.map +1 -1
  224. package/components/input/currency/bundles/index.umd.js +7 -0
  225. package/components/input/currency/currency.component.d.ts +3 -2
  226. package/components/input/currency/esm2022/currency.component.mjs +8 -1
  227. package/components/input/currency/fesm2022/index.mjs +7 -0
  228. package/components/input/currency/fesm2022/index.mjs.map +1 -1
  229. package/components/input/dataset-aware-form/bundles/index.umd.js +26 -2
  230. package/components/input/dataset-aware-form/esm2022/dataset-aware-form.component.mjs +27 -3
  231. package/components/input/dataset-aware-form/fesm2022/index.mjs +26 -2
  232. package/components/input/dataset-aware-form/fesm2022/index.mjs.map +1 -1
  233. package/components/input/epoch/date/bundles/index.umd.js +22 -0
  234. package/components/input/epoch/date/date.component.d.ts +1 -0
  235. package/components/input/epoch/date/esm2022/date.component.mjs +23 -1
  236. package/components/input/epoch/date/fesm2022/index.mjs +22 -0
  237. package/components/input/epoch/date/fesm2022/index.mjs.map +1 -1
  238. package/components/input/file-upload/bundles/index.umd.js +25 -8
  239. package/components/input/file-upload/esm2022/file-upload.component.mjs +26 -9
  240. package/components/input/file-upload/fesm2022/index.mjs +25 -8
  241. package/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  242. package/components/input/file-upload/file-upload.component.d.ts +3 -0
  243. package/components/input/number/bundles/index.umd.js +8 -0
  244. package/components/input/number/esm2022/number.component.mjs +9 -1
  245. package/components/input/number/fesm2022/index.mjs +8 -0
  246. package/components/input/number/fesm2022/index.mjs.map +1 -1
  247. package/components/input/number/number.component.d.ts +3 -2
  248. package/components/input/radioset/bundles/index.umd.js +18 -2
  249. package/components/input/radioset/esm2022/radioset.component.mjs +19 -3
  250. package/components/input/radioset/fesm2022/index.mjs +18 -2
  251. package/components/input/radioset/fesm2022/index.mjs.map +1 -1
  252. package/components/input/radioset/radioset.component.d.ts +4 -2
  253. package/components/input/rating/bundles/index.umd.js +10 -0
  254. package/components/input/rating/esm2022/rating.component.mjs +11 -1
  255. package/components/input/rating/fesm2022/index.mjs +10 -0
  256. package/components/input/rating/fesm2022/index.mjs.map +1 -1
  257. package/components/input/rating/rating.component.d.ts +3 -2
  258. package/components/input/select/bundles/index.umd.js +6 -0
  259. package/components/input/select/esm2022/select.component.mjs +7 -1
  260. package/components/input/select/fesm2022/index.mjs +6 -0
  261. package/components/input/select/fesm2022/index.mjs.map +1 -1
  262. package/components/input/select/select.component.d.ts +3 -2
  263. package/components/input/slider/bundles/index.umd.js +10 -0
  264. package/components/input/slider/esm2022/slider.component.mjs +11 -1
  265. package/components/input/slider/fesm2022/index.mjs +10 -0
  266. package/components/input/slider/fesm2022/index.mjs.map +1 -1
  267. package/components/input/slider/slider.component.d.ts +3 -2
  268. package/components/input/switch/bundles/index.umd.js +22 -2
  269. package/components/input/switch/esm2022/switch.component.mjs +23 -3
  270. package/components/input/switch/fesm2022/index.mjs +22 -2
  271. package/components/input/switch/fesm2022/index.mjs.map +1 -1
  272. package/components/input/switch/switch.component.d.ts +3 -2
  273. package/components/input/text/bundles/index.umd.js +36 -0
  274. package/components/input/text/esm2022/input-calendar/input-calendar.component.mjs +8 -1
  275. package/components/input/text/esm2022/input-color/input-color.component.mjs +8 -1
  276. package/components/input/text/esm2022/input-email/input-email.component.mjs +8 -1
  277. package/components/input/text/esm2022/input-number/input-number.component.mjs +8 -1
  278. package/components/input/text/esm2022/input-text/input-text.component.mjs +9 -1
  279. package/components/input/text/fesm2022/index.mjs +36 -0
  280. package/components/input/text/fesm2022/index.mjs.map +1 -1
  281. package/components/input/text/input-calendar/input-calendar.component.d.ts +3 -2
  282. package/components/input/text/input-color/input-color.component.d.ts +3 -2
  283. package/components/input/text/input-email/input-email.component.d.ts +3 -2
  284. package/components/input/text/input-number/input-number.component.d.ts +3 -2
  285. package/components/input/text/input-text/input-text.component.d.ts +3 -2
  286. package/components/input/textarea/bundles/index.umd.js +7 -0
  287. package/components/input/textarea/esm2022/textarea.component.mjs +8 -1
  288. package/components/input/textarea/fesm2022/index.mjs +7 -0
  289. package/components/input/textarea/fesm2022/index.mjs.map +1 -1
  290. package/components/input/textarea/textarea.component.d.ts +3 -2
  291. package/components/navigation/menu/bundles/index.umd.js +55 -6
  292. package/components/navigation/menu/esm2022/menu-adapator.component.mjs +17 -3
  293. package/components/navigation/menu/esm2022/menu.component.mjs +10 -3
  294. package/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +6 -1
  295. package/components/navigation/menu/esm2022/nav/nav.component.mjs +11 -1
  296. package/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +16 -3
  297. package/components/navigation/menu/fesm2022/index.mjs +55 -6
  298. package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  299. package/components/navigation/menu/menu-adapator.component.d.ts +4 -2
  300. package/components/navigation/menu/nav/nav-item/nav-item.directive.d.ts +3 -2
  301. package/components/navigation/menu/nav/nav.component.d.ts +3 -2
  302. package/components/navigation/menu/nav/navigation-control.directive.d.ts +4 -2
  303. package/components/navigation/navbar/bundles/index.umd.js +5 -0
  304. package/components/navigation/navbar/esm2022/navbar.component.mjs +6 -1
  305. package/components/navigation/navbar/fesm2022/index.mjs +5 -0
  306. package/components/navigation/navbar/fesm2022/index.mjs.map +1 -1
  307. package/components/navigation/navbar/navbar.component.d.ts +3 -2
  308. package/components/navigation/popover/bundles/index.umd.js +65 -13
  309. package/components/navigation/popover/esm2022/popover.component.mjs +63 -11
  310. package/components/navigation/popover/fesm2022/index.mjs +62 -10
  311. package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  312. package/components/navigation/popover/popover.component.d.ts +11 -3
  313. package/components/page/default/bundles/index.umd.js +20 -2
  314. package/components/page/default/esm2022/layout.directive.mjs +9 -1
  315. package/components/page/default/esm2022/page-content/page-content.component.mjs +13 -3
  316. package/components/page/default/fesm2022/index.mjs +20 -2
  317. package/components/page/default/fesm2022/index.mjs.map +1 -1
  318. package/components/page/default/layout.directive.d.ts +3 -2
  319. package/components/page/default/page-content/page-content.component.d.ts +3 -2
  320. package/components/page/left-panel/bundles/index.umd.js +16 -0
  321. package/components/page/left-panel/esm2022/left-panel.directive.mjs +17 -1
  322. package/components/page/left-panel/fesm2022/index.mjs +16 -0
  323. package/components/page/left-panel/fesm2022/index.mjs.map +1 -1
  324. package/components/page/left-panel/left-panel.directive.d.ts +3 -2
  325. package/components/page/top-nav/bundles/index.umd.js +2 -1
  326. package/components/page/top-nav/esm2022/top-nav.props.mjs +3 -2
  327. package/components/page/top-nav/fesm2022/index.mjs +2 -1
  328. package/components/page/top-nav/fesm2022/index.mjs.map +1 -1
  329. package/components/prefab/bundles/index.umd.js +4 -0
  330. package/components/prefab/esm2022/prefab.directive.mjs +5 -1
  331. package/components/prefab/fesm2022/index.mjs +4 -0
  332. package/components/prefab/fesm2022/index.mjs.map +1 -1
  333. package/core/bundles/index.umd.js +391 -94
  334. package/core/esm2022/public_api.mjs +3 -3
  335. package/core/esm2022/services/viewport.service.mjs +24 -10
  336. package/core/esm2022/types/types.mjs +1 -1
  337. package/core/esm2022/utils/dom.mjs +18 -2
  338. package/core/esm2022/utils/event-notifier.mjs +5 -2
  339. package/core/esm2022/utils/lru-cache.mjs +16 -2
  340. package/core/esm2022/utils/utils.mjs +6 -2
  341. package/core/esm2022/utils/watcher.mjs +323 -81
  342. package/core/fesm2022/index.mjs +390 -96
  343. package/core/fesm2022/index.mjs.map +1 -1
  344. package/core/public_api.d.ts +2 -2
  345. package/core/services/viewport.service.d.ts +5 -2
  346. package/core/types/types.d.ts +1 -0
  347. package/core/utils/lru-cache.d.ts +6 -0
  348. package/core/utils/utils.d.ts +1 -0
  349. package/core/utils/watcher.d.ts +26 -5
  350. package/http/bundles/index.umd.js +31 -1
  351. package/http/esm2022/http.service.mjs +32 -2
  352. package/http/fesm2022/index.mjs +31 -1
  353. package/http/fesm2022/index.mjs.map +1 -1
  354. package/http/http.service.d.ts +6 -2
  355. package/npm-shrinkwrap.json +2 -2
  356. package/oAuth/bundles/index.umd.js +9 -0
  357. package/oAuth/esm2022/oAuth.service.mjs +10 -1
  358. package/oAuth/fesm2022/index.mjs +9 -0
  359. package/oAuth/fesm2022/index.mjs.map +1 -1
  360. package/oAuth/oAuth.service.d.ts +3 -1
  361. package/package-lock.json +2 -2
  362. package/package.json +1 -1
  363. package/runtime/base/bundles/index.umd.js +364 -30
  364. package/runtime/base/components/app-component/app.component.d.ts +4 -0
  365. package/runtime/base/components/prefab-preview.component.d.ts +5 -2
  366. package/runtime/base/directives/accessroles.directive.d.ts +4 -3
  367. package/runtime/base/directives/prefab.directive.d.ts +3 -2
  368. package/runtime/base/esm2022/components/app-component/app.component.mjs +40 -9
  369. package/runtime/base/esm2022/components/base-custom-widget.component.mjs +33 -2
  370. package/runtime/base/esm2022/components/base-layout.component.mjs +7 -1
  371. package/runtime/base/esm2022/components/base-page.component.mjs +36 -3
  372. package/runtime/base/esm2022/components/base-partial.component.mjs +37 -3
  373. package/runtime/base/esm2022/components/base-prefab.component.mjs +32 -3
  374. package/runtime/base/esm2022/components/base-spa-page.component.mjs +37 -3
  375. package/runtime/base/esm2022/components/prefab-preview.component.mjs +23 -4
  376. package/runtime/base/esm2022/directives/accessroles.directive.mjs +11 -2
  377. package/runtime/base/esm2022/directives/prefab.directive.mjs +9 -1
  378. package/runtime/base/esm2022/services/app.manager.service.mjs +37 -10
  379. package/runtime/base/esm2022/services/app.service.mjs +34 -2
  380. package/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +4 -1
  381. package/runtime/base/esm2022/services/pipe-provider.service.mjs +7 -4
  382. package/runtime/base/esm2022/services/spinner.service.mjs +15 -1
  383. package/runtime/base/esm2022/util/fragment-monitor.mjs +23 -2
  384. package/runtime/base/fesm2022/index.mjs +365 -31
  385. package/runtime/base/fesm2022/index.mjs.map +1 -1
  386. package/runtime/base/services/app.manager.service.d.ts +6 -1
  387. package/runtime/base/services/app.service.d.ts +12 -2
  388. package/runtime/base/services/dynamic-component-ref-provider.service.d.ts +2 -1
  389. package/runtime/base/services/spinner.service.d.ts +3 -1
  390. package/runtime/base/util/fragment-monitor.d.ts +6 -0
  391. package/runtime/dynamic/bundles/index.umd.js +5 -0
  392. package/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +6 -1
  393. package/runtime/dynamic/fesm2022/index.mjs +5 -0
  394. package/runtime/dynamic/fesm2022/index.mjs.map +1 -1
  395. package/scripts/datatable/datatable.js +100 -14
  396. package/security/bundles/index.umd.js +41 -2
  397. package/security/esm2022/security.service.mjs +42 -3
  398. package/security/fesm2022/index.mjs +41 -2
  399. package/security/fesm2022/index.mjs.map +1 -1
  400. package/security/security.service.d.ts +5 -2
  401. package/variables/bundles/index.umd.js +50 -6
  402. package/variables/esm2022/manager/action/notification-action.manager.mjs +18 -3
  403. package/variables/esm2022/manager/variable/base-variable.manager.mjs +15 -2
  404. package/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +13 -3
  405. package/variables/esm2022/service/variables.service.mjs +8 -2
  406. package/variables/fesm2022/index.mjs +50 -6
  407. package/variables/fesm2022/index.mjs.map +1 -1
@@ -43,8 +43,13 @@ export class PartialDialogComponent extends BaseDialog {
43
43
  this.register(this.viewParent);
44
44
  }
45
45
  setPartialLoadListener() {
46
- const cancelSubscription = this.app.subscribe('partialLoaded', () => {
47
- const parEle = this.partialRef.nativeElement;
46
+ // Clean up existing subscription if any
47
+ if (this.partialLoadedSubscription) {
48
+ this.partialLoadedSubscription();
49
+ this.partialLoadedSubscription = null;
50
+ }
51
+ this.partialLoadedSubscription = this.app.subscribe('partialLoaded', () => {
52
+ const parEle = this.partialRef?.nativeElement;
48
53
  let partialScope;
49
54
  if (parEle) {
50
55
  partialScope = parEle.widget;
@@ -52,7 +57,11 @@ export class PartialDialogComponent extends BaseDialog {
52
57
  this.Variables = partialScope.Variables;
53
58
  this.Actions = partialScope.Actions;
54
59
  }
55
- cancelSubscription();
60
+ // Clean up subscription after use
61
+ if (this.partialLoadedSubscription) {
62
+ this.partialLoadedSubscription();
63
+ this.partialLoadedSubscription = null;
64
+ }
56
65
  });
57
66
  }
58
67
  open(initState) {
@@ -60,6 +69,17 @@ export class PartialDialogComponent extends BaseDialog {
60
69
  // WMS-19410 - Set the partial load listener to access widgets, variables and actions of page dialog
61
70
  this.setPartialLoadListener();
62
71
  }
72
+ ngOnDestroy() {
73
+ // MEMORY LEAK FIX: Unsubscribe from partialLoaded event
74
+ if (this.partialLoadedSubscription) {
75
+ this.partialLoadedSubscription();
76
+ this.partialLoadedSubscription = null;
77
+ }
78
+ // MEMORY LEAK FIX: Clear ContentChild references
79
+ this.partialRef = null;
80
+ this.dialogContent = null;
81
+ super.ngOnDestroy();
82
+ }
63
83
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PartialDialogComponent, deps: [{ token: i0.Injector }, { token: i1.App }, { token: 'class', attribute: true }, { token: 'modal', attribute: true }, { token: 'closable', attribute: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
64
84
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PartialDialogComponent, isStandalone: true, selector: "div[wmPartialDialog]", providers: [
65
85
  provideAsWidgetRef(PartialDialogComponent),
@@ -96,4 +116,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
96
116
  type: ContentChild,
97
117
  args: ['partial']
98
118
  }] } });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFydGlhbC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2RpYWxvZ3MvcGFydGlhbC1kaWFsb2cvc3JjL3BhcnRpYWwtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9kaWFsb2dzL3BhcnRpYWwtZGlhbG9nL3NyYy9wYXJ0aWFsLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFFUixRQUFRLEVBQ1IsV0FBVyxFQUNYLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBRW5ELE1BQU0sVUFBVSxHQUFHLHlDQUF5QyxDQUFDO0FBQzdELE1BQU0sV0FBVyxHQUFHLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLENBQUM7QUFZdkQsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFVBQVU7YUFDM0Msb0JBQWUsR0FBRyxhQUFhLEVBQUUsQUFBbEIsQ0FBbUI7SUFVekMsWUFD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QixTQUFTOzJCQUFDLE9BQU87OzBCQUNqQixTQUFTOzJCQUFDLFVBQVU7OzBCQUNwQixNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQUcsUUFBUTt5Q0FmTSxjQUFjO3NCQUE1RCxTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDbEIsYUFBYTtzQkFBdkMsWUFBWTt1QkFBQyxXQUFXO2dCQUNBLFVBQVU7c0JBQWxDLFlBQVk7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQXR0cmlidXRlLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdG9yLFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFwcCwgdG9Cb29sZWFuIH0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgcHJvdmlkZUFzRGlhbG9nUmVmLCBwcm92aWRlQXNXaWRnZXRSZWYgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7IEJhc2VEaWFsb2csIERpYWxvZ0JvZHlEaXJlY3RpdmUsIERpYWxvZ0Zvb3RlckRpcmVjdGl2ZSwgRGlhbG9nSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvZGlhbG9ncyc7XG5cbmltcG9ydCB7IHJlZ2lzdGVyUHJvcHMgfSBmcm9tICcuL3BhcnRpYWwtZGlhbG9nLnByb3BzJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2lucHV0L2J1dHRvbic7XG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuY29uc3QgRElBTE9HX0NMUyA9ICdhcHAtZGlhbG9nIG1vZGFsLWRpYWxvZyBhcHAtcGFnZS1kaWFsb2cnO1xuY29uc3QgV0lER0VUX0lORk8gPSB7IHdpZGdldFR5cGU6ICd3bS1wYXJ0aWFsZGlhbG9nJyB9O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtEaWFsb2dCb2R5RGlyZWN0aXZlLCBEaWFsb2dGb290ZXJEaXJlY3RpdmUsIERpYWxvZ0hlYWRlckNvbXBvbmVudCwgQnV0dG9uQ29tcG9uZW50LCBOZ1RlbXBsYXRlT3V0bGV0XSxcbiAgICBzZWxlY3RvcjogJ2Rpdlt3bVBhcnRpYWxEaWFsb2ddJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcGFydGlhbC1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoUGFydGlhbERpYWxvZ0NvbXBvbmVudCksXG4gICAgICAgIHByb3ZpZGVBc0RpYWxvZ1JlZihQYXJ0aWFsRGlhbG9nQ29tcG9uZW50KVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgUGFydGlhbERpYWxvZ0NvbXBvbmVudCBleHRlbmRzIEJhc2VEaWFsb2cgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHN0YXRpYyBpbml0aWFsaXplUHJvcHMgPSByZWdpc3RlclByb3BzKCk7XG4gICAgQFZpZXdDaGlsZCgnZGlhbG9nVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2dUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmKSBkaWFsb2dDb250ZW50OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIEBDb250ZW50Q2hpbGQoJ3BhcnRpYWwnKSBwYXJ0aWFsUmVmO1xuXG4gICAgcHJvdGVjdGVkIGFwcDtcbiAgICBwcm90ZWN0ZWQgV2lkZ2V0cztcbiAgICBwcm90ZWN0ZWQgVmFyaWFibGVzO1xuICAgIHByb3RlY3RlZCBBY3Rpb25zO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGluajogSW5qZWN0b3IsXG4gICAgICAgIGFwcDogQXBwLFxuICAgICAgICBAQXR0cmlidXRlKCdjbGFzcycpIGRpYWxvZ0NsYXNzOiBzdHJpbmcsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ21vZGFsJykgbW9kYWw6IHN0cmluZyB8IGJvb2xlYW4sXG4gICAgICAgIEBBdHRyaWJ1dGUoJ2Nsb3NhYmxlJykgY2xvc2FibGU6IHN0cmluZyB8IGJvb2xlYW4sXG4gICAgICAgIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueVxuICAgICkge1xuICAgICAgICBpZiAobW9kYWwgPT09IG51bGwgfHwgbW9kYWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbW9kYWwgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjbG9zYWJsZSA9PT0gbnVsbCB8fCBjbG9zYWJsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjbG9zYWJsZSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzZXR0aW5nIHRoZSBiYWNrZHJvcCB0byAnc3RhdGljJyB3aWxsIG5vdCBjbG9zZSB0aGUgZGlhbG9nIG9uIGJhY2tkcm9wIGNsaWNrXG4gICAgICAgIGNvbnN0IGJhY2tkcm9wOiBib29sZWFuIHwgJ3N0YXRpYycgPSB0b0Jvb2xlYW4obW9kYWwpID8gJ3N0YXRpYycgOiB0cnVlO1xuXG4gICAgICAgIHN1cGVyKFxuICAgICAgICAgICAgaW5qLFxuICAgICAgICAgICAgV0lER0VUX0lORk8sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3M6IGAke0RJQUxPR19DTFN9ICR7ZGlhbG9nQ2xhc3MgfHwgJyd9YCxcbiAgICAgICAgICAgICAgICBiYWNrZHJvcCxcbiAgICAgICAgICAgICAgICBrZXlib2FyZDogIXRvQm9vbGVhbihtb2RhbClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBleHBsaWNpdENvbnRleHRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5hcHAgPSBhcHA7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFRlbXBsYXRlUmVmKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kaWFsb2dUZW1wbGF0ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGljayBldmVudCBoYW5kbGVyIGZvciB0aGUgb2sgYnV0dG9uXG4gICAgICogaW52b2tlcyBvbi1vayBldmVudCBjYWxsYmFja1xuICAgICAqIEBwYXJhbSB7RXZlbnR9ICRldmVudFxuICAgICAqL1xuICAgIG9uT2soJGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ29rJywgeyAkZXZlbnQgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXIodGhpcy52aWV3UGFyZW50KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFBhcnRpYWxMb2FkTGlzdGVuZXIoKSB7XG4gICAgICAgIGNvbnN0IGNhbmNlbFN1YnNjcmlwdGlvbiA9IHRoaXMuYXBwLnN1YnNjcmliZSgncGFydGlhbExvYWRlZCcsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhckVsZSA9IHRoaXMucGFydGlhbFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgbGV0IHBhcnRpYWxTY29wZTtcbiAgICAgICAgICAgIGlmIChwYXJFbGUpIHtcbiAgICAgICAgICAgICAgICBwYXJ0aWFsU2NvcGUgPSBwYXJFbGUud2lkZ2V0O1xuICAgICAgICAgICAgICAgIHRoaXMuV2lkZ2V0cyA9IHBhcnRpYWxTY29wZS5XaWRnZXRzO1xuICAgICAgICAgICAgICAgIHRoaXMuVmFyaWFibGVzID0gcGFydGlhbFNjb3BlLlZhcmlhYmxlcztcbiAgICAgICAgICAgICAgICB0aGlzLkFjdGlvbnMgPSBwYXJ0aWFsU2NvcGUuQWN0aW9ucztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhbmNlbFN1YnNjcmlwdGlvbigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3Blbihpbml0U3RhdGU/OiBhbnkpIHtcbiAgICAgICAgc3VwZXIub3Blbihpbml0U3RhdGUpO1xuICAgICAgICAvLyBXTVMtMTk0MTAgLSBTZXQgdGhlIHBhcnRpYWwgbG9hZCBsaXN0ZW5lciB0byBhY2Nlc3Mgd2lkZ2V0cywgdmFyaWFibGVzIGFuZCBhY3Rpb25zIG9mIHBhZ2UgZGlhbG9nXG4gICAgICAgIHRoaXMuc2V0UGFydGlhbExvYWRMaXN0ZW5lcigpO1xuICAgIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjZGlhbG9nVGVtcGxhdGU+XG4gIDxkaXYgd21EaWFsb2dIZWFkZXIgW2Nsb3NhYmxlXT1cImNsb3NhYmxlXCJcbiAgICBbaWNvbmNsYXNzXT1cImljb25jbGFzc1wiXG4gICAgW2ljb251cmxdPVwiaWNvbnVybFwiXG4gICAgW2ljb253aWR0aF09XCJpY29ud2lkdGhcIlxuICAgIFtpY29uaGVpZ2h0XT1cImljb25oZWlnaHRcIlxuICAgIFtpY29ubWFyZ2luXT1cImljb25tYXJnaW5cIlxuICAgIFtoZWFkaW5nXT1cInRpdGxlXCJcbiAgICBbaGVhZGluZ2xldmVsXT1cImhlYWRpbmdsZXZlbFwiXG4gICAgW3RpdGxlXT1cInRpdGxlXCJcbiAgICBbdGl0bGVpZF09XCJ0aXRsZUlkXCJcbiAgPjwvZGl2PlxuICA8ZGl2IHdtRGlhbG9nQm9keT5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGlhbG9nQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgQGlmIChzaG93YWN0aW9ucykge1xuICAgIDxkaXYgd21EaWFsb2dGb290ZXI+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJvbk9rKCRldmVudClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIm9rdGV4dFwiIGNhcHRpb24uYmluZD1cIm9rdGV4dFwiIGNsYXNzPVwiYnRuLXByaW1hcnkgb2stYWN0aW9uXCJcbiAgICAgIHdtQnV0dG9uPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICB9XG48L25nLXRlbXBsYXRlPlxuIl19
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFydGlhbC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2RpYWxvZ3MvcGFydGlhbC1kaWFsb2cvc3JjL3BhcnRpYWwtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9kaWFsb2dzL3BhcnRpYWwtZGlhbG9nL3NyYy9wYXJ0aWFsLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFHUixRQUFRLEVBQ1IsV0FBVyxFQUNYLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBRW5ELE1BQU0sVUFBVSxHQUFHLHlDQUF5QyxDQUFDO0FBQzdELE1BQU0sV0FBVyxHQUFHLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLENBQUM7QUFZdkQsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFVBQVU7YUFDM0Msb0JBQWUsR0FBRyxhQUFhLEVBQUUsQUFBbEIsQ0FBbUI7SUFXekMsWUFD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dkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFFMUIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7K0dBekdRLHNCQUFzQiw2REFlaEIsT0FBTyw4QkFDUCxPQUFPLDhCQUNQLFVBQVUsOEJBQ2Isa0JBQWtCO21HQWxCckIsc0JBQXNCLG1FQUxwQjtZQUNQLGtCQUFrQixDQUFDLHNCQUFzQixDQUFDO1lBQzFDLGtCQUFrQixDQUFDLHNCQUFzQixDQUFDO1NBQzdDLHFFQUthLFdBQVcsK1JDckM3QixzckJBc0JBLDRDREljLG1CQUFtQiw4REFBRSxxQkFBcUIsZ0VBQUUscUJBQXFCLG9OQUFFLGVBQWUscUZBQUUsZ0JBQWdCOzs0RkFRckcsc0JBQXNCO2tCQVZsQyxTQUFTO2lDQUNNLElBQUksV0FDUCxDQUFDLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQyxZQUNyRyxzQkFBc0IsYUFFckI7d0JBQ1Asa0JBQWtCLHdCQUF3Qjt3QkFDMUMsa0JBQWtCLHdCQUF3QjtxQkFDN0M7OzBCQWlCSSxTQUFTOzJCQUFDLE9BQU87OzBCQUNqQixTQUFTOzJCQUFDLE9BQU87OzBCQUNqQixTQUFTOzJCQUFDLFVBQVU7OzBCQUNwQixNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQUcsUUFBUTt5Q0FoQk0sY0FBYztzQkFBNUQsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ2xCLGFBQWE7c0JBQXZDLFlBQVk7dUJBQUMsV0FBVztnQkFDQSxVQUFVO3NCQUFsQyxZQUFZO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEF0dHJpYnV0ZSxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEluamVjdCxcbiAgICBJbmplY3RvcixcbiAgICBPbkluaXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQXBwLCB0b0Jvb2xlYW4gfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBwcm92aWRlQXNEaWFsb2dSZWYsIHByb3ZpZGVBc1dpZGdldFJlZiB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHsgQmFzZURpYWxvZywgRGlhbG9nQm9keURpcmVjdGl2ZSwgRGlhbG9nRm9vdGVyRGlyZWN0aXZlLCBEaWFsb2dIZWFkZXJDb21wb25lbnQgfSBmcm9tICdAd20vY29tcG9uZW50cy9kaWFsb2dzJztcblxuaW1wb3J0IHsgcmVnaXN0ZXJQcm9wcyB9IGZyb20gJy4vcGFydGlhbC1kaWFsb2cucHJvcHMnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvaW5wdXQvYnV0dG9uJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5jb25zdCBESUFMT0dfQ0xTID0gJ2FwcC1kaWFsb2cgbW9kYWwtZGlhbG9nIGFwcC1wYWdlLWRpYWxvZyc7XG5jb25zdCBXSURHRVRfSU5GTyA9IHsgd2lkZ2V0VHlwZTogJ3dtLXBhcnRpYWxkaWFsb2cnIH07XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0RpYWxvZ0JvZHlEaXJlY3RpdmUsIERpYWxvZ0Zvb3RlckRpcmVjdGl2ZSwgRGlhbG9nSGVhZGVyQ29tcG9uZW50LCBCdXR0b25Db21wb25lbnQsIE5nVGVtcGxhdGVPdXRsZXRdLFxuICAgIHNlbGVjdG9yOiAnZGl2W3dtUGFydGlhbERpYWxvZ10nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wYXJ0aWFsLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVBc1dpZGdldFJlZihQYXJ0aWFsRGlhbG9nQ29tcG9uZW50KSxcbiAgICAgICAgcHJvdmlkZUFzRGlhbG9nUmVmKFBhcnRpYWxEaWFsb2dDb21wb25lbnQpXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBQYXJ0aWFsRGlhbG9nQ29tcG9uZW50IGV4dGVuZHMgQmFzZURpYWxvZyBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuICAgIEBWaWV3Q2hpbGQoJ2RpYWxvZ1RlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgQENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZikgZGlhbG9nQ29udGVudDogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBAQ29udGVudENoaWxkKCdwYXJ0aWFsJykgcGFydGlhbFJlZjtcblxuICAgIHByb3RlY3RlZCBhcHA7XG4gICAgcHJvdGVjdGVkIFdpZGdldHM7XG4gICAgcHJvdGVjdGVkIFZhcmlhYmxlcztcbiAgICBwcm90ZWN0ZWQgQWN0aW9ucztcbiAgICBwcml2YXRlIHBhcnRpYWxMb2FkZWRTdWJzY3JpcHRpb246IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmo6IEluamVjdG9yLFxuICAgICAgICBhcHA6IEFwcCxcbiAgICAgICAgQEF0dHJpYnV0ZSgnY2xhc3MnKSBkaWFsb2dDbGFzczogc3RyaW5nLFxuICAgICAgICBAQXR0cmlidXRlKCdtb2RhbCcpIG1vZGFsOiBzdHJpbmcgfCBib29sZWFuLFxuICAgICAgICBAQXR0cmlidXRlKCdjbG9zYWJsZScpIGNsb3NhYmxlOiBzdHJpbmcgfCBib29sZWFuLFxuICAgICAgICBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnlcbiAgICApIHtcbiAgICAgICAgaWYgKG1vZGFsID09PSBudWxsIHx8IG1vZGFsID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG1vZGFsID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2xvc2FibGUgPT09IG51bGwgfHwgY2xvc2FibGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY2xvc2FibGUgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2V0dGluZyB0aGUgYmFja2Ryb3AgdG8gJ3N0YXRpYycgd2lsbCBub3QgY2xvc2UgdGhlIGRpYWxvZyBvbiBiYWNrZHJvcCBjbGlja1xuICAgICAgICBjb25zdCBiYWNrZHJvcDogYm9vbGVhbiB8ICdzdGF0aWMnID0gdG9Cb29sZWFuKG1vZGFsKSA/ICdzdGF0aWMnIDogdHJ1ZTtcblxuICAgICAgICBzdXBlcihcbiAgICAgICAgICAgIGluaixcbiAgICAgICAgICAgIFdJREdFVF9JTkZPLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzOiBgJHtESUFMT0dfQ0xTfSAke2RpYWxvZ0NsYXNzIHx8ICcnfWAsXG4gICAgICAgICAgICAgICAgYmFja2Ryb3AsXG4gICAgICAgICAgICAgICAga2V5Ym9hcmQ6ICF0b0Jvb2xlYW4obW9kYWwpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXhwbGljaXRDb250ZXh0XG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuYXBwID0gYXBwO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRUZW1wbGF0ZVJlZigpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlhbG9nVGVtcGxhdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xpY2sgZXZlbnQgaGFuZGxlciBmb3IgdGhlIG9rIGJ1dHRvblxuICAgICAqIGludm9rZXMgb24tb2sgZXZlbnQgY2FsbGJhY2tcbiAgICAgKiBAcGFyYW0ge0V2ZW50fSAkZXZlbnRcbiAgICAgKi9cbiAgICBvbk9rKCRldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdvaycsIHsgJGV2ZW50IH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyKHRoaXMudmlld1BhcmVudCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRQYXJ0aWFsTG9hZExpc3RlbmVyKCkge1xuICAgICAgICAvLyBDbGVhbiB1cCBleGlzdGluZyBzdWJzY3JpcHRpb24gaWYgYW55XG4gICAgICAgIGlmICh0aGlzLnBhcnRpYWxMb2FkZWRTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMucGFydGlhbExvYWRlZFN1YnNjcmlwdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5wYXJ0aWFsTG9hZGVkU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucGFydGlhbExvYWRlZFN1YnNjcmlwdGlvbiA9IHRoaXMuYXBwLnN1YnNjcmliZSgncGFydGlhbExvYWRlZCcsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhckVsZSA9IHRoaXMucGFydGlhbFJlZj8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBwYXJ0aWFsU2NvcGU7XG4gICAgICAgICAgICBpZiAocGFyRWxlKSB7XG4gICAgICAgICAgICAgICAgcGFydGlhbFNjb3BlID0gcGFyRWxlLndpZGdldDtcbiAgICAgICAgICAgICAgICB0aGlzLldpZGdldHMgPSBwYXJ0aWFsU2NvcGUuV2lkZ2V0cztcbiAgICAgICAgICAgICAgICB0aGlzLlZhcmlhYmxlcyA9IHBhcnRpYWxTY29wZS5WYXJpYWJsZXM7XG4gICAgICAgICAgICAgICAgdGhpcy5BY3Rpb25zID0gcGFydGlhbFNjb3BlLkFjdGlvbnM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIENsZWFuIHVwIHN1YnNjcmlwdGlvbiBhZnRlciB1c2VcbiAgICAgICAgICAgIGlmICh0aGlzLnBhcnRpYWxMb2FkZWRTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhcnRpYWxMb2FkZWRTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBhcnRpYWxMb2FkZWRTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3Blbihpbml0U3RhdGU/OiBhbnkpIHtcbiAgICAgICAgc3VwZXIub3Blbihpbml0U3RhdGUpO1xuICAgICAgICAvLyBXTVMtMTk0MTAgLSBTZXQgdGhlIHBhcnRpYWwgbG9hZCBsaXN0ZW5lciB0byBhY2Nlc3Mgd2lkZ2V0cywgdmFyaWFibGVzIGFuZCBhY3Rpb25zIG9mIHBhZ2UgZGlhbG9nXG4gICAgICAgIHRoaXMuc2V0UGFydGlhbExvYWRMaXN0ZW5lcigpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IFVuc3Vic2NyaWJlIGZyb20gcGFydGlhbExvYWRlZCBldmVudFxuICAgICAgICBpZiAodGhpcy5wYXJ0aWFsTG9hZGVkU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnBhcnRpYWxMb2FkZWRTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgICAgIHRoaXMucGFydGlhbExvYWRlZFN1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IENsZWFyIENvbnRlbnRDaGlsZCByZWZlcmVuY2VzXG4gICAgICAgIHRoaXMucGFydGlhbFJlZiA9IG51bGw7XG4gICAgICAgIHRoaXMuZGlhbG9nQ29udGVudCA9IG51bGw7XG5cbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI2RpYWxvZ1RlbXBsYXRlPlxuICA8ZGl2IHdtRGlhbG9nSGVhZGVyIFtjbG9zYWJsZV09XCJjbG9zYWJsZVwiXG4gICAgW2ljb25jbGFzc109XCJpY29uY2xhc3NcIlxuICAgIFtpY29udXJsXT1cImljb251cmxcIlxuICAgIFtpY29ud2lkdGhdPVwiaWNvbndpZHRoXCJcbiAgICBbaWNvbmhlaWdodF09XCJpY29uaGVpZ2h0XCJcbiAgICBbaWNvbm1hcmdpbl09XCJpY29ubWFyZ2luXCJcbiAgICBbaGVhZGluZ109XCJ0aXRsZVwiXG4gICAgW2hlYWRpbmdsZXZlbF09XCJoZWFkaW5nbGV2ZWxcIlxuICAgIFt0aXRsZV09XCJ0aXRsZVwiXG4gICAgW3RpdGxlaWRdPVwidGl0bGVJZFwiXG4gID48L2Rpdj5cbiAgPGRpdiB3bURpYWxvZ0JvZHk+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRpYWxvZ0NvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIEBpZiAoc2hvd2FjdGlvbnMpIHtcbiAgICA8ZGl2IHdtRGlhbG9nRm9vdGVyPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25PaygkZXZlbnQpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJva3RleHRcIiBjYXB0aW9uLmJpbmQ9XCJva3RleHRcIiBjbGFzcz1cImJ0bi1wcmltYXJ5IG9rLWFjdGlvblwiXG4gICAgICB3bUJ1dHRvbj48L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -64,8 +64,13 @@ class PartialDialogComponent extends BaseDialog {
64
64
  this.register(this.viewParent);
65
65
  }
66
66
  setPartialLoadListener() {
67
- const cancelSubscription = this.app.subscribe('partialLoaded', () => {
68
- const parEle = this.partialRef.nativeElement;
67
+ // Clean up existing subscription if any
68
+ if (this.partialLoadedSubscription) {
69
+ this.partialLoadedSubscription();
70
+ this.partialLoadedSubscription = null;
71
+ }
72
+ this.partialLoadedSubscription = this.app.subscribe('partialLoaded', () => {
73
+ const parEle = this.partialRef?.nativeElement;
69
74
  let partialScope;
70
75
  if (parEle) {
71
76
  partialScope = parEle.widget;
@@ -73,7 +78,11 @@ class PartialDialogComponent extends BaseDialog {
73
78
  this.Variables = partialScope.Variables;
74
79
  this.Actions = partialScope.Actions;
75
80
  }
76
- cancelSubscription();
81
+ // Clean up subscription after use
82
+ if (this.partialLoadedSubscription) {
83
+ this.partialLoadedSubscription();
84
+ this.partialLoadedSubscription = null;
85
+ }
77
86
  });
78
87
  }
79
88
  open(initState) {
@@ -81,6 +90,17 @@ class PartialDialogComponent extends BaseDialog {
81
90
  // WMS-19410 - Set the partial load listener to access widgets, variables and actions of page dialog
82
91
  this.setPartialLoadListener();
83
92
  }
93
+ ngOnDestroy() {
94
+ // MEMORY LEAK FIX: Unsubscribe from partialLoaded event
95
+ if (this.partialLoadedSubscription) {
96
+ this.partialLoadedSubscription();
97
+ this.partialLoadedSubscription = null;
98
+ }
99
+ // MEMORY LEAK FIX: Clear ContentChild references
100
+ this.partialRef = null;
101
+ this.dialogContent = null;
102
+ super.ngOnDestroy();
103
+ }
84
104
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PartialDialogComponent, deps: [{ token: i0.Injector }, { token: i1.App }, { token: 'class', attribute: true }, { token: 'modal', attribute: true }, { token: 'closable', attribute: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
85
105
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PartialDialogComponent, isStandalone: true, selector: "div[wmPartialDialog]", providers: [
86
106
  provideAsWidgetRef(PartialDialogComponent),
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/dialogs/partial-dialog/src/partial-dialog.props.ts","../../../../../projects/components/widgets/dialogs/partial-dialog/src/partial-dialog.component.ts","../../../../../projects/components/widgets/dialogs/partial-dialog/src/partial-dialog.component.html","../../../../../projects/components/widgets/dialogs/partial-dialog/src/index.ts"],"sourcesContent":["import { PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-partialdialog',\n new Map(\n [\n ['animation', PROP_STRING],\n ['class', PROP_STRING],\n ['closable', {value: true, PROP_BOOLEAN}],\n ['content', PROP_STRING],\n ['iconclass', {value: 'wi wi-file', PROP_STRING}],\n ['iconheight', PROP_STRING],\n ['iconmargin', PROP_STRING],\n ['iconurl', PROP_STRING],\n ['iconwidth', PROP_STRING],\n ['modal', {value: false, ...PROP_BOOLEAN}],\n ['name', PROP_STRING],\n ['oktext', {value: 'OK', ...PROP_STRING}],\n ['showactions', {value: true, ...PROP_BOOLEAN}],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['headinglevel', {value: 'h4', ...PROP_STRING}],\n ['title', {value: 'Page Content', ...PROP_STRING}]\n ]\n )\n );\n};\n","import {\n Attribute,\n Component,\n ContentChild,\n Inject,\n Injector,\n OnInit,\n Optional,\n TemplateRef,\n ViewChild\n} from '@angular/core';\n\nimport { App, toBoolean } from '@wm/core';\nimport { provideAsDialogRef, provideAsWidgetRef } from '@wm/components/base';\nimport { BaseDialog, DialogBodyDirective, DialogFooterDirective, DialogHeaderComponent } from '@wm/components/dialogs';\n\nimport { registerProps } from './partial-dialog.props';\nimport { ButtonComponent } from '@wm/components/input/button';\nimport { NgTemplateOutlet } from '@angular/common';\n\nconst DIALOG_CLS = 'app-dialog modal-dialog app-page-dialog';\nconst WIDGET_INFO = { widgetType: 'wm-partialdialog' };\n\n@Component({\n standalone: true,\n imports: [DialogBodyDirective, DialogFooterDirective, DialogHeaderComponent, ButtonComponent, NgTemplateOutlet],\n selector: 'div[wmPartialDialog]',\n templateUrl: './partial-dialog.component.html',\n providers: [\n provideAsWidgetRef(PartialDialogComponent),\n provideAsDialogRef(PartialDialogComponent)\n ]\n})\nexport class PartialDialogComponent extends BaseDialog implements OnInit {\n static initializeProps = registerProps();\n @ViewChild('dialogTemplate', { static: true }) dialogTemplate: TemplateRef<any>;\n @ContentChild(TemplateRef) dialogContent: TemplateRef<any>;\n @ContentChild('partial') partialRef;\n\n protected app;\n protected Widgets;\n protected Variables;\n protected Actions;\n\n constructor(\n inj: Injector,\n app: App,\n @Attribute('class') dialogClass: string,\n @Attribute('modal') modal: string | boolean,\n @Attribute('closable') closable: string | boolean,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n if (modal === null || modal === undefined) {\n modal = false;\n }\n\n if (closable === null || closable === undefined) {\n closable = true;\n }\n\n // setting the backdrop to 'static' will not close the dialog on backdrop click\n const backdrop: boolean | 'static' = toBoolean(modal) ? 'static' : true;\n\n super(\n inj,\n WIDGET_INFO,\n {\n class: `${DIALOG_CLS} ${dialogClass || ''}`,\n backdrop,\n keyboard: !toBoolean(modal)\n },\n explicitContext\n );\n this.app = app;\n }\n\n protected getTemplateRef(): TemplateRef<any> {\n return this.dialogTemplate;\n }\n\n /**\n * Click event handler for the ok button\n * invokes on-ok event callback\n * @param {Event} $event\n */\n onOk($event: Event) {\n this.invokeEventCallback('ok', { $event });\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.register(this.viewParent);\n }\n\n private setPartialLoadListener() {\n const cancelSubscription = this.app.subscribe('partialLoaded', () => {\n const parEle = this.partialRef.nativeElement;\n let partialScope;\n if (parEle) {\n partialScope = parEle.widget;\n this.Widgets = partialScope.Widgets;\n this.Variables = partialScope.Variables;\n this.Actions = partialScope.Actions;\n }\n cancelSubscription();\n });\n }\n\n public open(initState?: any) {\n super.open(initState);\n // WMS-19410 - Set the partial load listener to access widgets, variables and actions of page dialog\n this.setPartialLoadListener();\n }\n}\n","<ng-template #dialogTemplate>\n <div wmDialogHeader [closable]=\"closable\"\n [iconclass]=\"iconclass\"\n [iconurl]=\"iconurl\"\n [iconwidth]=\"iconwidth\"\n [iconheight]=\"iconheight\"\n [iconmargin]=\"iconmargin\"\n [heading]=\"title\"\n [headinglevel]=\"headinglevel\"\n [title]=\"title\"\n [titleid]=\"titleId\"\n ></div>\n <div wmDialogBody>\n <ng-container *ngTemplateOutlet=\"dialogContent\"></ng-container>\n </div>\n @if (showactions) {\n <div wmDialogFooter>\n <button (click)=\"onOk($event)\" [attr.aria-label]=\"oktext\" caption.bind=\"oktext\" class=\"btn-primary ok-action\"\n wmButton></button>\n </div>\n }\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/dialogs/partial-dialog/src/partial-dialog.props.ts","../../../../../projects/components/widgets/dialogs/partial-dialog/src/partial-dialog.component.ts","../../../../../projects/components/widgets/dialogs/partial-dialog/src/partial-dialog.component.html","../../../../../projects/components/widgets/dialogs/partial-dialog/src/index.ts"],"sourcesContent":["import { PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-partialdialog',\n new Map(\n [\n ['animation', PROP_STRING],\n ['class', PROP_STRING],\n ['closable', {value: true, PROP_BOOLEAN}],\n ['content', PROP_STRING],\n ['iconclass', {value: 'wi wi-file', PROP_STRING}],\n ['iconheight', PROP_STRING],\n ['iconmargin', PROP_STRING],\n ['iconurl', PROP_STRING],\n ['iconwidth', PROP_STRING],\n ['modal', {value: false, ...PROP_BOOLEAN}],\n ['name', PROP_STRING],\n ['oktext', {value: 'OK', ...PROP_STRING}],\n ['showactions', {value: true, ...PROP_BOOLEAN}],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['headinglevel', {value: 'h4', ...PROP_STRING}],\n ['title', {value: 'Page Content', ...PROP_STRING}]\n ]\n )\n );\n};\n","import {\n Attribute,\n Component,\n ContentChild,\n Inject,\n Injector,\n OnInit,\n OnDestroy,\n Optional,\n TemplateRef,\n ViewChild\n} from '@angular/core';\n\nimport { App, toBoolean } from '@wm/core';\nimport { provideAsDialogRef, provideAsWidgetRef } from '@wm/components/base';\nimport { BaseDialog, DialogBodyDirective, DialogFooterDirective, DialogHeaderComponent } from '@wm/components/dialogs';\n\nimport { registerProps } from './partial-dialog.props';\nimport { ButtonComponent } from '@wm/components/input/button';\nimport { NgTemplateOutlet } from '@angular/common';\n\nconst DIALOG_CLS = 'app-dialog modal-dialog app-page-dialog';\nconst WIDGET_INFO = { widgetType: 'wm-partialdialog' };\n\n@Component({\n standalone: true,\n imports: [DialogBodyDirective, DialogFooterDirective, DialogHeaderComponent, ButtonComponent, NgTemplateOutlet],\n selector: 'div[wmPartialDialog]',\n templateUrl: './partial-dialog.component.html',\n providers: [\n provideAsWidgetRef(PartialDialogComponent),\n provideAsDialogRef(PartialDialogComponent)\n ]\n})\nexport class PartialDialogComponent extends BaseDialog implements OnInit, OnDestroy {\n static initializeProps = registerProps();\n @ViewChild('dialogTemplate', { static: true }) dialogTemplate: TemplateRef<any>;\n @ContentChild(TemplateRef) dialogContent: TemplateRef<any>;\n @ContentChild('partial') partialRef;\n\n protected app;\n protected Widgets;\n protected Variables;\n protected Actions;\n private partialLoadedSubscription: any;\n\n constructor(\n inj: Injector,\n app: App,\n @Attribute('class') dialogClass: string,\n @Attribute('modal') modal: string | boolean,\n @Attribute('closable') closable: string | boolean,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n if (modal === null || modal === undefined) {\n modal = false;\n }\n\n if (closable === null || closable === undefined) {\n closable = true;\n }\n\n // setting the backdrop to 'static' will not close the dialog on backdrop click\n const backdrop: boolean | 'static' = toBoolean(modal) ? 'static' : true;\n\n super(\n inj,\n WIDGET_INFO,\n {\n class: `${DIALOG_CLS} ${dialogClass || ''}`,\n backdrop,\n keyboard: !toBoolean(modal)\n },\n explicitContext\n );\n this.app = app;\n }\n\n protected getTemplateRef(): TemplateRef<any> {\n return this.dialogTemplate;\n }\n\n /**\n * Click event handler for the ok button\n * invokes on-ok event callback\n * @param {Event} $event\n */\n onOk($event: Event) {\n this.invokeEventCallback('ok', { $event });\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.register(this.viewParent);\n }\n\n private setPartialLoadListener() {\n // Clean up existing subscription if any\n if (this.partialLoadedSubscription) {\n this.partialLoadedSubscription();\n this.partialLoadedSubscription = null;\n }\n\n this.partialLoadedSubscription = this.app.subscribe('partialLoaded', () => {\n const parEle = this.partialRef?.nativeElement;\n let partialScope;\n if (parEle) {\n partialScope = parEle.widget;\n this.Widgets = partialScope.Widgets;\n this.Variables = partialScope.Variables;\n this.Actions = partialScope.Actions;\n }\n\n // Clean up subscription after use\n if (this.partialLoadedSubscription) {\n this.partialLoadedSubscription();\n this.partialLoadedSubscription = null;\n }\n });\n }\n\n public open(initState?: any) {\n super.open(initState);\n // WMS-19410 - Set the partial load listener to access widgets, variables and actions of page dialog\n this.setPartialLoadListener();\n }\n\n ngOnDestroy() {\n // MEMORY LEAK FIX: Unsubscribe from partialLoaded event\n if (this.partialLoadedSubscription) {\n this.partialLoadedSubscription();\n this.partialLoadedSubscription = null;\n }\n\n // MEMORY LEAK FIX: Clear ContentChild references\n this.partialRef = null;\n this.dialogContent = null;\n\n super.ngOnDestroy();\n }\n}\n","<ng-template #dialogTemplate>\n <div wmDialogHeader [closable]=\"closable\"\n [iconclass]=\"iconclass\"\n [iconurl]=\"iconurl\"\n [iconwidth]=\"iconwidth\"\n [iconheight]=\"iconheight\"\n [iconmargin]=\"iconmargin\"\n [heading]=\"title\"\n [headinglevel]=\"headinglevel\"\n [title]=\"title\"\n [titleid]=\"titleId\"\n ></div>\n <div wmDialogBody>\n <ng-container *ngTemplateOutlet=\"dialogContent\"></ng-container>\n </div>\n @if (showactions) {\n <div wmDialogFooter>\n <button (click)=\"onOk($event)\" [attr.aria-label]=\"oktext\" caption.bind=\"oktext\" class=\"btn-primary ok-action\"\n wmButton></button>\n </div>\n }\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { Injector, OnInit, TemplateRef } from '@angular/core';
1
+ import { Injector, OnInit, OnDestroy, TemplateRef } from '@angular/core';
2
2
  import { App } from '@wm/core';
3
3
  import { BaseDialog } from '@wm/components/dialogs';
4
4
  import * as i0 from "@angular/core";
5
- export declare class PartialDialogComponent extends BaseDialog implements OnInit {
5
+ export declare class PartialDialogComponent extends BaseDialog implements OnInit, OnDestroy {
6
6
  static initializeProps: void;
7
7
  dialogTemplate: TemplateRef<any>;
8
8
  dialogContent: TemplateRef<any>;
@@ -11,6 +11,7 @@ export declare class PartialDialogComponent extends BaseDialog implements OnInit
11
11
  protected Widgets: any;
12
12
  protected Variables: any;
13
13
  protected Actions: any;
14
+ private partialLoadedSubscription;
14
15
  constructor(inj: Injector, app: App, dialogClass: string, modal: string | boolean, closable: string | boolean, explicitContext: any);
15
16
  protected getTemplateRef(): TemplateRef<any>;
16
17
  /**
@@ -22,6 +23,7 @@ export declare class PartialDialogComponent extends BaseDialog implements OnInit
22
23
  ngOnInit(): void;
23
24
  private setPartialLoadListener;
24
25
  open(initState?: any): void;
26
+ ngOnDestroy(): void;
25
27
  static ɵfac: i0.ɵɵFactoryDeclaration<PartialDialogComponent, [null, null, { attribute: "class"; }, { attribute: "modal"; }, { attribute: "closable"; }, { optional: true; }]>;
26
28
  static ɵcmp: i0.ɵɵComponentDeclaration<PartialDialogComponent, "div[wmPartialDialog]", never, {}, {}, ["dialogContent", "partialRef"], never, true, never>;
27
29
  }
@@ -1,7 +1,7 @@
1
- import { AfterViewInit, Injector } from '@angular/core';
1
+ import { AfterViewInit, Injector, OnDestroy } from '@angular/core';
2
2
  import { IWidgetConfig, StylableComponent } from '@wm/components/base';
3
3
  import * as i0 from "@angular/core";
4
- export declare abstract class BaseFormComponent extends StylableComponent implements AfterViewInit {
4
+ export declare abstract class BaseFormComponent extends StylableComponent implements AfterViewInit, OnDestroy {
5
5
  protected inj: Injector;
6
6
  private dataval;
7
7
  private prevDatavalue;
@@ -18,7 +18,9 @@ export declare abstract class BaseFormComponent extends StylableComponent implem
18
18
  protected invokeOnChange(value: any, $event?: Event): void;
19
19
  protected updatePrevDatavalue(val: any): void;
20
20
  protected getPrevDataValue(): any;
21
+ private boundKeydownHandler;
21
22
  ngAfterViewInit(): void;
23
+ ngOnDestroy(): void;
22
24
  static ɵfac: i0.ɵɵFactoryDeclaration<BaseFormComponent, [null, null, { optional: true; }, null]>;
23
25
  static ɵprov: i0.ɵɵInjectableDeclaration<BaseFormComponent>;
24
26
  }
@@ -106,13 +106,27 @@
106
106
  // [WMS-18892]- stopping event propagation [for ArrowLeft, ArrowUp, ArrowRight, ArrowDown actions] when form widgets or form is inside list widget
107
107
  let parentElemList = $(this.nativeElement).parents();
108
108
  if (parentElemList.closest('[wmList]').length) {
109
- this.$element.keydown(function ($event) {
109
+ // MEMORY LEAK FIX: Store bound function reference for cleanup
110
+ this.boundKeydownHandler = function ($event) {
110
111
  if ($event.keyCode === 37 || $event.keyCode === 38 || $event.keyCode === 39 || $event.keyCode === 40) {
111
112
  $event.stopPropagation();
112
113
  }
113
- });
114
+ };
115
+ this.$element.keydown(this.boundKeydownHandler);
114
116
  }
115
117
  }
118
+ ngOnDestroy() {
119
+ // MEMORY LEAK FIX: Remove jQuery event listener
120
+ if (this.boundKeydownHandler) {
121
+ this.$element.off('keydown', this.boundKeydownHandler);
122
+ this.boundKeydownHandler = null;
123
+ }
124
+ // MEMORY LEAK FIX: Clear references
125
+ this.prevDatavalue = null;
126
+ this.datavaluesource = null;
127
+ this.binddatavalue = null;
128
+ super.ngOnDestroy();
129
+ }
116
130
  static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: BaseFormComponent, deps: [{ token: i0__namespace.Injector }, { token: base.WidgetConfig }, { token: 'EXPLICIT_CONTEXT', optional: true }, { token: Promise }], target: i0__namespace.ɵɵFactoryTarget.Injectable }); }
117
131
  static { this.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: BaseFormComponent }); }
118
132
  }
@@ -86,13 +86,27 @@ export class BaseFormComponent extends StylableComponent {
86
86
  // [WMS-18892]- stopping event propagation [for ArrowLeft, ArrowUp, ArrowRight, ArrowDown actions] when form widgets or form is inside list widget
87
87
  let parentElemList = $(this.nativeElement).parents();
88
88
  if (parentElemList.closest('[wmList]').length) {
89
- this.$element.keydown(function ($event) {
89
+ // MEMORY LEAK FIX: Store bound function reference for cleanup
90
+ this.boundKeydownHandler = function ($event) {
90
91
  if ($event.keyCode === 37 || $event.keyCode === 38 || $event.keyCode === 39 || $event.keyCode === 40) {
91
92
  $event.stopPropagation();
92
93
  }
93
- });
94
+ };
95
+ this.$element.keydown(this.boundKeydownHandler);
94
96
  }
95
97
  }
98
+ ngOnDestroy() {
99
+ // MEMORY LEAK FIX: Remove jQuery event listener
100
+ if (this.boundKeydownHandler) {
101
+ this.$element.off('keydown', this.boundKeydownHandler);
102
+ this.boundKeydownHandler = null;
103
+ }
104
+ // MEMORY LEAK FIX: Clear references
105
+ this.prevDatavalue = null;
106
+ this.datavaluesource = null;
107
+ this.binddatavalue = null;
108
+ super.ngOnDestroy();
109
+ }
96
110
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseFormComponent, deps: [{ token: i0.Injector }, { token: WidgetConfig }, { token: 'EXPLICIT_CONTEXT', optional: true }, { token: Promise }], target: i0.ɵɵFactoryTarget.Injectable }); }
97
111
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseFormComponent }); }
98
112
  }
@@ -107,4 +121,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
107
121
  }, {
108
122
  type: Optional
109
123
  }] }, { type: Promise }] });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9iYXNlLWZvcm0vc3JjL2Jhc2UtZm9ybS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUVwQyxPQUFPLEVBQWdCLGlCQUFpQixFQUFFLFlBQVksRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ25GLE9BQU8sRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLE1BQU0sV0FBVyxDQUFDOztBQUduQyxNQUFNLE9BQWdCLGlCQUFrQixTQUFRLGlCQUFpQjtJQU83RCxZQUNjLEdBQWEsRUFDRCxNQUFxQixFQUNILGVBQW9CLEVBQzVELFdBQTBCO1FBRTFCLEtBQUssQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUx2QyxRQUFHLEdBQUgsR0FBRyxDQUFVO1FBTXZCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsU0FBUztRQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxtQkFBbUIsQ0FBQyxLQUFLO1FBQ3JCLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFFdkMsOENBQThDO1FBQzlDLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDMUYsT0FBTztRQUNYLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ2pFLE9BQU87UUFDZixDQUFDO1FBRUQsNkJBQTZCO1FBQzdCLElBQUksQ0FBQyxhQUFhLElBQUksYUFBYSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxhQUFhLENBQUMsVUFBVSxDQUFDLDRCQUE0QixDQUFDLEVBQUUsQ0FBQztZQUNuSCxPQUFPO1FBQ1gsQ0FBQztRQUVELGFBQWEsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6RCxhQUFhLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FDakMsWUFBWSxFQUNaLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ1osSUFBSSxDQUFDO2dCQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDN0MsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtvQkFDekQsT0FBTyxJQUFJLEtBQUssR0FBRyxDQUFDOztvQkFFcEIsT0FBTyxLQUFLLENBQUE7WUFDakIsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDTCxPQUFPLEtBQUssQ0FBQyxDQUFDLCtCQUErQjtZQUNqRCxDQUFDO1FBQ0wsQ0FBQyxDQUNKLENBQUM7UUFHRix1REFBdUQ7UUFDdkQsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUNyRixHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUNELG1GQUFtRjthQUM5RSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFLFNBQVMsRUFBRSxDQUFDO1lBQ3pGLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQyxDQUFDO2FBQU0sSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUN2RixHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDL0MsQ0FBQzthQUFNLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLGFBQWEsQ0FBQyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsS0FBSyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzNGLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNMLENBQUM7SUFFUyxjQUFjLENBQUMsS0FBSyxFQUFFLE1BQWM7UUFDMUMsNEJBQTRCO1FBQzVCLElBQUksTUFBTSxFQUFFLENBQUM7WUFDVCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN4QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUU7b0JBQy9CLE1BQU07b0JBQ04sTUFBTSxFQUFFLEtBQUs7b0JBQ2IsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhO2lCQUM3QixDQUFDLENBQUM7WUFDUCxDQUFDO1FBQ0wsQ0FBQztRQUNELDRCQUE0QjtRQUM1QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBRVMsbUJBQW1CLENBQUMsR0FBUTtRQUNsQyxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQztJQUM3QixDQUFDO0lBQ1MsZ0JBQWdCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBRUQsZUFBZTtRQUNYLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUVoQyxtSkFBbUo7UUFDM0ksSUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNyRCxJQUFJLGNBQWMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBUyxNQUFNO2dCQUNqQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssRUFBRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssRUFBRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssRUFBRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssRUFBRSxFQUFFLENBQUM7b0JBQ25HLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDN0IsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7K0dBOUdpQixpQkFBaUIsMENBU3ZCLFlBQVksYUFDWixrQkFBa0I7bUhBVlosaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUR0QyxVQUFVOzswQkFVRixNQUFNOzJCQUFDLFlBQVk7OzBCQUNuQixNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0RhdGFTb3VyY2V9IGZyb20gJ0B3bS9jb3JlJztcblxuaW1wb3J0IHtJV2lkZ2V0Q29uZmlnLCBTdHlsYWJsZUNvbXBvbmVudCwgV2lkZ2V0Q29uZmlnfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7aGFzLCBzZXR9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VGb3JtQ29tcG9uZW50IGV4dGVuZHMgU3R5bGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0e1xuXG4gICAgcHJpdmF0ZSBkYXRhdmFsO1xuICAgIHByaXZhdGUgcHJldkRhdGF2YWx1ZTtcbiAgICBwcm90ZWN0ZWQgYmluZGRhdGF2YWx1ZTogc3RyaW5nO1xuICAgIHByaXZhdGUgZGF0YXZhbHVlc291cmNlOiBhbnk7XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBpbmo6IEluamVjdG9yLFxuICAgICAgICBASW5qZWN0KFdpZGdldENvbmZpZykgY29uZmlnOiBJV2lkZ2V0Q29uZmlnLFxuICAgICAgICBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnksXG4gICAgICAgIGluaXRQcm9taXNlPzogUHJvbWlzZTxhbnk+XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluaiwgY29uZmlnLCBleHBsaWNpdENvbnRleHQsIGluaXRQcm9taXNlKTtcbiAgICAgICAgdGhpcy5iaW5kZGF0YXZhbHVlID0gdGhpcy4kZWxlbWVudC5hdHRyKCdkYXRhdmFsdWUuYmluZCcpO1xuICAgIH1cblxuICAgIHNldCBkYXRhdmFsdWUoZGF0YXZhbHVlKSB7XG4gICAgICAgIHRoaXMuZGF0YXZhbCA9IGRhdGF2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgZGF0YXZhbHVlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhdmFsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlc3BvbnNpYmxlIGZvciB1cGRhdGluZyB0aGUgdmFyaWFibGUgYm91bmQgdG8gdGhlIHdpZGdldCdzIGRhdGF2YWx1ZSBwcm9wZXJ0eS5cbiAgICAgKiBAcGFyYW0gdmFsdWVcbiAgICAgKi9cbiAgICB1cGRhdGVCb3VuZFZhcmlhYmxlKHZhbHVlKSB7XG4gICAgICAgIGxldCBiaW5kZGF0YXZhbHVlID0gdGhpcy5iaW5kZGF0YXZhbHVlO1xuXG4gICAgICAgIC8vIHJldHVybiBpZiB0aGUgdmFyaWFibGUgYm91bmQgaXMgbm90IHN0YXRpYy5cbiAgICAgICAgaWYgKHRoaXMuZGF0YXZhbHVlc291cmNlICYmIHRoaXMuZGF0YXZhbHVlc291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uSVNfQVBJX0FXQVJFKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGF0YXZhbHVlc291cmNlICYmICF0aGlzLmRhdGF2YWx1ZXNvdXJjZS50d29XYXlCaW5kaW5nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmV0dXJuIGlmIHdpZGdldCBpcyBib3VuZC5cbiAgICAgICAgaWYgKCFiaW5kZGF0YXZhbHVlIHx8IGJpbmRkYXRhdmFsdWUuc3RhcnRzV2l0aCgnV2lkZ2V0cy4nKSB8fCBiaW5kZGF0YXZhbHVlLnN0YXJ0c1dpdGgoJ2l0ZW1SZWYuY3VycmVudEl0ZW1XaWRnZXRzJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGJpbmRkYXRhdmFsdWUgPSBiaW5kZGF0YXZhbHVlLnJlcGxhY2UoL1xcW1xcJGlcXF0vZywgJ1swXScpO1xuICAgICAgICBiaW5kZGF0YXZhbHVlID0gYmluZGRhdGF2YWx1ZS5yZXBsYWNlKFxuICAgICAgICAgICAgL1xcWyguKj8pXFxdL2csXG4gICAgICAgICAgICAoX21hdGNoLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGV2YWwoYHRoaXMudmlld1BhcmVudC4ke2tleX1gKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJylcbiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgWyR7dmFsdWV9XWA7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnWzBdJ1xuICAgICAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1swXSc7IC8vIGZhbGxiYWNrIGlmIGV2YWx1YXRpb24gZmFpbHNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cblxuICAgICAgICAvLyBJbiBjYXNlIG9mIGxpc3Qgd2lkZ2V0IGNvbnRleHQgd2lsbCBiZSB0aGUgbGlzdEl0ZW0uXG4gICAgICAgIGlmIChoYXModGhpcy5jb250ZXh0LCBiaW5kZGF0YXZhbHVlLnNwbGl0KCcuJylbMF0pICYmIGhhcyh0aGlzLmNvbnRleHQsIGJpbmRkYXRhdmFsdWUpKSB7XG4gICAgICAgICAgICBzZXQodGhpcy5jb250ZXh0LCBiaW5kZGF0YXZhbHVlLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUGFyZW50IHdpZGdldCBtdXN0IHVwZGF0ZSBvbiBjdXN0b20gd2lkZ2V0IGRhdGF2YWx1ZSBjaGFuZ2UgZm9yIGJpbmRpbmdzIHRvIHdvcmtcbiAgICAgICAgZWxzZSBpZiAoaGFzKHRoaXMudmlld1BhcmVudCwgYmluZGRhdGF2YWx1ZSkgJiYgdGhpcy52aWV3UGFyZW50LmNvbnRhaW5lcldpZGdldD8uX2lzQ3VzdG9tKSB7XG4gICAgICAgICAgICBzZXQodGhpcy52aWV3UGFyZW50LCBiaW5kZGF0YXZhbHVlLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaGFzKHRoaXMudmlld1BhcmVudCwgYmluZGRhdGF2YWx1ZSkgJiYgdGhpcy5kYXRhdmFsdWVzb3VyY2U/Lm93bmVyID09PSBcIlBhZ2VcIikge1xuICAgICAgICAgICAgc2V0KHRoaXMudmlld1BhcmVudCwgYmluZGRhdGF2YWx1ZSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGhhcyh0aGlzLnZpZXdQYXJlbnQ/LkFwcCwgYmluZGRhdGF2YWx1ZSkgJiYgdGhpcy5kYXRhdmFsdWVzb3VyY2U/Lm93bmVyID09PSBcIkFwcFwiKSB7XG4gICAgICAgICAgICBzZXQodGhpcy52aWV3UGFyZW50LkFwcCwgYmluZGRhdGF2YWx1ZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGludm9rZU9uQ2hhbmdlKHZhbHVlLCAkZXZlbnQ/OiBFdmVudCkge1xuICAgICAgICAvLyBpbnZva2UgdGhlIGV2ZW50IGNhbGxiYWNrXG4gICAgICAgIGlmICgkZXZlbnQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGF2YWx1ZSAhPT0gdGhpcy5wcmV2RGF0YXZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVCb3VuZFZhcmlhYmxlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2NoYW5nZScsIHtcbiAgICAgICAgICAgICAgICAgICAgJGV2ZW50LFxuICAgICAgICAgICAgICAgICAgICBuZXdWYWw6IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBvbGRWYWw6IHRoaXMucHJldkRhdGF2YWx1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIHVwZGF0ZSB0aGUgcHJldmlvdXMgdmFsdWVcbiAgICAgICAgdGhpcy5wcmV2RGF0YXZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHVwZGF0ZVByZXZEYXRhdmFsdWUodmFsOiBhbnkpIHtcbiAgICAgICAgdGhpcy5wcmV2RGF0YXZhbHVlID0gdmFsO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgZ2V0UHJldkRhdGFWYWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJldkRhdGF2YWx1ZTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuXG4vLyBbV01TLTE4ODkyXS0gc3RvcHBpbmcgZXZlbnQgcHJvcGFnYXRpb24gW2ZvciBBcnJvd0xlZnQsIEFycm93VXAsIEFycm93UmlnaHQsIEFycm93RG93biBhY3Rpb25zXSAgd2hlbiBmb3JtIHdpZGdldHMgb3IgZm9ybSBpcyBpbnNpZGUgbGlzdCB3aWRnZXRcbiAgICAgICAgbGV0IHBhcmVudEVsZW1MaXN0ID0gJCh0aGlzLm5hdGl2ZUVsZW1lbnQpLnBhcmVudHMoKTtcbiAgICAgICAgaWYgKHBhcmVudEVsZW1MaXN0LmNsb3Nlc3QoJ1t3bUxpc3RdJykubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLiRlbGVtZW50LmtleWRvd24oZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKCRldmVudC5rZXlDb2RlID09PSAzNyB8fCAkZXZlbnQua2V5Q29kZSA9PT0gMzggfHwgJGV2ZW50LmtleUNvZGUgPT09IDM5IHx8ICRldmVudC5rZXlDb2RlID09PSA0MCkge1xuICAgICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9iYXNlLWZvcm0vc3JjL2Jhc2UtZm9ybS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBYSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFL0YsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUVwQyxPQUFPLEVBQWdCLGlCQUFpQixFQUFFLFlBQVksRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ25GLE9BQU8sRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLE1BQU0sV0FBVyxDQUFDOztBQUduQyxNQUFNLE9BQWdCLGlCQUFrQixTQUFRLGlCQUFpQjtJQU83RCxZQUNjLEdBQWEsRUFDRCxNQUFxQixFQUNILGVBQW9CLEVBQzVELFdBQTBCO1FBRTFCLEtBQUssQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUx2QyxRQUFHLEdBQUgsR0FBRyxDQUFVO1FBTXZCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsU0FBUztRQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxtQkFBbUIsQ0FBQyxLQUFLO1FBQ3JCLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFFdkMsOENBQThDO1FBQzlDLElBQUksSUFBSSxDQUFDLGVB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QUM7UUFDcEMsQ0FBQztRQUVELG9DQUFvQztRQUNwQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUUxQixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEIsQ0FBQzsrR0FqSWlCLGlCQUFpQiwwQ0FTdkIsWUFBWSxhQUNaLGtCQUFrQjttSEFWWixpQkFBaUI7OzRGQUFqQixpQkFBaUI7a0JBRHRDLFVBQVU7OzBCQVVGLE1BQU07MkJBQUMsWUFBWTs7MEJBQ25CLE1BQU07MkJBQUMsa0JBQWtCOzswQkFBRyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtEYXRhU291cmNlfSBmcm9tICdAd20vY29yZSc7XG5cbmltcG9ydCB7SVdpZGdldENvbmZpZywgU3R5bGFibGVDb21wb25lbnQsIFdpZGdldENvbmZpZ30gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQge2hhcywgc2V0fSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRm9ybUNvbXBvbmVudCBleHRlbmRzIFN0eWxhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICAgIHByaXZhdGUgZGF0YXZhbDtcbiAgICBwcml2YXRlIHByZXZEYXRhdmFsdWU7XG4gICAgcHJvdGVjdGVkIGJpbmRkYXRhdmFsdWU6IHN0cmluZztcbiAgICBwcml2YXRlIGRhdGF2YWx1ZXNvdXJjZTogYW55O1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgaW5qOiBJbmplY3RvcixcbiAgICAgICAgQEluamVjdChXaWRnZXRDb25maWcpIGNvbmZpZzogSVdpZGdldENvbmZpZyxcbiAgICAgICAgQEluamVjdCgnRVhQTElDSVRfQ09OVEVYVCcpIEBPcHRpb25hbCgpIGV4cGxpY2l0Q29udGV4dDogYW55LFxuICAgICAgICBpbml0UHJvbWlzZT86IFByb21pc2U8YW55PlxuICAgICkge1xuICAgICAgICBzdXBlcihpbmosIGNvbmZpZywgZXhwbGljaXRDb250ZXh0LCBpbml0UHJvbWlzZSk7XG4gICAgICAgIHRoaXMuYmluZGRhdGF2YWx1ZSA9IHRoaXMuJGVsZW1lbnQuYXR0cignZGF0YXZhbHVlLmJpbmQnKTtcbiAgICB9XG5cbiAgICBzZXQgZGF0YXZhbHVlKGRhdGF2YWx1ZSkge1xuICAgICAgICB0aGlzLmRhdGF2YWwgPSBkYXRhdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGRhdGF2YWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YXZhbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXNwb25zaWJsZSBmb3IgdXBkYXRpbmcgdGhlIHZhcmlhYmxlIGJvdW5kIHRvIHRoZSB3aWRnZXQncyBkYXRhdmFsdWUgcHJvcGVydHkuXG4gICAgICogQHBhcmFtIHZhbHVlXG4gICAgICovXG4gICAgdXBkYXRlQm91bmRWYXJpYWJsZSh2YWx1ZSkge1xuICAgICAgICBsZXQgYmluZGRhdGF2YWx1ZSA9IHRoaXMuYmluZGRhdGF2YWx1ZTtcblxuICAgICAgICAvLyByZXR1cm4gaWYgdGhlIHZhcmlhYmxlIGJvdW5kIGlzIG5vdCBzdGF0aWMuXG4gICAgICAgIGlmICh0aGlzLmRhdGF2YWx1ZXNvdXJjZSAmJiB0aGlzLmRhdGF2YWx1ZXNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLklTX0FQSV9BV0FSRSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhdGF2YWx1ZXNvdXJjZSAmJiAhdGhpcy5kYXRhdmFsdWVzb3VyY2UudHdvV2F5QmluZGluZykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHJldHVybiBpZiB3aWRnZXQgaXMgYm91bmQuXG4gICAgICAgIGlmICghYmluZGRhdGF2YWx1ZSB8fCBiaW5kZGF0YXZhbHVlLnN0YXJ0c1dpdGgoJ1dpZGdldHMuJykgfHwgYmluZGRhdGF2YWx1ZS5zdGFydHNXaXRoKCdpdGVtUmVmLmN1cnJlbnRJdGVtV2lkZ2V0cycpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBiaW5kZGF0YXZhbHVlID0gYmluZGRhdGF2YWx1ZS5yZXBsYWNlKC9cXFtcXCRpXFxdL2csICdbMF0nKTtcbiAgICAgICAgYmluZGRhdGF2YWx1ZSA9IGJpbmRkYXRhdmFsdWUucmVwbGFjZShcbiAgICAgICAgICAgIC9cXFsoLio/KVxcXS9nLFxuICAgICAgICAgICAgKF9tYXRjaCwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBldmFsKGB0aGlzLnZpZXdQYXJlbnQuJHtrZXl9YCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpXG4gICAgICAgICAgICAgICAgICAgICByZXR1cm4gYFske3ZhbHVlfV1gO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1swXSdcbiAgICAgICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdbMF0nOyAvLyBmYWxsYmFjayBpZiBldmFsdWF0aW9uIGZhaWxzXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG5cbiAgICAgICAgLy8gSW4gY2FzZSBvZiBsaXN0IHdpZGdldCBjb250ZXh0IHdpbGwgYmUgdGhlIGxpc3RJdGVtLlxuICAgICAgICBpZiAoaGFzKHRoaXMuY29udGV4dCwgYmluZGRhdGF2YWx1ZS5zcGxpdCgnLicpWzBdKSAmJiBoYXModGhpcy5jb250ZXh0LCBiaW5kZGF0YXZhbHVlKSkge1xuICAgICAgICAgICAgc2V0KHRoaXMuY29udGV4dCwgYmluZGRhdGF2YWx1ZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFBhcmVudCB3aWRnZXQgbXVzdCB1cGRhdGUgb24gY3VzdG9tIHdpZGdldCBkYXRhdmFsdWUgY2hhbmdlIGZvciBiaW5kaW5ncyB0byB3b3JrXG4gICAgICAgIGVsc2UgaWYgKGhhcyh0aGlzLnZpZXdQYXJlbnQsIGJpbmRkYXRhdmFsdWUpICYmIHRoaXMudmlld1BhcmVudC5jb250YWluZXJXaWRnZXQ/Ll9pc0N1c3RvbSkge1xuICAgICAgICAgICAgc2V0KHRoaXMudmlld1BhcmVudCwgYmluZGRhdGF2YWx1ZSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGhhcyh0aGlzLnZpZXdQYXJlbnQsIGJpbmRkYXRhdmFsdWUpICYmIHRoaXMuZGF0YXZhbHVlc291cmNlPy5vd25lciA9PT0gXCJQYWdlXCIpIHtcbiAgICAgICAgICAgIHNldCh0aGlzLnZpZXdQYXJlbnQsIGJpbmRkYXRhdmFsdWUsIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmIChoYXModGhpcy52aWV3UGFyZW50Py5BcHAsIGJpbmRkYXRhdmFsdWUpICYmIHRoaXMuZGF0YXZhbHVlc291cmNlPy5vd25lciA9PT0gXCJBcHBcIikge1xuICAgICAgICAgICAgc2V0KHRoaXMudmlld1BhcmVudC5BcHAsIGJpbmRkYXRhdmFsdWUsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBpbnZva2VPbkNoYW5nZSh2YWx1ZSwgJGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgLy8gaW52b2tlIHRoZSBldmVudCBjYWxsYmFja1xuICAgICAgICBpZiAoJGV2ZW50KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhdmFsdWUgIT09IHRoaXMucHJldkRhdGF2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQm91bmRWYXJpYWJsZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdjaGFuZ2UnLCB7XG4gICAgICAgICAgICAgICAgICAgICRldmVudCxcbiAgICAgICAgICAgICAgICAgICAgbmV3VmFsOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgb2xkVmFsOiB0aGlzLnByZXZEYXRhdmFsdWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyB1cGRhdGUgdGhlIHByZXZpb3VzIHZhbHVlXG4gICAgICAgIHRoaXMucHJldkRhdGF2YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB1cGRhdGVQcmV2RGF0YXZhbHVlKHZhbDogYW55KSB7XG4gICAgICAgIHRoaXMucHJldkRhdGF2YWx1ZSA9IHZhbDtcbiAgICB9XG4gICAgcHJvdGVjdGVkIGdldFByZXZEYXRhVmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZXZEYXRhdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBib3VuZEtleWRvd25IYW5kbGVyOiAoZXZlbnQ6IEpRdWVyeS5FdmVudCkgPT4gdm9pZDtcblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG5cbi8vIFtXTVMtMTg4OTJdLSBzdG9wcGluZyBldmVudCBwcm9wYWdhdGlvbiBbZm9yIEFycm93TGVmdCwgQXJyb3dVcCwgQXJyb3dSaWdodCwgQXJyb3dEb3duIGFjdGlvbnNdICB3aGVuIGZvcm0gd2lkZ2V0cyBvciBmb3JtIGlzIGluc2lkZSBsaXN0IHdpZGdldFxuICAgICAgICBsZXQgcGFyZW50RWxlbUxpc3QgPSAkKHRoaXMubmF0aXZlRWxlbWVudCkucGFyZW50cygpO1xuICAgICAgICBpZiAocGFyZW50RWxlbUxpc3QuY2xvc2VzdCgnW3dtTGlzdF0nKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIE1FTU9SWSBMRUFLIEZJWDogU3RvcmUgYm91bmQgZnVuY3Rpb24gcmVmZXJlbmNlIGZvciBjbGVhbnVwXG4gICAgICAgICAgICB0aGlzLmJvdW5kS2V5ZG93bkhhbmRsZXIgPSBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoJGV2ZW50LmtleUNvZGUgPT09IDM3IHx8ICRldmVudC5rZXlDb2RlID09PSAzOCB8fCAkZXZlbnQua2V5Q29kZSA9PT0gMzkgfHwgJGV2ZW50LmtleUNvZGUgPT09IDQwKSB7XG4gICAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5rZXlkb3duKHRoaXMuYm91bmRLZXlkb3duSGFuZGxlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBSZW1vdmUgalF1ZXJ5IGV2ZW50IGxpc3RlbmVyXG4gICAgICAgIGlmICh0aGlzLmJvdW5kS2V5ZG93bkhhbmRsZXIpIHtcbiAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQub2ZmKCdrZXlkb3duJywgdGhpcy5ib3VuZEtleWRvd25IYW5kbGVyKTtcbiAgICAgICAgICAgIHRoaXMuYm91bmRLZXlkb3duSGFuZGxlciA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IENsZWFyIHJlZmVyZW5jZXNcbiAgICAgICAgdGhpcy5wcmV2RGF0YXZhbHVlID0gbnVsbDtcbiAgICAgICAgdGhpcy5kYXRhdmFsdWVzb3VyY2UgPSBudWxsO1xuICAgICAgICB0aGlzLmJpbmRkYXRhdmFsdWUgPSBudWxsO1xuXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIl19
@@ -87,13 +87,27 @@ class BaseFormComponent extends StylableComponent {
87
87
  // [WMS-18892]- stopping event propagation [for ArrowLeft, ArrowUp, ArrowRight, ArrowDown actions] when form widgets or form is inside list widget
88
88
  let parentElemList = $(this.nativeElement).parents();
89
89
  if (parentElemList.closest('[wmList]').length) {
90
- this.$element.keydown(function ($event) {
90
+ // MEMORY LEAK FIX: Store bound function reference for cleanup
91
+ this.boundKeydownHandler = function ($event) {
91
92
  if ($event.keyCode === 37 || $event.keyCode === 38 || $event.keyCode === 39 || $event.keyCode === 40) {
92
93
  $event.stopPropagation();
93
94
  }
94
- });
95
+ };
96
+ this.$element.keydown(this.boundKeydownHandler);
95
97
  }
96
98
  }
99
+ ngOnDestroy() {
100
+ // MEMORY LEAK FIX: Remove jQuery event listener
101
+ if (this.boundKeydownHandler) {
102
+ this.$element.off('keydown', this.boundKeydownHandler);
103
+ this.boundKeydownHandler = null;
104
+ }
105
+ // MEMORY LEAK FIX: Clear references
106
+ this.prevDatavalue = null;
107
+ this.datavaluesource = null;
108
+ this.binddatavalue = null;
109
+ super.ngOnDestroy();
110
+ }
97
111
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseFormComponent, deps: [{ token: i0.Injector }, { token: WidgetConfig }, { token: 'EXPLICIT_CONTEXT', optional: true }, { token: Promise }], target: i0.ɵɵFactoryTarget.Injectable }); }
98
112
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseFormComponent }); }
99
113
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/input/base-form/src/base-form.component.ts","../../../../../projects/components/widgets/input/base-form/src/index.ts"],"sourcesContent":["import {AfterViewInit, Inject, Injectable, Injector, Optional} from '@angular/core';\n\nimport {DataSource} from '@wm/core';\n\nimport {IWidgetConfig, StylableComponent, WidgetConfig} from '@wm/components/base';\nimport {has, set} from \"lodash-es\";\n\n@Injectable()\nexport abstract class BaseFormComponent extends StylableComponent implements AfterViewInit{\n\n private dataval;\n private prevDatavalue;\n protected binddatavalue: string;\n private datavaluesource: any;\n\n protected constructor(\n protected inj: Injector,\n @Inject(WidgetConfig) config: IWidgetConfig,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any,\n initPromise?: Promise<any>\n ) {\n super(inj, config, explicitContext, initPromise);\n this.binddatavalue = this.$element.attr('datavalue.bind');\n }\n\n set datavalue(datavalue) {\n this.dataval = datavalue;\n }\n\n get datavalue() {\n return this.dataval;\n }\n\n /**\n * Responsible for updating the variable bound to the widget's datavalue property.\n * @param value\n */\n updateBoundVariable(value) {\n let binddatavalue = this.binddatavalue;\n\n // return if the variable bound is not static.\n if (this.datavaluesource && this.datavaluesource.execute(DataSource.Operation.IS_API_AWARE)) {\n return;\n } else if (this.datavaluesource && !this.datavaluesource.twoWayBinding) {\n return;\n }\n\n // return if widget is bound.\n if (!binddatavalue || binddatavalue.startsWith('Widgets.') || binddatavalue.startsWith('itemRef.currentItemWidgets')) {\n return;\n }\n\n binddatavalue = binddatavalue.replace(/\\[\\$i\\]/g, '[0]');\n binddatavalue = binddatavalue.replace(\n /\\[(.*?)\\]/g,\n (_match, key) => {\n try {\n const value = eval(`this.viewParent.${key}`);\n if (typeof value === 'string' || typeof value === 'number')\n return `[${value}]`;\n else\n return '[0]'\n } catch {\n return '[0]'; // fallback if evaluation fails\n }\n }\n );\n\n\n // In case of list widget context will be the listItem.\n if (has(this.context, binddatavalue.split('.')[0]) && has(this.context, binddatavalue)) {\n set(this.context, binddatavalue, value);\n }\n // Parent widget must update on custom widget datavalue change for bindings to work\n else if (has(this.viewParent, binddatavalue) && this.viewParent.containerWidget?._isCustom) {\n set(this.viewParent, binddatavalue, value);\n } else if (has(this.viewParent, binddatavalue) && this.datavaluesource?.owner === \"Page\") {\n set(this.viewParent, binddatavalue, value);\n } else if (has(this.viewParent?.App, binddatavalue) && this.datavaluesource?.owner === \"App\") {\n set(this.viewParent.App, binddatavalue, value);\n }\n }\n\n protected invokeOnChange(value, $event?: Event) {\n // invoke the event callback\n if ($event) {\n if (this.datavalue !== this.prevDatavalue) {\n this.updateBoundVariable(value);\n this.invokeEventCallback('change', {\n $event,\n newVal: value,\n oldVal: this.prevDatavalue\n });\n }\n }\n // update the previous value\n this.prevDatavalue = value;\n }\n\n protected updatePrevDatavalue(val: any) {\n this.prevDatavalue = val;\n }\n protected getPrevDataValue() {\n return this.prevDatavalue;\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n\n// [WMS-18892]- stopping event propagation [for ArrowLeft, ArrowUp, ArrowRight, ArrowDown actions] when form widgets or form is inside list widget\n let parentElemList = $(this.nativeElement).parents();\n if (parentElemList.closest('[wmList]').length) {\n this.$element.keydown(function($event) {\n if ($event.keyCode === 37 || $event.keyCode === 38 || $event.keyCode === 39 || $event.keyCode === 40) {\n $event.stopPropagation();\n }\n });\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/input/base-form/src/base-form.component.ts","../../../../../projects/components/widgets/input/base-form/src/index.ts"],"sourcesContent":["import {AfterViewInit, Inject, Injectable, Injector, OnDestroy, Optional} from '@angular/core';\n\nimport {DataSource} from '@wm/core';\n\nimport {IWidgetConfig, StylableComponent, WidgetConfig} from '@wm/components/base';\nimport {has, set} from \"lodash-es\";\n\n@Injectable()\nexport abstract class BaseFormComponent extends StylableComponent implements AfterViewInit, OnDestroy {\n\n private dataval;\n private prevDatavalue;\n protected binddatavalue: string;\n private datavaluesource: any;\n\n protected constructor(\n protected inj: Injector,\n @Inject(WidgetConfig) config: IWidgetConfig,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any,\n initPromise?: Promise<any>\n ) {\n super(inj, config, explicitContext, initPromise);\n this.binddatavalue = this.$element.attr('datavalue.bind');\n }\n\n set datavalue(datavalue) {\n this.dataval = datavalue;\n }\n\n get datavalue() {\n return this.dataval;\n }\n\n /**\n * Responsible for updating the variable bound to the widget's datavalue property.\n * @param value\n */\n updateBoundVariable(value) {\n let binddatavalue = this.binddatavalue;\n\n // return if the variable bound is not static.\n if (this.datavaluesource && this.datavaluesource.execute(DataSource.Operation.IS_API_AWARE)) {\n return;\n } else if (this.datavaluesource && !this.datavaluesource.twoWayBinding) {\n return;\n }\n\n // return if widget is bound.\n if (!binddatavalue || binddatavalue.startsWith('Widgets.') || binddatavalue.startsWith('itemRef.currentItemWidgets')) {\n return;\n }\n\n binddatavalue = binddatavalue.replace(/\\[\\$i\\]/g, '[0]');\n binddatavalue = binddatavalue.replace(\n /\\[(.*?)\\]/g,\n (_match, key) => {\n try {\n const value = eval(`this.viewParent.${key}`);\n if (typeof value === 'string' || typeof value === 'number')\n return `[${value}]`;\n else\n return '[0]'\n } catch {\n return '[0]'; // fallback if evaluation fails\n }\n }\n );\n\n\n // In case of list widget context will be the listItem.\n if (has(this.context, binddatavalue.split('.')[0]) && has(this.context, binddatavalue)) {\n set(this.context, binddatavalue, value);\n }\n // Parent widget must update on custom widget datavalue change for bindings to work\n else if (has(this.viewParent, binddatavalue) && this.viewParent.containerWidget?._isCustom) {\n set(this.viewParent, binddatavalue, value);\n } else if (has(this.viewParent, binddatavalue) && this.datavaluesource?.owner === \"Page\") {\n set(this.viewParent, binddatavalue, value);\n } else if (has(this.viewParent?.App, binddatavalue) && this.datavaluesource?.owner === \"App\") {\n set(this.viewParent.App, binddatavalue, value);\n }\n }\n\n protected invokeOnChange(value, $event?: Event) {\n // invoke the event callback\n if ($event) {\n if (this.datavalue !== this.prevDatavalue) {\n this.updateBoundVariable(value);\n this.invokeEventCallback('change', {\n $event,\n newVal: value,\n oldVal: this.prevDatavalue\n });\n }\n }\n // update the previous value\n this.prevDatavalue = value;\n }\n\n protected updatePrevDatavalue(val: any) {\n this.prevDatavalue = val;\n }\n protected getPrevDataValue() {\n return this.prevDatavalue;\n }\n\n private boundKeydownHandler: (event: JQuery.Event) => void;\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n\n// [WMS-18892]- stopping event propagation [for ArrowLeft, ArrowUp, ArrowRight, ArrowDown actions] when form widgets or form is inside list widget\n let parentElemList = $(this.nativeElement).parents();\n if (parentElemList.closest('[wmList]').length) {\n // MEMORY LEAK FIX: Store bound function reference for cleanup\n this.boundKeydownHandler = function($event) {\n if ($event.keyCode === 37 || $event.keyCode === 38 || $event.keyCode === 39 || $event.keyCode === 40) {\n $event.stopPropagation();\n }\n };\n this.$element.keydown(this.boundKeydownHandler);\n }\n }\n\n ngOnDestroy() {\n // MEMORY LEAK FIX: Remove jQuery event listener\n if (this.boundKeydownHandler) {\n this.$element.off('keydown', this.boundKeydownHandler);\n this.boundKeydownHandler = null;\n }\n\n // MEMORY LEAK FIX: Clear references\n this.prevDatavalue = null;\n this.datavaluesource = null;\n this.binddatavalue = null;\n\n super.ngOnDestroy();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { ControlValueAccessor, FormControlName, Validator, AbstractControl } from '@angular/forms';
2
- import { OnInit } from '@angular/core';
2
+ import { OnDestroy, OnInit } from '@angular/core';
3
3
  import { BaseFormComponent } from '@wm/components/input/base-form';
4
4
  import * as i0 from "@angular/core";
5
- export declare abstract class BaseFormCustomComponent extends BaseFormComponent implements ControlValueAccessor, OnInit, Validator {
5
+ export declare abstract class BaseFormCustomComponent extends BaseFormComponent implements ControlValueAccessor, OnInit, OnDestroy, Validator {
6
6
  private _formControl;
7
7
  protected _onChange: any;
8
8
  private _onTouched;
@@ -17,6 +17,7 @@ export declare abstract class BaseFormCustomComponent extends BaseFormComponent
17
17
  validate(control: AbstractControl): {
18
18
  [key: string]: any;
19
19
  };
20
+ ngOnDestroy(): void;
20
21
  static ɵfac: i0.ɵɵFactoryDeclaration<BaseFormCustomComponent, never>;
21
22
  static ɵprov: i0.ɵɵInjectableDeclaration<BaseFormCustomComponent>;
22
23
  }
@@ -84,7 +84,9 @@
84
84
  }
85
85
  invokeOnChange(value, $event, valid) {
86
86
  // let the angular know about the change
87
- this._onChange(value);
87
+ if (this._onChange) {
88
+ this._onChange(value);
89
+ }
88
90
  if ($event) {
89
91
  super.invokeOnChange(value, $event);
90
92
  }
@@ -94,7 +96,9 @@
94
96
  }
95
97
  }
96
98
  invokeOnTouched($event) {
97
- this._onTouched();
99
+ if (this._onTouched) {
100
+ this._onTouched();
101
+ }
98
102
  if ($event) {
99
103
  this.invokeEventCallback('blur', { $event });
100
104
  }
@@ -106,6 +110,13 @@
106
110
  validate(control) {
107
111
  return this['show'] ? validateRequiredBind(this['required'])(control) : null;
108
112
  }
113
+ ngOnDestroy() {
114
+ // MEMORY LEAK FIX: Clear form control reference
115
+ this._formControl = null;
116
+ this._onChange = null;
117
+ this._onTouched = null;
118
+ super.ngOnDestroy();
119
+ }
109
120
  static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: BaseFormCustomComponent, deps: null, target: i0__namespace.ɵɵFactoryTarget.Injectable }); }
110
121
  static { this.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: BaseFormCustomComponent }); }
111
122
  }
@@ -63,7 +63,9 @@ export class BaseFormCustomComponent extends BaseFormComponent {
63
63
  }
64
64
  invokeOnChange(value, $event, valid) {
65
65
  // let the angular know about the change
66
- this._onChange(value);
66
+ if (this._onChange) {
67
+ this._onChange(value);
68
+ }
67
69
  if ($event) {
68
70
  super.invokeOnChange(value, $event);
69
71
  }
@@ -73,7 +75,9 @@ export class BaseFormCustomComponent extends BaseFormComponent {
73
75
  }
74
76
  }
75
77
  invokeOnTouched($event) {
76
- this._onTouched();
78
+ if (this._onTouched) {
79
+ this._onTouched();
80
+ }
77
81
  if ($event) {
78
82
  this.invokeEventCallback('blur', { $event });
79
83
  }
@@ -85,10 +89,17 @@ export class BaseFormCustomComponent extends BaseFormComponent {
85
89
  validate(control) {
86
90
  return this['show'] ? validateRequiredBind(this['required'])(control) : null;
87
91
  }
92
+ ngOnDestroy() {
93
+ // MEMORY LEAK FIX: Clear form control reference
94
+ this._formControl = null;
95
+ this._onChange = null;
96
+ this._onTouched = null;
97
+ super.ngOnDestroy();
98
+ }
88
99
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseFormCustomComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
89
100
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseFormCustomComponent }); }
90
101
  }
91
102
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseFormCustomComponent, decorators: [{
92
103
  type: Injectable
93
104
  }] });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtLWN1c3RvbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvYmFzZS1mb3JtLWN1c3RvbS9zcmMvYmFzZS1mb3JtLWN1c3RvbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3QixlQUFlLEVBQTJDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEgsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFFbkU7Ozs7Ozs7R0FPRztBQUNILFNBQVMsWUFBWSxDQUFDLEdBQUc7SUFDckIsUUFBTyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLEtBQUssUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzdFLEtBQUssUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsS0FBSyxTQUFTLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDM0UsQ0FBQztBQUNMLENBQUM7QUFDRCxTQUFTLG9CQUFvQixDQUFDLFFBQWlCO0lBQzNDLE9BQU8sQ0FBQyxPQUF3QixFQUFFLEVBQUUsQ0FDaEMsUUFBUTtRQUNKLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQzFCLENBQUMs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VmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2xOYW1lLCBWYWxpZGF0b3IsIFZhbGlkYXRvckZuLCBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmFzZUZvcm1Db21wb25lbnQgfSBmcm9tICdAd20vY29tcG9uZW50cy9pbnB1dC9iYXNlLWZvcm0nO1xuXG4vKlxuICogV01TLTE4MjY5XG4gKiBjdXN0b20gJ3JlcXVpcmVkJyB2YWxpZGF0b3IgZm9yIGNvbXBvbmVudHMsXG4gKiBhcyB0aGUgYm91bmQgdmFsdWVzIGFyZSByZXNvbHZlZCBhdCBydW50aW1lXG4gKiBDYWxsZWQgb24gJ3JlcXVpcmVkJyBwcm9wZXJ0eSBjaGFuZ2VcbiAqXG4gKiBOb3RlOiBDb21wb25lbnQgbmVlZHMgTkdfVkFMSURBVE9SIHByb3ZpZGVyIGZvciB0aGlzIHRvIHdvcmtcbiAqL1xuZnVuY3Rpb24gaXNWYWxpZFZhbHVlKHZhbCk6IEJvb2xlYW4ge1xuICAgIHN3aXRjaCh0eXBlb2YgdmFsKSB7XG4gICAgICAgIGNhc2UgJ29iamVjdCc6IHJldHVybiAoISF2YWwgJiYgKCEhdmFsLmxlbmd0aCB8fCAhIU9iamVjdC5rZXlzKHZhbCkubGVuZ3RoKSk7XG4gICAgICAgIGNhc2UgJ251bWJlcic6IHJldHVybiAoISF2YWwgfHwgdmFsID09PSAwKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiAhKHZhbCA9PT0gdW5kZWZpbmVkIHx8IHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09ICcnKTtcbiAgICB9XG59XG5mdW5jdGlvbiB2YWxpZGF0ZVJlcXVpcmVkQmluZChyZXF1aXJlZDogYm9vbGVhbik6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT5cbiAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgID8gKGlzVmFsaWRWYWx1ZShjb250cm9sLnZhbHVlKVxuICAgICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICAgIDogeyByZXF1aXJlZDogdHJ1ZSB9KVxuICAgICAgICAgICAgOiBudWxsO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUZvcm1DdXN0b21Db21wb25lbnQgZXh0ZW5kcyBCYXNlRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIFZhbGlkYXRvciB7XG5cbiAgICBwcml2YXRlIF9mb3JtQ29udHJvbDogRm9ybUNvbnRyb2xOYW1lO1xuICAgIHByb3RlY3RlZCBfb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xuICAgIHByaXZhdGUgX29uVG91Y2hlZDogYW55ID0gKCkgPT4ge307XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5fZm9ybUNvbnRyb2wgPSB0aGlzLmluai5nZXQoRm9ybUNvbnRyb2xOYW1lLCBudWxsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbikge1xuICAgICAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbikge1xuICAgICAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZSkge1xuICAgICAgICBpZiAodGhpcy5pc0Rlc3Ryb3llZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9mb3JtQ29udHJvbCkge1xuXG4gICAgICAgICAgICBpZih0aGlzLl9mb3JtQ29udHJvbC52YWx1ZUFjY2Vzc29yW1wid2lkZ2V0U3ViVHlwZVwiXS5zdGFydHNXaXRoKCd3bS1jdXN0b20tJykpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgICAgICB0aGlzLmRhdGF2YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5vblByb3BlcnR5Q2hhbmdlKCdkYXRhdmFsdWUnLCB2YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVByZXZEYXRhdmFsdWUodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIC8qXG4gICAgICAgICAqIFdNUzoxODI0NlxuICAgICAgICAgKiBDYWxsIG9uQ2hhbmdlIG9uIGRlZmF1bHQgdmFsdWUsIHNvIHRoYXQgdGhlIENvbXBvbmVudCBNb2RlbCBpcyB1cGRhdGVkXG4gICAgICAgICAqIERvIG9ubHkgV2hlbiB0aGUgTW9kZWwgVmFsdWUgaXMgZGlmZmVyZW50IGZyb20gZGF0YXZhbHVlXG4gICAgICAgICAqL1xuICAgICAgICAodmFsdWUhPT10aGlzLmRhdGF2YWx1ZSkgJiYgdGhpcy5fb25DaGFuZ2UodGhpcy5kYXRhdmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZm9ybUNvbnRyb2woKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mb3JtQ29udHJvbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW52b2tlT25DaGFuZ2UodmFsdWUsICRldmVudD86IEV2ZW50IHwgYW55LCB2YWxpZD86IGJvb2xlYW4pIHtcbiAgICAgICAgLy8gbGV0IHRoZSBhbmd1bGFyIGtub3cgYWJvdXQgdGhlIGNoYW5nZVxuICAgICAgICB0aGlzLl9vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIGlmICgkZXZlbnQpIHtcbiAgICAgICAgICAgIHN1cGVyLmludm9rZU9uQ2hhbmdlKHZhbHVlLCAkZXZlbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbGlkKSB7XG4gICAgICAgICAgICAvLyBGaXggZm9yIFtXTVMtMjQ4NjldOiB1cGRhdGluZyBQcmV2RGF0YXZhbHVlIHdoZW4gdGhlcmUgaXMgYSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgd2lkZ2V0LlxuICAgICAgICAgICAgdGhpcy51cGRhdGVQcmV2RGF0YXZhbHVlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpbnZva2VPblRvdWNoZWQoJGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkKCk7XG5cbiAgICAgICAgaWYgKCRldmVudCkge1xuICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdibHVyJywgeyRldmVudH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGludm9rZU9uRm9jdXMoJGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2ZvY3VzJywgeyRldmVudH0pO1xuICAgIH1cbiAgICAvKiBXTVMtMTgyNjkgKi9cbiAgICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOntba2V5OiBzdHJpbmddOmFueX0ge1xuICAgICAgICByZXR1cm4gdGhpc1snc2hvdyddID8gdmFsaWRhdGVSZXF1aXJlZEJpbmQodGhpc1sncmVxdWlyZWQnXSkoY29udHJvbCkgOiBudWxsO1xuICAgIH1cbn1cbiJdfQ==
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtLWN1c3RvbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvYmFzZS1mb3JtLWN1c3RvbS9zcmMvYmFzZS1mb3JtLWN1c3RvbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3QixlQUFlLEVBQTJDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEgsT0FBTyxFQUFFLFVBQVUsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7O0FBRW5FOzs7Ozs7O0dBT0c7QUFDSCxTQUFTLFlBQVksQ0FBQyxHQUFHO0lBQ3JCLFFBQU8sT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNoQixLQUFLLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUM3RSxLQUFLLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN2QyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEtBQUssU0FBUyxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLENBQUM7QUFDTCxDQUFDO0FBQ0QsU0FBUyxvQkFBb0IsQ0FBQyxRQUFpQjtJQUMzQyxPQUFPLENBQUMsT0FBd0IsRUFBRSxFQUFFLENBQ2hDLFFBQVE7UUFDSixDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUMxQixDQUFD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O0lBRUQsV0FBVztRQUNQLGdEQUFnRDtRQUNoRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUV2QixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEIsQ0FBQzsrR0FsRmlCLHVCQUF1QjttSEFBdkIsdUJBQXVCOzs0RkFBdkIsdUJBQXVCO2tCQUQ1QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sTmFtZSwgVmFsaWRhdG9yLCBWYWxpZGF0b3JGbiwgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmFzZUZvcm1Db21wb25lbnQgfSBmcm9tICdAd20vY29tcG9uZW50cy9pbnB1dC9iYXNlLWZvcm0nO1xuXG4vKlxuICogV01TLTE4MjY5XG4gKiBjdXN0b20gJ3JlcXVpcmVkJyB2YWxpZGF0b3IgZm9yIGNvbXBvbmVudHMsXG4gKiBhcyB0aGUgYm91bmQgdmFsdWVzIGFyZSByZXNvbHZlZCBhdCBydW50aW1lXG4gKiBDYWxsZWQgb24gJ3JlcXVpcmVkJyBwcm9wZXJ0eSBjaGFuZ2VcbiAqXG4gKiBOb3RlOiBDb21wb25lbnQgbmVlZHMgTkdfVkFMSURBVE9SIHByb3ZpZGVyIGZvciB0aGlzIHRvIHdvcmtcbiAqL1xuZnVuY3Rpb24gaXNWYWxpZFZhbHVlKHZhbCk6IEJvb2xlYW4ge1xuICAgIHN3aXRjaCh0eXBlb2YgdmFsKSB7XG4gICAgICAgIGNhc2UgJ29iamVjdCc6IHJldHVybiAoISF2YWwgJiYgKCEhdmFsLmxlbmd0aCB8fCAhIU9iamVjdC5rZXlzKHZhbCkubGVuZ3RoKSk7XG4gICAgICAgIGNhc2UgJ251bWJlcic6IHJldHVybiAoISF2YWwgfHwgdmFsID09PSAwKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiAhKHZhbCA9PT0gdW5kZWZpbmVkIHx8IHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09ICcnKTtcbiAgICB9XG59XG5mdW5jdGlvbiB2YWxpZGF0ZVJlcXVpcmVkQmluZChyZXF1aXJlZDogYm9vbGVhbik6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT5cbiAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgID8gKGlzVmFsaWRWYWx1ZShjb250cm9sLnZhbHVlKVxuICAgICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICAgIDogeyByZXF1aXJlZDogdHJ1ZSB9KVxuICAgICAgICAgICAgOiBudWxsO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUZvcm1DdXN0b21Db21wb25lbnQgZXh0ZW5kcyBCYXNlRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uRGVzdHJveSwgVmFsaWRhdG9yIHtcblxuICAgIHByaXZhdGUgX2Zvcm1Db250cm9sOiBGb3JtQ29udHJvbE5hbWU7XG4gICAgcHJvdGVjdGVkIF9vbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gICAgcHJpdmF0ZSBfb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLl9mb3JtQ29udHJvbCA9IHRoaXMuaW5qLmdldChGb3JtQ29udHJvbE5hbWUsIG51bGwpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuKSB7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuKSB7XG4gICAgICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLmlzRGVzdHJveWVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2Zvcm1Db250cm9sKSB7XG5cbiAgICAgICAgICAgIGlmKHRoaXMuX2Zvcm1Db250cm9sLnZhbHVlQWNjZXNzb3JbXCJ3aWRnZXRTdWJUeXBlXCJdLnN0YXJ0c1dpdGgoJ3dtLWN1c3RvbS0nKSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgIHRoaXMuZGF0YXZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLm9uUHJvcGVydHlDaGFuZ2UoJ2RhdGF2YWx1ZScsIHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUHJldkRhdGF2YWx1ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgLypcbiAgICAgICAgICogV01TOjE4MjQ2XG4gICAgICAgICAqIENhbGwgb25DaGFuZ2Ugb24gZGVmYXVsdCB2YWx1ZSwgc28gdGhhdCB0aGUgQ29tcG9uZW50IE1vZGVsIGlzIHVwZGF0ZWRcbiAgICAgICAgICogRG8gb25seSBXaGVuIHRoZSBNb2RlbCBWYWx1ZSBpcyBkaWZmZXJlbnQgZnJvbSBkYXRhdmFsdWVcbiAgICAgICAgICovXG4gICAgICAgICh2YWx1ZSE9PXRoaXMuZGF0YXZhbHVlKSAmJiB0aGlzLl9vbkNoYW5nZSh0aGlzLmRhdGF2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmb3JtQ29udHJvbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1Db250cm9sO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbnZva2VPbkNoYW5nZSh2YWx1ZSwgJGV2ZW50PzogRXZlbnQgfCBhbnksIHZhbGlkPzogYm9vbGVhbikge1xuICAgICAgICAvLyBsZXQgdGhlIGFuZ3VsYXIga25vdyBhYm91dCB0aGUgY2hhbmdlXG4gICAgICAgIGlmICh0aGlzLl9vbkNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5fb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgkZXZlbnQpIHtcbiAgICAgICAgICAgIHN1cGVyLmludm9rZU9uQ2hhbmdlKHZhbHVlLCAkZXZlbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbGlkKSB7XG4gICAgICAgICAgICAvLyBGaXggZm9yIFtXTVMtMjQ4NjldOiB1cGRhdGluZyBQcmV2RGF0YXZhbHVlIHdoZW4gdGhlcmUgaXMgYSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgd2lkZ2V0LlxuICAgICAgICAgICAgdGhpcy51cGRhdGVQcmV2RGF0YXZhbHVlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpbnZva2VPblRvdWNoZWQoJGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuX29uVG91Y2hlZCkge1xuICAgICAgICAgICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoJGV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2JsdXInLCB7JGV2ZW50fSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaW52b2tlT25Gb2N1cygkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnZm9jdXMnLCB7JGV2ZW50fSk7XG4gICAgfVxuICAgIC8qIFdNUy0xODI2OSAqL1xuICAgIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6e1trZXk6IHN0cmluZ106YW55fSB7XG4gICAgICAgIHJldHVybiB0aGlzWydzaG93J10gPyB2YWxpZGF0ZVJlcXVpcmVkQmluZCh0aGlzWydyZXF1aXJlZCddKShjb250cm9sKSA6IG51bGw7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIC8vIE1FTU9SWSBMRUFLIEZJWDogQ2xlYXIgZm9ybSBjb250cm9sIHJlZmVyZW5jZVxuICAgICAgICB0aGlzLl9mb3JtQ29udHJvbCA9IG51bGw7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlID0gbnVsbDtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkID0gbnVsbDtcblxuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cbiJdfQ==
@@ -64,7 +64,9 @@ class BaseFormCustomComponent extends BaseFormComponent {
64
64
  }
65
65
  invokeOnChange(value, $event, valid) {
66
66
  // let the angular know about the change
67
- this._onChange(value);
67
+ if (this._onChange) {
68
+ this._onChange(value);
69
+ }
68
70
  if ($event) {
69
71
  super.invokeOnChange(value, $event);
70
72
  }
@@ -74,7 +76,9 @@ class BaseFormCustomComponent extends BaseFormComponent {
74
76
  }
75
77
  }
76
78
  invokeOnTouched($event) {
77
- this._onTouched();
79
+ if (this._onTouched) {
80
+ this._onTouched();
81
+ }
78
82
  if ($event) {
79
83
  this.invokeEventCallback('blur', { $event });
80
84
  }
@@ -86,6 +90,13 @@ class BaseFormCustomComponent extends BaseFormComponent {
86
90
  validate(control) {
87
91
  return this['show'] ? validateRequiredBind(this['required'])(control) : null;
88
92
  }
93
+ ngOnDestroy() {
94
+ // MEMORY LEAK FIX: Clear form control reference
95
+ this._formControl = null;
96
+ this._onChange = null;
97
+ this._onTouched = null;
98
+ super.ngOnDestroy();
99
+ }
89
100
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseFormCustomComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
90
101
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseFormCustomComponent }); }
91
102
  }