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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/containers/tabs/src/tabs.animator.ts","../../../../../projects/components/widgets/containers/tabs/src/tabs.props.ts","../../../../../projects/components/widgets/containers/tabs/src/tab-pane/tab-pane.props.ts","../../../../../projects/components/widgets/containers/tabs/src/tab-pane/tab-pane.component.ts","../../../../../projects/components/widgets/containers/tabs/src/tab-pane/tab-pane.component.html","../../../../../projects/components/widgets/containers/tabs/src/tabs.component.ts","../../../../../projects/components/widgets/containers/tabs/src/tabs.component.html","../../../../../projects/components/widgets/containers/tabs/src/index.ts"],"sourcesContent":["import { SwipeAnimation } from '@swipey';\n\nimport { $appDigest, addClass, setCSS, setCSSFromObj } from '@wm/core';\n\nimport { TabsComponent } from './tabs.component';\n\ndeclare const $;\n\nexport class TabsAnimator extends SwipeAnimation {\n\n private _$el;\n\n public constructor(private tabs: TabsComponent) {\n super();\n this._$el = $(this.tabs.getNativeElement()).find('>.tab-content');\n this.init(this._$el);\n }\n\n public calibrate() {\n const activeTabIndex = this.tabs.getActiveTabIndex();\n const panes = this._$el.find('>.tab-pane');\n let activeTabVisibleIndex = 0;\n let noOfVisiblePanes = 0;\n let visiblePanes = [];\n panes.each((i, p) => {\n if (!$(p).prop('hidden')) {\n noOfVisiblePanes++;\n if (i === activeTabIndex) {\n activeTabVisibleIndex = noOfVisiblePanes - 1;\n }\n visiblePanes.push(p);\n }\n return true;\n });\n return {\n activeTabIndex: activeTabVisibleIndex,\n noOfTabs: noOfVisiblePanes,\n panes: visiblePanes\n };\n }\n\n public bounds() {\n const {activeTabIndex, noOfTabs, panes} = this.calibrate(),\n w = $(panes[0]).width(),\n centerVal = -1 * activeTabIndex * w;\n this.clearContentFocus();\n return {\n strict: false,\n lower: activeTabIndex === noOfTabs - 1 ? 0 : -w,\n center: centerVal,\n upper: activeTabIndex === 0 ? centerVal : w\n };\n }\n\n public context() {\n return {\n 'w': this._$el.width()\n };\n }\n\n public animation() {\n return {\n 'transform': 'translate3d(${{ ($D + $d)/w * 100 + \\'%\\'}}, 0, 0)',\n '-webkit-transform': 'translate3d(${{ ($D + $d)/w * 100 + \\'%\\'}}, 0, 0)'\n };\n }\n /* WMS-18031 | On Tab Switch | Remove the Focus on the Existing Tab Contents */\n private clearContentFocus() {\n let activeTab = this._$el.find('>.tab-pane.active');\n if(activeTab.length && activeTab.find(document.activeElement).length){\n (document.activeElement as HTMLElement).blur();\n }\n }\n public transitionTabIntoView() {\n const {activeTabIndex, noOfTabs, panes} = this.calibrate();\n const maxWidth = `${noOfTabs * 100}%`;\n setCSSFromObj(this._$el[0], {maxWidth: maxWidth, width: maxWidth});\n addClass(this.tabs.getNativeElement(), 'has-transition');\n const width = `${100 / noOfTabs}%`;\n panes.forEach(p => {\n setCSS(p as any, 'width', width);\n });\n setCSS(this._$el[0], 'transform', `translate3d(${-1 * activeTabIndex / noOfTabs * 100}%, 0, 0)`);\n }\n\n public onUpper($event?: Event) {\n this.tabs.prev($event);\n $appDigest();\n }\n\n public onLower($event?: Event) {\n this.tabs.next($event);\n $appDigest();\n }\n\n public threshold() {\n return 5;\n }\n}\n","import { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register} from '@wm/components/base';\n\nexport const registerProps = () => {\n const props = new Map(\n [\n ['class', PROP_STRING],\n ['dataset', PROP_ANY],\n ['defaultpaneindex', {value: 0, ...PROP_NUMBER}],\n ['justified', PROP_BOOLEAN],\n ['tabsposition', {value: 'top', ...PROP_STRING}],\n ['name', PROP_STRING],\n ['nodatamessage', {value: 'No Data Found', ... PROP_STRING}],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['statehandler', {value: 'none', ...PROP_STRING}],\n ['transition', PROP_STRING],\n ['type', PROP_STRING],\n ['iconposition', PROP_STRING],\n ['autotabactivation', {value: true, ...PROP_BOOLEAN}]\n ]\n );\n register('wm-tabs', props);\n};\n","import { PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-tabpane',\n new Map(\n [\n ['active', PROP_BOOLEAN], // internal property\n ['badgevalue', PROP_STRING],\n ['badgetype', {value: 'default', ...PROP_STRING}],\n ['class', PROP_STRING],\n ['content', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['dynamicPaneIndex', PROP_NUMBER], // internal property\n ['heading', PROP_STRING],\n ['isdefaulttab', PROP_STRING],\n ['isdynamic', PROP_BOOLEAN], // internal property\n ['name', PROP_STRING],\n ['paneicon', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['smoothscroll', {value: false, ...PROP_BOOLEAN}],\n ['title', {value: 'Tab Title', ...PROP_STRING}]\n ]\n )\n );\n};\n","import {\n AfterViewInit,\n Attribute,\n Component,\n ContentChildren,\n HostBinding, inject, Inject,\n Injector,\n OnInit,\n Optional\n} from '@angular/core';\n\nimport {noop, removeAttr} from '@wm/core';\n\nimport { APPLY_STYLES_TYPE, IWidgetConfig, provideAsWidgetRef, RedrawableDirective, styler, StylableComponent } from '@wm/components/base';\nimport { registerProps } from './tab-pane.props';\nimport { TabsComponent } from '../tabs.component';\n\nconst DEFAULT_CLS = 'tab-pane';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-tabpane',\n hostClass: DEFAULT_CLS\n};\n\n@Component({\n standalone: true, \n selector: 'div[wmTabPane]',\n templateUrl: './tab-pane.component.html',\n providers: [\n provideAsWidgetRef(TabPaneComponent)\n ]\n})\nexport class TabPaneComponent extends StylableComponent implements OnInit, AfterViewInit {\n static initializeProps = registerProps();\n\n private _isFirstLoad: boolean = true;\n private _isOnLoadTriggered: boolean = false;\n public $lazyLoad = noop;\n public name: string;\n public show: boolean;\n public smoothscroll: any;\n private isdynamic: boolean;\n public content: string;\n\n @HostBinding('class.active') isActive = false;\n @HostBinding('class.disabled') disabled = false;\n\n // reference to the components which needs a redraw(eg, grid, chart) when the height of this component changes\n @ContentChildren(RedrawableDirective, {descendants: true}) reDrawableComponents;\n\n private tabsRef = inject(TabsComponent);\n constructor(\n inj: Injector,\n @Attribute('heading') public heading,\n @Attribute('title') public title,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n super(inj, WIDGET_CONFIG, explicitContext);\n\n // title property here serves the purpose of heading.\n // TODO: make it common for all the widget.\n removeAttr(this.nativeElement, 'title');\n }\n\n // parent tabs component will call this method for the order of callbacks to be proper\n // order of callbacks - deselect, select, change\n public invokeOnSelectCallback($event?: Event) {\n this.invokeEventCallback('select', {$event});\n }\n\n public select($event?: Event, isKeyBoardEvent?: boolean) {\n // When called programatically $event won't be available\n if (this.isActive || this.disabled) {\n return;\n }\n\n this.isActive = true;\n this.$lazyLoad();\n this.redrawChildren();\n this.notifyParent($event, isKeyBoardEvent);\n }\n\n tabpaneHeaderClick($event, paneIndex) {\n this.invokeEventCallback('headerclick', {$event, paneIndex});\n }\n\n public deselect() {\n if (this.isActive) {\n this.isActive = false;\n this.invokeEventCallback('deselect');\n }\n }\n\n public remove() {\n if (this.isActive) {\n this === this.tabsRef.panes.last ? this.tabsRef.prev() : this.tabsRef.next();\n }\n const availablePanes = this.tabsRef.panes.toArray();\n availablePanes.splice((this as any).tabsRef.getPaneIndexByRef(this), 1);\n this.tabsRef.panes.reset([...availablePanes]);\n this.nativeElement.remove();\n this.tabsRef.$element.find(`.tab-header[data-paneid='${this.$element.attr('widget-id')}'] a`).remove();\n }\n\n private redrawChildren() {\n setTimeout(() => {\n if (this.reDrawableComponents) {\n this.reDrawableComponents.forEach(c => c.redraw());\n }\n // Fix for [WMS-24564]: trigger Onload event when it is inline content\n if (!this._isOnLoadTriggered && !this.content) {\n this.invokeEventCallback('load');\n this._isOnLoadTriggered = true;\n }\n }, 100);\n }\n\n private notifyParent(evt?: Event, isKeyBoardEvent?: boolean) {\n this.tabsRef.notifyChange(this, evt, isKeyBoardEvent);\n }\n\n // select next valid tab\n private handleSwipeLeft() {\n this.tabsRef.next();\n }\n\n // select prev valid tab\n private handleSwipeRight() {\n this.tabsRef.prev();\n }\n\n // select event is called manually\n protected handleEvent(node: HTMLElement, eventName: string, callback: Function, locals: any) {\n if (eventName !== 'select') {\n super.handleEvent(this.nativeElement, eventName, callback, locals);\n }\n }\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'content') {\n if (this.isActive) {\n setTimeout(() => this.$lazyLoad(), 100);\n }\n } else if (key === 'show') {\n // overridding the base component show propertyChangeHandler\n this.nativeElement.hidden = !nv;\n // setting default tab pane on pageload whenever show property is bindable\n if (this._isFirstLoad) {\n (this as any).tabsRef.selectDefaultPaneByIndex((this as any).tabsRef.defaultpaneindex);\n } else if (!nv && this.isActive) {\n (this as any).tabsRef.next();\n } else if (nv || !this.isActive) {\n (this as any).tabsRef.tabsAnimator?.transitionTabIntoView();\n }\n this._isFirstLoad = false;\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.title = this.title || this.heading;\n }\n\n ngAfterViewInit() {\n styler(\n this.nativeElement.querySelector('.tab-body') as HTMLElement,\n this,\n APPLY_STYLES_TYPE.CONTAINER\n );\n super.ngAfterViewInit();\n if (this.isdynamic) {\n this.tabsRef.registerDynamicTab(this);\n }\n }\n}\n","<div class=\"tab-body\" partial-container-target >\n <ng-content></ng-content>\n</div>","import { CommonModule } from '@angular/common';\nimport { TextContentDirective } from \"@wm/components/base\";\nimport {\n AfterContentInit,\n AfterViewInit,\n Attribute,\n Component,\n ContentChildren, HostBinding, Inject,\n Injector,\n OnInit,\n Optional,\n QueryList\n} from '@angular/core';\n\nimport {\n addClass,\n appendNode,\n DynamicComponentRefProvider,\n noop,\n removeClass,\n StatePersistence\n} from '@wm/core';\nimport {\n APPLY_STYLES_TYPE,\n IWidgetConfig,\n provideAsWidgetRef,\n styler,\n StylableComponent,\n createArrayFrom\n} from '@wm/components/base';\n\nimport { TabsAnimator } from './tabs.animator';\nimport { registerProps } from './tabs.props';\nimport { TabPaneComponent } from './tab-pane/tab-pane.component';\nimport {find, findIndex, forEach, get, indexOf, isArray, isEmpty} from \"lodash-es\";\n\ndeclare const $;\n\nconst DEFAULT_CLS = 'app-tabs clearfix';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-tabs',\n hostClass: DEFAULT_CLS\n};\n\n@Component({\n standalone: true,\n imports: [CommonModule, TextContentDirective],\n selector: 'div[wmTabs]',\n templateUrl: './tabs.component.html',\n exportAs: 'wmTabs',\n providers: [\n provideAsWidgetRef(TabsComponent)\n ]\n})\nexport class TabsComponent extends StylableComponent implements AfterContentInit, OnInit, AfterViewInit {\n static initializeProps = registerProps();\n\n public defaultpaneindex: number;\n public transition: string;\n public tabsposition: string;\n public statehandler: any;\n private statePersistence: StatePersistence;\n\n public vertical: boolean;\n public justified: boolean;\n private activeTab: TabPaneComponent;\n private readonly promiseResolverFn: Function;\n private tabsAnimator: TabsAnimator;\n private _oldPaneIndex: number;\n private isPageLoadCall: boolean;\n private dynamicComponentProvider;\n private _dynamicContext;\n private dynamicPaneIndex;\n public dynamicTabs;\n public fieldDefs;\n public type;\n public nodatamessage;\n public autoActivation:boolean;\n\n @HostBinding('attr.icon-position') iconposition: string = '';\n\n @ContentChildren(TabPaneComponent) panes: QueryList<TabPaneComponent>;\n\n constructor(\n inj: Injector,\n dynamicComponentProvider: DynamicComponentRefProvider,\n @Attribute('transition') _transition: string,\n @Attribute('tabsposition') _tabsPosition: string,\n statePersistence: StatePersistence,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n // handle to the promise resolver\n let resolveFn: Function = noop;\n super(inj, WIDGET_CONFIG, explicitContext, new Promise(res => resolveFn = res));\n\n this.transition = _transition;\n this.tabsposition = _tabsPosition;\n this.statePersistence = statePersistence;\n this.dynamicComponentProvider = dynamicComponentProvider;\n this.dynamicTabs = [];\n this.dynamicPaneIndex = 0;\n\n this.promiseResolverFn = resolveFn;\n\n styler(this.nativeElement, this, APPLY_STYLES_TYPE.CONTAINER);\n\n }\n\n animateIn (element: HTMLElement) {\n const tabHeader = $(element);\n // when the animation is not present toggle the active class.\n tabHeader.siblings('.active').removeClass('active');\n tabHeader.addClass('active');\n\n const ul = this.nativeElement.querySelector('ul.nav.nav-tabs');\n\n // move the tabheader into the viewport\n const $prevHeaderEle = tabHeader.prev();\n if ($prevHeaderEle.length) {\n ul.scrollLeft = $prevHeaderEle[0].offsetLeft;\n } else {\n ul.scrollLeft = 0;\n }\n }\n\n /**\n * This method is used to register the dynamic panes.\n * After all panes are initialzed, update the querylist manually based on index.\n * @param paneRef - refrence of the tabpane\n */\n public registerDynamicTab(paneRef) {\n this.dynamicTabs.push(paneRef);\n const isLastPane = this.dynamicTabs.length === this.dynamicPaneIndex;\n if (isLastPane) {\n for (let i = 0; i < this.dynamicTabs.length; i++) {\n const newPaneRef = find(this.dynamicTabs, pane => pane.dynamicPaneIndex === i);\n const isPaneAlreadyExist = find(this.panes.toArray(), newPaneRef);\n if (!isPaneAlreadyExist) {\n this.panes.reset([...this.panes.toArray(), newPaneRef]);\n if (newPaneRef.active) {\n setTimeout(() => {\n newPaneRef.select();\n }, 20);\n }\n }\n }\n }\n }\n\n /**\n * This method is to add the tabpane dynamically\n * @param tabpanes - list of tabpanes\n */\n public addPane(tabpanes) {\n if (!isArray(tabpanes)) {\n tabpanes = [tabpanes];\n }\n const paneNamesList = [];\n forEach(tabpanes, (pane, index) => {\n const isPaneAlreadyCreated = find(this.panes.toArray(), {name: pane.name});\n const isPaneNameExist = indexOf(paneNamesList, pane.name);\n // If user tries to add tabpane with the same name which is already exists then do not create the pane\n if (isPaneAlreadyCreated || isPaneNameExist > 0) {\n console.warn(`The tab pane with name ${pane.name} already exists`);\n return;\n }\n\n let paramMarkup = '';\n let propsTmpl = '';\n this.dynamicPaneIndex++;\n const name = pane.name ? pane.name : `tabpane${this.panes.toArray().length + (index + 1)}`;\n paneNamesList.push(name);\n const partialParams = get(pane, 'params');\n\n forEach(pane, (value, key) => {\n if (key !== 'params') {\n propsTmpl = `${propsTmpl} ${key}=\"${value}\"`;\n }\n });\n\n forEach(partialParams, (value, key) => {\n paramMarkup = `${paramMarkup} <wm-param name=\"${key}\" value=\"${value}\"></wm-param>`;\n });\n const markup = `<wm-tabpane dynamicPaneIndex=\"${this.dynamicPaneIndex - 1}\" isdynamic=\"true\" name=\"${name}\" ${propsTmpl}>\n ${paramMarkup}\n </wm-tabpane>`;\n\n if (!this._dynamicContext) {\n this._dynamicContext = Object.create(this.viewParent);\n this._dynamicContext[this.getAttr('wmTab')] = this;\n }\n\n this.dynamicComponentProvider.addComponent(this.getNativeElement().querySelector('.tab-content'), markup, this._dynamicContext, {inj: this.inj});\n\n });\n return paneNamesList;\n }\n\n /**\n * This method is to remove the tabpane\n * @param paneIndex - index of the pane\n */\n public removePane(paneName) {\n const paneRef = this.getPaneRefByName(paneName);\n if (paneRef) {\n paneRef.remove();\n }\n }\n\n /**\n * TabPane children components invoke this method to communicate with the parent\n * if the evt argument is defined on-change callback will be invoked.\n */\n public notifyChange(paneRef: TabPaneComponent, evt: Event, isKeyBoardEvent: boolean) {\n if (!this.isSelectableTab(paneRef)) {\n return;\n }\n\n let headerElement;\n // invoke deselect event callback on the preset active tab\n if (!isEmpty(this.activeTab)) {\n this.activeTab.deselect();\n }\n\n\n this.activeTab = paneRef.getWidget();\n const newPaneIndex = this.getPaneIndexByRef(paneRef);\n const mode = this.statePersistence.computeMode(this.statehandler);\n if (!this.isPageLoadCall && mode && mode.toLowerCase() !== 'none') {\n this.statePersistence.setWidgetState(this, this.activeTab.name);\n } else {\n this.defaultpaneindex = this.getPaneIndexByRef(paneRef);\n this.isPageLoadCall = false;\n }\n\n // invoke select callback on the selected tab\n paneRef.invokeOnSelectCallback(evt);\n\n // invoke change callback if the evt is present, select a tab programmatically will not have the event\n if (evt) {\n this.invokeEventCallback('change', {\n $event: evt,\n newPaneIndex: newPaneIndex,\n oldPaneIndex: this._oldPaneIndex || 0\n });\n }\n this._oldPaneIndex = newPaneIndex;\n\n if (evt) {\n headerElement = $(evt.target as HTMLElement).closest('li.tab-header');\n }\n if (!evt || !headerElement || !headerElement.length) {\n headerElement = this.nativeElement.querySelector(`li[data-paneid=${paneRef.widgetId}]`);\n const insideTabs = !!$(headerElement).closest('.app-tabs')\n .parent().closest('.app-tabs').length;\n if (!insideTabs && isKeyBoardEvent) {\n $(headerElement).children().focus();\n }\n }\n this.animateIn(headerElement);\n\n // this.setTabsLeftPosition(this.getPaneIndexByRef(this.activeTab), this.panes.length);\n if (this.canSlide()) {\n if (!this.tabsAnimator) {\n this.tabsAnimator = new TabsAnimator(this);\n this.tabsAnimator.setGesturesEnabled(this.canSlide());\n }\n this.tabsAnimator.transitionTabIntoView();\n }\n }\n\n public goToTab(tabIndex) {\n if (this.isValidPaneIndex(tabIndex - 1)) {\n const tab = this.getPaneRefByIndex(tabIndex - 1);\n tab.select();\n }\n }\n\n private getPaneIndexByRef(paneRef: TabPaneComponent): number {\n return this.panes.toArray().indexOf(paneRef);\n }\n\n // Returns the active tab index from tabs.\n public getActiveTabIndex(): number {\n return findIndex(this.panes.toArray(), {isActive: true});\n }\n\n private isValidPaneIndex(index: number): boolean {\n return (index >= 0 && index < this.panes.length);\n }\n\n private getPaneRefByIndex(index: number): TabPaneComponent {\n return this.panes.toArray()[index];\n }\n\n private getPaneRefByName(name: string): TabPaneComponent {\n return find(this.panes.toArray(), {name: name});\n }\n\n // returns false if the pane is hidden or disabled\n private isSelectableTab(paneRef: TabPaneComponent): boolean {\n return paneRef.show && !paneRef.disabled;\n }\n\n private canSlide() {\n return this.transition === 'slide' && !this.vertical;\n }\n\n private getSelectableTabAfterIndex(index: number): TabPaneComponent {\n for (let i = index + 1; i < this.panes.length; i++) {\n const pane = this.getPaneRefByIndex(i);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n if (index === this.panes.length - 1) {\n const pane = this.getPaneRefByIndex(0);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n }\n\n private getSelectableTabBeforeIndex(index: number): TabPaneComponent {\n for (let i = index - 1; i >= 0; i--) {\n const pane = this.getPaneRefByIndex(i);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n if (index === 0) {\n const pane = this.getPaneRefByIndex(this.panes.length - 1);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n }\n\n // select next tab relative to the current active tab\n public next($event?: Event, isKeyBoardEvent?: boolean) {\n const pane = this.getSelectableTabAfterIndex(this.getActiveTabIndex());\n if (pane) {\n pane.select($event, isKeyBoardEvent);\n }\n }\n\n // select prev tab relative to the current active tab\n public prev($event?: Event, isKeyBoardEvent?: boolean) {\n const pane = this.getSelectableTabBeforeIndex(this.getActiveTabIndex());\n if (pane) {\n pane.select($event, isKeyBoardEvent);\n }\n }\n\n /**\n * this method will be invoked during the initialization of the component and on defaultpaneindex property change,\n * if the provided defaultpaneindex is not valid, find the first pane index which can be shown and select it\n */\n private selectDefaultPaneByIndex(index: number) {\n if (!this.isValidPaneIndex(index)) {\n return;\n }\n\n let paneRef = this.getPaneRefByIndex(index);\n if (!this.isSelectableTab(paneRef)) {\n paneRef = this.getSelectableTabAfterIndex(0);\n }\n if (paneRef) {\n paneRef.select();\n }\n }\n\n // update the postion of tab header\n private setTabsPosition() {\n const ul = this.nativeElement.children[0];\n\n this.vertical = (this.tabsposition === 'left' || this.tabsposition === 'right');\n\n removeClass(this.nativeElement, 'inverted');\n if (this.tabsposition === 'bottom' || this.tabsposition === 'right') {\n appendNode(ul as HTMLElement, this.nativeElement);\n addClass(this.nativeElement, 'inverted');\n }\n }\n\n private onDataChange(newVal) {\n this.fieldDefs = createArrayFrom(newVal);\n setTimeout(() => this.selectDefaultPaneByIndex(this.defaultpaneindex || 0));\n }\n\n onPropertyChange(key: string, nv: any, ov) {\n\n if (key === 'defaultpaneindex') {\n this.defaultpaneindex = nv;\n } else if (key === 'dataset') {\n this.onDataChange(nv);\n } else if (key === 'statehandler') {\n this.isPageLoadCall = true;\n const widgetState = this.statePersistence.getWidgetState(this);\n if (nv !== 'none' && widgetState) {\n const paneToSelect: any = this.panes.filter(function(pane) {\n return widgetState === pane.name;\n });\n if (!paneToSelect.length) {\n console.warn('Tab pane name ' + widgetState + ' in State is incorrect. Falling back to the default pane');\n setTimeout(() => this.selectDefaultPaneByIndex(this.defaultpaneindex || 0), 20);\n } else {\n const index = this.getPaneIndexByRef(paneToSelect[0]);\n setTimeout(() => this.selectDefaultPaneByIndex(index), 20);\n }\n } else {\n setTimeout(() => this.selectDefaultPaneByIndex(this.defaultpaneindex || 0), 20);\n }\n } else if (key === 'autotabactivation'){\n this.autoActivation = nv;\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n registerTabsScroll() {\n setTimeout(() => {\n const $ul = this.$element.find('> ul');\n let $liPosition;\n\n const $li = $ul.children();\n $liPosition = $li.last().position();\n if ($liPosition && ($liPosition.left > $ul.width())) {\n $ul.on('mousewheel', (e) => {\n const left = $ul[0].scrollLeft,\n _delta = -1 * e.originalEvent.wheelDelta;\n e.stopPropagation();\n e.preventDefault();\n $ul.animate({scrollLeft: left + _delta}, {'duration': 10});\n });\n }\n });\n }\n onkeydown(event) {\n let newPane;\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n newPane = this.autoActivation ? (this.prev(null, true), null) : this.getSelectableTabBeforeIndex(this.getSelectedPaneIndex());\n break;\n\n case 'ArrowRight':\n case 'ArrowDown':\n newPane = this.autoActivation ? (this.next(null, true), null) : this.getSelectableTabAfterIndex(this.getSelectedPaneIndex());\n break;\n\n case 'Enter': {\n const pane = this.getSelectableTabAfterIndex(this.getSelectedPaneIndex()-1);\n if (pane) {\n const enterEvent = new KeyboardEvent('keydown', {key: 'Enter', code: 'Enter', bubbles: true, cancelable: true});\n pane.nativeElement.dispatchEvent(enterEvent);\n pane.select(enterEvent, true);\n }\n event.preventDefault();\n return ;\n }\n default:\n return;\n }\n if (newPane) {\n this.nativeElement.querySelector('li.select')?.classList.remove('select');\n this.nativeElement.querySelector(`li[data-paneid=\"${newPane.widgetId}\"]`)?.classList.add('select');\n }\n event.preventDefault();\n }\n\n ngAfterContentInit() {\n this.promiseResolverFn();\n super.ngAfterContentInit();\n this.setTabsPosition();\n this.panes.changes.subscribe( slides => {\n if (this.panes.length) {\n this.selectDefaultPaneByIndex(this.defaultpaneindex || 0);\n }\n });\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n this.registerTabsScroll();\n }\n\n getSelectedPaneIndex() {\n const index = this.panes.toArray().findIndex(pane =>\n this.nativeElement.querySelector(`li[data-paneid=\"${pane.widgetId}\"]`)?.classList.contains(\"select\"));\n return index >= 0 ? index : this.getActiveTabIndex();\n }\n}\n","<ul class=\"nav nav-tabs\" [ngClass]=\"{'nav-stacked': vertical, 'nav-justified': justified}\" role=\"tablist\">\n @for (pane of panes; track pane; let i = $index) {\n <li class=\"tab-header\" [attr.data-paneid]=\"pane.widgetId\" [ngClass]=\"{'active': pane.isActive, 'disabled': pane.disabled}\"\n [hidden]=\"!pane.show\" role=\"presentation\">\n <a [attr.aria-label]=\"pane.badgevalue ? pane.title + ' ' + pane.badgevalue : pane.title\"\n [attr.icon-position]=\"iconposition\"\n [attr.title]=\"pane.title\"\n [tabindex]=\"pane.isActive ? '0' : '-1'\"\n class=\"tab-heading\" href=\"javascript:void(0);\"\n [attr.aria-selected]=\"pane.isActive\" role=\"tab\" (click)=\"pane.select($event); pane.tabpaneHeaderClick($event, i);\" (keydown)=\"onkeydown($event)\">\n @if (pane.paneicon) {\n <i [ngClass]=\"['app-icon', pane.paneicon]\"></i>\n }\n <span [textContent]=\"pane.title\"></span>\n @if (pane.badgevalue) {\n <span class=\"label label-{{pane.badgetype}}\" [textContent]=\"pane.badgevalue\"></span>\n }\n </a>\n </li>\n }\n</ul>\n@if (type !== 'dynamic') {\n <div class=\"tab-content\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <ng-content ngProjectAs=\"div[wmTabPane]\"></ng-content>\n </div>\n}\n@if (type === 'dynamic') {\n <div class=\"tab-content\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n @if (fieldDefs && !fieldDefs.length) {\n <div>{{nodatamessage}}</div>\n }\n <ng-content select=\"div[wmRepeatTemplate]\"></ng-content>\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["registerProps","DEFAULT_CLS","WIDGET_CONFIG"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/containers/tabs/src/tabs.animator.ts","../../../../../projects/components/widgets/containers/tabs/src/tabs.props.ts","../../../../../projects/components/widgets/containers/tabs/src/tab-pane/tab-pane.props.ts","../../../../../projects/components/widgets/containers/tabs/src/tab-pane/tab-pane.component.ts","../../../../../projects/components/widgets/containers/tabs/src/tab-pane/tab-pane.component.html","../../../../../projects/components/widgets/containers/tabs/src/tabs.component.ts","../../../../../projects/components/widgets/containers/tabs/src/tabs.component.html","../../../../../projects/components/widgets/containers/tabs/src/index.ts"],"sourcesContent":["import { SwipeAnimation } from '@swipey';\n\nimport { $appDigest, addClass, setCSS, setCSSFromObj } from '@wm/core';\n\nimport { TabsComponent } from './tabs.component';\n\ndeclare const $;\n\nexport class TabsAnimator extends SwipeAnimation {\n\n private _$el;\n\n public constructor(private tabs: TabsComponent) {\n super();\n this._$el = $(this.tabs.getNativeElement()).find('>.tab-content');\n this.init(this._$el);\n }\n\n public calibrate() {\n const activeTabIndex = this.tabs.getActiveTabIndex();\n const panes = this._$el.find('>.tab-pane');\n let activeTabVisibleIndex = 0;\n let noOfVisiblePanes = 0;\n let visiblePanes = [];\n panes.each((i, p) => {\n if (!$(p).prop('hidden')) {\n noOfVisiblePanes++;\n if (i === activeTabIndex) {\n activeTabVisibleIndex = noOfVisiblePanes - 1;\n }\n visiblePanes.push(p);\n }\n return true;\n });\n return {\n activeTabIndex: activeTabVisibleIndex,\n noOfTabs: noOfVisiblePanes,\n panes: visiblePanes\n };\n }\n\n public bounds() {\n const {activeTabIndex, noOfTabs, panes} = this.calibrate(),\n w = $(panes[0]).width(),\n centerVal = -1 * activeTabIndex * w;\n this.clearContentFocus();\n return {\n strict: false,\n lower: activeTabIndex === noOfTabs - 1 ? 0 : -w,\n center: centerVal,\n upper: activeTabIndex === 0 ? centerVal : w\n };\n }\n\n public context() {\n return {\n 'w': this._$el.width()\n };\n }\n\n public animation() {\n return {\n 'transform': 'translate3d(${{ ($D + $d)/w * 100 + \\'%\\'}}, 0, 0)',\n '-webkit-transform': 'translate3d(${{ ($D + $d)/w * 100 + \\'%\\'}}, 0, 0)'\n };\n }\n /* WMS-18031 | On Tab Switch | Remove the Focus on the Existing Tab Contents */\n private clearContentFocus() {\n let activeTab = this._$el.find('>.tab-pane.active');\n if(activeTab.length && activeTab.find(document.activeElement).length){\n (document.activeElement as HTMLElement).blur();\n }\n }\n public transitionTabIntoView() {\n const {activeTabIndex, noOfTabs, panes} = this.calibrate();\n const maxWidth = `${noOfTabs * 100}%`;\n setCSSFromObj(this._$el[0], {maxWidth: maxWidth, width: maxWidth});\n addClass(this.tabs.getNativeElement(), 'has-transition');\n const width = `${100 / noOfTabs}%`;\n panes.forEach(p => {\n setCSS(p as any, 'width', width);\n });\n setCSS(this._$el[0], 'transform', `translate3d(${-1 * activeTabIndex / noOfTabs * 100}%, 0, 0)`);\n }\n\n public onUpper($event?: Event) {\n this.tabs.prev($event);\n $appDigest();\n }\n\n public onLower($event?: Event) {\n this.tabs.next($event);\n $appDigest();\n }\n\n public threshold() {\n return 5;\n }\n}\n","import { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register} from '@wm/components/base';\n\nexport const registerProps = () => {\n const props = new Map(\n [\n ['class', PROP_STRING],\n ['dataset', PROP_ANY],\n ['defaultpaneindex', {value: 0, ...PROP_NUMBER}],\n ['justified', PROP_BOOLEAN],\n ['tabsposition', {value: 'top', ...PROP_STRING}],\n ['name', PROP_STRING],\n ['nodatamessage', {value: 'No Data Found', ... PROP_STRING}],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['statehandler', {value: 'none', ...PROP_STRING}],\n ['transition', PROP_STRING],\n ['type', PROP_STRING],\n ['iconposition', PROP_STRING],\n ['autotabactivation', {value: true, ...PROP_BOOLEAN}]\n ]\n );\n register('wm-tabs', props);\n};\n","import { PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-tabpane',\n new Map(\n [\n ['active', PROP_BOOLEAN], // internal property\n ['badgevalue', PROP_STRING],\n ['badgetype', {value: 'default', ...PROP_STRING}],\n ['class', PROP_STRING],\n ['content', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['dynamicPaneIndex', PROP_NUMBER], // internal property\n ['heading', PROP_STRING],\n ['isdefaulttab', PROP_STRING],\n ['isdynamic', PROP_BOOLEAN], // internal property\n ['name', PROP_STRING],\n ['paneicon', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['smoothscroll', {value: false, ...PROP_BOOLEAN}],\n ['title', {value: 'Tab Title', ...PROP_STRING}]\n ]\n )\n );\n};\n","import {\n AfterViewInit,\n Attribute,\n Component,\n ContentChildren,\n HostBinding, inject, Inject,\n Injector,\n OnDestroy,\n OnInit,\n Optional\n} from '@angular/core';\n\nimport {noop, removeAttr} from '@wm/core';\n\nimport { APPLY_STYLES_TYPE, IWidgetConfig, provideAsWidgetRef, RedrawableDirective, styler, StylableComponent } from '@wm/components/base';\nimport { registerProps } from './tab-pane.props';\nimport { TabsComponent } from '../tabs.component';\n\nconst DEFAULT_CLS = 'tab-pane';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-tabpane',\n hostClass: DEFAULT_CLS\n};\n\n@Component({\n standalone: true, \n selector: 'div[wmTabPane]',\n templateUrl: './tab-pane.component.html',\n providers: [\n provideAsWidgetRef(TabPaneComponent)\n ]\n})\nexport class TabPaneComponent extends StylableComponent implements OnInit, AfterViewInit, OnDestroy {\n static initializeProps = registerProps();\n\n private _isFirstLoad: boolean = true;\n private _isOnLoadTriggered: boolean = false;\n public $lazyLoad = noop;\n public name: string;\n public show: boolean;\n public smoothscroll: any;\n private isdynamic: boolean;\n public content: string;\n\n @HostBinding('class.active') isActive = false;\n @HostBinding('class.disabled') disabled = false;\n\n // reference to the components which needs a redraw(eg, grid, chart) when the height of this component changes\n @ContentChildren(RedrawableDirective, {descendants: true}) reDrawableComponents;\n\n private tabsRef = inject(TabsComponent);\n constructor(\n inj: Injector,\n @Attribute('heading') public heading,\n @Attribute('title') public title,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n super(inj, WIDGET_CONFIG, explicitContext);\n\n // title property here serves the purpose of heading.\n // TODO: make it common for all the widget.\n removeAttr(this.nativeElement, 'title');\n }\n\n // parent tabs component will call this method for the order of callbacks to be proper\n // order of callbacks - deselect, select, change\n public invokeOnSelectCallback($event?: Event) {\n this.invokeEventCallback('select', {$event});\n }\n\n public select($event?: Event, isKeyBoardEvent?: boolean) {\n // When called programatically $event won't be available\n if (this.isActive || this.disabled) {\n return;\n }\n\n this.isActive = true;\n this.$lazyLoad();\n this.redrawChildren();\n this.notifyParent($event, isKeyBoardEvent);\n }\n\n tabpaneHeaderClick($event, paneIndex) {\n this.invokeEventCallback('headerclick', {$event, paneIndex});\n }\n\n public deselect() {\n if (this.isActive) {\n this.isActive = false;\n this.invokeEventCallback('deselect');\n }\n }\n\n public remove() {\n if (this.isActive) {\n this === this.tabsRef.panes.last ? this.tabsRef.prev() : this.tabsRef.next();\n }\n const availablePanes = this.tabsRef.panes.toArray();\n availablePanes.splice((this as any).tabsRef.getPaneIndexByRef(this), 1);\n this.tabsRef.panes.reset([...availablePanes]);\n this.nativeElement.remove();\n this.tabsRef.$element.find(`.tab-header[data-paneid='${this.$element.attr('widget-id')}'] a`).remove();\n }\n\n private redrawChildren() {\n setTimeout(() => {\n if (this.reDrawableComponents) {\n this.reDrawableComponents.forEach(c => c.redraw());\n }\n // Fix for [WMS-24564]: trigger Onload event when it is inline content\n if (!this._isOnLoadTriggered && !this.content) {\n this.invokeEventCallback('load');\n this._isOnLoadTriggered = true;\n }\n }, 100);\n }\n\n private notifyParent(evt?: Event, isKeyBoardEvent?: boolean) {\n this.tabsRef.notifyChange(this, evt, isKeyBoardEvent);\n }\n\n // select next valid tab\n private handleSwipeLeft() {\n this.tabsRef.next();\n }\n\n // select prev valid tab\n private handleSwipeRight() {\n this.tabsRef.prev();\n }\n\n // select event is called manually\n protected handleEvent(node: HTMLElement, eventName: string, callback: Function, locals: any) {\n if (eventName !== 'select') {\n super.handleEvent(this.nativeElement, eventName, callback, locals);\n }\n }\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'content') {\n if (this.isActive) {\n setTimeout(() => this.$lazyLoad(), 100);\n }\n } else if (key === 'show') {\n // overridding the base component show propertyChangeHandler\n this.nativeElement.hidden = !nv;\n // setting default tab pane on pageload whenever show property is bindable\n if (this._isFirstLoad) {\n (this as any).tabsRef.selectDefaultPaneByIndex((this as any).tabsRef.defaultpaneindex);\n } else if (!nv && this.isActive) {\n (this as any).tabsRef.next();\n } else if (nv || !this.isActive) {\n (this as any).tabsRef.tabsAnimator?.transitionTabIntoView();\n }\n this._isFirstLoad = false;\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.title = this.title || this.heading;\n }\n\n ngAfterViewInit() {\n styler(\n this.nativeElement.querySelector('.tab-body') as HTMLElement,\n this,\n APPLY_STYLES_TYPE.CONTAINER\n );\n super.ngAfterViewInit();\n if (this.isdynamic) {\n this.tabsRef.registerDynamicTab(this);\n }\n }\n\n ngOnDestroy() {\n // MEMORY LEAK FIX: Clear ContentChildren QueryList reference\n if (this.reDrawableComponents) {\n this.reDrawableComponents = null;\n }\n\n // MEMORY LEAK FIX: Clear lazy load function reference\n this.$lazyLoad = null;\n\n super.ngOnDestroy();\n }\n}\n","<div class=\"tab-body\" partial-container-target >\n <ng-content></ng-content>\n</div>","import { CommonModule } from '@angular/common';\nimport { TextContentDirective } from \"@wm/components/base\";\nimport {\n AfterContentInit,\n AfterViewInit,\n Attribute,\n Component,\n ContentChildren, HostBinding, Inject,\n Injector,\n OnDestroy,\n OnInit,\n Optional,\n QueryList\n} from '@angular/core';\n\nimport {\n addClass,\n appendNode,\n DynamicComponentRefProvider,\n noop,\n removeClass,\n StatePersistence\n} from '@wm/core';\nimport {\n APPLY_STYLES_TYPE,\n IWidgetConfig,\n provideAsWidgetRef,\n styler,\n StylableComponent,\n createArrayFrom\n} from '@wm/components/base';\n\nimport { TabsAnimator } from './tabs.animator';\nimport { registerProps } from './tabs.props';\nimport { TabPaneComponent } from './tab-pane/tab-pane.component';\nimport {find, findIndex, forEach, get, indexOf, isArray, isEmpty} from \"lodash-es\";\n\ndeclare const $;\n\nconst DEFAULT_CLS = 'app-tabs clearfix';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-tabs',\n hostClass: DEFAULT_CLS\n};\n\n@Component({\n standalone: true,\n imports: [CommonModule, TextContentDirective],\n selector: 'div[wmTabs]',\n templateUrl: './tabs.component.html',\n exportAs: 'wmTabs',\n providers: [\n provideAsWidgetRef(TabsComponent)\n ]\n})\nexport class TabsComponent extends StylableComponent implements AfterContentInit, OnInit, AfterViewInit, OnDestroy {\n static initializeProps = registerProps();\n\n public defaultpaneindex: number;\n public transition: string;\n public tabsposition: string;\n public statehandler: any;\n private statePersistence: StatePersistence;\n\n public vertical: boolean;\n public justified: boolean;\n private activeTab: TabPaneComponent;\n private readonly promiseResolverFn: Function;\n private tabsAnimator: TabsAnimator;\n private _oldPaneIndex: number;\n private isPageLoadCall: boolean;\n private dynamicComponentProvider;\n private _dynamicContext;\n private dynamicPaneIndex;\n public dynamicTabs;\n public fieldDefs;\n public type;\n public nodatamessage;\n public autoActivation:boolean;\n private panesChangesSubscription: any;\n private dynamicComponentRefs: any[] = [];\n\n @HostBinding('attr.icon-position') iconposition: string = '';\n\n @ContentChildren(TabPaneComponent) panes: QueryList<TabPaneComponent>;\n\n constructor(\n inj: Injector,\n dynamicComponentProvider: DynamicComponentRefProvider,\n @Attribute('transition') _transition: string,\n @Attribute('tabsposition') _tabsPosition: string,\n statePersistence: StatePersistence,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n // handle to the promise resolver\n let resolveFn: Function = noop;\n super(inj, WIDGET_CONFIG, explicitContext, new Promise(res => resolveFn = res));\n\n this.transition = _transition;\n this.tabsposition = _tabsPosition;\n this.statePersistence = statePersistence;\n this.dynamicComponentProvider = dynamicComponentProvider;\n this.dynamicTabs = [];\n this.dynamicPaneIndex = 0;\n\n this.promiseResolverFn = resolveFn;\n\n styler(this.nativeElement, this, APPLY_STYLES_TYPE.CONTAINER);\n\n }\n\n animateIn (element: HTMLElement) {\n const tabHeader = $(element);\n // when the animation is not present toggle the active class.\n tabHeader.siblings('.active').removeClass('active');\n tabHeader.addClass('active');\n\n const ul = this.nativeElement.querySelector('ul.nav.nav-tabs');\n\n // move the tabheader into the viewport\n const $prevHeaderEle = tabHeader.prev();\n if ($prevHeaderEle.length) {\n ul.scrollLeft = $prevHeaderEle[0].offsetLeft;\n } else {\n ul.scrollLeft = 0;\n }\n }\n\n /**\n * This method is used to register the dynamic panes.\n * After all panes are initialzed, update the querylist manually based on index.\n * @param paneRef - refrence of the tabpane\n */\n public registerDynamicTab(paneRef) {\n this.dynamicTabs.push(paneRef);\n const isLastPane = this.dynamicTabs.length === this.dynamicPaneIndex;\n if (isLastPane) {\n for (let i = 0; i < this.dynamicTabs.length; i++) {\n const newPaneRef = find(this.dynamicTabs, pane => pane.dynamicPaneIndex === i);\n const isPaneAlreadyExist = find(this.panes.toArray(), newPaneRef);\n if (!isPaneAlreadyExist) {\n this.panes.reset([...this.panes.toArray(), newPaneRef]);\n if (newPaneRef.active) {\n setTimeout(() => {\n newPaneRef.select();\n }, 20);\n }\n }\n }\n }\n }\n\n /**\n * This method is to add the tabpane dynamically\n * @param tabpanes - list of tabpanes\n */\n public addPane(tabpanes) {\n if (!isArray(tabpanes)) {\n tabpanes = [tabpanes];\n }\n const paneNamesList = [];\n forEach(tabpanes, (pane, index) => {\n const isPaneAlreadyCreated = find(this.panes.toArray(), {name: pane.name});\n const isPaneNameExist = indexOf(paneNamesList, pane.name);\n // If user tries to add tabpane with the same name which is already exists then do not create the pane\n if (isPaneAlreadyCreated || isPaneNameExist > 0) {\n console.warn(`The tab pane with name ${pane.name} already exists`);\n return;\n }\n\n let paramMarkup = '';\n let propsTmpl = '';\n this.dynamicPaneIndex++;\n const name = pane.name ? pane.name : `tabpane${this.panes.toArray().length + (index + 1)}`;\n paneNamesList.push(name);\n const partialParams = get(pane, 'params');\n\n forEach(pane, (value, key) => {\n if (key !== 'params') {\n propsTmpl = `${propsTmpl} ${key}=\"${value}\"`;\n }\n });\n\n forEach(partialParams, (value, key) => {\n paramMarkup = `${paramMarkup} <wm-param name=\"${key}\" value=\"${value}\"></wm-param>`;\n });\n const markup = `<wm-tabpane dynamicPaneIndex=\"${this.dynamicPaneIndex - 1}\" isdynamic=\"true\" name=\"${name}\" ${propsTmpl}>\n ${paramMarkup}\n </wm-tabpane>`;\n\n if (!this._dynamicContext) {\n this._dynamicContext = Object.create(this.viewParent);\n this._dynamicContext[this.getAttr('wmTab')] = this;\n }\n\n // MEMORY LEAK FIX: Store component reference for cleanup\n this.dynamicComponentProvider.addComponent(this.getNativeElement().querySelector('.tab-content'), markup, this._dynamicContext, {inj: this.inj})\n .then(componentRef => {\n if (componentRef) {\n this.dynamicComponentRefs.push(componentRef);\n }\n });\n\n });\n return paneNamesList;\n }\n\n /**\n * This method is to remove the tabpane\n * @param paneIndex - index of the pane\n */\n public removePane(paneName) {\n const paneRef = this.getPaneRefByName(paneName);\n if (paneRef) {\n paneRef.remove();\n }\n }\n\n /**\n * TabPane children components invoke this method to communicate with the parent\n * if the evt argument is defined on-change callback will be invoked.\n */\n public notifyChange(paneRef: TabPaneComponent, evt: Event, isKeyBoardEvent: boolean) {\n if (!this.isSelectableTab(paneRef)) {\n return;\n }\n\n let headerElement;\n // invoke deselect event callback on the preset active tab\n if (!isEmpty(this.activeTab)) {\n this.activeTab.deselect();\n }\n\n\n this.activeTab = paneRef.getWidget();\n const newPaneIndex = this.getPaneIndexByRef(paneRef);\n const mode = this.statePersistence.computeMode(this.statehandler);\n if (!this.isPageLoadCall && mode && mode.toLowerCase() !== 'none') {\n this.statePersistence.setWidgetState(this, this.activeTab.name);\n } else {\n this.defaultpaneindex = this.getPaneIndexByRef(paneRef);\n this.isPageLoadCall = false;\n }\n\n // invoke select callback on the selected tab\n paneRef.invokeOnSelectCallback(evt);\n\n // invoke change callback if the evt is present, select a tab programmatically will not have the event\n if (evt) {\n this.invokeEventCallback('change', {\n $event: evt,\n newPaneIndex: newPaneIndex,\n oldPaneIndex: this._oldPaneIndex || 0\n });\n }\n this._oldPaneIndex = newPaneIndex;\n\n if (evt) {\n headerElement = $(evt.target as HTMLElement).closest('li.tab-header');\n }\n if (!evt || !headerElement || !headerElement.length) {\n headerElement = this.nativeElement.querySelector(`li[data-paneid=${paneRef.widgetId}]`);\n const insideTabs = !!$(headerElement).closest('.app-tabs')\n .parent().closest('.app-tabs').length;\n if (!insideTabs && isKeyBoardEvent) {\n $(headerElement).children().focus();\n }\n }\n this.animateIn(headerElement);\n\n // this.setTabsLeftPosition(this.getPaneIndexByRef(this.activeTab), this.panes.length);\n if (this.canSlide()) {\n if (!this.tabsAnimator) {\n this.tabsAnimator = new TabsAnimator(this);\n this.tabsAnimator.setGesturesEnabled(this.canSlide());\n }\n this.tabsAnimator.transitionTabIntoView();\n }\n }\n\n public goToTab(tabIndex) {\n if (this.isValidPaneIndex(tabIndex - 1)) {\n const tab = this.getPaneRefByIndex(tabIndex - 1);\n tab.select();\n }\n }\n\n private getPaneIndexByRef(paneRef: TabPaneComponent): number {\n return this.panes.toArray().indexOf(paneRef);\n }\n\n // Returns the active tab index from tabs.\n public getActiveTabIndex(): number {\n return findIndex(this.panes.toArray(), {isActive: true});\n }\n\n private isValidPaneIndex(index: number): boolean {\n return (index >= 0 && index < this.panes.length);\n }\n\n private getPaneRefByIndex(index: number): TabPaneComponent {\n return this.panes.toArray()[index];\n }\n\n private getPaneRefByName(name: string): TabPaneComponent {\n return find(this.panes.toArray(), {name: name});\n }\n\n // returns false if the pane is hidden or disabled\n private isSelectableTab(paneRef: TabPaneComponent): boolean {\n return paneRef.show && !paneRef.disabled;\n }\n\n private canSlide() {\n return this.transition === 'slide' && !this.vertical;\n }\n\n private getSelectableTabAfterIndex(index: number): TabPaneComponent {\n for (let i = index + 1; i < this.panes.length; i++) {\n const pane = this.getPaneRefByIndex(i);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n if (index === this.panes.length - 1) {\n const pane = this.getPaneRefByIndex(0);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n }\n\n private getSelectableTabBeforeIndex(index: number): TabPaneComponent {\n for (let i = index - 1; i >= 0; i--) {\n const pane = this.getPaneRefByIndex(i);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n if (index === 0) {\n const pane = this.getPaneRefByIndex(this.panes.length - 1);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n }\n\n // select next tab relative to the current active tab\n public next($event?: Event, isKeyBoardEvent?: boolean) {\n const pane = this.getSelectableTabAfterIndex(this.getActiveTabIndex());\n if (pane) {\n pane.select($event, isKeyBoardEvent);\n }\n }\n\n // select prev tab relative to the current active tab\n public prev($event?: Event, isKeyBoardEvent?: boolean) {\n const pane = this.getSelectableTabBeforeIndex(this.getActiveTabIndex());\n if (pane) {\n pane.select($event, isKeyBoardEvent);\n }\n }\n\n /**\n * this method will be invoked during the initialization of the component and on defaultpaneindex property change,\n * if the provided defaultpaneindex is not valid, find the first pane index which can be shown and select it\n */\n private selectDefaultPaneByIndex(index: number) {\n if (!this.isValidPaneIndex(index)) {\n return;\n }\n\n let paneRef = this.getPaneRefByIndex(index);\n if (!this.isSelectableTab(paneRef)) {\n paneRef = this.getSelectableTabAfterIndex(0);\n }\n if (paneRef) {\n paneRef.select();\n }\n }\n\n // update the postion of tab header\n private setTabsPosition() {\n const ul = this.nativeElement.children[0];\n\n this.vertical = (this.tabsposition === 'left' || this.tabsposition === 'right');\n\n removeClass(this.nativeElement, 'inverted');\n if (this.tabsposition === 'bottom' || this.tabsposition === 'right') {\n appendNode(ul as HTMLElement, this.nativeElement);\n addClass(this.nativeElement, 'inverted');\n }\n }\n\n private onDataChange(newVal) {\n this.fieldDefs = createArrayFrom(newVal);\n setTimeout(() => this.selectDefaultPaneByIndex(this.defaultpaneindex || 0));\n }\n\n onPropertyChange(key: string, nv: any, ov) {\n\n if (key === 'defaultpaneindex') {\n this.defaultpaneindex = nv;\n } else if (key === 'dataset') {\n this.onDataChange(nv);\n } else if (key === 'statehandler') {\n this.isPageLoadCall = true;\n const widgetState = this.statePersistence.getWidgetState(this);\n if (nv !== 'none' && widgetState) {\n const paneToSelect: any = this.panes.filter(function(pane) {\n return widgetState === pane.name;\n });\n if (!paneToSelect.length) {\n console.warn('Tab pane name ' + widgetState + ' in State is incorrect. Falling back to the default pane');\n setTimeout(() => this.selectDefaultPaneByIndex(this.defaultpaneindex || 0), 20);\n } else {\n const index = this.getPaneIndexByRef(paneToSelect[0]);\n setTimeout(() => this.selectDefaultPaneByIndex(index), 20);\n }\n } else {\n setTimeout(() => this.selectDefaultPaneByIndex(this.defaultpaneindex || 0), 20);\n }\n } else if (key === 'autotabactivation'){\n this.autoActivation = nv;\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n registerTabsScroll() {\n setTimeout(() => {\n const $ul = this.$element.find('> ul');\n let $liPosition;\n\n const $li = $ul.children();\n $liPosition = $li.last().position();\n if ($liPosition && ($liPosition.left > $ul.width())) {\n $ul.on('mousewheel', (e) => {\n const left = $ul[0].scrollLeft,\n _delta = -1 * e.originalEvent.wheelDelta;\n e.stopPropagation();\n e.preventDefault();\n $ul.animate({scrollLeft: left + _delta}, {'duration': 10});\n });\n }\n });\n }\n onkeydown(event) {\n let newPane;\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n newPane = this.autoActivation ? (this.prev(null, true), null) : this.getSelectableTabBeforeIndex(this.getSelectedPaneIndex());\n break;\n\n case 'ArrowRight':\n case 'ArrowDown':\n newPane = this.autoActivation ? (this.next(null, true), null) : this.getSelectableTabAfterIndex(this.getSelectedPaneIndex());\n break;\n\n case 'Enter': {\n const pane = this.getSelectableTabAfterIndex(this.getSelectedPaneIndex()-1);\n if (pane) {\n const enterEvent = new KeyboardEvent('keydown', {key: 'Enter', code: 'Enter', bubbles: true, cancelable: true});\n pane.nativeElement.dispatchEvent(enterEvent);\n pane.select(enterEvent, true);\n }\n event.preventDefault();\n return ;\n }\n default:\n return;\n }\n if (newPane) {\n this.nativeElement.querySelector('li.select')?.classList.remove('select');\n this.nativeElement.querySelector(`li[data-paneid=\"${newPane.widgetId}\"]`)?.classList.add('select');\n }\n event.preventDefault();\n }\n\n ngAfterContentInit() {\n this.promiseResolverFn();\n super.ngAfterContentInit();\n this.setTabsPosition();\n this.panesChangesSubscription = this.panes.changes.subscribe( slides => {\n if (this.panes.length) {\n this.selectDefaultPaneByIndex(this.defaultpaneindex || 0);\n }\n });\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n this.registerTabsScroll();\n }\n\n getSelectedPaneIndex() {\n const index = this.panes.toArray().findIndex(pane =>\n this.nativeElement.querySelector(`li[data-paneid=\"${pane.widgetId}\"]`)?.classList.contains(\"select\"));\n return index >= 0 ? index : this.getActiveTabIndex();\n }\n\n ngOnDestroy() {\n // MEMORY LEAK FIX: Unsubscribe from panes changes\n if (this.panesChangesSubscription) {\n this.panesChangesSubscription.unsubscribe();\n this.panesChangesSubscription = null;\n }\n\n // MEMORY LEAK FIX: Destroy all dynamically created component instances\n if (this.dynamicComponentRefs && this.dynamicComponentRefs.length) {\n this.dynamicComponentRefs.forEach(componentRef => {\n if (componentRef && componentRef.destroy) {\n componentRef.destroy();\n }\n });\n this.dynamicComponentRefs = [];\n }\n\n // MEMORY LEAK FIX: Clear dynamic context\n if (this._dynamicContext) {\n Object.keys(this._dynamicContext).forEach(key => {\n delete this._dynamicContext[key];\n });\n this._dynamicContext = null;\n }\n\n // MEMORY LEAK FIX: Clear dynamic tabs array\n if (this.dynamicTabs) {\n this.dynamicTabs = [];\n }\n\n // MEMORY LEAK FIX: Destroy tabs animator\n if (this.tabsAnimator) {\n // TabsAnimator may have internal subscriptions or timers\n this.tabsAnimator = null;\n }\n\n // MEMORY LEAK FIX: Clear field definitions and references\n this.fieldDefs = null;\n this.activeTab = null;\n\n super.ngOnDestroy();\n }\n}\n","<ul class=\"nav nav-tabs\" [ngClass]=\"{'nav-stacked': vertical, 'nav-justified': justified}\" role=\"tablist\">\n @for (pane of panes; track pane; let i = $index) {\n <li class=\"tab-header\" [attr.data-paneid]=\"pane.widgetId\" [ngClass]=\"{'active': pane.isActive, 'disabled': pane.disabled}\"\n [hidden]=\"!pane.show\" role=\"presentation\">\n <a [attr.aria-label]=\"pane.badgevalue ? pane.title + ' ' + pane.badgevalue : pane.title\"\n [attr.icon-position]=\"iconposition\"\n [attr.title]=\"pane.title\"\n [tabindex]=\"pane.isActive ? '0' : '-1'\"\n class=\"tab-heading\" href=\"javascript:void(0);\"\n [attr.aria-selected]=\"pane.isActive\" role=\"tab\" (click)=\"pane.select($event); pane.tabpaneHeaderClick($event, i);\" (keydown)=\"onkeydown($event)\">\n @if (pane.paneicon) {\n <i [ngClass]=\"['app-icon', pane.paneicon]\"></i>\n }\n <span [textContent]=\"pane.title\"></span>\n @if (pane.badgevalue) {\n <span class=\"label label-{{pane.badgetype}}\" [textContent]=\"pane.badgevalue\"></span>\n }\n </a>\n </li>\n }\n</ul>\n@if (type !== 'dynamic') {\n <div class=\"tab-content\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <ng-content ngProjectAs=\"div[wmTabPane]\"></ng-content>\n </div>\n}\n@if (type === 'dynamic') {\n <div class=\"tab-content\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n @if (fieldDefs && !fieldDefs.length) {\n <div>{{nodatamessage}}</div>\n }\n <ng-content select=\"div[wmRepeatTemplate]\"></ng-content>\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["registerProps","DEFAULT_CLS","WIDGET_CONFIG"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { AfterViewInit, Injector, OnInit } from '@angular/core';
1
+ import { AfterViewInit, Injector, OnDestroy, OnInit } from '@angular/core';
2
2
  import { StylableComponent } from '@wm/components/base';
3
3
  import * as i0 from "@angular/core";
4
- export declare class TabPaneComponent extends StylableComponent implements OnInit, AfterViewInit {
4
+ export declare class TabPaneComponent extends StylableComponent implements OnInit, AfterViewInit, OnDestroy {
5
5
  heading: any;
6
6
  title: any;
7
7
  static initializeProps: void;
@@ -31,6 +31,7 @@ export declare class TabPaneComponent extends StylableComponent implements OnIni
31
31
  onPropertyChange(key: string, nv: any, ov?: any): void;
32
32
  ngOnInit(): void;
33
33
  ngAfterViewInit(): void;
34
+ ngOnDestroy(): void;
34
35
  static ɵfac: i0.ɵɵFactoryDeclaration<TabPaneComponent, [null, { attribute: "heading"; }, { attribute: "title"; }, { optional: true; }]>;
35
36
  static ɵcmp: i0.ɵɵComponentDeclaration<TabPaneComponent, "div[wmTabPane]", never, {}, {}, ["reDrawableComponents"], ["*"], true, never>;
36
37
  }
@@ -1,9 +1,9 @@
1
- import { AfterContentInit, AfterViewInit, Injector, OnInit, QueryList } from '@angular/core';
1
+ import { AfterContentInit, AfterViewInit, Injector, OnDestroy, OnInit, QueryList } from '@angular/core';
2
2
  import { DynamicComponentRefProvider, StatePersistence } from '@wm/core';
3
3
  import { StylableComponent } from '@wm/components/base';
4
4
  import { TabPaneComponent } from './tab-pane/tab-pane.component';
5
5
  import * as i0 from "@angular/core";
6
- export declare class TabsComponent extends StylableComponent implements AfterContentInit, OnInit, AfterViewInit {
6
+ export declare class TabsComponent extends StylableComponent implements AfterContentInit, OnInit, AfterViewInit, OnDestroy {
7
7
  static initializeProps: void;
8
8
  defaultpaneindex: number;
9
9
  transition: string;
@@ -25,6 +25,8 @@ export declare class TabsComponent extends StylableComponent implements AfterCon
25
25
  type: any;
26
26
  nodatamessage: any;
27
27
  autoActivation: boolean;
28
+ private panesChangesSubscription;
29
+ private dynamicComponentRefs;
28
30
  iconposition: string;
29
31
  panes: QueryList<TabPaneComponent>;
30
32
  constructor(inj: Injector, dynamicComponentProvider: DynamicComponentRefProvider, _transition: string, _tabsPosition: string, statePersistence: StatePersistence, explicitContext: any);
@@ -75,6 +77,7 @@ export declare class TabsComponent extends StylableComponent implements AfterCon
75
77
  ngAfterContentInit(): void;
76
78
  ngAfterViewInit(): void;
77
79
  getSelectedPaneIndex(): number;
80
+ ngOnDestroy(): void;
78
81
  static ɵfac: i0.ɵɵFactoryDeclaration<TabsComponent, [null, null, { attribute: "transition"; }, { attribute: "tabsposition"; }, null, { optional: true; }]>;
79
82
  static ɵcmp: i0.ɵɵComponentDeclaration<TabsComponent, "div[wmTabs]", ["wmTabs"], {}, {}, ["panes"], ["*", "div[wmRepeatTemplate]"], true, never>;
80
83
  }
@@ -155,8 +155,10 @@
155
155
  if (this.reDrawableComponents) {
156
156
  this.reDrawableComponents.forEach(c => c.redraw());
157
157
  }
158
- const stepIndex = this.wizardComponent.getCurrentStepIndex();
159
- this.invokeEventCallback('load', { stepIndex });
158
+ if (this.wizardComponent) {
159
+ const stepIndex = this.wizardComponent.getCurrentStepIndex();
160
+ this.invokeEventCallback('load', { stepIndex });
161
+ }
160
162
  }, 100);
161
163
  }
