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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +40 -12
  59. package/components/basic/search/esm2022/scrollable.directive.mjs +11 -2
  60. package/components/basic/search/esm2022/search.component.mjs +31 -12
  61. package/components/basic/search/fesm2022/index.mjs +40 -12
  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
@@ -44,7 +44,9 @@ export class CompositeDirective extends StylableComponent {
44
44
  assignRequiredToSubComponents() {
45
45
  if (this.required && this.componentRefs) {
46
46
  setTimeout(() => {
47
- this.componentRefs.forEach(componentRef => componentRef.widget.required = true);
47
+ if (this.componentRefs) {
48
+ this.componentRefs.forEach(componentRef => componentRef.widget.required = true);
49
+ }
48
50
  }, 50);
49
51
  }
50
52
  }
@@ -53,6 +55,13 @@ export class CompositeDirective extends StylableComponent {
53
55
  addForIdAttributes(this.nativeElement);
54
56
  this.assignRequiredToSubComponents();
55
57
  }
58
+ ngOnDestroy() {
59
+ // MEMORY LEAK FIX: Clear ContentChildren QueryList reference
60
+ if (this.componentRefs) {
61
+ this.componentRefs = null;
62
+ }
63
+ super.ngOnDestroy();
64
+ }
56
65
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CompositeDirective, deps: [{ token: i0.Injector }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
57
66
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: CompositeDirective, isStandalone: true, selector: "div[wmComposite]", providers: [
58
67
  provideAsWidgetRef(CompositeDirective)
@@ -76,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
76
85
  type: ContentChildren,
77
86
  args: [WidgetRef, { descendants: true }]
78
87
  }] } });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9zaXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9jb21wb3NpdGUvc3JjL2NvbXBvc2l0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXBHLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxXQUFXLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFekQsT0FBTyxFQUFFLGlCQUFpQixFQUFpQixrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFakksT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUlsRCxNQUFNLFdBQVcsR0FBRywwQ0FBMEMsQ0FBQztBQUMvRCxNQUFNLGFBQWEsR0FBa0I7SUFDakMsVUFBVSxFQUFFLGVBQWU7SUFDM0IsU0FBUyxFQUFFLFdBQVc7Q0FDekIsQ0FBQztBQUVGLE1BQU0sZ0JBQWdCLEdBQUc7SUFDckIsSUFBSSxFQUFFLGNBQWM7SUFDcEIsS0FBSyxFQUFFLGVBQWU7SUFDdEIsR0FBRyxFQUFFLGFBQWE7SUFDbEIsUUFBUSxFQUFFLGtCQUFrQjtDQUMvQixDQUFDO0FBU0YsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGlCQUFpQjthQUM5QyxvQkFBZSxHQUFHLGFBQWEsRUFBRSxBQUFsQixDQUFtQjtJQU96QyxZQUFZLEdBQWEsRUFBMEMsZUFBb0I7UUFDbkYsS0FBSyxDQUFDLEdBQUcsRUFBRSxhQUFhLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGdCQUFnQixDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRTtRQUN4QixJQUFJLEdBQUcsS0FBSyxpQkFBaUIsRUFBRSxDQUFDO1lBQzVCLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEYsQ0FBQzthQUFNLElBQUksR0FBRyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1FBQ3pDLENBQUM7YUFBTSxDQUFDO1lBQ0osS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNPLDZCQUE2QjtRQUNuQyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3RDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNwRixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDWCxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDWCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXZDLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO0lBQ3pDLENBQUM7K0dBOUNRLGtCQUFrQiwwQ0FRUSxrQkFBa0I7bUdBUjVDLGtCQUFrQiwrREFKaEI7WUFDUCxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQztTQUN6Qyx3REFNZ0IsU0FBUzs7NEZBSmpCLGtCQUFrQjtrQkFQOUIsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDZCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixTQUFTLEVBQUU7d0JBQ1Asa0JBQWtCLG9CQUFvQjtxQkFDekM7aUJBQ0o7OzBCQVMrQixNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQUcsUUFBUTt5Q0FKZixhQUFhO3NCQUE3RCxlQUFlO3VCQUFDLFNBQVMsRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbnRlbnRDaGlsZHJlbiwgRGlyZWN0aXZlLCBJbmplY3QsIEluamVjdG9yLCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7YWRkRm9ySWRBdHRyaWJ1dGVzLCBzd2l0Y2hDbGFzc30gZnJvbSAnQHdtL2NvcmUnO1xuXG5pbXBvcnQgeyBBUFBMWV9TVFlMRVNfVFlQRSwgSVdpZGdldENvbmZpZywgcHJvdmlkZUFzV2lkZ2V0UmVmLCBTdHlsYWJsZUNvbXBvbmVudCwgc3R5bGVyLCBXaWRnZXRSZWYgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcblxuaW1wb3J0IHsgcmVnaXN0ZXJQcm9wcyB9IGZyb20gJy4vY29tcG9zaXRlLnByb3BzJztcblxuZGVjbGFyZSBjb25zdCAkO1xuXG5jb25zdCBERUZBVUxUX0NMUyA9ICdmb3JtLWdyb3VwIGFwcC1jb21wb3NpdGUtd2lkZ2V0IGNsZWFyZml4JztcbmNvbnN0IFdJREdFVF9DT05GSUc6IElXaWRnZXRDb25maWcgPSB7XG4gICAgd2lkZ2V0VHlwZTogJ3dtLWZvcm0tZ3JvdXAnLFxuICAgIGhvc3RDbGFzczogREVGQVVMVF9DTFNcbn07XG5cbmNvbnN0IENBUFRJT05fUE9TSVRJT04gPSB7XG4gICAgbGVmdDogJ2NhcHRpb24tbGVmdCcsXG4gICAgcmlnaHQ6ICdjYXB0aW9uLXJpZ2h0JyxcbiAgICB0b3A6ICdjYXB0aW9uLXRvcCcsXG4gICAgZmxvYXRpbmc6ICdjYXB0aW9uLWZsb2F0aW5nJ1xufTtcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdkaXZbd21Db21wb3NpdGVdJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKENvbXBvc2l0ZURpcmVjdGl2ZSlcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIENvbXBvc2l0ZURpcmVjdGl2ZSBleHRlbmRzIFN0eWxhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcblxuICAgIC8vIHRoaXMgaXMgdGhlIHJlZmVyZW5jZSB0byB0aGUgY29tcG9uZW50IHJlZnMgaW5zaWRlIHRoZSBmb3JtLWdyb3VwXG4gICAgQENvbnRlbnRDaGlsZHJlbihXaWRnZXRSZWYsIHtkZXNjZW5kYW50czogdHJ1ZX0pIGNvbXBvbmVudFJlZnM7XG5cbiAgICBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3Rvcihpbmo6IEluamVjdG9yLCBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnkpIHtcbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfQ09ORklHLCBleHBsaWNpdENvbnRleHQpO1xuICAgICAgICBzdHlsZXIodGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzLCBBUFBMWV9TVFlMRVNfVFlQRS5DT05UQUlORVIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHRoaXMgaXMgb25Qcm9wZXJ0eUNoYW5nZSBoYW5kbGVyIGZvciB0aGUgZm9ybS1ncm91cCBjb21wb25lbnRcbiAgICAgKiBAcGFyYW0ga2V5XG4gICAgICogQHBhcmFtIG52XG4gICAgICogQHBhcmFtIG92XG4gICAgICovXG4gICAgb25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdikge1xuICAgICAgICBpZiAoa2V5ID09PSAnY2FwdGlvbnBvc2l0aW9uJykge1xuICAgICAgICAgICAgc3dpdGNoQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCBDQVBUSU9OX1BPU0lUSU9OW252XSwgQ0FQVElPTl9QT1NJVElPTltvdl0pO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ3JlcXVpcmVkJykge1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZCA9IG52O1xuICAgICAgICAgICAgdGhpcy5hc3NpZ25SZXF1aXJlZFRvU3ViQ29tcG9uZW50cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB0aGlzIG1ldGhvZCBhc3NpZ25zIHRoZSByZXF1aXJlZCBvbiB0aGUgY29tcG9uZW50L2RpcmVjdGl2ZSBiYXNlZCBvbiB0aGUgcmVxdWlyZWQgYXR0cmlidXRlIG9mIHRoZSBmb3JtLWdyb3VwXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFzc2lnblJlcXVpcmVkVG9TdWJDb21wb25lbnRzKCkge1xuICAgICAgICBpZiAodGhpcy5yZXF1aXJlZCAmJiB0aGlzLmNvbXBvbmVudFJlZnMpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmcy5mb3JFYWNoKGNvbXBvbmVudFJlZiA9PiBjb21wb25lbnRSZWYud2lkZ2V0LnJlcXVpcmVkID0gdHJ1ZSk7XG4gICAgICAgICAgICB9LCA1MCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICBhZGRGb3JJZEF0dHJpYnV0ZXModGhpcy5uYXRpdmVFbGVtZW50KTtcblxuICAgICAgICB0aGlzLmFzc2lnblJlcXVpcmVkVG9TdWJDb21wb25lbnRzKCk7XG4gICAgfVxufVxuIl19
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9zaXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9jb21wb3NpdGUvc3JjL2NvbXBvc2l0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQWEsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRS9HLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxXQUFXLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFekQsT0FBTyxFQUFFLGlCQUFpQixFQUFpQixrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFakksT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUlsRCxNQUFNLFdBQVcsR0FBRywwQ0FBMEMsQ0FBQztBQUMvRCxNQUFNLGFBQWEsR0FBa0I7SUFDakMsVUFBVSxFQUFFLGVBQWU7SUFDM0IsU0FBUyxFQUFFLFdBQVc7Q0FDekIsQ0FBQztBQUVGLE1BQU0sZ0JBQWdCLEdBQUc7SUFDckIsSUFBSSxFQUFFLGNBQWM7SUFDcEIsS0FBSyxFQUFFLGVBQWU7SUFDdEIsR0FBRyxFQUFFLGFBQWE7SUFDbEIsUUFBUSxFQUFFLGtCQUFrQjtDQUMvQixDQUFDO0FBU0YsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGlCQUFpQjthQUM5QyxvQkFBZSxHQUFHLGFBQWEsRUFBRSxBQUFsQixDQUFtQjtJQU96QyxZQUFZLEdBQWEsRUFBMEMsZUFBb0I7UUFDbkYsS0FBSyxDQUFDLEdBQUcsRUFBRSxhQUFhLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGdCQUFnQixDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRTtRQUN4QixJQUFJLEdBQUcsS0FBSyxpQkFBaUIsRUFBRSxDQUFDO1lBQzVCLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEYsQ0FBQzthQUFNLElBQUksR0FBRyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1FBQ3pDLENBQUM7YUFBTSxDQUFDO1lBQ0osS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNPLDZCQUE2QjtRQUNuQyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3RDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUM7Z0JBQ3BGLENBQUM7WUFDTCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDWCxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDWCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXZDLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxXQUFXO1FBQ1AsNkRBQTZEO1FBQzdELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzlCLENBQUM7UUFFRCxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEIsQ0FBQzsrR0F6RFEsa0JBQWtCLDBDQVFRLGtCQUFrQjttR0FSNUMsa0JBQWtCLCtEQUpoQjtZQUNQLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDO1NBQ3pDLHdEQU1nQixTQUFTOzs0RkFKakIsa0JBQWtCO2tCQVA5QixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNkLFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFNBQVMsRUFBRTt3QkFDUCxrQkFBa0Isb0JBQW9CO3FCQUN6QztpQkFDSjs7MEJBUytCLE1BQU07MkJBQUMsa0JBQWtCOzswQkFBRyxRQUFRO3lDQUpmLGFBQWE7c0JBQTdELGVBQWU7dUJBQUMsU0FBUyxFQUFFLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29udGVudENoaWxkcmVuLCBEaXJlY3RpdmUsIEluamVjdCwgSW5qZWN0b3IsIE9uRGVzdHJveSwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge2FkZEZvcklkQXR0cmlidXRlcywgc3dpdGNoQ2xhc3N9IGZyb20gJ0B3bS9jb3JlJztcblxuaW1wb3J0IHsgQVBQTFlfU1RZTEVTX1RZUEUsIElXaWRnZXRDb25maWcsIHByb3ZpZGVBc1dpZGdldFJlZiwgU3R5bGFibGVDb21wb25lbnQsIHN0eWxlciwgV2lkZ2V0UmVmIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5cbmltcG9ydCB7IHJlZ2lzdGVyUHJvcHMgfSBmcm9tICcuL2NvbXBvc2l0ZS5wcm9wcyc7XG5cbmRlY2xhcmUgY29uc3QgJDtcblxuY29uc3QgREVGQVVMVF9DTFMgPSAnZm9ybS1ncm91cCBhcHAtY29tcG9zaXRlLXdpZGdldCBjbGVhcmZpeCc7XG5jb25zdCBXSURHRVRfQ09ORklHOiBJV2lkZ2V0Q29uZmlnID0ge1xuICAgIHdpZGdldFR5cGU6ICd3bS1mb3JtLWdyb3VwJyxcbiAgICBob3N0Q2xhc3M6IERFRkFVTFRfQ0xTXG59O1xuXG5jb25zdCBDQVBUSU9OX1BPU0lUSU9OID0ge1xuICAgIGxlZnQ6ICdjYXB0aW9uLWxlZnQnLFxuICAgIHJpZ2h0OiAnY2FwdGlvbi1yaWdodCcsXG4gICAgdG9wOiAnY2FwdGlvbi10b3AnLFxuICAgIGZsb2F0aW5nOiAnY2FwdGlvbi1mbG9hdGluZydcbn07XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnZGl2W3dtQ29tcG9zaXRlXScsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVBc1dpZGdldFJlZihDb21wb3NpdGVEaXJlY3RpdmUpXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBDb21wb3NpdGVEaXJlY3RpdmUgZXh0ZW5kcyBTdHlsYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcblxuICAgIC8vIHRoaXMgaXMgdGhlIHJlZmVyZW5jZSB0byB0aGUgY29tcG9uZW50IHJlZnMgaW5zaWRlIHRoZSBmb3JtLWdyb3VwXG4gICAgQENvbnRlbnRDaGlsZHJlbihXaWRnZXRSZWYsIHtkZXNjZW5kYW50czogdHJ1ZX0pIGNvbXBvbmVudFJlZnM7XG5cbiAgICBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3Rvcihpbmo6IEluamVjdG9yLCBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnkpIHtcbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfQ09ORklHLCBleHBsaWNpdENvbnRleHQpO1xuICAgICAgICBzdHlsZXIodGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzLCBBUFBMWV9TVFlMRVNfVFlQRS5DT05UQUlORVIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHRoaXMgaXMgb25Qcm9wZXJ0eUNoYW5nZSBoYW5kbGVyIGZvciB0aGUgZm9ybS1ncm91cCBjb21wb25lbnRcbiAgICAgKiBAcGFyYW0ga2V5XG4gICAgICogQHBhcmFtIG52XG4gICAgICogQHBhcmFtIG92XG4gICAgICovXG4gICAgb25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdikge1xuICAgICAgICBpZiAoa2V5ID09PSAnY2FwdGlvbnBvc2l0aW9uJykge1xuICAgICAgICAgICAgc3dpdGNoQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCBDQVBUSU9OX1BPU0lUSU9OW252XSwgQ0FQVElPTl9QT1NJVElPTltvdl0pO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ3JlcXVpcmVkJykge1xuICAgICAgICAgICAgdGhpcy5yZXF1aXJlZCA9IG52O1xuICAgICAgICAgICAgdGhpcy5hc3NpZ25SZXF1aXJlZFRvU3ViQ29tcG9uZW50cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB0aGlzIG1ldGhvZCBhc3NpZ25zIHRoZSByZXF1aXJlZCBvbiB0aGUgY29tcG9uZW50L2RpcmVjdGl2ZSBiYXNlZCBvbiB0aGUgcmVxdWlyZWQgYXR0cmlidXRlIG9mIHRoZSBmb3JtLWdyb3VwXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFzc2lnblJlcXVpcmVkVG9TdWJDb21wb25lbnRzKCkge1xuICAgICAgICBpZiAodGhpcy5yZXF1aXJlZCAmJiB0aGlzLmNvbXBvbmVudFJlZnMpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZnMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWZzLmZvckVhY2goY29tcG9uZW50UmVmID0+IGNvbXBvbmVudFJlZi53aWRnZXQucmVxdWlyZWQgPSB0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCA1MCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICBhZGRGb3JJZEF0dHJpYnV0ZXModGhpcy5uYXRpdmVFbGVtZW50KTtcblxuICAgICAgICB0aGlzLmFzc2lnblJlcXVpcmVkVG9TdWJDb21wb25lbnRzKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIC8vIE1FTU9SWSBMRUFLIEZJWDogQ2xlYXIgQ29udGVudENoaWxkcmVuIFF1ZXJ5TGlzdCByZWZlcmVuY2VcbiAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmcykge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWZzID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIl19
@@ -53,7 +53,9 @@ class CompositeDirective extends StylableComponent {
53
53
  assignRequiredToSubComponents() {
54
54
  if (this.required && this.componentRefs) {
55
55
  setTimeout(() => {
56
- this.componentRefs.forEach(componentRef => componentRef.widget.required = true);
56
+ if (this.componentRefs) {
57
+ this.componentRefs.forEach(componentRef => componentRef.widget.required = true);
58
+ }
57
59
  }, 50);
58
60
  }
59
61
  }
@@ -62,6 +64,13 @@ class CompositeDirective extends StylableComponent {
62
64
  addForIdAttributes(this.nativeElement);
63
65
  this.assignRequiredToSubComponents();
64
66
  }
67
+ ngOnDestroy() {
68
+ // MEMORY LEAK FIX: Clear ContentChildren QueryList reference
69
+ if (this.componentRefs) {
70
+ this.componentRefs = null;
71
+ }
72
+ super.ngOnDestroy();
73
+ }
65
74
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CompositeDirective, deps: [{ token: i0.Injector }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
66
75
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: CompositeDirective, isStandalone: true, selector: "div[wmComposite]", providers: [
67
76
  provideAsWidgetRef(CompositeDirective)
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/input/composite/src/composite.props.ts","../../../../../projects/components/widgets/input/composite/src/composite.directive.ts","../../../../../projects/components/widgets/input/composite/src/index.ts"],"sourcesContent":["import { PROP_BOOLEAN, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-form-group',\n new Map(\n [\n ['captionposition', PROP_STRING],\n ['name', PROP_STRING],\n ['required', PROP_BOOLEAN],\n ['show', {value: true, ...PROP_BOOLEAN}]\n ]\n )\n );\n};\n","import {AfterViewInit, ContentChildren, Directive, Inject, Injector, Optional} from '@angular/core';\n\nimport {addForIdAttributes, switchClass} from '@wm/core';\n\nimport { APPLY_STYLES_TYPE, IWidgetConfig, provideAsWidgetRef, StylableComponent, styler, WidgetRef } from '@wm/components/base';\n\nimport { registerProps } from './composite.props';\n\ndeclare const $;\n\nconst DEFAULT_CLS = 'form-group app-composite-widget clearfix';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-form-group',\n hostClass: DEFAULT_CLS\n};\n\nconst CAPTION_POSITION = {\n left: 'caption-left',\n right: 'caption-right',\n top: 'caption-top',\n floating: 'caption-floating'\n};\n\n@Directive({\n standalone: true,\n selector: 'div[wmComposite]',\n providers: [\n provideAsWidgetRef(CompositeDirective)\n ]\n})\nexport class CompositeDirective extends StylableComponent implements AfterViewInit {\n static initializeProps = registerProps();\n\n // this is the reference to the component refs inside the form-group\n @ContentChildren(WidgetRef, {descendants: true}) componentRefs;\n\n public required: boolean;\n\n constructor(inj: Injector, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n styler(this.nativeElement, this, APPLY_STYLES_TYPE.CONTAINER);\n }\n\n /**\n * this is onPropertyChange handler for the form-group component\n * @param key\n * @param nv\n * @param ov\n */\n onPropertyChange(key, nv, ov) {\n if (key === 'captionposition') {\n switchClass(this.nativeElement, CAPTION_POSITION[nv], CAPTION_POSITION[ov]);\n } else if (key === 'required') {\n this.required = nv;\n this.assignRequiredToSubComponents();\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n /**\n * this method assigns the required on the component/directive based on the required attribute of the form-group\n */\n protected assignRequiredToSubComponents() {\n if (this.required && this.componentRefs) {\n setTimeout(() => {\n this.componentRefs.forEach(componentRef => componentRef.widget.required = true);\n }, 50);\n }\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n addForIdAttributes(this.nativeElement);\n\n this.assignRequiredToSubComponents();\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/composite/src/composite.props.ts","../../../../../projects/components/widgets/input/composite/src/composite.directive.ts","../../../../../projects/components/widgets/input/composite/src/index.ts"],"sourcesContent":["import { PROP_BOOLEAN, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-form-group',\n new Map(\n [\n ['captionposition', PROP_STRING],\n ['name', PROP_STRING],\n ['required', PROP_BOOLEAN],\n ['show', {value: true, ...PROP_BOOLEAN}]\n ]\n )\n );\n};\n","import {AfterViewInit, ContentChildren, Directive, Inject, Injector, OnDestroy, Optional} from '@angular/core';\n\nimport {addForIdAttributes, switchClass} from '@wm/core';\n\nimport { APPLY_STYLES_TYPE, IWidgetConfig, provideAsWidgetRef, StylableComponent, styler, WidgetRef } from '@wm/components/base';\n\nimport { registerProps } from './composite.props';\n\ndeclare const $;\n\nconst DEFAULT_CLS = 'form-group app-composite-widget clearfix';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-form-group',\n hostClass: DEFAULT_CLS\n};\n\nconst CAPTION_POSITION = {\n left: 'caption-left',\n right: 'caption-right',\n top: 'caption-top',\n floating: 'caption-floating'\n};\n\n@Directive({\n standalone: true,\n selector: 'div[wmComposite]',\n providers: [\n provideAsWidgetRef(CompositeDirective)\n ]\n})\nexport class CompositeDirective extends StylableComponent implements AfterViewInit, OnDestroy {\n static initializeProps = registerProps();\n\n // this is the reference to the component refs inside the form-group\n @ContentChildren(WidgetRef, {descendants: true}) componentRefs;\n\n public required: boolean;\n\n constructor(inj: Injector, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n styler(this.nativeElement, this, APPLY_STYLES_TYPE.CONTAINER);\n }\n\n /**\n * this is onPropertyChange handler for the form-group component\n * @param key\n * @param nv\n * @param ov\n */\n onPropertyChange(key, nv, ov) {\n if (key === 'captionposition') {\n switchClass(this.nativeElement, CAPTION_POSITION[nv], CAPTION_POSITION[ov]);\n } else if (key === 'required') {\n this.required = nv;\n this.assignRequiredToSubComponents();\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n /**\n * this method assigns the required on the component/directive based on the required attribute of the form-group\n */\n protected assignRequiredToSubComponents() {\n if (this.required && this.componentRefs) {\n setTimeout(() => {\n if (this.componentRefs) {\n this.componentRefs.forEach(componentRef => componentRef.widget.required = true);\n }\n }, 50);\n }\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n addForIdAttributes(this.nativeElement);\n\n this.assignRequiredToSubComponents();\n }\n\n ngOnDestroy() {\n // MEMORY LEAK FIX: Clear ContentChildren QueryList reference\n if (this.componentRefs) {\n this.componentRefs = null;\n }\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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"}
@@ -73,6 +73,13 @@
73
73
  super.onPropertyChange(key, nv, ov);
74
74
  }
75
75
  }
76
+ ngOnDestroy() {
77
+ // MEMORY LEAK FIX: Clear ViewChild references
78
+ this.ngModel = null;
79
+ this.inputEl = null;
80
+ // Call parent ngOnDestroy (NumberLocale → StylableComponent → BaseComponent)
81
+ super.ngOnDestroy();
82
+ }
76
83
  static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: CurrencyComponent, deps: [{ token: i0__namespace.Injector }, { token: i1__namespace.AppDefaults }, { token: i1__namespace.AbstractI18nService }, { token: i2__namespace.TrailingZeroDecimalPipe }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component }); }
