@acorex/platform 19.4.15 → 20.0.0-next.0
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/auth/index.d.ts +300 -13
- package/common/index.d.ts +1478 -16
- package/core/index.d.ts +1303 -8
- package/domain/index.d.ts +79 -2
- package/fesm2022/acorex-platform-auth.mjs +25 -19
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/acorex-platform-common.mjs +113 -110
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +180 -59
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-domain.mjs +59 -18
- package/fesm2022/acorex-platform-domain.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +44 -40
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-components.mjs +412 -111
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +84 -87
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +153 -120
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-filters.mjs +3 -3
- package/fesm2022/acorex-platform-layout-filters.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-views.mjs +108 -210
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-native.mjs +7 -7
- package/fesm2022/acorex-platform-native.mjs.map +1 -1
- package/fesm2022/acorex-platform-runtime.mjs +422 -108
- package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default-create-entity-view.component-BxYe1IlE.mjs +22 -0
- package/fesm2022/acorex-platform-themes-default-create-entity-view.component-BxYe1IlE.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-DKihQPlU.mjs +112 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-DKihQPlU.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-BupuLA5U.mjs → acorex-platform-themes-default-entity-master-list-view.component-PKLs3XdV.mjs} +28 -23
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-PKLs3XdV.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-DwDxUQfZ.mjs +105 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-DwDxUQfZ.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-Dbf3kR4Z.mjs → acorex-platform-themes-default-entity-master-single-view.component-IcmkHgp5.mjs} +18 -13
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-IcmkHgp5.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-error-401.component-CAfQVBOI.mjs → acorex-platform-themes-default-error-401.component-8QfQ3hNo.mjs} +4 -4
- package/fesm2022/acorex-platform-themes-default-error-401.component-8QfQ3hNo.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-error-404.component-DQ4nWPip.mjs → acorex-platform-themes-default-error-404.component-D9npA9_W.mjs} +4 -4
- package/fesm2022/acorex-platform-themes-default-error-404.component-D9npA9_W.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-error-offline.component-BQpVnLzt.mjs +19 -0
- package/fesm2022/acorex-platform-themes-default-error-offline.component-BQpVnLzt.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +76 -54
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-shared-settings.provider-CXiRmniv.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-shared.mjs +26 -26
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-rFIoj-24.mjs → acorex-platform-widgets-button-widget-designer.component-BIZkWv8q.mjs} +7 -8
- package/fesm2022/acorex-platform-widgets-button-widget-designer.component-BIZkWv8q.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-checkbox-widget-column.component-Bq8dCQJb.mjs → acorex-platform-widgets-checkbox-widget-column.component-MjSzOXIJ.mjs} +7 -8
- package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-MjSzOXIJ.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-checkbox-widget-designer.component-Bld65JIi.mjs → acorex-platform-widgets-checkbox-widget-designer.component-5kuroU6r.mjs} +6 -7
- package/fesm2022/acorex-platform-widgets-checkbox-widget-designer.component-5kuroU6r.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-checkbox-widget-view.component-CAGwyk9s.mjs → acorex-platform-widgets-checkbox-widget-view.component-BgrIeNW0.mjs} +7 -8
- package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-BgrIeNW0.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-color-box-widget-designer.component-B6N5rPk5.mjs → acorex-platform-widgets-color-box-widget-designer.component-BTxAgvMQ.mjs} +7 -8
- package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-BTxAgvMQ.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-contact-widget-filter.component-Bg9CUMnD.mjs → acorex-platform-widgets-contact-widget-filter.component-DCUfKMJ6.mjs} +5 -6
- package/fesm2022/acorex-platform-widgets-contact-widget-filter.component-DCUfKMJ6.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-file-list-popup.component-TNxbcVav.mjs → acorex-platform-widgets-file-list-popup.component-yqqPJMg2.mjs} +7 -7
- package/fesm2022/acorex-platform-widgets-file-list-popup.component-yqqPJMg2.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-page-widget-designer.component-DuKrIkHh.mjs → acorex-platform-widgets-page-widget-designer.component-tITe8tiu.mjs} +6 -8
- package/fesm2022/acorex-platform-widgets-page-widget-designer.component-tITe8tiu.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-rich-text-popup.component-CtZlLmEp.mjs → acorex-platform-widgets-rich-text-popup.component-Bk20MsqK.mjs} +7 -7
- package/fesm2022/acorex-platform-widgets-rich-text-popup.component-Bk20MsqK.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-tabular-data-edit-popup.component-Dg0d9DbZ.mjs → acorex-platform-widgets-tabular-data-edit-popup.component-2srL34Aq.mjs} +7 -7
- package/fesm2022/acorex-platform-widgets-tabular-data-edit-popup.component-2srL34Aq.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-tabular-data-view-popup.component-CB1YeddQ.mjs → acorex-platform-widgets-tabular-data-view-popup.component-D9654sA3.mjs} +7 -7
- package/fesm2022/acorex-platform-widgets-tabular-data-view-popup.component-D9654sA3.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-text-block-widget-designer.component-CXNsxV-t.mjs → acorex-platform-widgets-text-block-widget-designer.component-C1VgsL1j.mjs} +6 -7
- package/fesm2022/acorex-platform-widgets-text-block-widget-designer.component-C1VgsL1j.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets.mjs +1130 -1142
- package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs +29 -100
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
- package/fesm2022/acorex-platform.mjs.map +1 -1
- package/index.d.ts +2 -2
- package/layout/builder/index.d.ts +682 -1
- package/layout/components/index.d.ts +436 -4
- package/layout/designer/index.d.ts +460 -4
- package/layout/entity/index.d.ts +769 -1
- package/layout/filters/index.d.ts +34 -1
- package/layout/views/index.d.ts +487 -3
- package/native/index.d.ts +35 -2
- package/package.json +1 -1
- package/runtime/index.d.ts +279 -17
- package/themes/default/index.d.ts +483 -3
- package/themes/shared/index.d.ts +204 -6
- package/widgets/index.d.ts +2138 -4
- package/workflow/index.d.ts +168 -7
- package/auth/lib/application/application.loader.d.ts +0 -8
- package/auth/lib/application/application.types.d.ts +0 -10
- package/auth/lib/auth-registry.service.d.ts +0 -12
- package/auth/lib/auth.guard.d.ts +0 -2
- package/auth/lib/auth.module.d.ts +0 -21
- package/auth/lib/auth.strategy.d.ts +0 -47
- package/auth/lib/errors.types.d.ts +0 -16
- package/auth/lib/feature/feature.directive.d.ts +0 -15
- package/auth/lib/feature/feature.guard.d.ts +0 -2
- package/auth/lib/feature/feature.loader.d.ts +0 -8
- package/auth/lib/feature/feature.types.d.ts +0 -6
- package/auth/lib/feature/index.d.ts +0 -4
- package/auth/lib/permission/index.d.ts +0 -6
- package/auth/lib/permission/permission-definition.builder.d.ts +0 -24
- package/auth/lib/permission/permission-definition.service.d.ts +0 -20
- package/auth/lib/permission/permission.directive.d.ts +0 -15
- package/auth/lib/permission/permission.guard.d.ts +0 -2
- package/auth/lib/permission/permission.loader.d.ts +0 -8
- package/auth/lib/permission/permission.types.d.ts +0 -13
- package/auth/lib/session.service.d.ts +0 -59
- package/auth/lib/session.types.d.ts +0 -24
- package/auth/lib/tenant/tenant.loader.d.ts +0 -8
- package/auth/lib/tenant/tenant.types.d.ts +0 -8
- package/auth/lib/user/user.types.d.ts +0 -6
- package/common/lib/app/app-version.provider.d.ts +0 -10
- package/common/lib/app/application.types.d.ts +0 -323
- package/common/lib/app/index.d.ts +0 -4
- package/common/lib/app/operators.d.ts +0 -23
- package/common/lib/common.module.d.ts +0 -24
- package/common/lib/configs/app.config.d.ts +0 -27
- package/common/lib/configs/config.types.d.ts +0 -5
- package/common/lib/data/data-provider.types.d.ts +0 -16
- package/common/lib/data/filter-middleware.service.d.ts +0 -28
- package/common/lib/data/index.d.ts +0 -3
- package/common/lib/data/operators.service.d.ts +0 -14
- package/common/lib/errors/error-handler-registry.service.d.ts +0 -12
- package/common/lib/errors/error-handler.types.d.ts +0 -3
- package/common/lib/errors/global-error-handler.d.ts +0 -11
- package/common/lib/errors/index.d.ts +0 -3
- package/common/lib/file-storage/file-storage.service.d.ts +0 -13
- package/common/lib/file-storage/file-storage.types.d.ts +0 -160
- package/common/lib/file-storage/index.d.ts +0 -2
- package/common/lib/file-type/file-type.provider.d.ts +0 -14
- package/common/lib/file-type/file-type.types.d.ts +0 -56
- package/common/lib/file-type/index.d.ts +0 -2
- package/common/lib/filters/filters.service.d.ts +0 -8
- package/common/lib/filters/filters.types.d.ts +0 -24
- package/common/lib/filters/index.d.ts +0 -2
- package/common/lib/home-page/home-page-settings.key.d.ts +0 -3
- package/common/lib/home-page/home-page-settings.provider.d.ts +0 -13
- package/common/lib/home-page/home-page.module.d.ts +0 -6
- package/common/lib/home-page/home-page.routes.d.ts +0 -2
- package/common/lib/home-page/home-page.service.d.ts +0 -30
- package/common/lib/home-page/home-page.types.d.ts +0 -9
- package/common/lib/home-page/index.d.ts +0 -4
- package/common/lib/layout/grid-layout/grid-layout.directive.d.ts +0 -15
- package/common/lib/layout/grid-layout/grid-layout.types.d.ts +0 -18
- package/common/lib/layout/grid-layout/index.d.ts +0 -2
- package/common/lib/layout/index.d.ts +0 -5
- package/common/lib/layout/logo/index.d.ts +0 -1
- package/common/lib/layout/logo/logo.component.d.ts +0 -12
- package/common/lib/layout/menu/badge-helper.d.ts +0 -7
- package/common/lib/layout/menu/index.d.ts +0 -6
- package/common/lib/layout/menu/menu.provider.d.ts +0 -22
- package/common/lib/layout/menu/menu.service.d.ts +0 -18
- package/common/lib/layout/menu/menu.types.d.ts +0 -28
- package/common/lib/layout/menu/search-definition.provider.d.ts +0 -4
- package/common/lib/layout/menu/search.provider.d.ts +0 -20
- package/common/lib/layout/sticky.directive.d.ts +0 -29
- package/common/lib/layout/theme/components/slots/footer-text-slot.component.d.ts +0 -6
- package/common/lib/layout/theme/components/slots/index.d.ts +0 -2
- package/common/lib/layout/theme/components/slots/navbar-slot.component.d.ts +0 -8
- package/common/lib/search/index.d.ts +0 -5
- package/common/lib/search/search-definition.builder.d.ts +0 -25
- package/common/lib/search/search-definition.provider.d.ts +0 -19
- package/common/lib/search/search.provider.d.ts +0 -8
- package/common/lib/search/search.service.d.ts +0 -13
- package/common/lib/search/search.types.d.ts +0 -69
- package/common/lib/settings/index.d.ts +0 -5
- package/common/lib/settings/setting-definition.service.d.ts +0 -29
- package/common/lib/settings/setting.builder.d.ts +0 -47
- package/common/lib/settings/settings.provider.d.ts +0 -3
- package/common/lib/settings/settings.service.d.ts +0 -41
- package/common/lib/settings/settings.types.d.ts +0 -55
- package/common/lib/utils/clipboard-service.d.ts +0 -7
- package/common/lib/utils/export-popup.d.ts +0 -20
- package/common/lib/utils/export.service.d.ts +0 -21
- package/common/lib/utils/filter-cleaner.d.ts +0 -2
- package/common/lib/utils/index.d.ts +0 -5
- package/common/lib/utils/regional-util.service.d.ts +0 -15
- package/common/lib/utils/regional.types.d.ts +0 -47
- package/common/lib/workflows/common.workflow.d.ts +0 -53
- package/common/lib/workflows/error-handler.d.ts +0 -8
- package/common/lib/workflows/index.d.ts +0 -3
- package/common/lib/workflows/navigate.workflow.d.ts +0 -13
- package/core/lib/context/context-store.service.d.ts +0 -37
- package/core/lib/data/data-generator.d.ts +0 -27
- package/core/lib/data/datasource-definition-provider.service.d.ts +0 -36
- package/core/lib/data/index.d.ts +0 -3
- package/core/lib/data/value-transformer.d.ts +0 -6
- package/core/lib/directives/content-checker.directive.d.ts +0 -10
- package/core/lib/directives/dbl-click.directive.d.ts +0 -11
- package/core/lib/directives/element-data.directive.d.ts +0 -20
- package/core/lib/directives/grid-layout.directive.d.ts +0 -15
- package/core/lib/directives/index.d.ts +0 -4
- package/core/lib/event-service/event.service.d.ts +0 -43
- package/core/lib/event-service/index.d.ts +0 -1
- package/core/lib/expression-evaluator/expression-evaluator-scope-provider.service.d.ts +0 -23
- package/core/lib/expression-evaluator/expression-evaluator.service.d.ts +0 -16
- package/core/lib/expression-evaluator/index.d.ts +0 -2
- package/core/lib/startup/app-startup.service.d.ts +0 -11
- package/core/lib/startup/app-startup.types.d.ts +0 -6
- package/core/lib/startup/index.d.ts +0 -2
- package/core/lib/types/actions.types.d.ts +0 -282
- package/core/lib/types/core.types.d.ts +0 -32
- package/core/lib/types/data.types.d.ts +0 -16
- package/core/lib/types/element.types.d.ts +0 -6
- package/core/lib/types/file.types.d.ts +0 -12
- package/core/lib/types/index.d.ts +0 -10
- package/core/lib/types/interactive.types.d.ts +0 -67
- package/core/lib/types/layout.types.d.ts +0 -27
- package/core/lib/types/logo.types.d.ts +0 -15
- package/core/lib/types/scope.types.d.ts +0 -10
- package/core/lib/types/validation.types.d.ts +0 -36
- package/core/lib/utils/countdown-timer.d.ts +0 -14
- package/core/lib/utils/data-conditioner.d.ts +0 -5
- package/core/lib/utils/highlighter.d.ts +0 -43
- package/core/lib/utils/index.d.ts +0 -4
- package/core/lib/utils/object-util.d.ts +0 -5
- package/domain/lib/domain.module.d.ts +0 -8
- package/domain/lib/provide-entity-crud-commands.d.ts +0 -4
- package/fesm2022/acorex-platform-themes-default-create-entity-view.component-BHR0N-5J.mjs +0 -22
- package/fesm2022/acorex-platform-themes-default-create-entity-view.component-BHR0N-5J.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-details-view.component-DXwO-Euo.mjs +0 -106
- package/fesm2022/acorex-platform-themes-default-details-view.component-DXwO-Euo.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-pLcvobi-.mjs +0 -112
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-pLcvobi-.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-BupuLA5U.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-CcCAFGwA.mjs +0 -96
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-CcCAFGwA.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-Dbf3kR4Z.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-401.component-CAfQVBOI.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-404.component-DQ4nWPip.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-offline.component-DHFRZS-7.mjs +0 -19
- package/fesm2022/acorex-platform-themes-default-error-offline.component-DHFRZS-7.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-button-widget-designer.component-rFIoj-24.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-Bq8dCQJb.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-checkbox-widget-designer.component-Bld65JIi.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-CAGwyk9s.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-B6N5rPk5.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-contact-widget-filter.component-Bg9CUMnD.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-file-list-popup.component-TNxbcVav.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-page-widget-designer.component-DuKrIkHh.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-rich-text-popup.component-CtZlLmEp.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-tabular-data-edit-popup.component-Dg0d9DbZ.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-tabular-data-view-popup.component-CB1YeddQ.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-text-block-widget-designer.component-CXNsxV-t.mjs.map +0 -1
- package/layout/builder/lib/builder/builder.module.d.ts +0 -24
- package/layout/builder/lib/builder/builder.service.d.ts +0 -38
- package/layout/builder/lib/builder/context-store.service.d.ts +0 -34
- package/layout/builder/lib/builder/datasource-provider.service.d.ts +0 -26
- package/layout/builder/lib/builder/index.d.ts +0 -16
- package/layout/builder/lib/builder/metadata/index.d.ts +0 -1
- package/layout/builder/lib/builder/metadata/metadata.types.d.ts +0 -7
- package/layout/builder/lib/builder/widget-base.component.d.ts +0 -114
- package/layout/builder/lib/builder/widget-catalog.d.ts +0 -3
- package/layout/builder/lib/builder/widget-categories.d.ts +0 -10
- package/layout/builder/lib/builder/widget-column-renderer.d.ts +0 -38
- package/layout/builder/lib/builder/widget-container.component.d.ts +0 -41
- package/layout/builder/lib/builder/widget-group.types.d.ts +0 -10
- package/layout/builder/lib/builder/widget-map.d.ts +0 -87
- package/layout/builder/lib/builder/widget-placeholder.component.d.ts +0 -5
- package/layout/builder/lib/builder/widget-registery.service.d.ts +0 -16
- package/layout/builder/lib/builder/widget-renderer.directive.d.ts +0 -89
- package/layout/builder/lib/builder/widget-status.types.d.ts +0 -16
- package/layout/builder/lib/builder/widget.types.d.ts +0 -149
- package/layout/components/lib/badge/badge.directive.d.ts +0 -14
- package/layout/components/lib/badge/index.d.ts +0 -3
- package/layout/components/lib/badge/task-badge.service.d.ts +0 -11
- package/layout/components/lib/badge/task-badge.type.d.ts +0 -6
- package/layout/components/lib/blocks/index.d.ts +0 -9
- package/layout/components/lib/blocks/layout-actions.component.d.ts +0 -20
- package/layout/components/lib/blocks/layout-blocks.component.d.ts +0 -8
- package/layout/components/lib/blocks/layout-container.component.d.ts +0 -13
- package/layout/components/lib/blocks/layout-footer.component.d.ts +0 -5
- package/layout/components/lib/blocks/layout-header.component.d.ts +0 -16
- package/layout/components/lib/blocks/layout-list.component.d.ts +0 -13
- package/layout/components/lib/blocks/layout-section.component.d.ts +0 -5
- package/layout/components/lib/blocks/layout-side.component.d.ts +0 -9
- package/layout/components/lib/blocks/layout-tool-bar.component.d.ts +0 -5
- package/layout/components/lib/component-slot/component-slot-registery.service.d.ts +0 -9
- package/layout/components/lib/component-slot/component-slot.directive.d.ts +0 -46
- package/layout/components/lib/component-slot/component-slot.module.d.ts +0 -15
- package/layout/components/lib/component-slot/component-slot.types.d.ts +0 -23
- package/layout/components/lib/component-slot/index.d.ts +0 -4
- package/layout/components/lib/user-avatar/index.d.ts +0 -4
- package/layout/components/lib/user-avatar/user-avatar.component.d.ts +0 -38
- package/layout/components/lib/user-avatar/user-avatar.provider.d.ts +0 -3
- package/layout/components/lib/user-avatar/user-avatar.service.d.ts +0 -42
- package/layout/components/lib/user-avatar/user-avatar.types.d.ts +0 -13
- package/layout/designer/lib/designer/components/add-widget-button/add-widget-button.component.d.ts +0 -9
- package/layout/designer/lib/designer/components/add-widget-button/add-widget-line-button.component.d.ts +0 -8
- package/layout/designer/lib/designer/components/add-widget-button/add-widget-mini-button.component.d.ts +0 -11
- package/layout/designer/lib/designer/components/add-widget-button/index.d.ts +0 -3
- package/layout/designer/lib/designer/components/board/board.component.d.ts +0 -27
- package/layout/designer/lib/designer/components/breadcrumbs/breadcrumbs.component.d.ts +0 -11
- package/layout/designer/lib/designer/components/drawers/data-sources/data-sources.component.d.ts +0 -17
- package/layout/designer/lib/designer/components/drawers/history/history.component.d.ts +0 -7
- package/layout/designer/lib/designer/components/drawers/outline/outline.component.d.ts +0 -18
- package/layout/designer/lib/designer/components/drawers/pages/pages.component.d.ts +0 -7
- package/layout/designer/lib/designer/components/grid-drawer/grid-drawer.component.d.ts +0 -19
- package/layout/designer/lib/designer/components/header-menu/header-menu.component.d.ts +0 -8
- package/layout/designer/lib/designer/components/size-mode/view-size-toolbar.component.d.ts +0 -6
- package/layout/designer/lib/designer/components/widget-picker/widget-picker.component.d.ts +0 -33
- package/layout/designer/lib/designer/components/widget-picker/widget-picker.service.d.ts +0 -12
- package/layout/designer/lib/designer/designer.component.d.ts +0 -15
- package/layout/designer/lib/designer/index.d.ts +0 -10
- package/layout/designer/lib/designer/shared/command.d.ts +0 -70
- package/layout/designer/lib/designer/shared/designer-connector.service.d.ts +0 -12
- package/layout/designer/lib/designer/shared/designer.service.d.ts +0 -145
- package/layout/designer/lib/designer/shared/designer.types.d.ts +0 -50
- package/layout/designer/lib/designer/shared/drawer-content/drawer-content.component.d.ts +0 -8
- package/layout/designer/lib/designer/shared/generic-commands.types.d.ts +0 -10
- package/layout/designer/lib/designer/shared/widget-designer-renderer.directive.d.ts +0 -42
- package/layout/designer/lib/preview/preview-frame.component.d.ts +0 -8
- package/layout/designer/lib/preview/preview-viewer.component.d.ts +0 -25
- package/layout/designer/lib/preview/preview.component.d.ts +0 -23
- package/layout/designer/lib/property-viewer/widget-property-viewer.component.d.ts +0 -57
- package/layout/entity/lib/entity-data-seeder.d.ts +0 -12
- package/layout/entity/lib/entity-detail-list.viewmodel.d.ts +0 -40
- package/layout/entity/lib/entity-master-create.viewmodel.d.ts +0 -59
- package/layout/entity/lib/entity-master-list.viewmodel.d.ts +0 -107
- package/layout/entity/lib/entity-master-single.viewmodel.d.ts +0 -70
- package/layout/entity/lib/entity-master-update.viewmodel.d.ts +0 -39
- package/layout/entity/lib/entity-middleware/entity-middleware.d.ts +0 -12
- package/layout/entity/lib/entity-middleware/entity-modifier.context.d.ts +0 -3
- package/layout/entity/lib/entity-middleware/entity-modifier.types.d.ts +0 -107
- package/layout/entity/lib/entity-middleware/entity-provider.d.ts +0 -3
- package/layout/entity/lib/entity-middleware/index.d.ts +0 -4
- package/layout/entity/lib/entity-registery.service.d.ts +0 -51
- package/layout/entity/lib/entity-storage-service.d.ts +0 -54
- package/layout/entity/lib/entity.config.d.ts +0 -28
- package/layout/entity/lib/entity.module.d.ts +0 -12
- package/layout/entity/lib/entity.service.d.ts +0 -7
- package/layout/entity/lib/entity.types.d.ts +0 -21
- package/layout/entity/lib/entity.viewmodel.d.ts +0 -32
- package/layout/entity/lib/index.d.ts +0 -15
- package/layout/entity/lib/search-definition-command.provider.d.ts +0 -4
- package/layout/entity/lib/search-definition.provider.d.ts +0 -6
- package/layout/entity/lib/widgets/lookup-widget/index.d.ts +0 -4
- package/layout/entity/lib/widgets/lookup-widget/lookup-widget-column.component.d.ts +0 -10
- package/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.d.ts +0 -48
- package/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.component.d.ts +0 -24
- package/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.viewmodel.d.ts +0 -33
- package/layout/entity/lib/widgets/lookup-widget/lookup-widget-view.component.d.ts +0 -22
- package/layout/entity/lib/widgets/lookup-widget/lookup-widget.config.d.ts +0 -9
- package/layout/entity/lib/widgets/tagable-box/index.d.ts +0 -6
- package/layout/entity/lib/widgets/tagable-box/tagable-box-widget-column.component.d.ts +0 -11
- package/layout/entity/lib/widgets/tagable-box/tagable-box-widget-edit.component.d.ts +0 -19
- package/layout/entity/lib/widgets/tagable-box/tagable-box-widget-filter.component.d.ts +0 -6
- package/layout/entity/lib/widgets/tagable-box/tagable-box-widget-print.component.d.ts +0 -11
- package/layout/entity/lib/widgets/tagable-box/tagable-box-widget-view.component.d.ts +0 -11
- package/layout/entity/lib/widgets/tagable-box/tagable-box-widget.config.d.ts +0 -7
- package/layout/entity/lib/widgets/widget-selector/index.d.ts +0 -3
- package/layout/entity/lib/widgets/widget-selector/widget-selector-widget-edit.component.d.ts +0 -23
- package/layout/entity/lib/widgets/widget-selector/widget-selector-widget-view.component.d.ts +0 -6
- package/layout/entity/lib/widgets/widget-selector/widget-selector-widget.config.d.ts +0 -7
- package/layout/entity/lib/workflows/create-entity.workflow.d.ts +0 -32
- package/layout/entity/lib/workflows/delete-entity.workflow.d.ts +0 -31
- package/layout/entity/lib/workflows/index.d.ts +0 -6
- package/layout/entity/lib/workflows/modify-entity.workflow.d.ts +0 -20
- package/layout/entity/lib/workflows/modify-section.workflow.d.ts +0 -32
- package/layout/entity/lib/workflows/show-details.workflow.d.ts +0 -10
- package/layout/entity/lib/workflows/show-file-uploader-popup.workflow.d.ts +0 -10
- package/layout/entity/lib/workflows/show-list.workflow.d.ts +0 -10
- package/layout/filters/lib/filters.viewmodel.d.ts +0 -31
- package/layout/views/lib/layouts/index.d.ts +0 -2
- package/layout/views/lib/layouts/page/index.d.ts +0 -3
- package/layout/views/lib/layouts/page/page-layout-base.component.d.ts +0 -113
- package/layout/views/lib/layouts/page/page-layout.base.d.ts +0 -22
- package/layout/views/lib/layouts/page/page-layout.component.d.ts +0 -84
- package/layout/views/lib/layouts/popup/index.d.ts +0 -3
- package/layout/views/lib/layouts/popup/popup-layout-base.component.d.ts +0 -98
- package/layout/views/lib/layouts/popup/popup-layout.base.d.ts +0 -14
- package/layout/views/lib/layouts/popup/popup-layout.component.d.ts +0 -76
- package/layout/views/lib/shared/index.d.ts +0 -1
- package/layout/views/lib/shared/layout.types.d.ts +0 -7
- package/layout/views/lib/views/details-view/details-view-route.resolver.d.ts +0 -3
- package/layout/views/lib/views/details-view/details-view.adapter.d.ts +0 -13
- package/layout/views/lib/views/details-view/details-view.viewmodel.d.ts +0 -30
- package/layout/views/lib/views/details-view/index.d.ts +0 -3
- package/layout/views/lib/views/details-view/sample.d.ts +0 -2
- package/layout/views/lib/views/index.d.ts +0 -1
- package/native/lib/native.module.d.ts +0 -6
- package/native/lib/native.service.d.ts +0 -26
- package/runtime/lib/commands/command.extension.token.d.ts +0 -7
- package/runtime/lib/commands/command.interface.d.ts +0 -3
- package/runtime/lib/commands/command.middleware.d.ts +0 -2
- package/runtime/lib/commands/command.registry.d.ts +0 -16
- package/runtime/lib/commands/provide-command-middleware.d.ts +0 -9
- package/runtime/lib/commands/provide-command-setups.d.ts +0 -9
- package/runtime/lib/policy/policy-middleware-provider.d.ts +0 -9
- package/runtime/lib/policy/policy.directive.d.ts +0 -9
- package/runtime/lib/policy/policy.extension.token.d.ts +0 -7
- package/runtime/lib/policy/policy.interface.d.ts +0 -17
- package/runtime/lib/policy/policy.middleware.d.ts +0 -3
- package/runtime/lib/policy/policy.registry.d.ts +0 -19
- package/runtime/lib/policy/policy.service.d.ts +0 -8
- package/runtime/lib/policy/policy.types.d.ts +0 -7
- package/runtime/lib/queries/provide-query-middleware.d.ts +0 -9
- package/runtime/lib/queries/provide-query-setups.d.ts +0 -9
- package/runtime/lib/queries/query.extension.token.d.ts +0 -7
- package/runtime/lib/queries/query.interface.d.ts +0 -3
- package/runtime/lib/queries/query.middleware.d.ts +0 -2
- package/runtime/lib/queries/query.registry.d.ts +0 -15
- package/runtime/lib/runtime.module.d.ts +0 -12
- package/themes/default/lib/default.module.d.ts +0 -8
- package/themes/default/lib/entity-reuse.strategy.d.ts +0 -8
- package/themes/default/lib/layouts/details-view/details-view.component.d.ts +0 -45
- package/themes/default/lib/layouts/entity-layouts/entity-category/entity-category.component.d.ts +0 -29
- package/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.d.ts +0 -90
- package/themes/default/lib/layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component.d.ts +0 -20
- package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.d.ts +0 -102
- package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-columns/list-view-option-columns.component.d.ts +0 -16
- package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-sorting/list-view-option-sorting.component.d.ts +0 -13
- package/themes/default/lib/layouts/entity-layouts/entity-master-modify-view/entity-master-modify-view.component.d.ts +0 -19
- package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.d.ts +0 -108
- package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/overview/entity-single-overview.component.d.ts +0 -11
- package/themes/default/lib/layouts/entity-layouts/entity-master-toolbar-view/entity-master-toolbar-view.component.d.ts +0 -69
- package/themes/default/lib/layouts/entity-layouts/entity-master-toolbar-view/filters/entity-filter-toolbar.component.d.ts +0 -49
- package/themes/default/lib/layouts/entity-layouts/entity-master-toolbar-view/views/create-view/create-entity-view.component.d.ts +0 -6
- package/themes/default/lib/layouts/entity-layouts/entity-master-toolbar-view/views/entity-view-toolbar.component.d.ts +0 -20
- package/themes/default/lib/layouts/entity-layouts/index.d.ts +0 -1
- package/themes/default/lib/layouts/root-layout/components/footer/footer.component.d.ts +0 -5
- package/themes/default/lib/layouts/root-layout/components/header/header.component.d.ts +0 -83
- package/themes/default/lib/layouts/root-layout/components/horizontal-menu/horizontal-menu.component.d.ts +0 -93
- package/themes/default/lib/layouts/root-layout/components/side-menu/side-menu.component.d.ts +0 -34
- package/themes/default/lib/layouts/root-layout/horizontal/horizontal-layout.component.d.ts +0 -85
- package/themes/default/lib/layouts/root-layout/index.d.ts +0 -6
- package/themes/default/lib/layouts/root-layout/root-layout.component.d.ts +0 -90
- package/themes/default/lib/layouts/root-layout/vertical/vertical-layout.component.d.ts +0 -87
- package/themes/default/lib/pages/errors/error-401/error-401.component.d.ts +0 -10
- package/themes/default/lib/pages/errors/error-404/error-404.component.d.ts +0 -8
- package/themes/default/lib/pages/errors/error-offline/error-offline.component.d.ts +0 -9
- package/themes/shared/lib/palette.provider.d.ts +0 -9
- package/themes/shared/lib/settings.keys.d.ts +0 -12
- package/themes/shared/lib/settings.provider.d.ts +0 -8
- package/themes/shared/lib/shared.module.d.ts +0 -11
- package/themes/shared/lib/slots/theme-slot.component.d.ts +0 -67
- package/themes/shared/lib/theme.service.d.ts +0 -61
- package/themes/shared/lib/theme.types.d.ts +0 -38
- package/themes/shared/lib/widgets/font-size-chooser/font-size-chooser-widget.component.d.ts +0 -10
- package/themes/shared/lib/widgets/font-size-chooser/font-size-chooser-widget.config.d.ts +0 -7
- package/themes/shared/lib/widgets/font-size-chooser/index.d.ts +0 -2
- package/themes/shared/lib/widgets/font-style-chooser/font-style-chooser-widget.component.d.ts +0 -15
- package/themes/shared/lib/widgets/font-style-chooser/font-style-chooser-widget.config.d.ts +0 -7
- package/themes/shared/lib/widgets/font-style-chooser/index.d.ts +0 -2
- package/themes/shared/lib/widgets/menu-orientation-chooser/index.d.ts +0 -2
- package/themes/shared/lib/widgets/menu-orientation-chooser/menu-orientation-chooser-widget.component.d.ts +0 -15
- package/themes/shared/lib/widgets/menu-orientation-chooser/menu-orientation-chooser-widget.config.d.ts +0 -7
- package/themes/shared/lib/widgets/theme-mode-chooser/index.d.ts +0 -2
- package/themes/shared/lib/widgets/theme-mode-chooser/theme-mode-chooser-widget.component.d.ts +0 -16
- package/themes/shared/lib/widgets/theme-mode-chooser/theme-mode-chooser-widget.config.d.ts +0 -7
- package/themes/shared/lib/widgets/theme-palette-chooser/index.d.ts +0 -2
- package/themes/shared/lib/widgets/theme-palette-chooser/theme-palette-chooser-widget.component.d.ts +0 -13
- package/themes/shared/lib/widgets/theme-palette-chooser/theme-palette-chooser-widget.config.d.ts +0 -7
- package/widgets/lib/properties/data-source.props.d.ts +0 -5
- package/widgets/lib/properties/editors.props.d.ts +0 -33
- package/widgets/lib/properties/general.props.d.ts +0 -7
- package/widgets/lib/properties/groups.d.ts +0 -8
- package/widgets/lib/properties/index.d.ts +0 -7
- package/widgets/lib/properties/layout.props.d.ts +0 -20
- package/widgets/lib/properties/table-column.props.d.ts +0 -3
- package/widgets/lib/properties/validation.props.d.ts +0 -10
- package/widgets/lib/shared/multi-language-component/popup/select-language.popup.d.ts +0 -23
- package/widgets/lib/widgets/actions/button/button-widget-designer.component.d.ts +0 -16
- package/widgets/lib/widgets/actions/button/button-widget-view.component.d.ts +0 -17
- package/widgets/lib/widgets/actions/button/button-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/actions/button/index.d.ts +0 -2
- package/widgets/lib/widgets/advance/avatar/avatar-widget-column.component.d.ts +0 -6
- package/widgets/lib/widgets/advance/avatar/avatar-widget-designer.component.d.ts +0 -6
- package/widgets/lib/widgets/advance/avatar/avatar-widget-edit.component.d.ts +0 -18
- package/widgets/lib/widgets/advance/avatar/avatar-widget-print.component.d.ts +0 -6
- package/widgets/lib/widgets/advance/avatar/avatar-widget-view.component.d.ts +0 -6
- package/widgets/lib/widgets/advance/avatar/avatar-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/advance/avatar/index.d.ts +0 -6
- package/widgets/lib/widgets/advance/cron-job/cron-job-widget-column.component.d.ts +0 -6
- package/widgets/lib/widgets/advance/cron-job/cron-job-widget-designer.component.d.ts +0 -7
- package/widgets/lib/widgets/advance/cron-job/cron-job-widget-edit.component.d.ts +0 -8
- package/widgets/lib/widgets/advance/cron-job/cron-job-widget-filter.component.d.ts +0 -6
- package/widgets/lib/widgets/advance/cron-job/cron-job-widget-print.component.d.ts +0 -6
- package/widgets/lib/widgets/advance/cron-job/cron-job-widget-view.component.d.ts +0 -7
- package/widgets/lib/widgets/advance/cron-job/cron-job-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/advance/cron-job/index.d.ts +0 -7
- package/widgets/lib/widgets/advance/file-uploader/file-list/file-list.component.d.ts +0 -23
- package/widgets/lib/widgets/advance/file-uploader/file-list-popup/file-list-popup.component.d.ts +0 -17
- package/widgets/lib/widgets/advance/file-uploader/file-uploader-widget-column.component.d.ts +0 -10
- package/widgets/lib/widgets/advance/file-uploader/file-uploader-widget-edit.component.d.ts +0 -17
- package/widgets/lib/widgets/advance/file-uploader/file-uploader-widget-print.component.d.ts +0 -6
- package/widgets/lib/widgets/advance/file-uploader/file-uploader-widget-view.component.d.ts +0 -9
- package/widgets/lib/widgets/advance/file-uploader/file-uploader-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/advance/file-uploader/file-uploader-widget.service.d.ts +0 -14
- package/widgets/lib/widgets/advance/file-uploader/index.d.ts +0 -6
- package/widgets/lib/widgets/advance/gallery/gallery-widget-edit.component.d.ts +0 -13
- package/widgets/lib/widgets/advance/gallery/gallery-widget-print.component.d.ts +0 -6
- package/widgets/lib/widgets/advance/gallery/gallery-widget-types.d.ts +0 -10
- package/widgets/lib/widgets/advance/gallery/gallery-widget-view.component.d.ts +0 -15
- package/widgets/lib/widgets/advance/gallery/gallery-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/advance/gallery/index.d.ts +0 -4
- package/widgets/lib/widgets/advance/map/index.d.ts +0 -3
- package/widgets/lib/widgets/advance/map/map-box-widget-edit.component.d.ts +0 -25
- package/widgets/lib/widgets/advance/map/map-box-widget-view.component.d.ts +0 -13
- package/widgets/lib/widgets/advance/map/map-box-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/advance/qrcode/index.d.ts +0 -2
- package/widgets/lib/widgets/advance/qrcode/qrcode-widget-view.component.d.ts +0 -13
- package/widgets/lib/widgets/advance/qrcode/qrcode-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/advance/signature/index.d.ts +0 -6
- package/widgets/lib/widgets/advance/signature/signature-pad-widget-column.component.d.ts +0 -6
- package/widgets/lib/widgets/advance/signature/signature-pad-widget-edit.component.d.ts +0 -24
- package/widgets/lib/widgets/advance/signature/signature-pad-widget-filter.component.d.ts +0 -6
- package/widgets/lib/widgets/advance/signature/signature-pad-widget-print.component.d.ts +0 -6
- package/widgets/lib/widgets/advance/signature/signature-pad-widget-view.component.d.ts +0 -8
- package/widgets/lib/widgets/advance/signature/signature-pad-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/editors/checkbox/checkbox-widget-column.component.d.ts +0 -9
- package/widgets/lib/widgets/editors/checkbox/checkbox-widget-designer.component.d.ts +0 -10
- package/widgets/lib/widgets/editors/checkbox/checkbox-widget-edit.component.d.ts +0 -9
- package/widgets/lib/widgets/editors/checkbox/checkbox-widget-view.component.d.ts +0 -12
- package/widgets/lib/widgets/editors/checkbox/checkbox-widget.config.d.ts +0 -12
- package/widgets/lib/widgets/editors/checkbox/index.d.ts +0 -2
- package/widgets/lib/widgets/editors/color/color-box-widget-column.component.d.ts +0 -9
- package/widgets/lib/widgets/editors/color/color-box-widget-designer.component.d.ts +0 -11
- package/widgets/lib/widgets/editors/color/color-box-widget-edit.component.d.ts +0 -11
- package/widgets/lib/widgets/editors/color/color-box-widget-filter.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/color/color-box-widget-print.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/color/color-box-widget-view.component.d.ts +0 -9
- package/widgets/lib/widgets/editors/color/color-box-widget.config.d.ts +0 -14
- package/widgets/lib/widgets/editors/color/index.d.ts +0 -6
- package/widgets/lib/widgets/editors/contact/contact-widget-column.component.d.ts +0 -10
- package/widgets/lib/widgets/editors/contact/contact-widget-edit.component.d.ts +0 -34
- package/widgets/lib/widgets/editors/contact/contact-widget-filter.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/contact/contact-widget-print.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/contact/contact-widget-view.component.d.ts +0 -19
- package/widgets/lib/widgets/editors/contact/contact-widget.config.d.ts +0 -16
- package/widgets/lib/widgets/editors/contact/contact.type.d.ts +0 -5
- package/widgets/lib/widgets/editors/contact/index.d.ts +0 -5
- package/widgets/lib/widgets/editors/contact/popup-component.d.ts +0 -10
- package/widgets/lib/widgets/editors/date-time/date-time-box-widget-column.component.d.ts +0 -15
- package/widgets/lib/widgets/editors/date-time/date-time-box-widget-edit.component.d.ts +0 -22
- package/widgets/lib/widgets/editors/date-time/date-time-box-widget-filter.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/date-time/date-time-box-widget-print.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/date-time/date-time-box-widget-view.component.d.ts +0 -12
- package/widgets/lib/widgets/editors/date-time/date-time-box-widget.config.d.ts +0 -15
- package/widgets/lib/widgets/editors/date-time/index.d.ts +0 -6
- package/widgets/lib/widgets/editors/email/email-box-widget-column.component.d.ts +0 -16
- package/widgets/lib/widgets/editors/email/email-box-widget-edit.component.d.ts +0 -29
- package/widgets/lib/widgets/editors/email/email-box-widget-filter.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/email/email-box-widget-print.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/email/email-box-widget-view.component.d.ts +0 -12
- package/widgets/lib/widgets/editors/email/email-box-widget.config.d.ts +0 -14
- package/widgets/lib/widgets/editors/email/index.d.ts +0 -6
- package/widgets/lib/widgets/editors/large-text/index.d.ts +0 -6
- package/widgets/lib/widgets/editors/large-text/large-text-widget-column.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/large-text/large-text-widget-edit.component.d.ts +0 -23
- package/widgets/lib/widgets/editors/large-text/large-text-widget-filter.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/large-text/large-text-widget-print.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/large-text/large-text-widget-view.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/large-text/large-text-widget.config.d.ts +0 -12
- package/widgets/lib/widgets/editors/link/index.d.ts +0 -6
- package/widgets/lib/widgets/editors/link/link-widget-column.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/link/link-widget-edit.component.d.ts +0 -35
- package/widgets/lib/widgets/editors/link/link-widget-filter.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/link/link-widget-print.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/link/link-widget-view.component.d.ts +0 -13
- package/widgets/lib/widgets/editors/link/link-widget.config.d.ts +0 -13
- package/widgets/lib/widgets/editors/meta-data/index.d.ts +0 -6
- package/widgets/lib/widgets/editors/meta-data/meta-data-widget-column.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/meta-data/meta-data-widget-edit.component.d.ts +0 -13
- package/widgets/lib/widgets/editors/meta-data/meta-data-widget-filter.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/meta-data/meta-data-widget-print.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/meta-data/meta-data-widget-view.component.d.ts +0 -8
- package/widgets/lib/widgets/editors/meta-data/meta-data-widget.config.d.ts +0 -9
- package/widgets/lib/widgets/editors/number/index.d.ts +0 -6
- package/widgets/lib/widgets/editors/number/number-box-widget-column.component.d.ts +0 -8
- package/widgets/lib/widgets/editors/number/number-box-widget-edit.component.d.ts +0 -21
- package/widgets/lib/widgets/editors/number/number-box-widget-filter.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/number/number-box-widget-print.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/number/number-box-widget-view.component.d.ts +0 -12
- package/widgets/lib/widgets/editors/number/number-box-widget.config.d.ts +0 -17
- package/widgets/lib/widgets/editors/number-unit/index.d.ts +0 -6
- package/widgets/lib/widgets/editors/number-unit/number-unit-box-widget-column.component.d.ts +0 -9
- package/widgets/lib/widgets/editors/number-unit/number-unit-box-widget-edit.component.d.ts +0 -24
- package/widgets/lib/widgets/editors/number-unit/number-unit-box-widget-filter.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/number-unit/number-unit-box-widget-print.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/number-unit/number-unit-box-widget-view.component.d.ts +0 -12
- package/widgets/lib/widgets/editors/number-unit/number-unit-box-widget.config.d.ts +0 -17
- package/widgets/lib/widgets/editors/password/index.d.ts +0 -6
- package/widgets/lib/widgets/editors/password/password-box-widget-column.component.d.ts +0 -10
- package/widgets/lib/widgets/editors/password/password-box-widget-edit.component.d.ts +0 -9
- package/widgets/lib/widgets/editors/password/password-box-widget-filter.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/password/password-box-widget-print.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/password/password-box-widget-view.component.d.ts +0 -14
- package/widgets/lib/widgets/editors/password/password-box-widget.config.d.ts +0 -14
- package/widgets/lib/widgets/editors/phone/index.d.ts +0 -6
- package/widgets/lib/widgets/editors/phone/phone-box-widget-column.component.d.ts +0 -16
- package/widgets/lib/widgets/editors/phone/phone-box-widget-edit.component.d.ts +0 -26
- package/widgets/lib/widgets/editors/phone/phone-box-widget-filter.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/phone/phone-box-widget-print.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/phone/phone-box-widget-view.component.d.ts +0 -12
- package/widgets/lib/widgets/editors/phone/phone-box-widget.config.d.ts +0 -11
- package/widgets/lib/widgets/editors/rich-text/index.d.ts +0 -6
- package/widgets/lib/widgets/editors/rich-text/rich-text-popup.component.d.ts +0 -9
- package/widgets/lib/widgets/editors/rich-text/rich-text-widget-column.component.d.ts +0 -9
- package/widgets/lib/widgets/editors/rich-text/rich-text-widget-edit.component.d.ts +0 -26
- package/widgets/lib/widgets/editors/rich-text/rich-text-widget-filter.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/rich-text/rich-text-widget-print.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/rich-text/rich-text-widget-view.component.d.ts +0 -9
- package/widgets/lib/widgets/editors/rich-text/rich-text-widget.config.d.ts +0 -12
- package/widgets/lib/widgets/editors/select/index.d.ts +0 -6
- package/widgets/lib/widgets/editors/select/select-box-widget-column.component.d.ts +0 -10
- package/widgets/lib/widgets/editors/select/select-box-widget-edit.component.d.ts +0 -27
- package/widgets/lib/widgets/editors/select/select-box-widget-filter.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/select/select-box-widget-print.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/select/select-box-widget-view.component.d.ts +0 -12
- package/widgets/lib/widgets/editors/select/select-box-widget.config.d.ts +0 -18
- package/widgets/lib/widgets/editors/selection-list/index.d.ts +0 -7
- package/widgets/lib/widgets/editors/selection-list/selection-list-widget-column.component.d.ts +0 -14
- package/widgets/lib/widgets/editors/selection-list/selection-list-widget-designer.component.d.ts +0 -15
- package/widgets/lib/widgets/editors/selection-list/selection-list-widget-edit.component.d.ts +0 -15
- package/widgets/lib/widgets/editors/selection-list/selection-list-widget-filter.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/selection-list/selection-list-widget-print.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/selection-list/selection-list-widget-view.component.d.ts +0 -11
- package/widgets/lib/widgets/editors/selection-list/selection-list-widget.config.d.ts +0 -15
- package/widgets/lib/widgets/editors/tabular-data/index.d.ts +0 -6
- package/widgets/lib/widgets/editors/tabular-data/table-widget.config.d.ts +0 -14
- package/widgets/lib/widgets/editors/tabular-data/tabular-data-column.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/tabular-data/tabular-data-edit-popup.component.d.ts +0 -26
- package/widgets/lib/widgets/editors/tabular-data/tabular-data-filter.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/tabular-data/tabular-data-view-popup.component.d.ts +0 -12
- package/widgets/lib/widgets/editors/tabular-data/tabular-data-widget-edit.component.d.ts +0 -12
- package/widgets/lib/widgets/editors/tabular-data/tabular-data-widget-print.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/tabular-data/tabular-data-widget-view.component.d.ts +0 -11
- package/widgets/lib/widgets/editors/tabular-data/tabular-widget.types.d.ts +0 -9
- package/widgets/lib/widgets/editors/template-box/index.d.ts +0 -6
- package/widgets/lib/widgets/editors/template-box/template-box-widget-column.component.d.ts +0 -10
- package/widgets/lib/widgets/editors/template-box/template-box-widget-edit.component.d.ts +0 -29
- package/widgets/lib/widgets/editors/template-box/template-box-widget-filter.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/template-box/template-box-widget-print.component.d.ts +0 -10
- package/widgets/lib/widgets/editors/template-box/template-box-widget-view.component.d.ts +0 -11
- package/widgets/lib/widgets/editors/template-box/template-box-widget.config.d.ts +0 -12
- package/widgets/lib/widgets/editors/text/index.d.ts +0 -6
- package/widgets/lib/widgets/editors/text/text-box-widget-column.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/text/text-box-widget-edit.component.d.ts +0 -27
- package/widgets/lib/widgets/editors/text/text-box-widget-filter.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/text/text-box-widget-print.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/text/text-box-widget-view.component.d.ts +0 -8
- package/widgets/lib/widgets/editors/text/text-box-widget.config.d.ts +0 -15
- package/widgets/lib/widgets/editors/time-duration/index.d.ts +0 -6
- package/widgets/lib/widgets/editors/time-duration/time-duration-widget-column.component.d.ts +0 -15
- package/widgets/lib/widgets/editors/time-duration/time-duration-widget-edit.component.d.ts +0 -12
- package/widgets/lib/widgets/editors/time-duration/time-duration-widget-filter.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/time-duration/time-duration-widget-print.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/time-duration/time-duration-widget-view.component.d.ts +0 -13
- package/widgets/lib/widgets/editors/time-duration/time-duration-widget.config.d.ts +0 -11
- package/widgets/lib/widgets/editors/toggle/index.d.ts +0 -6
- package/widgets/lib/widgets/editors/toggle/toggle-widget-column.component.d.ts +0 -9
- package/widgets/lib/widgets/editors/toggle/toggle-widget-edit.component.d.ts +0 -12
- package/widgets/lib/widgets/editors/toggle/toggle-widget-filter.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/toggle/toggle-widget-print.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/toggle/toggle-widget-view.component.d.ts +0 -9
- package/widgets/lib/widgets/editors/toggle/toggle-widget.config.d.ts +0 -14
- package/widgets/lib/widgets/filters/boolean-filter/boolean-filter-widget-edit.component.d.ts +0 -20
- package/widgets/lib/widgets/filters/boolean-filter/boolean-filter-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/filters/boolean-filter/index.d.ts +0 -2
- package/widgets/lib/widgets/filters/date-time-filter/date-time-filter-widget-edit.component.d.ts +0 -19
- package/widgets/lib/widgets/filters/date-time-filter/date-time-filter-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/filters/date-time-filter/index.d.ts +0 -2
- package/widgets/lib/widgets/filters/number-filter/index.d.ts +0 -2
- package/widgets/lib/widgets/filters/number-filter/number-filter-widget-edit.component.d.ts +0 -13
- package/widgets/lib/widgets/filters/number-filter/number-filter-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/filters/operations/operations.component.d.ts +0 -9
- package/widgets/lib/widgets/filters/select-filter/index.d.ts +0 -2
- package/widgets/lib/widgets/filters/select-filter/select-filter-widget-edit.component.d.ts +0 -15
- package/widgets/lib/widgets/filters/select-filter/select-filter-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/filters/string-filter/index.d.ts +0 -2
- package/widgets/lib/widgets/filters/string-filter/string-filter-widget-edit.component.d.ts +0 -13
- package/widgets/lib/widgets/filters/string-filter/string-filter-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/index.d.ts +0 -44
- package/widgets/lib/widgets/layout/advanced-grid/advanced-grid-widget-designer.component.d.ts +0 -27
- package/widgets/lib/widgets/layout/advanced-grid/advanced-grid-widget-view.component.d.ts +0 -20
- package/widgets/lib/widgets/layout/advanced-grid/advanced-grid-widget.config.d.ts +0 -9
- package/widgets/lib/widgets/layout/advanced-grid/index.d.ts +0 -3
- package/widgets/lib/widgets/layout/advanced-grid-item/advanced-grid-item-widget-designer.component.d.ts +0 -11
- package/widgets/lib/widgets/layout/advanced-grid-item/advanced-grid-item-widget-print.component.d.ts +0 -6
- package/widgets/lib/widgets/layout/advanced-grid-item/advanced-grid-item-widget-view.component.d.ts +0 -15
- package/widgets/lib/widgets/layout/advanced-grid-item/advanced-grid-item-widget.config.d.ts +0 -9
- package/widgets/lib/widgets/layout/advanced-grid-item/index.d.ts +0 -4
- package/widgets/lib/widgets/layout/block/block-widget-designer.component.d.ts +0 -10
- package/widgets/lib/widgets/layout/block/block-widget-view.component.d.ts +0 -10
- package/widgets/lib/widgets/layout/block/block-widget.config.d.ts +0 -23
- package/widgets/lib/widgets/layout/block/index.d.ts +0 -3
- package/widgets/lib/widgets/layout/document/document-widget.config.d.ts +0 -9
- package/widgets/lib/widgets/layout/flex/flex-widget-designer.component.d.ts +0 -10
- package/widgets/lib/widgets/layout/flex/flex-widget-view.component.d.ts +0 -10
- package/widgets/lib/widgets/layout/flex/flex-widget.config.d.ts +0 -28
- package/widgets/lib/widgets/layout/flex/index.d.ts +0 -3
- package/widgets/lib/widgets/layout/form-field/form-field-widget-designer.component.d.ts +0 -8
- package/widgets/lib/widgets/layout/form-field/form-field-widget-view.component.d.ts +0 -8
- package/widgets/lib/widgets/layout/form-field/form-field-widget.config.d.ts +0 -10
- package/widgets/lib/widgets/layout/form-field/index.d.ts +0 -3
- package/widgets/lib/widgets/layout/grid/grid-widget-designer.component.d.ts +0 -24
- package/widgets/lib/widgets/layout/grid/grid-widget-view.component.d.ts +0 -15
- package/widgets/lib/widgets/layout/grid/grid-widget.config.d.ts +0 -10
- package/widgets/lib/widgets/layout/grid/index.d.ts +0 -3
- package/widgets/lib/widgets/layout/grid-item/grid-item-widget-designer.component.d.ts +0 -10
- package/widgets/lib/widgets/layout/grid-item/grid-item-widget-print.component.d.ts +0 -6
- package/widgets/lib/widgets/layout/grid-item/grid-item-widget-view.component.d.ts +0 -18
- package/widgets/lib/widgets/layout/grid-item/grid-item-widget.config.d.ts +0 -25
- package/widgets/lib/widgets/layout/grid-item/index.d.ts +0 -4
- package/widgets/lib/widgets/layout/grid-row/grid-row-widget-designer.component.d.ts +0 -15
- package/widgets/lib/widgets/layout/grid-row/grid-row-widget-print.component.d.ts +0 -6
- package/widgets/lib/widgets/layout/grid-row/grid-row-widget-view.component.d.ts +0 -9
- package/widgets/lib/widgets/layout/grid-row/grid-row-widget.config.d.ts +0 -11
- package/widgets/lib/widgets/layout/grid-row/index.d.ts +0 -4
- package/widgets/lib/widgets/layout/page/index.d.ts +0 -2
- package/widgets/lib/widgets/layout/page/page-widget-designer.component.d.ts +0 -20
- package/widgets/lib/widgets/layout/page/page-widget-view.component.d.ts +0 -8
- package/widgets/lib/widgets/layout/page/page-widget.config.d.ts +0 -14
- package/widgets/lib/widgets/layout/panel/index.d.ts +0 -3
- package/widgets/lib/widgets/layout/panel/panel-widget-designer.component.d.ts +0 -15
- package/widgets/lib/widgets/layout/panel/panel-widget-view.component.d.ts +0 -15
- package/widgets/lib/widgets/layout/panel/panel-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/layout/repeater/index.d.ts +0 -5
- package/widgets/lib/widgets/layout/repeater/repeater-widget-designer.component.d.ts +0 -9
- package/widgets/lib/widgets/layout/repeater/repeater-widget-edit.component.d.ts +0 -15
- package/widgets/lib/widgets/layout/repeater/repeater-widget-print.component.d.ts +0 -6
- package/widgets/lib/widgets/layout/repeater/repeater-widget-view.component.d.ts +0 -9
- package/widgets/lib/widgets/layout/repeater/repeater-widget.config.d.ts +0 -12
- package/widgets/lib/widgets/layout/tabset/index.d.ts +0 -3
- package/widgets/lib/widgets/layout/tabset/tabset-widget-designer.component.d.ts +0 -6
- package/widgets/lib/widgets/layout/tabset/tabset-widget-view.component.d.ts +0 -19
- package/widgets/lib/widgets/layout/tabset/tabset-widget.config.d.ts +0 -2
- package/widgets/lib/widgets/layout/tabset/tabset-widget.types.d.ts +0 -2
- package/widgets/lib/widgets/layout/tabset-item/index.d.ts +0 -3
- package/widgets/lib/widgets/layout/tabset-item/tabset-item-widget-designer.component.d.ts +0 -6
- package/widgets/lib/widgets/layout/tabset-item/tabset-item-widget-view.component.d.ts +0 -10
- package/widgets/lib/widgets/layout/tabset-item/tabset-item-widget.config.d.ts +0 -2
- package/widgets/lib/widgets/layout/text-block/index.d.ts +0 -2
- package/widgets/lib/widgets/layout/text-block/text-block-widget-designer.component.d.ts +0 -11
- package/widgets/lib/widgets/layout/text-block/text-block-widget-view.component.d.ts +0 -10
- package/widgets/lib/widgets/layout/text-block/text-block-widget.config.d.ts +0 -10
- package/widgets/lib/widgets/property-editors/advanced-grid-options/advanced-grid-options-widget-editor.component.d.ts +0 -32
- package/widgets/lib/widgets/property-editors/advanced-grid-options/advanced-grid-options-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/property-editors/advanced-grid-options/advanced-grid-options-widget.type.d.ts +0 -6
- package/widgets/lib/widgets/property-editors/advanced-grid-options/index.d.ts +0 -2
- package/widgets/lib/widgets/property-editors/border/border-widget-editor.component.d.ts +0 -35
- package/widgets/lib/widgets/property-editors/border/border-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/property-editors/border/index.d.ts +0 -2
- package/widgets/lib/widgets/property-editors/direction/direction-widget-editor.component.d.ts +0 -12
- package/widgets/lib/widgets/property-editors/direction/direction-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/property-editors/direction/index.d.ts +0 -2
- package/widgets/lib/widgets/property-editors/flex-options/flex-options-widget-editor.component.d.ts +0 -43
- package/widgets/lib/widgets/property-editors/flex-options/flex-options-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/property-editors/flex-options/flex-options-widget.type.d.ts +0 -12
- package/widgets/lib/widgets/property-editors/flex-options/index.d.ts +0 -3
- package/widgets/lib/widgets/property-editors/grid-options/grid-options-widget-editor.component.d.ts +0 -50
- package/widgets/lib/widgets/property-editors/grid-options/grid-options-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/property-editors/grid-options/grid-options-widget.type.d.ts +0 -21
- package/widgets/lib/widgets/property-editors/grid-options/index.d.ts +0 -3
- package/widgets/lib/widgets/property-editors/property-editor-helper.d.ts +0 -98
- package/widgets/lib/widgets/property-editors/property-editor.type.d.ts +0 -40
- package/widgets/lib/widgets/property-editors/spacing/index.d.ts +0 -2
- package/widgets/lib/widgets/property-editors/spacing/spacing-widget-editor.component.d.ts +0 -27
- package/widgets/lib/widgets/property-editors/spacing/spacing-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/validations/base-validation/base-validation.component.d.ts +0 -13
- package/widgets/lib/widgets/validations/base-validation/base-validation.d.ts +0 -9
- package/widgets/lib/widgets/validations/between-validation/between-validation-widget-edit.component.d.ts +0 -19
- package/widgets/lib/widgets/validations/between-validation/between-validation-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/validations/between-validation/index.d.ts +0 -2
- package/widgets/lib/widgets/validations/callback-validation/callback-validation-widget-edit.component.d.ts +0 -17
- package/widgets/lib/widgets/validations/callback-validation/callback-validation-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/validations/callback-validation/index.d.ts +0 -2
- package/widgets/lib/widgets/validations/equal-validation/equal-validation-widget-edit.component.d.ts +0 -17
- package/widgets/lib/widgets/validations/equal-validation/equal-validation-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/validations/equal-validation/index.d.ts +0 -2
- package/widgets/lib/widgets/validations/greater-than-validation/greater-than-validation-widget-edit.component.d.ts +0 -18
- package/widgets/lib/widgets/validations/greater-than-validation/greater-than-validation-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/validations/greater-than-validation/index.d.ts +0 -2
- package/widgets/lib/widgets/validations/less-than-validation/index.d.ts +0 -2
- package/widgets/lib/widgets/validations/less-than-validation/less-than-validation-widget-edit.component.d.ts +0 -18
- package/widgets/lib/widgets/validations/less-than-validation/less-than-validation-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/validations/max-length-validation/index.d.ts +0 -2
- package/widgets/lib/widgets/validations/max-length-validation/max-length-validation-widget-edit.component.d.ts +0 -17
- package/widgets/lib/widgets/validations/max-length-validation/max-length-validation-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/validations/min-length-validation/index.d.ts +0 -2
- package/widgets/lib/widgets/validations/min-length-validation/min-length-validation-widget-edit.component.d.ts +0 -17
- package/widgets/lib/widgets/validations/min-length-validation/min-length-validation-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/validations/regular-expression-validation/index.d.ts +0 -2
- package/widgets/lib/widgets/validations/regular-expression-validation/regular-expression-validation-widget-edit.component.d.ts +0 -17
- package/widgets/lib/widgets/validations/regular-expression-validation/regular-expression-validation-widget.config.d.ts +0 -7
- package/widgets/lib/widgets/validations/required-validation/index.d.ts +0 -2
- package/widgets/lib/widgets/validations/required-validation/required-validation-widget-edit.component.d.ts +0 -15
- package/widgets/lib/widgets/validations/required-validation/required-validation-widget.config.d.ts +0 -7
- package/widgets/lib/widgets.config.d.ts +0 -7
- package/widgets/lib/widgets.module.d.ts +0 -7
- package/workflow/lib/actions/decide.action.d.ts +0 -7
- package/workflow/lib/actions/start-workflow.action.d.ts +0 -10
- package/workflow/lib/errors.types.d.ts +0 -4
- package/workflow/lib/slots/workflow-action-bar/workflow-action-bar.component.d.ts +0 -37
- package/workflow/lib/task-board.types.d.ts +0 -21
- package/workflow/lib/workflow-evaluator-scope.provider.d.ts +0 -4
- package/workflow/lib/workflow-event-dispatcher.service.d.ts +0 -10
- package/workflow/lib/workflow-registery.service.d.ts +0 -21
- package/workflow/lib/workflow.module.d.ts +0 -26
- package/workflow/lib/workflow.service.d.ts +0 -25
- package/workflow/lib/workflow.types.d.ts +0 -64
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-layout-designer.mjs","sources":["../../../../libs/platform/layout/designer/src/lib/designer/shared/command.ts","../../../../libs/platform/layout/designer/src/lib/designer/shared/designer-connector.service.ts","../../../../libs/platform/layout/designer/src/lib/designer/shared/generic-commands.types.ts","../../../../libs/platform/layout/designer/src/lib/designer/shared/designer.types.ts","../../../../libs/platform/layout/designer/src/lib/designer/components/widget-picker/widget-picker.service.ts","../../../../libs/platform/layout/designer/src/lib/designer/shared/designer.service.ts","../../../../libs/platform/layout/designer/src/lib/designer/components/add-widget-button/add-widget-button.component.ts","../../../../libs/platform/layout/designer/src/lib/designer/components/add-widget-button/add-widget-line-button.component.ts","../../../../libs/platform/layout/designer/src/lib/designer/components/add-widget-button/add-widget-mini-button.component.ts","../../../../libs/platform/layout/designer/src/lib/designer/components/grid-drawer/grid-drawer.component.ts","../../../../libs/platform/layout/designer/src/lib/designer/components/widget-picker/widget-picker.component.ts","../../../../libs/platform/layout/designer/src/lib/designer/components/widget-picker/widget-picker.component.html","../../../../libs/platform/layout/designer/src/lib/property-viewer/widget-property-viewer.component.ts","../../../../libs/platform/layout/designer/src/lib/property-viewer/widget-property-viewer.component.html","../../../../libs/platform/layout/designer/src/lib/designer/shared/widget-designer-renderer.directive.ts","../../../../libs/platform/layout/designer/src/lib/designer/components/board/board.component.ts","../../../../libs/platform/layout/designer/src/lib/designer/components/board/board.component.html","../../../../libs/platform/layout/designer/src/lib/designer/components/breadcrumbs/breadcrumbs.component.ts","../../../../libs/platform/layout/designer/src/lib/designer/shared/drawer-content/drawer-content.component.ts","../../../../libs/platform/layout/designer/src/lib/designer/shared/drawer-content/drawer-content.component.html","../../../../libs/platform/layout/designer/src/lib/designer/components/drawers/data-sources/data-sources.component.ts","../../../../libs/platform/layout/designer/src/lib/designer/components/drawers/data-sources/data-sources.component.html","../../../../libs/platform/layout/designer/src/lib/designer/components/drawers/history/history.component.ts","../../../../libs/platform/layout/designer/src/lib/designer/components/drawers/history/history.component.html","../../../../libs/platform/layout/designer/src/lib/designer/components/drawers/outline/outline.component.ts","../../../../libs/platform/layout/designer/src/lib/designer/components/drawers/outline/outline.component.html","../../../../libs/platform/layout/designer/src/lib/designer/components/drawers/pages/pages.component.ts","../../../../libs/platform/layout/designer/src/lib/designer/components/drawers/pages/pages.component.html","../../../../libs/platform/layout/designer/src/lib/designer/components/header-menu/header-menu.component.ts","../../../../libs/platform/layout/designer/src/lib/designer/components/header-menu/header-menu.component.html","../../../../libs/platform/layout/designer/src/lib/designer/components/size-mode/view-size-toolbar.component.ts","../../../../libs/platform/layout/designer/src/lib/designer/designer.component.ts","../../../../libs/platform/layout/designer/src/lib/designer/designer.component.html","../../../../libs/platform/layout/designer/src/lib/preview/preview-viewer.component.ts","../../../../libs/platform/layout/designer/src/lib/preview/preview-frame.component.ts","../../../../libs/platform/layout/designer/src/lib/preview/preview.component.ts","../../../../libs/platform/layout/designer/src/lib/preview/preview.component.html","../../../../libs/platform/layout/designer/src/acorex-platform-layout-designer.ts"],"sourcesContent":["import { AXPWidgetNode } from \"@acorex/platform/layout/builder\";\nimport { computed, Injectable, signal } from \"@angular/core\";\nimport { cloneDeep, merge } from \"lodash-es\";\n\n// Command interface\nexport interface Command {\n execute(): void;\n undo(): void;\n description(): string;\n icon(): string;\n getExecutionSelection(): AXPWidgetNode; // Node to select after execution\n getUndoSelection(): AXPWidgetNode; // Node to select after undo\n}\n\n// AddWidgetCommand\nexport class AddWidgetCommand implements Command {\n private widget: AXPWidgetNode;\n private parent: AXPWidgetNode;\n private previousSelection: AXPWidgetNode;\n\n constructor(widget: AXPWidgetNode, parent: AXPWidgetNode, previousSelection: AXPWidgetNode) {\n this.widget = widget;\n this.parent = parent;\n this.previousSelection = previousSelection;\n }\n\n execute() {\n this.parent.children = this.parent.children || [];\n this.parent.children.push(this.widget);\n }\n\n undo() {\n this.parent.children = this.parent.children || [];\n const index = this.parent.children.indexOf(this.widget);\n if (index > -1) {\n this.parent.children.splice(index, 1);\n }\n }\n\n description() {\n return `Added widget ${this.widget.name}`;\n }\n\n icon() {\n return `fa-solid fa-square-plus`;\n }\n\n getExecutionSelection() {\n return this.widget; // After executing, select the newly added widget\n }\n\n getUndoSelection() {\n return this.previousSelection; // After undo, select the previously selected widget\n }\n}\n\n\nexport class RemoveWidgetCommand implements Command {\n private widget: AXPWidgetNode;\n private parent: AXPWidgetNode;\n private previousSelection: AXPWidgetNode;\n private index: number;\n\n constructor(widget: AXPWidgetNode, parent: AXPWidgetNode, previousSelection: AXPWidgetNode) {\n this.widget = widget;\n this.parent = parent;\n this.previousSelection = previousSelection;\n parent.children = parent.children || [];\n this.index = parent.children.indexOf(widget); // Capture the index for undo purposes\n }\n\n execute() {\n this.parent.children = this.parent.children || [];\n this.index = this.parent.children.indexOf(this.widget); // Re-assert the index in case it has changed\n this.parent.children.splice(this.index, 1);\n }\n\n undo() {\n this.parent.children = this.parent.children || [];\n this.parent.children.splice(this.index, 0, this.widget); // Reinsert at the original index\n }\n\n description() {\n return `Removed widget ${this.widget.name}`;\n }\n\n icon() {\n return `fa-solid fa-square-minus`;\n }\n\n getExecutionSelection() {\n return this.previousSelection; // Typically the parent or a nearby sibling could be focused\n }\n\n getUndoSelection() {\n return this.widget; // Select the widget itself when the operation is undone\n }\n}\n\nexport class UpdateWidgetCommand implements Command {\n private widget: AXPWidgetNode;\n private previousState: AXPWidgetNode;\n private newState: AXPWidgetNode;\n private previousSelection: AXPWidgetNode;\n\n constructor(widget: AXPWidgetNode, values: Partial<AXPWidgetNode>, previousSelection: AXPWidgetNode) {\n this.widget = widget;\n this.newState = merge(cloneDeep(widget), values);\n this.previousSelection = previousSelection;\n this.previousState = cloneDeep(widget);\n }\n\n execute() {\n merge(this.widget, this.newState)\n }\n\n undo() {\n this.deepPruneAndRestore(this.widget, this.previousState);\n }\n\n description() {\n return `Updated widget ${this.widget.name}`;\n }\n\n icon() {\n return `fa-solid fa-pen-to-square`;\n }\n\n getExecutionSelection() {\n return this.widget; // Focus the widget after it's updated\n }\n\n getUndoSelection() {\n return this.previousSelection; // Restore the focus to where it was before the update\n }\n\n private deepPruneAndRestore(current: any, original: any) {\n Object.keys(current).forEach(key => {\n if (original.hasOwnProperty(key)) {\n if (typeof current[key] === 'object' && current[key] !== null && !(current[key] instanceof Array)) {\n this.deepPruneAndRestore(current[key], original[key]);\n }\n } else {\n delete current[key]; // Remove properties not present in original\n }\n });\n\n // Restore the original properties\n merge(current, original);\n }\n}\n\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CommandManager {\n private undoStack = signal<Command[]>([]);\n private currentIndex = signal<number>(-1);\n public readonly selectedNode = signal<AXPWidgetNode | null>(null);\n\n public canUndo = computed(() => this.currentIndex() >= 0)\n public canRedo = computed(() => this.currentIndex() < this.undoStack().length - 1)\n\n executeCommand(command: Command) {\n // Check if the currentIndex is not at the end of the undoStack\n if (this.currentIndex() !== this.undoStack().length - 1) {\n // Remove all commands beyond the current index to discard the \"future\" commands\n const newUndoStack = this.undoStack().slice(0, this.currentIndex() + 1);\n this.undoStack.set(newUndoStack);\n }\n\n command.execute();\n this.undoStack.set([...this.undoStack(), command]); // Add the new command to the stack\n this.currentIndex.set(this.undoStack().length - 1); // Update currentIndex to the end of the stack\n this.selectedNode.set(command.getExecutionSelection()); // Update the selected node\n }\n\n undo() {\n if (this.currentIndex() >= 0) {\n const command = this.undoStack()[this.currentIndex()];\n command.undo();\n this.currentIndex.set(this.currentIndex() - 1);\n if (this.currentIndex() >= 0) {\n this.selectedNode.set(this.undoStack()[this.currentIndex()].getUndoSelection());\n } else {\n this.selectedNode.set(null); // No selection if all commands are undone\n }\n }\n }\n\n redo() {\n if (this.currentIndex() < this.undoStack().length - 1) {\n this.currentIndex.set(this.currentIndex() + 1);\n const command = this.undoStack()[this.currentIndex()];\n command.execute();\n this.selectedNode.set(command.getExecutionSelection());\n }\n }\n\n goToCommand(index: number) {\n if (index < 0 || index >= this.undoStack().length || index === this.currentIndex()) {\n return; // Out of bounds or already at the desired index\n }\n\n if (index > this.currentIndex()) {\n // Need to redo until reaching the desired index\n while (this.currentIndex() < index) {\n this.redo();\n }\n } else {\n // Need to undo until reaching the desired index\n while (this.currentIndex() > index) {\n this.undo();\n }\n }\n\n // Optionally update any UI components or state here\n this.selectedNode.set(this.undoStack()[this.currentIndex()].getExecutionSelection());\n }\n\n public history = computed(() => this.undoStack().map((cmd, index) => (\n {\n description: cmd.description(),\n icon: cmd.icon(),\n isPast: this.currentIndex() > index,\n isFuture: this.currentIndex() < index,\n isCurrent: this.currentIndex() == index\n }\n )))\n\n\n public clear() {\n this.undoStack.set([]);\n this.currentIndex.set(-1);\n }\n}","import { Injectable } from \"@angular/core\";\n\n\nexport interface AXPDesignerContent {\n json: string,\n html?: string\n}\n\n@Injectable()\nexport abstract class AXPDesignerConnector<T = string> {\n\n public abstract save(id: string, content: AXPDesignerContent): Promise<boolean>;\n\n public abstract saveAs(content: AXPDesignerContent): Promise<boolean>;\n\n public abstract load(id: T): Promise<string | null>;\n}","import { AXMenuItem } from '@acorex/components/menu';\nimport { assign, cloneDeep } from 'lodash-es';\n\nexport const AXP_DESIGNER_COPY_MENU: AXMenuItem = {\n text: 'Copy',\n name: 'copy',\n icon: 'fa-solid fa-copy',\n suffix: {\n text: 'Ctrl+C',\n },\n};\n\nexport const AXP_DESIGNER_CLONE_MENU: AXMenuItem = {\n text: 'Clone',\n name: 'clone',\n icon: 'fa-solid fa-clone',\n suffix: {\n text: 'Ctrl+D',\n },\n};\n\nexport const AXP_DESIGNER_CUT_MENU: AXMenuItem = {\n text: 'Cut',\n name: 'cut',\n icon: 'fa-solid fa-cut',\n suffix: {\n text: 'Ctrl+X',\n },\n};\n\nexport const AXP_DESIGNER_PASTE_MENU: AXMenuItem = {\n text: 'Paste',\n name: 'paste',\n icon: 'fa-solid fa-paste',\n suffix: {\n text: 'Ctrl+V',\n },\n};\n\nexport const AXP_DESIGNER_ADD_WIDGET_MENU: AXMenuItem = {\n text: 'Add Widget',\n name: 'add-widget',\n icon: 'fa-solid fa-plus',\n};\n\nexport const AXP_DESIGNER_SELECT_WIDGET_MENU: AXMenuItem = {\n text: 'Select',\n name: 'select',\n break: true,\n icon: 'fa-solid fa-arrow-pointer',\n}\n\nexport const AXP_DESIGNER_DELETE_WIDGET_MENU: AXMenuItem = {\n text: 'Delete',\n name: 'remove-widget',\n icon: 'fa-solid fa-trash',\n};\n\nexport const AXP_DESIGNER_SAVE_AS_WIDGET_MENU: AXMenuItem = {\n text: 'Save As...',\n name: 'save-as',\n icon: 'fa-solid fa-save',\n};\n\n\nexport function cloneWidgetMenu(item: AXMenuItem, options?: Partial<AXMenuItem>): AXMenuItem {\n return assign(cloneDeep(item), options);\n}\n","import { AXMenuItem } from \"@acorex/components/menu\";\nimport { AXPWidgetNode } from \"@acorex/platform/layout/builder\";\n\nexport type AXPDesignerMode =\n | { id: 'designer'; title: 'Designer' }\n | { id: 'view'; title: 'View' }\n | { id: 'edit'; title: 'Edit' };\n\nexport class AXPDesignerModes {\n static readonly View: AXPDesignerMode = { id: 'view', title: 'View' };\n static readonly Design: AXPDesignerMode = { id: 'designer', title: 'Designer' };\n static readonly Edit: AXPDesignerMode = { id: 'edit', title: 'Edit' };\n}\n\n\nexport enum AXPTemplateLoadingStrategy {\n Connector = \"Connector\",\n Broadcast = \"Broadcast\",\n}\n\n\n\nexport interface AXPDesignerWidgetComponent {\n onContextMenu(context: { items: AXMenuItem[] }): void\n executeCommand(command: { name: string, data?: any, handled: boolean }): Promise<void>\n}\n\nexport interface AXPDesignerPreviewMessage {\n id: string,\n document: AXPWidgetNode\n}\n\nexport interface AXPDesignerSaveFormMessage {\n id: string,\n success: boolean,\n content?: string\n}\n\nexport const AXPDesignerMessageKeys =\n{\n Preview: \"designer-preview\",\n Loaded: \"designer-preview-loaded\",\n ContextChanged: \"designer-preview-context-changed\",\n PreviewWindow: \"designer-open-preview-window\",\n RequestFormContent: \"designer-request-form-content\",\n ResponseFormContent: \"designer-response-form-content\",\n SaveForm: 'designer-save-form-content',\n FormSaved: 'designer-form-saved-content',\n}","import { AXPopupService } from '@acorex/components/popup';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport {\n AXPWidgetConfig,\n AXPWidgetGroupEnum,\n AXPWidgetNode,\n AXPWidgetRegistryService,\n} from '@acorex/platform/layout/builder';\nimport { inject, Injectable } from '@angular/core';\nimport { sortBy } from 'lodash-es';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPWidgetPickerService {\n private popupService = inject(AXPopupService);\n private widgetRegistryService = inject(AXPWidgetRegistryService);\n private translationService = inject(AXTranslationService);\n\n async showPicker(options: { groups: AXPWidgetGroupEnum[] }): Promise<AXPWidgetNode[]> {\n const com = await import('./widget-picker.component').then((c) => c.AXPDesignerWidgetPickerComponent);\n const widgets = this.widgetRegistryService.all();\n const filteredWidgets = widgets.filter((c) => options.groups.some((d) => c.groups?.includes(d)));\n //\n const result = await this.popupService.open(com, {\n title: await this.translationService.translateAsync('widget-picker.title', { scope: 'form-template-management' }),\n size: 'md',\n closeButton: true,\n data: {\n widgets: sortBy(filteredWidgets, (c) => c.title),\n },\n });\n //\n const selectedWidgets = (result.data?.widgets ?? []) as AXPWidgetConfig[];\n\n return selectedWidgets.map((c) => ({\n type: c.name as any,\n meta: c.meta,\n }));\n }\n}\n","import { AXLoadingDialogButtonItem, AXLoadingDialogService } from '@acorex/components/loading-dialog';\nimport { AXMenuItem } from '@acorex/components/menu';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXFileService } from '@acorex/core/file';\nimport {\n AXPBaseWidgetComponent,\n AXPValueWidgetComponent,\n AXPWidgetConfig,\n AXPWidgetGroupEnum,\n AXPWidgetNode,\n AXPWidgetRegistryService,\n AXPWidgetsCatalog,\n} from '@acorex/platform/layout/builder';\nimport { computed, effect, inject, Injectable, signal } from '@angular/core';\nimport { cloneDeep, get, isEmpty, isNil, isNull, merge, result, set, sortBy } from 'lodash-es';\nimport { Subject } from 'rxjs';\nimport { AddWidgetCommand, CommandManager, RemoveWidgetCommand, UpdateWidgetCommand } from './command';\nimport { AXPDesignerConnector } from './designer-connector.service';\nimport {\n AXP_DESIGNER_ADD_WIDGET_MENU,\n AXP_DESIGNER_CLONE_MENU,\n AXP_DESIGNER_COPY_MENU,\n AXP_DESIGNER_CUT_MENU,\n AXP_DESIGNER_DELETE_WIDGET_MENU as AXP_DESIGNER_DELETE_WIDGET_MENU,\n AXP_DESIGNER_PASTE_MENU,\n AXP_DESIGNER_SAVE_AS_WIDGET_MENU,\n AXP_DESIGNER_SELECT_WIDGET_MENU,\n cloneWidgetMenu,\n} from './generic-commands.types';\nimport { AXPDesignerMessageKeys, AXPDesignerPreviewMessage, AXPDesignerSaveFormMessage, AXPDesignerWidgetComponent, AXPTemplateLoadingStrategy } from './designer.types';\nimport { AXPBroadcastEventService } from '@acorex/platform/core';\nimport { AXPWidgetPickerService } from '../components/widget-picker/widget-picker.service';\nexport type AXPDesignerPreviewSize = 'sm' | 'md' | 'lg' | 'xl' | 'xxl';\n\nexport interface AXPDesignerFocusCommand {\n widget: AXPWidgetNode | null;\n}\n\nexport interface AXPDesignerUpdateCommand {\n values: any;\n widget?: AXPWidgetNode | null;\n mode: 'init' | 'update';\n}\nexport interface AXPDesignerUpdateEvent {\n values: any;\n widget: AXPWidgetNode;\n}\n\nexport interface AXPDesignerSelectCommand {\n widget: AXPWidgetNode;\n}\n\nexport interface AXPDesignerRegisterCommand {\n id: number;\n widget: AXPWidgetNode;\n config: AXPWidgetConfig;\n instance: AXPBaseWidgetComponent;\n}\n\nexport interface AXPDesignerSelectEvent {\n widget: AXPWidgetNode;\n}\n\nexport interface AXPDesignerRefreshCommand {\n widget: AXPWidgetNode;\n}\nexport interface AXPDesignerRefreshEvent {\n widget: AXPWidgetNode;\n}\n\nexport interface AXPDesignerAddNodeCommand {\n widget: AXPWidgetNode;\n}\nexport interface AXPDesignerAddNodeEvent {\n widget: AXPWidgetNode;\n}\n\nexport interface AXPDesignerFocusEvent {\n widget: AXPWidgetNode | null;\n}\n\n@Injectable()\nexport class AXPDesignerService {\n private popupService = inject(AXPopupService);\n private toastService = inject(AXToastService);\n private fileService = inject(AXFileService);\n private loadingService = inject(AXLoadingDialogService);\n private widgetRegisteryService = inject(AXPWidgetRegistryService);\n private connector = inject(AXPDesignerConnector);\n private eventService = inject(AXPBroadcastEventService);\n private widgetPickerService = inject(AXPWidgetPickerService);\n\n\n public readonly document = signal(this.createDoc());\n public readonly currentPageIndex = signal(0);\n\n public readonly currentPage = signal(this.document().children?.[0] as AXPWidgetNode);\n\n private commandManager = inject(CommandManager);\n\n private clipboard = signal<AXPWidgetNode | null>(null);\n\n //\n public canCutCopy = computed(() => this.can(this.selectedNode()).copyOrCut);\n public canDelete = computed(() => this.can(this.selectedNode()).delete);\n public canInsert = computed(() => this.can(this.selectedNode()).insert);\n public canPaste = computed(() => this.can(this.selectedNode()).paste);\n //\n public readonly history = computed(() => this.commandManager.history());\n public readonly canUndo = computed(() => this.commandManager.canUndo());\n public readonly canRedo = computed(() => this.commandManager.canRedo());\n //\n public readonly canSave = computed(() => this.templateId() != null);\n\n public readonly unsavedChanges = signal(false);\n\n public breadcrumbs = computed<AXPWidgetNode[]>(() => {\n return this.selectedNode() ? this.findBreadcrumbs(this.currentPage(), this.selectedNode()) ?? [] : [];\n });\n\n public selectedNode = signal<AXPWidgetNode | null>(null);\n\n public selectedNodeConfig = computed(() => get(this.selectedNode(), '__meta__.config') as any as AXPWidgetConfig);\n\n private _focusedNode: AXPWidgetNode | null = null;\n public focusedNode = () => this._focusedNode;\n\n public readonly size = signal<AXPDesignerPreviewSize>('xl');\n\n public readonly onSelected = new Subject<AXPDesignerSelectEvent>();\n public readonly onRefresh = new Subject<AXPDesignerRefreshEvent>();\n public readonly onUpdate = new Subject<AXPDesignerUpdateEvent>();\n public readonly onFocused = new Subject<AXPDesignerFocusEvent>();\n\n private templateId = signal<string | null>(null);\n\n private loadingStrategy = signal<AXPTemplateLoadingStrategy>(AXPTemplateLoadingStrategy.Connector);\n\n #ef = effect(\n () => {\n this.refresh({ widget: this.currentPage() });\n }\n );\n\n constructor() {\n this.eventService.listen(AXPDesignerMessageKeys.Loaded).subscribe(() => {\n this.updatePreview();\n })\n //\n this.eventService.listen(AXPDesignerMessageKeys.PreviewWindow).subscribe(() => {\n this.openPreviewWindow();\n });\n //\n // window.addEventListener(\"beforeunload\", (event) => {\n // console.log(\"Window is before closing...\");\n // // event.preventDefault();\n // // event.returnValue = 'abc'; // Some browsers require this to show the prompt.\n // });\n window.addEventListener(\"unload\", async () => {\n console.log(\"Window is closing...\");\n if (this.unsavedChanges()) {\n this.eventService.publish<AXPDesignerSaveFormMessage>(AXPDesignerMessageKeys.SaveForm, { id: this.templateId()!, success: false });\n }\n this.unsubscribeEvents();\n });\n }\n\n\n private can = (widget: AXPWidgetNode | null): {\n delete: boolean,\n copyOrCut: boolean,\n insert: boolean,\n paste: boolean,\n } => {\n if (!widget) {\n return {\n delete: false,\n copyOrCut: false,\n insert: false,\n paste: false,\n }\n }\n const config = get(widget, '__meta__.config') as any as AXPWidgetConfig;\n return {\n delete: widget.type != 'page-layout',\n copyOrCut: widget.type != 'page-layout',\n paste: this.clipboard() != null && config.type == 'container' && config.designer?.canInsert != false,\n insert: config.type == 'container' && config.designer?.canInsert != false,\n }\n }\n\n\n\n public register(command: AXPDesignerRegisterCommand): void {\n this.select({ widget: command.widget });\n }\n\n public select(command: AXPDesignerSelectCommand): void {\n this.selectedNode.set(command.widget);\n this.onSelected.next(command);\n }\n\n public update(command: AXPDesignerUpdateCommand): void {\n const node = command.widget ?? this.selectedNode();\n\n if (command.mode == 'update' && node) {\n this.commandManager.executeCommand(new UpdateWidgetCommand(node!, command.values, node!));\n }\n //this.selectedNode.update((c) => merge(node, command.values));\n this.onUpdate.next({ widget: node!, values: command.values });\n this.unsavedChanges.set(true);\n this.updatePreview();\n }\n\n public focus(command: AXPDesignerFocusCommand): void {\n if (this._focusedNode != command.widget) {\n this._focusedNode = command.widget;\n this.onFocused.next({ widget: this._focusedNode });\n }\n }\n\n public refresh(command: AXPDesignerRefreshCommand) {\n this.onRefresh.next({ widget: command.widget });\n this.updatePreview();\n }\n\n private findBreadcrumbs(\n node: AXPWidgetNode,\n targetNode?: AXPWidgetNode | null,\n breadcrumb: AXPWidgetNode[] = []\n ): AXPWidgetNode[] | undefined {\n // Add the current node to the breadcrumb path\n const currentBreadcrumb = [...breadcrumb, node];\n\n // Check if the current node is the target node\n if (node === targetNode) {\n return currentBreadcrumb;\n }\n\n // If the node has children, recursively search them\n if (node.children) {\n for (const child of node.children) {\n const result = this.findBreadcrumbs(child, targetNode, currentBreadcrumb);\n if (result) {\n return result;\n }\n }\n }\n\n // Return undefined if no match is found\n return undefined;\n }\n\n async showPicker(currentNode: AXPWidgetNode = this.selectedNode()!): Promise<AXPWidgetNode[]> {\n const widgets = await this.widgetPickerService.showPicker({ groups: [AXPWidgetGroupEnum.FormElement] });\n const result: AXPWidgetNode[] = [];\n if (widgets.length) {\n widgets.forEach((c) => {\n result.push(this.addWidget(currentNode, { type: c.type })!);\n });\n }\n return result;\n }\n\n public new() {\n this.commandManager.clear();\n this.document.set(this.createDoc());\n this.currentPage.set(this.document().children?.[0]!);\n this.reRenderPage();\n }\n\n private createDoc(): AXPWidgetNode {\n const doc: AXPWidgetNode = {\n type: AXPWidgetsCatalog.document,\n children: [this.createPage()],\n name: 'document',\n };\n set(doc, '__meta__.id', this.generateUniqueId());\n return doc;\n }\n\n private createPage(): AXPWidgetNode {\n const config = this.widgetRegisteryService.resolve('page-layout');\n\n const page: AXPWidgetNode = {\n type: 'page-layout',\n children: [],\n name: 'page-layout1',\n };\n\n set(page, '__meta__.id', this.generateUniqueId());\n set(page, '__meta__.config', config);\n return page;\n }\n\n public addNewPage() {\n this.addWidget(this.document(), this.createPage());\n this.goToPage(this.currentPageIndex() + 1);\n }\n\n public removePage(index: number) {\n const page = this.document().children?.[index]!;\n this.removeWidget(page);\n this.goToPage(index - 1);\n }\n\n public clonePage(index: number) {\n const page = this.document().children?.[index]!;\n this.clone(page);\n this.goToPage((this.document().children?.length ?? 1) - 1);\n }\n\n public goToPage(index: number) {\n this.currentPageIndex.set(index);\n this.currentPage.set(this.document().children?.[this.currentPageIndex()]!);\n this.select({ widget: this.currentPage() });\n }\n\n private reRenderPage() {\n this.currentPage.set({ ...this.currentPage() });\n setTimeout(() => {\n this.refresh({ widget: this.currentPage() });\n });\n }\n\n public findWidgetById(root: AXPWidgetNode, id: string): AXPWidgetNode | null {\n if (get(root, '__meta__.id') === id) {\n return root; // Return the root if it matches the ID\n }\n if (!root.children) return null;\n\n for (const child of root.children) {\n const found = this.findWidgetById(child, id);\n if (found) {\n return found; // Return the found child\n }\n }\n\n return null; // Node not found\n }\n\n private findParent(id: string, parent: AXPWidgetNode = this.currentPage()): AXPWidgetNode | null {\n if (!parent.children) return null;\n\n if (parent.children.some((child) => get(child, '__meta__.id') === id)) {\n return parent; // Return this node as it's the parent of the node with the given ID\n }\n\n for (const child of parent.children) {\n const foundParent = this.findParent(id, child);\n if (foundParent) return foundParent;\n }\n\n return null; // No parent found\n }\n\n private findNearestContainer(node: AXPWidgetNode, searchUpward = true): AXPWidgetNode | null {\n if (searchUpward) {\n let current: AXPWidgetNode | null = node;\n while (current) {\n const config = this.widgetRegisteryService.resolve(current.type);\n if (config && config.type == 'container') {\n return current;\n }\n current = this.findParent(get(current, '__meta__.id')!); // Use findParent to navigate upwards\n }\n } else {\n // Recursive search to find the first container among children\n if (node.children) {\n for (const child of node.children) {\n const config = this.widgetRegisteryService.resolve(child.type);\n if (config && config.type == 'container') {\n return child;\n }\n const foundContainer = this.findNearestContainer(child, false); // Continue searching downwards\n if (foundContainer) return foundContainer;\n }\n }\n }\n return null; // Return null if no container found\n }\n\n addWidget(currentNode: AXPWidgetNode, node: AXPWidgetNode): AXPWidgetNode {\n //\n const cloned = cloneDeep(node);\n const config = this.widgetRegisteryService.resolve(node.type);\n\n //\n this.commandManager.executeCommand(new AddWidgetCommand(cloned, currentNode, currentNode));\n //\n cloned.name = this.generateUniqueName(node.type);\n set(cloned, '__meta__.id', this.generateUniqueId());\n set(cloned, '__meta__.config', config);\n set(cloned, '__meta__.added', true);\n //\n this.reRenderPage();\n //\n this.refresh({ widget: currentNode });\n this.select({ widget: cloned });\n\n return cloned;\n }\n\n public removeWidget(node: AXPWidgetNode = this.selectedNode()!): void {\n if (\n node.type === 'document-layout' ||\n (node.type === 'page-layout' && (this.document().children?.length ?? 1) == 1)\n ) {\n console.error('Cannot remove the page node.');\n return; // Prevent removing the root page node or document\n }\n\n const nodeIdToRemove = get(node, '__meta__.id');\n if (!nodeIdToRemove) {\n throw new Error('Node does not have a valid __meta__.id to identify it for removal.');\n }\n\n // Find the parent of the node to remove it\n const parent = this.findParent(nodeIdToRemove, this.document());\n if (!parent) {\n throw new Error('Parent node not found. The node might be the root node or does not exist.');\n }\n\n const previousSelection = this.selectedNode(); // Capture the currently selected node before removal\n const command = new RemoveWidgetCommand(node, parent, previousSelection!);\n this.commandManager.executeCommand(command);\n\n this.refresh({ widget: parent }); // Refresh the UI to reflect changes\n this.select({ widget: parent }); // Select the parent node after removal\n }\n\n navigateTo(index: number) {\n this.commandManager.goToCommand(index);\n this.reRenderPage();\n const currentSelection = this.commandManager.selectedNode();\n this.refresh({ widget: this.currentPage() });\n this.select({ widget: currentSelection! });\n }\n\n public redo() {\n this.commandManager.redo();\n this.reRenderPage();\n const currentSelection = this.commandManager.selectedNode();\n this.refresh({ widget: this.currentPage() });\n this.select({ widget: currentSelection! });\n }\n\n public undo() {\n this.commandManager.undo();\n this.reRenderPage();\n const currentSelection = this.commandManager.selectedNode();\n this.refresh({ widget: this.currentPage() });\n this.select({ widget: currentSelection! });\n }\n\n public clearHistory() {\n this.commandManager.clear();\n }\n\n private removeMetaProp(obj: any): any {\n const nodeName = '__meta__';\n // Check if the object is an array\n if (Array.isArray(obj)) {\n return obj.map((item) => this.removeMetaProp(item));\n } else if (typeof obj === 'object' && obj !== null) {\n // Create a new object to store the result\n let newObj: any = {};\n for (let key in obj) {\n // Only add the key if it's not the nodeName we want to remove\n if (key !== nodeName) {\n newObj[key] = this.removeMetaProp(obj[key]);\n }\n }\n return newObj;\n }\n // If the value is not an object or array, return it as is\n return obj;\n }\n\n private async addMetaToNodes(\n node: AXPWidgetNode,\n processedNodes: { count: number },\n progressCallback: (processed: number) => void\n ): Promise<AXPWidgetNode> {\n // Apply your meta logic here\n const config = this.widgetRegisteryService.resolve(node.type);\n //\n set(node, '__meta__.id', this.generateUniqueId());\n set(node, '__meta__.config', config);\n //\n // Increment the processed node count and update the progress dialog\n processedNodes.count++;\n progressCallback(processedNodes.count);\n // Recursively process child nodes using Promise.all\n if (node.children && node.children.length > 0) {\n node.children = await Promise.all(\n node.children.map(async (child) => await this.addMetaToNodes(child, processedNodes, progressCallback))\n );\n }\n return node;\n }\n\n public copy(widget: AXPWidgetNode | null = this.selectedNode()): void {\n if (this.can(widget).copyOrCut) {\n this.clipboard.set(cloneDeep(widget)); // Use lodash's cloneDeep to ensure a deep copy\n }\n }\n\n public cut(widget: AXPWidgetNode | null = this.selectedNode()): void {\n if (this.can(widget).copyOrCut) {\n this.copy(widget); // Copy the widget to the clipboard\n this.removeWidget(widget!); // Reuse the removeWidget method which should handle undo internally\n }\n }\n\n public clone(widget: AXPWidgetNode | null = this.selectedNode()): void {\n if (!widget) return;\n this.copy(widget); // Copy the widget to the clipboard\n if (widget.type == 'page-layout') {\n this.paste(this.document());\n } else {\n this.paste(widget!);\n }\n }\n\n public paste(parentNode: AXPWidgetNode | undefined = this.selectedNode() ?? this.currentPage()): void {\n if (!this.clipboard() || !this.selectedNode() || !parentNode) {\n console.error('Clipboard is empty or no node is selected.');\n return;\n }\n const newNode = cloneDeep(this.clipboard() as AXPWidgetNode);\n const nearestContainer = this.findNearestContainer(parentNode, true);\n if (!nearestContainer) {\n console.error('No suitable container found.');\n return;\n }\n //\n if (!nearestContainer.children) {\n nearestContainer.children = [];\n }\n //\n const setNameId = (node: AXPWidgetNode) => {\n set(node, 'name', this.generateUniqueName(node.type));\n set(node, '__meta__.id', this.generateUniqueId());\n node.children?.forEach((n) => {\n setNameId(n);\n });\n };\n setNameId(newNode);\n //\n this.commandManager.executeCommand(new AddWidgetCommand(newNode, nearestContainer, nearestContainer));\n //\n setTimeout(() => {\n this.refresh({ widget: nearestContainer }); // Refresh the UI\n this.select({ widget: newNode }); // Select the newly pasted node\n });\n }\n\n async save() {\n if (this.templateId()) {\n const content = this.export();\n if (this.loadingStrategy() == AXPTemplateLoadingStrategy.Connector) {\n await this.connector.save(this.templateId()!, { json: content });\n this.toastService.success('Your changes saved successfully');\n }\n else {\n const result = await this.eventService.sendAndWaitForResponse<AXPDesignerSaveFormMessage, { success: boolean }>(AXPDesignerMessageKeys.SaveForm, { id: this.templateId()!, success: true, content });\n if (result.success) {\n this.unsavedChanges.set(false);\n window.close();\n }\n }\n } else {\n this.downloadJson();\n }\n }\n\n async saveAs(node: AXPWidgetNode = this.document()) {\n const content = this.export(node);\n const result = await this.connector.saveAs({ json: content });\n if (result) {\n this.toastService.success('Your changes saved successfully');\n }\n }\n\n export(node: AXPWidgetNode = this.document()): string {\n const json = this.removeMetaProp(node);\n return JSON.stringify(json);\n }\n\n downloadJson() {\n // Convert the object to a JSON string\n const jsonStr = this.export();\n\n // Create a blob object from the JSON string\n const blob = new Blob([jsonStr], { type: 'application/json' });\n\n // Create a URL for the blob object\n const url = URL.createObjectURL(blob);\n\n // Create a temporary <a> element to trigger the download\n const a = document.createElement('a');\n a.href = url;\n a.download = 'export.json';\n\n // Append the <a> element to the document body (necessary for some browsers)\n document.body.appendChild(a);\n\n // Trigger the download by clicking the <a> element\n a.click();\n // Clean up by revoking the object URL and removing the <a> element\n URL.revokeObjectURL(url);\n document.body.removeChild(a);\n }\n\n async loadById(id: string, options: { strategy: AXPTemplateLoadingStrategy } = { strategy: AXPTemplateLoadingStrategy.Connector }) {\n let content: string | null = null;\n try {\n if (options.strategy == AXPTemplateLoadingStrategy.Connector) {\n content = await this.connector.load(id);\n }\n else {\n content = await this.eventService.sendAndWaitForResponse<{ formId: string }, string>(AXPDesignerMessageKeys.RequestFormContent, { formId: id }, { timeout: 10000, retries: 3, retryDelay: 1000 });\n }\n if (!isNil(content) && !isEmpty(content)) {\n await this.loadByContent(content!);\n }\n this.templateId.set(id);\n this.loadingStrategy.set(options.strategy);\n } catch (error: any) {\n this.toastService.danger(error.message);\n }\n }\n\n async importJSon() {\n const files = await this.fileService.choose({ multiple: false, accept: 'application/json' });\n if (files && files.length) {\n const file = files[0];\n const content = await file.text();\n await this.loadByContent(content);\n }\n }\n\n async loadByContent(content: string) {\n const rootNode = JSON.parse(content) as AXPWidgetNode;\n const totalNode = this.countTotalNodes(rootNode);\n const processedNodes = { count: 0 };\n\n const button: AXLoadingDialogButtonItem = {\n text: 'Cancel',\n autofocus: true,\n color: 'primary',\n onClick: (e) => {\n dialog.close();\n },\n };\n\n const dialog = this.loadingService.show({\n mode: 'determinate',\n title: 'Loading Content',\n progressColor: 'primary',\n text: 'Processing content',\n status: `0 of ${totalNode}`,\n buttons: [button],\n });\n\n try {\n const root = await this.addMetaToNodes(rootNode, processedNodes, (count) => {\n dialog.setProgressValue(Math.ceil((count / totalNode) * 100));\n dialog.setProgressStatus(`${count} of ${totalNode}`);\n });\n\n const page = root.children?.[0]!;\n this.document.set(root);\n this.currentPage.set(page);\n\n dialog.setProgressColor('success');\n dialog.setProgressText('Content loaded successfully');\n button.text = 'Okay';\n button.color = 'success';\n dialog.setProgressValue(100);\n\n setTimeout(() => {\n this.reRenderPage();\n dialog.close();\n }, 250);\n } catch (error: any) {\n dialog.setProgressColor('danger');\n dialog.setProgressText(error instanceof Error ? error.message : 'Cannot load content');\n button.text = 'Close';\n button.color = 'danger';\n }\n }\n\n private countTotalNodes(node: AXPWidgetNode): number {\n let count = 1; // Count the current node\n if (node.children && node.children.length > 0) {\n count += node.children.reduce((sum, child) => sum + this.countTotalNodes(child), 0);\n }\n return count;\n }\n\n private generateUniqueName(type: string): string {\n // Normalize the type to follow camelCase convention\n const baseName = type.charAt(0).toLowerCase() + type.slice(1);\n let index = 1;\n let uniqueName = `${baseName}${index}`;\n\n // Gather all existing names to check against\n const existingNames = new Set<string>();\n this.collectAllNames(this.document(), existingNames);\n\n // Increment the index until a unique name is found\n while (existingNames.has(uniqueName)) {\n index++;\n uniqueName = `${baseName}${index}`;\n }\n\n return uniqueName;\n }\n\n generateUniqueId(): number {\n return Math.random() * Math.pow(10, 18);\n }\n\n private collectAllNames(node: AXPWidgetNode, names: Set<string>): void {\n if (node.name) {\n names.add(node.name);\n }\n if (node.children) {\n for (const child of node.children) {\n this.collectAllNames(child, names);\n }\n }\n }\n\n public updatePreview() {\n this.eventService.publish<AXPDesignerPreviewMessage>(AXPDesignerMessageKeys.Preview, {\n id: this.templateId()!,\n document: this.removeMetaProp(this.document())\n });\n }\n\n public async openPreviewDialog() {\n const com = await import('../../preview/preview.component').then((c) => c.AXPLayoutDesignerPreviewComponent);\n await this.popupService.open(com, {\n header: false,\n size: 'full',\n data: {\n initialSize: this.size(),\n isDialogWindow: true,\n },\n });\n }\n\n public openPreviewWindow() {\n window.open('/forms/preview', '_blank');\n }\n\n\n\n getContextMenuItems(instance: AXPDesignerWidgetComponent, isRoot = false): AXMenuItem[] {\n const widget = instance as any as AXPValueWidgetComponent;\n const node = widget.node;\n\n const items: AXMenuItem[] = [];\n // \n if (this.can(node).insert) {\n items.push(cloneWidgetMenu(AXP_DESIGNER_ADD_WIDGET_MENU, {\n break: true,\n }));\n }\n //\n items.push(cloneWidgetMenu(AXP_DESIGNER_CLONE_MENU, { disabled: !this.can(node).copyOrCut }));\n items.push(cloneWidgetMenu(AXP_DESIGNER_CUT_MENU, { disabled: !this.can(node).copyOrCut }));\n items.push(cloneWidgetMenu(AXP_DESIGNER_COPY_MENU, { disabled: !this.can(node).copyOrCut }));\n items.push(cloneWidgetMenu(AXP_DESIGNER_PASTE_MENU, { disabled: !this.can(node).paste, break: true }));\n //\n items.push(cloneWidgetMenu(AXP_DESIGNER_DELETE_WIDGET_MENU, { disabled: !this.can(node).delete, break: true }));\n //\n items.push(cloneWidgetMenu(AXP_DESIGNER_SAVE_AS_WIDGET_MENU));\n if (instance.onContextMenu) {\n instance.onContextMenu({ items })\n }\n if (!isRoot) {\n items.forEach(item => {\n item.suffix = undefined;\n })\n }\n return items;\n }\n\n async executeCommand(context: { instance: AXPDesignerWidgetComponent, name: string, data?: any }): Promise<void> {\n const widget = context.instance as any as AXPValueWidgetComponent;\n if (context.instance.executeCommand) {\n const command: any = {\n name: context.name,\n data: context.data,\n handled: false\n }\n await context.instance.executeCommand(command);\n if (command.handled)\n return;\n }\n switch (context.name) {\n case AXP_DESIGNER_SELECT_WIDGET_MENU.name: {\n this.select({ widget: widget.node })\n break\n }\n case AXP_DESIGNER_ADD_WIDGET_MENU.name: {\n this.showPicker(widget.node);\n break\n }\n //\n case AXP_DESIGNER_DELETE_WIDGET_MENU.name: {\n this.removeWidget(widget.node);\n break\n }\n //\n case AXP_DESIGNER_CLONE_MENU.name: {\n this.clone(widget.node);\n break\n }\n case AXP_DESIGNER_CUT_MENU.name: {\n this.cut(widget.node);\n break\n }\n case AXP_DESIGNER_COPY_MENU.name: {\n this.copy(widget.node);\n break\n }\n case AXP_DESIGNER_PASTE_MENU.name: {\n this.paste(widget.node);\n break\n }\n //\n }\n }\n\n unsubscribeEvents() {\n this.eventService.unsubscribe(AXPDesignerMessageKeys.Loaded);\n this.eventService.unsubscribe(AXPDesignerMessageKeys.PreviewWindow);\n }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXClickEvent } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPLayoutWidgetComponent } from '@acorex/platform/layout/builder';\nimport { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { AXPDesignerService } from '../../shared/designer.service';\n\n@Component({\n selector: 'axp-designer-add-widget-button',\n styleUrls: ['./add-widget-button.component.scss'],\n template: `\n <div class=\"ax-container\">\n <ax-button [text]=\"'Add New Element'\" (onClick)=\"handleClick($event)\" [look]=\"'solid'\" [color]=\"'primary'\">\n <ax-icon icon=\"fa-solid fa-plus\"></ax-icon>\n </ax-button>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXButtonModule, AXDecoratorModule],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXPDesignerAddWidgetButtonComponent {\n private designerService = inject(AXPDesignerService);\n private parent = inject(AXPLayoutWidgetComponent);\n\n async handleClick(e: AXClickEvent) {\n e.nativeEvent.stopPropagation();\n await this.designerService.showPicker(this.parent.node);\n }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { ChangeDetectionStrategy, Component, input, output, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'axp-designer-add-widget-line-button',\n template: `\n <div class=\"ax-flex ax-items-center ax-py-4 ax-text-xs\">\n <div class=\"ax-flex-grow ax-border-t-2 ax-border-dashed ax-border-surface\"></div>\n <div class=\"ax-mx-2 ax-sm \">\n <ax-button [text]=\"text()\" [look]=\"'twotone'\" class=\"ax-capitalize\" (onClick)=\"handleClick()\">\n <ax-icon icon=\"fa-solid fa-plus\"></ax-icon>\n </ax-button>\n </div>\n <div class=\"ax-flex-grow ax-border-t-2 ax-border-dashed ax-border-surface\"></div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXButtonModule, AXDecoratorModule],\n encapsulation: ViewEncapsulation.None\n})\nexport class AXPDesignerAddWidgetLineButtonComponent {\n\n text = input();\n onClick = output();\n\n\n protected handleClick() {\n this.onClick.emit();\n }\n\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPLayoutWidgetComponent } from '@acorex/platform/layout/builder';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n inject,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AXPDesignerService } from '../../shared/designer.service';\n\n@Component({\n selector: 'axp-designer-add-widget-mini-button',\n template: `\n <div class=\"axp-empty-space\">\n <div\n class=\"ax-m-auto ax-py-4 ax-px-8 ax-text-primary-500 hover:ax-text-primary-700 ax-cursor-pointer\"\n (click)=\"handleClick($event)\"\n >\n <i class=\"fa-solid fa-plus \"></i>\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXButtonModule, AXDecoratorModule],\n encapsulation: ViewEncapsulation.None\n})\nexport class AXPDesignerAddWidgetMiniButtonComponent {\n private designerService = inject(AXPDesignerService);\n private parent = inject(AXPLayoutWidgetComponent);\n\n @Output()\n public onClick: EventEmitter<void> = new EventEmitter<void>();\n\n protected async handleClick(e: MouseEvent) {\n e.stopPropagation();\n const a = this.onClick;\n if (this.onClick.observed) {\n this.onClick.emit();\n } else {\n await this.designerService.showPicker(this.parent.node);\n }\n }\n\n @HostBinding('class')\n private get __class(): string {\n const cls: any = {};\n //\n cls[`ax-flex`] = true;\n cls[`ax-w-full`] = true;\n return cls;\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, HostBinding, HostListener, model, output, signal } from '@angular/core';\n\n@Component({\n selector: 'axp-designer-grid-drawer',\n styleUrls: ['./grid-drawer.component.scss'],\n template: `\n <table class=\"table-picker\" >\n <tbody>\n @for(r of rows();track $index)\n {\n <tr >\n @for(c of columns();track $index)\n {\n <td (mouseenter)=\"handleMouseHover(r,c)\" [class.picked]=\"c<=rangeC() && r<=rangeR()\" (click)=\"handleClick(r,c)\">\n </td>\n }\n </tr>\n }\n <tr>\n <td [attr.colspan]=\"columns().length\" class=\"ax-text-center\">\n <small >{{rangeC()}}*{{rangeR()}}</small>\n </td>\n </tr>\n </tbody>\n </table>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: []\n})\nexport class AXPDesignerGridDrawerComponent {\n\n rowsCount = model<number>(5, { alias: \"rows\" });\n colsCount = model<number>(12, { alias: \"columns\" });\n\n onSelect = output<{ rows: number, cols: number }>();\n\n\n protected rows = computed(() => Array.from({ length: this.rowsCount() }).map((v, index) => index + 1));\n protected columns = computed(() => Array.from({ length: this.colsCount() }).map((v, index) => index + 1));\n\n protected rangeR = signal(0);\n protected rangeC = signal(0);\n\n\n protected handleMouseHover(r: number, c: number) {\n this.rangeR.set(r);\n this.rangeC.set(c);\n }\n\n protected handleClick(r: number, c: number) {\n this.onSelect.emit({ rows: r, cols: c });\n }\n\n @HostListener('mouseleave', ['$event'])\n private handleMouseLeave(event: KeyboardEvent) {\n this.rangeR.set(0);\n this.rangeC.set(0);\n }\n\n @HostBinding('style')\n private get __style(): any {\n return {\n \"--cols-width\": `${this.colsCount() == 0 ? 0 : (100 / this.colsCount())}%`\n };\n }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXCommonModule } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXTabsModule, AXTabStripChangedEvent } from '@acorex/components/tabs';\nimport { AXPSettingService, AXPStickyDirective } from '@acorex/platform/common';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { AXP_WIDGETS_CATEGORIES, AXPWidgetConfig, AXPWidgetCategory } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { Component, computed, inject, model, signal, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { castArray, orderBy, uniqBy } from 'lodash-es';\n\nexport interface AXPDisplayWidgetConfig extends AXPWidgetConfig {\n pinned: boolean;\n}\n\n@Component({\n imports: [\n CommonModule,\n AXCommonModule,\n FormsModule,\n AXButtonModule,\n AXDecoratorModule,\n AXTabsModule,\n AXSearchBoxModule,\n AXPStickyDirective,\n ],\n templateUrl: './widget-picker.component.html',\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./widget-picker.component.scss'],\n})\nexport class AXPDesignerWidgetPickerComponent extends AXBasePageComponent {\n private settingService = inject(AXPSettingService);\n private readonly pinnedSettingKey = 'forms:widgets:picker:pinned';\n\n protected searchTerm = model('');\n\n // Signals\n private widgets: AXPWidgetConfig[] = [];\n private allWidgets = signal<AXPWidgetConfig[]>([]);\n private pinnedWidgets = signal<string[]>([]);\n\n private displayWidgets = computed<AXPDisplayWidgetConfig[]>(() => {\n return this.allWidgets().map((c) => ({ ...c, pinned: this.pinnedWidgets().includes(c.name) }));\n });\n\n // Signal to track selected widgets\n protected selectedWidgets = signal<AXPDisplayWidgetConfig[]>([]);\n\n // Computed for filtered and ordered widget list\n private orderedList = computed(() => {\n const search = this.searchTerm().toLowerCase();\n const selectedTabName = this.selectedTab().name;\n\n return orderBy(\n this.displayWidgets().filter((w) => {\n const matchesTab =\n selectedTabName === 'all' || castArray(w.categories ?? []).some((c) => c.name === selectedTabName);\n const matchesSearch =\n !search || w.title.toLowerCase().includes(search) || w.description?.toLowerCase().includes(search);\n return matchesTab && matchesSearch;\n }),\n ['pinned', 'title'],\n ['desc', 'asc'],\n );\n });\n\n // Pinned and regular lists\n protected pinnedList = computed(() => this.orderedList().filter((c) => c.pinned));\n protected regularList = computed(() => this.orderedList().filter((c) => !c.pinned));\n\n // Tabs for the widget groups\n protected categories = computed(() =>\n uniqBy(\n this.allWidgets()\n .map((w) => castArray(w.categories ?? []))\n .filter((c) => c.length > 0)\n .flat(),\n 'name',\n ),\n );\n\n protected tabs = computed<AXPWidgetCategory[]>(() =>\n orderBy([{ name: 'all', title: 'All', order: 0 }, ...this.categories()], (c) => c.order),\n );\n\n // computed max visible widgets in a tab\n protected maxVisibleWidgets = computed(() =>\n Math.max(\n ...this.categories().map(\n (c) => this.allWidgets().filter((w) => castArray(w.categories ?? []).some((c) => c.name === c.name)).length,\n ),\n ),\n );\n\n protected currentTabIndex = signal(0);\n protected selectedTab = computed(() => this.tabs()[this.currentTabIndex()]);\n\n protected override async ngOnInit() {\n super.ngOnInit();\n this.allWidgets.set(this.widgets);\n this.pinnedWidgets.set((await this.settingService.get<string[]>(this.pinnedSettingKey)) || []);\n }\n\n protected handleTabChange(event: AXTabStripChangedEvent): void {\n const indx = event.index;\n if (this.currentTabIndex() != indx) {\n this.currentTabIndex.set(indx);\n }\n }\n\n protected handleClick(event: MouseEvent, widget: AXPDisplayWidgetConfig) {\n if (event.ctrlKey) {\n const currentSelection = this.selectedWidgets();\n const isAlreadySelected = currentSelection.some((w) => w === widget);\n\n if (isAlreadySelected) {\n // Deselect widget if already selected\n this.selectedWidgets.set(currentSelection.filter((w) => w !== widget));\n } else {\n // Add widget to selection\n this.selectedWidgets.set([...currentSelection, widget]);\n }\n } else {\n // If CTRL is not pressed, select only the clicked widget\n this.close({ widgets: [widget] });\n }\n }\n\n protected async handlePinClick(e: MouseEvent, widget: AXPDisplayWidgetConfig) {\n e.stopPropagation();\n widget.pinned = !widget.pinned;\n // Get the current list of pinned widgets from settings\n let pinnedWidgets = (await this.settingService.get<string[]>(this.pinnedSettingKey)) || [];\n\n // Update the list of pinned widgets based on the pinned status\n if (widget.pinned) {\n if (!pinnedWidgets.includes(widget.name)) {\n pinnedWidgets.push(widget.name);\n }\n } else {\n pinnedWidgets = pinnedWidgets.filter((name) => name !== widget.name);\n }\n\n // Save the updated list of pinned widgets\n await this.settingService.scope(AXPPlatformScope.User).set(this.pinnedSettingKey, pinnedWidgets);\n\n // Trigger a re-render of the widgets\n this.pinnedWidgets.set(pinnedWidgets);\n }\n\n // Check if a widget is selected\n protected isWidgetSelected(widget: AXPDisplayWidgetConfig): boolean {\n return this.selectedWidgets().includes(widget);\n }\n\n protected handleConfirmSelection(): void {\n this.close({ widgets: this.selectedWidgets() });\n }\n}\n","<div\n class=\"ax-flex ax-flex-col ax-h-[95vh]\"\n [ngClass]=\"{ 'lg:ax-h-[75vh]': maxVisibleWidgets() > 10, 'lg:ax-h-[50vh]': maxVisibleWidgets() <= 10 }\"\n>\n <div>\n <ax-tabs [look]=\"'with-line'\" (onActiveTabChanged)=\"handleTabChange($event)\">\n @for(w of tabs();track $index) {\n <ax-tab-item [text]=\"w.title\" [key]=\"$index.toString()\" [active]=\"currentTabIndex() === $index\"></ax-tab-item>\n }\n </ax-tabs>\n </div>\n <div class=\"ax-overflow-auto\" #content>\n <div\n class=\"ax-p-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all\"\n #sticky=\"axpSticky\"\n [axpSticky]=\"'ax-bg-lightest ax-shadow-xl'\"\n [stickyParent]=\"content\"\n [stickyOffset]=\"10\"\n >\n <ax-search-box\n look=\"fill\"\n placeholder=\"e.g. Button, Text, ...\"\n [(ngModel)]=\"searchTerm\"\n [delayTime]=\"300\"\n [axAutoFocus]=\"true\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n <div class=\"ax-flex ax-flex-col ax-p-4 ax-pt-0\">\n <ng-template #itemTpl let-w>\n @let isSelected= isWidgetSelected(w);\n <div\n (click)=\"handleClick($event, w)\"\n class=\"ax-py-2 ax-px-3 ax-rounded-md ax-flex ax-gap-3 ax-items-center ax-group hover:ax-bg-primary-lightest/65 hover:ax-text-primary-on-lightest ax-cursor-pointer\"\n [class.ax-bg-primary-lightest]=\"isSelected\"\n [class.ax-text-primary-on-lightest]=\"isSelected\"\n [class.ax-border-primary-lightest]=\"isSelected\"\n >\n <div\n class=\"ax-w-10 ax-h-10 ax-flex ax-items-center ax-justify-center ax-rounded-md ax-border group-hover:ax-bg-primary-lighter group-hover:ax-text-primary-on-lighter group-hover:ax-border-primary-lighter\"\n [class.ax-bg-primary-light]=\"isSelected\"\n [class.ax-text-primary-on-light]=\"isSelected\"\n [class.ax-border-primary-light]=\"isSelected\"\n [class.ax-surface]=\"!isSelected\"\n >\n <i [ngClass]=\"w.icon\" class=\"ax-text-lg\"></i>\n </div>\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-flex-1\">\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <div class=\"ax-font-semibold ax-text-sm\">{{ w.title }}</div>\n <div (click)=\"handlePinClick($event, w)\">\n @if (w.pinned) {\n <i class=\"fa-solid fa-thumbtack ax-text-sm ax-rotate-45\"></i>\n } @else {\n <i class=\"fa-light fa-thumbtack ax-text-sm ax-rotate-45 ax-invisible group-hover:ax-visible\"></i>\n }\n </div>\n </div>\n <span class=\"ax-text-xs ax-truncate\">\n {{ w.description }}\n </span>\n </div>\n </div>\n </ng-template>\n <div class=\"ax-grid ax-grid-cols-2 ax-gap-2\">\n @for(w of pinnedList();track $index) {\n <ng-container *ngTemplateOutlet=\"itemTpl; context: { $implicit: w }\"></ng-container>\n }\n </div>\n @if(pinnedList().length) {\n <hr class=\"ax-my-4 ax-border-dashed\" />\n }\n <div class=\"ax-grid ax-grid-cols-2 ax-gap-2\">\n @for(w of regularList();track $index) {\n <ng-container *ngTemplateOutlet=\"itemTpl; context: { $implicit: w }\"></ng-container>\n }\n </div>\n </div>\n </div>\n</div>\n@if(selectedWidgets().length) {\n<ax-footer>\n <ax-suffix>\n <ax-button\n look=\"solid\"\n color=\"primary\"\n text=\"{{ selectedWidgets().length }} Selected\"\n (onClick)=\"handleConfirmSelection()\"\n ></ax-button>\n </ax-suffix>\n</ax-footer>\n}\n","import { AXCollapseModule } from '@acorex/components/collapse';\nimport { convertArrayToDataSource } from '@acorex/cdk/common';\nimport { AXTabsModule, AXTabStripChangedEvent } from '@acorex/components/tabs';\nimport {\n AXPLayoutBuilderModule,\n AXPLayoutContextChangeEvent,\n AXPWidgetConfig,\n AXPWidgetDataSourceProviderService,\n AXPWidgetNode,\n AXPWidgetProperty,\n AXPWidgetRegistryService,\n} from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\n\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n EventEmitter,\n inject,\n input,\n Output,\n signal,\n untracked,\n WritableSignal,\n} from '@angular/core';\nimport { capitalize, cloneDeep, isArray, isEmpty, isNil, merge, set, sortBy, unionBy } from 'lodash-es';\nimport { AXPDesignerConnector } from '../designer';\nimport { AXTranslationModule } from '@acorex/core/translation';\n\nexport interface AXPWidgetPropertyTab {\n name: string;\n title: string;\n groups: {\n name: string;\n title: string;\n isCollapsed: boolean;\n props: AXPWidgetProperty[];\n }[];\n}\n\nexport interface AXPWidgetPropertiesChangedEvent {\n values: any;\n mode: 'init' | 'update';\n}\n\n@Component({\n selector: 'axp-widget-property-viewer',\n templateUrl: './widget-property-viewer.component.html',\n styleUrls: ['./widget-property-viewer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXCollapseModule, AXTabsModule, AXPLayoutBuilderModule, AXTranslationModule],\n})\nexport class AXPWidgetPropertyViewerComponent {\n widget = input.required<AXPWidgetNode>();\n\n mode = input<'simple' | 'advanced'>('simple');\n\n private widgetRegistryService = inject(AXPWidgetRegistryService);\n\n protected connector = inject(AXPDesignerConnector);\n protected dataSourceProvider = inject(AXPWidgetDataSourceProviderService);\n\n protected currentTabIndex: WritableSignal<number> = signal(0);\n\n protected config = signal<AXPWidgetConfig | null>(null);\n protected allPoperties: AXPWidgetProperty[] = [];\n\n protected tabs = signal<AXPWidgetPropertyTab[]>([]);\n\n protected groups = computed(() => {\n return this.tabs().length ? this.tabs()[this.currentTabIndex()].groups : [];\n });\n\n protected groupCollapsedStates: Map<string, boolean> = new Map();\n\n @Output()\n onChanged = new EventEmitter<AXPWidgetPropertiesChangedEvent>();\n\n protected context = signal<any>({});\n\n protected initialContext: any = {};\n\n constructor() {\n effect(() => {\n if (!this.widget()) return;\n const config = this.widgetRegistryService.resolve(this.widget()?.type);\n if (config) {\n this.initialContext = {};\n this.config.set(config);\n this.fillTabs();\n } else {\n console.error(`Invalid widget name: ${this.widget()}`);\n }\n });\n }\n\n public update(values: any) {\n this.context.set(merge(cloneDeep(this.context()), values));\n }\n\n private fillTabs() {\n const tabs: AXPWidgetPropertyTab[] = [\n {\n name: 'general',\n title: 'General',\n groups: [],\n },\n ];\n Object.entries(this.config()?.components ?? {}).forEach((c) => {\n if (c[1].component != null && c[1].properties?.length) {\n tabs.push({ name: c[0], title: capitalize(c[0]), groups: [] });\n }\n });\n ///\n this.allPoperties = [];\n ///\n tabs.forEach((tab) => {\n const props =\n tab.name == 'general'\n ? (this.config()?.properties ?? [])\n : (((this.config()?.components as any)[tab.name]?.properties as AXPWidgetProperty[]) ?? []);\n //\n this.allPoperties.push(...props);\n tab.groups = unionBy(\n sortBy(\n props.map((pg) => ({\n isCollapsed: !!this.groupCollapsedStates.get(pg.group.name),\n name: pg.group.name,\n title: pg.group.title,\n props: sortBy(\n props.filter((p) => p.group.name == pg.group.name && pg.visible),\n ['order', 'title'],\n ),\n })),\n ['order', 'title'],\n ),\n 'name',\n ).filter((c) => c.props.length);\n });\n this.tabs.set(tabs.filter((c) => c.groups.length));\n //\n this.initialContext = this.allPoperties\n .filter(\n (c) =>\n (!isArray(c.schema.defaultValue) && !isNil(c.schema.defaultValue)) ||\n (isArray(c.schema.defaultValue) && !isEmpty(c.schema.defaultValue)),\n )\n .reduce((acc, c) => {\n set(acc, c.schema.interface.path, c.schema.defaultValue);\n return acc;\n }, {});\n //\n untracked(() => {\n this.context.set(merge(cloneDeep(this.initialContext), this.widget()));\n this.onChanged.emit({ values: this.context(), mode: 'init' });\n });\n }\n\n protected handleContextChange(e: AXPLayoutContextChangeEvent) {\n untracked(() => {\n this.context.set(e.data);\n this.onChanged.emit({ values: this.context(), mode: e.state == 'initiated' ? 'init' : 'update' });\n });\n }\n\n protected handleTabChange(event: AXTabStripChangedEvent): void {\n const indx = event.index;\n if (this.currentTabIndex() != indx) {\n this.currentTabIndex.set(indx);\n }\n }\n\n protected handleCollapsedChange(group: string, collapsed: boolean) {\n this.groupCollapsedStates.set(group, collapsed);\n }\n\n protected functions = {\n getDataSourceNames: this.getDataSourceNames.bind(this),\n };\n\n private async getDataSourceNames(): Promise<{ id: string; title: string; valueField: string; textField: string }[]> {\n const result = (await this.dataSourceProvider.items()).map((c) => ({\n id: c.name,\n title: c.title,\n valueField: c.valueField,\n textField: c.textField,\n }));\n return result;\n }\n}\n","<axp-widgets-container [context]=\"context()\" (onContextChanged)=\"handleContextChange($event)\" [functions]=\"functions\">\n @if (mode()=='advanced') {\n <div class=\"ax-flex ax-flex-col\">\n <div class=\"ax-pb-2\">\n <ax-tabs look=\"default\" (onActiveTabChanged)=\"handleTabChange($event)\" [look]=\"'with-line'\">\n @for( tab of tabs();track $index){\n <ax-tab-item [text]=\"tab.title\" [key]=\"$index.toString()\" [active]=\"currentTabIndex() === $index\">\n </ax-tab-item>\n }\n </ax-tabs>\n </div>\n <div class=\"ax-flex-1 ax-overflow-auto\">\n <ax-collapse-group class=\"ax-h-fit\" [look]=\"'flat'\">\n @for( group of groups();track $index){\n <ax-collapse class=\"!ax-mb-0\" [caption]=\"group.title\" [(isCollapsed)]=\"group.isCollapsed\"\n (isCollapsedChange)=\"handleCollapsedChange(group.name, $event)\">\n <div class=\"ax-flex ax-flex-col\">\n @for( p of group.props;track $index){\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-py-2\">\n <span class=\"ax-font-semibold\">{{ p.title }}</span>\n @if(p.schema.interface) {\n <ng-container axp-widget-renderer [node]=\"p.schema.interface\" [mode]=\"'edit'\"> </ng-container>\n }\n </div>\n }\n </div>\n </ax-collapse>\n }\n </ax-collapse-group>\n </div>\n </div>\n }\n <!-- Simple-->\n @else {\n <div class=\"ax-flex ax-flex-col ax-p-4 ax-gap-4\">\n <!-- groups -->\n @for( group of groups();track $index){\n <!-- props -->\n @for( p of group.props;track $index){\n <div class=\"ax-flex ax-flex-col ax-gap-2\">\n <span class=\"ax-font-semibold\">{{ p.title | translate | async }}</span>\n @if(p.schema.interface) {\n <ng-container axp-widget-renderer [node]=\"p.schema.interface\" [mode]=\"'edit'\"> </ng-container>\n }\n </div>\n }\n }\n </div>\n }\n\n</axp-widgets-container>","import {\n AXP_WIDGET_TOKEN,\n AXPBaseWidgetComponent,\n AXPLayoutWidgetComponent,\n AXPValueWidgetComponent,\n AXPWidgetConfig,\n AXPWidgetNode,\n AXPWidgetNodeToken,\n AXPWidgetRegistryService,\n AXPWidgetRenderMode,\n AXPWidgetStatus,\n} from '@acorex/platform/layout/builder';\nimport {\n Directive,\n inject,\n Injector,\n input,\n NgZone,\n OnChanges,\n OnDestroy,\n signal,\n SimpleChanges,\n ViewContainerRef,\n WritableSignal,\n} from '@angular/core';\nimport { cloneDeep, get, isEqual, isNil, merge, set } from 'lodash-es';\nimport { debounceTime, distinctUntilChanged, filter, first, Subscription } from 'rxjs';\nimport { AXPDesignerService } from './designer.service';\n\n@Directive({\n selector: '[axp-widget-designer-renderer]',\n standalone: true,\n})\nexport class AXPWidgetDesignerRendererDirective implements OnChanges, OnDestroy {\n protected mergedOptions: WritableSignal<any> = signal<any>({});\n\n private injector = inject(Injector);\n protected widgetRegistery = inject(AXPWidgetRegistryService);\n protected zone = inject(NgZone);\n\n protected isLoading = signal(true);\n\n private instance!: AXPBaseWidgetComponent;\n private config?: AXPWidgetConfig | undefined;\n\n private service = inject(AXPDesignerService);\n private viewContainerRef = inject(ViewContainerRef);\n\n parentNode = input<AXPLayoutWidgetComponent | null>();\n\n index = input<number | null>();\n locked = input<boolean>(false);\n\n mode = input.required<AXPWidgetRenderMode>();\n node = input.required<AXPWidgetNode>();\n\n private hostElement = () => this.instance?.host as HTMLDivElement;\n private getId = (w: AXPWidgetNode) => get(w, '__meta__.id');\n private isCurrentWidget = (w: AXPWidgetNode) => this.getId(w) == this.getId(this.node());\n\n private subs: Subscription[] = [];\n\n /**\n * @ignore\n */\n constructor() {\n this.subs[0] = this.service.onUpdate\n .pipe(\n //debounceTime(time),\n distinctUntilChanged(\n (p, c) => this.getId(p.widget) == this.getId(c.widget) && isEqual(p.values?.options, c.values?.options),\n ),\n filter((c) => this.isCurrentWidget(c.widget) && !this.locked()),\n )\n .subscribe((c) => {\n this.applyOptions(c.values?.options);\n });\n //\n this.subs[1] = this.service.onSelected\n .pipe(distinctUntilChanged((p, c) => this.getId(p.widget) == this.getId(c.widget)))\n .subscribe((c) => {\n this.zone.runOutsideAngular(() => {\n if (this.isCurrentWidget(c.widget) && !this.locked()) {\n this.applySelectedStyle();\n } else {\n this.removeSelectedStyle();\n }\n });\n });\n //\n this.subs[2] = this.service.onFocused\n .pipe(\n distinctUntilChanged(\n (p, c) => !isNil(p.widget) && !isNil(c.widget) && this.getId(p.widget) == this.getId(c.widget),\n ),\n )\n .subscribe((c) => {\n if (c.widget && this.isCurrentWidget(c.widget)) {\n this.addOverlay();\n } else {\n this.removeOverlay();\n }\n });\n //\n this.subs[3] = this.service.onRefresh\n .pipe(\n debounceTime(200),\n filter((c) => this.isCurrentWidget(c.widget)),\n )\n .subscribe((c) => {\n this.instance?.setChildren(this.node().children ?? []);\n });\n //\n }\n\n // Detect input changes\n ngOnChanges(changes: SimpleChanges) {\n if (changes['mode'] || changes['node']) {\n this.loadComponent();\n }\n }\n\n ngOnDestroy(): void {\n this.subs.forEach((s) => {\n s.unsubscribe();\n });\n }\n\n private async loadComponent() {\n this.viewContainerRef.clear();\n this.isLoading.set(true);\n this.config = this.widgetRegistery.resolve(this.node().type);\n //\n const props = [...(this.config?.properties ?? []), ...(this.config?.components[this.mode()]?.properties ?? [])]\n ?.filter((c) => c.schema.defaultValue != null)\n .map((c) => ({ [c.name]: cloneDeep(c.schema.defaultValue) }))\n .reduce((acc, curr) => {\n return { ...acc, ...curr };\n }, {});\n //\n this.mergedOptions.set(merge(props, this.node().options) || {});\n\n this.preprocessAndInitialOptions(cloneDeep(this.node().options));\n\n const tokenValue = {\n node: this.node(),\n options: this.mergedOptions(),\n config: this.config,\n defaultValue: cloneDeep(this.node().defaultValue),\n } as AXPWidgetNodeToken;\n\n const token = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: AXP_WIDGET_TOKEN,\n useValue: tokenValue,\n },\n ],\n });\n var com = await this.config?.components[this.mode()]?.component();\n this.instance = this.viewContainerRef.createComponent<AXPBaseWidgetComponent>(com, { injector: token }).instance;\n this.instance.locked = this.locked();\n this.instance.parent = this.parentNode();\n this.instance.index = this.index();\n this.instance.mode = this.mode();\n //\n this.instance.onStatusChanged\n .pipe(\n filter((c) => c == AXPWidgetStatus.Rendered),\n first(),\n )\n .subscribe(() => {\n const host = this.hostElement();\n set(host, '__meta__.renderer', this);\n set(host, '__meta__.instance', this.instance);\n host.classList.add('axp-widget-host');\n if (this.mode() == 'designer') {\n if (!this.locked()) {\n host.addEventListener('mouseover', (e) => {\n e.stopPropagation();\n this.addOverlay();\n this.focus();\n });\n host.addEventListener('mouseleave', (e) => {\n e.stopPropagation();\n this.removeOverlay();\n this.blur();\n });\n\n host.addEventListener('click', (e) => {\n e.stopPropagation();\n this.applySelectedStyle();\n this.service.select({ widget: this.node() });\n });\n this.service.register({\n config: this.config!,\n id: get(this.node(), '__meta__.id') as any as number,\n instance: this.instance,\n widget: this.node(),\n });\n }\n }\n });\n }\n\n private overlay: HTMLElement | null;\n\n public select() {\n if (this.locked()) return;\n //\n this.service.select({ widget: this.node() });\n this.applySelectedStyle();\n }\n\n public focus() {\n if (this.locked()) return;\n //\n this.service.focus({ widget: this.node() });\n }\n\n public blur() {\n if (this.locked()) return;\n //\n this.service.focus({ widget: null });\n }\n\n private applySelectedStyle() {\n if (this.locked()) return;\n //\n this.hostElement()?.classList.add('axp-state-selected');\n this.hostElement()?.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n\n private removeSelectedStyle() {\n this.hostElement()?.classList.remove('axp-state-selected');\n }\n\n private addOverlay() {\n if (this.locked()) return;\n //\n this.zone.runOutsideAngular(() => {\n if (this.hostElement()) {\n this.hostElement()?.classList.add('axp-state-hover');\n //\n if (this.hostElement().querySelector('.axp-widget-overlay') || this.config?.type == 'container') {\n return;\n }\n this.overlay = document.createElement('div');\n this.overlay.classList.add('axp-widget-overlay');\n this.overlay.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n this.select();\n });\n this.overlay.addEventListener('mouseleave', (e) => {\n e.preventDefault();\n e.stopPropagation();\n this.blur();\n });\n this.hostElement().appendChild(this.overlay);\n }\n });\n }\n\n private removeOverlay() {\n this.zone.runOutsideAngular(() => {\n if (this.hostElement()) {\n this.hostElement()?.classList.remove('axp-state-hover');\n //\n this.overlay?.remove();\n }\n });\n }\n\n private preprocessAndInitialOptions(obj: any, pathPrefix: string = ''): void {\n if (!obj) return;\n //\n Object.entries(obj).forEach(([key, value]) => {\n const currentPath = pathPrefix ? `${pathPrefix}.${key}` : key;\n this.mergedOptions.update((currentOptions) => {\n return set(currentOptions, currentPath, value);\n });\n });\n }\n\n private applyOptions(values: any): void {\n if (this.instance instanceof AXPValueWidgetComponent && this.node().defaultValue != null) {\n this.instance.setValue(cloneDeep(this.node().defaultValue));\n }\n this.mergedOptions.update((currentOptions) => {\n return merge(currentOptions, values);\n });\n this.instance?.setOptions(this.mergedOptions());\n }\n}\n","import {\n AXContextMenuComponent,\n AXContextMenuItemsClickEvent,\n AXContextMenuOpeningEvent,\n AXMenuItem,\n AXMenuModule,\n} from '@acorex/components/menu';\nimport { AXPLayoutBuilderModule, AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n HostBinding,\n inject,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { get, set } from 'lodash-es';\nimport { AXPDesignerService } from '../../shared/designer.service';\nimport { AXPWidgetDesignerRendererDirective } from '../../shared/widget-designer-renderer.directive';\nimport { AXPDesignerWidgetComponent } from '../../shared/designer.types';\nimport { AXP_DESIGNER_SELECT_WIDGET_MENU } from '../../shared/generic-commands.types';\n\n@Component({\n selector: 'axp-designer-board',\n templateUrl: './board.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXPLayoutBuilderModule, AXPWidgetDesignerRendererDirective, AXMenuModule]\n})\nexport class AXPDesignerBoardComponent {\n @ViewChild('contextMenu')\n protected contextMenu: AXContextMenuComponent;\n\n protected context: any = {};\n private elementRef = inject(ElementRef<HTMLDivElement>) as ElementRef<HTMLDivElement>;\n\n private breakpointMap = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n xxl: 1536,\n };\n\n // Unified method to extract media queries and create a custom class\n applyResponsiveStyles(breakpoint: string) {\n const minWidth = get(this.breakpointMap, breakpoint) as number;\n const mediaRules = [];\n\n // Loop through all the stylesheets\n for (const sheet of Array.from(document.styleSheets)) {\n try {\n // Loop through CSS rules\n for (const rule of Array.from(sheet.cssRules)) {\n // Check if the rule is a CSSMediaRule\n if (rule instanceof CSSMediaRule && rule.media.mediaText.includes(`min-width: ${minWidth}px`)) {\n // Loop through the media rule's CSS rules\n for (const subRule of Array.from(rule.cssRules)) {\n mediaRules.push(subRule.cssText);\n }\n }\n }\n } catch (e) {\n console.error('Error accessing stylesheet:', e);\n }\n }\n\n // Create a dynamic class for the media queries\n this.createCustomClass(`axp-preview-${breakpoint}`, mediaRules, breakpoint);\n }\n\n private createCustomClass(className: string, styles: string[], breakpoint: string) {\n const styleSheet = document.createElement('style');\n styleSheet.setAttribute('data-screen', breakpoint);\n\n // Construct a pure CSS string, dynamically replacing the breakpoint prefix\n let styleString = '';\n styles.forEach((style) => {\n // Replace any prefixed classes like 'lg:' or 'md:' dynamically\n const dynamicPrefix = new RegExp(`\\\\.${breakpoint}\\\\\\\\:`, 'g');\n styleString += `.${className} ${style.replace(dynamicPrefix, '.')}`; // Replace the breakpoint prefix\n });\n\n styleSheet.innerText = styleString;\n this.removeCustomClass();\n this.elementRef.nativeElement.appendChild(styleSheet);\n }\n\n private removeCustomClass() {\n this.elementRef.nativeElement.querySelectorAll('style').forEach((s) => s.remove());\n }\n\n protected service = inject(AXPDesignerService);\n\n protected width = computed(() => {\n switch (this.service.size()) {\n case 'sm':\n return '340px';\n case 'md':\n case 'lg':\n return '768px';\n default:\n return '100%';\n }\n });\n\n private ef = effect(() => {\n this.removeCustomClass();\n if (this.service.size() != 'xl') {\n this.applyResponsiveStyles(this.service.size());\n }\n });\n\n /**\n * @ignore\n */\n constructor() {\n this.service.onRefresh.subscribe(() => {\n this.contextMenu?.refresh();\n });\n }\n\n\n protected handleContextMenuOpening(e: AXContextMenuOpeningEvent) {\n const renderer = get(e.targetElement, '__meta__.renderer') as unknown as AXPWidgetDesignerRendererDirective;\n const instance = get(e.targetElement, '__meta__.instance') as unknown as AXPDesignerWidgetComponent;\n\n if (!renderer || !instance) {\n e.canceled = true;\n return;\n }\n\n renderer.select();\n\n // Fetch context menu items for the current instance\n try {\n const items: AXMenuItem[] = this.service.getContextMenuItems(instance, true);\n if (items.length) {\n e.items.push(...items);\n } else {\n e.canceled = true;\n }\n } catch (error) {\n console.error('Failed to get context menu items:', error);\n e.canceled = true;\n }\n\n // Recursively bind instance data to all items\n this.bindInstanceToItems(e.items, instance);\n\n // Traverse through parents and add their menu items directly to the root level\n this.addParentsToRootMenu(instance, e.items);\n }\n\n\n private addParentsToRootMenu(instance: AXPDesignerWidgetComponent, items: AXMenuItem[]) {\n let parent = (instance as unknown as AXPValueWidgetComponent)?.parent;\n const parentItems: AXMenuItem[] = [];\n\n // Traverse up the parent chain, adding each parent to the \"Parents\" menu\n while (parent) {\n try {\n const widget = parent as unknown as AXPDesignerWidgetComponent;\n const parentContextItems: AXMenuItem[] = this.service.getContextMenuItems(widget);\n\n // Create a new menu item for this parent\n const parentMenuItem: AXMenuItem = {\n text: parent.config.title,\n icon: parent.config.icon,\n items: [\n {\n text: 'Select',\n name: 'select',\n break: true,\n icon: 'fa-solid fa-arrow-pointer',\n },\n ...parentContextItems,\n ],\n };\n\n // Recursively bind instance data to all items\n this.bindInstanceToItems(parentMenuItem.items ?? [], widget);\n\n // Add the parent menu item to the parentItems array\n parentItems.push(parentMenuItem);\n } catch (error) {\n console.error('Failed to get parent context menu items:', error);\n }\n\n // Move to the next parent in the chain\n parent = (parent as unknown as AXPValueWidgetComponent)?.parent;\n }\n\n // If there are any parent items, add them under a \"Parents\" group\n if (parentItems.length > 0) {\n items[items.length - 1].break = true;\n items.push({\n text: 'Parents',\n icon: 'fa-solid fa-turn-up', // Icon for the \"Parents\" group\n items: parentItems, // Add all parent items here\n });\n }\n }\n\n protected async handleContextMenuItemClick(e: AXContextMenuItemsClickEvent) {\n if (e.item.name) {\n const instance: AXPDesignerWidgetComponent = get(e.item.data, \"instance\") as unknown as AXPDesignerWidgetComponent;\n await this.service.executeCommand({ instance, name: e.item.name });\n }\n }\n\n private bindInstanceToItems(items: AXMenuItem[], instance: AXPDesignerWidgetComponent): void {\n items.forEach(item => {\n // Ensure each item gets the correct instance\n item.data = { ...(item.data ?? {}), instance };\n\n // If the item has sub-items, bind instance to them recursively\n if (item.items) {\n this.bindInstanceToItems(item.items, instance);\n }\n });\n }\n\n @HostBinding('style')\n private get __style(): string {\n const cls: any = {};\n cls[`width`] = this.width();\n cls[`max-width`] = '1280px';\n return cls;\n }\n\n @HostBinding('class')\n private get __class(): string {\n const cls: any = {};\n cls[`axp-designer-board`] = true;\n cls[`axp-state-design`] = true;\n cls['ax-h-full'] = true;\n cls['ax-overflow-auto'] = true;\n cls[`axp-preview-${this.service.size()}`] = true;\n return cls;\n }\n}\n","<axp-widgets-container [context]=\"context\">\n <ng-container axp-widget-designer-renderer [node]=\"service.currentPage()\" [mode]=\"'designer'\"></ng-container>\n</axp-widgets-container>\n\n<ax-context-menu class=\"ax-dark\" #contextMenu [target]=\"'.axp-widget-host'\" [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\" (onOpening)=\"handleContextMenuOpening($event)\" (onItemClick)=\"handleContextMenuItemClick($event)\">\n</ax-context-menu>","import { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPLayoutBuilderModule, AXPWidgetNode } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { get } from 'lodash-es';\nimport { AXPDesignerService } from '../../shared/designer.service';\n\n@Component({\n selector: 'axp-designer-breadcrumbs',\n template: `\n <ax-breadcrumbs>\n @for( b of service.breadcrumbs();track $index){\n <ax-breadcrumbs-item>\n <a (click)=\"handleClick(b)\" (mouseover)=\"handleMouseOver(b)\"> {{ getTitle(b) }}</a>\n </ax-breadcrumbs-item>\n }\n <ng-template #divider>\n <i class=\"ax-icon ax-icon-chevron-right\"></i>\n </ng-template>\n </ax-breadcrumbs>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXPLayoutBuilderModule, AXBreadcrumbsModule, AXDecoratorModule]\n})\nexport class AXPDesignerBreadcrumbsComponent {\n protected service = inject(AXPDesignerService);\n\n protected getTitle(node: AXPWidgetNode): string {\n return get(node, '__meta__.config.title') as any as string;\n }\n\n protected handleClick(node: AXPWidgetNode) {\n this.service.select({ widget: node });\n }\n\n protected handleMouseOver(node: AXPWidgetNode) {\n this.service.focus({ widget: node });\n }\n}\n","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { CommonModule } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\n\n@Component({\n imports: [CommonModule, AXDecoratorModule],\n selector: 'axp-designer-drawer-content',\n templateUrl: 'drawer-content.component.html'\n})\n\nexport class AXPLayoutDesignerDrawerContentComponent implements OnInit {\n constructor() { }\n\n ngOnInit() { }\n}","<div class=\"ax-flex ax-flex-col ax-border-e ax-w-72 ax-h-full\">\n <div class=\"ax-flex ax-flex-row ax-w-full ax-justify-between ax-text-white ax-p-2 ax-border-b\">\n <div class=\"ax-flex ax-flex-row ax-gap-2 ax-items-center ax-font-semibold\">\n <ng-content select=\"ax-title\"></ng-content>\n </div>\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\n <ng-content select=\"ax-content[header]\">\n </ng-content>\n <ax-close-button></ax-close-button>\n </div>\n </div>\n <div class=\"ax-flex-1 ax-h-full ax-overflow-auto\">\n <ng-content select=\"ax-content[body]\">\n\n </ng-content>\n </div>\n</div>","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXPDesignerService } from '../../../shared/designer.service';\nimport { AXPLayoutDesignerDrawerContentComponent } from '../../../shared/drawer-content/drawer-content.component';\nimport { AXPDesignerConnector } from '../../../shared/designer-connector.service';\nimport { AXPWidgetDataSourceProviderService } from '@acorex/platform/layout/builder';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\nimport { AXPDataGenerator } from '@acorex/platform/core';\n\n@Component({\n selector: 'axp-designer-data-sources',\n templateUrl: 'data-sources.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXDecoratorModule,\n AXButtonModule,\n AXPLayoutDesignerDrawerContentComponent\n ]\n})\n\nexport class AXPDesignerDataSourcesComponent {\n\n protected service = inject(AXPDesignerService);\n protected workflow = inject(AXPWorkflowService);\n protected dataSourceProvider = inject(AXPWidgetDataSourceProviderService);\n\n protected list = signal<{ name: string, title: string }[]>([]);\n\n\n async ngOnInit() {\n const items = (await this.dataSourceProvider.items()).map(c => ({ name: c.name, title: c.title }));\n this.list.set(items);\n }\n\n\n protected async handleAddClick() {\n this.workflow.execute('create-entity',\n {\n entity: `PlatformManagement.DataSource`,\n options: {\n process: {\n canCreateNewOne: false,\n redirect: false,\n },\n layout: {\n size: 'lg'\n }\n },\n metadata: {\n formBuilder: true\n }\n }\n\n )\n }\n\n\n}","<axp-designer-drawer-content>\n\n <ax-title>Data Sources</ax-title>\n\n <ax-content header>\n <ax-button look=\"blank\" class=\"ax-sm\" title=\"Add New Data Source\" (onClick)=\"handleAddClick()\">\n <ax-icon class=\"fa-light fa-plus\"></ax-icon>\n </ax-button>\n </ax-content>\n\n <ax-content body>\n @if(list().length)\n {\n <ul class=\"axp-designer-drawer-list\">\n @for (item of list(); track $index) {\n <li>\n <i class=\"ax-me-1 fa-solid fa-table\"></i>\n {{ item.title }}\n </li>\n }\n </ul>\n }\n @else {\n <div class=\"axp-designer-drawer-empty\">No data source found in the\n document\n </div>\n }\n </ax-content>\n\n</axp-designer-drawer-content>","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXPLayoutDesignerDrawerContentComponent } from '../../../shared/drawer-content/drawer-content.component';\nimport { AXPDesignerService } from '../../../shared/designer.service';\n\n@Component({\n selector: 'axp-designer-history',\n templateUrl: 'history.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXDecoratorModule,\n AXButtonModule,\n AXDropdownModule,\n AXPLayoutDesignerDrawerContentComponent\n ]\n})\n\nexport class AXPDesignerHistoryComponent {\n protected service = inject(AXPDesignerService);\n}","<axp-designer-drawer-content>\n\n <ax-title>History</ax-title>\n\n <ax-content header>\n <ax-button look=\"blank\" class=\"ax-sm\">\n <ax-icon class=\"fa-light fa-ellipsis\"></ax-icon>\n <ax-dropdown-panel class=\"ax-sm\">\n <ax-button-item-list>\n <ax-button-item text=\"Clear\" name=\"add\" (onClick)=\"service.clearHistory()\"> </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n </ax-content>\n\n <ax-content body>\n @if(service.history().length)\n {\n <ul class=\"axp-designer-drawer-list\">\n @for (step of service.history(); track $index) {\n <li (click)=\"service.navigateTo($index)\" [class.ax-italic]=\"step.isFuture\"\n [class.ax-text-neutral-400]=\"step.isFuture\" [class.ax-state-selected]=\"step.isCurrent\">\n <i class=\"ax-me-1\" [ngClass]=\"step.icon\"></i>\n {{ step.description }}\n </li>\n }\n </ul>\n }\n @else {\n <div class=\"axp-designer-drawer-empty\">\n No changes have been made yet.\n </div>\n }\n </ax-content>\n\n</axp-designer-drawer-content>\n","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPWidgetConfig, AXPWidgetNode, AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { get } from 'lodash-es';\nimport { merge } from 'rxjs';\nimport { AXPLayoutDesignerDrawerContentComponent } from '../../../shared/drawer-content/drawer-content.component';\nimport { AXPDesignerService } from '../../../shared/designer.service';\n\n@Component({\n selector: 'axp-designer-outline',\n templateUrl: 'outline.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXDecoratorModule,\n AXPLayoutDesignerDrawerContentComponent\n ]\n})\nexport class AXPDesignerOutlineComponent {\n protected service = inject(AXPDesignerService);\n\n protected collapsedStates: Map<any, boolean> = new Map();\n\n protected root = signal(this.getTree());\n\n constructor() {\n merge(this.service.onRefresh, this.service.onUpdate).subscribe(() => {\n this.root.update((c) => ({ ...this.getTree() }));\n });\n }\n\n private getTree(): AXPWidgetNode {\n return {\n type: AXPWidgetsCatalog.document,\n children: [this.service.currentPage()],\n } as AXPWidgetNode;\n }\n\n private toggleCollapse(node: any) {\n // Toggle the current state or set to true if undefined\n this.collapsedStates.set(node, !this.collapsedStates.get(node));\n }\n\n protected isCollapsed(node: any): boolean {\n // Return the collapsed state, default is false (expanded)\n return !!this.collapsedStates.get(node);\n }\n\n protected getConfig(node: AXPWidgetNode): AXPWidgetConfig {\n return get(node, '__meta__.config') as any as AXPWidgetConfig;\n }\n\n protected handleClick(e: MouseEvent, node: AXPWidgetNode) {\n e.stopPropagation();\n this.service.select({ widget: node });\n }\n\n protected handleToggleClick(event: MouseEvent, item: any): void {\n event.stopPropagation(); // Prevents the event from bubbling up to parent elements\n this.toggleCollapse(item);\n }\n\n protected handleMouseOver(e: MouseEvent, node: AXPWidgetNode) {\n e.stopPropagation();\n this.service.focus({ widget: node });\n }\n}\n","<axp-designer-drawer-content>\n\n <ax-title>Outline</ax-title>\n\n <ax-content body>\n @if(root().children?.length)\n {\n <ul class=\"ax-space-y-1 ax-p-1 ax-text-white ax-text-sm\">\n @for( node of root().children;track $index)\n {\n <ng-container [ngTemplateOutlet]=\"sideMenu\" [ngTemplateOutletContext]=\"{ $implicit: node }\">\n </ng-container>\n }\n </ul>\n <ng-template #sideMenu let-item>\n <li (click)=\"handleClick($event,item)\" (mouseover)=\"handleMouseOver($event,item)\">\n <div [class.ax-bg-neutral-700]=\"item === service.selectedNode()\"\n class=\"ax-flex ax-flex-row ax-items-center ax-cursor-pointer ax-transition ax-duration-150 ax-ease-in-out ax-hover:bg-gray-700 ax-py-1 ax-px-2 ax-rounded-sm ax-group\">\n <span class=\"ax-w-5 \">\n @if(item.children?.length)\n {\n <i class=\"fa-solid\" [class.fa-chevron-right]=\"isCollapsed(item)\"\n (click)=\"handleToggleClick($event, item)\" [class.fa-chevron-down]=\"!isCollapsed(item)\"></i>\n }\n </span>\n @let config = getConfig(item);\n <span class=\"ax-w-5\">\n @if(config.icon)\n {\n <i [ngClass]=\"config.icon\"></i>\n }\n </span>\n <span class=\"ax-truncate ax-flex-1 ax-pe-2\">{{config.title}} : {{item.name}}</span>\n <div class=\"ax-invisible group-hover:ax-visible ax-flex ax-gap-2 ax-justify-end \">\n @if(config.type=='container')\n {\n <i class=\"fa-light fa-plus hover:ax-text-primary-500\" (click)=\"service.showPicker(item)\"></i>\n }\n @if(config.name!=\"page-layout\")\n {\n <i class=\"fa-light fa-xmark hover:ax-text-danger-500\" (click)=\"service.removeWidget(item)\"></i>\n }\n </div>\n </div>\n @if(item.children?.length && !isCollapsed(item)) {\n <ul class=\"ax-space-y-1 ax-ps-3 ax-text-white ax-text-sm\">\n <ng-container *ngFor=\"let child of item.children\" [ngTemplateOutlet]=\"sideMenu\"\n [ngTemplateOutletContext]=\"{ $implicit: child }\">\n </ng-container>\n </ul>\n }\n </li>\n </ng-template>\n }\n @else {\n <div class=\"axp-designer-drawer-empty\">No widgets found in the page\n </div>\n }\n </ax-content>\n\n</axp-designer-drawer-content>","import { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXPLayoutDesignerDrawerContentComponent } from '../../../shared/drawer-content/drawer-content.component';\nimport { AXPDesignerService } from '../../../shared/designer.service';\n\n@Component({\n selector: 'axp-designer-pages',\n templateUrl: 'pages.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXPLayoutBuilderModule,\n AXDecoratorModule,\n AXButtonModule,\n AXPLayoutDesignerDrawerContentComponent\n ]\n})\n\nexport class AXPDesignerPagesComponent {\n\n protected service = inject(AXPDesignerService);\n\n}","<axp-designer-drawer-content class=\"ax-text-on-lightest\">\n <ax-title>Pages</ax-title>\n <ax-content header>\n <ax-button look=\"blank\" class=\"ax-sm\" (onClick)=\"service.addNewPage()\" title=\"Add New Page\">\n <ax-icon class=\"fa-light fa-file-circle-plus\"></ax-icon>\n </ax-button>\n </ax-content>\n\n <ax-content body>\n @let count = service.document().children?.length ?? 0; @if(count) {\n <ul class=\"ax-text-sm ax-p-2 ax-rounded ax-md ax-space-y-1\">\n @for( page of service.document().children;track $index) {\n <li (click)=\"service.goToPage($index)\"\n class=\"ax-cursor-pointer ax-transition ax-duration-150 ax-ease-in-out hover:ax-bg-dark ax-py-1 ax-px-2 ax-rounded-sm ax-group ax-flex ax-justify-between ax-items-center\"\n [class.ax-bg-darkest]=\"$index == service.currentPageIndex()\">\n <div>\n <i class=\"fa-light fa-file ax-me-1\"></i>\n Page {{ $index + 1 }}\n </div>\n <div class=\"ax-invisible group-hover:ax-visible ax-flex ax-gap-2\">\n @if(count>1) {\n <i class=\"fa-light fa-xmark hover:ax-text-danger-500\" (click)=\"service.removePage($index)\"></i>\n }\n <i class=\"fa-light fa-clone hover:ax-text-primary-500\" (click)=\"service.clonePage($index)\"></i>\n </div>\n </li>\n }\n </ul>\n } @else {\n <div class=\"ax-flex ax-justify-center ax-items-center ax-text-gray-300 ax-p-4\">No pages found in the document</div>\n }\n </ax-content>\n</axp-designer-drawer-content>\n","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXMenuModule } from '@acorex/components/menu';\nimport { CommonModule } from '@angular/common';\nimport { Component, HostListener, inject } from '@angular/core';\nimport { AXPDesignerService } from '../../shared/designer.service';\n\n@Component({\n imports: [CommonModule, AXDecoratorModule, AXMenuModule],\n selector: 'axp-designer-header-menu',\n templateUrl: 'header-menu.component.html'\n})\nexport class AXPDesignerHeaderMenuComponent {\n protected service = inject(AXPDesignerService);\n\n @HostListener('document:keydown', ['$event'])\n private handleKeyboardEvent(event: KeyboardEvent) {\n if (event.code == 'Delete' && this.service.canDelete()) {\n event.preventDefault();\n this.service.removeWidget();\n }\n if (event.code == 'Insert' && this.service.canInsert()) {\n event.preventDefault();\n this.service.showPicker();\n }\n if (event.shiftKey && event.target == document.body) {\n switch (event.code) {\n case 'KeyN':\n event.preventDefault();\n this.service.new();\n break;\n }\n }\n if (event.ctrlKey) {\n switch (event.code) {\n case 'KeyS':\n event.preventDefault();\n if (event.shiftKey) {\n this.service.saveAs();\n } else {\n this.service.save();\n }\n break;\n case 'KeyR':\n event.preventDefault();\n if (event.shiftKey) {\n this.service.openPreviewWindow();\n } else {\n this.service.openPreviewDialog();\n }\n break;\n }\n }\n //\n if (event.ctrlKey && event.target == document.body) {\n switch (event.code) {\n case 'KeyZ':\n if (this.service.canUndo()) {\n event.preventDefault();\n this.service.undo();\n }\n break;\n case 'KeyY':\n if (this.service.canRedo()) {\n event.preventDefault();\n this.service.redo();\n }\n break;\n case 'KeyC':\n if (this.service.canCutCopy()) {\n event.preventDefault();\n this.service.copy();\n }\n break;\n case 'KeyD':\n if (this.service.canCutCopy()) {\n event.preventDefault();\n this.service.clone();\n }\n break;\n case 'KeyX':\n if (this.service.canCutCopy()) {\n // ;\n event.preventDefault();\n this.service.cut();\n }\n break;\n case 'KeyV':\n if (this.service.canPaste()) {\n event.preventDefault();\n this.service.paste();\n }\n break;\n }\n }\n }\n}\n","<ax-menu [openOn]=\"'hover'\" [hasArrow]=\"false\">\n <ax-menu-item>\n <ax-text>File</ax-text>\n <ax-menu-item (onClick)=\"service.new()\">\n <ax-text>New</ax-text>\n <ax-suffix>\n <ax-text> Shift+N </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-divider></ax-divider>\n @if(service.canSave())\n {\n <ng-container>\n <ax-menu-item (onClick)=\"service.save()\">\n <ax-text>Save</ax-text>\n <ax-suffix>\n <ax-text> Ctrl+S </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item (onClick)=\"service.saveAs()\">\n <ax-text>Save As...</ax-text>\n <ax-suffix>\n <ax-text> Ctrl+Shift+S </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-divider></ax-divider>\n </ng-container>\n }\n <ax-menu-item>\n <ax-text>Export</ax-text>\n <ax-menu-item (onClick)=\"service.downloadJson()\">\n <ax-text>Download JSON</ax-text>\n </ax-menu-item>\n </ax-menu-item>\n <ax-menu-item>\n <ax-text>Import</ax-text>\n <ax-menu-item (onClick)=\"service.importJSon()\">\n <ax-text>Import JSON</ax-text>\n </ax-menu-item>\n </ax-menu-item>\n </ax-menu-item>\n <ax-menu-item>\n <ax-text>Edit</ax-text>\n <ax-menu-item [disabled]=\"!service.canUndo()\" (onClick)=\"service.undo()\">\n <ax-text>Undo</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-rotate-left\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+Z </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item [disabled]=\"!service.canRedo()\" (onClick)=\"service.redo()\">\n <ax-text>Redo</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-rotate-right\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+Y </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-divider></ax-divider>\n <ax-menu-item [disabled]=\"!service.canCutCopy()\" (onClick)=\"service.clone()\">\n <ax-text>Clone</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-clone\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+D </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item [disabled]=\"!service.canCutCopy()\" (onClick)=\"service.cut()\">\n <ax-text>Cut</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-cut\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+X </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item [disabled]=\"!service.canCutCopy()\" (onClick)=\"service.copy()\">\n <ax-text>Copy</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-copy\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+C </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item [disabled]=\"!service.canPaste()\" (onClick)=\"service.paste()\">\n <ax-text>Paste</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-paste\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text>Ctrl+V</ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-divider></ax-divider>\n <ax-menu-item [disabled]=\"!service.canDelete()\" (onClick)=\"service.removeWidget()\">\n <ax-text>Delete</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-trash\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text>Del</ax-text>\n </ax-suffix>\n </ax-menu-item>\n </ax-menu-item>\n <ax-menu-item>\n <ax-text>Run</ax-text>\n <ax-menu-item (onClick)=\"service.openPreviewDialog()\">\n <ax-text>Preview</ax-text>\n <ax-prefix>\n </ax-prefix>\n <ax-suffix>\n <ax-text>Ctrl+R</ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item (onClick)=\"service.openPreviewWindow()\">\n <ax-text>Preview in seperate window</ax-text>\n <ax-prefix> </ax-prefix>\n <ax-suffix>\n <ax-text>Ctrl+Shift+R</ax-text>\n </ax-suffix>\n </ax-menu-item>\n </ax-menu-item>\n <ax-menu-item>\n <ax-text>Help</ax-text>\n <ax-menu-item>\n <ax-text>About</ax-text>\n </ax-menu-item>\n </ax-menu-item>\n</ax-menu>","import { AXButtonGroupModule } from '@acorex/components/button-group';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXMenuModule } from '@acorex/components/menu';\nimport { CommonModule } from '@angular/common';\nimport { Component, model } from '@angular/core';\n\n@Component({\n selector: 'axp-designer-view-sizes',\n imports: [CommonModule, AXButtonGroupModule, AXDecoratorModule, AXMenuModule],\n template: `\n <ax-button-group [color]=\"'primary'\" [selection]=\"'multiple'\">\n <ax-button-group-item [selected]=\"size() == 'xl'\" [data]=\"'xl'\" (onClick)=\"size.set('xl')\">\n <ax-icon class=\"fa-light fa-desktop fa-fw \"></ax-icon>\n </ax-button-group-item>\n <ax-button-group-item [selected]=\"size() == 'lg'\" [data]=\"'lg'\" (onClick)=\"size.set('lg')\">\n <ax-icon class=\"fa-light fa-tablet fa-fw \"></ax-icon>\n </ax-button-group-item>\n <ax-button-group-item [selected]=\"size() == 'sm'\" [data]=\"'sm'\" (onClick)=\"size.set('sm')\">\n <ax-icon class=\"fa-light fa-mobile fa-fw \"></ax-icon>\n </ax-button-group-item>\n </ax-button-group>\n `,\n})\nexport class AXPDesignerViewSizeToolbarComponent {\n public size = model<string>('xl');\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXButtonGroupModule } from '@acorex/components/button-group';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDrawerModule } from '@acorex/components/drawer';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXMenuModule } from '@acorex/components/menu';\nimport { AXTabsModule } from '@acorex/components/tabs';\nimport { AXPLayoutBuilderModule, AXPWidgetConfig } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { Component, computed, HostBinding, inject, input, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { get } from 'lodash-es';\nimport { AXPWidgetPropertyViewerComponent } from '../property-viewer/widget-property-viewer.component';\nimport { AXPDesignerBoardComponent } from './components/board/board.component';\nimport { AXPDesignerBreadcrumbsComponent } from './components/breadcrumbs/breadcrumbs.component';\nimport { AXPDesignerDataSourcesComponent } from './components/drawers/data-sources/data-sources.component';\nimport { AXPDesignerHistoryComponent } from './components/drawers/history/history.component';\nimport { AXPDesignerOutlineComponent } from './components/drawers/outline/outline.component';\nimport { AXPDesignerPagesComponent } from './components/drawers/pages/pages.component';\nimport { AXPDesignerHeaderMenuComponent } from './components/header-menu/header-menu.component';\nimport { AXPDesignerViewSizeToolbarComponent } from './components/size-mode/view-size-toolbar.component';\nimport { AXPDesignerService } from './shared/designer.service';\nimport { AXPTemplateLoadingStrategy } from './shared/designer.types';\n\n@Component({\n selector: 'axp-layout-designer',\n templateUrl: './designer.component.html',\n styleUrl: './designer.component.scss',\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n AXPLayoutBuilderModule,\n AXPDesignerBoardComponent,\n AXPWidgetPropertyViewerComponent,\n AXPDesignerBreadcrumbsComponent,\n AXPDesignerOutlineComponent,\n AXPDesignerHeaderMenuComponent,\n AXPDesignerHistoryComponent,\n AXPDesignerDataSourcesComponent,\n AXPDesignerPagesComponent,\n AXPDesignerViewSizeToolbarComponent,\n AXTabsModule,\n AXButtonModule,\n AXDrawerModule,\n AXDecoratorModule,\n AXMenuModule,\n AXButtonGroupModule,\n AXDropdownModule,\n AXDropdownButtonModule,\n ],\n providers: [AXPDesignerService]\n})\nexport class AXPLayoutDesignerComponent {\n protected service = inject(AXPDesignerService);\n\n id = input<string | null>();\n strategy = input<string | null>();\n\n @ViewChild(AXPWidgetPropertyViewerComponent, { static: true })\n private propertyViewer: AXPWidgetPropertyViewerComponent;\n\n protected nodeConfig = computed<AXPWidgetConfig | null>(() =>\n this.service.selectedNode() ? (get(this.service.selectedNode(), '__meta__.config') as any as AXPWidgetConfig) : null\n );\n\n constructor() {\n this.service.onUpdate.subscribe((e) => {\n this.propertyViewer.update(e.values);\n });\n }\n\n ngOnInit() {\n if (this.id()) {\n this.service.loadById(this.id()!, { strategy: (this.strategy() ?? AXPTemplateLoadingStrategy.Connector) as AXPTemplateLoadingStrategy });\n }\n }\n\n @HostBinding('style')\n private get __styles(): string {\n const styles: any = {};\n styles[`direction`] = 'ltr';\n return styles;\n }\n}\n","<ax-drawer-container class=\"ax-h-full ax-w-full ax-flex ax-relative ax-overflow-hidden\">\n <ax-content class=\"ax-contents\">\n <!-- Toolbar Side -->\n <div class=\"ax-min-w-10 ax-bg-lightest ax-border-e ax-sm ax-flex ax-flex-col ax-items-center ax-dark\">\n <div class=\"ax-min-w-10 ax-h-10 ax-flex ax-items-center ax-justify-center ax-border-b\">\n <img src=\"assets/logos/logo-light.svg\" class=\"ax-w-6\" />\n </div>\n <div class=\"ax-py-1\"></div>\n <div class=\"ax-flex ax-flex-col ax-gap-2\">\n <!-- <ax-button look=\"blank\">\n <ax-icon class=\"fa-solid fa-puzzle ax-text-sm\"> </ax-icon>\n </ax-button> -->\n <ax-button look=\"blank\" (onClick)=\"pages.toggle()\" title=\"Pages\">\n <ax-icon class=\"fa-solid fa-page ax-text-sm\"> </ax-icon>\n </ax-button>\n <ax-button look=\"blank\" (onClick)=\"datasources.toggle()\" title=\"Data Sources\">\n <ax-icon class=\"fa-solid fa-database ax-text-sm\"> </ax-icon>\n </ax-button>\n <ax-button look=\"blank\" (onClick)=\"outline.toggle()\" title=\"Outline\">\n <ax-icon class=\"fa-solid fa-list-tree ax-text-sm\"> </ax-icon>\n </ax-button>\n <ax-button look=\"blank\" (onClick)=\"history.toggle()\" title=\"History\">\n <ax-icon class=\"fa-solid fa-clock-rotate-left ax-text-sm\"> </ax-icon>\n </ax-button>\n <!-- <ax-button look=\"blank\" title=\"Timeline\">\n <ax-icon class=\"fa-solid fa-diagram-sankey ax-text-sm\"> </ax-icon>\n </ax-button> -->\n </div>\n </div>\n <!-- Main Side -->\n <div class=\"ax-col-span-10 ax-flex ax-flex-col ax-flex-1\">\n <!-- Header Toolbar -->\n <div class=\"ax-h-10 ax-bg-lightest ax-border-b ax-flex ax-justify-between ax-px-2 ax-dark\">\n <div class=\"ax-flex ax-flex-1 ax-items-center ax-text-white ax-justify-start\">\n <axp-designer-header-menu></axp-designer-header-menu>\n </div>\n <div class=\"ax-flex ax-flex-1 ax-flex-row ax-gap-2 ax-sm ax-items-center ax-justify-center\">\n <axp-designer-view-sizes [(size)]=\"service.size\"></axp-designer-view-sizes>\n </div>\n <div class=\"ax-flex ax-flex-1 ax-flex-row ax-gap-2 ax-sm ax-items-center ax-justify-end\">\n <ax-dropdown-button\n mode=\"split\"\n look=\"solid\"\n text=\"Preview\"\n class=\"ax-sm\"\n (onClick)=\"service.openPreviewDialog()\"\n >\n <ax-button-item-list>\n <ax-button-item text=\"Open in new window\" (onClick)=\"service.openPreviewWindow()\">\n <ax-prefix>\n <ax-icon icon=\"fa-regular fa-window-restore\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n </div>\n </div>\n <!-- Board -->\n <ax-drawer-container class=\"ax-w-full ax-flex-1\">\n <!-- Pages -->\n <ax-drawer #pages location=\"start\" mode=\"push\" class=\"ax-dark ax-bg-lightest\">\n <ax-content>\n <axp-designer-pages></axp-designer-pages>\n </ax-content>\n </ax-drawer>\n <!-- Datasources -->\n <ax-drawer #datasources location=\"start\" mode=\"push\" class=\"ax-dark ax-bg-lightest\">\n <ax-content>\n <axp-designer-data-sources></axp-designer-data-sources>\n </ax-content>\n </ax-drawer>\n <!-- Outline Pnael -->\n <ax-drawer #outline location=\"start\" mode=\"push\" class=\"ax-dark ax-bg-lightest\">\n <ax-content>\n <axp-designer-outline></axp-designer-outline>\n </ax-content>\n </ax-drawer>\n <!-- History Pnael -->\n <ax-drawer #history location=\"start\" mode=\"push\" class=\"ax-dark ax-bg-lightest\">\n <ax-content>\n <axp-designer-history></axp-designer-history>\n </ax-content>\n </ax-drawer>\n <!-- Content of board -->\n <ax-content class=\"ax-light ax-bg-lighter ax-flex ax-justify-center ax-p-10\">\n <axp-designer-board class=\"ax-rounded-lg ax-bg-lightest ax-shadow-md\"> </axp-designer-board>\n </ax-content>\n </ax-drawer-container>\n <!-- Footer -->\n <div class=\"ax-h-10 ax-bg-lightest ax-border-t ax-flex ax-items-center ax-dark\">\n <axp-designer-breadcrumbs class=\"ax-border-default ax-border-t ax-p-2 ax-font-normal\">\n </axp-designer-breadcrumbs>\n </div>\n </div>\n </ax-content>\n <!-- Property Side -->\n <ax-drawer class=\"ax-dark axp-designer-prop-side\" location=\"end\" mode=\"push\" [collapsed]=\"false\" #pd>\n <ax-content>\n <div class=\"ax-flex ax-flex-row ax-w-full ax-justify-between ax-text-white ax-px-4 ax-border-b ax-h-10\">\n <div class=\"ax-flex ax-flex-row ax-gap-2 ax-items-center\">\n <i [ngClass]=\"nodeConfig()?.icon\"></i>\n <span class=\"ax-font-semibold\">{{ nodeConfig()?.title }}</span>\n </div>\n </div>\n <axp-widget-property-viewer\n [widget]=\"service.selectedNode()!\"\n style=\"--ax-sys-size-base: 1.875rem\"\n (onChanged)=\"service.update({ values: $event.values, mode: $event.mode })\"\n class=\"ax-w-1/4\"\n >\n </axp-widget-property-viewer>\n </ax-content>\n </ax-drawer>\n</ax-drawer-container>\n","import { AXPLayoutBuilderModule, AXPLayoutContextChangeEvent, AXPWidgetDataSource, AXPWidgetDataSourceProviderService, AXPWidgetNode, AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { Component, computed, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { AXPDesignerConnector, AXPDesignerMessageKeys, AXPDesignerPreviewMessage } from '../designer';\nimport { AXPBroadcastEventService } from '@acorex/platform/core';\nimport { AXUnsubscriber } from '@acorex/core/utils';\n\n@Component({\n selector: 'axp-layout-builder-viewer',\n template: `\n <axp-widgets-container [context]=\"context\" (onContextChanged)=\"handleContextChanged($event)\">\n <ng-container axp-widget-renderer [node]=\"currentPage()\" [mode]=\"'edit'\"></ng-container>\n </axp-widgets-container>\n `,\n encapsulation: ViewEncapsulation.None,\n imports: [CommonModule, AXPLayoutBuilderModule],\n providers: [AXUnsubscriber],\n})\nexport class AXPLayoutDesignerPreviewViewerComponent {\n protected context: any = {};\n\n protected readonly document = signal({ type: AXPWidgetsCatalog.document } as AXPWidgetNode);\n protected readonly currentPageIndex = signal(0);\n protected connector = inject(AXPDesignerConnector);\n protected dataSourceProvider = inject(AXPWidgetDataSourceProviderService);\n protected eventService = inject(AXPBroadcastEventService);\n protected unsubscriber = inject(AXUnsubscriber);\n\n protected readonly currentPage = computed(() => {\n return (\n this.document().children?.[this.currentPageIndex()] ?? ({ type: AXPWidgetsCatalog.pageLayout } as AXPWidgetNode)\n );\n });\n\n\n constructor() {\n this.eventService\n .listen<AXPDesignerPreviewMessage>(AXPDesignerMessageKeys.Preview)\n .pipe(this.unsubscriber.takeUntilDestroy)\n .subscribe((event) => {\n this.document.set(event.data.document);\n })\n //\n if (document.body.parentElement) {\n document.body.parentElement.classList.remove('ax-dark');\n document.body.parentElement.style.backgroundColor = 'unset';\n document.body.style.backgroundColor = 'unset';\n }\n }\n\n ngAfterViewInit() {\n this.eventService.publish(AXPDesignerMessageKeys.Loaded)\n }\n\n protected handleContextChanged(e: AXPLayoutContextChangeEvent) {\n this.context = e.data;\n this.eventService.publish(AXPDesignerMessageKeys.ContextChanged, this.context)\n }\n\n protected functions = {\n getDataSourceNames: this.getDataSources.bind(this),\n };\n\n private async getDataSources(name: string): Promise<AXPWidgetDataSource | undefined> {\n return await this.dataSourceProvider.get(name);\n }\n\n\n ngOnDestroy(): void {\n this.eventService.unsubscribe(AXPDesignerMessageKeys.Preview);\n\n }\n}\n","import { AXSafePipe } from '@acorex/core/pipes';\nimport { Component, computed, HostBinding, input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'axp-layout-preview-frame',\n template: `\n <div\n class=\"ax-flex-1 lg:ax-rounded-lg ax-bg-white lg:ax-shadow-md ax-p-2\"\n [style.width]=\"width()\"\n style=\"max-width: 1280px;\"\n >\n <iframe\n class=\"ax-w-full ax-h-full ax-bg-transparent\"\n [frameBorder]=\"0\"\n [src]=\"'/forms/viewer' | safe : 'resourceUrl'\"\n >\n </iframe>\n </div>\n `,\n encapsulation: ViewEncapsulation.None,\n imports: [AXSafePipe]\n})\nexport class AXPLayoutDesignerPreviewFrameComponent {\n public size = input<string>('xl');\n\n protected width = computed(() => {\n ;\n switch (this.size()) {\n case 'sm':\n return '340px';\n case 'md':\n case 'lg':\n return '768px';\n default:\n return '100%';\n }\n });\n\n @HostBinding('class')\n private get __class(): string {\n const cls: any = {};\n cls['ax-flex'] = true;\n cls['ax-flex-col'] = true;\n cls['ax-h-full'] = true;\n cls['ax-W-full'] = true;\n cls['lg:ax-p-20'] = true;\n cls['ax-bg-[#f3f3fe]'] = true;\n cls['ax-w-full'] = true;\n cls['ax-items-center'] = true;\n cls['ax-overflow-auto'] = true;\n return cls;\n }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXButtonGroupModule } from '@acorex/components/button-group';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDrawerModule } from '@acorex/components/drawer';\nimport { AXJsonViewerModule } from '@acorex/components/json-viewer';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXPClipBoardService, AXPSettingService } from '@acorex/platform/common';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { CommonModule } from '@angular/common';\nimport { Component, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { AXPDesignerViewSizeToolbarComponent } from '../designer/components/size-mode/view-size-toolbar.component';\nimport { AXPLayoutDesignerPreviewFrameComponent } from './preview-frame.component';\nimport { AXPBroadcastEventService } from '@acorex/platform/core';\nimport { AXPDesignerMessageKeys } from '../designer';\n\n@Component({\n selector: 'axp-layout-preview',\n templateUrl: './preview.component.html',\n styleUrls: ['./preview.component.scss'],\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n AXButtonModule,\n AXButtonGroupModule,\n AXDrawerModule,\n AXDecoratorModule,\n AXJsonViewerModule,\n AXPLayoutDesignerPreviewFrameComponent,\n AXPDesignerViewSizeToolbarComponent,\n ]\n})\nexport class AXPLayoutDesignerPreviewComponent extends AXBasePageComponent {\n protected clipboard = inject(AXPClipBoardService);\n protected settings = inject(AXPSettingService);\n protected eventService = inject(AXPBroadcastEventService);\n\n protected initialSize: string = 'xl';\n protected isDialogWindow: boolean = false;\n\n private jsonSettingsKey = 'forms:preview:json';\n protected jsonViewCollapsed = signal(true);\n\n protected size = signal<string>(this.initialSize);\n\n protected context = signal<any>({});\n\n constructor() {\n super();\n //\n this.eventService.listen(AXPDesignerMessageKeys.ContextChanged).subscribe((event) => {\n this.context.set(event.data);\n });\n }\n\n protected override async ngOnInit() {\n this.size.set(this.initialSize);\n const settingValue = await this.settings.get<boolean>(this.jsonSettingsKey);\n this.jsonViewCollapsed.set(!settingValue);\n }\n\n protected handleCloseButton() {\n if (this.isDialogWindow) {\n this.close();\n } else {\n window.opener.focus();\n window.close();\n }\n }\n\n protected handlePreviewWindow() {\n this.eventService.publish(AXPDesignerMessageKeys.PreviewWindow)\n this.close();\n }\n\n protected handleCopyJson() {\n this.clipboard.copy('Json Data', JSON.stringify(this.context()));\n }\n\n protected async handleCollapsedChange(value: boolean) {\n await this.settings.scope(AXPPlatformScope.User).set<boolean>(this.jsonSettingsKey, !value);\n }\n}\n","<ax-drawer-container class=\"ax-dark ax-h-full ax-w-full ax-flex ax-relative ax-overflow-hidden\">\n <ax-content>\n <div class=\"ax-dark ax-flex ax-flex-col ax-h-full ax-relative ax-bg-default\">\n <div class=\"ax-flex ax-items-center ax-justify-between ax-h-12 ax-bg-lightest ax-shadow ax-sm ax-px-2\">\n <div class=\"ax-flex ax-flex-1 ax-w-16 ax-justify-start\">\n <ax-button look=\"blank\" text=\"Back to Designer\" (onClick)=\"handleCloseButton()\">\n <ax-prefix>\n <ax-icon class=\"fa-regular fa-chevron-left\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n <div class=\"ax-flex ax-flex-1 ax-flex-row ax-gap-2 ax-sm ax-items-center ax-justify-center\">\n <axp-designer-view-sizes [(size)]=\"size\"></axp-designer-view-sizes>\n </div>\n <div class=\"ax-flex ax-flex-1 ax-w-16 ax-justify-end\">\n @if(isDialogWindow) {\n <ax-button look=\"blank\" [title]=\"'Preview in to seperate window'\" (onClick)=\"handlePreviewWindow()\">\n <ax-prefix>\n <ax-icon class=\"fa-regular fa-window-restore\"></ax-icon>\n </ax-prefix>\n </ax-button>\n }@else { }\n <ax-button look=\"blank\" (onClick)=\"jsonView.toggle()\">\n <ax-prefix>\n <ax-icon class=\"fa-regular fa-list-tree\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n\n <div class=\"ax-bg-[#f3f3fe] ax-flex ax-flex-1 ax-justify-center ax-overflow-auto\">\n <axp-layout-preview-frame [size]=\"size()\"></axp-layout-preview-frame>\n </div>\n </div>\n </ax-content>\n <!-- [collapsed]=\"jsonViewCollapsed()\"\n (collapsedChange)=\"handleCollapsedChange($event)\" -->\n <ax-drawer class=\"ax-w-1/3 ax-border-s\" location=\"end\" mode=\"push\" #jsonView>\n <ax-content>\n <div class=\"ax-dark ax-flex ax-flex-col ax-h-full ax-relative ax-bg-default\">\n <div class=\"ax-flex ax-items-center ax-justify-between ax-h-12 ax-bg-lightest ax-shadow ax-sm ax-px-2\">\n <div class=\"ax-flex ax-flex-1 ax-w-16 ax-justify-start\">\n <span class=\"ax-text-surface-fore ax-font-semibold\">Form Data</span>\n </div>\n <div class=\"ax-flex ax-flex-1 ax-flex-row ax-gap-2 ax-sm ax-items-center ax-justify-center\"></div>\n <div class=\"ax-flex ax-flex-1 ax-w-16 ax-justify-end\">\n <ax-button look=\"blank\" (onClick)=\"handleCopyJson()\">\n <ax-prefix>\n <ax-icon class=\"fa-regular fa-copy\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n <div class=\"ax-px-6 ax-text-white\">\n <ax-json-viewer [json]=\"context()\"></ax-json-viewer>\n </div>\n </div>\n </ax-content>\n </ax-drawer>\n</ax-drawer-container>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i5","i3","i4","merge"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-layout-designer.mjs","sources":["../tmp-esm2022/layout/designer/lib/designer/shared/command.js","../tmp-esm2022/layout/designer/lib/designer/shared/designer-connector.service.js","../tmp-esm2022/layout/designer/lib/designer/shared/generic-commands.types.js","../tmp-esm2022/layout/designer/lib/designer/shared/designer.types.js","../tmp-esm2022/layout/designer/lib/designer/components/widget-picker/widget-picker.service.js","../tmp-esm2022/layout/designer/lib/designer/shared/designer.service.js","../tmp-esm2022/layout/designer/lib/designer/components/add-widget-button/add-widget-button.component.js","../tmp-esm2022/layout/designer/lib/designer/components/add-widget-button/add-widget-line-button.component.js","../tmp-esm2022/layout/designer/lib/designer/components/add-widget-button/add-widget-mini-button.component.js","../tmp-esm2022/layout/designer/lib/designer/components/grid-drawer/grid-drawer.component.js","../tmp-esm2022/layout/designer/lib/designer/components/widget-picker/widget-picker.component.js","../tmp-esm2022/layout/designer/lib/property-viewer/widget-property-viewer.component.js","../tmp-esm2022/layout/designer/lib/designer/shared/widget-designer-renderer.directive.js","../tmp-esm2022/layout/designer/lib/designer/components/board/board.component.js","../tmp-esm2022/layout/designer/lib/designer/components/breadcrumbs/breadcrumbs.component.js","../tmp-esm2022/layout/designer/lib/designer/shared/drawer-content/drawer-content.component.js","../tmp-esm2022/layout/designer/lib/designer/components/drawers/data-sources/data-sources.component.js","../tmp-esm2022/layout/designer/lib/designer/components/drawers/history/history.component.js","../tmp-esm2022/layout/designer/lib/designer/components/drawers/outline/outline.component.js","../tmp-esm2022/layout/designer/lib/designer/components/drawers/pages/pages.component.js","../tmp-esm2022/layout/designer/lib/designer/components/header-menu/header-menu.component.js","../tmp-esm2022/layout/designer/lib/designer/components/size-mode/view-size-toolbar.component.js","../tmp-esm2022/layout/designer/lib/designer/designer.component.js","../tmp-esm2022/layout/designer/lib/preview/preview-viewer.component.js","../tmp-esm2022/layout/designer/lib/preview/preview-frame.component.js","../tmp-esm2022/layout/designer/lib/preview/preview.component.js","../tmp-esm2022/layout/designer/acorex-platform-layout-designer.js"],"sourcesContent":["import { computed, Injectable, signal } from \"@angular/core\";\nimport { cloneDeep, merge } from \"lodash-es\";\nimport * as i0 from \"@angular/core\";\n// AddWidgetCommand\nexport class AddWidgetCommand {\n constructor(widget, parent, previousSelection) {\n this.widget = widget;\n this.parent = parent;\n this.previousSelection = previousSelection;\n }\n execute() {\n this.parent.children = this.parent.children || [];\n this.parent.children.push(this.widget);\n }\n undo() {\n this.parent.children = this.parent.children || [];\n const index = this.parent.children.indexOf(this.widget);\n if (index > -1) {\n this.parent.children.splice(index, 1);\n }\n }\n description() {\n return `Added widget ${this.widget.name}`;\n }\n icon() {\n return `fa-solid fa-square-plus`;\n }\n getExecutionSelection() {\n return this.widget; // After executing, select the newly added widget\n }\n getUndoSelection() {\n return this.previousSelection; // After undo, select the previously selected widget\n }\n}\nexport class RemoveWidgetCommand {\n constructor(widget, parent, previousSelection) {\n this.widget = widget;\n this.parent = parent;\n this.previousSelection = previousSelection;\n parent.children = parent.children || [];\n this.index = parent.children.indexOf(widget); // Capture the index for undo purposes\n }\n execute() {\n this.parent.children = this.parent.children || [];\n this.index = this.parent.children.indexOf(this.widget); // Re-assert the index in case it has changed\n this.parent.children.splice(this.index, 1);\n }\n undo() {\n this.parent.children = this.parent.children || [];\n this.parent.children.splice(this.index, 0, this.widget); // Reinsert at the original index\n }\n description() {\n return `Removed widget ${this.widget.name}`;\n }\n icon() {\n return `fa-solid fa-square-minus`;\n }\n getExecutionSelection() {\n return this.previousSelection; // Typically the parent or a nearby sibling could be focused\n }\n getUndoSelection() {\n return this.widget; // Select the widget itself when the operation is undone\n }\n}\nexport class UpdateWidgetCommand {\n constructor(widget, values, previousSelection) {\n this.widget = widget;\n this.newState = merge(cloneDeep(widget), values);\n this.previousSelection = previousSelection;\n this.previousState = cloneDeep(widget);\n }\n execute() {\n merge(this.widget, this.newState);\n }\n undo() {\n this.deepPruneAndRestore(this.widget, this.previousState);\n }\n description() {\n return `Updated widget ${this.widget.name}`;\n }\n icon() {\n return `fa-solid fa-pen`;\n }\n getExecutionSelection() {\n return this.widget; // Focus the widget after it's updated\n }\n getUndoSelection() {\n return this.previousSelection; // Restore the focus to where it was before the update\n }\n deepPruneAndRestore(current, original) {\n Object.keys(current).forEach(key => {\n if (original.hasOwnProperty(key)) {\n if (typeof current[key] === 'object' && current[key] !== null && !(current[key] instanceof Array)) {\n this.deepPruneAndRestore(current[key], original[key]);\n }\n }\n else {\n delete current[key]; // Remove properties not present in original\n }\n });\n // Restore the original properties\n merge(current, original);\n }\n}\nexport class CommandManager {\n constructor() {\n this.undoStack = signal([]);\n this.currentIndex = signal(-1);\n this.selectedNode = signal(null);\n this.canUndo = computed(() => this.currentIndex() >= 0);\n this.canRedo = computed(() => this.currentIndex() < this.undoStack().length - 1);\n this.history = computed(() => this.undoStack().map((cmd, index) => ({\n description: cmd.description(),\n icon: cmd.icon(),\n isPast: this.currentIndex() > index,\n isFuture: this.currentIndex() < index,\n isCurrent: this.currentIndex() == index\n })));\n }\n executeCommand(command) {\n // Check if the currentIndex is not at the end of the undoStack\n if (this.currentIndex() !== this.undoStack().length - 1) {\n // Remove all commands beyond the current index to discard the \"future\" commands\n const newUndoStack = this.undoStack().slice(0, this.currentIndex() + 1);\n this.undoStack.set(newUndoStack);\n }\n command.execute();\n this.undoStack.set([...this.undoStack(), command]); // Add the new command to the stack\n this.currentIndex.set(this.undoStack().length - 1); // Update currentIndex to the end of the stack\n this.selectedNode.set(command.getExecutionSelection()); // Update the selected node\n }\n undo() {\n if (this.currentIndex() >= 0) {\n const command = this.undoStack()[this.currentIndex()];\n command.undo();\n this.currentIndex.set(this.currentIndex() - 1);\n if (this.currentIndex() >= 0) {\n this.selectedNode.set(this.undoStack()[this.currentIndex()].getUndoSelection());\n }\n else {\n this.selectedNode.set(null); // No selection if all commands are undone\n }\n }\n }\n redo() {\n if (this.currentIndex() < this.undoStack().length - 1) {\n this.currentIndex.set(this.currentIndex() + 1);\n const command = this.undoStack()[this.currentIndex()];\n command.execute();\n this.selectedNode.set(command.getExecutionSelection());\n }\n }\n goToCommand(index) {\n if (index < 0 || index >= this.undoStack().length || index === this.currentIndex()) {\n return; // Out of bounds or already at the desired index\n }\n if (index > this.currentIndex()) {\n // Need to redo until reaching the desired index\n while (this.currentIndex() < index) {\n this.redo();\n }\n }\n else {\n // Need to undo until reaching the desired index\n while (this.currentIndex() > index) {\n this.undo();\n }\n }\n // Optionally update any UI components or state here\n this.selectedNode.set(this.undoStack()[this.currentIndex()].getExecutionSelection());\n }\n clear() {\n this.undoStack.set([]);\n this.currentIndex.set(-1);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: CommandManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: CommandManager, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: CommandManager, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2Rlc2lnbmVyL3NyYy9saWIvZGVzaWduZXIvc2hhcmVkL2NvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQVk3QyxtQkFBbUI7QUFDbkIsTUFBTSxPQUFPLGdCQUFnQjtJQUt6QixZQUFZLE1BQXFCLEVBQUUsTUFBcUIsRUFBRSxpQkFBZ0M7UUFDdEYsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO0lBQy9DLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUk7UUFDQSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDbEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4RCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENB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LENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQWFNLEtBQUs7UUFDUixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7OEdBL0VRLGNBQWM7a0hBQWQsY0FBYyxjQUZYLE1BQU07OzJGQUVULGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQV2lkZ2V0Tm9kZSB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyXCI7XG5pbXBvcnQgeyBjb21wdXRlZCwgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IGNsb25lRGVlcCwgbWVyZ2UgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbi8vIENvbW1hbmQgaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIENvbW1hbmQge1xuICAgIGV4ZWN1dGUoKTogdm9pZDtcbiAgICB1bmRvKCk6IHZvaWQ7XG4gICAgZGVzY3JpcHRpb24oKTogc3RyaW5nO1xuICAgIGljb24oKTogc3RyaW5nO1xuICAgIGdldEV4ZWN1dGlvblNlbGVjdGlvbigpOiBBWFBXaWRnZXROb2RlOyAgLy8gTm9kZSB0byBzZWxlY3QgYWZ0ZXIgZXhlY3V0aW9uXG4gICAgZ2V0VW5kb1NlbGVjdGlvbigpOiBBWFBXaWRnZXROb2RlOyAgICAgICAvLyBOb2RlIHRvIHNlbGVjdCBhZnRlciB1bmRvXG59XG5cbi8vIEFkZFdpZGdldENvbW1hbmRcbmV4cG9ydCBjbGFzcyBBZGRXaWRnZXRDb21tYW5kIGltcGxlbWVudHMgQ29tbWFuZCB7XG4gICAgcHJpdmF0ZSB3aWRnZXQ6IEFYUFdpZGdldE5vZGU7XG4gICAgcHJpdmF0ZSBwYXJlbnQ6IEFYUFdpZGdldE5vZGU7XG4gICAgcHJpdmF0ZSBwcmV2aW91c1NlbGVjdGlvbjogQVhQV2lkZ2V0Tm9kZTtcblxuICAgIGNvbnN0cnVjdG9yKHdpZGdldDogQVhQV2lkZ2V0Tm9kZSwgcGFyZW50OiBBWFBXaWRnZXROb2RlLCBwcmV2aW91c1NlbGVjdGlvbjogQVhQV2lkZ2V0Tm9kZSkge1xuICAgICAgICB0aGlzLndpZGdldCA9IHdpZGdldDtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgIHRoaXMucHJldmlvdXNTZWxlY3Rpb24gPSBwcmV2aW91c1NlbGVjdGlvbjtcbiAgICB9XG5cbiAgICBleGVjdXRlKCkge1xuICAgICAgICB0aGlzLnBhcmVudC5jaGlsZHJlbiA9IHRoaXMucGFyZW50LmNoaWxkcmVuIHx8IFtdO1xuICAgICAgICB0aGlzLnBhcmVudC5jaGlsZHJlbi5wdXNoKHRoaXMud2lkZ2V0KTtcbiAgICB9XG5cbiAgICB1bmRvKCkge1xuICAgICAgICB0aGlzLnBhcmVudC5jaGlsZHJlbiA9IHRoaXMucGFyZW50LmNoaWxkcmVuIHx8IFtdO1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucGFyZW50LmNoaWxkcmVuLmluZGV4T2YodGhpcy53aWRnZXQpO1xuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQuY2hpbGRyZW4uc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRlc2NyaXB0aW9uKCkge1xuICAgICAgICByZXR1cm4gYEFkZGVkIHdpZGdldCAke3RoaXMud2lkZ2V0Lm5hbWV9YDtcbiAgICB9XG5cbiAgICBpY29uKCkge1xuICAgICAgICByZXR1cm4gYGZhLXNvbGlkIGZhLXNxdWFyZS1wbHVzYDtcbiAgICB9XG5cbiAgICBnZXRFeGVjdXRpb25TZWxlY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndpZGdldDsgIC8vIEFmdGVyIGV4ZWN1dGluZywgc2VsZWN0IHRoZSBuZXdseSBhZGRlZCB3aWRnZXRcbiAgICB9XG5cbiAgICBnZXRVbmRvU2VsZWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcmV2aW91c1NlbGVjdGlvbjsgIC8vIEFmdGVyIHVuZG8sIHNlbGVjdCB0aGUgcHJldmlvdXNseSBzZWxlY3RlZCB3aWRnZXRcbiAgICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIFJlbW92ZVdpZGdldENvbW1hbmQgaW1wbGVtZW50cyBDb21tYW5kIHtcbiAgICBwcml2YXRlIHdpZGdldDogQVhQV2lkZ2V0Tm9kZTtcbiAgICBwcml2YXRlIHBhcmVudDogQVhQV2lkZ2V0Tm9kZTtcbiAgICBwcml2YXRlIHByZXZpb3VzU2VsZWN0aW9uOiBBWFBXaWRnZXROb2RlO1xuICAgIHByaXZhdGUgaW5kZXg6IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKHdpZGdldDogQVhQV2lkZ2V0Tm9kZSwgcGFyZW50OiBBWFBXaWRnZXROb2RlLCBwcmV2aW91c1NlbGVjdGlvbjogQVhQV2lkZ2V0Tm9kZSkge1xuICAgICAgICB0aGlzLndpZGdldCA9IHdpZGdldDtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgIHRoaXMucHJldmlvdXNTZWxlY3Rpb24gPSBwcmV2aW91c1NlbGVjdGlvbjtcbiAgICAgICAgcGFyZW50LmNoaWxkcmVuID0gcGFyZW50LmNoaWxkcmVuIHx8IFtdO1xuICAgICAgICB0aGlzLmluZGV4ID0gcGFyZW50LmNoaWxkcmVuLmluZGV4T2Yod2lkZ2V0KTsgIC8vIENhcHR1cmUgdGhlIGluZGV4IGZvciB1bmRvIHB1cnBvc2VzXG4gICAgfVxuXG4gICAgZXhlY3V0ZSgpIHtcbiAgICAgICAgdGhpcy5wYXJlbnQuY2hpbGRyZW4gPSB0aGlzLnBhcmVudC5jaGlsZHJlbiB8fCBbXTtcbiAgICAgICAgdGhpcy5pbmRleCA9IHRoaXMucGFyZW50LmNoaWxkcmVuLmluZGV4T2YodGhpcy53aWRnZXQpOyAgLy8gUmUtYXNzZXJ0IHRoZSBpbmRleCBpbiBjYXNlIGl0IGhhcyBjaGFuZ2VkXG4gICAgICAgIHRoaXMucGFyZW50LmNoaWxkcmVuLnNwbGljZSh0aGlzLmluZGV4LCAxKTtcbiAgICB9XG5cbiAgICB1bmRvKCkge1xuICAgICAgICB0aGlzLnBhcmVudC5jaGlsZHJlbiA9IHRoaXMucGFyZW50LmNoaWxkcmVuIHx8IFtdO1xuICAgICAgICB0aGlzLnBhcmVudC5jaGlsZHJlbi5zcGxpY2UodGhpcy5pbmRleCwgMCwgdGhpcy53aWRnZXQpOyAgLy8gUmVpbnNlcnQgYXQgdGhlIG9yaWdpbmFsIGluZGV4XG4gICAgfVxuXG4gICAgZGVzY3JpcHRpb24oKSB7XG4gICAgICAgIHJldHVybiBgUmVtb3ZlZCB3aWRnZXQgJHt0aGlzLndpZGdldC5uYW1lfWA7XG4gICAgfVxuXG4gICAgaWNvbigpIHtcbiAgICAgICAgcmV0dXJuIGBmYS1zb2xpZCBmYS1zcXVhcmUtbWludXNgO1xuICAgIH1cblxuICAgIGdldEV4ZWN1dGlvblNlbGVjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJldmlvdXNTZWxlY3Rpb247ICAvLyBUeXBpY2FsbHkgdGhlIHBhcmVudCBvciBhIG5lYXJieSBzaWJsaW5nIGNvdWxkIGJlIGZvY3VzZWRcbiAgICB9XG5cbiAgICBnZXRVbmRvU2VsZWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy53aWRnZXQ7ICAvLyBTZWxlY3QgdGhlIHdpZGdldCBpdHNlbGYgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIHVuZG9uZVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVwZGF0ZVdpZGdldENvbW1hbmQgaW1wbGVtZW50cyBDb21tYW5kIHtcbiAgICBwcml2YXRlIHdpZGdldDogQVhQV2lkZ2V0Tm9kZTtcbiAgICBwcml2YXRlIHByZXZpb3VzU3RhdGU6IEFYUFdpZGdldE5vZGU7XG4gICAgcHJpdmF0ZSBuZXdTdGF0ZTogQVhQV2lkZ2V0Tm9kZTtcbiAgICBwcml2YXRlIHByZXZpb3VzU2VsZWN0aW9uOiBBWFBXaWRnZXROb2RlO1xuXG4gICAgY29uc3RydWN0b3Iod2lkZ2V0OiBBWFBXaWRnZXROb2RlLCB2YWx1ZXM6IFBhcnRpYWw8QVhQV2lkZ2V0Tm9kZT4sIHByZXZpb3VzU2VsZWN0aW9uOiBBWFBXaWRnZXROb2RlKSB7XG4gICAgICAgIHRoaXMud2lkZ2V0ID0gd2lkZ2V0O1xuICAgICAgICB0aGlzLm5ld1N0YXRlID0gbWVyZ2UoY2xvbmVEZWVwKHdpZGdldCksIHZhbHVlcyk7XG4gICAgICAgIHRoaXMucHJldmlvdXNTZWxlY3Rpb24gPSBwcmV2aW91c1NlbGVjdGlvbjtcbiAgICAgICAgdGhpcy5wcmV2aW91c1N0YXRlID0gY2xvbmVEZWVwKHdpZGdldCk7XG4gICAgfVxuXG4gICAgZXhlY3V0ZSgpIHtcbiAgICAgICAgbWVyZ2UodGhpcy53aWRnZXQsIHRoaXMubmV3U3RhdGUpXG4gICAgfVxuXG4gICAgdW5kbygpIHtcbiAgICAgICAgdGhpcy5kZWVwUHJ1bmVBbmRSZXN0b3JlKHRoaXMud2lkZ2V0LCB0aGlzLnByZXZpb3VzU3RhdGUpO1xuICAgIH1cblxuICAgIGRlc2NyaXB0aW9uKCkge1xuICAgICAgICByZXR1cm4gYFVwZGF0ZWQgd2lkZ2V0ICR7dGhpcy53aWRnZXQubmFtZX1gO1xuICAgIH1cblxuICAgIGljb24oKSB7XG4gICAgICAgIHJldHVybiBgZmEtc29saWQgZmEtcGVuYDtcbiAgICB9XG5cbiAgICBnZXRFeGVjdXRpb25TZWxlY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndpZGdldDsgIC8vIEZvY3VzIHRoZSB3aWRnZXQgYWZ0ZXIgaXQncyB1cGRhdGVkXG4gICAgfVxuXG4gICAgZ2V0VW5kb1NlbGVjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJldmlvdXNTZWxlY3Rpb247ICAvLyBSZXN0b3JlIHRoZSBmb2N1cyB0byB3aGVyZSBpdCB3YXMgYmVmb3JlIHRoZSB1cGRhdGVcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlZXBQcnVuZUFuZFJlc3RvcmUoY3VycmVudDogYW55LCBvcmlnaW5hbDogYW55KSB7XG4gICAgICAgIE9iamVjdC5rZXlzKGN1cnJlbnQpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIGlmIChvcmlnaW5hbC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50W2tleV0gPT09ICdvYmplY3QnICYmIGN1cnJlbnRba2V5XSAhPT0gbnVsbCAmJiAhKGN1cnJlbnRba2V5XSBpbnN0YW5jZW9mIEFycmF5KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZXBQcnVuZUFuZFJlc3RvcmUoY3VycmVudFtrZXldLCBvcmlnaW5hbFtrZXldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBjdXJyZW50W2tleV07ICAvLyBSZW1vdmUgcHJvcGVydGllcyBub3QgcHJlc2VudCBpbiBvcmlnaW5hbFxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBwcm9wZXJ0aWVzXG4gICAgICAgIG1lcmdlKGN1cnJlbnQsIG9yaWdpbmFsKTtcbiAgICB9XG59XG5cblxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvbW1hbmRNYW5hZ2VyIHtcbiAgICBwcml2YXRlIHVuZG9TdGFjayA9IHNpZ25hbDxDb21tYW5kW10+KFtdKTtcbiAgICBwcml2YXRlIGN1cnJlbnRJbmRleCA9IHNpZ25hbDxudW1iZXI+KC0xKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWROb2RlID0gc2lnbmFsPEFYUFdpZGdldE5vZGUgfCBudWxsPihudWxsKTtcblxuICAgIHB1YmxpYyBjYW5VbmRvID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jdXJyZW50SW5kZXgoKSA+PSAwKVxuICAgIHB1YmxpYyBjYW5SZWRvID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jdXJyZW50SW5kZXgoKSA8IHRoaXMudW5kb1N0YWNrKCkubGVuZ3RoIC0gMSlcblxuICAgIGV4ZWN1dGVDb21tYW5kKGNvbW1hbmQ6IENvbW1hbmQpIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnRJbmRleCBpcyBub3QgYXQgdGhlIGVuZCBvZiB0aGUgdW5kb1N0YWNrXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRJbmRleCgpICE9PSB0aGlzLnVuZG9TdGFjaygpLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIC8vIFJlbW92ZSBhbGwgY29tbWFuZHMgYmV5b25kIHRoZSBjdXJyZW50IGluZGV4IHRvIGRpc2NhcmQgdGhlIFwiZnV0dXJlXCIgY29tbWFuZHNcbiAgICAgICAgICAgIGNvbnN0IG5ld1VuZG9TdGFjayA9IHRoaXMudW5kb1N0YWNrKCkuc2xpY2UoMCwgdGhpcy5jdXJyZW50SW5kZXgoKSArIDEpO1xuICAgICAgICAgICAgdGhpcy51bmRvU3RhY2suc2V0KG5ld1VuZG9TdGFjayk7XG4gICAgICAgIH1cblxuICAgICAgICBjb21tYW5kLmV4ZWN1dGUoKTtcbiAgICAgICAgdGhpcy51bmRvU3RhY2suc2V0KFsuLi50aGlzLnVuZG9TdGFjaygpLCBjb21tYW5kXSk7IC8vIEFkZCB0aGUgbmV3IGNvbW1hbmQgdG8gdGhlIHN0YWNrXG4gICAgICAgIHRoaXMuY3VycmVudEluZGV4LnNldCh0aGlzLnVuZG9TdGFjaygpLmxlbmd0aCAtIDEpOyAvLyBVcGRhdGUgY3VycmVudEluZGV4IHRvIHRoZSBlbmQgb2YgdGhlIHN0YWNrXG4gICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlLnNldChjb21tYW5kLmdldEV4ZWN1dGlvblNlbGVjdGlvbigpKTsgLy8gVXBkYXRlIHRoZSBzZWxlY3RlZCBub2RlXG4gICAgfVxuXG4gICAgdW5kbygpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEluZGV4KCkgPj0gMCkge1xuICAgICAgICAgICAgY29uc3QgY29tbWFuZCA9IHRoaXMudW5kb1N0YWNrKClbdGhpcy5jdXJyZW50SW5kZXgoKV07XG4gICAgICAgICAgICBjb21tYW5kLnVuZG8oKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEluZGV4LnNldCh0aGlzLmN1cnJlbnRJbmRleCgpIC0gMSk7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50SW5kZXgoKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUuc2V0KHRoaXMudW5kb1N0YWNrKClbdGhpcy5jdXJyZW50SW5kZXgoKV0uZ2V0VW5kb1NlbGVjdGlvbigpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUuc2V0KG51bGwpOyAvLyBObyBzZWxlY3Rpb24gaWYgYWxsIGNvbW1hbmRzIGFyZSB1bmRvbmVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZG8oKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRJbmRleCgpIDwgdGhpcy51bmRvU3RhY2soKS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRJbmRleC5zZXQodGhpcy5jdXJyZW50SW5kZXgoKSArIDEpO1xuICAgICAgICAgICAgY29uc3QgY29tbWFuZCA9IHRoaXMudW5kb1N0YWNrKClbdGhpcy5jdXJyZW50SW5kZXgoKV07XG4gICAgICAgICAgICBjb21tYW5kLmV4ZWN1dGUoKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlLnNldChjb21tYW5kLmdldEV4ZWN1dGlvblNlbGVjdGlvbigpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdvVG9Db21tYW5kKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLnVuZG9TdGFjaygpLmxlbmd0aCB8fCBpbmRleCA9PT0gdGhpcy5jdXJyZW50SW5kZXgoKSkge1xuICAgICAgICAgICAgcmV0dXJuOyAgLy8gT3V0IG9mIGJvdW5kcyBvciBhbHJlYWR5IGF0IHRoZSBkZXNpcmVkIGluZGV4XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5kZXggPiB0aGlzLmN1cnJlbnRJbmRleCgpKSB7XG4gICAgICAgICAgICAvLyBOZWVkIHRvIHJlZG8gdW50aWwgcmVhY2hpbmcgdGhlIGRlc2lyZWQgaW5kZXhcbiAgICAgICAgICAgIHdoaWxlICh0aGlzLmN1cnJlbnRJbmRleCgpIDwgaW5kZXgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlZG8oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIE5lZWQgdG8gdW5kbyB1bnRpbCByZWFjaGluZyB0aGUgZGVzaXJlZCBpbmRleFxuICAgICAgICAgICAgd2hpbGUgKHRoaXMuY3VycmVudEluZGV4KCkgPiBpbmRleCkge1xuICAgICAgICAgICAgICAgIHRoaXMudW5kbygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3B0aW9uYWxseSB1cGRhdGUgYW55IFVJIGNvbXBvbmVudHMgb3Igc3RhdGUgaGVyZVxuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZS5zZXQodGhpcy51bmRvU3RhY2soKVt0aGlzLmN1cnJlbnRJbmRleCgpXS5nZXRFeGVjdXRpb25TZWxlY3Rpb24oKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGhpc3RvcnkgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnVuZG9TdGFjaygpLm1hcCgoY21kLCBpbmRleCkgPT4gKFxuICAgICAgICB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogY21kLmRlc2NyaXB0aW9uKCksXG4gICAgICAgICAgICBpY29uOiBjbWQuaWNvbigpLFxuICAgICAgICAgICAgaXNQYXN0OiB0aGlzLmN1cnJlbnRJbmRleCgpID4gaW5kZXgsXG4gICAgICAgICAgICBpc0Z1dHVyZTogdGhpcy5jdXJyZW50SW5kZXgoKSA8IGluZGV4LFxuICAgICAgICAgICAgaXNDdXJyZW50OiB0aGlzLmN1cnJlbnRJbmRleCgpID09IGluZGV4XG4gICAgICAgIH1cbiAgICApKSlcblxuXG4gICAgcHVibGljIGNsZWFyKCkge1xuICAgICAgICB0aGlzLnVuZG9TdGFjay5zZXQoW10pO1xuICAgICAgICB0aGlzLmN1cnJlbnRJbmRleC5zZXQoLTEpO1xuICAgIH1cbn0iXX0=","import { Injectable } from \"@angular/core\";\nimport * as i0 from \"@angular/core\";\nexport class AXPDesignerConnector {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerConnector, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerConnector }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerConnector, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXItY29ubmVjdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL2Rlc2lnbmVyL3NoYXJlZC9kZXNpZ25lci1jb25uZWN0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVMzQyxNQUFNLE9BQWdCLG9CQUFvQjs4R0FBcEIsb0JBQW9CO2tIQUFwQixvQkFBb0I7OzJGQUFwQixvQkFBb0I7a0JBRHpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUERlc2lnbmVyQ29udGVudCB7XG4gICAganNvbjogc3RyaW5nLFxuICAgIGh0bWw/OiBzdHJpbmdcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUERlc2lnbmVyQ29ubmVjdG9yPFQgPSBzdHJpbmc+IHtcblxuICAgIHB1YmxpYyBhYnN0cmFjdCBzYXZlKGlkOiBzdHJpbmcsIGNvbnRlbnQ6IEFYUERlc2lnbmVyQ29udGVudCk6IFByb21pc2U8Ym9vbGVhbj47XG5cbiAgICBwdWJsaWMgYWJzdHJhY3Qgc2F2ZUFzKGNvbnRlbnQ6IEFYUERlc2lnbmVyQ29udGVudCk6IFByb21pc2U8Ym9vbGVhbj47XG5cbiAgICBwdWJsaWMgYWJzdHJhY3QgbG9hZChpZDogVCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD47XG59Il19","import { assign, cloneDeep } from 'lodash-es';\nexport const AXP_DESIGNER_COPY_MENU = {\n text: 'Copy',\n name: 'copy',\n icon: 'fa-solid fa-copy',\n suffix: {\n text: 'Ctrl+C',\n },\n};\nexport const AXP_DESIGNER_CLONE_MENU = {\n text: 'Clone',\n name: 'clone',\n icon: 'fa-solid fa-clone',\n suffix: {\n text: 'Ctrl+D',\n },\n};\nexport const AXP_DESIGNER_CUT_MENU = {\n text: 'Cut',\n name: 'cut',\n icon: 'fa-solid fa-cut',\n suffix: {\n text: 'Ctrl+X',\n },\n};\nexport const AXP_DESIGNER_PASTE_MENU = {\n text: 'Paste',\n name: 'paste',\n icon: 'fa-solid fa-paste',\n suffix: {\n text: 'Ctrl+V',\n },\n};\nexport const AXP_DESIGNER_ADD_WIDGET_MENU = {\n text: 'Add Widget',\n name: 'add-widget',\n icon: 'fa-solid fa-plus',\n};\nexport const AXP_DESIGNER_SELECT_WIDGET_MENU = {\n text: 'Select',\n name: 'select',\n break: true,\n icon: 'fa-solid fa-arrow-pointer',\n};\nexport const AXP_DESIGNER_DELETE_WIDGET_MENU = {\n text: 'Delete',\n name: 'remove-widget',\n icon: 'fa-solid fa-trash',\n};\nexport const AXP_DESIGNER_SAVE_AS_WIDGET_MENU = {\n text: 'Save As...',\n name: 'save-as',\n icon: 'fa-solid fa-save',\n};\nexport function cloneWidgetMenu(item, options) {\n return assign(cloneDeep(item), options);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1jb21tYW5kcy50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2Rlc2lnbmVyL3NyYy9saWIvZGVzaWduZXIvc2hhcmVkL2dlbmVyaWMtY29tbWFuZHMudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFOUMsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQWU7SUFDaEQsSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsTUFBTTtJQUNaLElBQUksRUFBRSxrQkFBa0I7SUFDeEIsTUFBTSxFQUFFO1FBQ04sSUFBSSxFQUFFLFFBQVE7S0FDZjtDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBZTtJQUNqRCxJQUFJLEVBQUUsT0FBTztJQUNiLElBQUksRUFBRSxPQUFPO0lBQ2IsSUFBSSxFQUFFLG1CQUFtQjtJQUN6QixNQUFNLEVBQUU7UUFDTixJQUFJLEVBQUUsUUFBUTtLQUNmO0NBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFlO0lBQy9DLElBQUksRUFBRSxLQUFLO0lBQ1gsSUFBSSxFQUFFLEtBQUs7SUFDWCxJQUFJLEVBQUUsaUJBQWlCO0lBQ3ZCLE1BQU0sRUFBRTtRQUNOLElBQUksRUFBRSxRQUFRO0tBQ2Y7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQWU7SUFDakQsSUFBSSxFQUFFLE9BQU87SUFDYixJQUFJLEVBQUUsT0FBTztJQUNiLElBQUksRUFBRSxtQkFBbUI7SUFDekIsTUFBTSxFQUFFO1FBQ04sSUFBSSxFQUFFLFFBQVE7S0FDZjtDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBZTtJQUN0RCxJQUFJLEVBQUUsWUFBWTtJQUNsQixJQUFJLEVBQUUsWUFBWTtJQUNsQixJQUFJLEVBQUUsa0JBQWtCO0NBQ3pCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBZTtJQUN6RCxJQUFJLEVBQUUsUUFBUTtJQUNkLElBQUksRUFBRSxRQUFRO0lBQ2QsS0FBSyxFQUFFLElBQUk7SUFDWCxJQUFJLEVBQUUsMkJBQTJCO0NBQ2xDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBZTtJQUN6RCxJQUFJLEVBQUUsUUFBUTtJQUNkLElBQUksRUFBRSxlQUFlO0lBQ3JCLElBQUksRUFBRSxtQkFBbUI7Q0FDMUIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFlO0lBQzFELElBQUksRUFBRSxZQUFZO0lBQ2xCLElBQUksRUFBRSxTQUFTO0lBQ2YsSUFBSSxFQUFFLGtCQUFrQjtDQUN6QixDQUFDO0FBR0YsTUFBTSxVQUFVLGVBQWUsQ0FBQyxJQUFnQixFQUFFLE9BQTZCO0lBQzdFLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhNZW51SXRlbSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9tZW51JztcbmltcG9ydCB7IGFzc2lnbiwgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuZXhwb3J0IGNvbnN0IEFYUF9ERVNJR05FUl9DT1BZX01FTlU6IEFYTWVudUl0ZW0gPSB7XG4gIHRleHQ6ICdDb3B5JyxcbiAgbmFtZTogJ2NvcHknLFxuICBpY29uOiAnZmEtc29saWQgZmEtY29weScsXG4gIHN1ZmZpeDoge1xuICAgIHRleHQ6ICdDdHJsK0MnLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IEFYUF9ERVNJR05FUl9DTE9ORV9NRU5VOiBBWE1lbnVJdGVtID0ge1xuICB0ZXh0OiAnQ2xvbmUnLFxuICBuYW1lOiAnY2xvbmUnLFxuICBpY29uOiAnZmEtc29saWQgZmEtY2xvbmUnLFxuICBzdWZmaXg6IHtcbiAgICB0ZXh0OiAnQ3RybCtEJyxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBBWFBfREVTSUdORVJfQ1VUX01FTlU6IEFYTWVudUl0ZW0gPSB7XG4gIHRleHQ6ICdDdXQnLFxuICBuYW1lOiAnY3V0JyxcbiAgaWNvbjogJ2ZhLXNvbGlkIGZhLWN1dCcsXG4gIHN1ZmZpeDoge1xuICAgIHRleHQ6ICdDdHJsK1gnLFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IEFYUF9ERVNJR05FUl9QQVNURV9NRU5VOiBBWE1lbnVJdGVtID0ge1xuICB0ZXh0OiAnUGFzdGUnLFxuICBuYW1lOiAncGFzdGUnLFxuICBpY29uOiAnZmEtc29saWQgZmEtcGFzdGUnLFxuICBzdWZmaXg6IHtcbiAgICB0ZXh0OiAnQ3RybCtWJyxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBBWFBfREVTSUdORVJfQUREX1dJREdFVF9NRU5VOiBBWE1lbnVJdGVtID0ge1xuICB0ZXh0OiAnQWRkIFdpZGdldCcsXG4gIG5hbWU6ICdhZGQtd2lkZ2V0JyxcbiAgaWNvbjogJ2ZhLXNvbGlkIGZhLXBsdXMnLFxufTtcblxuZXhwb3J0IGNvbnN0IEFYUF9ERVNJR05FUl9TRUxFQ1RfV0lER0VUX01FTlU6IEFYTWVudUl0ZW0gPSB7XG4gIHRleHQ6ICdTZWxlY3QnLFxuICBuYW1lOiAnc2VsZWN0JyxcbiAgYnJlYWs6IHRydWUsXG4gIGljb246ICdmYS1zb2xpZCBmYS1hcnJvdy1wb2ludGVyJyxcbn1cblxuZXhwb3J0IGNvbnN0IEFYUF9ERVNJR05FUl9ERUxFVEVfV0lER0VUX01FTlU6IEFYTWVudUl0ZW0gPSB7XG4gIHRleHQ6ICdEZWxldGUnLFxuICBuYW1lOiAncmVtb3ZlLXdpZGdldCcsXG4gIGljb246ICdmYS1zb2xpZCBmYS10cmFzaCcsXG59O1xuXG5leHBvcnQgY29uc3QgQVhQX0RFU0lHTkVSX1NBVkVfQVNfV0lER0VUX01FTlU6IEFYTWVudUl0ZW0gPSB7XG4gIHRleHQ6ICdTYXZlIEFzLi4uJyxcbiAgbmFtZTogJ3NhdmUtYXMnLFxuICBpY29uOiAnZmEtc29saWQgZmEtc2F2ZScsXG59O1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBjbG9uZVdpZGdldE1lbnUoaXRlbTogQVhNZW51SXRlbSwgb3B0aW9ucz86IFBhcnRpYWw8QVhNZW51SXRlbT4pOiBBWE1lbnVJdGVtIHtcbiAgcmV0dXJuIGFzc2lnbihjbG9uZURlZXAoaXRlbSksIG9wdGlvbnMpO1xufVxuIl19","export class AXPDesignerModes {\n static { this.View = { id: 'view', title: 'View' }; }\n static { this.Design = { id: 'designer', title: 'Designer' }; }\n static { this.Edit = { id: 'edit', title: 'Edit' }; }\n}\nexport var AXPTemplateLoadingStrategy;\n(function (AXPTemplateLoadingStrategy) {\n AXPTemplateLoadingStrategy[\"Connector\"] = \"Connector\";\n AXPTemplateLoadingStrategy[\"Broadcast\"] = \"Broadcast\";\n})(AXPTemplateLoadingStrategy || (AXPTemplateLoadingStrategy = {}));\nexport const AXPDesignerMessageKeys = {\n Preview: \"designer-preview\",\n Loaded: \"designer-preview-loaded\",\n ContextChanged: \"designer-preview-context-changed\",\n PreviewWindow: \"designer-open-preview-window\",\n RequestFormContent: \"designer-request-form-content\",\n ResponseFormContent: \"designer-response-form-content\",\n SaveForm: 'designer-save-form-content',\n FormSaved: 'designer-form-saved-content',\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXIudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL2Rlc2lnbmVyL3NoYXJlZC9kZXNpZ25lci50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLE9BQU8sZ0JBQWdCO2FBQ1gsU0FBSSxHQUFvQixFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO2FBQ3RELFdBQU0sR0FBb0IsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQzthQUNoRSxTQUFJLEdBQW9CLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7O0FBSXhFLE1BQU0sQ0FBTixJQUFZLDBCQUdYO0FBSEQsV0FBWSwwQkFBMEI7SUFDcEMscURBQXVCLENBQUE7SUFDdkIscURBQXVCLENBQUE7QUFDekIsQ0FBQyxFQUhXLDBCQUEwQixLQUExQiwwQkFBMEIsUUFHckM7QUFvQkQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQ25DO0lBQ0UsT0FBTyxFQUFFLGtCQUFrQjtJQUMzQixNQUFNLEVBQUUseUJBQXlCO0lBQ2pDLGNBQWMsRUFBRSxrQ0FBa0M7SUFDbEQsYUFBYSxFQUFFLDhCQUE4QjtJQUM3QyxrQkFBa0IsRUFBRSwrQkFBK0I7SUFDbkQsbUJBQW1CLEVBQUUsZ0NBQWdDO0lBQ3JELFFBQVEsRUFBRSw0QkFBNEI7SUFDdEMsU0FBUyxFQUFFLDZCQUE2QjtDQUN6QyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhNZW51SXRlbSB9IGZyb20gXCJAYWNvcmV4L2NvbXBvbmVudHMvbWVudVwiO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Tm9kZSB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyXCI7XG5cbmV4cG9ydCB0eXBlIEFYUERlc2lnbmVyTW9kZSA9XG4gIHwgeyBpZDogJ2Rlc2lnbmVyJzsgdGl0bGU6ICdEZXNpZ25lcicgfVxuICB8IHsgaWQ6ICd2aWV3JzsgdGl0bGU6ICdWaWV3JyB9XG4gIHwgeyBpZDogJ2VkaXQnOyB0aXRsZTogJ0VkaXQnIH07XG5cbmV4cG9ydCBjbGFzcyBBWFBEZXNpZ25lck1vZGVzIHtcbiAgc3RhdGljIHJlYWRvbmx5IFZpZXc6IEFYUERlc2lnbmVyTW9kZSA9IHsgaWQ6ICd2aWV3JywgdGl0bGU6ICdWaWV3JyB9O1xuICBzdGF0aWMgcmVhZG9ubHkgRGVzaWduOiBBWFBEZXNpZ25lck1vZGUgPSB7IGlkOiAnZGVzaWduZXInLCB0aXRsZTogJ0Rlc2lnbmVyJyB9O1xuICBzdGF0aWMgcmVhZG9ubHkgRWRpdDogQVhQRGVzaWduZXJNb2RlID0geyBpZDogJ2VkaXQnLCB0aXRsZTogJ0VkaXQnIH07XG59XG5cblxuZXhwb3J0IGVudW0gQVhQVGVtcGxhdGVMb2FkaW5nU3RyYXRlZ3kge1xuICBDb25uZWN0b3IgPSBcIkNvbm5lY3RvclwiLFxuICBCcm9hZGNhc3QgPSBcIkJyb2FkY2FzdFwiLFxufVxuXG5cblxuZXhwb3J0IGludGVyZmFjZSBBWFBEZXNpZ25lcldpZGdldENvbXBvbmVudCB7XG4gIG9uQ29udGV4dE1lbnUoY29udGV4dDogeyBpdGVtczogQVhNZW51SXRlbVtdIH0pOiB2b2lkXG4gIGV4ZWN1dGVDb21tYW5kKGNvbW1hbmQ6IHsgbmFtZTogc3RyaW5nLCBkYXRhPzogYW55LCBoYW5kbGVkOiBib29sZWFuIH0pOiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRGVzaWduZXJQcmV2aWV3TWVzc2FnZSB7XG4gIGlkOiBzdHJpbmcsXG4gIGRvY3VtZW50OiBBWFBXaWRnZXROb2RlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRGVzaWduZXJTYXZlRm9ybU1lc3NhZ2Uge1xuICBpZDogc3RyaW5nLFxuICBzdWNjZXNzOiBib29sZWFuLFxuICBjb250ZW50Pzogc3RyaW5nXG59XG5cbmV4cG9ydCBjb25zdCBBWFBEZXNpZ25lck1lc3NhZ2VLZXlzID1cbntcbiAgUHJldmlldzogXCJkZXNpZ25lci1wcmV2aWV3XCIsXG4gIExvYWRlZDogXCJkZXNpZ25lci1wcmV2aWV3LWxvYWRlZFwiLFxuICBDb250ZXh0Q2hhbmdlZDogXCJkZXNpZ25lci1wcmV2aWV3LWNvbnRleHQtY2hhbmdlZFwiLFxuICBQcmV2aWV3V2luZG93OiBcImRlc2lnbmVyLW9wZW4tcHJldmlldy13aW5kb3dcIixcbiAgUmVxdWVzdEZvcm1Db250ZW50OiBcImRlc2lnbmVyLXJlcXVlc3QtZm9ybS1jb250ZW50XCIsXG4gIFJlc3BvbnNlRm9ybUNvbnRlbnQ6IFwiZGVzaWduZXItcmVzcG9uc2UtZm9ybS1jb250ZW50XCIsXG4gIFNhdmVGb3JtOiAnZGVzaWduZXItc2F2ZS1mb3JtLWNvbnRlbnQnLFxuICBGb3JtU2F2ZWQ6ICdkZXNpZ25lci1mb3JtLXNhdmVkLWNvbnRlbnQnLFxufSJdfQ==","import { AXPopupService } from '@acorex/components/popup';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPWidgetRegistryService, } from '@acorex/platform/layout/builder';\nimport { inject, Injectable } from '@angular/core';\nimport { sortBy } from 'lodash-es';\nimport * as i0 from \"@angular/core\";\nexport class AXPWidgetPickerService {\n constructor() {\n this.popupService = inject(AXPopupService);\n this.widgetRegistryService = inject(AXPWidgetRegistryService);\n this.translationService = inject(AXTranslationService);\n }\n async showPicker(options) {\n const com = await import('./widget-picker.component').then((c) => c.AXPDesignerWidgetPickerComponent);\n const widgets = this.widgetRegistryService.all();\n const filteredWidgets = widgets.filter((c) => options.groups.some((d) => c.groups?.includes(d)));\n //\n const result = await this.popupService.open(com, {\n title: await this.translationService.translateAsync('widget-picker.title', { scope: 'form-template-management' }),\n size: 'md',\n closeButton: true,\n data: {\n widgets: sortBy(filteredWidgets, (c) => c.title),\n },\n });\n //\n const selectedWidgets = (result.data?.widgets ?? []);\n return selectedWidgets.map((c) => ({\n type: c.name,\n meta: c.meta,\n }));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPWidgetPickerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPWidgetPickerService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPWidgetPickerService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXBpY2tlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZGVzaWduZXIvc3JjL2xpYi9kZXNpZ25lci9jb21wb25lbnRzL3dpZGdldC1waWNrZXIvd2lkZ2V0LXBpY2tlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBSUwsd0JBQXdCLEdBQ3pCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFLbkMsTUFBTSxPQUFPLHNCQUFzQjtJQUhuQztRQUlVLGlCQUFZLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RDLDBCQUFxQixHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3pELHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0tBdUIzRDtJQXJCQyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQXlDO1FBQ3hELE1BQU0sR0FBRyxHQUFHLE1BQU0sTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUN0RyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDakQsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRyxFQUFFO1FBQ0YsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDL0MsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLEtBQUssRUFBRSwwQkFBMEIsRUFBRSxDQUFDO1lBQ2pILElBQUksRUFBRSxJQUFJO1lBQ1YsV0FBVyxFQUFFLElBQUk7WUFDakIsSUFBSSxFQUFFO2dCQUNKLE9BQU8sRUFBRSxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO2FBQ2pEO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsRUFBRTtRQUNGLE1BQU0sZUFBZSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLElBQUksRUFBRSxDQUFzQixDQUFDO1FBRTFFLE9BQU8sZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNqQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQVc7WUFDbkIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO1NBQ2IsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDOzhHQXpCVSxzQkFBc0I7a0hBQXRCLHNCQUFzQixjQUZyQixNQUFNOzsyRkFFUCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQb3B1cFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wdXAnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHtcbiAgQVhQV2lkZ2V0Q29uZmlnLFxuICBBWFBXaWRnZXRHcm91cEVudW0sXG4gIEFYUFdpZGdldE5vZGUsXG4gIEFYUFdpZGdldFJlZ2lzdHJ5U2VydmljZSxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNvcnRCeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBXaWRnZXRQaWNrZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBwb3B1cFNlcnZpY2UgPSBpbmplY3QoQVhQb3B1cFNlcnZpY2UpO1xuICBwcml2YXRlIHdpZGdldFJlZ2lzdHJ5U2VydmljZSA9IGluamVjdChBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UpO1xuICBwcml2YXRlIHRyYW5zbGF0aW9uU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uU2VydmljZSk7XG5cbiAgYXN5bmMgc2hvd1BpY2tlcihvcHRpb25zOiB7IGdyb3VwczogQVhQV2lkZ2V0R3JvdXBFbnVtW10gfSk6IFByb21pc2U8QVhQV2lkZ2V0Tm9kZVtdPiB7XG4gICAgY29uc3QgY29tID0gYXdhaXQgaW1wb3J0KCcuL3dpZGdldC1waWNrZXIuY29tcG9uZW50JykudGhlbigoYykgPT4gYy5BWFBEZXNpZ25lcldpZGdldFBpY2tlckNvbXBvbmVudCk7XG4gICAgY29uc3Qgd2lkZ2V0cyA9IHRoaXMud2lkZ2V0UmVnaXN0cnlTZXJ2aWNlLmFsbCgpO1xuICAgIGNvbnN0IGZpbHRlcmVkV2lkZ2V0cyA9IHdpZGdldHMuZmlsdGVyKChjKSA9PiBvcHRpb25zLmdyb3Vwcy5zb21lKChkKSA9PiBjLmdyb3Vwcz8uaW5jbHVkZXMoZCkpKTtcbiAgICAvL1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucG9wdXBTZXJ2aWNlLm9wZW4oY29tLCB7XG4gICAgICB0aXRsZTogYXdhaXQgdGhpcy50cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ3dpZGdldC1waWNrZXIudGl0bGUnLCB7IHNjb3BlOiAnZm9ybS10ZW1wbGF0ZS1tYW5hZ2VtZW50JyB9KSxcbiAgICAgIHNpemU6ICdtZCcsXG4gICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgd2lkZ2V0czogc29ydEJ5KGZpbHRlcmVkV2lkZ2V0cywgKGMpID0+IGMudGl0bGUpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICAvL1xuICAgIGNvbnN0IHNlbGVjdGVkV2lkZ2V0cyA9IChyZXN1bHQuZGF0YT8ud2lkZ2V0cyA/PyBbXSkgYXMgQVhQV2lkZ2V0Q29uZmlnW107XG5cbiAgICByZXR1cm4gc2VsZWN0ZWRXaWRnZXRzLm1hcCgoYykgPT4gKHtcbiAgICAgIHR5cGU6IGMubmFtZSBhcyBhbnksXG4gICAgICBtZXRhOiBjLm1ldGEsXG4gICAgfSkpO1xuICB9XG59XG4iXX0=","import { AXLoadingDialogService } from '@acorex/components/loading-dialog';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXFileService } from '@acorex/core/file';\nimport { AXPWidgetGroupEnum, AXPWidgetRegistryService, AXPWidgetsCatalog, } from '@acorex/platform/layout/builder';\nimport { computed, effect, inject, Injectable, signal } from '@angular/core';\nimport { cloneDeep, get, isEmpty, isNil, set } from 'lodash-es';\nimport { Subject } from 'rxjs';\nimport { AddWidgetCommand, CommandManager, RemoveWidgetCommand, UpdateWidgetCommand } from './command';\nimport { AXPDesignerConnector } from './designer-connector.service';\nimport { AXP_DESIGNER_ADD_WIDGET_MENU, AXP_DESIGNER_CLONE_MENU, AXP_DESIGNER_COPY_MENU, AXP_DESIGNER_CUT_MENU, AXP_DESIGNER_DELETE_WIDGET_MENU as AXP_DESIGNER_DELETE_WIDGET_MENU, AXP_DESIGNER_PASTE_MENU, AXP_DESIGNER_SAVE_AS_WIDGET_MENU, AXP_DESIGNER_SELECT_WIDGET_MENU, cloneWidgetMenu, } from './generic-commands.types';\nimport { AXPDesignerMessageKeys, AXPTemplateLoadingStrategy } from './designer.types';\nimport { AXPBroadcastEventService } from '@acorex/platform/core';\nimport { AXPWidgetPickerService } from '../components/widget-picker/widget-picker.service';\nimport * as i0 from \"@angular/core\";\nexport class AXPDesignerService {\n #ef;\n constructor() {\n this.popupService = inject(AXPopupService);\n this.toastService = inject(AXToastService);\n this.fileService = inject(AXFileService);\n this.loadingService = inject(AXLoadingDialogService);\n this.widgetRegisteryService = inject(AXPWidgetRegistryService);\n this.connector = inject(AXPDesignerConnector);\n this.eventService = inject(AXPBroadcastEventService);\n this.widgetPickerService = inject(AXPWidgetPickerService);\n this.document = signal(this.createDoc());\n this.currentPageIndex = signal(0);\n this.currentPage = signal(this.document().children?.[0]);\n this.commandManager = inject(CommandManager);\n this.clipboard = signal(null);\n //\n this.canCutCopy = computed(() => this.can(this.selectedNode()).copyOrCut);\n this.canDelete = computed(() => this.can(this.selectedNode()).delete);\n this.canInsert = computed(() => this.can(this.selectedNode()).insert);\n this.canPaste = computed(() => this.can(this.selectedNode()).paste);\n //\n this.history = computed(() => this.commandManager.history());\n this.canUndo = computed(() => this.commandManager.canUndo());\n this.canRedo = computed(() => this.commandManager.canRedo());\n //\n this.canSave = computed(() => this.templateId() != null);\n this.unsavedChanges = signal(false);\n this.breadcrumbs = computed(() => {\n return this.selectedNode() ? this.findBreadcrumbs(this.currentPage(), this.selectedNode()) ?? [] : [];\n });\n this.selectedNode = signal(null);\n this.selectedNodeConfig = computed(() => get(this.selectedNode(), '__meta__.config'));\n this._focusedNode = null;\n this.focusedNode = () => this._focusedNode;\n this.size = signal('xl');\n this.onSelected = new Subject();\n this.onRefresh = new Subject();\n this.onUpdate = new Subject();\n this.onFocused = new Subject();\n this.templateId = signal(null);\n this.loadingStrategy = signal(AXPTemplateLoadingStrategy.Connector);\n this.#ef = effect(() => {\n this.refresh({ widget: this.currentPage() });\n });\n this.can = (widget) => {\n if (!widget) {\n return {\n delete: false,\n copyOrCut: false,\n insert: false,\n paste: false,\n };\n }\n const config = get(widget, '__meta__.config');\n return {\n delete: widget.type != 'page-layout',\n copyOrCut: widget.type != 'page-layout',\n paste: this.clipboard() != null && config.type == 'container' && config.designer?.canInsert != false,\n insert: config.type == 'container' && config.designer?.canInsert != false,\n };\n };\n this.eventService.listen(AXPDesignerMessageKeys.Loaded).subscribe(() => {\n this.updatePreview();\n });\n //\n this.eventService.listen(AXPDesignerMessageKeys.PreviewWindow).subscribe(() => {\n this.openPreviewWindow();\n });\n //\n // window.addEventListener(\"beforeunload\", (event) => {\n // console.log(\"Window is before closing...\");\n // // event.preventDefault();\n // // event.returnValue = 'abc'; // Some browsers require this to show the prompt.\n // });\n window.addEventListener(\"unload\", async () => {\n console.log(\"Window is closing...\");\n if (this.unsavedChanges()) {\n this.eventService.publish(AXPDesignerMessageKeys.SaveForm, { id: this.templateId(), success: false });\n }\n this.unsubscribeEvents();\n });\n }\n register(command) {\n this.select({ widget: command.widget });\n }\n select(command) {\n this.selectedNode.set(command.widget);\n this.onSelected.next(command);\n }\n update(command) {\n const node = command.widget ?? this.selectedNode();\n if (command.mode == 'update' && node) {\n this.commandManager.executeCommand(new UpdateWidgetCommand(node, command.values, node));\n }\n //this.selectedNode.update((c) => merge(node, command.values));\n this.onUpdate.next({ widget: node, values: command.values });\n this.unsavedChanges.set(true);\n this.updatePreview();\n }\n focus(command) {\n if (this._focusedNode != command.widget) {\n this._focusedNode = command.widget;\n this.onFocused.next({ widget: this._focusedNode });\n }\n }\n refresh(command) {\n this.onRefresh.next({ widget: command.widget });\n this.updatePreview();\n }\n findBreadcrumbs(node, targetNode, breadcrumb = []) {\n // Add the current node to the breadcrumb path\n const currentBreadcrumb = [...breadcrumb, node];\n // Check if the current node is the target node\n if (node === targetNode) {\n return currentBreadcrumb;\n }\n // If the node has children, recursively search them\n if (node.children) {\n for (const child of node.children) {\n const result = this.findBreadcrumbs(child, targetNode, currentBreadcrumb);\n if (result) {\n return result;\n }\n }\n }\n // Return undefined if no match is found\n return undefined;\n }\n async showPicker(currentNode = this.selectedNode()) {\n const widgets = await this.widgetPickerService.showPicker({ groups: [AXPWidgetGroupEnum.FormElement] });\n const result = [];\n if (widgets.length) {\n widgets.forEach((c) => {\n result.push(this.addWidget(currentNode, { type: c.type }));\n });\n }\n return result;\n }\n new() {\n this.commandManager.clear();\n this.document.set(this.createDoc());\n this.currentPage.set(this.document().children?.[0]);\n this.reRenderPage();\n }\n createDoc() {\n const doc = {\n type: AXPWidgetsCatalog.document,\n children: [this.createPage()],\n name: 'document',\n };\n set(doc, '__meta__.id', this.generateUniqueId());\n return doc;\n }\n createPage() {\n const config = this.widgetRegisteryService.resolve('page-layout');\n const page = {\n type: 'page-layout',\n children: [],\n name: 'page-layout1',\n };\n set(page, '__meta__.id', this.generateUniqueId());\n set(page, '__meta__.config', config);\n return page;\n }\n addNewPage() {\n this.addWidget(this.document(), this.createPage());\n this.goToPage(this.currentPageIndex() + 1);\n }\n removePage(index) {\n const page = this.document().children?.[index];\n this.removeWidget(page);\n this.goToPage(index - 1);\n }\n clonePage(index) {\n const page = this.document().children?.[index];\n this.clone(page);\n this.goToPage((this.document().children?.length ?? 1) - 1);\n }\n goToPage(index) {\n this.currentPageIndex.set(index);\n this.currentPage.set(this.document().children?.[this.currentPageIndex()]);\n this.select({ widget: this.currentPage() });\n }\n reRenderPage() {\n this.currentPage.set({ ...this.currentPage() });\n setTimeout(() => {\n this.refresh({ widget: this.currentPage() });\n });\n }\n findWidgetById(root, id) {\n if (get(root, '__meta__.id') === id) {\n return root; // Return the root if it matches the ID\n }\n if (!root.children)\n return null;\n for (const child of root.children) {\n const found = this.findWidgetById(child, id);\n if (found) {\n return found; // Return the found child\n }\n }\n return null; // Node not found\n }\n findParent(id, parent = this.currentPage()) {\n if (!parent.children)\n return null;\n if (parent.children.some((child) => get(child, '__meta__.id') === id)) {\n return parent; // Return this node as it's the parent of the node with the given ID\n }\n for (const child of parent.children) {\n const foundParent = this.findParent(id, child);\n if (foundParent)\n return foundParent;\n }\n return null; // No parent found\n }\n findNearestContainer(node, searchUpward = true) {\n if (searchUpward) {\n let current = node;\n while (current) {\n const config = this.widgetRegisteryService.resolve(current.type);\n if (config && config.type == 'container') {\n return current;\n }\n current = this.findParent(get(current, '__meta__.id')); // Use findParent to navigate upwards\n }\n }\n else {\n // Recursive search to find the first container among children\n if (node.children) {\n for (const child of node.children) {\n const config = this.widgetRegisteryService.resolve(child.type);\n if (config && config.type == 'container') {\n return child;\n }\n const foundContainer = this.findNearestContainer(child, false); // Continue searching downwards\n if (foundContainer)\n return foundContainer;\n }\n }\n }\n return null; // Return null if no container found\n }\n addWidget(currentNode, node) {\n //\n const cloned = cloneDeep(node);\n const config = this.widgetRegisteryService.resolve(node.type);\n //\n this.commandManager.executeCommand(new AddWidgetCommand(cloned, currentNode, currentNode));\n //\n cloned.name = this.generateUniqueName(node.type);\n set(cloned, '__meta__.id', this.generateUniqueId());\n set(cloned, '__meta__.config', config);\n set(cloned, '__meta__.added', true);\n //\n this.reRenderPage();\n //\n this.refresh({ widget: currentNode });\n this.select({ widget: cloned });\n return cloned;\n }\n removeWidget(node = this.selectedNode()) {\n if (node.type === 'document-layout' ||\n (node.type === 'page-layout' && (this.document().children?.length ?? 1) == 1)) {\n console.error('Cannot remove the page node.');\n return; // Prevent removing the root page node or document\n }\n const nodeIdToRemove = get(node, '__meta__.id');\n if (!nodeIdToRemove) {\n throw new Error('Node does not have a valid __meta__.id to identify it for removal.');\n }\n // Find the parent of the node to remove it\n const parent = this.findParent(nodeIdToRemove, this.document());\n if (!parent) {\n throw new Error('Parent node not found. The node might be the root node or does not exist.');\n }\n const previousSelection = this.selectedNode(); // Capture the currently selected node before removal\n const command = new RemoveWidgetCommand(node, parent, previousSelection);\n this.commandManager.executeCommand(command);\n this.refresh({ widget: parent }); // Refresh the UI to reflect changes\n this.select({ widget: parent }); // Select the parent node after removal\n }\n navigateTo(index) {\n this.commandManager.goToCommand(index);\n this.reRenderPage();\n const currentSelection = this.commandManager.selectedNode();\n this.refresh({ widget: this.currentPage() });\n this.select({ widget: currentSelection });\n }\n redo() {\n this.commandManager.redo();\n this.reRenderPage();\n const currentSelection = this.commandManager.selectedNode();\n this.refresh({ widget: this.currentPage() });\n this.select({ widget: currentSelection });\n }\n undo() {\n this.commandManager.undo();\n this.reRenderPage();\n const currentSelection = this.commandManager.selectedNode();\n this.refresh({ widget: this.currentPage() });\n this.select({ widget: currentSelection });\n }\n clearHistory() {\n this.commandManager.clear();\n }\n removeMetaProp(obj) {\n const nodeName = '__meta__';\n // Check if the object is an array\n if (Array.isArray(obj)) {\n return obj.map((item) => this.removeMetaProp(item));\n }\n else if (typeof obj === 'object' && obj !== null) {\n // Create a new object to store the result\n let newObj = {};\n for (let key in obj) {\n // Only add the key if it's not the nodeName we want to remove\n if (key !== nodeName) {\n newObj[key] = this.removeMetaProp(obj[key]);\n }\n }\n return newObj;\n }\n // If the value is not an object or array, return it as is\n return obj;\n }\n async addMetaToNodes(node, processedNodes, progressCallback) {\n // Apply your meta logic here\n const config = this.widgetRegisteryService.resolve(node.type);\n //\n set(node, '__meta__.id', this.generateUniqueId());\n set(node, '__meta__.config', config);\n //\n // Increment the processed node count and update the progress dialog\n processedNodes.count++;\n progressCallback(processedNodes.count);\n // Recursively process child nodes using Promise.all\n if (node.children && node.children.length > 0) {\n node.children = await Promise.all(node.children.map(async (child) => await this.addMetaToNodes(child, processedNodes, progressCallback)));\n }\n return node;\n }\n copy(widget = this.selectedNode()) {\n if (this.can(widget).copyOrCut) {\n this.clipboard.set(cloneDeep(widget)); // Use lodash's cloneDeep to ensure a deep copy\n }\n }\n cut(widget = this.selectedNode()) {\n if (this.can(widget).copyOrCut) {\n this.copy(widget); // Copy the widget to the clipboard\n this.removeWidget(widget); // Reuse the removeWidget method which should handle undo internally\n }\n }\n clone(widget = this.selectedNode()) {\n if (!widget)\n return;\n this.copy(widget); // Copy the widget to the clipboard\n if (widget.type == 'page-layout') {\n this.paste(this.document());\n }\n else {\n this.paste(widget);\n }\n }\n paste(parentNode = this.selectedNode() ?? this.currentPage()) {\n if (!this.clipboard() || !this.selectedNode() || !parentNode) {\n console.error('Clipboard is empty or no node is selected.');\n return;\n }\n const newNode = cloneDeep(this.clipboard());\n const nearestContainer = this.findNearestContainer(parentNode, true);\n if (!nearestContainer) {\n console.error('No suitable container found.');\n return;\n }\n //\n if (!nearestContainer.children) {\n nearestContainer.children = [];\n }\n //\n const setNameId = (node) => {\n set(node, 'name', this.generateUniqueName(node.type));\n set(node, '__meta__.id', this.generateUniqueId());\n node.children?.forEach((n) => {\n setNameId(n);\n });\n };\n setNameId(newNode);\n //\n this.commandManager.executeCommand(new AddWidgetCommand(newNode, nearestContainer, nearestContainer));\n //\n setTimeout(() => {\n this.refresh({ widget: nearestContainer }); // Refresh the UI\n this.select({ widget: newNode }); // Select the newly pasted node\n });\n }\n async save() {\n if (this.templateId()) {\n const content = this.export();\n if (this.loadingStrategy() == AXPTemplateLoadingStrategy.Connector) {\n await this.connector.save(this.templateId(), { json: content });\n this.toastService.success('Your changes saved successfully');\n }\n else {\n const result = await this.eventService.sendAndWaitForResponse(AXPDesignerMessageKeys.SaveForm, { id: this.templateId(), success: true, content });\n if (result.success) {\n this.unsavedChanges.set(false);\n window.close();\n }\n }\n }\n else {\n this.downloadJson();\n }\n }\n async saveAs(node = this.document()) {\n const content = this.export(node);\n const result = await this.connector.saveAs({ json: content });\n if (result) {\n this.toastService.success('Your changes saved successfully');\n }\n }\n export(node = this.document()) {\n const json = this.removeMetaProp(node);\n return JSON.stringify(json);\n }\n downloadJson() {\n // Convert the object to a JSON string\n const jsonStr = this.export();\n // Create a blob object from the JSON string\n const blob = new Blob([jsonStr], { type: 'application/json' });\n // Create a URL for the blob object\n const url = URL.createObjectURL(blob);\n // Create a temporary <a> element to trigger the download\n const a = document.createElement('a');\n a.href = url;\n a.download = 'export.json';\n // Append the <a> element to the document body (necessary for some browsers)\n document.body.appendChild(a);\n // Trigger the download by clicking the <a> element\n a.click();\n // Clean up by revoking the object URL and removing the <a> element\n URL.revokeObjectURL(url);\n document.body.removeChild(a);\n }\n async loadById(id, options = { strategy: AXPTemplateLoadingStrategy.Connector }) {\n let content = null;\n try {\n if (options.strategy == AXPTemplateLoadingStrategy.Connector) {\n content = await this.connector.load(id);\n }\n else {\n content = await this.eventService.sendAndWaitForResponse(AXPDesignerMessageKeys.RequestFormContent, { formId: id }, { timeout: 10000, retries: 3, retryDelay: 1000 });\n }\n if (!isNil(content) && !isEmpty(content)) {\n await this.loadByContent(content);\n }\n this.templateId.set(id);\n this.loadingStrategy.set(options.strategy);\n }\n catch (error) {\n this.toastService.danger(error.message);\n }\n }\n async importJSon() {\n const files = await this.fileService.choose({ multiple: false, accept: 'application/json' });\n if (files && files.length) {\n const file = files[0];\n const content = await file.text();\n await this.loadByContent(content);\n }\n }\n async loadByContent(content) {\n const rootNode = JSON.parse(content);\n const totalNode = this.countTotalNodes(rootNode);\n const processedNodes = { count: 0 };\n const button = {\n text: 'Cancel',\n autofocus: true,\n color: 'primary',\n onClick: (e) => {\n dialog.close();\n },\n };\n const dialog = this.loadingService.show({\n mode: 'determinate',\n title: 'Loading Content',\n progressColor: 'primary',\n text: 'Processing content',\n status: `0 of ${totalNode}`,\n buttons: [button],\n });\n try {\n const root = await this.addMetaToNodes(rootNode, processedNodes, (count) => {\n dialog.setProgressValue(Math.ceil((count / totalNode) * 100));\n dialog.setProgressStatus(`${count} of ${totalNode}`);\n });\n const page = root.children?.[0];\n this.document.set(root);\n this.currentPage.set(page);\n dialog.setProgressColor('success');\n dialog.setProgressText('Content loaded successfully');\n button.text = 'Okay';\n button.color = 'success';\n dialog.setProgressValue(100);\n setTimeout(() => {\n this.reRenderPage();\n dialog.close();\n }, 250);\n }\n catch (error) {\n dialog.setProgressColor('danger');\n dialog.setProgressText(error instanceof Error ? error.message : 'Cannot load content');\n button.text = 'Close';\n button.color = 'danger';\n }\n }\n countTotalNodes(node) {\n let count = 1; // Count the current node\n if (node.children && node.children.length > 0) {\n count += node.children.reduce((sum, child) => sum + this.countTotalNodes(child), 0);\n }\n return count;\n }\n generateUniqueName(type) {\n // Normalize the type to follow camelCase convention\n const baseName = type.charAt(0).toLowerCase() + type.slice(1);\n let index = 1;\n let uniqueName = `${baseName}${index}`;\n // Gather all existing names to check against\n const existingNames = new Set();\n this.collectAllNames(this.document(), existingNames);\n // Increment the index until a unique name is found\n while (existingNames.has(uniqueName)) {\n index++;\n uniqueName = `${baseName}${index}`;\n }\n return uniqueName;\n }\n generateUniqueId() {\n return Math.random() * Math.pow(10, 18);\n }\n collectAllNames(node, names) {\n if (node.name) {\n names.add(node.name);\n }\n if (node.children) {\n for (const child of node.children) {\n this.collectAllNames(child, names);\n }\n }\n }\n updatePreview() {\n this.eventService.publish(AXPDesignerMessageKeys.Preview, {\n id: this.templateId(),\n document: this.removeMetaProp(this.document())\n });\n }\n async openPreviewDialog() {\n const com = await import('../../preview/preview.component').then((c) => c.AXPLayoutDesignerPreviewComponent);\n await this.popupService.open(com, {\n header: false,\n size: 'full',\n data: {\n initialSize: this.size(),\n isDialogWindow: true,\n },\n });\n }\n openPreviewWindow() {\n window.open('/forms/preview', '_blank');\n }\n getContextMenuItems(instance, isRoot = false) {\n const widget = instance;\n const node = widget.node;\n const items = [];\n // \n if (this.can(node).insert) {\n items.push(cloneWidgetMenu(AXP_DESIGNER_ADD_WIDGET_MENU, {\n break: true,\n }));\n }\n //\n items.push(cloneWidgetMenu(AXP_DESIGNER_CLONE_MENU, { disabled: !this.can(node).copyOrCut }));\n items.push(cloneWidgetMenu(AXP_DESIGNER_CUT_MENU, { disabled: !this.can(node).copyOrCut }));\n items.push(cloneWidgetMenu(AXP_DESIGNER_COPY_MENU, { disabled: !this.can(node).copyOrCut }));\n items.push(cloneWidgetMenu(AXP_DESIGNER_PASTE_MENU, { disabled: !this.can(node).paste, break: true }));\n //\n items.push(cloneWidgetMenu(AXP_DESIGNER_DELETE_WIDGET_MENU, { disabled: !this.can(node).delete, break: true }));\n //\n items.push(cloneWidgetMenu(AXP_DESIGNER_SAVE_AS_WIDGET_MENU));\n if (instance.onContextMenu) {\n instance.onContextMenu({ items });\n }\n if (!isRoot) {\n items.forEach(item => {\n item.suffix = undefined;\n });\n }\n return items;\n }\n async executeCommand(context) {\n const widget = context.instance;\n if (context.instance.executeCommand) {\n const command = {\n name: context.name,\n data: context.data,\n handled: false\n };\n await context.instance.executeCommand(command);\n if (command.handled)\n return;\n }\n switch (context.name) {\n case AXP_DESIGNER_SELECT_WIDGET_MENU.name: {\n this.select({ widget: widget.node });\n break;\n }\n case AXP_DESIGNER_ADD_WIDGET_MENU.name: {\n this.showPicker(widget.node);\n break;\n }\n //\n case AXP_DESIGNER_DELETE_WIDGET_MENU.name: {\n this.removeWidget(widget.node);\n break;\n }\n //\n case AXP_DESIGNER_CLONE_MENU.name: {\n this.clone(widget.node);\n break;\n }\n case AXP_DESIGNER_CUT_MENU.name: {\n this.cut(widget.node);\n break;\n }\n case AXP_DESIGNER_COPY_MENU.name: {\n this.copy(widget.node);\n break;\n }\n case AXP_DESIGNER_PASTE_MENU.name: {\n this.paste(widget.node);\n break;\n }\n //\n }\n }\n unsubscribeEvents() {\n this.eventService.unsubscribe(AXPDesignerMessageKeys.Loaded);\n this.eventService.unsubscribe(AXPDesignerMessageKeys.PreviewWindow);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2Rlc2lnbmVyL3NyYy9saWIvZGVzaWduZXIvc2hhcmVkL2Rlc2lnbmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE2QixzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXRHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFJTCxrQkFBa0IsRUFFbEIsd0JBQXdCLEVBQ3hCLGlCQUFpQixHQUNsQixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQXlCLEdBQUcsRUFBVSxNQUFNLFdBQVcsQ0FBQztBQUMvRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdkcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDcEUsT0FBTyxFQUNMLDRCQUE0QixFQUM1Qix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUNyQiwrQkFBK0IsSUFBSSwrQkFBK0IsRUFDbEUsdUJBQXVCLEVBQ3ZCLGdDQUFnQyxFQUNoQywrQkFBK0IsRUFDL0Is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QUFDLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN4QixNQUFLO1lBQ1AsQ0FBQztZQUNELEVBQUU7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7OEdBeHZCVSxrQkFBa0I7a0hBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYTG9hZGluZ0RpYWxvZ0J1dHRvbkl0ZW0sIEFYTG9hZGluZ0RpYWxvZ1NlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZy1kaWFsb2cnO1xuaW1wb3J0IHsgQVhNZW51SXRlbSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9tZW51JztcbmltcG9ydCB7IEFYUG9wdXBTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3BvcHVwJztcbmltcG9ydCB7IEFYVG9hc3RTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RvYXN0JztcbmltcG9ydCB7IEFYRmlsZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvZmlsZSc7XG5pbXBvcnQge1xuICBBWFBCYXNlV2lkZ2V0Q29tcG9uZW50LFxuICBBWFBWYWx1ZVdpZGdldENvbXBvbmVudCxcbiAgQVhQV2lkZ2V0Q29uZmlnLFxuICBBWFBXaWRnZXRHcm91cEVudW0sXG4gIEFYUFdpZGdldE5vZGUsXG4gIEFYUFdpZGdldFJlZ2lzdHJ5U2VydmljZSxcbiAgQVhQV2lkZ2V0c0NhdGFsb2csXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgZ2V0LCBpc0VtcHR5LCBpc05pbCwgaXNOdWxsLCBtZXJnZSwgcmVzdWx0LCBzZXQsIHNvcnRCeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBZGRXaWRnZXRDb21tYW5kLCBDb21tYW5kTWFuYWdlciwgUmVtb3ZlV2lkZ2V0Q29tbWFuZCwgVXBkYXRlV2lkZ2V0Q29tbWFuZCB9IGZyb20gJy4vY29tbWFuZCc7XG5pbXBvcnQgeyBBWFBEZXNpZ25lckNvbm5lY3RvciB9IGZyb20gJy4vZGVzaWduZXItY29ubmVjdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQVhQX0RFU0lHTkVSX0FERF9XSURHRVRfTUVOVSxcbiAgQVhQX0RFU0lHTkVSX0NMT05FX01FTlUsXG4gIEFYUF9ERVNJR05FUl9DT1BZX01FTlUsXG4gIEFYUF9ERVNJR05FUl9DVVRfTUVOVSxcbiAgQVhQX0RFU0lHTkVSX0RFTEVURV9XSURHRVRfTUVOVSBhcyBBWFBfREVTSUdORVJfREVMRVRFX1dJREdFVF9NRU5VLFxuICBBWFBfREVTSUdORVJfUEFTVEVfTUVOVSxcbiAgQVhQX0RFU0lHTkVSX1NBVkVfQVNfV0lER0VUX01FTlUsXG4gIEFYUF9ERVNJR05FUl9TRUxFQ1RfV0lER0VUX01FTlUsXG4gIGNsb25lV2lkZ2V0TWVudSxcbn0gZnJvbSAnLi9nZW5lcmljLWNvbW1hbmRzLnR5cGVzJztcbmltcG9ydCB7IEFYUERlc2lnbmVyTWVzc2FnZUtleXMsIEFYUERlc2lnbmVyUHJldmlld01lc3NhZ2UsIEFYUERlc2lnbmVyU2F2ZUZvcm1NZXNzYWdlLCBBWFBEZXNpZ25lcldpZGdldENvbXBvbmVudCwgQVhQVGVtcGxhdGVMb2FkaW5nU3RyYXRlZ3kgfSBmcm9tICcuL2Rlc2lnbmVyLnR5cGVzJztcbmltcG9ydCB7IEFYUEJyb2FkY2FzdEV2ZW50U2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXRQaWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi4vY29tcG9uZW50cy93aWRnZXQtcGlja2VyL3dpZGdldC1waWNrZXIuc2VydmljZSc7XG5leHBvcnQgdHlwZSBBWFBEZXNpZ25lclByZXZpZXdTaXplID0gJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ3hsJyB8ICd4eGwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUERlc2lnbmVyRm9jdXNDb21tYW5kIHtcbiAgd2lkZ2V0OiBBWFBXaWRnZXROb2RlIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBEZXNpZ25lclVwZGF0ZUNvbW1hbmQge1xuICB2YWx1ZXM6IGFueTtcbiAgd2lkZ2V0PzogQVhQV2lkZ2V0Tm9kZSB8IG51bGw7XG4gIG1vZGU6ICdpbml0JyB8ICd1cGRhdGUnO1xufVxuZXhwb3J0IGludGVyZmFjZSBBWFBEZXNpZ25lclVwZGF0ZUV2ZW50IHtcbiAgdmFsdWVzOiBhbnk7XG4gIHdpZGdldDogQVhQV2lkZ2V0Tm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBEZXNpZ25lclNlbGVjdENvbW1hbmQge1xuICB3aWRnZXQ6IEFYUFdpZGdldE5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRGVzaWduZXJSZWdpc3RlckNvbW1hbmQge1xuICBpZDogbnVtYmVyO1xuICB3aWRnZXQ6IEFYUFdpZGdldE5vZGU7XG4gIGNvbmZpZzogQVhQV2lkZ2V0Q29uZmlnO1xuICBpbnN0YW5jZTogQVhQQmFzZVdpZGdldENvbXBvbmVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBEZXNpZ25lclNlbGVjdEV2ZW50IHtcbiAgd2lkZ2V0OiBBWFBXaWRnZXROb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUERlc2lnbmVyUmVmcmVzaENvbW1hbmQge1xuICB3aWRnZXQ6IEFYUFdpZGdldE5vZGU7XG59XG5leHBvcnQgaW50ZXJmYWNlIEFYUERlc2lnbmVyUmVmcmVzaEV2ZW50IHtcbiAgd2lkZ2V0OiBBWFBXaWRnZXROb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUERlc2lnbmVyQWRkTm9kZUNvbW1hbmQge1xuICB3aWRnZXQ6IEFYUFdpZGdldE5vZGU7XG59XG5leHBvcnQgaW50ZXJmYWNlIEFYUERlc2lnbmVyQWRkTm9kZUV2ZW50IHtcbiAgd2lkZ2V0OiBBWFBXaWRnZXROb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUERlc2lnbmVyRm9jdXNFdmVudCB7XG4gIHdpZGdldDogQVhQV2lkZ2V0Tm9kZSB8IG51bGw7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWFBEZXNpZ25lclNlcnZpY2Uge1xuICBwcml2YXRlIHBvcHVwU2VydmljZSA9IGluamVjdChBWFBvcHVwU2VydmljZSk7XG4gIHByaXZhdGUgdG9hc3RTZXJ2aWNlID0gaW5qZWN0KEFYVG9hc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBmaWxlU2VydmljZSA9IGluamVjdChBWEZpbGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBsb2FkaW5nU2VydmljZSA9IGluamVjdChBWExvYWRpbmdEaWFsb2dTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB3aWRnZXRSZWdpc3RlcnlTZXJ2aWNlID0gaW5qZWN0KEFYUFdpZGdldFJlZ2lzdHJ5U2VydmljZSk7XG4gIHByaXZhdGUgY29ubmVjdG9yID0gaW5qZWN0KEFYUERlc2lnbmVyQ29ubmVjdG9yKTtcbiAgcHJpdmF0ZSBldmVudFNlcnZpY2UgPSBpbmplY3QoQVhQQnJvYWRjYXN0RXZlbnRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB3aWRnZXRQaWNrZXJTZXJ2aWNlID0gaW5qZWN0KEFYUFdpZGdldFBpY2tlclNlcnZpY2UpO1xuXG5cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50ID0gc2lnbmFsKHRoaXMuY3JlYXRlRG9jKCkpO1xuICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudFBhZ2VJbmRleCA9IHNpZ25hbCgwKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudFBhZ2UgPSBzaWduYWwodGhpcy5kb2N1bWVudCgpLmNoaWxkcmVuPy5bMF0gYXMgQVhQV2lkZ2V0Tm9kZSk7XG5cbiAgcHJpdmF0ZSBjb21tYW5kTWFuYWdlciA9IGluamVjdChDb21tYW5kTWFuYWdlcik7XG5cbiAgcHJpdmF0ZSBjbGlwYm9hcmQgPSBzaWduYWw8QVhQV2lkZ2V0Tm9kZSB8IG51bGw+KG51bGwpO1xuXG4gIC8vXG4gIHB1YmxpYyBjYW5DdXRDb3B5ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jYW4odGhpcy5zZWxlY3RlZE5vZGUoKSkuY29weU9yQ3V0KTtcbiAgcHVibGljIGNhbkRlbGV0ZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY2FuKHRoaXMuc2VsZWN0ZWROb2RlKCkpLmRlbGV0ZSk7XG4gIHB1YmxpYyBjYW5JbnNlcnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNhbih0aGlzLnNlbGVjdGVkTm9kZSgpKS5pbnNlcnQpO1xuICBwdWJsaWMgY2FuUGFzdGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNhbih0aGlzLnNlbGVjdGVkTm9kZSgpKS5wYXN0ZSk7XG4gIC8vXG4gIHB1YmxpYyByZWFkb25seSBoaXN0b3J5ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb21tYW5kTWFuYWdlci5oaXN0b3J5KCkpO1xuICBwdWJsaWMgcmVhZG9ubHkgY2FuVW5kbyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29tbWFuZE1hbmFnZXIuY2FuVW5kbygpKTtcbiAgcHVibGljIHJlYWRvbmx5IGNhblJlZG8gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbW1hbmRNYW5hZ2VyLmNhblJlZG8oKSk7XG4gIC8vXG4gIHB1YmxpYyByZWFkb25seSBjYW5TYXZlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50ZW1wbGF0ZUlkKCkgIT0gbnVsbCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHVuc2F2ZWRDaGFuZ2VzID0gc2lnbmFsKGZhbHNlKTtcblxuICBwdWJsaWMgYnJlYWRjcnVtYnMgPSBjb21wdXRlZDxBWFBXaWRnZXROb2RlW10+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZE5vZGUoKSA/IHRoaXMuZmluZEJyZWFkY3J1bWJzKHRoaXMuY3VycmVudFBhZ2UoKSwgdGhpcy5zZWxlY3RlZE5vZGUoKSkgPz8gW10gOiBbXTtcbiAgfSk7XG5cbiAgcHVibGljIHNlbGVjdGVkTm9kZSA9IHNpZ25hbDxBWFBXaWRnZXROb2RlIHwgbnVsbD4obnVsbCk7XG5cbiAgcHVibGljIHNlbGVjdGVkTm9kZUNvbmZpZyA9IGNvbXB1dGVkKCgpID0+IGdldCh0aGlzLnNlbGVjdGVkTm9kZSgpLCAnX19tZXRhX18uY29uZmlnJykgYXMgYW55IGFzIEFYUFdpZGdldENvbmZpZyk7XG5cbiAgcHJpdmF0ZSBfZm9jdXNlZE5vZGU6IEFYUFdpZGdldE5vZGUgfCBudWxsID0gbnVsbDtcbiAgcHVibGljIGZvY3VzZWROb2RlID0gKCkgPT4gdGhpcy5fZm9jdXNlZE5vZGU7XG5cbiAgcHVibGljIHJlYWRvbmx5IHNpemUgPSBzaWduYWw8QVhQRGVzaWduZXJQcmV2aWV3U2l6ZT4oJ3hsJyk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9uU2VsZWN0ZWQgPSBuZXcgU3ViamVjdDxBWFBEZXNpZ25lclNlbGVjdEV2ZW50PigpO1xuICBwdWJsaWMgcmVhZG9ubHkgb25SZWZyZXNoID0gbmV3IFN1YmplY3Q8QVhQRGVzaWduZXJSZWZyZXNoRXZlbnQ+KCk7XG4gIHB1YmxpYyByZWFkb25seSBvblVwZGF0ZSA9IG5ldyBTdWJqZWN0PEFYUERlc2lnbmVyVXBkYXRlRXZlbnQ+KCk7XG4gIHB1YmxpYyByZWFkb25seSBvbkZvY3VzZWQgPSBuZXcgU3ViamVjdDxBWFBEZXNpZ25lckZvY3VzRXZlbnQ+KCk7XG5cbiAgcHJpdmF0ZSB0ZW1wbGF0ZUlkID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgbG9hZGluZ1N0cmF0ZWd5ID0gc2lnbmFsPEFYUFRlbXBsYXRlTG9hZGluZ1N0cmF0ZWd5PihBWFBUZW1wbGF0ZUxvYWRpbmdTdHJhdGVneS5Db25uZWN0b3IpO1xuXG4gICNlZiA9IGVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICB0aGlzLnJlZnJlc2goeyB3aWRnZXQ6IHRoaXMuY3VycmVudFBhZ2UoKSB9KTtcbiAgICB9XG4gICk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5ldmVudFNlcnZpY2UubGlzdGVuKEFYUERlc2lnbmVyTWVzc2FnZUtleXMuTG9hZGVkKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVQcmV2aWV3KCk7XG4gICAgfSlcbiAgICAvL1xuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLmxpc3RlbihBWFBEZXNpZ25lck1lc3NhZ2VLZXlzLlByZXZpZXdXaW5kb3cpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLm9wZW5QcmV2aWV3V2luZG93KCk7XG4gICAgfSk7XG4gICAgLy9cbiAgICAvLyB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImJlZm9yZXVubG9hZFwiLCAoZXZlbnQpID0+IHtcbiAgICAvLyAgIGNvbnNvbGUubG9nKFwiV2luZG93IGlzIGJlZm9yZSBjbG9zaW5nLi4uXCIpO1xuICAgIC8vICAgLy8gZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAvLyAgIC8vIGV2ZW50LnJldHVyblZhbHVlID0gJ2FiYyc7IC8vIFNvbWUgYnJvd3NlcnMgcmVxdWlyZSB0aGlzIHRvIHNob3cgdGhlIHByb21wdC5cbiAgICAvLyB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInVubG9hZFwiLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhcIldpbmRvdyBpcyBjbG9zaW5nLi4uXCIpO1xuICAgICAgaWYgKHRoaXMudW5zYXZlZENoYW5nZXMoKSkge1xuICAgICAgICB0aGlzLmV2ZW50U2VydmljZS5wdWJsaXNoPEFYUERlc2lnbmVyU2F2ZUZvcm1NZXNzYWdlPihBWFBEZXNpZ25lck1lc3NhZ2VLZXlzLlNhdmVGb3JtLCB7IGlkOiB0aGlzLnRlbXBsYXRlSWQoKSEsIHN1Y2Nlc3M6IGZhbHNlIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy51bnN1YnNjcmliZUV2ZW50cygpO1xuICAgIH0pO1xuICB9XG5cblxuICBwcml2YXRlIGNhbiA9ICh3aWRnZXQ6IEFYUFdpZGdldE5vZGUgfCBudWxsKToge1xuICAgIGRlbGV0ZTogYm9vbGVhbixcbiAgICBjb3B5T3JDdXQ6IGJvb2xlYW4sXG4gICAgaW5zZXJ0OiBib29sZWFuLFxuICAgIHBhc3RlOiBib29sZWFuLFxuICB9ID0+IHtcbiAgICBpZiAoIXdpZGdldCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVsZXRlOiBmYWxzZSxcbiAgICAgICAgY29weU9yQ3V0OiBmYWxzZSxcbiAgICAgICAgaW5zZXJ0OiBmYWxzZSxcbiAgICAgICAgcGFzdGU6IGZhbHNlLFxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBjb25maWcgPSBnZXQod2lkZ2V0LCAnX19tZXRhX18uY29uZmlnJykgYXMgYW55IGFzIEFYUFdpZGdldENvbmZpZztcbiAgICByZXR1cm4ge1xuICAgICAgZGVsZXRlOiB3aWRnZXQudHlwZSAhPSAncGFnZS1sYXlvdXQnLFxuICAgICAgY29weU9yQ3V0OiB3aWRnZXQudHlwZSAhPSAncGFnZS1sYXlvdXQnLFxuICAgICAgcGFzdGU6IHRoaXMuY2xpcGJvYXJkKCkgIT0gbnVsbCAmJiBjb25maWcudHlwZSA9PSAnY29udGFpbmVyJyAmJiBjb25maWcuZGVzaWduZXI/LmNhbkluc2VydCAhPSBmYWxzZSxcbiAgICAgIGluc2VydDogY29uZmlnLnR5cGUgPT0gJ2NvbnRhaW5lcicgJiYgY29uZmlnLmRlc2lnbmVyPy5jYW5JbnNlcnQgIT0gZmFsc2UsXG4gICAgfVxuICB9XG5cblxuXG4gIHB1YmxpYyByZWdpc3Rlcihjb21tYW5kOiBBWFBEZXNpZ25lclJlZ2lzdGVyQ29tbWFuZCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0KHsgd2lkZ2V0OiBjb21tYW5kLndpZGdldCB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3QoY29tbWFuZDogQVhQRGVzaWduZXJTZWxlY3RDb21tYW5kKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZE5vZGUuc2V0KGNvbW1hbmQud2lkZ2V0KTtcbiAgICB0aGlzLm9uU2VsZWN0ZWQubmV4dChjb21tYW5kKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGUoY29tbWFuZDogQVhQRGVzaWduZXJVcGRhdGVDb21tYW5kKTogdm9pZCB7XG4gICAgY29uc3Qgbm9kZSA9IGNvbW1hbmQud2lkZ2V0ID8/IHRoaXMuc2VsZWN0ZWROb2RlKCk7XG5cbiAgICBpZiAoY29tbWFuZC5tb2RlID09ICd1cGRhdGUnICYmIG5vZGUpIHtcbiAgICAgIHRoaXMuY29tbWFuZE1hbmFnZXIuZXhlY3V0ZUNvbW1hbmQobmV3IFVwZGF0ZVdpZGdldENvbW1hbmQobm9kZSEsIGNvbW1hbmQudmFsdWVzLCBub2RlISkpO1xuICAgIH1cbiAgICAvL3RoaXMuc2VsZWN0ZWROb2RlLnVwZGF0ZSgoYykgPT4gbWVyZ2Uobm9kZSwgY29tbWFuZC52YWx1ZXMpKTtcbiAgICB0aGlzLm9uVXBkYXRlLm5leHQoeyB3aWRnZXQ6IG5vZGUhLCB2YWx1ZXM6IGNvbW1hbmQudmFsdWVzIH0pO1xuICAgIHRoaXMudW5zYXZlZENoYW5nZXMuc2V0KHRydWUpO1xuICAgIHRoaXMudXBkYXRlUHJldmlldygpO1xuICB9XG5cbiAgcHVibGljIGZvY3VzKGNvbW1hbmQ6IEFYUERlc2lnbmVyRm9jdXNDb21tYW5kKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2ZvY3VzZWROb2RlICE9IGNvbW1hbmQud2lkZ2V0KSB7XG4gICAgICB0aGlzLl9mb2N1c2VkTm9kZSA9IGNvbW1hbmQud2lkZ2V0O1xuICAgICAgdGhpcy5vbkZvY3VzZWQubmV4dCh7IHdpZGdldDogdGhpcy5fZm9jdXNlZE5vZGUgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlZnJlc2goY29tbWFuZDogQVhQRGVzaWduZXJSZWZyZXNoQ29tbWFuZCkge1xuICAgIHRoaXMub25SZWZyZXNoLm5leHQoeyB3aWRnZXQ6IGNvbW1hbmQud2lkZ2V0IH0pO1xuICAgIHRoaXMudXBkYXRlUHJldmlldygpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kQnJlYWRjcnVtYnMoXG4gICAgbm9kZTogQVhQV2lkZ2V0Tm9kZSxcbiAgICB0YXJnZXROb2RlPzogQVhQV2lkZ2V0Tm9kZSB8IG51bGwsXG4gICAgYnJlYWRjcnVtYjogQVhQV2lkZ2V0Tm9kZVtdID0gW11cbiAgKTogQVhQV2lkZ2V0Tm9kZVtdIHwgdW5kZWZpbmVkIHtcbiAgICAvLyBBZGQgdGhlIGN1cnJlbnQgbm9kZSB0byB0aGUgYnJlYWRjcnVtYiBwYXRoXG4gICAgY29uc3QgY3VycmVudEJyZWFkY3J1bWIgPSBbLi4uYnJlYWRjcnVtYiwgbm9kZV07XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgY3VycmVudCBub2RlIGlzIHRoZSB0YXJnZXQgbm9kZVxuICAgIGlmIChub2RlID09PSB0YXJnZXROb2RlKSB7XG4gICAgICByZXR1cm4gY3VycmVudEJyZWFkY3J1bWI7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIG5vZGUgaGFzIGNoaWxkcmVuLCByZWN1cnNpdmVseSBzZWFyY2ggdGhlbVxuICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5maW5kQnJlYWRjcnVtYnMoY2hpbGQsIHRhcmdldE5vZGUsIGN1cnJlbnRCcmVhZGNydW1iKTtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gdW5kZWZpbmVkIGlmIG5vIG1hdGNoIGlzIGZvdW5kXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGFzeW5jIHNob3dQaWNrZXIoY3VycmVudE5vZGU6IEFYUFdpZGdldE5vZGUgPSB0aGlzLnNlbGVjdGVkTm9kZSgpISk6IFByb21pc2U8QVhQV2lkZ2V0Tm9kZVtdPiB7XG4gICAgY29uc3Qgd2lkZ2V0cyA9IGF3YWl0IHRoaXMud2lkZ2V0UGlja2VyU2VydmljZS5zaG93UGlja2VyKHsgZ3JvdXBzOiBbQVhQV2lkZ2V0R3JvdXBFbnVtLkZvcm1FbGVtZW50XSB9KTtcbiAgICBjb25zdCByZXN1bHQ6IEFYUFdpZGdldE5vZGVbXSA9IFtdO1xuICAgIGlmICh3aWRnZXRzLmxlbmd0aCkge1xuICAgICAgd2lkZ2V0cy5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuYWRkV2lkZ2V0KGN1cnJlbnROb2RlLCB7IHR5cGU6IGMudHlwZSB9KSEpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgbmV3KCkge1xuICAgIHRoaXMuY29tbWFuZE1hbmFnZXIuY2xlYXIoKTtcbiAgICB0aGlzLmRvY3VtZW50LnNldCh0aGlzLmNyZWF0ZURvYygpKTtcbiAgICB0aGlzLmN1cnJlbnRQYWdlLnNldCh0aGlzLmRvY3VtZW50KCkuY2hpbGRyZW4/LlswXSEpO1xuICAgIHRoaXMucmVSZW5kZXJQYWdlKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZURvYygpOiBBWFBXaWRnZXROb2RlIHtcbiAgICBjb25zdCBkb2M6IEFYUFdpZGdldE5vZGUgPSB7XG4gICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5kb2N1bWVudCxcbiAgICAgIGNoaWxkcmVuOiBbdGhpcy5jcmVhdGVQYWdlKCldLFxuICAgICAgbmFtZTogJ2RvY3VtZW50JyxcbiAgICB9O1xuICAgIHNldChkb2MsICdfX21ldGFfXy5pZCcsIHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgpKTtcbiAgICByZXR1cm4gZG9jO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVQYWdlKCk6IEFYUFdpZGdldE5vZGUge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMud2lkZ2V0UmVnaXN0ZXJ5U2VydmljZS5yZXNvbHZlKCdwYWdlLWxheW91dCcpO1xuXG4gICAgY29uc3QgcGFnZTogQVhQV2lkZ2V0Tm9kZSA9IHtcbiAgICAgIHR5cGU6ICdwYWdlLWxheW91dCcsXG4gICAgICBjaGlsZHJlbjogW10sXG4gICAgICBuYW1lOiAncGFnZS1sYXlvdXQxJyxcbiAgICB9O1xuXG4gICAgc2V0KHBhZ2UsICdfX21ldGFfXy5pZCcsIHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgpKTtcbiAgICBzZXQocGFnZSwgJ19fbWV0YV9fLmNvbmZpZycsIGNvbmZpZyk7XG4gICAgcmV0dXJuIHBhZ2U7XG4gIH1cblxuICBwdWJsaWMgYWRkTmV3UGFnZSgpIHtcbiAgICB0aGlzLmFkZFdpZGdldCh0aGlzLmRvY3VtZW50KCksIHRoaXMuY3JlYXRlUGFnZSgpKTtcbiAgICB0aGlzLmdvVG9QYWdlKHRoaXMuY3VycmVudFBhZ2VJbmRleCgpICsgMSk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlUGFnZShpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgcGFnZSA9IHRoaXMuZG9jdW1lbnQoKS5jaGlsZHJlbj8uW2luZGV4XSE7XG4gICAgdGhpcy5yZW1vdmVXaWRnZXQocGFnZSk7XG4gICAgdGhpcy5nb1RvUGFnZShpbmRleCAtIDEpO1xuICB9XG5cbiAgcHVibGljIGNsb25lUGFnZShpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgcGFnZSA9IHRoaXMuZG9jdW1lbnQoKS5jaGlsZHJlbj8uW2luZGV4XSE7XG4gICAgdGhpcy5jbG9uZShwYWdlKTtcbiAgICB0aGlzLmdvVG9QYWdlKCh0aGlzLmRvY3VtZW50KCkuY2hpbGRyZW4/Lmxlbmd0aCA/PyAxKSAtIDEpO1xuICB9XG5cbiAgcHVibGljIGdvVG9QYWdlKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlSW5kZXguc2V0KGluZGV4KTtcbiAgICB0aGlzLmN1cnJlbnRQYWdlLnNldCh0aGlzLmRvY3VtZW50KCkuY2hpbGRyZW4/Llt0aGlzLmN1cnJlbnRQYWdlSW5kZXgoKV0hKTtcbiAgICB0aGlzLnNlbGVjdCh7IHdpZGdldDogdGhpcy5jdXJyZW50UGFnZSgpIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZVJlbmRlclBhZ2UoKSB7XG4gICAgdGhpcy5jdXJyZW50UGFnZS5zZXQoeyAuLi50aGlzLmN1cnJlbnRQYWdlKCkgfSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnJlZnJlc2goeyB3aWRnZXQ6IHRoaXMuY3VycmVudFBhZ2UoKSB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBmaW5kV2lkZ2V0QnlJZChyb290OiBBWFBXaWRnZXROb2RlLCBpZDogc3RyaW5nKTogQVhQV2lkZ2V0Tm9kZSB8IG51bGwge1xuICAgIGlmIChnZXQocm9vdCwgJ19fbWV0YV9fLmlkJykgPT09IGlkKSB7XG4gICAgICByZXR1cm4gcm9vdDsgLy8gUmV0dXJuIHRoZSByb290IGlmIGl0IG1hdGNoZXMgdGhlIElEXG4gICAgfVxuICAgIGlmICghcm9vdC5jaGlsZHJlbikgcmV0dXJuIG51bGw7XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHJvb3QuY2hpbGRyZW4pIHtcbiAgICAgIGNvbnN0IGZvdW5kID0gdGhpcy5maW5kV2lkZ2V0QnlJZChjaGlsZCwgaWQpO1xuICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgIHJldHVybiBmb3VuZDsgLy8gUmV0dXJuIHRoZSBmb3VuZCBjaGlsZFxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsOyAvLyBOb2RlIG5vdCBmb3VuZFxuICB9XG5cbiAgcHJpdmF0ZSBmaW5kUGFyZW50KGlkOiBzdHJpbmcsIHBhcmVudDogQVhQV2lkZ2V0Tm9kZSA9IHRoaXMuY3VycmVudFBhZ2UoKSk6IEFYUFdpZGdldE5vZGUgfCBudWxsIHtcbiAgICBpZiAoIXBhcmVudC5jaGlsZHJlbikgcmV0dXJuIG51bGw7XG5cbiAgICBpZiAocGFyZW50LmNoaWxkcmVuLnNvbWUoKGNoaWxkKSA9PiBnZXQoY2hpbGQsICdfX21ldGFfXy5pZCcpID09PSBpZCkpIHtcbiAgICAgIHJldHVybiBwYXJlbnQ7IC8vIFJldHVybiB0aGlzIG5vZGUgYXMgaXQncyB0aGUgcGFyZW50IG9mIHRoZSBub2RlIHdpdGggdGhlIGdpdmVuIElEXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiBwYXJlbnQuY2hpbGRyZW4pIHtcbiAgICAgIGNvbnN0IGZvdW5kUGFyZW50ID0gdGhpcy5maW5kUGFyZW50KGlkLCBjaGlsZCk7XG4gICAgICBpZiAoZm91bmRQYXJlbnQpIHJldHVybiBmb3VuZFBhcmVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDsgLy8gTm8gcGFyZW50IGZvdW5kXG4gIH1cblxuICBwcml2YXRlIGZpbmROZWFyZXN0Q29udGFpbmVyKG5vZGU6IEFYUFdpZGdldE5vZGUsIHNlYXJjaFVwd2FyZCA9IHRydWUpOiBBWFBXaWRnZXROb2RlIHwgbnVsbCB7XG4gICAgaWYgKHNlYXJjaFVwd2FyZCkge1xuICAgICAgbGV0IGN1cnJlbnQ6IEFYUFdpZGdldE5vZGUgfCBudWxsID0gbm9kZTtcbiAgICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMud2lkZ2V0UmVnaXN0ZXJ5U2VydmljZS5yZXNvbHZlKGN1cnJlbnQudHlwZSk7XG4gICAgICAgIGlmIChjb25maWcgJiYgY29uZmlnLnR5cGUgPT0gJ2NvbnRhaW5lcicpIHtcbiAgICAgICAgICByZXR1cm4gY3VycmVudDtcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50ID0gdGhpcy5maW5kUGFyZW50KGdldChjdXJyZW50LCAnX19tZXRhX18uaWQnKSEpOyAvLyBVc2UgZmluZFBhcmVudCB0byBuYXZpZ2F0ZSB1cHdhcmRzXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlY3Vyc2l2ZSBzZWFyY2ggdG8gZmluZCB0aGUgZmlyc3QgY29udGFpbmVyIGFtb25nIGNoaWxkcmVuXG4gICAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLndpZGdldFJlZ2lzdGVyeVNlcnZpY2UucmVzb2x2ZShjaGlsZC50eXBlKTtcbiAgICAgICAgICBpZiAoY29uZmlnICYmIGNvbmZpZy50eXBlID09ICdjb250YWluZXInKSB7XG4gICAgICAgICAgICByZXR1cm4gY2hpbGQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGZvdW5kQ29udGFpbmVyID0gdGhpcy5maW5kTmVhcmVzdENvbnRhaW5lcihjaGlsZCwgZmFsc2UpOyAvLyBDb250aW51ZSBzZWFyY2hpbmcgZG93bndhcmRzXG4gICAgICAgICAgaWYgKGZvdW5kQ29udGFpbmVyKSByZXR1cm4gZm91bmRDb250YWluZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7IC8vIFJldHVybiBudWxsIGlmIG5vIGNvbnRhaW5lciBmb3VuZFxuICB9XG5cbiAgYWRkV2lkZ2V0KGN1cnJlbnROb2RlOiBBWFBXaWRnZXROb2RlLCBub2RlOiBBWFBXaWRnZXROb2RlKTogQVhQV2lkZ2V0Tm9kZSB7XG4gICAgLy9cbiAgICBjb25zdCBjbG9uZWQgPSBjbG9uZURlZXAobm9kZSk7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy53aWRnZXRSZWdpc3RlcnlTZXJ2aWNlLnJlc29sdmUobm9kZS50eXBlKTtcblxuICAgIC8vXG4gICAgdGhpcy5jb21tYW5kTWFuYWdlci5leGVjdXRlQ29tbWFuZChuZXcgQWRkV2lkZ2V0Q29tbWFuZChjbG9uZWQsIGN1cnJlbnROb2RlLCBjdXJyZW50Tm9kZSkpO1xuICAgIC8vXG4gICAgY2xvbmVkLm5hbWUgPSB0aGlzLmdlbmVyYXRlVW5pcXVlTmFtZShub2RlLnR5cGUpO1xuICAgIHNldChjbG9uZWQsICdfX21ldGFfXy5pZCcsIHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgpKTtcbiAgICBzZXQoY2xvbmVkLCAnX19tZXRhX18uY29uZmlnJywgY29uZmlnKTtcbiAgICBzZXQoY2xvbmVkLCAnX19tZXRhX18uYWRkZWQnLCB0cnVlKTtcbiAgICAvL1xuICAgIHRoaXMucmVSZW5kZXJQYWdlKCk7XG4gICAgLy9cbiAgICB0aGlzLnJlZnJlc2goeyB3aWRnZXQ6IGN1cnJlbnROb2RlIH0pO1xuICAgIHRoaXMuc2VsZWN0KHsgd2lkZ2V0OiBjbG9uZWQgfSk7XG5cbiAgICByZXR1cm4gY2xvbmVkO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZVdpZGdldChub2RlOiBBWFBXaWRnZXROb2RlID0gdGhpcy5zZWxlY3RlZE5vZGUoKSEpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICBub2RlLnR5cGUgPT09ICdkb2N1bWVudC1sYXlvdXQnIHx8XG4gICAgICAobm9kZS50eXBlID09PSAncGFnZS1sYXlvdXQnICYmICh0aGlzLmRvY3VtZW50KCkuY2hpbGRyZW4/Lmxlbmd0aCA/PyAxKSA9PSAxKVxuICAgICkge1xuICAgICAgY29uc29sZS5lcnJvcignQ2Fubm90IHJlbW92ZSB0aGUgcGFnZSBub2RlLicpO1xuICAgICAgcmV0dXJuOyAvLyBQcmV2ZW50IHJlbW92aW5nIHRoZSByb290IHBhZ2Ugbm9kZSBvciBkb2N1bWVudFxuICAgIH1cblxuICAgIGNvbnN0IG5vZGVJZFRvUmVtb3ZlID0gZ2V0KG5vZGUsICdfX21ldGFfXy5pZCcpO1xuICAgIGlmICghbm9kZUlkVG9SZW1vdmUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm9kZSBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgX19tZXRhX18uaWQgdG8gaWRlbnRpZnkgaXQgZm9yIHJlbW92YWwuJyk7XG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgcGFyZW50IG9mIHRoZSBub2RlIHRvIHJlbW92ZSBpdFxuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZmluZFBhcmVudChub2RlSWRUb1JlbW92ZSwgdGhpcy5kb2N1bWVudCgpKTtcbiAgICBpZiAoIXBhcmVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYXJlbnQgbm9kZSBub3QgZm91bmQuIFRoZSBub2RlIG1pZ2h0IGJlIHRoZSByb290IG5vZGUgb3IgZG9lcyBub3QgZXhpc3QuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJldmlvdXNTZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGVkTm9kZSgpOyAvLyBDYXB0dXJlIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgbm9kZSBiZWZvcmUgcmVtb3ZhbFxuICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgUmVtb3ZlV2lkZ2V0Q29tbWFuZChub2RlLCBwYXJlbnQsIHByZXZpb3VzU2VsZWN0aW9uISk7XG4gICAgdGhpcy5jb21tYW5kTWFuYWdlci5leGVjdXRlQ29tbWFuZChjb21tYW5kKTtcblxuICAgIHRoaXMucmVmcmVzaCh7IHdpZGdldDogcGFyZW50IH0pOyAvLyBSZWZyZXNoIHRoZSBVSSB0byByZWZsZWN0IGNoYW5nZXNcbiAgICB0aGlzLnNlbGVjdCh7IHdpZGdldDogcGFyZW50IH0pOyAvLyBTZWxlY3QgdGhlIHBhcmVudCBub2RlIGFmdGVyIHJlbW92YWxcbiAgfVxuXG4gIG5hdmlnYXRlVG8oaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuY29tbWFuZE1hbmFnZXIuZ29Ub0NvbW1hbmQoaW5kZXgpO1xuICAgIHRoaXMucmVSZW5kZXJQYWdlKCk7XG4gICAgY29uc3QgY3VycmVudFNlbGVjdGlvbiA9IHRoaXMuY29tbWFuZE1hbmFnZXIuc2VsZWN0ZWROb2RlKCk7XG4gICAgdGhpcy5yZWZyZXNoKHsgd2lkZ2V0OiB0aGlzLmN1cnJlbnRQYWdlKCkgfSk7XG4gICAgdGhpcy5zZWxlY3QoeyB3aWRnZXQ6IGN1cnJlbnRTZWxlY3Rpb24hIH0pO1xuICB9XG5cbiAgcHVibGljIHJlZG8oKSB7XG4gICAgdGhpcy5jb21tYW5kTWFuYWdlci5yZWRvKCk7XG4gICAgdGhpcy5yZVJlbmRlclBhZ2UoKTtcbiAgICBjb25zdCBjdXJyZW50U2VsZWN0aW9uID0gdGhpcy5jb21tYW5kTWFuYWdlci5zZWxlY3RlZE5vZGUoKTtcbiAgICB0aGlzLnJlZnJlc2goeyB3aWRnZXQ6IHRoaXMuY3VycmVudFBhZ2UoKSB9KTtcbiAgICB0aGlzLnNlbGVjdCh7IHdpZGdldDogY3VycmVudFNlbGVjdGlvbiEgfSk7XG4gIH1cblxuICBwdWJsaWMgdW5kbygpIHtcbiAgICB0aGlzLmNvbW1hbmRNYW5hZ2VyLnVuZG8oKTtcbiAgICB0aGlzLnJlUmVuZGVyUGFnZSgpO1xuICAgIGNvbnN0IGN1cnJlbnRTZWxlY3Rpb24gPSB0aGlzLmNvbW1hbmRNYW5hZ2VyLnNlbGVjdGVkTm9kZSgpO1xuICAgIHRoaXMucmVmcmVzaCh7IHdpZGdldDogdGhpcy5jdXJyZW50UGFnZSgpIH0pO1xuICAgIHRoaXMuc2VsZWN0KHsgd2lkZ2V0OiBjdXJyZW50U2VsZWN0aW9uISB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckhpc3RvcnkoKSB7XG4gICAgdGhpcy5jb21tYW5kTWFuYWdlci5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVNZXRhUHJvcChvYmo6IGFueSk6IGFueSB7XG4gICAgY29uc3Qgbm9kZU5hbWUgPSAnX19tZXRhX18nO1xuICAgIC8vIENoZWNrIGlmIHRoZSBvYmplY3QgaXMgYW4gYXJyYXlcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICByZXR1cm4gb2JqLm1hcCgoaXRlbSkgPT4gdGhpcy5yZW1vdmVNZXRhUHJvcChpdGVtKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGwpIHtcbiAgICAgIC8vIENyZWF0ZSBhIG5ldyBvYmplY3QgdG8gc3RvcmUgdGhlIHJlc3VsdFxuICAgICAgbGV0IG5ld09iajogYW55ID0ge307XG4gICAgICBmb3IgKGxldCBrZXkgaW4gb2JqKSB7XG4gICAgICAgIC8vIE9ubHkgYWRkIHRoZSBrZXkgaWYgaXQncyBub3QgdGhlIG5vZGVOYW1lIHdlIHdhbnQgdG8gcmVtb3ZlXG4gICAgICAgIGlmIChrZXkgIT09IG5vZGVOYW1lKSB7XG4gICAgICAgICAgbmV3T2JqW2tleV0gPSB0aGlzLnJlbW92ZU1ldGFQcm9wKG9ialtrZXldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5ld09iajtcbiAgICB9XG4gICAgLy8gSWYgdGhlIHZhbHVlIGlzIG5vdCBhbiBvYmplY3Qgb3IgYXJyYXksIHJldHVybiBpdCBhcyBpc1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFkZE1ldGFUb05vZGVzKFxuICAgIG5vZGU6IEFYUFdpZGdldE5vZGUsXG4gICAgcHJvY2Vzc2VkTm9kZXM6IHsgY291bnQ6IG51bWJlciB9LFxuICAgIHByb2dyZXNzQ2FsbGJhY2s6IChwcm9jZXNzZWQ6IG51bWJlcikgPT4gdm9pZFxuICApOiBQcm9taXNlPEFYUFdpZGdldE5vZGU+IHtcbiAgICAvLyBBcHBseSB5b3VyIG1ldGEgbG9naWMgaGVyZVxuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMud2lkZ2V0UmVnaXN0ZXJ5U2VydmljZS5yZXNvbHZlKG5vZGUudHlwZSk7XG4gICAgLy9cbiAgICBzZXQobm9kZSwgJ19fbWV0YV9fLmlkJywgdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCkpO1xuICAgIHNldChub2RlLCAnX19tZXRhX18uY29uZmlnJywgY29uZmlnKTtcbiAgICAvL1xuICAgIC8vIEluY3JlbWVudCB0aGUgcHJvY2Vzc2VkIG5vZGUgY291bnQgYW5kIHVwZGF0ZSB0aGUgcHJvZ3Jlc3MgZGlhbG9nXG4gICAgcHJvY2Vzc2VkTm9kZXMuY291bnQrKztcbiAgICBwcm9ncmVzc0NhbGxiYWNrKHByb2Nlc3NlZE5vZGVzLmNvdW50KTtcbiAgICAvLyBSZWN1cnNpdmVseSBwcm9jZXNzIGNoaWxkIG5vZGVzIHVzaW5nIFByb21pc2UuYWxsXG4gICAgaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICBub2RlLmNoaWxkcmVuID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIG5vZGUuY2hpbGRyZW4ubWFwKGFzeW5jIChjaGlsZCkgPT4gYXdhaXQgdGhpcy5hZGRNZXRhVG9Ob2RlcyhjaGlsZCwgcHJvY2Vzc2VkTm9kZXMsIHByb2dyZXNzQ2FsbGJhY2spKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBwdWJsaWMgY29weSh3aWRnZXQ6IEFYUFdpZGdldE5vZGUgfCBudWxsID0gdGhpcy5zZWxlY3RlZE5vZGUoKSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhbih3aWRnZXQpLmNvcHlPckN1dCkge1xuICAgICAgdGhpcy5jbGlwYm9hcmQuc2V0KGNsb25lRGVlcCh3aWRnZXQpKTsgLy8gVXNlIGxvZGFzaCdzIGNsb25lRGVlcCB0byBlbnN1cmUgYSBkZWVwIGNvcHlcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY3V0KHdpZGdldDogQVhQV2lkZ2V0Tm9kZSB8IG51bGwgPSB0aGlzLnNlbGVjdGVkTm9kZSgpKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FuKHdpZGdldCkuY29weU9yQ3V0KSB7XG4gICAgICB0aGlzLmNvcHkod2lkZ2V0KTsgLy8gQ29weSB0aGUgd2lkZ2V0IHRvIHRoZSBjbGlwYm9hcmRcbiAgICAgIHRoaXMucmVtb3ZlV2lkZ2V0KHdpZGdldCEpOyAvLyBSZXVzZSB0aGUgcmVtb3ZlV2lkZ2V0IG1ldGhvZCB3aGljaCBzaG91bGQgaGFuZGxlIHVuZG8gaW50ZXJuYWxseVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbG9uZSh3aWRnZXQ6IEFYUFdpZGdldE5vZGUgfCBudWxsID0gdGhpcy5zZWxlY3RlZE5vZGUoKSk6IHZvaWQge1xuICAgIGlmICghd2lkZ2V0KSByZXR1cm47XG4gICAgdGhpcy5jb3B5KHdpZGdldCk7IC8vIENvcHkgdGhlIHdpZGdldCB0byB0aGUgY2xpcGJvYXJkXG4gICAgaWYgKHdpZGdldC50eXBlID09ICdwYWdlLWxheW91dCcpIHtcbiAgICAgIHRoaXMucGFzdGUodGhpcy5kb2N1bWVudCgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wYXN0ZSh3aWRnZXQhKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcGFzdGUocGFyZW50Tm9kZTogQVhQV2lkZ2V0Tm9kZSB8IHVuZGVmaW5lZCA9IHRoaXMuc2VsZWN0ZWROb2RlKCkgPz8gdGhpcy5jdXJyZW50UGFnZSgpKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNsaXBib2FyZCgpIHx8ICF0aGlzLnNlbGVjdGVkTm9kZSgpIHx8ICFwYXJlbnROb2RlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdDbGlwYm9hcmQgaXMgZW1wdHkgb3Igbm8gbm9kZSBpcyBzZWxlY3RlZC4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbmV3Tm9kZSA9IGNsb25lRGVlcCh0aGlzLmNsaXBib2FyZCgpIGFzIEFYUFdpZGdldE5vZGUpO1xuICAgIGNvbnN0IG5lYXJlc3RDb250YWluZXIgPSB0aGlzLmZpbmROZWFyZXN0Q29udGFpbmVyKHBhcmVudE5vZGUsIHRydWUpO1xuICAgIGlmICghbmVhcmVzdENvbnRhaW5lcikge1xuICAgICAgY29uc29sZS5lcnJvcignTm8gc3VpdGFibGUgY29udGFpbmVyIGZvdW5kLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvL1xuICAgIGlmICghbmVhcmVzdENvbnRhaW5lci5jaGlsZHJlbikge1xuICAgICAgbmVhcmVzdENvbnRhaW5lci5jaGlsZHJlbiA9IFtdO1xuICAgIH1cbiAgICAvL1xuICAgIGNvbnN0IHNldE5hbWVJZCA9IChub2RlOiBBWFBXaWRnZXROb2RlKSA9PiB7XG4gICAgICBzZXQobm9kZSwgJ25hbWUnLCB0aGlzLmdlbmVyYXRlVW5pcXVlTmFtZShub2RlLnR5cGUpKTtcbiAgICAgIHNldChub2RlLCAnX19tZXRhX18uaWQnLCB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoKSk7XG4gICAgICBub2RlLmNoaWxkcmVuPy5mb3JFYWNoKChuKSA9PiB7XG4gICAgICAgIHNldE5hbWVJZChuKTtcbiAgICAgIH0pO1xuICAgIH07XG4gICAgc2V0TmFtZUlkKG5ld05vZGUpO1xuICAgIC8vXG4gICAgdGhpcy5jb21tYW5kTWFuYWdlci5leGVjdXRlQ29tbWFuZChuZXcgQWRkV2lkZ2V0Q29tbWFuZChuZXdOb2RlLCBuZWFyZXN0Q29udGFpbmVyLCBuZWFyZXN0Q29udGFpbmVyKSk7XG4gICAgLy9cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucmVmcmVzaCh7IHdpZGdldDogbmVhcmVzdENvbnRhaW5lciB9KTsgLy8gUmVmcmVzaCB0aGUgVUlcbiAgICAgIHRoaXMuc2VsZWN0KHsgd2lkZ2V0OiBuZXdOb2RlIH0pOyAvLyBTZWxlY3QgdGhlIG5ld2x5IHBhc3RlZCBub2RlXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzYXZlKCkge1xuICAgIGlmICh0aGlzLnRlbXBsYXRlSWQoKSkge1xuICAgICAgY29uc3QgY29udGVudCA9IHRoaXMuZXhwb3J0KCk7XG4gICAgICBpZiAodGhpcy5sb2FkaW5nU3RyYXRlZ3koKSA9PSBBWFBUZW1wbGF0ZUxvYWRpbmdTdHJhdGVneS5Db25uZWN0b3IpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5jb25uZWN0b3Iuc2F2ZSh0aGlzLnRlbXBsYXRlSWQoKSEsIHsganNvbjogY29udGVudCB9KTtcbiAgICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc3VjY2VzcygnWW91ciBjaGFuZ2VzIHNhdmVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZXZlbnRTZXJ2aWNlLnNlbmRBbmRXYWl0Rm9yUmVzcG9uc2U8QVhQRGVzaWduZXJTYXZlRm9ybU1lc3NhZ2UsIHsgc3VjY2VzczogYm9vbGVhbiB9PihBWFBEZXNpZ25lck1lc3NhZ2VLZXlzLlNhdmVGb3JtLCB7IGlkOiB0aGlzLnRlbXBsYXRlSWQoKSEsIHN1Y2Nlc3M6IHRydWUsIGNvbnRlbnQgfSk7XG4gICAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICAgIHRoaXMudW5zYXZlZENoYW5nZXMuc2V0KGZhbHNlKTtcbiAgICAgICAgICB3aW5kb3cuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRvd25sb2FkSnNvbigpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNhdmVBcyhub2RlOiBBWFBXaWRnZXROb2RlID0gdGhpcy5kb2N1bWVudCgpKSB7XG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZXhwb3J0KG5vZGUpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuY29ubmVjdG9yLnNhdmVBcyh7IGpzb246IGNvbnRlbnQgfSk7XG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc3VjY2VzcygnWW91ciBjaGFuZ2VzIHNhdmVkIHN1Y2Nlc3NmdWxseScpO1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydChub2RlOiBBWFBXaWRnZXROb2RlID0gdGhpcy5kb2N1bWVudCgpKTogc3RyaW5nIHtcbiAgICBjb25zdCBqc29uID0gdGhpcy5yZW1vdmVNZXRhUHJvcChub2RlKTtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoanNvbik7XG4gIH1cblxuICBkb3dubG9hZEpzb24oKSB7XG4gICAgLy8gQ29udmVydCB0aGUgb2JqZWN0IHRvIGEgSlNPTiBzdHJpbmdcbiAgICBjb25zdCBqc29uU3RyID0gdGhpcy5leHBvcnQoKTtcblxuICAgIC8vIENyZWF0ZSBhIGJsb2Igb2JqZWN0IGZyb20gdGhlIEpTT04gc3RyaW5nXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtqc29uU3RyXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vanNvbicgfSk7XG5cbiAgICAvLyBDcmVhdGUgYSBVUkwgZm9yIHRoZSBibG9iIG9iamVjdFxuICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG5cbiAgICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgPGE+IGVsZW1lbnQgdG8gdHJpZ2dlciB0aGUgZG93bmxvYWRcbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGEuaHJlZiA9IHVybDtcbiAgICBhLmRvd25sb2FkID0gJ2V4cG9ydC5qc29uJztcblxuICAgIC8vIEFwcGVuZCB0aGUgPGE+IGVsZW1lbnQgdG8gdGhlIGRvY3VtZW50IGJvZHkgKG5lY2Vzc2FyeSBmb3Igc29tZSBicm93c2VycylcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xuXG4gICAgLy8gVHJpZ2dlciB0aGUgZG93bmxvYWQgYnkgY2xpY2tpbmcgdGhlIDxhPiBlbGVtZW50XG4gICAgYS5jbGljaygpO1xuICAgIC8vIENsZWFuIHVwIGJ5IHJldm9raW5nIHRoZSBvYmplY3QgVVJMIGFuZCByZW1vdmluZyB0aGUgPGE+IGVsZW1lbnRcbiAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWRCeUlkKGlkOiBzdHJpbmcsIG9wdGlvbnM6IHsgc3RyYXRlZ3k6IEFYUFRlbXBsYXRlTG9hZGluZ1N0cmF0ZWd5IH0gPSB7IHN0cmF0ZWd5OiBBWFBUZW1wbGF0ZUxvYWRpbmdTdHJhdGVneS5Db25uZWN0b3IgfSkge1xuICAgIGxldCBjb250ZW50OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICB0cnkge1xuICAgICAgaWYgKG9wdGlvbnMuc3RyYXRlZ3kgPT0gQVhQVGVtcGxhdGVMb2FkaW5nU3RyYXRlZ3kuQ29ubmVjdG9yKSB7XG4gICAgICAgIGNvbnRlbnQgPSBhd2FpdCB0aGlzLmNvbm5lY3Rvci5sb2FkKGlkKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBjb250ZW50ID0gYXdhaXQgdGhpcy5ldmVudFNlcnZpY2Uuc2VuZEFuZFdhaXRGb3JSZXNwb25zZTx7IGZvcm1JZDogc3RyaW5nIH0sIHN0cmluZz4oQVhQRGVzaWduZXJNZXNzYWdlS2V5cy5SZXF1ZXN0Rm9ybUNvbnRlbnQsIHsgZm9ybUlkOiBpZCB9LCB7IHRpbWVvdXQ6IDEwMDAwLCByZXRyaWVzOiAzLCByZXRyeURlbGF5OiAxMDAwIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCFpc05pbChjb250ZW50KSAmJiAhaXNFbXB0eShjb250ZW50KSkge1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRCeUNvbnRlbnQoY29udGVudCEpO1xuICAgICAgfVxuICAgICAgdGhpcy50ZW1wbGF0ZUlkLnNldChpZCk7XG4gICAgICB0aGlzLmxvYWRpbmdTdHJhdGVneS5zZXQob3B0aW9ucy5zdHJhdGVneSk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZGFuZ2VyKGVycm9yLm1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGltcG9ydEpTb24oKSB7XG4gICAgY29uc3QgZmlsZXMgPSBhd2FpdCB0aGlzLmZpbGVTZXJ2aWNlLmNob29zZSh7IG11bHRpcGxlOiBmYWxzZSwgYWNjZXB0OiAnYXBwbGljYXRpb24vanNvbicgfSk7XG4gICAgaWYgKGZpbGVzICYmIGZpbGVzLmxlbmd0aCkge1xuICAgICAgY29uc3QgZmlsZSA9IGZpbGVzWzBdO1xuICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IGZpbGUudGV4dCgpO1xuICAgICAgYXdhaXQgdGhpcy5sb2FkQnlDb250ZW50KGNvbnRlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGxvYWRCeUNvbnRlbnQoY29udGVudDogc3RyaW5nKSB7XG4gICAgY29uc3Qgcm9vdE5vZGUgPSBKU09OLnBhcnNlKGNvbnRlbnQpIGFzIEFYUFdpZGdldE5vZGU7XG4gICAgY29uc3QgdG90YWxOb2RlID0gdGhpcy5jb3VudFRvdGFsTm9kZXMocm9vdE5vZGUpO1xuICAgIGNvbnN0IHByb2Nlc3NlZE5vZGVzID0geyBjb3VudDogMCB9O1xuXG4gICAgY29uc3QgYnV0dG9uOiBBWExvYWRpbmdEaWFsb2dCdXR0b25JdGVtID0ge1xuICAgICAgdGV4dDogJ0NhbmNlbCcsXG4gICAgICBhdXRvZm9jdXM6IHRydWUsXG4gICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgb25DbGljazogKGUpID0+IHtcbiAgICAgICAgZGlhbG9nLmNsb3NlKCk7XG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBkaWFsb2cgPSB0aGlzLmxvYWRpbmdTZXJ2aWNlLnNob3coe1xuICAgICAgbW9kZTogJ2RldGVybWluYXRlJyxcbiAgICAgIHRpdGxlOiAnTG9hZGluZyBDb250ZW50JyxcbiAgICAgIHByb2dyZXNzQ29sb3I6ICdwcmltYXJ5JyxcbiAgICAgIHRleHQ6ICdQcm9jZXNzaW5nIGNvbnRlbnQnLFxuICAgICAgc3RhdHVzOiBgMCBvZiAke3RvdGFsTm9kZX1gLFxuICAgICAgYnV0dG9uczogW2J1dHRvbl0sXG4gICAgfSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgcm9vdCA9IGF3YWl0IHRoaXMuYWRkTWV0YVRvTm9kZXMocm9vdE5vZGUsIHByb2Nlc3NlZE5vZGVzLCAoY291bnQpID0+IHtcbiAgICAgICAgZGlhbG9nLnNldFByb2dyZXNzVmFsdWUoTWF0aC5jZWlsKChjb3VudCAvIHRvdGFsTm9kZSkgKiAxMDApKTtcbiAgICAgICAgZGlhbG9nLnNldFByb2dyZXNzU3RhdHVzKGAke2NvdW50fSBvZiAke3RvdGFsTm9kZX1gKTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBwYWdlID0gcm9vdC5jaGlsZHJlbj8uWzBdITtcbiAgICAgIHRoaXMuZG9jdW1lbnQuc2V0KHJvb3QpO1xuICAgICAgdGhpcy5jdXJyZW50UGFnZS5zZXQocGFnZSk7XG5cbiAgICAgIGRpYWxvZy5zZXRQcm9ncmVzc0NvbG9yKCdzdWNjZXNzJyk7XG4gICAgICBkaWFsb2cuc2V0UHJvZ3Jlc3NUZXh0KCdDb250ZW50IGxvYWRlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgIGJ1dHRvbi50ZXh0ID0gJ09rYXknO1xuICAgICAgYnV0dG9uLmNvbG9yID0gJ3N1Y2Nlc3MnO1xuICAgICAgZGlhbG9nLnNldFByb2dyZXNzVmFsdWUoMTAwKTtcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVSZW5kZXJQYWdlKCk7XG4gICAgICAgIGRpYWxvZy5jbG9zZSgpO1xuICAgICAgfSwgMjUwKTtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICBkaWFsb2cuc2V0UHJvZ3Jlc3NDb2xvcignZGFuZ2VyJyk7XG4gICAgICBkaWFsb2cuc2V0UHJvZ3Jlc3NUZXh0KGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ0Nhbm5vdCBsb2FkIGNvbnRlbnQnKTtcbiAgICAgIGJ1dHRvbi50ZXh0ID0gJ0Nsb3NlJztcbiAgICAgIGJ1dHRvbi5jb2xvciA9ICdkYW5nZXInO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY291bnRUb3RhbE5vZGVzKG5vZGU6IEFYUFdpZGdldE5vZGUpOiBudW1iZXIge1xuICAgIGxldCBjb3VudCA9IDE7IC8vIENvdW50IHRoZSBjdXJyZW50IG5vZGVcbiAgICBpZiAobm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvdW50ICs9IG5vZGUuY2hpbGRyZW4ucmVkdWNlKChzdW0sIGNoaWxkKSA9PiBzdW0gKyB0aGlzLmNvdW50VG90YWxOb2RlcyhjaGlsZCksIDApO1xuICAgIH1cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlVW5pcXVlTmFtZSh0eXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIE5vcm1hbGl6ZSB0aGUgdHlwZSB0byBmb2xsb3cgY2FtZWxDYXNlIGNvbnZlbnRpb25cbiAgICBjb25zdCBiYXNlTmFtZSA9IHR5cGUuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyB0eXBlLnNsaWNlKDEpO1xuICAgIGxldCBpbmRleCA9IDE7XG4gICAgbGV0IHVuaXF1ZU5hbWUgPSBgJHtiYXNlTmFtZX0ke2luZGV4fWA7XG5cbiAgICAvLyBHYXRoZXIgYWxsIGV4aXN0aW5nIG5hbWVzIHRvIGNoZWNrIGFnYWluc3RcbiAgICBjb25zdCBleGlzdGluZ05hbWVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgdGhpcy5jb2xsZWN0QWxsTmFtZXModGhpcy5kb2N1bWVudCgpLCBleGlzdGluZ05hbWVzKTtcblxuICAgIC8vIEluY3JlbWVudCB0aGUgaW5kZXggdW50aWwgYSB1bmlxdWUgbmFtZSBpcyBmb3VuZFxuICAgIHdoaWxlIChleGlzdGluZ05hbWVzLmhhcyh1bmlxdWVOYW1lKSkge1xuICAgICAgaW5kZXgrKztcbiAgICAgIHVuaXF1ZU5hbWUgPSBgJHtiYXNlTmFtZX0ke2luZGV4fWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuaXF1ZU5hbWU7XG4gIH1cblxuICBnZW5lcmF0ZVVuaXF1ZUlkKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgucmFuZG9tKCkgKiBNYXRoLnBvdygxMCwgMTgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb2xsZWN0QWxsTmFtZXMobm9kZTogQVhQV2lkZ2V0Tm9kZSwgbmFtZXM6IFNldDxzdHJpbmc+KTogdm9pZCB7XG4gICAgaWYgKG5vZGUubmFtZSkge1xuICAgICAgbmFtZXMuYWRkKG5vZGUubmFtZSk7XG4gICAgfVxuICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgdGhpcy5jb2xsZWN0QWxsTmFtZXMoY2hpbGQsIG5hbWVzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUHJldmlldygpIHtcbiAgICB0aGlzLmV2ZW50U2VydmljZS5wdWJsaXNoPEFYUERlc2lnbmVyUHJldmlld01lc3NhZ2U+KEFYUERlc2lnbmVyTWVzc2FnZUtleXMuUHJldmlldywge1xuICAgICAgaWQ6IHRoaXMudGVtcGxhdGVJZCgpISxcbiAgICAgIGRvY3VtZW50OiB0aGlzLnJlbW92ZU1ldGFQcm9wKHRoaXMuZG9jdW1lbnQoKSlcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBvcGVuUHJldmlld0RpYWxvZygpIHtcbiAgICBjb25zdCBjb20gPSBhd2FpdCBpbXBvcnQoJy4uLy4uL3ByZXZpZXcvcHJldmlldy5jb21wb25lbnQnKS50aGVuKChjKSA9PiBjLkFYUExheW91dERlc2lnbmVyUHJldmlld0NvbXBvbmVudCk7XG4gICAgYXdhaXQgdGhpcy5wb3B1cFNlcnZpY2Uub3Blbihjb20sIHtcbiAgICAgIGhlYWRlcjogZmFsc2UsXG4gICAgICBzaXplOiAnZnVsbCcsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGluaXRpYWxTaXplOiB0aGlzLnNpemUoKSxcbiAgICAgICAgaXNEaWFsb2dXaW5kb3c6IHRydWUsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9wZW5QcmV2aWV3V2luZG93KCkge1xuICAgIHdpbmRvdy5vcGVuKCcvZm9ybXMvcHJldmlldycsICdfYmxhbmsnKTtcbiAgfVxuXG5cblxuICBnZXRDb250ZXh0TWVudUl0ZW1zKGluc3RhbmNlOiBBWFBEZXNpZ25lcldpZGdldENvbXBvbmVudCwgaXNSb290ID0gZmFsc2UpOiBBWE1lbnVJdGVtW10ge1xuICAgIGNvbnN0IHdpZGdldCA9IGluc3RhbmNlIGFzIGFueSBhcyBBWFBWYWx1ZVdpZGdldENvbXBvbmVudDtcbiAgICBjb25zdCBub2RlID0gd2lkZ2V0Lm5vZGU7XG5cbiAgICBjb25zdCBpdGVtczogQVhNZW51SXRlbVtdID0gW107XG4gICAgLy8gICAgICAgXG4gICAgaWYgKHRoaXMuY2FuKG5vZGUpLmluc2VydCkge1xuICAgICAgaXRlbXMucHVzaChjbG9uZVdpZGdldE1lbnUoQVhQX0RFU0lHTkVSX0FERF9XSURHRVRfTUVOVSwge1xuICAgICAgICBicmVhazogdHJ1ZSxcbiAgICAgIH0pKTtcbiAgICB9XG4gICAgLy9cbiAgICBpdGVtcy5wdXNoKGNsb25lV2lkZ2V0TWVudShBWFBfREVTSUdORVJfQ0xPTkVfTUVOVSwgeyBkaXNhYmxlZDogIXRoaXMuY2FuKG5vZGUpLmNvcHlPckN1dCB9KSk7XG4gICAgaXRlbXMucHVzaChjbG9uZVdpZGdldE1lbnUoQVhQX0RFU0lHTkVSX0NVVF9NRU5VLCB7IGRpc2FibGVkOiAhdGhpcy5jYW4obm9kZSkuY29weU9yQ3V0IH0pKTtcbiAgICBpdGVtcy5wdXNoKGNsb25lV2lkZ2V0TWVudShBWFBfREVTSUdORVJfQ09QWV9NRU5VLCB7IGRpc2FibGVkOiAhdGhpcy5jYW4obm9kZSkuY29weU9yQ3V0IH0pKTtcbiAgICBpdGVtcy5wdXNoKGNsb25lV2lkZ2V0TWVudShBWFBfREVTSUdORVJfUEFTVEVfTUVOVSwgeyBkaXNhYmxlZDogIXRoaXMuY2FuKG5vZGUpLnBhc3RlLCBicmVhazogdHJ1ZSB9KSk7XG4gICAgLy9cbiAgICBpdGVtcy5wdXNoKGNsb25lV2lkZ2V0TWVudShBWFBfREVTSUdORVJfREVMRVRFX1dJREdFVF9NRU5VLCB7IGRpc2FibGVkOiAhdGhpcy5jYW4obm9kZSkuZGVsZXRlLCBicmVhazogdHJ1ZSB9KSk7XG4gICAgLy9cbiAgICBpdGVtcy5wdXNoKGNsb25lV2lkZ2V0TWVudShBWFBfREVTSUdORVJfU0FWRV9BU19XSURHRVRfTUVOVSkpO1xuICAgIGlmIChpbnN0YW5jZS5vbkNvbnRleHRNZW51KSB7XG4gICAgICBpbnN0YW5jZS5vbkNvbnRleHRNZW51KHsgaXRlbXMgfSlcbiAgICB9XG4gICAgaWYgKCFpc1Jvb3QpIHtcbiAgICAgIGl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGl0ZW0uc3VmZml4ID0gdW5kZWZpbmVkO1xuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgYXN5bmMgZXhlY3V0ZUNvbW1hbmQoY29udGV4dDogeyBpbnN0YW5jZTogQVhQRGVzaWduZXJXaWRnZXRDb21wb25lbnQsIG5hbWU6IHN0cmluZywgZGF0YT86IGFueSB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgd2lkZ2V0ID0gY29udGV4dC5pbnN0YW5jZSBhcyBhbnkgYXMgQVhQVmFsdWVXaWRnZXRDb21wb25lbnQ7XG4gICAgaWYgKGNvbnRleHQuaW5zdGFuY2UuZXhlY3V0ZUNvbW1hbmQpIHtcbiAgICAgIGNvbnN0IGNvbW1hbmQ6IGFueSA9IHtcbiAgICAgICAgbmFtZTogY29udGV4dC5uYW1lLFxuICAgICAgICBkYXRhOiBjb250ZXh0LmRhdGEsXG4gICAgICAgIGhhbmRsZWQ6IGZhbHNlXG4gICAgICB9XG4gICAgICBhd2FpdCBjb250ZXh0Lmluc3RhbmNlLmV4ZWN1dGVDb21tYW5kKGNvbW1hbmQpO1xuICAgICAgaWYgKGNvbW1hbmQuaGFuZGxlZClcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzd2l0Y2ggKGNvbnRleHQubmFtZSkge1xuICAgICAgY2FzZSBBWFBfREVTSUdORVJfU0VMRUNUX1dJREdFVF9NRU5VLm5hbWU6IHtcbiAgICAgICAgdGhpcy5zZWxlY3QoeyB3aWRnZXQ6IHdpZGdldC5ub2RlIH0pXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBjYXNlIEFYUF9ERVNJR05FUl9BRERfV0lER0VUX01FTlUubmFtZToge1xuICAgICAgICB0aGlzLnNob3dQaWNrZXIod2lkZ2V0Lm5vZGUpO1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgLy9cbiAgICAgIGNhc2UgQVhQX0RFU0lHTkVSX0RFTEVURV9XSURHRVRfTUVOVS5uYW1lOiB7XG4gICAgICAgIHRoaXMucmVtb3ZlV2lkZ2V0KHdpZGdldC5ub2RlKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIC8vXG4gICAgICBjYXNlIEFYUF9ERVNJR05FUl9DTE9ORV9NRU5VLm5hbWU6IHtcbiAgICAgICAgdGhpcy5jbG9uZSh3aWRnZXQubm9kZSk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBjYXNlIEFYUF9ERVNJR05FUl9DVVRfTUVOVS5uYW1lOiB7XG4gICAgICAgIHRoaXMuY3V0KHdpZGdldC5ub2RlKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgQVhQX0RFU0lHTkVSX0NPUFlfTUVOVS5uYW1lOiB7XG4gICAgICAgIHRoaXMuY29weSh3aWRnZXQubm9kZSk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBjYXNlIEFYUF9ERVNJR05FUl9QQVNURV9NRU5VLm5hbWU6IHtcbiAgICAgICAgdGhpcy5wYXN0ZSh3aWRnZXQubm9kZSk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICAvL1xuICAgIH1cbiAgfVxuXG4gIHVuc3Vic2NyaWJlRXZlbnRzKCkge1xuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnVuc3Vic2NyaWJlKEFYUERlc2lnbmVyTWVzc2FnZUtleXMuTG9hZGVkKTtcbiAgICB0aGlzLmV2ZW50U2VydmljZS51bnN1YnNjcmliZShBWFBEZXNpZ25lck1lc3NhZ2VLZXlzLlByZXZpZXdXaW5kb3cpO1xuICB9XG59XG4iXX0=","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPLayoutWidgetComponent } from '@acorex/platform/layout/builder';\nimport { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { AXPDesignerService } from '../../shared/designer.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/button\";\nimport * as i2 from \"@acorex/components/decorators\";\nexport class AXPDesignerAddWidgetButtonComponent {\n constructor() {\n this.designerService = inject(AXPDesignerService);\n this.parent = inject(AXPLayoutWidgetComponent);\n }\n async handleClick(e) {\n e.nativeEvent.stopPropagation();\n await this.designerService.showPicker(this.parent.node);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerAddWidgetButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.4\", type: AXPDesignerAddWidgetButtonComponent, isStandalone: true, selector: \"axp-designer-add-widget-button\", ngImport: i0, template: `\n <div class=\"ax-container\">\n <ax-button [text]=\"'Add New Element'\" (onClick)=\"handleClick($event)\" [look]=\"'solid'\" [color]=\"'primary'\">\n <ax-icon icon=\"fa-solid fa-plus\"></ax-icon>\n </ax-button>\n </div>\n `, isInline: true, styles: [\"axp-designer-add-widget-button .ax-container{margin-left:auto;margin-right:auto;display:flex;justify-content:center;padding:.5rem}\\n\"], dependencies: [{ kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i1.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i2.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerAddWidgetButtonComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-designer-add-widget-button', template: `\n <div class=\"ax-container\">\n <ax-button [text]=\"'Add New Element'\" (onClick)=\"handleClick($event)\" [look]=\"'solid'\" [color]=\"'primary'\">\n <ax-icon icon=\"fa-solid fa-plus\"></ax-icon>\n </ax-button>\n </div>\n `, changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXButtonModule, AXDecoratorModule], encapsulation: ViewEncapsulation.None, styles: [\"axp-designer-add-widget-button .ax-container{margin-left:auto;margin-right:auto;display:flex;justify-content:center;padding:.5rem}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXdpZGdldC1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZGVzaWduZXIvc3JjL2xpYi9kZXNpZ25lci9jb21wb25lbnRzL2FkZC13aWRnZXQtYnV0dG9uL2FkZC13aWRnZXQtYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7QUFnQm5FLE1BQU0sT0FBTyxtQ0FBbUM7SUFkaEQ7UUFlVSxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzdDLFdBQU0sR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztLQU1uRDtJQUpDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBZTtRQUMvQixDQUFDLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxRCxDQUFDOzhHQVBVLG1DQUFtQztrR0FBbkMsbUNBQW1DLDBGQVhwQzs7Ozs7O0dBTVQsNk1BRVMsY0FBYyw2WEFBRSxpQkFBaUI7OzJGQUdoQyxtQ0FBbUM7a0JBZC9DLFNBQVM7K0JBQ0UsZ0NBQWdDLFlBRWhDOzs7Ozs7R0FNVCxtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyxpQkFDN0IsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWENsaWNrRXZlbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWFBMYXlvdXRXaWRnZXRDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUERlc2lnbmVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9kZXNpZ25lci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhwLWRlc2lnbmVyLWFkZC13aWRnZXQtYnV0dG9uJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWRkLXdpZGdldC1idXR0b24uY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiYXgtY29udGFpbmVyXCI+XG4gICAgICA8YXgtYnV0dG9uIFt0ZXh0XT1cIidBZGQgTmV3IEVsZW1lbnQnXCIgKG9uQ2xpY2spPVwiaGFuZGxlQ2xpY2soJGV2ZW50KVwiIFtsb29rXT1cIidzb2xpZCdcIiBbY29sb3JdPVwiJ3ByaW1hcnknXCI+XG4gICAgICAgIDxheC1pY29uIGljb249XCJmYS1zb2xpZCBmYS1wbHVzXCI+PC9heC1pY29uPlxuICAgICAgPC9heC1idXR0b24+XG4gICAgPC9kaXY+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbQVhCdXR0b25Nb2R1bGUsIEFYRGVjb3JhdG9yTW9kdWxlXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQRGVzaWduZXJBZGRXaWRnZXRCdXR0b25Db21wb25lbnQge1xuICBwcml2YXRlIGRlc2lnbmVyU2VydmljZSA9IGluamVjdChBWFBEZXNpZ25lclNlcnZpY2UpO1xuICBwcml2YXRlIHBhcmVudCA9IGluamVjdChBWFBMYXlvdXRXaWRnZXRDb21wb25lbnQpO1xuXG4gIGFzeW5jIGhhbmRsZUNsaWNrKGU6IEFYQ2xpY2tFdmVudCkge1xuICAgIGUubmF0aXZlRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgYXdhaXQgdGhpcy5kZXNpZ25lclNlcnZpY2Uuc2hvd1BpY2tlcih0aGlzLnBhcmVudC5ub2RlKTtcbiAgfVxufVxuIl19","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { ChangeDetectionStrategy, Component, input, output, ViewEncapsulation } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/button\";\nimport * as i2 from \"@acorex/components/decorators\";\nexport class AXPDesignerAddWidgetLineButtonComponent {\n constructor() {\n this.text = input();\n this.onClick = output();\n }\n handleClick() {\n this.onClick.emit();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerAddWidgetLineButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.0.4\", type: AXPDesignerAddWidgetLineButtonComponent, isStandalone: true, selector: \"axp-designer-add-widget-line-button\", inputs: { text: { classPropertyName: \"text\", publicName: \"text\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClick: \"onClick\" }, ngImport: i0, template: `\n <div class=\"ax-flex ax-items-center ax-py-4 ax-text-xs\">\n <div class=\"ax-flex-grow ax-border-t-2 ax-border-dashed ax-border-surface\"></div>\n <div class=\"ax-mx-2 ax-sm \">\n <ax-button [text]=\"text()\" [look]=\"'twotone'\" class=\"ax-capitalize\" (onClick)=\"handleClick()\">\n <ax-icon icon=\"fa-solid fa-plus\"></ax-icon>\n </ax-button>\n </div>\n <div class=\"ax-flex-grow ax-border-t-2 ax-border-dashed ax-border-surface\"></div>\n </div>\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i1.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i2.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerAddWidgetLineButtonComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axp-designer-add-widget-line-button',\n template: `\n <div class=\"ax-flex ax-items-center ax-py-4 ax-text-xs\">\n <div class=\"ax-flex-grow ax-border-t-2 ax-border-dashed ax-border-surface\"></div>\n <div class=\"ax-mx-2 ax-sm \">\n <ax-button [text]=\"text()\" [look]=\"'twotone'\" class=\"ax-capitalize\" (onClick)=\"handleClick()\">\n <ax-icon icon=\"fa-solid fa-plus\"></ax-icon>\n </ax-button>\n </div>\n <div class=\"ax-flex-grow ax-border-t-2 ax-border-dashed ax-border-surface\"></div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXButtonModule, AXDecoratorModule],\n encapsulation: ViewEncapsulation.None\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXdpZGdldC1saW5lLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL2Rlc2lnbmVyL2NvbXBvbmVudHMvYWRkLXdpZGdldC1idXR0b24vYWRkLXdpZGdldC1saW5lLWJ1dHRvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQW1CckcsTUFBTSxPQUFPLHVDQUF1QztJQWpCcEQ7UUFtQkUsU0FBSSxHQUFHLEtBQUssRUFBRSxDQUFDO1FBQ2YsWUFBTyxHQUFHLE1BQU0sRUFBRSxDQUFDO0tBT3BCO0lBSlcsV0FBVztRQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RCLENBQUM7OEdBUlUsdUNBQXVDO2tHQUF2Qyx1Q0FBdUMsaVFBZnhDOzs7Ozs7Ozs7O0dBVVQsMkRBRVMsY0FBYyw2WEFBRSxpQkFBaUI7OzJGQUdoQyx1Q0FBdUM7a0JBakJuRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQ0FBcUM7b0JBQy9DLFFBQVEsRUFBRTs7Ozs7Ozs7OztHQVVUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLENBQUM7b0JBQzVDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2lCQUN0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGlucHV0LCBvdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1kZXNpZ25lci1hZGQtd2lkZ2V0LWxpbmUtYnV0dG9uJyxcbiAgdGVtcGxhdGU6IGBcbiAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1weS00IGF4LXRleHQteHNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4LWdyb3cgYXgtYm9yZGVyLXQtMiBheC1ib3JkZXItZGFzaGVkIGF4LWJvcmRlci1zdXJmYWNlXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtbXgtMiBheC1zbSBcIj5cbiAgICAgICAgPGF4LWJ1dHRvbiBbdGV4dF09XCJ0ZXh0KClcIiBbbG9va109XCIndHdvdG9uZSdcIiAgY2xhc3M9XCJheC1jYXBpdGFsaXplXCIgKG9uQ2xpY2spPVwiaGFuZGxlQ2xpY2soKVwiPlxuICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1zb2xpZCBmYS1wbHVzXCI+PC9heC1pY29uPlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXgtZ3JvdyBheC1ib3JkZXItdC0yIGF4LWJvcmRlci1kYXNoZWQgYXgtYm9yZGVyLXN1cmZhY2VcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtBWEJ1dHRvbk1vZHVsZSwgQVhEZWNvcmF0b3JNb2R1bGVdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEFYUERlc2lnbmVyQWRkV2lkZ2V0TGluZUJ1dHRvbkNvbXBvbmVudCB7XG5cbiAgdGV4dCA9IGlucHV0KCk7XG4gIG9uQ2xpY2sgPSBvdXRwdXQoKTtcblxuXG4gIHByb3RlY3RlZCBoYW5kbGVDbGljaygpIHtcbiAgICB0aGlzLm9uQ2xpY2suZW1pdCgpO1xuICB9XG5cbn1cbiJdfQ==","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPLayoutWidgetComponent } from '@acorex/platform/layout/builder';\nimport { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, inject, Output, ViewEncapsulation, } from '@angular/core';\nimport { AXPDesignerService } from '../../shared/designer.service';\nimport * as i0 from \"@angular/core\";\nexport class AXPDesignerAddWidgetMiniButtonComponent {\n constructor() {\n this.designerService = inject(AXPDesignerService);\n this.parent = inject(AXPLayoutWidgetComponent);\n this.onClick = new EventEmitter();\n }\n async handleClick(e) {\n e.stopPropagation();\n const a = this.onClick;\n if (this.onClick.observed) {\n this.onClick.emit();\n }\n else {\n await this.designerService.showPicker(this.parent.node);\n }\n }\n get __class() {\n const cls = {};\n //\n cls[`ax-flex`] = true;\n cls[`ax-w-full`] = true;\n return cls;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerAddWidgetMiniButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.4\", type: AXPDesignerAddWidgetMiniButtonComponent, isStandalone: true, selector: \"axp-designer-add-widget-mini-button\", outputs: { onClick: \"onClick\" }, host: { properties: { \"class\": \"this.__class\" } }, ngImport: i0, template: `\n <div class=\"axp-empty-space\">\n <div\n class=\"ax-m-auto ax-py-4 ax-px-8 ax-text-primary-500 hover:ax-text-primary-700 ax-cursor-pointer\"\n (click)=\"handleClick($event)\"\n >\n <i class=\"fa-solid fa-plus \"></i>\n </div>\n </div>\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: AXButtonModule }, { kind: \"ngmodule\", type: AXDecoratorModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerAddWidgetMiniButtonComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axp-designer-add-widget-mini-button',\n template: `\n <div class=\"axp-empty-space\">\n <div\n class=\"ax-m-auto ax-py-4 ax-px-8 ax-text-primary-500 hover:ax-text-primary-700 ax-cursor-pointer\"\n (click)=\"handleClick($event)\"\n >\n <i class=\"fa-solid fa-plus \"></i>\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXButtonModule, AXDecoratorModule],\n encapsulation: ViewEncapsulation.None\n }]\n }], propDecorators: { onClick: [{\n type: Output\n }], __class: [{\n type: HostBinding,\n args: ['class']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXdpZGdldC1taW5pLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL2Rlc2lnbmVyL2NvbXBvbmVudHMvYWRkLXdpZGdldC1idXR0b24vYWRkLXdpZGdldC1taW5pLWJ1dHRvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBa0JuRSxNQUFNLE9BQU8sdUNBQXVDO0lBaEJwRDtRQWlCVSxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzdDLFdBQU0sR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUczQyxZQUFPLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7S0FvQi9EO0lBbEJXLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBYTtRQUN2QyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDcEIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxRCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQ1ksT0FBTztRQUNqQixNQUFNLEdBQUcsR0FBUSxFQUFFLENBQUM7UUFDcEIsRUFBRTtRQUNGLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDdEIsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUN4QixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7OEdBeEJVLHVDQUF1QztrR0FBdkMsdUNBQXVDLG1MQWR4Qzs7Ozs7Ozs7O0dBU1QsMkRBRVMsY0FBYyw4QkFBRSxpQkFBaUI7OzJGQUdoQyx1Q0FBdUM7a0JBaEJuRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQ0FBcUM7b0JBQy9DLFFBQVEsRUFBRTs7Ozs7Ozs7O0dBU1Q7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQztvQkFDNUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7aUJBQ3RDOzhCQU1RLE9BQU87c0JBRGIsTUFBTTtnQkFjSyxPQUFPO3NCQURsQixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWFBMYXlvdXRXaWRnZXRDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIGluamVjdCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBEZXNpZ25lclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvZGVzaWduZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1kZXNpZ25lci1hZGQtd2lkZ2V0LW1pbmktYnV0dG9uJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiYXhwLWVtcHR5LXNwYWNlXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYXgtbS1hdXRvIGF4LXB5LTQgYXgtcHgtOCBheC10ZXh0LXByaW1hcnktNTAwIGhvdmVyOmF4LXRleHQtcHJpbWFyeS03MDAgYXgtY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2soJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtcGx1cyBcIj48L2k+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtBWEJ1dHRvbk1vZHVsZSwgQVhEZWNvcmF0b3JNb2R1bGVdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEFYUERlc2lnbmVyQWRkV2lkZ2V0TWluaUJ1dHRvbkNvbXBvbmVudCB7XG4gIHByaXZhdGUgZGVzaWduZXJTZXJ2aWNlID0gaW5qZWN0KEFYUERlc2lnbmVyU2VydmljZSk7XG4gIHByaXZhdGUgcGFyZW50ID0gaW5qZWN0KEFYUExheW91dFdpZGdldENvbXBvbmVudCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvbkNsaWNrOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUNsaWNrKGU6IE1vdXNlRXZlbnQpIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IGEgPSB0aGlzLm9uQ2xpY2s7XG4gICAgaWYgKHRoaXMub25DbGljay5vYnNlcnZlZCkge1xuICAgICAgdGhpcy5vbkNsaWNrLmVtaXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdGhpcy5kZXNpZ25lclNlcnZpY2Uuc2hvd1BpY2tlcih0aGlzLnBhcmVudC5ub2RlKTtcbiAgICB9XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgcHJpdmF0ZSBnZXQgX19jbGFzcygpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNsczogYW55ID0ge307XG4gICAgLy9cbiAgICBjbHNbYGF4LWZsZXhgXSA9IHRydWU7XG4gICAgY2xzW2BheC13LWZ1bGxgXSA9IHRydWU7XG4gICAgcmV0dXJuIGNscztcbiAgfVxufVxuIl19","import { ChangeDetectionStrategy, Component, computed, HostBinding, HostListener, model, output, signal } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXPDesignerGridDrawerComponent {\n constructor() {\n this.rowsCount = model(5, { alias: \"rows\" });\n this.colsCount = model(12, { alias: \"columns\" });\n this.onSelect = output();\n this.rows = computed(() => Array.from({ length: this.rowsCount() }).map((v, index) => index + 1));\n this.columns = computed(() => Array.from({ length: this.colsCount() }).map((v, index) => index + 1));\n this.rangeR = signal(0);\n this.rangeC = signal(0);\n }\n handleMouseHover(r, c) {\n this.rangeR.set(r);\n this.rangeC.set(c);\n }\n handleClick(r, c) {\n this.onSelect.emit({ rows: r, cols: c });\n }\n handleMouseLeave(event) {\n this.rangeR.set(0);\n this.rangeC.set(0);\n }\n get __style() {\n return {\n \"--cols-width\": `${this.colsCount() == 0 ? 0 : (100 / this.colsCount())}%`\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerGridDrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXPDesignerGridDrawerComponent, isStandalone: true, selector: \"axp-designer-grid-drawer\", inputs: { rowsCount: { classPropertyName: \"rowsCount\", publicName: \"rows\", isSignal: true, isRequired: false, transformFunction: null }, colsCount: { classPropertyName: \"colsCount\", publicName: \"columns\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { rowsCount: \"rowsChange\", colsCount: \"columnsChange\", onSelect: \"onSelect\" }, host: { listeners: { \"mouseleave\": \"handleMouseLeave($event)\" }, properties: { \"style\": \"this.__style\" } }, ngImport: i0, template: `\n <table class=\"table-picker\" >\n <tbody>\n @for(r of rows();track $index)\n {\n <tr >\n @for(c of columns();track $index)\n {\n <td (mouseenter)=\"handleMouseHover(r,c)\" [class.picked]=\"c<=rangeC() && r<=rangeR()\" (click)=\"handleClick(r,c)\">\n </td>\n }\n </tr>\n }\n <tr>\n <td [attr.colspan]=\"columns().length\" class=\"ax-text-center\">\n <small >{{rangeC()}}*{{rangeR()}}</small>\n </td>\n </tr>\n </tbody>\n </table>\n `, isInline: true, styles: [\":host table{width:100%;border-collapse:collapse;--tw-border-spacing-x: 0px;--tw-border-spacing-y: 0px;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}:host table td{height:2.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1));width:var(--cols-width)}:host table td:after{content:\\\"\\\";display:block}:host table td.picked{border-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-100),var(--tw-bg-opacity, 1))}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerGridDrawerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-designer-grid-drawer', template: `\n <table class=\"table-picker\" >\n <tbody>\n @for(r of rows();track $index)\n {\n <tr >\n @for(c of columns();track $index)\n {\n <td (mouseenter)=\"handleMouseHover(r,c)\" [class.picked]=\"c<=rangeC() && r<=rangeR()\" (click)=\"handleClick(r,c)\">\n </td>\n }\n </tr>\n }\n <tr>\n <td [attr.colspan]=\"columns().length\" class=\"ax-text-center\">\n <small >{{rangeC()}}*{{rangeR()}}</small>\n </td>\n </tr>\n </tbody>\n </table>\n `, changeDetection: ChangeDetectionStrategy.OnPush, imports: [], styles: [\":host table{width:100%;border-collapse:collapse;--tw-border-spacing-x: 0px;--tw-border-spacing-y: 0px;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}:host table td{height:2.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1));width:var(--cols-width)}:host table td:after{content:\\\"\\\";display:block}:host table td.picked{border-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-100),var(--tw-bg-opacity, 1))}\\n\"] }]\n }], propDecorators: { handleMouseLeave: [{\n type: HostListener,\n args: ['mouseleave', ['$event']]\n }], __style: [{\n type: HostBinding,\n args: ['style']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1kcmF3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZGVzaWduZXIvc3JjL2xpYi9kZXNpZ25lci9jb21wb25lbnRzL2dyaWQtZHJhd2VyL2dyaWQtZHJhd2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQTZCL0gsTUFBTSxPQUFPLDhCQUE4QjtJQTNCM0M7UUE2QkksY0FBUyxHQUFHLEtBQUssQ0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNoRCxjQUFTLEdBQUcsS0FBSyxDQUFTLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRXBELGFBQVEsR0FBRyxNQUFNLEVBQWtDLENBQUM7UUFHMUMsU0FBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0YsWUFBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFaEcsV0FBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQixXQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBd0JoQztJQXJCYSxnQkFBZ0IsQ0FBQyxDQUFTLEVBQUUsQ0FBUztRQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRVMsV0FBVyxDQUFDLENBQVMsRUFBRSxDQUFTO1FBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBR08sZ0JBQWdCLENBQUMsS0FBb0I7UUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQ1ksT0FBTztRQUNmLE9BQU87WUFDSCxjQUFjLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHO1NBQzdFLENBQUM7SUFDTixDQUFDOzhHQW5DUSw4QkFBOEI7a0dBQTlCLDhCQUE4QixxaUJBeEI3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQlg7OzJGQUlVLDhCQUE4QjtrQkEzQjFDLFNBQVM7K0JBQ0ksMEJBQTBCLFlBRTFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CWCxtQkFDa0IsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxFQUFFOzhCQTJCSCxnQkFBZ0I7c0JBRHZCLFlBQVk7dUJBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU8xQixPQUFPO3NCQURsQixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgbW9kZWwsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXhwLWRlc2lnbmVyLWdyaWQtZHJhd2VyJyxcbiAgICBzdHlsZVVybHM6IFsnLi9ncmlkLWRyYXdlci5jb21wb25lbnQuc2NzcyddLFxuICAgIHRlbXBsYXRlOiBgXG4gICA8dGFibGUgY2xhc3M9XCJ0YWJsZS1waWNrZXJcIiA+XG4gICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgIEBmb3IociBvZiByb3dzKCk7dHJhY2sgJGluZGV4KVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgPHRyID5cbiAgICAgICAgICAgICAgICBAZm9yKGMgb2YgY29sdW1ucygpO3RyYWNrICRpbmRleClcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIDx0ZCAobW91c2VlbnRlcik9XCJoYW5kbGVNb3VzZUhvdmVyKHIsYylcIiAgW2NsYXNzLnBpY2tlZF09XCJjPD1yYW5nZUMoKSAmJiByPD1yYW5nZVIoKVwiIChjbGljayk9XCJoYW5kbGVDbGljayhyLGMpXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8dGQgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW5zKCkubGVuZ3RoXCIgY2xhc3M9XCJheC10ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGwgPnt7cmFuZ2VDKCl9fSp7e3JhbmdlUigpfX08L3NtYWxsPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG4gIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaW1wb3J0czogW11cbn0pXG5leHBvcnQgY2xhc3MgQVhQRGVzaWduZXJHcmlkRHJhd2VyQ29tcG9uZW50IHtcblxuICAgIHJvd3NDb3VudCA9IG1vZGVsPG51bWJlcj4oNSwgeyBhbGlhczogXCJyb3dzXCIgfSk7XG4gICAgY29sc0NvdW50ID0gbW9kZWw8bnVtYmVyPigxMiwgeyBhbGlhczogXCJjb2x1bW5zXCIgfSk7XG5cbiAgICBvblNlbGVjdCA9IG91dHB1dDx7IHJvd3M6IG51bWJlciwgY29sczogbnVtYmVyIH0+KCk7XG5cblxuICAgIHByb3RlY3RlZCByb3dzID0gY29tcHV0ZWQoKCkgPT4gQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy5yb3dzQ291bnQoKSB9KS5tYXAoKHYsIGluZGV4KSA9PiBpbmRleCArIDEpKTtcbiAgICBwcm90ZWN0ZWQgY29sdW1ucyA9IGNvbXB1dGVkKCgpID0+IEFycmF5LmZyb20oeyBsZW5ndGg6IHRoaXMuY29sc0NvdW50KCkgfSkubWFwKCh2LCBpbmRleCkgPT4gaW5kZXggKyAxKSk7XG5cbiAgICBwcm90ZWN0ZWQgcmFuZ2VSID0gc2lnbmFsKDApO1xuICAgIHByb3RlY3RlZCByYW5nZUMgPSBzaWduYWwoMCk7XG5cblxuICAgIHByb3RlY3RlZCBoYW5kbGVNb3VzZUhvdmVyKHI6IG51bWJlciwgYzogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMucmFuZ2VSLnNldChyKTtcbiAgICAgICAgdGhpcy5yYW5nZUMuc2V0KGMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBoYW5kbGVDbGljayhyOiBudW1iZXIsIGM6IG51bWJlcikge1xuICAgICAgICB0aGlzLm9uU2VsZWN0LmVtaXQoeyByb3dzOiByLCBjb2xzOiBjIH0pO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBbJyRldmVudCddKVxuICAgIHByaXZhdGUgaGFuZGxlTW91c2VMZWF2ZShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICB0aGlzLnJhbmdlUi5zZXQoMCk7XG4gICAgICAgIHRoaXMucmFuZ2VDLnNldCgwKTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlJylcbiAgICBwcml2YXRlIGdldCBfX3N0eWxlKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBcIi0tY29scy13aWR0aFwiOiBgJHt0aGlzLmNvbHNDb3VudCgpID09IDAgPyAwIDogKDEwMCAvIHRoaXMuY29sc0NvdW50KCkpfSVgXG4gICAgICAgIH07XG4gICAgfVxufVxuIl19","import { AXButtonModule } from '@acorex/components/button';\nimport { AXCommonModule } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXTabsModule } from '@acorex/components/tabs';\nimport { AXPSettingService, AXPStickyDirective } from '@acorex/platform/common';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { CommonModule } from '@angular/common';\nimport { Component, computed, inject, model, signal, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { castArray, orderBy, uniqBy } from 'lodash-es';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/cdk/common\";\nimport * as i3 from \"@angular/forms\";\nimport * as i4 from \"@acorex/components/button\";\nimport * as i5 from \"@acorex/components/decorators\";\nimport * as i6 from \"@acorex/components/tabs\";\nimport * as i7 from \"@acorex/components/search-box\";\nexport class AXPDesignerWidgetPickerComponent extends AXBasePageComponent {\n constructor() {\n super(...arguments);\n this.settingService = inject(AXPSettingService);\n this.pinnedSettingKey = 'forms:widgets:picker:pinned';\n this.searchTerm = model('');\n // Signals\n this.widgets = [];\n this.allWidgets = signal([]);\n this.pinnedWidgets = signal([]);\n this.displayWidgets = computed(() => {\n return this.allWidgets().map((c) => ({ ...c, pinned: this.pinnedWidgets().includes(c.name) }));\n });\n // Signal to track selected widgets\n this.selectedWidgets = signal([]);\n // Computed for filtered and ordered widget list\n this.orderedList = computed(() => {\n const search = this.searchTerm().toLowerCase();\n const selectedTabName = this.selectedTab().name;\n return orderBy(this.displayWidgets().filter((w) => {\n const matchesTab = selectedTabName === 'all' || castArray(w.categories ?? []).some((c) => c.name === selectedTabName);\n const matchesSearch = !search || w.title.toLowerCase().includes(search) || w.description?.toLowerCase().includes(search);\n return matchesTab && matchesSearch;\n }), ['pinned', 'title'], ['desc', 'asc']);\n });\n // Pinned and regular lists\n this.pinnedList = computed(() => this.orderedList().filter((c) => c.pinned));\n this.regularList = computed(() => this.orderedList().filter((c) => !c.pinned));\n // Tabs for the widget groups\n this.categories = computed(() => uniqBy(this.allWidgets()\n .map((w) => castArray(w.categories ?? []))\n .filter((c) => c.length > 0)\n .flat(), 'name'));\n this.tabs = computed(() => orderBy([{ name: 'all', title: 'All', order: 0 }, ...this.categories()], (c) => c.order));\n // computed max visible widgets in a tab\n this.maxVisibleWidgets = computed(() => Math.max(...this.categories().map((c) => this.allWidgets().filter((w) => castArray(w.categories ?? []).some((c) => c.name === c.name)).length)));\n this.currentTabIndex = signal(0);\n this.selectedTab = computed(() => this.tabs()[this.currentTabIndex()]);\n }\n async ngOnInit() {\n super.ngOnInit();\n this.allWidgets.set(this.widgets);\n this.pinnedWidgets.set((await this.settingService.get(this.pinnedSettingKey)) || []);\n }\n handleTabChange(event) {\n const indx = event.index;\n if (this.currentTabIndex() != indx) {\n this.currentTabIndex.set(indx);\n }\n }\n handleClick(event, widget) {\n if (event.ctrlKey) {\n const currentSelection = this.selectedWidgets();\n const isAlreadySelected = currentSelection.some((w) => w === widget);\n if (isAlreadySelected) {\n // Deselect widget if already selected\n this.selectedWidgets.set(currentSelection.filter((w) => w !== widget));\n }\n else {\n // Add widget to selection\n this.selectedWidgets.set([...currentSelection, widget]);\n }\n }\n else {\n // If CTRL is not pressed, select only the clicked widget\n this.close({ widgets: [widget] });\n }\n }\n async handlePinClick(e, widget) {\n e.stopPropagation();\n widget.pinned = !widget.pinned;\n // Get the current list of pinned widgets from settings\n let pinnedWidgets = (await this.settingService.get(this.pinnedSettingKey)) || [];\n // Update the list of pinned widgets based on the pinned status\n if (widget.pinned) {\n if (!pinnedWidgets.includes(widget.name)) {\n pinnedWidgets.push(widget.name);\n }\n }\n else {\n pinnedWidgets = pinnedWidgets.filter((name) => name !== widget.name);\n }\n // Save the updated list of pinned widgets\n await this.settingService.scope(AXPPlatformScope.User).set(this.pinnedSettingKey, pinnedWidgets);\n // Trigger a re-render of the widgets\n this.pinnedWidgets.set(pinnedWidgets);\n }\n // Check if a widget is selected\n isWidgetSelected(widget) {\n return this.selectedWidgets().includes(widget);\n }\n handleConfirmSelection() {\n this.close({ widgets: this.selectedWidgets() });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerWidgetPickerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXPDesignerWidgetPickerComponent, isStandalone: true, selector: \"ng-component\", inputs: { searchTerm: { classPropertyName: \"searchTerm\", publicName: \"searchTerm\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchTerm: \"searchTermChange\" }, usesInheritance: true, ngImport: i0, template: \"<div\\n class=\\\"ax-flex ax-flex-col ax-h-[95vh]\\\"\\n [ngClass]=\\\"{ 'lg:ax-h-[75vh]': maxVisibleWidgets() > 10, 'lg:ax-h-[50vh]': maxVisibleWidgets() <= 10 }\\\"\\n>\\n <div>\\n <ax-tabs [look]=\\\"'with-line'\\\" (onActiveTabChanged)=\\\"handleTabChange($event)\\\">\\n @for(w of tabs();track $index) {\\n <ax-tab-item [text]=\\\"w.title\\\" [key]=\\\"$index.toString()\\\" [active]=\\\"currentTabIndex() === $index\\\"></ax-tab-item>\\n }\\n </ax-tabs>\\n </div>\\n <div class=\\\"ax-overflow-auto\\\" #content>\\n <div\\n class=\\\"ax-p-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all\\\"\\n #sticky=\\\"axpSticky\\\"\\n [axpSticky]=\\\"'ax-bg-lightest ax-shadow-xl'\\\"\\n [stickyParent]=\\\"content\\\"\\n [stickyOffset]=\\\"10\\\"\\n >\\n <ax-search-box\\n look=\\\"fill\\\"\\n placeholder=\\\"e.g. Button, Text, ...\\\"\\n [(ngModel)]=\\\"searchTerm\\\"\\n [delayTime]=\\\"300\\\"\\n [axAutoFocus]=\\\"true\\\"\\n >\\n <ax-clear-button></ax-clear-button>\\n </ax-search-box>\\n </div>\\n <div class=\\\"ax-flex ax-flex-col ax-p-4 ax-pt-0\\\">\\n <ng-template #itemTpl let-w>\\n @let isSelected= isWidgetSelected(w);\\n <div\\n (click)=\\\"handleClick($event, w)\\\"\\n class=\\\"ax-py-2 ax-px-3 ax-rounded-md ax-flex ax-gap-3 ax-items-center ax-group hover:ax-bg-primary-lightest/65 hover:ax-text-primary-on-lightest ax-cursor-pointer\\\"\\n [class.ax-bg-primary-lightest]=\\\"isSelected\\\"\\n [class.ax-text-primary-on-lightest]=\\\"isSelected\\\"\\n [class.ax-border-primary-lightest]=\\\"isSelected\\\"\\n >\\n <div\\n class=\\\"ax-w-10 ax-h-10 ax-flex ax-items-center ax-justify-center ax-rounded-md ax-border group-hover:ax-bg-primary-lighter group-hover:ax-text-primary-on-lighter group-hover:ax-border-primary-lighter\\\"\\n [class.ax-bg-primary-light]=\\\"isSelected\\\"\\n [class.ax-text-primary-on-light]=\\\"isSelected\\\"\\n [class.ax-border-primary-light]=\\\"isSelected\\\"\\n [class.ax-surface]=\\\"!isSelected\\\"\\n >\\n <i [ngClass]=\\\"w.icon\\\" class=\\\"ax-text-lg\\\"></i>\\n </div>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-1 ax-flex-1\\\">\\n <div class=\\\"ax-flex ax-items-center ax-gap-2\\\">\\n <div class=\\\"ax-font-semibold ax-text-sm\\\">{{ w.title }}</div>\\n <div (click)=\\\"handlePinClick($event, w)\\\">\\n @if (w.pinned) {\\n <i class=\\\"fa-solid fa-thumbtack ax-text-sm ax-rotate-45\\\"></i>\\n } @else {\\n <i class=\\\"fa-light fa-thumbtack ax-text-sm ax-rotate-45 ax-invisible group-hover:ax-visible\\\"></i>\\n }\\n </div>\\n </div>\\n <span class=\\\"ax-text-xs ax-truncate\\\">\\n {{ w.description }}\\n </span>\\n </div>\\n </div>\\n </ng-template>\\n <div class=\\\"ax-grid ax-grid-cols-2 ax-gap-2\\\">\\n @for(w of pinnedList();track $index) {\\n <ng-container *ngTemplateOutlet=\\\"itemTpl; context: { $implicit: w }\\\"></ng-container>\\n }\\n </div>\\n @if(pinnedList().length) {\\n <hr class=\\\"ax-my-4 ax-border-dashed\\\" />\\n }\\n <div class=\\\"ax-grid ax-grid-cols-2 ax-gap-2\\\">\\n @for(w of regularList();track $index) {\\n <ng-container *ngTemplateOutlet=\\\"itemTpl; context: { $implicit: w }\\\"></ng-container>\\n }\\n </div>\\n </div>\\n </div>\\n</div>\\n@if(selectedWidgets().length) {\\n<ax-footer>\\n <ax-suffix>\\n <ax-button\\n look=\\\"solid\\\"\\n color=\\\"primary\\\"\\n text=\\\"{{ selectedWidgets().length }} Selected\\\"\\n (onClick)=\\\"handleConfirmSelection()\\\"\\n ></ax-button>\\n </ax-suffix>\\n</ax-footer>\\n}\\n\", styles: [\".selected-widget{border-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-100),var(--tw-bg-opacity, 1))}.selected-widget i{--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1))}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: AXCommonModule }, { kind: \"directive\", type: i2.AXAutoFocusDirective, selector: \"[axAutoFocus]\", inputs: [\"axAutoFocus\", \"axAutoFocusTime\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i3.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i3.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i4.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i5.AXDecoratorClearButtonComponent, selector: \"ax-clear-button\", inputs: [\"icon\"] }, { kind: \"component\", type: i5.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXTabsModule }, { kind: \"component\", type: i6.AXTabsComponent, selector: \"ax-tabs\", inputs: [\"look\", \"location\", \"fitParent\", \"minWidth\", \"content\"], outputs: [\"onActiveTabChanged\"] }, { kind: \"component\", type: i6.AXTabItemComponent, selector: \"ax-tab-item\", inputs: [\"disabled\", \"text\", \"key\", \"headerTemplate\", \"active\"], outputs: [\"disabledChange\", \"onClick\", \"onBlur\", \"onFocus\", \"activeChange\"] }, { kind: \"ngmodule\", type: AXSearchBoxModule }, { kind: \"component\", type: i7.AXSearchBoxComponent, selector: \"ax-search-box\", inputs: [\"disabled\", \"readonly\", \"tabIndex\", \"placeholder\", \"value\", \"state\", \"name\", \"id\", \"look\", \"class\", \"delayTime\", \"type\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"directive\", type: AXPStickyDirective, selector: \"[axpSticky]\", inputs: [\"axpSticky\", \"stickyOffset\", \"stickyParent\", \"stickyTarget\"], outputs: [\"isStickyChange\"], exportAs: [\"axpSticky\"] }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerWidgetPickerComponent, decorators: [{\n type: Component,\n args: [{ imports: [\n CommonModule,\n AXCommonModule,\n FormsModule,\n AXButtonModule,\n AXDecoratorModule,\n AXTabsModule,\n AXSearchBoxModule,\n AXPStickyDirective,\n ], encapsulation: ViewEncapsulation.None, template: \"<div\\n class=\\\"ax-flex ax-flex-col ax-h-[95vh]\\\"\\n [ngClass]=\\\"{ 'lg:ax-h-[75vh]': maxVisibleWidgets() > 10, 'lg:ax-h-[50vh]': maxVisibleWidgets() <= 10 }\\\"\\n>\\n <div>\\n <ax-tabs [look]=\\\"'with-line'\\\" (onActiveTabChanged)=\\\"handleTabChange($event)\\\">\\n @for(w of tabs();track $index) {\\n <ax-tab-item [text]=\\\"w.title\\\" [key]=\\\"$index.toString()\\\" [active]=\\\"currentTabIndex() === $index\\\"></ax-tab-item>\\n }\\n </ax-tabs>\\n </div>\\n <div class=\\\"ax-overflow-auto\\\" #content>\\n <div\\n class=\\\"ax-p-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all\\\"\\n #sticky=\\\"axpSticky\\\"\\n [axpSticky]=\\\"'ax-bg-lightest ax-shadow-xl'\\\"\\n [stickyParent]=\\\"content\\\"\\n [stickyOffset]=\\\"10\\\"\\n >\\n <ax-search-box\\n look=\\\"fill\\\"\\n placeholder=\\\"e.g. Button, Text, ...\\\"\\n [(ngModel)]=\\\"searchTerm\\\"\\n [delayTime]=\\\"300\\\"\\n [axAutoFocus]=\\\"true\\\"\\n >\\n <ax-clear-button></ax-clear-button>\\n </ax-search-box>\\n </div>\\n <div class=\\\"ax-flex ax-flex-col ax-p-4 ax-pt-0\\\">\\n <ng-template #itemTpl let-w>\\n @let isSelected= isWidgetSelected(w);\\n <div\\n (click)=\\\"handleClick($event, w)\\\"\\n class=\\\"ax-py-2 ax-px-3 ax-rounded-md ax-flex ax-gap-3 ax-items-center ax-group hover:ax-bg-primary-lightest/65 hover:ax-text-primary-on-lightest ax-cursor-pointer\\\"\\n [class.ax-bg-primary-lightest]=\\\"isSelected\\\"\\n [class.ax-text-primary-on-lightest]=\\\"isSelected\\\"\\n [class.ax-border-primary-lightest]=\\\"isSelected\\\"\\n >\\n <div\\n class=\\\"ax-w-10 ax-h-10 ax-flex ax-items-center ax-justify-center ax-rounded-md ax-border group-hover:ax-bg-primary-lighter group-hover:ax-text-primary-on-lighter group-hover:ax-border-primary-lighter\\\"\\n [class.ax-bg-primary-light]=\\\"isSelected\\\"\\n [class.ax-text-primary-on-light]=\\\"isSelected\\\"\\n [class.ax-border-primary-light]=\\\"isSelected\\\"\\n [class.ax-surface]=\\\"!isSelected\\\"\\n >\\n <i [ngClass]=\\\"w.icon\\\" class=\\\"ax-text-lg\\\"></i>\\n </div>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-1 ax-flex-1\\\">\\n <div class=\\\"ax-flex ax-items-center ax-gap-2\\\">\\n <div class=\\\"ax-font-semibold ax-text-sm\\\">{{ w.title }}</div>\\n <div (click)=\\\"handlePinClick($event, w)\\\">\\n @if (w.pinned) {\\n <i class=\\\"fa-solid fa-thumbtack ax-text-sm ax-rotate-45\\\"></i>\\n } @else {\\n <i class=\\\"fa-light fa-thumbtack ax-text-sm ax-rotate-45 ax-invisible group-hover:ax-visible\\\"></i>\\n }\\n </div>\\n </div>\\n <span class=\\\"ax-text-xs ax-truncate\\\">\\n {{ w.description }}\\n </span>\\n </div>\\n </div>\\n </ng-template>\\n <div class=\\\"ax-grid ax-grid-cols-2 ax-gap-2\\\">\\n @for(w of pinnedList();track $index) {\\n <ng-container *ngTemplateOutlet=\\\"itemTpl; context: { $implicit: w }\\\"></ng-container>\\n }\\n </div>\\n @if(pinnedList().length) {\\n <hr class=\\\"ax-my-4 ax-border-dashed\\\" />\\n }\\n <div class=\\\"ax-grid ax-grid-cols-2 ax-gap-2\\\">\\n @for(w of regularList();track $index) {\\n <ng-container *ngTemplateOutlet=\\\"itemTpl; context: { $implicit: w }\\\"></ng-container>\\n }\\n </div>\\n </div>\\n </div>\\n</div>\\n@if(selectedWidgets().length) {\\n<ax-footer>\\n <ax-suffix>\\n <ax-button\\n look=\\\"solid\\\"\\n color=\\\"primary\\\"\\n text=\\\"{{ selectedWidgets().length }} Selected\\\"\\n (onClick)=\\\"handleConfirmSelection()\\\"\\n ></ax-button>\\n </ax-suffix>\\n</ax-footer>\\n}\\n\", styles: [\".selected-widget{border-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-100),var(--tw-bg-opacity, 1))}.selected-widget i{--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-primary-500),var(--tw-text-opacity, 1))}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL2Rlc2lnbmVyL2NvbXBvbmVudHMvd2lkZ2V0LXBpY2tlci93aWRnZXQtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2Rlc2lnbmVyL3NyYy9saWIvZGVzaWduZXIvY29tcG9uZW50cy93aWRnZXQtcGlja2VyL3dpZGdldC1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUEwQixNQUFNLHlCQUF5QixDQUFDO0FBQy9FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JB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QUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRVMsc0JBQXNCO1FBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDOzhHQS9IVSxnQ0FBZ0M7a0dBQWhDLGdDQUFnQywrUkNqQzdDLHFwSEE2RkEsbVpEekVJLFlBQVksbVNBQ1osY0FBYywySkFDZCxXQUFXLDhWQUNYLGNBQWMsNlhBQ2QsaUJBQWlCLHFXQUNqQixZQUFZLGthQUNaLGlCQUFpQiw2WUFDakIsa0JBQWtCOzsyRkFNVCxnQ0FBZ0M7a0JBZjVDLFNBQVM7OEJBQ0M7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3dCQUNkLFdBQVc7d0JBQ1gsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixrQkFBa0I7cUJBQ25CLGlCQUVjLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhDb21tb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWEJhc2VQYWdlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3BhZ2UnO1xuaW1wb3J0IHsgQVhTZWFyY2hCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2VhcmNoLWJveCc7XG5pbXBvcnQgeyBBWFRhYnNNb2R1bGUsIEFYVGFiU3RyaXBDaGFuZ2VkRXZlbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdGFicyc7XG5pbXBvcnQgeyBBWFBTZXR0aW5nU2VydmljZSwgQVhQU3RpY2t5RGlyZWN0aXZlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQUGxhdGZvcm1TY29wZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBfV0lER0VUU19DQVRFR09SSUVTLCBBWFBXaWRnZXRDb25maWcsIEFYUFdpZGdldENhdGVnb3J5IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBtb2RlbCwgc2lnbmFsLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjYXN0QXJyYXksIG9yZGVyQnksIHVuaXFCeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRGlzcGxheVdpZGdldENvbmZpZyBleHRlbmRzIEFYUFdpZGdldENvbmZpZyB7XG4gIHBpbm5lZDogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQVhDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhUYWJzTW9kdWxlLFxuICAgIEFYU2VhcmNoQm94TW9kdWxlLFxuICAgIEFYUFN0aWNreURpcmVjdGl2ZSxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3dpZGdldC1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdHlsZVVybHM6IFsnLi93aWRnZXQtcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEFYUERlc2lnbmVyV2lkZ2V0UGlja2VyQ29tcG9uZW50IGV4dGVuZHMgQVhCYXNlUGFnZUNvbXBvbmVudCB7XG4gIHByaXZhdGUgc2V0dGluZ1NlcnZpY2UgPSBpbmplY3QoQVhQU2V0dGluZ1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBpbm5lZFNldHRpbmdLZXkgPSAnZm9ybXM6d2lkZ2V0czpwaWNrZXI6cGlubmVkJztcblxuICBwcm90ZWN0ZWQgc2VhcmNoVGVybSA9IG1vZGVsKCcnKTtcblxuICAvLyBTaWduYWxzXG4gIHByaXZhdGUgd2lkZ2V0czogQVhQV2lkZ2V0Q29uZmlnW10gPSBbXTtcbiAgcHJpdmF0ZSBhbGxXaWRnZXRzID0gc2lnbmFsPEFYUFdpZGdldENvbmZpZ1tdPihbXSk7XG4gIHByaXZhdGUgcGlubmVkV2lkZ2V0cyA9IHNpZ25hbDxzdHJpbmdbXT4oW10pO1xuXG4gIHByaXZhdGUgZGlzcGxheVdpZGdldHMgPSBjb21wdXRlZDxBWFBEaXNwbGF5V2lkZ2V0Q29uZmlnW10+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5hbGxXaWRnZXRzKCkubWFwKChjKSA9PiAoeyAuLi5jLCBwaW5uZWQ6IHRoaXMucGlubmVkV2lkZ2V0cygpLmluY2x1ZGVzKGMubmFtZSkgfSkpO1xuICB9KTtcblxuICAvLyBTaWduYWwgdG8gdHJhY2sgc2VsZWN0ZWQgd2lkZ2V0c1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRXaWRnZXRzID0gc2lnbmFsPEFYUERpc3BsYXlXaWRnZXRDb25maWdbXT4oW10pO1xuXG4gIC8vIENvbXB1dGVkIGZvciBmaWx0ZXJlZCBhbmQgb3JkZXJlZCB3aWRnZXQgbGlzdFxuICBwcml2YXRlIG9yZGVyZWRMaXN0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHNlYXJjaCA9IHRoaXMuc2VhcmNoVGVybSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRUYWJOYW1lID0gdGhpcy5zZWxlY3RlZFRhYigpLm5hbWU7XG5cbiAgICByZXR1cm4gb3JkZXJCeShcbiAgICAgIHRoaXMuZGlzcGxheVdpZGdldHMoKS5maWx0ZXIoKHcpID0+IHtcbiAgICAgICAgY29uc3QgbWF0Y2hlc1RhYiA9XG4gICAgICAgICAgc2VsZWN0ZWRUYWJOYW1lID09PSAnYWxsJyB8fCBjYXN0QXJyYXkody5jYXRlZ29yaWVzID8/IFtdKS5zb21lKChjKSA9PiBjLm5hbWUgPT09IHNlbGVjdGVkVGFiTmFtZSk7XG4gICAgICAgIGNvbnN0IG1hdGNoZXNTZWFyY2ggPVxuICAgICAgICAgICFzZWFyY2ggfHwgdy50aXRsZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaCkgfHwgdy5kZXNjcmlwdGlvbj8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gpO1xuICAgICAgICByZXR1cm4gbWF0Y2hlc1RhYiAmJiBtYXRjaGVzU2VhcmNoO1xuICAgICAgfSksXG4gICAgICBbJ3Bpbm5lZCcsICd0aXRsZSddLFxuICAgICAgWydkZXNjJywgJ2FzYyddLFxuICAgICk7XG4gIH0pO1xuXG4gIC8vIFBpbm5lZCBhbmQgcmVndWxhciBsaXN0c1xuICBwcm90ZWN0ZWQgcGlubmVkTGlzdCA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3JkZXJlZExpc3QoKS5maWx0ZXIoKGMpID0+IGMucGlubmVkKSk7XG4gIHByb3RlY3RlZCByZWd1bGFyTGlzdCA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3JkZXJlZExpc3QoKS5maWx0ZXIoKGMpID0+ICFjLnBpbm5lZCkpO1xuXG4gIC8vIFRhYnMgZm9yIHRoZSB3aWRnZXQgZ3JvdXBzXG4gIHByb3RlY3RlZCBjYXRlZ29yaWVzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB1bmlxQnkoXG4gICAgICB0aGlzLmFsbFdpZGdldHMoKVxuICAgICAgICAubWFwKCh3KSA9PiBjYXN0QXJyYXkody5jYXRlZ29yaWVzID8/IFtdKSlcbiAgICAgICAgLmZpbHRlcigoYykgPT4gYy5sZW5ndGggPiAwKVxuICAgICAgICAuZmxhdCgpLFxuICAgICAgJ25hbWUnLFxuICAgICksXG4gICk7XG5cbiAgcHJvdGVjdGVkIHRhYnMgPSBjb21wdXRlZDxBWFBXaWRnZXRDYXRlZ29yeVtdPigoKSA9PlxuICAgIG9yZGVyQnkoW3sgbmFtZTogJ2FsbCcsIHRpdGxlOiAnQWxsJywgb3JkZXI6IDAgfSwgLi4udGhpcy5jYXRlZ29yaWVzKCldLCAoYykgPT4gYy5vcmRlciksXG4gICk7XG5cbiAgLy8gY29tcHV0ZWQgbWF4IHZpc2libGUgd2lkZ2V0cyBpbiBhIHRhYlxuICBwcm90ZWN0ZWQgbWF4VmlzaWJsZVdpZGdldHMgPSBjb21wdXRlZCgoKSA9PlxuICAgIE1hdGgubWF4KFxuICAgICAgLi4udGhpcy5jYXRlZ29yaWVzKCkubWFwKFxuICAgICAgICAoYykgPT4gdGhpcy5hbGxXaWRnZXRzKCkuZmlsdGVyKCh3KSA9PiBjYXN0QXJyYXkody5jYXRlZ29yaWVzID8/IFtdKS5zb21lKChjKSA9PiBjLm5hbWUgPT09IGMubmFtZSkpLmxlbmd0aCxcbiAgICAgICksXG4gICAgKSxcbiAgKTtcblxuICBwcm90ZWN0ZWQgY3VycmVudFRhYkluZGV4ID0gc2lnbmFsKDApO1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRUYWIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnRhYnMoKVt0aGlzLmN1cnJlbnRUYWJJbmRleCgpXSk7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5hbGxXaWRnZXRzLnNldCh0aGlzLndpZGdldHMpO1xuICAgIHRoaXMucGlubmVkV2lkZ2V0cy5zZXQoKGF3YWl0IHRoaXMuc2V0dGluZ1NlcnZpY2UuZ2V0PHN0cmluZ1tdPih0aGlzLnBpbm5lZFNldHRpbmdLZXkpKSB8fCBbXSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlVGFiQ2hhbmdlKGV2ZW50OiBBWFRhYlN0cmlwQ2hhbmdlZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5keCA9IGV2ZW50LmluZGV4O1xuICAgIGlmICh0aGlzLmN1cnJlbnRUYWJJbmRleCgpICE9IGluZHgpIHtcbiAgICAgIHRoaXMuY3VycmVudFRhYkluZGV4LnNldChpbmR4KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIHdpZGdldDogQVhQRGlzcGxheVdpZGdldENvbmZpZykge1xuICAgIGlmIChldmVudC5jdHJsS2V5KSB7XG4gICAgICBjb25zdCBjdXJyZW50U2VsZWN0aW9uID0gdGhpcy5zZWxlY3RlZFdpZGdldHMoKTtcbiAgICAgIGNvbnN0IGlzQWxyZWFkeVNlbGVjdGVkID0gY3VycmVudFNlbGVjdGlvbi5zb21lKCh3KSA9PiB3ID09PSB3aWRnZXQpO1xuXG4gICAgICBpZiAoaXNBbHJlYWR5U2VsZWN0ZWQpIHtcbiAgICAgICAgLy8gRGVzZWxlY3Qgd2lkZ2V0IGlmIGFscmVhZHkgc2VsZWN0ZWRcbiAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHMuc2V0KGN1cnJlbnRTZWxlY3Rpb24uZmlsdGVyKCh3KSA9PiB3ICE9PSB3aWRnZXQpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEFkZCB3aWRnZXQgdG8gc2VsZWN0aW9uXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzLnNldChbLi4uY3VycmVudFNlbGVjdGlvbiwgd2lkZ2V0XSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIENUUkwgaXMgbm90IHByZXNzZWQsIHNlbGVjdCBvbmx5IHRoZSBjbGlja2VkIHdpZGdldFxuICAgICAgdGhpcy5jbG9zZSh7IHdpZGdldHM6IFt3aWRnZXRdIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVQaW5DbGljayhlOiBNb3VzZUV2ZW50LCB3aWRnZXQ6IEFYUERpc3BsYXlXaWRnZXRDb25maWcpIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHdpZGdldC5waW5uZWQgPSAhd2lkZ2V0LnBpbm5lZDtcbiAgICAvLyBHZXQgdGhlIGN1cnJlbnQgbGlzdCBvZiBwaW5uZWQgd2lkZ2V0cyBmcm9tIHNldHRpbmdzXG4gICAgbGV0IHBpbm5lZFdpZGdldHMgPSAoYXdhaXQgdGhpcy5zZXR0aW5nU2VydmljZS5nZXQ8c3RyaW5nW10+KHRoaXMucGlubmVkU2V0dGluZ0tleSkpIHx8IFtdO1xuXG4gICAgLy8gVXBkYXRlIHRoZSBsaXN0IG9mIHBpbm5lZCB3aWRnZXRzIGJhc2VkIG9uIHRoZSBwaW5uZWQgc3RhdHVzXG4gICAgaWYgKHdpZGdldC5waW5uZWQpIHtcbiAgICAgIGlmICghcGlubmVkV2lkZ2V0cy5pbmNsdWRlcyh3aWRnZXQubmFtZSkpIHtcbiAgICAgICAgcGlubmVkV2lkZ2V0cy5wdXNoKHdpZGdldC5uYW1lKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGlubmVkV2lkZ2V0cyA9IHBpbm5lZFdpZGdldHMuZmlsdGVyKChuYW1lKSA9PiBuYW1lICE9PSB3aWRnZXQubmFtZSk7XG4gICAgfVxuXG4gICAgLy8gU2F2ZSB0aGUgdXBkYXRlZCBsaXN0IG9mIHBpbm5lZCB3aWRnZXRzXG4gICAgYXdhaXQgdGhpcy5zZXR0aW5nU2VydmljZS5zY29wZShBWFBQbGF0Zm9ybVNjb3BlLlVzZXIpLnNldCh0aGlzLnBpbm5lZFNldHRpbmdLZXksIHBpbm5lZFdpZGdldHMpO1xuXG4gICAgLy8gVHJpZ2dlciBhIHJlLXJlbmRlciBvZiB0aGUgd2lkZ2V0c1xuICAgIHRoaXMucGlubmVkV2lkZ2V0cy5zZXQocGlubmVkV2lkZ2V0cyk7XG4gIH1cblxuICAvLyBDaGVjayBpZiBhIHdpZGdldCBpcyBzZWxlY3RlZFxuICBwcm90ZWN0ZWQgaXNXaWRnZXRTZWxlY3RlZCh3aWRnZXQ6IEFYUERpc3BsYXlXaWRnZXRDb25maWcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFdpZGdldHMoKS5pbmNsdWRlcyh3aWRnZXQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUNvbmZpcm1TZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZSh7IHdpZGdldHM6IHRoaXMuc2VsZWN0ZWRXaWRnZXRzKCkgfSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWgtWzk1dmhdXCJcbiAgW25nQ2xhc3NdPVwieyAnbGc6YXgtaC1bNzV2aF0nOiBtYXhWaXNpYmxlV2lkZ2V0cygpID4gMTAsICdsZzpheC1oLVs1MHZoXSc6IG1heFZpc2libGVXaWRnZXRzKCkgPD0gMTAgfVwiXG4+XG4gIDxkaXY+XG4gICAgPGF4LXRhYnMgW2xvb2tdPVwiJ3dpdGgtbGluZSdcIiAob25BY3RpdmVUYWJDaGFuZ2VkKT1cImhhbmRsZVRhYkNoYW5nZSgkZXZlbnQpXCI+XG4gICAgICBAZm9yKHcgb2YgdGFicygpO3RyYWNrICRpbmRleCkge1xuICAgICAgPGF4LXRhYi1pdGVtIFt0ZXh0XT1cIncudGl0bGVcIiBba2V5XT1cIiRpbmRleC50b1N0cmluZygpXCIgW2FjdGl2ZV09XCJjdXJyZW50VGFiSW5kZXgoKSA9PT0gJGluZGV4XCI+PC9heC10YWItaXRlbT5cbiAgICAgIH1cbiAgICA8L2F4LXRhYnM+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYXgtb3ZlcmZsb3ctYXV0b1wiICNjb250ZW50PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYXgtcC00IGF4LXN0aWNreSBheC10b3AtMCBheC16LTEwIGF4LXRyYW5zaXRpb24tYWxsXCJcbiAgICAgICNzdGlja3k9XCJheHBTdGlja3lcIlxuICAgICAgW2F4cFN0aWNreV09XCInYXgtYmctbGlnaHRlc3QgYXgtc2hhZG93LXhsJ1wiXG4gICAgICBbc3RpY2t5UGFyZW50XT1cImNvbnRlbnRcIlxuICAgICAgW3N0aWNreU9mZnNldF09XCIxMFwiXG4gICAgPlxuICAgICAgPGF4LXNlYXJjaC1ib3hcbiAgICAgICAgbG9vaz1cImZpbGxcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cImUuZy4gQnV0dG9uLCBUZXh0LCAuLi5cIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIlxuICAgICAgICBbZGVsYXlUaW1lXT1cIjMwMFwiXG4gICAgICAgIFtheEF1dG9Gb2N1c109XCJ0cnVlXCJcbiAgICAgID5cbiAgICAgICAgPGF4LWNsZWFyLWJ1dHRvbj48L2F4LWNsZWFyLWJ1dHRvbj5cbiAgICAgIDwvYXgtc2VhcmNoLWJveD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1wLTQgYXgtcHQtMFwiPlxuICAgICAgPG5nLXRlbXBsYXRlICNpdGVtVHBsIGxldC13PlxuICAgICAgICBAbGV0IGlzU2VsZWN0ZWQ9IGlzV2lkZ2V0U2VsZWN0ZWQodyk7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2soJGV2ZW50LCB3KVwiXG4gICAgICAgICAgY2xhc3M9XCJheC1weS0yIGF4LXB4LTMgYXgtcm91bmRlZC1tZCBheC1mbGV4IGF4LWdhcC0zIGF4LWl0ZW1zLWNlbnRlciBheC1ncm91cCBob3ZlcjpheC1iZy1wcmltYXJ5LWxpZ2h0ZXN0LzY1IGhvdmVyOmF4LXRleHQtcHJpbWFyeS1vbi1saWdodGVzdCBheC1jdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgW2NsYXNzLmF4LWJnLXByaW1hcnktbGlnaHRlc3RdPVwiaXNTZWxlY3RlZFwiXG4gICAgICAgICAgW2NsYXNzLmF4LXRleHQtcHJpbWFyeS1vbi1saWdodGVzdF09XCJpc1NlbGVjdGVkXCJcbiAgICAgICAgICBbY2xhc3MuYXgtYm9yZGVyLXByaW1hcnktbGlnaHRlc3RdPVwiaXNTZWxlY3RlZFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImF4LXctMTAgYXgtaC0xMCBheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWNlbnRlciBheC1yb3VuZGVkLW1kIGF4LWJvcmRlciBncm91cC1ob3ZlcjpheC1iZy1wcmltYXJ5LWxpZ2h0ZXIgZ3JvdXAtaG92ZXI6YXgtdGV4dC1wcmltYXJ5LW9uLWxpZ2h0ZXIgZ3JvdXAtaG92ZXI6YXgtYm9yZGVyLXByaW1hcnktbGlnaHRlclwiXG4gICAgICAgICAgICBbY2xhc3MuYXgtYmctcHJpbWFyeS1saWdodF09XCJpc1NlbGVjdGVkXCJcbiAgICAgICAgICAgIFtjbGFzcy5heC10ZXh0LXByaW1hcnktb24tbGlnaHRdPVwiaXNTZWxlY3RlZFwiXG4gICAgICAgICAgICBbY2xhc3MuYXgtYm9yZGVyLXByaW1hcnktbGlnaHRdPVwiaXNTZWxlY3RlZFwiXG4gICAgICAgICAgICBbY2xhc3MuYXgtc3VyZmFjZV09XCIhaXNTZWxlY3RlZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgW25nQ2xhc3NdPVwidy5pY29uXCIgY2xhc3M9XCJheC10ZXh0LWxnXCI+PC9pPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC0xIGF4LWZsZXgtMVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWdhcC0yXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mb250LXNlbWlib2xkIGF4LXRleHQtc21cIj57eyB3LnRpdGxlIH19PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cImhhbmRsZVBpbkNsaWNrKCRldmVudCwgdylcIj5cbiAgICAgICAgICAgICAgICBAaWYgKHcucGlubmVkKSB7XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS10aHVtYnRhY2sgYXgtdGV4dC1zbSBheC1yb3RhdGUtNDVcIj48L2k+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1saWdodCBmYS10aHVtYnRhY2sgYXgtdGV4dC1zbSBheC1yb3RhdGUtNDUgYXgtaW52aXNpYmxlIGdyb3VwLWhvdmVyOmF4LXZpc2libGVcIj48L2k+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC10ZXh0LXhzIGF4LXRydW5jYXRlXCI+XG4gICAgICAgICAgICAgIHt7IHcuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWdyaWQgYXgtZ3JpZC1jb2xzLTIgYXgtZ2FwLTJcIj5cbiAgICAgICAgQGZvcih3IG9mIHBpbm5lZExpc3QoKTt0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1UcGw7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB3IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICBAaWYocGlubmVkTGlzdCgpLmxlbmd0aCkge1xuICAgICAgPGhyIGNsYXNzPVwiYXgtbXktNCBheC1ib3JkZXItZGFzaGVkXCIgLz5cbiAgICAgIH1cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1ncmlkIGF4LWdyaWQtY29scy0yIGF4LWdhcC0yXCI+XG4gICAgICAgIEBmb3IodyBvZiByZWd1bGFyTGlzdCgpO3RyYWNrICRpbmRleCkge1xuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbVRwbDsgY29udGV4dDogeyAkaW1wbGljaXQ6IHcgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbkBpZihzZWxlY3RlZFdpZGdldHMoKS5sZW5ndGgpIHtcbjxheC1mb290ZXI+XG4gIDxheC1zdWZmaXg+XG4gICAgPGF4LWJ1dHRvblxuICAgICAgbG9vaz1cInNvbGlkXCJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICB0ZXh0PVwie3sgc2VsZWN0ZWRXaWRnZXRzKCkubGVuZ3RoIH19IFNlbGVjdGVkXCJcbiAgICAgIChvbkNsaWNrKT1cImhhbmRsZUNvbmZpcm1TZWxlY3Rpb24oKVwiXG4gICAgPjwvYXgtYnV0dG9uPlxuICA8L2F4LXN1ZmZpeD5cbjwvYXgtZm9vdGVyPlxufVxuIl19","import { AXCollapseModule } from '@acorex/components/collapse';\nimport { AXTabsModule } from '@acorex/components/tabs';\nimport { AXPLayoutBuilderModule, AXPWidgetDataSourceProviderService, AXPWidgetRegistryService, } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, EventEmitter, inject, input, Output, signal, untracked, } from '@angular/core';\nimport { capitalize, cloneDeep, isArray, isEmpty, isNil, merge, set, sortBy, unionBy } from 'lodash-es';\nimport { AXPDesignerConnector } from '../designer';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/components/collapse\";\nimport * as i3 from \"@acorex/components/tabs\";\nimport * as i4 from \"@acorex/platform/layout/builder\";\nimport * as i5 from \"@acorex/core/translation\";\nexport class AXPWidgetPropertyViewerComponent {\n constructor() {\n this.widget = input.required();\n this.mode = input('simple');\n this.widgetRegistryService = inject(AXPWidgetRegistryService);\n this.connector = inject(AXPDesignerConnector);\n this.dataSourceProvider = inject(AXPWidgetDataSourceProviderService);\n this.currentTabIndex = signal(0);\n this.config = signal(null);\n this.allPoperties = [];\n this.tabs = signal([]);\n this.groups = computed(() => {\n return this.tabs().length ? this.tabs()[this.currentTabIndex()].groups : [];\n });\n this.groupCollapsedStates = new Map();\n this.onChanged = new EventEmitter();\n this.context = signal({});\n this.initialContext = {};\n this.functions = {\n getDataSourceNames: this.getDataSourceNames.bind(this),\n };\n effect(() => {\n if (!this.widget())\n return;\n const config = this.widgetRegistryService.resolve(this.widget()?.type);\n if (config) {\n this.initialContext = {};\n this.config.set(config);\n this.fillTabs();\n }\n else {\n console.error(`Invalid widget name: ${this.widget()}`);\n }\n });\n }\n update(values) {\n this.context.set(merge(cloneDeep(this.context()), values));\n }\n fillTabs() {\n const tabs = [\n {\n name: 'general',\n title: 'General',\n groups: [],\n },\n ];\n Object.entries(this.config()?.components ?? {}).forEach((c) => {\n if (c[1].component != null && c[1].properties?.length) {\n tabs.push({ name: c[0], title: capitalize(c[0]), groups: [] });\n }\n });\n ///\n this.allPoperties = [];\n ///\n tabs.forEach((tab) => {\n const props = tab.name == 'general'\n ? (this.config()?.properties ?? [])\n : ((this.config()?.components)[tab.name]?.properties ?? []);\n //\n this.allPoperties.push(...props);\n tab.groups = unionBy(sortBy(props.map((pg) => ({\n isCollapsed: !!this.groupCollapsedStates.get(pg.group.name),\n name: pg.group.name,\n title: pg.group.title,\n props: sortBy(props.filter((p) => p.group.name == pg.group.name && pg.visible), ['order', 'title']),\n })), ['order', 'title']), 'name').filter((c) => c.props.length);\n });\n this.tabs.set(tabs.filter((c) => c.groups.length));\n //\n this.initialContext = this.allPoperties\n .filter((c) => (!isArray(c.schema.defaultValue) && !isNil(c.schema.defaultValue)) ||\n (isArray(c.schema.defaultValue) && !isEmpty(c.schema.defaultValue)))\n .reduce((acc, c) => {\n set(acc, c.schema.interface.path, c.schema.defaultValue);\n return acc;\n }, {});\n //\n untracked(() => {\n this.context.set(merge(cloneDeep(this.initialContext), this.widget()));\n this.onChanged.emit({ values: this.context(), mode: 'init' });\n });\n }\n handleContextChange(e) {\n untracked(() => {\n this.context.set(e.data);\n this.onChanged.emit({ values: this.context(), mode: e.state == 'initiated' ? 'init' : 'update' });\n });\n }\n handleTabChange(event) {\n const indx = event.index;\n if (this.currentTabIndex() != indx) {\n this.currentTabIndex.set(indx);\n }\n }\n handleCollapsedChange(group, collapsed) {\n this.groupCollapsedStates.set(group, collapsed);\n }\n async getDataSourceNames() {\n const result = (await this.dataSourceProvider.items()).map((c) => ({\n id: c.name,\n title: c.title,\n valueField: c.valueField,\n textField: c.textField,\n }));\n return result;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPWidgetPropertyViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXPWidgetPropertyViewerComponent, isStandalone: true, selector: \"axp-widget-property-viewer\", inputs: { widget: { classPropertyName: \"widget\", publicName: \"widget\", isSignal: true, isRequired: true, transformFunction: null }, mode: { classPropertyName: \"mode\", publicName: \"mode\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onChanged: \"onChanged\" }, ngImport: i0, template: \"<axp-widgets-container [context]=\\\"context()\\\" (onContextChanged)=\\\"handleContextChange($event)\\\" [functions]=\\\"functions\\\">\\n @if (mode()=='advanced') {\\n <div class=\\\"ax-flex ax-flex-col\\\">\\n <div class=\\\"ax-pb-2\\\">\\n <ax-tabs look=\\\"default\\\" (onActiveTabChanged)=\\\"handleTabChange($event)\\\" [look]=\\\"'with-line'\\\">\\n @for( tab of tabs();track $index){\\n <ax-tab-item [text]=\\\"tab.title\\\" [key]=\\\"$index.toString()\\\" [active]=\\\"currentTabIndex() === $index\\\">\\n </ax-tab-item>\\n }\\n </ax-tabs>\\n </div>\\n <div class=\\\"ax-flex-1 ax-overflow-auto\\\">\\n <ax-collapse-group class=\\\"ax-h-fit\\\" [look]=\\\"'flat'\\\">\\n @for( group of groups();track $index){\\n <ax-collapse class=\\\"!ax-mb-0\\\" [caption]=\\\"group.title\\\" [(isCollapsed)]=\\\"group.isCollapsed\\\"\\n (isCollapsedChange)=\\\"handleCollapsedChange(group.name, $event)\\\">\\n <div class=\\\"ax-flex ax-flex-col\\\">\\n @for( p of group.props;track $index){\\n <div class=\\\"ax-flex ax-flex-col ax-gap-1 ax-py-2\\\">\\n <span class=\\\"ax-font-semibold\\\">{{ p.title }}</span>\\n @if(p.schema.interface) {\\n <ng-container axp-widget-renderer [node]=\\\"p.schema.interface\\\" [mode]=\\\"'edit'\\\"> </ng-container>\\n }\\n </div>\\n }\\n </div>\\n </ax-collapse>\\n }\\n </ax-collapse-group>\\n </div>\\n </div>\\n }\\n <!-- Simple-->\\n @else {\\n <div class=\\\"ax-flex ax-flex-col ax-p-4 ax-gap-4\\\">\\n <!-- groups -->\\n @for( group of groups();track $index){\\n <!-- props -->\\n @for( p of group.props;track $index){\\n <div class=\\\"ax-flex ax-flex-col ax-gap-2\\\">\\n <span class=\\\"ax-font-semibold\\\">{{ p.title | translate | async }}</span>\\n @if(p.schema.interface) {\\n <ng-container axp-widget-renderer [node]=\\\"p.schema.interface\\\" [mode]=\\\"'edit'\\\"> </ng-container>\\n }\\n </div>\\n }\\n }\\n </div>\\n }\\n\\n</axp-widgets-container>\", styles: [\":host ax-collapse .ax-collapse-header{font-weight:600}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"ngmodule\", type: AXCollapseModule }, { kind: \"component\", type: i2.AXCollapseComponent, selector: \"ax-collapse\", inputs: [\"disabled\", \"look\", \"isCollapsed\", \"showHeader\", \"caption\", \"icon\", \"isLoading\", \"headerTemplate\"], outputs: [\"onClick\", \"isCollapsedChange\"] }, { kind: \"component\", type: i2.AXCollapseGroupComponent, selector: \"ax-collapse-group\", inputs: [\"look\", \"accordion\", \"activeIndex\"], outputs: [\"accordionChange\", \"activeIndexChange\"] }, { kind: \"ngmodule\", type: AXTabsModule }, { kind: \"component\", type: i3.AXTabsComponent, selector: \"ax-tabs\", inputs: [\"look\", \"location\", \"fitParent\", \"minWidth\", \"content\"], outputs: [\"onActiveTabChanged\"] }, { kind: \"component\", type: i3.AXTabItemComponent, selector: \"ax-tab-item\", inputs: [\"disabled\", \"text\", \"key\", \"headerTemplate\", \"active\"], outputs: [\"disabledChange\", \"onClick\", \"onBlur\", \"onFocus\", \"activeChange\"] }, { kind: \"ngmodule\", type: AXPLayoutBuilderModule }, { kind: \"component\", type: i4.AXPWidgetContainerComponent, selector: \"axp-widgets-container\", inputs: [\"context\", \"functions\"], outputs: [\"onContextChanged\"] }, { kind: \"directive\", type: i4.AXPWidgetRendererDirective, selector: \"[axp-widget-renderer]\", inputs: [\"parentNode\", \"index\", \"mode\", \"node\"], outputs: [\"onOptionsChanged\", \"onValueChanged\"], exportAs: [\"widgetRenderer\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"pipe\", type: i5.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPWidgetPropertyViewerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-widget-property-viewer', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, AXCollapseModule, AXTabsModule, AXPLayoutBuilderModule, AXTranslationModule], template: \"<axp-widgets-container [context]=\\\"context()\\\" (onContextChanged)=\\\"handleContextChange($event)\\\" [functions]=\\\"functions\\\">\\n @if (mode()=='advanced') {\\n <div class=\\\"ax-flex ax-flex-col\\\">\\n <div class=\\\"ax-pb-2\\\">\\n <ax-tabs look=\\\"default\\\" (onActiveTabChanged)=\\\"handleTabChange($event)\\\" [look]=\\\"'with-line'\\\">\\n @for( tab of tabs();track $index){\\n <ax-tab-item [text]=\\\"tab.title\\\" [key]=\\\"$index.toString()\\\" [active]=\\\"currentTabIndex() === $index\\\">\\n </ax-tab-item>\\n }\\n </ax-tabs>\\n </div>\\n <div class=\\\"ax-flex-1 ax-overflow-auto\\\">\\n <ax-collapse-group class=\\\"ax-h-fit\\\" [look]=\\\"'flat'\\\">\\n @for( group of groups();track $index){\\n <ax-collapse class=\\\"!ax-mb-0\\\" [caption]=\\\"group.title\\\" [(isCollapsed)]=\\\"group.isCollapsed\\\"\\n (isCollapsedChange)=\\\"handleCollapsedChange(group.name, $event)\\\">\\n <div class=\\\"ax-flex ax-flex-col\\\">\\n @for( p of group.props;track $index){\\n <div class=\\\"ax-flex ax-flex-col ax-gap-1 ax-py-2\\\">\\n <span class=\\\"ax-font-semibold\\\">{{ p.title }}</span>\\n @if(p.schema.interface) {\\n <ng-container axp-widget-renderer [node]=\\\"p.schema.interface\\\" [mode]=\\\"'edit'\\\"> </ng-container>\\n }\\n </div>\\n }\\n </div>\\n </ax-collapse>\\n }\\n </ax-collapse-group>\\n </div>\\n </div>\\n }\\n <!-- Simple-->\\n @else {\\n <div class=\\\"ax-flex ax-flex-col ax-p-4 ax-gap-4\\\">\\n <!-- groups -->\\n @for( group of groups();track $index){\\n <!-- props -->\\n @for( p of group.props;track $index){\\n <div class=\\\"ax-flex ax-flex-col ax-gap-2\\\">\\n <span class=\\\"ax-font-semibold\\\">{{ p.title | translate | async }}</span>\\n @if(p.schema.interface) {\\n <ng-container axp-widget-renderer [node]=\\\"p.schema.interface\\\" [mode]=\\\"'edit'\\\"> </ng-container>\\n }\\n </div>\\n }\\n }\\n </div>\\n }\\n\\n</axp-widgets-container>\", styles: [\":host ax-collapse .ax-collapse-header{font-weight:600}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { onChanged: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXByb3BlcnR5LXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL3Byb3BlcnR5LXZpZXdlci93aWRnZXQtcHJvcGVydHktdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2Rlc2lnbmVyL3NyYy9saWIvcHJvcGVydHktdmlld2VyL3dpZGdldC1wcm9wZXJ0eS12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFL0QsT0FBTyxFQUFFLFlBQVksRUFBMEIsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRSxPQUFPLEVBQ0wsc0JBQXNCLEVBR3RCLGtDQUFrQyxFQUdsQyx3QkFBd0IsR0FDekIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7O0FBeUIv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Q0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNqRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUk7WUFDVixLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7WUFDZCxVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQVU7WUFDeEIsU0FBUyxFQUFFLENBQUMsQ0FBQyxTQUFTO1NBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBQ0osT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs4R0F4SVUsZ0NBQWdDO2tHQUFoQyxnQ0FBZ0Msc1hDdEQ3QyxvOURBa0R3QixpSERFWixZQUFZLG1GQUFFLGdCQUFnQiw4YkFBRSxZQUFZLGthQUFFLHNCQUFzQiw4WkFBRSxtQkFBbUI7OzJGQUV4RixnQ0FBZ0M7a0JBUDVDLFNBQVM7K0JBQ0UsNEJBQTRCLG1CQUdyQix1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxzQkFBc0IsRUFBRSxtQkFBbUIsQ0FBQzt3REEwQnBHLFNBQVM7c0JBRFIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29sbGFwc2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29sbGFwc2UnO1xuaW1wb3J0IHsgY29udmVydEFycmF5VG9EYXRhU291cmNlIH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYVGFic01vZHVsZSwgQVhUYWJTdHJpcENoYW5nZWRFdmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90YWJzJztcbmltcG9ydCB7XG4gIEFYUExheW91dEJ1aWxkZXJNb2R1bGUsXG4gIEFYUExheW91dENvbnRleHRDaGFuZ2VFdmVudCxcbiAgQVhQV2lkZ2V0Q29uZmlnLFxuICBBWFBXaWRnZXREYXRhU291cmNlUHJvdmlkZXJTZXJ2aWNlLFxuICBBWFBXaWRnZXROb2RlLFxuICBBWFBXaWRnZXRQcm9wZXJ0eSxcbiAgQVhQV2lkZ2V0UmVnaXN0cnlTZXJ2aWNlLFxufSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIEV2ZW50RW1pdHRlcixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgT3V0cHV0LFxuICBzaWduYWwsXG4gIHVudHJhY2tlZCxcbiAgV3JpdGFibGVTaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2FwaXRhbGl6ZSwgY2xvbmVEZWVwLCBpc0FycmF5LCBpc0VtcHR5LCBpc05pbCwgbWVyZ2UsIHNldCwgc29ydEJ5LCB1bmlvbkJ5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFYUERlc2lnbmVyQ29ubmVjdG9yIH0gZnJvbSAnLi4vZGVzaWduZXInO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0UHJvcGVydHlUYWIge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGdyb3Vwczoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGlzQ29sbGFwc2VkOiBib29sZWFuO1xuICAgIHByb3BzOiBBWFBXaWRnZXRQcm9wZXJ0eVtdO1xuICB9W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0UHJvcGVydGllc0NoYW5nZWRFdmVudCB7XG4gIHZhbHVlczogYW55O1xuICBtb2RlOiAnaW5pdCcgfCAndXBkYXRlJztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhwLXdpZGdldC1wcm9wZXJ0eS12aWV3ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vd2lkZ2V0LXByb3BlcnR5LXZpZXdlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dpZGdldC1wcm9wZXJ0eS12aWV3ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEFYQ29sbGFwc2VNb2R1bGUsIEFYVGFic01vZHVsZSwgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSwgQVhUcmFuc2xhdGlvbk1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIEFYUFdpZGdldFByb3BlcnR5Vmlld2VyQ29tcG9uZW50IHtcbiAgd2lkZ2V0ID0gaW5wdXQucmVxdWlyZWQ8QVhQV2lkZ2V0Tm9kZT4oKTtcblxuICBtb2RlID0gaW5wdXQ8J3NpbXBsZScgfCAnYWR2YW5jZWQnPignc2ltcGxlJyk7XG5cbiAgcHJpdmF0ZSB3aWRnZXRSZWdpc3RyeVNlcnZpY2UgPSBpbmplY3QoQVhQV2lkZ2V0UmVnaXN0cnlTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgY29ubmVjdG9yID0gaW5qZWN0KEFYUERlc2lnbmVyQ29ubmVjdG9yKTtcbiAgcHJvdGVjdGVkIGRhdGFTb3VyY2VQcm92aWRlciA9IGluamVjdChBWFBXaWRnZXREYXRhU291cmNlUHJvdmlkZXJTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgY3VycmVudFRhYkluZGV4OiBXcml0YWJsZVNpZ25hbDxudW1iZXI+ID0gc2lnbmFsKDApO1xuXG4gIHByb3RlY3RlZCBjb25maWcgPSBzaWduYWw8QVhQV2lkZ2V0Q29uZmlnIHwgbnVsbD4obnVsbCk7XG4gIHByb3RlY3RlZCBhbGxQb3BlcnRpZXM6IEFYUFdpZGdldFByb3BlcnR5W10gPSBbXTtcblxuICBwcm90ZWN0ZWQgdGFicyA9IHNpZ25hbDxBWFBXaWRnZXRQcm9wZXJ0eVRhYltdPihbXSk7XG5cbiAgcHJvdGVjdGVkIGdyb3VwcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy50YWJzKCkubGVuZ3RoID8gdGhpcy50YWJzKClbdGhpcy5jdXJyZW50VGFiSW5kZXgoKV0uZ3JvdXBzIDogW107XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBncm91cENvbGxhcHNlZFN0YXRlczogTWFwPHN0cmluZywgYm9vbGVhbj4gPSBuZXcgTWFwKCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QVhQV2lkZ2V0UHJvcGVydGllc0NoYW5nZWRFdmVudD4oKTtcblxuICBwcm90ZWN0ZWQgY29udGV4dCA9IHNpZ25hbDxhbnk+KHt9KTtcblxuICBwcm90ZWN0ZWQgaW5pdGlhbENvbnRleHQ6IGFueSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMud2lkZ2V0KCkpIHJldHVybjtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMud2lkZ2V0UmVnaXN0cnlTZXJ2aWNlLnJlc29sdmUodGhpcy53aWRnZXQoKT8udHlwZSk7XG4gICAgICBpZiAoY29uZmlnKSB7XG4gICAgICAgIHRoaXMuaW5pdGlhbENvbnRleHQgPSB7fTtcbiAgICAgICAgdGhpcy5jb25maWcuc2V0KGNvbmZpZyk7XG4gICAgICAgIHRoaXMuZmlsbFRhYnMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEludmFsaWQgd2lkZ2V0IG5hbWU6ICR7dGhpcy53aWRnZXQoKX1gKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGUodmFsdWVzOiBhbnkpIHtcbiAgICB0aGlzLmNvbnRleHQuc2V0KG1lcmdlKGNsb25lRGVlcCh0aGlzLmNvbnRleHQoKSksIHZhbHVlcykpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWxsVGFicygpIHtcbiAgICBjb25zdCB0YWJzOiBBWFBXaWRnZXRQcm9wZXJ0eVRhYltdID0gW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnZ2VuZXJhbCcsXG4gICAgICAgIHRpdGxlOiAnR2VuZXJhbCcsXG4gICAgICAgIGdyb3VwczogW10sXG4gICAgICB9LFxuICAgIF07XG4gICAgT2JqZWN0LmVudHJpZXModGhpcy5jb25maWcoKT8uY29tcG9uZW50cyA/PyB7fSkuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgaWYgKGNbMV0uY29tcG9uZW50ICE9IG51bGwgJiYgY1sxXS5wcm9wZXJ0aWVzPy5sZW5ndGgpIHtcbiAgICAgICAgdGFicy5wdXNoKHsgbmFtZTogY1swXSwgdGl0bGU6IGNhcGl0YWxpemUoY1swXSksIGdyb3VwczogW10gfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy8vXG4gICAgdGhpcy5hbGxQb3BlcnRpZXMgPSBbXTtcbiAgICAvLy9cbiAgICB0YWJzLmZvckVhY2goKHRhYikgPT4ge1xuICAgICAgY29uc3QgcHJvcHMgPVxuICAgICAgICB0YWIubmFtZSA9PSAnZ2VuZXJhbCdcbiAgICAgICAgICA/ICh0aGlzLmNvbmZpZygpPy5wcm9wZXJ0aWVzID8/IFtdKVxuICAgICAgICAgIDogKCgodGhpcy5jb25maWcoKT8uY29tcG9uZW50cyBhcyBhbnkpW3RhYi5uYW1lXT8ucHJvcGVydGllcyBhcyBBWFBXaWRnZXRQcm9wZXJ0eVtdKSA/PyBbXSk7XG4gICAgICAvL1xuICAgICAgdGhpcy5hbGxQb3BlcnRpZXMucHVzaCguLi5wcm9wcyk7XG4gICAgICB0YWIuZ3JvdXBzID0gdW5pb25CeShcbiAgICAgICAgc29ydEJ5KFxuICAgICAgICAgIHByb3BzLm1hcCgocGcpID0+ICh7XG4gICAgICAgICAgICBpc0NvbGxhcHNlZDogISF0aGlzLmdyb3VwQ29sbGFwc2VkU3RhdGVzLmdldChwZy5ncm91cC5uYW1lKSxcbiAgICAgICAgICAgIG5hbWU6IHBnLmdyb3VwLm5hbWUsXG4gICAgICAgICAgICB0aXRsZTogcGcuZ3JvdXAudGl0bGUsXG4gICAgICAgICAgICBwcm9wczogc29ydEJ5KFxuICAgICAgICAgICAgICBwcm9wcy5maWx0ZXIoKHApID0+IHAuZ3JvdXAubmFtZSA9PSBwZy5ncm91cC5uYW1lICYmIHBnLnZpc2libGUpLFxuICAgICAgICAgICAgICBbJ29yZGVyJywgJ3RpdGxlJ10sXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgICBbJ29yZGVyJywgJ3RpdGxlJ10sXG4gICAgICAgICksXG4gICAgICAgICduYW1lJyxcbiAgICAgICkuZmlsdGVyKChjKSA9PiBjLnByb3BzLmxlbmd0aCk7XG4gICAgfSk7XG4gICAgdGhpcy50YWJzLnNldCh0YWJzLmZpbHRlcigoYykgPT4gYy5ncm91cHMubGVuZ3RoKSk7XG4gICAgLy9cbiAgICB0aGlzLmluaXRpYWxDb250ZXh0ID0gdGhpcy5hbGxQb3BlcnRpZXNcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChjKSA9PlxuICAgICAgICAgICghaXNBcnJheShjLnNjaGVtYS5kZWZhdWx0VmFsdWUpICYmICFpc05pbChjLnNjaGVtYS5kZWZhdWx0VmFsdWUpKSB8fFxuICAgICAgICAgIChpc0FycmF5KGMuc2NoZW1hLmRlZmF1bHRWYWx1ZSkgJiYgIWlzRW1wdHkoYy5zY2hlbWEuZGVmYXVsdFZhbHVlKSksXG4gICAgICApXG4gICAgICAucmVkdWNlKChhY2MsIGMpID0+IHtcbiAgICAgICAgc2V0KGFjYywgYy5zY2hlbWEuaW50ZXJmYWNlLnBhdGgsIGMuc2NoZW1hLmRlZmF1bHRWYWx1ZSk7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCB7fSk7XG4gICAgLy9cbiAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgdGhpcy5jb250ZXh0LnNldChtZXJnZShjbG9uZURlZXAodGhpcy5pbml0aWFsQ29udGV4dCksIHRoaXMud2lkZ2V0KCkpKTtcbiAgICAgIHRoaXMub25DaGFuZ2VkLmVtaXQoeyB2YWx1ZXM6IHRoaXMuY29udGV4dCgpLCBtb2RlOiAnaW5pdCcgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlQ29udGV4dENoYW5nZShlOiBBWFBMYXlvdXRDb250ZXh0Q2hhbmdlRXZlbnQpIHtcbiAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgdGhpcy5jb250ZXh0LnNldChlLmRhdGEpO1xuICAgICAgdGhpcy5vbkNoYW5nZWQuZW1pdCh7IHZhbHVlczogdGhpcy5jb250ZXh0KCksIG1vZGU6IGUuc3RhdGUgPT0gJ2luaXRpYXRlZCcgPyAnaW5pdCcgOiAndXBkYXRlJyB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVUYWJDaGFuZ2UoZXZlbnQ6IEFYVGFiU3RyaXBDaGFuZ2VkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBpbmR4ID0gZXZlbnQuaW5kZXg7XG4gICAgaWYgKHRoaXMuY3VycmVudFRhYkluZGV4KCkgIT0gaW5keCkge1xuICAgICAgdGhpcy5jdXJyZW50VGFiSW5kZXguc2V0KGluZHgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVDb2xsYXBzZWRDaGFuZ2UoZ3JvdXA6IHN0cmluZywgY29sbGFwc2VkOiBib29sZWFuKSB7XG4gICAgdGhpcy5ncm91cENvbGxhcHNlZFN0YXRlcy5zZXQoZ3JvdXAsIGNvbGxhcHNlZCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZnVuY3Rpb25zID0ge1xuICAgIGdldERhdGFTb3VyY2VOYW1lczogdGhpcy5nZXREYXRhU291cmNlTmFtZXMuYmluZCh0aGlzKSxcbiAgfTtcblxuICBwcml2YXRlIGFzeW5jIGdldERhdGFTb3VyY2VOYW1lcygpOiBQcm9taXNlPHsgaWQ6IHN0cmluZzsgdGl0bGU6IHN0cmluZzsgdmFsdWVGaWVsZDogc3RyaW5nOyB0ZXh0RmllbGQ6IHN0cmluZyB9W10+IHtcbiAgICBjb25zdCByZXN1bHQgPSAoYXdhaXQgdGhpcy5kYXRhU291cmNlUHJvdmlkZXIuaXRlbXMoKSkubWFwKChjKSA9PiAoe1xuICAgICAgaWQ6IGMubmFtZSxcbiAgICAgIHRpdGxlOiBjLnRpdGxlLFxuICAgICAgdmFsdWVGaWVsZDogYy52YWx1ZUZpZWxkLFxuICAgICAgdGV4dEZpZWxkOiBjLnRleHRGaWVsZCxcbiAgICB9KSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiPGF4cC13aWRnZXRzLWNvbnRhaW5lciBbY29udGV4dF09XCJjb250ZXh0KClcIiAob25Db250ZXh0Q2hhbmdlZCk9XCJoYW5kbGVDb250ZXh0Q2hhbmdlKCRldmVudClcIiBbZnVuY3Rpb25zXT1cImZ1bmN0aW9uc1wiPlxuICBAaWYgKG1vZGUoKT09J2FkdmFuY2VkJykge1xuICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJheC1wYi0yXCI+XG4gICAgICA8YXgtdGFicyBsb29rPVwiZGVmYXVsdFwiIChvbkFjdGl2ZVRhYkNoYW5nZWQpPVwiaGFuZGxlVGFiQ2hhbmdlKCRldmVudClcIiBbbG9va109XCInd2l0aC1saW5lJ1wiPlxuICAgICAgICBAZm9yKCB0YWIgb2YgdGFicygpO3RyYWNrICRpbmRleCl7XG4gICAgICAgIDxheC10YWItaXRlbSBbdGV4dF09XCJ0YWIudGl0bGVcIiBba2V5XT1cIiRpbmRleC50b1N0cmluZygpXCIgW2FjdGl2ZV09XCJjdXJyZW50VGFiSW5kZXgoKSA9PT0gJGluZGV4XCI+XG4gICAgICAgIDwvYXgtdGFiLWl0ZW0+XG4gICAgICAgIH1cbiAgICAgIDwvYXgtdGFicz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleC0xIGF4LW92ZXJmbG93LWF1dG9cIj5cbiAgICAgIDxheC1jb2xsYXBzZS1ncm91cCBjbGFzcz1cImF4LWgtZml0XCIgW2xvb2tdPVwiJ2ZsYXQnXCI+XG4gICAgICAgIEBmb3IoIGdyb3VwIG9mIGdyb3VwcygpO3RyYWNrICRpbmRleCl7XG4gICAgICAgIDxheC1jb2xsYXBzZSBjbGFzcz1cIiFheC1tYi0wXCIgW2NhcHRpb25dPVwiZ3JvdXAudGl0bGVcIiBbKGlzQ29sbGFwc2VkKV09XCJncm91cC5pc0NvbGxhcHNlZFwiXG4gICAgICAgICAgKGlzQ29sbGFwc2VkQ2hhbmdlKT1cImhhbmRsZUNvbGxhcHNlZENoYW5nZShncm91cC5uYW1lLCAkZXZlbnQpXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2xcIj5cbiAgICAgICAgICAgIEBmb3IoIHAgb2YgZ3JvdXAucHJvcHM7dHJhY2sgJGluZGV4KXtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC0xIGF4LXB5LTJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC1mb250LXNlbWlib2xkXCI+e3sgcC50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgQGlmKHAuc2NoZW1hLmludGVyZmFjZSkge1xuICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGF4cC13aWRnZXQtcmVuZGVyZXIgW25vZGVdPVwicC5zY2hlbWEuaW50ZXJmYWNlXCIgW21vZGVdPVwiJ2VkaXQnXCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9heC1jb2xsYXBzZT5cbiAgICAgICAgfVxuICAgICAgPC9heC1jb2xsYXBzZS1ncm91cD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIH1cbiAgPCEtLSBTaW1wbGUtLT5cbiAgQGVsc2Uge1xuICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1wLTQgYXgtZ2FwLTRcIj5cbiAgICA8IS0tIGdyb3VwcyAtLT5cbiAgICBAZm9yKCBncm91cCBvZiBncm91cHMoKTt0cmFjayAkaW5kZXgpe1xuICAgIDwhLS0gcHJvcHMgLS0+XG4gICAgQGZvciggcCBvZiBncm91cC5wcm9wczt0cmFjayAkaW5kZXgpe1xuICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC0yXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImF4LWZvbnQtc2VtaWJvbGRcIj57eyBwLnRpdGxlIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICBAaWYocC5zY2hlbWEuaW50ZXJmYWNlKSB7XG4gICAgICA8bmctY29udGFpbmVyIGF4cC13aWRnZXQtcmVuZGVyZXIgW25vZGVdPVwicC5zY2hlbWEuaW50ZXJmYWNlXCIgW21vZGVdPVwiJ2VkaXQnXCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIH1cbiAgICB9XG4gIDwvZGl2PlxuICB9XG5cbjwvYXhwLXdpZGdldHMtY29udGFpbmVyPiJdfQ==","import { AXP_WIDGET_TOKEN, AXPValueWidgetComponent, AXPWidgetRegistryService, AXPWidgetStatus, } from '@acorex/platform/layout/builder';\nimport { Directive, inject, Injector, input, NgZone, signal, ViewContainerRef, } from '@angular/core';\nimport { cloneDeep, get, isEqual, isNil, merge, set } from 'lodash-es';\nimport { debounceTime, distinctUntilChanged, filter, first } from 'rxjs';\nimport { AXPDesignerService } from './designer.service';\nimport * as i0 from \"@angular/core\";\nexport class AXPWidgetDesignerRendererDirective {\n /**\n * @ignore\n */\n constructor() {\n this.mergedOptions = signal({});\n this.injector = inject(Injector);\n this.widgetRegistery = inject(AXPWidgetRegistryService);\n this.zone = inject(NgZone);\n this.isLoading = signal(true);\n this.service = inject(AXPDesignerService);\n this.viewContainerRef = inject(ViewContainerRef);\n this.parentNode = input();\n this.index = input();\n this.locked = input(false);\n this.mode = input.required();\n this.node = input.required();\n this.hostElement = () => this.instance?.host;\n this.getId = (w) => get(w, '__meta__.id');\n this.isCurrentWidget = (w) => this.getId(w) == this.getId(this.node());\n this.subs = [];\n this.subs[0] = this.service.onUpdate\n .pipe(\n //debounceTime(time),\n distinctUntilChanged((p, c) => this.getId(p.widget) == this.getId(c.widget) && isEqual(p.values?.options, c.values?.options)), filter((c) => this.isCurrentWidget(c.widget) && !this.locked()))\n .subscribe((c) => {\n this.applyOptions(c.values?.options);\n });\n //\n this.subs[1] = this.service.onSelected\n .pipe(distinctUntilChanged((p, c) => this.getId(p.widget) == this.getId(c.widget)))\n .subscribe((c) => {\n this.zone.runOutsideAngular(() => {\n if (this.isCurrentWidget(c.widget) && !this.locked()) {\n this.applySelectedStyle();\n }\n else {\n this.removeSelectedStyle();\n }\n });\n });\n //\n this.subs[2] = this.service.onFocused\n .pipe(distinctUntilChanged((p, c) => !isNil(p.widget) && !isNil(c.widget) && this.getId(p.widget) == this.getId(c.widget)))\n .subscribe((c) => {\n if (c.widget && this.isCurrentWidget(c.widget)) {\n this.addOverlay();\n }\n else {\n this.removeOverlay();\n }\n });\n //\n this.subs[3] = this.service.onRefresh\n .pipe(debounceTime(200), filter((c) => this.isCurrentWidget(c.widget)))\n .subscribe((c) => {\n this.instance?.setChildren(this.node().children ?? []);\n });\n //\n }\n // Detect input changes\n ngOnChanges(changes) {\n if (changes['mode'] || changes['node']) {\n this.loadComponent();\n }\n }\n ngOnDestroy() {\n this.subs.forEach((s) => {\n s.unsubscribe();\n });\n }\n async loadComponent() {\n this.viewContainerRef.clear();\n this.isLoading.set(true);\n this.config = this.widgetRegistery.resolve(this.node().type);\n //\n const props = [...(this.config?.properties ?? []), ...(this.config?.components[this.mode()]?.properties ?? [])]\n ?.filter((c) => c.schema.defaultValue != null)\n .map((c) => ({ [c.name]: cloneDeep(c.schema.defaultValue) }))\n .reduce((acc, curr) => {\n return { ...acc, ...curr };\n }, {});\n //\n this.mergedOptions.set(merge(props, this.node().options) || {});\n this.preprocessAndInitialOptions(cloneDeep(this.node().options));\n const tokenValue = {\n node: this.node(),\n options: this.mergedOptions(),\n config: this.config,\n defaultValue: cloneDeep(this.node().defaultValue),\n };\n const token = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: AXP_WIDGET_TOKEN,\n useValue: tokenValue,\n },\n ],\n });\n var com = await this.config?.components[this.mode()]?.component();\n this.instance = this.viewContainerRef.createComponent(com, { injector: token }).instance;\n this.instance.locked = this.locked();\n this.instance.parent = this.parentNode();\n this.instance.index = this.index();\n this.instance.mode = this.mode();\n //\n this.instance.onStatusChanged\n .pipe(filter((c) => c == AXPWidgetStatus.Rendered), first())\n .subscribe(() => {\n const host = this.hostElement();\n set(host, '__meta__.renderer', this);\n set(host, '__meta__.instance', this.instance);\n host.classList.add('axp-widget-host');\n if (this.mode() == 'designer') {\n if (!this.locked()) {\n host.addEventListener('mouseover', (e) => {\n e.stopPropagation();\n this.addOverlay();\n this.focus();\n });\n host.addEventListener('mouseleave', (e) => {\n e.stopPropagation();\n this.removeOverlay();\n this.blur();\n });\n host.addEventListener('click', (e) => {\n e.stopPropagation();\n this.applySelectedStyle();\n this.service.select({ widget: this.node() });\n });\n this.service.register({\n config: this.config,\n id: get(this.node(), '__meta__.id'),\n instance: this.instance,\n widget: this.node(),\n });\n }\n }\n });\n }\n select() {\n if (this.locked())\n return;\n //\n this.service.select({ widget: this.node() });\n this.applySelectedStyle();\n }\n focus() {\n if (this.locked())\n return;\n //\n this.service.focus({ widget: this.node() });\n }\n blur() {\n if (this.locked())\n return;\n //\n this.service.focus({ widget: null });\n }\n applySelectedStyle() {\n if (this.locked())\n return;\n //\n this.hostElement()?.classList.add('axp-state-selected');\n this.hostElement()?.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n removeSelectedStyle() {\n this.hostElement()?.classList.remove('axp-state-selected');\n }\n addOverlay() {\n if (this.locked())\n return;\n //\n this.zone.runOutsideAngular(() => {\n if (this.hostElement()) {\n this.hostElement()?.classList.add('axp-state-hover');\n //\n if (this.hostElement().querySelector('.axp-widget-overlay') || this.config?.type == 'container') {\n return;\n }\n this.overlay = document.createElement('div');\n this.overlay.classList.add('axp-widget-overlay');\n this.overlay.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n this.select();\n });\n this.overlay.addEventListener('mouseleave', (e) => {\n e.preventDefault();\n e.stopPropagation();\n this.blur();\n });\n this.hostElement().appendChild(this.overlay);\n }\n });\n }\n removeOverlay() {\n this.zone.runOutsideAngular(() => {\n if (this.hostElement()) {\n this.hostElement()?.classList.remove('axp-state-hover');\n //\n this.overlay?.remove();\n }\n });\n }\n preprocessAndInitialOptions(obj, pathPrefix = '') {\n if (!obj)\n return;\n //\n Object.entries(obj).forEach(([key, value]) => {\n const currentPath = pathPrefix ? `${pathPrefix}.${key}` : key;\n this.mergedOptions.update((currentOptions) => {\n return set(currentOptions, currentPath, value);\n });\n });\n }\n applyOptions(values) {\n if (this.instance instanceof AXPValueWidgetComponent && this.node().defaultValue != null) {\n this.instance.setValue(cloneDeep(this.node().defaultValue));\n }\n this.mergedOptions.update((currentOptions) => {\n return merge(currentOptions, values);\n });\n this.instance?.setOptions(this.mergedOptions());\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPWidgetDesignerRendererDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.0.4\", type: AXPWidgetDesignerRendererDirective, isStandalone: true, selector: \"[axp-widget-designer-renderer]\", inputs: { parentNode: { classPropertyName: \"parentNode\", publicName: \"parentNode\", isSignal: true, isRequired: false, transformFunction: null }, index: { classPropertyName: \"index\", publicName: \"index\", isSignal: true, isRequired: false, transformFunction: null }, locked: { classPropertyName: \"locked\", publicName: \"locked\", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: \"mode\", publicName: \"mode\", isSignal: true, isRequired: true, transformFunction: null }, node: { classPropertyName: \"node\", publicName: \"node\", isSignal: true, isRequired: true, transformFunction: null } }, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPWidgetDesignerRendererDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axp-widget-designer-renderer]',\n standalone: true,\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWRlc2lnbmVyLXJlbmRlcmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2Rlc2lnbmVyL3NyYy9saWIvZGVzaWduZXIvc2hhcmVkL3dpZGdldC1kZXNpZ25lci1yZW5kZXJlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUdoQix1QkFBdUIsRUFJdkIsd0JBQXdCLEVBRXhCLGVBQWUsR0FDaEIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFHTixNQUFNLEVBRU4sZ0JBQWdCLEdBRWpCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQU14RCxNQUFNLE9BQU8sa0NBQWtDO0lBNkI3Qzs7T0FFRztJQUNIO1FBL0JVLGtCQUFhLEdBQXdCLE1BQU0sQ0FBTSxFQUFFLENBQUMsQ0FBQztRQUV2RCxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFCLG9CQUFlLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDbkQsU0FBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV0QixjQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBSzNCLFlBQU8sR0FBRyxNQUFN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dENvbXBvbmVudCxcbiAgQVhQTGF5b3V0V2lkZ2V0Q29tcG9uZW50LFxuICBBWFBWYWx1ZVdpZGdldENvbXBvbmVudCxcbiAgQVhQV2lkZ2V0Q29uZmlnLFxuICBBWFBXaWRnZXROb2RlLFxuICBBWFBXaWRnZXROb2RlVG9rZW4sXG4gIEFYUFdpZGdldFJlZ2lzdHJ5U2VydmljZSxcbiAgQVhQV2lkZ2V0UmVuZGVyTW9kZSxcbiAgQVhQV2lkZ2V0U3RhdHVzLFxufSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgaW5qZWN0LFxuICBJbmplY3RvcixcbiAgaW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIHNpZ25hbCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgV3JpdGFibGVTaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBnZXQsIGlzRXF1YWwsIGlzTmlsLCBtZXJnZSwgc2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgZmlyc3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhQRGVzaWduZXJTZXJ2aWNlIH0gZnJvbSAnLi9kZXNpZ25lci5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2F4cC13aWRnZXQtZGVzaWduZXItcmVuZGVyZXJdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV2lkZ2V0RGVzaWduZXJSZW5kZXJlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgcHJvdGVjdGVkIG1lcmdlZE9wdGlvbnM6IFdyaXRhYmxlU2lnbmFsPGFueT4gPSBzaWduYWw8YW55Pih7fSk7XG5cbiAgcHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHByb3RlY3RlZCB3aWRnZXRSZWdpc3RlcnkgPSBpbmplY3QoQVhQV2lkZ2V0UmVnaXN0cnlTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHpvbmUgPSBpbmplY3QoTmdab25lKTtcblxuICBwcm90ZWN0ZWQgaXNMb2FkaW5nID0gc2lnbmFsKHRydWUpO1xuXG4gIHByaXZhdGUgaW5zdGFuY2UhOiBBWFBCYXNlV2lkZ2V0Q29tcG9uZW50O1xuICBwcml2YXRlIGNvbmZpZz86IEFYUFdpZGdldENvbmZpZyB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIHNlcnZpY2UgPSBpbmplY3QoQVhQRGVzaWduZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuXG4gIHBhcmVudE5vZGUgPSBpbnB1dDxBWFBMYXlvdXRXaWRnZXRDb21wb25lbnQgfCBudWxsPigpO1xuXG4gIGluZGV4ID0gaW5wdXQ8bnVtYmVyIHwgbnVsbD4oKTtcbiAgbG9ja2VkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIG1vZGUgPSBpbnB1dC5yZXF1aXJlZDxBWFBXaWRnZXRSZW5kZXJNb2RlPigpO1xuICBub2RlID0gaW5wdXQucmVxdWlyZWQ8QVhQV2lkZ2V0Tm9kZT4oKTtcblxuICBwcml2YXRlIGhvc3RFbGVtZW50ID0gKCkgPT4gdGhpcy5pbnN0YW5jZT8uaG9zdCBhcyBIVE1MRGl2RWxlbWVudDtcbiAgcHJpdmF0ZSBnZXRJZCA9ICh3OiBBWFBXaWRnZXROb2RlKSA9PiBnZXQodywgJ19fbWV0YV9fLmlkJyk7XG4gIHByaXZhdGUgaXNDdXJyZW50V2lkZ2V0ID0gKHc6IEFYUFdpZGdldE5vZGUpID0+IHRoaXMuZ2V0SWQodykgPT0gdGhpcy5nZXRJZCh0aGlzLm5vZGUoKSk7XG5cbiAgcHJpdmF0ZSBzdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnN1YnNbMF0gPSB0aGlzLnNlcnZpY2Uub25VcGRhdGVcbiAgICAgIC5waXBlKFxuICAgICAgICAvL2RlYm91bmNlVGltZSh0aW1lKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAgICAgKHAsIGMpID0+IHRoaXMuZ2V0SWQocC53aWRnZXQpID09IHRoaXMuZ2V0SWQoYy53aWRnZXQpICYmIGlzRXF1YWwocC52YWx1ZXM/Lm9wdGlvbnMsIGMudmFsdWVzPy5vcHRpb25zKSxcbiAgICAgICAgKSxcbiAgICAgICAgZmlsdGVyKChjKSA9PiB0aGlzLmlzQ3VycmVudFdpZGdldChjLndpZGdldCkgJiYgIXRoaXMubG9ja2VkKCkpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgICB0aGlzLmFwcGx5T3B0aW9ucyhjLnZhbHVlcz8ub3B0aW9ucyk7XG4gICAgICB9KTtcbiAgICAvL1xuICAgIHRoaXMuc3Vic1sxXSA9IHRoaXMuc2VydmljZS5vblNlbGVjdGVkXG4gICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgocCwgYykgPT4gdGhpcy5nZXRJZChwLndpZGdldCkgPT0gdGhpcy5nZXRJZChjLndpZGdldCkpKVxuICAgICAgLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmlzQ3VycmVudFdpZGdldChjLndpZGdldCkgJiYgIXRoaXMubG9ja2VkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwbHlTZWxlY3RlZFN0eWxlKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlU2VsZWN0ZWRTdHlsZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAvL1xuICAgIHRoaXMuc3Vic1syXSA9IHRoaXMuc2VydmljZS5vbkZvY3VzZWRcbiAgICAgIC5waXBlKFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcbiAgICAgICAgICAocCwgYykgPT4gIWlzTmlsKHAud2lkZ2V0KSAmJiAhaXNOaWwoYy53aWRnZXQpICYmIHRoaXMuZ2V0SWQocC53aWRnZXQpID09IHRoaXMuZ2V0SWQoYy53aWRnZXQpLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgICBpZiAoYy53aWRnZXQgJiYgdGhpcy5pc0N1cnJlbnRXaWRnZXQoYy53aWRnZXQpKSB7XG4gICAgICAgICAgdGhpcy5hZGRPdmVybGF5KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZW1vdmVPdmVybGF5KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIC8vXG4gICAgdGhpcy5zdWJzWzNdID0gdGhpcy5zZXJ2aWNlLm9uUmVmcmVzaFxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxuICAgICAgICBmaWx0ZXIoKGMpID0+IHRoaXMuaXNDdXJyZW50V2lkZ2V0KGMud2lkZ2V0KSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICAgIHRoaXMuaW5zdGFuY2U/LnNldENoaWxkcmVuKHRoaXMubm9kZSgpLmNoaWxkcmVuID8/IFtdKTtcbiAgICAgIH0pO1xuICAgIC8vXG4gIH1cblxuICAvLyBEZXRlY3QgaW5wdXQgY2hhbmdlc1xuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ21vZGUnXSB8fCBjaGFuZ2VzWydub2RlJ10pIHtcbiAgICAgIHRoaXMubG9hZENvbXBvbmVudCgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vicy5mb3JFYWNoKChzKSA9PiB7XG4gICAgICBzLnVuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRDb21wb25lbnQoKSB7XG4gICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuY29uZmlnID0gdGhpcy53aWRnZXRSZWdpc3RlcnkucmVzb2x2ZSh0aGlzLm5vZGUoKS50eXBlKTtcbiAgICAvL1xuICAgIGNvbnN0IHByb3BzID0gWy4uLih0aGlzLmNvbmZpZz8ucHJvcGVydGllcyA/PyBbXSksIC4uLih0aGlzLmNvbmZpZz8uY29tcG9uZW50c1t0aGlzLm1vZGUoKV0/LnByb3BlcnRpZXMgPz8gW10pXVxuICAgICAgPy5maWx0ZXIoKGMpID0+IGMuc2NoZW1hLmRlZmF1bHRWYWx1ZSAhPSBudWxsKVxuICAgICAgLm1hcCgoYykgPT4gKHsgW2MubmFtZV06IGNsb25lRGVlcChjLnNjaGVtYS5kZWZhdWx0VmFsdWUpIH0pKVxuICAgICAgLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLmFjYywgLi4uY3VyciB9O1xuICAgICAgfSwge30pO1xuICAgIC8vXG4gICAgdGhpcy5tZXJnZWRPcHRpb25zLnNldChtZXJnZShwcm9wcywgdGhpcy5ub2RlKCkub3B0aW9ucykgfHwge30pO1xuXG4gICAgdGhpcy5wcmVwcm9jZXNzQW5kSW5pdGlhbE9wdGlvbnMoY2xvbmVEZWVwKHRoaXMubm9kZSgpLm9wdGlvbnMpKTtcblxuICAgIGNvbnN0IHRva2VuVmFsdWUgPSB7XG4gICAgICBub2RlOiB0aGlzLm5vZGUoKSxcbiAgICAgIG9wdGlvbnM6IHRoaXMubWVyZ2VkT3B0aW9ucygpLFxuICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogY2xvbmVEZWVwKHRoaXMubm9kZSgpLmRlZmF1bHRWYWx1ZSksXG4gICAgfSBhcyBBWFBXaWRnZXROb2RlVG9rZW47XG5cbiAgICBjb25zdCB0b2tlbiA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IEFYUF9XSURHRVRfVE9LRU4sXG4gICAgICAgICAgdXNlVmFsdWU6IHRva2VuVmFsdWUsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICAgIHZhciBjb20gPSBhd2FpdCB0aGlzLmNvbmZpZz8uY29tcG9uZW50c1t0aGlzLm1vZGUoKV0/LmNvbXBvbmVudCgpO1xuICAgIHRoaXMuaW5zdGFuY2UgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50PEFYUEJhc2VXaWRnZXRDb21wb25lbnQ+KGNvbSwgeyBpbmplY3RvcjogdG9rZW4gfSkuaW5zdGFuY2U7XG4gICAgdGhpcy5pbnN0YW5jZS5sb2NrZWQgPSB0aGlzLmxvY2tlZCgpO1xuICAgIHRoaXMuaW5zdGFuY2UucGFyZW50ID0gdGhpcy5wYXJlbnROb2RlKCk7XG4gICAgdGhpcy5pbnN0YW5jZS5pbmRleCA9IHRoaXMuaW5kZXgoKTtcbiAgICB0aGlzLmluc3RhbmNlLm1vZGUgPSB0aGlzLm1vZGUoKTtcbiAgICAvL1xuICAgIHRoaXMuaW5zdGFuY2Uub25TdGF0dXNDaGFuZ2VkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChjKSA9PiBjID09IEFYUFdpZGdldFN0YXR1cy5SZW5kZXJlZCksXG4gICAgICAgIGZpcnN0KCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3QgaG9zdCA9IHRoaXMuaG9zdEVsZW1lbnQoKTtcbiAgICAgICAgc2V0KGhvc3QsICdfX21ldGFfXy5yZW5kZXJlcicsIHRoaXMpO1xuICAgICAgICBzZXQoaG9zdCwgJ19fbWV0YV9fLmluc3RhbmNlJywgdGhpcy5pbnN0YW5jZSk7XG4gICAgICAgIGhvc3QuY2xhc3NMaXN0LmFkZCgnYXhwLXdpZGdldC1ob3N0Jyk7XG4gICAgICAgIGlmICh0aGlzLm1vZGUoKSA9PSAnZGVzaWduZXInKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmxvY2tlZCgpKSB7XG4gICAgICAgICAgICBob3N0LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIChlKSA9PiB7XG4gICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgIHRoaXMuYWRkT3ZlcmxheSgpO1xuICAgICAgICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGhvc3QuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIChlKSA9PiB7XG4gICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgIHRoaXMucmVtb3ZlT3ZlcmxheSgpO1xuICAgICAgICAgICAgICB0aGlzLmJsdXIoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBob3N0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcbiAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgdGhpcy5hcHBseVNlbGVjdGVkU3R5bGUoKTtcbiAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnNlbGVjdCh7IHdpZGdldDogdGhpcy5ub2RlKCkgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5yZWdpc3Rlcih7XG4gICAgICAgICAgICAgIGNvbmZpZzogdGhpcy5jb25maWchLFxuICAgICAgICAgICAgICBpZDogZ2V0KHRoaXMubm9kZSgpLCAnX19tZXRhX18uaWQnKSBhcyBhbnkgYXMgbnVtYmVyLFxuICAgICAgICAgICAgICBpbnN0YW5jZTogdGhpcy5pbnN0YW5jZSxcbiAgICAgICAgICAgICAgd2lkZ2V0OiB0aGlzLm5vZGUoKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG92ZXJsYXk6IEhUTUxFbGVtZW50IHwgbnVsbDtcblxuICBwdWJsaWMgc2VsZWN0KCkge1xuICAgIGlmICh0aGlzLmxvY2tlZCgpKSByZXR1cm47XG4gICAgLy9cbiAgICB0aGlzLnNlcnZpY2Uuc2VsZWN0KHsgd2lkZ2V0OiB0aGlzLm5vZGUoKSB9KTtcbiAgICB0aGlzLmFwcGx5U2VsZWN0ZWRTdHlsZSgpO1xuICB9XG5cbiAgcHVibGljIGZvY3VzKCkge1xuICAgIGlmICh0aGlzLmxvY2tlZCgpKSByZXR1cm47XG4gICAgLy9cbiAgICB0aGlzLnNlcnZpY2UuZm9jdXMoeyB3aWRnZXQ6IHRoaXMubm9kZSgpIH0pO1xuICB9XG5cbiAgcHVibGljIGJsdXIoKSB7XG4gICAgaWYgKHRoaXMubG9ja2VkKCkpIHJldHVybjtcbiAgICAvL1xuICAgIHRoaXMuc2VydmljZS5mb2N1cyh7IHdpZGdldDogbnVsbCB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlTZWxlY3RlZFN0eWxlKCkge1xuICAgIGlmICh0aGlzLmxvY2tlZCgpKSByZXR1cm47XG4gICAgLy9cbiAgICB0aGlzLmhvc3RFbGVtZW50KCk/LmNsYXNzTGlzdC5hZGQoJ2F4cC1zdGF0ZS1zZWxlY3RlZCcpO1xuICAgIHRoaXMuaG9zdEVsZW1lbnQoKT8uc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnbmVhcmVzdCcgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZVNlbGVjdGVkU3R5bGUoKSB7XG4gICAgdGhpcy5ob3N0RWxlbWVudCgpPy5jbGFzc0xpc3QucmVtb3ZlKCdheHAtc3RhdGUtc2VsZWN0ZWQnKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkT3ZlcmxheSgpIHtcbiAgICBpZiAodGhpcy5sb2NrZWQoKSkgcmV0dXJuO1xuICAgIC8vXG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmhvc3RFbGVtZW50KCkpIHtcbiAgICAgICAgdGhpcy5ob3N0RWxlbWVudCgpPy5jbGFzc0xpc3QuYWRkKCdheHAtc3RhdGUtaG92ZXInKTtcbiAgICAgICAgLy9cbiAgICAgICAgaWYgKHRoaXMuaG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yKCcuYXhwLXdpZGdldC1vdmVybGF5JykgfHwgdGhpcy5jb25maWc/LnR5cGUgPT0gJ2NvbnRhaW5lcicpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vdmVybGF5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHRoaXMub3ZlcmxheS5jbGFzc0xpc3QuYWRkKCdheHAtd2lkZ2V0LW92ZXJsYXknKTtcbiAgICAgICAgdGhpcy5vdmVybGF5LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5vdmVybGF5LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCAoZSkgPT4ge1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRoaXMuYmx1cigpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5ob3N0RWxlbWVudCgpLmFwcGVuZENoaWxkKHRoaXMub3ZlcmxheSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZU92ZXJsYXkoKSB7XG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmhvc3RFbGVtZW50KCkpIHtcbiAgICAgICAgdGhpcy5ob3N0RWxlbWVudCgpPy5jbGFzc0xpc3QucmVtb3ZlKCdheHAtc3RhdGUtaG92ZXInKTtcbiAgICAgICAgLy9cbiAgICAgICAgdGhpcy5vdmVybGF5Py5yZW1vdmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlcHJvY2Vzc0FuZEluaXRpYWxPcHRpb25zKG9iajogYW55LCBwYXRoUHJlZml4OiBzdHJpbmcgPSAnJyk6IHZvaWQge1xuICAgIGlmICghb2JqKSByZXR1cm47XG4gICAgLy9cbiAgICBPYmplY3QuZW50cmllcyhvYmopLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudFBhdGggPSBwYXRoUHJlZml4ID8gYCR7cGF0aFByZWZpeH0uJHtrZXl9YCA6IGtleTtcbiAgICAgIHRoaXMubWVyZ2VkT3B0aW9ucy51cGRhdGUoKGN1cnJlbnRPcHRpb25zKSA9PiB7XG4gICAgICAgIHJldHVybiBzZXQoY3VycmVudE9wdGlvbnMsIGN1cnJlbnRQYXRoLCB2YWx1ZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlPcHRpb25zKHZhbHVlczogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5zdGFuY2UgaW5zdGFuY2VvZiBBWFBWYWx1ZVdpZGdldENvbXBvbmVudCAmJiB0aGlzLm5vZGUoKS5kZWZhdWx0VmFsdWUgIT0gbnVsbCkge1xuICAgICAgdGhpcy5pbnN0YW5jZS5zZXRWYWx1ZShjbG9uZURlZXAodGhpcy5ub2RlKCkuZGVmYXVsdFZhbHVlKSk7XG4gICAgfVxuICAgIHRoaXMubWVyZ2VkT3B0aW9ucy51cGRhdGUoKGN1cnJlbnRPcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gbWVyZ2UoY3VycmVudE9wdGlvbnMsIHZhbHVlcyk7XG4gICAgfSk7XG4gICAgdGhpcy5pbnN0YW5jZT8uc2V0T3B0aW9ucyh0aGlzLm1lcmdlZE9wdGlvbnMoKSk7XG4gIH1cbn1cbiJdfQ==","import { AXContextMenuComponent, AXMenuModule, } from '@acorex/components/menu';\nimport { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\nimport { ChangeDetectionStrategy, Component, computed, effect, ElementRef, HostBinding, inject, ViewChild, ViewEncapsulation, } from '@angular/core';\nimport { get } from 'lodash-es';\nimport { AXPDesignerService } from '../../shared/designer.service';\nimport { AXPWidgetDesignerRendererDirective } from '../../shared/widget-designer-renderer.directive';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/platform/layout/builder\";\nimport * as i2 from \"@acorex/components/menu\";\nexport class AXPDesignerBoardComponent {\n // Unified method to extract media queries and create a custom class\n applyResponsiveStyles(breakpoint) {\n const minWidth = get(this.breakpointMap, breakpoint);\n const mediaRules = [];\n // Loop through all the stylesheets\n for (const sheet of Array.from(document.styleSheets)) {\n try {\n // Loop through CSS rules\n for (const rule of Array.from(sheet.cssRules)) {\n // Check if the rule is a CSSMediaRule\n if (rule instanceof CSSMediaRule && rule.media.mediaText.includes(`min-width: ${minWidth}px`)) {\n // Loop through the media rule's CSS rules\n for (const subRule of Array.from(rule.cssRules)) {\n mediaRules.push(subRule.cssText);\n }\n }\n }\n }\n catch (e) {\n console.error('Error accessing stylesheet:', e);\n }\n }\n // Create a dynamic class for the media queries\n this.createCustomClass(`axp-preview-${breakpoint}`, mediaRules, breakpoint);\n }\n createCustomClass(className, styles, breakpoint) {\n const styleSheet = document.createElement('style');\n styleSheet.setAttribute('data-screen', breakpoint);\n // Construct a pure CSS string, dynamically replacing the breakpoint prefix\n let styleString = '';\n styles.forEach((style) => {\n // Replace any prefixed classes like 'lg:' or 'md:' dynamically\n const dynamicPrefix = new RegExp(`\\\\.${breakpoint}\\\\\\\\:`, 'g');\n styleString += `.${className} ${style.replace(dynamicPrefix, '.')}`; // Replace the breakpoint prefix\n });\n styleSheet.innerText = styleString;\n this.removeCustomClass();\n this.elementRef.nativeElement.appendChild(styleSheet);\n }\n removeCustomClass() {\n this.elementRef.nativeElement.querySelectorAll('style').forEach((s) => s.remove());\n }\n /**\n * @ignore\n */\n constructor() {\n this.context = {};\n this.elementRef = inject((ElementRef));\n this.breakpointMap = {\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n xxl: 1536,\n };\n this.service = inject(AXPDesignerService);\n this.width = computed(() => {\n switch (this.service.size()) {\n case 'sm':\n return '340px';\n case 'md':\n case 'lg':\n return '768px';\n default:\n return '100%';\n }\n });\n this.ef = effect(() => {\n this.removeCustomClass();\n if (this.service.size() != 'xl') {\n this.applyResponsiveStyles(this.service.size());\n }\n });\n this.service.onRefresh.subscribe(() => {\n this.contextMenu?.refresh();\n });\n }\n handleContextMenuOpening(e) {\n const renderer = get(e.targetElement, '__meta__.renderer');\n const instance = get(e.targetElement, '__meta__.instance');\n if (!renderer || !instance) {\n e.canceled = true;\n return;\n }\n renderer.select();\n // Fetch context menu items for the current instance\n try {\n const items = this.service.getContextMenuItems(instance, true);\n if (items.length) {\n e.items.push(...items);\n }\n else {\n e.canceled = true;\n }\n }\n catch (error) {\n console.error('Failed to get context menu items:', error);\n e.canceled = true;\n }\n // Recursively bind instance data to all items\n this.bindInstanceToItems(e.items, instance);\n // Traverse through parents and add their menu items directly to the root level\n this.addParentsToRootMenu(instance, e.items);\n }\n addParentsToRootMenu(instance, items) {\n let parent = instance?.parent;\n const parentItems = [];\n // Traverse up the parent chain, adding each parent to the \"Parents\" menu\n while (parent) {\n try {\n const widget = parent;\n const parentContextItems = this.service.getContextMenuItems(widget);\n // Create a new menu item for this parent\n const parentMenuItem = {\n text: parent.config.title,\n icon: parent.config.icon,\n items: [\n {\n text: 'Select',\n name: 'select',\n break: true,\n icon: 'fa-solid fa-arrow-pointer',\n },\n ...parentContextItems,\n ],\n };\n // Recursively bind instance data to all items\n this.bindInstanceToItems(parentMenuItem.items ?? [], widget);\n // Add the parent menu item to the parentItems array\n parentItems.push(parentMenuItem);\n }\n catch (error) {\n console.error('Failed to get parent context menu items:', error);\n }\n // Move to the next parent in the chain\n parent = parent?.parent;\n }\n // If there are any parent items, add them under a \"Parents\" group\n if (parentItems.length > 0) {\n items[items.length - 1].break = true;\n items.push({\n text: 'Parents',\n icon: 'fa-solid fa-turn-up', // Icon for the \"Parents\" group\n items: parentItems, // Add all parent items here\n });\n }\n }\n async handleContextMenuItemClick(e) {\n if (e.item.name) {\n const instance = get(e.item.data, \"instance\");\n await this.service.executeCommand({ instance, name: e.item.name });\n }\n }\n bindInstanceToItems(items, instance) {\n items.forEach(item => {\n // Ensure each item gets the correct instance\n item.data = { ...(item.data ?? {}), instance };\n // If the item has sub-items, bind instance to them recursively\n if (item.items) {\n this.bindInstanceToItems(item.items, instance);\n }\n });\n }\n get __style() {\n const cls = {};\n cls[`width`] = this.width();\n cls[`max-width`] = '1280px';\n return cls;\n }\n get __class() {\n const cls = {};\n cls[`axp-designer-board`] = true;\n cls[`axp-state-design`] = true;\n cls['ax-h-full'] = true;\n cls['ax-overflow-auto'] = true;\n cls[`axp-preview-${this.service.size()}`] = true;\n return cls;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerBoardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.4\", type: AXPDesignerBoardComponent, isStandalone: true, selector: \"axp-designer-board\", host: { properties: { \"style\": \"this.__style\", \"class\": \"this.__class\" } }, viewQueries: [{ propertyName: \"contextMenu\", first: true, predicate: [\"contextMenu\"], descendants: true }], ngImport: i0, template: \"<axp-widgets-container [context]=\\\"context\\\">\\n <ng-container axp-widget-designer-renderer [node]=\\\"service.currentPage()\\\" [mode]=\\\"'designer'\\\"></ng-container>\\n</axp-widgets-container>\\n\\n<ax-context-menu class=\\\"ax-dark\\\" #contextMenu [target]=\\\"'.axp-widget-host'\\\" [orientation]=\\\"'vertical'\\\"\\n [closeOn]=\\\"'leave'\\\" (onOpening)=\\\"handleContextMenuOpening($event)\\\" (onItemClick)=\\\"handleContextMenuItemClick($event)\\\">\\n</ax-context-menu>\", dependencies: [{ kind: \"ngmodule\", type: AXPLayoutBuilderModule }, { kind: \"component\", type: i1.AXPWidgetContainerComponent, selector: \"axp-widgets-container\", inputs: [\"context\", \"functions\"], outputs: [\"onContextChanged\"] }, { kind: \"directive\", type: AXPWidgetDesignerRendererDirective, selector: \"[axp-widget-designer-renderer]\", inputs: [\"parentNode\", \"index\", \"locked\", \"mode\", \"node\"] }, { kind: \"ngmodule\", type: AXMenuModule }, { kind: \"component\", type: i2.AXContextMenuComponent, selector: \"ax-context-menu\", inputs: [\"orientation\", \"openOn\", \"closeOn\", \"items\", \"target\"], outputs: [\"onItemClick\", \"onOpening\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerBoardComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-designer-board', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXPLayoutBuilderModule, AXPWidgetDesignerRendererDirective, AXMenuModule], template: \"<axp-widgets-container [context]=\\\"context\\\">\\n <ng-container axp-widget-designer-renderer [node]=\\\"service.currentPage()\\\" [mode]=\\\"'designer'\\\"></ng-container>\\n</axp-widgets-container>\\n\\n<ax-context-menu class=\\\"ax-dark\\\" #contextMenu [target]=\\\"'.axp-widget-host'\\\" [orientation]=\\\"'vertical'\\\"\\n [closeOn]=\\\"'leave'\\\" (onOpening)=\\\"handleContextMenuOpening($event)\\\" (onItemClick)=\\\"handleContextMenuItemClick($event)\\\">\\n</ax-context-menu>\" }]\n }], ctorParameters: () => [], propDecorators: { contextMenu: [{\n type: ViewChild,\n args: ['contextMenu']\n }], __style: [{\n type: HostBinding,\n args: ['style']\n }], __class: [{\n type: HostBinding,\n args: ['class']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZGVzaWduZXIvc3JjL2xpYi9kZXNpZ25lci9jb21wb25lbnRzL2JvYXJkL2JvYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2Rlc2lnbmVyL3NyYy9saWIvZGVzaWduZXIvY29tcG9uZW50cy9ib2FyZC9ib2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsc0JBQXNCLEVBSXRCLFlBQVksR0FDYixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxzQkFBc0IsRUFBMkIsTUFBTSxpQ0FBaUMsQ0FBQztBQUVsRyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEdBQUcsRUFBTyxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7OztBQVdyRyxNQUFNLE9BQU8seUJBQXlCO0lBZXBDLG9FQUFvRTtJQUNwRSxxQkFBcUIsQ0FBQyxVQUFrQjtRQUN0QyxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQVcsQ0FBQztRQUMvRCxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFFdEIsbUNBQW1DO1FBQ25DLEtBQUssTUFBTSxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksQ0FB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QUUsWUFBWTs7MkZBRXZFLHlCQUF5QjtrQkFQckMsU0FBUzsrQkFDRSxvQkFBb0IsaUJBRWYsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLHNCQUFzQixFQUFFLGtDQUFrQyxFQUFFLFlBQVksQ0FBQzt3REFJekUsV0FBVztzQkFEcEIsU0FBUzt1QkFBQyxhQUFhO2dCQWtNWixPQUFPO3NCQURsQixXQUFXO3VCQUFDLE9BQU87Z0JBU1IsT0FBTztzQkFEbEIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQVhDb250ZXh0TWVudUNvbXBvbmVudCxcbiAgQVhDb250ZXh0TWVudUl0ZW1zQ2xpY2tFdmVudCxcbiAgQVhDb250ZXh0TWVudU9wZW5pbmdFdmVudCxcbiAgQVhNZW51SXRlbSxcbiAgQVhNZW51TW9kdWxlLFxufSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbWVudSc7XG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyTW9kdWxlLCBBWFBWYWx1ZVdpZGdldENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgaW5qZWN0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldCwgc2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFYUERlc2lnbmVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9kZXNpZ25lci5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUFdpZGdldERlc2lnbmVyUmVuZGVyZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9zaGFyZWQvd2lkZ2V0LWRlc2lnbmVyLXJlbmRlcmVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBWFBEZXNpZ25lcldpZGdldENvbXBvbmVudCB9IGZyb20gJy4uLy4uL3NoYXJlZC9kZXNpZ25lci50eXBlcyc7XG5pbXBvcnQgeyBBWFBfREVTSUdORVJfU0VMRUNUX1dJREdFVF9NRU5VIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2dlbmVyaWMtY29tbWFuZHMudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheHAtZGVzaWduZXItYm9hcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vYm9hcmQuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0FYUExheW91dEJ1aWxkZXJNb2R1bGUsIEFYUFdpZGdldERlc2lnbmVyUmVuZGVyZXJEaXJlY3RpdmUsIEFYTWVudU1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgQVhQRGVzaWduZXJCb2FyZENvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ2NvbnRleHRNZW51JylcbiAgcHJvdGVjdGVkIGNvbnRleHRNZW51OiBBWENvbnRleHRNZW51Q29tcG9uZW50O1xuXG4gIHByb3RlY3RlZCBjb250ZXh0OiBhbnkgPSB7fTtcbiAgcHJpdmF0ZSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+KSBhcyBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICBwcml2YXRlIGJyZWFrcG9pbnRNYXAgPSB7XG4gICAgc206IDY0MCxcbiAgICBtZDogNzY4LFxuICAgIGxnOiAxMDI0LFxuICAgIHhsOiAxMjgwLFxuICAgIHh4bDogMTUzNixcbiAgfTtcblxuICAvLyBVbmlmaWVkIG1ldGhvZCB0byBleHRyYWN0IG1lZGlhIHF1ZXJpZXMgYW5kIGNyZWF0ZSBhIGN1c3RvbSBjbGFzc1xuICBhcHBseVJlc3BvbnNpdmVTdHlsZXMoYnJlYWtwb2ludDogc3RyaW5nKSB7XG4gICAgY29uc3QgbWluV2lkdGggPSBnZXQodGhpcy5icmVha3BvaW50TWFwLCBicmVha3BvaW50KSBhcyBudW1iZXI7XG4gICAgY29uc3QgbWVkaWFSdWxlcyA9IFtdO1xuXG4gICAgLy8gTG9vcCB0aHJvdWdoIGFsbCB0aGUgc3R5bGVzaGVldHNcbiAgICBmb3IgKGNvbnN0IHNoZWV0IG9mIEFycmF5LmZyb20oZG9jdW1lbnQuc3R5bGVTaGVldHMpKSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBMb29wIHRocm91Z2ggQ1NTIHJ1bGVzXG4gICAgICAgIGZvciAoY29uc3QgcnVsZSBvZiBBcnJheS5mcm9tKHNoZWV0LmNzc1J1bGVzKSkge1xuICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBydWxlIGlzIGEgQ1NTTWVkaWFSdWxlXG4gICAgICAgICAgaWYgKHJ1bGUgaW5zdGFuY2VvZiBDU1NNZWRpYVJ1bGUgJiYgcnVsZS5tZWRpYS5tZWRpYVRleHQuaW5jbHVkZXMoYG1pbi13aWR0aDogJHttaW5XaWR0aH1weGApKSB7XG4gICAgICAgICAgICAvLyBMb29wIHRocm91Z2ggdGhlIG1lZGlhIHJ1bGUncyBDU1MgcnVsZXNcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc3ViUnVsZSBvZiBBcnJheS5mcm9tKHJ1bGUuY3NzUnVsZXMpKSB7XG4gICAgICAgICAgICAgIG1lZGlhUnVsZXMucHVzaChzdWJSdWxlLmNzc1RleHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBhY2Nlc3Npbmcgc3R5bGVzaGVldDonLCBlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgYSBkeW5hbWljIGNsYXNzIGZvciB0aGUgbWVkaWEgcXVlcmllc1xuICAgIHRoaXMuY3JlYXRlQ3VzdG9tQ2xhc3MoYGF4cC1wcmV2aWV3LSR7YnJlYWtwb2ludH1gLCBtZWRpYVJ1bGVzLCBicmVha3BvaW50KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ3VzdG9tQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcsIHN0eWxlczogc3RyaW5nW10sIGJyZWFrcG9pbnQ6IHN0cmluZykge1xuICAgIGNvbnN0IHN0eWxlU2hlZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgIHN0eWxlU2hlZXQuc2V0QXR0cmlidXRlKCdkYXRhLXNjcmVlbicsIGJyZWFrcG9pbnQpO1xuXG4gICAgLy8gQ29uc3RydWN0IGEgcHVyZSBDU1Mgc3RyaW5nLCBkeW5hbWljYWxseSByZXBsYWNpbmcgdGhlIGJyZWFrcG9pbnQgcHJlZml4XG4gICAgbGV0IHN0eWxlU3RyaW5nID0gJyc7XG4gICAgc3R5bGVzLmZvckVhY2goKHN0eWxlKSA9PiB7XG4gICAgICAvLyBSZXBsYWNlIGFueSBwcmVmaXhlZCBjbGFzc2VzIGxpa2UgJ2xnOicgb3IgJ21kOicgZHluYW1pY2FsbHlcbiAgICAgIGNvbnN0IGR5bmFtaWNQcmVmaXggPSBuZXcgUmVnRXhwKGBcXFxcLiR7YnJlYWtwb2ludH1cXFxcXFxcXDpgLCAnZycpO1xuICAgICAgc3R5bGVTdHJpbmcgKz0gYC4ke2NsYXNzTmFtZX0gJHtzdHlsZS5yZXBsYWNlKGR5bmFtaWNQcmVmaXgsICcuJyl9YDsgLy8gUmVwbGFjZSB0aGUgYnJlYWtwb2ludCBwcmVmaXhcbiAgICB9KTtcblxuICAgIHN0eWxlU2hlZXQuaW5uZXJUZXh0ID0gc3R5bGVTdHJpbmc7XG4gICAgdGhpcy5yZW1vdmVDdXN0b21DbGFzcygpO1xuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHN0eWxlU2hlZXQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVDdXN0b21DbGFzcygpIHtcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdzdHlsZScpLmZvckVhY2goKHMpID0+IHMucmVtb3ZlKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlcnZpY2UgPSBpbmplY3QoQVhQRGVzaWduZXJTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgd2lkdGggPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgc3dpdGNoICh0aGlzLnNlcnZpY2Uuc2l6ZSgpKSB7XG4gICAgICBjYXNlICdzbSc6XG4gICAgICAgIHJldHVybiAnMzQwcHgnO1xuICAgICAgY2FzZSAnbWQnOlxuICAgICAgY2FzZSAnbGcnOlxuICAgICAgICByZXR1cm4gJzc2OHB4JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnMTAwJSc7XG4gICAgfVxuICB9KTtcblxuICBwcml2YXRlIGVmID0gZWZmZWN0KCgpID0+IHtcbiAgICB0aGlzLnJlbW92ZUN1c3RvbUNsYXNzKCk7XG4gICAgaWYgKHRoaXMuc2VydmljZS5zaXplKCkgIT0gJ3hsJykge1xuICAgICAgdGhpcy5hcHBseVJlc3BvbnNpdmVTdHlsZXModGhpcy5zZXJ2aWNlLnNpemUoKSk7XG4gICAgfVxuICB9KTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zZXJ2aWNlLm9uUmVmcmVzaC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5jb250ZXh0TWVudT8ucmVmcmVzaCgpO1xuICAgIH0pO1xuICB9XG5cblxuICBwcm90ZWN0ZWQgaGFuZGxlQ29udGV4dE1lbnVPcGVuaW5nKGU6IEFYQ29udGV4dE1lbnVPcGVuaW5nRXZlbnQpIHtcbiAgICBjb25zdCByZW5kZXJlciA9IGdldChlLnRhcmdldEVsZW1lbnQsICdfX21ldGFfXy5yZW5kZXJlcicpIGFzIHVua25vd24gYXMgQVhQV2lkZ2V0RGVzaWduZXJSZW5kZXJlckRpcmVjdGl2ZTtcbiAgICBjb25zdCBpbnN0YW5jZSA9IGdldChlLnRhcmdldEVsZW1lbnQsICdfX21ldGFfXy5pbnN0YW5jZScpIGFzIHVua25vd24gYXMgQVhQRGVzaWduZXJXaWRnZXRDb21wb25lbnQ7XG5cbiAgICBpZiAoIXJlbmRlcmVyIHx8ICFpbnN0YW5jZSkge1xuICAgICAgZS5jYW5jZWxlZCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmVuZGVyZXIuc2VsZWN0KCk7XG5cbiAgICAvLyBGZXRjaCBjb250ZXh0IG1lbnUgaXRlbXMgZm9yIHRoZSBjdXJyZW50IGluc3RhbmNlXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGl0ZW1zOiBBWE1lbnVJdGVtW10gPSB0aGlzLnNlcnZpY2UuZ2V0Q29udGV4dE1lbnVJdGVtcyhpbnN0YW5jZSwgdHJ1ZSk7XG4gICAgICBpZiAoaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgIGUuaXRlbXMucHVzaCguLi5pdGVtcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlLmNhbmNlbGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGdldCBjb250ZXh0IG1lbnUgaXRlbXM6JywgZXJyb3IpO1xuICAgICAgZS5jYW5jZWxlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gUmVjdXJzaXZlbHkgYmluZCBpbnN0YW5jZSBkYXRhIHRvIGFsbCBpdGVtc1xuICAgIHRoaXMuYmluZEluc3RhbmNlVG9JdGVtcyhlLml0ZW1zLCBpbnN0YW5jZSk7XG5cbiAgICAvLyBUcmF2ZXJzZSB0aHJvdWdoIHBhcmVudHMgYW5kIGFkZCB0aGVpciBtZW51IGl0ZW1zIGRpcmVjdGx5IHRvIHRoZSByb290IGxldmVsXG4gICAgdGhpcy5hZGRQYXJlbnRzVG9Sb290TWVudShpbnN0YW5jZSwgZS5pdGVtcyk7XG4gIH1cblxuXG4gIHByaXZhdGUgYWRkUGFyZW50c1RvUm9vdE1lbnUoaW5zdGFuY2U6IEFYUERlc2lnbmVyV2lkZ2V0Q29tcG9uZW50LCBpdGVtczogQVhNZW51SXRlbVtdKSB7XG4gICAgbGV0IHBhcmVudCA9IChpbnN0YW5jZSBhcyB1bmtub3duIGFzIEFYUFZhbHVlV2lkZ2V0Q29tcG9uZW50KT8ucGFyZW50O1xuICAgIGNvbnN0IHBhcmVudEl0ZW1zOiBBWE1lbnVJdGVtW10gPSBbXTtcblxuICAgIC8vIFRyYXZlcnNlIHVwIHRoZSBwYXJlbnQgY2hhaW4sIGFkZGluZyBlYWNoIHBhcmVudCB0byB0aGUgXCJQYXJlbnRzXCIgbWVudVxuICAgIHdoaWxlIChwYXJlbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHdpZGdldCA9IHBhcmVudCBhcyB1bmtub3duIGFzIEFYUERlc2lnbmVyV2lkZ2V0Q29tcG9uZW50O1xuICAgICAgICBjb25zdCBwYXJlbnRDb250ZXh0SXRlbXM6IEFYTWVudUl0ZW1bXSA9IHRoaXMuc2VydmljZS5nZXRDb250ZXh0TWVudUl0ZW1zKHdpZGdldCk7XG5cbiAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IG1lbnUgaXRlbSBmb3IgdGhpcyBwYXJlbnRcbiAgICAgICAgY29uc3QgcGFyZW50TWVudUl0ZW06IEFYTWVudUl0ZW0gPSB7XG4gICAgICAgICAgdGV4dDogcGFyZW50LmNvbmZpZy50aXRsZSxcbiAgICAgICAgICBpY29uOiBwYXJlbnQuY29uZmlnLmljb24sXG4gICAgICAgICAgaXRlbXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGV4dDogJ1NlbGVjdCcsXG4gICAgICAgICAgICAgIG5hbWU6ICdzZWxlY3QnLFxuICAgICAgICAgICAgICBicmVhazogdHJ1ZSxcbiAgICAgICAgICAgICAgaWNvbjogJ2ZhLXNvbGlkIGZhLWFycm93LXBvaW50ZXInLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC4uLnBhcmVudENvbnRleHRJdGVtcyxcbiAgICAgICAgICBdLFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGJpbmQgaW5zdGFuY2UgZGF0YSB0byBhbGwgaXRlbXNcbiAgICAgICAgdGhpcy5iaW5kSW5zdGFuY2VUb0l0ZW1zKHBhcmVudE1lbnVJdGVtLml0ZW1zID8/IFtdLCB3aWRnZXQpO1xuXG4gICAgICAgIC8vIEFkZCB0aGUgcGFyZW50IG1lbnUgaXRlbSB0byB0aGUgcGFyZW50SXRlbXMgYXJyYXlcbiAgICAgICAgcGFyZW50SXRlbXMucHVzaChwYXJlbnRNZW51SXRlbSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gZ2V0IHBhcmVudCBjb250ZXh0IG1lbnUgaXRlbXM6JywgZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICAvLyBNb3ZlIHRvIHRoZSBuZXh0IHBhcmVudCBpbiB0aGUgY2hhaW5cbiAgICAgIHBhcmVudCA9IChwYXJlbnQgYXMgdW5rbm93biBhcyBBWFBWYWx1ZVdpZGdldENvbXBvbmVudCk/LnBhcmVudDtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGVyZSBhcmUgYW55IHBhcmVudCBpdGVtcywgYWRkIHRoZW0gdW5kZXIgYSBcIlBhcmVudHNcIiBncm91cFxuICAgIGlmIChwYXJlbnRJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICBpdGVtc1tpdGVtcy5sZW5ndGggLSAxXS5icmVhayA9IHRydWU7XG4gICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgdGV4dDogJ1BhcmVudHMnLFxuICAgICAgICBpY29uOiAnZmEtc29saWQgZmEtdHVybi11cCcsIC8vIEljb24gZm9yIHRoZSBcIlBhcmVudHNcIiBncm91cFxuICAgICAgICBpdGVtczogcGFyZW50SXRlbXMsIC8vIEFkZCBhbGwgcGFyZW50IGl0ZW1zIGhlcmVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVDb250ZXh0TWVudUl0ZW1DbGljayhlOiBBWENvbnRleHRNZW51SXRlbXNDbGlja0V2ZW50KSB7XG4gICAgaWYgKGUuaXRlbS5uYW1lKSB7XG4gICAgICBjb25zdCBpbnN0YW5jZTogQVhQRGVzaWduZXJXaWRnZXRDb21wb25lbnQgPSBnZXQoZS5pdGVtLmRhdGEsIFwiaW5zdGFuY2VcIikgYXMgdW5rbm93biBhcyBBWFBEZXNpZ25lcldpZGdldENvbXBvbmVudDtcbiAgICAgIGF3YWl0IHRoaXMuc2VydmljZS5leGVjdXRlQ29tbWFuZCh7IGluc3RhbmNlLCBuYW1lOiBlLml0ZW0ubmFtZSB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGJpbmRJbnN0YW5jZVRvSXRlbXMoaXRlbXM6IEFYTWVudUl0ZW1bXSwgaW5zdGFuY2U6IEFYUERlc2lnbmVyV2lkZ2V0Q29tcG9uZW50KTogdm9pZCB7XG4gICAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIC8vIEVuc3VyZSBlYWNoIGl0ZW0gZ2V0cyB0aGUgY29ycmVjdCBpbnN0YW5jZVxuICAgICAgaXRlbS5kYXRhID0geyAuLi4oaXRlbS5kYXRhID8/IHt9KSwgaW5zdGFuY2UgfTtcblxuICAgICAgLy8gSWYgdGhlIGl0ZW0gaGFzIHN1Yi1pdGVtcywgYmluZCBpbnN0YW5jZSB0byB0aGVtIHJlY3Vyc2l2ZWx5XG4gICAgICBpZiAoaXRlbS5pdGVtcykge1xuICAgICAgICB0aGlzLmJpbmRJbnN0YW5jZVRvSXRlbXMoaXRlbS5pdGVtcywgaW5zdGFuY2UpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZScpXG4gIHByaXZhdGUgZ2V0IF9fc3R5bGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjbHM6IGFueSA9IHt9O1xuICAgIGNsc1tgd2lkdGhgXSA9IHRoaXMud2lkdGgoKTtcbiAgICBjbHNbYG1heC13aWR0aGBdID0gJzEyODBweCc7XG4gICAgcmV0dXJuIGNscztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBwcml2YXRlIGdldCBfX2NsYXNzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY2xzOiBhbnkgPSB7fTtcbiAgICBjbHNbYGF4cC1kZXNpZ25lci1ib2FyZGBdID0gdHJ1ZTtcbiAgICBjbHNbYGF4cC1zdGF0ZS1kZXNpZ25gXSA9IHRydWU7XG4gICAgY2xzWydheC1oLWZ1bGwnXSA9IHRydWU7XG4gICAgY2xzWydheC1vdmVyZmxvdy1hdXRvJ10gPSB0cnVlO1xuICAgIGNsc1tgYXhwLXByZXZpZXctJHt0aGlzLnNlcnZpY2Uuc2l6ZSgpfWBdID0gdHJ1ZTtcbiAgICByZXR1cm4gY2xzO1xuICB9XG59XG4iLCI8YXhwLXdpZGdldHMtY29udGFpbmVyIFtjb250ZXh0XT1cImNvbnRleHRcIj5cbiAgPG5nLWNvbnRhaW5lciBheHAtd2lkZ2V0LWRlc2lnbmVyLXJlbmRlcmVyIFtub2RlXT1cInNlcnZpY2UuY3VycmVudFBhZ2UoKVwiIFttb2RlXT1cIidkZXNpZ25lcidcIj48L25nLWNvbnRhaW5lcj5cbjwvYXhwLXdpZGdldHMtY29udGFpbmVyPlxuXG48YXgtY29udGV4dC1tZW51IGNsYXNzPVwiYXgtZGFya1wiICNjb250ZXh0TWVudSBbdGFyZ2V0XT1cIicuYXhwLXdpZGdldC1ob3N0J1wiIFtvcmllbnRhdGlvbl09XCIndmVydGljYWwnXCJcbiAgW2Nsb3NlT25dPVwiJ2xlYXZlJ1wiIChvbk9wZW5pbmcpPVwiaGFuZGxlQ29udGV4dE1lbnVPcGVuaW5nKCRldmVudClcIiAob25JdGVtQ2xpY2spPVwiaGFuZGxlQ29udGV4dE1lbnVJdGVtQ2xpY2soJGV2ZW50KVwiPlxuPC9heC1jb250ZXh0LW1lbnU+Il19","import { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\nimport { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { get } from 'lodash-es';\nimport { AXPDesignerService } from '../../shared/designer.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/breadcrumbs\";\nexport class AXPDesignerBreadcrumbsComponent {\n constructor() {\n this.service = inject(AXPDesignerService);\n }\n getTitle(node) {\n return get(node, '__meta__.config.title');\n }\n handleClick(node) {\n this.service.select({ widget: node });\n }\n handleMouseOver(node) {\n this.service.focus({ widget: node });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerBreadcrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXPDesignerBreadcrumbsComponent, isStandalone: true, selector: \"axp-designer-breadcrumbs\", ngImport: i0, template: `\n <ax-breadcrumbs>\n @for( b of service.breadcrumbs();track $index){\n <ax-breadcrumbs-item>\n <a (click)=\"handleClick(b)\" (mouseover)=\"handleMouseOver(b)\"> {{ getTitle(b) }}</a>\n </ax-breadcrumbs-item>\n }\n <ng-template #divider>\n <i class=\"ax-icon ax-icon-chevron-right\"></i>\n </ng-template>\n </ax-breadcrumbs>\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: AXPLayoutBuilderModule }, { kind: \"ngmodule\", type: AXBreadcrumbsModule }, { kind: \"component\", type: i1.AXBreadCrumbsComponent, selector: \"ax-breadcrumbs\" }, { kind: \"component\", type: i1.AXBreadCrumbsItemComponent, selector: \"ax-breadcrumbs-item\", inputs: [\"disabled\", \"active\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerBreadcrumbsComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axp-designer-breadcrumbs',\n template: `\n <ax-breadcrumbs>\n @for( b of service.breadcrumbs();track $index){\n <ax-breadcrumbs-item>\n <a (click)=\"handleClick(b)\" (mouseover)=\"handleMouseOver(b)\"> {{ getTitle(b) }}</a>\n </ax-breadcrumbs-item>\n }\n <ng-template #divider>\n <i class=\"ax-icon ax-icon-chevron-right\"></i>\n </ng-template>\n </ax-breadcrumbs>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXPLayoutBuilderModule, AXBreadcrumbsModule, AXDecoratorModule]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZGVzaWduZXIvc3JjL2xpYi9kZXNpZ25lci9jb21wb25lbnRzL2JyZWFkY3J1bWJzL2JyZWFkY3J1bWJzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQWlCLE1BQU0saUNBQWlDLENBQUM7QUFFeEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBb0JuRSxNQUFNLE9BQU8sK0JBQStCO0lBbEI1QztRQW1CWSxZQUFPLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7S0FhaEQ7SUFYVyxRQUFRLENBQUMsSUFBbUI7UUFDcEMsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLHVCQUF1QixDQUFrQixDQUFDO0lBQzdELENBQUM7SUFFUyxXQUFXLENBQUMsSUFBbUI7UUFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRVMsZUFBZSxDQUFDLElBQW1CO1FBQzNDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQzs4R0FiVSwrQkFBK0I7a0dBQS9CLCtCQUErQixvRkFoQjlCOzs7Ozs7Ozs7OztHQVdYLDJEQUdXLHNCQUFzQiw4QkFBRSxtQkFBbUIsK09BQUUsaUJBQWlCOzsyRkFFL0QsK0JBQStCO2tCQWxCM0MsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7O0dBV1g7b0JBQ0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsQ0FBQztpQkFDNUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJyZWFkY3J1bWJzTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2JyZWFkY3J1bWJzJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSwgQVhQV2lkZ2V0Tm9kZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQVhQRGVzaWduZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Rlc2lnbmVyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2F4cC1kZXNpZ25lci1icmVhZGNydW1icycsXG4gICAgdGVtcGxhdGU6IGBcbiAgICA8YXgtYnJlYWRjcnVtYnM+XG4gICAgICBAZm9yKCBiIG9mIHNlcnZpY2UuYnJlYWRjcnVtYnMoKTt0cmFjayAkaW5kZXgpe1xuICAgICAgPGF4LWJyZWFkY3J1bWJzLWl0ZW0+XG4gICAgICAgIDxhIChjbGljayk9XCJoYW5kbGVDbGljayhiKVwiIChtb3VzZW92ZXIpPVwiaGFuZGxlTW91c2VPdmVyKGIpXCI+IHt7IGdldFRpdGxlKGIpIH19PC9hPlxuICAgICAgPC9heC1icmVhZGNydW1icy1pdGVtPlxuICAgICAgfVxuICAgICAgPG5nLXRlbXBsYXRlICNkaXZpZGVyPlxuICAgICAgICA8aSBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1jaGV2cm9uLXJpZ2h0XCI+PC9pPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2F4LWJyZWFkY3J1bWJzPlxuICBgLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaW1wb3J0czogW0FYUExheW91dEJ1aWxkZXJNb2R1bGUsIEFYQnJlYWRjcnVtYnNNb2R1bGUsIEFYRGVjb3JhdG9yTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBBWFBEZXNpZ25lckJyZWFkY3J1bWJzQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIHNlcnZpY2UgPSBpbmplY3QoQVhQRGVzaWduZXJTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgZ2V0VGl0bGUobm9kZTogQVhQV2lkZ2V0Tm9kZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGdldChub2RlLCAnX19tZXRhX18uY29uZmlnLnRpdGxlJykgYXMgYW55IGFzIHN0cmluZztcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVDbGljayhub2RlOiBBWFBXaWRnZXROb2RlKSB7XG4gICAgdGhpcy5zZXJ2aWNlLnNlbGVjdCh7IHdpZGdldDogbm9kZSB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVNb3VzZU92ZXIobm9kZTogQVhQV2lkZ2V0Tm9kZSkge1xuICAgIHRoaXMuc2VydmljZS5mb2N1cyh7IHdpZGdldDogbm9kZSB9KTtcbiAgfVxufVxuIl19","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { Component } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/decorators\";\nexport class AXPLayoutDesignerDrawerContentComponent {\n constructor() { }\n ngOnInit() { }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPLayoutDesignerDrawerContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.4\", type: AXPLayoutDesignerDrawerContentComponent, isStandalone: true, selector: \"axp-designer-drawer-content\", ngImport: i0, template: \"<div class=\\\"ax-flex ax-flex-col ax-border-e ax-w-72 ax-h-full\\\">\\n <div class=\\\"ax-flex ax-flex-row ax-w-full ax-justify-between ax-text-white ax-p-2 ax-border-b\\\">\\n <div class=\\\"ax-flex ax-flex-row ax-gap-2 ax-items-center ax-font-semibold\\\">\\n <ng-content select=\\\"ax-title\\\"></ng-content>\\n </div>\\n <div class=\\\"ax-flex ax-gap-1 ax-items-center\\\">\\n <ng-content select=\\\"ax-content[header]\\\">\\n </ng-content>\\n <ax-close-button></ax-close-button>\\n </div>\\n </div>\\n <div class=\\\"ax-flex-1 ax-h-full ax-overflow-auto\\\">\\n <ng-content select=\\\"ax-content[body]\\\">\\n\\n </ng-content>\\n </div>\\n</div>\", dependencies: [{ kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i1.AXDecoratorCloseButtonComponent, selector: \"ax-close-button\", inputs: [\"closeAll\", \"icon\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPLayoutDesignerDrawerContentComponent, decorators: [{\n type: Component,\n args: [{ imports: [AXDecoratorModule], selector: 'axp-designer-drawer-content', template: \"<div class=\\\"ax-flex ax-flex-col ax-border-e ax-w-72 ax-h-full\\\">\\n <div class=\\\"ax-flex ax-flex-row ax-w-full ax-justify-between ax-text-white ax-p-2 ax-border-b\\\">\\n <div class=\\\"ax-flex ax-flex-row ax-gap-2 ax-items-center ax-font-semibold\\\">\\n <ng-content select=\\\"ax-title\\\"></ng-content>\\n </div>\\n <div class=\\\"ax-flex ax-gap-1 ax-items-center\\\">\\n <ng-content select=\\\"ax-content[header]\\\">\\n </ng-content>\\n <ax-close-button></ax-close-button>\\n </div>\\n </div>\\n <div class=\\\"ax-flex-1 ax-h-full ax-overflow-auto\\\">\\n <ng-content select=\\\"ax-content[body]\\\">\\n\\n </ng-content>\\n </div>\\n</div>\" }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWNvbnRlbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZGVzaWduZXIvc3JjL2xpYi9kZXNpZ25lci9zaGFyZWQvZHJhd2VyLWNvbnRlbnQvZHJhd2VyLWNvbnRlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZGVzaWduZXIvc3JjL2xpYi9kZXNpZ25lci9zaGFyZWQvZHJhd2VyLWNvbnRlbnQvZHJhd2VyLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7O0FBUWxELE1BQU0sT0FBTyx1Q0FBdUM7SUFDaEQsZ0JBQWdCLENBQUM7SUFFakIsUUFBUSxLQUFLLENBQUM7OEdBSEwsdUNBQXVDO2tHQUF2Qyx1Q0FBdUMsdUZDVnBELCtyQkFnQk0sMkNEWFEsaUJBQWlCOzsyRkFLbEIsdUNBQXVDO2tCQU5uRCxTQUFTOzhCQUNHLENBQUMsaUJBQWlCLENBQUMsWUFDbEIsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5cbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIGltcG9ydHM6IFtBWERlY29yYXRvck1vZHVsZV0sXG4gICAgc2VsZWN0b3I6ICdheHAtZGVzaWduZXItZHJhd2VyLWNvbnRlbnQnLFxuICAgIHRlbXBsYXRlVXJsOiAnZHJhd2VyLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwnXG59KVxuXG5leHBvcnQgY2xhc3MgQVhQTGF5b3V0RGVzaWduZXJEcmF3ZXJDb250ZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gICAgbmdPbkluaXQoKSB7IH1cbn0iLCI8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1ib3JkZXItZSBheC13LTcyIGF4LWgtZnVsbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtcm93IGF4LXctZnVsbCBheC1qdXN0aWZ5LWJldHdlZW4gYXgtdGV4dC13aGl0ZSBheC1wLTIgYXgtYm9yZGVyLWJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1yb3cgYXgtZ2FwLTIgYXgtaXRlbXMtY2VudGVyIGF4LWZvbnQtc2VtaWJvbGRcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LXRpdGxlXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZ2FwLTEgYXgtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1jb250ZW50W2hlYWRlcl1cIj5cbiAgICAgICAgICAgIDwvbmctY29udGVudD5cbiAgICAgICAgICAgIDxheC1jbG9zZS1idXR0b24+PC9heC1jbG9zZS1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4LTEgYXgtaC1mdWxsIGF4LW92ZXJmbG93LWF1dG9cIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtY29udGVudFtib2R5XVwiPlxuXG4gICAgICAgIDwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==","import { ChangeDetectionStrategy, Component, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXPDesignerService } from '../../../shared/designer.service';\nimport { AXPLayoutDesignerDrawerContentComponent } from '../../../shared/drawer-content/drawer-content.component';\nimport { AXPWidgetDataSourceProviderService } from '@acorex/platform/layout/builder';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/decorators\";\nimport * as i2 from \"@acorex/components/button\";\nexport class AXPDesignerDataSourcesComponent {\n constructor() {\n this.service = inject(AXPDesignerService);\n this.workflow = inject(AXPWorkflowService);\n this.dataSourceProvider = inject(AXPWidgetDataSourceProviderService);\n this.list = signal([]);\n }\n async ngOnInit() {\n const items = (await this.dataSourceProvider.items()).map(c => ({ name: c.name, title: c.title }));\n this.list.set(items);\n }\n async handleAddClick() {\n this.workflow.execute('create-entity', {\n entity: `PlatformManagement.DataSource`,\n options: {\n process: {\n canCreateNewOne: false,\n redirect: false,\n },\n layout: {\n size: 'lg'\n }\n },\n metadata: {\n formBuilder: true\n }\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerDataSourcesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXPDesignerDataSourcesComponent, isStandalone: true, selector: \"axp-designer-data-sources\", ngImport: i0, template: \"<axp-designer-drawer-content>\\n\\n <ax-title>Data Sources</ax-title>\\n\\n <ax-content header>\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" title=\\\"Add New Data Source\\\" (onClick)=\\\"handleAddClick()\\\">\\n <ax-icon class=\\\"fa-light fa-plus\\\"></ax-icon>\\n </ax-button>\\n </ax-content>\\n\\n <ax-content body>\\n @if(list().length)\\n {\\n <ul class=\\\"axp-designer-drawer-list\\\">\\n @for (item of list(); track $index) {\\n <li>\\n <i class=\\\"ax-me-1 fa-solid fa-table\\\"></i>\\n {{ item.title }}\\n </li>\\n }\\n </ul>\\n }\\n @else {\\n <div class=\\\"axp-designer-drawer-empty\\\">No data source found in the\\n document\\n </div>\\n }\\n </ax-content>\\n\\n</axp-designer-drawer-content>\", dependencies: [{ kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i1.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i1.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i2.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"component\", type: AXPLayoutDesignerDrawerContentComponent, selector: \"axp-designer-drawer-content\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerDataSourcesComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-designer-data-sources', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n AXDecoratorModule,\n AXButtonModule,\n AXPLayoutDesignerDrawerContentComponent\n ], template: \"<axp-designer-drawer-content>\\n\\n <ax-title>Data Sources</ax-title>\\n\\n <ax-content header>\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" title=\\\"Add New Data Source\\\" (onClick)=\\\"handleAddClick()\\\">\\n <ax-icon class=\\\"fa-light fa-plus\\\"></ax-icon>\\n </ax-button>\\n </ax-content>\\n\\n <ax-content body>\\n @if(list().length)\\n {\\n <ul class=\\\"axp-designer-drawer-list\\\">\\n @for (item of list(); track $index) {\\n <li>\\n <i class=\\\"ax-me-1 fa-solid fa-table\\\"></i>\\n {{ item.title }}\\n </li>\\n }\\n </ul>\\n }\\n @else {\\n <div class=\\\"axp-designer-drawer-empty\\\">No data source found in the\\n document\\n </div>\\n }\\n </ax-content>\\n\\n</axp-designer-drawer-content>\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3VyY2VzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2Rlc2lnbmVyL3NyYy9saWIvZGVzaWduZXIvY29tcG9uZW50cy9kcmF3ZXJzL2RhdGEtc291cmNlcy9kYXRhLXNvdXJjZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZGVzaWduZXIvc3JjL2xpYi9kZXNpZ25lci9jb21wb25lbnRzL2RyYXdlcnMvZGF0YS1zb3VyY2VzL2RhdGEtc291cmNlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBRWxILE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7O0FBZS9ELE1BQU0sT0FBTywrQkFBK0I7SUFaNUM7UUFjYyxZQUFPLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDckMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3RDLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBRWhFLFNBQUksR0FBRyxNQUFNLENBQW9DLEVBQUUsQ0FBQyxDQUFDO0tBK0JsRTtJQTVCRyxLQUFLLENBQUMsUUFBUTtRQUNWLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUdTLEtBQUssQ0FBQyxjQUFjO1FBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFDakM7WUFDSSxNQUFNLEVBQUUsK0JBQStCO1lBQ3ZDLE9BQU8sRUFBRTtnQkFDTCxPQUFPLEVBQUU7b0JBQ0wsZUFBZSxFQUFFLEtBQUs7b0JBQ3RCLFFBQVEsRUFBRSxLQUFLO2lCQUNsQjtnQkFDRCxNQUFNLEVBQUU7b0JBQ0osSUFBSSxFQUFFLElBQUk7aUJBQ2I7YUFDSjtZQUNELFFBQVEsRUFBRTtnQkFDTixXQUFXLEVBQUUsSUFBSTthQUNwQjtTQUNKLENBRUosQ0FBQTtJQUNMLENBQUM7OEdBbENRLCtCQUErQjtrR0FBL0IsK0JBQStCLHFGQ3ZCNUMsZzFCQTZCOEIsMkNEWjFCLGlCQUFpQixzVkFDakIsY0FBYyw4WEFDZCx1Q0FBdUM7OzJGQUk5QiwrQkFBK0I7a0JBWjNDLFNBQVM7K0JBQ0ksMkJBQTJCLGlCQUV0QixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNULGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCx1Q0FBdUM7cUJBQzFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIHNpZ25hbCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYUERlc2lnbmVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kZXNpZ25lci5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUExheW91dERlc2lnbmVyRHJhd2VyQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9kcmF3ZXItY29udGVudC9kcmF3ZXItY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhQRGVzaWduZXJDb25uZWN0b3IgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGVzaWduZXItY29ubmVjdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0RGF0YVNvdXJjZVByb3ZpZGVyU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3dTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93b3JrZmxvdyc7XG5pbXBvcnQgeyBBWFBEYXRhR2VuZXJhdG9yIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdheHAtZGVzaWduZXItZGF0YS1zb3VyY2VzJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2RhdGEtc291cmNlcy5jb21wb25lbnQuaHRtbCcsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBpbXBvcnRzOiBbXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgQVhQTGF5b3V0RGVzaWduZXJEcmF3ZXJDb250ZW50Q29tcG9uZW50XG5dXG59KVxuXG5leHBvcnQgY2xhc3MgQVhQRGVzaWduZXJEYXRhU291cmNlc0NvbXBvbmVudCB7XG5cbiAgICBwcm90ZWN0ZWQgc2VydmljZSA9IGluamVjdChBWFBEZXNpZ25lclNlcnZpY2UpO1xuICAgIHByb3RlY3RlZCB3b3JrZmxvdyA9IGluamVjdChBWFBXb3JrZmxvd1NlcnZpY2UpO1xuICAgIHByb3RlY3RlZCBkYXRhU291cmNlUHJvdmlkZXIgPSBpbmplY3QoQVhQV2lkZ2V0RGF0YVNvdXJjZVByb3ZpZGVyU2VydmljZSk7XG5cbiAgICBwcm90ZWN0ZWQgbGlzdCA9IHNpZ25hbDx7IG5hbWU6IHN0cmluZywgdGl0bGU6IHN0cmluZyB9W10+KFtdKTtcblxuXG4gICAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gKGF3YWl0IHRoaXMuZGF0YVNvdXJjZVByb3ZpZGVyLml0ZW1zKCkpLm1hcChjID0+ICh7IG5hbWU6IGMubmFtZSwgdGl0bGU6IGMudGl0bGUgfSkpO1xuICAgICAgICB0aGlzLmxpc3Quc2V0KGl0ZW1zKTtcbiAgICB9XG5cblxuICAgIHByb3RlY3RlZCBhc3luYyBoYW5kbGVBZGRDbGljaygpIHtcbiAgICAgICAgdGhpcy53b3JrZmxvdy5leGVjdXRlKCdjcmVhdGUtZW50aXR5JyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbnRpdHk6IGBQbGF0Zm9ybU1hbmFnZW1lbnQuRGF0YVNvdXJjZWAsXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5DcmVhdGVOZXdPbmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6ICdsZydcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybUJ1aWxkZXI6IHRydWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgKVxuICAgIH1cblxuXG59IiwiPGF4cC1kZXNpZ25lci1kcmF3ZXItY29udGVudD5cblxuICAgIDxheC10aXRsZT5EYXRhIFNvdXJjZXM8L2F4LXRpdGxlPlxuXG4gICAgPGF4LWNvbnRlbnQgaGVhZGVyPlxuICAgICAgICA8YXgtYnV0dG9uIGxvb2s9XCJibGFua1wiIGNsYXNzPVwiYXgtc21cIiB0aXRsZT1cIkFkZCBOZXcgRGF0YSBTb3VyY2VcIiAob25DbGljayk9XCJoYW5kbGVBZGRDbGljaygpXCI+XG4gICAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLWxpZ2h0ICBmYS1wbHVzXCI+PC9heC1pY29uPlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICA8L2F4LWNvbnRlbnQ+XG5cbiAgICA8YXgtY29udGVudCBib2R5PlxuICAgICAgICBAaWYobGlzdCgpLmxlbmd0aClcbiAgICAgICAge1xuICAgICAgICA8dWwgY2xhc3M9XCJheHAtZGVzaWduZXItZHJhd2VyLWxpc3RcIj5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgbGlzdCgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImF4LW1lLTEgZmEtc29saWQgZmEtdGFibGVcIj48L2k+XG4gICAgICAgICAgICAgICAge3sgaXRlbS50aXRsZSB9fVxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC91bD5cbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheHAtZGVzaWduZXItZHJhd2VyLWVtcHR5XCI+Tm8gZGF0YSBzb3VyY2UgZm91bmQgaW4gdGhlXG4gICAgICAgICAgICBkb2N1bWVudFxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgIDwvYXgtY29udGVudD5cblxuPC9heHAtZGVzaWduZXItZHJhd2VyLWNvbnRlbnQ+Il19","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXPLayoutDesignerDrawerContentComponent } from '../../../shared/drawer-content/drawer-content.component';\nimport { AXPDesignerService } from '../../../shared/designer.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/components/decorators\";\nimport * as i3 from \"@acorex/components/button\";\nimport * as i4 from \"@acorex/components/dropdown\";\nexport class AXPDesignerHistoryComponent {\n constructor() {\n this.service = inject(AXPDesignerService);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerHistoryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXPDesignerHistoryComponent, isStandalone: true, selector: \"axp-designer-history\", ngImport: i0, template: \"<axp-designer-drawer-content>\\n\\n <ax-title>History</ax-title>\\n\\n <ax-content header>\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\">\\n <ax-icon class=\\\"fa-light fa-ellipsis\\\"></ax-icon>\\n <ax-dropdown-panel class=\\\"ax-sm\\\">\\n <ax-button-item-list>\\n <ax-button-item text=\\\"Clear\\\" name=\\\"add\\\" (onClick)=\\\"service.clearHistory()\\\"> </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-button>\\n </ax-content>\\n\\n <ax-content body>\\n @if(service.history().length)\\n {\\n <ul class=\\\"axp-designer-drawer-list\\\">\\n @for (step of service.history(); track $index) {\\n <li (click)=\\\"service.navigateTo($index)\\\" [class.ax-italic]=\\\"step.isFuture\\\"\\n [class.ax-text-neutral-400]=\\\"step.isFuture\\\" [class.ax-state-selected]=\\\"step.isCurrent\\\">\\n <i class=\\\"ax-me-1\\\" [ngClass]=\\\"step.icon\\\"></i>\\n {{ step.description }}\\n </li>\\n }\\n </ul>\\n }\\n @else {\\n <div class=\\\"axp-designer-drawer-empty\\\">\\n No changes have been made yet.\\n </div>\\n }\\n </ax-content>\\n\\n</axp-designer-drawer-content>\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i2.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i2.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i3.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"component\", type: i3.AXButtonItemComponent, selector: \"ax-button-item\", inputs: [\"color\", \"disabled\", \"text\", \"selected\", \"divided\", \"data\", \"name\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\", \"disabledChange\"] }, { kind: \"component\", type: i3.AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"component\", type: i4.AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"component\", type: AXPLayoutDesignerDrawerContentComponent, selector: \"axp-designer-drawer-content\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerHistoryComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-designer-history', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n CommonModule,\n AXDecoratorModule,\n AXButtonModule,\n AXDropdownModule,\n AXPLayoutDesignerDrawerContentComponent\n ], template: \"<axp-designer-drawer-content>\\n\\n <ax-title>History</ax-title>\\n\\n <ax-content header>\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\">\\n <ax-icon class=\\\"fa-light fa-ellipsis\\\"></ax-icon>\\n <ax-dropdown-panel class=\\\"ax-sm\\\">\\n <ax-button-item-list>\\n <ax-button-item text=\\\"Clear\\\" name=\\\"add\\\" (onClick)=\\\"service.clearHistory()\\\"> </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-panel>\\n </ax-button>\\n </ax-content>\\n\\n <ax-content body>\\n @if(service.history().length)\\n {\\n <ul class=\\\"axp-designer-drawer-list\\\">\\n @for (step of service.history(); track $index) {\\n <li (click)=\\\"service.navigateTo($index)\\\" [class.ax-italic]=\\\"step.isFuture\\\"\\n [class.ax-text-neutral-400]=\\\"step.isFuture\\\" [class.ax-state-selected]=\\\"step.isCurrent\\\">\\n <i class=\\\"ax-me-1\\\" [ngClass]=\\\"step.icon\\\"></i>\\n {{ step.description }}\\n </li>\\n }\\n </ul>\\n }\\n @else {\\n <div class=\\\"axp-designer-drawer-empty\\\">\\n No changes have been made yet.\\n </div>\\n }\\n </ax-content>\\n\\n</axp-designer-drawer-content>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL2Rlc2lnbmVyL2NvbXBvbmVudHMvZHJhd2Vycy9oaXN0b3J5L2hpc3RvcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZGVzaWduZXIvc3JjL2xpYi9kZXNpZ25lci9jb21wb25lbnRzL2RyYXdlcnMvaGlzdG9yeS9oaXN0b3J5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0seURBQXlELENBQUM7QUFDbEgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7OztBQWdCdEUsTUFBTSxPQUFPLDJCQUEyQjtJQWR4QztRQWVjLFlBQU8sR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztLQUNsRDs4R0FGWSwyQkFBMkI7a0dBQTNCLDJCQUEyQixnRkN0QnhDLGt3Q0FvQ0EsMkNEdEJRLFlBQVksNEhBQ1osaUJBQWlCLHNWQUNqQixjQUFjLG91QkFDZCxnQkFBZ0Isc1FBQ2hCLHVDQUF1Qzs7MkZBSWxDLDJCQUEyQjtrQkFkdkMsU0FBUzsrQkFDSSxzQkFBc0IsaUJBRWpCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7d0JBQ0wsWUFBWTt3QkFDWixpQkFBaUI7d0JBQ2pCLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQix1Q0FBdUM7cUJBQzFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgQVhQTGF5b3V0RGVzaWduZXJEcmF3ZXJDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2RyYXdlci1jb250ZW50L2RyYXdlci1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBEZXNpZ25lclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGVzaWduZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXhwLWRlc2lnbmVyLWhpc3RvcnknLFxuICAgIHRlbXBsYXRlVXJsOiAnaGlzdG9yeS5jb21wb25lbnQuaHRtbCcsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgICAgICBBWERyb3Bkb3duTW9kdWxlLFxuICAgICAgICBBWFBMYXlvdXREZXNpZ25lckRyYXdlckNvbnRlbnRDb21wb25lbnRcbiAgICBdXG59KVxuXG5leHBvcnQgY2xhc3MgQVhQRGVzaWduZXJIaXN0b3J5Q29tcG9uZW50IHtcbiAgICBwcm90ZWN0ZWQgc2VydmljZSA9IGluamVjdChBWFBEZXNpZ25lclNlcnZpY2UpO1xufSIsIjxheHAtZGVzaWduZXItZHJhd2VyLWNvbnRlbnQ+XG5cbiAgICA8YXgtdGl0bGU+SGlzdG9yeTwvYXgtdGl0bGU+XG5cbiAgICA8YXgtY29udGVudCBoZWFkZXI+XG4gICAgICAgIDxheC1idXR0b24gbG9vaz1cImJsYW5rXCIgY2xhc3M9XCJheC1zbVwiPlxuICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1saWdodCBmYS1lbGxpcHNpc1wiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgIDxheC1kcm9wZG93bi1wYW5lbCBjbGFzcz1cImF4LXNtXCI+XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbSB0ZXh0PVwiQ2xlYXJcIiBuYW1lPVwiYWRkXCIgKG9uQ2xpY2spPVwic2VydmljZS5jbGVhckhpc3RvcnkoKVwiPiA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICAgIDwvYXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgIDwvYXgtYnV0dG9uPlxuICAgIDwvYXgtY29udGVudD5cblxuICAgIDxheC1jb250ZW50IGJvZHk+XG4gICAgICAgIEBpZihzZXJ2aWNlLmhpc3RvcnkoKS5sZW5ndGgpXG4gICAgICAgIHtcbiAgICAgICAgPHVsIGNsYXNzPVwiYXhwLWRlc2lnbmVyLWRyYXdlci1saXN0XCI+XG4gICAgICAgICAgICBAZm9yIChzdGVwIG9mIHNlcnZpY2UuaGlzdG9yeSgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgIDxsaSAoY2xpY2spPVwic2VydmljZS5uYXZpZ2F0ZVRvKCRpbmRleClcIiBbY2xhc3MuYXgtaXRhbGljXT1cInN0ZXAuaXNGdXR1cmVcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5heC10ZXh0LW5ldXRyYWwtNDAwXT1cInN0ZXAuaXNGdXR1cmVcIiBbY2xhc3MuYXgtc3RhdGUtc2VsZWN0ZWRdPVwic3RlcC5pc0N1cnJlbnRcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImF4LW1lLTFcIiBbbmdDbGFzc109XCJzdGVwLmljb25cIj48L2k+XG4gICAgICAgICAgICAgICAge3sgc3RlcC5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC91bD5cbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheHAtZGVzaWduZXItZHJhd2VyLWVtcHR5XCI+XG4gICAgICAgICAgICBObyBjaGFuZ2VzIGhhdmUgYmVlbiBtYWRlIHlldC5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICA8L2F4LWNvbnRlbnQ+XG5cbjwvYXhwLWRlc2lnbmVyLWRyYXdlci1jb250ZW50PlxuIl19","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { get } from 'lodash-es';\nimport { merge } from 'rxjs';\nimport { AXPLayoutDesignerDrawerContentComponent } from '../../../shared/drawer-content/drawer-content.component';\nimport { AXPDesignerService } from '../../../shared/designer.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/components/decorators\";\nexport class AXPDesignerOutlineComponent {\n constructor() {\n this.service = inject(AXPDesignerService);\n this.collapsedStates = new Map();\n this.root = signal(this.getTree());\n merge(this.service.onRefresh, this.service.onUpdate).subscribe(() => {\n this.root.update((c) => ({ ...this.getTree() }));\n });\n }\n getTree() {\n return {\n type: AXPWidgetsCatalog.document,\n children: [this.service.currentPage()],\n };\n }\n toggleCollapse(node) {\n // Toggle the current state or set to true if undefined\n this.collapsedStates.set(node, !this.collapsedStates.get(node));\n }\n isCollapsed(node) {\n // Return the collapsed state, default is false (expanded)\n return !!this.collapsedStates.get(node);\n }\n getConfig(node) {\n return get(node, '__meta__.config');\n }\n handleClick(e, node) {\n e.stopPropagation();\n this.service.select({ widget: node });\n }\n handleToggleClick(event, item) {\n event.stopPropagation(); // Prevents the event from bubbling up to parent elements\n this.toggleCollapse(item);\n }\n handleMouseOver(e, node) {\n e.stopPropagation();\n this.service.focus({ widget: node });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerOutlineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXPDesignerOutlineComponent, isStandalone: true, selector: \"axp-designer-outline\", ngImport: i0, template: \"<axp-designer-drawer-content>\\n\\n <ax-title>Outline</ax-title>\\n\\n <ax-content body>\\n @if(root().children?.length)\\n {\\n <ul class=\\\"ax-space-y-1 ax-p-1 ax-text-white ax-text-sm\\\">\\n @for( node of root().children;track $index)\\n {\\n <ng-container [ngTemplateOutlet]=\\\"sideMenu\\\" [ngTemplateOutletContext]=\\\"{ $implicit: node }\\\">\\n </ng-container>\\n }\\n </ul>\\n <ng-template #sideMenu let-item>\\n <li (click)=\\\"handleClick($event,item)\\\" (mouseover)=\\\"handleMouseOver($event,item)\\\">\\n <div [class.ax-bg-neutral-700]=\\\"item === service.selectedNode()\\\"\\n class=\\\"ax-flex ax-flex-row ax-items-center ax-cursor-pointer ax-transition ax-duration-150 ax-ease-in-out ax-hover:bg-gray-700 ax-py-1 ax-px-2 ax-rounded-sm ax-group\\\">\\n <span class=\\\"ax-w-5 \\\">\\n @if(item.children?.length)\\n {\\n <i class=\\\"fa-solid\\\" [class.fa-chevron-right]=\\\"isCollapsed(item)\\\"\\n (click)=\\\"handleToggleClick($event, item)\\\" [class.fa-chevron-down]=\\\"!isCollapsed(item)\\\"></i>\\n }\\n </span>\\n @let config = getConfig(item);\\n <span class=\\\"ax-w-5\\\">\\n @if(config.icon)\\n {\\n <i [ngClass]=\\\"config.icon\\\"></i>\\n }\\n </span>\\n <span class=\\\"ax-truncate ax-flex-1 ax-pe-2\\\">{{config.title}} : {{item.name}}</span>\\n <div class=\\\"ax-invisible group-hover:ax-visible ax-flex ax-gap-2 ax-justify-end \\\">\\n @if(config.type=='container')\\n {\\n <i class=\\\"fa-light fa-plus hover:ax-text-primary-500\\\" (click)=\\\"service.showPicker(item)\\\"></i>\\n }\\n @if(config.name!=\\\"page-layout\\\")\\n {\\n <i class=\\\"fa-light fa-xmark hover:ax-text-danger-500\\\" (click)=\\\"service.removeWidget(item)\\\"></i>\\n }\\n </div>\\n </div>\\n @if(item.children?.length && !isCollapsed(item)) {\\n <ul class=\\\"ax-space-y-1 ax-ps-3 ax-text-white ax-text-sm\\\">\\n @for (child of item.children; track child) {\\n <ng-container [ngTemplateOutlet]=\\\"sideMenu\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: child }\\\">\\n </ng-container>\\n }\\n </ul>\\n }\\n </li>\\n </ng-template>\\n }\\n @else {\\n <div class=\\\"axp-designer-drawer-empty\\\">No widgets found in the page\\n </div>\\n }\\n</ax-content>\\n\\n</axp-designer-drawer-content>\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i2.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"component\", type: AXPLayoutDesignerDrawerContentComponent, selector: \"axp-designer-drawer-content\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerOutlineComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-designer-outline', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n CommonModule,\n AXDecoratorModule,\n AXPLayoutDesignerDrawerContentComponent\n ], template: \"<axp-designer-drawer-content>\\n\\n <ax-title>Outline</ax-title>\\n\\n <ax-content body>\\n @if(root().children?.length)\\n {\\n <ul class=\\\"ax-space-y-1 ax-p-1 ax-text-white ax-text-sm\\\">\\n @for( node of root().children;track $index)\\n {\\n <ng-container [ngTemplateOutlet]=\\\"sideMenu\\\" [ngTemplateOutletContext]=\\\"{ $implicit: node }\\\">\\n </ng-container>\\n }\\n </ul>\\n <ng-template #sideMenu let-item>\\n <li (click)=\\\"handleClick($event,item)\\\" (mouseover)=\\\"handleMouseOver($event,item)\\\">\\n <div [class.ax-bg-neutral-700]=\\\"item === service.selectedNode()\\\"\\n class=\\\"ax-flex ax-flex-row ax-items-center ax-cursor-pointer ax-transition ax-duration-150 ax-ease-in-out ax-hover:bg-gray-700 ax-py-1 ax-px-2 ax-rounded-sm ax-group\\\">\\n <span class=\\\"ax-w-5 \\\">\\n @if(item.children?.length)\\n {\\n <i class=\\\"fa-solid\\\" [class.fa-chevron-right]=\\\"isCollapsed(item)\\\"\\n (click)=\\\"handleToggleClick($event, item)\\\" [class.fa-chevron-down]=\\\"!isCollapsed(item)\\\"></i>\\n }\\n </span>\\n @let config = getConfig(item);\\n <span class=\\\"ax-w-5\\\">\\n @if(config.icon)\\n {\\n <i [ngClass]=\\\"config.icon\\\"></i>\\n }\\n </span>\\n <span class=\\\"ax-truncate ax-flex-1 ax-pe-2\\\">{{config.title}} : {{item.name}}</span>\\n <div class=\\\"ax-invisible group-hover:ax-visible ax-flex ax-gap-2 ax-justify-end \\\">\\n @if(config.type=='container')\\n {\\n <i class=\\\"fa-light fa-plus hover:ax-text-primary-500\\\" (click)=\\\"service.showPicker(item)\\\"></i>\\n }\\n @if(config.name!=\\\"page-layout\\\")\\n {\\n <i class=\\\"fa-light fa-xmark hover:ax-text-danger-500\\\" (click)=\\\"service.removeWidget(item)\\\"></i>\\n }\\n </div>\\n </div>\\n @if(item.children?.length && !isCollapsed(item)) {\\n <ul class=\\\"ax-space-y-1 ax-ps-3 ax-text-white ax-text-sm\\\">\\n @for (child of item.children; track child) {\\n <ng-container [ngTemplateOutlet]=\\\"sideMenu\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: child }\\\">\\n </ng-container>\\n }\\n </ul>\\n }\\n </li>\\n </ng-template>\\n }\\n @else {\\n <div class=\\\"axp-designer-drawer-empty\\\">No widgets found in the page\\n </div>\\n }\\n</ax-content>\\n\\n</axp-designer-drawer-content>\" }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0bGluZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL2Rlc2lnbmVyL2NvbXBvbmVudHMvZHJhd2Vycy9vdXRsaW5lL291dGxpbmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZGVzaWduZXIvc3JjL2xpYi9kZXNpZ25lci9jb21wb25lbnRzL2RyYXdlcnMvb3V0bGluZS9vdXRsaW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBa0MsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNsSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7OztBQWF0RSxNQUFNLE9BQU8sMkJBQTJCO0lBT3RDO1FBTlUsWUFBTyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRXJDLG9CQUFlLEdBQXNCLElBQUksR0FBRyxFQUFFLENBQUM7UUFFL0MsU0FBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUd0QyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2xFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sT0FBTztRQUNiLE9BQU87WUFDTCxJQUFJLEVBQUUsaUJBQWlCLENBQUMsUUFBUTtZQUNoQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3RCLENBQUM7SUFDckIsQ0FBQztJQUVPLGNBQWMsQ0FBQyxJQUFTO1FBQzlCLHVEQUF1RDtRQUN2RCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFUyxXQUFXLENBQUMsSUFBUztRQUM3QiwwREFBMEQ7UUFDMUQsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVTLFNBQVMsQ0FBQyxJQUFtQjtRQUNyQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLENBQTJCLENBQUM7SUFDaEUsQ0FBQztJQUVTLFdBQVcsQ0FBQyxDQUFhLEVBQUUsSUFBbUI7UUFDdEQsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVTLGlCQUFpQixDQUFDLEtBQWlCLEVBQUUsSUFBUztRQUN0RCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyx5REFBeUQ7UUFDbEYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRVMsZUFBZSxDQUFDLENBQWEsRUFBRSxJQUFtQjtRQUMxRCxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2QyxDQUFDOzhHQS9DVSwyQkFBMkI7a0dBQTNCLDJCQUEyQixnRkNwQnhDLDhqRkE4RDhCLDJDRC9DdEIsWUFBWSxtU0FDWixpQkFBaUIsc1BBQ2pCLHVDQUF1Qzs7MkZBR2xDLDJCQUEyQjtrQkFYdkMsU0FBUzsrQkFDSSxzQkFBc0IsaUJBRWpCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7d0JBQ0wsWUFBWTt3QkFDWixpQkFBaUI7d0JBQ2pCLHVDQUF1QztxQkFDMUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYUFdpZGdldENvbmZpZywgQVhQV2lkZ2V0Tm9kZSwgQVhQV2lkZ2V0c0NhdGFsb2cgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIHNpZ25hbCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhQTGF5b3V0RGVzaWduZXJEcmF3ZXJDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2RyYXdlci1jb250ZW50L2RyYXdlci1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBEZXNpZ25lclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGVzaWduZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXhwLWRlc2lnbmVyLW91dGxpbmUnLFxuICAgIHRlbXBsYXRlVXJsOiAnb3V0bGluZS5jb21wb25lbnQuaHRtbCcsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgICAgIEFYUExheW91dERlc2lnbmVyRHJhd2VyQ29udGVudENvbXBvbmVudFxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgQVhQRGVzaWduZXJPdXRsaW5lQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIHNlcnZpY2UgPSBpbmplY3QoQVhQRGVzaWduZXJTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgY29sbGFwc2VkU3RhdGVzOiBNYXA8YW55LCBib29sZWFuPiA9IG5ldyBNYXAoKTtcblxuICBwcm90ZWN0ZWQgcm9vdCA9IHNpZ25hbCh0aGlzLmdldFRyZWUoKSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgbWVyZ2UodGhpcy5zZXJ2aWNlLm9uUmVmcmVzaCwgdGhpcy5zZXJ2aWNlLm9uVXBkYXRlKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yb290LnVwZGF0ZSgoYykgPT4gKHsgLi4udGhpcy5nZXRUcmVlKCkgfSkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUcmVlKCk6IEFYUFdpZGdldE5vZGUge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5kb2N1bWVudCxcbiAgICAgIGNoaWxkcmVuOiBbdGhpcy5zZXJ2aWNlLmN1cnJlbnRQYWdlKCldLFxuICAgIH0gYXMgQVhQV2lkZ2V0Tm9kZTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlQ29sbGFwc2Uobm9kZTogYW55KSB7XG4gICAgLy8gVG9nZ2xlIHRoZSBjdXJyZW50IHN0YXRlIG9yIHNldCB0byB0cnVlIGlmIHVuZGVmaW5lZFxuICAgIHRoaXMuY29sbGFwc2VkU3RhdGVzLnNldChub2RlLCAhdGhpcy5jb2xsYXBzZWRTdGF0ZXMuZ2V0KG5vZGUpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0NvbGxhcHNlZChub2RlOiBhbnkpOiBib29sZWFuIHtcbiAgICAvLyBSZXR1cm4gdGhlIGNvbGxhcHNlZCBzdGF0ZSwgZGVmYXVsdCBpcyBmYWxzZSAoZXhwYW5kZWQpXG4gICAgcmV0dXJuICEhdGhpcy5jb2xsYXBzZWRTdGF0ZXMuZ2V0KG5vZGUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldENvbmZpZyhub2RlOiBBWFBXaWRnZXROb2RlKTogQVhQV2lkZ2V0Q29uZmlnIHtcbiAgICByZXR1cm4gZ2V0KG5vZGUsICdfX21ldGFfXy5jb25maWcnKSBhcyBhbnkgYXMgQVhQV2lkZ2V0Q29uZmlnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUNsaWNrKGU6IE1vdXNlRXZlbnQsIG5vZGU6IEFYUFdpZGdldE5vZGUpIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuc2VydmljZS5zZWxlY3QoeyB3aWRnZXQ6IG5vZGUgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlVG9nZ2xlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW06IGFueSk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAvLyBQcmV2ZW50cyB0aGUgZXZlbnQgZnJvbSBidWJibGluZyB1cCB0byBwYXJlbnQgZWxlbWVudHNcbiAgICB0aGlzLnRvZ2dsZUNvbGxhcHNlKGl0ZW0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZU1vdXNlT3ZlcihlOiBNb3VzZUV2ZW50LCBub2RlOiBBWFBXaWRnZXROb2RlKSB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnNlcnZpY2UuZm9jdXMoeyB3aWRnZXQ6IG5vZGUgfSk7XG4gIH1cbn1cbiIsIjxheHAtZGVzaWduZXItZHJhd2VyLWNvbnRlbnQ+XG5cbiAgPGF4LXRpdGxlPk91dGxpbmU8L2F4LXRpdGxlPlxuXG4gIDxheC1jb250ZW50IGJvZHk+XG4gICAgQGlmKHJvb3QoKS5jaGlsZHJlbj8ubGVuZ3RoKVxuICAgICAge1xuICAgICAgPHVsIGNsYXNzPVwiYXgtc3BhY2UteS0xIGF4LXAtMSBheC10ZXh0LXdoaXRlIGF4LXRleHQtc21cIj5cbiAgICAgICAgQGZvciggbm9kZSBvZiByb290KCkuY2hpbGRyZW47dHJhY2sgJGluZGV4KVxuICAgICAgICAgIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNpZGVNZW51XCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBub2RlIH1cIj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgPC91bD5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2lkZU1lbnUgbGV0LWl0ZW0+XG4gICAgICAgIDxsaSAoY2xpY2spPVwiaGFuZGxlQ2xpY2soJGV2ZW50LGl0ZW0pXCIgKG1vdXNlb3Zlcik9XCJoYW5kbGVNb3VzZU92ZXIoJGV2ZW50LGl0ZW0pXCI+XG4gICAgICAgICAgPGRpdiBbY2xhc3MuYXgtYmctbmV1dHJhbC03MDBdPVwiaXRlbSA9PT0gc2VydmljZS5zZWxlY3RlZE5vZGUoKVwiXG4gICAgICAgICAgICBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1yb3cgYXgtaXRlbXMtY2VudGVyIGF4LWN1cnNvci1wb2ludGVyIGF4LXRyYW5zaXRpb24gYXgtZHVyYXRpb24tMTUwIGF4LWVhc2UtaW4tb3V0IGF4LWhvdmVyOmJnLWdyYXktNzAwIGF4LXB5LTEgYXgtcHgtMiBheC1yb3VuZGVkLXNtIGF4LWdyb3VwXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LXctNSBcIj5cbiAgICAgICAgICAgICAgQGlmKGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aClcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZFwiIFtjbGFzcy5mYS1jaGV2cm9uLXJpZ2h0XT1cImlzQ29sbGFwc2VkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlVG9nZ2xlQ2xpY2soJGV2ZW50LCBpdGVtKVwiIFtjbGFzcy5mYS1jaGV2cm9uLWRvd25dPVwiIWlzQ29sbGFwc2VkKGl0ZW0pXCI+PC9pPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICBAbGV0IGNvbmZpZyA9IGdldENvbmZpZyhpdGVtKTtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtdy01XCI+XG4gICAgICAgICAgICAgIEBpZihjb25maWcuaWNvbilcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgPGkgW25nQ2xhc3NdPVwiY29uZmlnLmljb25cIj48L2k+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtdHJ1bmNhdGUgYXgtZmxleC0xIGF4LXBlLTJcIj57e2NvbmZpZy50aXRsZX19IDoge3tpdGVtLm5hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1pbnZpc2libGUgZ3JvdXAtaG92ZXI6YXgtdmlzaWJsZSBheC1mbGV4IGF4LWdhcC0yICBheC1qdXN0aWZ5LWVuZCBcIj5cbiAgICAgICAgICAgICAgQGlmKGNvbmZpZy50eXBlPT0nY29udGFpbmVyJylcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1saWdodCBmYS1wbHVzIGhvdmVyOmF4LXRleHQtcHJpbWFyeS01MDBcIiAoY2xpY2spPVwic2VydmljZS5zaG93UGlja2VyKGl0ZW0pXCI+PC9pPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZihjb25maWcubmFtZSE9XCJwYWdlLWxheW91dFwiKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLWxpZ2h0IGZhLXhtYXJrICBob3ZlcjpheC10ZXh0LWRhbmdlci01MDBcIiAoY2xpY2spPVwic2VydmljZS5yZW1vdmVXaWRnZXQoaXRlbSlcIj48L2k+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIEBpZihpdGVtLmNoaWxkcmVuPy5sZW5ndGggJiYgIWlzQ29sbGFwc2VkKGl0ZW0pKSB7XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJheC1zcGFjZS15LTEgYXgtcHMtMyBheC10ZXh0LXdoaXRlIGF4LXRleHQtc21cIj5cbiAgICAgICAgICAgICAgQGZvciAoY2hpbGQgb2YgaXRlbS5jaGlsZHJlbjsgdHJhY2sgY2hpbGQpIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNpZGVNZW51XCJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY2hpbGQgfVwiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9saT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICA8ZGl2IGNsYXNzPVwiYXhwLWRlc2lnbmVyLWRyYXdlci1lbXB0eVwiPk5vIHdpZGdldHMgZm91bmQgaW4gdGhlIHBhZ2VcbiAgICA8L2Rpdj5cbiAgfVxuPC9heC1jb250ZW50PlxuXG48L2F4cC1kZXNpZ25lci1kcmF3ZXItY29udGVudD4iXX0=","import { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\nimport { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXPLayoutDesignerDrawerContentComponent } from '../../../shared/drawer-content/drawer-content.component';\nimport { AXPDesignerService } from '../../../shared/designer.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/decorators\";\nimport * as i2 from \"@acorex/components/button\";\nexport class AXPDesignerPagesComponent {\n constructor() {\n this.service = inject(AXPDesignerService);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerPagesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXPDesignerPagesComponent, isStandalone: true, selector: \"axp-designer-pages\", ngImport: i0, template: \"<axp-designer-drawer-content class=\\\"ax-text-on-lightest\\\">\\n <ax-title>Pages</ax-title>\\n <ax-content header>\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" (onClick)=\\\"service.addNewPage()\\\" title=\\\"Add New Page\\\">\\n <ax-icon class=\\\"fa-light fa-file-circle-plus\\\"></ax-icon>\\n </ax-button>\\n </ax-content>\\n\\n <ax-content body>\\n @let count = service.document().children?.length ?? 0; @if(count) {\\n <ul class=\\\"ax-text-sm ax-p-2 ax-rounded ax-md ax-space-y-1\\\">\\n @for( page of service.document().children;track $index) {\\n <li (click)=\\\"service.goToPage($index)\\\"\\n class=\\\"ax-cursor-pointer ax-transition ax-duration-150 ax-ease-in-out hover:ax-bg-dark ax-py-1 ax-px-2 ax-rounded-sm ax-group ax-flex ax-justify-between ax-items-center\\\"\\n [class.ax-bg-darkest]=\\\"$index == service.currentPageIndex()\\\">\\n <div>\\n <i class=\\\"fa-light fa-file ax-me-1\\\"></i>\\n Page {{ $index + 1 }}\\n </div>\\n <div class=\\\"ax-invisible group-hover:ax-visible ax-flex ax-gap-2\\\">\\n @if(count>1) {\\n <i class=\\\"fa-light fa-xmark hover:ax-text-danger-500\\\" (click)=\\\"service.removePage($index)\\\"></i>\\n }\\n <i class=\\\"fa-light fa-clone hover:ax-text-primary-500\\\" (click)=\\\"service.clonePage($index)\\\"></i>\\n </div>\\n </li>\\n }\\n </ul>\\n } @else {\\n <div class=\\\"ax-flex ax-justify-center ax-items-center ax-text-gray-300 ax-p-4\\\">No pages found in the document</div>\\n }\\n </ax-content>\\n</axp-designer-drawer-content>\\n\", dependencies: [{ kind: \"ngmodule\", type: AXPLayoutBuilderModule }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i1.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i1.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i2.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"component\", type: AXPLayoutDesignerDrawerContentComponent, selector: \"axp-designer-drawer-content\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerPagesComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-designer-pages', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [\n AXPLayoutBuilderModule,\n AXDecoratorModule,\n AXButtonModule,\n AXPLayoutDesignerDrawerContentComponent\n ], template: \"<axp-designer-drawer-content class=\\\"ax-text-on-lightest\\\">\\n <ax-title>Pages</ax-title>\\n <ax-content header>\\n <ax-button look=\\\"blank\\\" class=\\\"ax-sm\\\" (onClick)=\\\"service.addNewPage()\\\" title=\\\"Add New Page\\\">\\n <ax-icon class=\\\"fa-light fa-file-circle-plus\\\"></ax-icon>\\n </ax-button>\\n </ax-content>\\n\\n <ax-content body>\\n @let count = service.document().children?.length ?? 0; @if(count) {\\n <ul class=\\\"ax-text-sm ax-p-2 ax-rounded ax-md ax-space-y-1\\\">\\n @for( page of service.document().children;track $index) {\\n <li (click)=\\\"service.goToPage($index)\\\"\\n class=\\\"ax-cursor-pointer ax-transition ax-duration-150 ax-ease-in-out hover:ax-bg-dark ax-py-1 ax-px-2 ax-rounded-sm ax-group ax-flex ax-justify-between ax-items-center\\\"\\n [class.ax-bg-darkest]=\\\"$index == service.currentPageIndex()\\\">\\n <div>\\n <i class=\\\"fa-light fa-file ax-me-1\\\"></i>\\n Page {{ $index + 1 }}\\n </div>\\n <div class=\\\"ax-invisible group-hover:ax-visible ax-flex ax-gap-2\\\">\\n @if(count>1) {\\n <i class=\\\"fa-light fa-xmark hover:ax-text-danger-500\\\" (click)=\\\"service.removePage($index)\\\"></i>\\n }\\n <i class=\\\"fa-light fa-clone hover:ax-text-primary-500\\\" (click)=\\\"service.clonePage($index)\\\"></i>\\n </div>\\n </li>\\n }\\n </ul>\\n } @else {\\n <div class=\\\"ax-flex ax-justify-center ax-items-center ax-text-gray-300 ax-p-4\\\">No pages found in the document</div>\\n }\\n </ax-content>\\n</axp-designer-drawer-content>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZGVzaWduZXIvc3JjL2xpYi9kZXNpZ25lci9jb21wb25lbnRzL2RyYXdlcnMvcGFnZXMvcGFnZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZGVzaWduZXIvc3JjL2xpYi9kZXNpZ25lci9jb21wb25lbnRzL2RyYXdlcnMvcGFnZXMvcGFnZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFekUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSx1Q0FBdUMsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ2xILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7O0FBZXRFLE1BQU0sT0FBTyx5QkFBeUI7SUFidEM7UUFlYyxZQUFPLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7S0FFbEQ7OEdBSlkseUJBQXlCO2tHQUF6Qix5QkFBeUIsOEVDckJ0QyxraERBaUNBLDJDRG5CSSxzQkFBc0IsOEJBQ3RCLGlCQUFpQixzVkFDakIsY0FBYyw4WEFDZCx1Q0FBdUM7OzJGQUk5Qix5QkFBeUI7a0JBYnJDLFNBQVM7K0JBQ0ksb0JBQW9CLGlCQUVmLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7d0JBQ1Qsc0JBQXNCO3dCQUN0QixpQkFBaUI7d0JBQ2pCLGNBQWM7d0JBQ2QsdUNBQXVDO3FCQUMxQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUExheW91dEJ1aWxkZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcblxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhQTGF5b3V0RGVzaWduZXJEcmF3ZXJDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2RyYXdlci1jb250ZW50L2RyYXdlci1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBEZXNpZ25lclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGVzaWduZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXhwLWRlc2lnbmVyLXBhZ2VzJyxcbiAgICB0ZW1wbGF0ZVVybDogJ3BhZ2VzLmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGltcG9ydHM6IFtcbiAgICBBWFBMYXlvdXRCdWlsZGVyTW9kdWxlLFxuICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYUExheW91dERlc2lnbmVyRHJhd2VyQ29udGVudENvbXBvbmVudFxuXVxufSlcblxuZXhwb3J0IGNsYXNzIEFYUERlc2lnbmVyUGFnZXNDb21wb25lbnQge1xuXG4gICAgcHJvdGVjdGVkIHNlcnZpY2UgPSBpbmplY3QoQVhQRGVzaWduZXJTZXJ2aWNlKTtcblxufSIsIjxheHAtZGVzaWduZXItZHJhd2VyLWNvbnRlbnQgY2xhc3M9XCJheC10ZXh0LW9uLWxpZ2h0ZXN0XCI+XG4gIDxheC10aXRsZT5QYWdlczwvYXgtdGl0bGU+XG4gIDxheC1jb250ZW50IGhlYWRlcj5cbiAgICA8YXgtYnV0dG9uIGxvb2s9XCJibGFua1wiIGNsYXNzPVwiYXgtc21cIiAob25DbGljayk9XCJzZXJ2aWNlLmFkZE5ld1BhZ2UoKVwiIHRpdGxlPVwiQWRkIE5ldyBQYWdlXCI+XG4gICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLWxpZ2h0IGZhLWZpbGUtY2lyY2xlLXBsdXNcIj48L2F4LWljb24+XG4gICAgPC9heC1idXR0b24+XG4gIDwvYXgtY29udGVudD5cblxuICA8YXgtY29udGVudCBib2R5PlxuICAgIEBsZXQgY291bnQgPSBzZXJ2aWNlLmRvY3VtZW50KCkuY2hpbGRyZW4/Lmxlbmd0aCA/PyAwOyBAaWYoY291bnQpIHtcbiAgICA8dWwgY2xhc3M9XCJheC10ZXh0LXNtIGF4LXAtMiBheC1yb3VuZGVkIGF4LW1kIGF4LXNwYWNlLXktMVwiPlxuICAgICAgQGZvciggcGFnZSBvZiBzZXJ2aWNlLmRvY3VtZW50KCkuY2hpbGRyZW47dHJhY2sgJGluZGV4KSB7XG4gICAgICA8bGkgKGNsaWNrKT1cInNlcnZpY2UuZ29Ub1BhZ2UoJGluZGV4KVwiXG4gICAgICAgIGNsYXNzPVwiYXgtY3Vyc29yLXBvaW50ZXIgYXgtdHJhbnNpdGlvbiBheC1kdXJhdGlvbi0xNTAgYXgtZWFzZS1pbi1vdXQgaG92ZXI6YXgtYmctZGFyayBheC1weS0xIGF4LXB4LTIgYXgtcm91bmRlZC1zbSBheC1ncm91cCBheC1mbGV4IGF4LWp1c3RpZnktYmV0d2VlbiBheC1pdGVtcy1jZW50ZXJcIlxuICAgICAgICBbY2xhc3MuYXgtYmctZGFya2VzdF09XCIkaW5kZXggPT0gc2VydmljZS5jdXJyZW50UGFnZUluZGV4KClcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhLWxpZ2h0IGZhLWZpbGUgYXgtbWUtMVwiPjwvaT5cbiAgICAgICAgICBQYWdlIHt7ICRpbmRleCArIDEgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1pbnZpc2libGUgZ3JvdXAtaG92ZXI6YXgtdmlzaWJsZSBheC1mbGV4IGF4LWdhcC0yXCI+XG4gICAgICAgICAgQGlmKGNvdW50PjEpIHtcbiAgICAgICAgICA8aSBjbGFzcz1cImZhLWxpZ2h0IGZhLXhtYXJrIGhvdmVyOmF4LXRleHQtZGFuZ2VyLTUwMFwiIChjbGljayk9XCJzZXJ2aWNlLnJlbW92ZVBhZ2UoJGluZGV4KVwiPjwvaT5cbiAgICAgICAgICB9XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYS1saWdodCBmYS1jbG9uZSBob3ZlcjpheC10ZXh0LXByaW1hcnktNTAwXCIgKGNsaWNrKT1cInNlcnZpY2UuY2xvbmVQYWdlKCRpbmRleClcIj48L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9saT5cbiAgICAgIH1cbiAgICA8L3VsPlxuICAgIH0gQGVsc2Uge1xuICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWp1c3RpZnktY2VudGVyIGF4LWl0ZW1zLWNlbnRlciBheC10ZXh0LWdyYXktMzAwIGF4LXAtNFwiPk5vIHBhZ2VzIGZvdW5kIGluIHRoZSBkb2N1bWVudDwvZGl2PlxuICAgIH1cbiAgPC9heC1jb250ZW50PlxuPC9heHAtZGVzaWduZXItZHJhd2VyLWNvbnRlbnQ+XG4iXX0=","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXMenuModule } from '@acorex/components/menu';\nimport { Component, HostListener, inject } from '@angular/core';\nimport { AXPDesignerService } from '../../shared/designer.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/decorators\";\nimport * as i2 from \"@acorex/components/menu\";\nexport class AXPDesignerHeaderMenuComponent {\n constructor() {\n this.service = inject(AXPDesignerService);\n }\n handleKeyboardEvent(event) {\n if (event.code == 'Delete' && this.service.canDelete()) {\n event.preventDefault();\n this.service.removeWidget();\n }\n if (event.code == 'Insert' && this.service.canInsert()) {\n event.preventDefault();\n this.service.showPicker();\n }\n if (event.shiftKey && event.target == document.body) {\n switch (event.code) {\n case 'KeyN':\n event.preventDefault();\n this.service.new();\n break;\n }\n }\n if (event.ctrlKey) {\n switch (event.code) {\n case 'KeyS':\n event.preventDefault();\n if (event.shiftKey) {\n this.service.saveAs();\n }\n else {\n this.service.save();\n }\n break;\n case 'KeyR':\n event.preventDefault();\n if (event.shiftKey) {\n this.service.openPreviewWindow();\n }\n else {\n this.service.openPreviewDialog();\n }\n break;\n }\n }\n //\n if (event.ctrlKey && event.target == document.body) {\n switch (event.code) {\n case 'KeyZ':\n if (this.service.canUndo()) {\n event.preventDefault();\n this.service.undo();\n }\n break;\n case 'KeyY':\n if (this.service.canRedo()) {\n event.preventDefault();\n this.service.redo();\n }\n break;\n case 'KeyC':\n if (this.service.canCutCopy()) {\n event.preventDefault();\n this.service.copy();\n }\n break;\n case 'KeyD':\n if (this.service.canCutCopy()) {\n event.preventDefault();\n this.service.clone();\n }\n break;\n case 'KeyX':\n if (this.service.canCutCopy()) {\n // ;\n event.preventDefault();\n this.service.cut();\n }\n break;\n case 'KeyV':\n if (this.service.canPaste()) {\n event.preventDefault();\n this.service.paste();\n }\n break;\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerHeaderMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXPDesignerHeaderMenuComponent, isStandalone: true, selector: \"axp-designer-header-menu\", host: { listeners: { \"document:keydown\": \"handleKeyboardEvent($event)\" } }, ngImport: i0, template: \"<ax-menu [openOn]=\\\"'hover'\\\" [hasArrow]=\\\"false\\\">\\n <ax-menu-item>\\n <ax-text>File</ax-text>\\n <ax-menu-item (onClick)=\\\"service.new()\\\">\\n <ax-text>New</ax-text>\\n <ax-suffix>\\n <ax-text> Shift+N </ax-text>\\n </ax-suffix>\\n </ax-menu-item>\\n <ax-divider></ax-divider>\\n @if(service.canSave())\\n {\\n <ng-container>\\n <ax-menu-item (onClick)=\\\"service.save()\\\">\\n <ax-text>Save</ax-text>\\n <ax-suffix>\\n <ax-text> Ctrl+S </ax-text>\\n </ax-suffix>\\n </ax-menu-item>\\n <ax-menu-item (onClick)=\\\"service.saveAs()\\\">\\n <ax-text>Save As...</ax-text>\\n <ax-suffix>\\n <ax-text> Ctrl+Shift+S </ax-text>\\n </ax-suffix>\\n </ax-menu-item>\\n <ax-divider></ax-divider>\\n </ng-container>\\n }\\n <ax-menu-item>\\n <ax-text>Export</ax-text>\\n <ax-menu-item (onClick)=\\\"service.downloadJson()\\\">\\n <ax-text>Download JSON</ax-text>\\n </ax-menu-item>\\n </ax-menu-item>\\n <ax-menu-item>\\n <ax-text>Import</ax-text>\\n <ax-menu-item (onClick)=\\\"service.importJSon()\\\">\\n <ax-text>Import JSON</ax-text>\\n </ax-menu-item>\\n </ax-menu-item>\\n </ax-menu-item>\\n <ax-menu-item>\\n <ax-text>Edit</ax-text>\\n <ax-menu-item [disabled]=\\\"!service.canUndo()\\\" (onClick)=\\\"service.undo()\\\">\\n <ax-text>Undo</ax-text>\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-solid fa-rotate-left\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n <ax-suffix>\\n <ax-text> Ctrl+Z </ax-text>\\n </ax-suffix>\\n </ax-menu-item>\\n <ax-menu-item [disabled]=\\\"!service.canRedo()\\\" (onClick)=\\\"service.redo()\\\">\\n <ax-text>Redo</ax-text>\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-solid fa-rotate-right\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n <ax-suffix>\\n <ax-text> Ctrl+Y </ax-text>\\n </ax-suffix>\\n </ax-menu-item>\\n <ax-divider></ax-divider>\\n <ax-menu-item [disabled]=\\\"!service.canCutCopy()\\\" (onClick)=\\\"service.clone()\\\">\\n <ax-text>Clone</ax-text>\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-solid fa-clone\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n <ax-suffix>\\n <ax-text> Ctrl+D </ax-text>\\n </ax-suffix>\\n </ax-menu-item>\\n <ax-menu-item [disabled]=\\\"!service.canCutCopy()\\\" (onClick)=\\\"service.cut()\\\">\\n <ax-text>Cut</ax-text>\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-solid fa-cut\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n <ax-suffix>\\n <ax-text> Ctrl+X </ax-text>\\n </ax-suffix>\\n </ax-menu-item>\\n <ax-menu-item [disabled]=\\\"!service.canCutCopy()\\\" (onClick)=\\\"service.copy()\\\">\\n <ax-text>Copy</ax-text>\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-solid fa-copy\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n <ax-suffix>\\n <ax-text> Ctrl+C </ax-text>\\n </ax-suffix>\\n </ax-menu-item>\\n <ax-menu-item [disabled]=\\\"!service.canPaste()\\\" (onClick)=\\\"service.paste()\\\">\\n <ax-text>Paste</ax-text>\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-solid fa-paste\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n <ax-suffix>\\n <ax-text>Ctrl+V</ax-text>\\n </ax-suffix>\\n </ax-menu-item>\\n <ax-divider></ax-divider>\\n <ax-menu-item [disabled]=\\\"!service.canDelete()\\\" (onClick)=\\\"service.removeWidget()\\\">\\n <ax-text>Delete</ax-text>\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-solid fa-trash\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n <ax-suffix>\\n <ax-text>Del</ax-text>\\n </ax-suffix>\\n </ax-menu-item>\\n </ax-menu-item>\\n <ax-menu-item>\\n <ax-text>Run</ax-text>\\n <ax-menu-item (onClick)=\\\"service.openPreviewDialog()\\\">\\n <ax-text>Preview</ax-text>\\n <ax-prefix>\\n </ax-prefix>\\n <ax-suffix>\\n <ax-text>Ctrl+R</ax-text>\\n </ax-suffix>\\n </ax-menu-item>\\n <ax-menu-item (onClick)=\\\"service.openPreviewWindow()\\\">\\n <ax-text>Preview in seperate window</ax-text>\\n <ax-prefix> </ax-prefix>\\n <ax-suffix>\\n <ax-text>Ctrl+Shift+R</ax-text>\\n </ax-suffix>\\n </ax-menu-item>\\n </ax-menu-item>\\n <ax-menu-item>\\n <ax-text>Help</ax-text>\\n <ax-menu-item>\\n <ax-text>About</ax-text>\\n </ax-menu-item>\\n </ax-menu-item>\\n</ax-menu>\", dependencies: [{ kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i1.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i1.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXMenuModule }, { kind: \"component\", type: i2.AXMenuItemComponent, selector: \"ax-menu-item\", inputs: [\"name\", \"data\", \"disabled\", \"color\"], outputs: [\"onClick\"] }, { kind: \"component\", type: i2.AXMenuComponent, selector: \"ax-menu\", inputs: [\"orientation\", \"openOn\", \"closeOn\", \"items\", \"hasArrow\"], outputs: [\"onItemClick\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerHeaderMenuComponent, decorators: [{\n type: Component,\n args: [{ imports: [AXDecoratorModule, AXMenuModule], selector: 'axp-designer-header-menu', template: \"<ax-menu [openOn]=\\\"'hover'\\\" [hasArrow]=\\\"false\\\">\\n <ax-menu-item>\\n <ax-text>File</ax-text>\\n <ax-menu-item (onClick)=\\\"service.new()\\\">\\n <ax-text>New</ax-text>\\n <ax-suffix>\\n <ax-text> Shift+N </ax-text>\\n </ax-suffix>\\n </ax-menu-item>\\n <ax-divider></ax-divider>\\n @if(service.canSave())\\n {\\n <ng-container>\\n <ax-menu-item (onClick)=\\\"service.save()\\\">\\n <ax-text>Save</ax-text>\\n <ax-suffix>\\n <ax-text> Ctrl+S </ax-text>\\n </ax-suffix>\\n </ax-menu-item>\\n <ax-menu-item (onClick)=\\\"service.saveAs()\\\">\\n <ax-text>Save As...</ax-text>\\n <ax-suffix>\\n <ax-text> Ctrl+Shift+S </ax-text>\\n </ax-suffix>\\n </ax-menu-item>\\n <ax-divider></ax-divider>\\n </ng-container>\\n }\\n <ax-menu-item>\\n <ax-text>Export</ax-text>\\n <ax-menu-item (onClick)=\\\"service.downloadJson()\\\">\\n <ax-text>Download JSON</ax-text>\\n </ax-menu-item>\\n </ax-menu-item>\\n <ax-menu-item>\\n <ax-text>Import</ax-text>\\n <ax-menu-item (onClick)=\\\"service.importJSon()\\\">\\n <ax-text>Import JSON</ax-text>\\n </ax-menu-item>\\n </ax-menu-item>\\n </ax-menu-item>\\n <ax-menu-item>\\n <ax-text>Edit</ax-text>\\n <ax-menu-item [disabled]=\\\"!service.canUndo()\\\" (onClick)=\\\"service.undo()\\\">\\n <ax-text>Undo</ax-text>\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-solid fa-rotate-left\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n <ax-suffix>\\n <ax-text> Ctrl+Z </ax-text>\\n </ax-suffix>\\n </ax-menu-item>\\n <ax-menu-item [disabled]=\\\"!service.canRedo()\\\" (onClick)=\\\"service.redo()\\\">\\n <ax-text>Redo</ax-text>\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-solid fa-rotate-right\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n <ax-suffix>\\n <ax-text> Ctrl+Y </ax-text>\\n </ax-suffix>\\n </ax-menu-item>\\n <ax-divider></ax-divider>\\n <ax-menu-item [disabled]=\\\"!service.canCutCopy()\\\" (onClick)=\\\"service.clone()\\\">\\n <ax-text>Clone</ax-text>\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-solid fa-clone\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n <ax-suffix>\\n <ax-text> Ctrl+D </ax-text>\\n </ax-suffix>\\n </ax-menu-item>\\n <ax-menu-item [disabled]=\\\"!service.canCutCopy()\\\" (onClick)=\\\"service.cut()\\\">\\n <ax-text>Cut</ax-text>\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-solid fa-cut\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n <ax-suffix>\\n <ax-text> Ctrl+X </ax-text>\\n </ax-suffix>\\n </ax-menu-item>\\n <ax-menu-item [disabled]=\\\"!service.canCutCopy()\\\" (onClick)=\\\"service.copy()\\\">\\n <ax-text>Copy</ax-text>\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-solid fa-copy\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n <ax-suffix>\\n <ax-text> Ctrl+C </ax-text>\\n </ax-suffix>\\n </ax-menu-item>\\n <ax-menu-item [disabled]=\\\"!service.canPaste()\\\" (onClick)=\\\"service.paste()\\\">\\n <ax-text>Paste</ax-text>\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-solid fa-paste\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n <ax-suffix>\\n <ax-text>Ctrl+V</ax-text>\\n </ax-suffix>\\n </ax-menu-item>\\n <ax-divider></ax-divider>\\n <ax-menu-item [disabled]=\\\"!service.canDelete()\\\" (onClick)=\\\"service.removeWidget()\\\">\\n <ax-text>Delete</ax-text>\\n <ax-prefix>\\n <ax-icon>\\n <i class=\\\"fa-solid fa-trash\\\"></i>\\n </ax-icon>\\n </ax-prefix>\\n <ax-suffix>\\n <ax-text>Del</ax-text>\\n </ax-suffix>\\n </ax-menu-item>\\n </ax-menu-item>\\n <ax-menu-item>\\n <ax-text>Run</ax-text>\\n <ax-menu-item (onClick)=\\\"service.openPreviewDialog()\\\">\\n <ax-text>Preview</ax-text>\\n <ax-prefix>\\n </ax-prefix>\\n <ax-suffix>\\n <ax-text>Ctrl+R</ax-text>\\n </ax-suffix>\\n </ax-menu-item>\\n <ax-menu-item (onClick)=\\\"service.openPreviewWindow()\\\">\\n <ax-text>Preview in seperate window</ax-text>\\n <ax-prefix> </ax-prefix>\\n <ax-suffix>\\n <ax-text>Ctrl+Shift+R</ax-text>\\n </ax-suffix>\\n </ax-menu-item>\\n </ax-menu-item>\\n <ax-menu-item>\\n <ax-text>Help</ax-text>\\n <ax-menu-item>\\n <ax-text>About</ax-text>\\n </ax-menu-item>\\n </ax-menu-item>\\n</ax-menu>\" }]\n }], propDecorators: { handleKeyboardEvent: [{\n type: HostListener,\n args: ['document:keydown', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZGVzaWduZXIvc3JjL2xpYi9kZXNpZ25lci9jb21wb25lbnRzL2hlYWRlci1tZW51L2hlYWRlci1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2Rlc2lnbmVyL3NyYy9saWIvZGVzaWduZXIvY29tcG9uZW50cy9oZWFkZXItbWVudS9oZWFkZXItbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7O0FBT25FLE1BQU0sT0FBTyw4QkFBOEI7SUFMM0M7UUFNWSxZQUFPLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7S0FtRmhEO0lBaEZTLG1CQUFtQixDQUFDLEtBQW9CO1FBQzlDLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ3ZELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzlCLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUN2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QU07b0JBQ1QsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7d0JBQzVCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQzt3QkFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDdkIsQ0FBQztvQkFDRCxNQUFNO1lBQ1YsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOzhHQW5GVSw4QkFBOEI7a0dBQTlCLDhCQUE4QixnS0NYM0MsMjBJQW1KVSwyQ0Q1SUksaUJBQWlCLHNWQUFFLFlBQVk7OzJGQUloQyw4QkFBOEI7a0JBTDFDLFNBQVM7OEJBQ0csQ0FBQyxpQkFBaUIsRUFBRSxZQUFZLENBQUMsWUFDaEMsMEJBQTBCOzhCQU85QixtQkFBbUI7c0JBRDFCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYTWVudU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9tZW51JztcblxuaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQRGVzaWduZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Rlc2lnbmVyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBpbXBvcnRzOiBbQVhEZWNvcmF0b3JNb2R1bGUsIEFYTWVudU1vZHVsZV0sXG4gICAgc2VsZWN0b3I6ICdheHAtZGVzaWduZXItaGVhZGVyLW1lbnUnLFxuICAgIHRlbXBsYXRlVXJsOiAnaGVhZGVyLW1lbnUuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFYUERlc2lnbmVySGVhZGVyTWVudUNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBzZXJ2aWNlID0gaW5qZWN0KEFYUERlc2lnbmVyU2VydmljZSk7XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIHByaXZhdGUgaGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChldmVudC5jb2RlID09ICdEZWxldGUnICYmIHRoaXMuc2VydmljZS5jYW5EZWxldGUoKSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuc2VydmljZS5yZW1vdmVXaWRnZXQoKTtcbiAgICB9XG4gICAgaWYgKGV2ZW50LmNvZGUgPT0gJ0luc2VydCcgJiYgdGhpcy5zZXJ2aWNlLmNhbkluc2VydCgpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5zZXJ2aWNlLnNob3dQaWNrZXIoKTtcbiAgICB9XG4gICAgaWYgKGV2ZW50LnNoaWZ0S2V5ICYmIGV2ZW50LnRhcmdldCA9PSBkb2N1bWVudC5ib2R5KSB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcbiAgICAgICAgY2FzZSAnS2V5Tic6XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB0aGlzLnNlcnZpY2UubmV3KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsS2V5KSB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcbiAgICAgICAgY2FzZSAnS2V5Uyc6XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5zYXZlQXMoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnNhdmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0tleVInOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2Uub3BlblByZXZpZXdXaW5kb3coKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLm9wZW5QcmV2aWV3RGlhbG9nKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICAvL1xuICAgIGlmIChldmVudC5jdHJsS2V5ICYmIGV2ZW50LnRhcmdldCA9PSBkb2N1bWVudC5ib2R5KSB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcbiAgICAgICAgY2FzZSAnS2V5Wic6XG4gICAgICAgICAgaWYgKHRoaXMuc2VydmljZS5jYW5VbmRvKCkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UudW5kbygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnS2V5WSc6XG4gICAgICAgICAgaWYgKHRoaXMuc2VydmljZS5jYW5SZWRvKCkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UucmVkbygpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnS2V5Qyc6XG4gICAgICAgICAgaWYgKHRoaXMuc2VydmljZS5jYW5DdXRDb3B5KCkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UuY29weSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnS2V5RCc6XG4gICAgICAgICAgaWYgKHRoaXMuc2VydmljZS5jYW5DdXRDb3B5KCkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UuY2xvbmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0tleVgnOlxuICAgICAgICAgIGlmICh0aGlzLnNlcnZpY2UuY2FuQ3V0Q29weSgpKSB7XG4gICAgICAgICAgICAvLyA7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLmN1dCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnS2V5Vic6XG4gICAgICAgICAgaWYgKHRoaXMuc2VydmljZS5jYW5QYXN0ZSgpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnBhc3RlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiPGF4LW1lbnUgW29wZW5Pbl09XCInaG92ZXInXCIgW2hhc0Fycm93XT1cImZhbHNlXCI+XG4gIDxheC1tZW51LWl0ZW0+XG4gICAgPGF4LXRleHQ+RmlsZTwvYXgtdGV4dD5cbiAgICA8YXgtbWVudS1pdGVtIChvbkNsaWNrKT1cInNlcnZpY2UubmV3KClcIj5cbiAgICAgIDxheC10ZXh0Pk5ldzwvYXgtdGV4dD5cbiAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgIDxheC10ZXh0PiBTaGlmdCtOIDwvYXgtdGV4dD5cbiAgICAgIDwvYXgtc3VmZml4PlxuICAgIDwvYXgtbWVudS1pdGVtPlxuICAgIDxheC1kaXZpZGVyPjwvYXgtZGl2aWRlcj5cbiAgICBAaWYoc2VydmljZS5jYW5TYXZlKCkpXG4gICAge1xuICAgIDxuZy1jb250YWluZXI+XG4gICAgICA8YXgtbWVudS1pdGVtIChvbkNsaWNrKT1cInNlcnZpY2Uuc2F2ZSgpXCI+XG4gICAgICAgIDxheC10ZXh0PlNhdmU8L2F4LXRleHQ+XG4gICAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgICAgPGF4LXRleHQ+IEN0cmwrUyA8L2F4LXRleHQ+XG4gICAgICAgIDwvYXgtc3VmZml4PlxuICAgICAgPC9heC1tZW51LWl0ZW0+XG4gICAgICA8YXgtbWVudS1pdGVtIChvbkNsaWNrKT1cInNlcnZpY2Uuc2F2ZUFzKClcIj5cbiAgICAgICAgPGF4LXRleHQ+U2F2ZSBBcy4uLjwvYXgtdGV4dD5cbiAgICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgICA8YXgtdGV4dD4gQ3RybCtTaGlmdCtTIDwvYXgtdGV4dD5cbiAgICAgICAgPC9heC1zdWZmaXg+XG4gICAgICA8L2F4LW1lbnUtaXRlbT5cbiAgICAgIDxheC1kaXZpZGVyPjwvYXgtZGl2aWRlcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICB9XG4gICAgPGF4LW1lbnUtaXRlbT5cbiAgICAgIDxheC10ZXh0PkV4cG9ydDwvYXgtdGV4dD5cbiAgICAgIDxheC1tZW51LWl0ZW0gKG9uQ2xpY2spPVwic2VydmljZS5kb3dubG9hZEpzb24oKVwiPlxuICAgICAgICA8YXgtdGV4dD5Eb3dubG9hZCBKU09OPC9heC10ZXh0PlxuICAgICAgPC9heC1tZW51LWl0ZW0+XG4gICAgPC9heC1tZW51LWl0ZW0+XG4gICAgPGF4LW1lbnUtaXRlbT5cbiAgICAgIDxheC10ZXh0PkltcG9ydDwvYXgtdGV4dD5cbiAgICAgIDxheC1tZW51LWl0ZW0gKG9uQ2xpY2spPVwic2VydmljZS5pbXBvcnRKU29uKClcIj5cbiAgICAgICAgPGF4LXRleHQ+SW1wb3J0IEpTT048L2F4LXRleHQ+XG4gICAgICA8L2F4LW1lbnUtaXRlbT5cbiAgICA8L2F4LW1lbnUtaXRlbT5cbiAgPC9heC1tZW51LWl0ZW0+XG4gIDxheC1tZW51LWl0ZW0+XG4gICAgPGF4LXRleHQ+RWRpdDwvYXgtdGV4dD5cbiAgICA8YXgtbWVudS1pdGVtIFtkaXNhYmxlZF09XCIhc2VydmljZS5jYW5VbmRvKClcIiAob25DbGljayk9XCJzZXJ2aWNlLnVuZG8oKVwiPlxuICAgICAgPGF4LXRleHQ+VW5kbzwvYXgtdGV4dD5cbiAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgIDxheC1pY29uPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtcm90YXRlLWxlZnRcIj48L2k+XG4gICAgICAgIDwvYXgtaWNvbj5cbiAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgPGF4LXRleHQ+IEN0cmwrWiA8L2F4LXRleHQ+XG4gICAgICA8L2F4LXN1ZmZpeD5cbiAgICA8L2F4LW1lbnUtaXRlbT5cbiAgICA8YXgtbWVudS1pdGVtIFtkaXNhYmxlZF09XCIhc2VydmljZS5jYW5SZWRvKClcIiAob25DbGljayk9XCJzZXJ2aWNlLnJlZG8oKVwiPlxuICAgICAgPGF4LXRleHQ+UmVkbzwvYXgtdGV4dD5cbiAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgIDxheC1pY29uPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtcm90YXRlLXJpZ2h0XCI+PC9pPlxuICAgICAgICA8L2F4LWljb24+XG4gICAgICA8L2F4LXByZWZpeD5cbiAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgIDxheC10ZXh0PiBDdHJsK1kgPC9heC10ZXh0PlxuICAgICAgPC9heC1zdWZmaXg+XG4gICAgPC9heC1tZW51LWl0ZW0+XG4gICAgPGF4LWRpdmlkZXI+PC9heC1kaXZpZGVyPlxuICAgIDxheC1tZW51LWl0ZW0gW2Rpc2FibGVkXT1cIiFzZXJ2aWNlLmNhbkN1dENvcHkoKVwiIChvbkNsaWNrKT1cInNlcnZpY2UuY2xvbmUoKVwiPlxuICAgICAgPGF4LXRleHQ+Q2xvbmU8L2F4LXRleHQ+XG4gICAgICA8YXgtcHJlZml4PlxuICAgICAgICA8YXgtaWNvbj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWNsb25lXCI+PC9pPlxuICAgICAgICA8L2F4LWljb24+XG4gICAgICA8L2F4LXByZWZpeD5cbiAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgIDxheC10ZXh0PiBDdHJsK0QgPC9heC10ZXh0PlxuICAgICAgPC9heC1zdWZmaXg+XG4gICAgPC9heC1tZW51LWl0ZW0+XG4gICAgPGF4LW1lbnUtaXRlbSBbZGlzYWJsZWRdPVwiIXNlcnZpY2UuY2FuQ3V0Q29weSgpXCIgKG9uQ2xpY2spPVwic2VydmljZS5jdXQoKVwiPlxuICAgICAgPGF4LXRleHQ+Q3V0PC9heC10ZXh0PlxuICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgPGF4LWljb24+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1jdXRcIj48L2k+XG4gICAgICAgIDwvYXgtaWNvbj5cbiAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgPGF4LXRleHQ+IEN0cmwrWCA8L2F4LXRleHQ+XG4gICAgICA8L2F4LXN1ZmZpeD5cbiAgICA8L2F4LW1lbnUtaXRlbT5cbiAgICA8YXgtbWVudS1pdGVtIFtkaXNhYmxlZF09XCIhc2VydmljZS5jYW5DdXRDb3B5KClcIiAob25DbGljayk9XCJzZXJ2aWNlLmNvcHkoKVwiPlxuICAgICAgPGF4LXRleHQ+Q29weTwvYXgtdGV4dD5cbiAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgIDxheC1pY29uPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtY29weVwiPjwvaT5cbiAgICAgICAgPC9heC1pY29uPlxuICAgICAgPC9heC1wcmVmaXg+XG4gICAgICA8YXgtc3VmZml4PlxuICAgICAgICA8YXgtdGV4dD4gQ3RybCtDIDwvYXgtdGV4dD5cbiAgICAgIDwvYXgtc3VmZml4PlxuICAgIDwvYXgtbWVudS1pdGVtPlxuICAgIDxheC1tZW51LWl0ZW0gW2Rpc2FibGVkXT1cIiFzZXJ2aWNlLmNhblBhc3RlKClcIiAob25DbGljayk9XCJzZXJ2aWNlLnBhc3RlKClcIj5cbiAgICAgIDxheC10ZXh0PlBhc3RlPC9heC10ZXh0PlxuICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgPGF4LWljb24+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1wYXN0ZVwiPjwvaT5cbiAgICAgICAgPC9heC1pY29uPlxuICAgICAgPC9heC1wcmVmaXg+XG4gICAgICA8YXgtc3VmZml4PlxuICAgICAgICA8YXgtdGV4dD5DdHJsK1Y8L2F4LXRleHQ+XG4gICAgICA8L2F4LXN1ZmZpeD5cbiAgICA8L2F4LW1lbnUtaXRlbT5cbiAgICA8YXgtZGl2aWRlcj48L2F4LWRpdmlkZXI+XG4gICAgPGF4LW1lbnUtaXRlbSBbZGlzYWJsZWRdPVwiIXNlcnZpY2UuY2FuRGVsZXRlKClcIiAob25DbGljayk9XCJzZXJ2aWNlLnJlbW92ZVdpZGdldCgpXCI+XG4gICAgICA8YXgtdGV4dD5EZWxldGU8L2F4LXRleHQ+XG4gICAgICA8YXgtcHJlZml4PlxuICAgICAgICA8YXgtaWNvbj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLXRyYXNoXCI+PC9pPlxuICAgICAgICA8L2F4LWljb24+XG4gICAgICA8L2F4LXByZWZpeD5cbiAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgIDxheC10ZXh0PkRlbDwvYXgtdGV4dD5cbiAgICAgIDwvYXgtc3VmZml4PlxuICAgIDwvYXgtbWVudS1pdGVtPlxuICA8L2F4LW1lbnUtaXRlbT5cbiAgPGF4LW1lbnUtaXRlbT5cbiAgICA8YXgtdGV4dD5SdW48L2F4LXRleHQ+XG4gICAgPGF4LW1lbnUtaXRlbSAob25DbGljayk9XCJzZXJ2aWNlLm9wZW5QcmV2aWV3RGlhbG9nKClcIj5cbiAgICAgIDxheC10ZXh0PlByZXZpZXc8L2F4LXRleHQ+XG4gICAgICA8YXgtcHJlZml4PlxuICAgICAgPC9heC1wcmVmaXg+XG4gICAgICA8YXgtc3VmZml4PlxuICAgICAgICA8YXgtdGV4dD5DdHJsK1I8L2F4LXRleHQ+XG4gICAgICA8L2F4LXN1ZmZpeD5cbiAgICA8L2F4LW1lbnUtaXRlbT5cbiAgICA8YXgtbWVudS1pdGVtIChvbkNsaWNrKT1cInNlcnZpY2Uub3BlblByZXZpZXdXaW5kb3coKVwiPlxuICAgICAgPGF4LXRleHQ+UHJldmlldyBpbiBzZXBlcmF0ZSB3aW5kb3c8L2F4LXRleHQ+XG4gICAgICA8YXgtcHJlZml4PiA8L2F4LXByZWZpeD5cbiAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgIDxheC10ZXh0PkN0cmwrU2hpZnQrUjwvYXgtdGV4dD5cbiAgICAgIDwvYXgtc3VmZml4PlxuICAgIDwvYXgtbWVudS1pdGVtPlxuICA8L2F4LW1lbnUtaXRlbT5cbiAgPGF4LW1lbnUtaXRlbT5cbiAgICA8YXgtdGV4dD5IZWxwPC9heC10ZXh0PlxuICAgIDxheC1tZW51LWl0ZW0+XG4gICAgICA8YXgtdGV4dD5BYm91dDwvYXgtdGV4dD5cbiAgICA8L2F4LW1lbnUtaXRlbT5cbiAgPC9heC1tZW51LWl0ZW0+XG48L2F4LW1lbnU+Il19","import { AXButtonGroupModule } from '@acorex/components/button-group';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXMenuModule } from '@acorex/components/menu';\nimport { Component, model } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/button-group\";\nimport * as i2 from \"@acorex/components/decorators\";\nexport class AXPDesignerViewSizeToolbarComponent {\n constructor() {\n this.size = model('xl');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerViewSizeToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.0.4\", type: AXPDesignerViewSizeToolbarComponent, isStandalone: true, selector: \"axp-designer-view-sizes\", inputs: { size: { classPropertyName: \"size\", publicName: \"size\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { size: \"sizeChange\" }, ngImport: i0, template: `\n <ax-button-group [color]=\"'primary'\" [selection]=\"'multiple'\">\n <ax-button-group-item [selected]=\"size() == 'xl'\" [data]=\"'xl'\" (onClick)=\"size.set('xl')\">\n <ax-icon class=\"fa-light fa-desktop fa-fw \"></ax-icon>\n </ax-button-group-item>\n <ax-button-group-item [selected]=\"size() == 'lg'\" [data]=\"'lg'\" (onClick)=\"size.set('lg')\">\n <ax-icon class=\"fa-light fa-tablet fa-fw \"></ax-icon>\n </ax-button-group-item>\n <ax-button-group-item [selected]=\"size() == 'sm'\" [data]=\"'sm'\" (onClick)=\"size.set('sm')\">\n <ax-icon class=\"fa-light fa-mobile fa-fw \"></ax-icon>\n </ax-button-group-item>\n </ax-button-group>\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: AXButtonGroupModule }, { kind: \"component\", type: i1.AXButtonGroupComponent, selector: \"ax-button-group\", inputs: [\"disabled\", \"color\", \"look\", \"selection\"], outputs: [\"onBlur\", \"onFocus\", \"lookChange\", \"colorChange\", \"disabledChange\", \"onClick\", \"selectionChange\", \"selectedButtonChange\"] }, { kind: \"component\", type: i1.AXButtonGroupItemComponent, selector: \"ax-button-group-item\", inputs: [\"color\", \"disabled\", \"text\", \"selected\", \"divided\", \"data\", \"name\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\", \"disabledChange\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i2.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"ngmodule\", type: AXMenuModule }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDesignerViewSizeToolbarComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axp-designer-view-sizes',\n imports: [AXButtonGroupModule, AXDecoratorModule, AXMenuModule],\n template: `\n <ax-button-group [color]=\"'primary'\" [selection]=\"'multiple'\">\n <ax-button-group-item [selected]=\"size() == 'xl'\" [data]=\"'xl'\" (onClick)=\"size.set('xl')\">\n <ax-icon class=\"fa-light fa-desktop fa-fw \"></ax-icon>\n </ax-button-group-item>\n <ax-button-group-item [selected]=\"size() == 'lg'\" [data]=\"'lg'\" (onClick)=\"size.set('lg')\">\n <ax-icon class=\"fa-light fa-tablet fa-fw \"></ax-icon>\n </ax-button-group-item>\n <ax-button-group-item [selected]=\"size() == 'sm'\" [data]=\"'sm'\" (onClick)=\"size.set('sm')\">\n <ax-icon class=\"fa-light fa-mobile fa-fw \"></ax-icon>\n </ax-button-group-item>\n </ax-button-group>\n `,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1zaXplLXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZGVzaWduZXIvc3JjL2xpYi9kZXNpZ25lci9jb21wb25lbnRzL3NpemUtbW9kZS92aWV3LXNpemUtdG9vbGJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXZELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBbUJqRCxNQUFNLE9BQU8sbUNBQW1DO0lBakJoRDtRQWtCUyxTQUFJLEdBQUcsS0FBSyxDQUFTLElBQUksQ0FBQyxDQUFDO0tBQ25DOzhHQUZZLG1DQUFtQztrR0FBbkMsbUNBQW1DLHFQQWRwQzs7Ozs7Ozs7Ozs7O0dBWVQsMkRBYlMsbUJBQW1CLHFoQkFBRSxpQkFBaUIsK0hBQUUsWUFBWTs7MkZBZW5ELG1DQUFtQztrQkFqQi9DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsT0FBTyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxDQUFDO29CQUMvRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7OztHQVlUO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCdXR0b25Hcm91cE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24tZ3JvdXAnO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWE1lbnVNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbWVudSc7XG5cbmltcG9ydCB7IENvbXBvbmVudCwgbW9kZWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhwLWRlc2lnbmVyLXZpZXctc2l6ZXMnLFxuICBpbXBvcnRzOiBbQVhCdXR0b25Hcm91cE1vZHVsZSwgQVhEZWNvcmF0b3JNb2R1bGUsIEFYTWVudU1vZHVsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGF4LWJ1dHRvbi1ncm91cCBbY29sb3JdPVwiJ3ByaW1hcnknXCIgW3NlbGVjdGlvbl09XCInbXVsdGlwbGUnXCI+XG4gICAgICA8YXgtYnV0dG9uLWdyb3VwLWl0ZW0gIFtzZWxlY3RlZF09XCJzaXplKCkgPT0gJ3hsJ1wiIFtkYXRhXT1cIid4bCdcIiAob25DbGljayk9XCJzaXplLnNldCgneGwnKVwiPlxuICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLWxpZ2h0IGZhLWRlc2t0b3AgZmEtZncgXCI+PC9heC1pY29uPlxuICAgICAgPC9heC1idXR0b24tZ3JvdXAtaXRlbT5cbiAgICAgIDxheC1idXR0b24tZ3JvdXAtaXRlbSBbc2VsZWN0ZWRdPVwic2l6ZSgpID09ICdsZydcIiBbZGF0YV09XCInbGcnXCIgKG9uQ2xpY2spPVwic2l6ZS5zZXQoJ2xnJylcIj5cbiAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1saWdodCBmYS10YWJsZXQgZmEtZncgXCI+PC9heC1pY29uPlxuICAgICAgPC9heC1idXR0b24tZ3JvdXAtaXRlbT5cbiAgICAgIDxheC1idXR0b24tZ3JvdXAtaXRlbSBbc2VsZWN0ZWRdPVwic2l6ZSgpID09ICdzbSdcIiBbZGF0YV09XCInc20nXCIgKG9uQ2xpY2spPVwic2l6ZS5zZXQoJ3NtJylcIj5cbiAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1saWdodCBmYS1tb2JpbGUgZmEtZncgXCI+PC9heC1pY29uPlxuICAgICAgPC9heC1idXR0b24tZ3JvdXAtaXRlbT5cbiAgICA8L2F4LWJ1dHRvbi1ncm91cD5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgQVhQRGVzaWduZXJWaWV3U2l6ZVRvb2xiYXJDb21wb25lbnQge1xuICBwdWJsaWMgc2l6ZSA9IG1vZGVsPHN0cmluZz4oJ3hsJyk7XG59XG4iXX0=","import { AXButtonModule } from '@acorex/components/button';\nimport { AXButtonGroupModule } from '@acorex/components/button-group';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDrawerModule } from '@acorex/components/drawer';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXMenuModule } from '@acorex/components/menu';\nimport { AXTabsModule } from '@acorex/components/tabs';\nimport { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { Component, computed, HostBinding, inject, input, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { get } from 'lodash-es';\nimport { AXPWidgetPropertyViewerComponent } from '../property-viewer/widget-property-viewer.component';\nimport { AXPDesignerBoardComponent } from './components/board/board.component';\nimport { AXPDesignerBreadcrumbsComponent } from './components/breadcrumbs/breadcrumbs.component';\nimport { AXPDesignerDataSourcesComponent } from './components/drawers/data-sources/data-sources.component';\nimport { AXPDesignerHistoryComponent } from './components/drawers/history/history.component';\nimport { AXPDesignerOutlineComponent } from './components/drawers/outline/outline.component';\nimport { AXPDesignerPagesComponent } from './components/drawers/pages/pages.component';\nimport { AXPDesignerHeaderMenuComponent } from './components/header-menu/header-menu.component';\nimport { AXPDesignerViewSizeToolbarComponent } from './components/size-mode/view-size-toolbar.component';\nimport { AXPDesignerService } from './shared/designer.service';\nimport { AXPTemplateLoadingStrategy } from './shared/designer.types';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/components/button\";\nimport * as i3 from \"@acorex/components/drawer\";\nimport * as i4 from \"@acorex/components/decorators\";\nimport * as i5 from \"@acorex/components/dropdown-button\";\nexport class AXPLayoutDesignerComponent {\n constructor() {\n this.service = inject(AXPDesignerService);\n this.id = input();\n this.strategy = input();\n this.nodeConfig = computed(() => this.service.selectedNode() ? get(this.service.selectedNode(), '__meta__.config') : null);\n this.service.onUpdate.subscribe((e) => {\n this.propertyViewer.update(e.values);\n });\n }\n ngOnInit() {\n if (this.id()) {\n this.service.loadById(this.id(), { strategy: (this.strategy() ?? AXPTemplateLoadingStrategy.Connector) });\n }\n }\n get __styles() {\n const styles = {};\n styles[`direction`] = 'ltr';\n return styles;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPLayoutDesignerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.0.4\", type: AXPLayoutDesignerComponent, isStandalone: true, selector: \"axp-layout-designer\", inputs: { id: { classPropertyName: \"id\", publicName: \"id\", isSignal: true, isRequired: false, transformFunction: null }, strategy: { classPropertyName: \"strategy\", publicName: \"strategy\", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { \"style\": \"this.__styles\" } }, providers: [AXPDesignerService], viewQueries: [{ propertyName: \"propertyViewer\", first: true, predicate: AXPWidgetPropertyViewerComponent, descendants: true, static: true }], ngImport: i0, template: \"<ax-drawer-container class=\\\"ax-h-full ax-w-full ax-flex ax-relative ax-overflow-hidden\\\">\\n <ax-content class=\\\"ax-contents\\\">\\n <!-- Toolbar Side -->\\n <div class=\\\"ax-min-w-10 ax-bg-lightest ax-border-e ax-sm ax-flex ax-flex-col ax-items-center ax-dark\\\">\\n <div class=\\\"ax-min-w-10 ax-h-10 ax-flex ax-items-center ax-justify-center ax-border-b\\\">\\n <img src=\\\"assets/logos/logo-light.svg\\\" class=\\\"ax-w-6\\\" />\\n </div>\\n <div class=\\\"ax-py-1\\\"></div>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-2\\\">\\n <!-- <ax-button look=\\\"blank\\\">\\n <ax-icon class=\\\"fa-solid fa-puzzle ax-text-sm\\\"> </ax-icon>\\n </ax-button> -->\\n <ax-button look=\\\"blank\\\" (onClick)=\\\"pages.toggle()\\\" title=\\\"Pages\\\">\\n <ax-icon class=\\\"fa-solid fa-page ax-text-sm\\\"> </ax-icon>\\n </ax-button>\\n <ax-button look=\\\"blank\\\" (onClick)=\\\"datasources.toggle()\\\" title=\\\"Data Sources\\\">\\n <ax-icon class=\\\"fa-solid fa-database ax-text-sm\\\"> </ax-icon>\\n </ax-button>\\n <ax-button look=\\\"blank\\\" (onClick)=\\\"outline.toggle()\\\" title=\\\"Outline\\\">\\n <ax-icon class=\\\"fa-solid fa-list-tree ax-text-sm\\\"> </ax-icon>\\n </ax-button>\\n <ax-button look=\\\"blank\\\" (onClick)=\\\"history.toggle()\\\" title=\\\"History\\\">\\n <ax-icon class=\\\"fa-solid fa-clock-rotate-left ax-text-sm\\\"> </ax-icon>\\n </ax-button>\\n <!-- <ax-button look=\\\"blank\\\" title=\\\"Timeline\\\">\\n <ax-icon class=\\\"fa-solid fa-diagram-sankey ax-text-sm\\\"> </ax-icon>\\n </ax-button> -->\\n </div>\\n </div>\\n <!-- Main Side -->\\n <div class=\\\"ax-col-span-10 ax-flex ax-flex-col ax-flex-1\\\">\\n <!-- Header Toolbar -->\\n <div class=\\\"ax-h-10 ax-bg-lightest ax-border-b ax-flex ax-justify-between ax-px-2 ax-dark\\\">\\n <div class=\\\"ax-flex ax-flex-1 ax-items-center ax-text-white ax-justify-start\\\">\\n <axp-designer-header-menu></axp-designer-header-menu>\\n </div>\\n <div class=\\\"ax-flex ax-flex-1 ax-flex-row ax-gap-2 ax-sm ax-items-center ax-justify-center\\\">\\n <axp-designer-view-sizes [(size)]=\\\"service.size\\\"></axp-designer-view-sizes>\\n </div>\\n <div class=\\\"ax-flex ax-flex-1 ax-flex-row ax-gap-2 ax-sm ax-items-center ax-justify-end\\\">\\n <ax-dropdown-button\\n mode=\\\"split\\\"\\n look=\\\"solid\\\"\\n text=\\\"Preview\\\"\\n class=\\\"ax-sm\\\"\\n (onClick)=\\\"service.openPreviewDialog()\\\"\\n >\\n <ax-button-item-list>\\n <ax-button-item text=\\\"Open in new window\\\" (onClick)=\\\"service.openPreviewWindow()\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-regular fa-window-restore\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-button>\\n </div>\\n </div>\\n <!-- Board -->\\n <ax-drawer-container class=\\\"ax-w-full ax-flex-1\\\">\\n <!-- Pages -->\\n <ax-drawer #pages location=\\\"start\\\" mode=\\\"push\\\" class=\\\"ax-dark ax-bg-lightest\\\">\\n <ax-content>\\n <axp-designer-pages></axp-designer-pages>\\n </ax-content>\\n </ax-drawer>\\n <!-- Datasources -->\\n <ax-drawer #datasources location=\\\"start\\\" mode=\\\"push\\\" class=\\\"ax-dark ax-bg-lightest\\\">\\n <ax-content>\\n <axp-designer-data-sources></axp-designer-data-sources>\\n </ax-content>\\n </ax-drawer>\\n <!-- Outline Pnael -->\\n <ax-drawer #outline location=\\\"start\\\" mode=\\\"push\\\" class=\\\"ax-dark ax-bg-lightest\\\">\\n <ax-content>\\n <axp-designer-outline></axp-designer-outline>\\n </ax-content>\\n </ax-drawer>\\n <!-- History Pnael -->\\n <ax-drawer #history location=\\\"start\\\" mode=\\\"push\\\" class=\\\"ax-dark ax-bg-lightest\\\">\\n <ax-content>\\n <axp-designer-history></axp-designer-history>\\n </ax-content>\\n </ax-drawer>\\n <!-- Content of board -->\\n <ax-content class=\\\"ax-light ax-bg-lighter ax-flex ax-justify-center ax-p-10\\\">\\n <axp-designer-board class=\\\"ax-rounded-lg ax-bg-lightest ax-shadow-md\\\"> </axp-designer-board>\\n </ax-content>\\n </ax-drawer-container>\\n <!-- Footer -->\\n <div class=\\\"ax-h-10 ax-bg-lightest ax-border-t ax-flex ax-items-center ax-dark\\\">\\n <axp-designer-breadcrumbs class=\\\"ax-border-default ax-border-t ax-p-2 ax-font-normal\\\">\\n </axp-designer-breadcrumbs>\\n </div>\\n </div>\\n </ax-content>\\n <!-- Property Side -->\\n <ax-drawer class=\\\"ax-dark axp-designer-prop-side\\\" location=\\\"end\\\" mode=\\\"push\\\" [collapsed]=\\\"false\\\" #pd>\\n <ax-content>\\n <div class=\\\"ax-flex ax-flex-row ax-w-full ax-justify-between ax-text-white ax-px-4 ax-border-b ax-h-10\\\">\\n <div class=\\\"ax-flex ax-flex-row ax-gap-2 ax-items-center\\\">\\n <i [ngClass]=\\\"nodeConfig()?.icon\\\"></i>\\n <span class=\\\"ax-font-semibold\\\">{{ nodeConfig()?.title }}</span>\\n </div>\\n </div>\\n <axp-widget-property-viewer\\n [widget]=\\\"service.selectedNode()!\\\"\\n style=\\\"--ax-sys-size-base: 1.875rem\\\"\\n (onChanged)=\\\"service.update({ values: $event.values, mode: $event.mode })\\\"\\n class=\\\"ax-w-1/4\\\"\\n >\\n </axp-widget-property-viewer>\\n </ax-content>\\n </ax-drawer>\\n</ax-drawer-container>\\n\", styles: [\"axp-layout-designer .axp-designer-board{background-color:#fff;background-image:linear-gradient(45deg,#f0f0f0 25%,transparent 25%,transparent 75%,#f0f0f0 75%,#f0f0f0),linear-gradient(45deg,#f0f0f0 25%,#fff 25%,#fff 75%,#f0f0f0 75%,#f0f0f0);background-size:20px 20px;background-position:0 0,10px 10px;display:block;height:100%;width:100%;overflow:auto;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-surface),var(--tw-bg-opacity, 1));padding:.75rem}axp-layout-designer .axp-designer-board ax-drawer{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lightest-surface),var(--tw-bg-opacity, 1))}axp-layout-designer .axp-designer-board.axp-state-design .ax-widget-outline{outline-style:dashed;outline-width:1px;outline-offset:2px;outline-color:#d1d5db}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host{cursor:pointer;position:relative}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-selected{outline-style:solid;outline-width:2px;outline-offset:1px;outline-color:rgba(var(--ax-sys-color-lightest-surface),1);outline-color:#60a5fa}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-selected.ax-widget-container{outline-offset:2px}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-hover{outline-style:dashed;outline-width:2px;outline-offset:2px;outline-color:#d946ef}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-hover.axp-state-selected{outline-color:#60a5fa}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-hover.ax-widget-container{outline-offset:4px}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host .axp-widget-overlay{position:absolute;left:0;top:0;right:0;bottom:0;z-index:2000;height:100%;width:100%}axp-layout-designer .axp-designer-board .axp-empty-space{display:flex;flex:1 1 0%;cursor:default;align-items:center;justify-content:center;background-color:rgba(var(--ax-sys-color-primary-300),10%);background-image:linear-gradient(135deg,rgba(var(--ax-sys-color-primary-300),50%) 10%,transparent 0,transparent 50%,rgba(var(--ax-sys-color-primary-300),50%) 0,rgba(var(--ax-sys-color-primary-300),50%) 60%,transparent 0,transparent);background-size:7.5px 7.5px;height:100%}axp-layout-designer .axp-designer-board .axp-page-widget-header,axp-layout-designer .axp-designer-board .axp-page-widget-footer{filter:grayscale(100%);opacity:.5}axp-layout-designer .axp-designer-board .axp-page-widget-header:hover,axp-layout-designer .axp-designer-board .axp-page-widget-footer:hover{filter:grayscale(0);opacity:1}axp-layout-designer .axp-designer-board .axp-page-widget-header{margin-bottom:.5rem}axp-layout-designer .axp-designer-board .axp-page-widget-footer{margin-top:.5rem}axp-layout-designer .axp-designer-prop-side{width:20rem;border-inline-start-width:1px;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-lightest-surface),var(--tw-text-opacity, 1))}axp-designer-drawer-content ul.axp-designer-drawer-list>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}axp-designer-drawer-content ul.axp-designer-drawer-list{padding:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}axp-designer-drawer-content ul.axp-designer-drawer-list li{cursor:pointer;border-radius:.125rem;padding:.25rem .5rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation-duration:.15s;animation-timing-function:cubic-bezier(.4,0,.2,1)}axp-designer-drawer-content ul.axp-designer-drawer-list li:hover:not(.axp-designer-drawer-list){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}axp-designer-drawer-content ul.axp-designer-drawer-list li.ax-state-selected{--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity, 1))}axp-designer-drawer-content .axp-designer-drawer-empty{display:flex;align-items:center;justify-content:center;padding:1rem;--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"ngmodule\", type: AXPLayoutBuilderModule }, { kind: \"component\", type: AXPDesignerBoardComponent, selector: \"axp-designer-board\" }, { kind: \"component\", type: AXPWidgetPropertyViewerComponent, selector: \"axp-widget-property-viewer\", inputs: [\"widget\", \"mode\"], outputs: [\"onChanged\"] }, { kind: \"component\", type: AXPDesignerBreadcrumbsComponent, selector: \"axp-designer-breadcrumbs\" }, { kind: \"component\", type: AXPDesignerOutlineComponent, selector: \"axp-designer-outline\" }, { kind: \"component\", type: AXPDesignerHeaderMenuComponent, selector: \"axp-designer-header-menu\" }, { kind: \"component\", type: AXPDesignerHistoryComponent, selector: \"axp-designer-history\" }, { kind: \"component\", type: AXPDesignerDataSourcesComponent, selector: \"axp-designer-data-sources\" }, { kind: \"component\", type: AXPDesignerPagesComponent, selector: \"axp-designer-pages\" }, { kind: \"component\", type: AXPDesignerViewSizeToolbarComponent, selector: \"axp-designer-view-sizes\", inputs: [\"size\"], outputs: [\"sizeChange\"] }, { kind: \"ngmodule\", type: AXTabsModule }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i2.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"component\", type: i2.AXButtonItemComponent, selector: \"ax-button-item\", inputs: [\"color\", \"disabled\", \"text\", \"selected\", \"divided\", \"data\", \"name\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\", \"disabledChange\"] }, { kind: \"component\", type: i2.AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXDrawerModule }, { kind: \"component\", type: i3.AXDrawerComponent, selector: \"ax-drawer\", inputs: [\"location\", \"showBackdrop\", \"mode\", \"closeOthers\", \"collapsed\"], outputs: [\"locationChange\", \"modeChange\", \"collapsedChange\"] }, { kind: \"component\", type: i3.AXDrawerContainerComponent, selector: \"ax-drawer-container\" }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i4.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i4.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXMenuModule }, { kind: \"ngmodule\", type: AXButtonGroupModule }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"ngmodule\", type: AXDropdownButtonModule }, { kind: \"component\", type: i5.AXDropdownButtonComponent, selector: \"ax-dropdown-button\", inputs: [\"disabled\", \"size\", \"color\", \"look\", \"text\", \"type\", \"mode\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"lookChange\", \"colorChange\", \"disabledChange\"] }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPLayoutDesignerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-layout-designer', encapsulation: ViewEncapsulation.None, imports: [\n CommonModule,\n AXPLayoutBuilderModule,\n AXPDesignerBoardComponent,\n AXPWidgetPropertyViewerComponent,\n AXPDesignerBreadcrumbsComponent,\n AXPDesignerOutlineComponent,\n AXPDesignerHeaderMenuComponent,\n AXPDesignerHistoryComponent,\n AXPDesignerDataSourcesComponent,\n AXPDesignerPagesComponent,\n AXPDesignerViewSizeToolbarComponent,\n AXTabsModule,\n AXButtonModule,\n AXDrawerModule,\n AXDecoratorModule,\n AXMenuModule,\n AXButtonGroupModule,\n AXDropdownModule,\n AXDropdownButtonModule,\n ], providers: [AXPDesignerService], template: \"<ax-drawer-container class=\\\"ax-h-full ax-w-full ax-flex ax-relative ax-overflow-hidden\\\">\\n <ax-content class=\\\"ax-contents\\\">\\n <!-- Toolbar Side -->\\n <div class=\\\"ax-min-w-10 ax-bg-lightest ax-border-e ax-sm ax-flex ax-flex-col ax-items-center ax-dark\\\">\\n <div class=\\\"ax-min-w-10 ax-h-10 ax-flex ax-items-center ax-justify-center ax-border-b\\\">\\n <img src=\\\"assets/logos/logo-light.svg\\\" class=\\\"ax-w-6\\\" />\\n </div>\\n <div class=\\\"ax-py-1\\\"></div>\\n <div class=\\\"ax-flex ax-flex-col ax-gap-2\\\">\\n <!-- <ax-button look=\\\"blank\\\">\\n <ax-icon class=\\\"fa-solid fa-puzzle ax-text-sm\\\"> </ax-icon>\\n </ax-button> -->\\n <ax-button look=\\\"blank\\\" (onClick)=\\\"pages.toggle()\\\" title=\\\"Pages\\\">\\n <ax-icon class=\\\"fa-solid fa-page ax-text-sm\\\"> </ax-icon>\\n </ax-button>\\n <ax-button look=\\\"blank\\\" (onClick)=\\\"datasources.toggle()\\\" title=\\\"Data Sources\\\">\\n <ax-icon class=\\\"fa-solid fa-database ax-text-sm\\\"> </ax-icon>\\n </ax-button>\\n <ax-button look=\\\"blank\\\" (onClick)=\\\"outline.toggle()\\\" title=\\\"Outline\\\">\\n <ax-icon class=\\\"fa-solid fa-list-tree ax-text-sm\\\"> </ax-icon>\\n </ax-button>\\n <ax-button look=\\\"blank\\\" (onClick)=\\\"history.toggle()\\\" title=\\\"History\\\">\\n <ax-icon class=\\\"fa-solid fa-clock-rotate-left ax-text-sm\\\"> </ax-icon>\\n </ax-button>\\n <!-- <ax-button look=\\\"blank\\\" title=\\\"Timeline\\\">\\n <ax-icon class=\\\"fa-solid fa-diagram-sankey ax-text-sm\\\"> </ax-icon>\\n </ax-button> -->\\n </div>\\n </div>\\n <!-- Main Side -->\\n <div class=\\\"ax-col-span-10 ax-flex ax-flex-col ax-flex-1\\\">\\n <!-- Header Toolbar -->\\n <div class=\\\"ax-h-10 ax-bg-lightest ax-border-b ax-flex ax-justify-between ax-px-2 ax-dark\\\">\\n <div class=\\\"ax-flex ax-flex-1 ax-items-center ax-text-white ax-justify-start\\\">\\n <axp-designer-header-menu></axp-designer-header-menu>\\n </div>\\n <div class=\\\"ax-flex ax-flex-1 ax-flex-row ax-gap-2 ax-sm ax-items-center ax-justify-center\\\">\\n <axp-designer-view-sizes [(size)]=\\\"service.size\\\"></axp-designer-view-sizes>\\n </div>\\n <div class=\\\"ax-flex ax-flex-1 ax-flex-row ax-gap-2 ax-sm ax-items-center ax-justify-end\\\">\\n <ax-dropdown-button\\n mode=\\\"split\\\"\\n look=\\\"solid\\\"\\n text=\\\"Preview\\\"\\n class=\\\"ax-sm\\\"\\n (onClick)=\\\"service.openPreviewDialog()\\\"\\n >\\n <ax-button-item-list>\\n <ax-button-item text=\\\"Open in new window\\\" (onClick)=\\\"service.openPreviewWindow()\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-regular fa-window-restore\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ax-dropdown-button>\\n </div>\\n </div>\\n <!-- Board -->\\n <ax-drawer-container class=\\\"ax-w-full ax-flex-1\\\">\\n <!-- Pages -->\\n <ax-drawer #pages location=\\\"start\\\" mode=\\\"push\\\" class=\\\"ax-dark ax-bg-lightest\\\">\\n <ax-content>\\n <axp-designer-pages></axp-designer-pages>\\n </ax-content>\\n </ax-drawer>\\n <!-- Datasources -->\\n <ax-drawer #datasources location=\\\"start\\\" mode=\\\"push\\\" class=\\\"ax-dark ax-bg-lightest\\\">\\n <ax-content>\\n <axp-designer-data-sources></axp-designer-data-sources>\\n </ax-content>\\n </ax-drawer>\\n <!-- Outline Pnael -->\\n <ax-drawer #outline location=\\\"start\\\" mode=\\\"push\\\" class=\\\"ax-dark ax-bg-lightest\\\">\\n <ax-content>\\n <axp-designer-outline></axp-designer-outline>\\n </ax-content>\\n </ax-drawer>\\n <!-- History Pnael -->\\n <ax-drawer #history location=\\\"start\\\" mode=\\\"push\\\" class=\\\"ax-dark ax-bg-lightest\\\">\\n <ax-content>\\n <axp-designer-history></axp-designer-history>\\n </ax-content>\\n </ax-drawer>\\n <!-- Content of board -->\\n <ax-content class=\\\"ax-light ax-bg-lighter ax-flex ax-justify-center ax-p-10\\\">\\n <axp-designer-board class=\\\"ax-rounded-lg ax-bg-lightest ax-shadow-md\\\"> </axp-designer-board>\\n </ax-content>\\n </ax-drawer-container>\\n <!-- Footer -->\\n <div class=\\\"ax-h-10 ax-bg-lightest ax-border-t ax-flex ax-items-center ax-dark\\\">\\n <axp-designer-breadcrumbs class=\\\"ax-border-default ax-border-t ax-p-2 ax-font-normal\\\">\\n </axp-designer-breadcrumbs>\\n </div>\\n </div>\\n </ax-content>\\n <!-- Property Side -->\\n <ax-drawer class=\\\"ax-dark axp-designer-prop-side\\\" location=\\\"end\\\" mode=\\\"push\\\" [collapsed]=\\\"false\\\" #pd>\\n <ax-content>\\n <div class=\\\"ax-flex ax-flex-row ax-w-full ax-justify-between ax-text-white ax-px-4 ax-border-b ax-h-10\\\">\\n <div class=\\\"ax-flex ax-flex-row ax-gap-2 ax-items-center\\\">\\n <i [ngClass]=\\\"nodeConfig()?.icon\\\"></i>\\n <span class=\\\"ax-font-semibold\\\">{{ nodeConfig()?.title }}</span>\\n </div>\\n </div>\\n <axp-widget-property-viewer\\n [widget]=\\\"service.selectedNode()!\\\"\\n style=\\\"--ax-sys-size-base: 1.875rem\\\"\\n (onChanged)=\\\"service.update({ values: $event.values, mode: $event.mode })\\\"\\n class=\\\"ax-w-1/4\\\"\\n >\\n </axp-widget-property-viewer>\\n </ax-content>\\n </ax-drawer>\\n</ax-drawer-container>\\n\", styles: [\"axp-layout-designer .axp-designer-board{background-color:#fff;background-image:linear-gradient(45deg,#f0f0f0 25%,transparent 25%,transparent 75%,#f0f0f0 75%,#f0f0f0),linear-gradient(45deg,#f0f0f0 25%,#fff 25%,#fff 75%,#f0f0f0 75%,#f0f0f0);background-size:20px 20px;background-position:0 0,10px 10px;display:block;height:100%;width:100%;overflow:auto;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-surface),var(--tw-bg-opacity, 1));padding:.75rem}axp-layout-designer .axp-designer-board ax-drawer{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lightest-surface),var(--tw-bg-opacity, 1))}axp-layout-designer .axp-designer-board.axp-state-design .ax-widget-outline{outline-style:dashed;outline-width:1px;outline-offset:2px;outline-color:#d1d5db}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host{cursor:pointer;position:relative}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-selected{outline-style:solid;outline-width:2px;outline-offset:1px;outline-color:rgba(var(--ax-sys-color-lightest-surface),1);outline-color:#60a5fa}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-selected.ax-widget-container{outline-offset:2px}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-hover{outline-style:dashed;outline-width:2px;outline-offset:2px;outline-color:#d946ef}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-hover.axp-state-selected{outline-color:#60a5fa}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host.axp-state-hover.ax-widget-container{outline-offset:4px}axp-layout-designer .axp-designer-board.axp-state-design .axp-widget-host .axp-widget-overlay{position:absolute;left:0;top:0;right:0;bottom:0;z-index:2000;height:100%;width:100%}axp-layout-designer .axp-designer-board .axp-empty-space{display:flex;flex:1 1 0%;cursor:default;align-items:center;justify-content:center;background-color:rgba(var(--ax-sys-color-primary-300),10%);background-image:linear-gradient(135deg,rgba(var(--ax-sys-color-primary-300),50%) 10%,transparent 0,transparent 50%,rgba(var(--ax-sys-color-primary-300),50%) 0,rgba(var(--ax-sys-color-primary-300),50%) 60%,transparent 0,transparent);background-size:7.5px 7.5px;height:100%}axp-layout-designer .axp-designer-board .axp-page-widget-header,axp-layout-designer .axp-designer-board .axp-page-widget-footer{filter:grayscale(100%);opacity:.5}axp-layout-designer .axp-designer-board .axp-page-widget-header:hover,axp-layout-designer .axp-designer-board .axp-page-widget-footer:hover{filter:grayscale(0);opacity:1}axp-layout-designer .axp-designer-board .axp-page-widget-header{margin-bottom:.5rem}axp-layout-designer .axp-designer-board .axp-page-widget-footer{margin-top:.5rem}axp-layout-designer .axp-designer-prop-side{width:20rem;border-inline-start-width:1px;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lightest-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-lightest-surface),var(--tw-text-opacity, 1))}axp-designer-drawer-content ul.axp-designer-drawer-list>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}axp-designer-drawer-content ul.axp-designer-drawer-list{padding:.25rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}axp-designer-drawer-content ul.axp-designer-drawer-list li{cursor:pointer;border-radius:.125rem;padding:.25rem .5rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation-duration:.15s;animation-timing-function:cubic-bezier(.4,0,.2,1)}axp-designer-drawer-content ul.axp-designer-drawer-list li:hover:not(.axp-designer-drawer-list){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}axp-designer-drawer-content ul.axp-designer-drawer-list li.ax-state-selected{--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity, 1))}axp-designer-drawer-content .axp-designer-drawer-empty{display:flex;align-items:center;justify-content:center;padding:1rem;--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}\\n\"] }]\n }], ctorParameters: () => [], propDecorators: { propertyViewer: [{\n type: ViewChild,\n args: [AXPWidgetPropertyViewerComponent, { static: true }]\n }], __styles: [{\n type: HostBinding,\n args: ['style']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZGVzaWduZXIvc3JjL2xpYi9kZXNpZ25lci9kZXNpZ25lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL2Rlc2lnbmVyL2Rlc2lnbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQW1CLE1BQU0saUNBQWlDLENBQUM7QUFDMUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxN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Qjt3QkFDL0IseUJBQXlCO3dCQUN6QixtQ0FBbUM7d0JBQ25DLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIsc0JBQXNCO3FCQUN2QixhQUNVLENBQUMsa0JBQWtCLENBQUM7d0RBU3ZCLGNBQWM7c0JBRHJCLFNBQVM7dUJBQUMsZ0NBQWdDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQW9CakQsUUFBUTtzQkFEbkIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYQnV0dG9uR3JvdXBNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uLWdyb3VwJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcmF3ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJhd2VyJztcbmltcG9ydCB7IEFYRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgQVhEcm9wZG93bkJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bi1idXR0b24nO1xuaW1wb3J0IHsgQVhNZW51TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL21lbnUnO1xuaW1wb3J0IHsgQVhUYWJzTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RhYnMnO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSwgQVhQV2lkZ2V0Q29uZmlnIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgSG9zdEJpbmRpbmcsIGluamVjdCwgaW5wdXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBWFBXaWRnZXRQcm9wZXJ0eVZpZXdlckNvbXBvbmVudCB9IGZyb20gJy4uL3Byb3BlcnR5LXZpZXdlci93aWRnZXQtcHJvcGVydHktdmlld2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBEZXNpZ25lckJvYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2JvYXJkL2JvYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBEZXNpZ25lckJyZWFkY3J1bWJzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2JyZWFkY3J1bWJzL2JyZWFkY3J1bWJzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBEZXNpZ25lckRhdGFTb3VyY2VzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2RyYXdlcnMvZGF0YS1zb3VyY2VzL2RhdGEtc291cmNlcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhQRGVzaWduZXJIaXN0b3J5Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2RyYXdlcnMvaGlzdG9yeS9oaXN0b3J5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBEZXNpZ25lck91dGxpbmVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZHJhd2Vycy9vdXRsaW5lL291dGxpbmUuY29tcG9uZW50JztcbmltcG9ydCB7IEFYUERlc2lnbmVyUGFnZXNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZHJhd2Vycy9wYWdlcy9wYWdlcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhQRGVzaWduZXJIZWFkZXJNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2hlYWRlci1tZW51L2hlYWRlci1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBEZXNpZ25lclZpZXdTaXplVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zaXplLW1vZGUvdmlldy1zaXplLXRvb2xiYXIuY29tcG9uZW50JztcbmltcG9ydCB7IEFYUERlc2lnbmVyU2VydmljZSB9IGZyb20gJy4vc2hhcmVkL2Rlc2lnbmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQVGVtcGxhdGVMb2FkaW5nU3RyYXRlZ3kgfSBmcm9tICcuL3NoYXJlZC9kZXNpZ25lci50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1sYXlvdXQtZGVzaWduZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGVzaWduZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZGVzaWduZXIuY29tcG9uZW50LnNjc3MnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFYUExheW91dEJ1aWxkZXJNb2R1bGUsXG4gICAgQVhQRGVzaWduZXJCb2FyZENvbXBvbmVudCxcbiAgICBBWFBXaWRnZXRQcm9wZXJ0eVZpZXdlckNvbXBvbmVudCxcbiAgICBBWFBEZXNpZ25lckJyZWFkY3J1bWJzQ29tcG9uZW50LFxuICAgIEFYUERlc2lnbmVyT3V0bGluZUNvbXBvbmVudCxcbiAgICBBWFBEZXNpZ25lckhlYWRlck1lbnVDb21wb25lbnQsXG4gICAgQVhQRGVzaWduZXJIaXN0b3J5Q29tcG9uZW50LFxuICAgIEFYUERlc2lnbmVyRGF0YVNvdXJjZXNDb21wb25lbnQsXG4gICAgQVhQRGVzaWduZXJQYWdlc0NvbXBvbmVudCxcbiAgICBBWFBEZXNpZ25lclZpZXdTaXplVG9vbGJhckNvbXBvbmVudCxcbiAgICBBWFRhYnNNb2R1bGUsXG4gICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgQVhEcmF3ZXJNb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhNZW51TW9kdWxlLFxuICAgIEFYQnV0dG9uR3JvdXBNb2R1bGUsXG4gICAgQVhEcm9wZG93bk1vZHVsZSxcbiAgICBBWERyb3Bkb3duQnV0dG9uTW9kdWxlLFxuICBdLFxuICBwcm92aWRlcnM6IFtBWFBEZXNpZ25lclNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIEFYUExheW91dERlc2lnbmVyQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIHNlcnZpY2UgPSBpbmplY3QoQVhQRGVzaWduZXJTZXJ2aWNlKTtcblxuICBpZCA9IGlucHV0PHN0cmluZyB8IG51bGw+KCk7XG4gIHN0cmF0ZWd5ID0gaW5wdXQ8c3RyaW5nIHwgbnVsbD4oKTtcblxuICBAVmlld0NoaWxkKEFYUFdpZGdldFByb3BlcnR5Vmlld2VyQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwcml2YXRlIHByb3BlcnR5Vmlld2VyOiBBWFBXaWRnZXRQcm9wZXJ0eVZpZXdlckNvbXBvbmVudDtcblxuICBwcm90ZWN0ZWQgbm9kZUNvbmZpZyA9IGNvbXB1dGVkPEFYUFdpZGdldENvbmZpZyB8IG51bGw+KCgpID0+XG4gICAgdGhpcy5zZXJ2aWNlLnNlbGVjdGVkTm9kZSgpID8gKGdldCh0aGlzLnNlcnZpY2Uuc2VsZWN0ZWROb2RlKCksICdfX21ldGFfXy5jb25maWcnKSBhcyBhbnkgYXMgQVhQV2lkZ2V0Q29uZmlnKSA6IG51bGxcbiAgKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNlcnZpY2Uub25VcGRhdGUuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICB0aGlzLnByb3BlcnR5Vmlld2VyLnVwZGF0ZShlLnZhbHVlcyk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5pZCgpKSB7XG4gICAgICB0aGlzLnNlcnZpY2UubG9hZEJ5SWQodGhpcy5pZCgpISwgeyBzdHJhdGVneTogKHRoaXMuc3RyYXRlZ3koKSA/PyBBWFBUZW1wbGF0ZUxvYWRpbmdTdHJhdGVneS5Db25uZWN0b3IpIGFzIEFYUFRlbXBsYXRlTG9hZGluZ1N0cmF0ZWd5IH0pO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUnKVxuICBwcml2YXRlIGdldCBfX3N0eWxlcygpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0eWxlczogYW55ID0ge307XG4gICAgc3R5bGVzW2BkaXJlY3Rpb25gXSA9ICdsdHInO1xuICAgIHJldHVybiBzdHlsZXM7XG4gIH1cbn1cbiIsIjxheC1kcmF3ZXItY29udGFpbmVyIGNsYXNzPVwiYXgtaC1mdWxsIGF4LXctZnVsbCBheC1mbGV4IGF4LXJlbGF0aXZlIGF4LW92ZXJmbG93LWhpZGRlblwiPlxuICA8YXgtY29udGVudCBjbGFzcz1cImF4LWNvbnRlbnRzXCI+XG4gICAgPCEtLSBUb29sYmFyIFNpZGUgLS0+XG4gICAgPGRpdiBjbGFzcz1cImF4LW1pbi13LTEwIGF4LWJnLWxpZ2h0ZXN0IGF4LWJvcmRlci1lIGF4LXNtIGF4LWZsZXggYXgtZmxleC1jb2wgYXgtaXRlbXMtY2VudGVyIGF4LWRhcmtcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1taW4tdy0xMCBheC1oLTEwIGF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyIGF4LWJvcmRlci1iXCI+XG4gICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2xvZ29zL2xvZ28tbGlnaHQuc3ZnXCIgY2xhc3M9XCJheC13LTZcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtcHktMVwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTJcIj5cbiAgICAgICAgPCEtLSA8YXgtYnV0dG9uICBsb29rPVwiYmxhbmtcIj5cbiAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLXNvbGlkIGZhLXB1enpsZSBheC10ZXh0LXNtXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgPC9heC1idXR0b24+IC0tPlxuICAgICAgICA8YXgtYnV0dG9uIGxvb2s9XCJibGFua1wiIChvbkNsaWNrKT1cInBhZ2VzLnRvZ2dsZSgpXCIgdGl0bGU9XCJQYWdlc1wiPlxuICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEtcGFnZSBheC10ZXh0LXNtXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIDxheC1idXR0b24gbG9vaz1cImJsYW5rXCIgKG9uQ2xpY2spPVwiZGF0YXNvdXJjZXMudG9nZ2xlKClcIiB0aXRsZT1cIkRhdGEgU291cmNlc1wiPlxuICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEtZGF0YWJhc2UgYXgtdGV4dC1zbVwiPiA8L2F4LWljb24+XG4gICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICA8YXgtYnV0dG9uIGxvb2s9XCJibGFua1wiIChvbkNsaWNrKT1cIm91dGxpbmUudG9nZ2xlKClcIiB0aXRsZT1cIk91dGxpbmVcIj5cbiAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLXNvbGlkIGZhLWxpc3QtdHJlZSBheC10ZXh0LXNtXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIDxheC1idXR0b24gbG9vaz1cImJsYW5rXCIgKG9uQ2xpY2spPVwiaGlzdG9yeS50b2dnbGUoKVwiIHRpdGxlPVwiSGlzdG9yeVwiPlxuICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEtY2xvY2stcm90YXRlLWxlZnQgYXgtdGV4dC1zbVwiPiA8L2F4LWljb24+XG4gICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICA8IS0tIDxheC1idXR0b24gIGxvb2s9XCJibGFua1wiIHRpdGxlPVwiVGltZWxpbmVcIj5cbiAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLXNvbGlkIGZhLWRpYWdyYW0tc2Fua2V5IGF4LXRleHQtc21cIj4gPC9heC1pY29uPlxuICAgICAgICA8L2F4LWJ1dHRvbj4gLS0+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIE1haW4gU2lkZSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtY29sLXNwYW4tMTAgYXgtZmxleCBheC1mbGV4LWNvbCBheC1mbGV4LTFcIj5cbiAgICAgIDwhLS0gSGVhZGVyIFRvb2xiYXIgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtaC0xMCBheC1iZy1saWdodGVzdCBheC1ib3JkZXItYiBheC1mbGV4IGF4LWp1c3RpZnktYmV0d2VlbiBheC1weC0yIGF4LWRhcmtcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC0xIGF4LWl0ZW1zLWNlbnRlciBheC10ZXh0LXdoaXRlIGF4LWp1c3RpZnktc3RhcnRcIj5cbiAgICAgICAgICA8YXhwLWRlc2lnbmVyLWhlYWRlci1tZW51PjwvYXhwLWRlc2lnbmVyLWhlYWRlci1tZW51PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC0xIGF4LWZsZXgtcm93IGF4LWdhcC0yIGF4LXNtIGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgIDxheHAtZGVzaWduZXItdmlldy1zaXplcyBbKHNpemUpXT1cInNlcnZpY2Uuc2l6ZVwiPjwvYXhwLWRlc2lnbmVyLXZpZXctc2l6ZXM+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LTEgYXgtZmxleC1yb3cgYXgtZ2FwLTIgYXgtc20gYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktZW5kXCI+XG4gICAgICAgICAgPGF4LWRyb3Bkb3duLWJ1dHRvblxuICAgICAgICAgICAgbW9kZT1cInNwbGl0XCJcbiAgICAgICAgICAgIGxvb2s9XCJzb2xpZFwiXG4gICAgICAgICAgICB0ZXh0PVwiUHJldmlld1wiXG4gICAgICAgICAgICBjbGFzcz1cImF4LXNtXCJcbiAgICAgICAgICAgIChvbkNsaWNrKT1cInNlcnZpY2Uub3BlblByZXZpZXdEaWFsb2coKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICAgIDxheC1idXR0b24taXRlbSB0ZXh0PVwiT3BlbiBpbiBuZXcgd2luZG93XCIgKG9uQ2xpY2spPVwic2VydmljZS5vcGVuUHJldmlld1dpbmRvdygpXCI+XG4gICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1yZWd1bGFyIGZhLXdpbmRvdy1yZXN0b3JlXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgPC9heC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgIDwvYXgtZHJvcGRvd24tYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBCb2FyZCAtLT5cbiAgICAgIDxheC1kcmF3ZXItY29udGFpbmVyIGNsYXNzPVwiYXgtdy1mdWxsIGF4LWZsZXgtMVwiPlxuICAgICAgICA8IS0tIFBhZ2VzIC0tPlxuICAgICAgICA8YXgtZHJhd2VyICNwYWdlcyBsb2NhdGlvbj1cInN0YXJ0XCIgbW9kZT1cInB1c2hcIiBjbGFzcz1cImF4LWRhcmsgYXgtYmctbGlnaHRlc3RcIj5cbiAgICAgICAgICA8YXgtY29udGVudD5cbiAgICAgICAgICAgIDxheHAtZGVzaWduZXItcGFnZXM+PC9heHAtZGVzaWduZXItcGFnZXM+XG4gICAgICAgICAgPC9heC1jb250ZW50PlxuICAgICAgICA8L2F4LWRyYXdlcj5cbiAgICAgICAgPCEtLSBEYXRhc291cmNlcyAtLT5cbiAgICAgICAgPGF4LWRyYXdlciAjZGF0YXNvdXJjZXMgbG9jYXRpb249XCJzdGFydFwiIG1vZGU9XCJwdXNoXCIgY2xhc3M9XCJheC1kYXJrIGF4LWJnLWxpZ2h0ZXN0XCI+XG4gICAgICAgICAgPGF4LWNvbnRlbnQ+XG4gICAgICAgICAgICA8YXhwLWRlc2lnbmVyLWRhdGEtc291cmNlcz48L2F4cC1kZXNpZ25lci1kYXRhLXNvdXJjZXM+XG4gICAgICAgICAgPC9heC1jb250ZW50PlxuICAgICAgICA8L2F4LWRyYXdlcj5cbiAgICAgICAgPCEtLSBPdXRsaW5lIFBuYWVsIC0tPlxuICAgICAgICA8YXgtZHJhd2VyICNvdXRsaW5lIGxvY2F0aW9uPVwic3RhcnRcIiBtb2RlPVwicHVzaFwiIGNsYXNzPVwiYXgtZGFyayBheC1iZy1saWdodGVzdFwiPlxuICAgICAgICAgIDxheC1jb250ZW50PlxuICAgICAgICAgICAgPGF4cC1kZXNpZ25lci1vdXRsaW5lPjwvYXhwLWRlc2lnbmVyLW91dGxpbmU+XG4gICAgICAgICAgPC9heC1jb250ZW50PlxuICAgICAgICA8L2F4LWRyYXdlcj5cbiAgICAgICAgPCEtLSBIaXN0b3J5IFBuYWVsIC0tPlxuICAgICAgICA8YXgtZHJhd2VyICNoaXN0b3J5IGxvY2F0aW9uPVwic3RhcnRcIiBtb2RlPVwicHVzaFwiIGNsYXNzPVwiYXgtZGFyayBheC1iZy1saWdodGVzdFwiPlxuICAgICAgICAgIDxheC1jb250ZW50PlxuICAgICAgICAgICAgPGF4cC1kZXNpZ25lci1oaXN0b3J5PjwvYXhwLWRlc2lnbmVyLWhpc3Rvcnk+XG4gICAgICAgICAgPC9heC1jb250ZW50PlxuICAgICAgICA8L2F4LWRyYXdlcj5cbiAgICAgICAgPCEtLSBDb250ZW50IG9mIGJvYXJkIC0tPlxuICAgICAgICA8YXgtY29udGVudCBjbGFzcz1cImF4LWxpZ2h0IGF4LWJnLWxpZ2h0ZXIgYXgtZmxleCBheC1qdXN0aWZ5LWNlbnRlciBheC1wLTEwXCI+XG4gICAgICAgICAgPGF4cC1kZXNpZ25lci1ib2FyZCBjbGFzcz1cImF4LXJvdW5kZWQtbGcgYXgtYmctbGlnaHRlc3QgYXgtc2hhZG93LW1kXCI+IDwvYXhwLWRlc2lnbmVyLWJvYXJkPlxuICAgICAgICA8L2F4LWNvbnRlbnQ+XG4gICAgICA8L2F4LWRyYXdlci1jb250YWluZXI+XG4gICAgICA8IS0tIEZvb3RlciAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1oLTEwIGF4LWJnLWxpZ2h0ZXN0IGF4LWJvcmRlci10IGF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWRhcmtcIj5cbiAgICAgICAgPGF4cC1kZXNpZ25lci1icmVhZGNydW1icyBjbGFzcz1cImF4LWJvcmRlci1kZWZhdWx0IGF4LWJvcmRlci10IGF4LXAtMiBheC1mb250LW5vcm1hbFwiPlxuICAgICAgICA8L2F4cC1kZXNpZ25lci1icmVhZGNydW1icz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2F4LWNvbnRlbnQ+XG4gIDwhLS0gUHJvcGVydHkgU2lkZSAtLT5cbiAgPGF4LWRyYXdlciBjbGFzcz1cImF4LWRhcmsgYXhwLWRlc2lnbmVyLXByb3Atc2lkZVwiIGxvY2F0aW9uPVwiZW5kXCIgbW9kZT1cInB1c2hcIiBbY29sbGFwc2VkXT1cImZhbHNlXCIgI3BkPlxuICAgIDxheC1jb250ZW50PlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1yb3cgYXgtdy1mdWxsIGF4LWp1c3RpZnktYmV0d2VlbiBheC10ZXh0LXdoaXRlIGF4LXB4LTQgYXgtYm9yZGVyLWIgYXgtaC0xMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LXJvdyBheC1nYXAtMiBheC1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8aSBbbmdDbGFzc109XCJub2RlQ29uZmlnKCk/Lmljb25cIj48L2k+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC1mb250LXNlbWlib2xkXCI+e3sgbm9kZUNvbmZpZygpPy50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxheHAtd2lkZ2V0LXByb3BlcnR5LXZpZXdlclxuICAgICAgICBbd2lkZ2V0XT1cInNlcnZpY2Uuc2VsZWN0ZWROb2RlKCkhXCJcbiAgICAgICAgc3R5bGU9XCItLWF4LXN5cy1zaXplLWJhc2U6IDEuODc1cmVtXCJcbiAgICAgICAgKG9uQ2hhbmdlZCk9XCJzZXJ2aWNlLnVwZGF0ZSh7IHZhbHVlczogJGV2ZW50LnZhbHVlcywgbW9kZTogJGV2ZW50Lm1vZGUgfSlcIlxuICAgICAgICBjbGFzcz1cImF4LXctMS80XCJcbiAgICAgID5cbiAgICAgIDwvYXhwLXdpZGdldC1wcm9wZXJ0eS12aWV3ZXI+XG4gICAgPC9heC1jb250ZW50PlxuICA8L2F4LWRyYXdlcj5cbjwvYXgtZHJhd2VyLWNvbnRhaW5lcj5cbiJdfQ==","import { AXPLayoutBuilderModule, AXPWidgetDataSourceProviderService, AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { Component, computed, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { AXPDesignerConnector, AXPDesignerMessageKeys } from '../designer';\nimport { AXPBroadcastEventService } from '@acorex/platform/core';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/platform/layout/builder\";\nexport class AXPLayoutDesignerPreviewViewerComponent {\n constructor() {\n this.context = {};\n this.document = signal({ type: AXPWidgetsCatalog.document });\n this.currentPageIndex = signal(0);\n this.connector = inject(AXPDesignerConnector);\n this.dataSourceProvider = inject(AXPWidgetDataSourceProviderService);\n this.eventService = inject(AXPBroadcastEventService);\n this.unsubscriber = inject(AXUnsubscriber);\n this.currentPage = computed(() => {\n return (this.document().children?.[this.currentPageIndex()] ?? { type: AXPWidgetsCatalog.pageLayout });\n });\n this.functions = {\n getDataSourceNames: this.getDataSources.bind(this),\n };\n this.eventService\n .listen(AXPDesignerMessageKeys.Preview)\n .pipe(this.unsubscriber.takeUntilDestroy)\n .subscribe((event) => {\n this.document.set(event.data.document);\n });\n //\n if (document.body.parentElement) {\n document.body.parentElement.classList.remove('ax-dark');\n document.body.parentElement.style.backgroundColor = 'unset';\n document.body.style.backgroundColor = 'unset';\n }\n }\n ngAfterViewInit() {\n this.eventService.publish(AXPDesignerMessageKeys.Loaded);\n }\n handleContextChanged(e) {\n this.context = e.data;\n this.eventService.publish(AXPDesignerMessageKeys.ContextChanged, this.context);\n }\n async getDataSources(name) {\n return await this.dataSourceProvider.get(name);\n }\n ngOnDestroy() {\n this.eventService.unsubscribe(AXPDesignerMessageKeys.Preview);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPLayoutDesignerPreviewViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.4\", type: AXPLayoutDesignerPreviewViewerComponent, isStandalone: true, selector: \"axp-layout-builder-viewer\", providers: [AXUnsubscriber], ngImport: i0, template: `\n <axp-widgets-container [context]=\"context\" (onContextChanged)=\"handleContextChanged($event)\">\n <ng-container axp-widget-renderer [node]=\"currentPage()\" [mode]=\"'edit'\"></ng-container>\n </axp-widgets-container>\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: AXPLayoutBuilderModule }, { kind: \"component\", type: i1.AXPWidgetContainerComponent, selector: \"axp-widgets-container\", inputs: [\"context\", \"functions\"], outputs: [\"onContextChanged\"] }, { kind: \"directive\", type: i1.AXPWidgetRendererDirective, selector: \"[axp-widget-renderer]\", inputs: [\"parentNode\", \"index\", \"mode\", \"node\"], outputs: [\"onOptionsChanged\", \"onValueChanged\"], exportAs: [\"widgetRenderer\"] }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPLayoutDesignerPreviewViewerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axp-layout-builder-viewer',\n template: `\n <axp-widgets-container [context]=\"context\" (onContextChanged)=\"handleContextChanged($event)\">\n <ng-container axp-widget-renderer [node]=\"currentPage()\" [mode]=\"'edit'\"></ng-container>\n </axp-widgets-container>\n `,\n encapsulation: ViewEncapsulation.None,\n imports: [AXPLayoutBuilderModule],\n providers: [AXUnsubscriber],\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy12aWV3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZGVzaWduZXIvc3JjL2xpYi9wcmV2aWV3L3ByZXZpZXctdmlld2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQW9ELGtDQUFrQyxFQUFpQixpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWpNLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHNCQUFzQixFQUE2QixNQUFNLGFBQWEsQ0FBQztBQUN0RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7OztBQWFwRCxNQUFNLE9BQU8sdUNBQXVDO0lBaUJsRDtRQWhCVSxZQUFPLEdBQVEsRUFBRSxDQUFDO1FBRVQsYUFBUSxHQUFHLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxRQUFRLEVBQW1CLENBQUMsQ0FBQztRQUN6RSxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3pDLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQ2hFLGlCQUFZLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDaEQsaUJBQVksR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFN0IsZ0JBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzdDLE9BQU8sQ0FDTCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsSUFBSyxFQUFFLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxVQUFVLEVBQW9CLENBQ2pILENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQTJCTyxjQUFTLEdBQUc7WUFDcEIsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ25ELENBQUM7UUF6QkEsSUFBSSxDQUFDLFlBQVk7YUFDZCxNQUFNLENBQTRCLHNCQUFzQixDQUFDLE9BQU8sQ0FBQzthQUNqRSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQzthQUN4QyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFBO1FBQ0osRUFBRTtRQUNGLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNoQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3hELFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDO1lBQzVELFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUM7UUFDaEQsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDMUQsQ0FBQztJQUVTLG9CQUFvQixDQUFDLENBQThCO1FBQzNELElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ2hGLENBQUM7SUFNTyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQVk7UUFDdkMsT0FBTyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUdELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVoRSxDQUFDOzhHQXJEVSx1Q0FBdUM7a0dBQXZDLHVDQUF1Qyx3RUFGdkMsQ0FBQyxjQUFjLENBQUMsMEJBUGpCOzs7O0dBSVQsMkRBRVMsc0JBQXNCOzsyRkFHckIsdUNBQXVDO2tCQVhuRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFFBQVEsRUFBRTs7OztHQUlUO29CQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsU0FBUyxFQUFFLENBQUMsY0FBYyxDQUFDO2lCQUM1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUExheW91dEJ1aWxkZXJNb2R1bGUsIEFYUExheW91dENvbnRleHRDaGFuZ2VFdmVudCwgQVhQV2lkZ2V0RGF0YVNvdXJjZSwgQVhQV2lkZ2V0RGF0YVNvdXJjZVByb3ZpZGVyU2VydmljZSwgQVhQV2lkZ2V0Tm9kZSwgQVhQV2lkZ2V0c0NhdGFsb2cgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcblxuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBzaWduYWwsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBEZXNpZ25lckNvbm5lY3RvciwgQVhQRGVzaWduZXJNZXNzYWdlS2V5cywgQVhQRGVzaWduZXJQcmV2aWV3TWVzc2FnZSB9IGZyb20gJy4uL2Rlc2lnbmVyJztcbmltcG9ydCB7IEFYUEJyb2FkY2FzdEV2ZW50U2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFVuc3Vic2NyaWJlciB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1sYXlvdXQtYnVpbGRlci12aWV3ZXInLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxheHAtd2lkZ2V0cy1jb250YWluZXIgW2NvbnRleHRdPVwiY29udGV4dFwiIChvbkNvbnRleHRDaGFuZ2VkKT1cImhhbmRsZUNvbnRleHRDaGFuZ2VkKCRldmVudClcIj5cbiAgICAgIDxuZy1jb250YWluZXIgYXhwLXdpZGdldC1yZW5kZXJlciBbbm9kZV09XCJjdXJyZW50UGFnZSgpXCIgW21vZGVdPVwiJ2VkaXQnXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9heHAtd2lkZ2V0cy1jb250YWluZXI+XG4gIGAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGltcG9ydHM6IFtBWFBMYXlvdXRCdWlsZGVyTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbQVhVbnN1YnNjcmliZXJdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBMYXlvdXREZXNpZ25lclByZXZpZXdWaWV3ZXJDb21wb25lbnQge1xuICBwcm90ZWN0ZWQgY29udGV4dDogYW55ID0ge307XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRvY3VtZW50ID0gc2lnbmFsKHsgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cuZG9jdW1lbnQgfSBhcyBBWFBXaWRnZXROb2RlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGN1cnJlbnRQYWdlSW5kZXggPSBzaWduYWwoMCk7XG4gIHByb3RlY3RlZCBjb25uZWN0b3IgPSBpbmplY3QoQVhQRGVzaWduZXJDb25uZWN0b3IpO1xuICBwcm90ZWN0ZWQgZGF0YVNvdXJjZVByb3ZpZGVyID0gaW5qZWN0KEFYUFdpZGdldERhdGFTb3VyY2VQcm92aWRlclNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgZXZlbnRTZXJ2aWNlID0gaW5qZWN0KEFYUEJyb2FkY2FzdEV2ZW50U2VydmljZSk7XG4gIHByb3RlY3RlZCB1bnN1YnNjcmliZXIgPSBpbmplY3QoQVhVbnN1YnNjcmliZXIpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBjdXJyZW50UGFnZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5kb2N1bWVudCgpLmNoaWxkcmVuPy5bdGhpcy5jdXJyZW50UGFnZUluZGV4KCldID8/ICh7IHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnBhZ2VMYXlvdXQgfSBhcyBBWFBXaWRnZXROb2RlKVxuICAgICk7XG4gIH0pO1xuXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5ldmVudFNlcnZpY2VcbiAgICAgIC5saXN0ZW48QVhQRGVzaWduZXJQcmV2aWV3TWVzc2FnZT4oQVhQRGVzaWduZXJNZXNzYWdlS2V5cy5QcmV2aWV3KVxuICAgICAgLnBpcGUodGhpcy51bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnQuc2V0KGV2ZW50LmRhdGEuZG9jdW1lbnQpO1xuICAgICAgfSlcbiAgICAvL1xuICAgIGlmIChkb2N1bWVudC5ib2R5LnBhcmVudEVsZW1lbnQpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkucGFyZW50RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdheC1kYXJrJyk7XG4gICAgICBkb2N1bWVudC5ib2R5LnBhcmVudEVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ3Vuc2V0JztcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ3Vuc2V0JztcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5ldmVudFNlcnZpY2UucHVibGlzaChBWFBEZXNpZ25lck1lc3NhZ2VLZXlzLkxvYWRlZClcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVDb250ZXh0Q2hhbmdlZChlOiBBWFBMYXlvdXRDb250ZXh0Q2hhbmdlRXZlbnQpIHtcbiAgICB0aGlzLmNvbnRleHQgPSBlLmRhdGE7XG4gICAgdGhpcy5ldmVudFNlcnZpY2UucHVibGlzaChBWFBEZXNpZ25lck1lc3NhZ2VLZXlzLkNvbnRleHRDaGFuZ2VkLCB0aGlzLmNvbnRleHQpXG4gIH1cblxuICBwcm90ZWN0ZWQgZnVuY3Rpb25zID0ge1xuICAgIGdldERhdGFTb3VyY2VOYW1lczogdGhpcy5nZXREYXRhU291cmNlcy5iaW5kKHRoaXMpLFxuICB9O1xuXG4gIHByaXZhdGUgYXN5bmMgZ2V0RGF0YVNvdXJjZXMobmFtZTogc3RyaW5nKTogUHJvbWlzZTxBWFBXaWRnZXREYXRhU291cmNlIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZGF0YVNvdXJjZVByb3ZpZGVyLmdldChuYW1lKTtcbiAgfVxuXG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5ldmVudFNlcnZpY2UudW5zdWJzY3JpYmUoQVhQRGVzaWduZXJNZXNzYWdlS2V5cy5QcmV2aWV3KTtcblxuICB9XG59XG4iXX0=","import { AXSafePipe } from '@acorex/core/pipes';\nimport { Component, computed, HostBinding, input, ViewEncapsulation } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXPLayoutDesignerPreviewFrameComponent {\n constructor() {\n this.size = input('xl');\n this.width = computed(() => {\n ;\n switch (this.size()) {\n case 'sm':\n return '340px';\n case 'md':\n case 'lg':\n return '768px';\n default:\n return '100%';\n }\n });\n }\n get __class() {\n const cls = {};\n cls['ax-flex'] = true;\n cls['ax-flex-col'] = true;\n cls['ax-h-full'] = true;\n cls['ax-W-full'] = true;\n cls['lg:ax-p-20'] = true;\n cls['ax-bg-[#f3f3fe]'] = true;\n cls['ax-w-full'] = true;\n cls['ax-items-center'] = true;\n cls['ax-overflow-auto'] = true;\n return cls;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPLayoutDesignerPreviewFrameComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.0.4\", type: AXPLayoutDesignerPreviewFrameComponent, isStandalone: true, selector: \"axp-layout-preview-frame\", inputs: { size: { classPropertyName: \"size\", publicName: \"size\", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { \"class\": \"this.__class\" } }, ngImport: i0, template: `\n <div\n class=\"ax-flex-1 lg:ax-rounded-lg ax-bg-white lg:ax-shadow-md ax-p-2\"\n [style.width]=\"width()\"\n style=\"max-width: 1280px;\"\n >\n <iframe\n class=\"ax-w-full ax-h-full ax-bg-transparent\"\n [frameBorder]=\"0\"\n [src]=\"'/forms/viewer' | safe : 'resourceUrl'\"\n >\n </iframe>\n </div>\n `, isInline: true, dependencies: [{ kind: \"pipe\", type: AXSafePipe, name: \"safe\" }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPLayoutDesignerPreviewFrameComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axp-layout-preview-frame',\n template: `\n <div\n class=\"ax-flex-1 lg:ax-rounded-lg ax-bg-white lg:ax-shadow-md ax-p-2\"\n [style.width]=\"width()\"\n style=\"max-width: 1280px;\"\n >\n <iframe\n class=\"ax-w-full ax-h-full ax-bg-transparent\"\n [frameBorder]=\"0\"\n [src]=\"'/forms/viewer' | safe : 'resourceUrl'\"\n >\n </iframe>\n </div>\n `,\n encapsulation: ViewEncapsulation.None,\n imports: [AXSafePipe]\n }]\n }], propDecorators: { __class: [{\n type: HostBinding,\n args: ['class']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy1mcmFtZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL3ByZXZpZXcvcHJldmlldy1mcmFtZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBcUIzRixNQUFNLE9BQU8sc0NBQXNDO0lBbkJuRDtRQW9CUyxTQUFJLEdBQUcsS0FBSyxDQUFTLElBQUksQ0FBQyxDQUFDO1FBRXhCLFVBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzlCLENBQUM7WUFDRCxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUNwQixLQUFLLElBQUk7b0JBQ1AsT0FBTyxPQUFPLENBQUM7Z0JBQ2pCLEtBQUssSUFBSSxDQUFDO2dCQUNWLEtBQUssSUFBSTtvQkFDUCxPQUFPLE9BQU8sQ0FBQztnQkFDakI7b0JBQ0UsT0FBTyxNQUFNLENBQUM7WUFDbEIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0tBZ0JKO0lBZEMsSUFDWSxPQUFPO1FBQ2pCLE1BQU0sR0FBRyxHQUFRLEVBQUUsQ0FBQztRQUNwQixHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLEdBQUcsQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDMUIsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUN4QixHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDekIsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzlCLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDeEIsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzlCLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUMvQixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7OEdBN0JVLHNDQUFzQztrR0FBdEMsc0NBQXNDLHdRQWpCckM7Ozs7Ozs7Ozs7Ozs7R0FhWCx1REFFVyxVQUFVOzsyRkFFWCxzQ0FBc0M7a0JBbkJsRCxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7OztHQWFYO29CQUNDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUM7aUJBQ3hCOzhCQWtCYSxPQUFPO3NCQURsQixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFNhZmVQaXBlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3BpcGVzJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIEhvc3RCaW5kaW5nLCBpbnB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdheHAtbGF5b3V0LXByZXZpZXctZnJhbWUnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJheC1mbGV4LTEgbGc6YXgtcm91bmRlZC1sZyBheC1iZy13aGl0ZSBsZzpheC1zaGFkb3ctbWQgICBheC1wLTJcIlxuICAgICAgW3N0eWxlLndpZHRoXT1cIndpZHRoKClcIlxuICAgICAgc3R5bGU9XCJtYXgtd2lkdGg6IDEyODBweDtcIlxuICAgID5cbiAgICAgIDxpZnJhbWVcbiAgICAgICAgY2xhc3M9XCJheC13LWZ1bGwgYXgtaC1mdWxsIGF4LWJnLXRyYW5zcGFyZW50XCJcbiAgICAgICAgW2ZyYW1lQm9yZGVyXT1cIjBcIlxuICAgICAgICBbc3JjXT1cIicvZm9ybXMvdmlld2VyJyB8IHNhZmUgOiAncmVzb3VyY2VVcmwnXCJcbiAgICAgID5cbiAgICAgIDwvaWZyYW1lPlxuICAgIDwvZGl2PlxuICBgLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaW1wb3J0czogW0FYU2FmZVBpcGVdXG59KVxuZXhwb3J0IGNsYXNzIEFYUExheW91dERlc2lnbmVyUHJldmlld0ZyYW1lQ29tcG9uZW50IHtcbiAgcHVibGljIHNpemUgPSBpbnB1dDxzdHJpbmc+KCd4bCcpO1xuXG4gIHByb3RlY3RlZCB3aWR0aCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICA7XG4gICAgc3dpdGNoICh0aGlzLnNpemUoKSkge1xuICAgICAgY2FzZSAnc20nOlxuICAgICAgICByZXR1cm4gJzM0MHB4JztcbiAgICAgIGNhc2UgJ21kJzpcbiAgICAgIGNhc2UgJ2xnJzpcbiAgICAgICAgcmV0dXJuICc3NjhweCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJzEwMCUnO1xuICAgIH1cbiAgfSk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIHByaXZhdGUgZ2V0IF9fY2xhc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjbHM6IGFueSA9IHt9O1xuICAgIGNsc1snYXgtZmxleCddID0gdHJ1ZTtcbiAgICBjbHNbJ2F4LWZsZXgtY29sJ10gPSB0cnVlO1xuICAgIGNsc1snYXgtaC1mdWxsJ10gPSB0cnVlO1xuICAgIGNsc1snYXgtVy1mdWxsJ10gPSB0cnVlO1xuICAgIGNsc1snbGc6YXgtcC0yMCddID0gdHJ1ZTtcbiAgICBjbHNbJ2F4LWJnLVsjZjNmM2ZlXSddID0gdHJ1ZTtcbiAgICBjbHNbJ2F4LXctZnVsbCddID0gdHJ1ZTtcbiAgICBjbHNbJ2F4LWl0ZW1zLWNlbnRlciddID0gdHJ1ZTtcbiAgICBjbHNbJ2F4LW92ZXJmbG93LWF1dG8nXSA9IHRydWU7XG4gICAgcmV0dXJuIGNscztcbiAgfVxufVxuIl19","import { AXButtonModule } from '@acorex/components/button';\nimport { AXButtonGroupModule } from '@acorex/components/button-group';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDrawerModule } from '@acorex/components/drawer';\nimport { AXJsonViewerModule } from '@acorex/components/json-viewer';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXPClipBoardService, AXPSettingService } from '@acorex/platform/common';\nimport { AXPPlatformScope } from '@acorex/platform/core';\nimport { Component, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { AXPDesignerViewSizeToolbarComponent } from '../designer/components/size-mode/view-size-toolbar.component';\nimport { AXPLayoutDesignerPreviewFrameComponent } from './preview-frame.component';\nimport { AXPBroadcastEventService } from '@acorex/platform/core';\nimport { AXPDesignerMessageKeys } from '../designer';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/button\";\nimport * as i2 from \"@acorex/components/drawer\";\nimport * as i3 from \"@acorex/components/decorators\";\nimport * as i4 from \"@acorex/components/json-viewer\";\nexport class AXPLayoutDesignerPreviewComponent extends AXBasePageComponent {\n constructor() {\n super();\n this.clipboard = inject(AXPClipBoardService);\n this.settings = inject(AXPSettingService);\n this.eventService = inject(AXPBroadcastEventService);\n this.initialSize = 'xl';\n this.isDialogWindow = false;\n this.jsonSettingsKey = 'forms:preview:json';\n this.jsonViewCollapsed = signal(true);\n this.size = signal(this.initialSize);\n this.context = signal({});\n //\n this.eventService.listen(AXPDesignerMessageKeys.ContextChanged).subscribe((event) => {\n this.context.set(event.data);\n });\n }\n async ngOnInit() {\n this.size.set(this.initialSize);\n const settingValue = await this.settings.get(this.jsonSettingsKey);\n this.jsonViewCollapsed.set(!settingValue);\n }\n handleCloseButton() {\n if (this.isDialogWindow) {\n this.close();\n }\n else {\n window.opener.focus();\n window.close();\n }\n }\n handlePreviewWindow() {\n this.eventService.publish(AXPDesignerMessageKeys.PreviewWindow);\n this.close();\n }\n handleCopyJson() {\n this.clipboard.copy('Json Data', JSON.stringify(this.context()));\n }\n async handleCollapsedChange(value) {\n await this.settings.scope(AXPPlatformScope.User).set(this.jsonSettingsKey, !value);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPLayoutDesignerPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXPLayoutDesignerPreviewComponent, isStandalone: true, selector: \"axp-layout-preview\", usesInheritance: true, ngImport: i0, template: \"<ax-drawer-container class=\\\"ax-dark ax-h-full ax-w-full ax-flex ax-relative ax-overflow-hidden\\\">\\n <ax-content>\\n <div class=\\\"ax-dark ax-flex ax-flex-col ax-h-full ax-relative ax-bg-default\\\">\\n <div class=\\\"ax-flex ax-items-center ax-justify-between ax-h-12 ax-bg-lightest ax-shadow ax-sm ax-px-2\\\">\\n <div class=\\\"ax-flex ax-flex-1 ax-w-16 ax-justify-start\\\">\\n <ax-button look=\\\"blank\\\" text=\\\"Back to Designer\\\" (onClick)=\\\"handleCloseButton()\\\">\\n <ax-prefix>\\n <ax-icon class=\\\"fa-regular fa-chevron-left\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n <div class=\\\"ax-flex ax-flex-1 ax-flex-row ax-gap-2 ax-sm ax-items-center ax-justify-center\\\">\\n <axp-designer-view-sizes [(size)]=\\\"size\\\"></axp-designer-view-sizes>\\n </div>\\n <div class=\\\"ax-flex ax-flex-1 ax-w-16 ax-justify-end\\\">\\n @if(isDialogWindow) {\\n <ax-button look=\\\"blank\\\" [title]=\\\"'Preview in to seperate window'\\\" (onClick)=\\\"handlePreviewWindow()\\\">\\n <ax-prefix>\\n <ax-icon class=\\\"fa-regular fa-window-restore\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n }@else { }\\n <ax-button look=\\\"blank\\\" (onClick)=\\\"jsonView.toggle()\\\">\\n <ax-prefix>\\n <ax-icon class=\\\"fa-regular fa-list-tree\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </div>\\n\\n <div class=\\\"ax-bg-[#f3f3fe] ax-flex ax-flex-1 ax-justify-center ax-overflow-auto\\\">\\n <axp-layout-preview-frame [size]=\\\"size()\\\"></axp-layout-preview-frame>\\n </div>\\n </div>\\n </ax-content>\\n <!-- [collapsed]=\\\"jsonViewCollapsed()\\\"\\n (collapsedChange)=\\\"handleCollapsedChange($event)\\\" -->\\n <ax-drawer class=\\\"ax-w-1/3 ax-border-s\\\" location=\\\"end\\\" mode=\\\"push\\\" #jsonView>\\n <ax-content>\\n <div class=\\\"ax-dark ax-flex ax-flex-col ax-h-full ax-relative ax-bg-default\\\">\\n <div class=\\\"ax-flex ax-items-center ax-justify-between ax-h-12 ax-bg-lightest ax-shadow ax-sm ax-px-2\\\">\\n <div class=\\\"ax-flex ax-flex-1 ax-w-16 ax-justify-start\\\">\\n <span class=\\\"ax-text-surface-fore ax-font-semibold\\\">Form Data</span>\\n </div>\\n <div class=\\\"ax-flex ax-flex-1 ax-flex-row ax-gap-2 ax-sm ax-items-center ax-justify-center\\\"></div>\\n <div class=\\\"ax-flex ax-flex-1 ax-w-16 ax-justify-end\\\">\\n <ax-button look=\\\"blank\\\" (onClick)=\\\"handleCopyJson()\\\">\\n <ax-prefix>\\n <ax-icon class=\\\"fa-regular fa-copy\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </div>\\n <div class=\\\"ax-px-6 ax-text-white\\\">\\n <ax-json-viewer [json]=\\\"context()\\\"></ax-json-viewer>\\n </div>\\n </div>\\n </ax-content>\\n </ax-drawer>\\n</ax-drawer-container>\", styles: [\"\"], dependencies: [{ kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i1.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXButtonGroupModule }, { kind: \"ngmodule\", type: AXDrawerModule }, { kind: \"component\", type: i2.AXDrawerComponent, selector: \"ax-drawer\", inputs: [\"location\", \"showBackdrop\", \"mode\", \"closeOthers\", \"collapsed\"], outputs: [\"locationChange\", \"modeChange\", \"collapsedChange\"] }, { kind: \"component\", type: i2.AXDrawerContainerComponent, selector: \"ax-drawer-container\" }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i3.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i3.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXJsonViewerModule }, { kind: \"component\", type: i4.JsonViewerComponent, selector: \"ax-json-viewer\", inputs: [\"json\"] }, { kind: \"component\", type: AXPLayoutDesignerPreviewFrameComponent, selector: \"axp-layout-preview-frame\", inputs: [\"size\"] }, { kind: \"component\", type: AXPDesignerViewSizeToolbarComponent, selector: \"axp-designer-view-sizes\", inputs: [\"size\"], outputs: [\"sizeChange\"] }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPLayoutDesignerPreviewComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-layout-preview', encapsulation: ViewEncapsulation.None, imports: [\n AXButtonModule,\n AXButtonGroupModule,\n AXDrawerModule,\n AXDecoratorModule,\n AXJsonViewerModule,\n AXPLayoutDesignerPreviewFrameComponent,\n AXPDesignerViewSizeToolbarComponent\n ], template: \"<ax-drawer-container class=\\\"ax-dark ax-h-full ax-w-full ax-flex ax-relative ax-overflow-hidden\\\">\\n <ax-content>\\n <div class=\\\"ax-dark ax-flex ax-flex-col ax-h-full ax-relative ax-bg-default\\\">\\n <div class=\\\"ax-flex ax-items-center ax-justify-between ax-h-12 ax-bg-lightest ax-shadow ax-sm ax-px-2\\\">\\n <div class=\\\"ax-flex ax-flex-1 ax-w-16 ax-justify-start\\\">\\n <ax-button look=\\\"blank\\\" text=\\\"Back to Designer\\\" (onClick)=\\\"handleCloseButton()\\\">\\n <ax-prefix>\\n <ax-icon class=\\\"fa-regular fa-chevron-left\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n <div class=\\\"ax-flex ax-flex-1 ax-flex-row ax-gap-2 ax-sm ax-items-center ax-justify-center\\\">\\n <axp-designer-view-sizes [(size)]=\\\"size\\\"></axp-designer-view-sizes>\\n </div>\\n <div class=\\\"ax-flex ax-flex-1 ax-w-16 ax-justify-end\\\">\\n @if(isDialogWindow) {\\n <ax-button look=\\\"blank\\\" [title]=\\\"'Preview in to seperate window'\\\" (onClick)=\\\"handlePreviewWindow()\\\">\\n <ax-prefix>\\n <ax-icon class=\\\"fa-regular fa-window-restore\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n }@else { }\\n <ax-button look=\\\"blank\\\" (onClick)=\\\"jsonView.toggle()\\\">\\n <ax-prefix>\\n <ax-icon class=\\\"fa-regular fa-list-tree\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </div>\\n\\n <div class=\\\"ax-bg-[#f3f3fe] ax-flex ax-flex-1 ax-justify-center ax-overflow-auto\\\">\\n <axp-layout-preview-frame [size]=\\\"size()\\\"></axp-layout-preview-frame>\\n </div>\\n </div>\\n </ax-content>\\n <!-- [collapsed]=\\\"jsonViewCollapsed()\\\"\\n (collapsedChange)=\\\"handleCollapsedChange($event)\\\" -->\\n <ax-drawer class=\\\"ax-w-1/3 ax-border-s\\\" location=\\\"end\\\" mode=\\\"push\\\" #jsonView>\\n <ax-content>\\n <div class=\\\"ax-dark ax-flex ax-flex-col ax-h-full ax-relative ax-bg-default\\\">\\n <div class=\\\"ax-flex ax-items-center ax-justify-between ax-h-12 ax-bg-lightest ax-shadow ax-sm ax-px-2\\\">\\n <div class=\\\"ax-flex ax-flex-1 ax-w-16 ax-justify-start\\\">\\n <span class=\\\"ax-text-surface-fore ax-font-semibold\\\">Form Data</span>\\n </div>\\n <div class=\\\"ax-flex ax-flex-1 ax-flex-row ax-gap-2 ax-sm ax-items-center ax-justify-center\\\"></div>\\n <div class=\\\"ax-flex ax-flex-1 ax-w-16 ax-justify-end\\\">\\n <ax-button look=\\\"blank\\\" (onClick)=\\\"handleCopyJson()\\\">\\n <ax-prefix>\\n <ax-icon class=\\\"fa-regular fa-copy\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button>\\n </div>\\n </div>\\n <div class=\\\"ax-px-6 ax-text-white\\\">\\n <ax-json-viewer [json]=\\\"context()\\\"></ax-json-viewer>\\n </div>\\n </div>\\n </ax-content>\\n </ax-drawer>\\n</ax-drawer-container>\" }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL3ByZXZpZXcvcHJldmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL3ByZXZpZXcvcHJldmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXpELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUNuSCxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7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b25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWEJ1dHRvbkdyb3VwTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbi1ncm91cCc7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYRHJhd2VyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RyYXdlcic7XG5pbXBvcnQgeyBBWEpzb25WaWV3ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvanNvbi12aWV3ZXInO1xuaW1wb3J0IHsgQVhCYXNlUGFnZUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wYWdlJztcbmltcG9ydCB7IEFYUENsaXBCb2FyZFNlcnZpY2UsIEFYUFNldHRpbmdTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQUGxhdGZvcm1TY29wZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5cbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBzaWduYWwsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBEZXNpZ25lclZpZXdTaXplVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4uL2Rlc2lnbmVyL2NvbXBvbmVudHMvc2l6ZS1tb2RlL3ZpZXctc2l6ZS10b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBMYXlvdXREZXNpZ25lclByZXZpZXdGcmFtZUNvbXBvbmVudCB9IGZyb20gJy4vcHJldmlldy1mcmFtZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhQQnJvYWRjYXN0RXZlbnRTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEFYUERlc2lnbmVyTWVzc2FnZUtleXMgfSBmcm9tICcuLi9kZXNpZ25lcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1sYXlvdXQtcHJldmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcmV2aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJldmlldy5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBpbXBvcnRzOiBbXG4gICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgQVhCdXR0b25Hcm91cE1vZHVsZSxcbiAgICBBWERyYXdlck1vZHVsZSxcbiAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICBBWEpzb25WaWV3ZXJNb2R1bGUsXG4gICAgQVhQTGF5b3V0RGVzaWduZXJQcmV2aWV3RnJhbWVDb21wb25lbnQsXG4gICAgQVhQRGVzaWduZXJWaWV3U2l6ZVRvb2xiYXJDb21wb25lbnRcbl1cbn0pXG5leHBvcnQgY2xhc3MgQVhQTGF5b3V0RGVzaWduZXJQcmV2aWV3Q29tcG9uZW50IGV4dGVuZHMgQVhCYXNlUGFnZUNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBjbGlwYm9hcmQgPSBpbmplY3QoQVhQQ2xpcEJvYXJkU2VydmljZSk7XG4gIHByb3RlY3RlZCBzZXR0aW5ncyA9IGluamVjdChBWFBTZXR0aW5nU2VydmljZSk7XG4gIHByb3RlY3RlZCBldmVudFNlcnZpY2UgPSBpbmplY3QoQVhQQnJvYWRjYXN0RXZlbnRTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgaW5pdGlhbFNpemU6IHN0cmluZyA9ICd4bCc7XG4gIHByb3RlY3RlZCBpc0RpYWxvZ1dpbmRvdzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUganNvblNldHRpbmdzS2V5ID0gJ2Zvcm1zOnByZXZpZXc6anNvbic7XG4gIHByb3RlY3RlZCBqc29uVmlld0NvbGxhcHNlZCA9IHNpZ25hbCh0cnVlKTtcblxuICBwcm90ZWN0ZWQgc2l6ZSA9IHNpZ25hbDxzdHJpbmc+KHRoaXMuaW5pdGlhbFNpemUpO1xuXG4gIHByb3RlY3RlZCBjb250ZXh0ID0gc2lnbmFsPGFueT4oe30pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgLy9cbiAgICB0aGlzLmV2ZW50U2VydmljZS5saXN0ZW4oQVhQRGVzaWduZXJNZXNzYWdlS2V5cy5Db250ZXh0Q2hhbmdlZCkuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgdGhpcy5jb250ZXh0LnNldChldmVudC5kYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNpemUuc2V0KHRoaXMuaW5pdGlhbFNpemUpO1xuICAgIGNvbnN0IHNldHRpbmdWYWx1ZSA9IGF3YWl0IHRoaXMuc2V0dGluZ3MuZ2V0PGJvb2xlYW4+KHRoaXMuanNvblNldHRpbmdzS2V5KTtcbiAgICB0aGlzLmpzb25WaWV3Q29sbGFwc2VkLnNldCghc2V0dGluZ1ZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVDbG9zZUJ1dHRvbigpIHtcbiAgICBpZiAodGhpcy5pc0RpYWxvZ1dpbmRvdykge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cub3BlbmVyLmZvY3VzKCk7XG4gICAgICB3aW5kb3cuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlUHJldmlld1dpbmRvdygpIHtcbiAgICB0aGlzLmV2ZW50U2VydmljZS5wdWJsaXNoKEFYUERlc2lnbmVyTWVzc2FnZUtleXMuUHJldmlld1dpbmRvdylcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlQ29weUpzb24oKSB7XG4gICAgdGhpcy5jbGlwYm9hcmQuY29weSgnSnNvbiBEYXRhJywgSlNPTi5zdHJpbmdpZnkodGhpcy5jb250ZXh0KCkpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVDb2xsYXBzZWRDaGFuZ2UodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnNjb3BlKEFYUFBsYXRmb3JtU2NvcGUuVXNlcikuc2V0PGJvb2xlYW4+KHRoaXMuanNvblNldHRpbmdzS2V5LCAhdmFsdWUpO1xuICB9XG59XG4iLCI8YXgtZHJhd2VyLWNvbnRhaW5lciBjbGFzcz1cImF4LWRhcmsgYXgtaC1mdWxsIGF4LXctZnVsbCBheC1mbGV4IGF4LXJlbGF0aXZlIGF4LW92ZXJmbG93LWhpZGRlblwiPlxuICA8YXgtY29udGVudD5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtZGFyayBheC1mbGV4IGF4LWZsZXgtY29sIGF4LWgtZnVsbCBheC1yZWxhdGl2ZSBheC1iZy1kZWZhdWx0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1iZXR3ZWVuIGF4LWgtMTIgYXgtYmctbGlnaHRlc3QgYXgtc2hhZG93IGF4LXNtIGF4LXB4LTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC0xIGF4LXctMTYgYXgtanVzdGlmeS1zdGFydFwiPlxuICAgICAgICAgIDxheC1idXR0b24gbG9vaz1cImJsYW5rXCIgdGV4dD1cIkJhY2sgdG8gRGVzaWduZXJcIiAob25DbGljayk9XCJoYW5kbGVDbG9zZUJ1dHRvbigpXCI+XG4gICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLXJlZ3VsYXIgZmEtY2hldnJvbi1sZWZ0XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LTEgYXgtZmxleC1yb3cgYXgtZ2FwLTIgYXgtc20gYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgPGF4cC1kZXNpZ25lci12aWV3LXNpemVzIFsoc2l6ZSldPVwic2l6ZVwiPjwvYXhwLWRlc2lnbmVyLXZpZXctc2l6ZXM+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LTEgYXgtdy0xNiBheC1qdXN0aWZ5LWVuZFwiPlxuICAgICAgICAgIEBpZihpc0RpYWxvZ1dpbmRvdykge1xuICAgICAgICAgIDxheC1idXR0b24gbG9vaz1cImJsYW5rXCIgW3RpdGxlXT1cIidQcmV2aWV3IGluIHRvIHNlcGVyYXRlIHdpbmRvdydcIiAob25DbGljayk9XCJoYW5kbGVQcmV2aWV3V2luZG93KClcIj5cbiAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtcmVndWxhciBmYS13aW5kb3ctcmVzdG9yZVwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICAgIH1AZWxzZSB7IH1cbiAgICAgICAgICA8YXgtYnV0dG9uIGxvb2s9XCJibGFua1wiIChvbkNsaWNrKT1cImpzb25WaWV3LnRvZ2dsZSgpXCI+XG4gICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLXJlZ3VsYXIgZmEtbGlzdC10cmVlXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1iZy1bI2YzZjNmZV0gYXgtZmxleCBheC1mbGV4LTEgYXgtanVzdGlmeS1jZW50ZXIgYXgtb3ZlcmZsb3ctYXV0b1wiPlxuICAgICAgICA8YXhwLWxheW91dC1wcmV2aWV3LWZyYW1lIFtzaXplXT1cInNpemUoKVwiPjwvYXhwLWxheW91dC1wcmV2aWV3LWZyYW1lPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvYXgtY29udGVudD5cbiAgPCEtLSBbY29sbGFwc2VkXT1cImpzb25WaWV3Q29sbGFwc2VkKClcIlxuICAoY29sbGFwc2VkQ2hhbmdlKT1cImhhbmRsZUNvbGxhcHNlZENoYW5nZSgkZXZlbnQpXCIgLS0+XG4gIDxheC1kcmF3ZXIgY2xhc3M9XCJheC13LTEvMyBheC1ib3JkZXItc1wiIGxvY2F0aW9uPVwiZW5kXCIgbW9kZT1cInB1c2hcIiAjanNvblZpZXc+XG4gICAgPGF4LWNvbnRlbnQ+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZGFyayBheC1mbGV4IGF4LWZsZXgtY29sIGF4LWgtZnVsbCBheC1yZWxhdGl2ZSBheC1iZy1kZWZhdWx0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWJldHdlZW4gYXgtaC0xMiBheC1iZy1saWdodGVzdCBheC1zaGFkb3cgYXgtc20gYXgtcHgtMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtMSBheC13LTE2IGF4LWp1c3RpZnktc3RhcnRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtdGV4dC1zdXJmYWNlLWZvcmUgYXgtZm9udC1zZW1pYm9sZFwiPkZvcm0gRGF0YTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LTEgYXgtZmxleC1yb3cgYXgtZ2FwLTIgYXgtc20gYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyXCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC0xIGF4LXctMTYgYXgtanVzdGlmeS1lbmRcIj5cbiAgICAgICAgICAgIDxheC1idXR0b24gbG9vaz1cImJsYW5rXCIgKG9uQ2xpY2spPVwiaGFuZGxlQ29weUpzb24oKVwiPlxuICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtcmVndWxhciBmYS1jb3B5XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LXB4LTYgYXgtdGV4dC13aGl0ZVwiPlxuICAgICAgICAgIDxheC1qc29uLXZpZXdlciBbanNvbl09XCJjb250ZXh0KClcIj48L2F4LWpzb24tdmlld2VyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvYXgtY29udGVudD5cbiAgPC9heC1kcmF3ZXI+XG48L2F4LWRyYXdlci1jb250YWluZXI+Il19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LXBsYXRmb3JtLWxheW91dC1kZXNpZ25lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2Rlc2lnbmVyL3NyYy9hY29yZXgtcGxhdGZvcm0tbGF5b3V0LWRlc2lnbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1","i2","i4","i5","i3","merge"],"mappings":"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"}
|