@wavemaker/app-ng-runtime 11.14.1-rc.6311 → 11.14.2-1.245
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/advanced/carousel/bundles/index.umd.js +15 -1
- package/components/advanced/carousel/carousel.directive.d.ts +1 -0
- package/components/advanced/carousel/esm2022/carousel.directive.mjs +16 -2
- package/components/advanced/carousel/fesm2022/index.mjs +15 -1
- package/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
- package/components/advanced/login/bundles/index.umd.js +24 -3
- package/components/advanced/login/esm2022/login.component.mjs +25 -4
- package/components/advanced/login/fesm2022/index.mjs +24 -3
- package/components/advanced/login/fesm2022/index.mjs.map +1 -1
- package/components/advanced/login/login.component.d.ts +5 -2
- package/components/base/bundles/index.umd.js +323 -28
- package/components/base/directives/show-in-device.directive.d.ts +2 -1
- package/components/base/esm2022/directives/show-in-device.directive.mjs +22 -4
- package/components/base/esm2022/pipes/custom-pipes.mjs +1 -1
- package/components/base/esm2022/utils/widget-utils.mjs +3 -3
- package/components/base/esm2022/widgets/common/base/base-container.component.mjs +27 -1
- package/components/base/esm2022/widgets/common/base/base-field-validations.mjs +18 -1
- package/components/base/esm2022/widgets/common/base/base.component.mjs +68 -7
- package/components/base/esm2022/widgets/common/base/custom-widget-container.directive.mjs +9 -1
- package/components/base/esm2022/widgets/common/base/dataset-aware-nav.component.mjs +44 -11
- package/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +20 -1
- package/components/base/esm2022/widgets/common/item-template/item-template.directive.mjs +26 -1
- package/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +44 -4
- package/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +16 -1
- package/components/base/esm2022/widgets/common/pull-to-refresh/pull-to-refresh.mjs +22 -1
- package/components/base/esm2022/widgets/framework/property-change-handler.mjs +7 -2
- package/components/base/esm2022/widgets/framework/widget-proxy-provider.mjs +5 -3
- package/components/base/esm2022/widgets/framework/widget-registry.mjs +6 -3
- package/components/base/fesm2022/index.mjs +319 -26
- package/components/base/fesm2022/index.mjs.map +1 -1
- package/components/base/widgets/common/base/base-container.component.d.ts +3 -2
- package/components/base/widgets/common/base/base-field-validations.d.ts +1 -0
- package/components/base/widgets/common/base/custom-widget-container.directive.d.ts +3 -2
- package/components/base/widgets/common/base/dataset-aware-nav.component.d.ts +6 -2
- package/components/base/widgets/common/base/partial-container.directive.d.ts +3 -2
- package/components/base/widgets/common/item-template/item-template.directive.d.ts +3 -2
- package/components/base/widgets/common/lazy-load/lazy-load.directive.d.ts +1 -1
- package/components/base/widgets/common/partial-param/partial-param.directive.d.ts +3 -2
- package/components/base/widgets/common/pull-to-refresh/pull-to-refresh.d.ts +3 -2
- package/components/basic/anchor/bundles/index.umd.js +13 -1
- package/components/basic/anchor/esm2022/anchor.component.mjs +14 -2
- package/components/basic/anchor/fesm2022/index.mjs +13 -1
- package/components/basic/anchor/fesm2022/index.mjs.map +1 -1
- package/components/basic/html/bundles/index.umd.js +13 -1
- package/components/basic/html/esm2022/html.directive.mjs +14 -2
- package/components/basic/html/fesm2022/index.mjs +13 -1
- package/components/basic/html/fesm2022/index.mjs.map +1 -1
- package/components/basic/label/bundles/index.umd.js +17 -1
- package/components/basic/label/esm2022/label.directive.mjs +18 -2
- package/components/basic/label/fesm2022/index.mjs +17 -1
- package/components/basic/label/fesm2022/index.mjs.map +1 -1
- package/components/basic/label/label.directive.d.ts +3 -2
- package/components/basic/progress/progress-circle/bundles/index.umd.js +10 -0
- package/components/basic/progress/progress-circle/esm2022/progress-circle.component.mjs +11 -1
- package/components/basic/progress/progress-circle/fesm2022/index.mjs +10 -0
- package/components/basic/progress/progress-circle/fesm2022/index.mjs.map +1 -1
- package/components/basic/progress/progress-circle/progress-circle.component.d.ts +3 -2
- package/components/basic/search/bundles/index.umd.js +40 -12
- package/components/basic/search/esm2022/scrollable.directive.mjs +11 -2
- package/components/basic/search/esm2022/search.component.mjs +31 -12
- package/components/basic/search/fesm2022/index.mjs +40 -12
- package/components/basic/search/fesm2022/index.mjs.map +1 -1
- package/components/basic/search/scrollable.directive.d.ts +4 -2
- package/components/basic/search/search.component.d.ts +3 -2
- package/components/basic/spinner/bundles/index.umd.js +9 -1
- package/components/basic/spinner/esm2022/spinner.component.mjs +10 -2
- package/components/basic/spinner/fesm2022/index.mjs +9 -1
- package/components/basic/spinner/fesm2022/index.mjs.map +1 -1
- package/components/basic/spinner/spinner.component.d.ts +4 -2
- package/components/chart/bundles/index.umd.js +21 -3
- package/components/chart/esm2022/chart.component.mjs +22 -4
- package/components/chart/fesm2022/index.mjs +21 -3
- package/components/chart/fesm2022/index.mjs.map +1 -1
- package/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +3 -2
- package/components/containers/accordion/accordion.directive.d.ts +5 -2
- package/components/containers/accordion/bundles/index.umd.js +49 -2
- package/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +10 -1
- package/components/containers/accordion/esm2022/accordion.directive.mjs +41 -3
- package/components/containers/accordion/fesm2022/index.mjs +49 -2
- package/components/containers/accordion/fesm2022/index.mjs.map +1 -1
- package/components/containers/panel/bundles/index.umd.js +13 -0
- package/components/containers/panel/esm2022/panel.component.mjs +14 -1
- package/components/containers/panel/fesm2022/index.mjs +13 -0
- package/components/containers/panel/fesm2022/index.mjs.map +1 -1
- package/components/containers/panel/panel.component.d.ts +3 -2
- package/components/containers/tabs/bundles/index.umd.js +54 -2
- package/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +10 -1
- package/components/containers/tabs/esm2022/tabs.component.mjs +46 -3
- package/components/containers/tabs/fesm2022/index.mjs +54 -2
- package/components/containers/tabs/fesm2022/index.mjs.map +1 -1
- package/components/containers/tabs/tab-pane/tab-pane.component.d.ts +3 -2
- package/components/containers/tabs/tabs.component.d.ts +5 -2
- package/components/containers/wizard/bundles/index.umd.js +47 -3
- package/components/containers/wizard/esm2022/wizard-step/wizard-step.component.mjs +16 -3
- package/components/containers/wizard/esm2022/wizard.component.mjs +33 -2
- package/components/containers/wizard/fesm2022/index.mjs +47 -3
- package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
- package/components/containers/wizard/wizard-step/wizard-step.component.d.ts +3 -2
- package/components/containers/wizard/wizard.component.d.ts +4 -2
- package/components/data/card/bundles/index.umd.js +17 -1
- package/components/data/card/card-content/card-content.component.d.ts +3 -2
- package/components/data/card/card.component.d.ts +4 -2
- package/components/data/card/esm2022/card-content/card-content.component.mjs +6 -1
- package/components/data/card/esm2022/card.component.mjs +13 -2
- package/components/data/card/fesm2022/index.mjs +17 -1
- package/components/data/card/fesm2022/index.mjs.map +1 -1
- package/components/data/form/bundles/index.umd.js +92 -0
- package/components/data/form/esm2022/form-action/form-action.directive.mjs +7 -1
- package/components/data/form/esm2022/form-field/form-field.directive.mjs +28 -1
- package/components/data/form/esm2022/form-widget.directive.mjs +8 -1
- package/components/data/form/esm2022/form.component.mjs +27 -1
- package/components/data/form/esm2022/live-actions/live-actions.directive.mjs +7 -1
- package/components/data/form/esm2022/live-filter/live-filter.directive.mjs +12 -1
- package/components/data/form/esm2022/live-form/live-form.directive.mjs +10 -1
- package/components/data/form/fesm2022/index.mjs +92 -0
- package/components/data/form/fesm2022/index.mjs.map +1 -1
- package/components/data/form/form-action/form-action.directive.d.ts +3 -2
- package/components/data/form/form-field/form-field.directive.d.ts +3 -2
- package/components/data/form/form-widget.directive.d.ts +3 -2
- package/components/data/form/live-actions/live-actions.directive.d.ts +3 -1
- package/components/data/form/live-filter/live-filter.directive.d.ts +3 -1
- package/components/data/form/live-form/live-form.directive.d.ts +3 -1
- package/components/data/list/bundles/index.umd.js +180 -17
- package/components/data/list/esm2022/list-item.directive.mjs +95 -11
- package/components/data/list/esm2022/list.component.mjs +87 -8
- package/components/data/list/fesm2022/index.mjs +180 -17
- package/components/data/list/fesm2022/index.mjs.map +1 -1
- package/components/data/list/list-item.directive.d.ts +7 -2
- package/components/data/list/list.component.d.ts +3 -0
- package/components/data/live-table/bundles/index.umd.js +13 -1
- package/components/data/live-table/esm2022/live-table.component.mjs +14 -2
- package/components/data/live-table/fesm2022/index.mjs +13 -1
- package/components/data/live-table/fesm2022/index.mjs.map +1 -1
- package/components/data/live-table/live-table.component.d.ts +4 -2
- package/components/data/pagination/bundles/index.umd.js +57 -4
- package/components/data/pagination/esm2022/pagination.component.mjs +58 -5
- package/components/data/pagination/fesm2022/index.mjs +57 -4
- package/components/data/pagination/fesm2022/index.mjs.map +1 -1
- package/components/data/pagination/pagination.component.d.ts +4 -2
- package/components/data/table/bundles/index.umd.js +311 -12
- package/components/data/table/esm2022/table-action/table-action.directive.mjs +8 -1
- package/components/data/table/esm2022/table-column/table-column.directive.mjs +107 -3
- package/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +9 -1
- package/components/data/table/esm2022/table-cud.directive.mjs +8 -2
- package/components/data/table/esm2022/table-filter.directive.mjs +12 -2
- package/components/data/table/esm2022/table-row/table-row.directive.mjs +8 -1
- package/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +8 -1
- package/components/data/table/esm2022/table.component.mjs +159 -9
- package/components/data/table/fesm2022/index.mjs +311 -12
- package/components/data/table/fesm2022/index.mjs.map +1 -1
- package/components/data/table/table-action/table-action.directive.d.ts +3 -2
- package/components/data/table/table-column/table-column.directive.d.ts +3 -2
- package/components/data/table/table-column-group/table-column-group.directive.d.ts +3 -2
- package/components/data/table/table-cud.directive.d.ts +3 -1
- package/components/data/table/table-filter.directive.d.ts +3 -1
- package/components/data/table/table-row/table-row.directive.d.ts +3 -2
- package/components/data/table/table-row-action/table-row-action.directive.d.ts +3 -2
- package/components/data/table/table.component.d.ts +2 -2
- package/components/dialogs/alert-dialog/alert-dialog.component.d.ts +3 -2
- package/components/dialogs/alert-dialog/bundles/index.umd.js +5 -0
- package/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +6 -1
- package/components/dialogs/alert-dialog/fesm2022/index.mjs +5 -0
- package/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/confirm-dialog/bundles/index.umd.js +5 -0
- package/components/dialogs/confirm-dialog/confirm-dialog.component.d.ts +3 -2
- package/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +6 -1
- package/components/dialogs/confirm-dialog/fesm2022/index.mjs +5 -0
- package/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/default/bundles/index.umd.js +15 -2
- package/components/dialogs/default/dialog-body/dialog-body.directive.d.ts +4 -2
- package/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +16 -3
- package/components/dialogs/default/fesm2022/index.mjs +15 -2
- package/components/dialogs/default/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/design-dialog/bundles/index.umd.js +7 -0
- package/components/dialogs/design-dialog/dialog.component.d.ts +3 -2
- package/components/dialogs/design-dialog/esm2022/dialog.component.mjs +8 -1
- package/components/dialogs/design-dialog/fesm2022/index.mjs +7 -0
- package/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/iframe-dialog/bundles/index.umd.js +5 -0
- package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +6 -1
- package/components/dialogs/iframe-dialog/fesm2022/index.mjs +5 -0
- package/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/iframe-dialog/iframe-dialog.component.d.ts +3 -2
- package/components/dialogs/partial-dialog/bundles/index.umd.js +23 -3
- package/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +24 -4
- package/components/dialogs/partial-dialog/fesm2022/index.mjs +23 -3
- package/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/partial-dialog/partial-dialog.component.d.ts +4 -2
- package/components/input/base-form/base-form.component.d.ts +4 -2
- package/components/input/base-form/bundles/index.umd.js +16 -2
- package/components/input/base-form/esm2022/base-form.component.mjs +17 -3
- package/components/input/base-form/fesm2022/index.mjs +16 -2
- package/components/input/base-form/fesm2022/index.mjs.map +1 -1
- package/components/input/base-form-custom/base-form-custom.component.d.ts +3 -2
- package/components/input/base-form-custom/bundles/index.umd.js +13 -2
- package/components/input/base-form-custom/esm2022/base-form-custom.component.mjs +14 -3
- package/components/input/base-form-custom/fesm2022/index.mjs +13 -2
- package/components/input/base-form-custom/fesm2022/index.mjs.map +1 -1
- package/components/input/checkbox/bundles/index.umd.js +7 -0
- package/components/input/checkbox/checkbox.component.d.ts +3 -2
- package/components/input/checkbox/esm2022/checkbox.component.mjs +8 -1
- package/components/input/checkbox/fesm2022/index.mjs +7 -0
- package/components/input/checkbox/fesm2022/index.mjs.map +1 -1
- package/components/input/checkboxset/bundles/index.umd.js +18 -2
- package/components/input/checkboxset/checkboxset.component.d.ts +4 -2
- package/components/input/checkboxset/esm2022/checkboxset.component.mjs +19 -3
- package/components/input/checkboxset/fesm2022/index.mjs +18 -2
- package/components/input/checkboxset/fesm2022/index.mjs.map +1 -1
- package/components/input/chips/bundles/index.umd.js +45 -5
- package/components/input/chips/chips.component.d.ts +3 -2
- package/components/input/chips/esm2022/chips.component.mjs +46 -6
- package/components/input/chips/fesm2022/index.mjs +45 -5
- package/components/input/chips/fesm2022/index.mjs.map +1 -1
- package/components/input/color-picker/bundles/index.umd.js +8 -0
- package/components/input/color-picker/color-picker.component.d.ts +3 -2
- package/components/input/color-picker/esm2022/color-picker.component.mjs +9 -1
- package/components/input/color-picker/fesm2022/index.mjs +8 -0
- package/components/input/color-picker/fesm2022/index.mjs.map +1 -1
- package/components/input/composite/bundles/index.umd.js +10 -1
- package/components/input/composite/composite.directive.d.ts +3 -2
- package/components/input/composite/esm2022/composite.directive.mjs +11 -2
- package/components/input/composite/fesm2022/index.mjs +10 -1
- package/components/input/composite/fesm2022/index.mjs.map +1 -1
- package/components/input/currency/bundles/index.umd.js +7 -0
- package/components/input/currency/currency.component.d.ts +3 -2
- package/components/input/currency/esm2022/currency.component.mjs +8 -1
- package/components/input/currency/fesm2022/index.mjs +7 -0
- package/components/input/currency/fesm2022/index.mjs.map +1 -1
- package/components/input/dataset-aware-form/bundles/index.umd.js +26 -2
- package/components/input/dataset-aware-form/esm2022/dataset-aware-form.component.mjs +27 -3
- package/components/input/dataset-aware-form/fesm2022/index.mjs +26 -2
- package/components/input/dataset-aware-form/fesm2022/index.mjs.map +1 -1
- package/components/input/epoch/date/bundles/index.umd.js +22 -0
- package/components/input/epoch/date/date.component.d.ts +1 -0
- package/components/input/epoch/date/esm2022/date.component.mjs +23 -1
- package/components/input/epoch/date/fesm2022/index.mjs +22 -0
- package/components/input/epoch/date/fesm2022/index.mjs.map +1 -1
- package/components/input/file-upload/bundles/index.umd.js +25 -8
- package/components/input/file-upload/esm2022/file-upload.component.mjs +26 -9
- package/components/input/file-upload/fesm2022/index.mjs +25 -8
- package/components/input/file-upload/fesm2022/index.mjs.map +1 -1
- package/components/input/file-upload/file-upload.component.d.ts +3 -0
- package/components/input/number/bundles/index.umd.js +8 -0
- package/components/input/number/esm2022/number.component.mjs +9 -1
- package/components/input/number/fesm2022/index.mjs +8 -0
- package/components/input/number/fesm2022/index.mjs.map +1 -1
- package/components/input/number/number.component.d.ts +3 -2
- package/components/input/radioset/bundles/index.umd.js +18 -2
- package/components/input/radioset/esm2022/radioset.component.mjs +19 -3
- package/components/input/radioset/fesm2022/index.mjs +18 -2
- package/components/input/radioset/fesm2022/index.mjs.map +1 -1
- package/components/input/radioset/radioset.component.d.ts +4 -2
- package/components/input/rating/bundles/index.umd.js +10 -0
- package/components/input/rating/esm2022/rating.component.mjs +11 -1
- package/components/input/rating/fesm2022/index.mjs +10 -0
- package/components/input/rating/fesm2022/index.mjs.map +1 -1
- package/components/input/rating/rating.component.d.ts +3 -2
- package/components/input/select/bundles/index.umd.js +6 -0
- package/components/input/select/esm2022/select.component.mjs +7 -1
- package/components/input/select/fesm2022/index.mjs +6 -0
- package/components/input/select/fesm2022/index.mjs.map +1 -1
- package/components/input/select/select.component.d.ts +3 -2
- package/components/input/slider/bundles/index.umd.js +10 -0
- package/components/input/slider/esm2022/slider.component.mjs +11 -1
- package/components/input/slider/fesm2022/index.mjs +10 -0
- package/components/input/slider/fesm2022/index.mjs.map +1 -1
- package/components/input/slider/slider.component.d.ts +3 -2
- package/components/input/switch/bundles/index.umd.js +22 -2
- package/components/input/switch/esm2022/switch.component.mjs +23 -3
- package/components/input/switch/fesm2022/index.mjs +22 -2
- package/components/input/switch/fesm2022/index.mjs.map +1 -1
- package/components/input/switch/switch.component.d.ts +3 -2
- package/components/input/text/bundles/index.umd.js +36 -0
- package/components/input/text/esm2022/input-calendar/input-calendar.component.mjs +8 -1
- package/components/input/text/esm2022/input-color/input-color.component.mjs +8 -1
- package/components/input/text/esm2022/input-email/input-email.component.mjs +8 -1
- package/components/input/text/esm2022/input-number/input-number.component.mjs +8 -1
- package/components/input/text/esm2022/input-text/input-text.component.mjs +9 -1
- package/components/input/text/fesm2022/index.mjs +36 -0
- package/components/input/text/fesm2022/index.mjs.map +1 -1
- package/components/input/text/input-calendar/input-calendar.component.d.ts +3 -2
- package/components/input/text/input-color/input-color.component.d.ts +3 -2
- package/components/input/text/input-email/input-email.component.d.ts +3 -2
- package/components/input/text/input-number/input-number.component.d.ts +3 -2
- package/components/input/text/input-text/input-text.component.d.ts +3 -2
- package/components/input/textarea/bundles/index.umd.js +7 -0
- package/components/input/textarea/esm2022/textarea.component.mjs +8 -1
- package/components/input/textarea/fesm2022/index.mjs +7 -0
- package/components/input/textarea/fesm2022/index.mjs.map +1 -1
- package/components/input/textarea/textarea.component.d.ts +3 -2
- package/components/navigation/menu/bundles/index.umd.js +55 -6
- package/components/navigation/menu/esm2022/menu-adapator.component.mjs +17 -3
- package/components/navigation/menu/esm2022/menu.component.mjs +10 -3
- package/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +6 -1
- package/components/navigation/menu/esm2022/nav/nav.component.mjs +11 -1
- package/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +16 -3
- package/components/navigation/menu/fesm2022/index.mjs +55 -6
- package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
- package/components/navigation/menu/menu-adapator.component.d.ts +4 -2
- package/components/navigation/menu/nav/nav-item/nav-item.directive.d.ts +3 -2
- package/components/navigation/menu/nav/nav.component.d.ts +3 -2
- package/components/navigation/menu/nav/navigation-control.directive.d.ts +4 -2
- package/components/navigation/navbar/bundles/index.umd.js +5 -0
- package/components/navigation/navbar/esm2022/navbar.component.mjs +6 -1
- package/components/navigation/navbar/fesm2022/index.mjs +5 -0
- package/components/navigation/navbar/fesm2022/index.mjs.map +1 -1
- package/components/navigation/navbar/navbar.component.d.ts +3 -2
- package/components/navigation/popover/bundles/index.umd.js +65 -13
- package/components/navigation/popover/esm2022/popover.component.mjs +63 -11
- package/components/navigation/popover/fesm2022/index.mjs +62 -10
- package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
- package/components/navigation/popover/popover.component.d.ts +11 -3
- package/components/page/default/bundles/index.umd.js +20 -2
- package/components/page/default/esm2022/layout.directive.mjs +9 -1
- package/components/page/default/esm2022/page-content/page-content.component.mjs +13 -3
- package/components/page/default/fesm2022/index.mjs +20 -2
- package/components/page/default/fesm2022/index.mjs.map +1 -1
- package/components/page/default/layout.directive.d.ts +3 -2
- package/components/page/default/page-content/page-content.component.d.ts +3 -2
- package/components/page/left-panel/bundles/index.umd.js +16 -0
- package/components/page/left-panel/esm2022/left-panel.directive.mjs +17 -1
- package/components/page/left-panel/fesm2022/index.mjs +16 -0
- package/components/page/left-panel/fesm2022/index.mjs.map +1 -1
- package/components/page/left-panel/left-panel.directive.d.ts +3 -2
- package/components/page/top-nav/bundles/index.umd.js +2 -1
- package/components/page/top-nav/esm2022/top-nav.props.mjs +3 -2
- package/components/page/top-nav/fesm2022/index.mjs +2 -1
- package/components/page/top-nav/fesm2022/index.mjs.map +1 -1
- package/components/prefab/bundles/index.umd.js +4 -0
- package/components/prefab/esm2022/prefab.directive.mjs +5 -1
- package/components/prefab/fesm2022/index.mjs +4 -0
- package/components/prefab/fesm2022/index.mjs.map +1 -1
- package/core/bundles/index.umd.js +391 -94
- package/core/esm2022/public_api.mjs +3 -3
- package/core/esm2022/services/viewport.service.mjs +24 -10
- package/core/esm2022/types/types.mjs +1 -1
- package/core/esm2022/utils/dom.mjs +18 -2
- package/core/esm2022/utils/event-notifier.mjs +5 -2
- package/core/esm2022/utils/lru-cache.mjs +16 -2
- package/core/esm2022/utils/utils.mjs +6 -2
- package/core/esm2022/utils/watcher.mjs +323 -81
- package/core/fesm2022/index.mjs +390 -96
- package/core/fesm2022/index.mjs.map +1 -1
- package/core/public_api.d.ts +2 -2
- package/core/services/viewport.service.d.ts +5 -2
- package/core/types/types.d.ts +1 -0
- package/core/utils/lru-cache.d.ts +6 -0
- package/core/utils/utils.d.ts +1 -0
- package/core/utils/watcher.d.ts +26 -5
- package/http/bundles/index.umd.js +31 -1
- package/http/esm2022/http.service.mjs +32 -2
- package/http/fesm2022/index.mjs +31 -1
- package/http/fesm2022/index.mjs.map +1 -1
- package/http/http.service.d.ts +6 -2
- package/npm-shrinkwrap.json +2 -2
- package/oAuth/bundles/index.umd.js +9 -0
- package/oAuth/esm2022/oAuth.service.mjs +10 -1
- package/oAuth/fesm2022/index.mjs +9 -0
- package/oAuth/fesm2022/index.mjs.map +1 -1
- package/oAuth/oAuth.service.d.ts +3 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/runtime/base/bundles/index.umd.js +364 -30
- package/runtime/base/components/app-component/app.component.d.ts +4 -0
- package/runtime/base/components/prefab-preview.component.d.ts +5 -2
- package/runtime/base/directives/accessroles.directive.d.ts +4 -3
- package/runtime/base/directives/prefab.directive.d.ts +3 -2
- package/runtime/base/esm2022/components/app-component/app.component.mjs +40 -9
- package/runtime/base/esm2022/components/base-custom-widget.component.mjs +33 -2
- package/runtime/base/esm2022/components/base-layout.component.mjs +7 -1
- package/runtime/base/esm2022/components/base-page.component.mjs +36 -3
- package/runtime/base/esm2022/components/base-partial.component.mjs +37 -3
- package/runtime/base/esm2022/components/base-prefab.component.mjs +32 -3
- package/runtime/base/esm2022/components/base-spa-page.component.mjs +37 -3
- package/runtime/base/esm2022/components/prefab-preview.component.mjs +23 -4
- package/runtime/base/esm2022/directives/accessroles.directive.mjs +11 -2
- package/runtime/base/esm2022/directives/prefab.directive.mjs +9 -1
- package/runtime/base/esm2022/services/app.manager.service.mjs +37 -10
- package/runtime/base/esm2022/services/app.service.mjs +34 -2
- package/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +4 -1
- package/runtime/base/esm2022/services/pipe-provider.service.mjs +7 -4
- package/runtime/base/esm2022/services/spinner.service.mjs +15 -1
- package/runtime/base/esm2022/util/fragment-monitor.mjs +23 -2
- package/runtime/base/fesm2022/index.mjs +365 -31
- package/runtime/base/fesm2022/index.mjs.map +1 -1
- package/runtime/base/services/app.manager.service.d.ts +6 -1
- package/runtime/base/services/app.service.d.ts +12 -2
- package/runtime/base/services/dynamic-component-ref-provider.service.d.ts +2 -1
- package/runtime/base/services/spinner.service.d.ts +3 -1
- package/runtime/base/util/fragment-monitor.d.ts +6 -0
- package/runtime/dynamic/bundles/index.umd.js +5 -0
- package/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +6 -1
- package/runtime/dynamic/fesm2022/index.mjs +5 -0
- package/runtime/dynamic/fesm2022/index.mjs.map +1 -1
- package/scripts/datatable/datatable.js +100 -14
- package/security/bundles/index.umd.js +41 -2
- package/security/esm2022/security.service.mjs +42 -3
- package/security/fesm2022/index.mjs +41 -2
- package/security/fesm2022/index.mjs.map +1 -1
- package/security/security.service.d.ts +5 -2
- package/variables/bundles/index.umd.js +50 -6
- package/variables/esm2022/manager/action/notification-action.manager.mjs +18 -3
- package/variables/esm2022/manager/variable/base-variable.manager.mjs +15 -2
- package/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +13 -3
- package/variables/esm2022/service/variables.service.mjs +8 -2
- package/variables/fesm2022/index.mjs +50 -6
- package/variables/fesm2022/index.mjs.map +1 -1
|
@@ -81,10 +81,13 @@
|
|
|
81
81
|
this.appVariablesLoaded = false;
|
|
82
82
|
this.appVariablesFired = false;
|
|
83
83
|
this._noRedirect = false;
|
|
84
|
+
this.appSubscriptions = []; // MEMORY LEAK FIX: Track subscriptions
|
|
84
85
|
// register method to invoke on session timeout
|
|
85
|
-
|
|
86
|
+
// MEMORY LEAK FIX: Store unsubscribe function for cleanup
|
|
87
|
+
this.sessionTimeoutUnsubscribe = this.$http.registerOnSessionTimeout(this.handle401.bind(this));
|
|
86
88
|
this.$variables.registerDependency('appManager', this);
|
|
87
|
-
|
|
89
|
+
// MEMORY LEAK FIX: Store subscription unsubscribe functions
|
|
90
|
+
this.appSubscriptions.push(this.$app.subscribe('toggle-variable-state', (data) => {
|
|
88
91
|
const variable = data.variable, active = data.active;
|
|
89
92
|
if (!lodashEs.isEmpty(lodashEs.trim(variable.spinnerContext))) {
|
|
90
93
|
if (active) {
|
|
@@ -109,8 +112,8 @@
|
|
|
109
112
|
this.$spinner.hide(variable._spinnerId.shift());
|
|
110
113
|
}
|
|
111
114
|
}
|
|
112
|
-
});
|
|
113
|
-
this.$app.subscribe('userLoggedIn', () => {
|
|
115
|
+
}));
|
|
116
|
+
this.appSubscriptions.push(this.$app.subscribe('userLoggedIn', () => {
|
|
114
117
|
this.setLandingPage();
|
|
115
118
|
if (this.lastLoggedUserId) {
|
|
116
119
|
this.$security.getConfig(config => {
|
|
@@ -119,11 +122,11 @@
|
|
|
119
122
|
}
|
|
120
123
|
}, null);
|
|
121
124
|
}
|
|
122
|
-
});
|
|
123
|
-
this.$app.subscribe('userLoggedOut', () => this.setLandingPage().then(() => {
|
|
124
|
-
this.$app.clearPageCache();
|
|
125
125
|
}));
|
|
126
|
-
this.$app.subscribe('
|
|
126
|
+
this.appSubscriptions.push(this.$app.subscribe('userLoggedOut', () => this.setLandingPage().then(() => {
|
|
127
|
+
this.$app.clearPageCache();
|
|
128
|
+
})));
|
|
129
|
+
this.appSubscriptions.push(this.$app.subscribe('http401', (d = {}) => this.handle401(d.page, d.options)));
|
|
127
130
|
}
|
|
128
131
|
/**
|
|
129
132
|
* On session timeout, if the session timeout config is set to a dialog, then open login dialog
|
|
@@ -523,12 +526,36 @@
|
|
|
523
526
|
// Apply restored modes
|
|
524
527
|
this.$app.setMode(storedModes);
|
|
525
528
|
// Listener for postMessage-based mode changes
|
|
526
|
-
|
|
529
|
+
// MEMORY LEAK FIX: Store bound function reference for cleanup
|
|
530
|
+
this.windowMessageListener = (event) => {
|
|
527
531
|
const { key, modes, shouldPersist } = event.data || {};
|
|
528
532
|
if (key === 'switch-mode' && modes) {
|
|
529
533
|
this.$app.setMode(modes, !shouldPersist);
|
|
530
534
|
}
|
|
535
|
+
};
|
|
536
|
+
window.addEventListener('message', this.windowMessageListener);
|
|
537
|
+
}
|
|
538
|
+
ngOnDestroy() {
|
|
539
|
+
// MEMORY LEAK FIX: Unsubscribe from all app subscriptions
|
|
540
|
+
this.appSubscriptions.forEach(unsubscribe => {
|
|
541
|
+
if (unsubscribe) {
|
|
542
|
+
unsubscribe();
|
|
543
|
+
}
|
|
531
544
|
});
|
|
545
|
+
this.appSubscriptions = [];
|
|
546
|
+
// MEMORY LEAK FIX: Unsubscribe from session timeout
|
|
547
|
+
if (this.sessionTimeoutUnsubscribe) {
|
|
548
|
+
this.sessionTimeoutUnsubscribe();
|
|
549
|
+
this.sessionTimeoutUnsubscribe = null;
|
|
550
|
+
}
|
|
551
|
+
// MEMORY LEAK FIX: Remove window message listener
|
|
552
|
+
if (this.windowMessageListener) {
|
|
553
|
+
window.removeEventListener('message', this.windowMessageListener);
|
|
554
|
+
this.windowMessageListener = null;
|
|
555
|
+
}
|
|
556
|
+
// MEMORY LEAK FIX: Clear references
|
|
557
|
+
this.templates = null;
|
|
558
|
+
this.lastLoggedUserId = null;
|
|
532
559
|
}
|
|
533
560
|
static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: AppManagerService, deps: [{ token: i1__namespace.AbstractHttpService }, { token: i2__namespace.SecurityService }, { token: i1__namespace.AbstractDialogService }, { token: i1$1__namespace.Router }, { token: i1__namespace.App }, { token: i4__namespace.VariablesService }, { token: i4__namespace.MetadataService }, { token: i1__namespace.AbstractSpinnerService }, { token: i1__namespace.AbstractI18nService }, { token: i5__namespace.DatePipe }], target: i0__namespace.ɵɵFactoryTarget.Injectable }); }
|
|
534
561
|
static { this.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: AppManagerService }); }
|
|
@@ -654,11 +681,32 @@
|
|
|
654
681
|
}
|
|
655
682
|
init() {
|
|
656
683
|
// console.log(`inside fragmentMonitor: Page-${(this as any).pageName}, Partial-${(this as any).partialName}`);
|
|
657
|
-
|
|
684
|
+
// MEMORY LEAK FIX: Store subscription reference for cleanup
|
|
685
|
+
this.viewInitSubscription = this.viewInit$.subscribe(i1.noop, i1.noop, () => {
|
|
658
686
|
this.isViewInitialized = true;
|
|
659
687
|
this.isReady();
|
|
660
688
|
});
|
|
661
689
|
}
|
|
690
|
+
/**
|
|
691
|
+
* MEMORY LEAK FIX: Clean up FragmentMonitor resources
|
|
692
|
+
* Should be called from implementing class's ngOnDestroy
|
|
693
|
+
*/
|
|
694
|
+
cleanupFragmentMonitor() {
|
|
695
|
+
// MEMORY LEAK FIX: Unsubscribe from viewInit$ subscription
|
|
696
|
+
if (this.viewInitSubscription) {
|
|
697
|
+
this.viewInitSubscription.unsubscribe();
|
|
698
|
+
this.viewInitSubscription = null;
|
|
699
|
+
}
|
|
700
|
+
// MEMORY LEAK FIX: Complete Subjects to release subscriptions (if not already completed)
|
|
701
|
+
if (this.viewInit$ && !this.viewInit$.closed) {
|
|
702
|
+
this.viewInit$.complete();
|
|
703
|
+
}
|
|
704
|
+
this.viewInit$ = null;
|
|
705
|
+
if (this.fragmentsLoaded$ && !this.fragmentsLoaded$.closed) {
|
|
706
|
+
this.fragmentsLoaded$.complete();
|
|
707
|
+
}
|
|
708
|
+
this.fragmentsLoaded$ = null;
|
|
709
|
+
}
|
|
662
710
|
registerFragment() {
|
|
663
711
|
this.fragments++;
|
|
664
712
|
}
|
|
@@ -842,7 +890,41 @@
|
|
|
842
890
|
});
|
|
843
891
|
}
|
|
844
892
|
ngOnDestroy() {
|
|
845
|
-
|
|
893
|
+
// MEMORY LEAK FIX: Unwatch all Partial-scoped watchers for THIS specific partial when partial is destroyed
|
|
894
|
+
// Only unwatch watchers for this partial, not all partials (other partials may still be on the page)
|
|
895
|
+
if (this.partialName) {
|
|
896
|
+
i1.$unwatchAllByScope('Partial', this.partialName);
|
|
897
|
+
}
|
|
898
|
+
// MEMORY LEAK FIX: Complete Subjects to release subscriptions
|
|
899
|
+
if (this.destroy$) {
|
|
900
|
+
this.destroy$.complete();
|
|
901
|
+
this.destroy$ = null;
|
|
902
|
+
}
|
|
903
|
+
if (this.viewInit$) {
|
|
904
|
+
this.viewInit$.complete();
|
|
905
|
+
this.viewInit$ = null;
|
|
906
|
+
}
|
|
907
|
+
// MEMORY LEAK FIX: Clear references to prevent memory leaks
|
|
908
|
+
this.Widgets = null;
|
|
909
|
+
this.Variables = null;
|
|
910
|
+
this.Actions = null;
|
|
911
|
+
this.App = null;
|
|
912
|
+
this.containerWidget = null;
|
|
913
|
+
this.i18nService = null;
|
|
914
|
+
this.appLocale = null;
|
|
915
|
+
this.partialDirective = null;
|
|
916
|
+
this.pageDirective = null;
|
|
917
|
+
this.Prefab = null;
|
|
918
|
+
this.scriptLoaderService = null;
|
|
919
|
+
this.Viewport = null;
|
|
920
|
+
this.route = null;
|
|
921
|
+
this.appManager = null;
|
|
922
|
+
this.navigationService = null;
|
|
923
|
+
this.router = null;
|
|
924
|
+
this.pageParams = null;
|
|
925
|
+
this.viewParent = null;
|
|
926
|
+
// MEMORY LEAK FIX: Cleanup FragmentMonitor resources
|
|
927
|
+
this.cleanupFragmentMonitor();
|
|
846
928
|
}
|
|
847
929
|
ngOnAttach(refreshData) {
|
|
848
930
|
this.unmute();
|
|
@@ -1287,9 +1369,42 @@
|
|
|
1287
1369
|
});
|
|
1288
1370
|
}
|
|
1289
1371
|
ngOnDestroy() {
|
|
1372
|
+
// MEMORY LEAK FIX: Unwatch all Page-scoped watchers for THIS specific page when page is destroyed
|
|
1373
|
+
if (this.pageName) {
|
|
1374
|
+
const removedCount = i1.$unwatchAllByScope('Page', this.pageName);
|
|
1375
|
+
if (removedCount > 0) {
|
|
1376
|
+
console.log(`🧹 Cleaned up ${removedCount} Page-scoped watcher(s) for page ${this.pageName}`);
|
|
1377
|
+
}
|
|
1378
|
+
}
|
|
1290
1379
|
//this.captureApplicationThumbnail();
|
|
1291
1380
|
this.savePageSnapShot();
|
|
1292
|
-
|
|
1381
|
+
// MEMORY LEAK FIX: Complete Subjects to release subscriptions
|
|
1382
|
+
if (this.destroy$) {
|
|
1383
|
+
this.destroy$.complete();
|
|
1384
|
+
this.destroy$ = null;
|
|
1385
|
+
}
|
|
1386
|
+
if (this.viewInit$) {
|
|
1387
|
+
this.viewInit$.complete();
|
|
1388
|
+
this.viewInit$ = null;
|
|
1389
|
+
}
|
|
1390
|
+
// MEMORY LEAK FIX: Clear references to prevent memory leaks
|
|
1391
|
+
this.Widgets = null;
|
|
1392
|
+
this.Variables = null;
|
|
1393
|
+
this.Actions = null;
|
|
1394
|
+
this.App = null;
|
|
1395
|
+
this.route = null;
|
|
1396
|
+
this.appManager = null;
|
|
1397
|
+
this.navigationService = null;
|
|
1398
|
+
this.router = null;
|
|
1399
|
+
this.pageParams = null;
|
|
1400
|
+
this.i18nService = null;
|
|
1401
|
+
this.appLocale = null;
|
|
1402
|
+
this.pageDirective = null;
|
|
1403
|
+
this.$page = null;
|
|
1404
|
+
this.scriptLoaderService = null;
|
|
1405
|
+
this.Viewport = null;
|
|
1406
|
+
// MEMORY LEAK FIX: Cleanup FragmentMonitor resources
|
|
1407
|
+
this.cleanupFragmentMonitor();
|
|
1293
1408
|
}
|
|
1294
1409
|
captureApplicationThumbnail() {
|
|
1295
1410
|
const root = this;
|
|
@@ -1654,7 +1769,38 @@
|
|
|
1654
1769
|
}, 100);
|
|
1655
1770
|
}
|
|
1656
1771
|
ngOnDestroy() {
|
|
1657
|
-
|
|
1772
|
+
// MEMORY LEAK FIX: Complete Subjects to release subscriptions
|
|
1773
|
+
if (this.destroy$) {
|
|
1774
|
+
this.destroy$.complete();
|
|
1775
|
+
this.destroy$ = null;
|
|
1776
|
+
}
|
|
1777
|
+
if (this.viewInit$) {
|
|
1778
|
+
this.viewInit$.complete();
|
|
1779
|
+
this.viewInit$ = null;
|
|
1780
|
+
}
|
|
1781
|
+
// MEMORY LEAK FIX: Clear references to prevent memory leaks
|
|
1782
|
+
this.Widgets = null;
|
|
1783
|
+
this.BaseWidget = null;
|
|
1784
|
+
this.Variables = null;
|
|
1785
|
+
this.Actions = null;
|
|
1786
|
+
this.App = null;
|
|
1787
|
+
this.containerWidget = null;
|
|
1788
|
+
this.i18nService = null;
|
|
1789
|
+
this.appLocale = null;
|
|
1790
|
+
this.pageDirective = null;
|
|
1791
|
+
this.Prefab = null;
|
|
1792
|
+
this.scriptLoaderService = null;
|
|
1793
|
+
this.customwidgetConfigProvider = null;
|
|
1794
|
+
this.Viewport = null;
|
|
1795
|
+
this.route = null;
|
|
1796
|
+
this.appManager = null;
|
|
1797
|
+
this.navigationService = null;
|
|
1798
|
+
this.router = null;
|
|
1799
|
+
this.props = null;
|
|
1800
|
+
this.events = null;
|
|
1801
|
+
this.viewParent = null;
|
|
1802
|
+
// MEMORY LEAK FIX: Cleanup FragmentMonitor resources
|
|
1803
|
+
this.cleanupFragmentMonitor();
|
|
1658
1804
|
}
|
|
1659
1805
|
ngOnAttach(refreshData) {
|
|
1660
1806
|
this.unmute();
|
|
@@ -1881,7 +2027,36 @@
|
|
|
1881
2027
|
});
|
|
1882
2028
|
}
|
|
1883
2029
|
ngOnDestroy() {
|
|
1884
|
-
|
|
2030
|
+
// MEMORY LEAK FIX: Unwatch all Prefab-scoped watchers for THIS specific prefab when prefab is destroyed
|
|
2031
|
+
// Only unwatch watchers for this prefab, not all prefabs (other prefabs may still be on the page)
|
|
2032
|
+
if (this.prefabName) {
|
|
2033
|
+
i1.$unwatchAllByScope('Prefab', this.prefabName);
|
|
2034
|
+
}
|
|
2035
|
+
// MEMORY LEAK FIX: Complete Subjects to release subscriptions
|
|
2036
|
+
if (this.destroy$) {
|
|
2037
|
+
this.destroy$.complete();
|
|
2038
|
+
this.destroy$ = null;
|
|
2039
|
+
}
|
|
2040
|
+
if (this.viewInit$) {
|
|
2041
|
+
this.viewInit$.complete();
|
|
2042
|
+
this.viewInit$ = null;
|
|
2043
|
+
}
|
|
2044
|
+
// MEMORY LEAK FIX: Clear references to prevent memory leaks
|
|
2045
|
+
this.Widgets = null;
|
|
2046
|
+
this.Variables = null;
|
|
2047
|
+
this.Actions = null;
|
|
2048
|
+
this.App = null;
|
|
2049
|
+
this.containerWidget = null;
|
|
2050
|
+
this.prefabMngr = null;
|
|
2051
|
+
this.i18nService = null;
|
|
2052
|
+
this.appLocale = null;
|
|
2053
|
+
this.prefabContainerDirective = null;
|
|
2054
|
+
this.scriptLoaderService = null;
|
|
2055
|
+
this.pageDirective = null;
|
|
2056
|
+
this.Viewport = null;
|
|
2057
|
+
this.viewParent = null;
|
|
2058
|
+
// MEMORY LEAK FIX: Cleanup FragmentMonitor resources
|
|
2059
|
+
this.cleanupFragmentMonitor();
|
|
1885
2060
|
}
|
|
1886
2061
|
// user overrides this
|
|
1887
2062
|
onPropertyChange() { }
|
|
@@ -1935,6 +2110,12 @@
|
|
|
1935
2110
|
}
|
|
1936
2111
|
//TODO: To work cache properly need to implement the below methods and WmRouteReuseStrategy
|
|
1937
2112
|
ngOnDestroy() {
|
|
2113
|
+
// MEMORY LEAK FIX: Clear references to prevent memory leaks
|
|
2114
|
+
this.App = null;
|
|
2115
|
+
this.routerOutlet = null;
|
|
2116
|
+
this.pageDirective = null;
|
|
2117
|
+
this.layoutPages = null;
|
|
2118
|
+
this.layoutName = null;
|
|
1938
2119
|
}
|
|
1939
2120
|
canReuse() {
|
|
1940
2121
|
}
|
|
@@ -2616,8 +2797,42 @@
|
|
|
2616
2797
|
});
|
|
2617
2798
|
}
|
|
2618
2799
|
ngOnDestroy() {
|
|
2800
|
+
// MEMORY LEAK FIX: Unwatch all Page-scoped watchers for THIS specific page when page is destroyed
|
|
2801
|
+
if (this.pageName) {
|
|
2802
|
+
i1.$unwatchAllByScope('Page', this.pageName);
|
|
2803
|
+
// if (removedCount > 0) {
|
|
2804
|
+
// console.log(`🧹 Cleaned up ${removedCount} Page-scoped watcher(s) for page ${this.pageName}`);
|
|
2805
|
+
// }
|
|
2806
|
+
}
|
|
2619
2807
|
this.savePageSnapShot();
|
|
2620
|
-
|
|
2808
|
+
// MEMORY LEAK FIX: Complete Subjects to release subscriptions
|
|
2809
|
+
if (this.destroy$) {
|
|
2810
|
+
this.destroy$.complete();
|
|
2811
|
+
this.destroy$ = null;
|
|
2812
|
+
}
|
|
2813
|
+
if (this.viewInit$) {
|
|
2814
|
+
this.viewInit$.complete();
|
|
2815
|
+
this.viewInit$ = null;
|
|
2816
|
+
}
|
|
2817
|
+
// MEMORY LEAK FIX: Clear references to prevent memory leaks
|
|
2818
|
+
this.Widgets = null;
|
|
2819
|
+
this.Variables = null;
|
|
2820
|
+
this.Actions = null;
|
|
2821
|
+
this.App = null;
|
|
2822
|
+
this.route = null;
|
|
2823
|
+
this.appManager = null;
|
|
2824
|
+
this.navigationService = null;
|
|
2825
|
+
this.router = null;
|
|
2826
|
+
this.pageParams = null;
|
|
2827
|
+
this.i18nService = null;
|
|
2828
|
+
this.appLocale = null;
|
|
2829
|
+
this.layoutDirective = null;
|
|
2830
|
+
this.spaPageDirective = null;
|
|
2831
|
+
this.$page = null;
|
|
2832
|
+
this.scriptLoaderService = null;
|
|
2833
|
+
this.Viewport = null;
|
|
2834
|
+
// MEMORY LEAK FIX: Cleanup FragmentMonitor resources
|
|
2835
|
+
this.cleanupFragmentMonitor();
|
|
2621
2836
|
}
|
|
2622
2837
|
onReady() { }
|
|
2623
2838
|
onBeforePageReady() { }
|
|
@@ -2703,7 +2918,7 @@
|
|
|
2703
2918
|
this.securityService = securityService;
|
|
2704
2919
|
this.inj = inj;
|
|
2705
2920
|
this.processed = false;
|
|
2706
|
-
this.context = {};
|
|
2921
|
+
this.context = {}; // Changed from readonly to allow cleanup
|
|
2707
2922
|
const securityConfig = this.securityService.get();
|
|
2708
2923
|
this.securityEnabled = lodashEs.get(securityConfig, 'securityEnabled');
|
|
2709
2924
|
this.isUserAuthenticated = lodashEs.get(securityConfig, 'authenticated');
|
|
@@ -2776,6 +2991,15 @@
|
|
|
2776
2991
|
this.viewContainerRef.clear();
|
|
2777
2992
|
}
|
|
2778
2993
|
}
|
|
2994
|
+
ngOnDestroy() {
|
|
2995
|
+
// MEMORY LEAK FIX: Clear context to release references to parent scope data
|
|
2996
|
+
if (this.context) {
|
|
2997
|
+
Object.keys(this.context).forEach(key => {
|
|
2998
|
+
delete this.context[key];
|
|
2999
|
+
});
|
|
3000
|
+
this.context = null;
|
|
3001
|
+
}
|
|
3002
|
+
}
|
|
2779
3003
|
static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: AccessrolesDirective, deps: [{ token: i0__namespace.TemplateRef }, { token: i0__namespace.ViewContainerRef }, { token: i2__namespace.SecurityService }, { token: i0__namespace.Injector }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0__namespace.ɵɵFactoryTarget.Directive }); }
|
|
2780
3004
|
static { this.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: AccessrolesDirective, isStandalone: true, selector: "[accessroles]", inputs: { accessroles: "accessroles" }, ngImport: i0__namespace }); }
|
|
2781
3005
|
}
|
|
@@ -3005,7 +3229,10 @@
|
|
|
3005
3229
|
this.preparePipeMeta(i5.CurrencyPipe, 'currency', true, [this._locale]),
|
|
3006
3230
|
this.preparePipeMeta(i5.DatePipe, 'date', true, [this._locale]),
|
|
3007
3231
|
this.preparePipeMeta(base.ToDatePipe, 'toDate', true, [
|
|
3008
|
-
new i5.DatePipe(this._locale),
|
|
3232
|
+
new i5.DatePipe(this._locale),
|
|
3233
|
+
undefined,
|
|
3234
|
+
this.injector.get(i1.App),
|
|
3235
|
+
this.injector.get(i1.CustomPipeManager)
|
|
3009
3236
|
]),
|
|
3010
3237
|
this.preparePipeMeta(base.ToNumberPipe, 'toNumber', true, [
|
|
3011
3238
|
new i5.DecimalPipe(this._locale),
|
|
@@ -3022,7 +3249,7 @@
|
|
|
3022
3249
|
new i5.DecimalPipe(this._locale)
|
|
3023
3250
|
]),
|
|
3024
3251
|
this.preparePipeMeta(base.StringToNumberPipe, 'stringToNumber', true),
|
|
3025
|
-
this.preparePipeMeta(base.CustomPipe, 'custom', true, [this.injector.get(i1.CustomPipeManager)]),
|
|
3252
|
+
this.preparePipeMeta(base.CustomPipe, 'custom', true, [this.injector.get(i1.App), this.injector.get(i1.CustomPipeManager)]),
|
|
3026
3253
|
this.preparePipeMeta(base.TrustAsPipe, 'trustAs', true, [this.domSanitizer]),
|
|
3027
3254
|
this.preparePipeMeta(base.SanitizePipe, 'sanitize', true, [this.domSanitizer]),
|
|
3028
3255
|
this.preparePipeMeta(base.TemplateReplacePipe, 'templateReplace', true),
|
|
@@ -3185,7 +3412,8 @@
|
|
|
3185
3412
|
this.isTemplateBundleType = wmProjectProperties.type === "TEMPLATEBUNDLE" /* PROJECT_TYPE.TEMPLATE_BUNDLE */;
|
|
3186
3413
|
this.targetPlatform = wmProjectProperties.platformType;
|
|
3187
3414
|
this.isPrism = wmProjectProperties.template === "PRISM";
|
|
3188
|
-
|
|
3415
|
+
// MEMORY LEAK FIX: Store unsubscribe function for cleanup
|
|
3416
|
+
this.sessionTimeoutUnsubscribe = this.httpService.registerOnSessionTimeout(this.on401.bind(this));
|
|
3189
3417
|
this.appLocale = this.i18nService.getAppLocale();
|
|
3190
3418
|
this.httpService.setLocale(this.appLocale);
|
|
3191
3419
|
}
|
|
@@ -3272,6 +3500,19 @@
|
|
|
3272
3500
|
i1.registerFnByExpr(expr, fn[0], fn[1]);
|
|
3273
3501
|
});
|
|
3274
3502
|
}
|
|
3503
|
+
/**
|
|
3504
|
+
* Utility method to check if an object has a property
|
|
3505
|
+
* This is commonly used in expressions to check object properties
|
|
3506
|
+
* @param obj The object to check
|
|
3507
|
+
* @param prop The property name to check
|
|
3508
|
+
* @returns true if the object has the property, false otherwise
|
|
3509
|
+
*/
|
|
3510
|
+
hasOwnObjectProperty(obj, prop) {
|
|
3511
|
+
if (!obj || typeof obj !== 'object') {
|
|
3512
|
+
return false;
|
|
3513
|
+
}
|
|
3514
|
+
return Object.prototype.hasOwnProperty.call(obj, prop);
|
|
3515
|
+
}
|
|
3275
3516
|
setMode(modes, shouldPersist = false) {
|
|
3276
3517
|
const htmlEl = document.getElementsByTagName('html')[0];
|
|
3277
3518
|
//html element sanity check
|
|
@@ -3300,6 +3541,24 @@
|
|
|
3300
3541
|
localStorage.setItem('wm-app-modes', JSON.stringify(modes));
|
|
3301
3542
|
}
|
|
3302
3543
|
;
|
|
3544
|
+
ngOnDestroy() {
|
|
3545
|
+
// MEMORY LEAK FIX: Destroy EventNotifier to release subscribers
|
|
3546
|
+
if (this._eventNotifier) {
|
|
3547
|
+
this._eventNotifier.destroy();
|
|
3548
|
+
this._eventNotifier = null;
|
|
3549
|
+
}
|
|
3550
|
+
// MEMORY LEAK FIX: Unsubscribe from session timeout
|
|
3551
|
+
if (this.sessionTimeoutUnsubscribe) {
|
|
3552
|
+
this.sessionTimeoutUnsubscribe();
|
|
3553
|
+
this.sessionTimeoutUnsubscribe = null;
|
|
3554
|
+
}
|
|
3555
|
+
// MEMORY LEAK FIX: Clear references
|
|
3556
|
+
this.Variables = null;
|
|
3557
|
+
this.Actions = null;
|
|
3558
|
+
this.appLocale = null;
|
|
3559
|
+
this.modes = null;
|
|
3560
|
+
this.dynamicComponentContainerRef = null;
|
|
3561
|
+
}
|
|
3303
3562
|
static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: AppRef, deps: [{ token: i0__namespace.Injector }, { token: i1__namespace.AbstractI18nService }, { token: i1__namespace.StatePersistence }, { token: i1__namespace.AbstractHttpService }, { token: i2__namespace.SecurityService }, { token: i1$1__namespace.RouteReuseStrategy }], target: i0__namespace.ɵɵFactoryTarget.Injectable }); }
|
|
3304
3563
|
static { this.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: AppRef }); }
|
|
3305
3564
|
}
|
|
@@ -3802,6 +4061,20 @@
|
|
|
3802
4061
|
this.messagesByContext[ctx] = {};
|
|
3803
4062
|
}
|
|
3804
4063
|
}
|
|
4064
|
+
ngOnDestroy() {
|
|
4065
|
+
// MEMORY LEAK FIX: Complete Subject to release subscriptions
|
|
4066
|
+
if (this.messageSource) {
|
|
4067
|
+
this.messageSource.complete();
|
|
4068
|
+
this.messageSource = null;
|
|
4069
|
+
}
|
|
4070
|
+
// MEMORY LEAK FIX: Clear messages by context
|
|
4071
|
+
if (this.messagesByContext) {
|
|
4072
|
+
Object.keys(this.messagesByContext).forEach(key => {
|
|
4073
|
+
delete this.messagesByContext[key];
|
|
4074
|
+
});
|
|
4075
|
+
this.messagesByContext = null;
|
|
4076
|
+
}
|
|
4077
|
+
}
|
|
3805
4078
|
static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: SpinnerServiceImpl, deps: [], target: i0__namespace.ɵɵFactoryTarget.Injectable }); }
|
|
3806
4079
|
static { this.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: SpinnerServiceImpl }); }
|
|
3807
4080
|
}
|
|
@@ -4317,6 +4590,7 @@
|
|
|
4317
4590
|
this.isApplicationType = false;
|
|
4318
4591
|
this.enableSkipToMainContent = i1.getWmProjectProperties().enableSkipToMainContent === 'true' || i1.getWmProjectProperties().enableSkipToMainContent === true;
|
|
4319
4592
|
this.retryCount = 0;
|
|
4593
|
+
this.appManagerSubscriptions = []; // MEMORY LEAK FIX: Track appManager subscriptions
|
|
4320
4594
|
this.appLocale = {};
|
|
4321
4595
|
this.spinner = { show: false, messages: [], arialabel: '' };
|
|
4322
4596
|
this.isOAuthDialogOpen = false;
|
|
@@ -4329,7 +4603,8 @@
|
|
|
4329
4603
|
this.customIconsLoaderService.load();
|
|
4330
4604
|
}
|
|
4331
4605
|
// subscribe to OAuth changes
|
|
4332
|
-
|
|
4606
|
+
// MEMORY LEAK FIX: Store subscription reference for cleanup
|
|
4607
|
+
this.oAuthProvidersSubscription = oAuthService.getOAuthProvidersAsObservable().subscribe((providers) => {
|
|
4333
4608
|
this.providersConfig = providers;
|
|
4334
4609
|
if (providers.length) {
|
|
4335
4610
|
this.showOAuthDialog();
|
|
@@ -4339,7 +4614,8 @@
|
|
|
4339
4614
|
}
|
|
4340
4615
|
});
|
|
4341
4616
|
// Subscribe to the message source to show/hide app spinner
|
|
4342
|
-
|
|
4617
|
+
// MEMORY LEAK FIX: Store subscription reference for cleanup
|
|
4618
|
+
this.spinnerMessageSubscription = this.spinnerService.getMessageSource().asObservable().subscribe((data) => {
|
|
4343
4619
|
// setTimeout is to avoid 'ExpressionChangedAfterItHasBeenCheckedError'
|
|
4344
4620
|
setTimeout(() => {
|
|
4345
4621
|
this.spinner.show = data.show;
|
|
@@ -4351,7 +4627,8 @@
|
|
|
4351
4627
|
utils.setTheme('bs3');
|
|
4352
4628
|
let spinnerId;
|
|
4353
4629
|
let onPageRendered = i1.noop;
|
|
4354
|
-
|
|
4630
|
+
// MEMORY LEAK FIX: Store subscription reference for cleanup
|
|
4631
|
+
this.routerEventsSubscription = this.router.events.subscribe(e => {
|
|
4355
4632
|
if (e instanceof i1$1.NavigationStart) {
|
|
4356
4633
|
let page = e.url.split('?')[0];
|
|
4357
4634
|
page = page.substring(1);
|
|
@@ -4386,12 +4663,13 @@
|
|
|
4386
4663
|
}, 1000);
|
|
4387
4664
|
}
|
|
4388
4665
|
});
|
|
4389
|
-
|
|
4666
|
+
// MEMORY LEAK FIX: Store subscription unsubscribe functions
|
|
4667
|
+
this.appManagerSubscriptions.push(this.appManager.subscribe('pageReady', () => {
|
|
4390
4668
|
onPageRendered();
|
|
4391
|
-
});
|
|
4392
|
-
this.appManager.subscribe('pageAttach', () => {
|
|
4669
|
+
}));
|
|
4670
|
+
this.appManagerSubscriptions.push(this.appManager.subscribe('pageAttach', () => {
|
|
4393
4671
|
onPageRendered();
|
|
4394
|
-
});
|
|
4672
|
+
}));
|
|
4395
4673
|
}
|
|
4396
4674
|
showOAuthDialog() {
|
|
4397
4675
|
if (!this.isOAuthDialogOpen) {
|
|
@@ -4466,9 +4744,35 @@
|
|
|
4466
4744
|
i1.$invokeWatchers();
|
|
4467
4745
|
}
|
|
4468
4746
|
ngOnDestroy() {
|
|
4747
|
+
// MEMORY LEAK FIX: Unwatch all App-scoped watchers when app is destroyed
|
|
4748
|
+
i1.$unwatchAllByScope('App');
|
|
4749
|
+
// MEMORY LEAK FIX: Unsubscribe from navigation end subscription
|
|
4469
4750
|
if (this.navigationEndSubscription) {
|
|
4470
4751
|
this.navigationEndSubscription.unsubscribe();
|
|
4471
|
-
|
|
4752
|
+
this.navigationEndSubscription = null;
|
|
4753
|
+
}
|
|
4754
|
+
// MEMORY LEAK FIX: Unsubscribe from OAuth providers subscription
|
|
4755
|
+
if (this.oAuthProvidersSubscription) {
|
|
4756
|
+
this.oAuthProvidersSubscription.unsubscribe();
|
|
4757
|
+
this.oAuthProvidersSubscription = null;
|
|
4758
|
+
}
|
|
4759
|
+
// MEMORY LEAK FIX: Unsubscribe from spinner message subscription
|
|
4760
|
+
if (this.spinnerMessageSubscription) {
|
|
4761
|
+
this.spinnerMessageSubscription.unsubscribe();
|
|
4762
|
+
this.spinnerMessageSubscription = null;
|
|
4763
|
+
}
|
|
4764
|
+
// MEMORY LEAK FIX: Unsubscribe from router events subscription
|
|
4765
|
+
if (this.routerEventsSubscription) {
|
|
4766
|
+
this.routerEventsSubscription.unsubscribe();
|
|
4767
|
+
this.routerEventsSubscription = null;
|
|
4768
|
+
}
|
|
4769
|
+
// MEMORY LEAK FIX: Unsubscribe from appManager subscriptions
|
|
4770
|
+
this.appManagerSubscriptions.forEach(unsubscribe => {
|
|
4771
|
+
if (unsubscribe) {
|
|
4772
|
+
unsubscribe();
|
|
4773
|
+
}
|
|
4774
|
+
});
|
|
4775
|
+
this.appManagerSubscriptions = [];
|
|
4472
4776
|
}
|
|
4473
4777
|
static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: AppComponent, deps: [{ token: PipeProvider }, { token: i0__namespace.ApplicationRef }, { token: i0__namespace.ElementRef }, { token: i2$2__namespace.OAuthService }, { token: i1__namespace.AbstractDialogService }, { token: i1__namespace.AbstractSpinnerService }, { token: i0__namespace.NgZone }, { token: i1$1__namespace.Router }, { token: i1__namespace.App }, { token: AppManagerService }, { token: i1__namespace.CustomIconsLoaderService }], target: i0__namespace.ɵɵFactoryTarget.Component }); }
|
|
4474
4778
|
static { this.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: AppComponent, isStandalone: true, selector: "app-root", viewQueries: [{ propertyName: "routerOutlet", first: true, predicate: i1$1.RouterOutlet, descendants: true }, { propertyName: "dynamicComponentContainerRef", first: true, predicate: ["dynamicComponent"], descendants: true, read: i0.ViewContainerRef }], ngImport: i0__namespace, template: "@if (startApp) {\n @if(enableSkipToMainContent) {\n <div id=\"app-focus-start\" tabindex=\"-1\"></div>\n <a href=\"javascript:void(0);\" class=\"skip\" (click)=\"skipToAppContent($event)\">{{appLocale.LABEL_SKIP_TO_MAIN_CONTENT || 'Skip to main content'}}</a>\n }\n <router-outlet></router-outlet>\n @if (isApplicationType) {\n <div wmContainer partialContainer content=\"Common\" hidden class=\"ng-hide\"></div>\n }\n <app-spinner name=\"globalspinner\" classname=\"global-spinner\" role=\"alert\" aria-live=\"assertive\" [attr.aria-label]=\"spinner.arialabel || 'Loading'\" [show]=\"spinner.show\" [spinnermessages]=\"spinner.messages\"></app-spinner>\n <div wmDialog name=\"oAuthLoginDialog\" title=\"Application is requesting you to sign in with\"\n close.event=\"closeOAuthDialog()\">\n <ng-template #dialogBody>\n <ul class=\"list-items\">\n @for (provider of providersConfig; track provider) {\n <li class=\"list-item\">\n <button class=\"btn\" (click)=\"provider.invoke()\">{{provider.name}}</button>\n </li>\n }\n </ul>\n </ng-template>\n </div>\n <div wmConfirmDialog name=\"_app-confirm-dialog\" title.bind=\"title\" message.bind=\"message\" oktext.bind=\"oktext\"\n canceltext.bind=\"canceltext\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n @if (!isApplicationType) {\n <div wmConfirmDialog name=\"PrefabConfirmDialog\" title.bind=\"title\" message.bind=\"text\" oktext.bind=\"okButtonText\"\n canceltext.bind=\"cancelButtonText\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n }\n @if (!isApplicationType) {\n <div wmAlertDialog name=\"PrefabAlertDialog\" title.bind=\"title\" message.bind=\"text\" oktext.bind=\"okButtonText\"\n canceltext.bind=\"cancelButtonText\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n }\n <div wmAppExt></div>\n <i id=\"wm-mobile-display\"></i>\n}\n<!--Dummy container to create the component dynamically-->\n<ng-container #dynamicComponent></ng-container>\n", dependencies: [{ kind: "ngmodule", type: i5.CommonModule }, { kind: "directive", type: i1$1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: alertDialog.AlertDialogComponent, selector: "div[wmAlertDialog]" }, { kind: "component", type: confirmDialog.ConfirmDialogComponent, selector: "div[wmConfirmDialog]" }, { kind: "component", type: designDialog.DialogComponent, selector: "div[wmDialog]" }, { kind: "component", type: AppSpinnerComponent, selector: "app-spinner", inputs: ["show", "spinnermessages", "classname", "arialabel"] }, { kind: "directive", type: base.ContainerDirective, selector: "[wmContainer]" }, { kind: "directive", type: base.PartialParamHandlerDirective, selector: "[partialContainer]" }, { kind: "directive", type: base.PartialContainerDirective, selector: "[partialContainer]" }], encapsulation: i0__namespace.ViewEncapsulation.None }); }
|
|
@@ -4577,6 +4881,14 @@
|
|
|
4577
4881
|
}
|
|
4578
4882
|
});
|
|
4579
4883
|
}
|
|
4884
|
+
ngOnDestroy() {
|
|
4885
|
+
// MEMORY LEAK FIX: Clear ViewContainerRef to destroy dynamically created components
|
|
4886
|
+
if (this.vcRef) {
|
|
4887
|
+
this.vcRef.clear();
|
|
4888
|
+
}
|
|
4889
|
+
// MEMORY LEAK FIX: Clear ElementRef reference
|
|
4890
|
+
this.elRef = null;
|
|
4891
|
+
}
|
|
4580
4892
|
static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: PrefabDirective, deps: [{ token: base.WidgetRef, self: true }, { token: i0__namespace.ViewContainerRef }, { token: i0__namespace.ElementRef }, { token: PrefabManagerService }, { token: i0__namespace.ComponentFactoryResolver }, { token: i0__namespace.Injector }, { token: ComponentRefProvider }], target: i0__namespace.ɵɵFactoryTarget.Directive }); }
|
|
4581
4893
|
static { this.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: PrefabDirective, isStandalone: true, selector: "[wmPrefab][prefabname]", ngImport: i0__namespace }); }
|
|
4582
4894
|
}
|
|
@@ -4597,7 +4909,8 @@
|
|
|
4597
4909
|
class PrefabPreviewComponent {
|
|
4598
4910
|
constructor(prefabManager) {
|
|
4599
4911
|
this.prefabManager = prefabManager;
|
|
4600
|
-
|
|
4912
|
+
// MEMORY LEAK FIX: Store bound function reference for cleanup
|
|
4913
|
+
this.windowMessageListener = (e) => {
|
|
4601
4914
|
const context = e.data && e.data.context;
|
|
4602
4915
|
if (context !== PREFAB) {
|
|
4603
4916
|
return;
|
|
@@ -4616,7 +4929,8 @@
|
|
|
4616
4929
|
else if (action === 'invoke-script') {
|
|
4617
4930
|
this.invokeScript(payload);
|
|
4618
4931
|
}
|
|
4619
|
-
}
|
|
4932
|
+
};
|
|
4933
|
+
window.addEventListener('message', this.windowMessageListener);
|
|
4620
4934
|
}
|
|
4621
4935
|
postMessage(action, payload) {
|
|
4622
4936
|
const data = {
|
|
@@ -4633,7 +4947,8 @@
|
|
|
4633
4947
|
}
|
|
4634
4948
|
init() {
|
|
4635
4949
|
this.previewMode = true;
|
|
4636
|
-
|
|
4950
|
+
// MEMORY LEAK FIX: Store subscription reference
|
|
4951
|
+
this.readyStateSubscription = this.prefabInstance.readyState.subscribe(() => { }, () => { }, () => {
|
|
4637
4952
|
this.prefabManager.getConfig('__self__')
|
|
4638
4953
|
.then(config => {
|
|
4639
4954
|
this.config = config;
|
|
@@ -4667,6 +4982,22 @@
|
|
|
4667
4982
|
this.setupEventListeners();
|
|
4668
4983
|
this.postMessage('init');
|
|
4669
4984
|
}
|
|
4985
|
+
ngOnDestroy() {
|
|
4986
|
+
// MEMORY LEAK FIX: Remove window message listener
|
|
4987
|
+
if (this.windowMessageListener) {
|
|
4988
|
+
window.removeEventListener('message', this.windowMessageListener);
|
|
4989
|
+
this.windowMessageListener = null;
|
|
4990
|
+
}
|
|
4991
|
+
// MEMORY LEAK FIX: Unsubscribe from readyState
|
|
4992
|
+
if (this.readyStateSubscription) {
|
|
4993
|
+
this.readyStateSubscription.unsubscribe();
|
|
4994
|
+
this.readyStateSubscription = null;
|
|
4995
|
+
}
|
|
4996
|
+
// MEMORY LEAK FIX: Clear ViewChild reference
|
|
4997
|
+
this.prefabInstance = null;
|
|
4998
|
+
// MEMORY LEAK FIX: Clear config
|
|
4999
|
+
this.config = null;
|
|
5000
|
+
}
|
|
4670
5001
|
static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: PrefabPreviewComponent, deps: [{ token: PrefabManagerService }], target: i0__namespace.ɵɵFactoryTarget.Component }); }
|
|
4671
5002
|
static { this.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PrefabPreviewComponent, isStandalone: true, selector: "wm-prefab-preview", viewQueries: [{ propertyName: "prefabInstance", first: true, predicate: prefab.PrefabDirective, descendants: true, static: true }], ngImport: i0__namespace, template: `
|
|
4672
5003
|
<div class="prefab-preview row">
|
|
@@ -4747,6 +5078,7 @@
|
|
|
4747
5078
|
selector: selector of the component
|
|
4748
5079
|
transpile: flag for transpiling HTML. By default it is true
|
|
4749
5080
|
nocache: flag for render it from cache or not. By default it is true
|
|
5081
|
+
* @returns ComponentRef - the created component reference for cleanup
|
|
4750
5082
|
*/
|
|
4751
5083
|
async addComponent(target, markup, context = {}, options = {}) {
|
|
4752
5084
|
options.transpile = i1.isDefined(options.transpile) ? options.transpile : true;
|
|
@@ -4756,6 +5088,8 @@
|
|
|
4756
5088
|
const component = this.app.dynamicComponentContainerRef.createComponent(componentFactoryRef, 0, lodashEs.get(options, 'inj'));
|
|
4757
5089
|
i1.extendProto(component.instance, context);
|
|
4758
5090
|
target.appendChild(component.location.nativeElement);
|
|
5091
|
+
// MEMORY LEAK FIX: Return component reference so caller can destroy it
|
|
5092
|
+
return component;
|
|
4759
5093
|
}
|
|
4760
5094
|
static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: DynamicComponentRefProviderService, deps: [{ token: i1__namespace.App }, { token: AppManagerService }, { token: i0__namespace.Compiler }], target: i0__namespace.ɵɵFactoryTarget.Injectable }); }
|
|
4761
5095
|
static { this.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: DynamicComponentRefProviderService }); }
|
|
@@ -24,6 +24,10 @@ export declare class AppComponent implements DoCheck, AfterViewInit, OnDestroy {
|
|
|
24
24
|
enableSkipToMainContent: boolean;
|
|
25
25
|
private retryCount;
|
|
26
26
|
private navigationEndSubscription;
|
|
27
|
+
private oAuthProvidersSubscription;
|
|
28
|
+
private spinnerMessageSubscription;
|
|
29
|
+
private routerEventsSubscription;
|
|
30
|
+
private appManagerSubscriptions;
|
|
27
31
|
appLocale: any;
|
|
28
32
|
routerOutlet: RouterOutlet;
|
|
29
33
|
dynamicComponentContainerRef: ViewContainerRef;
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { AfterViewInit } from '@angular/core';
|
|
1
|
+
import { AfterViewInit, OnDestroy } from '@angular/core';
|
|
2
2
|
import { PrefabManagerService } from '../services/prefab-manager.service';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class PrefabPreviewComponent implements AfterViewInit {
|
|
4
|
+
export declare class PrefabPreviewComponent implements AfterViewInit, OnDestroy {
|
|
5
5
|
private prefabManager;
|
|
6
6
|
private config;
|
|
7
7
|
private previewMode;
|
|
8
8
|
prefabInstance: any;
|
|
9
|
+
private windowMessageListener;
|
|
10
|
+
private readyStateSubscription;
|
|
9
11
|
constructor(prefabManager: PrefabManagerService);
|
|
10
12
|
postMessage(action: any, payload?: any): void;
|
|
11
13
|
setupEventListeners(): void;
|
|
@@ -15,6 +17,7 @@ export declare class PrefabPreviewComponent implements AfterViewInit {
|
|
|
15
17
|
getOutboundProps(): void;
|
|
16
18
|
invokeScript(payload: any): void;
|
|
17
19
|
ngAfterViewInit(): void;
|
|
20
|
+
ngOnDestroy(): void;
|
|
18
21
|
static ɵfac: i0.ɵɵFactoryDeclaration<PrefabPreviewComponent, never>;
|
|
19
22
|
static ɵcmp: i0.ɵɵComponentDeclaration<PrefabPreviewComponent, "wm-prefab-preview", never, {}, {}, never, never, true, never>;
|
|
20
23
|
}
|