77
84
  static { this.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CurrencyComponent, isStandalone: true, selector: "[wmCurrency]", providers: [
78
85
  i2.provideAs(CurrencyComponent, i3.NG_VALUE_ACCESSOR, true),
@@ -1,10 +1,10 @@
1
- import { ElementRef, Injector } from '@angular/core';
1
+ import { ElementRef, Injector, OnDestroy } from '@angular/core';
2
2
  import { NgModel } from '@angular/forms';
3
3
  import { AbstractI18nService, AppDefaults } from '@wm/core';
4
4
  import { TrailingZeroDecimalPipe } from '@wm/components/base';
5
5
  import { NumberLocale } from '@wm/components/input/text';
6
6
  import * as i0 from "@angular/core";
7
- export declare class CurrencyComponent extends NumberLocale {
7
+ export declare class CurrencyComponent extends NumberLocale implements OnDestroy {
8
8
  private appDefaults;
9
9
  static initializeProps: void;
10
10
  currencyCode: string;
@@ -22,6 +22,7 @@ export declare class CurrencyComponent extends NumberLocale {
22
22
  inputEl: ElementRef;
23
23
  constructor(inj: Injector, appDefaults: AppDefaults, i18nService: AbstractI18nService, trailingZeroDecimalPipe: TrailingZeroDecimalPipe, explicitContext: any);
24
24
  onPropertyChange(key: string, nv: any, ov?: any): void;
25
+ ngOnDestroy(): void;
25
26
  static ɵfac: i0.ɵɵFactoryDeclaration<CurrencyComponent, [null, null, null, null, { optional: true; }]>;
26
27
  static ɵcmp: i0.ɵɵComponentDeclaration<CurrencyComponent, "[wmCurrency]", never, {}, {}, never, never, true, never>;
27
28
  }
@@ -31,6 +31,13 @@ export class CurrencyComponent extends NumberLocale {
31
31
  super.onPropertyChange(key, nv, ov);
32
32
  }
33
33
  }
34
+ ngOnDestroy() {
35
+ // MEMORY LEAK FIX: Clear ViewChild references
36
+ this.ngModel = null;
37
+ this.inputEl = null;
38
+ // Call parent ngOnDestroy (NumberLocale → StylableComponent → BaseComponent)
39
+ super.ngOnDestroy();
40
+ }
34
41
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CurrencyComponent, deps: [{ token: i0.Injector }, { token: i1.AppDefaults }, { token: i1.AbstractI18nService }, { token: i2.TrailingZeroDecimalPipe }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
35
42
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CurrencyComponent, isStandalone: true, selector: "[wmCurrency]", providers: [
36
43
  provideAs(CurrencyComponent, NG_VALUE_ACCESSOR, true),
@@ -57,4 +64,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
57
64
  type: ViewChild,
58
65
  args: ['input', { static: true, read: ElementRef }]
59
66
  }] } });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3kuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2lucHV0L2N1cnJlbmN5L3NyYy9jdXJyZW5jeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvY3VycmVuY3kvc3JjL2N1cnJlbmN5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFDLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUN6RSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSx1QkFBdUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ2hJLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7Ozs7O0FBRS9DLE1BQU0sV0FBVyxHQUFHLDBCQUEwQixDQUFDO0FBRS9DLE1BQU0sYUFBYSxHQUFrQjtJQUNqQyxVQUFVLEVBQUUsYUFBYTtJQUN6QixTQUFTLEVBQUUsV0FBVztDQUN6QixDQUFDO0FBYUYsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFlBQVk7YUFDeEMsb0JBQWUsR0FBRyxhQUFhLEVBQUUsQUFBbEIsQ0FBbUI7SUFpQnpDLFlBQVksR0FBYSxFQUFXLFdBQXdCLEVBQUUsV0FBZ0MsRUFBRSx1QkFBZ0QsRUFBMEMsZUFBb0I7UUFDMU0sS0FBSyxDQUFDLEdBQUcsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLHVCQUF1QixFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBRGpELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRXhELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLElBQUksS0FBSyxDQUFDO1FBQzNELElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN2RixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FBVyxFQUFFLEVBQU8sRUFBRSxFQUFRO1FBQzNDLElBQUksR0FBRyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDbEcsQ0FBQzthQUFNLENBQUM7WUFDSixLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0wsQ0FBQzsrR0EvQlEsaUJBQWlCLCtJQWtCZ0ksa0JBQWtCO21HQWxCbkssaUJBQWlCLDJEQU5mO1lBQ1AsU0FBUyxDQUFDLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLElBQUksQ0FBQztZQUNyRCxTQUFTLENBQUMsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQztZQUNqRCxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQztTQUN4QyxtRUFpQlUsT0FBTyw0SEFDd0IsVUFBVSxrRUM1Q3hELHFwQ0E2QkEsNENEVlksb0JBQW9CLGtGQUFFLFdBQVc7OzRGQVNoQyxpQkFBaUI7a0JBWDdCLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUMsb0JBQW9CLEVBQUUsV0FBVyxDQUFDLFlBQ2hDLGNBQWMsYUFFYjt3QkFDUCxTQUFTLG9CQUFvQixpQkFBaUIsRUFBRSxJQUFJLENBQUM7d0JBQ3JELFNBQVMsb0JBQW9CLGFBQWEsRUFBRSxJQUFJLENBQUM7d0JBQ2pELGtCQUFrQixtQkFBbUI7cUJBQ3hDOzswQkFvQmtKLE1BQU07MkJBQUMsa0JBQWtCOzswQkFBRyxRQUFRO3lDQUhuSixPQUFPO3NCQUExQyxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBQ3NCLE9BQU87c0JBQTlELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0NvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0LCBJbmplY3RvciwgT3B0aW9uYWwsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBOZ01vZGVsfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7QWJzdHJhY3RJMThuU2VydmljZSwgQXBwRGVmYXVsdHMsIENVUlJFTkNZX0lORk99IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7SVdpZGdldENvbmZpZywgcHJvdmlkZUFzLCBwcm92aWRlQXNXaWRnZXRSZWYsIFRleHRDb250ZW50RGlyZWN0aXZlLCBUcmFpbGluZ1plcm9EZWNpbWFsUGlwZX0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQgeyBOdW1iZXJMb2NhbGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9pbnB1dC90ZXh0JztcblxuaW1wb3J0IHtyZWdpc3RlclByb3BzfSBmcm9tICcuL2N1cnJlbmN5LnByb3BzJztcblxuY29uc3QgREVGQVVMVF9DTFMgPSAnaW5wdXQtZ3JvdXAgYXBwLWN1cnJlbmN5JztcblxuY29uc3QgV0lER0VUX0NPTkZJRzogSVdpZGdldENvbmZpZyA9IHtcbiAgICB3aWRnZXRUeXBlOiAnd20tY3VycmVuY3knLFxuICAgIGhvc3RDbGFzczogREVGQVVMVF9DTFNcbn07XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbVGV4dENvbnRlbnREaXJlY3RpdmUsIEZvcm1zTW9kdWxlXSxcbiAgICBzZWxlY3RvcjogJ1t3bUN1cnJlbmN5XScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2N1cnJlbmN5LmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzKEN1cnJlbmN5Q29tcG9uZW50LCBOR19WQUxVRV9BQ0NFU1NPUiwgdHJ1ZSksXG4gICAgICAgIHByb3ZpZGVBcyhDdXJyZW5jeUNvbXBvbmVudCwgTkdfVkFMSURBVE9SUywgdHJ1ZSksXG4gICAgICAgIHByb3ZpZGVBc1dpZGdldFJlZihDdXJyZW5jeUNvbXBvbmVudClcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEN1cnJlbmN5Q29tcG9uZW50IGV4dGVuZHMgTnVtYmVyTG9jYWxlIHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuXG4gICAgY3VycmVuY3lDb2RlOiBzdHJpbmc7XG4gICAgY3VycmVuY3lTeW1ib2w6IHN0cmluZztcbiAgICBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW47XG4gICAgcHVibGljIHJlZ2V4cDogYW55O1xuICAgIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbjtcbiAgICBwdWJsaWMgYXV0b2ZvY3VzOiBib29sZWFuO1xuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG4gICAgcHVibGljIHRhYmluZGV4OiBhbnk7XG4gICAgcHVibGljIHNob3J0Y3V0a2V5OiBzdHJpbmc7XG4gICAgcHVibGljIGhpbnQ6IHN0cmluZztcbiAgICBwdWJsaWMgYXJpYWxhYmVsOiBzdHJpbmc7XG5cbiAgICBAVmlld0NoaWxkKE5nTW9kZWwsIHtzdGF0aWM6IHRydWV9KSBuZ01vZGVsOiBOZ01vZGVsO1xuICAgIEBWaWV3Q2hpbGQoJ2lucHV0JywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSkgaW5wdXRFbDogRWxlbWVudFJlZjtcblxuICAgIGNvbnN0cnVjdG9yKGluajogSW5qZWN0b3IsICBwcml2YXRlIGFwcERlZmF1bHRzOiBBcHBEZWZhdWx0cywgaTE4blNlcnZpY2U6IEFic3RyYWN0STE4blNlcnZpY2UsIHRyYWlsaW5nWmVyb0RlY2ltYWxQaXBlOiBUcmFpbGluZ1plcm9EZWNpbWFsUGlwZSwgQEluamVjdCgnRVhQTElDSVRfQ09OVEVYVCcpIEBPcHRpb25hbCgpIGV4cGxpY2l0Q29udGV4dDogYW55KSB7XG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRywgaTE4blNlcnZpY2UsIHRyYWlsaW5nWmVyb0RlY2ltYWxQaXBlLCBleHBsaWNpdENvbnRleHQpO1xuICAgICAgICB0aGlzLmN1cnJlbmN5Q29kZSA9IHRoaXMuYXBwRGVmYXVsdHMuY3VycmVuY3lDb2RlIHx8ICdVU0QnO1xuICAgICAgICB0aGlzLmN1cnJlbmN5U3ltYm9sID0gQ1VSUkVOQ1lfSU5GT1t0aGlzLmFwcERlZmF1bHRzLmN1cnJlbmN5Q29kZSB8fCBcIlVTRFwiXS5zeW1ib2w7XG4gICAgfVxuXG4gICAgb25Qcm9wZXJ0eUNoYW5nZShrZXk6IHN0cmluZywgbnY6IGFueSwgb3Y/OiBhbnkpIHtcbiAgICAgICAgaWYgKGtleSA9PT0gJ2N1cnJlbmN5Jykge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW5jeUNvZGUgPSBudjtcbiAgICAgICAgICAgIHRoaXMuY3VycmVuY3lTeW1ib2wgPSBDVVJSRU5DWV9JTkZPW3RoaXMuY3VycmVuY3lDb2RlfHwgdGhpcy5hcHBEZWZhdWx0cy5jdXJyZW5jeUNvZGVdLnN5bWJvbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1hZGRvblwiIFt0ZXh0Q29udGVudF09XCJjdXJyZW5jeVN5bWJvbFwiPjwvc3Bhbj5cbjxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBhcHAtdGV4dGJveCBhcHAtY3VycmVuY3ktaW5wdXRcIlxuICAgICAgICNpbnB1dFxuICAgICAgIHJvbGU9XCJ0ZXh0Ym94XCJcbiAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgaW5wdXRtb2RlPVwiZGVjaW1hbFwiXG4gICAgICAgZm9jdXMtdGFyZ2V0XG4gICAgICAgW2F1dG9mb2N1c109XCJhdXRvZm9jdXNcIlxuICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgIFtwYXR0ZXJuXT1cInJlZ2V4cFwiXG4gICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFsYWJlbCB8fCBjdXJyZW5jeUNvZGVcIlxuICAgICAgIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgW2F0dHIuYWNjZXNza2V5XT1cInNob3J0Y3V0a2V5XCJcbiAgICAgICBbbmdNb2RlbF09XCJkaXNwbGF5VmFsdWVcIlxuICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJuZ01vZGVsT3B0aW9uc1wiXG5cbiAgICAgICAoZm9jdXMpPVwiY2hlY2tGb3JUcmFpbGluZ1plcm9zKCRldmVudClcIlxuICAgICAgIChpbnB1dCk9XCJvbklucHV0Q2hhbmdlKCRldmVudC50YXJnZXQudmFsdWUpXCJcbiAgICAgICAocGFzdGUpPVwib25QYXN0ZSgkZXZlbnQpXCJcbiAgICAgICAoYmx1cik9XCJoYW5kbGVCbHVyKCRldmVudCk7IGNoZWNrRm9yVHJhaWxpbmdaZXJvcygkZXZlbnQpO1wiXG4gICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Nb2RlbENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAoa2V5ZG93bik9XCJ2YWxpZGF0ZUlucHV0RW50cnkoJGV2ZW50KTtcIlxuICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uRW50ZXIoJGV2ZW50KVwiXG4gICAgICAgKGtleWRvd24uQXJyb3dVcCk9XCJvbkFycm93UHJlc3MoJGV2ZW50LCAnVVAnKVwiXG4gICAgICAgKGtleWRvd24uQXJyb3dEb3duKT1cIm9uQXJyb3dQcmVzcygkZXZlbnQsICdET1dOJylcIj5cbiJdfQ==
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3kuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2lucHV0L2N1cnJlbmN5L3NyYy9jdXJyZW5jeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvY3VycmVuY3kvc3JjL2N1cnJlbmN5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFhLFFBQVEsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUFDLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUN6RSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSx1QkFBdUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ2hJLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7Ozs7O0FBRS9DLE1BQU0sV0FBVyxHQUFHLDBCQUEwQixDQUFDO0FBRS9DLE1BQU0sYUFBYSxHQUFrQjtJQUNqQyxVQUFVLEVBQUUsYUFBYTtJQUN6QixTQUFTLEVBQUUsV0FBVztDQUN6QixDQUFDO0FBYUYsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFlBQVk7YUFDeEMsb0JBQWUsR0FBRyxhQUFhLEVBQUUsQUFBbEIsQ0FBbUI7SUFpQnpDLFlBQVksR0FBYSxFQUFXLFdBQXdCLEVBQUUsV0FBZ0MsRUFBRSx1QkFBZ0QsRUFBMEMsZUFBb0I7UUFDMU0sS0FBSyxDQUFDLEdBQUcsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLHVCQUF1QixFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBRGpELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBRXhELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLElBQUksS0FBSyxDQUFDO1FBQzNELElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN2RixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FBVyxFQUFFLEVBQU8sRUFBRSxFQUFRO1FBQzNDLElBQUksR0FBRyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDbEcsQ0FBQzthQUFNLENBQUM7WUFDSixLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCw4Q0FBOEM7UUFDOUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFFcEIsNkVBQTZFO1FBQzdFLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixDQUFDOytHQXhDUSxpQkFBaUIsK0lBa0JnSSxrQkFBa0I7bUdBbEJuSyxpQkFBaUIsMkRBTmY7WUFDUCxTQUFTLENBQUMsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDO1lBQ3JELFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDO1lBQ2pELGtCQUFrQixDQUFDLGlCQUFpQixDQUFDO1NBQ3hDLG1FQWlCVSxPQUFPLDRIQUN3QixVQUFVLGtFQzVDeEQscXBDQTZCQSw0Q0RWWSxvQkFBb0Isa0ZBQUUsV0FBVzs7NEZBU2hDLGlCQUFpQjtrQkFYN0IsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxvQkFBb0IsRUFBRSxXQUFXLENBQUMsWUFDaEMsY0FBYyxhQUViO3dCQUNQLFNBQVMsb0JBQW9CLGlCQUFpQixFQUFFLElBQUksQ0FBQzt3QkFDckQsU0FBUyxvQkFBb0IsYUFBYSxFQUFFLElBQUksQ0FBQzt3QkFDakQsa0JBQWtCLG1CQUFtQjtxQkFDeEM7OzBCQW9Ca0osTUFBTTsyQkFBQyxrQkFBa0I7OzBCQUFHLFFBQVE7eUNBSG5KLE9BQU87c0JBQTFDLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFDc0IsT0FBTztzQkFBOUQsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiwgTmdNb2RlbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge0Fic3RyYWN0STE4blNlcnZpY2UsIEFwcERlZmF1bHRzLCBDVVJSRU5DWV9JTkZPfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQge0lXaWRnZXRDb25maWcsIHByb3ZpZGVBcywgcHJvdmlkZUFzV2lkZ2V0UmVmLCBUZXh0Q29udGVudERpcmVjdGl2ZSwgVHJhaWxpbmdaZXJvRGVjaW1hbFBpcGV9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHsgTnVtYmVyTG9jYWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvaW5wdXQvdGV4dCc7XG5cbmltcG9ydCB7cmVnaXN0ZXJQcm9wc30gZnJvbSAnLi9jdXJyZW5jeS5wcm9wcyc7XG5cbmNvbnN0IERFRkFVTFRfQ0xTID0gJ2lucHV0LWdyb3VwIGFwcC1jdXJyZW5jeSc7XG5cbmNvbnN0IFdJREdFVF9DT05GSUc6IElXaWRnZXRDb25maWcgPSB7XG4gICAgd2lkZ2V0VHlwZTogJ3dtLWN1cnJlbmN5JyxcbiAgICBob3N0Q2xhc3M6IERFRkFVTFRfQ0xTXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1RleHRDb250ZW50RGlyZWN0aXZlLCBGb3Jtc01vZHVsZV0sXG4gICAgc2VsZWN0b3I6ICdbd21DdXJyZW5jeV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jdXJyZW5jeS5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVBcyhDdXJyZW5jeUNvbXBvbmVudCwgTkdfVkFMVUVfQUNDRVNTT1IsIHRydWUpLFxuICAgICAgICBwcm92aWRlQXMoQ3VycmVuY3lDb21wb25lbnQsIE5HX1ZBTElEQVRPUlMsIHRydWUpLFxuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoQ3VycmVuY3lDb21wb25lbnQpXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBDdXJyZW5jeUNvbXBvbmVudCBleHRlbmRzIE51bWJlckxvY2FsZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcblxuICAgIGN1cnJlbmN5Q29kZTogc3RyaW5nO1xuICAgIGN1cnJlbmN5U3ltYm9sOiBzdHJpbmc7XG4gICAgcHVibGljIHJlcXVpcmVkOiBib29sZWFuO1xuICAgIHB1YmxpYyByZWdleHA6IGFueTtcbiAgICBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW47XG4gICAgcHVibGljIGF1dG9mb2N1czogYm9vbGVhbjtcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICAgIHB1YmxpYyB0YWJpbmRleDogYW55O1xuICAgIHB1YmxpYyBzaG9ydGN1dGtleTogc3RyaW5nO1xuICAgIHB1YmxpYyBoaW50OiBzdHJpbmc7XG4gICAgcHVibGljIGFyaWFsYWJlbDogc3RyaW5nO1xuXG4gICAgQFZpZXdDaGlsZChOZ01vZGVsLCB7c3RhdGljOiB0cnVlfSkgbmdNb2RlbDogTmdNb2RlbDtcbiAgICBAVmlld0NoaWxkKCdpbnB1dCcsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pIGlucHV0RWw6IEVsZW1lbnRSZWY7XG5cbiAgICBjb25zdHJ1Y3Rvcihpbmo6IEluamVjdG9yLCAgcHJpdmF0ZSBhcHBEZWZhdWx0czogQXBwRGVmYXVsdHMsIGkxOG5TZXJ2aWNlOiBBYnN0cmFjdEkxOG5TZXJ2aWNlLCB0cmFpbGluZ1plcm9EZWNpbWFsUGlwZTogVHJhaWxpbmdaZXJvRGVjaW1hbFBpcGUsIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueSkge1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcsIGkxOG5TZXJ2aWNlLCB0cmFpbGluZ1plcm9EZWNpbWFsUGlwZSwgZXhwbGljaXRDb250ZXh0KTtcbiAgICAgICAgdGhpcy5jdXJyZW5jeUNvZGUgPSB0aGlzLmFwcERlZmF1bHRzLmN1cnJlbmN5Q29kZSB8fCAnVVNEJztcbiAgICAgICAgdGhpcy5jdXJyZW5jeVN5bWJvbCA9IENVUlJFTkNZX0lORk9bdGhpcy5hcHBEZWZhdWx0cy5jdXJyZW5jeUNvZGUgfHwgXCJVU0RcIl0uc3ltYm9sO1xuICAgIH1cblxuICAgIG9uUHJvcGVydHlDaGFuZ2Uoa2V5OiBzdHJpbmcsIG52OiBhbnksIG92PzogYW55KSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdjdXJyZW5jeScpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVuY3lDb2RlID0gbnY7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbmN5U3ltYm9sID0gQ1VSUkVOQ1lfSU5GT1t0aGlzLmN1cnJlbmN5Q29kZXx8IHRoaXMuYXBwRGVmYXVsdHMuY3VycmVuY3lDb2RlXS5zeW1ib2w7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IENsZWFyIFZpZXdDaGlsZCByZWZlcmVuY2VzXG4gICAgICAgIHRoaXMubmdNb2RlbCA9IG51bGw7XG4gICAgICAgIHRoaXMuaW5wdXRFbCA9IG51bGw7XG5cbiAgICAgICAgLy8gQ2FsbCBwYXJlbnQgbmdPbkRlc3Ryb3kgKE51bWJlckxvY2FsZSDihpIgU3R5bGFibGVDb21wb25lbnQg4oaSIEJhc2VDb21wb25lbnQpXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIiwiPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1hZGRvblwiIFt0ZXh0Q29udGVudF09XCJjdXJyZW5jeVN5bWJvbFwiPjwvc3Bhbj5cbjxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBhcHAtdGV4dGJveCBhcHAtY3VycmVuY3ktaW5wdXRcIlxuICAgICAgICNpbnB1dFxuICAgICAgIHJvbGU9XCJ0ZXh0Ym94XCJcbiAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgaW5wdXRtb2RlPVwiZGVjaW1hbFwiXG4gICAgICAgZm9jdXMtdGFyZ2V0XG4gICAgICAgW2F1dG9mb2N1c109XCJhdXRvZm9jdXNcIlxuICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgIFtwYXR0ZXJuXT1cInJlZ2V4cFwiXG4gICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFsYWJlbCB8fCBjdXJyZW5jeUNvZGVcIlxuICAgICAgIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgW2F0dHIuYWNjZXNza2V5XT1cInNob3J0Y3V0a2V5XCJcbiAgICAgICBbbmdNb2RlbF09XCJkaXNwbGF5VmFsdWVcIlxuICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJuZ01vZGVsT3B0aW9uc1wiXG5cbiAgICAgICAoZm9jdXMpPVwiY2hlY2tGb3JUcmFpbGluZ1plcm9zKCRldmVudClcIlxuICAgICAgIChpbnB1dCk9XCJvbklucHV0Q2hhbmdlKCRldmVudC50YXJnZXQudmFsdWUpXCJcbiAgICAgICAocGFzdGUpPVwib25QYXN0ZSgkZXZlbnQpXCJcbiAgICAgICAoYmx1cik9XCJoYW5kbGVCbHVyKCRldmVudCk7IGNoZWNrRm9yVHJhaWxpbmdaZXJvcygkZXZlbnQpO1wiXG4gICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Nb2RlbENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAoa2V5ZG93bik9XCJ2YWxpZGF0ZUlucHV0RW50cnkoJGV2ZW50KTtcIlxuICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uRW50ZXIoJGV2ZW50KVwiXG4gICAgICAgKGtleWRvd24uQXJyb3dVcCk9XCJvbkFycm93UHJlc3MoJGV2ZW50LCAnVVAnKVwiXG4gICAgICAgKGtleWRvd24uQXJyb3dEb3duKT1cIm9uQXJyb3dQcmVzcygkZXZlbnQsICdET1dOJylcIj5cbiJdfQ==
@@ -55,6 +55,13 @@ class CurrencyComponent extends NumberLocale {
55
55
  super.onPropertyChange(key, nv, ov);
56
56
  }
