@wavemaker/app-ng-runtime 11.14.1-rc.6310 → 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 +331 -36
- 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 +10 -10
- 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 +327 -34
- package/components/base/fesm2022/index.mjs.map +1 -1
- package/components/base/pipes/custom-pipes.d.ts +5 -5
- 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 +42 -14
- package/components/basic/search/esm2022/scrollable.directive.mjs +13 -4
- package/components/basic/search/esm2022/search.component.mjs +31 -12
- package/components/basic/search/fesm2022/index.mjs +42 -14
- package/components/basic/search/fesm2022/index.mjs.map +1 -1
- package/components/basic/search/scrollable.directive.d.ts +5 -3
- 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 +213 -19
- package/components/data/list/esm2022/list-item.directive.mjs +95 -11
- package/components/data/list/esm2022/list.component.mjs +120 -10
- package/components/data/list/fesm2022/index.mjs +213 -19
- 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 +7 -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 +345 -15
- 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 +193 -12
- package/components/data/table/fesm2022/index.mjs +345 -15
- 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 +6 -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 +30 -6
- 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/esm2022/router-outlet.directive.mjs +13 -6
- package/components/page/default/fesm2022/index.mjs +30 -6
- 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/default/router-outlet.directive.d.ts +5 -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 +367 -32
- 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 +40 -12
- 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 +368 -33
- package/runtime/base/fesm2022/index.mjs.map +1 -1
- package/runtime/base/runtime-base.module.d.ts +2 -2
- 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/@wavemaker/nvd3/build/nv.d3.min.js +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
|
@@ -1450,11 +1450,11 @@
|
|
|
1450
1450
|
}
|
|
1451
1451
|
};
|
|
1452
1452
|
|
|
1453
|
-
const $RAF
|
|
1453
|
+
const $RAF = window.requestAnimationFrame;
|
|
1454
1454
|
const $RAFQueue = [];
|
|
1455
1455
|
const invokeLater = fn => {
|
|
1456
1456
|
if (!$RAFQueue.length) {
|
|
1457
|
-
$RAF
|
|
1457
|
+
$RAF(() => {
|
|
1458
1458
|
$RAFQueue.forEach(f => f());
|
|
1459
1459
|
$RAFQueue.length = 0;
|
|
1460
1460
|
});
|
|
@@ -1525,7 +1525,23 @@
|
|
|
1525
1525
|
sync ? task() : invokeLater(task);
|
|
1526
1526
|
};
|
|
1527
1527
|
const setAttr = (node, attrName, val, sync) => {
|
|
1528
|
-
const task = () =>
|
|
1528
|
+
const task = () => {
|
|
1529
|
+
if (node instanceof Element) {
|
|
1530
|
+
// Handle tabindex specifically - ensure it's a valid string representation
|
|
1531
|
+
if (attrName === 'tabindex') {
|
|
1532
|
+
// Convert to string, handling 0, null, undefined, and NaN
|
|
1533
|
+
if (val === null || val === undefined || (typeof val === 'number' && isNaN(val))) {
|
|
1534
|
+
node.removeAttribute(attrName);
|
|
1535
|
+
}
|
|
1536
|
+
else {
|
|
1537
|
+
node.setAttribute(attrName, String(val));
|
|
1538
|
+
}
|
|
1539
|
+
}
|
|
1540
|
+
else {
|
|
1541
|
+
node.setAttribute(attrName, val);
|
|
1542
|
+
}
|
|
1543
|
+
}
|
|
1544
|
+
};
|
|
1529
1545
|
sync ? task() : invokeLater(task);
|
|
1530
1546
|
};
|
|
1531
1547
|
const setHtml = (node, html, sync) => {
|
|
@@ -2191,14 +2207,25 @@
|
|
|
2191
2207
|
return fnExecutor(expr, ExpressionType.Action);
|
|
2192
2208
|
};
|
|
2193
2209
|
|
|
2210
|
+
// Constants
|
|
2211
|
+
const WIDGET_ID_REGEX = /^(widget-[^_]+)/;
|
|
2212
|
+
const WIDGET_PROPERTY_REGEX = /^widget-[^_]+_(.+)$/;
|
|
2213
|
+
const ARRAY_INDEX_PLACEHOLDER = '[$i]';
|
|
2214
|
+
const ARRAY_INDEX_ZERO = '[0]';
|
|
2215
|
+
const DEBOUNCE_WAIT = 100;
|
|
2216
|
+
const MAX_WATCH_CYCLES = 5;
|
|
2194
2217
|
const registry = new Map();
|
|
2195
2218
|
const watchIdGenerator = new IDGenerator('watch-id-');
|
|
2196
|
-
const FIRST_TIME_WATCH = {};
|
|
2197
|
-
|
|
2198
|
-
const isFirstTimeChange = v => v === FIRST_TIME_WATCH;
|
|
2219
|
+
const FIRST_TIME_WATCH = Object.freeze({});
|
|
2220
|
+
// State
|
|
2199
2221
|
let muted = false;
|
|
2222
|
+
let changedByWatch = false;
|
|
2223
|
+
let skipWatchers = false;
|
|
2224
|
+
let ngZone;
|
|
2200
2225
|
let appRef;
|
|
2201
|
-
|
|
2226
|
+
// Utility functions
|
|
2227
|
+
const isFirstTimeChange = (v) => v === FIRST_TIME_WATCH;
|
|
2228
|
+
const debounce = (fn, wait = DEBOUNCE_WAIT) => {
|
|
2202
2229
|
let timeout;
|
|
2203
2230
|
return (...args) => {
|
|
2204
2231
|
window['__zone_symbol__clearTimeout'](timeout);
|
|
@@ -2212,115 +2239,345 @@
|
|
|
2212
2239
|
muted = false;
|
|
2213
2240
|
triggerWatchers();
|
|
2214
2241
|
};
|
|
2242
|
+
/**
|
|
2243
|
+
* Extracts widget ID from identifier (e.g., "widget-id23_eventsource" -> "widget-id23")
|
|
2244
|
+
*/
|
|
2245
|
+
const getWidgetId = (identifier) => {
|
|
2246
|
+
if (!identifier || typeof identifier !== 'string') {
|
|
2247
|
+
return null;
|
|
2248
|
+
}
|
|
2249
|
+
const match = identifier.match(WIDGET_ID_REGEX);
|
|
2250
|
+
return match ? match[1] : null;
|
|
2251
|
+
};
|
|
2252
|
+
/**
|
|
2253
|
+
* Extracts property name from identifier (e.g., "widget-id23_eventsource" -> "eventsource")
|
|
2254
|
+
*/
|
|
2255
|
+
const getPropertyName = (identifier) => {
|
|
2256
|
+
if (!identifier || typeof identifier !== 'string') {
|
|
2257
|
+
return identifier;
|
|
2258
|
+
}
|
|
2259
|
+
const match = identifier.match(WIDGET_PROPERTY_REGEX);
|
|
2260
|
+
return match ? match[1] : identifier;
|
|
2261
|
+
};
|
|
2262
|
+
/**
|
|
2263
|
+
* Array consumer wrapper for array-based expressions
|
|
2264
|
+
*/
|
|
2215
2265
|
const arrayConsumer = (listenerFn, restExpr, newVal, oldVal) => {
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
formattedData = data.map(function (datum) {
|
|
2219
|
-
return findValueOf(datum, restExpr);
|
|
2220
|
-
});
|
|
2221
|
-
// If resulting structure is an array of array, flatten it
|
|
2222
|
-
if (lodashEs.isArray(formattedData[0])) {
|
|
2223
|
-
formattedData = lodashEs.flatten(formattedData);
|
|
2224
|
-
}
|
|
2225
|
-
listenerFn(formattedData, oldVal);
|
|
2266
|
+
if (!lodashEs.isArray(newVal)) {
|
|
2267
|
+
return;
|
|
2226
2268
|
}
|
|
2269
|
+
let formattedData = newVal.map(datum => findValueOf(datum, restExpr));
|
|
2270
|
+
// Flatten if result is array of arrays
|
|
2271
|
+
if (lodashEs.isArray(formattedData[0])) {
|
|
2272
|
+
formattedData = lodashEs.flatten(formattedData);
|
|
2273
|
+
}
|
|
2274
|
+
listenerFn(formattedData, oldVal);
|
|
2227
2275
|
};
|
|
2228
|
-
|
|
2229
|
-
|
|
2230
|
-
|
|
2231
|
-
|
|
2276
|
+
/**
|
|
2277
|
+
* Updates watch info for array expressions
|
|
2278
|
+
*/
|
|
2279
|
+
const getUpdatedWatchInfo = (expr, acceptsArray, listener) => {
|
|
2280
|
+
const regex = /\[\$i\]/g;
|
|
2232
2281
|
if (!acceptsArray) {
|
|
2233
2282
|
return {
|
|
2234
|
-
|
|
2235
|
-
|
|
2283
|
+
expr: expr.replace(regex, ARRAY_INDEX_ZERO),
|
|
2284
|
+
listener
|
|
2236
2285
|
};
|
|
2237
2286
|
}
|
|
2238
|
-
|
|
2239
|
-
|
|
2240
|
-
|
|
2241
|
-
|
|
2242
|
-
|
|
2243
|
-
|
|
2287
|
+
const lastIndex = expr.lastIndexOf(ARRAY_INDEX_PLACEHOLDER);
|
|
2288
|
+
const baseExpr = expr.substring(0, lastIndex).replace(ARRAY_INDEX_PLACEHOLDER, ARRAY_INDEX_ZERO);
|
|
2289
|
+
const restExpr = expr.substring(lastIndex + 5);
|
|
2290
|
+
const arrayConsumerFn = restExpr
|
|
2291
|
+
? arrayConsumer.bind(undefined, listener, restExpr)
|
|
2292
|
+
: listener;
|
|
2244
2293
|
return {
|
|
2245
|
-
|
|
2246
|
-
|
|
2294
|
+
expr: baseExpr,
|
|
2295
|
+
listener: arrayConsumerFn
|
|
2247
2296
|
};
|
|
2248
2297
|
};
|
|
2298
|
+
/**
|
|
2299
|
+
* Determines if an expression is static (doesn't need to be watched)
|
|
2300
|
+
*/
|
|
2301
|
+
const STATIC_EXPRESSION_NAMES = [
|
|
2302
|
+
"row.getProperty('investment')",
|
|
2303
|
+
"row.getProperty('factsheetLink')",
|
|
2304
|
+
"row.getProperty('isRebalanceEligible')"
|
|
2305
|
+
];
|
|
2306
|
+
const isStaticExpression = (expr) => {
|
|
2307
|
+
if (typeof expr !== 'string') {
|
|
2308
|
+
return false;
|
|
2309
|
+
}
|
|
2310
|
+
const trimmedExpr = expr.trim();
|
|
2311
|
+
// Expressions that always evaluate to localization strings
|
|
2312
|
+
// if (trimmedExpr.includes('appLocale')) {
|
|
2313
|
+
// return true;
|
|
2314
|
+
// }
|
|
2315
|
+
// Hard-coded static expression names
|
|
2316
|
+
if (STATIC_EXPRESSION_NAMES.includes(trimmedExpr)) {
|
|
2317
|
+
return true;
|
|
2318
|
+
}
|
|
2319
|
+
return false;
|
|
2320
|
+
};
|
|
2321
|
+
/**
|
|
2322
|
+
* Gets the scope type from the scope object
|
|
2323
|
+
*/
|
|
2324
|
+
const getScopeType = ($scope) => {
|
|
2325
|
+
if (!$scope) {
|
|
2326
|
+
return null;
|
|
2327
|
+
}
|
|
2328
|
+
if ($scope.pageName)
|
|
2329
|
+
return 'Page';
|
|
2330
|
+
if ($scope.prefabName)
|
|
2331
|
+
return 'Prefab';
|
|
2332
|
+
if ($scope.partialName)
|
|
2333
|
+
return 'Partial';
|
|
2334
|
+
// Check for App scope
|
|
2335
|
+
if ($scope.Variables !== undefined &&
|
|
2336
|
+
$scope.Actions !== undefined &&
|
|
2337
|
+
!$scope.pageName &&
|
|
2338
|
+
!$scope.prefabName &&
|
|
2339
|
+
!$scope.partialName) {
|
|
2340
|
+
return 'App';
|
|
2341
|
+
}
|
|
2342
|
+
if ($scope.constructor?.name === 'AppRef') {
|
|
2343
|
+
return 'App';
|
|
2344
|
+
}
|
|
2345
|
+
return null;
|
|
2346
|
+
};
|
|
2347
|
+
/**
|
|
2348
|
+
* Gets scope name based on scope type
|
|
2349
|
+
*/
|
|
2350
|
+
const getScopeName = ($scope, scopeType) => {
|
|
2351
|
+
if (!scopeType || !$scope) {
|
|
2352
|
+
return null;
|
|
2353
|
+
}
|
|
2354
|
+
switch (scopeType) {
|
|
2355
|
+
case 'Prefab': return $scope.prefabName || null;
|
|
2356
|
+
case 'Partial': return $scope.partialName || null;
|
|
2357
|
+
case 'Page': return $scope.pageName || null;
|
|
2358
|
+
default: return null;
|
|
2359
|
+
}
|
|
2360
|
+
};
|
|
2361
|
+
/**
|
|
2362
|
+
* Main watch function
|
|
2363
|
+
*/
|
|
2249
2364
|
const $watch = (expr, $scope, $locals, listener, identifier = watchIdGenerator.nextUid(), doNotClone = false, config = {}, isMuted) => {
|
|
2250
|
-
|
|
2251
|
-
|
|
2365
|
+
// Handle array expressions
|
|
2366
|
+
if (expr.includes(ARRAY_INDEX_PLACEHOLDER)) {
|
|
2367
|
+
const watchInfo = getUpdatedWatchInfo(expr, config.arrayType || config.isList || false, listener);
|
|
2252
2368
|
expr = watchInfo.expr;
|
|
2253
2369
|
listener = watchInfo.listener;
|
|
2254
2370
|
}
|
|
2371
|
+
// Handle static expressions
|
|
2372
|
+
if (isStaticExpression(expr)) {
|
|
2373
|
+
try {
|
|
2374
|
+
const fn = $parseExpr(expr);
|
|
2375
|
+
const staticValue = fn($scope, $locals);
|
|
2376
|
+
listener(staticValue, FIRST_TIME_WATCH);
|
|
2377
|
+
}
|
|
2378
|
+
catch (e) {
|
|
2379
|
+
console.warn(`Error evaluating static expression '${expr}':`, e);
|
|
2380
|
+
listener(undefined, FIRST_TIME_WATCH);
|
|
2381
|
+
}
|
|
2382
|
+
return () => { }; // No-op unsubscribe
|
|
2383
|
+
}
|
|
2255
2384
|
const fn = $parseExpr(expr);
|
|
2256
|
-
|
|
2257
|
-
|
|
2385
|
+
const scopeType = getScopeType($scope);
|
|
2386
|
+
const scopeName = getScopeName($scope, scopeType);
|
|
2387
|
+
const watchInfo = {
|
|
2388
|
+
fn: fn.bind(null, $scope, $locals),
|
|
2258
2389
|
listener,
|
|
2259
2390
|
expr,
|
|
2260
2391
|
last: FIRST_TIME_WATCH,
|
|
2261
2392
|
doNotClone,
|
|
2262
|
-
isMuted
|
|
2263
|
-
|
|
2393
|
+
isMuted,
|
|
2394
|
+
scopeType,
|
|
2395
|
+
scopeName
|
|
2396
|
+
};
|
|
2397
|
+
// Store in registry
|
|
2398
|
+
const widgetId = getWidgetId(identifier);
|
|
2399
|
+
if (widgetId) {
|
|
2400
|
+
const propertyName = getPropertyName(identifier);
|
|
2401
|
+
if (!registry.has(widgetId)) {
|
|
2402
|
+
registry.set(widgetId, {});
|
|
2403
|
+
}
|
|
2404
|
+
const widgetGroup = registry.get(widgetId);
|
|
2405
|
+
widgetGroup[propertyName] = watchInfo;
|
|
2406
|
+
}
|
|
2407
|
+
else {
|
|
2408
|
+
registry.set(identifier, watchInfo);
|
|
2409
|
+
}
|
|
2264
2410
|
return () => $unwatch(identifier);
|
|
2265
2411
|
};
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2412
|
+
/**
|
|
2413
|
+
* Unwatches a single identifier
|
|
2414
|
+
*/
|
|
2415
|
+
const $unwatch = (identifier) => {
|
|
2416
|
+
const widgetId = getWidgetId(identifier);
|
|
2417
|
+
if (widgetId) {
|
|
2418
|
+
const propertyName = getPropertyName(identifier);
|
|
2419
|
+
const widgetGroup = registry.get(widgetId);
|
|
2420
|
+
if (widgetGroup && typeof widgetGroup === 'object' && !widgetGroup.fn) {
|
|
2421
|
+
const watchInfo = widgetGroup[propertyName];
|
|
2422
|
+
if (watchInfo) {
|
|
2423
|
+
delete widgetGroup[propertyName];
|
|
2424
|
+
// Clean up empty widget groups
|
|
2425
|
+
if (Object.keys(widgetGroup).length === 0) {
|
|
2426
|
+
registry.delete(widgetId);
|
|
2427
|
+
}
|
|
2428
|
+
return true;
|
|
2429
|
+
}
|
|
2430
|
+
}
|
|
2431
|
+
}
|
|
2432
|
+
// Fallback to direct lookup
|
|
2433
|
+
if (registry.has(identifier)) {
|
|
2434
|
+
registry.delete(identifier);
|
|
2435
|
+
return true;
|
|
2436
|
+
}
|
|
2437
|
+
return false;
|
|
2438
|
+
};
|
|
2439
|
+
/**
|
|
2440
|
+
* Unwatches all watchers for a specific widget ID
|
|
2441
|
+
*/
|
|
2442
|
+
const $unwatchAll = (widgetId) => {
|
|
2443
|
+
if (!widgetId || typeof widgetId !== 'string') {
|
|
2444
|
+
return 0;
|
|
2445
|
+
}
|
|
2446
|
+
const widgetGroup = registry.get(widgetId);
|
|
2447
|
+
if (widgetGroup && typeof widgetGroup === 'object' && !widgetGroup.fn) {
|
|
2448
|
+
const count = Object.keys(widgetGroup).length;
|
|
2449
|
+
registry.delete(widgetId);
|
|
2450
|
+
return count;
|
|
2451
|
+
}
|
|
2452
|
+
// Fallback: find all identifiers starting with this widget ID
|
|
2453
|
+
let removedCount = 0;
|
|
2454
|
+
const identifiersToRemove = [];
|
|
2455
|
+
registry.forEach((_, key) => {
|
|
2456
|
+
if (key.startsWith(widgetId + '_')) {
|
|
2457
|
+
identifiersToRemove.push(key);
|
|
2458
|
+
}
|
|
2459
|
+
});
|
|
2460
|
+
identifiersToRemove.forEach(identifier => {
|
|
2461
|
+
if ($unwatch(identifier)) {
|
|
2462
|
+
removedCount++;
|
|
2463
|
+
}
|
|
2464
|
+
});
|
|
2465
|
+
return removedCount;
|
|
2466
|
+
};
|
|
2467
|
+
/**
|
|
2468
|
+
* Unwatches all watchers for a specific scope (Page, Prefab, Partial, or App)
|
|
2469
|
+
* Now works directly with the main registry instead of separate scoped registries
|
|
2470
|
+
*/
|
|
2471
|
+
const $unwatchAllByScope = (scopeType, scopeName) => {
|
|
2472
|
+
if (!scopeType) {
|
|
2473
|
+
return 0;
|
|
2474
|
+
}
|
|
2475
|
+
let removedCount = 0;
|
|
2476
|
+
const identifiersToRemove = [];
|
|
2477
|
+
registry.forEach((value, key) => {
|
|
2478
|
+
// Handle grouped structure (widget groups)
|
|
2479
|
+
if (value && typeof value === 'object' && !value.fn) {
|
|
2480
|
+
Object.entries(value).forEach(([propertyName, watchInfo]) => {
|
|
2481
|
+
if (watchInfo?.scopeType === scopeType &&
|
|
2482
|
+
(!scopeName || watchInfo.scopeName === scopeName)) {
|
|
2483
|
+
identifiersToRemove.push(`${key}_${propertyName}`);
|
|
2484
|
+
}
|
|
2485
|
+
});
|
|
2486
|
+
}
|
|
2487
|
+
else {
|
|
2488
|
+
// Direct watchInfo
|
|
2489
|
+
const watchInfo = value;
|
|
2490
|
+
if (watchInfo?.scopeType === scopeType &&
|
|
2491
|
+
(!scopeName || watchInfo.scopeName === scopeName)) {
|
|
2492
|
+
identifiersToRemove.push(key);
|
|
2493
|
+
}
|
|
2494
|
+
}
|
|
2495
|
+
});
|
|
2496
|
+
// Unwatch all collected identifiers
|
|
2497
|
+
identifiersToRemove.forEach(identifier => {
|
|
2498
|
+
if ($unwatch(identifier)) {
|
|
2499
|
+
removedCount++;
|
|
2500
|
+
}
|
|
2501
|
+
});
|
|
2502
|
+
return removedCount;
|
|
2503
|
+
};
|
|
2504
|
+
/**
|
|
2505
|
+
* Processes a single watch info during trigger cycle
|
|
2506
|
+
*/
|
|
2507
|
+
const processWatchInfo = (watchInfo) => {
|
|
2508
|
+
if (!watchInfo?.fn || (watchInfo.isMuted?.() ?? false)) {
|
|
2509
|
+
return false;
|
|
2510
|
+
}
|
|
2511
|
+
let newValue;
|
|
2512
|
+
try {
|
|
2513
|
+
newValue = watchInfo.fn();
|
|
2514
|
+
}
|
|
2515
|
+
catch (e) {
|
|
2516
|
+
console.warn(`Error executing expression: '${watchInfo.expr}'`, e);
|
|
2517
|
+
return false;
|
|
2518
|
+
}
|
|
2519
|
+
if (lodashEs.isEqual(newValue, watchInfo.last)) {
|
|
2520
|
+
return false;
|
|
2521
|
+
}
|
|
2522
|
+
// Change detected
|
|
2523
|
+
changedByWatch = true;
|
|
2524
|
+
watchInfo.last = lodashEs.isObject(newValue) && !watchInfo.doNotClone
|
|
2525
|
+
? lodashEs.clone(newValue)
|
|
2526
|
+
: newValue;
|
|
2527
|
+
watchInfo.listener(newValue, watchInfo.last === newValue ? FIRST_TIME_WATCH : watchInfo.last);
|
|
2528
|
+
changedByWatch = false;
|
|
2529
|
+
return true;
|
|
2530
|
+
};
|
|
2531
|
+
/**
|
|
2532
|
+
* Triggers all watchers
|
|
2533
|
+
*/
|
|
2534
|
+
const triggerWatchers = (ignoreMuted = false) => {
|
|
2271
2535
|
if (muted && !ignoreMuted) {
|
|
2272
2536
|
return;
|
|
2273
2537
|
}
|
|
2274
|
-
const limit = 5;
|
|
2275
2538
|
let pass = 1;
|
|
2276
2539
|
let changeDetected;
|
|
2277
2540
|
do {
|
|
2278
2541
|
changeDetected = false;
|
|
2279
|
-
registry.forEach(
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
|
|
2283
|
-
|
|
2284
|
-
|
|
2285
|
-
|
|
2286
|
-
|
|
2287
|
-
try {
|
|
2288
|
-
nv = fn();
|
|
2289
|
-
}
|
|
2290
|
-
catch (e) {
|
|
2291
|
-
console.warn(`error in executing expression: '${watchInfo.expr}'`);
|
|
2542
|
+
registry.forEach((value) => {
|
|
2543
|
+
// Handle grouped structure
|
|
2544
|
+
if (value && typeof value === 'object' && !value.fn) {
|
|
2545
|
+
Object.values(value).forEach((watchInfo) => {
|
|
2546
|
+
if (processWatchInfo(watchInfo)) {
|
|
2547
|
+
changeDetected = true;
|
|
2548
|
+
}
|
|
2549
|
+
});
|
|
2292
2550
|
}
|
|
2293
|
-
|
|
2294
|
-
|
|
2295
|
-
|
|
2296
|
-
|
|
2297
|
-
// @ts-ignore
|
|
2298
|
-
if (lodashEs.isObject(nv) && !watchInfo.doNotClone && nv.__cloneable__ !== false) {
|
|
2299
|
-
watchInfo.last = lodashEs.clone(nv);
|
|
2551
|
+
else {
|
|
2552
|
+
// Direct watchInfo
|
|
2553
|
+
if (processWatchInfo(value)) {
|
|
2554
|
+
changeDetected = true;
|
|
2300
2555
|
}
|
|
2301
|
-
listener(nv, ov);
|
|
2302
|
-
resetChangeFromWatch();
|
|
2303
2556
|
}
|
|
2304
2557
|
});
|
|
2305
2558
|
pass++;
|
|
2306
|
-
} while (changeDetected && pass <
|
|
2307
|
-
if (changeDetected && pass ===
|
|
2308
|
-
console.warn(`
|
|
2559
|
+
} while (changeDetected && pass < MAX_WATCH_CYCLES);
|
|
2560
|
+
if (changeDetected && pass === MAX_WATCH_CYCLES) {
|
|
2561
|
+
console.warn(`Watch cycles exceeded limit of ${MAX_WATCH_CYCLES}`);
|
|
2309
2562
|
}
|
|
2310
2563
|
};
|
|
2311
|
-
|
|
2312
|
-
const
|
|
2564
|
+
// Angular zone integration
|
|
2565
|
+
const setNgZone = (zone) => {
|
|
2566
|
+
ngZone = zone;
|
|
2567
|
+
};
|
|
2568
|
+
const setAppRef = (ref) => {
|
|
2313
2569
|
appRef = ref;
|
|
2314
2570
|
};
|
|
2315
2571
|
const isChangeFromWatch = () => changedByWatch;
|
|
2316
|
-
const resetChangeFromWatch = () =>
|
|
2317
|
-
|
|
2318
|
-
|
|
2572
|
+
const resetChangeFromWatch = () => {
|
|
2573
|
+
changedByWatch = false;
|
|
2574
|
+
};
|
|
2575
|
+
// Debounced trigger
|
|
2319
2576
|
const debouncedTriggerWatchers = debounce(() => {
|
|
2320
2577
|
skipWatchers = true;
|
|
2321
2578
|
ngZone.run(() => triggerWatchers());
|
|
2322
|
-
},
|
|
2323
|
-
const $invokeWatchers = (force, ignoreMuted) => {
|
|
2579
|
+
}, DEBOUNCE_WAIT);
|
|
2580
|
+
const $invokeWatchers = (force = false, ignoreMuted = false) => {
|
|
2324
2581
|
if (force) {
|
|
2325
2582
|
triggerWatchers(ignoreMuted);
|
|
2326
2583
|
}
|
|
@@ -2334,7 +2591,8 @@
|
|
|
2334
2591
|
};
|
|
2335
2592
|
const $appDigest = (() => {
|
|
2336
2593
|
let queued = false;
|
|
2337
|
-
|
|
2594
|
+
const $RAF = window.requestAnimationFrame;
|
|
2595
|
+
return (force = false) => {
|
|
2338
2596
|
if (!appRef) {
|
|
2339
2597
|
return;
|
|
2340
2598
|
}
|
|
@@ -2346,16 +2604,16 @@
|
|
|
2346
2604
|
if (queued) {
|
|
2347
2605
|
return;
|
|
2348
2606
|
}
|
|
2349
|
-
|
|
2350
|
-
|
|
2351
|
-
|
|
2352
|
-
|
|
2353
|
-
|
|
2354
|
-
});
|
|
2355
|
-
}
|
|
2607
|
+
queued = true;
|
|
2608
|
+
$RAF(() => {
|
|
2609
|
+
ngZone.run(() => appRef.tick());
|
|
2610
|
+
queued = false;
|
|
2611
|
+
});
|
|
2356
2612
|
}
|
|
2357
2613
|
};
|
|
2358
2614
|
})();
|
|
2615
|
+
// Export registry for debugging
|
|
2616
|
+
window.watchRegistry = registry;
|
|
2359
2617
|
|
|
2360
2618
|
exports.ComponentType = void 0;
|
|
2361
2619
|
(function (ComponentType) {
|
|
@@ -2452,6 +2710,7 @@
|
|
|
2452
2710
|
SUPPORTED_AUDIO_FORMAT: /\.(mp3|ogg|webm|wma|3gp|wav|m4a)$/i,
|
|
2453
2711
|
SUPPORTED_VIDEO_FORMAT: /\.(mp4|ogg|webm|wmv|mpeg|mpg|avi|mov)$/i,
|
|
2454
2712
|
VALID_WEB_URL: /^(http[s]?:\/\/)(www\.){0,1}[a-zA-Z0-9=:?\/\.\-]+(\.[a-zA-Z]{2,5}[\.]{0,1})?/,
|
|
2713
|
+
VALID_IMAGE_URL: /^(https?|blob|data|file|ftp):/i,
|
|
2455
2714
|
REPLACE_PATTERN: /\$\{([^\}]+)\}/g,
|
|
2456
2715
|
DATA_URL: /^\s*data:([a-z]+\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s]*)\s*$/i,
|
|
2457
2716
|
ISO_DATE_FORMAT: /(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2})(\.\d+)?([+-]\d{2}:?\d{2}|Z)$/
|
|
@@ -2674,6 +2933,9 @@
|
|
|
2674
2933
|
const isValidWebURL = (url) => {
|
|
2675
2934
|
return (REGEX.VALID_WEB_URL).test(url);
|
|
2676
2935
|
};
|
|
2936
|
+
const isValidImageUrl = (url) => {
|
|
2937
|
+
return (REGEX.VALID_IMAGE_URL).test(url?.trim());
|
|
2938
|
+
};
|
|
2677
2939
|
/*This function returns the url to the resource after checking the validity of url*/
|
|
2678
2940
|
const getResourceURL = (urlString) => {
|
|
2679
2941
|
return urlString;
|
|
@@ -3927,6 +4189,7 @@
|
|
|
3927
4189
|
isPageable: isPageable,
|
|
3928
4190
|
isSafari: isSafari,
|
|
3929
4191
|
isTablet: isTablet,
|
|
4192
|
+
isValidImageUrl: isValidImageUrl,
|
|
3930
4193
|
isValidWebURL: isValidWebURL,
|
|
3931
4194
|
isVideoFile: isVideoFile,
|
|
3932
4195
|
loadScript: loadScript,
|
|
@@ -4020,7 +4283,10 @@
|
|
|
4020
4283
|
return noop;
|
|
4021
4284
|
}
|
|
4022
4285
|
destroy() {
|
|
4023
|
-
this._subject.
|
|
4286
|
+
this._subject.next(null); // optional
|
|
4287
|
+
this._subject.complete(); // clears all observers
|
|
4288
|
+
this._isInitialized = false;
|
|
4289
|
+
this._eventsBeforeInit = [];
|
|
4024
4290
|
}
|
|
4025
4291
|
}
|
|
4026
4292
|
let MINIMUM_TAB_WIDTH = 768;
|
|
@@ -4035,9 +4301,11 @@
|
|
|
4035
4301
|
this.isTabletType = false;
|
|
4036
4302
|
this._eventNotifier = new EventNotifier(true);
|
|
4037
4303
|
this.setScreenType();
|
|
4038
|
-
|
|
4039
|
-
|
|
4040
|
-
|
|
4304
|
+
// MEMORY LEAK FIX: Store bound function reference for proper removal
|
|
4305
|
+
this.boundResizeFn = this.resizeFn.bind(this);
|
|
4306
|
+
window.addEventListener("resize" /* ViewportEvent.RESIZE */, this.boundResizeFn);
|
|
4307
|
+
this.mediaQuery = window.matchMedia('(orientation: portrait)');
|
|
4308
|
+
if (this.mediaQuery.matches) {
|
|
4041
4309
|
this.orientation.isPortrait = true;
|
|
4042
4310
|
}
|
|
4043
4311
|
else {
|
|
@@ -4045,8 +4313,10 @@
|
|
|
4045
4313
|
}
|
|
4046
4314
|
// Add a media query change listener
|
|
4047
4315
|
// addEventListener is not supported ios browser
|
|
4048
|
-
if (
|
|
4049
|
-
|
|
4316
|
+
if (this.mediaQuery.addEventListener) {
|
|
4317
|
+
// MEMORY LEAK FIX: Store bound function reference for proper removal
|
|
4318
|
+
this.boundOrientationChange = ($event) => this.orientationChange($event, !$event.matches);
|
|
4319
|
+
this.mediaQuery.addEventListener('change', this.boundOrientationChange);
|
|
4050
4320
|
}
|
|
4051
4321
|
}
|
|
4052
4322
|
update(selectedViewPort) {
|
|
@@ -4073,14 +4343,14 @@
|
|
|
4073
4343
|
return this._eventNotifier.subscribe(eventName, callback);
|
|
4074
4344
|
}
|
|
4075
4345
|
notify(eventName, ...data) {
|
|
4076
|
-
this._eventNotifier.notify
|
|
4346
|
+
this._eventNotifier.notify(eventName, ...data);
|
|
4077
4347
|
}
|
|
4078
4348
|
setScreenType() {
|
|
4079
4349
|
const $el = document.querySelector('.wm-app');
|
|
4080
4350
|
this.screenWidth = $el.clientWidth;
|
|
4081
4351
|
this.screenHeight = $el.clientHeight;
|
|
4082
|
-
this.screenWidth < this.screenHeight ? this.screenWidth : this.screenHeight;
|
|
4083
|
-
this.screenWidth > this.screenHeight ? this.screenWidth : this.screenHeight;
|
|
4352
|
+
// const minValue = this.screenWidth < this.screenHeight ? this.screenWidth : this.screenHeight;
|
|
4353
|
+
// const maxValue = this.screenWidth > this.screenHeight ? this.screenWidth : this.screenHeight;
|
|
4084
4354
|
this.isTabletType = false;
|
|
4085
4355
|
this.isMobileType = false;
|
|
4086
4356
|
if (lodashEs.get(this.selectedViewPort, 'deviceCategory')) {
|
|
@@ -4112,7 +4382,17 @@
|
|
|
4112
4382
|
}
|
|
4113
4383
|
ngOnDestroy() {
|
|
4114
4384
|
this._eventNotifier.destroy();
|
|
4115
|
-
|
|
4385
|
+
// MEMORY LEAK FIX: Remove resize event listener using stored bound function reference
|
|
4386
|
+
if (this.boundResizeFn) {
|
|
4387
|
+
window.removeEventListener('resize', this.boundResizeFn);
|
|
4388
|
+
this.boundResizeFn = null;
|
|
4389
|
+
}
|
|
4390
|
+
// MEMORY LEAK FIX: Remove media query orientation change listener
|
|
4391
|
+
if (this.mediaQuery && this.boundOrientationChange && this.mediaQuery.removeEventListener) {
|
|
4392
|
+
this.mediaQuery.removeEventListener('change', this.boundOrientationChange);
|
|
4393
|
+
this.boundOrientationChange = null;
|
|
4394
|
+
}
|
|
4395
|
+
this.mediaQuery = null;
|
|
4116
4396
|
}
|
|
4117
4397
|
static { this.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: Viewport, deps: [], target: i0__namespace.ɵɵFactoryTarget.Injectable }); }
|
|
4118
4398
|
static { this.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0__namespace, type: Viewport, providedIn: 'root' }); }
|
|
@@ -5081,13 +5361,15 @@
|
|
|
5081
5361
|
this.onEvict = onEvict;
|
|
5082
5362
|
this.cache = new Map();
|
|
5083
5363
|
this.evictQueue = [''];
|
|
5364
|
+
this.evictionIntervalId = null; // MEMORY LEAK FIX: Store interval ID for cleanup
|
|
5084
5365
|
this.evictQueue.shift();
|
|
5085
5366
|
if (this.maxAge > 0) {
|
|
5086
5367
|
if (this.maxAge <= 30) {
|
|
5087
5368
|
console.warn(`Cache age ${this.maxAge}s is very less. Keep it atleast 30s.`);
|
|
5088
5369
|
}
|
|
5089
5370
|
this.maxAge = this.maxAge * 1000;
|
|
5090
|
-
|
|
5371
|
+
// MEMORY LEAK FIX: Store interval ID for cleanup
|
|
5372
|
+
this.evictionIntervalId = window.setInterval(() => {
|
|
5091
5373
|
const max = Date.now() - this.maxAge;
|
|
5092
5374
|
const expiredData = this.evictQueue.filter(k => {
|
|
5093
5375
|
return this.cache.get(k).lastAccessedTime <= max;
|
|
@@ -5152,6 +5434,18 @@
|
|
|
5152
5434
|
clear() {
|
|
5153
5435
|
this.evict(this.evictQueue.length);
|
|
5154
5436
|
}
|
|
5437
|
+
/**
|
|
5438
|
+
* MEMORY LEAK FIX: Destroy the cache and clear the eviction interval
|
|
5439
|
+
* Call this method when the cache is no longer needed to prevent memory leaks
|
|
5440
|
+
*/
|
|
5441
|
+
destroy() {
|
|
5442
|
+
// CRITICAL FIX: Clear the eviction interval to prevent memory leaks
|
|
5443
|
+
if (this.evictionIntervalId !== null) {
|
|
5444
|
+
clearInterval(this.evictionIntervalId);
|
|
5445
|
+
this.evictionIntervalId = null;
|
|
5446
|
+
}
|
|
5447
|
+
this.clear();
|
|
5448
|
+
}
|
|
5155
5449
|
}
|
|
5156
5450
|
|
|
5157
5451
|
exports.$appDigest = $appDigest;
|
|
@@ -5159,6 +5453,8 @@
|
|
|
5159
5453
|
exports.$parseEvent = $parseEvent;
|
|
5160
5454
|
exports.$parseExpr = $parseExpr;
|
|
5161
5455
|
exports.$unwatch = $unwatch;
|
|
5456
|
+
exports.$unwatchAll = $unwatchAll;
|
|
5457
|
+
exports.$unwatchAllByScope = $unwatchAllByScope;
|
|
5162
5458
|
exports.$watch = $watch;
|
|
5163
5459
|
exports.AbstractDialogService = AbstractDialogService;
|
|
5164
5460
|
exports.AbstractHttpService = AbstractHttpService;
|
|
@@ -5282,6 +5578,7 @@
|
|
|
5282
5578
|
exports.isObject = isObject;
|
|
5283
5579
|
exports.isPageable = isPageable;
|
|
5284
5580
|
exports.isSafari = isSafari;
|
|
5581
|
+
exports.isValidImageUrl = isValidImageUrl;
|
|
5285
5582
|
exports.isValidWebURL = isValidWebURL;
|
|
5286
5583
|
exports.isVideoFile = isVideoFile;
|
|
5287
5584
|
exports.loadScript = loadScript;
|