@acorex/platform 18.0.14 → 18.0.16
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/core/index.d.ts +1 -0
- package/core/utils/data-conditioner.d.ts +6 -0
- package/esm2022/auth/lib/session.service.mjs +7 -5
- package/esm2022/common/lib/schema/widget/widget-renderer.mjs +3 -3
- package/esm2022/core/index.mjs +2 -1
- package/esm2022/core/utils/data-conditioner.mjs +138 -0
- package/esm2022/layout/builder/lib/builder/widget-catalog.mjs +3 -2
- package/esm2022/layout/builder/lib/builder/widget-registery.service.mjs +2 -2
- package/esm2022/layout/builder/lib/builder/widget-renderer.component.mjs +3 -3
- package/esm2022/layout/builder/lib/builder/widget.types.mjs +17 -10
- package/esm2022/layout/designer/index.mjs +2 -7
- package/esm2022/layout/designer/lib/{helpers → designer/components}/add-widget-button/add-widget-button.component.mjs +2 -2
- package/esm2022/layout/designer/lib/designer/components/board/board.component.mjs +112 -0
- package/esm2022/layout/designer/lib/designer/components/breadcrumbs/breadcrumbs.component.mjs +64 -0
- package/esm2022/layout/designer/lib/designer/components/drawers/data-sources/data-sources.component.mjs +32 -0
- package/esm2022/layout/designer/lib/designer/components/drawers/history/history.component.mjs +30 -0
- package/esm2022/layout/designer/lib/designer/components/drawers/outline/outline.component.mjs +61 -0
- package/esm2022/layout/designer/lib/designer/components/drawers/pages/pages.component.mjs +28 -0
- package/esm2022/layout/designer/lib/designer/components/grid-drawer/grid-drawer.component.mjs +82 -0
- package/esm2022/layout/designer/lib/designer/components/header-menu/header-menu.component.mjs +24 -0
- package/esm2022/layout/designer/lib/{widget-picker → designer/components/widget-picker}/widget-picker.component.mjs +1 -1
- package/esm2022/layout/designer/lib/designer/designer.component.mjs +28 -17
- package/esm2022/layout/designer/lib/designer/index.mjs +8 -0
- package/esm2022/layout/designer/lib/designer/shared/command.mjs +185 -0
- package/esm2022/layout/designer/lib/designer/shared/designer-connector.service.mjs +10 -0
- package/esm2022/layout/designer/lib/designer/shared/designer.service.mjs +488 -0
- package/esm2022/layout/designer/lib/designer/shared/designer.typs.mjs +2 -0
- package/esm2022/layout/designer/lib/designer/shared/drawer-content/drawer-content.component.mjs +16 -0
- package/esm2022/layout/designer/lib/designer/shared/widget-designer-renderer.directive.mjs +224 -0
- package/esm2022/layout/designer/lib/preview/preview.component.mjs +3 -3
- package/esm2022/layout/designer/lib/property-viewer/widget-property-viewer.component.mjs +17 -5
- package/esm2022/layout/entity/lib/entity-master-create.viewmodel.mjs +2 -5
- package/esm2022/layout/entity/lib/entity-master-list.viewmodel.mjs +15 -5
- package/esm2022/layout/entity/lib/entity-registery.service.mjs +3 -3
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget.config.mjs +2 -1
- package/esm2022/themes/default/index.mjs +3 -2
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.mjs +29 -20
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component.mjs +19 -9
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/comments/comment-list-view.component.mjs +123 -0
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/comments/comments.service.mjs +3 -0
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.mjs +22 -23
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/overview/entity-single-overview.component.mjs +68 -0
- package/esm2022/themes/default/lib/layouts/entity-layouts/index.mjs +2 -0
- package/esm2022/widgets/lib/properties/data-source.props.mjs +21 -0
- package/esm2022/widgets/lib/properties/editors.props.mjs +27 -90
- package/esm2022/widgets/lib/properties/general.props.mjs +124 -0
- package/esm2022/widgets/lib/properties/index.mjs +4 -1
- package/esm2022/widgets/lib/properties/layout.props.mjs +138 -33
- package/esm2022/widgets/lib/properties/table-column.props.mjs +2 -2
- package/esm2022/widgets/lib/widgets/actions/button/button-widget-designer.component.mjs +54 -0
- package/esm2022/widgets/lib/widgets/actions/button/button-widget-view.component.mjs +3 -2
- package/esm2022/widgets/lib/widgets/actions/button/button-widget.config.mjs +3 -2
- package/esm2022/widgets/lib/widgets/advance/file/file-box-widget-edit.component.mjs +13 -4
- package/esm2022/widgets/lib/widgets/advance/file/file-box-widget.config.mjs +4 -2
- package/esm2022/widgets/lib/widgets/advance/gallery/gallery-widget-edit.component.mjs +13 -4
- package/esm2022/widgets/lib/widgets/advance/gallery/gallery-widget.config.mjs +2 -1
- package/esm2022/widgets/lib/widgets/advance/map/index.mjs +1 -4
- package/esm2022/widgets/lib/widgets/advance/map/map-box-widget-edit.component.mjs +54 -157
- package/esm2022/widgets/lib/widgets/advance/map/map-box-widget-view.component.mjs +40 -53
- package/esm2022/widgets/lib/widgets/advance/map/map-box-widget.config.mjs +100 -11
- package/esm2022/widgets/lib/widgets/advance/qrcode/qrcode-widget-view.component.mjs +23 -14
- package/esm2022/widgets/lib/widgets/advance/qrcode/qrcode-widget.config.mjs +9 -7
- package/esm2022/widgets/lib/widgets/advance/signature/signature-pad-widget-edit.component.mjs +12 -3
- package/esm2022/widgets/lib/widgets/advance/signature/signature-pad-widget.config.mjs +5 -6
- package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget-designer.component.mjs +54 -0
- package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget-edit.component.mjs +21 -21
- package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget-view.component.mjs +4 -1
- package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget.config.mjs +14 -5
- package/esm2022/widgets/lib/widgets/editors/color/color-box-widget-designer.component.mjs +53 -0
- package/esm2022/widgets/lib/widgets/editors/color/color-box-widget-edit.component.mjs +24 -12
- package/esm2022/widgets/lib/widgets/editors/color/color-box-widget.config.mjs +15 -6
- package/esm2022/widgets/lib/widgets/editors/contact/contact-widget-edit.component.mjs +13 -4
- package/esm2022/widgets/lib/widgets/editors/contact/contact-widget.config.mjs +2 -1
- package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget-edit.component.mjs +13 -4
- package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget.config.mjs +5 -2
- package/esm2022/widgets/lib/widgets/editors/email/email-box-widget-edit.component.mjs +13 -4
- package/esm2022/widgets/lib/widgets/editors/email/email-box-widget.config.mjs +4 -2
- package/esm2022/widgets/lib/widgets/editors/large-text/large-text-widget-edit.component.mjs +13 -4
- package/esm2022/widgets/lib/widgets/editors/large-text/large-text-widget.config.mjs +4 -2
- package/esm2022/widgets/lib/widgets/editors/link/link-widget-edit.component.mjs +13 -4
- package/esm2022/widgets/lib/widgets/editors/link/link-widget.config.mjs +2 -1
- package/esm2022/widgets/lib/widgets/editors/number/number-box-widget-edit.component.mjs +14 -5
- package/esm2022/widgets/lib/widgets/editors/number/number-box-widget.config.mjs +4 -2
- package/esm2022/widgets/lib/widgets/editors/password/password-box-widget-edit.component.mjs +12 -8
- package/esm2022/widgets/lib/widgets/editors/password/password-box-widget.config.mjs +4 -2
- package/esm2022/widgets/lib/widgets/editors/phone/phone-box-widget-edit.component.mjs +13 -4
- package/esm2022/widgets/lib/widgets/editors/phone/phone-box-widget.config.mjs +2 -1
- package/esm2022/widgets/lib/widgets/editors/rich-text/rich-text-widget-edit.component.mjs +14 -5
- package/esm2022/widgets/lib/widgets/editors/rich-text/rich-text-widget.config.mjs +4 -2
- package/esm2022/widgets/lib/widgets/editors/select/select-box-widget-edit.component.mjs +25 -4
- package/esm2022/widgets/lib/widgets/editors/select/select-box-widget-view.component.mjs +13 -4
- package/esm2022/widgets/lib/widgets/editors/select/select-box-widget.config.mjs +2 -1
- package/esm2022/widgets/lib/widgets/editors/selection-list/index.mjs +2 -1
- package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-designer.component.mjs +75 -0
- package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-edit.component.mjs +25 -13
- package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-view.component.mjs +2 -3
- package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget.config.mjs +16 -3
- package/esm2022/widgets/lib/widgets/editors/text/text-box-widget-edit.component.mjs +13 -4
- package/esm2022/widgets/lib/widgets/editors/text/text-box-widget.config.mjs +4 -2
- package/esm2022/widgets/lib/widgets/editors/toggle/toggle-widget-edit.component.mjs +14 -4
- package/esm2022/widgets/lib/widgets/editors/toggle/toggle-widget.config.mjs +4 -2
- package/esm2022/widgets/lib/widgets/layout/block/block-widget-designer.component.mjs +40 -17
- package/esm2022/widgets/lib/widgets/layout/block/block-widget-view.component.mjs +17 -3
- package/esm2022/widgets/lib/widgets/layout/block/block-widget.config.mjs +9 -4
- package/esm2022/widgets/lib/widgets/layout/document/document-widget.config.mjs +2 -2
- package/esm2022/widgets/lib/widgets/layout/form-field/form-field-widget-designer.component.mjs +19 -9
- package/esm2022/widgets/lib/widgets/layout/form-field/form-field-widget.config.mjs +4 -3
- package/esm2022/widgets/lib/widgets/layout/grid/grid-widget-designer.component.mjs +21 -10
- package/esm2022/widgets/lib/widgets/layout/grid/grid-widget.config.mjs +8 -5
- package/esm2022/widgets/lib/widgets/layout/grid-item/grid-item-widget-designer.component.mjs +49 -41
- package/esm2022/widgets/lib/widgets/layout/grid-item/grid-item-widget.config.mjs +6 -9
- package/esm2022/widgets/lib/widgets/layout/grid-row/grid-row-widget-designer.component.mjs +84 -0
- package/esm2022/widgets/lib/widgets/layout/grid-row/grid-row-widget-print.component.mjs +19 -0
- package/esm2022/widgets/lib/widgets/layout/grid-row/grid-row-widget-view.component.mjs +18 -0
- package/esm2022/widgets/lib/widgets/layout/grid-row/grid-row-widget.config.mjs +28 -0
- package/esm2022/widgets/lib/widgets/layout/grid-row/index.mjs +5 -0
- package/esm2022/widgets/lib/widgets/layout/page/page-widget-designer.component.mjs +8 -9
- package/esm2022/widgets/lib/widgets/layout/page/page-widget-view.component.mjs +1 -2
- package/esm2022/widgets/lib/widgets/layout/page/page-widget.config.mjs +8 -4
- package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget-designer.component.mjs +6 -6
- package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget.config.mjs +2 -2
- package/esm2022/widgets/lib/widgets/layout/text-block/text-block-widget-designer.component.mjs +38 -0
- package/esm2022/widgets/lib/widgets/layout/text-block/text-block-widget-view.component.mjs +3 -2
- package/esm2022/widgets/lib/widgets/layout/text-block/text-block-widget.config.mjs +5 -5
- package/esm2022/widgets/lib/widgets.module.mjs +4 -1
- package/fesm2022/acorex-platform-auth.mjs +6 -4
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/acorex-platform-common.mjs +1 -1
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +139 -1
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +21 -13
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer-preview.component-CaRHf4x_.mjs +23 -0
- package/fesm2022/acorex-platform-layout-designer-preview.component-CaRHf4x_.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-designer-widget-picker.component-DXgcm-fP.mjs → acorex-platform-layout-designer-widget-picker.component-BZryrCyh.mjs} +4 -4
- package/fesm2022/acorex-platform-layout-designer-widget-picker.component-BZryrCyh.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-designer.mjs +496 -345
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +14 -6
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-DKNRxpQk.mjs → acorex-platform-themes-default-entity-master-create-view.component-Q8eTfAVx.mjs} +23 -13
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Q8eTfAVx.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-BDk03AnX.mjs → acorex-platform-themes-default-entity-master-modify-view.component-BijYXMme.mjs} +4 -4
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BijYXMme.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +226 -66
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/acorex-platform-widgets-button-widget-designer.component-C0S_HJkl.mjs +57 -0
- package/fesm2022/acorex-platform-widgets-button-widget-designer.component-C0S_HJkl.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets-checkbox-widget-designer.component-DAGbdSTk.mjs +57 -0
- package/fesm2022/acorex-platform-widgets-checkbox-widget-designer.component-DAGbdSTk.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-checkbox-widget-view.component-BCsej7C6.mjs → acorex-platform-widgets-checkbox-widget-view.component-tPk6Gylo.mjs} +4 -1
- package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-tPk6Gylo.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-Bb3aXCNZ.mjs +56 -0
- package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-Bb3aXCNZ.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-page-widget-designer.component-DlfG4EP1.mjs → acorex-platform-widgets-page-widget-designer.component-6BMZ0qRw.mjs} +8 -9
- package/fesm2022/acorex-platform-widgets-page-widget-designer.component-6BMZ0qRw.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets-text-block-widget-designer.component-Bi9hlpvB.mjs +41 -0
- package/fesm2022/acorex-platform-widgets-text-block-widget-designer.component-Bi9hlpvB.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets.mjs +1391 -777
- package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
- package/layout/builder/lib/builder/widget.types.d.ts +20 -8
- package/layout/designer/index.d.ts +1 -6
- package/layout/designer/lib/{board → designer/components/board}/board.component.d.ts +3 -1
- package/layout/designer/lib/{breadcrumbs → designer/components/breadcrumbs}/breadcrumbs.component.d.ts +1 -1
- package/layout/designer/lib/designer/components/drawers/data-sources/data-sources.component.d.ts +12 -0
- package/layout/designer/lib/{history → designer/components/drawers/history}/history.component.d.ts +1 -1
- package/layout/designer/lib/{outline → designer/components/drawers/outline}/outline.component.d.ts +1 -1
- package/layout/designer/lib/{pages → designer/components/drawers/pages}/pages.component.d.ts +1 -1
- package/layout/designer/lib/{header-menu → designer/components/header-menu}/header-menu.component.d.ts +1 -1
- package/layout/designer/lib/designer/designer.component.d.ts +1 -1
- package/layout/designer/lib/designer/index.d.ts +7 -0
- package/layout/designer/lib/designer/shared/designer-connector.service.d.ts +11 -0
- package/layout/designer/lib/{designer.service.d.ts → designer/shared/designer.service.d.ts} +9 -12
- package/layout/designer/lib/designer/shared/designer.typs.d.ts +4 -0
- package/layout/designer/lib/designer/shared/drawer-content/drawer-content.component.d.ts +8 -0
- package/layout/designer/lib/{widget-designer-renderer.component.d.ts → designer/shared/widget-designer-renderer.directive.d.ts} +6 -8
- package/layout/designer/lib/property-viewer/widget-property-viewer.component.d.ts +8 -0
- package/layout/entity/lib/entity-registery.service.d.ts +1 -1
- package/package.json +7 -7
- package/themes/default/index.d.ts +2 -1
- package/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.d.ts +7 -2
- package/themes/default/lib/layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component.d.ts +1 -1
- package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/comments/comment-list-view.component.d.ts +33 -0
- package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/comments/comments.service.d.ts +11 -0
- package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.d.ts +3 -2
- package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/overview/entity-single-overview.component.d.ts +11 -0
- package/themes/default/lib/layouts/entity-layouts/index.d.ts +1 -0
- package/widgets/lib/properties/data-source.props.d.ts +2 -0
- package/widgets/lib/properties/editors.props.d.ts +2 -5
- package/widgets/lib/properties/general.props.d.ts +7 -0
- package/widgets/lib/properties/index.d.ts +3 -0
- package/widgets/lib/properties/layout.props.d.ts +12 -3
- package/widgets/lib/widgets/actions/button/button-widget-designer.component.d.ts +15 -0
- package/widgets/lib/widgets/actions/button/button-widget-view.component.d.ts +1 -1
- package/widgets/lib/widgets/advance/file/file-box-widget-edit.component.d.ts +1 -0
- package/widgets/lib/widgets/advance/gallery/gallery-widget-edit.component.d.ts +1 -0
- package/widgets/lib/widgets/advance/map/index.d.ts +0 -3
- package/widgets/lib/widgets/advance/map/map-box-widget-edit.component.d.ts +10 -32
- package/widgets/lib/widgets/advance/map/map-box-widget-view.component.d.ts +6 -11
- package/widgets/lib/widgets/advance/qrcode/qrcode-widget-view.component.d.ts +5 -4
- package/widgets/lib/widgets/advance/signature/signature-pad-widget-edit.component.d.ts +1 -0
- package/widgets/lib/widgets/editors/checkbox/checkbox-widget-designer.component.d.ts +10 -0
- package/widgets/lib/widgets/editors/checkbox/checkbox-widget-edit.component.d.ts +2 -5
- package/widgets/lib/widgets/editors/checkbox/checkbox-widget-view.component.d.ts +3 -0
- package/widgets/lib/widgets/editors/color/color-box-widget-designer.component.d.ts +11 -0
- package/widgets/lib/widgets/editors/color/color-box-widget-edit.component.d.ts +3 -0
- package/widgets/lib/widgets/editors/contact/contact-widget-edit.component.d.ts +1 -0
- package/widgets/lib/widgets/editors/date-time/date-time-box-widget-edit.component.d.ts +1 -0
- package/widgets/lib/widgets/editors/email/email-box-widget-edit.component.d.ts +1 -0
- package/widgets/lib/widgets/editors/large-text/large-text-widget-edit.component.d.ts +1 -0
- package/widgets/lib/widgets/editors/link/link-widget-edit.component.d.ts +1 -0
- package/widgets/lib/widgets/editors/number/number-box-widget-edit.component.d.ts +1 -0
- package/widgets/lib/widgets/editors/password/password-box-widget-edit.component.d.ts +1 -2
- package/widgets/lib/widgets/editors/phone/phone-box-widget-edit.component.d.ts +1 -0
- package/widgets/lib/widgets/editors/rich-text/rich-text-widget-edit.component.d.ts +1 -0
- package/widgets/lib/widgets/editors/select/select-box-widget-edit.component.d.ts +1 -0
- package/widgets/lib/widgets/editors/select/select-box-widget-view.component.d.ts +1 -0
- package/widgets/lib/widgets/editors/selection-list/index.d.ts +1 -0
- package/widgets/lib/widgets/editors/selection-list/selection-list-widget-designer.component.d.ts +16 -0
- package/widgets/lib/widgets/editors/selection-list/selection-list-widget-edit.component.d.ts +4 -2
- package/widgets/lib/widgets/editors/selection-list/selection-list-widget-view.component.d.ts +1 -1
- package/widgets/lib/widgets/editors/text/text-box-widget-edit.component.d.ts +1 -0
- package/widgets/lib/widgets/editors/toggle/toggle-widget-edit.component.d.ts +2 -1
- package/widgets/lib/widgets/layout/block/block-widget-designer.component.d.ts +5 -1
- package/widgets/lib/widgets/layout/block/block-widget-view.component.d.ts +3 -0
- package/widgets/lib/widgets/layout/form-field/form-field-widget-designer.component.d.ts +2 -1
- package/widgets/lib/widgets/layout/grid/grid-widget-designer.component.d.ts +3 -2
- package/widgets/lib/widgets/layout/grid-item/grid-item-widget-designer.component.d.ts +6 -4
- package/widgets/lib/widgets/layout/grid-row/grid-row-widget-designer.component.d.ts +15 -0
- package/widgets/lib/widgets/layout/grid-row/grid-row-widget-print.component.d.ts +6 -0
- package/widgets/lib/widgets/layout/grid-row/grid-row-widget-view.component.d.ts +6 -0
- package/widgets/lib/widgets/layout/grid-row/grid-row-widget.config.d.ts +7 -0
- package/widgets/lib/widgets/layout/grid-row/index.d.ts +4 -0
- package/widgets/lib/widgets/layout/page/page-widget-designer.component.d.ts +3 -2
- package/widgets/lib/widgets/layout/text-block/text-block-widget-designer.component.d.ts +11 -0
- package/widgets/lib/widgets/layout/text-block/text-block-widget-view.component.d.ts +1 -1
- package/esm2022/layout/designer/lib/board/board.component.mjs +0 -92
- package/esm2022/layout/designer/lib/breadcrumbs/breadcrumbs.component.mjs +0 -64
- package/esm2022/layout/designer/lib/command.mjs +0 -185
- package/esm2022/layout/designer/lib/designer.service.mjs +0 -399
- package/esm2022/layout/designer/lib/header-menu/header-menu.component.mjs +0 -24
- package/esm2022/layout/designer/lib/helpers/grid-drawer/grid-drawer.component.mjs +0 -82
- package/esm2022/layout/designer/lib/history/history.component.mjs +0 -28
- package/esm2022/layout/designer/lib/outline/outline.component.mjs +0 -56
- package/esm2022/layout/designer/lib/pages/pages.component.mjs +0 -28
- package/esm2022/layout/designer/lib/widget-designer-renderer.component.mjs +0 -251
- package/esm2022/widgets/lib/widgets/advance/map/map-box-widget-column.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/advance/map/map-box-widget-filter.component.mjs +0 -20
- package/esm2022/widgets/lib/widgets/advance/map/map-box-widget-print.component.mjs +0 -19
- package/fesm2022/acorex-platform-layout-designer-preview.component-xkvSLydm.mjs +0 -23
- package/fesm2022/acorex-platform-layout-designer-preview.component-xkvSLydm.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-designer-widget-picker.component-DXgcm-fP.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-DKNRxpQk.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BDk03AnX.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-BCsej7C6.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-page-widget-designer.component-DlfG4EP1.mjs.map +0 -1
- package/widgets/lib/widgets/advance/map/map-box-widget-column.component.d.ts +0 -6
- package/widgets/lib/widgets/advance/map/map-box-widget-filter.component.d.ts +0 -6
- package/widgets/lib/widgets/advance/map/map-box-widget-print.component.d.ts +0 -6
- /package/layout/designer/lib/{helpers → designer/components}/add-widget-button/add-widget-button.component.d.ts +0 -0
- /package/layout/designer/lib/{helpers → designer/components}/grid-drawer/grid-drawer.component.d.ts +0 -0
- /package/layout/designer/lib/{widget-picker → designer/components/widget-picker}/widget-picker.component.d.ts +0 -0
- /package/layout/designer/lib/{command.d.ts → designer/shared/command.d.ts} +0 -0
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { Component, inject, ViewEncapsulation, ChangeDetectionStrategy, computed, effect, ElementRef } from '@angular/core';
|
|
4
|
-
import { AXPWidgetDesignerRendererComponent } from '../widget-designer-renderer.component';
|
|
5
|
-
import { AXPDesignerService } from '../designer.service';
|
|
6
|
-
import { get } from 'lodash-es';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@acorex/platform/layout/builder";
|
|
9
|
-
export class AXPDesignerBoardComponent {
|
|
10
|
-
constructor() {
|
|
11
|
-
this.context = {};
|
|
12
|
-
this.elementRef = inject((ElementRef));
|
|
13
|
-
this.breakpointMap = {
|
|
14
|
-
'sm': 640,
|
|
15
|
-
'md': 768,
|
|
16
|
-
'lg': 1024,
|
|
17
|
-
'xl': 1280,
|
|
18
|
-
'xxl': 1536
|
|
19
|
-
};
|
|
20
|
-
this.service = inject(AXPDesignerService);
|
|
21
|
-
this.width = computed(() => {
|
|
22
|
-
switch (this.service.size()) {
|
|
23
|
-
case 'sm':
|
|
24
|
-
return '340px';
|
|
25
|
-
case 'md':
|
|
26
|
-
case 'lg':
|
|
27
|
-
return '768px';
|
|
28
|
-
default:
|
|
29
|
-
return '100%';
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
this.ef = effect(() => {
|
|
33
|
-
this.removeCustomClass();
|
|
34
|
-
if (this.service.size() != 'xl') {
|
|
35
|
-
this.applyResponsiveStyles(this.service.size());
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
// Unified method to extract media queries and create a custom class
|
|
40
|
-
applyResponsiveStyles(breakpoint) {
|
|
41
|
-
const minWidth = get(this.breakpointMap, breakpoint);
|
|
42
|
-
const mediaRules = [];
|
|
43
|
-
// Loop through all the stylesheets
|
|
44
|
-
for (let sheet of Array.from(document.styleSheets)) {
|
|
45
|
-
try {
|
|
46
|
-
// Loop through CSS rules
|
|
47
|
-
for (let rule of Array.from(sheet.cssRules)) {
|
|
48
|
-
// Check if the rule is a CSSMediaRule
|
|
49
|
-
if (rule instanceof CSSMediaRule && rule.media.mediaText.includes(`min-width: ${minWidth}px`)) {
|
|
50
|
-
// Loop through the media rule's CSS rules
|
|
51
|
-
for (let subRule of Array.from(rule.cssRules)) {
|
|
52
|
-
mediaRules.push(subRule.cssText);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
catch (e) {
|
|
58
|
-
console.error('Error accessing stylesheet:', e);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
// Create a dynamic class for the media queries
|
|
62
|
-
this.createCustomClass(`axp-preview-${breakpoint}`, mediaRules, breakpoint);
|
|
63
|
-
}
|
|
64
|
-
createCustomClass(className, styles, breakpoint) {
|
|
65
|
-
const styleSheet = document.createElement('style');
|
|
66
|
-
styleSheet.setAttribute("data-screen", breakpoint);
|
|
67
|
-
// Construct a pure CSS string, dynamically replacing the breakpoint prefix
|
|
68
|
-
let styleString = "";
|
|
69
|
-
styles.forEach(style => {
|
|
70
|
-
// Replace any prefixed classes like 'lg:' or 'md:' dynamically
|
|
71
|
-
const dynamicPrefix = new RegExp(`\\.${breakpoint}\\\\:`, 'g');
|
|
72
|
-
styleString += `.${className} ${style.replace(dynamicPrefix, '.')}`; // Replace the breakpoint prefix
|
|
73
|
-
});
|
|
74
|
-
styleSheet.innerText = styleString;
|
|
75
|
-
this.removeCustomClass();
|
|
76
|
-
this.elementRef.nativeElement.appendChild(styleSheet);
|
|
77
|
-
}
|
|
78
|
-
removeCustomClass() {
|
|
79
|
-
this.elementRef.nativeElement.querySelectorAll('style').forEach(s => s.remove());
|
|
80
|
-
}
|
|
81
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerBoardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
82
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: AXPDesignerBoardComponent, isStandalone: true, selector: "axp-designer-board", ngImport: i0, template: "<div class=\"axp-designer-board axp-state-design axp-preview-{{service.size()}}\" [style.width]=\"width()\">\n <axp-widgets-container [(context)]=\"context\">\n <axp-widget-designer-renderer [node]=\"service.currentPage()\" [mode]=\"service.mode()\">\n </axp-widget-designer-renderer>\n </axp-widgets-container>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: i1.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "variables", "functions"], outputs: ["onChanged", "contextChange"] }, { kind: "component", type: AXPWidgetDesignerRendererComponent, selector: "axp-widget-designer-renderer", inputs: ["parentNode", "index", "mode", "node"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
83
|
-
}
|
|
84
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerBoardComponent, decorators: [{
|
|
85
|
-
type: Component,
|
|
86
|
-
args: [{ selector: 'axp-designer-board', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
87
|
-
CommonModule,
|
|
88
|
-
AXPLayoutBuilderModule,
|
|
89
|
-
AXPWidgetDesignerRendererComponent
|
|
90
|
-
], template: "<div class=\"axp-designer-board axp-state-design axp-preview-{{service.size()}}\" [style.width]=\"width()\">\n <axp-widgets-container [(context)]=\"context\">\n <axp-widget-designer-renderer [node]=\"service.currentPage()\" [mode]=\"service.mode()\">\n </axp-widget-designer-renderer>\n </axp-widgets-container>\n</div>" }]
|
|
91
|
-
}] });
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9hcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZGVzaWduZXIvc3JjL2xpYi9ib2FyZC9ib2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL2JvYXJkL2JvYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBZ0IsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUksT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7O0FBaUJoQyxNQUFNLE9BQU8seUJBQXlCO0lBWnRDO1FBY2MsWUFBTyxHQUFRLEVBQUUsQ0FBQztRQUNwQixlQUFVLEdBQUcsTUFBTSxDQUFDLENBQUEsVUFBMEIsQ0FBQSxDQUErQixDQUFDO1FBRTlFLGtCQUFhLEdBQUc7WUFDcEIsSUFBSSxFQUFFLEdBQUc7WUFDVCxJQUFJLEVBQUUsR0FBRztZQUNULElBQUksRUFBRSxJQUFJO1lBQ1YsSUFBSSxFQUFFLElBQUk7WUFDVixLQUFLLEVBQUUsSUFBSTtTQUNkLENBQUM7UUFrRFEsWUFBTyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBR3JDLFVBQUssR0FBRyxRQUFRLENB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VUFBVSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVPLGlCQUFpQjtRQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNyRixDQUFDOzhHQTNEUSx5QkFBeUI7a0dBQXpCLHlCQUF5Qiw4RUN0QnRDLHFWQUtNLDJDRFlFLFlBQVksOEJBQ1osc0JBQXNCLHVOQUN0QixrQ0FBa0M7OzJGQUc3Qix5QkFBeUI7a0JBWnJDLFNBQVM7K0JBQ0ksb0JBQW9CLGlCQUVmLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNMLFlBQVk7d0JBQ1osc0JBQXNCO3dCQUN0QixrQ0FBa0M7cUJBQ3JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBWaWV3RW5jYXBzdWxhdGlvbiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIEhvc3RMaXN0ZW5lciwgY29tcHV0ZWQsIGVmZmVjdCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0RGVzaWduZXJSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4uL3dpZGdldC1kZXNpZ25lci1yZW5kZXJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhQRGVzaWduZXJTZXJ2aWNlIH0gZnJvbSAnLi4vZGVzaWduZXIuc2VydmljZSc7XG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IGh0bWwyY2FudmFzIGZyb20gJ2h0bWwyY2FudmFzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWVyZ2UgfSBmcm9tICdyeGpzJztcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2F4cC1kZXNpZ25lci1ib2FyZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JvYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEFYUExheW91dEJ1aWxkZXJNb2R1bGUsXG4gICAgICAgIEFYUFdpZGdldERlc2lnbmVyUmVuZGVyZXJDb21wb25lbnRcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBEZXNpZ25lckJvYXJkQ29tcG9uZW50IHtcblxuICAgIHByb3RlY3RlZCBjb250ZXh0OiBhbnkgPSB7fTtcbiAgICBwcml2YXRlIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4pIGFzIEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gICAgcHJpdmF0ZSBicmVha3BvaW50TWFwID0ge1xuICAgICAgICAnc20nOiA2NDAsXG4gICAgICAgICdtZCc6IDc2OCxcbiAgICAgICAgJ2xnJzogMTAyNCxcbiAgICAgICAgJ3hsJzogMTI4MCxcbiAgICAgICAgJ3h4bCc6IDE1MzZcbiAgICB9O1xuXG4gICAgLy8gVW5pZmllZCBtZXRob2QgdG8gZXh0cmFjdCBtZWRpYSBxdWVyaWVzIGFuZCBjcmVhdGUgYSBjdXN0b20gY2xhc3NcbiAgICBhcHBseVJlc3BvbnNpdmVTdHlsZXMoYnJlYWtwb2ludDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IG1pbldpZHRoID0gZ2V0KHRoaXMuYnJlYWtwb2ludE1hcCwgYnJlYWtwb2ludCkgYXMgbnVtYmVyO1xuICAgICAgICBjb25zdCBtZWRpYVJ1bGVzID0gW107XG5cbiAgICAgICAgLy8gTG9vcCB0aHJvdWdoIGFsbCB0aGUgc3R5bGVzaGVldHNcbiAgICAgICAgZm9yIChsZXQgc2hlZXQgb2YgQXJyYXkuZnJvbShkb2N1bWVudC5zdHlsZVNoZWV0cykpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgLy8gTG9vcCB0aHJvdWdoIENTUyBydWxlc1xuICAgICAgICAgICAgICAgIGZvciAobGV0IHJ1bGUgb2YgQXJyYXkuZnJvbShzaGVldC5jc3NSdWxlcykpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHJ1bGUgaXMgYSBDU1NNZWRpYVJ1bGVcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bGUgaW5zdGFuY2VvZiBDU1NNZWRpYVJ1bGUgJiYgcnVsZS5tZWRpYS5tZWRpYVRleHQuaW5jbHVkZXMoYG1pbi13aWR0aDogJHttaW5XaWR0aH1weGApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBMb29wIHRocm91Z2ggdGhlIG1lZGlhIHJ1bGUncyBDU1MgcnVsZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHN1YlJ1bGUgb2YgQXJyYXkuZnJvbShydWxlLmNzc1J1bGVzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhUnVsZXMucHVzaChzdWJSdWxlLmNzc1RleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGFjY2Vzc2luZyBzdHlsZXNoZWV0OicsIGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIGEgZHluYW1pYyBjbGFzcyBmb3IgdGhlIG1lZGlhIHF1ZXJpZXNcbiAgICAgICAgdGhpcy5jcmVhdGVDdXN0b21DbGFzcyhgYXhwLXByZXZpZXctJHticmVha3BvaW50fWAsIG1lZGlhUnVsZXMsIGJyZWFrcG9pbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQ3VzdG9tQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcsIHN0eWxlczogc3RyaW5nW10sIGJyZWFrcG9pbnQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBzdHlsZVNoZWV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICAgICAgc3R5bGVTaGVldC5zZXRBdHRyaWJ1dGUoXCJkYXRhLXNjcmVlblwiLCBicmVha3BvaW50KTtcblxuICAgICAgICAvLyBDb25zdHJ1Y3QgYSBwdXJlIENTUyBzdHJpbmcsIGR5bmFtaWNhbGx5IHJlcGxhY2luZyB0aGUgYnJlYWtwb2ludCBwcmVmaXhcbiAgICAgICAgbGV0IHN0eWxlU3RyaW5nID0gXCJcIjtcbiAgICAgICAgc3R5bGVzLmZvckVhY2goc3R5bGUgPT4ge1xuICAgICAgICAgICAgLy8gUmVwbGFjZSBhbnkgcHJlZml4ZWQgY2xhc3NlcyBsaWtlICdsZzonIG9yICdtZDonIGR5bmFtaWNhbGx5XG4gICAgICAgICAgICBjb25zdCBkeW5hbWljUHJlZml4ID0gbmV3IFJlZ0V4cChgXFxcXC4ke2JyZWFrcG9pbnR9XFxcXFxcXFw6YCwgJ2cnKTtcbiAgICAgICAgICAgIHN0eWxlU3RyaW5nICs9IGAuJHtjbGFzc05hbWV9ICR7c3R5bGUucmVwbGFjZShkeW5hbWljUHJlZml4LCAnLicpfWA7IC8vIFJlcGxhY2UgdGhlIGJyZWFrcG9pbnQgcHJlZml4XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHN0eWxlU2hlZXQuaW5uZXJUZXh0ID0gc3R5bGVTdHJpbmc7XG4gICAgICAgIHRoaXMucmVtb3ZlQ3VzdG9tQ2xhc3MoKTtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoc3R5bGVTaGVldCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVDdXN0b21DbGFzcygpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnc3R5bGUnKS5mb3JFYWNoKHMgPT4gcy5yZW1vdmUoKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNlcnZpY2UgPSBpbmplY3QoQVhQRGVzaWduZXJTZXJ2aWNlKTtcblxuXG4gICAgcHJvdGVjdGVkIHdpZHRoID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuc2VydmljZS5zaXplKCkpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NtJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJzM0MHB4JztcbiAgICAgICAgICAgIGNhc2UgJ21kJzpcbiAgICAgICAgICAgIGNhc2UgJ2xnJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJzc2OHB4JztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICcxMDAlJztcbiAgICAgICAgfVxuICAgIH0pO1xuXG5cbiAgICBwcml2YXRlIGVmID0gZWZmZWN0KCgpID0+IHtcbiAgICAgICAgdGhpcy5yZW1vdmVDdXN0b21DbGFzcygpO1xuICAgICAgICBpZiAodGhpcy5zZXJ2aWNlLnNpemUoKSAhPSAneGwnKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGx5UmVzcG9uc2l2ZVN0eWxlcyh0aGlzLnNlcnZpY2Uuc2l6ZSgpKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG5cbiAgIFxuXG5cblxufVxuIiwiPGRpdiBjbGFzcz1cImF4cC1kZXNpZ25lci1ib2FyZCBheHAtc3RhdGUtZGVzaWduIGF4cC1wcmV2aWV3LXt7c2VydmljZS5zaXplKCl9fVwiIFtzdHlsZS53aWR0aF09XCJ3aWR0aCgpXCI+XG4gICAgPGF4cC13aWRnZXRzLWNvbnRhaW5lciBbKGNvbnRleHQpXT1cImNvbnRleHRcIj5cbiAgICAgICAgPGF4cC13aWRnZXQtZGVzaWduZXItcmVuZGVyZXIgW25vZGVdPVwic2VydmljZS5jdXJyZW50UGFnZSgpXCIgW21vZGVdPVwic2VydmljZS5tb2RlKClcIj5cbiAgICAgICAgPC9heHAtd2lkZ2V0LWRlc2lnbmVyLXJlbmRlcmVyPlxuICAgIDwvYXhwLXdpZGdldHMtY29udGFpbmVyPlxuPC9kaXY+Il19
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';
|
|
4
|
-
import { AXPDesignerService } from '../designer.service';
|
|
5
|
-
import { get } from 'lodash-es';
|
|
6
|
-
import { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';
|
|
7
|
-
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@acorex/components/breadcrumbs";
|
|
10
|
-
export class AXPDesignerBreadcrumbsComponent {
|
|
11
|
-
constructor() {
|
|
12
|
-
this.service = inject(AXPDesignerService);
|
|
13
|
-
}
|
|
14
|
-
getTitle(node) {
|
|
15
|
-
return get(node, "__meta__.config.title");
|
|
16
|
-
}
|
|
17
|
-
handleClick(node) {
|
|
18
|
-
this.service.select({ widget: node });
|
|
19
|
-
}
|
|
20
|
-
handleMouseOver(node) {
|
|
21
|
-
this.service.focus({ widget: node });
|
|
22
|
-
}
|
|
23
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerBreadcrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPDesignerBreadcrumbsComponent, isStandalone: true, selector: "axp-designer-breadcrumbs", ngImport: i0, template: `
|
|
25
|
-
<ax-breadcrumbs class="ax-text-white">
|
|
26
|
-
@for( b of service.breadcrumbs();track $index){
|
|
27
|
-
<ax-breadcrumbs-item>
|
|
28
|
-
<a (click)="handleClick(b)" (mouseover)="handleMouseOver(b)"> {{getTitle(b)}}</a>
|
|
29
|
-
</ax-breadcrumbs-item>
|
|
30
|
-
}
|
|
31
|
-
<ng-template #divider>
|
|
32
|
-
<i class="ax-icon ax-icon-chevron-right"></i>
|
|
33
|
-
</ng-template>
|
|
34
|
-
</ax-breadcrumbs>
|
|
35
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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 }); }
|
|
36
|
-
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerBreadcrumbsComponent, decorators: [{
|
|
38
|
-
type: Component,
|
|
39
|
-
args: [{
|
|
40
|
-
selector: 'axp-designer-breadcrumbs',
|
|
41
|
-
template: `
|
|
42
|
-
<ax-breadcrumbs class="ax-text-white">
|
|
43
|
-
@for( b of service.breadcrumbs();track $index){
|
|
44
|
-
<ax-breadcrumbs-item>
|
|
45
|
-
<a (click)="handleClick(b)" (mouseover)="handleMouseOver(b)"> {{getTitle(b)}}</a>
|
|
46
|
-
</ax-breadcrumbs-item>
|
|
47
|
-
}
|
|
48
|
-
<ng-template #divider>
|
|
49
|
-
<i class="ax-icon ax-icon-chevron-right"></i>
|
|
50
|
-
</ng-template>
|
|
51
|
-
</ax-breadcrumbs>
|
|
52
|
-
`,
|
|
53
|
-
encapsulation: ViewEncapsulation.None,
|
|
54
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
55
|
-
standalone: true,
|
|
56
|
-
imports: [
|
|
57
|
-
CommonModule,
|
|
58
|
-
AXPLayoutBuilderModule,
|
|
59
|
-
AXBreadcrumbsModule,
|
|
60
|
-
AXDecoratorModule
|
|
61
|
-
],
|
|
62
|
-
}]
|
|
63
|
-
}] });
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZGVzaWduZXIvc3JjL2xpYi9icmVhZGNydW1icy9icmVhZGNydW1icy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFpQixNQUFNLGlDQUFpQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7QUEyQmxFLE1BQU0sT0FBTywrQkFBK0I7SUF6QjVDO1FBMkJjLFlBQU8sR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztLQWFsRDtJQVhhLFFBQVEsQ0FBQyxJQUFtQjtRQUNsQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLENBQWtCLENBQUM7SUFDL0QsQ0FBQztJQUVTLFdBQVcsQ0FBQyxJQUFtQjtRQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFUyxlQUFlLENBQUMsSUFBbUI7UUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDOzhHQWRRLCtCQUErQjtrR0FBL0IsK0JBQStCLG9GQXZCOUI7Ozs7Ozs7Ozs7O0tBV1QsMkRBS0csWUFBWSw4QkFDWixzQkFBc0IsOEJBQ3RCLG1CQUFtQiwrT0FDbkIsaUJBQWlCOzsyRkFJWiwrQkFBK0I7a0JBekIzQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7S0FXVDtvQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixzQkFBc0I7d0JBQ3RCLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3FCQUNwQjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUExheW91dEJ1aWxkZXJNb2R1bGUsIEFYUFdpZGdldE5vZGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUERlc2lnbmVyU2VydmljZSB9IGZyb20gJy4uL2Rlc2lnbmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFYQnJlYWRjcnVtYnNNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnJlYWRjcnVtYnMnO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXhwLWRlc2lnbmVyLWJyZWFkY3J1bWJzJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8YXgtYnJlYWRjcnVtYnMgY2xhc3M9XCJheC10ZXh0LXdoaXRlXCI+XG4gICAgICAgICAgICBAZm9yKCBiIG9mIHNlcnZpY2UuYnJlYWRjcnVtYnMoKTt0cmFjayAkaW5kZXgpe1xuICAgICAgICAgICAgICAgIDxheC1icmVhZGNydW1icy1pdGVtPlxuICAgICAgICAgICAgICAgICAgICA8YSAgIChjbGljayk9XCJoYW5kbGVDbGljayhiKVwiIChtb3VzZW92ZXIpPVwiaGFuZGxlTW91c2VPdmVyKGIpXCI+IHt7Z2V0VGl0bGUoYil9fTwvYT5cbiAgICAgICAgICAgICAgICA8L2F4LWJyZWFkY3J1bWJzLWl0ZW0+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RpdmlkZXI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJheC1pY29uIGF4LWljb24tY2hldnJvbi1yaWdodFwiPjwvaT5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvYXgtYnJlYWRjcnVtYnM+XG4gICAgYCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEFYUExheW91dEJ1aWxkZXJNb2R1bGUsXG4gICAgICAgIEFYQnJlYWRjcnVtYnNNb2R1bGUsXG4gICAgICAgIEFYRGVjb3JhdG9yTW9kdWxlXG4gICAgXSxcbn0pXG5cbmV4cG9ydCBjbGFzcyBBWFBEZXNpZ25lckJyZWFkY3J1bWJzQ29tcG9uZW50IHtcblxuICAgIHByb3RlY3RlZCBzZXJ2aWNlID0gaW5qZWN0KEFYUERlc2lnbmVyU2VydmljZSk7XG5cbiAgICBwcm90ZWN0ZWQgZ2V0VGl0bGUobm9kZTogQVhQV2lkZ2V0Tm9kZSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBnZXQobm9kZSwgXCJfX21ldGFfXy5jb25maWcudGl0bGVcIikgYXMgYW55IGFzIHN0cmluZztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaGFuZGxlQ2xpY2sobm9kZTogQVhQV2lkZ2V0Tm9kZSkge1xuICAgICAgICB0aGlzLnNlcnZpY2Uuc2VsZWN0KHsgd2lkZ2V0OiBub2RlIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBoYW5kbGVNb3VzZU92ZXIobm9kZTogQVhQV2lkZ2V0Tm9kZSkge1xuICAgICAgICB0aGlzLnNlcnZpY2UuZm9jdXMoeyB3aWRnZXQ6IG5vZGUgfSk7XG4gICAgfVxufSJdfQ==
|
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
import { computed, Injectable, signal } from "@angular/core";
|
|
2
|
-
import { cloneDeep, merge } from "lodash-es";
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
// AddWidgetCommand
|
|
5
|
-
export class AddWidgetCommand {
|
|
6
|
-
constructor(widget, parent, previousSelection) {
|
|
7
|
-
this.widget = widget;
|
|
8
|
-
this.parent = parent;
|
|
9
|
-
this.previousSelection = previousSelection;
|
|
10
|
-
}
|
|
11
|
-
execute() {
|
|
12
|
-
this.parent.children = this.parent.children || [];
|
|
13
|
-
this.parent.children.push(this.widget);
|
|
14
|
-
}
|
|
15
|
-
undo() {
|
|
16
|
-
this.parent.children = this.parent.children || [];
|
|
17
|
-
const index = this.parent.children.indexOf(this.widget);
|
|
18
|
-
if (index > -1) {
|
|
19
|
-
this.parent.children.splice(index, 1);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
description() {
|
|
23
|
-
return `Added widget ${this.widget.name}`;
|
|
24
|
-
}
|
|
25
|
-
icon() {
|
|
26
|
-
return `fa-solid fa-square-plus`;
|
|
27
|
-
}
|
|
28
|
-
getExecutionSelection() {
|
|
29
|
-
return this.widget; // After executing, select the newly added widget
|
|
30
|
-
}
|
|
31
|
-
getUndoSelection() {
|
|
32
|
-
return this.previousSelection; // After undo, select the previously selected widget
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
export class RemoveWidgetCommand {
|
|
36
|
-
constructor(widget, parent, previousSelection) {
|
|
37
|
-
this.widget = widget;
|
|
38
|
-
this.parent = parent;
|
|
39
|
-
this.previousSelection = previousSelection;
|
|
40
|
-
parent.children = parent.children || [];
|
|
41
|
-
this.index = parent.children.indexOf(widget); // Capture the index for undo purposes
|
|
42
|
-
}
|
|
43
|
-
execute() {
|
|
44
|
-
this.parent.children = this.parent.children || [];
|
|
45
|
-
this.index = this.parent.children.indexOf(this.widget); // Re-assert the index in case it has changed
|
|
46
|
-
this.parent.children.splice(this.index, 1);
|
|
47
|
-
}
|
|
48
|
-
undo() {
|
|
49
|
-
this.parent.children = this.parent.children || [];
|
|
50
|
-
this.parent.children.splice(this.index, 0, this.widget); // Reinsert at the original index
|
|
51
|
-
}
|
|
52
|
-
description() {
|
|
53
|
-
return `Removed widget ${this.widget.name}`;
|
|
54
|
-
}
|
|
55
|
-
icon() {
|
|
56
|
-
return `fa-solid fa-square-minus`;
|
|
57
|
-
}
|
|
58
|
-
getExecutionSelection() {
|
|
59
|
-
return this.previousSelection; // Typically the parent or a nearby sibling could be focused
|
|
60
|
-
}
|
|
61
|
-
getUndoSelection() {
|
|
62
|
-
return this.widget; // Select the widget itself when the operation is undone
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
export class UpdateWidgetCommand {
|
|
66
|
-
constructor(widget, values, previousSelection) {
|
|
67
|
-
this.widget = widget;
|
|
68
|
-
this.newState = merge(cloneDeep(widget), values);
|
|
69
|
-
this.previousSelection = previousSelection;
|
|
70
|
-
this.previousState = cloneDeep(widget);
|
|
71
|
-
}
|
|
72
|
-
execute() {
|
|
73
|
-
merge(this.widget, this.newState);
|
|
74
|
-
}
|
|
75
|
-
undo() {
|
|
76
|
-
this.deepPruneAndRestore(this.widget, this.previousState);
|
|
77
|
-
}
|
|
78
|
-
description() {
|
|
79
|
-
return `Updated widget ${this.widget.name}`;
|
|
80
|
-
}
|
|
81
|
-
icon() {
|
|
82
|
-
return `fa-solid fa-pen-to-square`;
|
|
83
|
-
}
|
|
84
|
-
getExecutionSelection() {
|
|
85
|
-
return this.widget; // Focus the widget after it's updated
|
|
86
|
-
}
|
|
87
|
-
getUndoSelection() {
|
|
88
|
-
return this.previousSelection; // Restore the focus to where it was before the update
|
|
89
|
-
}
|
|
90
|
-
deepPruneAndRestore(current, original) {
|
|
91
|
-
Object.keys(current).forEach(key => {
|
|
92
|
-
if (original.hasOwnProperty(key)) {
|
|
93
|
-
if (typeof current[key] === 'object' && current[key] !== null && !(current[key] instanceof Array)) {
|
|
94
|
-
this.deepPruneAndRestore(current[key], original[key]);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
delete current[key]; // Remove properties not present in original
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
// Restore the original properties
|
|
102
|
-
merge(current, original);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
export class CommandManager {
|
|
106
|
-
constructor() {
|
|
107
|
-
this.undoStack = signal([]);
|
|
108
|
-
this.currentIndex = signal(-1);
|
|
109
|
-
this.selectedNode = signal(null);
|
|
110
|
-
this.canUndo = computed(() => this.currentIndex() >= 0);
|
|
111
|
-
this.canRedo = computed(() => this.currentIndex() < this.undoStack().length - 1);
|
|
112
|
-
this.history = computed(() => this.undoStack().map((cmd, index) => ({
|
|
113
|
-
description: cmd.description(),
|
|
114
|
-
icon: cmd.icon(),
|
|
115
|
-
isPast: this.currentIndex() > index,
|
|
116
|
-
isFuture: this.currentIndex() < index,
|
|
117
|
-
isCurrent: this.currentIndex() == index
|
|
118
|
-
})));
|
|
119
|
-
}
|
|
120
|
-
executeCommand(command) {
|
|
121
|
-
// Check if the currentIndex is not at the end of the undoStack
|
|
122
|
-
if (this.currentIndex() !== this.undoStack().length - 1) {
|
|
123
|
-
// Remove all commands beyond the current index to discard the "future" commands
|
|
124
|
-
const newUndoStack = this.undoStack().slice(0, this.currentIndex() + 1);
|
|
125
|
-
this.undoStack.set(newUndoStack);
|
|
126
|
-
}
|
|
127
|
-
command.execute();
|
|
128
|
-
this.undoStack.set([...this.undoStack(), command]); // Add the new command to the stack
|
|
129
|
-
this.currentIndex.set(this.undoStack().length - 1); // Update currentIndex to the end of the stack
|
|
130
|
-
this.selectedNode.set(command.getExecutionSelection()); // Update the selected node
|
|
131
|
-
}
|
|
132
|
-
undo() {
|
|
133
|
-
if (this.currentIndex() >= 0) {
|
|
134
|
-
const command = this.undoStack()[this.currentIndex()];
|
|
135
|
-
command.undo();
|
|
136
|
-
this.currentIndex.set(this.currentIndex() - 1);
|
|
137
|
-
if (this.currentIndex() >= 0) {
|
|
138
|
-
this.selectedNode.set(this.undoStack()[this.currentIndex()].getUndoSelection());
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
this.selectedNode.set(null); // No selection if all commands are undone
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
redo() {
|
|
146
|
-
if (this.currentIndex() < this.undoStack().length - 1) {
|
|
147
|
-
this.currentIndex.set(this.currentIndex() + 1);
|
|
148
|
-
const command = this.undoStack()[this.currentIndex()];
|
|
149
|
-
command.execute();
|
|
150
|
-
this.selectedNode.set(command.getExecutionSelection());
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
goToCommand(index) {
|
|
154
|
-
if (index < 0 || index >= this.undoStack().length || index === this.currentIndex()) {
|
|
155
|
-
return; // Out of bounds or already at the desired index
|
|
156
|
-
}
|
|
157
|
-
if (index > this.currentIndex()) {
|
|
158
|
-
// Need to redo until reaching the desired index
|
|
159
|
-
while (this.currentIndex() < index) {
|
|
160
|
-
this.redo();
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
// Need to undo until reaching the desired index
|
|
165
|
-
while (this.currentIndex() > index) {
|
|
166
|
-
this.undo();
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
// Optionally update any UI components or state here
|
|
170
|
-
this.selectedNode.set(this.undoStack()[this.currentIndex()].getExecutionSelection());
|
|
171
|
-
}
|
|
172
|
-
clear() {
|
|
173
|
-
this.undoStack.set([]);
|
|
174
|
-
this.currentIndex.set(-1);
|
|
175
|
-
}
|
|
176
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: CommandManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
177
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: CommandManager, providedIn: 'root' }); }
|
|
178
|
-
}
|
|
179
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: CommandManager, decorators: [{
|
|
180
|
-
type: Injectable,
|
|
181
|
-
args: [{
|
|
182
|
-
providedIn: 'root'
|
|
183
|
-
}]
|
|
184
|
-
}] });
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2Rlc2lnbmVyL3NyYy9saWIvY29tbWFuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBWTdDLG1CQUFtQjtBQUNuQixNQUFNLE9BQU8sZ0JBQWdCO0lBS3pCLFlBQVksTUFBcUIsRUFBRSxNQUFxQixFQUFFLGlCQUFnQztRQUN0RixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7SUFDL0MsQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSTtRQUNBLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNsRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFF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QUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBYU0sS0FBSztRQUNSLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQzs4R0EvRVEsY0FBYztrSEFBZCxjQUFjLGNBRlgsTUFBTTs7MkZBRVQsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBXaWRnZXROb2RlIH0gZnJvbSBcIkBhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXJcIjtcbmltcG9ydCB7IGNvbXB1dGVkLCBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBtZXJnZSB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuLy8gQ29tbWFuZCBpbnRlcmZhY2VcbmV4cG9ydCBpbnRlcmZhY2UgQ29tbWFuZCB7XG4gICAgZXhlY3V0ZSgpOiB2b2lkO1xuICAgIHVuZG8oKTogdm9pZDtcbiAgICBkZXNjcmlwdGlvbigpOiBzdHJpbmc7XG4gICAgaWNvbigpOiBzdHJpbmc7XG4gICAgZ2V0RXhlY3V0aW9uU2VsZWN0aW9uKCk6IEFYUFdpZGdldE5vZGU7ICAvLyBOb2RlIHRvIHNlbGVjdCBhZnRlciBleGVjdXRpb25cbiAgICBnZXRVbmRvU2VsZWN0aW9uKCk6IEFYUFdpZGdldE5vZGU7ICAgICAgIC8vIE5vZGUgdG8gc2VsZWN0IGFmdGVyIHVuZG9cbn1cblxuLy8gQWRkV2lkZ2V0Q29tbWFuZFxuZXhwb3J0IGNsYXNzIEFkZFdpZGdldENvbW1hbmQgaW1wbGVtZW50cyBDb21tYW5kIHtcbiAgICBwcml2YXRlIHdpZGdldDogQVhQV2lkZ2V0Tm9kZTtcbiAgICBwcml2YXRlIHBhcmVudDogQVhQV2lkZ2V0Tm9kZTtcbiAgICBwcml2YXRlIHByZXZpb3VzU2VsZWN0aW9uOiBBWFBXaWRnZXROb2RlO1xuXG4gICAgY29uc3RydWN0b3Iod2lkZ2V0OiBBWFBXaWRnZXROb2RlLCBwYXJlbnQ6IEFYUFdpZGdldE5vZGUsIHByZXZpb3VzU2VsZWN0aW9uOiBBWFBXaWRnZXROb2RlKSB7XG4gICAgICAgIHRoaXMud2lkZ2V0ID0gd2lkZ2V0O1xuICAgICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgdGhpcy5wcmV2aW91c1NlbGVjdGlvbiA9IHByZXZpb3VzU2VsZWN0aW9uO1xuICAgIH1cblxuICAgIGV4ZWN1dGUoKSB7XG4gICAgICAgIHRoaXMucGFyZW50LmNoaWxkcmVuID0gdGhpcy5wYXJlbnQuY2hpbGRyZW4gfHwgW107XG4gICAgICAgIHRoaXMucGFyZW50LmNoaWxkcmVuLnB1c2godGhpcy53aWRnZXQpO1xuICAgIH1cblxuICAgIHVuZG8oKSB7XG4gICAgICAgIHRoaXMucGFyZW50LmNoaWxkcmVuID0gdGhpcy5wYXJlbnQuY2hpbGRyZW4gfHwgW107XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wYXJlbnQuY2hpbGRyZW4uaW5kZXhPZih0aGlzLndpZGdldCk7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudC5jaGlsZHJlbi5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVzY3JpcHRpb24oKSB7XG4gICAgICAgIHJldHVybiBgQWRkZWQgd2lkZ2V0ICR7dGhpcy53aWRnZXQubmFtZX1gO1xuICAgIH1cblxuICAgIGljb24oKSB7XG4gICAgICAgIHJldHVybiBgZmEtc29saWQgZmEtc3F1YXJlLXBsdXNgO1xuICAgIH1cblxuICAgIGdldEV4ZWN1dGlvblNlbGVjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2lkZ2V0OyAgLy8gQWZ0ZXIgZXhlY3V0aW5nLCBzZWxlY3QgdGhlIG5ld2x5IGFkZGVkIHdpZGdldFxuICAgIH1cblxuICAgIGdldFVuZG9TZWxlY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZXZpb3VzU2VsZWN0aW9uOyAgLy8gQWZ0ZXIgdW5kbywgc2VsZWN0IHRoZSBwcmV2aW91c2x5IHNlbGVjdGVkIHdpZGdldFxuICAgIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgUmVtb3ZlV2lkZ2V0Q29tbWFuZCBpbXBsZW1lbnRzIENvbW1hbmQge1xuICAgIHByaXZhdGUgd2lkZ2V0OiBBWFBXaWRnZXROb2RlO1xuICAgIHByaXZhdGUgcGFyZW50OiBBWFBXaWRnZXROb2RlO1xuICAgIHByaXZhdGUgcHJldmlvdXNTZWxlY3Rpb246IEFYUFdpZGdldE5vZGU7XG4gICAgcHJpdmF0ZSBpbmRleDogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3Iod2lkZ2V0OiBBWFBXaWRnZXROb2RlLCBwYXJlbnQ6IEFYUFdpZGdldE5vZGUsIHByZXZpb3VzU2VsZWN0aW9uOiBBWFBXaWRnZXROb2RlKSB7XG4gICAgICAgIHRoaXMud2lkZ2V0ID0gd2lkZ2V0O1xuICAgICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgdGhpcy5wcmV2aW91c1NlbGVjdGlvbiA9IHByZXZpb3VzU2VsZWN0aW9uO1xuICAgICAgICBwYXJlbnQuY2hpbGRyZW4gPSBwYXJlbnQuY2hpbGRyZW4gfHwgW107XG4gICAgICAgIHRoaXMuaW5kZXggPSBwYXJlbnQuY2hpbGRyZW4uaW5kZXhPZih3aWRnZXQpOyAgLy8gQ2FwdHVyZSB0aGUgaW5kZXggZm9yIHVuZG8gcHVycG9zZXNcbiAgICB9XG5cbiAgICBleGVjdXRlKCkge1xuICAgICAgICB0aGlzLnBhcmVudC5jaGlsZHJlbiA9IHRoaXMucGFyZW50LmNoaWxkcmVuIHx8IFtdO1xuICAgICAgICB0aGlzLmluZGV4ID0gdGhpcy5wYXJlbnQuY2hpbGRyZW4uaW5kZXhPZih0aGlzLndpZGdldCk7ICAvLyBSZS1hc3NlcnQgdGhlIGluZGV4IGluIGNhc2UgaXQgaGFzIGNoYW5nZWRcbiAgICAgICAgdGhpcy5wYXJlbnQuY2hpbGRyZW4uc3BsaWNlKHRoaXMuaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHVuZG8oKSB7XG4gICAgICAgIHRoaXMucGFyZW50LmNoaWxkcmVuID0gdGhpcy5wYXJlbnQuY2hpbGRyZW4gfHwgW107XG4gICAgICAgIHRoaXMucGFyZW50LmNoaWxkcmVuLnNwbGljZSh0aGlzLmluZGV4LCAwLCB0aGlzLndpZGdldCk7ICAvLyBSZWluc2VydCBhdCB0aGUgb3JpZ2luYWwgaW5kZXhcbiAgICB9XG5cbiAgICBkZXNjcmlwdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGBSZW1vdmVkIHdpZGdldCAke3RoaXMud2lkZ2V0Lm5hbWV9YDtcbiAgICB9XG5cbiAgICBpY29uKCkge1xuICAgICAgICByZXR1cm4gYGZhLXNvbGlkIGZhLXNxdWFyZS1taW51c2A7XG4gICAgfVxuXG4gICAgZ2V0RXhlY3V0aW9uU2VsZWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcmV2aW91c1NlbGVjdGlvbjsgIC8vIFR5cGljYWxseSB0aGUgcGFyZW50IG9yIGEgbmVhcmJ5IHNpYmxpbmcgY291bGQgYmUgZm9jdXNlZFxuICAgIH1cblxuICAgIGdldFVuZG9TZWxlY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndpZGdldDsgIC8vIFNlbGVjdCB0aGUgd2lkZ2V0IGl0c2VsZiB3aGVuIHRoZSBvcGVyYXRpb24gaXMgdW5kb25lXG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVXBkYXRlV2lkZ2V0Q29tbWFuZCBpbXBsZW1lbnRzIENvbW1hbmQge1xuICAgIHByaXZhdGUgd2lkZ2V0OiBBWFBXaWRnZXROb2RlO1xuICAgIHByaXZhdGUgcHJldmlvdXNTdGF0ZTogQVhQV2lkZ2V0Tm9kZTtcbiAgICBwcml2YXRlIG5ld1N0YXRlOiBBWFBXaWRnZXROb2RlO1xuICAgIHByaXZhdGUgcHJldmlvdXNTZWxlY3Rpb246IEFYUFdpZGdldE5vZGU7XG5cbiAgICBjb25zdHJ1Y3Rvcih3aWRnZXQ6IEFYUFdpZGdldE5vZGUsIHZhbHVlczogUGFydGlhbDxBWFBXaWRnZXROb2RlPiwgcHJldmlvdXNTZWxlY3Rpb246IEFYUFdpZGdldE5vZGUpIHtcbiAgICAgICAgdGhpcy53aWRnZXQgPSB3aWRnZXQ7XG4gICAgICAgIHRoaXMubmV3U3RhdGUgPSBtZXJnZShjbG9uZURlZXAod2lkZ2V0KSwgdmFsdWVzKTtcbiAgICAgICAgdGhpcy5wcmV2aW91c1NlbGVjdGlvbiA9IHByZXZpb3VzU2VsZWN0aW9uO1xuICAgICAgICB0aGlzLnByZXZpb3VzU3RhdGUgPSBjbG9uZURlZXAod2lkZ2V0KTtcbiAgICB9XG5cbiAgICBleGVjdXRlKCkge1xuICAgICAgICBtZXJnZSh0aGlzLndpZGdldCwgdGhpcy5uZXdTdGF0ZSlcbiAgICB9XG5cbiAgICB1bmRvKCkge1xuICAgICAgICB0aGlzLmRlZXBQcnVuZUFuZFJlc3RvcmUodGhpcy53aWRnZXQsIHRoaXMucHJldmlvdXNTdGF0ZSk7XG4gICAgfVxuXG4gICAgZGVzY3JpcHRpb24oKSB7XG4gICAgICAgIHJldHVybiBgVXBkYXRlZCB3aWRnZXQgJHt0aGlzLndpZGdldC5uYW1lfWA7XG4gICAgfVxuXG4gICAgaWNvbigpIHtcbiAgICAgICAgcmV0dXJuIGBmYS1zb2xpZCBmYS1wZW4tdG8tc3F1YXJlYDtcbiAgICB9XG5cbiAgICBnZXRFeGVjdXRpb25TZWxlY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndpZGdldDsgIC8vIEZvY3VzIHRoZSB3aWRnZXQgYWZ0ZXIgaXQncyB1cGRhdGVkXG4gICAgfVxuXG4gICAgZ2V0VW5kb1NlbGVjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJldmlvdXNTZWxlY3Rpb247ICAvLyBSZXN0b3JlIHRoZSBmb2N1cyB0byB3aGVyZSBpdCB3YXMgYmVmb3JlIHRoZSB1cGRhdGVcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlZXBQcnVuZUFuZFJlc3RvcmUoY3VycmVudDogYW55LCBvcmlnaW5hbDogYW55KSB7XG4gICAgICAgIE9iamVjdC5rZXlzKGN1cnJlbnQpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIGlmIChvcmlnaW5hbC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50W2tleV0gPT09ICdvYmplY3QnICYmIGN1cnJlbnRba2V5XSAhPT0gbnVsbCAmJiAhKGN1cnJlbnRba2V5XSBpbnN0YW5jZW9mIEFycmF5KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZXBQcnVuZUFuZFJlc3RvcmUoY3VycmVudFtrZXldLCBvcmlnaW5hbFtrZXldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBjdXJyZW50W2tleV07ICAvLyBSZW1vdmUgcHJvcGVydGllcyBub3QgcHJlc2VudCBpbiBvcmlnaW5hbFxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBwcm9wZXJ0aWVzXG4gICAgICAgIG1lcmdlKGN1cnJlbnQsIG9yaWdpbmFsKTtcbiAgICB9XG59XG5cblxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvbW1hbmRNYW5hZ2VyIHtcbiAgICBwcml2YXRlIHVuZG9TdGFjayA9IHNpZ25hbDxDb21tYW5kW10+KFtdKTtcbiAgICBwcml2YXRlIGN1cnJlbnRJbmRleCA9IHNpZ25hbDxudW1iZXI+KC0xKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWROb2RlID0gc2lnbmFsPEFYUFdpZGdldE5vZGUgfCBudWxsPihudWxsKTtcblxuICAgIHB1YmxpYyBjYW5VbmRvID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jdXJyZW50SW5kZXgoKSA+PSAwKVxuICAgIHB1YmxpYyBjYW5SZWRvID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jdXJyZW50SW5kZXgoKSA8IHRoaXMudW5kb1N0YWNrKCkubGVuZ3RoIC0gMSlcblxuICAgIGV4ZWN1dGVDb21tYW5kKGNvbW1hbmQ6IENvbW1hbmQpIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnRJbmRleCBpcyBub3QgYXQgdGhlIGVuZCBvZiB0aGUgdW5kb1N0YWNrXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRJbmRleCgpICE9PSB0aGlzLnVuZG9TdGFjaygpLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIC8vIFJlbW92ZSBhbGwgY29tbWFuZHMgYmV5b25kIHRoZSBjdXJyZW50IGluZGV4IHRvIGRpc2NhcmQgdGhlIFwiZnV0dXJlXCIgY29tbWFuZHNcbiAgICAgICAgICAgIGNvbnN0IG5ld1VuZG9TdGFjayA9IHRoaXMudW5kb1N0YWNrKCkuc2xpY2UoMCwgdGhpcy5jdXJyZW50SW5kZXgoKSArIDEpO1xuICAgICAgICAgICAgdGhpcy51bmRvU3RhY2suc2V0KG5ld1VuZG9TdGFjayk7XG4gICAgICAgIH1cblxuICAgICAgICBjb21tYW5kLmV4ZWN1dGUoKTtcbiAgICAgICAgdGhpcy51bmRvU3RhY2suc2V0KFsuLi50aGlzLnVuZG9TdGFjaygpLCBjb21tYW5kXSk7IC8vIEFkZCB0aGUgbmV3IGNvbW1hbmQgdG8gdGhlIHN0YWNrXG4gICAgICAgIHRoaXMuY3VycmVudEluZGV4LnNldCh0aGlzLnVuZG9TdGFjaygpLmxlbmd0aCAtIDEpOyAvLyBVcGRhdGUgY3VycmVudEluZGV4IHRvIHRoZSBlbmQgb2YgdGhlIHN0YWNrXG4gICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlLnNldChjb21tYW5kLmdldEV4ZWN1dGlvblNlbGVjdGlvbigpKTsgLy8gVXBkYXRlIHRoZSBzZWxlY3RlZCBub2RlXG4gICAgfVxuXG4gICAgdW5kbygpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEluZGV4KCkgPj0gMCkge1xuICAgICAgICAgICAgY29uc3QgY29tbWFuZCA9IHRoaXMudW5kb1N0YWNrKClbdGhpcy5jdXJyZW50SW5kZXgoKV07XG4gICAgICAgICAgICBjb21tYW5kLnVuZG8oKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEluZGV4LnNldCh0aGlzLmN1cnJlbnRJbmRleCgpIC0gMSk7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50SW5kZXgoKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUuc2V0KHRoaXMudW5kb1N0YWNrKClbdGhpcy5jdXJyZW50SW5kZXgoKV0uZ2V0VW5kb1NlbGVjdGlvbigpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUuc2V0KG51bGwpOyAvLyBObyBzZWxlY3Rpb24gaWYgYWxsIGNvbW1hbmRzIGFyZSB1bmRvbmVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZG8oKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRJbmRleCgpIDwgdGhpcy51bmRvU3RhY2soKS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRJbmRleC5zZXQodGhpcy5jdXJyZW50SW5kZXgoKSArIDEpO1xuICAgICAgICAgICAgY29uc3QgY29tbWFuZCA9IHRoaXMudW5kb1N0YWNrKClbdGhpcy5jdXJyZW50SW5kZXgoKV07XG4gICAgICAgICAgICBjb21tYW5kLmV4ZWN1dGUoKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlLnNldChjb21tYW5kLmdldEV4ZWN1dGlvblNlbGVjdGlvbigpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdvVG9Db21tYW5kKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLnVuZG9TdGFjaygpLmxlbmd0aCB8fCBpbmRleCA9PT0gdGhpcy5jdXJyZW50SW5kZXgoKSkge1xuICAgICAgICAgICAgcmV0dXJuOyAgLy8gT3V0IG9mIGJvdW5kcyBvciBhbHJlYWR5IGF0IHRoZSBkZXNpcmVkIGluZGV4XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5kZXggPiB0aGlzLmN1cnJlbnRJbmRleCgpKSB7XG4gICAgICAgICAgICAvLyBOZWVkIHRvIHJlZG8gdW50aWwgcmVhY2hpbmcgdGhlIGRlc2lyZWQgaW5kZXhcbiAgICAgICAgICAgIHdoaWxlICh0aGlzLmN1cnJlbnRJbmRleCgpIDwgaW5kZXgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlZG8oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIE5lZWQgdG8gdW5kbyB1bnRpbCByZWFjaGluZyB0aGUgZGVzaXJlZCBpbmRleFxuICAgICAgICAgICAgd2hpbGUgKHRoaXMuY3VycmVudEluZGV4KCkgPiBpbmRleCkge1xuICAgICAgICAgICAgICAgIHRoaXMudW5kbygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3B0aW9uYWxseSB1cGRhdGUgYW55IFVJIGNvbXBvbmVudHMgb3Igc3RhdGUgaGVyZVxuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZS5zZXQodGhpcy51bmRvU3RhY2soKVt0aGlzLmN1cnJlbnRJbmRleCgpXS5nZXRFeGVjdXRpb25TZWxlY3Rpb24oKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGhpc3RvcnkgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnVuZG9TdGFjaygpLm1hcCgoY21kLCBpbmRleCkgPT4gKFxuICAgICAgICB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogY21kLmRlc2NyaXB0aW9uKCksXG4gICAgICAgICAgICBpY29uOiBjbWQuaWNvbigpLFxuICAgICAgICAgICAgaXNQYXN0OiB0aGlzLmN1cnJlbnRJbmRleCgpID4gaW5kZXgsXG4gICAgICAgICAgICBpc0Z1dHVyZTogdGhpcy5jdXJyZW50SW5kZXgoKSA8IGluZGV4LFxuICAgICAgICAgICAgaXNDdXJyZW50OiB0aGlzLmN1cnJlbnRJbmRleCgpID09IGluZGV4XG4gICAgICAgIH1cbiAgICApKSlcblxuXG4gICAgcHVibGljIGNsZWFyKCkge1xuICAgICAgICB0aGlzLnVuZG9TdGFjay5zZXQoW10pO1xuICAgICAgICB0aGlzLmN1cnJlbnRJbmRleC5zZXQoLTEpO1xuICAgIH1cbn0iXX0=
|