162
164
  remove() {
@@ -185,6 +187,17 @@
185
187
  this.wizardComponent.registerDynamicStep(this);
186
188
  }
187
189
  }
190
+ ngOnDestroy() {
191
+ // MEMORY LEAK FIX: Clear redrawable components references
192
+ if (this.reDrawableComponents) {
193
+ this.reDrawableComponents.reset([]);
194
+ }
195
+ // MEMORY LEAK FIX: Clear wizard component reference
196
+ this.wizardComponent = null;
197
+ // Call parent ngOnDestroy (StylableComponent → BaseComponent)
198
+ // This will clear the context and unregister the widget
199
+ super.ngOnDestroy();
200
+ }
188
201
  static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: WizardStepComponent, deps: [{ token: i0__namespace.Injector }, { token: i1__namespace.NgForm, self: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component }); }
189
202
  static { this.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: WizardStepComponent, isStandalone: true, selector: "form[wmWizardStep]", host: { properties: { "class.current": "this.isCurrent" } }, providers: [
190
203
  base.provideAsWidgetRef(WizardStepComponent),
@@ -719,7 +732,8 @@
719
732
  this.wizContext.disableNext = () => !this.enableNext;
720
733
  this.wizContext.disablePrevious = () => !this.enablePrev;
721
734
  this.wizContext.disableDone = () => !this.enableDone;
722
- this.steps.changes.subscribe(slides => {
735
+ // MEMORY LEAK FIX: Store subscription for cleanup
736
+ this.stepsSubscription = this.steps.changes.subscribe(() => {
723
737
  if (this.steps.length > 1 && this.type === 'dynamic' && this._isFirstLoad) {
724
738
  this.setDefaultStep(this.getStepRefByIndex(this.defaultstepindex));
725
739
  this._isFirstLoad = false;
@@ -833,6 +847,36 @@
833
847
  const index = this.steps.toArray().findIndex(step => this.nativeElement.querySelector(`li[data-stepid="${step.widgetId}"]`)?.classList.contains("current"));
834
848
  return index >= 0 ? index : this.getActiveStepIndex();
835
849
  }
850
+ ngOnDestroy() {
851
+ // MEMORY LEAK FIX: Unsubscribe from steps changes
852
+ if (this.stepsSubscription) {
853
+ this.stepsSubscription.unsubscribe();
854
+ this.stepsSubscription = null;
855
+ }
856
+ // MEMORY LEAK FIX: Remove jQuery event handlers
857
+ $(document).off("mouseup");
858
+ // MEMORY LEAK FIX: Clear wizard context to release references to step data
859
+ if (this.wizContext) {
860
+ Object.keys(this.wizContext).forEach(key => {
861
+ delete this.wizContext[key];
862
+ });
863
+ this.wizContext = null;
864
+ }
865
+ // MEMORY LEAK FIX: Clear dynamic context
866
+ if (this._dynamicContext) {
867
+ Object.keys(this._dynamicContext).forEach(key => {
868
+ delete this._dynamicContext[key];
869
+ });
870
+ this._dynamicContext = null;
871
+ }
872
+ // MEMORY LEAK FIX: Clear dynamic wizard array
873
+ if (this.dynamicWizard) {
874
+ this.dynamicWizard = [];
875
+ }
876
+ // MEMORY LEAK FIX: Clear current step reference
877
+ this.currentStep = null;
878
+ super.ngOnDestroy();
879
+ }
836
880
  static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: WizardComponent, deps: [{ token: i0__namespace.Injector }, { token: i1$1__namespace.DynamicComponentRefProvider }, { token: base.Context, self: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0__namespace.ɵɵFactoryTarget.Component }); }
837
881
  static { this.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: WizardComponent, isStandalone: true, selector: "div[wmWizard]", providers: [
838
882
  base.provideAsWidgetRef(WizardComponent),
@@ -98,8 +98,10 @@ export class WizardStepComponent extends StylableComponent {
98
98
  if (this.reDrawableComponents) {
99
99
  this.reDrawableComponents.forEach(c => c.redraw());
100
100
  }
101
- const stepIndex = this.wizardComponent.getCurrentStepIndex();
102
- this.invokeEventCallback('load', { stepIndex });
101
+ if (this.wizardComponent) {
102
+ const stepIndex = this.wizardComponent.getCurrentStepIndex();
103
+ this.invokeEventCallback('load', { stepIndex });
104
+ }
103
105
  }, 100);
104
106
  }
105
107
  remove() {
@@ -128,6 +130,17 @@ export class WizardStepComponent extends StylableComponent {
128
130
  this.wizardComponent.registerDynamicStep(this);
129
131
  }
130
132
  }
133
+ ngOnDestroy() {
134
+ // MEMORY LEAK FIX: Clear redrawable components references
135
+ if (this.reDrawableComponents) {
136
+ this.reDrawableComponents.reset([]);
137
+ }
138
+ // MEMORY LEAK FIX: Clear wizard component reference
139
+ this.wizardComponent = null;
140
+ // Call parent ngOnDestroy (StylableComponent → BaseComponent)
141
+ // This will clear the context and unregister the widget
142
+ super.ngOnDestroy();
143
+ }
131
144
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WizardStepComponent, deps: [{ token: i0.Injector }, { token: i1.NgForm, self: true }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
132
145
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: WizardStepComponent, isStandalone: true, selector: "form[wmWizardStep]", host: { properties: { "class.current": "this.isCurrent" } }, providers: [
133
146
  provideAsWidgetRef(WizardStepComponent),
@@ -160,4 +173,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
160
173
  type: HostBinding,
161
174
  args: ['class.current']
162
175
  }] } });
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLXN0ZXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2NvbnRhaW5lcnMvd2l6YXJkL3NyYy93aXphcmQtc3RlcC93aXphcmQtc3RlcC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFDVCxlQUFlLEVBQ2YsV0FBVyxFQUNYLE1BQU0sRUFDTixRQUFRLEVBRVIsUUFBUSxFQUNSLElBQUksRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0gsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDcEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDOUIsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7QUFFcEQsTUFBTSxXQUFXLEdBQUcseUJBQXlCLENBQUM7QUFFOUMsTUFBTSxhQUFhLEdBQWtCO0lBQ2pDLFVBQVUsRUFBRSxlQUFlO0lBQzNCLFNBQVMsRUFBRSxXQUFXO0NBQ3pCLENBQUM7QUFrQkYsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGlCQUFpQjthQUMvQyxvQkFBZSxHQUFHLGFBQWEsRUFBRSxBQUFsQixDQUFtQjtJQW1CekMsSUFDSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBVyxPQUFPO1FBQ2QsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksSUFB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IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdG9yLFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBTZWxmXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICAgIEJhc2VDb21wb25lbnQsXG4gICAgSVdpZGdldENvbmZpZyxcbiAgICBwcm92aWRlQXNXaWRnZXRSZWYsXG4gICAgUmVkcmF3YWJsZURpcmVjdGl2ZSxcbiAgICBTdHlsYWJsZUNvbXBvbmVudFxufSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvYmFzZVwiO1xuaW1wb3J0IHtOZ0Zvcm19IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHtyZWdpc3RlclByb3BzfSBmcm9tIFwiLi93aXphcmQtc3RlcC5wcm9wc1wiO1xuaW1wb3J0IHtub29wfSBmcm9tIFwiQHdtL2NvcmVcIjtcbmltcG9ydCB7V2l6YXJkQ29tcG9uZW50fSBmcm9tIFwiLi4vd2l6YXJkLmNvbXBvbmVudFwiO1xuXG5jb25zdCBERUZBVUxUX0NMUyA9ICdhcHAtd2l6YXJkLXN0ZXAtY29udGVudCc7XG5cbmNvbnN0IFdJREdFVF9DT05GSUc6IElXaWRnZXRDb25maWcgPSB7XG4gICAgd2lkZ2V0VHlwZTogJ3dtLXdpemFyZHN0ZXAnLFxuICAgIGhvc3RDbGFzczogREVGQVVMVF9DTFMsXG59O1xuXG5jb25zdCBlbnVtIFNURVBfU1RBVFVTIHtcbiAgICBDVVJSRU5UID0gMSxcbiAgICBESVNBQkxFRCxcbiAgICBDT01QTEVURURcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ2Zvcm1bd21XaXphcmRTdGVwXScsXG4gICAgdGVtcGxhdGU6IGA8bmctY29udGVudCBwYXJ0aWFsLWNvbnRhaW5lci10YXJnZXQ+PC9uZy1jb250ZW50PmAsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVBc1dpZGdldFJlZihXaXphcmRTdGVwQ29tcG9uZW50KSxcbiAgICAgICAgTmdGb3JtXG4gICAgXSxcbiAgICBleHBvcnRBczogJ3dtV2l6YXJkU3RlcCdcbn0pXG5leHBvcnQgY2xhc3MgV2l6YXJkU3RlcENvbXBvbmVudCBleHRlbmRzIFN0eWxhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuXG4gICAgcHVibGljIHNob3c6IGJvb2xlYW47XG4gICAgcHVibGljIG5hbWU6IHN0cmluZztcbiAgICBwdWJsaWMgZW5hYmxlc2tpcDogYW55O1xuICAgIHB1YmxpYyBkaXNhYmxlbmV4dDogYm9vbGVhbjtcbiAgICBwdWJsaWMgZGlzYWJsZWRvbmU6IGJvb2xlYW47XG4gICAgcHVibGljIGRpc2FibGVwcmV2aW91czogYm9vbGVhbjtcbiAgICBwdWJsaWMgaXNJbml0aWFsaXplZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIGlzZHluYW1pYzogYm9vbGVhbjtcbiAgICBwdWJsaWMgJGxhenlMb2FkID0gbm9vcDtcbiAgICBpc0RvbmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHByaXZhdGUgc3RhdHVzOiBTVEVQX1NUQVRVUyA9IFNURVBfU1RBVFVTLkRJU0FCTEVEO1xuICAgIHByaXZhdGUgd2l6YXJkQ29tcG9uZW50OiBXaXphcmRDb21wb25lbnQ7XG5cbiAgICAvLyByZWZlcmVuY2UgdG8gdGhlIGNvbXBvbmVudHMgd2hpY2ggbmVlZHMgYSByZWRyYXcoZWcsIGdyaWQsIGNoYXJ0KSB3aGVuIHRoZSBoZWlnaHQgb2YgdGhpcyBjb21wb25lbnQgY2hhbmdlc1xuICAgIEBDb250ZW50Q2hpbGRyZW4oUmVkcmF3YWJsZURpcmVjdGl2ZSwge2Rlc2NlbmRhbnRzOiB0cnVlfSkgcmVEcmF3YWJsZUNvbXBvbmVudHM7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmN1cnJlbnQnKVxuICAgIGdldCBpc0N1cnJlbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBhbG9uZyB3aXRoIHRoZSB3aXphcmQgZm9ybSAsIGFsc28gdmFsaWRhdGUgdGhlIGZvcm1zXG4gICAgICogaWYgdGhlcmUgYXJlIGFueSBpbnNpZGUgdGhlIHdpemFyZFxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNWYWxpZCgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLm5nRm9ybS52YWxpZCB8fCB0aGlzLm5nRm9ybS5kaXNhYmxlZCkgJiYgdGhpcy5hcmVFbWJlZGRlZEZvcm1zVmFsaWQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBnZXQgYWxsIHRoZSBmb3JtcyBpbnNpZGUgdGhlIHdpemFyZCBpZiBhbnkgYW5kIHZhbGlkYXRlXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgcHJpdmF0ZSBhcmVFbWJlZGRlZEZvcm1zVmFsaWQoKSB7XG4gICAgICAgIGZvciAoY29uc3QgZm9ybSBvZiB0aGlzLmdldEFsbEVtYmVkZGVkRm9ybXMoKSkge1xuICAgICAgICAgICAgaWYgKGZvcm0ud2lkZ2V0ICYmIGZvcm0ud2lkZ2V0Lm5nZm9ybSAmJiAhZm9ybS53aWRnZXQubmdmb3JtLnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QWxsRW1iZWRkZWRGb3JtcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGVsZW1lbnQuZmluZCgnZm9ybScpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW5hYmxlTmV4dCgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmRpc2FibGVuZXh0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW5hYmxlRG9uZSgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmRpc2FibGVkb25lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW5hYmxlUHJldigpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmRpc2FibGVwcmV2aW91cztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGFjdGl2ZShudjogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IHRoaXMuYWN0aXZlO1xuICAgICAgICB0aGlzLnN0YXR1cyA9IFNURVBfU1RBVFVTLkNVUlJFTlQ7XG4gICAgICAgIGlmIChudiAmJiAhaXNBY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMucmVkcmF3Q2hpbGRyZW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0dXMgPT09IFNURVBfU1RBVFVTLkNVUlJFTlQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBkb25lKG52OiBib29sZWFuKSB7XG4gICAgICAgIGlmIChudikge1xuICAgICAgICAgICAgdGhpcy5zdGF0dXMgPSBTVEVQX1NUQVRVUy5DT01QTEVURUQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRvbmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXR1cyA9PT0gU1RFUF9TVEFUVVMuQ09NUExFVEVEO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgZGlzYWJsZWQobnY6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKG52KSB7XG4gICAgICAgICAgICB0aGlzLnN0YXR1cyA9IFNURVBfU1RBVFVTLkRJU0FCTEVEO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdHVzID09PSBTVEVQX1NUQVRVUy5ESVNBQkxFRDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihpbmo6IEluamVjdG9yLCBAU2VsZigpIHByaXZhdGUgbmdGb3JtOiBOZ0Zvcm0sIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueSkge1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcsIGV4cGxpY2l0Q29udGV4dCk7XG4gICAgICAgIC8vIElmIHdlIGluamVjdCBkaXJlY3RseSBhcyBhIHBhcmFtIGluIHRoZSBjb25zdHJ1Y3RvciwgZ2V0dGluZyBjaXJjdWxhciBkZXBlbmRlbmN5IGVycm9yIGluIHVuaXQgdGVzdGNhc2VzXG4gICAgICAgIHRoaXMud2l6YXJkQ29tcG9uZW50ID0gdGhpcy5pbmouZ2V0KFdpemFyZENvbXBvbmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIGludm9rZU5leHRDQihpbmRleDogbnVtYmVyKTogYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCduZXh0Jywge2N1cnJlbnRTdGVwOiB0aGlzLCBzdGVwSW5kZXg6IGluZGV4fSk7XG4gICAgfVxuXG4gICAgcHVibGljIGludm9rZVByZXZDQihpbmRleDogbnVtYmVyKTogYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdwcmV2Jywge2N1cnJlbnRTdGVwOiB0aGlzLCBzdGVwSW5kZXg6IGluZGV4fSk7XG4gICAgfVxuXG4gICAgcHVibGljIGludm9rZVNraXBDQihpbmRleDogbnVtYmVyKTogYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdza2lwJywge2N1cnJlbnRTdGVwOiB0aGlzLCBzdGVwSW5kZXg6IGluZGV4fSk7XG4gICAgfVxuXG4gICAgLy8gcmVkcmF3IGFsbCB0aGUgcHJvamVjdGVkIGNvbXBvbmVudHMgd2hpY2ggYXJlIHByb2plY3RlZC5cbiAgICBwcml2YXRlIHJlZHJhd0NoaWxkcmVuKCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlRHJhd2FibGVDb21wb25lbnRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZURyYXdhYmxlQ29tcG9uZW50cy5mb3JFYWNoKGMgPT4gYy5yZWRyYXcoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzdGVwSW5kZXggPSAodGhpcyBhcyBhbnkpLndpemFyZENvbXBvbmVudC5nZXRDdXJyZW50U3RlcEluZGV4KCk7XG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2xvYWQnLCB7IHN0ZXBJbmRleCB9KTtcbiAgICAgICAgfSwgMTAwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlKCkge1xuICAgICAgICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMgPT09IHRoaXMud2l6YXJkQ29tcG9uZW50LnN0ZXBzLmxhc3QgPyB0aGlzLndpemFyZENvbXBvbmVudC5wcmV2KCkgOiB0aGlzLndpemFyZENvbXBvbmVudC5uZXh0KCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXZhaWxhYmxlUGFuZXMgPSB0aGlzLndpemFyZENvbXBvbmVudC5zdGVwcy50b0FycmF5KCk7XG4gICAgICAgIGF2YWlsYWJsZVBhbmVzLnNwbGljZSgodGhpcyBhcyBhbnkpLndpemFyZENvbXBvbmVudC5nZXRTdGVwSW5kZXhCeVJlZih0aGlzKSwgMSk7XG4gICAgICAgIHRoaXMud2l6YXJkQ29tcG9uZW50LnN0ZXBzLnJlc2V0KFsuLi5hdmFpbGFibGVQYW5lc10pO1xuICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQucmVtb3ZlKCk7XG4gICAgfVxuXG4gICAgb25Qcm9wZXJ0eUNoYW5nZShrZXk6IHN0cmluZywgbnY6IGFueSwgb3Y/OiBhbnkpIHtcbiAgICAgICAgaWYgKGtleSA9PT0gJ2NvbnRlbnQnKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuJGxhenlMb2FkKCksIDEwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIGlmICh0aGlzLmlzZHluYW1pYykge1xuICAgICAgICAgICAgdGhpcy53aXphcmRDb21wb25lbnQucmVnaXN0ZXJEeW5hbWljU3RlcCh0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLXN0ZXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2NvbnRhaW5lcnMvd2l6YXJkL3NyYy93aXphcmQtc3RlcC93aXphcmQtc3RlcC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFDVCxlQUFlLEVBQ2YsV0FBVyxFQUNYLE1BQU0sRUFDTixRQUFRLEVBR1IsUUFBUSxFQUNSLElBQUksRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0gsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDcEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDOUIsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7QUFFcEQsTUFBTSxXQUFXLEdBQUcseUJBQXlCLENBQUM7QUFFOUMsTUFBTSxhQUFhLEdBQWtCO0lBQ2pDLFVBQVUsRUFBRSxlQUFlO0lBQzNCLFNBQVMsRUFBRSxXQUFXO0NBQ3pCLENBQUM7QUFrQkYsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGlCQUFpQjthQUMvQyxvQkFBZSxHQUFHLGFBQWEsRUFBRSxBQUFsQixDQUFtQjtJQW1CekMsSUFDSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBVyxPQUFPO1FBQ2QsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksSUFB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QkFDOUIsUUFBUSxFQUFFLG9EQUFvRDtvQkFDOUQsU0FBUyxFQUFFO3dCQUNQLGtCQUFrQixxQkFBcUI7d0JBQ3ZDLE1BQU07cUJBQ1Q7b0JBQ0QsUUFBUSxFQUFFLGNBQWM7aUJBQzNCOzswQkFnRytCLElBQUk7OzBCQUE0QixNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQUcsUUFBUTt5Q0E3RXJDLG9CQUFvQjtzQkFBOUUsZUFBZTt1QkFBQyxtQkFBbUIsRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUM7Z0JBR3JELFNBQVM7c0JBRFosV0FBVzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdG9yLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZlxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgICBCYXNlQ29tcG9uZW50LFxuICAgIElXaWRnZXRDb25maWcsXG4gICAgcHJvdmlkZUFzV2lkZ2V0UmVmLFxuICAgIFJlZHJhd2FibGVEaXJlY3RpdmUsXG4gICAgU3R5bGFibGVDb21wb25lbnRcbn0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2Jhc2VcIjtcbmltcG9ydCB7TmdGb3JtfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7cmVnaXN0ZXJQcm9wc30gZnJvbSBcIi4vd2l6YXJkLXN0ZXAucHJvcHNcIjtcbmltcG9ydCB7bm9vcH0gZnJvbSBcIkB3bS9jb3JlXCI7XG5pbXBvcnQge1dpemFyZENvbXBvbmVudH0gZnJvbSBcIi4uL3dpemFyZC5jb21wb25lbnRcIjtcblxuY29uc3QgREVGQVVMVF9DTFMgPSAnYXBwLXdpemFyZC1zdGVwLWNvbnRlbnQnO1xuXG5jb25zdCBXSURHRVRfQ09ORklHOiBJV2lkZ2V0Q29uZmlnID0ge1xuICAgIHdpZGdldFR5cGU6ICd3bS13aXphcmRzdGVwJyxcbiAgICBob3N0Q2xhc3M6IERFRkFVTFRfQ0xTLFxufTtcblxuY29uc3QgZW51bSBTVEVQX1NUQVRVUyB7XG4gICAgQ1VSUkVOVCA9IDEsXG4gICAgRElTQUJMRUQsXG4gICAgQ09NUExFVEVEXG59XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdmb3JtW3dtV2l6YXJkU3RlcF0nLFxuICAgIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQgcGFydGlhbC1jb250YWluZXItdGFyZ2V0PjwvbmctY29udGVudD5gLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoV2l6YXJkU3RlcENvbXBvbmVudCksXG4gICAgICAgIE5nRm9ybVxuICAgIF0sXG4gICAgZXhwb3J0QXM6ICd3bVdpemFyZFN0ZXAnXG59KVxuZXhwb3J0IGNsYXNzIFdpemFyZFN0ZXBDb21wb25lbnQgZXh0ZW5kcyBTdHlsYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuXG4gICAgcHVibGljIHNob3c6IGJvb2xlYW47XG4gICAgcHVibGljIG5hbWU6IHN0cmluZztcbiAgICBwdWJsaWMgZW5hYmxlc2tpcDogYW55O1xuICAgIHB1YmxpYyBkaXNhYmxlbmV4dDogYm9vbGVhbjtcbiAgICBwdWJsaWMgZGlzYWJsZWRvbmU6IGJvb2xlYW47XG4gICAgcHVibGljIGRpc2FibGVwcmV2aW91czogYm9vbGVhbjtcbiAgICBwdWJsaWMgaXNJbml0aWFsaXplZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIGlzZHluYW1pYzogYm9vbGVhbjtcbiAgICBwdWJsaWMgJGxhenlMb2FkID0gbm9vcDtcbiAgICBpc0RvbmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHByaXZhdGUgc3RhdHVzOiBTVEVQX1NUQVRVUyA9IFNURVBfU1RBVFVTLkRJU0FCTEVEO1xuICAgIHByaXZhdGUgd2l6YXJkQ29tcG9uZW50OiBXaXphcmRDb21wb25lbnQ7XG5cbiAgICAvLyByZWZlcmVuY2UgdG8gdGhlIGNvbXBvbmVudHMgd2hpY2ggbmVlZHMgYSByZWRyYXcoZWcsIGdyaWQsIGNoYXJ0KSB3aGVuIHRoZSBoZWlnaHQgb2YgdGhpcyBjb21wb25lbnQgY2hhbmdlc1xuICAgIEBDb250ZW50Q2hpbGRyZW4oUmVkcmF3YWJsZURpcmVjdGl2ZSwge2Rlc2NlbmRhbnRzOiB0cnVlfSkgcmVEcmF3YWJsZUNvbXBvbmVudHM7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmN1cnJlbnQnKVxuICAgIGdldCBpc0N1cnJlbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBhbG9uZyB3aXRoIHRoZSB3aXphcmQgZm9ybSAsIGFsc28gdmFsaWRhdGUgdGhlIGZvcm1zXG4gICAgICogaWYgdGhlcmUgYXJlIGFueSBpbnNpZGUgdGhlIHdpemFyZFxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNWYWxpZCgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLm5nRm9ybS52YWxpZCB8fCB0aGlzLm5nRm9ybS5kaXNhYmxlZCkgJiYgdGhpcy5hcmVFbWJlZGRlZEZvcm1zVmFsaWQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBnZXQgYWxsIHRoZSBmb3JtcyBpbnNpZGUgdGhlIHdpemFyZCBpZiBhbnkgYW5kIHZhbGlkYXRlXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgcHJpdmF0ZSBhcmVFbWJlZGRlZEZvcm1zVmFsaWQoKSB7XG4gICAgICAgIGZvciAoY29uc3QgZm9ybSBvZiB0aGlzLmdldEFsbEVtYmVkZGVkRm9ybXMoKSkge1xuICAgICAgICAgICAgaWYgKGZvcm0ud2lkZ2V0ICYmIGZvcm0ud2lkZ2V0Lm5nZm9ybSAmJiAhZm9ybS53aWRnZXQubmdmb3JtLnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QWxsRW1iZWRkZWRGb3JtcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGVsZW1lbnQuZmluZCgnZm9ybScpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW5hYmxlTmV4dCgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmRpc2FibGVuZXh0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW5hYmxlRG9uZSgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmRpc2FibGVkb25lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW5hYmxlUHJldigpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmRpc2FibGVwcmV2aW91cztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGFjdGl2ZShudjogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IHRoaXMuYWN0aXZlO1xuICAgICAgICB0aGlzLnN0YXR1cyA9IFNURVBfU1RBVFVTLkNVUlJFTlQ7XG4gICAgICAgIGlmIChudiAmJiAhaXNBY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMucmVkcmF3Q2hpbGRyZW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0dXMgPT09IFNURVBfU1RBVFVTLkNVUlJFTlQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBkb25lKG52OiBib29sZWFuKSB7XG4gICAgICAgIGlmIChudikge1xuICAgICAgICAgICAgdGhpcy5zdGF0dXMgPSBTVEVQX1NUQVRVUy5DT01QTEVURUQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRvbmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXR1cyA9PT0gU1RFUF9TVEFUVVMuQ09NUExFVEVEO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgZGlzYWJsZWQobnY6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKG52KSB7XG4gICAgICAgICAgICB0aGlzLnN0YXR1cyA9IFNURVBfU1RBVFVTLkRJU0FCTEVEO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdHVzID09PSBTVEVQX1NUQVRVUy5ESVNBQkxFRDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihpbmo6IEluamVjdG9yLCBAU2VsZigpIHByaXZhdGUgbmdGb3JtOiBOZ0Zvcm0sIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueSkge1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcsIGV4cGxpY2l0Q29udGV4dCk7XG4gICAgICAgIC8vIElmIHdlIGluamVjdCBkaXJlY3RseSBhcyBhIHBhcmFtIGluIHRoZSBjb25zdHJ1Y3RvciwgZ2V0dGluZyBjaXJjdWxhciBkZXBlbmRlbmN5IGVycm9yIGluIHVuaXQgdGVzdGNhc2VzXG4gICAgICAgIHRoaXMud2l6YXJkQ29tcG9uZW50ID0gdGhpcy5pbmouZ2V0KFdpemFyZENvbXBvbmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIGludm9rZU5leHRDQihpbmRleDogbnVtYmVyKTogYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCduZXh0Jywge2N1cnJlbnRTdGVwOiB0aGlzLCBzdGVwSW5kZXg6IGluZGV4fSk7XG4gICAgfVxuXG4gICAgcHVibGljIGludm9rZVByZXZDQihpbmRleDogbnVtYmVyKTogYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdwcmV2Jywge2N1cnJlbnRTdGVwOiB0aGlzLCBzdGVwSW5kZXg6IGluZGV4fSk7XG4gICAgfVxuXG4gICAgcHVibGljIGludm9rZVNraXBDQihpbmRleDogbnVtYmVyKTogYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdza2lwJywge2N1cnJlbnRTdGVwOiB0aGlzLCBzdGVwSW5kZXg6IGluZGV4fSk7XG4gICAgfVxuXG4gICAgLy8gcmVkcmF3IGFsbCB0aGUgcHJvamVjdGVkIGNvbXBvbmVudHMgd2hpY2ggYXJlIHByb2plY3RlZC5cbiAgICBwcml2YXRlIHJlZHJhd0NoaWxkcmVuKCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlRHJhd2FibGVDb21wb25lbnRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZURyYXdhYmxlQ29tcG9uZW50cy5mb3JFYWNoKGMgPT4gYy5yZWRyYXcoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKHRoaXMgYXMgYW55KS53aXphcmRDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGVwSW5kZXggPSAodGhpcyBhcyBhbnkpLndpemFyZENvbXBvbmVudC5nZXRDdXJyZW50U3RlcEluZGV4KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdsb2FkJywgeyBzdGVwSW5kZXggfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDEwMCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzID09PSB0aGlzLndpemFyZENvbXBvbmVudC5zdGVwcy5sYXN0ID8gdGhpcy53aXphcmRDb21wb25lbnQucHJldigpIDogdGhpcy53aXphcmRDb21wb25lbnQubmV4dCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGF2YWlsYWJsZVBhbmVzID0gdGhpcy53aXphcmRDb21wb25lbnQuc3RlcHMudG9BcnJheSgpO1xuICAgICAgICBhdmFpbGFibGVQYW5lcy5zcGxpY2UoKHRoaXMgYXMgYW55KS53aXphcmRDb21wb25lbnQuZ2V0U3RlcEluZGV4QnlSZWYodGhpcyksIDEpO1xuICAgICAgICB0aGlzLndpemFyZENvbXBvbmVudC5zdGVwcy5yZXNldChbLi4uYXZhaWxhYmxlUGFuZXNdKTtcbiAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnJlbW92ZSgpO1xuICAgIH1cblxuICAgIG9uUHJvcGVydHlDaGFuZ2Uoa2V5OiBzdHJpbmcsIG52OiBhbnksIG92PzogYW55KSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdjb250ZW50Jykge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLiRsYXp5TG9hZCgpLCAxMDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICBpZiAodGhpcy5pc2R5bmFtaWMpIHtcbiAgICAgICAgICAgIHRoaXMud2l6YXJkQ29tcG9uZW50LnJlZ2lzdGVyRHluYW1pY1N0ZXAodGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBDbGVhciByZWRyYXdhYmxlIGNvbXBvbmVudHMgcmVmZXJlbmNlc1xuICAgICAgICBpZiAodGhpcy5yZURyYXdhYmxlQ29tcG9uZW50cykge1xuICAgICAgICAgICAgdGhpcy5yZURyYXdhYmxlQ29tcG9uZW50cy5yZXNldChbXSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IENsZWFyIHdpemFyZCBjb21wb25lbnQgcmVmZXJlbmNlXG4gICAgICAgIHRoaXMud2l6YXJkQ29tcG9uZW50ID0gbnVsbDtcblxuICAgICAgICAvLyBDYWxsIHBhcmVudCBuZ09uRGVzdHJveSAoU3R5bGFibGVDb21wb25lbnQg4oaSIEJhc2VDb21wb25lbnQpXG4gICAgICAgIC8vIFRoaXMgd2lsbCBjbGVhciB0aGUgY29udGV4dCBhbmQgdW5yZWdpc3RlciB0aGUgd2lkZ2V0XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIl19