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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (412) hide show
  1. package/components/advanced/carousel/bundles/index.umd.js +15 -1
  2. package/components/advanced/carousel/carousel.directive.d.ts +1 -0
  3. package/components/advanced/carousel/esm2022/carousel.directive.mjs +16 -2
  4. package/components/advanced/carousel/fesm2022/index.mjs +15 -1
  5. package/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
  6. package/components/advanced/login/bundles/index.umd.js +24 -3
  7. package/components/advanced/login/esm2022/login.component.mjs +25 -4
  8. package/components/advanced/login/fesm2022/index.mjs +24 -3
  9. package/components/advanced/login/fesm2022/index.mjs.map +1 -1
  10. package/components/advanced/login/login.component.d.ts +5 -2
  11. package/components/base/bundles/index.umd.js +331 -36
  12. package/components/base/directives/show-in-device.directive.d.ts +2 -1
  13. package/components/base/esm2022/directives/show-in-device.directive.mjs +22 -4
  14. package/components/base/esm2022/pipes/custom-pipes.mjs +10 -10
  15. package/components/base/esm2022/utils/widget-utils.mjs +3 -3
  16. package/components/base/esm2022/widgets/common/base/base-container.component.mjs +27 -1
  17. package/components/base/esm2022/widgets/common/base/base-field-validations.mjs +18 -1
  18. package/components/base/esm2022/widgets/common/base/base.component.mjs +68 -7
  19. package/components/base/esm2022/widgets/common/base/custom-widget-container.directive.mjs +9 -1
  20. package/components/base/esm2022/widgets/common/base/dataset-aware-nav.component.mjs +44 -11
  21. package/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +20 -1
  22. package/components/base/esm2022/widgets/common/item-template/item-template.directive.mjs +26 -1
  23. package/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +44 -4
  24. package/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +16 -1
  25. package/components/base/esm2022/widgets/common/pull-to-refresh/pull-to-refresh.mjs +22 -1
  26. package/components/base/esm2022/widgets/framework/property-change-handler.mjs +7 -2
  27. package/components/base/esm2022/widgets/framework/widget-proxy-provider.mjs +5 -3
  28. package/components/base/esm2022/widgets/framework/widget-registry.mjs +6 -3
  29. package/components/base/fesm2022/index.mjs +327 -34
  30. package/components/base/fesm2022/index.mjs.map +1 -1
  31. package/components/base/pipes/custom-pipes.d.ts +5 -5
  32. package/components/base/widgets/common/base/base-container.component.d.ts +3 -2
  33. package/components/base/widgets/common/base/base-field-validations.d.ts +1 -0
  34. package/components/base/widgets/common/base/custom-widget-container.directive.d.ts +3 -2
  35. package/components/base/widgets/common/base/dataset-aware-nav.component.d.ts +6 -2
  36. package/components/base/widgets/common/base/partial-container.directive.d.ts +3 -2
  37. package/components/base/widgets/common/item-template/item-template.directive.d.ts +3 -2
  38. package/components/base/widgets/common/lazy-load/lazy-load.directive.d.ts +1 -1
  39. package/components/base/widgets/common/partial-param/partial-param.directive.d.ts +3 -2
  40. package/components/base/widgets/common/pull-to-refresh/pull-to-refresh.d.ts +3 -2
  41. package/components/basic/anchor/bundles/index.umd.js +13 -1
  42. package/components/basic/anchor/esm2022/anchor.component.mjs +14 -2
  43. package/components/basic/anchor/fesm2022/index.mjs +13 -1
  44. package/components/basic/anchor/fesm2022/index.mjs.map +1 -1
  45. package/components/basic/html/bundles/index.umd.js +13 -1
  46. package/components/basic/html/esm2022/html.directive.mjs +14 -2
  47. package/components/basic/html/fesm2022/index.mjs +13 -1
  48. package/components/basic/html/fesm2022/index.mjs.map +1 -1
  49. package/components/basic/label/bundles/index.umd.js +17 -1
  50. package/components/basic/label/esm2022/label.directive.mjs +18 -2
  51. package/components/basic/label/fesm2022/index.mjs +17 -1
  52. package/components/basic/label/fesm2022/index.mjs.map +1 -1
  53. package/components/basic/label/label.directive.d.ts +3 -2
  54. package/components/basic/progress/progress-circle/bundles/index.umd.js +10 -0
  55. package/components/basic/progress/progress-circle/esm2022/progress-circle.component.mjs +11 -1
  56. package/components/basic/progress/progress-circle/fesm2022/index.mjs +10 -0
  57. package/components/basic/progress/progress-circle/fesm2022/index.mjs.map +1 -1
  58. package/components/basic/progress/progress-circle/progress-circle.component.d.ts +3 -2
  59. package/components/basic/search/bundles/index.umd.js +31 -5
  60. package/components/basic/search/esm2022/scrollable.directive.mjs +13 -4
  61. package/components/basic/search/esm2022/search.component.mjs +20 -3
  62. package/components/basic/search/fesm2022/index.mjs +31 -5
  63. package/components/basic/search/fesm2022/index.mjs.map +1 -1
  64. package/components/basic/search/scrollable.directive.d.ts +5 -3
  65. package/components/basic/search/search.component.d.ts +3 -2
  66. package/components/basic/spinner/bundles/index.umd.js +9 -1
  67. package/components/basic/spinner/esm2022/spinner.component.mjs +10 -2
  68. package/components/basic/spinner/fesm2022/index.mjs +9 -1
  69. package/components/basic/spinner/fesm2022/index.mjs.map +1 -1
  70. package/components/basic/spinner/spinner.component.d.ts +4 -2
  71. package/components/chart/bundles/index.umd.js +21 -3
  72. package/components/chart/esm2022/chart.component.mjs +22 -4
  73. package/components/chart/fesm2022/index.mjs +21 -3
  74. package/components/chart/fesm2022/index.mjs.map +1 -1
  75. package/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +3 -2
  76. package/components/containers/accordion/accordion.directive.d.ts +5 -2
  77. package/components/containers/accordion/bundles/index.umd.js +49 -2
  78. package/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +10 -1
  79. package/components/containers/accordion/esm2022/accordion.directive.mjs +41 -3
  80. package/components/containers/accordion/fesm2022/index.mjs +49 -2
  81. package/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  82. package/components/containers/panel/bundles/index.umd.js +13 -0
  83. package/components/containers/panel/esm2022/panel.component.mjs +14 -1
  84. package/components/containers/panel/fesm2022/index.mjs +13 -0
  85. package/components/containers/panel/fesm2022/index.mjs.map +1 -1
  86. package/components/containers/panel/panel.component.d.ts +3 -2
  87. package/components/containers/tabs/bundles/index.umd.js +54 -2
  88. package/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +10 -1
  89. package/components/containers/tabs/esm2022/tabs.component.mjs +46 -3
  90. package/components/containers/tabs/fesm2022/index.mjs +54 -2
  91. package/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  92. package/components/containers/tabs/tab-pane/tab-pane.component.d.ts +3 -2
  93. package/components/containers/tabs/tabs.component.d.ts +5 -2
  94. package/components/containers/wizard/bundles/index.umd.js +47 -3
  95. package/components/containers/wizard/esm2022/wizard-step/wizard-step.component.mjs +16 -3
  96. package/components/containers/wizard/esm2022/wizard.component.mjs +33 -2
  97. package/components/containers/wizard/fesm2022/index.mjs +47 -3
  98. package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  99. package/components/containers/wizard/wizard-step/wizard-step.component.d.ts +3 -2
  100. package/components/containers/wizard/wizard.component.d.ts +4 -2
  101. package/components/data/card/bundles/index.umd.js +17 -1
  102. package/components/data/card/card-content/card-content.component.d.ts +3 -2
  103. package/components/data/card/card.component.d.ts +4 -2
  104. package/components/data/card/esm2022/card-content/card-content.component.mjs +6 -1
  105. package/components/data/card/esm2022/card.component.mjs +13 -2
  106. package/components/data/card/fesm2022/index.mjs +17 -1
  107. package/components/data/card/fesm2022/index.mjs.map +1 -1
  108. package/components/data/form/bundles/index.umd.js +92 -0
  109. package/components/data/form/esm2022/form-action/form-action.directive.mjs +7 -1
  110. package/components/data/form/esm2022/form-field/form-field.directive.mjs +28 -1
  111. package/components/data/form/esm2022/form-widget.directive.mjs +8 -1
  112. package/components/data/form/esm2022/form.component.mjs +27 -1
  113. package/components/data/form/esm2022/live-actions/live-actions.directive.mjs +7 -1
  114. package/components/data/form/esm2022/live-filter/live-filter.directive.mjs +12 -1
  115. package/components/data/form/esm2022/live-form/live-form.directive.mjs +10 -1
  116. package/components/data/form/fesm2022/index.mjs +92 -0
  117. package/components/data/form/fesm2022/index.mjs.map +1 -1
  118. package/components/data/form/form-action/form-action.directive.d.ts +3 -2
  119. package/components/data/form/form-field/form-field.directive.d.ts +3 -2
  120. package/components/data/form/form-widget.directive.d.ts +3 -2
  121. package/components/data/form/live-actions/live-actions.directive.d.ts +3 -1
  122. package/components/data/form/live-filter/live-filter.directive.d.ts +3 -1
  123. package/components/data/form/live-form/live-form.directive.d.ts +3 -1
  124. package/components/data/list/bundles/index.umd.js +213 -19
  125. package/components/data/list/esm2022/list-item.directive.mjs +95 -11
  126. package/components/data/list/esm2022/list.component.mjs +120 -10
  127. package/components/data/list/fesm2022/index.mjs +213 -19
  128. package/components/data/list/fesm2022/index.mjs.map +1 -1
  129. package/components/data/list/list-item.directive.d.ts +7 -2
  130. package/components/data/list/list.component.d.ts +7 -0
  131. package/components/data/live-table/bundles/index.umd.js +13 -1
  132. package/components/data/live-table/esm2022/live-table.component.mjs +14 -2
  133. package/components/data/live-table/fesm2022/index.mjs +13 -1
  134. package/components/data/live-table/fesm2022/index.mjs.map +1 -1
  135. package/components/data/live-table/live-table.component.d.ts +4 -2
  136. package/components/data/pagination/bundles/index.umd.js +57 -4
  137. package/components/data/pagination/esm2022/pagination.component.mjs +58 -5
  138. package/components/data/pagination/fesm2022/index.mjs +57 -4
  139. package/components/data/pagination/fesm2022/index.mjs.map +1 -1
  140. package/components/data/pagination/pagination.component.d.ts +4 -2
  141. package/components/data/table/bundles/index.umd.js +345 -15
  142. package/components/data/table/esm2022/table-action/table-action.directive.mjs +8 -1
  143. package/components/data/table/esm2022/table-column/table-column.directive.mjs +107 -3
  144. package/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +9 -1
  145. package/components/data/table/esm2022/table-cud.directive.mjs +8 -2
  146. package/components/data/table/esm2022/table-filter.directive.mjs +12 -2
  147. package/components/data/table/esm2022/table-row/table-row.directive.mjs +8 -1
  148. package/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +8 -1
  149. package/components/data/table/esm2022/table.component.mjs +193 -12
  150. package/components/data/table/fesm2022/index.mjs +345 -15
  151. package/components/data/table/fesm2022/index.mjs.map +1 -1
  152. package/components/data/table/table-action/table-action.directive.d.ts +3 -2
  153. package/components/data/table/table-column/table-column.directive.d.ts +3 -2
  154. package/components/data/table/table-column-group/table-column-group.directive.d.ts +3 -2
  155. package/components/data/table/table-cud.directive.d.ts +3 -1
  156. package/components/data/table/table-filter.directive.d.ts +3 -1
  157. package/components/data/table/table-row/table-row.directive.d.ts +3 -2
  158. package/components/data/table/table-row-action/table-row-action.directive.d.ts +3 -2
  159. package/components/data/table/table.component.d.ts +6 -2
  160. package/components/dialogs/alert-dialog/alert-dialog.component.d.ts +3 -2
  161. package/components/dialogs/alert-dialog/bundles/index.umd.js +5 -0
  162. package/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +6 -1
  163. package/components/dialogs/alert-dialog/fesm2022/index.mjs +5 -0
  164. package/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
  165. package/components/dialogs/confirm-dialog/bundles/index.umd.js +5 -0
  166. package/components/dialogs/confirm-dialog/confirm-dialog.component.d.ts +3 -2
  167. package/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +6 -1
  168. package/components/dialogs/confirm-dialog/fesm2022/index.mjs +5 -0
  169. package/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
  170. package/components/dialogs/default/bundles/index.umd.js +15 -2
  171. package/components/dialogs/default/dialog-body/dialog-body.directive.d.ts +4 -2
  172. package/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +16 -3
  173. package/components/dialogs/default/fesm2022/index.mjs +15 -2
  174. package/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  175. package/components/dialogs/design-dialog/bundles/index.umd.js +7 -0
  176. package/components/dialogs/design-dialog/dialog.component.d.ts +3 -2
  177. package/components/dialogs/design-dialog/esm2022/dialog.component.mjs +8 -1
  178. package/components/dialogs/design-dialog/fesm2022/index.mjs +7 -0
  179. package/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
  180. package/components/dialogs/iframe-dialog/bundles/index.umd.js +5 -0
  181. package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +6 -1
  182. package/components/dialogs/iframe-dialog/fesm2022/index.mjs +5 -0
  183. package/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
  184. package/components/dialogs/iframe-dialog/iframe-dialog.component.d.ts +3 -2
  185. package/components/dialogs/partial-dialog/bundles/index.umd.js +23 -3
  186. package/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +24 -4
  187. package/components/dialogs/partial-dialog/fesm2022/index.mjs +23 -3
  188. package/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
  189. package/components/dialogs/partial-dialog/partial-dialog.component.d.ts +4 -2
  190. package/components/input/base-form/base-form.component.d.ts +4 -2
  191. package/components/input/base-form/bundles/index.umd.js +16 -2
  192. package/components/input/base-form/esm2022/base-form.component.mjs +17 -3
  193. package/components/input/base-form/fesm2022/index.mjs +16 -2
  194. package/components/input/base-form/fesm2022/index.mjs.map +1 -1
  195. package/components/input/base-form-custom/base-form-custom.component.d.ts +3 -2
  196. package/components/input/base-form-custom/bundles/index.umd.js +13 -2
  197. package/components/input/base-form-custom/esm2022/base-form-custom.component.mjs +14 -3
  198. package/components/input/base-form-custom/fesm2022/index.mjs +13 -2
  199. package/components/input/base-form-custom/fesm2022/index.mjs.map +1 -1
  200. package/components/input/checkbox/bundles/index.umd.js +7 -0
  201. package/components/input/checkbox/checkbox.component.d.ts +3 -2
  202. package/components/input/checkbox/esm2022/checkbox.component.mjs +8 -1
  203. package/components/input/checkbox/fesm2022/index.mjs +7 -0
  204. package/components/input/checkbox/fesm2022/index.mjs.map +1 -1
  205. package/components/input/checkboxset/bundles/index.umd.js +18 -2
  206. package/components/input/checkboxset/checkboxset.component.d.ts +4 -2
  207. package/components/input/checkboxset/esm2022/checkboxset.component.mjs +19 -3
  208. package/components/input/checkboxset/fesm2022/index.mjs +18 -2
  209. package/components/input/checkboxset/fesm2022/index.mjs.map +1 -1
  210. package/components/input/chips/bundles/index.umd.js +45 -5
  211. package/components/input/chips/chips.component.d.ts +3 -2
  212. package/components/input/chips/esm2022/chips.component.mjs +46 -6
  213. package/components/input/chips/fesm2022/index.mjs +45 -5
  214. package/components/input/chips/fesm2022/index.mjs.map +1 -1
  215. package/components/input/color-picker/bundles/index.umd.js +8 -0
  216. package/components/input/color-picker/color-picker.component.d.ts +3 -2
  217. package/components/input/color-picker/esm2022/color-picker.component.mjs +9 -1
  218. package/components/input/color-picker/fesm2022/index.mjs +8 -0
  219. package/components/input/color-picker/fesm2022/index.mjs.map +1 -1
  220. package/components/input/composite/bundles/index.umd.js +10 -1
  221. package/components/input/composite/composite.directive.d.ts +3 -2
  222. package/components/input/composite/esm2022/composite.directive.mjs +11 -2
  223. package/components/input/composite/fesm2022/index.mjs +10 -1
  224. package/components/input/composite/fesm2022/index.mjs.map +1 -1
  225. package/components/input/currency/bundles/index.umd.js +7 -0
  226. package/components/input/currency/currency.component.d.ts +3 -2
  227. package/components/input/currency/esm2022/currency.component.mjs +8 -1
  228. package/components/input/currency/fesm2022/index.mjs +7 -0
  229. package/components/input/currency/fesm2022/index.mjs.map +1 -1
  230. package/components/input/dataset-aware-form/bundles/index.umd.js +26 -2
  231. package/components/input/dataset-aware-form/esm2022/dataset-aware-form.component.mjs +27 -3
  232. package/components/input/dataset-aware-form/fesm2022/index.mjs +26 -2
  233. package/components/input/dataset-aware-form/fesm2022/index.mjs.map +1 -1
  234. package/components/input/epoch/date/bundles/index.umd.js +22 -0
  235. package/components/input/epoch/date/date.component.d.ts +1 -0
  236. package/components/input/epoch/date/esm2022/date.component.mjs +23 -1
  237. package/components/input/epoch/date/fesm2022/index.mjs +22 -0
  238. package/components/input/epoch/date/fesm2022/index.mjs.map +1 -1
  239. package/components/input/file-upload/bundles/index.umd.js +25 -8
  240. package/components/input/file-upload/esm2022/file-upload.component.mjs +26 -9
  241. package/components/input/file-upload/fesm2022/index.mjs +25 -8
  242. package/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  243. package/components/input/file-upload/file-upload.component.d.ts +3 -0
  244. package/components/input/number/bundles/index.umd.js +8 -0
  245. package/components/input/number/esm2022/number.component.mjs +9 -1
  246. package/components/input/number/fesm2022/index.mjs +8 -0
  247. package/components/input/number/fesm2022/index.mjs.map +1 -1
  248. package/components/input/number/number.component.d.ts +3 -2
  249. package/components/input/radioset/bundles/index.umd.js +18 -2
  250. package/components/input/radioset/esm2022/radioset.component.mjs +19 -3
  251. package/components/input/radioset/fesm2022/index.mjs +18 -2
  252. package/components/input/radioset/fesm2022/index.mjs.map +1 -1
  253. package/components/input/radioset/radioset.component.d.ts +4 -2
  254. package/components/input/rating/bundles/index.umd.js +10 -0
  255. package/components/input/rating/esm2022/rating.component.mjs +11 -1
  256. package/components/input/rating/fesm2022/index.mjs +10 -0
  257. package/components/input/rating/fesm2022/index.mjs.map +1 -1
  258. package/components/input/rating/rating.component.d.ts +3 -2
  259. package/components/input/select/bundles/index.umd.js +6 -0
  260. package/components/input/select/esm2022/select.component.mjs +7 -1
  261. package/components/input/select/fesm2022/index.mjs +6 -0
  262. package/components/input/select/fesm2022/index.mjs.map +1 -1
  263. package/components/input/select/select.component.d.ts +3 -2
  264. package/components/input/slider/bundles/index.umd.js +10 -0
  265. package/components/input/slider/esm2022/slider.component.mjs +11 -1
  266. package/components/input/slider/fesm2022/index.mjs +10 -0
  267. package/components/input/slider/fesm2022/index.mjs.map +1 -1
  268. package/components/input/slider/slider.component.d.ts +3 -2
  269. package/components/input/switch/bundles/index.umd.js +22 -2
  270. package/components/input/switch/esm2022/switch.component.mjs +23 -3
  271. package/components/input/switch/fesm2022/index.mjs +22 -2
  272. package/components/input/switch/fesm2022/index.mjs.map +1 -1
  273. package/components/input/switch/switch.component.d.ts +3 -2
  274. package/components/input/text/bundles/index.umd.js +36 -0
  275. package/components/input/text/esm2022/input-calendar/input-calendar.component.mjs +8 -1
  276. package/components/input/text/esm2022/input-color/input-color.component.mjs +8 -1
  277. package/components/input/text/esm2022/input-email/input-email.component.mjs +8 -1
  278. package/components/input/text/esm2022/input-number/input-number.component.mjs +8 -1
  279. package/components/input/text/esm2022/input-text/input-text.component.mjs +9 -1
  280. package/components/input/text/fesm2022/index.mjs +36 -0
  281. package/components/input/text/fesm2022/index.mjs.map +1 -1
  282. package/components/input/text/input-calendar/input-calendar.component.d.ts +3 -2
  283. package/components/input/text/input-color/input-color.component.d.ts +3 -2
  284. package/components/input/text/input-email/input-email.component.d.ts +3 -2
  285. package/components/input/text/input-number/input-number.component.d.ts +3 -2
  286. package/components/input/text/input-text/input-text.component.d.ts +3 -2
  287. package/components/input/textarea/bundles/index.umd.js +7 -0
  288. package/components/input/textarea/esm2022/textarea.component.mjs +8 -1
  289. package/components/input/textarea/fesm2022/index.mjs +7 -0
  290. package/components/input/textarea/fesm2022/index.mjs.map +1 -1
  291. package/components/input/textarea/textarea.component.d.ts +3 -2
  292. package/components/navigation/menu/bundles/index.umd.js +55 -6
  293. package/components/navigation/menu/esm2022/menu-adapator.component.mjs +17 -3
  294. package/components/navigation/menu/esm2022/menu.component.mjs +10 -3
  295. package/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +6 -1
  296. package/components/navigation/menu/esm2022/nav/nav.component.mjs +11 -1
  297. package/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +16 -3
  298. package/components/navigation/menu/fesm2022/index.mjs +55 -6
  299. package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  300. package/components/navigation/menu/menu-adapator.component.d.ts +4 -2
  301. package/components/navigation/menu/nav/nav-item/nav-item.directive.d.ts +3 -2
  302. package/components/navigation/menu/nav/nav.component.d.ts +3 -2
  303. package/components/navigation/menu/nav/navigation-control.directive.d.ts +4 -2
  304. package/components/navigation/navbar/bundles/index.umd.js +5 -0
  305. package/components/navigation/navbar/esm2022/navbar.component.mjs +6 -1
  306. package/components/navigation/navbar/fesm2022/index.mjs +5 -0
  307. package/components/navigation/navbar/fesm2022/index.mjs.map +1 -1
  308. package/components/navigation/navbar/navbar.component.d.ts +3 -2
  309. package/components/navigation/popover/bundles/index.umd.js +65 -13
  310. package/components/navigation/popover/esm2022/popover.component.mjs +63 -11
  311. package/components/navigation/popover/fesm2022/index.mjs +62 -10
  312. package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  313. package/components/navigation/popover/popover.component.d.ts +11 -3
  314. package/components/page/default/bundles/index.umd.js +30 -6
  315. package/components/page/default/esm2022/layout.directive.mjs +9 -1
  316. package/components/page/default/esm2022/page-content/page-content.component.mjs +13 -3
  317. package/components/page/default/esm2022/router-outlet.directive.mjs +13 -6
  318. package/components/page/default/fesm2022/index.mjs +30 -6
  319. package/components/page/default/fesm2022/index.mjs.map +1 -1
  320. package/components/page/default/layout.directive.d.ts +3 -2
  321. package/components/page/default/page-content/page-content.component.d.ts +3 -2
  322. package/components/page/default/router-outlet.directive.d.ts +5 -2
  323. package/components/page/left-panel/bundles/index.umd.js +16 -0
  324. package/components/page/left-panel/esm2022/left-panel.directive.mjs +17 -1
  325. package/components/page/left-panel/fesm2022/index.mjs +16 -0
  326. package/components/page/left-panel/fesm2022/index.mjs.map +1 -1
  327. package/components/page/left-panel/left-panel.directive.d.ts +3 -2
  328. package/components/page/top-nav/bundles/index.umd.js +2 -1
  329. package/components/page/top-nav/esm2022/top-nav.props.mjs +3 -2
  330. package/components/page/top-nav/fesm2022/index.mjs +2 -1
  331. package/components/page/top-nav/fesm2022/index.mjs.map +1 -1
  332. package/components/prefab/bundles/index.umd.js +4 -0
  333. package/components/prefab/esm2022/prefab.directive.mjs +5 -1
  334. package/components/prefab/fesm2022/index.mjs +4 -0
  335. package/components/prefab/fesm2022/index.mjs.map +1 -1
  336. package/core/bundles/index.umd.js +391 -94
  337. package/core/esm2022/public_api.mjs +3 -3
  338. package/core/esm2022/services/viewport.service.mjs +24 -10
  339. package/core/esm2022/types/types.mjs +1 -1
  340. package/core/esm2022/utils/dom.mjs +18 -2
  341. package/core/esm2022/utils/event-notifier.mjs +5 -2
  342. package/core/esm2022/utils/lru-cache.mjs +16 -2
  343. package/core/esm2022/utils/utils.mjs +6 -2
  344. package/core/esm2022/utils/watcher.mjs +323 -81
  345. package/core/fesm2022/index.mjs +390 -96
  346. package/core/fesm2022/index.mjs.map +1 -1
  347. package/core/public_api.d.ts +2 -2
  348. package/core/services/viewport.service.d.ts +5 -2
  349. package/core/types/types.d.ts +1 -0
  350. package/core/utils/lru-cache.d.ts +6 -0
  351. package/core/utils/utils.d.ts +1 -0
  352. package/core/utils/watcher.d.ts +26 -5
  353. package/http/bundles/index.umd.js +31 -1
  354. package/http/esm2022/http.service.mjs +32 -2
  355. package/http/fesm2022/index.mjs +31 -1
  356. package/http/fesm2022/index.mjs.map +1 -1
  357. package/http/http.service.d.ts +6 -2
  358. package/npm-shrinkwrap.json +2 -2
  359. package/oAuth/bundles/index.umd.js +9 -0
  360. package/oAuth/esm2022/oAuth.service.mjs +10 -1
  361. package/oAuth/fesm2022/index.mjs +9 -0
  362. package/oAuth/fesm2022/index.mjs.map +1 -1
  363. package/oAuth/oAuth.service.d.ts +3 -1
  364. package/package-lock.json +2 -2
  365. package/package.json +1 -1
  366. package/runtime/base/bundles/index.umd.js +367 -32
  367. package/runtime/base/components/app-component/app.component.d.ts +4 -0
  368. package/runtime/base/components/prefab-preview.component.d.ts +5 -2
  369. package/runtime/base/directives/accessroles.directive.d.ts +4 -3
  370. package/runtime/base/directives/prefab.directive.d.ts +3 -2
  371. package/runtime/base/esm2022/components/app-component/app.component.mjs +40 -9
  372. package/runtime/base/esm2022/components/base-custom-widget.component.mjs +33 -2
  373. package/runtime/base/esm2022/components/base-layout.component.mjs +7 -1
  374. package/runtime/base/esm2022/components/base-page.component.mjs +36 -3
  375. package/runtime/base/esm2022/components/base-partial.component.mjs +37 -3
  376. package/runtime/base/esm2022/components/base-prefab.component.mjs +32 -3
  377. package/runtime/base/esm2022/components/base-spa-page.component.mjs +37 -3
  378. package/runtime/base/esm2022/components/prefab-preview.component.mjs +23 -4
  379. package/runtime/base/esm2022/directives/accessroles.directive.mjs +11 -2
  380. package/runtime/base/esm2022/directives/prefab.directive.mjs +9 -1
  381. package/runtime/base/esm2022/services/app.manager.service.mjs +40 -12
  382. package/runtime/base/esm2022/services/app.service.mjs +34 -2
  383. package/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +4 -1
  384. package/runtime/base/esm2022/services/pipe-provider.service.mjs +7 -4
  385. package/runtime/base/esm2022/services/spinner.service.mjs +15 -1
  386. package/runtime/base/esm2022/util/fragment-monitor.mjs +23 -2
  387. package/runtime/base/fesm2022/index.mjs +368 -33
  388. package/runtime/base/fesm2022/index.mjs.map +1 -1
  389. package/runtime/base/runtime-base.module.d.ts +2 -2
  390. package/runtime/base/services/app.manager.service.d.ts +6 -1
  391. package/runtime/base/services/app.service.d.ts +12 -2
  392. package/runtime/base/services/dynamic-component-ref-provider.service.d.ts +2 -1
  393. package/runtime/base/services/spinner.service.d.ts +3 -1
  394. package/runtime/base/util/fragment-monitor.d.ts +6 -0
  395. package/runtime/dynamic/bundles/index.umd.js +5 -0
  396. package/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +6 -1
  397. package/runtime/dynamic/fesm2022/index.mjs +5 -0
  398. package/runtime/dynamic/fesm2022/index.mjs.map +1 -1
  399. package/scripts/@wavemaker/nvd3/build/nv.d3.min.js +1 -1
  400. package/scripts/datatable/datatable.js +100 -14
  401. package/security/bundles/index.umd.js +41 -2
  402. package/security/esm2022/security.service.mjs +42 -3
  403. package/security/fesm2022/index.mjs +41 -2
  404. package/security/fesm2022/index.mjs.map +1 -1
  405. package/security/security.service.d.ts +5 -2
  406. package/variables/bundles/index.umd.js +50 -6
  407. package/variables/esm2022/manager/action/notification-action.manager.mjs +18 -3
  408. package/variables/esm2022/manager/variable/base-variable.manager.mjs +15 -2
  409. package/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +13 -3
  410. package/variables/esm2022/service/variables.service.mjs +8 -2
  411. package/variables/fesm2022/index.mjs +50 -6
  412. package/variables/fesm2022/index.mjs.map +1 -1
@@ -1,8 +1,8 @@
1
- import { Injector, OnInit } from '@angular/core';
1
+ import { Injector, OnDestroy, OnInit } from '@angular/core';
2
2
  import { BaseComponent } from '@wm/components/base';
3
3
  import { TableComponent } from '../table.component';
4
4
  import * as i0 from "@angular/core";
5
- export declare class TableActionDirective extends BaseComponent implements OnInit {
5
+ export declare class TableActionDirective extends BaseComponent implements OnInit, OnDestroy {
6
6
  table: TableComponent;
7
7
  static initializeProps: void;
8
8
  accessroles: any;
@@ -29,6 +29,7 @@ export declare class TableActionDirective extends BaseComponent implements OnIni
29
29
  populateAction(): void;
30
30
  ngOnInit(): void;
31
31
  onPropertyChange(key: any, nv: any): void;
32
+ ngOnDestroy(): void;
32
33
  static ɵfac: i0.ɵɵFactoryDeclaration<TableActionDirective, [null, { optional: true; }, { optional: true; }]>;
33
34
  static ɵdir: i0.ɵɵDirectiveDeclaration<TableActionDirective, "[wmTableAction]", never, {}, {}, never, never, true, never>;
34
35
  }
@@ -1,10 +1,10 @@
1
- import { AfterContentInit, AfterViewInit, Injector, OnInit, TemplateRef } from '@angular/core';
1
+ import { AfterContentInit, AfterViewInit, Injector, OnDestroy, OnInit, TemplateRef } from '@angular/core';
2
2
  import { AppDefaults } from '@wm/core';
3
3
  import { BaseComponent } from '@wm/components/base';
4
4
  import { TableComponent } from '../table.component';
5
5
  import { TableColumnGroupDirective } from '../table-column-group/table-column-group.directive';
6
6
  import * as i0 from "@angular/core";
7
- export declare class TableColumnDirective extends BaseComponent implements OnInit, AfterContentInit, AfterViewInit {
7
+ export declare class TableColumnDirective extends BaseComponent implements OnInit, AfterContentInit, AfterViewInit, OnDestroy {
8
8
  private appDefaults;
9
9
  table: TableComponent;
10
10
  group: TableColumnGroupDirective;
@@ -146,6 +146,7 @@ export declare class TableColumnDirective extends BaseComponent implements OnIni
146
146
  populateFieldDef(): void;
147
147
  onPropertyChange(key: any, nv: any, ov: any): void;
148
148
  setProperty(property: any, nv: any): void;
149
+ ngOnDestroy(): void;
149
150
  static ɵfac: i0.ɵɵFactoryDeclaration<TableColumnDirective, [null, null, { optional: true; }, { optional: true; }, { attribute: "filterdataset.bind"; }, { attribute: "dataset.bind"; }, { optional: true; }]>;
150
151
  static ɵdir: i0.ɵɵDirectiveDeclaration<TableColumnDirective, "[wmTableColumn]", never, {}, {}, ["customExprTmpl", "inlineWidthTempRef", "filterTemplateRef", "_filterInstances", "_inlineInstances", "_inlineInstancesNew"], never, true, never>;
151
152
  }
@@ -1,8 +1,8 @@
1
- import { Injector, OnInit } from '@angular/core';
1
+ import { Injector, OnDestroy, OnInit } from '@angular/core';
2
2
  import { BaseComponent } from '@wm/components/base';
3
3
  import { TableComponent } from '../table.component';
4
4
  import * as i0 from "@angular/core";
5
- export declare class TableColumnGroupDirective extends BaseComponent implements OnInit {
5
+ export declare class TableColumnGroupDirective extends BaseComponent implements OnInit, OnDestroy {
6
6
  group: TableColumnGroupDirective;
7
7
  table: TableComponent;
8
8
  static initializeProps: void;
@@ -17,6 +17,7 @@ export declare class TableColumnGroupDirective extends BaseComponent implements
17
17
  populateConfig(): void;
18
18
  onPropertyChange(key: any, nv: any, ov?: any): void;
19
19
  ngOnInit(): void;
20
+ ngOnDestroy(): void;
20
21
  static ɵfac: i0.ɵɵFactoryDeclaration<TableColumnGroupDirective, [null, { optional: true; skipSelf: true; }, { optional: true; }, { optional: true; }]>;
21
22
  static ɵdir: i0.ɵɵDirectiveDeclaration<TableColumnGroupDirective, "[wmTableColumnGroup]", never, {}, {}, never, never, true, never>;
22
23
  }
@@ -1,6 +1,7 @@
1
+ import { OnDestroy } from '@angular/core';
1
2
  import { AbstractDialogService, App } from '@wm/core';
2
3
  import * as i0 from "@angular/core";
3
- export declare class TableCUDDirective {
4
+ export declare class TableCUDDirective implements OnDestroy {
4
5
  private table;
5
6
  private dialogService;
6
7
  private app;
@@ -27,6 +28,7 @@ export declare class TableCUDDirective {
27
28
  hideEditRow(): void;
28
29
  saveRow(): void;
29
30
  cancelRow(): void;
31
+ ngOnDestroy(): void;
30
32
  static ɵfac: i0.ɵɵFactoryDeclaration<TableCUDDirective, [{ self: true; }, null, null]>;
31
33
  static ɵdir: i0.ɵɵDirectiveDeclaration<TableCUDDirective, "[wmTableCUD]", never, {}, {}, never, never, true, never>;
32
34
  }
@@ -1,5 +1,6 @@
1
+ import { OnDestroy } from '@angular/core';
1
2
  import * as i0 from "@angular/core";
2
- export declare class TableFilterSortDirective {
3
+ export declare class TableFilterSortDirective implements OnDestroy {
3
4
  private table;
4
5
  constructor(table: any);
5
6
  adjustContainer(fieldName: any): void;
@@ -28,6 +29,7 @@ export declare class TableFilterSortDirective {
28
29
  private getFilterOnFieldValues;
29
30
  onRowFilterChange(fieldName: any): void;
30
31
  refreshData(isSamePage: any): void;
32
+ ngOnDestroy(): void;
31
33
  static ɵfac: i0.ɵɵFactoryDeclaration<TableFilterSortDirective, [{ self: true; }]>;
32
34
  static ɵdir: i0.ɵɵDirectiveDeclaration<TableFilterSortDirective, "[wmTableFilterSort]", never, {}, {}, never, never, true, never>;
33
35
  }
@@ -1,8 +1,8 @@
1
- import { Injector, OnInit } from '@angular/core';
1
+ import { Injector, OnDestroy, OnInit } from '@angular/core';
2
2
  import { BaseComponent } from '@wm/components/base';
3
3
  import { TableComponent } from '../table.component';
4
4
  import * as i0 from "@angular/core";
5
- export declare class TableRowDirective extends BaseComponent implements OnInit {
5
+ export declare class TableRowDirective extends BaseComponent implements OnInit, OnDestroy {
6
6
  table: TableComponent;
7
7
  static initializeProps: void;
8
8
  config: any;
@@ -19,6 +19,7 @@ export declare class TableRowDirective extends BaseComponent implements OnInit {
19
19
  populateConfig(): void;
20
20
  ngOnInit(): void;
21
21
  onPropertyChange(key: string, nv: any): void;
22
+ ngOnDestroy(): void;
22
23
  static ɵfac: i0.ɵɵFactoryDeclaration<TableRowDirective, [null, { optional: true; skipSelf: true; }, { optional: true; }]>;
23
24
  static ɵdir: i0.ɵɵDirectiveDeclaration<TableRowDirective, "[wmTableRow]", never, {}, {}, never, never, true, never>;
24
25
  }
@@ -1,8 +1,8 @@
1
- import { Injector, OnInit } from '@angular/core';
1
+ import { Injector, OnDestroy, OnInit } from '@angular/core';
2
2
  import { BaseComponent } from '@wm/components/base';
3
3
  import { TableComponent } from '../table.component';
4
4
  import * as i0 from "@angular/core";
5
- export declare class TableRowActionDirective extends BaseComponent implements OnInit {
5
+ export declare class TableRowActionDirective extends BaseComponent implements OnInit, OnDestroy {
6
6
  table: TableComponent;
7
7
  static initializeProps: void;
8
8
  accessroles: any;
@@ -25,6 +25,7 @@ export declare class TableRowActionDirective extends BaseComponent implements On
25
25
  getTitle(): any;
26
26
  populateAction(): void;
27
27
  ngOnInit(): void;
28
+ ngOnDestroy(): void;
28
29
  static ɵfac: i0.ɵɵFactoryDeclaration<TableRowActionDirective, [null, { optional: true; }, { self: true; }, { optional: true; }]>;
29
30
  static ɵdir: i0.ɵɵDirectiveDeclaration<TableRowActionDirective, "[wmTableRowAction]", never, {}, {}, never, never, true, never>;
30
31
  }
@@ -109,7 +109,7 @@ export declare class TableComponent extends StylableComponent implements AfterCo
109
109
  exportOptions: any[];
110
110
  exportdatasize: any;
111
111
  formWidgets: any;
112
- headerConfig: any[];
112
+ headerConfig: any;
113
113
  items: any[];
114
114
  navControls: any;
115
115
  rowActions: any[];
@@ -128,10 +128,11 @@ export declare class TableComponent extends StylableComponent implements AfterCo
128
128
  actionRowIndex: any;
129
129
  actionRowPage: any;
130
130
  prevFilterExpression: any;
131
- fieldDefs: any[];
131
+ fieldDefs: any;
132
132
  rowDef: any;
133
133
  rowInstance: any;
134
134
  pagesizeoptions: any;
135
+ prevPagesizeoptions: any;
135
136
  multiselecttitle: any;
136
137
  multiselectarialabel: any;
137
138
  radioselecttitle: any;
@@ -378,6 +379,9 @@ export declare class TableComponent extends StylableComponent implements AfterCo
378
379
  getSortExpr(): any;
379
380
  onPropertyChange(key: string, nv: any, ov?: any): void;
380
381
  setDefaultPageSize(nv: any): void;
382
+ isPageSizeOptionsChanged(): boolean;
383
+ selectPageSize(pagesize: number): void;
384
+ sanitizeCommaSeparatedIntegers(input: string): string;
381
385
  onDataSourceChange(): void;
382
386
  private clearActionRowVars;
383
387
  onStyleChange(key: any, nv: any, ov: any): void;
@@ -1,7 +1,7 @@
1
- import { Injector, OnInit, TemplateRef } from '@angular/core';
1
+ import { Injector, OnInit, OnDestroy, TemplateRef } from '@angular/core';
2
2
  import { BaseDialog } from '@wm/components/dialogs';
3
3
  import * as i0 from "@angular/core";
4
- export declare class AlertDialogComponent extends BaseDialog implements OnInit {
4
+ export declare class AlertDialogComponent extends BaseDialog implements OnInit, OnDestroy {
5
5
  static initializeProps: void;
6
6
  dialogTemplate: TemplateRef<any>;
7
7
  constructor(inj: Injector, dialogClass: string, modal: string | boolean, closable: string | boolean, explicitContext: any);
@@ -13,6 +13,7 @@ export declare class AlertDialogComponent extends BaseDialog implements OnInit {
13
13
  */
14
14
  onOk($event: Event): void;
15
15
  ngOnInit(): void;
16
+ ngOnDestroy(): void;
16
17
  static ɵfac: i0.ɵɵFactoryDeclaration<AlertDialogComponent, [null, { attribute: "class"; }, { attribute: "modal"; }, { attribute: "closable"; }, { optional: true; }]>;
17
18
  static ɵcmp: i0.ɵɵComponentDeclaration<AlertDialogComponent, "div[wmAlertDialog]", never, {}, {}, never, never, true, never>;
18
19
  }
@@ -75,6 +75,11 @@
75
75
  super.ngOnInit();
76
76
  this.register(this.viewParent);
77
77
  }
78
+ ngOnDestroy() {
79
+ // MEMORY LEAK FIX: Clear ViewChild reference
80
+ this.dialogTemplate = null;
81
+ super.ngOnDestroy();
82
+ }
78
83
  static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: AlertDialogComponent, deps: [{ token: i0__namespace.Injector }, { token: 'class', attribute: true }, { token: 'modal', attribute: true }, { token: 'closable', attribute: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component }); }
79
84
  static { this.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AlertDialogComponent, isStandalone: true, selector: "div[wmAlertDialog]", providers: [
80
85
  base.provideAsWidgetRef(AlertDialogComponent),
@@ -39,6 +39,11 @@ export class AlertDialogComponent extends BaseDialog {
39
39
  super.ngOnInit();
40
40
  this.register(this.viewParent);
41
41
  }
42
+ ngOnDestroy() {
43
+ // MEMORY LEAK FIX: Clear ViewChild reference
44
+ this.dialogTemplate = null;
45
+ super.ngOnDestroy();
46
+ }
42
47
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlertDialogComponent, deps: [{ token: i0.Injector }, { token: 'class', attribute: true }, { token: 'modal', attribute: true }, { token: 'closable', attribute: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
43
48
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AlertDialogComponent, isStandalone: true, selector: "div[wmAlertDialog]", providers: [
44
49
  provideAsWidgetRef(AlertDialogComponent),
@@ -69,4 +74,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
69
74
  type: ViewChild,
70
75
  args: ['dialogTemplate', { static: true }]
71
76
  }] } });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9kaWFsb2dzL2FsZXJ0LWRpYWxvZy9zcmMvYWxlcnQtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9kaWFsb2dzL2FsZXJ0LWRpYWxvZy9zcmMvYWxlcnQtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBRVIsUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNyQyxPQUFPLEVBQWlCLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEgsT0FBTyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBRTlELE1BQU0sVUFBVSxHQUFHLDBDQUEwQyxDQUFDO0FBRTlELE1BQU0sV0FBVyxHQUFrQixFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO0FBWXBFLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxVQUFVO2FBQ3pDLG9CQUFlLEdBQUcsYUFBYSxFQUFFLEFBQWxCLENBQW1CO0lBSXpDLFlBQ0ksR0FBYSxFQUNPLFdBQW1CLEVBQ25CLEtBQXVCLEVBQ3BCLFFBQTBCLEVBQ1QsZUFBb0I7UUFFNUQsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4QyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLENBQUM7UUFFRCxJQUFJLFFBQVEsS0FBSyxJQUFJLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzlDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDcEIsQ0FBQztRQUVELCtFQUErRTtRQUMvRSxNQUFNLFFBQVEsR0FBdUIsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUV4RSxLQUFLLENBQ0QsR0FBRyxFQUNILFdBQVcsRUFDWDtZQUNJLEtBQUssRUFBRSxHQUFHLFVBQVUsSUFBSSxXQUFXLElBQUksRUFBRSxFQUFFO1lBQzNDLFFBQVE7WUFDUixRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1NBQzlCLEVBQ0QsZUFBZSxDQUNsQixDQUFDO0lBQ04sQ0FBQztJQUVTLGNBQWM7UUFDcEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxDQUFDLE1BQWE7UUFDZCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuQyxDQUFDOytHQW5EUSxvQkFBb0IsMENBT2QsT0FBTyw4QkFDUCxPQUFPLDhCQUNQLFVBQVUsOEJBQ2Isa0JBQWtCO21HQVZyQixvQkFBb0IsaUVBTGxCO1lBQ1Asa0JBQWtCLENBQUMsb0JBQW9CLENBQUM7WUFDeEMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUM7U0FDM0MsaUxDOUJMLHl1QkFtQkEsNENES2Msb0JBQW9CLG1GQUFFLG1CQUFtQiw4REFBRSxxQkFBcUIsZ0VBQUUscUJBQXFCLG9OQUFFLGVBQWU7OzRGQVF6RyxvQkFBb0I7a0JBVmhDLFNBQVM7aUNBQ00sSUFBSSxXQUNQLENBQUMsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxDQUFDLFlBQ3pHLG9CQUFvQixhQUVuQjt3QkFDUCxrQkFBa0Isc0JBQXNCO3dCQUN4QyxrQkFBa0Isc0JBQXNCO3FCQUMzQzs7MEJBU0ksU0FBUzsyQkFBQyxPQUFPOzswQkFDakIsU0FBUzsyQkFBQyxPQUFPOzswQkFDakIsU0FBUzsyQkFBQyxVQUFVOzswQkFDcEIsTUFBTTsyQkFBQyxrQkFBa0I7OzBCQUFHLFFBQVE7eUNBUE0sY0FBYztzQkFBNUQsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEF0dHJpYnV0ZSxcbiAgICBDb21wb25lbnQsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdG9yLFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IHRvQm9vbGVhbiB9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7IElXaWRnZXRDb25maWcsIHByb3ZpZGVBc0RpYWxvZ1JlZiwgcHJvdmlkZUFzV2lkZ2V0UmVmLCBUZXh0Q29udGVudERpcmVjdGl2ZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHsgQmFzZURpYWxvZywgRGlhbG9nQm9keURpcmVjdGl2ZSwgRGlhbG9nRm9vdGVyRGlyZWN0aXZlLCBEaWFsb2dIZWFkZXJDb21wb25lbnQgfSBmcm9tICdAd20vY29tcG9uZW50cy9kaWFsb2dzJztcblxuaW1wb3J0IHsgcmVnaXN0ZXJQcm9wcyB9IGZyb20gJy4vYWxlcnQtZGlhbG9nLnByb3BzJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gXCJAd20vY29tcG9uZW50cy9pbnB1dC9idXR0b25cIjtcblxuY29uc3QgRElBTE9HX0NMUyA9ICdhcHAtZGlhbG9nIG1vZGFsLWRpYWxvZyBhcHAtYWxlcnQtZGlhbG9nJztcblxuY29uc3QgV0lER0VUX0lORk86IElXaWRnZXRDb25maWcgPSB7IHdpZGdldFR5cGU6ICd3bS1hbGVydGRpYWxvZycgfTtcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbVGV4dENvbnRlbnREaXJlY3RpdmUsIERpYWxvZ0JvZHlEaXJlY3RpdmUsIERpYWxvZ0Zvb3RlckRpcmVjdGl2ZSwgRGlhbG9nSGVhZGVyQ29tcG9uZW50LCBCdXR0b25Db21wb25lbnRdLFxuICAgIHNlbGVjdG9yOiAnZGl2W3dtQWxlcnREaWFsb2ddJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYWxlcnQtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKEFsZXJ0RGlhbG9nQ29tcG9uZW50KSxcbiAgICAgICAgcHJvdmlkZUFzRGlhbG9nUmVmKEFsZXJ0RGlhbG9nQ29tcG9uZW50KVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgQWxlcnREaWFsb2dDb21wb25lbnQgZXh0ZW5kcyBCYXNlRGlhbG9nIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuXG4gICAgQFZpZXdDaGlsZCgnZGlhbG9nVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2dUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmo6IEluamVjdG9yLFxuICAgICAgICBAQXR0cmlidXRlKCdjbGFzcycpIGRpYWxvZ0NsYXNzOiBzdHJpbmcsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ21vZGFsJykgbW9kYWw6IHN0cmluZyB8IGJvb2xlYW4sXG4gICAgICAgIEBBdHRyaWJ1dGUoJ2Nsb3NhYmxlJykgY2xvc2FibGU6IHN0cmluZyB8IGJvb2xlYW4sXG4gICAgICAgIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueVxuICAgICkge1xuICAgICAgICBpZiAobW9kYWwgPT09IG51bGwgfHwgbW9kYWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbW9kYWwgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjbG9zYWJsZSA9PT0gbnVsbCB8fCBjbG9zYWJsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjbG9zYWJsZSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzZXR0aW5nIHRoZSBiYWNrZHJvcCB0byAnc3RhdGljJyB3aWxsIG5vdCBjbG9zZSB0aGUgZGlhbG9nIG9uIGJhY2tkcm9wIGNsaWNrXG4gICAgICAgIGNvbnN0IGJhY2tkcm9wOiBib29sZWFuIHwgJ3N0YXRpYycgPSB0b0Jvb2xlYW4obW9kYWwpID8gJ3N0YXRpYycgOiB0cnVlO1xuXG4gICAgICAgIHN1cGVyKFxuICAgICAgICAgICAgaW5qLFxuICAgICAgICAgICAgV0lER0VUX0lORk8sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3M6IGAke0RJQUxPR19DTFN9ICR7ZGlhbG9nQ2xhc3MgfHwgJyd9YCxcbiAgICAgICAgICAgICAgICBiYWNrZHJvcCxcbiAgICAgICAgICAgICAgICBrZXlib2FyZDogIXRvQm9vbGVhbihtb2RhbClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBleHBsaWNpdENvbnRleHRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0VGVtcGxhdGVSZWYoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpYWxvZ1RlbXBsYXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsaWNrIGV2ZW50IGhhbmRsZXIgZm9yIHRoZSBvayBidXR0b25cbiAgICAgKiBpbnZva2VzIG9uLW9rIGV2ZW50IGNhbGxiYWNrXG4gICAgICogQHBhcmFtIHtFdmVudH0gJGV2ZW50XG4gICAgICovXG4gICAgb25PaygkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnb2snLCB7ICRldmVudCB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5yZWdpc3Rlcih0aGlzLnZpZXdQYXJlbnQpO1xuICAgIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjZGlhbG9nVGVtcGxhdGU+XG4gICAgPGRpdiB3bURpYWxvZ0hlYWRlciBbY2xvc2FibGVdPVwiY2xvc2FibGVcIlxuICAgICAgICAgW2ljb25jbGFzc109XCJpY29uY2xhc3NcIlxuICAgICAgICAgW2ljb251cmxdPVwiaWNvbnVybFwiXG4gICAgICAgICBbaWNvbndpZHRoXT1cImljb253aWR0aFwiXG4gICAgICAgICBbaWNvbmhlaWdodF09XCJpY29uaGVpZ2h0XCJcbiAgICAgICAgIFtpY29ubWFyZ2luXT1cImljb25tYXJnaW5cIlxuICAgICAgICAgW2hlYWRpbmddPVwidGl0bGVcIlxuICAgICAgICAgW2hlYWRpbmdsZXZlbF09XCJoZWFkaW5nbGV2ZWxcIlxuICAgICAgICAgW3RpdGxlXT1cInRpdGxlXCJcbiAgICAgICAgIFt0aXRsZWlkXT1cInRpdGxlSWRcIj48L2Rpdj5cbiAgICA8ZGl2IHdtRGlhbG9nQm9keT5cbiAgICAgICAgPHAgY2xhc3M9XCJhcHAtZGlhbG9nLW1lc3NhZ2UgdGV4dC17e2FsZXJ0dHlwZX19XCIgW3RleHRDb250ZW50XT1cIm1lc3NhZ2VcIj48L3A+XG4gICAgPC9kaXY+XG4gICAgPGRpdiB3bURpYWxvZ0Zvb3Rlcj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25PaygkZXZlbnQpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJva3RleHRcIiBjYXB0aW9uLmJpbmQ9XCJva3RleHRcIiBjbGFzcz1cImJ0bi1wcmltYXJ5IG9rLWFjdGlvblwiXG4gICAgICAgICAgICAgICAgd21CdXR0b24+PC9idXR0b24+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9kaWFsb2dzL2FsZXJ0LWRpYWxvZy9zcmMvYWxlcnQtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9kaWFsb2dzL2FsZXJ0LWRpYWxvZy9zcmMvYWxlcnQtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBR1IsUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNyQyxPQUFPLEVBQWlCLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEgsT0FBTyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBRTlELE1BQU0sVUFBVSxHQUFHLDBDQUEwQyxDQUFDO0FBRTlELE1BQU0sV0FBVyxHQUFrQixFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO0FBWXBFLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxVQUFVO2FBQ3pDLG9CQUFlLEdBQUcsYUFBYSxFQUFFLEFBQWxCLENBQW1CO0lBSXpDLFlBQ0ksR0FBYSxFQUNPLFdBQW1CLEVBQ25CLEtBQXVCLEVBQ3BCLFFBQTBCLEVBQ1QsZUFBb0I7UUFFNUQsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4QyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLENBQUM7UUFFRCxJQUFJLFFBQVEsS0FBSyxJQUFJLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzlDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDcEIsQ0FBQztRQUVELCtFQUErRTtRQUMvRSxNQUFNLFFBQVEsR0FBdUIsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUV4RSxLQUFLLENBQ0QsR0FBRyxFQUNILFdBQVcsRUFDWDtZQUNJLEtBQUssRUFBRSxHQUFHLFVBQVUsSUFBSSxXQUFXLElBQUksRUFBRSxFQUFFO1lBQzNDLFFBQVE7WUFDUixRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1NBQzlCLEVBQ0QsZUFBZSxDQUNsQixDQUFDO0lBQ04sQ0FBQztJQUVTLGNBQWM7UUFDcEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxDQUFDLE1BQWE7UUFDZCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsV0FBVztRQUNQLDZDQUE2QztRQUM3QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUUzQixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEIsQ0FBQzsrR0ExRFEsb0JBQW9CLDBDQU9kLE9BQU8sOEJBQ1AsT0FBTyw4QkFDUCxVQUFVLDhCQUNiLGtCQUFrQjttR0FWckIsb0JBQW9CLGlFQUxsQjtZQUNQLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDO1lBQ3hDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDO1NBQzNDLGlMQy9CTCx5dUJBbUJBLDRDRE1jLG9CQUFvQixtRkFBRSxtQkFBbUIsOERBQUUscUJBQXFCLGdFQUFFLHFCQUFxQixvTkFBRSxlQUFlOzs0RkFRekcsb0JBQW9CO2tCQVZoQyxTQUFTO2lDQUNNLElBQUksV0FDUCxDQUFDLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixFQUFFLGVBQWUsQ0FBQyxZQUN6RyxvQkFBb0IsYUFFbkI7d0JBQ1Asa0JBQWtCLHNCQUFzQjt3QkFDeEMsa0JBQWtCLHNCQUFzQjtxQkFDM0M7OzBCQVNJLFNBQVM7MkJBQUMsT0FBTzs7MEJBQ2pCLFNBQVM7MkJBQUMsT0FBTzs7MEJBQ2pCLFNBQVM7MkJBQUMsVUFBVTs7MEJBQ3BCLE1BQU07MkJBQUMsa0JBQWtCOzswQkFBRyxRQUFRO3lDQVBNLGNBQWM7c0JBQTVELFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBdHRyaWJ1dGUsXG4gICAgQ29tcG9uZW50LFxuICAgIEluamVjdCxcbiAgICBJbmplY3RvcixcbiAgICBPbkluaXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgdG9Cb29sZWFuIH0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgSVdpZGdldENvbmZpZywgcHJvdmlkZUFzRGlhbG9nUmVmLCBwcm92aWRlQXNXaWRnZXRSZWYsIFRleHRDb250ZW50RGlyZWN0aXZlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQgeyBCYXNlRGlhbG9nLCBEaWFsb2dCb2R5RGlyZWN0aXZlLCBEaWFsb2dGb290ZXJEaXJlY3RpdmUsIERpYWxvZ0hlYWRlckNvbXBvbmVudCB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RpYWxvZ3MnO1xuXG5pbXBvcnQgeyByZWdpc3RlclByb3BzIH0gZnJvbSAnLi9hbGVydC1kaWFsb2cucHJvcHMnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2lucHV0L2J1dHRvblwiO1xuXG5jb25zdCBESUFMT0dfQ0xTID0gJ2FwcC1kaWFsb2cgbW9kYWwtZGlhbG9nIGFwcC1hbGVydC1kaWFsb2cnO1xuXG5jb25zdCBXSURHRVRfSU5GTzogSVdpZGdldENvbmZpZyA9IHsgd2lkZ2V0VHlwZTogJ3dtLWFsZXJ0ZGlhbG9nJyB9O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtUZXh0Q29udGVudERpcmVjdGl2ZSwgRGlhbG9nQm9keURpcmVjdGl2ZSwgRGlhbG9nRm9vdGVyRGlyZWN0aXZlLCBEaWFsb2dIZWFkZXJDb21wb25lbnQsIEJ1dHRvbkNvbXBvbmVudF0sXG4gICAgc2VsZWN0b3I6ICdkaXZbd21BbGVydERpYWxvZ10nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hbGVydC1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoQWxlcnREaWFsb2dDb21wb25lbnQpLFxuICAgICAgICBwcm92aWRlQXNEaWFsb2dSZWYoQWxlcnREaWFsb2dDb21wb25lbnQpXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBBbGVydERpYWxvZ0NvbXBvbmVudCBleHRlbmRzIEJhc2VEaWFsb2cgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2RpYWxvZ1RlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgaW5qOiBJbmplY3RvcixcbiAgICAgICAgQEF0dHJpYnV0ZSgnY2xhc3MnKSBkaWFsb2dDbGFzczogc3RyaW5nLFxuICAgICAgICBAQXR0cmlidXRlKCdtb2RhbCcpIG1vZGFsOiBzdHJpbmcgfCBib29sZWFuLFxuICAgICAgICBAQXR0cmlidXRlKCdjbG9zYWJsZScpIGNsb3NhYmxlOiBzdHJpbmcgfCBib29sZWFuLFxuICAgICAgICBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnlcbiAgICApIHtcbiAgICAgICAgaWYgKG1vZGFsID09PSBudWxsIHx8IG1vZGFsID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG1vZGFsID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2xvc2FibGUgPT09IG51bGwgfHwgY2xvc2FibGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY2xvc2FibGUgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2V0dGluZyB0aGUgYmFja2Ryb3AgdG8gJ3N0YXRpYycgd2lsbCBub3QgY2xvc2UgdGhlIGRpYWxvZyBvbiBiYWNrZHJvcCBjbGlja1xuICAgICAgICBjb25zdCBiYWNrZHJvcDogYm9vbGVhbiB8ICdzdGF0aWMnID0gdG9Cb29sZWFuKG1vZGFsKSA/ICdzdGF0aWMnIDogdHJ1ZTtcblxuICAgICAgICBzdXBlcihcbiAgICAgICAgICAgIGluaixcbiAgICAgICAgICAgIFdJREdFVF9JTkZPLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzOiBgJHtESUFMT0dfQ0xTfSAke2RpYWxvZ0NsYXNzIHx8ICcnfWAsXG4gICAgICAgICAgICAgICAgYmFja2Ryb3AsXG4gICAgICAgICAgICAgICAga2V5Ym9hcmQ6ICF0b0Jvb2xlYW4obW9kYWwpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXhwbGljaXRDb250ZXh0XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFRlbXBsYXRlUmVmKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kaWFsb2dUZW1wbGF0ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGljayBldmVudCBoYW5kbGVyIGZvciB0aGUgb2sgYnV0dG9uXG4gICAgICogaW52b2tlcyBvbi1vayBldmVudCBjYWxsYmFja1xuICAgICAqIEBwYXJhbSB7RXZlbnR9ICRldmVudFxuICAgICAqL1xuICAgIG9uT2soJGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ29rJywgeyAkZXZlbnQgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXIodGhpcy52aWV3UGFyZW50KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBDbGVhciBWaWV3Q2hpbGQgcmVmZXJlbmNlXG4gICAgICAgIHRoaXMuZGlhbG9nVGVtcGxhdGUgPSBudWxsO1xuXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNkaWFsb2dUZW1wbGF0ZT5cbiAgICA8ZGl2IHdtRGlhbG9nSGVhZGVyIFtjbG9zYWJsZV09XCJjbG9zYWJsZVwiXG4gICAgICAgICBbaWNvbmNsYXNzXT1cImljb25jbGFzc1wiXG4gICAgICAgICBbaWNvbnVybF09XCJpY29udXJsXCJcbiAgICAgICAgIFtpY29ud2lkdGhdPVwiaWNvbndpZHRoXCJcbiAgICAgICAgIFtpY29uaGVpZ2h0XT1cImljb25oZWlnaHRcIlxuICAgICAgICAgW2ljb25tYXJnaW5dPVwiaWNvbm1hcmdpblwiXG4gICAgICAgICBbaGVhZGluZ109XCJ0aXRsZVwiXG4gICAgICAgICBbaGVhZGluZ2xldmVsXT1cImhlYWRpbmdsZXZlbFwiXG4gICAgICAgICBbdGl0bGVdPVwidGl0bGVcIlxuICAgICAgICAgW3RpdGxlaWRdPVwidGl0bGVJZFwiPjwvZGl2PlxuICAgIDxkaXYgd21EaWFsb2dCb2R5PlxuICAgICAgICA8cCBjbGFzcz1cImFwcC1kaWFsb2ctbWVzc2FnZSB0ZXh0LXt7YWxlcnR0eXBlfX1cIiBbdGV4dENvbnRlbnRdPVwibWVzc2FnZVwiPjwvcD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IHdtRGlhbG9nRm9vdGVyPlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvbk9rKCRldmVudClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIm9rdGV4dFwiIGNhcHRpb24uYmluZD1cIm9rdGV4dFwiIGNsYXNzPVwiYnRuLXByaW1hcnkgb2stYWN0aW9uXCJcbiAgICAgICAgICAgICAgICB3bUJ1dHRvbj48L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -60,6 +60,11 @@ class AlertDialogComponent extends BaseDialog {
60
60
  super.ngOnInit();
61
61
  this.register(this.viewParent);
62
62
  }
63
+ ngOnDestroy() {
64
+ // MEMORY LEAK FIX: Clear ViewChild reference
65
+ this.dialogTemplate = null;
66
+ super.ngOnDestroy();
67
+ }
63
68
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlertDialogComponent, deps: [{ token: i0.Injector }, { token: 'class', attribute: true }, { token: 'modal', attribute: true }, { token: 'closable', attribute: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
64
69
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AlertDialogComponent, isStandalone: true, selector: "div[wmAlertDialog]", providers: [
65
70
  provideAsWidgetRef(AlertDialogComponent),
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/dialogs/alert-dialog/src/alert-dialog.props.ts","../../../../../projects/components/widgets/dialogs/alert-dialog/src/alert-dialog.component.ts","../../../../../projects/components/widgets/dialogs/alert-dialog/src/alert-dialog.component.html","../../../../../projects/components/widgets/dialogs/alert-dialog/src/index.ts"],"sourcesContent":["import { PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-alertdialog',\n new Map(\n [\n ['alerttype', {value: 'error', ...PROP_STRING}],\n ['animation', PROP_STRING],\n ['class', PROP_STRING],\n ['closable', {value: true, PROP_BOOLEAN}],\n ['iconclass', {value: 'wi wi-warning', PROP_STRING}],\n ['iconheight', PROP_STRING],\n ['iconmargin', PROP_STRING],\n ['iconurl', PROP_STRING],\n ['iconwidth', PROP_STRING],\n ['message', {value: 'Am an alert box!', ...PROP_STRING}],\n ['modal', {value: false, ...PROP_BOOLEAN}],\n ['name', PROP_STRING],\n ['oktext', {value: 'OK', ...PROP_STRING}],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['headinglevel', {value: 'h4', ...PROP_STRING}],\n ['title', {value: 'Alert', ...PROP_STRING}]\n ]\n )\n );\n};\n","import {\n Attribute,\n Component,\n Inject,\n Injector,\n OnInit,\n Optional,\n TemplateRef,\n ViewChild\n} from '@angular/core';\n\nimport { toBoolean } from '@wm/core';\nimport { IWidgetConfig, provideAsDialogRef, provideAsWidgetRef, TextContentDirective } from '@wm/components/base';\nimport { BaseDialog, DialogBodyDirective, DialogFooterDirective, DialogHeaderComponent } from '@wm/components/dialogs';\n\nimport { registerProps } from './alert-dialog.props';\nimport { ButtonComponent } from \"@wm/components/input/button\";\n\nconst DIALOG_CLS = 'app-dialog modal-dialog app-alert-dialog';\n\nconst WIDGET_INFO: IWidgetConfig = { widgetType: 'wm-alertdialog' };\n\n@Component({\n standalone: true,\n imports: [TextContentDirective, DialogBodyDirective, DialogFooterDirective, DialogHeaderComponent, ButtonComponent],\n selector: 'div[wmAlertDialog]',\n templateUrl: './alert-dialog.component.html',\n providers: [\n provideAsWidgetRef(AlertDialogComponent),\n provideAsDialogRef(AlertDialogComponent)\n ]\n})\nexport class AlertDialogComponent extends BaseDialog implements OnInit {\n static initializeProps = registerProps();\n\n @ViewChild('dialogTemplate', { static: true }) dialogTemplate: TemplateRef<any>;\n\n constructor(\n inj: Injector,\n @Attribute('class') dialogClass: string,\n @Attribute('modal') modal: string | boolean,\n @Attribute('closable') closable: string | boolean,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n if (modal === null || modal === undefined) {\n modal = false;\n }\n\n if (closable === null || closable === undefined) {\n closable = true;\n }\n\n // setting the backdrop to 'static' will not close the dialog on backdrop click\n const backdrop: boolean | 'static' = toBoolean(modal) ? 'static' : true;\n\n super(\n inj,\n WIDGET_INFO,\n {\n class: `${DIALOG_CLS} ${dialogClass || ''}`,\n backdrop,\n keyboard: !toBoolean(modal)\n },\n explicitContext\n );\n }\n\n protected getTemplateRef(): TemplateRef<any> {\n return this.dialogTemplate;\n }\n\n /**\n * Click event handler for the ok button\n * invokes on-ok event callback\n * @param {Event} $event\n */\n onOk($event: Event) {\n this.invokeEventCallback('ok', { $event });\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.register(this.viewParent);\n }\n}\n","<ng-template #dialogTemplate>\n <div wmDialogHeader [closable]=\"closable\"\n [iconclass]=\"iconclass\"\n [iconurl]=\"iconurl\"\n [iconwidth]=\"iconwidth\"\n [iconheight]=\"iconheight\"\n [iconmargin]=\"iconmargin\"\n [heading]=\"title\"\n [headinglevel]=\"headinglevel\"\n [title]=\"title\"\n [titleid]=\"titleId\"></div>\n <div wmDialogBody>\n <p class=\"app-dialog-message text-{{alerttype}}\" [textContent]=\"message\"></p>\n </div>\n <div wmDialogFooter>\n <button (click)=\"onOk($event)\" [attr.aria-label]=\"oktext\" caption.bind=\"oktext\" class=\"btn-primary ok-action\"\n wmButton></button>\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/dialogs/alert-dialog/src/alert-dialog.props.ts","../../../../../projects/components/widgets/dialogs/alert-dialog/src/alert-dialog.component.ts","../../../../../projects/components/widgets/dialogs/alert-dialog/src/alert-dialog.component.html","../../../../../projects/components/widgets/dialogs/alert-dialog/src/index.ts"],"sourcesContent":["import { PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-alertdialog',\n new Map(\n [\n ['alerttype', {value: 'error', ...PROP_STRING}],\n ['animation', PROP_STRING],\n ['class', PROP_STRING],\n ['closable', {value: true, PROP_BOOLEAN}],\n ['iconclass', {value: 'wi wi-warning', PROP_STRING}],\n ['iconheight', PROP_STRING],\n ['iconmargin', PROP_STRING],\n ['iconurl', PROP_STRING],\n ['iconwidth', PROP_STRING],\n ['message', {value: 'Am an alert box!', ...PROP_STRING}],\n ['modal', {value: false, ...PROP_BOOLEAN}],\n ['name', PROP_STRING],\n ['oktext', {value: 'OK', ...PROP_STRING}],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['headinglevel', {value: 'h4', ...PROP_STRING}],\n ['title', {value: 'Alert', ...PROP_STRING}]\n ]\n )\n );\n};\n","import {\n Attribute,\n Component,\n Inject,\n Injector,\n OnInit,\n OnDestroy,\n Optional,\n TemplateRef,\n ViewChild\n} from '@angular/core';\n\nimport { toBoolean } from '@wm/core';\nimport { IWidgetConfig, provideAsDialogRef, provideAsWidgetRef, TextContentDirective } from '@wm/components/base';\nimport { BaseDialog, DialogBodyDirective, DialogFooterDirective, DialogHeaderComponent } from '@wm/components/dialogs';\n\nimport { registerProps } from './alert-dialog.props';\nimport { ButtonComponent } from \"@wm/components/input/button\";\n\nconst DIALOG_CLS = 'app-dialog modal-dialog app-alert-dialog';\n\nconst WIDGET_INFO: IWidgetConfig = { widgetType: 'wm-alertdialog' };\n\n@Component({\n standalone: true,\n imports: [TextContentDirective, DialogBodyDirective, DialogFooterDirective, DialogHeaderComponent, ButtonComponent],\n selector: 'div[wmAlertDialog]',\n templateUrl: './alert-dialog.component.html',\n providers: [\n provideAsWidgetRef(AlertDialogComponent),\n provideAsDialogRef(AlertDialogComponent)\n ]\n})\nexport class AlertDialogComponent extends BaseDialog implements OnInit, OnDestroy {\n static initializeProps = registerProps();\n\n @ViewChild('dialogTemplate', { static: true }) dialogTemplate: TemplateRef<any>;\n\n constructor(\n inj: Injector,\n @Attribute('class') dialogClass: string,\n @Attribute('modal') modal: string | boolean,\n @Attribute('closable') closable: string | boolean,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n if (modal === null || modal === undefined) {\n modal = false;\n }\n\n if (closable === null || closable === undefined) {\n closable = true;\n }\n\n // setting the backdrop to 'static' will not close the dialog on backdrop click\n const backdrop: boolean | 'static' = toBoolean(modal) ? 'static' : true;\n\n super(\n inj,\n WIDGET_INFO,\n {\n class: `${DIALOG_CLS} ${dialogClass || ''}`,\n backdrop,\n keyboard: !toBoolean(modal)\n },\n explicitContext\n );\n }\n\n protected getTemplateRef(): TemplateRef<any> {\n return this.dialogTemplate;\n }\n\n /**\n * Click event handler for the ok button\n * invokes on-ok event callback\n * @param {Event} $event\n */\n onOk($event: Event) {\n this.invokeEventCallback('ok', { $event });\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.register(this.viewParent);\n }\n\n ngOnDestroy() {\n // MEMORY LEAK FIX: Clear ViewChild reference\n this.dialogTemplate = null;\n\n super.ngOnDestroy();\n }\n}\n","<ng-template #dialogTemplate>\n <div wmDialogHeader [closable]=\"closable\"\n [iconclass]=\"iconclass\"\n [iconurl]=\"iconurl\"\n [iconwidth]=\"iconwidth\"\n [iconheight]=\"iconheight\"\n [iconmargin]=\"iconmargin\"\n [heading]=\"title\"\n [headinglevel]=\"headinglevel\"\n [title]=\"title\"\n [titleid]=\"titleId\"></div>\n <div wmDialogBody>\n <p class=\"app-dialog-message text-{{alerttype}}\" [textContent]=\"message\"></p>\n </div>\n <div wmDialogFooter>\n <button (click)=\"onOk($event)\" [attr.aria-label]=\"oktext\" caption.bind=\"oktext\" class=\"btn-primary ok-action\"\n wmButton></button>\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -85,6 +85,11 @@
85
85
  super.ngOnInit();
86
86
  this.register(this.viewParent);
87
87
  }
88
+ ngOnDestroy() {
89
+ // MEMORY LEAK FIX: Clear ViewChild reference
90
+ this.dialogTemplate = null;
91
+ super.ngOnDestroy();
92
+ }
88
93
  static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: ConfirmDialogComponent, deps: [{ token: i0__namespace.Injector }, { token: 'class', attribute: true }, { token: 'modal', attribute: true }, { token: 'closable', attribute: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component }); }
89
94
  static { this.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ConfirmDialogComponent, isStandalone: true, selector: "div[wmConfirmDialog]", host: { listeners: { "window:keydown.esc": "onEscape($event)" } }, providers: [
90
95
  base.provideAsWidgetRef(ConfirmDialogComponent),
@@ -1,7 +1,7 @@
1
- import { Injector, OnInit, TemplateRef } from '@angular/core';
1
+ import { Injector, OnInit, OnDestroy, TemplateRef } from '@angular/core';
2
2
  import { BaseDialog } from '@wm/components/dialogs';
3
3
  import * as i0 from "@angular/core";
4
- export declare class ConfirmDialogComponent extends BaseDialog implements OnInit {
4
+ export declare class ConfirmDialogComponent extends BaseDialog implements OnInit, OnDestroy {
5
5
  static initializeProps: void;
6
6
  dialogTemplate: TemplateRef<any>;
7
7
  constructor(inj: Injector, dialogClass: string, modal: string | boolean, closable: string | boolean, explicitContext: any);
@@ -20,6 +20,7 @@ export declare class ConfirmDialogComponent extends BaseDialog implements OnInit
20
20
  */
21
21
  onCancel($event: Event): void;
22
22
  ngOnInit(): void;
23
+ ngOnDestroy(): void;
23
24
  static ɵfac: i0.ɵɵFactoryDeclaration<ConfirmDialogComponent, [null, { attribute: "class"; }, { attribute: "modal"; }, { attribute: "closable"; }, { optional: true; }]>;
24
25
  static ɵcmp: i0.ɵɵComponentDeclaration<ConfirmDialogComponent, "div[wmConfirmDialog]", never, {}, {}, never, never, true, never>;
25
26
  }
@@ -49,6 +49,11 @@ export class ConfirmDialogComponent extends BaseDialog {
49
49
  super.ngOnInit();
50
50
  this.register(this.viewParent);
51
51
  }
52
+ ngOnDestroy() {
53
+ // MEMORY LEAK FIX: Clear ViewChild reference
54
+ this.dialogTemplate = null;
55
+ super.ngOnDestroy();
56
+ }
52
57
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConfirmDialogComponent, deps: [{ token: i0.Injector }, { token: 'class', attribute: true }, { token: 'modal', attribute: true }, { token: 'closable', attribute: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
53
58
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ConfirmDialogComponent, isStandalone: true, selector: "div[wmConfirmDialog]", host: { listeners: { "window:keydown.esc": "onEscape($event)" } }, providers: [
54
59
  provideAsWidgetRef(ConfirmDialogComponent),
@@ -82,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
82
87
  type: HostListener,
83
88
  args: ['window:keydown.esc', ['$event']]
84
89
  }] } });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2RpYWxvZ3MvY29uZmlybS1kaWFsb2cvc3JjL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9kaWFsb2dzL2NvbmZpcm0tZGlhbG9nL3NyYy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFNBQVMsRUFDVCxRQUFRLEVBRVIsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ1osUUFBUSxFQUNSLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQUU5RCxNQUFNLFVBQVUsR0FBRyw0Q0FBNEMsQ0FBQztBQUNoRSxNQUFNLFdBQVcsR0FBRyxFQUFDLFVBQVUsRUFBRSxrQkFBa0IsRUFBQyxDQUFDO0FBWXJELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxVQUFVO2FBQzNDLG9CQUFlLEdBQUcsYUFBYSxFQUFFLEFBQWxCLENBQW1CO0lBR3pDLFlBQ0ksR0FBYSxFQUNPLFdBQW1CLEVBQ25CLEtBQXVCLEVBQ3BCLFFBQTBCLEVBQ1QsZUFBb0I7UUFFNUQsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4QyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLENBQUM7UUFFRCxJQUFJLFFBQVEsS0FBSyxJQUFJLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzlDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDcEIsQ0FBQztRQUVELCtFQUErRTtRQUMvRSxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFFMUIsS0FBSyxDQUNELEdBQUcsRUFDSCxXQUFXLEVBQ1g7WUFDSSxLQUFLLEVBQUUsR0FBRyxVQUFVLElBQUksV0FBVyxJQUFJLEVBQUUsRUFBRTtZQUMzQyxRQUFRO1lBQ1IsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztTQUM5QixFQUNELGVBQWUsQ0FDbEIsQ0FBQztJQUNOLENBQUM7SUFHRCxRQUFRLENBQUMsTUFBcUIsSUFBRSxDQUFDO0lBQUEsQ0FBQztJQUV4QixjQUFjO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksQ0FBQyxNQUFhO1FBQ2QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxFQUFDLE1BQU0sRUFBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRLENBQUMsTUFBYTtRQUNsQixJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLEVBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuQyxDQUFDOytHQTlEUSxzQkFBc0IsMENBTWhCLE9BQU8sOEJBQ1AsT0FBTyw4QkFDUCxVQUFVLDhCQUNiLGtCQUFrQjttR0FUckIsc0JBQXNCLHNJQUxwQjtZQUNQLGtCQUFrQixDQUFDLHNCQUFzQixDQUFDO1lBQzFDLGtCQUFrQixDQUFDLHNCQUFzQixDQUFDO1NBQzdDLGlMQzlCTCw2NEJBcUJBLDRDREdjLG1CQUFtQiw4REFBRSxxQkFBcUIsZ0VBQUUscUJBQXFCLG9OQUFFLGVBQWU7OzRGQVFuRixzQkFBc0I7a0JBVmxDLFNBQVM7aUNBQ00sSUFBSSxXQUNQLENBQUMsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxDQUFDLFlBQ25GLHNCQUFzQixhQUVyQjt3QkFDUCxrQkFBa0Isd0JBQXdCO3dCQUMxQyxrQkFBa0Isd0JBQXdCO3FCQUM3Qzs7MEJBUUksU0FBUzsyQkFBQyxPQUFPOzswQkFDakIsU0FBUzsyQkFBQyxPQUFPOzswQkFDakIsU0FBUzsyQkFBQyxVQUFVOzswQkFDcEIsTUFBTTsyQkFBQyxrQkFBa0I7OzBCQUFHLFFBQVE7eUNBUE0sY0FBYztzQkFBNUQsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBaUM3QyxRQUFRO3NCQURQLFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEF0dHJpYnV0ZSxcbiAgICBDb21wb25lbnQsXG4gICAgSW5qZWN0b3IsXG4gICAgT25Jbml0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgT3B0aW9uYWwsIFxuICAgIEluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHt0b0Jvb2xlYW59IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7IHByb3ZpZGVBc0RpYWxvZ1JlZiwgcHJvdmlkZUFzV2lkZ2V0UmVmIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQgeyBCYXNlRGlhbG9nLCBEaWFsb2dCb2R5RGlyZWN0aXZlLCBEaWFsb2dGb290ZXJEaXJlY3RpdmUsIERpYWxvZ0hlYWRlckNvbXBvbmVudCB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RpYWxvZ3MnO1xuXG5pbXBvcnQgeyByZWdpc3RlclByb3BzIH0gZnJvbSAnLi9jb25maXJtLWRpYWxvZy5wcm9wcyc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvaW5wdXQvYnV0dG9uXCI7XG5cbmNvbnN0IERJQUxPR19DTFMgPSAnYXBwLWRpYWxvZyBtb2RhbC1kaWFsb2cgYXBwLWNvbmZpcm0tZGlhbG9nJztcbmNvbnN0IFdJREdFVF9JTkZPID0ge3dpZGdldFR5cGU6ICd3bS1jb25maXJtZGlhbG9nJ307XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0RpYWxvZ0JvZHlEaXJlY3RpdmUsIERpYWxvZ0Zvb3RlckRpcmVjdGl2ZSwgRGlhbG9nSGVhZGVyQ29tcG9uZW50LCBCdXR0b25Db21wb25lbnRdLFxuICAgIHNlbGVjdG9yOiAnZGl2W3dtQ29uZmlybURpYWxvZ10nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb25maXJtLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVBc1dpZGdldFJlZihDb25maXJtRGlhbG9nQ29tcG9uZW50KSxcbiAgICAgICAgcHJvdmlkZUFzRGlhbG9nUmVmKENvbmZpcm1EaWFsb2dDb21wb25lbnQpXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBDb25maXJtRGlhbG9nQ29tcG9uZW50IGV4dGVuZHMgQmFzZURpYWxvZyBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcbiAgICBAVmlld0NoaWxkKCdkaWFsb2dUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWxvZ1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGluajogSW5qZWN0b3IsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ2NsYXNzJykgZGlhbG9nQ2xhc3M6IHN0cmluZyxcbiAgICAgICAgQEF0dHJpYnV0ZSgnbW9kYWwnKSBtb2RhbDogc3RyaW5nIHwgYm9vbGVhbixcbiAgICAgICAgQEF0dHJpYnV0ZSgnY2xvc2FibGUnKSBjbG9zYWJsZTogc3RyaW5nIHwgYm9vbGVhbixcbiAgICAgICAgQEluamVjdCgnRVhQTElDSVRfQ09OVEVYVCcpIEBPcHRpb25hbCgpIGV4cGxpY2l0Q29udGV4dDogYW55XG4gICAgKSB7XG4gICAgICAgIGlmIChtb2RhbCA9PT0gbnVsbCB8fCBtb2RhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBtb2RhbCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNsb3NhYmxlID09PSBudWxsIHx8IGNsb3NhYmxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNsb3NhYmxlID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHNldHRpbmcgdGhlIGJhY2tkcm9wIHRvICdzdGF0aWMnIHdpbGwgbm90IGNsb3NlIHRoZSBkaWFsb2cgb24gYmFja2Ryb3AgY2xpY2tcbiAgICAgICAgY29uc3QgYmFja2Ryb3AgPSAnc3RhdGljJztcblxuICAgICAgICBzdXBlcihcbiAgICAgICAgICAgIGluaixcbiAgICAgICAgICAgIFdJREdFVF9JTkZPLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzOiBgJHtESUFMT0dfQ0xTfSAke2RpYWxvZ0NsYXNzIHx8ICcnfWAsXG4gICAgICAgICAgICAgICAgYmFja2Ryb3AsXG4gICAgICAgICAgICAgICAga2V5Ym9hcmQ6ICF0b0Jvb2xlYW4obW9kYWwpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXhwbGljaXRDb250ZXh0XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWRvd24uZXNjJywgWyckZXZlbnQnXSlcbiAgICBvbkVzY2FwZSgkZXZlbnQ6IEtleWJvYXJkRXZlbnQpe307XG5cbiAgICBwcm90ZWN0ZWQgZ2V0VGVtcGxhdGVSZWYoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpYWxvZ1RlbXBsYXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsaWNrIGV2ZW50IGhhbmRsZXIgZm9yIHRoZSBvayBidXR0b25cbiAgICAgKiBpbnZva2VzIG9uLW9rIGV2ZW50IGNhbGxiYWNrXG4gICAgICogQHBhcmFtIHtFdmVudH0gJGV2ZW50XG4gICAgICovXG4gICAgb25PaygkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnb2snLCB7JGV2ZW50fSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xpY2sgZXZlbnQgaGFuZGxlciBmb3IgdGhlIGNhbmNlbCBidXR0b25cbiAgICAgKiBpbnZva2VzIG9uLWNhbmNlbCBldmVudCBjYWxsYmFja1xuICAgICAqIEBwYXJhbSB7RXZlbnR9ICRldmVudFxuICAgICAqL1xuICAgIG9uQ2FuY2VsKCRldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdjYW5jZWwnLCB7JGV2ZW50fSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXIodGhpcy52aWV3UGFyZW50KTtcbiAgICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI2RpYWxvZ1RlbXBsYXRlPlxuICAgIDxkaXYgd21EaWFsb2dIZWFkZXIgW2Nsb3NhYmxlXT1cImNsb3NhYmxlXCJcbiAgICAgICAgIFtpY29uY2xhc3NdPVwiaWNvbmNsYXNzXCJcbiAgICAgICAgIFtpY29udXJsXT1cImljb251cmxcIlxuICAgICAgICAgW2ljb253aWR0aF09XCJpY29ud2lkdGhcIlxuICAgICAgICAgW2ljb25oZWlnaHRdPVwiaWNvbmhlaWdodFwiXG4gICAgICAgICBbaWNvbm1hcmdpbl09XCJpY29ubWFyZ2luXCJcbiAgICAgICAgIFtoZWFkaW5nXT1cInRpdGxlXCJcbiAgICAgICAgIFtoZWFkaW5nbGV2ZWxdPVwiaGVhZGluZ2xldmVsXCJcbiAgICAgICAgIFt0aXRsZV09XCJ0aXRsZVwiXG4gICAgICAgICBbdGl0bGVpZF09XCJ0aXRsZUlkXCI+PC9kaXY+XG4gICAgPGRpdiB3bURpYWxvZ0JvZHk+XG4gICAgICAgIDxwIGNsYXNzPVwiYXBwLWRpYWxvZy1tZXNzYWdlIHt7bWVzc2FnZWNsYXNzfX1cIj57eyBtZXNzYWdlIH19PC9wPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgd21EaWFsb2dGb290ZXI+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cIm9uQ2FuY2VsKCRldmVudClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImNhbmNlbHRleHRcIiBjYXB0aW9uLmJpbmQ9XCJjYW5jZWx0ZXh0XCIgY2xhc3M9XCJidG4tZGVmYXVsdCBjYW5jZWwtYWN0aW9uXCJcbiAgICAgICAgICAgICAgICB3bUJ1dHRvbj48L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25PaygkZXZlbnQpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJva3RleHRcIiBjYXB0aW9uLmJpbmQ9XCJva3RleHRcIiBjbGFzcz1cImJ0bi1wcmltYXJ5IG9rLWFjdGlvblwiXG4gICAgICAgICAgICAgICAgd21CdXR0b24+PC9idXR0b24+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2RpYWxvZ3MvY29uZmlybS1kaWFsb2cvc3JjL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9kaWFsb2dzL2NvbmZpcm0tZGlhbG9nL3NyYy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFNBQVMsRUFDVCxRQUFRLEVBR1IsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ1osUUFBUSxFQUNSLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQUU5RCxNQUFNLFVBQVUsR0FBRyw0Q0FBNEMsQ0FBQztBQUNoRSxNQUFNLFdBQVcsR0FBRyxFQUFDLFVBQVUsRUFBRSxrQkFBa0IsRUFBQyxDQUFDO0FBWXJELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxVQUFVO2FBQzNDLG9CQUFlLEdBQUcsYUFBYSxFQUFFLEFBQWxCLENBQW1CO0lBR3pDLFlBQ0ksR0FBYSxFQUNPLFdBQW1CLEVBQ25CLEtBQXVCLEVBQ3BCLFFBQTBCLEVBQ1QsZUFBb0I7UUFFNUQsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4QyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLENBQUM7UUFFRCxJQUFJLFFBQVEsS0FBSyxJQUFJLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzlDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDcEIsQ0FBQztRQUVELCtFQUErRTtRQUMvRSxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFFMUIsS0FBSyxDQUNELEdBQUcsRUFDSCxXQUFXLEVBQ1g7WUFDSSxLQUFLLEVBQUUsR0FBRyxVQUFVLElBQUksV0FBVyxJQUFJLEVBQUUsRUFBRTtZQUMzQyxRQUFRO1lBQ1IsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztTQUM5QixFQUNELGVBQWUsQ0FDbEIsQ0FBQztJQUNOLENBQUM7SUFHRCxRQUFRLENBQUMsTUFBcUIsSUFBRSxDQUFDO0lBQUEsQ0FBQztJQUV4QixjQUFjO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksQ0FBQyxNQUFhO1FBQ2QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxFQUFDLE1BQU0sRUFBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRLENBQUMsTUFBYTtRQUNsQixJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLEVBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsV0FBVztRQUNQLDZDQUE2QztRQUM3QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUUzQixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEIsQ0FBQzsrR0FyRVEsc0JBQXNCLDBDQU1oQixPQUFPLDhCQUNQLE9BQU8sOEJBQ1AsVUFBVSw4QkFDYixrQkFBa0I7bUdBVHJCLHNCQUFzQixzSUFMcEI7WUFDUCxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQztZQUMxQyxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQztTQUM3QyxpTEMvQkwsNjRCQXFCQSw0Q0RJYyxtQkFBbUIsOERBQUUscUJBQXFCLGdFQUFFLHFCQUFxQixvTkFBRSxlQUFlOzs0RkFRbkYsc0JBQXNCO2tCQVZsQyxTQUFTO2lDQUNNLElBQUksV0FDUCxDQUFDLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixFQUFFLGVBQWUsQ0FBQyxZQUNuRixzQkFBc0IsYUFFckI7d0JBQ1Asa0JBQWtCLHdCQUF3Qjt3QkFDMUMsa0JBQWtCLHdCQUF3QjtxQkFDN0M7OzBCQVFJLFNBQVM7MkJBQUMsT0FBTzs7MEJBQ2pCLFNBQVM7MkJBQUMsT0FBTzs7MEJBQ2pCLFNBQVM7MkJBQUMsVUFBVTs7MEJBQ3BCLE1BQU07MkJBQUMsa0JBQWtCOzswQkFBRyxRQUFRO3lDQVBNLGNBQWM7c0JBQTVELFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQWlDN0MsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLG9CQUFvQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBdHRyaWJ1dGUsXG4gICAgQ29tcG9uZW50LFxuICAgIEluamVjdG9yLFxuICAgIE9uSW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBPcHRpb25hbCwgXG4gICAgSW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge3RvQm9vbGVhbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgcHJvdmlkZUFzRGlhbG9nUmVmLCBwcm92aWRlQXNXaWRnZXRSZWYgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7IEJhc2VEaWFsb2csIERpYWxvZ0JvZHlEaXJlY3RpdmUsIERpYWxvZ0Zvb3RlckRpcmVjdGl2ZSwgRGlhbG9nSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvZGlhbG9ncyc7XG5cbmltcG9ydCB7IHJlZ2lzdGVyUHJvcHMgfSBmcm9tICcuL2NvbmZpcm0tZGlhbG9nLnByb3BzJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gXCJAd20vY29tcG9uZW50cy9pbnB1dC9idXR0b25cIjtcblxuY29uc3QgRElBTE9HX0NMUyA9ICdhcHAtZGlhbG9nIG1vZGFsLWRpYWxvZyBhcHAtY29uZmlybS1kaWFsb2cnO1xuY29uc3QgV0lER0VUX0lORk8gPSB7d2lkZ2V0VHlwZTogJ3dtLWNvbmZpcm1kaWFsb2cnfTtcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbRGlhbG9nQm9keURpcmVjdGl2ZSwgRGlhbG9nRm9vdGVyRGlyZWN0aXZlLCBEaWFsb2dIZWFkZXJDb21wb25lbnQsIEJ1dHRvbkNvbXBvbmVudF0sXG4gICAgc2VsZWN0b3I6ICdkaXZbd21Db25maXJtRGlhbG9nXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKENvbmZpcm1EaWFsb2dDb21wb25lbnQpLFxuICAgICAgICBwcm92aWRlQXNEaWFsb2dSZWYoQ29uZmlybURpYWxvZ0NvbXBvbmVudClcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIENvbmZpcm1EaWFsb2dDb21wb25lbnQgZXh0ZW5kcyBCYXNlRGlhbG9nIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHN0YXRpYyBpbml0aWFsaXplUHJvcHMgPSByZWdpc3RlclByb3BzKCk7XG4gICAgQFZpZXdDaGlsZCgnZGlhbG9nVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2dUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmo6IEluamVjdG9yLFxuICAgICAgICBAQXR0cmlidXRlKCdjbGFzcycpIGRpYWxvZ0NsYXNzOiBzdHJpbmcsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ21vZGFsJykgbW9kYWw6IHN0cmluZyB8IGJvb2xlYW4sXG4gICAgICAgIEBBdHRyaWJ1dGUoJ2Nsb3NhYmxlJykgY2xvc2FibGU6IHN0cmluZyB8IGJvb2xlYW4sXG4gICAgICAgIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueVxuICAgICkge1xuICAgICAgICBpZiAobW9kYWwgPT09IG51bGwgfHwgbW9kYWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbW9kYWwgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjbG9zYWJsZSA9PT0gbnVsbCB8fCBjbG9zYWJsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjbG9zYWJsZSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzZXR0aW5nIHRoZSBiYWNrZHJvcCB0byAnc3RhdGljJyB3aWxsIG5vdCBjbG9zZSB0aGUgZGlhbG9nIG9uIGJhY2tkcm9wIGNsaWNrXG4gICAgICAgIGNvbnN0IGJhY2tkcm9wID0gJ3N0YXRpYyc7XG5cbiAgICAgICAgc3VwZXIoXG4gICAgICAgICAgICBpbmosXG4gICAgICAgICAgICBXSURHRVRfSU5GTyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzczogYCR7RElBTE9HX0NMU30gJHtkaWFsb2dDbGFzcyB8fCAnJ31gLFxuICAgICAgICAgICAgICAgIGJhY2tkcm9wLFxuICAgICAgICAgICAgICAgIGtleWJvYXJkOiAhdG9Cb29sZWFuKG1vZGFsKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGV4cGxpY2l0Q29udGV4dFxuICAgICAgICApO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlkb3duLmVzYycsIFsnJGV2ZW50J10pXG4gICAgb25Fc2NhcGUoJGV2ZW50OiBLZXlib2FyZEV2ZW50KXt9O1xuXG4gICAgcHJvdGVjdGVkIGdldFRlbXBsYXRlUmVmKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kaWFsb2dUZW1wbGF0ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGljayBldmVudCBoYW5kbGVyIGZvciB0aGUgb2sgYnV0dG9uXG4gICAgICogaW52b2tlcyBvbi1vayBldmVudCBjYWxsYmFja1xuICAgICAqIEBwYXJhbSB7RXZlbnR9ICRldmVudFxuICAgICAqL1xuICAgIG9uT2soJGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ29rJywgeyRldmVudH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsaWNrIGV2ZW50IGhhbmRsZXIgZm9yIHRoZSBjYW5jZWwgYnV0dG9uXG4gICAgICogaW52b2tlcyBvbi1jYW5jZWwgZXZlbnQgY2FsbGJhY2tcbiAgICAgKiBAcGFyYW0ge0V2ZW50fSAkZXZlbnRcbiAgICAgKi9cbiAgICBvbkNhbmNlbCgkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnY2FuY2VsJywgeyRldmVudH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyKHRoaXMudmlld1BhcmVudCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIC8vIE1FTU9SWSBMRUFLIEZJWDogQ2xlYXIgVmlld0NoaWxkIHJlZmVyZW5jZVxuICAgICAgICB0aGlzLmRpYWxvZ1RlbXBsYXRlID0gbnVsbDtcblxuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjZGlhbG9nVGVtcGxhdGU+XG4gICAgPGRpdiB3bURpYWxvZ0hlYWRlciBbY2xvc2FibGVdPVwiY2xvc2FibGVcIlxuICAgICAgICAgW2ljb25jbGFzc109XCJpY29uY2xhc3NcIlxuICAgICAgICAgW2ljb251cmxdPVwiaWNvbnVybFwiXG4gICAgICAgICBbaWNvbndpZHRoXT1cImljb253aWR0aFwiXG4gICAgICAgICBbaWNvbmhlaWdodF09XCJpY29uaGVpZ2h0XCJcbiAgICAgICAgIFtpY29ubWFyZ2luXT1cImljb25tYXJnaW5cIlxuICAgICAgICAgW2hlYWRpbmddPVwidGl0bGVcIlxuICAgICAgICAgW2hlYWRpbmdsZXZlbF09XCJoZWFkaW5nbGV2ZWxcIlxuICAgICAgICAgW3RpdGxlXT1cInRpdGxlXCJcbiAgICAgICAgIFt0aXRsZWlkXT1cInRpdGxlSWRcIj48L2Rpdj5cbiAgICA8ZGl2IHdtRGlhbG9nQm9keT5cbiAgICAgICAgPHAgY2xhc3M9XCJhcHAtZGlhbG9nLW1lc3NhZ2Uge3ttZXNzYWdlY2xhc3N9fVwiPnt7IG1lc3NhZ2UgfX08L3A+XG4gICAgPC9kaXY+XG4gICAgPGRpdiB3bURpYWxvZ0Zvb3Rlcj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25DYW5jZWwoJGV2ZW50KVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiY2FuY2VsdGV4dFwiIGNhcHRpb24uYmluZD1cImNhbmNlbHRleHRcIiBjbGFzcz1cImJ0bi1kZWZhdWx0IGNhbmNlbC1hY3Rpb25cIlxuICAgICAgICAgICAgICAgIHdtQnV0dG9uPjwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvbk9rKCRldmVudClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIm9rdGV4dFwiIGNhcHRpb24uYmluZD1cIm9rdGV4dFwiIGNsYXNzPVwiYnRuLXByaW1hcnkgb2stYWN0aW9uXCJcbiAgICAgICAgICAgICAgICB3bUJ1dHRvbj48L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -70,6 +70,11 @@ class ConfirmDialogComponent extends BaseDialog {
70
70
  super.ngOnInit();
71
71
  this.register(this.viewParent);
72
72
  }
73
+ ngOnDestroy() {
74
+ // MEMORY LEAK FIX: Clear ViewChild reference
75
+ this.dialogTemplate = null;
76
+ super.ngOnDestroy();
77
+ }
73
78
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConfirmDialogComponent, deps: [{ token: i0.Injector }, { token: 'class', attribute: true }, { token: 'modal', attribute: true }, { token: 'closable', attribute: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
74
79
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ConfirmDialogComponent, isStandalone: true, selector: "div[wmConfirmDialog]", host: { listeners: { "window:keydown.esc": "onEscape($event)" } }, providers: [
75
80
  provideAsWidgetRef(ConfirmDialogComponent),
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/dialogs/confirm-dialog/src/confirm-dialog.props.ts","../../../../../projects/components/widgets/dialogs/confirm-dialog/src/confirm-dialog.component.ts","../../../../../projects/components/widgets/dialogs/confirm-dialog/src/confirm-dialog.component.html","../../../../../projects/components/widgets/dialogs/confirm-dialog/src/index.ts"],"sourcesContent":["import { PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-confirmdialog',\n new Map(\n [\n ['animation', PROP_STRING],\n ['canceltext', {value: 'CANCEL', ...PROP_STRING}],\n ['class', PROP_STRING],\n ['closable', {value: true, PROP_BOOLEAN}],\n ['iconclass', {value: 'wm-sl-l sl-check', PROP_STRING}],\n ['iconheight', PROP_STRING],\n ['iconmargin', PROP_STRING],\n ['iconurl', PROP_STRING],\n ['iconwidth', PROP_STRING],\n ['message', {value: 'I am confirm box!', ...PROP_STRING}],\n ['modal', {value: false, ...PROP_BOOLEAN}],\n ['name', PROP_STRING],\n ['oktext', {value: 'OK', ...PROP_STRING}],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['headinglevel', {value: 'h4', ...PROP_STRING}],\n ['title', {value: 'Confirm', ...PROP_STRING}]\n ]\n )\n );\n};\n","import {\n Attribute,\n Component,\n Injector,\n OnInit,\n TemplateRef,\n ViewChild,\n HostListener,\n Optional, \n Inject\n} from '@angular/core';\n\nimport {toBoolean} from '@wm/core';\nimport { provideAsDialogRef, provideAsWidgetRef } from '@wm/components/base';\nimport { BaseDialog, DialogBodyDirective, DialogFooterDirective, DialogHeaderComponent } from '@wm/components/dialogs';\n\nimport { registerProps } from './confirm-dialog.props';\nimport { ButtonComponent } from \"@wm/components/input/button\";\n\nconst DIALOG_CLS = 'app-dialog modal-dialog app-confirm-dialog';\nconst WIDGET_INFO = {widgetType: 'wm-confirmdialog'};\n\n@Component({\n standalone: true,\n imports: [DialogBodyDirective, DialogFooterDirective, DialogHeaderComponent, ButtonComponent],\n selector: 'div[wmConfirmDialog]',\n templateUrl: './confirm-dialog.component.html',\n providers: [\n provideAsWidgetRef(ConfirmDialogComponent),\n provideAsDialogRef(ConfirmDialogComponent)\n ]\n})\nexport class ConfirmDialogComponent extends BaseDialog implements OnInit {\n static initializeProps = registerProps();\n @ViewChild('dialogTemplate', { static: true }) dialogTemplate: TemplateRef<any>;\n\n constructor(\n inj: Injector,\n @Attribute('class') dialogClass: string,\n @Attribute('modal') modal: string | boolean,\n @Attribute('closable') closable: string | boolean,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n if (modal === null || modal === undefined) {\n modal = false;\n }\n\n if (closable === null || closable === undefined) {\n closable = true;\n }\n\n // setting the backdrop to 'static' will not close the dialog on backdrop click\n const backdrop = 'static';\n\n super(\n inj,\n WIDGET_INFO,\n {\n class: `${DIALOG_CLS} ${dialogClass || ''}`,\n backdrop,\n keyboard: !toBoolean(modal)\n },\n explicitContext\n );\n }\n\n @HostListener('window:keydown.esc', ['$event'])\n onEscape($event: KeyboardEvent){};\n\n protected getTemplateRef(): TemplateRef<any> {\n return this.dialogTemplate;\n }\n\n /**\n * Click event handler for the ok button\n * invokes on-ok event callback\n * @param {Event} $event\n */\n onOk($event: Event) {\n this.invokeEventCallback('ok', {$event});\n }\n\n /**\n * Click event handler for the cancel button\n * invokes on-cancel event callback\n * @param {Event} $event\n */\n onCancel($event: Event) {\n this.invokeEventCallback('cancel', {$event});\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.register(this.viewParent);\n }\n}\n","<ng-template #dialogTemplate>\n <div wmDialogHeader [closable]=\"closable\"\n [iconclass]=\"iconclass\"\n [iconurl]=\"iconurl\"\n [iconwidth]=\"iconwidth\"\n [iconheight]=\"iconheight\"\n [iconmargin]=\"iconmargin\"\n [heading]=\"title\"\n [headinglevel]=\"headinglevel\"\n [title]=\"title\"\n [titleid]=\"titleId\"></div>\n <div wmDialogBody>\n <p class=\"app-dialog-message {{messageclass}}\">{{ message }}</p>\n </div>\n <div wmDialogFooter>\n <button (click)=\"onCancel($event)\" [attr.aria-label]=\"canceltext\" caption.bind=\"canceltext\" class=\"btn-default cancel-action\"\n wmButton></button>\n <button (click)=\"onOk($event)\" [attr.aria-label]=\"oktext\" caption.bind=\"oktext\" class=\"btn-primary ok-action\"\n wmButton></button>\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/dialogs/confirm-dialog/src/confirm-dialog.props.ts","../../../../../projects/components/widgets/dialogs/confirm-dialog/src/confirm-dialog.component.ts","../../../../../projects/components/widgets/dialogs/confirm-dialog/src/confirm-dialog.component.html","../../../../../projects/components/widgets/dialogs/confirm-dialog/src/index.ts"],"sourcesContent":["import { PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-confirmdialog',\n new Map(\n [\n ['animation', PROP_STRING],\n ['canceltext', {value: 'CANCEL', ...PROP_STRING}],\n ['class', PROP_STRING],\n ['closable', {value: true, PROP_BOOLEAN}],\n ['iconclass', {value: 'wm-sl-l sl-check', PROP_STRING}],\n ['iconheight', PROP_STRING],\n ['iconmargin', PROP_STRING],\n ['iconurl', PROP_STRING],\n ['iconwidth', PROP_STRING],\n ['message', {value: 'I am confirm box!', ...PROP_STRING}],\n ['modal', {value: false, ...PROP_BOOLEAN}],\n ['name', PROP_STRING],\n ['oktext', {value: 'OK', ...PROP_STRING}],\n ['tabindex', {value: 0, ...PROP_NUMBER}],\n ['headinglevel', {value: 'h4', ...PROP_STRING}],\n ['title', {value: 'Confirm', ...PROP_STRING}]\n ]\n )\n );\n};\n","import {\n Attribute,\n Component,\n Injector,\n OnInit,\n OnDestroy,\n TemplateRef,\n ViewChild,\n HostListener,\n Optional, \n Inject\n} from '@angular/core';\n\nimport {toBoolean} from '@wm/core';\nimport { provideAsDialogRef, provideAsWidgetRef } from '@wm/components/base';\nimport { BaseDialog, DialogBodyDirective, DialogFooterDirective, DialogHeaderComponent } from '@wm/components/dialogs';\n\nimport { registerProps } from './confirm-dialog.props';\nimport { ButtonComponent } from \"@wm/components/input/button\";\n\nconst DIALOG_CLS = 'app-dialog modal-dialog app-confirm-dialog';\nconst WIDGET_INFO = {widgetType: 'wm-confirmdialog'};\n\n@Component({\n standalone: true,\n imports: [DialogBodyDirective, DialogFooterDirective, DialogHeaderComponent, ButtonComponent],\n selector: 'div[wmConfirmDialog]',\n templateUrl: './confirm-dialog.component.html',\n providers: [\n provideAsWidgetRef(ConfirmDialogComponent),\n provideAsDialogRef(ConfirmDialogComponent)\n ]\n})\nexport class ConfirmDialogComponent extends BaseDialog implements OnInit, OnDestroy {\n static initializeProps = registerProps();\n @ViewChild('dialogTemplate', { static: true }) dialogTemplate: TemplateRef<any>;\n\n constructor(\n inj: Injector,\n @Attribute('class') dialogClass: string,\n @Attribute('modal') modal: string | boolean,\n @Attribute('closable') closable: string | boolean,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n if (modal === null || modal === undefined) {\n modal = false;\n }\n\n if (closable === null || closable === undefined) {\n closable = true;\n }\n\n // setting the backdrop to 'static' will not close the dialog on backdrop click\n const backdrop = 'static';\n\n super(\n inj,\n WIDGET_INFO,\n {\n class: `${DIALOG_CLS} ${dialogClass || ''}`,\n backdrop,\n keyboard: !toBoolean(modal)\n },\n explicitContext\n );\n }\n\n @HostListener('window:keydown.esc', ['$event'])\n onEscape($event: KeyboardEvent){};\n\n protected getTemplateRef(): TemplateRef<any> {\n return this.dialogTemplate;\n }\n\n /**\n * Click event handler for the ok button\n * invokes on-ok event callback\n * @param {Event} $event\n */\n onOk($event: Event) {\n this.invokeEventCallback('ok', {$event});\n }\n\n /**\n * Click event handler for the cancel button\n * invokes on-cancel event callback\n * @param {Event} $event\n */\n onCancel($event: Event) {\n this.invokeEventCallback('cancel', {$event});\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.register(this.viewParent);\n }\n\n ngOnDestroy() {\n // MEMORY LEAK FIX: Clear ViewChild reference\n this.dialogTemplate = null;\n\n super.ngOnDestroy();\n }\n}\n","<ng-template #dialogTemplate>\n <div wmDialogHeader [closable]=\"closable\"\n [iconclass]=\"iconclass\"\n [iconurl]=\"iconurl\"\n [iconwidth]=\"iconwidth\"\n [iconheight]=\"iconheight\"\n [iconmargin]=\"iconmargin\"\n [heading]=\"title\"\n [headinglevel]=\"headinglevel\"\n [title]=\"title\"\n [titleid]=\"titleId\"></div>\n <div wmDialogBody>\n <p class=\"app-dialog-message {{messageclass}}\">{{ message }}</p>\n </div>\n <div wmDialogFooter>\n <button (click)=\"onCancel($event)\" [attr.aria-label]=\"canceltext\" caption.bind=\"canceltext\" class=\"btn-default cancel-action\"\n wmButton></button>\n <button (click)=\"onOk($event)\" [attr.aria-label]=\"oktext\" caption.bind=\"oktext\" class=\"btn-primary ok-action\"\n wmButton></button>\n </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -32,7 +32,7 @@
32
32
  this.dialogRef = dialogRef;
33
33
  this.renderer = renderer;
34
34
  i1$1.addClass(elRef.nativeElement, DEFAULT_CLS$1);
35
- const subscription = bsModal.onShown.subscribe(() => {
35
+ this.bsModalShownSubscription = bsModal.onShown.subscribe(() => {
36
36
  const dialogRoot = $(elRef.nativeElement).closest('.app-dialog')[0];
37
37
  const dialogContent = $(elRef.nativeElement).closest('.modal-content')[0];
38
38
  let dialogRootContainer = $('body.wm-app')[0];
@@ -73,9 +73,22 @@
73
73
  i1$1.setAttr(dialogRoot, 'tabindex', this.dialogRef.tabindex);
74
74
  i1$1.setAttr(dialogRoot, 'name', this.dialogRef.name);
75
75
  }
76
- subscription.unsubscribe();
76
+ // Clean up subscription after first use
77
+ if (this.bsModalShownSubscription) {
78
+ this.bsModalShownSubscription.unsubscribe();
79
+ this.bsModalShownSubscription = null;
80
+ }
77
81
  });
78
82
  }
83
+ ngOnDestroy() {
84
+ // MEMORY LEAK FIX: Unsubscribe from bsModal.onShown if not already unsubscribed
85
+ if (this.bsModalShownSubscription) {
86
+ this.bsModalShownSubscription.unsubscribe();
87
+ this.bsModalShownSubscription = null;
88
+ }
89
+ // MEMORY LEAK FIX: Clear dialogRef reference
90
+ this.dialogRef = null;
91
+ }
79
92
  static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: DialogBodyDirective, deps: [{ token: i0__namespace.ElementRef }, { token: base.DialogRef }, { token: i1__namespace.BsModalService }, { token: i0__namespace.Renderer2 }], target: i0__namespace.ɵɵFactoryTarget.Directive }); }
80
93
  static { this.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DialogBodyDirective, isStandalone: true, selector: "div[wmDialogBody]", host: { properties: { "style.height": "this.height" } }, ngImport: i0__namespace }); }
81
94
  }
@@ -1,11 +1,13 @@
1
- import { ElementRef, Renderer2 } from '@angular/core';
1
+ import { ElementRef, OnDestroy, Renderer2 } from '@angular/core';
2
2
  import { BsModalService } from 'ngx-bootstrap/modal';
3
3
  import * as i0 from "@angular/core";
4
- export declare class DialogBodyDirective {
4
+ export declare class DialogBodyDirective implements OnDestroy {
5
5
  private dialogRef;
6
6
  private renderer;
7
7
  height: any;
8
+ private bsModalShownSubscription;
8
9
  constructor(elRef: ElementRef, dialogRef: any, bsModal: BsModalService, renderer: Renderer2);
10
+ ngOnDestroy(): void;
9
11
  static ɵfac: i0.ɵɵFactoryDeclaration<DialogBodyDirective, never>;
10
12
  static ɵdir: i0.ɵɵDirectiveDeclaration<DialogBodyDirective, "div[wmDialogBody]", never, {}, {}, never, never, true, never>;
11
13
  }
@@ -10,7 +10,7 @@ export class DialogBodyDirective {
10
10
  this.dialogRef = dialogRef;
11
11
  this.renderer = renderer;
12
12
  addClass(elRef.nativeElement, DEFAULT_CLS);
13
- const subscription = bsModal.onShown.subscribe(() => {
13
+ this.bsModalShownSubscription = bsModal.onShown.subscribe(() => {
14
14
  const dialogRoot = $(elRef.nativeElement).closest('.app-dialog')[0];
15
15
  const dialogContent = $(elRef.nativeElement).closest('.modal-content')[0];
16
16
  let dialogRootContainer = $('body.wm-app')[0];
@@ -51,9 +51,22 @@ export class DialogBodyDirective {
51
51
  setAttr(dialogRoot, 'tabindex', this.dialogRef.tabindex);
52
52
  setAttr(dialogRoot, 'name', this.dialogRef.name);
53
53
  }
54
- subscription.unsubscribe();
54
+ // Clean up subscription after first use
55
+ if (this.bsModalShownSubscription) {
56
+ this.bsModalShownSubscription.unsubscribe();
57
+ this.bsModalShownSubscription = null;
58
+ }
55
59
  });
56
60
  }
61
+ ngOnDestroy() {
62
+ // MEMORY LEAK FIX: Unsubscribe from bsModal.onShown if not already unsubscribed
63
+ if (this.bsModalShownSubscription) {
64
+ this.bsModalShownSubscription.unsubscribe();
65
+ this.bsModalShownSubscription = null;
66
+ }
67
+ // MEMORY LEAK FIX: Clear dialogRef reference
68
+ this.dialogRef = null;
69
+ }
57
70
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DialogBodyDirective, deps: [{ token: i0.ElementRef }, { token: DialogRef }, { token: i1.BsModalService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
58
71
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DialogBodyDirective, isStandalone: true, selector: "div[wmDialogBody]", host: { properties: { "style.height": "this.height" } }, ngImport: i0 }); }
59
72
  }
@@ -70,4 +83,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
70
83
  type: HostBinding,
71
84
  args: ['style.height']
72
85
  }] } });
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWJvZHkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2RpYWxvZ3MvZGVmYXVsdC9zcmMvZGlhbG9nLWJvZHkvZGlhbG9nLWJvZHkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXRGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFJaEQsTUFBTSxXQUFXLEdBQUcsNEJBQTRCLENBQUM7QUFNakQsTUFBTSxPQUFPLG1CQUFtQjtJQUU1QixZQUNJLEtBQWlCLEVBQ1UsU0FBUyxFQUNwQyxPQUF1QixFQUNkLFFBQW1CO1FBRkQsY0FBUyxHQUFULFNBQVMsQ0FBQTtRQUUzQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBRTVCLFFBQVEsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRTNDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNoRCxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwRSxNQUFNLGFBQWEsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FB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ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIEluamVjdCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5cbmltcG9ydCB7IGFkZENsYXNzLCBnZXRTaGVldFBvc2l0aW9uQ2xhc3MsIHNldEF0dHIsIHNldENTUyB9IGZyb20gJ0B3bS9jb3JlJztcblxuaW1wb3J0IHsgRGlhbG9nUmVmIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5cbmRlY2xhcmUgY29uc3QgJDtcblxuY29uc3QgREVGQVVMVF9DTFMgPSAnYXBwLWRpYWxvZy1ib2R5IG1vZGFsLWJvZHknO1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2Rpdlt3bURpYWxvZ0JvZHldJyxcbn0pXG5leHBvcnQgY2xhc3MgRGlhbG9nQm9keURpcmVjdGl2ZSB7XG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5oZWlnaHQnKSBoZWlnaHQ7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBASW5qZWN0KERpYWxvZ1JlZikgcHJpdmF0ZSBkaWFsb2dSZWYsXG4gICAgICAgIGJzTW9kYWw6IEJzTW9kYWxTZXJ2aWNlLFxuICAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyXG4gICAgKSB7XG4gICAgICAgIGFkZENsYXNzKGVsUmVmLm5hdGl2ZUVsZW1lbnQsIERFRkFVTFRfQ0xTKTtcblxuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBic01vZGFsLm9uU2hvd24uc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRpYWxvZ1Jvb3QgPSAkKGVsUmVmLm5hdGl2ZUVsZW1lbnQpLmNsb3Nlc3QoJy5hcHAtZGlhbG9nJylbMF07XG4gICAgICAgICAgICBjb25zdCBkaWFsb2dDb250ZW50ID0gJChlbFJlZi5uYXRpdmVFbGVtZW50KS5jbG9zZXN0KCcubW9kYWwtY29udGVudCcpWzBdO1xuICAgICAgICAgICAgbGV0IGRpYWxvZ1Jvb3RDb250YWluZXIgPSAkKCdib2R5LndtLWFwcCcpWzBdO1xuICAgICAgICAgICAgLy8gVG8gaWRlbnRpZnkgdGhlIG1pY3JvZnJvbnRlbmQsIGlmIGJvZHkgdGFnIGRvZXNuJ3QgaGF2ZSB3bS1hcHAgY2xhc3MgdGhlbiBhcHAgbG9hZGluZyBhcyBtaWNyby1mcm9udGVuZFxuICAgICAgICAgICAgaWYoIWRpYWxvZ1Jvb3RDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkaWFsb2dCYWNrcm9wID0gJCgnYm9keSA+IC5tb2RhbC1iYWNrZHJvcCcpWzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudENvbnRhaW5lciA9ICQoJ2JvZHkgPiBtb2RhbC1jb250YWluZXInKVswXTtcbiAgICAgICAgICAgICAgICBkaWFsb2dSb290Q29udGFpbmVyID0gJCgnLndtLWFwcCcpWzBdO1xuICAgICAgICAgICAgICAgIGlmKGRpYWxvZ1Jvb3RDb250YWluZXIgICYmIHBhcmVudENvbnRhaW5lciApe1xuICAgICAgICAgICAgICAgICAgICBpZihkaWFsb2dCYWNrcm9wKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoZGlhbG9nUm9vdENvbnRhaW5lciwgZGlhbG9nQmFja3JvcCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChkaWFsb2dSb290Q29udGFpbmVyLCBwYXJlbnRDb250YWluZXIpO1xuXG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpc1NoZWV0ID0gdGhpcy5kaWFsb2dSZWYuc2hlZXQ7XG4gICAgICAgICAgICBjb25zdCBzaGVldFBvc2l0aW9uID0gdGhpcy5kaWFsb2dSZWYuc2hlZXRQb3NpdGlvbjtcbiAgICAgICAgICAgIGlmKGlzU2hlZXQpIHtcbiAgICAgICAgICAgICAgICAkKGRpYWxvZ1Jvb3QpLmFkZENsYXNzKCdtb2RhbC1zaGVldCcpO1xuICAgICAgICAgICAgICAgICQoZGlhbG9nUm9vdCkuYWRkQ2xhc3MoZ2V0U2hlZXRQb3NpdGlvbkNsYXNzKHNoZWV0UG9zaXRpb24pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFuaW1hdGlvbiA9IHRoaXMuZGlhbG9nUmVmLmFuaW1hdGlvbjtcbiAgICAgICAgICAgIGlmKGFuaW1hdGlvbikge1xuICAgICAgICAgICAgICAgICQoZGlhbG9nQ29udGVudCkuYWRkQ2xhc3MoJ2FuaW1hdGVkJyk7XG4gICAgICAgICAgICAgICAgJChkaWFsb2dDb250ZW50KS5hZGRDbGFzcyhhbmltYXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLmRpYWxvZ1JlZi53aWR0aDtcbiAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IHRoaXMuZGlhbG9nUmVmLmhlaWdodDtcbiAgICAgICAgICAgIGlmKGhlaWdodCl7XG4gICAgICAgICAgICAgICBzZXRUaW1lb3V0KGU9PntcbiAgICAgICAgICAgICAgICAgICAgc2V0Q1NTKCQoZWxSZWYubmF0aXZlRWxlbWVudClbMF0sICdoZWlnaHQnLCBoZWlnaHQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRpYWxvZ1Jvb3QpIHtcbiAgICAgICAgICAgICAgICBpZiAod2lkdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0Q1NTKGRpYWxvZ1Jvb3QsICd3aWR0aCcsIHdpZHRoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0QXR0cihkaWFsb2dSb290LCAndGFiaW5kZXgnLCB0aGlzLmRpYWxvZ1JlZi50YWJpbmRleCk7XG4gICAgICAgICAgICAgICAgc2V0QXR0cihkaWFsb2dSb290LCAnbmFtZScsIHRoaXMuZGlhbG9nUmVmLm5hbWUpO1xuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWJvZHkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2RpYWxvZ3MvZGVmYXVsdC9zcmMvZGlhbG9nLWJvZHkvZGlhbG9nLWJvZHkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQWEsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR2pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFJaEQsTUFBTSxXQUFXLEdBQUcsNEJBQTRCLENBQUM7QUFNakQsTUFBTSxPQUFPLG1CQUFtQjtJQUk1QixZQUNJLEtBQWlCLEVBQ1UsU0FBUyxFQUNwQyxPQUF1QixFQUNkLFFBQW1CO1FBRkQsY0FBUyxHQUFULFNBQVMsQ0FBQTtRQUUzQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBRTVCLFFBQVEsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRTNDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDM0QsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEUsTUFBTSxhQUFhLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxD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QUMsd0JBQXdCLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztRQUN6QyxDQUFDO1FBRUQsNkNBQTZDO1FBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUM7K0dBeEVRLG1CQUFtQiw0Q0FNaEIsU0FBUzttR0FOWixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2QsUUFBUSxFQUFFLG1CQUFtQjtpQkFDaEM7OzBCQU9RLE1BQU07MkJBQUMsU0FBUzs4RkFMUSxNQUFNO3NCQUFsQyxXQUFXO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbmplY3QsIE9uRGVzdHJveSwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcblxuaW1wb3J0IHsgYWRkQ2xhc3MsIGdldFNoZWV0UG9zaXRpb25DbGFzcywgc2V0QXR0ciwgc2V0Q1NTIH0gZnJvbSAnQHdtL2NvcmUnO1xuXG5pbXBvcnQgeyBEaWFsb2dSZWYgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcblxuZGVjbGFyZSBjb25zdCAkO1xuXG5jb25zdCBERUZBVUxUX0NMUyA9ICdhcHAtZGlhbG9nLWJvZHkgbW9kYWwtYm9keSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnZGl2W3dtRGlhbG9nQm9keV0nLFxufSlcbmV4cG9ydCBjbGFzcyBEaWFsb2dCb2R5RGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmhlaWdodCcpIGhlaWdodDtcbiAgICBwcml2YXRlIGJzTW9kYWxTaG93blN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBASW5qZWN0KERpYWxvZ1JlZikgcHJpdmF0ZSBkaWFsb2dSZWYsXG4gICAgICAgIGJzTW9kYWw6IEJzTW9kYWxTZXJ2aWNlLFxuICAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyXG4gICAgKSB7XG4gICAgICAgIGFkZENsYXNzKGVsUmVmLm5hdGl2ZUVsZW1lbnQsIERFRkFVTFRfQ0xTKTtcblxuICAgICAgICB0aGlzLmJzTW9kYWxTaG93blN1YnNjcmlwdGlvbiA9IGJzTW9kYWwub25TaG93bi5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGlhbG9nUm9vdCA9ICQoZWxSZWYubmF0aXZlRWxlbWVudCkuY2xvc2VzdCgnLmFwcC1kaWFsb2cnKVswXTtcbiAgICAgICAgICAgIGNvbnN0IGRpYWxvZ0NvbnRlbnQgPSAkKGVsUmVmLm5hdGl2ZUVsZW1lbnQpLmNsb3Nlc3QoJy5tb2RhbC1jb250ZW50JylbMF07XG4gICAgICAgICAgICBsZXQgZGlhbG9nUm9vdENvbnRhaW5lciA9ICQoJ2JvZHkud20tYXBwJylbMF07XG4gICAgICAgICAgICAvLyBUbyBpZGVudGlmeSB0aGUgbWljcm9mcm9udGVuZCwgaWYgYm9keSB0YWcgZG9lc24ndCBoYXZlIHdtLWFwcCBjbGFzcyB0aGVuIGFwcCBsb2FkaW5nIGFzIG1pY3JvLWZyb250ZW5kXG4gICAgICAgICAgICBpZighZGlhbG9nUm9vdENvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpYWxvZ0JhY2tyb3AgPSAkKCdib2R5ID4gLm1vZGFsLWJhY2tkcm9wJylbMF07XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50Q29udGFpbmVyID0gJCgnYm9keSA+IG1vZGFsLWNvbnRhaW5lcicpWzBdO1xuICAgICAgICAgICAgICAgIGRpYWxvZ1Jvb3RDb250YWluZXIgPSAkKCcud20tYXBwJylbMF07XG4gICAgICAgICAgICAgICAgaWYoZGlhbG9nUm9vdENvbnRhaW5lciAgJiYgcGFyZW50Q29udGFpbmVyICl7XG4gICAgICAgICAgICAgICAgICAgIGlmKGRpYWxvZ0JhY2tyb3Ape1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChkaWFsb2dSb290Q29udGFpbmVyLCBkaWFsb2dCYWNrcm9wKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGRpYWxvZ1Jvb3RDb250YWluZXIsIHBhcmVudENvbnRhaW5lcik7XG5cbiAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGlzU2hlZXQgPSB0aGlzLmRpYWxvZ1JlZi5zaGVldDtcbiAgICAgICAgICAgIGNvbnN0IHNoZWV0UG9zaXRpb24gPSB0aGlzLmRpYWxvZ1JlZi5zaGVldFBvc2l0aW9uO1xuICAgICAgICAgICAgaWYoaXNTaGVldCkge1xuICAgICAgICAgICAgICAgICQoZGlhbG9nUm9vdCkuYWRkQ2xhc3MoJ21vZGFsLXNoZWV0Jyk7XG4gICAgICAgICAgICAgICAgJChkaWFsb2dSb290KS5hZGRDbGFzcyhnZXRTaGVldFBvc2l0aW9uQ2xhc3Moc2hlZXRQb3NpdGlvbikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYW5pbWF0aW9uID0gdGhpcy5kaWFsb2dSZWYuYW5pbWF0aW9uO1xuICAgICAgICAgICAgaWYoYW5pbWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgJChkaWFsb2dDb250ZW50KS5hZGRDbGFzcygnYW5pbWF0ZWQnKTtcbiAgICAgICAgICAgICAgICAkKGRpYWxvZ0NvbnRlbnQpLmFkZENsYXNzKGFuaW1hdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB3aWR0aCA9IHRoaXMuZGlhbG9nUmVmLndpZHRoO1xuICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5kaWFsb2dSZWYuaGVpZ2h0O1xuICAgICAgICAgICAgaWYoaGVpZ2h0KXtcbiAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZT0+e1xuICAgICAgICAgICAgICAgICAgICBzZXRDU1MoJChlbFJlZi5uYXRpdmVFbGVtZW50KVswXSwgJ2hlaWdodCcsIGhlaWdodCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGlhbG9nUm9vdCkge1xuICAgICAgICAgICAgICAgIGlmICh3aWR0aCkge1xuICAgICAgICAgICAgICAgICAgICBzZXRDU1MoZGlhbG9nUm9vdCwgJ3dpZHRoJywgd2lkdGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXRBdHRyKGRpYWxvZ1Jvb3QsICd0YWJpbmRleCcsIHRoaXMuZGlhbG9nUmVmLnRhYmluZGV4KTtcbiAgICAgICAgICAgICAgICBzZXRBdHRyKGRpYWxvZ1Jvb3QsICduYW1lJywgdGhpcy5kaWFsb2dSZWYubmFtZSk7XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIENsZWFuIHVwIHN1YnNjcmlwdGlvbiBhZnRlciBmaXJzdCB1c2VcbiAgICAgICAgICAgIGlmICh0aGlzLmJzTW9kYWxTaG93blN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuYnNNb2RhbFNob3duU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ic01vZGFsU2hvd25TdWJzY3JpcHRpb24gPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBVbnN1YnNjcmliZSBmcm9tIGJzTW9kYWwub25TaG93biBpZiBub3QgYWxyZWFkeSB1bnN1YnNjcmliZWRcbiAgICAgICAgaWYgKHRoaXMuYnNNb2RhbFNob3duU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmJzTW9kYWxTaG93blN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5ic01vZGFsU2hvd25TdWJzY3JpcHRpb24gPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBDbGVhciBkaWFsb2dSZWYgcmVmZXJlbmNlXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmID0gbnVsbDtcbiAgICB9XG59XG4iXX0=