57
57
  }
58
+ ngOnDestroy() {
59
+ // MEMORY LEAK FIX: Clear ViewChild references
60
+ this.ngModel = null;
61
+ this.inputEl = null;
62
+ // Call parent ngOnDestroy (NumberLocale → StylableComponent → BaseComponent)
63
+ super.ngOnDestroy();
64
+ }
58
65
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CurrencyComponent, deps: [{ token: i0.Injector }, { token: i1.AppDefaults }, { token: i1.AbstractI18nService }, { token: i2.TrailingZeroDecimalPipe }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
59
66
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CurrencyComponent, isStandalone: true, selector: "[wmCurrency]", providers: [
60
67
  provideAs(CurrencyComponent, NG_VALUE_ACCESSOR, true),
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/input/currency/src/currency.props.ts","../../../../../projects/components/widgets/input/currency/src/currency.component.ts","../../../../../projects/components/widgets/input/currency/src/currency.component.html","../../../../../projects/components/widgets/input/currency/src/index.ts"],"sourcesContent":["import {PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register, registerFormWidget} from '@wm/components/base';\nimport {FormWidgetType} from '@wm/core';\n\nexport const currencyProps = new Map(\n [\n ['class', PROP_STRING],\n ['currency', PROP_STRING],\n ['datavalue', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['hint', PROP_STRING],\n ['arialabel', PROP_STRING],\n ['maxvalue', PROP_NUMBER],\n ['minvalue', PROP_NUMBER],\n ['name', PROP_STRING],\n ['placeholder', {value: 'Enter value', ...PROP_STRING}],\n ['readonly', PROP_BOOLEAN],\n ['required', PROP_BOOLEAN],\n ['shortcutkey', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['step', {value: 1, ...PROP_NUMBER}],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['trailingzero', {value: false, ...PROP_BOOLEAN}],\n ['inputmode', {value: 'natural', ...PROP_STRING}]\n ]\n);\n\nexport const registerProps = () => {\n register(\n 'wm-currency',\n currencyProps\n );\n registerFormWidget(\n FormWidgetType.CURRENCY,\n new Map(currencyProps)\n );\n};\n","import { FormsModule } from '@angular/forms';\nimport {Component, ElementRef, Inject, Injector, Optional, ViewChild} from '@angular/core';\nimport {NG_VALIDATORS, NG_VALUE_ACCESSOR, NgModel} from '@angular/forms';\n\nimport {AbstractI18nService, AppDefaults, CURRENCY_INFO} from '@wm/core';\nimport {IWidgetConfig, provideAs, provideAsWidgetRef, TextContentDirective, TrailingZeroDecimalPipe} from '@wm/components/base';\nimport { NumberLocale } from '@wm/components/input/text';\n\nimport {registerProps} from './currency.props';\n\nconst DEFAULT_CLS = 'input-group app-currency';\n\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-currency',\n hostClass: DEFAULT_CLS\n};\n\n@Component({\n standalone: true,\n imports: [TextContentDirective, FormsModule],\n selector: '[wmCurrency]',\n templateUrl: './currency.component.html',\n providers: [\n provideAs(CurrencyComponent, NG_VALUE_ACCESSOR, true),\n provideAs(CurrencyComponent, NG_VALIDATORS, true),\n provideAsWidgetRef(CurrencyComponent)\n ]\n})\nexport class CurrencyComponent extends NumberLocale {\n static initializeProps = registerProps();\n\n currencyCode: string;\n currencySymbol: string;\n public required: boolean;\n public regexp: any;\n public disabled: boolean;\n public autofocus: boolean;\n public name: string;\n public tabindex: any;\n public shortcutkey: string;\n public hint: string;\n public arialabel: string;\n\n @ViewChild(NgModel, {static: true}) ngModel: NgModel;\n @ViewChild('input', { static: true, read: ElementRef }) inputEl: ElementRef;\n\n constructor(inj: Injector, private appDefaults: AppDefaults, i18nService: AbstractI18nService, trailingZeroDecimalPipe: TrailingZeroDecimalPipe, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, i18nService, trailingZeroDecimalPipe, explicitContext);\n this.currencyCode = this.appDefaults.currencyCode || 'USD';\n this.currencySymbol = CURRENCY_INFO[this.appDefaults.currencyCode || \"USD\"].symbol;\n }\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'currency') {\n this.currencyCode = nv;\n this.currencySymbol = CURRENCY_INFO[this.currencyCode|| this.appDefaults.currencyCode].symbol;\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n}\n","<span class=\"input-group-addon\" [textContent]=\"currencySymbol\"></span>\n<input class=\"form-control app-textbox app-currency-input\"\n #input\n role=\"textbox\"\n type=\"text\"\n inputmode=\"decimal\"\n focus-target\n [autofocus]=\"autofocus\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [pattern]=\"regexp\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"arialabel || currencyCode\"\n [attr.tabindex]=\"tabindex\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [ngModel]=\"displayValue\"\n [ngModelOptions]=\"ngModelOptions\"\n\n (focus)=\"checkForTrailingZeros($event)\"\n (input)=\"onInputChange($event.target.value)\"\n (paste)=\"onPaste($event)\"\n (blur)=\"handleBlur($event); checkForTrailingZeros($event);\"\n (ngModelChange)=\"onModelChange($event)\"\n (keydown)=\"validateInputEntry($event);\"\n (keydown.enter)=\"onEnter($event)\"\n (keydown.ArrowUp)=\"onArrowPress($event, 'UP')\"\n (keydown.ArrowDown)=\"onArrowPress($event, 'DOWN')\">\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;AAGO,MAAM,aAAa,GAAG,IAAI,GAAG,CAChC;IACI,CAAC,OAAO,EAAE,WAAW,CAAC;IACtB,CAAC,UAAU,EAAE,WAAW,CAAC;IACzB,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1B,CAAC,UAAU,EAAE,YAAY,CAAC;IAC1B,CAAC,MAAM,EAAE,WAAW,CAAC;IACrB,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1B,CAAC,UAAU,EAAE,WAAW,CAAC;IACzB,CAAC,UAAU,EAAE,WAAW,CAAC;IACzB,CAAC,MAAM,EAAE,WAAW,CAAC;IACrB,CAAC,aAAa,EAAE,EAAC,KAAK,EAAE,aAAa,EAAE,GAAG,WAAW,EAAC,CAAC;IACvD,CAAC,UAAU,EAAE,YAAY,CAAC;IAC1B,CAAC,UAAU,EAAE,YAAY,CAAC;IAC1B,CAAC,aAAa,EAAE,WAAW,CAAC;IAC5B,CAAC,MAAM,EAAE,EAAC,KAAK,EAAE,IAAI,EAAE,GAAG,YAAY,EAAC,CAAC;IACxC,CAAC,MAAM,EAAE,EAAC,KAAK,EAAE,CAAC,EAAE,GAAG,WAAW,EAAC,CAAC;IACpC,CAAC,UAAU,EAAE,EAAC,KAAK,EAAE,CAAC,EAAE,GAAG,WAAW,EAAC,CAAC;IACxC,CAAC,cAAc,EAAE,EAAC,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,EAAC,CAAC;IACjD,CAAC,WAAW,EAAE,EAAC,KAAK,EAAE,SAAS,EAAE,GAAG,WAAW,EAAC;AACnD,CAAA,CACJ;AAEM,MAAM,aAAa,GAAG,MAAK;AAC9B,IAAA,QAAQ,CACJ,aAAa,EACb,aAAa,CAChB;IACD,kBAAkB,CACd,cAAc,CAAC,QAAQ,EACvB,IAAI,GAAG,CAAC,aAAa,CAAC,CACzB;AACL,CAAC;;ACzBD,MAAM,WAAW,GAAG,0BAA0B;AAE9C,MAAM,aAAa,GAAkB;AACjC,IAAA,UAAU,EAAE,aAAa;AACzB,IAAA,SAAS,EAAE;CACd;AAaK,MAAO,iBAAkB,SAAQ,YAAY,CAAA;AACxC,IAAA,SAAA,IAAA,CAAA,eAAe,GAAG,aAAa,EAAhB,CAAmB;IAiBzC,WAAA,CAAY,GAAa,EAAW,WAAwB,EAAE,WAAgC,EAAE,uBAAgD,EAA0C,eAAoB,EAAA;QAC1M,KAAK,CAAC,GAAG,EAAE,aAAa,EAAE,WAAW,EAAE,uBAAuB,EAAE,eAAe,CAAC;QADhD,IAAA,CAAA,WAAW,GAAX,WAAW;QAE3C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,IAAI,KAAK;AAC1D,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,IAAI,KAAK,CAAC,CAAC,MAAM;IACtF;AAEA,IAAA,gBAAgB,CAAC,GAAW,EAAE,EAAO,EAAE,EAAQ,EAAA;AAC3C,QAAA,IAAI,GAAG,KAAK,UAAU,EAAE;AACpB,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,YAAY,IAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,MAAM;QACjG;aAAO;YACH,KAAK,CAAC,gBAAgB,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;QACvC;IACJ;AA/BS,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,+IAkBgI,kBAAkB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAlBnK,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,SAAA,EANf;AACP,YAAA,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,IAAI,CAAC;AACrD,YAAA,SAAS,CAAC,iBAAiB,EAAE,aAAa,EAAE,IAAI,CAAC;YACjD,kBAAkB,CAAC,iBAAiB;SACvC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAiBU,OAAO,4HACwB,UAAU,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5CxD,qpCA6BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDVY,oBAAoB,kFAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,sEAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAShC,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAX7B,SAAS;iCACI,IAAI,EAAA,OAAA,EACP,CAAC,oBAAoB,EAAE,WAAW,CAAC,EAAA,QAAA,EAChC,cAAc,EAAA,SAAA,EAEb;AACP,wBAAA,SAAS,CAAA,iBAAA,EAAoB,iBAAiB,EAAE,IAAI,CAAC;AACrD,wBAAA,SAAS,CAAA,iBAAA,EAAoB,aAAa,EAAE,IAAI,CAAC;AACjD,wBAAA,kBAAkB,CAAA,iBAAA;AACrB,qBAAA,EAAA,QAAA,EAAA,qpCAAA,EAAA;;0BAoBkJ,MAAM;2BAAC,kBAAkB;;0BAAG;yCAH3I,OAAO,EAAA,CAAA;sBAA1C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC;gBACsB,OAAO,EAAA,CAAA;sBAA9D,SAAS;uBAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE;;;AE5C1D;;AAEG;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/input/currency/src/currency.props.ts","../../../../../projects/components/widgets/input/currency/src/currency.component.ts","../../../../../projects/components/widgets/input/currency/src/currency.component.html","../../../../../projects/components/widgets/input/currency/src/index.ts"],"sourcesContent":["import {PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register, registerFormWidget} from '@wm/components/base';\nimport {FormWidgetType} from '@wm/core';\n\nexport const currencyProps = new Map(\n [\n ['class', PROP_STRING],\n ['currency', PROP_STRING],\n ['datavalue', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['hint', PROP_STRING],\n ['arialabel', PROP_STRING],\n ['maxvalue', PROP_NUMBER],\n ['minvalue', PROP_NUMBER],\n ['name', PROP_STRING],\n ['placeholder', {value: 'Enter value', ...PROP_STRING}],\n ['readonly', PROP_BOOLEAN],\n ['required', PROP_BOOLEAN],\n ['shortcutkey', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['step', {value: 1, ...PROP_NUMBER}],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['trailingzero', {value: false, ...PROP_BOOLEAN}],\n ['inputmode', {value: 'natural', ...PROP_STRING}]\n ]\n);\n\nexport const registerProps = () => {\n register(\n 'wm-currency',\n currencyProps\n );\n registerFormWidget(\n FormWidgetType.CURRENCY,\n new Map(currencyProps)\n );\n};\n","import { FormsModule } from '@angular/forms';\nimport {Component, ElementRef, Inject, Injector, OnDestroy, Optional, ViewChild} from '@angular/core';\nimport {NG_VALIDATORS, NG_VALUE_ACCESSOR, NgModel} from '@angular/forms';\n\nimport {AbstractI18nService, AppDefaults, CURRENCY_INFO} from '@wm/core';\nimport {IWidgetConfig, provideAs, provideAsWidgetRef, TextContentDirective, TrailingZeroDecimalPipe} from '@wm/components/base';\nimport { NumberLocale } from '@wm/components/input/text';\n\nimport {registerProps} from './currency.props';\n\nconst DEFAULT_CLS = 'input-group app-currency';\n\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-currency',\n hostClass: DEFAULT_CLS\n};\n\n@Component({\n standalone: true,\n imports: [TextContentDirective, FormsModule],\n selector: '[wmCurrency]',\n templateUrl: './currency.component.html',\n providers: [\n provideAs(CurrencyComponent, NG_VALUE_ACCESSOR, true),\n provideAs(CurrencyComponent, NG_VALIDATORS, true),\n provideAsWidgetRef(CurrencyComponent)\n ]\n})\nexport class CurrencyComponent extends NumberLocale implements OnDestroy {\n static initializeProps = registerProps();\n\n currencyCode: string;\n currencySymbol: string;\n public required: boolean;\n public regexp: any;\n public disabled: boolean;\n public autofocus: boolean;\n public name: string;\n public tabindex: any;\n public shortcutkey: string;\n public hint: string;\n public arialabel: string;\n\n @ViewChild(NgModel, {static: true}) ngModel: NgModel;\n @ViewChild('input', { static: true, read: ElementRef }) inputEl: ElementRef;\n\n constructor(inj: Injector, private appDefaults: AppDefaults, i18nService: AbstractI18nService, trailingZeroDecimalPipe: TrailingZeroDecimalPipe, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, i18nService, trailingZeroDecimalPipe, explicitContext);\n this.currencyCode = this.appDefaults.currencyCode || 'USD';\n this.currencySymbol = CURRENCY_INFO[this.appDefaults.currencyCode || \"USD\"].symbol;\n }\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'currency') {\n this.currencyCode = nv;\n this.currencySymbol = CURRENCY_INFO[this.currencyCode|| this.appDefaults.currencyCode].symbol;\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n ngOnDestroy() {\n // MEMORY LEAK FIX: Clear ViewChild references\n this.ngModel = null;\n this.inputEl = null;\n\n // Call parent ngOnDestroy (NumberLocale → StylableComponent → BaseComponent)\n super.ngOnDestroy();\n }\n}\n","<span class=\"input-group-addon\" [textContent]=\"currencySymbol\"></span>\n<input class=\"form-control app-textbox app-currency-input\"\n #input\n role=\"textbox\"\n type=\"text\"\n inputmode=\"decimal\"\n focus-target\n [autofocus]=\"autofocus\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [pattern]=\"regexp\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"arialabel || currencyCode\"\n [attr.tabindex]=\"tabindex\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [ngModel]=\"displayValue\"\n [ngModelOptions]=\"ngModelOptions\"\n\n (focus)=\"checkForTrailingZeros($event)\"\n (input)=\"onInputChange($event.target.value)\"\n (paste)=\"onPaste($event)\"\n (blur)=\"handleBlur($event); checkForTrailingZeros($event);\"\n (ngModelChange)=\"onModelChange($event)\"\n (keydown)=\"validateInputEntry($event);\"\n (keydown.enter)=\"onEnter($event)\"\n (keydown.ArrowUp)=\"onArrowPress($event, 'UP')\"\n (keydown.ArrowDown)=\"onArrowPress($event, 'DOWN')\">\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -57,6 +57,7 @@
57
57
  this.acceptsArray = false; // set to true if proxyModel on widget accepts array type.
58
58
  this.dataset$ = new rxjs.Subject();
59
59
  this.datavalue$ = new rxjs.Subject();
60
+ this._debouncedInitDatasetItems = null;
60
61
  this.allowempty = true;
61
62
  this._debounceDatavalueUpdation = lodashEs.debounce((values) => {
62
63
  // if no item is found in datasetItems, wait untill the dataset updates by preserving the datavalue in toBeProcessedDatavalue.
@@ -85,7 +86,9 @@
85
86
  }, 150);
86
87
  this.handleHeaderClick = core.noop;
87
88
  this.cancelLocaleChangeSubscription = this.getAppInstance().subscribe("locale-changed", () => {
88
- this._debouncedInitDatasetItems();
89
+ if (this._debouncedInitDatasetItems) {
90
+ this._debouncedInitDatasetItems();
91
+ }
89
92
  });
90
93
  }
91
94
  /**
@@ -275,7 +278,9 @@
275
278
  case 'displayexpression':
276
279
  case 'orderby':
277
280
  case 'usekeys':
278
- this._debouncedInitDatasetItems();
281
+ if (this._debouncedInitDatasetItems) {
282
+ this._debouncedInitDatasetItems();
283
+ }
279
284
  break;
280
285
  case 'required':
281
286
  case 'datavalue':
@@ -304,6 +309,25 @@
304
309
  if (this.cancelLocaleChangeSubscription) {
305
310
  this.cancelLocaleChangeSubscription();
306
311
  }
312
+ // MEMORY LEAK FIX: Complete and clear Subject observables
313
+ if (this.dataset$) {
314
+ this.dataset$.complete();
315
+ }
316
+ if (this.datavalue$) {
317
+ this.datavalue$.complete();
318
+ }
319
+ // MEMORY LEAK FIX: Clear datasetItems array
320
+ this.datasetItems = [];
321
+ // MEMORY LEAK FIX: Clear grouped data
322
+ if (this.groupedData) {
323
+ this.groupedData = [];
324
+ }
325
+ // MEMORY LEAK FIX: Clear model references
326
+ this._modelByKey = null;
327
+ this._modelByValue = null;
328
+ this.toBeProcessedDatavalue = null;
329
+ // Call parent ngOnDestroy
330
+ super.ngOnDestroy();
307
331
  }
308
332
  static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: DatasetAwareFormComponent, deps: [{ token: i0__namespace.Injector }, { token: base.WidgetConfig }, { token: 'EXPLICIT_CONTEXT', optional: true }, { token: 'groupby', attribute: true }, { token: Promise }], target: i0__namespace.ɵɵFactoryTarget.Injectable }); }
309
333
  static { this.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: DatasetAwareFormComponent }); }
@@ -39,6 +39,7 @@ export class DatasetAwareFormComponent extends BaseFormCustomComponent {
39
39
  this.acceptsArray = false; // set to true if proxyModel on widget accepts array type.
40
40
  this.dataset$ = new Subject();
41
41
  this.datavalue$ = new Subject();
42
+ this._debouncedInitDatasetItems = null;
42
43
  this.allowempty = true;
43
44
  this._debounceDatavalueUpdation = _debounce((values) => {
44
45
  // if no item is found in datasetItems, wait untill the dataset updates by preserving the datavalue in toBeProcessedDatavalue.
@@ -67,7 +68,9 @@ export class DatasetAwareFormComponent extends BaseFormCustomComponent {
67
68
  }, 150);
68
69
  this.handleHeaderClick = noop;
69
70
  this.cancelLocaleChangeSubscription = this.getAppInstance().subscribe("locale-changed", () => {
70
- this._debouncedInitDatasetItems();
71
+ if (this._debouncedInitDatasetItems) {
72
+ this._debouncedInitDatasetItems();
73
+ }
71
74
  });
72
75
  }
73
76
  /**
@@ -257,7 +260,9 @@ export class DatasetAwareFormComponent extends BaseFormCustomComponent {
257
260
  case 'displayexpression':
258
261
  case 'orderby':
259
262
  case 'usekeys':
260
- this._debouncedInitDatasetItems();
263
+ if (this._debouncedInitDatasetItems) {
264
+ this._debouncedInitDatasetItems();
265
+ }
261
266
  break;
262
267
  case 'required':
263
268
  case 'datavalue':
@@ -286,6 +291,25 @@ export class DatasetAwareFormComponent extends BaseFormCustomComponent {
286
291
  if (this.cancelLocaleChangeSubscription) {
287
292
  this.cancelLocaleChangeSubscription();
288
293
  }
294
+ // MEMORY LEAK FIX: Complete and clear Subject observables
295
+ if (this.dataset$) {
296
+ this.dataset$.complete();
297
+ }
298
+ if (this.datavalue$) {
299
+ this.datavalue$.complete();
300
+ }
301
+ // MEMORY LEAK FIX: Clear datasetItems array
302
+ this.datasetItems = [];
303
+ // MEMORY LEAK FIX: Clear grouped data
304
+ if (this.groupedData) {
305
+ this.groupedData = [];
306
+ }
307
+ // MEMORY LEAK FIX: Clear model references
308
+ this._modelByKey = null;
309
+ this._modelByValue = null;
310
+ this.toBeProcessedDatavalue = null;
311
+ // Call parent ngOnDestroy
312
+ super.ngOnDestroy();
289
313
  }
290
314
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatasetAwareFormComponent, deps: [{ token: i0.Injector }, { token: WidgetConfig }, { token: 'EXPLICIT_CONTEXT', optional: true }, { token: 'groupby', attribute: true }, { token: Promise }], target: i0.ɵɵFactoryTarget.Injectable }); }
291
315
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatasetAwareFormComponent }); }
@@ -304,4 +328,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
304
328
  type: Attribute,
305
329
  args: ['groupby']
306
330
  }] }, { type: Promise }] });
307
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNldC1hd2FyZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9kYXRhc2V0LWF3YXJlLWZvcm0vc3JjL2RhdGFzZXQtYXdhcmUtZm9ybS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBcUIsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQWUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBaUIsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcFIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFDLFFBQVEsSUFBSSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0sV0FBVyxDQUFDOztBQUc3RyxNQUFNLE9BQWdCLHlCQUEwQixTQUFRLHVCQUF1QjtJQThDM0UsSUFBVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsMEVBQTBFO0lBQzFFLElBQVcsVUFBVSxDQUFD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QjtrQkFEOUMsVUFBVTs7MEJBaUZnQyxNQUFNOzJCQUFDLFlBQVk7OzBCQUNuQyxNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQUcsUUFBUTs7MEJBQ3BDLFNBQVM7MkJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXR0cmlidXRlLCBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7JGFwcERpZ2VzdCwgQXBwRGVmYXVsdHMsIGRlYm91bmNlLCBpc0RlZmluZWQsIGlzRXF1YWxXaXRoRmllbGRzLCBub29wLCB0b0Jvb2xlYW59IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7IEFMTEZJRUxEUywgY29udmVydERhdGFUb09iamVjdCwgRGF0YVNldEl0ZW0sIGV4dHJhY3REYXRhQXNBcnJheSwgZ2V0T3JkZXJlZERhdGFzZXQsIGdldFVuaXFPYmpzQnlEYXRhRmllbGQsIGhhbmRsZUhlYWRlckNsaWNrLCB0b2dnbGVBbGxIZWFkZXJzLCB0cmFuc2Zvcm1Gb3JtRGF0YSwgdHJhbnNmb3JtRGF0YVdpdGhLZXlzLCBncm91cERhdGEsIFRvRGF0ZVBpcGUsIElXaWRnZXRDb25maWcsIFdpZGdldENvbmZpZyB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHsgQmFzZUZvcm1DdXN0b21Db21wb25lbnQgfSBmcm9tICdAd20vY29tcG9uZW50cy9pbnB1dC9iYXNlLWZvcm0tY3VzdG9tJztcbmltcG9ydCB7ZGVib3VuY2UgYXMgX2RlYm91bmNlLCBmaW5kLCBpc0FycmF5LCBpc0VtcHR5LCBpc0VxdWFsLCBpc051bGwsIGlzT2JqZWN0LCB0b1N0cmluZ30gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGF0YXNldEF3YXJlRm9ybUNvbXBvbmVudCBleHRlbmRzIEJhc2VGb3JtQ3VzdG9tQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHB1YmxpYyBkYXRhc2V0OiBhbnk7XG4gICAgcHVibGljIGRhdGFmaWVsZDogc3RyaW5nO1xuICAgIHB1YmxpYyBkaXNwbGF5ZmllbGQ6IHN0cmluZztcbiAgICBwdWJsaWMgZGlzcGxheWxhYmVsOiBzdHJpbmc7XG4gICAgcHVibGljIGRpc3BsYXlpbWFnZXNyYzogc3RyaW5nO1xuICAgIHB1YmxpYyBkaXNwbGF5ZXhwcmVzc2lvbjogc3RyaW5nO1xuICAgIHB1YmxpYyB1c2VrZXlzOiBib29sZWFuO1xuICAgIHB1YmxpYyBvcmRlcmJ5OiBzdHJpbmc7XG4gICAgcHVibGljIG11bHRpcGxlOiBib29sZWFuO1xuICAgIHB1YmxpYyByZWFkb25seTogYm9vbGVhbjtcbiAgICBwdWJsaWMgY29udGVudDogc3RyaW5nO1xuICAgIHB1YmxpYyBjb2xsYXBzaWJsZTogYm9vbGVhbjtcbiAgICBwdWJsaWMgZGF0ZVBpcGU7XG5cbiAgICBwdWJsaWMgaGFuZGxlSGVhZGVyQ2xpY2s6ICgkZXZlbnQpID0+IHZvaWQ7XG4gICAgcHJpdmF0ZSB0b2dnbGVBbGxIZWFkZXJzOiB2b2lkO1xuICAgIHB1YmxpYyBhcHBEZWZhdWx0cztcblxuICAgIHB1YmxpYyBiaW5kZGlzcGxheWV4cHJlc3Npb246IHN0cmluZztcbiAgICBwdWJsaWMgYmluZGRpc3BsYXlpbWFnZXNyYzogc3RyaW5nO1xuICAgIHB1YmxpYyBiaW5kZGlzcGxheWxhYmVsOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgZGlzcGxheVZhbHVlOiBBcnJheTxzdHJpbmc+IHwgc3RyaW5nO1xuXG4gICAgcHVibGljIGRhdGFzZXRJdGVtczogRGF0YVNldEl0ZW1bXSA9IFtdO1xuICAgIHB1YmxpYyBhY2NlcHRzQXJyYXkgPSBmYWxzZTsgLy8gc2V0IHRvIHRydWUgaWYgcHJveHlNb2RlbCBvbiB3aWRnZXQgYWNjZXB0cyBhcnJheSB0eXBlLlxuICAgIHByb3RlY3RlZCBkYXRhc2V0JCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgcHJvdGVjdGVkIGRhdGF2YWx1ZSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgcHJvdGVjdGVkIG1hdGNoOiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIGRhdGVmb3JtYXQ6IHN0cmluZztcbiAgICBwdWJsaWMgZ3JvdXBlZERhdGE6IGFueVtdO1xuXG4gICAgcHJvdGVjdGVkIF9tb2RlbEJ5S2V5OiBhbnk7XG4gICAgcHVibGljIF9tb2RlbEJ5VmFsdWU6IGFueTtcbiAgICBwdWJsaWMgX2RlZmF1bHRRdWVyeUludm9rZWQ6IGJvb2xlYW47IC8vIGZvciBzZWFyY2gvY2hpcHMgaWYgZGF0YXZhbHVlIGlzIG9idGFpbmVkIGZyb20gdGhlIGRlZmF1bHQgbi93IGNhbGwgdGhlbiBzZXQgdG8gdHJ1ZSBhbmQgZG8gbm90IHVwZGF0ZSB0aGUgbW9kZWxCeUtleXMuXG5cbiAgICAvLyB0aGlzIGZpZWxkIGNvbnRhaW5zIHRoZSBpbml0aWFsIGRhdGF2YWx1ZSB3aGljaCBuZWVkcyB0byBiZSBwcm9jZXNzZWQgb25jZSB0aGUgZGF0YXNldCBpcyBhdmFpbGFibGVcbiAgICBwdWJsaWMgdG9CZVByb2Nlc3NlZERhdGF2YWx1ZTogYW55O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2RlYm91bmNlZEluaXREYXRhc2V0SXRlbXM6IEZ1bmN0aW9uO1xuICAgIHByb3RlY3RlZCBhbGxvd2VtcHR5ID0gdHJ1ZTtcbiAgICBwdWJsaWMgY29tcGFyZWJ5OiBhbnk7XG5cbiAgICBwcml2YXRlIGNhbmNlbExvY2FsZUNoYW5nZVN1YnNjcmlwdGlvbjtcblxuICAgIHB1YmxpYyBnZXQgbW9kZWxCeUtleSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21vZGVsQnlLZXk7XG4gICAgfVxuXG4gICAgLy8gdHJpZ2dlcnMgb24gbmdNb2RlbCBjaGFuZ2UuIFRoaXMgZnVuY3Rpb24gZXh0cmFjdHMgdGhlIGRhdGF2YWx1ZSB2YWx1ZS5cbiAgICBwdWJsaWMgc2V0IG1vZGVsQnlLZXkodmFsOiBhbnkpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RCeUtleSh2YWwpO1xuXG4gICAgICAgIC8vIGludm9rZSBvbiBkYXRhdmFsdWUgY2hhbmdlLlxuICAgICAgICB0aGlzLmludm9rZU9uQ2hhbmdlKHRoaXMuX21vZGVsQnlWYWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHB1YmxpYyBnZXQgZGF0YXZhbHVlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbW9kZWxCeVZhbHVlO1xuICAgIH1cblxuICAgIC8vIHRyaWdnZXJzIG9uIHNldHRpbmcgdGhlIGRhdGF2YWx1ZS4gVGhpcyBmdW5jdGlvbiBleHRyYWN0cyB0aGUgbW9kZWwgdmFsdWUuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHB1YmxpYyBzZXQgZGF0YXZhbHVlKHZhbDogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICB2YWwgPSBleHRyYWN0RGF0YUFzQXJyYXkodmFsKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9tb2RlbEJ5VmFsdWUgPSB2YWw7XG5cbiAgICAgICAgdGhpcy5zZWxlY3RCeVZhbHVlKHZhbCk7XG5cbiAgICAgICAgLy8gY2hhbmdlcyBvbiB0aGUgZGF0YXZhbHVlIGNhbiBiZSBzdWJzY3JpYmVkIHVzaW5nIGxpc3RlblRvRGF0YXZhbHVlXG4gICAgICAgIHRoaXMuZGF0YXZhbHVlJC5uZXh0KHZhbCk7XG5cbiAgICAgICAgLy8gaW52b2tlIG9uIGRhdGF2YWx1ZSBjaGFuZ2UuXG4gICAgICAgIHRoaXMuaW52b2tlT25DaGFuZ2UodmFsLCB1bmRlZmluZWQsIHRydWUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihpbmo6IEluamVjdG9yLCAgQEluamVjdChXaWRnZXRDb25maWcpIGNvbmZpZzogSVdpZGdldENvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQEluamVjdCgnRVhQTElDSVRfQ09OVEVYVCcpIEBPcHRpb25hbCgpIGV4cGxpY2l0Q29udGV4dDogYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBAQXR0cmlidXRlKCdncm91cGJ5JykgcHVibGljIGdyb3VwYnk/OiBzdHJpbmcsIGluaXRQcm9taXNlPzogUHJvbWlzZTxhbnk+KSB7XG4gICAgICAgIHN1cGVyKGluaiwgY29uZmlnLCBleHBsaWNpdENvbnRleHQsIGluaXRQcm9taXNlKTtcbiAgICAgICAgdGhpcy5kYXRlUGlwZSA9IHRoaXMuaW5qLmdldChUb0RhdGVQaXBlKTtcbiAgICAgICAgdGhpcy5hcHBEZWZhdWx0cyA9IHRoaXMuaW5qLmdldChBcHBEZWZhdWx0cyk7XG4gICAgICAgIHRoaXMuYmluZGRpc3BsYXlleHByZXNzaW9uID0gdGhpcy5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGlzcGxheWV4cHJlc3Npb24uYmluZCcpO1xuICAgICAgICB0aGlzLmJpbmRkaXNwbGF5aW1hZ2VzcmMgPSB0aGlzLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkaXNwbGF5aW1hZ2VzcmMuYmluZCcpO1xuICAgICAgICB0aGlzLmJpbmRkaXNwbGF5bGFiZWwgPSB0aGlzLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkaXNwbGF5bGFiZWwuYmluZCcpO1xuXG4gICAgICAgIHRoaXMuX2RlYm91bmNlZEluaXREYXRhc2V0SXRlbXMgPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmluaXREYXRhc2V0SXRlbXMoKTtcbiAgICAgICAgICAgICRhcHBEaWdlc3QoKTtcbiAgICAgICAgfSwgMTUwKTtcbiAgICAgICAgdGhpcy5oYW5kbGVIZWFkZXJDbGljayA9IG5vb3A7XG5cbiAgICAgICAgdGhpcy5jYW5jZWxMb2NhbGVDaGFuZ2VTdWJzY3JpcHRpb24gPSB0aGlzLmdldEFwcEluc3RhbmNlKCkuc3Vic2NyaWJlKFwibG9jYWxlLWNoYW5nZWRcIiwgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZGVib3VuY2VkSW5pdERhdGFzZXRJdGVtcygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIF9kYXRhdmFsdWUgdmFsdWUgZnJvbSB0aGUgbW9kZWwgYW5kIHNldHMgdGhlIHNlbGVjdGVkIGZsYWcgd2hlbiBpdGVtIGlzIGZvdW5kLlxuICAgICAqIEhlcmUgbW9kZWwgaXMgdGhlIHZhbHVlIG9idGFpbmVkIGZyb20gbmdNb2RlbC5cbiAgICAgKiBAcGFyYW0ga2V5cyByZXByZXNlbnQgdGhlIG1vZGVsLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzZWxlY3RCeUtleShrZXlzKSB7XG4gICAgICAgIHRoaXMucmVzZXREYXRhc2V0SXRlbXMoKTtcblxuICAgICAgICBpZiAoIXRoaXMuZGF0YXNldEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgIWlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgIGtleXMgPSBba2V5c107XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgdGhlIF9tb2RlbEJ5S2V5IHRvIHRoZSBtb2RpZmllZCBrZXlzLlxuICAgICAgICB0aGlzLl9tb2RlbEJ5S2V5ID0ga2V5cztcblxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5fbW9kZWxCeVZhbHVlID0gW107XG4gICAgICAgICAgICBrZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtQnlLZXkgPSBmaW5kKHRoaXMuZGF0YXNldEl0ZW1zLCBpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gbm90IHRyaXBsZSBlcXVhbCwgYXMgdGhlIGluc3RhbmNlIHR5cGUgY2FuIGJlIGRpZmZlcmVudC5cbiAgICAgICAgICAgICAgICAgICAgLy8gb25seSB2YWx1ZSBjb21wYXJpc29uIHNob3VsZCBiZSBkb25lLlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9TdHJpbmcoaXRlbS5rZXkpID09PSB0b1N0cmluZyhrZXkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtQnlLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbUJ5S2V5LnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbW9kZWxCeVZhbHVlID0gWy4uLnRoaXMuX21vZGVsQnlWYWx1ZSwgaXRlbUJ5S2V5LnZhbHVlXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX21vZGVsQnlWYWx1ZSA9ICcnO1xuICAgICAgICAgICAgY29uc3QgaXRlbUJ5S2V5ID0gZmluZCh0aGlzLmRhdGFzZXRJdGVtcywgaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gbm90IHRyaXBsZSBlcXVhbCwgYXMgdGhlIGluc3RhbmNlIHR5cGUgY2FuIGJlIGRpZmZlcmVudC5cbiAgICAgICAgICAgICAgICAvLyBvbmx5IHZhbHVlIGNvbXBhcmlzb24gc2hvdWxkIGJlIGRvbmUuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvU3RyaW5nKGl0ZW0ua2V5KSA9PT0gdG9TdHJpbmcoa2V5cyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChpdGVtQnlLZXkpIHtcbiAgICAgICAgICAgICAgICBpdGVtQnlLZXkuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuX21vZGVsQnlWYWx1ZSA9IGl0ZW1CeUtleS52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluaXREaXNwbGF5VmFsdWVzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBzZXRzIHRoZSBfbW9kZWwgdmFsdWUgZnJvbSB0aGUgZGF0YXZhbHVlIChzZWxlY3RlZHZhbHVlcykgYW5kIHNldHMgdGhlIHNlbGVjdGVkIGZsYWcgd2hlbiBpdGVtIGlzIGZvdW5kLlxuICAgICAqIGRhdGF2YWx1ZSBpcyB0aGUgZGVmYXVsdCB2YWx1ZSBvciBhIHZhbHVlIHJlcHJlc2VudGluZyB0aGUgZGlzcGxheUZpZWxkIChmb3Igc3VwcG9zZTogb2JqZWN0IGluIGNhc2Ugb2YgQUxMRklFTERTKS5cbiAgICAgKiBJZiBhY2NlcHRzQXJyYXkgaXMgdHJ1ZSwgdGhlIG1vZGVsIGFsd2F5cyBhY2NlcHRzIGFuIGFycmF5LlxuICAgICAqIEZvciBleGFtcGxlLCBzZWxlY3QgYWx3YXlzIGFjY2VwdHMgbW9kZWwgYXMgYXJyYXkgd2hldGhlciBtdWx0aXBsZSBzZWxlY3QgaXMgdHJ1ZSBvciBmYWxzZS5cbiAgICAgKiBAcGFyYW0gdmFsdWVzIHJlcHJlc2VudCB0aGUgZGF0YXZhbHVlLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzZWxlY3RCeVZhbHVlKHZhbHVlczogQXJyYXk8YW55PiB8IGFueSkge1xuICAgICAgICB0aGlzLnJlc2V0RGF0YXNldEl0ZW1zKCk7XG5cbiAgICAgICAgLy8gaWYgZGF0YXZhbHVlIGlzIG5vdCBkZWZpbmVkIG9yIGVtcHR5IHRoZW4gc2V0IHRoZSBtb2RlbCBhcyB1bmRlZmluZWQuXG4gICAgICAgIGlmICghaXNEZWZpbmVkKHZhbHVlcykgfHwgdmFsdWVzID09PSAnJyB8fCBpc051bGwodmFsdWVzKSB8fCAodmFsdWVzIGluc3RhbmNlb2YgQXJyYXkgJiYgIXZhbHVlcy5sZW5ndGgpKSB7XG4gICAgICAgICAgICB0aGlzLl9tb2RlbEJ5S2V5ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgLy8gZG8gbm90IHJldHVybiB3aGVuIGFsbG93ZW1wdHkgaXMgc2V0IHRvIHRydWUuXG4gICAgICAgICAgICBpZiAoIXRoaXMuYWxsb3dlbXB0eSB8fCAhaXNEZWZpbmVkKHZhbHVlcykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hY2NlcHRzQXJyYXkgJiYgIWlzQXJyYXkodmFsdWVzKSkge1xuICAgICAgICAgICAgdmFsdWVzID0gdGhpcy5hbGxvd2VtcHR5ID8gW3ZhbHVlc10gOiBleHRyYWN0RGF0YUFzQXJyYXkodmFsdWVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHByZXNlcnZlIHRoZSBkYXRhdmFsdWUgaWYgZGF0YXNldEl0ZW1zIGFyZSBlbXB0eS5cbiAgICAgICAgaWYgKCF0aGlzLmRhdGFzZXRJdGVtcy5sZW5ndGggJiYgaXNEZWZpbmVkKHZhbHVlcykpIHtcbiAgICAgICAgICAgIHRoaXMudG9CZVByb2Nlc3NlZERhdGF2YWx1ZSA9IHZhbHVlcztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbHRlckZpZWxkID0gdGhpcy5kYXRhZmllbGQgPT09IEFMTEZJRUxEUyA/ICdkYXRhT2JqZWN0JyA6ICdrZXknO1xuXG4gICAgICAgIGlmIChpc0FycmF5KHZhbHVlcykpIHtcbiAgICAgICAgICAgIHRoaXMuX21vZGVsQnlLZXkgPSBbXTtcbiAgICAgICAgICAgIHZhbHVlcy5mb3JFYWNoKHZhbCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbUJ5VmFsdWUgPSBmaW5kKHRoaXMuZGF0YXNldEl0ZW1zLCBpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlckZpZWxkID09PSAnZGF0YU9iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbXBhcmVieSAmJiB0aGlzLmNvbXBhcmVieS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXNFcXVhbFdpdGhGaWVsZHMoaXRlbVtmaWx0ZXJGaWVsZF0sIHZhbCwgdGhpcy5jb21wYXJlYnkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoaXNPYmplY3QoaXRlbS52YWx1ZSkgPyBpc0VxdWFsKGl0ZW0udmFsdWUsIHZhbCkgOiAodG9TdHJpbmcoaXRlbS52YWx1ZSkpLnRvTG93ZXJDYXNlKCkgPT09ICh0b1N0cmluZyh2YWwpKS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbUJ5VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbUJ5VmFsdWUuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tb2RlbEJ5S2V5LnB1c2goaXRlbUJ5VmFsdWUua2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX21vZGVsQnlLZXkgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBjb25zdCBpdGVtQnlWYWx1ZSA9IGZpbmQodGhpcy5kYXRhc2V0SXRlbXMsIGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJGaWVsZCA9PT0gJ2RhdGFPYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbXBhcmVieSAmJiB0aGlzLmNvbXBhcmVieS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpc0VxdWFsV2l0aEZpZWxkcyhpdGVtW2ZpbHRlckZpZWxkXSwgdmFsdWVzLCB0aGlzLmNvbXBhcmVieSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIChpc09iamVjdChpdGVtLnZhbHVlKSA/IGlzRXF1YWwoaXRlbS52YWx1ZSwgdmFsdWVzKSA6ICh0b1N0cmluZyhpdGVtLnZhbHVlKSkudG9Mb3dlckNhc2UoKSA9PT0gKHRvU3RyaW5nKHZhbHVlcykpLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoaXRlbUJ5VmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpdGVtQnlWYWx1ZS5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9kZWxCeUtleSA9IGl0ZW1CeVZhbHVlLmtleTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBkZWxheWluZyB0aGUgZGF0YXZhbHVlIHVwZGF0ZSBhcyB0aGUgd2lkZ2V0cyBpbiBsaXZlZm9ybSBhcmUgaGF2aW5nIGRhdGF2YWx1ZSBhcyB1bmRlZmluZWQgYW5kIG5vdCB0aGUgZGVmYXVsdCBwcm92aWRlZCB2YWx1ZVxuICAgICAgICAvLyBiZWNhdXNlIGRhdGF2YWx1ZSBpcyB1cGRhdGVkIGxhdGVyIHdoZW4gbmV3IGRhdGFzZXQgaXMgYXZhaWxhYmxlLlxuICAgICAgICB0aGlzLl9kZWJvdW5jZURhdGF2YWx1ZVVwZGF0aW9uKHZhbHVlcyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kZWJvdW5jZURhdGF2YWx1ZVVwZGF0aW9uID0gX2RlYm91bmNlKCh2YWx1ZXMpID0+IHtcbiAgICAgICAgLy8gaWYgbm8gaXRlbSBpcyBmb3VuZCBpbiBkYXRhc2V0SXRlbXMsIHdhaXQgdW50aWxsIHRoZSBkYXRhc2V0IHVwZGF0ZXMgYnkgcHJlc2VydmluZyB0aGUgZGF0YXZhbHVlIGluIHRvQmVQcm9jZXNzZWREYXRhdmFsdWUuXG4gICAgICAgIGlmICghaXNEZWZpbmVkKHRoaXMuX21vZGVsQnlLZXkpIHx8IChpc0FycmF5KHRoaXMuX21vZGVsQnlLZXkpICYmICF0aGlzLl9tb2RlbEJ5S2V5Lmxlbmd0aCkpIHtcbiAgICAgICAgICAgIHRoaXMudG9CZVByb2Nlc3NlZERhdGF2YWx1ZSA9IHZhbHVlcztcbiAgICAgICAgICAgIHRoaXMuX21vZGVsQnlWYWx1ZSA9ICcnO1xuICAgICAgICB9IGVsc2UgaWYgKGlzRGVmaW5lZCh0aGlzLnRvQmVQcm9jZXNzZWREYXRhdmFsdWUpKSB7XG4gICAgICAgICAgICAvLyBvYnRhaW4gdGhlIGZpcnN0IGFycmF5IHZhbHVlIHdoZW4gbXVsdGlwbGUgaXMgc2V0IHRvIGZhbHNlLlxuICAgICAgICAgICAgLy8gc2V0IHRoZSBtb2RlbEJ5VmFsdWUgb25seSB3aGVuIHVuZGVmaW5lZC5cbiAgICAgICAgICAgIGlmICghaXNEZWZpbmVkKHRoaXMuX21vZGVsQnlWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb2RlbEJ5VmFsdWUgPSAoIXRoaXMubXVsdGlwbGUgJiYgaXNBcnJheSh0aGlzLnRvQmVQcm9jZXNzZWREYXRhdmFsdWUpKSA/IHRoaXMudG9CZVByb2Nlc3NlZERhdGF2YWx1ZVswXSA6IHRoaXMudG9CZVByb2Nlc3NlZERhdGF2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudG9CZVByb2Nlc3NlZERhdGF2YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5pdERpc3BsYXlWYWx1ZXMoKTtcbiAgICB9LCAxNTApO1xuXG4gICAgLy8gVXBkYXRlcyB0aGUgZGlzcGxheVZhbHVlIHByb3BlcnR5LlxuICAgIHByb3RlY3RlZCBpbml0RGlzcGxheVZhbHVlcygpIHtcbiAgICAgICAgY29uc3QgZGlzcGxheVZhbHVlcyA9IFtdO1xuICAgICAgICB0aGlzLmRhdGFzZXRJdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0uc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5VmFsdWVzLnB1c2goaXRlbS5sYWJlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gdGhpcy5tdWx0aXBsZSA/IGRpc3BsYXlWYWx1ZXMgOiBkaXNwbGF5VmFsdWVzWzBdIHx8ICcnO1xuICAgICAgICBpZih0aGlzLnZpZXdQYXJlbnQuY29udGFpbmVyV2lkZ2V0ICYmIHRoaXMudmlld1BhcmVudC5jb250YWluZXJXaWRnZXQuX2lzQ3VzdG9tKVxuICAgICAgICAgICAgdGhpcy52aWV3UGFyZW50LmNvbnRhaW5lcldpZGdldC5kaXNwbGF5VmFsdWUgPSB0aGlzLmRpc3BsYXlWYWx1ZS5sZW5ndGggPyB0aGlzLmRpc3BsYXlWYWx1ZSA6ICcnO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBkYXRhc2V0IGFuZCBleHRyYWN0cyB0aGUgZGlzcGxheU9wdGlvbnMgZnJvbSBwYXJzZWQgZGF0YXNldC5cbiAgICBwcm90ZWN0ZWQgaW5pdERhdGFzZXRJdGVtcygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRhdGFzZXQgfHwgaXNFbXB0eSh0aGlzLmRhdGFzZXQpKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFzZXRJdGVtcyA9IFtdO1xuICAgICAgICAgICAgLy8gbm90aWZ5IHRoZSBkYXRhc2V0IGxpc3RlbmVyc1xuICAgICAgICAgICAgdGhpcy5kYXRhc2V0JC5uZXh0KHRoaXMuZGF0YXNldEl0ZW1zKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNvbnZlcnQgYW55IGRhdGFzZXQgdG8gdGhlIG9iamVjdCBmb3JtYXQuXG4gICAgICAgIGNvbnN0IG9yZGVyZWREYXRhc2V0ID0gZ2V0T3JkZXJlZERhdGFzZXQoY29udmVydERhdGFUb09iamVjdCh0aGlzLmRhdGFzZXQpLCB0aGlzLm9yZGVyYnkpO1xuXG4gICAgICAgIGlmICh0aGlzLnVzZWtleXMpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YXNldEl0ZW1zID0gdHJhbnNmb3JtRGF0YVdpdGhLZXlzKG9yZGVyZWREYXRhc2V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlPcHRpb25zID0gdHJhbnNmb3JtRm9ybURhdGEodGhpcy52aWV3UGFyZW50LCBvcmRlcmVkRGF0YXNldCwgdGhpcy5kYXRhZmllbGQsIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6IHRoaXMuZGlzcGxheWZpZWxkIHx8IHRoaXMuZGlzcGxheWxhYmVsLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlFeHByOiB0aGlzLmRpc3BsYXlleHByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGJpbmREaXNwbGF5RXhwcjogdGhpcy5iaW5kZGlzcGxheWV4cHJlc3Npb24gfHwgdGhpcy5iaW5kZGlzcGxheWxhYmVsLFxuICAgICAgICAgICAgICAgIGJpbmREaXNwbGF5SW1nU3JjOiB0aGlzLmJpbmRkaXNwbGF5aW1hZ2VzcmMsXG4gICAgICAgICAgICAgICAgZGlzcGxheUltZ1NyYzogdGhpcy5kaXNwbGF5aW1hZ2VzcmNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gZ2V0IHRoZSB1bmlxdWUgb2JqZWN0cyBvdXQgb2YgdGhlIGV4dHJhY3RlZCBkYXRhLiBOb3RpZnkgY2hhbmdlIGluIGRhdGFzZXRJdGVtcyB1c2luZyBbLi4uZGF0YXNldEl0ZW1zXSBub3RhdGlvblxuICAgICAgICAgICAgdGhpcy5kYXRhc2V0SXRlbXMgPSBbLi4uZ2V0VW5pcU9ianNCeURhdGFGaWVsZChkaXNwbGF5T3B0aW9ucywgdGhpcy5kYXRhZmllbGQsIHRoaXMuZGlzcGxheWZpZWxkIHx8IHRoaXMuZGlzcGxheWxhYmVsLCB0b0Jvb2xlYW4odGhpcy5hbGxvd2VtcHR5KSldO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wb3N0RGF0YXNldEl0ZW1zSW5pdCgpO1xuICAgIH1cblxuICAgIC8vIE9uY2UgdGhlIGRhdGFzZXRJdGVtcyBhcmUgcmVhZHksIHNldCB0aGUgcHJveHlNb2RlbCBieSB1c2luZyBkYXRhdmFsdWUuXG4gICAgcHJvdGVjdGVkIHBvc3REYXRhc2V0SXRlbXNJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5kYXRhc2V0SXRlbXMubGVuZ3RoICYmICF0aGlzLl9kZWZhdWx0UXVlcnlJbnZva2VkKSB7XG4gICAgICAgICAgICAvLyB1c2UgdGhlIGxhdGVzdCBvZiB0b0JlUHJvY2Vzc2VkRGF0YXZhbHVlLCBkYXRhdmFsdWVcbiAgICAgICAgICAgIGNvbnN0IF9kYXRhdmFsdWUgPSBpc0VtcHR5KHRoaXMudG9CZVByb2Nlc3NlZERhdGF2YWx1ZSkgPyB0aGlzLmRhdGF2YWx1ZSA6IHRoaXMudG9CZVByb2Nlc3NlZERhdGF2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0QnlWYWx1ZShfZGF0YXZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBub3RpZnkgdGhlIGRhdGFzZXQgbGlzdGVuZXJzXG4gICAgICAgIHRoaXMuZGF0YXNldCQubmV4dCh0aGlzLmRhdGFzZXRJdGVtcyk7XG4gICAgfVxuXG4gICAgLy8gUmVzZXQgdGhlIHNlbGVjdGVkIGZsYWcgb24gZGF0YXNldEl0ZW1zIHRvIGZhbHNlLlxuICAgIHByb3RlY3RlZCByZXNldERhdGFzZXRJdGVtcygpIHtcbiAgICAgICAgdGhpcy5kYXRhc2V0SXRlbXMuZm9yRWFjaChpdGVtID0+IGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNldFRlbXBsYXRlKHBhcnRpYWxOYW1lKSB7XG4gICAgICAgIHRoaXMuY29udGVudCA9IHBhcnRpYWxOYW1lO1xuICAgICAgICBpZiAodGhpcy52aWV3UGFyZW50ICYmIHRoaXMudmlld1BhcmVudC5wcmVmYWJOYW1lKSB7XG4gICAgICAgICAgICB0aGlzWydwcmVmYWJOYW1lJ10gPSB0aGlzLnZpZXdQYXJlbnQucHJlZmFiTmFtZTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgcHJpdmF0ZSBnZXRHcm91cGVkRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YXNldEl0ZW1zLmxlbmd0aCA/IGdyb3VwRGF0YSh0aGlzLCBjb252ZXJ0RGF0YVRvT2JqZWN0KHRoaXMuZGF0YXNldEl0ZW1zKSwgdGhpcy5ncm91cGJ5LCB0aGlzLm1hdGNoLCB0aGlzLm9yZGVyYnksIHRoaXMuZGF0ZWZvcm1hdCwgdGhpcy5kYXRlUGlwZSwgJ2RhdGFPYmplY3QnLCB0aGlzLmFwcERlZmF1bHRzKSA6IFtdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGF0YXNldFN1YnNjcmlwdGlvbigpIHtcbiAgICAgICAgY29uc3QgZGF0YXNldFN1YnNjcmlwdGlvbiA9IHRoaXMuZGF0YXNldCQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBlZERhdGEgPSB0aGlzLmdldEdyb3VwZWREYXRhKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKCgpID0+IGRhdGFzZXRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNldEdyb3VwRGF0YSgpIHtcbiAgICAgICAgdGhpcy5kYXRhc2V0U3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIC8vIElmIGdyb3VwYnkgaXMgc2V0LCBnZXQgdGhlIGdyb3VwZWREYXRhIGZyb20gdGhlIGRhdGFzZXRJdGVtcy5cbiAgICAgICAgdGhpcy5ncm91cGVkRGF0YSA9IHRoaXMuZ2V0R3JvdXBlZERhdGEoKTtcbiAgICB9XG5cblxuICAgIG9uUHJvcGVydHlDaGFuZ2Uoa2V5OiBzdHJpbmcsIG52OiBhbnksIG92PzogYW55KSB7XG4gICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAnZGF0YXNldCc6XG4gICAgICAgICAgICBjYXNlICdkYXRhZmllbGQnOlxuICAgICAgICAgICAgY2FzZSAnZGlzcGxheWZpZWxkJzpcbiAgICAgICAgICAgIGNhc2UgJ2Rpc3BsYXlsYWJlbCc6XG4gICAgICAgICAgICBjYXNlICdkaXNwbGF5ZXhwcmVzc2lvbic6XG4gICAgICAgICAgICBjYXNlICdvcmRlcmJ5JzpcbiAgICAgICAgICAgIGNhc2UgJ3VzZWtleXMnOlxuICAgICAgICAgICAgICAgIHRoaXMuX2RlYm91bmNlZEluaXREYXRhc2V0SXRlbXMoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3JlcXVpcmVkJzpcbiAgICAgICAgICAgIGNhc2UgJ2RhdGF2YWx1ZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5fb25DaGFuZ2UodGhpcy5kYXRhdmFsdWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZ3JvdXBieSc6XG4gICAgICAgICAgICBjYXNlICdtYXRjaCc6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMud2lkZ2V0VHlwZSAhPT0gJ3dtLXNlYXJjaCcgJiYgdGhpcy53aWRnZXRUeXBlICE9PSAnd20tY2hpcHMnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0R3JvdXBEYXRhKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXBieSAmJiAodGhpcy53aWRnZXRUeXBlICE9PSAnd20tc2VhcmNoJyAmJiB0aGlzLndpZGdldFR5cGUgIT09ICd3bS1jaGlwcycpKSB7XG4gICAgICAgICAgICB0aGlzLnNldEdyb3VwRGF0YSgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGFkZGluZyB0aGUgaGFuZGxlciBmb3IgaGVhZGVyIGNsaWNrIGFuZCB0b2dnbGUgaGVhZGVycy5cbiAgICAgICAgaWYgKHRoaXMuZ3JvdXBieSAmJiB0aGlzLmNvbGxhcHNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUhlYWRlckNsaWNrID0gaGFuZGxlSGVhZGVyQ2xpY2s7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZUFsbEhlYWRlcnMgPSB0b2dnbGVBbGxIZWFkZXJzLmJpbmQodW5kZWZpbmVkLCB0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZih0aGlzLmNhbmNlbExvY2FsZUNoYW5nZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5jYW5jZWxMb2NhbGVDaGFuZ2VTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
331
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNldC1hd2FyZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9kYXRhc2V0LWF3YXJlLWZvcm0vc3JjL2RhdGFzZXQtYXdhcmUtZm9ybS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBcUIsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQWUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBaUIsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcFIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFDLFFBQVEsSUFBSSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0sV0FBVyxDQUFDOztBQUc3RyxNQUFNLE9BQWdCLHlCQUEwQixTQUFRLHVCQUF1QjtJQThDM0UsSUFBVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsMEVBQTBFO0lBQzFFLElBQVcsVUFBVSxDQUFD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LElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1FBQzFDLENBQUM7UUFFRCwwREFBMEQ7UUFDMUQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM3QixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMvQixDQUFDO1FBRUQsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBRXZCLHNDQUFzQztRQUN0QyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUMxQixDQUFDO1FBRUQsMENBQTBDO1FBQzFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7UUFFbkMsMEJBQTBCO1FBQzFCLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixDQUFDOytHQWxZaUIseUJBQXlCLDBDQWdGRyxZQUFZLGFBQzVCLGtCQUFrQiw2QkFDZixTQUFTO21IQWxGeEIseUJBQXlCOzs0RkFBekIseUJBQXlCO2tCQUQ5QyxVQUFVOzswQkFpRmdDLE1BQU07MkJBQUMsWUFBWTs7MEJBQ25DLE1BQU07MkJBQUMsa0JBQWtCOzswQkFBRyxRQUFROzswQkFDcEMsU0FBUzsyQkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBdHRyaWJ1dGUsIEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHskYXBwRGlnZXN0LCBBcHBEZWZhdWx0cywgZGVib3VuY2UsIGlzRGVmaW5lZCwgaXNFcXVhbFdpdGhGaWVsZHMsIG5vb3AsIHRvQm9vbGVhbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgQUxMRklFTERTLCBjb252ZXJ0RGF0YVRvT2JqZWN0LCBEYXRhU2V0SXRlbSwgZXh0cmFjdERhdGFBc0FycmF5LCBnZXRPcmRlcmVkRGF0YXNldCwgZ2V0VW5pcU9ianNCeURhdGFGaWVsZCwgaGFuZGxlSGVhZGVyQ2xpY2ssIHRvZ2dsZUFsbEhlYWRlcnMsIHRyYW5zZm9ybUZvcm1EYXRhLCB0cmFuc2Zvcm1EYXRhV2l0aEtleXMsIGdyb3VwRGF0YSwgVG9EYXRlUGlwZSwgSVdpZGdldENvbmZpZywgV2lkZ2V0Q29uZmlnIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQgeyBCYXNlRm9ybUN1c3RvbUNvbXBvbmVudCB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2lucHV0L2Jhc2UtZm9ybS1jdXN0b20nO1xuaW1wb3J0IHtkZWJvdW5jZSBhcyBfZGVib3VuY2UsIGZpbmQsIGlzQXJyYXksIGlzRW1wdHksIGlzRXF1YWwsIGlzTnVsbCwgaXNPYmplY3QsIHRvU3RyaW5nfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYXRhc2V0QXdhcmVGb3JtQ29tcG9uZW50IGV4dGVuZHMgQmFzZUZvcm1DdXN0b21Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcHVibGljIGRhdGFzZXQ6IGFueTtcbiAgICBwdWJsaWMgZGF0YWZpZWxkOiBzdHJpbmc7XG4gICAgcHVibGljIGRpc3BsYXlmaWVsZDogc3RyaW5nO1xuICAgIHB1YmxpYyBkaXNwbGF5bGFiZWw6IHN0cmluZztcbiAgICBwdWJsaWMgZGlzcGxheWltYWdlc3JjOiBzdHJpbmc7XG4gICAgcHVibGljIGRpc3BsYXlleHByZXNzaW9uOiBzdHJpbmc7XG4gICAgcHVibGljIHVzZWtleXM6IGJvb2xlYW47XG4gICAgcHVibGljIG9yZGVyYnk6IHN0cmluZztcbiAgICBwdWJsaWMgbXVsdGlwbGU6IGJvb2xlYW47XG4gICAgcHVibGljIHJlYWRvbmx5OiBib29sZWFuO1xuICAgIHB1YmxpYyBjb250ZW50OiBzdHJpbmc7XG4gICAgcHVibGljIGNvbGxhcHNpYmxlOiBib29sZWFuO1xuICAgIHB1YmxpYyBkYXRlUGlwZTtcblxuICAgIHB1YmxpYyBoYW5kbGVIZWFkZXJDbGljazogKCRldmVudCkgPT4gdm9pZDtcbiAgICBwcml2YXRlIHRvZ2dsZUFsbEhlYWRlcnM6IHZvaWQ7XG4gICAgcHVibGljIGFwcERlZmF1bHRzO1xuXG4gICAgcHVibGljIGJpbmRkaXNwbGF5ZXhwcmVzc2lvbjogc3RyaW5nO1xuICAgIHB1YmxpYyBiaW5kZGlzcGxheWltYWdlc3JjOiBzdHJpbmc7XG4gICAgcHVibGljIGJpbmRkaXNwbGF5bGFiZWw6IHN0cmluZztcblxuICAgIHB1YmxpYyBkaXNwbGF5VmFsdWU6IEFycmF5PHN0cmluZz4gfCBzdHJpbmc7XG5cbiAgICBwdWJsaWMgZGF0YXNldEl0ZW1zOiBEYXRhU2V0SXRlbVtdID0gW107XG4gICAgcHVibGljIGFjY2VwdHNBcnJheSA9IGZhbHNlOyAvLyBzZXQgdG8gdHJ1ZSBpZiBwcm94eU1vZGVsIG9uIHdpZGdldCBhY2NlcHRzIGFycmF5IHR5cGUuXG4gICAgcHJvdGVjdGVkIGRhdGFzZXQkID0gbmV3IFN1YmplY3QoKTtcbiAgICBwcm90ZWN0ZWQgZGF0YXZhbHVlJCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBwcm90ZWN0ZWQgbWF0Y2g6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgZGF0ZWZvcm1hdDogc3RyaW5nO1xuICAgIHB1YmxpYyBncm91cGVkRGF0YTogYW55W107XG5cbiAgICBwcm90ZWN0ZWQgX21vZGVsQnlLZXk6IGFueTtcbiAgICBwdWJsaWMgX21vZGVsQnlWYWx1ZTogYW55O1xuICAgIHB1YmxpYyBfZGVmYXVsdFF1ZXJ5SW52b2tlZDogYm9vbGVhbjsgLy8gZm9yIHNlYXJjaC9jaGlwcyBpZiBkYXRhdmFsdWUgaXMgb2J0YWluZWQgZnJvbSB0aGUgZGVmYXVsdCBuL3cgY2FsbCB0aGVuIHNldCB0byB0cnVlIGFuZCBkbyBub3QgdXBkYXRlIHRoZSBtb2RlbEJ5S2V5cy5cblxuICAgIC8vIHRoaXMgZmllbGQgY29udGFpbnMgdGhlIGluaXRpYWwgZGF0YXZhbHVlIHdoaWNoIG5lZWRzIHRvIGJlIHByb2Nlc3NlZCBvbmNlIHRoZSBkYXRhc2V0IGlzIGF2YWlsYWJsZVxuICAgIHB1YmxpYyB0b0JlUHJvY2Vzc2VkRGF0YXZhbHVlOiBhbnk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGVib3VuY2VkSW5pdERhdGFzZXRJdGVtczogRnVuY3Rpb24gfCBudWxsID0gbnVsbDtcbiAgICBwcm90ZWN0ZWQgYWxsb3dlbXB0eSA9IHRydWU7XG4gICAgcHVibGljIGNvbXBhcmVieTogYW55O1xuXG4gICAgcHJpdmF0ZSBjYW5jZWxMb2NhbGVDaGFuZ2VTdWJzY3JpcHRpb247XG5cbiAgICBwdWJsaWMgZ2V0IG1vZGVsQnlLZXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2RlbEJ5S2V5O1xuICAgIH1cblxuICAgIC8vIHRyaWdnZXJzIG9uIG5nTW9kZWwgY2hhbmdlLiBUaGlzIGZ1bmN0aW9uIGV4dHJhY3RzIHRoZSBkYXRhdmFsdWUgdmFsdWUuXG4gICAgcHVibGljIHNldCBtb2RlbEJ5S2V5KHZhbDogYW55KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0QnlLZXkodmFsKTtcblxuICAgICAgICAvLyBpbnZva2Ugb24gZGF0YXZhbHVlIGNoYW5nZS5cbiAgICAgICAgdGhpcy5pbnZva2VPbkNoYW5nZSh0aGlzLl9tb2RlbEJ5VmFsdWUpO1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBwdWJsaWMgZ2V0IGRhdGF2YWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21vZGVsQnlWYWx1ZTtcbiAgICB9XG5cbiAgICAvLyB0cmlnZ2VycyBvbiBzZXR0aW5nIHRoZSBkYXRhdmFsdWUuIFRoaXMgZnVuY3Rpb24gZXh0cmFjdHMgdGhlIG1vZGVsIHZhbHVlLlxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBwdWJsaWMgc2V0IGRhdGF2YWx1ZSh2YWw6IGFueSkge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdmFsID0gZXh0cmFjdERhdGFBc0FycmF5KHZhbCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbW9kZWxCeVZhbHVlID0gdmFsO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0QnlWYWx1ZSh2YWwpO1xuXG4gICAgICAgIC8vIGNoYW5nZXMgb24gdGhlIGRhdGF2YWx1ZSBjYW4gYmUgc3Vic2NyaWJlZCB1c2luZyBsaXN0ZW5Ub0RhdGF2YWx1ZVxuICAgICAgICB0aGlzLmRhdGF2YWx1ZSQubmV4dCh2YWwpO1xuXG4gICAgICAgIC8vIGludm9rZSBvbiBkYXRhdmFsdWUgY2hhbmdlLlxuICAgICAgICB0aGlzLmludm9rZU9uQ2hhbmdlKHZhbCwgdW5kZWZpbmVkLCB0cnVlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoaW5qOiBJbmplY3RvciwgIEBJbmplY3QoV2lkZ2V0Q29uZmlnKSBjb25maWc6IElXaWRnZXRDb25maWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQEF0dHJpYnV0ZSgnZ3JvdXBieScpIHB1YmxpYyBncm91cGJ5Pzogc3RyaW5nLCBpbml0UHJvbWlzZT86IFByb21pc2U8YW55Pikge1xuICAgICAgICBzdXBlcihpbmosIGNvbmZpZywgZXhwbGljaXRDb250ZXh0LCBpbml0UHJvbWlzZSk7XG4gICAgICAgIHRoaXMuZGF0ZVBpcGUgPSB0aGlzLmluai5nZXQoVG9EYXRlUGlwZSk7XG4gICAgICAgIHRoaXMuYXBwRGVmYXVsdHMgPSB0aGlzLmluai5nZXQoQXBwRGVmYXVsdHMpO1xuICAgICAgICB0aGlzLmJpbmRkaXNwbGF5ZXhwcmVzc2lvbiA9IHRoaXMubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2Rpc3BsYXlleHByZXNzaW9uLmJpbmQnKTtcbiAgICAgICAgdGhpcy5iaW5kZGlzcGxheWltYWdlc3JjID0gdGhpcy5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGlzcGxheWltYWdlc3JjLmJpbmQnKTtcbiAgICAgICAgdGhpcy5iaW5kZGlzcGxheWxhYmVsID0gdGhpcy5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGlzcGxheWxhYmVsLmJpbmQnKTtcblxuICAgICAgICB0aGlzLl9kZWJvdW5jZWRJbml0RGF0YXNldEl0ZW1zID0gZGVib3VuY2UoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbml0RGF0YXNldEl0ZW1zKCk7XG4gICAgICAgICAgICAkYXBwRGlnZXN0KCk7XG4gICAgICAgIH0sIDE1MCk7XG4gICAgICAgIHRoaXMuaGFuZGxlSGVhZGVyQ2xpY2sgPSBub29wO1xuXG4gICAgICAgIHRoaXMuY2FuY2VsTG9jYWxlQ2hhbmdlU3Vic2NyaXB0aW9uID0gdGhpcy5nZXRBcHBJbnN0YW5jZSgpLnN1YnNjcmliZShcImxvY2FsZS1jaGFuZ2VkXCIsICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9kZWJvdW5jZWRJbml0RGF0YXNldEl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGVib3VuY2VkSW5pdERhdGFzZXRJdGVtcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIF9kYXRhdmFsdWUgdmFsdWUgZnJvbSB0aGUgbW9kZWwgYW5kIHNldHMgdGhlIHNlbGVjdGVkIGZsYWcgd2hlbiBpdGVtIGlzIGZvdW5kLlxuICAgICAqIEhlcmUgbW9kZWwgaXMgdGhlIHZhbHVlIG9idGFpbmVkIGZyb20gbmdNb2RlbC5cbiAgICAgKiBAcGFyYW0ga2V5cyByZXByZXNlbnQgdGhlIG1vZGVsLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzZWxlY3RCeUtleShrZXlzKSB7XG4gICAgICAgIHRoaXMucmVzZXREYXRhc2V0SXRlbXMoKTtcblxuICAgICAgICBpZiAoIXRoaXMuZGF0YXNldEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgIWlzQXJyYXkoa2V5cykpIHtcbiAgICAgICAgICAgIGtleXMgPSBba2V5c107XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgdGhlIF9tb2RlbEJ5S2V5IHRvIHRoZSBtb2RpZmllZCBrZXlzLlxuICAgICAgICB0aGlzLl9tb2RlbEJ5S2V5ID0ga2V5cztcblxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgdGhpcy5fbW9kZWxCeVZhbHVlID0gW107XG4gICAgICAgICAgICBrZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtQnlLZXkgPSBmaW5kKHRoaXMuZGF0YXNldEl0ZW1zLCBpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gbm90IHRyaXBsZSBlcXVhbCwgYXMgdGhlIGluc3RhbmNlIHR5cGUgY2FuIGJlIGRpZmZlcmVudC5cbiAgICAgICAgICAgICAgICAgICAgLy8gb25seSB2YWx1ZSBjb21wYXJpc29uIHNob3VsZCBiZSBkb25lLlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9TdHJpbmcoaXRlbS5rZXkpID09PSB0b1N0cmluZyhrZXkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtQnlLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbUJ5S2V5LnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbW9kZWxCeVZhbHVlID0gWy4uLnRoaXMuX21vZGVsQnlWYWx1ZSwgaXRlbUJ5S2V5LnZhbHVlXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX21vZGVsQnlWYWx1ZSA9ICcnO1xuICAgICAgICAgICAgY29uc3QgaXRlbUJ5S2V5ID0gZmluZCh0aGlzLmRhdGFzZXRJdGVtcywgaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gbm90IHRyaXBsZSBlcXVhbCwgYXMgdGhlIGluc3RhbmNlIHR5cGUgY2FuIGJlIGRpZmZlcmVudC5cbiAgICAgICAgICAgICAgICAvLyBvbmx5IHZhbHVlIGNvbXBhcmlzb24gc2hvdWxkIGJlIGRvbmUuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvU3RyaW5nKGl0ZW0ua2V5KSA9PT0gdG9TdHJpbmcoa2V5cyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChpdGVtQnlLZXkpIHtcbiAgICAgICAgICAgICAgICBpdGVtQnlLZXkuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuX21vZGVsQnlWYWx1ZSA9IGl0ZW1CeUtleS52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluaXREaXNwbGF5VmFsdWVzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBzZXRzIHRoZSBfbW9kZWwgdmFsdWUgZnJvbSB0aGUgZGF0YXZhbHVlIChzZWxlY3RlZHZhbHVlcykgYW5kIHNldHMgdGhlIHNlbGVjdGVkIGZsYWcgd2hlbiBpdGVtIGlzIGZvdW5kLlxuICAgICAqIGRhdGF2YWx1ZSBpcyB0aGUgZGVmYXVsdCB2YWx1ZSBvciBhIHZhbHVlIHJlcHJlc2VudGluZyB0aGUgZGlzcGxheUZpZWxkIChmb3Igc3VwcG9zZTogb2JqZWN0IGluIGNhc2Ugb2YgQUxMRklFTERTKS5cbiAgICAgKiBJZiBhY2NlcHRzQXJyYXkgaXMgdHJ1ZSwgdGhlIG1vZGVsIGFsd2F5cyBhY2NlcHRzIGFuIGFycmF5LlxuICAgICAqIEZvciBleGFtcGxlLCBzZWxlY3QgYWx3YXlzIGFjY2VwdHMgbW9kZWwgYXMgYXJyYXkgd2hldGhlciBtdWx0aXBsZSBzZWxlY3QgaXMgdHJ1ZSBvciBmYWxzZS5cbiAgICAgKiBAcGFyYW0gdmFsdWVzIHJlcHJlc2VudCB0aGUgZGF0YXZhbHVlLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzZWxlY3RCeVZhbHVlKHZhbHVlczogQXJyYXk8YW55PiB8IGFueSkge1xuICAgICAgICB0aGlzLnJlc2V0RGF0YXNldEl0ZW1zKCk7XG5cbiAgICAgICAgLy8gaWYgZGF0YXZhbHVlIGlzIG5vdCBkZWZpbmVkIG9yIGVtcHR5IHRoZW4gc2V0IHRoZSBtb2RlbCBhcyB1bmRlZmluZWQuXG4gICAgICAgIGlmICghaXNEZWZpbmVkKHZhbHVlcykgfHwgdmFsdWVzID09PSAnJyB8fCBpc051bGwodmFsdWVzKSB8fCAodmFsdWVzIGluc3RhbmNlb2YgQXJyYXkgJiYgIXZhbHVlcy5sZW5ndGgpKSB7XG4gICAgICAgICAgICB0aGlzLl9tb2RlbEJ5S2V5ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgLy8gZG8gbm90IHJldHVybiB3aGVuIGFsbG93ZW1wdHkgaXMgc2V0IHRvIHRydWUuXG4gICAgICAgICAgICBpZiAoIXRoaXMuYWxsb3dlbXB0eSB8fCAhaXNEZWZpbmVkKHZhbHVlcykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hY2NlcHRzQXJyYXkgJiYgIWlzQXJyYXkodmFsdWVzKSkge1xuICAgICAgICAgICAgdmFsdWVzID0gdGhpcy5hbGxvd2VtcHR5ID8gW3ZhbHVlc10gOiBleHRyYWN0RGF0YUFzQXJyYXkodmFsdWVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHByZXNlcnZlIHRoZSBkYXRhdmFsdWUgaWYgZGF0YXNldEl0ZW1zIGFyZSBlbXB0eS5cbiAgICAgICAgaWYgKCF0aGlzLmRhdGFzZXRJdGVtcy5sZW5ndGggJiYgaXNEZWZpbmVkKHZhbHVlcykpIHtcbiAgICAgICAgICAgIHRoaXMudG9CZVByb2Nlc3NlZERhdGF2YWx1ZSA9IHZhbHVlcztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbHRlckZpZWxkID0gdGhpcy5kYXRhZmllbGQgPT09IEFMTEZJRUxEUyA/ICdkYXRhT2JqZWN0JyA6ICdrZXknO1xuXG4gICAgICAgIGlmIChpc0FycmF5KHZhbHVlcykpIHtcbiAgICAgICAgICAgIHRoaXMuX21vZGVsQnlLZXkgPSBbXTtcbiAgICAgICAgICAgIHZhbHVlcy5mb3JFYWNoKHZhbCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbUJ5VmFsdWUgPSBmaW5kKHRoaXMuZGF0YXNldEl0ZW1zLCBpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlckZpZWxkID09PSAnZGF0YU9iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbXBhcmVieSAmJiB0aGlzLmNvbXBhcmVieS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXNFcXVhbFdpdGhGaWVsZHMoaXRlbVtmaWx0ZXJGaWVsZF0sIHZhbCwgdGhpcy5jb21wYXJlYnkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoaXNPYmplY3QoaXRlbS52YWx1ZSkgPyBpc0VxdWFsKGl0ZW0udmFsdWUsIHZhbCkgOiAodG9TdHJpbmcoaXRlbS52YWx1ZSkpLnRvTG93ZXJDYXNlKCkgPT09ICh0b1N0cmluZyh2YWwpKS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbUJ5VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbUJ5VmFsdWUuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tb2RlbEJ5S2V5LnB1c2goaXRlbUJ5VmFsdWUua2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX21vZGVsQnlLZXkgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBjb25zdCBpdGVtQnlWYWx1ZSA9IGZpbmQodGhpcy5kYXRhc2V0SXRlbXMsIGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJGaWVsZCA9PT0gJ2RhdGFPYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbXBhcmVieSAmJiB0aGlzLmNvbXBhcmVieS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpc0VxdWFsV2l0aEZpZWxkcyhpdGVtW2ZpbHRlckZpZWxkXSwgdmFsdWVzLCB0aGlzLmNvbXBhcmVieSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIChpc09iamVjdChpdGVtLnZhbHVlKSA/IGlzRXF1YWwoaXRlbS52YWx1ZSwgdmFsdWVzKSA6ICh0b1N0cmluZyhpdGVtLnZhbHVlKSkudG9Mb3dlckNhc2UoKSA9PT0gKHRvU3RyaW5nKHZhbHVlcykpLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoaXRlbUJ5VmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpdGVtQnlWYWx1ZS5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9kZWxCeUtleSA9IGl0ZW1CeVZhbHVlLmtleTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBkZWxheWluZyB0aGUgZGF0YXZhbHVlIHVwZGF0ZSBhcyB0aGUgd2lkZ2V0cyBpbiBsaXZlZm9ybSBhcmUgaGF2aW5nIGRhdGF2YWx1ZSBhcyB1bmRlZmluZWQgYW5kIG5vdCB0aGUgZGVmYXVsdCBwcm92aWRlZCB2YWx1ZVxuICAgICAgICAvLyBiZWNhdXNlIGRhdGF2YWx1ZSBpcyB1cGRhdGVkIGxhdGVyIHdoZW4gbmV3IGRhdGFzZXQgaXMgYXZhaWxhYmxlLlxuICAgICAgICB0aGlzLl9kZWJvdW5jZURhdGF2YWx1ZVVwZGF0aW9uKHZhbHVlcyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kZWJvdW5jZURhdGF2YWx1ZVVwZGF0aW9uID0gX2RlYm91bmNlKCh2YWx1ZXMpID0+IHtcbiAgICAgICAgLy8gaWYgbm8gaXRlbSBpcyBmb3VuZCBpbiBkYXRhc2V0SXRlbXMsIHdhaXQgdW50aWxsIHRoZSBkYXRhc2V0IHVwZGF0ZXMgYnkgcHJlc2VydmluZyB0aGUgZGF0YXZhbHVlIGluIHRvQmVQcm9jZXNzZWREYXRhdmFsdWUuXG4gICAgICAgIGlmICghaXNEZWZpbmVkKHRoaXMuX21vZGVsQnlLZXkpIHx8IChpc0FycmF5KHRoaXMuX21vZGVsQnlLZXkpICYmICF0aGlzLl9tb2RlbEJ5S2V5Lmxlbmd0aCkpIHtcbiAgICAgICAgICAgIHRoaXMudG9CZVByb2Nlc3NlZERhdGF2YWx1ZSA9IHZhbHVlcztcbiAgICAgICAgICAgIHRoaXMuX21vZGVsQnlWYWx1ZSA9ICcnO1xuICAgICAgICB9IGVsc2UgaWYgKGlzRGVmaW5lZCh0aGlzLnRvQmVQcm9jZXNzZWREYXRhdmFsdWUpKSB7XG4gICAgICAgICAgICAvLyBvYnRhaW4gdGhlIGZpcnN0IGFycmF5IHZhbHVlIHdoZW4gbXVsdGlwbGUgaXMgc2V0IHRvIGZhbHNlLlxuICAgICAgICAgICAgLy8gc2V0IHRoZSBtb2RlbEJ5VmFsdWUgb25seSB3aGVuIHVuZGVmaW5lZC5cbiAgICAgICAgICAgIGlmICghaXNEZWZpbmVkKHRoaXMuX21vZGVsQnlWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb2RlbEJ5VmFsdWUgPSAoIXRoaXMubXVsdGlwbGUgJiYgaXNBcnJheSh0aGlzLnRvQmVQcm9jZXNzZWREYXRhdmFsdWUpKSA/IHRoaXMudG9CZVByb2Nlc3NlZERhdGF2YWx1ZVswXSA6IHRoaXMudG9CZVByb2Nlc3NlZERhdGF2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudG9CZVByb2Nlc3NlZERhdGF2YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5pdERpc3BsYXlWYWx1ZXMoKTtcbiAgICB9LCAxNTApO1xuXG4gICAgLy8gVXBkYXRlcyB0aGUgZGlzcGxheVZhbHVlIHByb3BlcnR5LlxuICAgIHByb3RlY3RlZCBpbml0RGlzcGxheVZhbHVlcygpIHtcbiAgICAgICAgY29uc3QgZGlzcGxheVZhbHVlcyA9IFtdO1xuICAgICAgICB0aGlzLmRhdGFzZXRJdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0uc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5VmFsdWVzLnB1c2goaXRlbS5sYWJlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gdGhpcy5tdWx0aXBsZSA/IGRpc3BsYXlWYWx1ZXMgOiBkaXNwbGF5VmFsdWVzWzBdIHx8ICcnO1xuICAgICAgICBpZih0aGlzLnZpZXdQYXJlbnQuY29udGFpbmVyV2lkZ2V0ICYmIHRoaXMudmlld1BhcmVudC5jb250YWluZXJXaWRnZXQuX2lzQ3VzdG9tKVxuICAgICAgICAgICAgdGhpcy52aWV3UGFyZW50LmNvbnRhaW5lcldpZGdldC5kaXNwbGF5VmFsdWUgPSB0aGlzLmRpc3BsYXlWYWx1ZS5sZW5ndGggPyB0aGlzLmRpc3BsYXlWYWx1ZSA6ICcnO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBkYXRhc2V0IGFuZCBleHRyYWN0cyB0aGUgZGlzcGxheU9wdGlvbnMgZnJvbSBwYXJzZWQgZGF0YXNldC5cbiAgICBwcm90ZWN0ZWQgaW5pdERhdGFzZXRJdGVtcygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRhdGFzZXQgfHwgaXNFbXB0eSh0aGlzLmRhdGFzZXQpKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFzZXRJdGVtcyA9IFtdO1xuICAgICAgICAgICAgLy8gbm90aWZ5IHRoZSBkYXRhc2V0IGxpc3RlbmVyc1xuICAgICAgICAgICAgdGhpcy5kYXRhc2V0JC5uZXh0KHRoaXMuZGF0YXNldEl0ZW1zKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNvbnZlcnQgYW55IGRhdGFzZXQgdG8gdGhlIG9iamVjdCBmb3JtYXQuXG4gICAgICAgIGNvbnN0IG9yZGVyZWREYXRhc2V0ID0gZ2V0T3JkZXJlZERhdGFzZXQoY29udmVydERhdGFUb09iamVjdCh0aGlzLmRhdGFzZXQpLCB0aGlzLm9yZGVyYnkpO1xuXG4gICAgICAgIGlmICh0aGlzLnVzZWtleXMpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YXNldEl0ZW1zID0gdHJhbnNmb3JtRGF0YVdpdGhLZXlzKG9yZGVyZWREYXRhc2V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlPcHRpb25zID0gdHJhbnNmb3JtRm9ybURhdGEodGhpcy52aWV3UGFyZW50LCBvcmRlcmVkRGF0YXNldCwgdGhpcy5kYXRhZmllbGQsIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5RmllbGQ6IHRoaXMuZGlzcGxheWZpZWxkIHx8IHRoaXMuZGlzcGxheWxhYmVsLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlFeHByOiB0aGlzLmRpc3BsYXlleHByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGJpbmREaXNwbGF5RXhwcjogdGhpcy5iaW5kZGlzcGxheWV4cHJlc3Npb24gfHwgdGhpcy5iaW5kZGlzcGxheWxhYmVsLFxuICAgICAgICAgICAgICAgIGJpbmREaXNwbGF5SW1nU3JjOiB0aGlzLmJpbmRkaXNwbGF5aW1hZ2VzcmMsXG4gICAgICAgICAgICAgICAgZGlzcGxheUltZ1NyYzogdGhpcy5kaXNwbGF5aW1hZ2VzcmNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gZ2V0IHRoZSB1bmlxdWUgb2JqZWN0cyBvdXQgb2YgdGhlIGV4dHJhY3RlZCBkYXRhLiBOb3RpZnkgY2hhbmdlIGluIGRhdGFzZXRJdGVtcyB1c2luZyBbLi4uZGF0YXNldEl0ZW1zXSBub3RhdGlvblxuICAgICAgICAgICAgdGhpcy5kYXRhc2V0SXRlbXMgPSBbLi4uZ2V0VW5pcU9ianNCeURhdGFGaWVsZChkaXNwbGF5T3B0aW9ucywgdGhpcy5kYXRhZmllbGQsIHRoaXMuZGlzcGxheWZpZWxkIHx8IHRoaXMuZGlzcGxheWxhYmVsLCB0b0Jvb2xlYW4odGhpcy5hbGxvd2VtcHR5KSldO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wb3N0RGF0YXNldEl0ZW1zSW5pdCgpO1xuICAgIH1cblxuICAgIC8vIE9uY2UgdGhlIGRhdGFzZXRJdGVtcyBhcmUgcmVhZHksIHNldCB0aGUgcHJveHlNb2RlbCBieSB1c2luZyBkYXRhdmFsdWUuXG4gICAgcHJvdGVjdGVkIHBvc3REYXRhc2V0SXRlbXNJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5kYXRhc2V0SXRlbXMubGVuZ3RoICYmICF0aGlzLl9kZWZhdWx0UXVlcnlJbnZva2VkKSB7XG4gICAgICAgICAgICAvLyB1c2UgdGhlIGxhdGVzdCBvZiB0b0JlUHJvY2Vzc2VkRGF0YXZhbHVlLCBkYXRhdmFsdWVcbiAgICAgICAgICAgIGNvbnN0IF9kYXRhdmFsdWUgPSBpc0VtcHR5KHRoaXMudG9CZVByb2Nlc3NlZERhdGF2YWx1ZSkgPyB0aGlzLmRhdGF2YWx1ZSA6IHRoaXMudG9CZVByb2Nlc3NlZERhdGF2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0QnlWYWx1ZShfZGF0YXZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBub3RpZnkgdGhlIGRhdGFzZXQgbGlzdGVuZXJzXG4gICAgICAgIHRoaXMuZGF0YXNldCQubmV4dCh0aGlzLmRhdGFzZXRJdGVtcyk7XG4gICAgfVxuXG4gICAgLy8gUmVzZXQgdGhlIHNlbGVjdGVkIGZsYWcgb24gZGF0YXNldEl0ZW1zIHRvIGZhbHNlLlxuICAgIHByb3RlY3RlZCByZXNldERhdGFzZXRJdGVtcygpIHtcbiAgICAgICAgdGhpcy5kYXRhc2V0SXRlbXMuZm9yRWFjaChpdGVtID0+IGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNldFRlbXBsYXRlKHBhcnRpYWxOYW1lKSB7XG4gICAgICAgIHRoaXMuY29udGVudCA9IHBhcnRpYWxOYW1lO1xuICAgICAgICBpZiAodGhpcy52aWV3UGFyZW50ICYmIHRoaXMudmlld1BhcmVudC5wcmVmYWJOYW1lKSB7XG4gICAgICAgICAgICB0aGlzWydwcmVmYWJOYW1lJ10gPSB0aGlzLnZpZXdQYXJlbnQucHJlZmFiTmFtZTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgcHJpdmF0ZSBnZXRHcm91cGVkRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YXNldEl0ZW1zLmxlbmd0aCA/IGdyb3VwRGF0YSh0aGlzLCBjb252ZXJ0RGF0YVRvT2JqZWN0KHRoaXMuZGF0YXNldEl0ZW1zKSwgdGhpcy5ncm91cGJ5LCB0aGlzLm1hdGNoLCB0aGlzLm9yZGVyYnksIHRoaXMuZGF0ZWZvcm1hdCwgdGhpcy5kYXRlUGlwZSwgJ2RhdGFPYmplY3QnLCB0aGlzLmFwcERlZmF1bHRzKSA6IFtdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGF0YXNldFN1YnNjcmlwdGlvbigpIHtcbiAgICAgICAgY29uc3QgZGF0YXNldFN1YnNjcmlwdGlvbiA9IHRoaXMuZGF0YXNldCQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBlZERhdGEgPSB0aGlzLmdldEdyb3VwZWREYXRhKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKCgpID0+IGRhdGFzZXRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNldEdyb3VwRGF0YSgpIHtcbiAgICAgICAgdGhpcy5kYXRhc2V0U3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIC8vIElmIGdyb3VwYnkgaXMgc2V0LCBnZXQgdGhlIGdyb3VwZWREYXRhIGZyb20gdGhlIGRhdGFzZXRJdGVtcy5cbiAgICAgICAgdGhpcy5ncm91cGVkRGF0YSA9IHRoaXMuZ2V0R3JvdXBlZERhdGEoKTtcbiAgICB9XG5cblxuICAgIG9uUHJvcGVydHlDaGFuZ2Uoa2V5OiBzdHJpbmcsIG52OiBhbnksIG92PzogYW55KSB7XG4gICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAnZGF0YXNldCc6XG4gICAgICAgICAgICBjYXNlICdkYXRhZmllbGQnOlxuICAgICAgICAgICAgY2FzZSAnZGlzcGxheWZpZWxkJzpcbiAgICAgICAgICAgIGNhc2UgJ2Rpc3BsYXlsYWJlbCc6XG4gICAgICAgICAgICBjYXNlICdkaXNwbGF5ZXhwcmVzc2lvbic6XG4gICAgICAgICAgICBjYXNlICdvcmRlcmJ5JzpcbiAgICAgICAgICAgIGNhc2UgJ3VzZWtleXMnOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9kZWJvdW5jZWRJbml0RGF0YXNldEl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2RlYm91bmNlZEluaXREYXRhc2V0SXRlbXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdyZXF1aXJlZCc6XG4gICAgICAgICAgICBjYXNlICdkYXRhdmFsdWUnOlxuICAgICAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMuZGF0YXZhbHVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2dyb3VwYnknOlxuICAgICAgICAgICAgY2FzZSAnbWF0Y2gnOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLndpZGdldFR5cGUgIT09ICd3bS1zZWFyY2gnICYmIHRoaXMud2lkZ2V0VHlwZSAhPT0gJ3dtLWNoaXBzJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEdyb3VwRGF0YSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIGlmICh0aGlzLmdyb3VwYnkgJiYgKHRoaXMud2lkZ2V0VHlwZSAhPT0gJ3dtLXNlYXJjaCcgJiYgdGhpcy53aWRnZXRUeXBlICE9PSAnd20tY2hpcHMnKSkge1xuICAgICAgICAgICAgdGhpcy5zZXRHcm91cERhdGEoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBhZGRpbmcgdGhlIGhhbmRsZXIgZm9yIGhlYWRlciBjbGljayBhbmQgdG9nZ2xlIGhlYWRlcnMuXG4gICAgICAgIGlmICh0aGlzLmdyb3VwYnkgJiYgdGhpcy5jb2xsYXBzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVIZWFkZXJDbGljayA9IGhhbmRsZUhlYWRlckNsaWNrO1xuICAgICAgICAgICAgdGhpcy50b2dnbGVBbGxIZWFkZXJzID0gdG9nZ2xlQWxsSGVhZGVycy5iaW5kKHVuZGVmaW5lZCwgdGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYodGhpcy5jYW5jZWxMb2NhbGVDaGFuZ2VTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsTG9jYWxlQ2hhbmdlU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IENvbXBsZXRlIGFuZCBjbGVhciBTdWJqZWN0IG9ic2VydmFibGVzXG4gICAgICAgIGlmICh0aGlzLmRhdGFzZXQkKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFzZXQkLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGF0YXZhbHVlJCkge1xuICAgICAgICAgICAgdGhpcy5kYXRhdmFsdWUkLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IENsZWFyIGRhdGFzZXRJdGVtcyBhcnJheVxuICAgICAgICB0aGlzLmRhdGFzZXRJdGVtcyA9IFtdO1xuXG4gICAgICAgIC8vIE1FTU9SWSBMRUFLIEZJWDogQ2xlYXIgZ3JvdXBlZCBkYXRhXG4gICAgICAgIGlmICh0aGlzLmdyb3VwZWREYXRhKSB7XG4gICAgICAgICAgICB0aGlzLmdyb3VwZWREYXRhID0gW107XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IENsZWFyIG1vZGVsIHJlZmVyZW5jZXNcbiAgICAgICAgdGhpcy5fbW9kZWxCeUtleSA9IG51bGw7XG4gICAgICAgIHRoaXMuX21vZGVsQnlWYWx1ZSA9IG51bGw7XG4gICAgICAgIHRoaXMudG9CZVByb2Nlc3NlZERhdGF2YWx1ZSA9IG51bGw7XG5cbiAgICAgICAgLy8gQ2FsbCBwYXJlbnQgbmdPbkRlc3Ryb3lcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iXX0=
@@ -40,6 +40,7 @@ class DatasetAwareFormComponent extends BaseFormCustomComponent {
40
40
  this.acceptsArray = false; // set to true if proxyModel on widget accepts array type.
41
41
  this.dataset$ = new Subject();
42
42
  this.datavalue$ = new Subject();
43
+ this._debouncedInitDatasetItems = null;
43
44
  this.allowempty = true;
44
45
  this._debounceDatavalueUpdation = debounce((values) => {
45
46
  // if no item is found in datasetItems, wait untill the dataset updates by preserving the datavalue in toBeProcessedDatavalue.
@@ -68,7 +69,9 @@ class DatasetAwareFormComponent extends BaseFormCustomComponent {
68
69
  }, 150);
69
70
  this.handleHeaderClick = noop;
70
71
  this.cancelLocaleChangeSubscription = this.getAppInstance().subscribe("locale-changed", () => {
71
- this._debouncedInitDatasetItems();
72
+ if (this._debouncedInitDatasetItems) {
73
+ this._debouncedInitDatasetItems();
74
+ }
72
75
  });
73
76
  }
74
77
  /**
@@ -258,7 +261,9 @@ class DatasetAwareFormComponent extends BaseFormCustomComponent {
258
261
  case 'displayexpression':
259
262
  case 'orderby':
260
263
  case 'usekeys':
261
- this._debouncedInitDatasetItems();
264
+ if (this._debouncedInitDatasetItems) {
265
+ this._debouncedInitDatasetItems();
266
+ }
262
267
  break;
263
268
  case 'required':
264
269
  case 'datavalue':
@@ -287,6 +292,25 @@ class DatasetAwareFormComponent extends BaseFormCustomComponent {
287
292
  if (this.cancelLocaleChangeSubscription) {
288
293
  this.cancelLocaleChangeSubscription();
289
294
  }
295
+ // MEMORY LEAK FIX: Complete and clear Subject observables
296
+ if (this.dataset$) {
297
+ this.dataset$.complete();
298
+ }
299
+ if (this.datavalue$) {
300
+ this.datavalue$.complete();
301
+ }
302
+ // MEMORY LEAK FIX: Clear datasetItems array
303
+ this.datasetItems = [];
304
+ // MEMORY LEAK FIX: Clear grouped data
305
+ if (this.groupedData) {
306
+ this.groupedData = [];
307
+ }
308
+ // MEMORY LEAK FIX: Clear model references
309
+ this._modelByKey = null;
310
+ this._modelByValue = null;
311
+ this.toBeProcessedDatavalue = null;
312
+ // Call parent ngOnDestroy
313
+ super.ngOnDestroy();
290
314
  }
291
315
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatasetAwareFormComponent, deps: [{ token: i0.Injector }, { token: WidgetConfig }, { token: 'EXPLICIT_CONTEXT', optional: true }, { token: 'groupby', attribute: true }, { token: Promise }], target: i0.ɵɵFactoryTarget.Injectable }); }
292
316
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatasetAwareFormComponent }); }