@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
|
@@ -9,14 +9,15 @@ import { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
|
|
|
9
9
|
import { CommonModule } from '@angular/common';
|
|
10
10
|
import { Component, computed, HostListener, inject, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
11
11
|
import { get } from 'lodash-es';
|
|
12
|
-
import {
|
|
13
|
-
import { AXPDesignerBreadcrumbsComponent } from '../breadcrumbs/breadcrumbs.component';
|
|
14
|
-
import { AXPDesignerService } from '../designer.service';
|
|
15
|
-
import { AXPDesignerHeaderMenuComponent } from '../header-menu/header-menu.component';
|
|
16
|
-
import { AXPDesignerOutlineComponent } from '../outline/outline.component';
|
|
12
|
+
import { AXPDesignerService } from './shared/designer.service';
|
|
17
13
|
import { AXPWidgetPropertyViewerComponent } from '../property-viewer/widget-property-viewer.component';
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
14
|
+
import { AXPDesignerBoardComponent } from './components/board/board.component';
|
|
15
|
+
import { AXPDesignerBreadcrumbsComponent } from './components/breadcrumbs/breadcrumbs.component';
|
|
16
|
+
import { AXPDesignerDataSourcesComponent } from './components/drawers/data-sources/data-sources.component';
|
|
17
|
+
import { AXPDesignerHistoryComponent } from './components/drawers/history/history.component';
|
|
18
|
+
import { AXPDesignerOutlineComponent } from './components/drawers/outline/outline.component';
|
|
19
|
+
import { AXPDesignerPagesComponent } from './components/drawers/pages/pages.component';
|
|
20
|
+
import { AXPDesignerHeaderMenuComponent } from './components/header-menu/header-menu.component';
|
|
20
21
|
import * as i0 from "@angular/core";
|
|
21
22
|
import * as i1 from "@angular/common";
|
|
22
23
|
import * as i2 from "@acorex/components/button";
|
|
@@ -33,38 +34,47 @@ export class AXPLayoutDesignerComponent {
|
|
|
33
34
|
});
|
|
34
35
|
}
|
|
35
36
|
handleKeyboardEvent(event) {
|
|
37
|
+
if (event.shiftKey && event.target == document.body) {
|
|
38
|
+
switch (event.key.toLowerCase()) {
|
|
39
|
+
case 'n':
|
|
40
|
+
event.preventDefault();
|
|
41
|
+
this.service.new();
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//
|
|
36
46
|
if (event.ctrlKey && event.target == document.body) {
|
|
37
|
-
switch (event.key.toLowerCase()) {
|
|
47
|
+
switch (event.key.toLowerCase()) {
|
|
38
48
|
case 'z':
|
|
39
|
-
event.preventDefault();
|
|
49
|
+
event.preventDefault();
|
|
40
50
|
this.service.undo();
|
|
41
51
|
break;
|
|
42
52
|
case 'y':
|
|
43
|
-
event.preventDefault();
|
|
53
|
+
event.preventDefault();
|
|
44
54
|
this.service.redo();
|
|
45
55
|
break;
|
|
46
56
|
case 'c':
|
|
47
57
|
if (this.service.canCutCopy()) {
|
|
48
|
-
event.preventDefault();
|
|
58
|
+
event.preventDefault();
|
|
49
59
|
this.service.copy();
|
|
50
60
|
}
|
|
51
61
|
break;
|
|
52
62
|
case 'd':
|
|
53
63
|
if (this.service.canCutCopy()) {
|
|
54
|
-
event.preventDefault();
|
|
64
|
+
event.preventDefault();
|
|
55
65
|
this.service.clone();
|
|
56
66
|
}
|
|
57
67
|
break;
|
|
58
68
|
case 'x':
|
|
59
69
|
if (this.service.canCutCopy()) {
|
|
60
70
|
debugger;
|
|
61
|
-
event.preventDefault();
|
|
71
|
+
event.preventDefault();
|
|
62
72
|
this.service.cut();
|
|
63
73
|
}
|
|
64
74
|
break;
|
|
65
75
|
case 'v':
|
|
66
76
|
if (this.service.canPaste()) {
|
|
67
|
-
event.preventDefault();
|
|
77
|
+
event.preventDefault();
|
|
68
78
|
this.service.paste();
|
|
69
79
|
}
|
|
70
80
|
break;
|
|
@@ -72,7 +82,7 @@ export class AXPLayoutDesignerComponent {
|
|
|
72
82
|
}
|
|
73
83
|
}
|
|
74
84
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPLayoutDesignerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
75
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: AXPLayoutDesignerComponent, isStandalone: true, selector: "axp-layout-designer", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, 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 child:ax-h-full ax-overflow-hidden ax-dark\">\n <ax-content class=\"ax-contents\">\n <!-- Toolbar Side -->\n <div class=\"ax-min-w-10 ax-bg-surface ax-border-e ax-xs ax-flex ax-flex-col ax-items-center \">\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.png\" 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 color=\"ghost\" look=\"twotone\">\n <ax-icon class=\"fa-solid fa-puzzle ax-text-sm\"> </ax-icon>\n </ax-button> -->\n <ax-button color=\"ghost\" look=\"twotone\" (onClick)=\"pages.toggle()\" title=\"Pages\">\n <ax-icon class=\"fa-solid fa-page ax-text-sm\"> </ax-icon>\n </ax-button>\n <ax-button color=\"ghost\" look=\"twotone\" (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 color=\"ghost\" look=\"twotone\" (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 color=\"ghost\" look=\"twotone\" (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 color=\"ghost\" look=\"twotone\" 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-min-h-10 ax-bg-surface ax-border-b ax-flex ax-flex-grow ax-justify-between ax-px-2\">\n <div class=\"ax-flex ax-items-center ax-justify-center ax-text-white\">\n <axp-designer-header-menu></axp-designer-header-menu>\n </div>\n <div class=\"ax-flex ax-flex-row ax-gap-2 ax-xs ax-items-center\">\n <ax-button-group color=\"ghost\" look=\"twotone\" [selection]=\"'single'\">\n <ax-button-item [selected]=\"service.size() == 'xl'\" [data]=\"'xl'\" (onClick)=\"service.size.set('xl')\">\n <ax-icon class=\"fa-light fa-desktop\"></ax-icon>\n </ax-button-item>\n <ax-button-item [selected]=\"service.size() == 'lg'\" [data]=\"'lg'\" (onClick)=\"service.size.set('lg')\">\n <ax-icon class=\"fa-light fa-tablet\"></ax-icon>\n </ax-button-item>\n <ax-button-item [selected]=\"service.size() == 'sm'\" [data]=\"'sm'\" (onClick)=\"service.size.set('sm')\">\n <ax-icon class=\"fa-light fa-mobile\"></ax-icon>\n </ax-button-item>\n </ax-button-group>\n </div>\n <div class=\"ax-flex ax-flex-row ax-gap-2 ax-xs ax-items-center\">\n <ax-button text=\"Design\" look=\"outline\" class=\"ax-xs\">\n <ax-suffix>\n <ax-icon class=\"fa-light fa-chevron-down\"></ax-icon>\n </ax-suffix>\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item text=\"Print\" name=\"print\"> </ax-button-item>\n <ax-button-item text=\"View\" name=\"view\"> </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n <ax-button color=\"success\" look=\"outline\" text=\"Preview\" class=\"ax-xs\" (onClick)=\"service.openPreview()\">\n <ax-suffix>\n <ax-icon class=\"fa-solid fa-play\"></ax-icon>\n </ax-suffix>\n </ax-button>\n </div>\n </div>\n <!-- Board -->\n <div class=\"ax-h-full \">\n <ax-drawer-container class=\"ax-w-full ax-h-full\">\n <!-- Pages -->\n <ax-drawer #pages location=\"start\" mode=\"push\">\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\">\n <ax-content>\n Datasources\n </ax-content>\n </ax-drawer>\n <!-- Outline Pnael -->\n <ax-drawer #outline location=\"start\" mode=\"push\">\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\">\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\">\n <axp-designer-board class=\"ax-h-full ax-bg-on-surface ax-flex ax-justify-center\"> </axp-designer-board>\n </ax-content>\n </ax-drawer-container>\n </div>\n <!-- Footer -->\n <div class=\"ax-min-h-10 ax-bg-surface ax-border-t ax-flex ax-items-center\">\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-w-80 ax-border-s\" 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-py-2 ax-px-4 ax-border-b\">\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 [widget]=\"service.selectedNode()!\"\n (onChanged)=\"service.update({ values: $event.values, mode: $event.mode })\" class=\"ax-w-1/4\">\n </axp-widget-property-viewer>\n </ax-content>\n </ax-drawer>\n</ax-drawer-container>", styles: [".axp-designer-board{display:block;height:100%;width:100%;overflow:auto;--tw-bg-opacity: 1;background-color:rgba(var(--ax-color-surface),var(--tw-bg-opacity));padding:.75rem}.axp-designer-board.axp-state-design .axp-widget-host{position:relative;display:block;cursor:pointer}.axp-designer-board.axp-state-design .axp-widget-host.axp-state-selected{outline-style:solid;outline-width:2px;outline-offset:1px;outline-color:#60a5fa;position:relative}.axp-designer-board.axp-state-design .axp-widget-host.axp-state-hover:not(.axp-designer-board.axp-state-design .axp-widget-host.axp-state-hover.axp-state-selected){outline-style:solid;outline-width:1px;outline-offset:1px;outline-color:#60a5fa}.axp-designer-board.axp-state-design .axp-widget-host .axp-widget-overlay{position:absolute;left:0;top:0;right:0;bottom:0;z-index:10;height:100%;width:100%}@keyframes moveLight{0%{background-position:0% 50%}to{background-position:100% 50%}}.axp-designer-board .axp-empty-space{background-color:rgba(var(--ax-color-primary-300),10%);background-image:linear-gradient(135deg,rgba(var(--ax-color-primary-300),50%) 10%,transparent 0,transparent 50%,rgba(var(--ax-color-primary-300),50%) 0,rgba(var(--ax-color-primary-300),50%) 60%,transparent 0,transparent);background-size:7.5px 7.5px}.axp-designer-board .grid-stack-item-content{color:#2c3e50;text-align:center;background-color:#18bc9c}\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"], 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: AXPDesignerPagesComponent, selector: "axp-designer-pages" }, { 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", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "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", "collapsed", "closeOthers"], 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-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXMenuModule }, { kind: "ngmodule", type: AXButtonGroupModule }, { kind: "component", type: i5.AXButtonGroupComponent, selector: "ax-button-group", inputs: ["disabled", "color", "look", "selection"], outputs: ["onBlur", "onFocus", "lookChange", "colorChange", "disabledChange", "selectionChange"] }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i6.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
85
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: AXPLayoutDesignerComponent, isStandalone: true, selector: "axp-layout-designer", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, 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 ax-dark\">\n <ax-content class=\"ax-contents\">\n <!-- Toolbar Side -->\n <div class=\"ax-min-w-10 ax-bg-surface ax-border-e ax-xs ax-flex ax-flex-col ax-items-center \">\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.png\" 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 color=\"ghost\" look=\"twotone\">\n <ax-icon class=\"fa-solid fa-puzzle ax-text-sm\"> </ax-icon>\n </ax-button> -->\n <ax-button color=\"ghost\" look=\"twotone\" (onClick)=\"pages.toggle()\" title=\"Pages\">\n <ax-icon class=\"fa-solid fa-page ax-text-sm\"> </ax-icon>\n </ax-button>\n <ax-button color=\"ghost\" look=\"twotone\" (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 color=\"ghost\" look=\"twotone\" (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 color=\"ghost\" look=\"twotone\" (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 color=\"ghost\" look=\"twotone\" 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-surface ax-border-b ax-flex ax-justify-between ax-px-2\">\n <div class=\"ax-flex ax-items-center ax-justify-center ax-text-white\">\n <axp-designer-header-menu></axp-designer-header-menu>\n </div>\n <div class=\"ax-flex ax-flex-row ax-gap-2 ax-xs ax-items-center\">\n <ax-button-group color=\"ghost\" look=\"twotone\" [selection]=\"'single'\">\n <ax-button-item [selected]=\"service.size() == 'xl'\" [data]=\"'xl'\" (onClick)=\"service.size.set('xl')\">\n <ax-icon class=\"fa-light fa-desktop\"></ax-icon>\n </ax-button-item>\n <ax-button-item [selected]=\"service.size() == 'lg'\" [data]=\"'lg'\" (onClick)=\"service.size.set('lg')\">\n <ax-icon class=\"fa-light fa-tablet\"></ax-icon>\n </ax-button-item>\n <ax-button-item [selected]=\"service.size() == 'sm'\" [data]=\"'sm'\" (onClick)=\"service.size.set('sm')\">\n <ax-icon class=\"fa-light fa-mobile\"></ax-icon>\n </ax-button-item>\n </ax-button-group>\n </div>\n <div class=\"ax-flex ax-flex-row ax-gap-2 ax-xs ax-items-center\">\n <ax-button text=\"Design\" look=\"outline\" class=\"ax-xs\">\n <ax-suffix>\n <ax-icon class=\"fa-light fa-chevron-down\"></ax-icon>\n </ax-suffix>\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item text=\"Print\" name=\"print\"> </ax-button-item>\n <ax-button-item text=\"View\" name=\"view\"> </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n <ax-button color=\"success\" look=\"outline\" text=\"Preview\" class=\"ax-xs\" (onClick)=\"service.openPreview()\">\n <ax-suffix>\n <ax-icon class=\"fa-solid fa-play\"></ax-icon>\n </ax-suffix>\n </ax-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\">\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\">\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\">\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\">\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-h-screen ax-bg-on-surface ax-flex ax-justify-center\">\n <axp-designer-board> </axp-designer-board>\n </ax-content>\n </ax-drawer-container>\n <!-- Footer -->\n <div class=\"ax-h-10 ax-bg-surface ax-border-t ax-flex ax-items-center\">\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-w-80 ax-border-s\" 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-py-2 ax-px-4 ax-border-b\">\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 [widget]=\"service.selectedNode()!\"\n (onChanged)=\"service.update({ values: $event.values, mode: $event.mode })\" class=\"ax-w-1/4\">\n </axp-widget-property-viewer>\n </ax-content>\n </ax-drawer>\n</ax-drawer-container>", styles: [".axp-designer-board{display:block;height:100%;width:100%;overflow:auto;--tw-bg-opacity: 1;background-color:rgba(var(--ax-color-surface),var(--tw-bg-opacity));padding:.75rem}.axp-designer-board.axp-state-design .axp-widget-host{cursor:pointer}.axp-designer-board.axp-state-design .axp-widget-host.axp-state-selected{outline-style:solid;outline-width:2px;outline-offset:1px;outline-color:#60a5fa;position:relative}.axp-designer-board.axp-state-design .axp-widget-host.axp-state-hover:not(.axp-designer-board.axp-state-design .axp-widget-host.axp-state-hover.axp-state-selected){outline-style:solid;outline-width:1px;outline-offset:1px;outline-color:#60a5fa}.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%}@keyframes moveLight{0%{background-position:0% 50%}to{background-position:100% 50%}}.axp-designer-board .axp-empty-space{background-color:rgba(var(--ax-color-primary-300),10%);background-image:linear-gradient(135deg,rgba(var(--ax-color-primary-300),50%) 10%,transparent 0,transparent 50%,rgba(var(--ax-color-primary-300),50%) 0,rgba(var(--ax-color-primary-300),50%) 60%,transparent 0,transparent);background-size:7.5px 7.5px;height:100%}.axp-designer-board .grid-stack-item-content{color:#2c3e50;text-align:center;background-color:#18bc9c}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))}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)}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))}axp-designer-drawer-content ul.axp-designer-drawer-list li.ax-state-selected{--tw-bg-opacity: 1;background-color:rgba(var(--ax-color-neutral-700),var(--tw-bg-opacity))}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))}\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"], 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: "ngmodule", type: AXTabsModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "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", "collapsed", "closeOthers"], 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-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXMenuModule }, { kind: "ngmodule", type: AXButtonGroupModule }, { kind: "component", type: i5.AXButtonGroupComponent, selector: "ax-button-group", inputs: ["disabled", "color", "look", "selection"], outputs: ["onBlur", "onFocus", "lookChange", "colorChange", "disabledChange", "selectionChange"] }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i6.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
76
86
|
}
|
|
77
87
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPLayoutDesignerComponent, decorators: [{
|
|
78
88
|
type: Component,
|
|
@@ -85,6 +95,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
85
95
|
AXPDesignerOutlineComponent,
|
|
86
96
|
AXPDesignerHeaderMenuComponent,
|
|
87
97
|
AXPDesignerHistoryComponent,
|
|
98
|
+
AXPDesignerDataSourcesComponent,
|
|
88
99
|
AXPDesignerPagesComponent,
|
|
89
100
|
AXTabsModule,
|
|
90
101
|
AXButtonModule,
|
|
@@ -93,7 +104,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
93
104
|
AXMenuModule,
|
|
94
105
|
AXButtonGroupModule,
|
|
95
106
|
AXDropdownModule,
|
|
96
|
-
], providers: [AXPDesignerService], template: "<ax-drawer-container class=\"ax-h-full ax-w-full ax-flex ax-relative
|
|
107
|
+
], providers: [AXPDesignerService], template: "<ax-drawer-container class=\"ax-h-full ax-w-full ax-flex ax-relative ax-overflow-hidden ax-dark\">\n <ax-content class=\"ax-contents\">\n <!-- Toolbar Side -->\n <div class=\"ax-min-w-10 ax-bg-surface ax-border-e ax-xs ax-flex ax-flex-col ax-items-center \">\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.png\" 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 color=\"ghost\" look=\"twotone\">\n <ax-icon class=\"fa-solid fa-puzzle ax-text-sm\"> </ax-icon>\n </ax-button> -->\n <ax-button color=\"ghost\" look=\"twotone\" (onClick)=\"pages.toggle()\" title=\"Pages\">\n <ax-icon class=\"fa-solid fa-page ax-text-sm\"> </ax-icon>\n </ax-button>\n <ax-button color=\"ghost\" look=\"twotone\" (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 color=\"ghost\" look=\"twotone\" (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 color=\"ghost\" look=\"twotone\" (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 color=\"ghost\" look=\"twotone\" 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-surface ax-border-b ax-flex ax-justify-between ax-px-2\">\n <div class=\"ax-flex ax-items-center ax-justify-center ax-text-white\">\n <axp-designer-header-menu></axp-designer-header-menu>\n </div>\n <div class=\"ax-flex ax-flex-row ax-gap-2 ax-xs ax-items-center\">\n <ax-button-group color=\"ghost\" look=\"twotone\" [selection]=\"'single'\">\n <ax-button-item [selected]=\"service.size() == 'xl'\" [data]=\"'xl'\" (onClick)=\"service.size.set('xl')\">\n <ax-icon class=\"fa-light fa-desktop\"></ax-icon>\n </ax-button-item>\n <ax-button-item [selected]=\"service.size() == 'lg'\" [data]=\"'lg'\" (onClick)=\"service.size.set('lg')\">\n <ax-icon class=\"fa-light fa-tablet\"></ax-icon>\n </ax-button-item>\n <ax-button-item [selected]=\"service.size() == 'sm'\" [data]=\"'sm'\" (onClick)=\"service.size.set('sm')\">\n <ax-icon class=\"fa-light fa-mobile\"></ax-icon>\n </ax-button-item>\n </ax-button-group>\n </div>\n <div class=\"ax-flex ax-flex-row ax-gap-2 ax-xs ax-items-center\">\n <ax-button text=\"Design\" look=\"outline\" class=\"ax-xs\">\n <ax-suffix>\n <ax-icon class=\"fa-light fa-chevron-down\"></ax-icon>\n </ax-suffix>\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item text=\"Print\" name=\"print\"> </ax-button-item>\n <ax-button-item text=\"View\" name=\"view\"> </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n <ax-button color=\"success\" look=\"outline\" text=\"Preview\" class=\"ax-xs\" (onClick)=\"service.openPreview()\">\n <ax-suffix>\n <ax-icon class=\"fa-solid fa-play\"></ax-icon>\n </ax-suffix>\n </ax-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\">\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\">\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\">\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\">\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-h-screen ax-bg-on-surface ax-flex ax-justify-center\">\n <axp-designer-board> </axp-designer-board>\n </ax-content>\n </ax-drawer-container>\n <!-- Footer -->\n <div class=\"ax-h-10 ax-bg-surface ax-border-t ax-flex ax-items-center\">\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-w-80 ax-border-s\" 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-py-2 ax-px-4 ax-border-b\">\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 [widget]=\"service.selectedNode()!\"\n (onChanged)=\"service.update({ values: $event.values, mode: $event.mode })\" class=\"ax-w-1/4\">\n </axp-widget-property-viewer>\n </ax-content>\n </ax-drawer>\n</ax-drawer-container>", styles: [".axp-designer-board{display:block;height:100%;width:100%;overflow:auto;--tw-bg-opacity: 1;background-color:rgba(var(--ax-color-surface),var(--tw-bg-opacity));padding:.75rem}.axp-designer-board.axp-state-design .axp-widget-host{cursor:pointer}.axp-designer-board.axp-state-design .axp-widget-host.axp-state-selected{outline-style:solid;outline-width:2px;outline-offset:1px;outline-color:#60a5fa;position:relative}.axp-designer-board.axp-state-design .axp-widget-host.axp-state-hover:not(.axp-designer-board.axp-state-design .axp-widget-host.axp-state-hover.axp-state-selected){outline-style:solid;outline-width:1px;outline-offset:1px;outline-color:#60a5fa}.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%}@keyframes moveLight{0%{background-position:0% 50%}to{background-position:100% 50%}}.axp-designer-board .axp-empty-space{background-color:rgba(var(--ax-color-primary-300),10%);background-image:linear-gradient(135deg,rgba(var(--ax-color-primary-300),50%) 10%,transparent 0,transparent 50%,rgba(var(--ax-color-primary-300),50%) 0,rgba(var(--ax-color-primary-300),50%) 60%,transparent 0,transparent);background-size:7.5px 7.5px;height:100%}.axp-designer-board .grid-stack-item-content{color:#2c3e50;text-align:center;background-color:#18bc9c}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))}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)}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))}axp-designer-drawer-content ul.axp-designer-drawer-list li.ax-state-selected{--tw-bg-opacity: 1;background-color:rgba(var(--ax-color-neutral-700),var(--tw-bg-opacity))}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))}\n"] }]
|
|
97
108
|
}], ctorParameters: () => [], propDecorators: { propertyViewer: [{
|
|
98
109
|
type: ViewChild,
|
|
99
110
|
args: [AXPWidgetPropertyViewerComponent, { static: true }]
|
|
@@ -101,4 +112,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
101
112
|
type: HostListener,
|
|
102
113
|
args: ['document:keydown', ['$event']]
|
|
103
114
|
}] } });
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZGVzaWduZXIvc3JjL2xpYi9kZXNpZ25lci9kZXNpZ25lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL2Rlc2lnbmVyL2Rlc2lnbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQW1CLE1BQU0saUNBQWlDLENBQUM7QUFDMUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFlLFlBQVksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sc0NBQXND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Q1YsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOzhHQTFEVSwwQkFBMEI7a0dBQTFCLDBCQUEwQiw4SUFGMUIsQ0FBQyxrQkFBa0IsQ0FBQywwRUFNcEIsZ0NBQWdDLDhEQ2xEN0MsMGpNQTBIc0IscTVDRC9GbEIsWUFBWSw0SEFDWixzQkFBc0IsK0JBQ3RCLHlCQUF5QiwrREFDekIsZ0NBQWdDLG1IQUNoQywrQkFBK0IscUVBQy9CLDJCQUEyQixpRUFDM0IsOEJBQThCLHFFQUM5QiwyQkFBMkIsaUVBQzNCLHlCQUF5Qiw4REFDekIsWUFBWSw4QkFDWixjQUFjLDh2QkFDZCxjQUFjLDZVQUNkLGlCQUFpQix1VkFDakIsWUFBWSw4QkFDWixtQkFBbUIseVFBQ25CLGdCQUFnQjs7MkZBSVAsMEJBQTBCO2tCQTFCdEMsU0FBUzsrQkFDRSxxQkFBcUIsaUJBR2hCLGlCQUFpQixDQUFDLElBQUksY0FDekIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osc0JBQXNCO3dCQUN0Qix5QkFBeUI7d0JBQ3pCLGdDQUFnQzt3QkFDaEMsK0JBQStCO3dCQUMvQiwyQkFBMkI7d0JBQzNCLDhCQUE4Qjt3QkFDOUIsMkJBQTJCO3dCQUMzQix5QkFBeUI7d0JBQ3pCLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLGdCQUFnQjtxQkFDakIsYUFDVSxDQUFDLGtCQUFrQixDQUFDO3dEQU92QixjQUFjO3NCQURyQixTQUFTO3VCQUFDLGdDQUFnQyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFlckQsbUJBQW1CO3NCQUQxQixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYQnV0dG9uR3JvdXBNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uLWdyb3VwJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEcmF3ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJhd2VyJztcbmltcG9ydCB7IEFYRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgQVhNZW51TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL21lbnUnO1xuaW1wb3J0IHsgQVhUYWJzTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RhYnMnO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSwgQVhQV2lkZ2V0Q29uZmlnIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQVhQRGVzaWduZXJCb2FyZENvbXBvbmVudCB9IGZyb20gJy4uL2JvYXJkL2JvYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBEZXNpZ25lckJyZWFkY3J1bWJzQ29tcG9uZW50IH0gZnJvbSAnLi4vYnJlYWRjcnVtYnMvYnJlYWRjcnVtYnMuY29tcG9uZW50JztcbmltcG9ydCB7IEFYUERlc2lnbmVyU2VydmljZSB9IGZyb20gJy4uL2Rlc2lnbmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQRGVzaWduZXJIZWFkZXJNZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vaGVhZGVyLW1lbnUvaGVhZGVyLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IEFYUERlc2lnbmVyT3V0bGluZUNvbXBvbmVudCB9IGZyb20gJy4uL291dGxpbmUvb3V0bGluZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0UHJvcGVydHlWaWV3ZXJDb21wb25lbnQgfSBmcm9tICcuLi9wcm9wZXJ0eS12aWV3ZXIvd2lkZ2V0LXByb3BlcnR5LXZpZXdlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhQRGVzaWduZXJIaXN0b3J5Q29tcG9uZW50IH0gZnJvbSAnLi4vaGlzdG9yeS9oaXN0b3J5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBEZXNpZ25lclBhZ2VzQ29tcG9uZW50IH0gZnJvbSAnLi4vcGFnZXMvcGFnZXMuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhwLWxheW91dC1kZXNpZ25lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kZXNpZ25lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Rlc2lnbmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSxcbiAgICBBWFBEZXNpZ25lckJvYXJkQ29tcG9uZW50LFxuICAgIEFYUFdpZGdldFByb3BlcnR5Vmlld2VyQ29tcG9uZW50LFxuICAgIEFYUERlc2lnbmVyQnJlYWRjcnVtYnNDb21wb25lbnQsXG4gICAgQVhQRGVzaWduZXJPdXRsaW5lQ29tcG9uZW50LFxuICAgIEFYUERlc2lnbmVySGVhZGVyTWVudUNvbXBvbmVudCxcbiAgICBBWFBEZXNpZ25lckhpc3RvcnlDb21wb25lbnQsXG4gICAgQVhQRGVzaWduZXJQYWdlc0NvbXBvbmVudCxcbiAgICBBWFRhYnNNb2R1bGUsXG4gICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgQVhEcmF3ZXJNb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhNZW51TW9kdWxlLFxuICAgIEFYQnV0dG9uR3JvdXBNb2R1bGUsXG4gICAgQVhEcm9wZG93bk1vZHVsZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbQVhQRGVzaWduZXJTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQTGF5b3V0RGVzaWduZXJDb21wb25lbnQge1xuXG4gIHByb3RlY3RlZCBzZXJ2aWNlID0gaW5qZWN0KEFYUERlc2lnbmVyU2VydmljZSk7XG5cbiAgQFZpZXdDaGlsZChBWFBXaWRnZXRQcm9wZXJ0eVZpZXdlckNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHJpdmF0ZSBwcm9wZXJ0eVZpZXdlcjogQVhQV2lkZ2V0UHJvcGVydHlWaWV3ZXJDb21wb25lbnQ7XG5cbiAgcHJvdGVjdGVkIG5vZGVDb25maWcgPSBjb21wdXRlZDxBWFBXaWRnZXRDb25maWcgfCBudWxsPigoKSA9PlxuICAgIHRoaXMuc2VydmljZS5zZWxlY3RlZE5vZGUoKSA/IChnZXQodGhpcy5zZXJ2aWNlLnNlbGVjdGVkTm9kZSgpLCAnX19tZXRhX18uY29uZmlnJykgYXMgYW55IGFzIEFYUFdpZGdldENvbmZpZykgOiBudWxsXG4gICk7XG5cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNlcnZpY2Uub25VcGRhdGUuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICB0aGlzLnByb3BlcnR5Vmlld2VyLnVwZGF0ZShlLnZhbHVlcyk7XG4gICAgfSlcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxuICBwcml2YXRlIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQuY3RybEtleSAmJiBldmVudC50YXJnZXQgPT0gZG9jdW1lbnQuYm9keSkge1xuXG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpKSB7IC8vIENvbnZlcnQgdGhlIGtleSB0byBsb3dlcmNhc2UgdG8gZW5zdXJlIGNhc2UgaW5zZW5zaXRpdml0eVxuICAgICAgICBjYXNlICd6JzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAgLy8gUHJldmVudCB0aGUgYnJvd3NlcidzIGRlZmF1bHQgdW5kbyBhY3Rpb25cbiAgICAgICAgICB0aGlzLnNlcnZpY2UudW5kbygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAgLy8gUHJldmVudCB0aGUgYnJvd3NlcidzIGRlZmF1bHQgcmVkbyBhY3Rpb25cbiAgICAgICAgICB0aGlzLnNlcnZpY2UucmVkbygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdjJzpcbiAgICAgICAgICBpZiAodGhpcy5zZXJ2aWNlLmNhbkN1dENvcHkoKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgIC8vIFByZXZlbnQgdGhlIGJyb3dzZXIncyBkZWZhdWx0IGNvcHkgYWN0aW9uXG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UuY29weSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgaWYgKHRoaXMuc2VydmljZS5jYW5DdXRDb3B5KCkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICAvLyBQcmV2ZW50IHRoZSBicm93c2VyJ3MgZGVmYXVsdCBjb3B5IGFjdGlvblxuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLmNsb25lKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd4JzpcbiAgICAgICAgICBpZiAodGhpcy5zZXJ2aWNlLmNhbkN1dENvcHkoKSkge1xuICAgICAgICAgICAgZGVidWdnZXJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICAvLyBQcmV2ZW50IHRoZSBicm93c2VyJ3MgZGVmYXVsdCBjdXQgYWN0aW9uXG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UuY3V0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd2JzpcbiAgICAgICAgICBpZiAodGhpcy5zZXJ2aWNlLmNhblBhc3RlKCkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICAvLyBQcmV2ZW50IHRoZSBicm93c2VyJ3MgZGVmYXVsdCBwYXN0ZSBhY3Rpb25cbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5wYXN0ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxufVxuIiwiPGF4LWRyYXdlci1jb250YWluZXIgY2xhc3M9XCJheC1oLWZ1bGwgYXgtdy1mdWxsIGF4LWZsZXggYXgtcmVsYXRpdmUgY2hpbGQ6YXgtaC1mdWxsIGF4LW92ZXJmbG93LWhpZGRlbiBheC1kYXJrXCI+XG4gIDxheC1jb250ZW50IGNsYXNzPVwiYXgtY29udGVudHNcIj5cbiAgICA8IS0tIFRvb2xiYXIgU2lkZSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtbWluLXctMTAgYXgtYmctc3VyZmFjZSBheC1ib3JkZXItZSBheC14cyBheC1mbGV4IGF4LWZsZXgtY29sIGF4LWl0ZW1zLWNlbnRlciBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1taW4tdy0xMCBheC1oLTEwIGF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyIGF4LWJvcmRlci1iXCI+XG4gICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2xvZ29zL2xvZ28ucG5nXCIgY2xhc3M9XCJheC13LTZcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtcHktMVwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTJcIj5cbiAgICAgICAgPCEtLSA8YXgtYnV0dG9uIGNvbG9yPVwiZ2hvc3RcIiBsb29rPVwidHdvdG9uZVwiPlxuICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEtcHV6emxlIGF4LXRleHQtc21cIj4gPC9heC1pY29uPlxuICAgICAgICA8L2F4LWJ1dHRvbj4gLS0+XG4gICAgICAgIDxheC1idXR0b24gY29sb3I9XCJnaG9zdFwiIGxvb2s9XCJ0d290b25lXCIgKG9uQ2xpY2spPVwicGFnZXMudG9nZ2xlKClcIiB0aXRsZT1cIlBhZ2VzXCI+XG4gICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1zb2xpZCBmYS1wYWdlIGF4LXRleHQtc21cIj4gPC9heC1pY29uPlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgPGF4LWJ1dHRvbiBjb2xvcj1cImdob3N0XCIgbG9vaz1cInR3b3RvbmVcIiAob25DbGljayk9XCJkYXRhc291cmNlcy50b2dnbGUoKVwiIHRpdGxlPVwiRGF0YSBTb3VyY2VzXCI+XG4gICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1zb2xpZCBmYS1kYXRhYmFzZSBheC10ZXh0LXNtXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIDxheC1idXR0b24gY29sb3I9XCJnaG9zdFwiIGxvb2s9XCJ0d290b25lXCIgKG9uQ2xpY2spPVwib3V0bGluZS50b2dnbGUoKVwiIHRpdGxlPVwiT3V0bGluZVwiPlxuICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEtbGlzdC10cmVlIGF4LXRleHQtc21cIj4gPC9heC1pY29uPlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgPGF4LWJ1dHRvbiBjb2xvcj1cImdob3N0XCIgbG9vaz1cInR3b3RvbmVcIiAob25DbGljayk9XCJoaXN0b3J5LnRvZ2dsZSgpXCIgdGl0bGU9XCJIaXN0b3J5XCI+XG4gICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1zb2xpZCBmYS1jbG9jay1yb3RhdGUtbGVmdCBheC10ZXh0LXNtXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIDwhLS0gPGF4LWJ1dHRvbiBjb2xvcj1cImdob3N0XCIgbG9vaz1cInR3b3RvbmVcIiB0aXRsZT1cIlRpbWVsaW5lXCI+XG4gICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1zb2xpZCBmYS1kaWFncmFtLXNhbmtleSBheC10ZXh0LXNtXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgPC9heC1idXR0b24+IC0tPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBNYWluIFNpZGUgLS0+XG4gICAgPGRpdiBjbGFzcz1cImF4LWNvbC1zcGFuLTEwIGF4LWZsZXggYXgtZmxleC1jb2wgYXgtZmxleC0xXCI+XG4gICAgICA8IS0tIEhlYWRlciBUb29sYmFyIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImF4LW1pbi1oLTEwIGF4LWJnLXN1cmZhY2UgYXgtYm9yZGVyLWIgIGF4LWZsZXggYXgtZmxleC1ncm93IGF4LWp1c3RpZnktYmV0d2VlbiBheC1weC0yXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWNlbnRlciBheC10ZXh0LXdoaXRlXCI+XG4gICAgICAgICAgPGF4cC1kZXNpZ25lci1oZWFkZXItbWVudT48L2F4cC1kZXNpZ25lci1oZWFkZXItbWVudT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtcm93IGF4LWdhcC0yIGF4LXhzIGF4LWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgIDxheC1idXR0b24tZ3JvdXAgY29sb3I9XCJnaG9zdFwiIGxvb2s9XCJ0d290b25lXCIgW3NlbGVjdGlvbl09XCInc2luZ2xlJ1wiPlxuICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIFtzZWxlY3RlZF09XCJzZXJ2aWNlLnNpemUoKSA9PSAneGwnXCIgW2RhdGFdPVwiJ3hsJ1wiIChvbkNsaWNrKT1cInNlcnZpY2Uuc2l6ZS5zZXQoJ3hsJylcIj5cbiAgICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1saWdodCBmYS1kZXNrdG9wXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgIDxheC1idXR0b24taXRlbSBbc2VsZWN0ZWRdPVwic2VydmljZS5zaXplKCkgPT0gJ2xnJ1wiIFtkYXRhXT1cIidsZydcIiAob25DbGljayk9XCJzZXJ2aWNlLnNpemUuc2V0KCdsZycpXCI+XG4gICAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtbGlnaHQgZmEtdGFibGV0XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgIDxheC1idXR0b24taXRlbSBbc2VsZWN0ZWRdPVwic2VydmljZS5zaXplKCkgPT0gJ3NtJ1wiIFtkYXRhXT1cIidzbSdcIiAob25DbGljayk9XCJzZXJ2aWNlLnNpemUuc2V0KCdzbScpXCI+XG4gICAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtbGlnaHQgZmEtbW9iaWxlXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICA8L2F4LWJ1dHRvbi1ncm91cD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtcm93IGF4LWdhcC0yIGF4LXhzIGF4LWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgIDxheC1idXR0b24gdGV4dD1cIkRlc2lnblwiIGxvb2s9XCJvdXRsaW5lXCIgY2xhc3M9XCJheC14c1wiPlxuICAgICAgICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1saWdodCBmYS1jaGV2cm9uLWRvd25cIj48L2F4LWljb24+XG4gICAgICAgICAgICA8L2F4LXN1ZmZpeD5cbiAgICAgICAgICAgIDxheC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIHRleHQ9XCJQcmludFwiIG5hbWU9XCJwcmludFwiPiA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbSB0ZXh0PVwiVmlld1wiIG5hbWU9XCJ2aWV3XCI+IDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICAgIDwvYXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgICAgPGF4LWJ1dHRvbiBjb2xvcj1cInN1Y2Nlc3NcIiBsb29rPVwib3V0bGluZVwiIHRleHQ9XCJQcmV2aWV3XCIgY2xhc3M9XCJheC14c1wiIChvbkNsaWNrKT1cInNlcnZpY2Uub3BlblByZXZpZXcoKVwiPlxuICAgICAgICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1zb2xpZCBmYS1wbGF5XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgPC9heC1zdWZmaXg+XG4gICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIEJvYXJkIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWgtZnVsbCBcIj5cbiAgICAgICAgPGF4LWRyYXdlci1jb250YWluZXIgY2xhc3M9XCJheC13LWZ1bGwgYXgtaC1mdWxsXCI+XG4gICAgICAgICAgPCEtLSBQYWdlcyAtLT5cbiAgICAgICAgICA8YXgtZHJhd2VyICNwYWdlcyBsb2NhdGlvbj1cInN0YXJ0XCIgbW9kZT1cInB1c2hcIj5cbiAgICAgICAgICAgIDxheC1jb250ZW50PlxuICAgICAgICAgICAgICA8YXhwLWRlc2lnbmVyLXBhZ2VzPjwvYXhwLWRlc2lnbmVyLXBhZ2VzPlxuICAgICAgICAgICAgPC9heC1jb250ZW50PlxuICAgICAgICAgIDwvYXgtZHJhd2VyPlxuICAgICAgICAgIDwhLS0gRGF0YXNvdXJjZXMgLS0+XG4gICAgICAgICAgPGF4LWRyYXdlciAjZGF0YXNvdXJjZXMgbG9jYXRpb249XCJzdGFydFwiIG1vZGU9XCJwdXNoXCI+XG4gICAgICAgICAgICA8YXgtY29udGVudD5cbiAgICAgICAgICAgICAgRGF0YXNvdXJjZXNcbiAgICAgICAgICAgIDwvYXgtY29udGVudD5cbiAgICAgICAgICA8L2F4LWRyYXdlcj5cbiAgICAgICAgICA8IS0tIE91dGxpbmUgUG5hZWwgLS0+XG4gICAgICAgICAgPGF4LWRyYXdlciAjb3V0bGluZSBsb2NhdGlvbj1cInN0YXJ0XCIgbW9kZT1cInB1c2hcIj5cbiAgICAgICAgICAgIDxheC1jb250ZW50PlxuICAgICAgICAgICAgICA8YXhwLWRlc2lnbmVyLW91dGxpbmU+PC9heHAtZGVzaWduZXItb3V0bGluZT5cbiAgICAgICAgICAgIDwvYXgtY29udGVudD5cbiAgICAgICAgICA8L2F4LWRyYXdlcj5cbiAgICAgICAgICA8IS0tIEhpc3RvcnkgUG5hZWwgLS0+XG4gICAgICAgICAgPGF4LWRyYXdlciAjaGlzdG9yeSBsb2NhdGlvbj1cInN0YXJ0XCIgbW9kZT1cInB1c2hcIj5cbiAgICAgICAgICAgIDxheC1jb250ZW50PlxuICAgICAgICAgICAgICA8YXhwLWRlc2lnbmVyLWhpc3Rvcnk+PC9heHAtZGVzaWduZXItaGlzdG9yeT5cbiAgICAgICAgICAgIDwvYXgtY29udGVudD5cbiAgICAgICAgICA8L2F4LWRyYXdlcj5cbiAgICAgICAgICA8IS0tIENvbnRlbnQgb2YgYm9hcmQgLS0+XG4gICAgICAgICAgPGF4LWNvbnRlbnQgY2xhc3M9XCJheC1saWdodFwiPlxuICAgICAgICAgICAgPGF4cC1kZXNpZ25lci1ib2FyZCBjbGFzcz1cImF4LWgtZnVsbCBheC1iZy1vbi1zdXJmYWNlIGF4LWZsZXggYXgtanVzdGlmeS1jZW50ZXJcIj4gPC9heHAtZGVzaWduZXItYm9hcmQ+XG4gICAgICAgICAgPC9heC1jb250ZW50PlxuICAgICAgICA8L2F4LWRyYXdlci1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS0gRm9vdGVyIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImF4LW1pbi1oLTEwIGF4LWJnLXN1cmZhY2UgYXgtYm9yZGVyLXQgIGF4LWZsZXggYXgtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxheHAtZGVzaWduZXItYnJlYWRjcnVtYnMgY2xhc3M9XCJheC1ib3JkZXItZGVmYXVsdCBheC1ib3JkZXItdCBheC1wLTIgYXgtZm9udC1ub3JtYWxcIj5cbiAgICAgICAgPC9heHAtZGVzaWduZXItYnJlYWRjcnVtYnM+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9heC1jb250ZW50PlxuICA8IS0tIFByb3BlcnR5IFNpZGUgLS0+XG4gIDxheC1kcmF3ZXIgY2xhc3M9XCJheC13LTgwIGF4LWJvcmRlci1zXCIgbG9jYXRpb249XCJlbmRcIiBtb2RlPVwicHVzaFwiIFtjb2xsYXBzZWRdPVwiZmFsc2VcIiAjcGQ+XG4gICAgPGF4LWNvbnRlbnQ+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LXJvdyBheC13LWZ1bGwgYXgtanVzdGlmeS1iZXR3ZWVuIGF4LXRleHQtd2hpdGUgYXgtcHktMiBheC1weC00IGF4LWJvcmRlci1iXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtcm93IGF4LWdhcC0yIGF4LWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgIDxpIFtuZ0NsYXNzXT1cIm5vZGVDb25maWcoKT8uaWNvblwiPjwvaT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LWZvbnQtc2VtaWJvbGRcIj57eyBub2RlQ29uZmlnKCk/LnRpdGxlIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGF4cC13aWRnZXQtcHJvcGVydHktdmlld2VyIFt3aWRnZXRdPVwic2VydmljZS5zZWxlY3RlZE5vZGUoKSFcIlxuICAgICAgICAob25DaGFuZ2VkKT1cInNlcnZpY2UudXBkYXRlKHsgdmFsdWVzOiAkZXZlbnQudmFsdWVzLCBtb2RlOiAkZXZlbnQubW9kZSB9KVwiIGNsYXNzPVwiYXgtdy0xLzRcIj5cbiAgICAgIDwvYXhwLXdpZGdldC1wcm9wZXJ0eS12aWV3ZXI+XG4gICAgPC9heC1jb250ZW50PlxuICA8L2F4LWRyYXdlcj5cbjwvYXgtZHJhd2VyLWNvbnRhaW5lcj4iXX0=
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZGVzaWduZXIvc3JjL2xpYi9kZXNpZ25lci9kZXNpZ25lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL2Rlc2lnbmVyL2Rlc2lnbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQW1CLE1BQU0saUNBQWlDLENBQUM7QUFDMUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0scURBQXFE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QkFEckIsU0FBUzt1QkFBQyxnQ0FBZ0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBZXJELG1CQUFtQjtzQkFEMUIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWEJ1dHRvbkdyb3VwTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbi1ncm91cCc7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYRHJhd2VyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RyYXdlcic7XG5pbXBvcnQgeyBBWERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEFYTWVudU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9tZW51JztcbmltcG9ydCB7IEFYVGFic01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90YWJzJztcbmltcG9ydCB7IEFYUExheW91dEJ1aWxkZXJNb2R1bGUsIEFYUFdpZGdldENvbmZpZyB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQVhQRGVzaWduZXJTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvZGVzaWduZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXRQcm9wZXJ0eVZpZXdlckNvbXBvbmVudCB9IGZyb20gJy4uL3Byb3BlcnR5LXZpZXdlci93aWRnZXQtcHJvcGVydHktdmlld2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBEZXNpZ25lckJvYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2JvYXJkL2JvYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBEZXNpZ25lckJyZWFkY3J1bWJzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2JyZWFkY3J1bWJzL2JyZWFkY3J1bWJzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBEZXNpZ25lckRhdGFTb3VyY2VzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2RyYXdlcnMvZGF0YS1zb3VyY2VzL2RhdGEtc291cmNlcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhQRGVzaWduZXJIaXN0b3J5Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2RyYXdlcnMvaGlzdG9yeS9oaXN0b3J5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBEZXNpZ25lck91dGxpbmVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZHJhd2Vycy9vdXRsaW5lL291dGxpbmUuY29tcG9uZW50JztcbmltcG9ydCB7IEFYUERlc2lnbmVyUGFnZXNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZHJhd2Vycy9wYWdlcy9wYWdlcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhQRGVzaWduZXJIZWFkZXJNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2hlYWRlci1tZW51L2hlYWRlci1tZW51LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1sYXlvdXQtZGVzaWduZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGVzaWduZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kZXNpZ25lci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFYUExheW91dEJ1aWxkZXJNb2R1bGUsXG4gICAgQVhQRGVzaWduZXJCb2FyZENvbXBvbmVudCxcbiAgICBBWFBXaWRnZXRQcm9wZXJ0eVZpZXdlckNvbXBvbmVudCxcbiAgICBBWFBEZXNpZ25lckJyZWFkY3J1bWJzQ29tcG9uZW50LFxuICAgIEFYUERlc2lnbmVyT3V0bGluZUNvbXBvbmVudCxcbiAgICBBWFBEZXNpZ25lckhlYWRlck1lbnVDb21wb25lbnQsXG4gICAgQVhQRGVzaWduZXJIaXN0b3J5Q29tcG9uZW50LFxuICAgIEFYUERlc2lnbmVyRGF0YVNvdXJjZXNDb21wb25lbnQsXG4gICAgQVhQRGVzaWduZXJQYWdlc0NvbXBvbmVudCxcbiAgICBBWFRhYnNNb2R1bGUsXG4gICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgQVhEcmF3ZXJNb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhNZW51TW9kdWxlLFxuICAgIEFYQnV0dG9uR3JvdXBNb2R1bGUsXG4gICAgQVhEcm9wZG93bk1vZHVsZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbQVhQRGVzaWduZXJTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQTGF5b3V0RGVzaWduZXJDb21wb25lbnQge1xuXG4gIHByb3RlY3RlZCBzZXJ2aWNlID0gaW5qZWN0KEFYUERlc2lnbmVyU2VydmljZSk7XG5cbiAgQFZpZXdDaGlsZChBWFBXaWRnZXRQcm9wZXJ0eVZpZXdlckNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHJpdmF0ZSBwcm9wZXJ0eVZpZXdlcjogQVhQV2lkZ2V0UHJvcGVydHlWaWV3ZXJDb21wb25lbnQ7XG5cbiAgcHJvdGVjdGVkIG5vZGVDb25maWcgPSBjb21wdXRlZDxBWFBXaWRnZXRDb25maWcgfCBudWxsPigoKSA9PlxuICAgIHRoaXMuc2VydmljZS5zZWxlY3RlZE5vZGUoKSA/IChnZXQodGhpcy5zZXJ2aWNlLnNlbGVjdGVkTm9kZSgpLCAnX19tZXRhX18uY29uZmlnJykgYXMgYW55IGFzIEFYUFdpZGdldENvbmZpZykgOiBudWxsXG4gICk7XG5cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNlcnZpY2Uub25VcGRhdGUuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICB0aGlzLnByb3BlcnR5Vmlld2VyLnVwZGF0ZShlLnZhbHVlcyk7XG4gICAgfSlcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxuICBwcml2YXRlIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQudGFyZ2V0ID09IGRvY3VtZW50LmJvZHkpIHtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgY2FzZSAnbic6XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB0aGlzLnNlcnZpY2UubmV3KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIC8vXG4gICAgaWYgKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQudGFyZ2V0ID09IGRvY3VtZW50LmJvZHkpIHtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgY2FzZSAneic6XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB0aGlzLnNlcnZpY2UudW5kbygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHRoaXMuc2VydmljZS5yZWRvKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2MnOlxuICAgICAgICAgIGlmICh0aGlzLnNlcnZpY2UuY2FuQ3V0Q29weSgpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLmNvcHkoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgIGlmICh0aGlzLnNlcnZpY2UuY2FuQ3V0Q29weSgpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLmNsb25lKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd4JzpcbiAgICAgICAgICBpZiAodGhpcy5zZXJ2aWNlLmNhbkN1dENvcHkoKSkge1xuICAgICAgICAgICAgZGVidWdnZXJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UuY3V0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd2JzpcbiAgICAgICAgICBpZiAodGhpcy5zZXJ2aWNlLmNhblBhc3RlKCkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2UucGFzdGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn1cbiIsIjxheC1kcmF3ZXItY29udGFpbmVyIGNsYXNzPVwiYXgtaC1mdWxsIGF4LXctZnVsbCBheC1mbGV4IGF4LXJlbGF0aXZlICBheC1vdmVyZmxvdy1oaWRkZW4gYXgtZGFya1wiPlxuICA8YXgtY29udGVudCBjbGFzcz1cImF4LWNvbnRlbnRzXCI+XG4gICAgPCEtLSBUb29sYmFyIFNpZGUgLS0+XG4gICAgPGRpdiBjbGFzcz1cImF4LW1pbi13LTEwIGF4LWJnLXN1cmZhY2UgYXgtYm9yZGVyLWUgYXgteHMgYXgtZmxleCBheC1mbGV4LWNvbCBheC1pdGVtcy1jZW50ZXIgXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtbWluLXctMTAgYXgtaC0xMCBheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWNlbnRlciBheC1ib3JkZXItYlwiPlxuICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9sb2dvcy9sb2dvLnBuZ1wiIGNsYXNzPVwiYXgtdy02XCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImF4LXB5LTFcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC0yXCI+XG4gICAgICAgIDwhLS0gPGF4LWJ1dHRvbiBjb2xvcj1cImdob3N0XCIgbG9vaz1cInR3b3RvbmVcIj5cbiAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLXNvbGlkIGZhLXB1enpsZSBheC10ZXh0LXNtXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgPC9heC1idXR0b24+IC0tPlxuICAgICAgICA8YXgtYnV0dG9uIGNvbG9yPVwiZ2hvc3RcIiBsb29rPVwidHdvdG9uZVwiIChvbkNsaWNrKT1cInBhZ2VzLnRvZ2dsZSgpXCIgdGl0bGU9XCJQYWdlc1wiPlxuICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEtcGFnZSBheC10ZXh0LXNtXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIDxheC1idXR0b24gY29sb3I9XCJnaG9zdFwiIGxvb2s9XCJ0d290b25lXCIgKG9uQ2xpY2spPVwiZGF0YXNvdXJjZXMudG9nZ2xlKClcIiB0aXRsZT1cIkRhdGEgU291cmNlc1wiPlxuICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEtZGF0YWJhc2UgYXgtdGV4dC1zbVwiPiA8L2F4LWljb24+XG4gICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICA8YXgtYnV0dG9uIGNvbG9yPVwiZ2hvc3RcIiBsb29rPVwidHdvdG9uZVwiIChvbkNsaWNrKT1cIm91dGxpbmUudG9nZ2xlKClcIiB0aXRsZT1cIk91dGxpbmVcIj5cbiAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLXNvbGlkIGZhLWxpc3QtdHJlZSBheC10ZXh0LXNtXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIDxheC1idXR0b24gY29sb3I9XCJnaG9zdFwiIGxvb2s9XCJ0d290b25lXCIgKG9uQ2xpY2spPVwiaGlzdG9yeS50b2dnbGUoKVwiIHRpdGxlPVwiSGlzdG9yeVwiPlxuICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEtY2xvY2stcm90YXRlLWxlZnQgYXgtdGV4dC1zbVwiPiA8L2F4LWljb24+XG4gICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICA8IS0tIDxheC1idXR0b24gY29sb3I9XCJnaG9zdFwiIGxvb2s9XCJ0d290b25lXCIgdGl0bGU9XCJUaW1lbGluZVwiPlxuICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEtZGlhZ3JhbS1zYW5rZXkgYXgtdGV4dC1zbVwiPiA8L2F4LWljb24+XG4gICAgICAgIDwvYXgtYnV0dG9uPiAtLT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gTWFpbiBTaWRlIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJheC1jb2wtc3Bhbi0xMCBheC1mbGV4IGF4LWZsZXgtY29sIGF4LWZsZXgtMSBcIj5cbiAgICAgIDwhLS0gSGVhZGVyIFRvb2xiYXIgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtaC0xMCBheC1iZy1zdXJmYWNlIGF4LWJvcmRlci1iICBheC1mbGV4IGF4LWp1c3RpZnktYmV0d2VlbiBheC1weC0yXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWNlbnRlciBheC10ZXh0LXdoaXRlXCI+XG4gICAgICAgICAgPGF4cC1kZXNpZ25lci1oZWFkZXItbWVudT48L2F4cC1kZXNpZ25lci1oZWFkZXItbWVudT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtcm93IGF4LWdhcC0yIGF4LXhzIGF4LWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgIDxheC1idXR0b24tZ3JvdXAgY29sb3I9XCJnaG9zdFwiIGxvb2s9XCJ0d290b25lXCIgW3NlbGVjdGlvbl09XCInc2luZ2xlJ1wiPlxuICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIFtzZWxlY3RlZF09XCJzZXJ2aWNlLnNpemUoKSA9PSAneGwnXCIgW2RhdGFdPVwiJ3hsJ1wiIChvbkNsaWNrKT1cInNlcnZpY2Uuc2l6ZS5zZXQoJ3hsJylcIj5cbiAgICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1saWdodCBmYS1kZXNrdG9wXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgIDxheC1idXR0b24taXRlbSBbc2VsZWN0ZWRdPVwic2VydmljZS5zaXplKCkgPT0gJ2xnJ1wiIFtkYXRhXT1cIidsZydcIiAob25DbGljayk9XCJzZXJ2aWNlLnNpemUuc2V0KCdsZycpXCI+XG4gICAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtbGlnaHQgZmEtdGFibGV0XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgIDxheC1idXR0b24taXRlbSBbc2VsZWN0ZWRdPVwic2VydmljZS5zaXplKCkgPT0gJ3NtJ1wiIFtkYXRhXT1cIidzbSdcIiAob25DbGljayk9XCJzZXJ2aWNlLnNpemUuc2V0KCdzbScpXCI+XG4gICAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtbGlnaHQgZmEtbW9iaWxlXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICA8L2F4LWJ1dHRvbi1ncm91cD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtcm93IGF4LWdhcC0yIGF4LXhzIGF4LWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgIDxheC1idXR0b24gdGV4dD1cIkRlc2lnblwiIGxvb2s9XCJvdXRsaW5lXCIgY2xhc3M9XCJheC14c1wiPlxuICAgICAgICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1saWdodCBmYS1jaGV2cm9uLWRvd25cIj48L2F4LWljb24+XG4gICAgICAgICAgICA8L2F4LXN1ZmZpeD5cbiAgICAgICAgICAgIDxheC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIHRleHQ9XCJQcmludFwiIG5hbWU9XCJwcmludFwiPiA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbSB0ZXh0PVwiVmlld1wiIG5hbWU9XCJ2aWV3XCI+IDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICAgIDwvYXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgICAgPGF4LWJ1dHRvbiBjb2xvcj1cInN1Y2Nlc3NcIiBsb29rPVwib3V0bGluZVwiIHRleHQ9XCJQcmV2aWV3XCIgY2xhc3M9XCJheC14c1wiIChvbkNsaWNrKT1cInNlcnZpY2Uub3BlblByZXZpZXcoKVwiPlxuICAgICAgICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1zb2xpZCBmYS1wbGF5XCI+PC9heC1pY29uPlxuICAgICAgICAgICAgPC9heC1zdWZmaXg+XG4gICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIEJvYXJkIC0tPlxuICAgICAgPGF4LWRyYXdlci1jb250YWluZXIgY2xhc3M9XCJheC13LWZ1bGwgYXgtZmxleC0xXCI+XG4gICAgICAgIDwhLS0gUGFnZXMgLS0+XG4gICAgICAgIDxheC1kcmF3ZXIgI3BhZ2VzIGxvY2F0aW9uPVwic3RhcnRcIiBtb2RlPVwicHVzaFwiPlxuICAgICAgICAgIDxheC1jb250ZW50PlxuICAgICAgICAgICAgPGF4cC1kZXNpZ25lci1wYWdlcz48L2F4cC1kZXNpZ25lci1wYWdlcz5cbiAgICAgICAgICA8L2F4LWNvbnRlbnQ+XG4gICAgICAgIDwvYXgtZHJhd2VyPlxuICAgICAgICA8IS0tIERhdGFzb3VyY2VzIC0tPlxuICAgICAgICA8YXgtZHJhd2VyICNkYXRhc291cmNlcyBsb2NhdGlvbj1cInN0YXJ0XCIgbW9kZT1cInB1c2hcIj5cbiAgICAgICAgICA8YXgtY29udGVudD5cbiAgICAgICAgICAgIDxheHAtZGVzaWduZXItZGF0YS1zb3VyY2VzPjwvYXhwLWRlc2lnbmVyLWRhdGEtc291cmNlcz5cbiAgICAgICAgICA8L2F4LWNvbnRlbnQ+XG4gICAgICAgIDwvYXgtZHJhd2VyPlxuICAgICAgICA8IS0tIE91dGxpbmUgUG5hZWwgLS0+XG4gICAgICAgIDxheC1kcmF3ZXIgI291dGxpbmUgbG9jYXRpb249XCJzdGFydFwiIG1vZGU9XCJwdXNoXCI+XG4gICAgICAgICAgPGF4LWNvbnRlbnQ+XG4gICAgICAgICAgICA8YXhwLWRlc2lnbmVyLW91dGxpbmU+PC9heHAtZGVzaWduZXItb3V0bGluZT5cbiAgICAgICAgICA8L2F4LWNvbnRlbnQ+XG4gICAgICAgIDwvYXgtZHJhd2VyPlxuICAgICAgICA8IS0tIEhpc3RvcnkgUG5hZWwgLS0+XG4gICAgICAgIDxheC1kcmF3ZXIgI2hpc3RvcnkgbG9jYXRpb249XCJzdGFydFwiIG1vZGU9XCJwdXNoXCI+XG4gICAgICAgICAgPGF4LWNvbnRlbnQ+XG4gICAgICAgICAgICA8YXhwLWRlc2lnbmVyLWhpc3Rvcnk+PC9heHAtZGVzaWduZXItaGlzdG9yeT5cbiAgICAgICAgICA8L2F4LWNvbnRlbnQ+XG4gICAgICAgIDwvYXgtZHJhd2VyPlxuICAgICAgICA8IS0tIENvbnRlbnQgb2YgYm9hcmQgLS0+XG4gICAgICAgIDxheC1jb250ZW50IGNsYXNzPVwiYXgtbGlnaHQgYXgtaC1zY3JlZW4gYXgtYmctb24tc3VyZmFjZSBheC1mbGV4IGF4LWp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgPGF4cC1kZXNpZ25lci1ib2FyZD4gPC9heHAtZGVzaWduZXItYm9hcmQ+XG4gICAgICAgIDwvYXgtY29udGVudD5cbiAgICAgIDwvYXgtZHJhd2VyLWNvbnRhaW5lcj5cbiAgICAgIDwhLS0gRm9vdGVyIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWgtMTAgYXgtYmctc3VyZmFjZSBheC1ib3JkZXItdCAgYXgtZmxleCBheC1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGF4cC1kZXNpZ25lci1icmVhZGNydW1icyBjbGFzcz1cImF4LWJvcmRlci1kZWZhdWx0IGF4LWJvcmRlci10IGF4LXAtMiBheC1mb250LW5vcm1hbFwiPlxuICAgICAgICA8L2F4cC1kZXNpZ25lci1icmVhZGNydW1icz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2F4LWNvbnRlbnQ+XG4gIDwhLS0gUHJvcGVydHkgU2lkZSAtLT5cbiAgPGF4LWRyYXdlciBjbGFzcz1cImF4LXctODAgYXgtYm9yZGVyLXNcIiBsb2NhdGlvbj1cImVuZFwiIG1vZGU9XCJwdXNoXCIgW2NvbGxhcHNlZF09XCJmYWxzZVwiICNwZD5cbiAgICA8YXgtY29udGVudD5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtcm93IGF4LXctZnVsbCBheC1qdXN0aWZ5LWJldHdlZW4gYXgtdGV4dC13aGl0ZSBheC1weS0yIGF4LXB4LTQgYXgtYm9yZGVyLWJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1yb3cgYXgtZ2FwLTIgYXgtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgPGkgW25nQ2xhc3NdPVwibm9kZUNvbmZpZygpPy5pY29uXCI+PC9pPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtZm9udC1zZW1pYm9sZFwiPnt7IG5vZGVDb25maWcoKT8udGl0bGUgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8YXhwLXdpZGdldC1wcm9wZXJ0eS12aWV3ZXIgW3dpZGdldF09XCJzZXJ2aWNlLnNlbGVjdGVkTm9kZSgpIVwiXG4gICAgICAgIChvbkNoYW5nZWQpPVwic2VydmljZS51cGRhdGUoeyB2YWx1ZXM6ICRldmVudC52YWx1ZXMsIG1vZGU6ICRldmVudC5tb2RlIH0pXCIgY2xhc3M9XCJheC13LTEvNFwiPlxuICAgICAgPC9heHAtd2lkZ2V0LXByb3BlcnR5LXZpZXdlcj5cbiAgICA8L2F4LWNvbnRlbnQ+XG4gIDwvYXgtZHJhd2VyPlxuPC9heC1kcmF3ZXItY29udGFpbmVyPiJdfQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './components/grid-drawer/grid-drawer.component';
|
|
2
|
+
export * from './components/add-widget-button/add-widget-button.component';
|
|
3
|
+
export * from './designer.component';
|
|
4
|
+
export * from './shared/widget-designer-renderer.directive';
|
|
5
|
+
export * from './shared/designer.service';
|
|
6
|
+
export * from './shared/designer.typs';
|
|
7
|
+
export * from './shared/designer-connector.service';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL2Rlc2lnbmVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMscUNBQXFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvZ3JpZC1kcmF3ZXIvZ3JpZC1kcmF3ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9hZGQtd2lkZ2V0LWJ1dHRvbi9hZGQtd2lkZ2V0LWJ1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9kZXNpZ25lci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zaGFyZWQvd2lkZ2V0LWRlc2lnbmVyLXJlbmRlcmVyLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3NoYXJlZC9kZXNpZ25lci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2hhcmVkL2Rlc2lnbmVyLnR5cHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zaGFyZWQvZGVzaWduZXItY29ubmVjdG9yLnNlcnZpY2UnOyJdfQ==
|
|
@@ -0,0 +1,185 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2Rlc2lnbmVyL3NyYy9saWIvZGVzaWduZXIvc2hhcmVkL2NvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQVk3QyxtQkFBbUI7QUFDbkIsTUFBTSxPQUFPLGdCQUFnQjtJQUt6QixZQUFZLE1BQXFCLEVBQUUsTUFBcUIsRUFBRSxpQkFBZ0M7UUFDdEYsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO0lBQy9DLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUk7UUFDQSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDbEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4RCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENB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LENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQWFNLEtBQUs7UUFDUixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7OEdBL0VRLGNBQWM7a0hBQWQsY0FBYyxjQUZYLE1BQU07OzJGQUVULGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQV2lkZ2V0Tm9kZSB9IGZyb20gXCJAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyXCI7XG5pbXBvcnQgeyBjb21wdXRlZCwgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IGNsb25lRGVlcCwgbWVyZ2UgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbi8vIENvbW1hbmQgaW50ZXJmYWNlXG5leHBvcnQgaW50ZXJmYWNlIENvbW1hbmQge1xuICAgIGV4ZWN1dGUoKTogdm9pZDtcbiAgICB1bmRvKCk6IHZvaWQ7XG4gICAgZGVzY3JpcHRpb24oKTogc3RyaW5nO1xuICAgIGljb24oKTogc3RyaW5nO1xuICAgIGdldEV4ZWN1dGlvblNlbGVjdGlvbigpOiBBWFBXaWRnZXROb2RlOyAgLy8gTm9kZSB0byBzZWxlY3QgYWZ0ZXIgZXhlY3V0aW9uXG4gICAgZ2V0VW5kb1NlbGVjdGlvbigpOiBBWFBXaWRnZXROb2RlOyAgICAgICAvLyBOb2RlIHRvIHNlbGVjdCBhZnRlciB1bmRvXG59XG5cbi8vIEFkZFdpZGdldENvbW1hbmRcbmV4cG9ydCBjbGFzcyBBZGRXaWRnZXRDb21tYW5kIGltcGxlbWVudHMgQ29tbWFuZCB7XG4gICAgcHJpdmF0ZSB3aWRnZXQ6IEFYUFdpZGdldE5vZGU7XG4gICAgcHJpdmF0ZSBwYXJlbnQ6IEFYUFdpZGdldE5vZGU7XG4gICAgcHJpdmF0ZSBwcmV2aW91c1NlbGVjdGlvbjogQVhQV2lkZ2V0Tm9kZTtcblxuICAgIGNvbnN0cnVjdG9yKHdpZGdldDogQVhQV2lkZ2V0Tm9kZSwgcGFyZW50OiBBWFBXaWRnZXROb2RlLCBwcmV2aW91c1NlbGVjdGlvbjogQVhQV2lkZ2V0Tm9kZSkge1xuICAgICAgICB0aGlzLndpZGdldCA9IHdpZGdldDtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgIHRoaXMucHJldmlvdXNTZWxlY3Rpb24gPSBwcmV2aW91c1NlbGVjdGlvbjtcbiAgICB9XG5cbiAgICBleGVjdXRlKCkge1xuICAgICAgICB0aGlzLnBhcmVudC5jaGlsZHJlbiA9IHRoaXMucGFyZW50LmNoaWxkcmVuIHx8IFtdO1xuICAgICAgICB0aGlzLnBhcmVudC5jaGlsZHJlbi5wdXNoKHRoaXMud2lkZ2V0KTtcbiAgICB9XG5cbiAgICB1bmRvKCkge1xuICAgICAgICB0aGlzLnBhcmVudC5jaGlsZHJlbiA9IHRoaXMucGFyZW50LmNoaWxkcmVuIHx8IFtdO1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucGFyZW50LmNoaWxkcmVuLmluZGV4T2YodGhpcy53aWRnZXQpO1xuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQuY2hpbGRyZW4uc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRlc2NyaXB0aW9uKCkge1xuICAgICAgICByZXR1cm4gYEFkZGVkIHdpZGdldCAke3RoaXMud2lkZ2V0Lm5hbWV9YDtcbiAgICB9XG5cbiAgICBpY29uKCkge1xuICAgICAgICByZXR1cm4gYGZhLXNvbGlkIGZhLXNxdWFyZS1wbHVzYDtcbiAgICB9XG5cbiAgICBnZXRFeGVjdXRpb25TZWxlY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndpZGdldDsgIC8vIEFmdGVyIGV4ZWN1dGluZywgc2VsZWN0IHRoZSBuZXdseSBhZGRlZCB3aWRnZXRcbiAgICB9XG5cbiAgICBnZXRVbmRvU2VsZWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcmV2aW91c1NlbGVjdGlvbjsgIC8vIEFmdGVyIHVuZG8sIHNlbGVjdCB0aGUgcHJldmlvdXNseSBzZWxlY3RlZCB3aWRnZXRcbiAgICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIFJlbW92ZVdpZGdldENvbW1hbmQgaW1wbGVtZW50cyBDb21tYW5kIHtcbiAgICBwcml2YXRlIHdpZGdldDogQVhQV2lkZ2V0Tm9kZTtcbiAgICBwcml2YXRlIHBhcmVudDogQVhQV2lkZ2V0Tm9kZTtcbiAgICBwcml2YXRlIHByZXZpb3VzU2VsZWN0aW9uOiBBWFBXaWRnZXROb2RlO1xuICAgIHByaXZhdGUgaW5kZXg6IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKHdpZGdldDogQVhQV2lkZ2V0Tm9kZSwgcGFyZW50OiBBWFBXaWRnZXROb2RlLCBwcmV2aW91c1NlbGVjdGlvbjogQVhQV2lkZ2V0Tm9kZSkge1xuICAgICAgICB0aGlzLndpZGdldCA9IHdpZGdldDtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgIHRoaXMucHJldmlvdXNTZWxlY3Rpb24gPSBwcmV2aW91c1NlbGVjdGlvbjtcbiAgICAgICAgcGFyZW50LmNoaWxkcmVuID0gcGFyZW50LmNoaWxkcmVuIHx8IFtdO1xuICAgICAgICB0aGlzLmluZGV4ID0gcGFyZW50LmNoaWxkcmVuLmluZGV4T2Yod2lkZ2V0KTsgIC8vIENhcHR1cmUgdGhlIGluZGV4IGZvciB1bmRvIHB1cnBvc2VzXG4gICAgfVxuXG4gICAgZXhlY3V0ZSgpIHtcbiAgICAgICAgdGhpcy5wYXJlbnQuY2hpbGRyZW4gPSB0aGlzLnBhcmVudC5jaGlsZHJlbiB8fCBbXTtcbiAgICAgICAgdGhpcy5pbmRleCA9IHRoaXMucGFyZW50LmNoaWxkcmVuLmluZGV4T2YodGhpcy53aWRnZXQpOyAgLy8gUmUtYXNzZXJ0IHRoZSBpbmRleCBpbiBjYXNlIGl0IGhhcyBjaGFuZ2VkXG4gICAgICAgIHRoaXMucGFyZW50LmNoaWxkcmVuLnNwbGljZSh0aGlzLmluZGV4LCAxKTtcbiAgICB9XG5cbiAgICB1bmRvKCkge1xuICAgICAgICB0aGlzLnBhcmVudC5jaGlsZHJlbiA9IHRoaXMucGFyZW50LmNoaWxkcmVuIHx8IFtdO1xuICAgICAgICB0aGlzLnBhcmVudC5jaGlsZHJlbi5zcGxpY2UodGhpcy5pbmRleCwgMCwgdGhpcy53aWRnZXQpOyAgLy8gUmVpbnNlcnQgYXQgdGhlIG9yaWdpbmFsIGluZGV4XG4gICAgfVxuXG4gICAgZGVzY3JpcHRpb24oKSB7XG4gICAgICAgIHJldHVybiBgUmVtb3ZlZCB3aWRnZXQgJHt0aGlzLndpZGdldC5uYW1lfWA7XG4gICAgfVxuXG4gICAgaWNvbigpIHtcbiAgICAgICAgcmV0dXJuIGBmYS1zb2xpZCBmYS1zcXVhcmUtbWludXNgO1xuICAgIH1cblxuICAgIGdldEV4ZWN1dGlvblNlbGVjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJldmlvdXNTZWxlY3Rpb247ICAvLyBUeXBpY2FsbHkgdGhlIHBhcmVudCBvciBhIG5lYXJieSBzaWJsaW5nIGNvdWxkIGJlIGZvY3VzZWRcbiAgICB9XG5cbiAgICBnZXRVbmRvU2VsZWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy53aWRnZXQ7ICAvLyBTZWxlY3QgdGhlIHdpZGdldCBpdHNlbGYgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIHVuZG9uZVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVwZGF0ZVdpZGdldENvbW1hbmQgaW1wbGVtZW50cyBDb21tYW5kIHtcbiAgICBwcml2YXRlIHdpZGdldDogQVhQV2lkZ2V0Tm9kZTtcbiAgICBwcml2YXRlIHByZXZpb3VzU3RhdGU6IEFYUFdpZGdldE5vZGU7XG4gICAgcHJpdmF0ZSBuZXdTdGF0ZTogQVhQV2lkZ2V0Tm9kZTtcbiAgICBwcml2YXRlIHByZXZpb3VzU2VsZWN0aW9uOiBBWFBXaWRnZXROb2RlO1xuXG4gICAgY29uc3RydWN0b3Iod2lkZ2V0OiBBWFBXaWRnZXROb2RlLCB2YWx1ZXM6IFBhcnRpYWw8QVhQV2lkZ2V0Tm9kZT4sIHByZXZpb3VzU2VsZWN0aW9uOiBBWFBXaWRnZXROb2RlKSB7XG4gICAgICAgIHRoaXMud2lkZ2V0ID0gd2lkZ2V0O1xuICAgICAgICB0aGlzLm5ld1N0YXRlID0gbWVyZ2UoY2xvbmVEZWVwKHdpZGdldCksIHZhbHVlcyk7XG4gICAgICAgIHRoaXMucHJldmlvdXNTZWxlY3Rpb24gPSBwcmV2aW91c1NlbGVjdGlvbjtcbiAgICAgICAgdGhpcy5wcmV2aW91c1N0YXRlID0gY2xvbmVEZWVwKHdpZGdldCk7XG4gICAgfVxuXG4gICAgZXhlY3V0ZSgpIHtcbiAgICAgICAgbWVyZ2UodGhpcy53aWRnZXQsIHRoaXMubmV3U3RhdGUpXG4gICAgfVxuXG4gICAgdW5kbygpIHtcbiAgICAgICAgdGhpcy5kZWVwUHJ1bmVBbmRSZXN0b3JlKHRoaXMud2lkZ2V0LCB0aGlzLnByZXZpb3VzU3RhdGUpO1xuICAgIH1cblxuICAgIGRlc2NyaXB0aW9uKCkge1xuICAgICAgICByZXR1cm4gYFVwZGF0ZWQgd2lkZ2V0ICR7dGhpcy53aWRnZXQubmFtZX1gO1xuICAgIH1cblxuICAgIGljb24oKSB7XG4gICAgICAgIHJldHVybiBgZmEtc29saWQgZmEtcGVuLXRvLXNxdWFyZWA7XG4gICAgfVxuXG4gICAgZ2V0RXhlY3V0aW9uU2VsZWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy53aWRnZXQ7ICAvLyBGb2N1cyB0aGUgd2lkZ2V0IGFmdGVyIGl0J3MgdXBkYXRlZFxuICAgIH1cblxuICAgIGdldFVuZG9TZWxlY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZXZpb3VzU2VsZWN0aW9uOyAgLy8gUmVzdG9yZSB0aGUgZm9jdXMgdG8gd2hlcmUgaXQgd2FzIGJlZm9yZSB0aGUgdXBkYXRlXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZWVwUHJ1bmVBbmRSZXN0b3JlKGN1cnJlbnQ6IGFueSwgb3JpZ2luYWw6IGFueSkge1xuICAgICAgICBPYmplY3Qua2V5cyhjdXJyZW50KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICBpZiAob3JpZ2luYWwuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY3VycmVudFtrZXldID09PSAnb2JqZWN0JyAmJiBjdXJyZW50W2tleV0gIT09IG51bGwgJiYgIShjdXJyZW50W2tleV0gaW5zdGFuY2VvZiBBcnJheSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWVwUHJ1bmVBbmRSZXN0b3JlKGN1cnJlbnRba2V5XSwgb3JpZ2luYWxba2V5XSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgY3VycmVudFtrZXldOyAgLy8gUmVtb3ZlIHByb3BlcnRpZXMgbm90IHByZXNlbnQgaW4gb3JpZ2luYWxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gUmVzdG9yZSB0aGUgb3JpZ2luYWwgcHJvcGVydGllc1xuICAgICAgICBtZXJnZShjdXJyZW50LCBvcmlnaW5hbCk7XG4gICAgfVxufVxuXG5cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb21tYW5kTWFuYWdlciB7XG4gICAgcHJpdmF0ZSB1bmRvU3RhY2sgPSBzaWduYWw8Q29tbWFuZFtdPihbXSk7XG4gICAgcHJpdmF0ZSBjdXJyZW50SW5kZXggPSBzaWduYWw8bnVtYmVyPigtMSk7XG4gICAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGVkTm9kZSA9IHNpZ25hbDxBWFBXaWRnZXROb2RlIHwgbnVsbD4obnVsbCk7XG5cbiAgICBwdWJsaWMgY2FuVW5kbyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY3VycmVudEluZGV4KCkgPj0gMClcbiAgICBwdWJsaWMgY2FuUmVkbyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY3VycmVudEluZGV4KCkgPCB0aGlzLnVuZG9TdGFjaygpLmxlbmd0aCAtIDEpXG5cbiAgICBleGVjdXRlQ29tbWFuZChjb21tYW5kOiBDb21tYW5kKSB7XG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSBjdXJyZW50SW5kZXggaXMgbm90IGF0IHRoZSBlbmQgb2YgdGhlIHVuZG9TdGFja1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50SW5kZXgoKSAhPT0gdGhpcy51bmRvU3RhY2soKS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAvLyBSZW1vdmUgYWxsIGNvbW1hbmRzIGJleW9uZCB0aGUgY3VycmVudCBpbmRleCB0byBkaXNjYXJkIHRoZSBcImZ1dHVyZVwiIGNvbW1hbmRzXG4gICAgICAgICAgICBjb25zdCBuZXdVbmRvU3RhY2sgPSB0aGlzLnVuZG9TdGFjaygpLnNsaWNlKDAsIHRoaXMuY3VycmVudEluZGV4KCkgKyAxKTtcbiAgICAgICAgICAgIHRoaXMudW5kb1N0YWNrLnNldChuZXdVbmRvU3RhY2spO1xuICAgICAgICB9XG5cbiAgICAgICAgY29tbWFuZC5leGVjdXRlKCk7XG4gICAgICAgIHRoaXMudW5kb1N0YWNrLnNldChbLi4udGhpcy51bmRvU3RhY2soKSwgY29tbWFuZF0pOyAvLyBBZGQgdGhlIG5ldyBjb21tYW5kIHRvIHRoZSBzdGFja1xuICAgICAgICB0aGlzLmN1cnJlbnRJbmRleC5zZXQodGhpcy51bmRvU3RhY2soKS5sZW5ndGggLSAxKTsgLy8gVXBkYXRlIGN1cnJlbnRJbmRleCB0byB0aGUgZW5kIG9mIHRoZSBzdGFja1xuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZS5zZXQoY29tbWFuZC5nZXRFeGVjdXRpb25TZWxlY3Rpb24oKSk7IC8vIFVwZGF0ZSB0aGUgc2VsZWN0ZWQgbm9kZVxuICAgIH1cblxuICAgIHVuZG8oKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRJbmRleCgpID49IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSB0aGlzLnVuZG9TdGFjaygpW3RoaXMuY3VycmVudEluZGV4KCldO1xuICAgICAgICAgICAgY29tbWFuZC51bmRvKCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRJbmRleC5zZXQodGhpcy5jdXJyZW50SW5kZXgoKSAtIDEpO1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudEluZGV4KCkgPj0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlLnNldCh0aGlzLnVuZG9TdGFjaygpW3RoaXMuY3VycmVudEluZGV4KCldLmdldFVuZG9TZWxlY3Rpb24oKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlLnNldChudWxsKTsgLy8gTm8gc2VsZWN0aW9uIGlmIGFsbCBjb21tYW5kcyBhcmUgdW5kb25lXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWRvKCkge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50SW5kZXgoKSA8IHRoaXMudW5kb1N0YWNrKCkubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50SW5kZXguc2V0KHRoaXMuY3VycmVudEluZGV4KCkgKyAxKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSB0aGlzLnVuZG9TdGFjaygpW3RoaXMuY3VycmVudEluZGV4KCldO1xuICAgICAgICAgICAgY29tbWFuZC5leGVjdXRlKCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZS5zZXQoY29tbWFuZC5nZXRFeGVjdXRpb25TZWxlY3Rpb24oKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnb1RvQ29tbWFuZChpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy51bmRvU3RhY2soKS5sZW5ndGggfHwgaW5kZXggPT09IHRoaXMuY3VycmVudEluZGV4KCkpIHtcbiAgICAgICAgICAgIHJldHVybjsgIC8vIE91dCBvZiBib3VuZHMgb3IgYWxyZWFkeSBhdCB0aGUgZGVzaXJlZCBpbmRleFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGluZGV4ID4gdGhpcy5jdXJyZW50SW5kZXgoKSkge1xuICAgICAgICAgICAgLy8gTmVlZCB0byByZWRvIHVudGlsIHJlYWNoaW5nIHRoZSBkZXNpcmVkIGluZGV4XG4gICAgICAgICAgICB3aGlsZSAodGhpcy5jdXJyZW50SW5kZXgoKSA8IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWRvKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBOZWVkIHRvIHVuZG8gdW50aWwgcmVhY2hpbmcgdGhlIGRlc2lyZWQgaW5kZXhcbiAgICAgICAgICAgIHdoaWxlICh0aGlzLmN1cnJlbnRJbmRleCgpID4gaW5kZXgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVuZG8oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9wdGlvbmFsbHkgdXBkYXRlIGFueSBVSSBjb21wb25lbnRzIG9yIHN0YXRlIGhlcmVcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUuc2V0KHRoaXMudW5kb1N0YWNrKClbdGhpcy5jdXJyZW50SW5kZXgoKV0uZ2V0RXhlY3V0aW9uU2VsZWN0aW9uKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBoaXN0b3J5ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy51bmRvU3RhY2soKS5tYXAoKGNtZCwgaW5kZXgpID0+IChcbiAgICAgICAge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246IGNtZC5kZXNjcmlwdGlvbigpLFxuICAgICAgICAgICAgaWNvbjogY21kLmljb24oKSxcbiAgICAgICAgICAgIGlzUGFzdDogdGhpcy5jdXJyZW50SW5kZXgoKSA+IGluZGV4LFxuICAgICAgICAgICAgaXNGdXR1cmU6IHRoaXMuY3VycmVudEluZGV4KCkgPCBpbmRleCxcbiAgICAgICAgICAgIGlzQ3VycmVudDogdGhpcy5jdXJyZW50SW5kZXgoKSA9PSBpbmRleFxuICAgICAgICB9XG4gICAgKSkpXG5cblxuICAgIHB1YmxpYyBjbGVhcigpIHtcbiAgICAgICAgdGhpcy51bmRvU3RhY2suc2V0KFtdKTtcbiAgICAgICAgdGhpcy5jdXJyZW50SW5kZXguc2V0KC0xKTtcbiAgICB9XG59Il19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class AXPDesignerConnectorAbstract {
|
|
4
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerConnectorAbstract, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerConnectorAbstract }); }
|
|
6
|
+
}
|
|
7
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerConnectorAbstract, decorators: [{
|
|
8
|
+
type: Injectable
|
|
9
|
+
}] });
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXItY29ubmVjdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL2Rlc2lnbmVyL3NoYXJlZC9kZXNpZ25lci1jb25uZWN0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU8zQyxNQUFNLE9BQWdCLDRCQUE0Qjs4R0FBNUIsNEJBQTRCO2tIQUE1Qiw0QkFBNEI7OzJGQUE1Qiw0QkFBNEI7a0JBRGpELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBXaWRnZXREYXRhU291cmNlLCBBWFBXaWRnZXROb2RlIH0gZnJvbSBcIkBhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXJcIjtcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQVhQRGVzaWduZXJEYXRhU291cmNlTmFtZSB9IGZyb20gXCIuL2Rlc2lnbmVyLnR5cHNcIjtcblxuXG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUERlc2lnbmVyQ29ubmVjdG9yQWJzdHJhY3Q8VCA9IHN0cmluZz4ge1xuXG4gICAgcHVibGljIGFic3RyYWN0IHNhdmUoKTogUHJvbWlzZTxhbnk+O1xuXG4gICAgcHVibGljIGFic3RyYWN0IGxvYWQoaWQ6IFQpOiBQcm9taXNlPEFYUFdpZGdldE5vZGU+O1xuXG4gICAgcHVibGljIGFic3RyYWN0IGdldERhdGFTb3VyY2VzTmFtZXMoKTogUHJvbWlzZTxBWFBEZXNpZ25lckRhdGFTb3VyY2VOYW1lW10+O1xuXG4gICAgcHVibGljIGFic3RyYWN0IGdldERhdGFTb3VyY2UobmFtZTogc3RyaW5nKTogUHJvbWlzZTxBWFBXaWRnZXREYXRhU291cmNlIHwgdW5kZWZpbmVkPjtcblxufSJdfQ==
|