@acorex/platform 18.0.10 → 18.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/auth/lib/session.service.d.ts +2 -2
- package/core/index.d.ts +2 -0
- package/core/lib/types.d.ts +1 -0
- package/core/utils/countdown-timer.d.ts +14 -0
- package/core/utils/html-utils.d.ts +9 -0
- package/esm2022/auth/lib/session.service.mjs +23 -38
- package/esm2022/common/lib/schema/widgets/common-widget-filter/number-widget-filter.component.mjs +2 -2
- package/esm2022/common/lib/schema/widgets/number/number-widget-edit.component.mjs +2 -2
- package/esm2022/core/index.mjs +3 -1
- package/esm2022/core/lib/types.mjs +13 -2
- package/esm2022/core/utils/countdown-timer.mjs +49 -0
- package/esm2022/core/utils/html-utils.mjs +27 -0
- package/esm2022/layout/builder/lib/builder/widget-column-renderer.mjs +3 -3
- package/esm2022/layout/builder/lib/builder/widget-container.component.mjs +12 -18
- package/esm2022/layout/builder/lib/builder/widget-registery.service.mjs +4 -1
- package/esm2022/layout/builder/lib/builder/widget-renderer.component.mjs +19 -12
- package/esm2022/layout/builder/lib/builder/widget.types.mjs +57 -58
- package/esm2022/layout/designer/index.mjs +7 -2
- package/esm2022/layout/designer/lib/board/board.component.mjs +127 -0
- package/esm2022/layout/designer/lib/breadcrumbs/breadcrumbs.component.mjs +64 -0
- package/esm2022/layout/designer/lib/buttons/add-widget-button/add-widget-button.component.mjs +37 -0
- package/esm2022/layout/designer/lib/designer/designer.component.mjs +54 -0
- package/esm2022/layout/designer/lib/designer.module.mjs +6 -26
- package/esm2022/layout/designer/lib/designer.service.mjs +356 -0
- package/esm2022/layout/designer/lib/header-menu/header-menu.component.mjs +24 -0
- package/esm2022/layout/designer/lib/history/history.component.mjs +21 -0
- package/esm2022/layout/designer/lib/history-manager.service.mjs +117 -0
- package/esm2022/layout/designer/lib/outline/outline.component.mjs +55 -0
- package/esm2022/layout/designer/lib/property-viewer/widget-property-viewer.component.mjs +103 -0
- package/esm2022/layout/designer/lib/widget-designer-renderer.component.mjs +243 -0
- package/esm2022/layout/designer/lib/widget-picker/widget-picker.component.mjs +23 -0
- package/esm2022/layout/entity/lib/widgets/lookup-widget/index.mjs +1 -2
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-column.component.mjs +3 -3
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.mjs +17 -16
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-filter.component.mjs +3 -3
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-print.component.mjs +3 -3
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-view.component.mjs +4 -4
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget.config.mjs +39 -4
- package/esm2022/layouts/lib/admin/entity-layout/entity-details-view/entity-details-view.component.mjs +3 -3
- package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/entity-list-view.component.mjs +3 -3
- package/esm2022/layouts/lib/admin/entity-layout/entity-modify-view/entity-modify-view.component.mjs +7 -6
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component.mjs +5 -4
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-modify-view/entity-master-modify-view.component.mjs +4 -4
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.mjs +4 -4
- package/esm2022/widgets/lib/properties/editors.props.mjs +390 -31
- package/esm2022/widgets/lib/properties/table-column.props.mjs +8 -7
- package/esm2022/widgets/lib/widgets/actions/button-widget/button-widget-view.component.mjs +27 -8
- package/esm2022/widgets/lib/widgets/actions/button-widget/button-widget.config.mjs +20 -4
- package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget-column.component.mjs +9 -3
- package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget-edit.component.mjs +10 -7
- package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget-view.component.mjs +20 -19
- package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget.config.mjs +21 -1
- package/esm2022/widgets/lib/widgets/editors/color-box-widget/color-box-widget-column.component.mjs +19 -0
- package/esm2022/widgets/lib/widgets/editors/color-box-widget/color-box-widget-edit.component.mjs +48 -0
- package/esm2022/widgets/lib/widgets/editors/color-box-widget/color-box-widget-filter.component.mjs +20 -0
- package/esm2022/widgets/lib/widgets/editors/color-box-widget/color-box-widget-print.component.mjs +19 -0
- package/esm2022/widgets/lib/widgets/editors/color-box-widget/color-box-widget-view.component.mjs +19 -0
- package/esm2022/widgets/lib/widgets/editors/color-box-widget/color-box-widget.config.mjs +34 -0
- package/esm2022/widgets/lib/widgets/editors/color-box-widget/index.mjs +7 -0
- package/esm2022/widgets/lib/widgets/editors/contact-widget/contact-widget-column.component.mjs +23 -6
- package/esm2022/widgets/lib/widgets/editors/contact-widget/contact-widget-edit.component.mjs +76 -46
- package/esm2022/widgets/lib/widgets/editors/contact-widget/contact-widget-filter.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/contact-widget/contact-widget-print.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/contact-widget/contact-widget-view.component.mjs +110 -8
- package/esm2022/widgets/lib/widgets/editors/contact-widget/contact-widget.config.mjs +58 -4
- package/esm2022/widgets/lib/widgets/editors/contact-widget/contact.type.mjs +2 -0
- package/esm2022/widgets/lib/widgets/editors/contact-widget/index.mjs +1 -2
- package/esm2022/widgets/lib/widgets/editors/contact-widget/popup-component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-column.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-edit.component.mjs +48 -37
- package/esm2022/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-filter.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-print.component.mjs +5 -5
- package/esm2022/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-view.component.mjs +22 -13
- package/esm2022/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget.config.mjs +16 -2
- package/esm2022/widgets/lib/widgets/editors/date-time-box-widget/index.mjs +1 -2
- package/esm2022/widgets/lib/widgets/editors/email-box-widget/email-box-widget-column.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/email-box-widget/email-box-widget-edit.component.mjs +147 -126
- package/esm2022/widgets/lib/widgets/editors/email-box-widget/email-box-widget-filter.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/email-box-widget/email-box-widget-print.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/email-box-widget/email-box-widget-view.component.mjs +30 -26
- package/esm2022/widgets/lib/widgets/editors/email-box-widget/email-box-widget.config.mjs +14 -2
- package/esm2022/widgets/lib/widgets/editors/email-box-widget/index.mjs +1 -2
- package/esm2022/widgets/lib/widgets/editors/file-box-widget/file-box-widget-column.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/file-box-widget/file-box-widget-edit.component.mjs +14 -10
- package/esm2022/widgets/lib/widgets/editors/file-box-widget/file-box-widget-filter.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/file-box-widget/file-box-widget-print.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/file-box-widget/file-box-widget-view.component.mjs +9 -7
- package/esm2022/widgets/lib/widgets/editors/file-box-widget/file-box-widget.config.mjs +28 -4
- package/esm2022/widgets/lib/widgets/editors/file-box-widget/file-box-widget.service.mjs +1 -1
- package/esm2022/widgets/lib/widgets/editors/file-box-widget/index.mjs +1 -2
- package/esm2022/widgets/lib/widgets/editors/gallery-widget/gallery-widget-column.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/gallery-widget/gallery-widget-edit.component.mjs +4 -3
- package/esm2022/widgets/lib/widgets/editors/gallery-widget/gallery-widget-filter.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/gallery-widget/gallery-widget-print.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/gallery-widget/gallery-widget-view.component.mjs +4 -3
- package/esm2022/widgets/lib/widgets/editors/gallery-widget/gallery-widget.config.mjs +4 -2
- package/esm2022/widgets/lib/widgets/editors/gallery-widget/index.mjs +1 -2
- package/esm2022/widgets/lib/widgets/editors/large-text-widget/index.mjs +1 -2
- package/esm2022/widgets/lib/widgets/editors/large-text-widget/large-text-widget-column.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/large-text-widget/large-text-widget-edit.component.mjs +22 -17
- package/esm2022/widgets/lib/widgets/editors/large-text-widget/large-text-widget-filter.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/large-text-widget/large-text-widget-print.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/large-text-widget/large-text-widget-view.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/large-text-widget/large-text-widget.config.mjs +13 -9
- package/esm2022/widgets/lib/widgets/editors/link-widget/index.mjs +1 -2
- package/esm2022/widgets/lib/widgets/editors/link-widget/link-widget-column.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/link-widget/link-widget-edit.component.mjs +35 -34
- package/esm2022/widgets/lib/widgets/editors/link-widget/link-widget-filter.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/link-widget/link-widget-print.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/link-widget/link-widget-view.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/link-widget/link-widget.config.mjs +4 -2
- package/esm2022/widgets/lib/widgets/editors/map-box-widget/index.mjs +1 -2
- package/esm2022/widgets/lib/widgets/editors/map-box-widget/map-box-widget-column.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/map-box-widget/map-box-widget-edit.component.mjs +9 -5
- package/esm2022/widgets/lib/widgets/editors/map-box-widget/map-box-widget-filter.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/map-box-widget/map-box-widget-print.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/map-box-widget/map-box-widget-view.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/map-box-widget/map-box-widget.config.mjs +8 -4
- package/esm2022/widgets/lib/widgets/editors/number-box-widget/index.mjs +1 -2
- package/esm2022/widgets/lib/widgets/editors/number-box-widget/number-box-widget-column.component.mjs +5 -5
- package/esm2022/widgets/lib/widgets/editors/number-box-widget/number-box-widget-edit.component.mjs +68 -55
- package/esm2022/widgets/lib/widgets/editors/number-box-widget/number-box-widget-filter.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/number-box-widget/number-box-widget-print.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/number-box-widget/number-box-widget-view.component.mjs +20 -17
- package/esm2022/widgets/lib/widgets/editors/number-box-widget/number-box-widget.config.mjs +15 -9
- package/esm2022/widgets/lib/widgets/editors/password-box-widget/index.mjs +1 -2
- package/esm2022/widgets/lib/widgets/editors/password-box-widget/password-box-widget-column.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/password-box-widget/password-box-widget-edit.component.mjs +24 -11
- package/esm2022/widgets/lib/widgets/editors/password-box-widget/password-box-widget-filter.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/password-box-widget/password-box-widget-print.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/password-box-widget/password-box-widget-view.component.mjs +17 -14
- package/esm2022/widgets/lib/widgets/editors/password-box-widget/password-box-widget.config.mjs +15 -4
- package/esm2022/widgets/lib/widgets/editors/phone-box-widget/index.mjs +1 -2
- package/esm2022/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget-column.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget-edit.component.mjs +27 -26
- package/esm2022/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget-filter.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget-print.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget-view.component.mjs +11 -9
- package/esm2022/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget.config.mjs +9 -17
- package/esm2022/widgets/lib/widgets/editors/rich-text-widget/index.mjs +1 -2
- package/esm2022/widgets/lib/widgets/editors/rich-text-widget/rich-text-popup.component.mjs +38 -0
- package/esm2022/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-column.component.mjs +35 -12
- package/esm2022/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-edit.component.mjs +56 -52
- package/esm2022/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-filter.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-print.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-view.component.mjs +26 -20
- package/esm2022/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget.config.mjs +15 -2
- package/esm2022/widgets/lib/widgets/editors/select-box-widget/index.mjs +1 -2
- package/esm2022/widgets/lib/widgets/editors/select-box-widget/select-box-widget-column.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/select-box-widget/select-box-widget-edit.component.mjs +38 -33
- package/esm2022/widgets/lib/widgets/editors/select-box-widget/select-box-widget-filter.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/select-box-widget/select-box-widget-print.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/select-box-widget/select-box-widget-view.component.mjs +10 -10
- package/esm2022/widgets/lib/widgets/editors/select-box-widget/select-box-widget.config.mjs +15 -4
- package/esm2022/widgets/lib/widgets/editors/selection-list-widget/index.mjs +1 -2
- package/esm2022/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-column.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-edit.component.mjs +37 -23
- package/esm2022/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-filter.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-print.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-view.component.mjs +11 -8
- package/esm2022/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget.config.mjs +4 -2
- package/esm2022/widgets/lib/widgets/editors/signature-pad-widget/index.mjs +1 -2
- package/esm2022/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-column.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-edit.component.mjs +17 -15
- package/esm2022/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-filter.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-print.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-view.component.mjs +6 -5
- package/esm2022/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget.config.mjs +12 -2
- package/esm2022/widgets/lib/widgets/editors/text-box-widget/index.mjs +1 -2
- package/esm2022/widgets/lib/widgets/editors/text-box-widget/text-box-widget-column.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/text-box-widget/text-box-widget-edit.component.mjs +21 -23
- package/esm2022/widgets/lib/widgets/editors/text-box-widget/text-box-widget-filter.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/text-box-widget/text-box-widget-print.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/text-box-widget/text-box-widget-view.component.mjs +18 -11
- package/esm2022/widgets/lib/widgets/editors/text-box-widget/text-box-widget.config.mjs +15 -13
- package/esm2022/widgets/lib/widgets/editors/toggle-widget/index.mjs +1 -2
- package/esm2022/widgets/lib/widgets/editors/toggle-widget/toggle-widget-column.component.mjs +9 -3
- package/esm2022/widgets/lib/widgets/editors/toggle-widget/toggle-widget-edit.component.mjs +11 -6
- package/esm2022/widgets/lib/widgets/editors/toggle-widget/toggle-widget-filter.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/toggle-widget/toggle-widget-print.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/toggle-widget/toggle-widget-view.component.mjs +22 -16
- package/esm2022/widgets/lib/widgets/editors/toggle-widget/toggle-widget.config.mjs +17 -4
- package/esm2022/widgets/lib/widgets/index.mjs +2 -1
- package/esm2022/widgets/lib/widgets/layout/block-widget/block-widget-designer.component.mjs +65 -0
- package/esm2022/widgets/lib/widgets/layout/block-widget/block-widget-view.component.mjs +48 -0
- package/esm2022/widgets/lib/widgets/layout/block-widget/block-widget.config.mjs +21 -3
- package/esm2022/widgets/lib/widgets/layout/block-widget/index.mjs +3 -2
- package/esm2022/widgets/lib/widgets/layout/page-widget/index.mjs +3 -0
- package/esm2022/widgets/lib/widgets/layout/page-widget/page-widget-designer.component.mjs +65 -0
- package/esm2022/widgets/lib/widgets/layout/page-widget/page-widget-view.component.mjs +42 -0
- package/esm2022/widgets/lib/widgets/layout/page-widget/page-widget.config.mjs +28 -0
- package/esm2022/widgets/lib/widgets/layout/repeater-widget/index.mjs +1 -3
- package/esm2022/widgets/lib/widgets/layout/repeater-widget/repeater-widget-designer.component.mjs +39 -8
- package/esm2022/widgets/lib/widgets/layout/repeater-widget/repeater-widget-edit.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/layout/repeater-widget/repeater-widget-print.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/layout/repeater-widget/repeater-widget-view.component.mjs +6 -6
- package/esm2022/widgets/lib/widgets/layout/repeater-widget/repeater-widget.config.mjs +5 -8
- package/esm2022/widgets/lib/widgets/layout/text-block-widget/index.mjs +3 -0
- package/esm2022/widgets/lib/widgets/layout/text-block-widget/text-block-widget-view.component.mjs +29 -0
- package/esm2022/widgets/lib/widgets/layout/text-block-widget/text-block-widget.config.mjs +39 -0
- package/esm2022/widgets/lib/widgets.module.mjs +18 -6
- package/fesm2022/acorex-platform-auth.mjs +22 -37
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/{acorex-platform-common-number-widget-edit.component-bTHacO49.mjs → acorex-platform-common-number-widget-edit.component-XSWI6466.mjs} +2 -2
- package/fesm2022/{acorex-platform-common-number-widget-edit.component-bTHacO49.mjs.map → acorex-platform-common-number-widget-edit.component-XSWI6466.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-number-widget-filter.component-CFqNphMw.mjs → acorex-platform-common-number-widget-filter.component-BOT9wPJ5.mjs} +2 -2
- package/fesm2022/{acorex-platform-common-number-widget-filter.component-CFqNphMw.mjs.map → acorex-platform-common-number-widget-filter.component-BOT9wPJ5.mjs.map} +1 -1
- package/fesm2022/acorex-platform-common.mjs +2 -2
- package/fesm2022/acorex-platform-core.mjs +90 -0
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +89 -86
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer-widget-picker.component-DkZGbnkz.mjs +26 -0
- package/fesm2022/acorex-platform-layout-designer-widget-picker.component-DkZGbnkz.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-designer.mjs +1081 -59
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +59 -43
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layouts-entity-modify-view.component-CjofXJku.mjs → acorex-platform-layouts-entity-modify-view.component-C9L8cyBm.mjs} +7 -5
- package/fesm2022/acorex-platform-layouts-entity-modify-view.component-C9L8cyBm.mjs.map +1 -0
- package/fesm2022/acorex-platform-layouts.mjs +6 -6
- package/fesm2022/acorex-platform-layouts.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-D1vzPrng.mjs → acorex-platform-themes-default-entity-master-create-view.component-Cv0mt0pU.mjs} +5 -4
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cv0mt0pU.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-DCE6c3Is.mjs → acorex-platform-themes-default-entity-master-modify-view.component-BDk03AnX.mjs} +4 -4
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BDk03AnX.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +7 -7
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/{acorex-platform-widgets-checkbox-widget-column.component-CJUV6lFi.mjs → acorex-platform-widgets-checkbox-widget-column.component-BzNhzB9y.mjs} +9 -3
- package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-BzNhzB9y.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-checkbox-widget-view.component-T-tXqoMd.mjs → acorex-platform-widgets-checkbox-widget-view.component-BCsej7C6.mjs} +20 -19
- package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-BCsej7C6.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets-page-widget-designer.component-DlfG4EP1.mjs +68 -0
- package/fesm2022/acorex-platform-widgets-page-widget-designer.component-DlfG4EP1.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets-rich-text-popup.component-RCdFIz45.mjs +41 -0
- package/fesm2022/acorex-platform-widgets-rich-text-popup.component-RCdFIz45.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets.mjs +2397 -1474
- package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
- package/layout/builder/lib/builder/widget-container.component.d.ts +5 -5
- package/layout/builder/lib/builder/widget-registery.service.d.ts +1 -0
- package/layout/builder/lib/builder/widget-renderer.component.d.ts +6 -3
- package/layout/builder/lib/builder/widget.types.d.ts +54 -33
- package/layout/designer/index.d.ts +6 -1
- package/layout/designer/lib/board/board.component.d.ts +16 -0
- package/layout/designer/lib/breadcrumbs/breadcrumbs.component.d.ts +11 -0
- package/layout/designer/lib/buttons/add-widget-button/add-widget-button.component.d.ts +9 -0
- package/layout/designer/lib/designer/designer.component.d.ts +9 -0
- package/layout/designer/lib/designer.module.d.ts +1 -7
- package/layout/designer/lib/designer.service.d.ts +107 -0
- package/layout/designer/lib/header-menu/header-menu.component.d.ts +7 -0
- package/layout/designer/lib/history/history.component.d.ts +7 -0
- package/layout/designer/lib/history-manager.service.d.ts +31 -0
- package/layout/designer/lib/outline/outline.component.d.ts +17 -0
- package/layout/designer/lib/{components → property-viewer}/widget-property-viewer.component.d.ts +12 -12
- package/layout/designer/lib/widget-designer-renderer.component.d.ts +38 -0
- package/layout/designer/lib/widget-picker/widget-picker.component.d.ts +9 -0
- package/layout/entity/lib/widgets/lookup-widget/index.d.ts +0 -1
- package/layout/entity/lib/widgets/lookup-widget/lookup-widget-column.component.d.ts +2 -2
- package/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.d.ts +9 -9
- package/layout/entity/lib/widgets/lookup-widget/lookup-widget-filter.component.d.ts +2 -2
- package/layout/entity/lib/widgets/lookup-widget/lookup-widget-print.component.d.ts +2 -2
- package/layout/entity/lib/widgets/lookup-widget/lookup-widget-view.component.d.ts +5 -5
- package/package.json +7 -7
- package/widgets/lib/properties/editors.props.d.ts +22 -1
- package/widgets/lib/widgets/actions/button-widget/button-widget-view.component.d.ts +8 -3
- package/widgets/lib/widgets/editors/checkbox/checkbox-widget-column.component.d.ts +4 -4
- package/widgets/lib/widgets/editors/checkbox/checkbox-widget-edit.component.d.ts +6 -4
- package/widgets/lib/widgets/editors/checkbox/checkbox-widget-view.component.d.ts +5 -5
- package/widgets/lib/widgets/editors/color-box-widget/color-box-widget-column.component.d.ts +6 -0
- package/widgets/lib/widgets/editors/color-box-widget/color-box-widget-edit.component.d.ts +10 -0
- package/widgets/lib/widgets/editors/color-box-widget/color-box-widget-filter.component.d.ts +6 -0
- package/widgets/lib/widgets/editors/color-box-widget/color-box-widget-print.component.d.ts +6 -0
- package/widgets/lib/widgets/editors/color-box-widget/color-box-widget-view.component.d.ts +6 -0
- package/widgets/lib/widgets/editors/color-box-widget/color-box-widget.config.d.ts +2 -0
- package/widgets/lib/widgets/editors/color-box-widget/index.d.ts +6 -0
- package/widgets/lib/widgets/editors/contact-widget/contact-widget-column.component.d.ts +4 -2
- package/widgets/lib/widgets/editors/contact-widget/contact-widget-edit.component.d.ts +11 -15
- package/widgets/lib/widgets/editors/contact-widget/contact-widget-filter.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/contact-widget/contact-widget-print.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/contact-widget/contact-widget-view.component.d.ts +15 -2
- package/widgets/lib/widgets/editors/contact-widget/contact.type.d.ts +5 -0
- package/widgets/lib/widgets/editors/contact-widget/index.d.ts +0 -1
- package/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-column.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-edit.component.d.ts +7 -7
- package/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-filter.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-print.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-view.component.d.ts +4 -4
- package/widgets/lib/widgets/editors/date-time-box-widget/index.d.ts +0 -1
- package/widgets/lib/widgets/editors/email-box-widget/email-box-widget-column.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/email-box-widget/email-box-widget-edit.component.d.ts +8 -7
- package/widgets/lib/widgets/editors/email-box-widget/email-box-widget-filter.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/email-box-widget/email-box-widget-print.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/email-box-widget/email-box-widget-view.component.d.ts +4 -4
- package/widgets/lib/widgets/editors/email-box-widget/index.d.ts +0 -1
- package/widgets/lib/widgets/editors/file-box-widget/file-box-widget-column.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/file-box-widget/file-box-widget-edit.component.d.ts +6 -5
- package/widgets/lib/widgets/editors/file-box-widget/file-box-widget-filter.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/file-box-widget/file-box-widget-print.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/file-box-widget/file-box-widget-view.component.d.ts +4 -4
- package/widgets/lib/widgets/editors/file-box-widget/file-box-widget.service.d.ts +1 -1
- package/widgets/lib/widgets/editors/file-box-widget/index.d.ts +0 -1
- package/widgets/lib/widgets/editors/gallery-widget/gallery-widget-column.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/gallery-widget/gallery-widget-edit.component.d.ts +3 -3
- package/widgets/lib/widgets/editors/gallery-widget/gallery-widget-filter.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/gallery-widget/gallery-widget-print.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/gallery-widget/gallery-widget-view.component.d.ts +3 -3
- package/widgets/lib/widgets/editors/gallery-widget/index.d.ts +0 -1
- package/widgets/lib/widgets/editors/large-text-widget/index.d.ts +0 -1
- package/widgets/lib/widgets/editors/large-text-widget/large-text-widget-column.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/large-text-widget/large-text-widget-edit.component.d.ts +7 -5
- package/widgets/lib/widgets/editors/large-text-widget/large-text-widget-filter.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/large-text-widget/large-text-widget-print.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/large-text-widget/large-text-widget-view.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/link-widget/index.d.ts +0 -1
- package/widgets/lib/widgets/editors/link-widget/link-widget-column.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/link-widget/link-widget-edit.component.d.ts +9 -9
- package/widgets/lib/widgets/editors/link-widget/link-widget-filter.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/link-widget/link-widget-print.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/link-widget/link-widget-view.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/map-box-widget/index.d.ts +0 -1
- package/widgets/lib/widgets/editors/map-box-widget/map-box-widget-column.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/map-box-widget/map-box-widget-edit.component.d.ts +5 -5
- package/widgets/lib/widgets/editors/map-box-widget/map-box-widget-filter.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/map-box-widget/map-box-widget-print.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/map-box-widget/map-box-widget-view.component.d.ts +6 -6
- package/widgets/lib/widgets/editors/number-box-widget/index.d.ts +0 -1
- package/widgets/lib/widgets/editors/number-box-widget/number-box-widget-column.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/number-box-widget/number-box-widget-edit.component.d.ts +8 -11
- package/widgets/lib/widgets/editors/number-box-widget/number-box-widget-filter.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/number-box-widget/number-box-widget-print.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/number-box-widget/number-box-widget-view.component.d.ts +5 -7
- package/widgets/lib/widgets/editors/password-box-widget/index.d.ts +0 -1
- package/widgets/lib/widgets/editors/password-box-widget/password-box-widget-column.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/password-box-widget/password-box-widget-edit.component.d.ts +4 -2
- package/widgets/lib/widgets/editors/password-box-widget/password-box-widget-filter.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/password-box-widget/password-box-widget-print.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/password-box-widget/password-box-widget-view.component.d.ts +6 -5
- package/widgets/lib/widgets/editors/phone-box-widget/index.d.ts +0 -1
- package/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget-column.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget-edit.component.d.ts +7 -8
- package/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget-filter.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget-print.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget-view.component.d.ts +4 -4
- package/widgets/lib/widgets/editors/rich-text-widget/index.d.ts +0 -1
- package/widgets/lib/widgets/editors/rich-text-widget/rich-text-popup.component.d.ts +9 -0
- package/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-column.component.d.ts +11 -3
- package/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-edit.component.d.ts +7 -29
- package/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-filter.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-print.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-view.component.d.ts +10 -6
- package/widgets/lib/widgets/editors/select-box-widget/index.d.ts +0 -1
- package/widgets/lib/widgets/editors/select-box-widget/select-box-widget-column.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/select-box-widget/select-box-widget-edit.component.d.ts +10 -7
- package/widgets/lib/widgets/editors/select-box-widget/select-box-widget-filter.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/select-box-widget/select-box-widget-print.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/select-box-widget/select-box-widget-view.component.d.ts +5 -5
- package/widgets/lib/widgets/editors/selection-list-widget/index.d.ts +0 -1
- package/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-column.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-edit.component.d.ts +10 -7
- package/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-filter.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-print.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-view.component.d.ts +5 -5
- package/widgets/lib/widgets/editors/signature-pad-widget/index.d.ts +0 -1
- package/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-column.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-edit.component.d.ts +4 -2
- package/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-filter.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-print.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-view.component.d.ts +3 -2
- package/widgets/lib/widgets/editors/text-box-widget/index.d.ts +0 -1
- package/widgets/lib/widgets/editors/text-box-widget/text-box-widget-column.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/text-box-widget/text-box-widget-edit.component.d.ts +7 -8
- package/widgets/lib/widgets/editors/text-box-widget/text-box-widget-filter.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/text-box-widget/text-box-widget-print.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/text-box-widget/text-box-widget-view.component.d.ts +3 -3
- package/widgets/lib/widgets/editors/toggle-widget/index.d.ts +0 -1
- package/widgets/lib/widgets/editors/toggle-widget/toggle-widget-column.component.d.ts +3 -3
- package/widgets/lib/widgets/editors/toggle-widget/toggle-widget-edit.component.d.ts +5 -2
- package/widgets/lib/widgets/editors/toggle-widget/toggle-widget-filter.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/toggle-widget/toggle-widget-print.component.d.ts +2 -2
- package/widgets/lib/widgets/editors/toggle-widget/toggle-widget-view.component.d.ts +5 -5
- package/widgets/lib/widgets/index.d.ts +1 -0
- package/widgets/lib/widgets/layout/block-widget/block-widget-designer.component.d.ts +11 -0
- package/widgets/lib/widgets/layout/block-widget/{block-widget.component.d.ts → block-widget-view.component.d.ts} +5 -3
- package/widgets/lib/widgets/layout/block-widget/index.d.ts +2 -1
- package/widgets/lib/widgets/layout/page-widget/index.d.ts +2 -0
- package/widgets/lib/widgets/layout/page-widget/page-widget-designer.component.d.ts +10 -0
- package/widgets/lib/widgets/layout/page-widget/page-widget-view.component.d.ts +8 -0
- package/widgets/lib/widgets/layout/page-widget/page-widget.config.d.ts +2 -0
- package/widgets/lib/widgets/layout/repeater-widget/index.d.ts +0 -2
- package/widgets/lib/widgets/layout/repeater-widget/repeater-widget-designer.component.d.ts +4 -2
- package/widgets/lib/widgets/layout/repeater-widget/repeater-widget-edit.component.d.ts +2 -2
- package/widgets/lib/widgets/layout/repeater-widget/repeater-widget-print.component.d.ts +2 -2
- package/widgets/lib/widgets/layout/repeater-widget/repeater-widget-view.component.d.ts +2 -2
- package/widgets/lib/widgets/layout/text-block-widget/index.d.ts +2 -0
- package/widgets/lib/widgets/layout/text-block-widget/text-block-widget-view.component.d.ts +10 -0
- package/widgets/lib/widgets/layout/text-block-widget/text-block-widget.config.d.ts +2 -0
- package/esm2022/layout/designer/lib/components/widget-property-viewer.component.mjs +0 -86
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-designer.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/contact-widget/contact-widget-designer.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-designer.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/email-box-widget/email-box-widget-designer.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/file-box-widget/file-box-widget-designer.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/gallery-widget/gallery-widget-designer.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/large-text-widget/large-text-widget-designer.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/link-widget/link-widget-designer.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/map-box-widget/map-box-widget-designer.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/number-box-widget/number-box-widget-designer.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/password-box-widget/password-box-widget-designer.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget-designer.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-designer.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/select-box-widget/select-box-widget-designer.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-designer.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-designer.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/text-box-widget/text-box-widget-designer.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/editors/toggle-widget/toggle-widget-designer.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/layout/block-widget/block-widget.component.mjs +0 -34
- package/esm2022/widgets/lib/widgets/layout/repeater-widget/repeater-widget-column.component.mjs +0 -19
- package/esm2022/widgets/lib/widgets/layout/repeater-widget/repeater-widget-filter.component.mjs +0 -20
- package/fesm2022/acorex-platform-layouts-entity-modify-view.component-CjofXJku.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-D1vzPrng.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-DCE6c3Is.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-CJUV6lFi.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-T-tXqoMd.mjs.map +0 -1
- package/layout/entity/lib/widgets/lookup-widget/lookup-widget-designer.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/contact-widget/contact-widget-designer.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-designer.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/email-box-widget/email-box-widget-designer.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/file-box-widget/file-box-widget-designer.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/gallery-widget/gallery-widget-designer.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/large-text-widget/large-text-widget-designer.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/link-widget/link-widget-designer.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/map-box-widget/map-box-widget-designer.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/number-box-widget/number-box-widget-designer.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/password-box-widget/password-box-widget-designer.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget-designer.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-designer.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/select-box-widget/select-box-widget-designer.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-designer.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-designer.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/text-box-widget/text-box-widget-designer.component.d.ts +0 -6
- package/widgets/lib/widgets/editors/toggle-widget/toggle-widget-designer.component.d.ts +0 -6
- package/widgets/lib/widgets/layout/repeater-widget/repeater-widget-column.component.d.ts +0 -6
- package/widgets/lib/widgets/layout/repeater-widget/repeater-widget-filter.component.d.ts +0 -6
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { Injectable, signal, computed } from '@angular/core';
|
|
2
|
+
import { cloneDeep } from 'lodash-es';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class AXPObjectHistoryManager {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.undoStack = signal([]); // Undo history as a signal
|
|
7
|
+
this.redoStack = signal([]); // Redo history as a signal
|
|
8
|
+
this._currentState = signal(null); // Current state as a signal
|
|
9
|
+
this.maxHistorySize = 50;
|
|
10
|
+
this.revertedIndex = null; // Track the index when reverting
|
|
11
|
+
this.currentState = this._currentState.asReadonly();
|
|
12
|
+
this.canUndo = computed(() => this.undoStack().length > 0);
|
|
13
|
+
this.canRedo = computed(() => this.redoStack().length > 0);
|
|
14
|
+
// Get the undo history for UI with disabled future states
|
|
15
|
+
this.history = computed(() => {
|
|
16
|
+
const undoHistory = this.undoStack();
|
|
17
|
+
return undoHistory.map((state, index) => ({
|
|
18
|
+
...state,
|
|
19
|
+
index,
|
|
20
|
+
disabled: this.revertedIndex !== null && index > this.revertedIndex
|
|
21
|
+
}));
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
// Save a new state and clear redo if necessary
|
|
25
|
+
saveState(newState, description) {
|
|
26
|
+
const newHistoryState = {
|
|
27
|
+
state: cloneDeep(newState),
|
|
28
|
+
date: new Date(),
|
|
29
|
+
description: description,
|
|
30
|
+
};
|
|
31
|
+
// Limit undo history size
|
|
32
|
+
if (this.undoStack().length >= this.maxHistorySize) {
|
|
33
|
+
this.undoStack.set(this.undoStack().slice(1)); // Remove oldest state
|
|
34
|
+
}
|
|
35
|
+
// Add the current state to the undo stack
|
|
36
|
+
//if (this._currentState()) {
|
|
37
|
+
this.undoStack.set([...this.undoStack(), this._currentState()]);
|
|
38
|
+
//}
|
|
39
|
+
// Set the new state as the current state
|
|
40
|
+
this._currentState.set(newHistoryState);
|
|
41
|
+
// Clear the redo stack if a new state is saved after undoing
|
|
42
|
+
if (this.revertedIndex !== null) {
|
|
43
|
+
this.redoStack.set([]);
|
|
44
|
+
this.revertedIndex = null; // Reset reverted index
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// Update the current state's last entry in the undo stack
|
|
48
|
+
updateState(newState) {
|
|
49
|
+
const lastStateIndex = this.undoStack().length - 1;
|
|
50
|
+
// Check if there is a valid state to update
|
|
51
|
+
if (lastStateIndex >= 0) {
|
|
52
|
+
const lastState = this.undoStack()[lastStateIndex];
|
|
53
|
+
// Update the state in the last history entry
|
|
54
|
+
const updatedState = {
|
|
55
|
+
...lastState,
|
|
56
|
+
state: cloneDeep(newState),
|
|
57
|
+
date: new Date() // Update the date to reflect the change
|
|
58
|
+
};
|
|
59
|
+
// Update the undo stack with the modified state
|
|
60
|
+
const updatedUndoStack = [...this.undoStack()];
|
|
61
|
+
updatedUndoStack[lastStateIndex] = updatedState;
|
|
62
|
+
this.undoStack.set(updatedUndoStack);
|
|
63
|
+
// Also update the currentState to reflect the latest change
|
|
64
|
+
this._currentState.set(updatedState);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// Undo the last action and update the current state
|
|
68
|
+
undo() {
|
|
69
|
+
if (this.undoStack().length > 0) {
|
|
70
|
+
const previousState = this.undoStack().pop(); // Get the last state
|
|
71
|
+
this.redoStack.set([...this.redoStack(), this._currentState()]); // Save current state to redo stack
|
|
72
|
+
this._currentState.set(previousState); // Revert to the previous state
|
|
73
|
+
this.revertedIndex = this.undoStack().length - 1; // Update reverted index
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// Redo the last undone action and update the current state
|
|
77
|
+
redo() {
|
|
78
|
+
if (this.redoStack().length > 0) {
|
|
79
|
+
const nextState = this.redoStack().pop(); // Get the next state
|
|
80
|
+
this.undoStack.set([...this.undoStack(), this._currentState()]); // Save current state to undo stack
|
|
81
|
+
this._currentState.set(nextState); // Apply the redo state
|
|
82
|
+
this.revertedIndex = this.undoStack().length - 1; // Update reverted index
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// Revert to a specific state by index in the undo stack
|
|
86
|
+
revert(index) {
|
|
87
|
+
if (index < 0 || index >= this.undoStack().length) {
|
|
88
|
+
return; // Invalid index, do nothing
|
|
89
|
+
}
|
|
90
|
+
const targetState = this.undoStack()[index];
|
|
91
|
+
const currentStateSnapshot = this._currentState(); // Save the current state for redo
|
|
92
|
+
// Move states after the reverted index to the redo stack
|
|
93
|
+
const statesToRedo = this.undoStack().slice(index + 1);
|
|
94
|
+
this.redoStack.set([currentStateSnapshot, ...statesToRedo]);
|
|
95
|
+
// Update the undo stack to the reverted point
|
|
96
|
+
this.undoStack.set(this.undoStack().slice(0, index + 1));
|
|
97
|
+
// Set the reverted state as the current state
|
|
98
|
+
this._currentState.set(targetState);
|
|
99
|
+
this.revertedIndex = index; // Track the reverted index
|
|
100
|
+
}
|
|
101
|
+
// Clear all history
|
|
102
|
+
clear() {
|
|
103
|
+
this.undoStack.set([]);
|
|
104
|
+
this.redoStack.set([]);
|
|
105
|
+
this.revertedIndex = null;
|
|
106
|
+
this._currentState.set(null);
|
|
107
|
+
}
|
|
108
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPObjectHistoryManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
109
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPObjectHistoryManager, providedIn: 'root' }); }
|
|
110
|
+
}
|
|
111
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPObjectHistoryManager, decorators: [{
|
|
112
|
+
type: Injectable,
|
|
113
|
+
args: [{
|
|
114
|
+
providedIn: 'root',
|
|
115
|
+
}]
|
|
116
|
+
}] });
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yeS1tYW5hZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL2hpc3RvcnktbWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQVd0QyxNQUFNLE9BQU8sdUJBQXVCO0lBSHBDO1FBSXFCLGNBQVMsR0FBRyxNQUFNLENBQXVCLEVBQUUsQ0FBQyxDQUFDLENBQUUsMkJBQTJCO1FBQzFFLGNBQVMsR0FBRyxNQUFNLENBQXVCLEVBQUUsQ0FBQyxDQUFDLENBQUUsMkJBQTJCO1FBQzFFLGtCQUFhLEdBQUcsTUFBTSxDQUE0QixJQUFJLENBQUMsQ0FBQyxDQUFFLDRCQUE0QjtRQUMvRixtQkFBYyxHQUFXLEVBQUUsQ0FBQztRQUM1QixrQkFBYSxHQUFrQixJQUFJLENBQUMsQ0FBRSxpQ0FBaUM7UUFFL0QsaUJBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRXhELFlBQU8sR0FBRyxRQUFRLENBQVUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvRCxZQUFPLEdBQUcsUUFBUSxDQUFVLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFnR3RFLDBEQUEwRDtRQUNuRCxZQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMzQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDckMsT0FBTyxXQUFXLENBQUMs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UUFFdEYseURBQXlEO1FBQ3pELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsb0JBQXFCLEVBQUUsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBRTdELDhDQUE4QztRQUM5QyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV6RCw4Q0FBOEM7UUFDOUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsQ0FBRSwyQkFBMkI7SUFDNUQsQ0FBQztJQWNELG9CQUFvQjtJQUNiLEtBQUs7UUFDUixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDOzhHQTVIUSx1QkFBdUI7a0hBQXZCLHVCQUF1QixjQUZwQixNQUFNOzsyRkFFVCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuZXhwb3J0IGludGVyZmFjZSBBWFBIaXN0b3J5U3RhdGU8VD4ge1xuICAgIHN0YXRlOiBUO1xuICAgIGRhdGU6IERhdGU7XG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQVhQT2JqZWN0SGlzdG9yeU1hbmFnZXI8VD4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdW5kb1N0YWNrID0gc2lnbmFsPEFYUEhpc3RvcnlTdGF0ZTxUPltdPihbXSk7ICAvLyBVbmRvIGhpc3RvcnkgYXMgYSBzaWduYWxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlZG9TdGFjayA9IHNpZ25hbDxBWFBIaXN0b3J5U3RhdGU8VD5bXT4oW10pOyAgLy8gUmVkbyBoaXN0b3J5IGFzIGEgc2lnbmFsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY3VycmVudFN0YXRlID0gc2lnbmFsPEFYUEhpc3RvcnlTdGF0ZTxUPiB8IG51bGw+KG51bGwpOyAgLy8gQ3VycmVudCBzdGF0ZSBhcyBhIHNpZ25hbFxuICAgIHByaXZhdGUgbWF4SGlzdG9yeVNpemU6IG51bWJlciA9IDUwO1xuICAgIHByaXZhdGUgcmV2ZXJ0ZWRJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7ICAvLyBUcmFjayB0aGUgaW5kZXggd2hlbiByZXZlcnRpbmdcblxuICAgIHB1YmxpYyByZWFkb25seSBjdXJyZW50U3RhdGUgPSB0aGlzLl9jdXJyZW50U3RhdGUuYXNSZWFkb25seSgpO1xuXG4gICAgcHVibGljIGNhblVuZG8gPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB0aGlzLnVuZG9TdGFjaygpLmxlbmd0aCA+IDApO1xuICAgIHB1YmxpYyBjYW5SZWRvID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4gdGhpcy5yZWRvU3RhY2soKS5sZW5ndGggPiAwKTtcblxuICAgIC8vIFNhdmUgYSBuZXcgc3RhdGUgYW5kIGNsZWFyIHJlZG8gaWYgbmVjZXNzYXJ5XG4gICAgcHVibGljIHNhdmVTdGF0ZShuZXdTdGF0ZTogVCwgZGVzY3JpcHRpb246IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXdIaXN0b3J5U3RhdGU6IEFYUEhpc3RvcnlTdGF0ZTxUPiA9IHtcbiAgICAgICAgICAgIHN0YXRlOiBjbG9uZURlZXAobmV3U3RhdGUpLFxuICAgICAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbixcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBMaW1pdCB1bmRvIGhpc3Rvcnkgc2l6ZVxuICAgICAgICBpZiAodGhpcy51bmRvU3RhY2soKS5sZW5ndGggPj0gdGhpcy5tYXhIaXN0b3J5U2l6ZSkge1xuICAgICAgICAgICAgdGhpcy51bmRvU3RhY2suc2V0KHRoaXMudW5kb1N0YWNrKCkuc2xpY2UoMSkpOyAgLy8gUmVtb3ZlIG9sZGVzdCBzdGF0ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQWRkIHRoZSBjdXJyZW50IHN0YXRlIHRvIHRoZSB1bmRvIHN0YWNrXG4gICAgICAgIC8vaWYgKHRoaXMuX2N1cnJlbnRTdGF0ZSgpKSB7XG4gICAgICAgIHRoaXMudW5kb1N0YWNrLnNldChbLi4udGhpcy51bmRvU3RhY2soKSwgdGhpcy5fY3VycmVudFN0YXRlKCkhXSk7XG4gICAgICAgIC8vfVxuXG4gICAgICAgIC8vIFNldCB0aGUgbmV3IHN0YXRlIGFzIHRoZSBjdXJyZW50IHN0YXRlXG4gICAgICAgIHRoaXMuX2N1cnJlbnRTdGF0ZS5zZXQobmV3SGlzdG9yeVN0YXRlKTtcblxuICAgICAgICAvLyBDbGVhciB0aGUgcmVkbyBzdGFjayBpZiBhIG5ldyBzdGF0ZSBpcyBzYXZlZCBhZnRlciB1bmRvaW5nXG4gICAgICAgIGlmICh0aGlzLnJldmVydGVkSW5kZXggIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMucmVkb1N0YWNrLnNldChbXSk7XG4gICAgICAgICAgICB0aGlzLnJldmVydGVkSW5kZXggPSBudWxsOyAgLy8gUmVzZXQgcmV2ZXJ0ZWQgaW5kZXhcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgY3VycmVudCBzdGF0ZSdzIGxhc3QgZW50cnkgaW4gdGhlIHVuZG8gc3RhY2tcbiAgICBwdWJsaWMgdXBkYXRlU3RhdGUobmV3U3RhdGU6IFQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbGFzdFN0YXRlSW5kZXggPSB0aGlzLnVuZG9TdGFjaygpLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgaXMgYSB2YWxpZCBzdGF0ZSB0byB1cGRhdGVcbiAgICAgICAgaWYgKGxhc3RTdGF0ZUluZGV4ID49IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RTdGF0ZSA9IHRoaXMudW5kb1N0YWNrKClbbGFzdFN0YXRlSW5kZXhdO1xuXG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHN0YXRlIGluIHRoZSBsYXN0IGhpc3RvcnkgZW50cnlcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRTdGF0ZTogQVhQSGlzdG9yeVN0YXRlPFQ+ID0ge1xuICAgICAgICAgICAgICAgIC4uLmxhc3RTdGF0ZSxcbiAgICAgICAgICAgICAgICBzdGF0ZTogY2xvbmVEZWVwKG5ld1N0YXRlKSxcbiAgICAgICAgICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpICAvLyBVcGRhdGUgdGhlIGRhdGUgdG8gcmVmbGVjdCB0aGUgY2hhbmdlXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHVuZG8gc3RhY2sgd2l0aCB0aGUgbW9kaWZpZWQgc3RhdGVcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRVbmRvU3RhY2sgPSBbLi4udGhpcy51bmRvU3RhY2soKV07XG4gICAgICAgICAgICB1cGRhdGVkVW5kb1N0YWNrW2xhc3RTdGF0ZUluZGV4XSA9IHVwZGF0ZWRTdGF0ZTtcbiAgICAgICAgICAgIHRoaXMudW5kb1N0YWNrLnNldCh1cGRhdGVkVW5kb1N0YWNrKTtcblxuICAgICAgICAgICAgLy8gQWxzbyB1cGRhdGUgdGhlIGN1cnJlbnRTdGF0ZSB0byByZWZsZWN0IHRoZSBsYXRlc3QgY2hhbmdlXG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50U3RhdGUuc2V0KHVwZGF0ZWRTdGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVbmRvIHRoZSBsYXN0IGFjdGlvbiBhbmQgdXBkYXRlIHRoZSBjdXJyZW50IHN0YXRlXG4gICAgcHVibGljIHVuZG8oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnVuZG9TdGFjaygpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzU3RhdGUgPSB0aGlzLnVuZG9TdGFjaygpLnBvcCgpITsgIC8vIEdldCB0aGUgbGFzdCBzdGF0ZVxuICAgICAgICAgICAgdGhpcy5yZWRvU3RhY2suc2V0KFsuLi50aGlzLnJlZG9TdGFjaygpLCB0aGlzLl9jdXJyZW50U3RhdGUoKSFdKTsgIC8vIFNhdmUgY3VycmVudCBzdGF0ZSB0byByZWRvIHN0YWNrXG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50U3RhdGUuc2V0KHByZXZpb3VzU3RhdGUpOyAgLy8gUmV2ZXJ0IHRvIHRoZSBwcmV2aW91cyBzdGF0ZVxuICAgICAgICAgICAgdGhpcy5yZXZlcnRlZEluZGV4ID0gdGhpcy51bmRvU3RhY2soKS5sZW5ndGggLSAxOyAgLy8gVXBkYXRlIHJldmVydGVkIGluZGV4XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZWRvIHRoZSBsYXN0IHVuZG9uZSBhY3Rpb24gYW5kIHVwZGF0ZSB0aGUgY3VycmVudCBzdGF0ZVxuICAgIHB1YmxpYyByZWRvKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yZWRvU3RhY2soKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0U3RhdGUgPSB0aGlzLnJlZG9TdGFjaygpLnBvcCgpITsgIC8vIEdldCB0aGUgbmV4dCBzdGF0ZVxuICAgICAgICAgICAgdGhpcy51bmRvU3RhY2suc2V0KFsuLi50aGlzLnVuZG9TdGFjaygpLCB0aGlzLl9jdXJyZW50U3RhdGUoKSFdKTsgIC8vIFNhdmUgY3VycmVudCBzdGF0ZSB0byB1bmRvIHN0YWNrXG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50U3RhdGUuc2V0KG5leHRTdGF0ZSk7ICAvLyBBcHBseSB0aGUgcmVkbyBzdGF0ZVxuICAgICAgICAgICAgdGhpcy5yZXZlcnRlZEluZGV4ID0gdGhpcy51bmRvU3RhY2soKS5sZW5ndGggLSAxOyAgLy8gVXBkYXRlIHJldmVydGVkIGluZGV4XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXZlcnQgdG8gYSBzcGVjaWZpYyBzdGF0ZSBieSBpbmRleCBpbiB0aGUgdW5kbyBzdGFja1xuICAgIHB1YmxpYyByZXZlcnQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMudW5kb1N0YWNrKCkubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47ICAvLyBJbnZhbGlkIGluZGV4LCBkbyBub3RoaW5nXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0YXJnZXRTdGF0ZSA9IHRoaXMudW5kb1N0YWNrKClbaW5kZXhdO1xuICAgICAgICBjb25zdCBjdXJyZW50U3RhdGVTbmFwc2hvdCA9IHRoaXMuX2N1cnJlbnRTdGF0ZSgpOyAgLy8gU2F2ZSB0aGUgY3VycmVudCBzdGF0ZSBmb3IgcmVkb1xuXG4gICAgICAgIC8vIE1vdmUgc3RhdGVzIGFmdGVyIHRoZSByZXZlcnRlZCBpbmRleCB0byB0aGUgcmVkbyBzdGFja1xuICAgICAgICBjb25zdCBzdGF0ZXNUb1JlZG8gPSB0aGlzLnVuZG9TdGFjaygpLnNsaWNlKGluZGV4ICsgMSk7XG4gICAgICAgIHRoaXMucmVkb1N0YWNrLnNldChbY3VycmVudFN0YXRlU25hcHNob3QhLCAuLi5zdGF0ZXNUb1JlZG9dKTtcblxuICAgICAgICAvLyBVcGRhdGUgdGhlIHVuZG8gc3RhY2sgdG8gdGhlIHJldmVydGVkIHBvaW50XG4gICAgICAgIHRoaXMudW5kb1N0YWNrLnNldCh0aGlzLnVuZG9TdGFjaygpLnNsaWNlKDAsIGluZGV4ICsgMSkpO1xuXG4gICAgICAgIC8vIFNldCB0aGUgcmV2ZXJ0ZWQgc3RhdGUgYXMgdGhlIGN1cnJlbnQgc3RhdGVcbiAgICAgICAgdGhpcy5fY3VycmVudFN0YXRlLnNldCh0YXJnZXRTdGF0ZSk7XG4gICAgICAgIHRoaXMucmV2ZXJ0ZWRJbmRleCA9IGluZGV4OyAgLy8gVHJhY2sgdGhlIHJldmVydGVkIGluZGV4XG4gICAgfVxuXG4gICAgLy8gR2V0IHRoZSB1bmRvIGhpc3RvcnkgZm9yIFVJIHdpdGggZGlzYWJsZWQgZnV0dXJlIHN0YXRlc1xuICAgIHB1YmxpYyBoaXN0b3J5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCB1bmRvSGlzdG9yeSA9IHRoaXMudW5kb1N0YWNrKCk7XG4gICAgICAgIHJldHVybiB1bmRvSGlzdG9yeS5tYXAoKHN0YXRlLCBpbmRleCkgPT4gKHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5yZXZlcnRlZEluZGV4ICE9PSBudWxsICYmIGluZGV4ID4gdGhpcy5yZXZlcnRlZEluZGV4XG4gICAgICAgIH0pKTtcbiAgICB9KTtcblxuXG5cbiAgICAvLyBDbGVhciBhbGwgaGlzdG9yeVxuICAgIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51bmRvU3RhY2suc2V0KFtdKTtcbiAgICAgICAgdGhpcy5yZWRvU3RhY2suc2V0KFtdKTtcbiAgICAgICAgdGhpcy5yZXZlcnRlZEluZGV4ID0gbnVsbDtcbiAgICAgICAgdGhpcy5fY3VycmVudFN0YXRlLnNldChudWxsKTtcbiAgICB9XG59Il19
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { ChangeDetectionStrategy, Component, inject, signal, ViewEncapsulation } from '@angular/core';
|
|
4
|
+
import { AXPDesignerService } from '../designer.service';
|
|
5
|
+
import { get } from 'lodash-es';
|
|
6
|
+
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
7
|
+
import { merge } from 'rxjs';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/common";
|
|
10
|
+
import * as i2 from "@acorex/components/decorators";
|
|
11
|
+
export class AXPDesignerOutlineComponent {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.service = inject(AXPDesignerService);
|
|
14
|
+
this.collapsedStates = new Map();
|
|
15
|
+
this.root = signal(this.service.root());
|
|
16
|
+
merge(this.service.onRefresh, this.service.onUpdate)
|
|
17
|
+
.subscribe(() => {
|
|
18
|
+
this.root.update(c => ({ ...this.service.root() }));
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
toggleCollapse(node) {
|
|
22
|
+
// Toggle the current state or set to true if undefined
|
|
23
|
+
this.collapsedStates.set(node, !this.collapsedStates.get(node));
|
|
24
|
+
}
|
|
25
|
+
isCollapsed(node) {
|
|
26
|
+
// Return the collapsed state, default is false (expanded)
|
|
27
|
+
return !!this.collapsedStates.get(node);
|
|
28
|
+
}
|
|
29
|
+
getConfig(node) {
|
|
30
|
+
return get(node, "__meta__.config");
|
|
31
|
+
}
|
|
32
|
+
handleClick(e, node) {
|
|
33
|
+
e.stopPropagation();
|
|
34
|
+
this.service.select({ widget: node });
|
|
35
|
+
}
|
|
36
|
+
handleToggleClick(event, item) {
|
|
37
|
+
event.stopPropagation(); // Prevents the event from bubbling up to parent elements
|
|
38
|
+
this.toggleCollapse(item);
|
|
39
|
+
}
|
|
40
|
+
handleMouseOver(e, node) {
|
|
41
|
+
e.stopPropagation();
|
|
42
|
+
this.service.focus({ widget: node });
|
|
43
|
+
}
|
|
44
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerOutlineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
45
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPDesignerOutlineComponent, isStandalone: true, selector: "axp-designer-outline", ngImport: i0, template: "<div class=\"ax-flex ax-flex-col ax-border-e ax-w-72\">\n <div class=\"ax-flex ax-flex-row ax-w-full ax-justify-between ax-text-white ax-p-2 ax-border-b\">\n <div class=\"ax-flex ax-flex-row ax-gap-2 ax-items-center\">\n <span class=\"ax-font-semibold\">Outline</span>\n </div>\n <ax-close-button></ax-close-button>\n </div>\n <div class=\"ax-flex-1 ax-h-full ax-overflow-auto\">\n\n @if(root().children?.length)\n {\n <ul class=\"ax-text-white ax-text-sm ax-bg-gray-800 ax-p-2 ax-rounded-md ax-space-y-1\">\n @for( node of root().children;track $index)\n {\n <ng-container [ngTemplateOutlet]=\"sideMenu\" [ngTemplateOutletContext]=\"{ $implicit: node }\">\n </ng-container>\n }\n </ul>\n <ng-template #sideMenu let-item>\n <li class=\"ax-cursor-pointer ax-transition ax-duration-150 ax-ease-in-out ax-hover:bg-gray-700\"\n (click)=\"handleClick($event,item)\" (mouseover)=\"handleMouseOver($event,item)\">\n <div [class.ax-bg-blue-200]=\"item === service.selectedNode()\"\n [class.ax-text-blue-900]=\"item === service.selectedNode()\"\n class=\"ax-flex ax-flex-row ax-items-center ax-p-1 ax-px-2\">\n <span class=\"ax-w-5\">\n @if(item.children?.length)\n {\n <i class=\"fa-solid\" [class.fa-chevron-right]=\"isCollapsed(item)\"\n (click)=\"handleToggleClick($event, item)\" [class.fa-chevron-down]=\"!isCollapsed(item)\"></i>\n }\n </span>\n @let config= getConfig(item);\n <span class=\"ax-w-5\">\n @if(config.icon)\n {\n <i [ngClass]=\"config.icon\"></i>\n }\n </span>\n <span>{{config.title}} : {{item.name}}</span>\n </div>\n @if(item.children?.length && !isCollapsed(item)) {\n <ul class=\"ax-pl-5 ax-space-y-1\">\n <ng-container *ngFor=\"let child of item.children\" [ngTemplateOutlet]=\"sideMenu\"\n [ngTemplateOutletContext]=\"{ $implicit: child }\">\n </ng-container>\n </ul>\n }\n </li>\n </ng-template>\n }\n @else {\n <div class=\"ax-flex ax-justify-center ax-items-center ax-text-gray-300 ax-p-4\">No widgets found in the page\n </div>\n }\n </div>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorCloseButtonComponent, selector: "ax-close-button", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
46
|
+
}
|
|
47
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerOutlineComponent, decorators: [{
|
|
48
|
+
type: Component,
|
|
49
|
+
args: [{ selector: 'axp-designer-outline', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
50
|
+
CommonModule,
|
|
51
|
+
AXPLayoutBuilderModule,
|
|
52
|
+
AXDecoratorModule,
|
|
53
|
+
], template: "<div class=\"ax-flex ax-flex-col ax-border-e ax-w-72\">\n <div class=\"ax-flex ax-flex-row ax-w-full ax-justify-between ax-text-white ax-p-2 ax-border-b\">\n <div class=\"ax-flex ax-flex-row ax-gap-2 ax-items-center\">\n <span class=\"ax-font-semibold\">Outline</span>\n </div>\n <ax-close-button></ax-close-button>\n </div>\n <div class=\"ax-flex-1 ax-h-full ax-overflow-auto\">\n\n @if(root().children?.length)\n {\n <ul class=\"ax-text-white ax-text-sm ax-bg-gray-800 ax-p-2 ax-rounded-md ax-space-y-1\">\n @for( node of root().children;track $index)\n {\n <ng-container [ngTemplateOutlet]=\"sideMenu\" [ngTemplateOutletContext]=\"{ $implicit: node }\">\n </ng-container>\n }\n </ul>\n <ng-template #sideMenu let-item>\n <li class=\"ax-cursor-pointer ax-transition ax-duration-150 ax-ease-in-out ax-hover:bg-gray-700\"\n (click)=\"handleClick($event,item)\" (mouseover)=\"handleMouseOver($event,item)\">\n <div [class.ax-bg-blue-200]=\"item === service.selectedNode()\"\n [class.ax-text-blue-900]=\"item === service.selectedNode()\"\n class=\"ax-flex ax-flex-row ax-items-center ax-p-1 ax-px-2\">\n <span class=\"ax-w-5\">\n @if(item.children?.length)\n {\n <i class=\"fa-solid\" [class.fa-chevron-right]=\"isCollapsed(item)\"\n (click)=\"handleToggleClick($event, item)\" [class.fa-chevron-down]=\"!isCollapsed(item)\"></i>\n }\n </span>\n @let config= getConfig(item);\n <span class=\"ax-w-5\">\n @if(config.icon)\n {\n <i [ngClass]=\"config.icon\"></i>\n }\n </span>\n <span>{{config.title}} : {{item.name}}</span>\n </div>\n @if(item.children?.length && !isCollapsed(item)) {\n <ul class=\"ax-pl-5 ax-space-y-1\">\n <ng-container *ngFor=\"let child of item.children\" [ngTemplateOutlet]=\"sideMenu\"\n [ngTemplateOutletContext]=\"{ $implicit: child }\">\n </ng-container>\n </ul>\n }\n </li>\n </ng-template>\n }\n @else {\n <div class=\"ax-flex ax-justify-center ax-items-center ax-text-gray-300 ax-p-4\">No widgets found in the page\n </div>\n }\n </div>\n</div>" }]
|
|
54
|
+
}], ctorParameters: () => [] });
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0bGluZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL291dGxpbmUvb3V0bGluZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL291dGxpbmUvb3V0bGluZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQWtDLE1BQU0saUNBQWlDLENBQUM7QUFDekcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFlN0IsTUFBTSxPQUFPLDJCQUEyQjtJQVFwQztRQU5VLFlBQU8sR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUVyQyxvQkFBZSxHQUFzQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRS9DLFNBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBR3pDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQzthQUMvQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hELENBQUMsQ0FBQyxDQUFBO0lBQ1YsQ0FBQztJQUdPLGNBQWMsQ0FBQyxJQUFTO1FBQzVCLHVEQUF1RDtRQUN2RCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFUyxXQUFXLENBQUMsSUFBUztRQUMzQiwwREFBMEQ7UUFDMUQsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVTLFNBQVMsQ0FBQyxJQUFtQjtRQUNuQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLENBQTJCLENBQUM7SUFDbEUsQ0FBQztJQUVTLFdBQVcsQ0FBQyxDQUFhLEVBQUUsSUFBbUI7UUFDcEQsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVTLGlCQUFpQixDQUFDLEtBQWlCLEVBQUUsSUFBUztRQUNwRCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyx5REFBeUQ7UUFDbEYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRVMsZUFBZSxDQUFDLENBQWEsRUFBRSxJQUFtQjtRQUN4RCxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDOzhHQTNDUSwyQkFBMkI7a0dBQTNCLDJCQUEyQixnRkNyQnhDLDRvRkF1RE0sMkNEeENFLFlBQVksZ2FBQ1osc0JBQXNCLDhCQUN0QixpQkFBaUI7OzJGQUlaLDJCQUEyQjtrQkFidkMsU0FBUzsrQkFDSSxzQkFBc0IsaUJBRWpCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNMLFlBQVk7d0JBQ1osc0JBQXNCO3dCQUN0QixpQkFBaUI7cUJBQ3BCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSwgQVhQV2lkZ2V0Q29uZmlnLCBBWFBXaWRnZXROb2RlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBPbkluaXQsIHNpZ25hbCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUERlc2lnbmVyU2VydmljZSB9IGZyb20gJy4uL2Rlc2lnbmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdheHAtZGVzaWduZXItb3V0bGluZScsXG4gICAgdGVtcGxhdGVVcmw6ICdvdXRsaW5lLmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEFYUExheW91dEJ1aWxkZXJNb2R1bGUsXG4gICAgICAgIEFYRGVjb3JhdG9yTW9kdWxlLFxuICAgIF0sXG59KVxuXG5leHBvcnQgY2xhc3MgQVhQRGVzaWduZXJPdXRsaW5lQ29tcG9uZW50IHtcblxuICAgIHByb3RlY3RlZCBzZXJ2aWNlID0gaW5qZWN0KEFYUERlc2lnbmVyU2VydmljZSk7XG5cbiAgICBwcm90ZWN0ZWQgY29sbGFwc2VkU3RhdGVzOiBNYXA8YW55LCBib29sZWFuPiA9IG5ldyBNYXAoKTtcblxuICAgIHByb3RlY3RlZCByb290ID0gc2lnbmFsKHRoaXMuc2VydmljZS5yb290KCkpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIG1lcmdlKHRoaXMuc2VydmljZS5vblJlZnJlc2gsIHRoaXMuc2VydmljZS5vblVwZGF0ZSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucm9vdC51cGRhdGUoYyA9PiAoeyAuLi50aGlzLnNlcnZpY2Uucm9vdCgpIH0pKTtcbiAgICAgICAgICAgIH0pXG4gICAgfVxuXG5cbiAgICBwcml2YXRlIHRvZ2dsZUNvbGxhcHNlKG5vZGU6IGFueSkge1xuICAgICAgICAvLyBUb2dnbGUgdGhlIGN1cnJlbnQgc3RhdGUgb3Igc2V0IHRvIHRydWUgaWYgdW5kZWZpbmVkXG4gICAgICAgIHRoaXMuY29sbGFwc2VkU3RhdGVzLnNldChub2RlLCAhdGhpcy5jb2xsYXBzZWRTdGF0ZXMuZ2V0KG5vZGUpKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaXNDb2xsYXBzZWQobm9kZTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIC8vIFJldHVybiB0aGUgY29sbGFwc2VkIHN0YXRlLCBkZWZhdWx0IGlzIGZhbHNlIChleHBhbmRlZClcbiAgICAgICAgcmV0dXJuICEhdGhpcy5jb2xsYXBzZWRTdGF0ZXMuZ2V0KG5vZGUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRDb25maWcobm9kZTogQVhQV2lkZ2V0Tm9kZSk6IEFYUFdpZGdldENvbmZpZyB7XG4gICAgICAgIHJldHVybiBnZXQobm9kZSwgXCJfX21ldGFfXy5jb25maWdcIikgYXMgYW55IGFzIEFYUFdpZGdldENvbmZpZztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaGFuZGxlQ2xpY2soZTogTW91c2VFdmVudCwgbm9kZTogQVhQV2lkZ2V0Tm9kZSkge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnNlcnZpY2Uuc2VsZWN0KHsgd2lkZ2V0OiBub2RlIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBoYW5kbGVUb2dnbGVDbGljayhldmVudDogTW91c2VFdmVudCwgaXRlbTogYW55KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAvLyBQcmV2ZW50cyB0aGUgZXZlbnQgZnJvbSBidWJibGluZyB1cCB0byBwYXJlbnQgZWxlbWVudHNcbiAgICAgICAgdGhpcy50b2dnbGVDb2xsYXBzZShpdGVtKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaGFuZGxlTW91c2VPdmVyKGU6IE1vdXNlRXZlbnQsIG5vZGU6IEFYUFdpZGdldE5vZGUpIHtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmZvY3VzKHsgd2lkZ2V0OiBub2RlIH0pO1xuICAgIH1cbn0iLCI8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1ib3JkZXItZSBheC13LTcyXCI+XG4gICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1yb3cgYXgtdy1mdWxsIGF4LWp1c3RpZnktYmV0d2VlbiBheC10ZXh0LXdoaXRlIGF4LXAtMiBheC1ib3JkZXItYlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LXJvdyBheC1nYXAtMiBheC1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtZm9udC1zZW1pYm9sZFwiPk91dGxpbmU8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YXgtY2xvc2UtYnV0dG9uPjwvYXgtY2xvc2UtYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4LTEgYXgtaC1mdWxsIGF4LW92ZXJmbG93LWF1dG9cIj5cblxuICAgICAgICBAaWYocm9vdCgpLmNoaWxkcmVuPy5sZW5ndGgpXG4gICAgICAgIHtcbiAgICAgICAgPHVsIGNsYXNzPVwiYXgtdGV4dC13aGl0ZSBheC10ZXh0LXNtIGF4LWJnLWdyYXktODAwIGF4LXAtMiBheC1yb3VuZGVkLW1kIGF4LXNwYWNlLXktMVwiPlxuICAgICAgICAgICAgQGZvciggbm9kZSBvZiByb290KCkuY2hpbGRyZW47dHJhY2sgJGluZGV4KVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzaWRlTWVudVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSB9XCI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC91bD5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzaWRlTWVudSBsZXQtaXRlbT5cbiAgICAgICAgICAgIDxsaSBjbGFzcz1cImF4LWN1cnNvci1wb2ludGVyIGF4LXRyYW5zaXRpb24gYXgtZHVyYXRpb24tMTUwIGF4LWVhc2UtaW4tb3V0IGF4LWhvdmVyOmJnLWdyYXktNzAwXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2soJGV2ZW50LGl0ZW0pXCIgKG1vdXNlb3Zlcik9XCJoYW5kbGVNb3VzZU92ZXIoJGV2ZW50LGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MuYXgtYmctYmx1ZS0yMDBdPVwiaXRlbSA9PT0gc2VydmljZS5zZWxlY3RlZE5vZGUoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5heC10ZXh0LWJsdWUtOTAwXT1cIml0ZW0gPT09IHNlcnZpY2Uuc2VsZWN0ZWROb2RlKClcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1yb3cgYXgtaXRlbXMtY2VudGVyIGF4LXAtMSBheC1weC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtdy01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYoaXRlbS5jaGlsZHJlbj8ubGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZFwiIFtjbGFzcy5mYS1jaGV2cm9uLXJpZ2h0XT1cImlzQ29sbGFwc2VkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlVG9nZ2xlQ2xpY2soJGV2ZW50LCBpdGVtKVwiIFtjbGFzcy5mYS1jaGV2cm9uLWRvd25dPVwiIWlzQ29sbGFwc2VkKGl0ZW0pXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIEBsZXQgY29uZmlnPSBnZXRDb25maWcoaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtdy01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYoY29uZmlnLmljb24pXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJjb25maWcuaWNvblwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2NvbmZpZy50aXRsZX19IDoge3tpdGVtLm5hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICBAaWYoaXRlbS5jaGlsZHJlbj8ubGVuZ3RoICYmICFpc0NvbGxhcHNlZChpdGVtKSkge1xuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImF4LXBsLTUgYXgtc3BhY2UteS0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGl0ZW0uY2hpbGRyZW5cIiBbbmdUZW1wbGF0ZU91dGxldF09XCJzaWRlTWVudVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNoaWxkIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtanVzdGlmeS1jZW50ZXIgYXgtaXRlbXMtY2VudGVyIGF4LXRleHQtZ3JheS0zMDAgYXgtcC00XCI+Tm8gd2lkZ2V0cyBmb3VuZCBpbiB0aGUgcGFnZVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuPC9kaXY+Il19
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { AXCollapseModule } from '@acorex/components/collapse';
|
|
2
|
+
import { AXTabsModule } from '@acorex/components/tabs';
|
|
3
|
+
import { AXPLayoutBuilderModule, AXPWidgetRegistryService } from '@acorex/platform/layout/builder';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
import { ChangeDetectionStrategy, Component, computed, effect, EventEmitter, inject, input, Output, signal, untracked } from '@angular/core';
|
|
6
|
+
import { capitalize, cloneDeep, isArray, isEmpty, isNil, merge, set, sortBy, unionBy } from 'lodash-es';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@acorex/components/collapse";
|
|
9
|
+
import * as i2 from "@acorex/components/tabs";
|
|
10
|
+
import * as i3 from "@acorex/platform/layout/builder";
|
|
11
|
+
export class AXPWidgetPropertyViewerComponent {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.widget = input.required();
|
|
14
|
+
this.widgetRegistryService = inject(AXPWidgetRegistryService);
|
|
15
|
+
this.currentTabIndex = signal(0);
|
|
16
|
+
this.config = signal(null);
|
|
17
|
+
this.allPoperties = [];
|
|
18
|
+
this.tabs = signal([]);
|
|
19
|
+
this.groups = computed(() => {
|
|
20
|
+
return this.tabs().length ? this.tabs()[this.currentTabIndex()].groups : [];
|
|
21
|
+
});
|
|
22
|
+
this.onChanged = new EventEmitter();
|
|
23
|
+
this.context = signal({});
|
|
24
|
+
this.initialContext = {};
|
|
25
|
+
effect(() => {
|
|
26
|
+
if (!this.widget())
|
|
27
|
+
return;
|
|
28
|
+
const config = this.widgetRegistryService.resolve(this.widget()?.type);
|
|
29
|
+
if (config) {
|
|
30
|
+
this.initialContext = {};
|
|
31
|
+
this.config.set(config);
|
|
32
|
+
this.fillTabs();
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
console.error(`Invalid widget name: ${this.widget()}`);
|
|
36
|
+
}
|
|
37
|
+
}, { allowSignalWrites: true });
|
|
38
|
+
}
|
|
39
|
+
fillTabs() {
|
|
40
|
+
const tabs = [
|
|
41
|
+
{
|
|
42
|
+
name: 'general',
|
|
43
|
+
title: 'General',
|
|
44
|
+
groups: [],
|
|
45
|
+
},
|
|
46
|
+
];
|
|
47
|
+
Object.entries(this.config()?.components ?? {}).forEach((c) => {
|
|
48
|
+
if (c[1].component != null && c[1].properties?.length) {
|
|
49
|
+
tabs.push({ name: c[0], title: capitalize(c[0]), groups: [] });
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
///
|
|
53
|
+
this.allPoperties = [];
|
|
54
|
+
///
|
|
55
|
+
tabs.forEach((tab) => {
|
|
56
|
+
const props = tab.name == 'general'
|
|
57
|
+
? this.config()?.properties ?? []
|
|
58
|
+
: ((this.config()?.components)[tab.name]?.properties ?? []).filter((c) => c.visible);
|
|
59
|
+
//
|
|
60
|
+
this.allPoperties.push(...props);
|
|
61
|
+
tab.groups = unionBy(sortBy(props.map((pg) => ({
|
|
62
|
+
isCollapsed: false,
|
|
63
|
+
name: pg.group.name,
|
|
64
|
+
title: pg.group.title,
|
|
65
|
+
props: sortBy(props.filter((p) => p.group.name == pg.group.name), 'title'),
|
|
66
|
+
})), 'title'), 'name');
|
|
67
|
+
});
|
|
68
|
+
this.tabs.set(tabs.filter((c) => c.groups.length));
|
|
69
|
+
//
|
|
70
|
+
this.initialContext = this.allPoperties
|
|
71
|
+
.filter((c) => (!isArray(c.schema.defaultValue) && !isNil(c.schema.defaultValue)) || (isArray(c.schema.defaultValue) && !isEmpty(c.schema.defaultValue)))
|
|
72
|
+
.reduce((acc, c) => {
|
|
73
|
+
set(acc, c.schema.interface.path, c.schema.defaultValue); // Use lodash's set
|
|
74
|
+
return acc;
|
|
75
|
+
}, {});
|
|
76
|
+
//
|
|
77
|
+
untracked(() => {
|
|
78
|
+
this.context.set(merge(cloneDeep(this.initialContext), this.widget()));
|
|
79
|
+
this.onChanged.emit({ values: this.context(), mode: 'init' });
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
handleContextChange(e) {
|
|
83
|
+
untracked(() => {
|
|
84
|
+
this.context.set(e.data);
|
|
85
|
+
});
|
|
86
|
+
this.onChanged.emit({ values: this.context(), mode: 'update', });
|
|
87
|
+
}
|
|
88
|
+
handleTabChange(event) {
|
|
89
|
+
const indx = event.index;
|
|
90
|
+
if (this.currentTabIndex() != indx) {
|
|
91
|
+
this.currentTabIndex.set(indx);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPWidgetPropertyViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
95
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPWidgetPropertyViewerComponent, isStandalone: true, selector: "axp-widget-property-viewer", inputs: { widget: { classPropertyName: "widget", publicName: "widget", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onChanged: "onChanged" }, ngImport: i0, template: "<axp-widgets-container [context]=\"context()\" (onChanged)=\"handleContextChange($event)\">\n <div class=\"ax-flex ax-flex-col\">\n <div class=\"ax-pb-2\">\n <ax-tabs look=\"default\" (onActiveTabChanged)=\"handleTabChange($event)\" [look]=\"'with-line'\">\n @for( tab of tabs();track $index){\n <ax-tab-item [text]=\"tab.title\" [key]=\"$index.toString()\" [active]=\"currentTabIndex() === $index\">\n </ax-tab-item>\n }\n </ax-tabs>\n </div>\n <div class=\"ax-flex-1 ax-overflow-auto\">\n <ax-collapse-group class=\"ax-h-fit\" look=\"blank\">\n @for( group of groups();track $index){\n <ax-collapse [caption]=\"group.title\" look=\"solid\" [(isCollapsed)]=\"group.isCollapsed\">\n <div class=\"ax-flex ax-flex-col ax-divide-y\">\n @for( p of group.props;track $index){\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-py-2 first:ax-pt-0 last:ax-pb-0\">\n <span class=\"ax-font-semibold\">{{p.title}}</span>\n @if(p.schema.interface)\n {\n <axp-widget-renderer [node]=\"p.schema.interface\" [mode]=\"'edit'\">\n </axp-widget-renderer>\n }\n </div>\n }\n </div>\n </ax-collapse>\n }\n </ax-collapse-group>\n </div>\n </div>\n</axp-widgets-container>", styles: ["ax-collapse .ax-collapse-header{font-weight:600}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXCollapseModule }, { kind: "component", type: i1.AXCollapseComponent, selector: "ax-collapse", inputs: ["disabled", "look", "isCollapsed", "showHeader", "caption", "icon", "isLoading", "headerTemplate"], outputs: ["onClick", "isCollapsedChange"] }, { kind: "component", type: i1.AXCollapseGroupComponent, selector: "ax-collapse-group", inputs: ["look", "accordion", "activeIndex"], outputs: ["accordionChange", "activeIndexChange"] }, { kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i2.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i2.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: i3.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "variables", "functions"], outputs: ["onChanged", "contextChange"] }, { kind: "component", type: i3.AXPWidgetRendererComponent, selector: "axp-widget-renderer", inputs: ["node", "mode", "parentNode", "index"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
96
|
+
}
|
|
97
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPWidgetPropertyViewerComponent, decorators: [{
|
|
98
|
+
type: Component,
|
|
99
|
+
args: [{ selector: 'axp-widget-property-viewer', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, AXCollapseModule, AXTabsModule, AXPLayoutBuilderModule], template: "<axp-widgets-container [context]=\"context()\" (onChanged)=\"handleContextChange($event)\">\n <div class=\"ax-flex ax-flex-col\">\n <div class=\"ax-pb-2\">\n <ax-tabs look=\"default\" (onActiveTabChanged)=\"handleTabChange($event)\" [look]=\"'with-line'\">\n @for( tab of tabs();track $index){\n <ax-tab-item [text]=\"tab.title\" [key]=\"$index.toString()\" [active]=\"currentTabIndex() === $index\">\n </ax-tab-item>\n }\n </ax-tabs>\n </div>\n <div class=\"ax-flex-1 ax-overflow-auto\">\n <ax-collapse-group class=\"ax-h-fit\" look=\"blank\">\n @for( group of groups();track $index){\n <ax-collapse [caption]=\"group.title\" look=\"solid\" [(isCollapsed)]=\"group.isCollapsed\">\n <div class=\"ax-flex ax-flex-col ax-divide-y\">\n @for( p of group.props;track $index){\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-py-2 first:ax-pt-0 last:ax-pb-0\">\n <span class=\"ax-font-semibold\">{{p.title}}</span>\n @if(p.schema.interface)\n {\n <axp-widget-renderer [node]=\"p.schema.interface\" [mode]=\"'edit'\">\n </axp-widget-renderer>\n }\n </div>\n }\n </div>\n </ax-collapse>\n }\n </ax-collapse-group>\n </div>\n </div>\n</axp-widgets-container>", styles: ["ax-collapse .ax-collapse-header{font-weight:600}\n"] }]
|
|
100
|
+
}], ctorParameters: () => [], propDecorators: { onChanged: [{
|
|
101
|
+
type: Output
|
|
102
|
+
}] } });
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXByb3BlcnR5LXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL3Byb3BlcnR5LXZpZXdlci93aWRnZXQtcHJvcGVydHktdmlld2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2Rlc2lnbmVyL3NyYy9saWIvcHJvcGVydHktdmlld2VyL3dpZGdldC1wcm9wZXJ0eS12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBMEIsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsc0JBQXNCLEVBQTRFLHdCQUF3QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0ssT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFTLEtBQUssRUFBUyxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDM0ssT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQU8sT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7OztBQTJCN0csTUFBTSxPQUFPLGdDQUFnQztJQXlCM0M7UUF4QkEsV0FBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWlCLENBQUM7UUFFakMsMEJBQXFCLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixD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QUNuQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQzs4R0FoSFUsZ0NBQWdDO2tHQUFoQyxnQ0FBZ0MsaVFDakM3Qyx1bURBK0J3QiwyR0RBWixZQUFZLDhCQUFFLGdCQUFnQiw4YkFBRSxZQUFZLGthQUFFLHNCQUFzQjs7MkZBRW5FLGdDQUFnQztrQkFSNUMsU0FBUzsrQkFDRSw0QkFBNEIsbUJBR3JCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxzQkFBc0IsQ0FBQzt3REFvQi9FLFNBQVM7c0JBRFIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29sbGFwc2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29sbGFwc2UnO1xuaW1wb3J0IHsgQVhUYWJzTW9kdWxlLCBBWFRhYlN0cmlwQ2hhbmdlZEV2ZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RhYnMnO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSwgQVhQTGF5b3V0Q29udGV4dEV2ZW50LCBBWFBXaWRnZXRDb25maWcsIEFYUFdpZGdldE5vZGUsIEFYUFdpZGdldFByb3BlcnR5LCBBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgaW5wdXQsIG1vZGVsLCBPdXRwdXQsIHNpZ25hbCwgdW50cmFja2VkLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2FwaXRhbGl6ZSwgY2xvbmVEZWVwLCBnZXQsIGlzQXJyYXksIGlzRW1wdHksIGlzTmlsLCBtZXJnZSwgc2V0LCBzb3J0QnksIHVuaW9uQnkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldFByb3BlcnR5VGFiIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBncm91cHM6IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBpc0NvbGxhcHNlZDogYm9vbGVhbjtcbiAgICBwcm9wczogQVhQV2lkZ2V0UHJvcGVydHlbXTtcbiAgfVtdO1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0UHJvcGVydGllc0NoYW5nZWRFdmVudCB7XG4gIHZhbHVlczogYW55LFxuICBtb2RlOiAnaW5pdCcgfCAndXBkYXRlJ1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheHAtd2lkZ2V0LXByb3BlcnR5LXZpZXdlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi93aWRnZXQtcHJvcGVydHktdmlld2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd2lkZ2V0LXByb3BlcnR5LXZpZXdlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQVhDb2xsYXBzZU1vZHVsZSwgQVhUYWJzTW9kdWxlLCBBWFBMYXlvdXRCdWlsZGVyTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV2lkZ2V0UHJvcGVydHlWaWV3ZXJDb21wb25lbnQge1xuICB3aWRnZXQgPSBpbnB1dC5yZXF1aXJlZDxBWFBXaWRnZXROb2RlPigpO1xuXG4gIHByaXZhdGUgd2lkZ2V0UmVnaXN0cnlTZXJ2aWNlID0gaW5qZWN0KEFYUFdpZGdldFJlZ2lzdHJ5U2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIGN1cnJlbnRUYWJJbmRleDogV3JpdGFibGVTaWduYWw8bnVtYmVyPiA9IHNpZ25hbCgwKTtcblxuICBwcm90ZWN0ZWQgY29uZmlnID0gc2lnbmFsPEFYUFdpZGdldENvbmZpZyB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgYWxsUG9wZXJ0aWVzOiBBWFBXaWRnZXRQcm9wZXJ0eVtdID0gW107XG5cbiAgcHJvdGVjdGVkIHRhYnMgPSBzaWduYWw8QVhQV2lkZ2V0UHJvcGVydHlUYWJbXT4oW10pO1xuXG4gIHByb3RlY3RlZCBncm91cHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMudGFicygpLmxlbmd0aCA/IHRoaXMudGFicygpW3RoaXMuY3VycmVudFRhYkluZGV4KCldLmdyb3VwcyA6IFtdO1xuICB9KTtcblxuXG4gIEBPdXRwdXQoKVxuICBvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEFYUFdpZGdldFByb3BlcnRpZXNDaGFuZ2VkRXZlbnQ+KCk7XG5cbiAgcHJvdGVjdGVkIGNvbnRleHQgPSBzaWduYWw8YW55Pih7fSk7XG5cblxuICBwcm90ZWN0ZWQgaW5pdGlhbENvbnRleHQ6IGFueSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLndpZGdldCgpKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLndpZGdldFJlZ2lzdHJ5U2VydmljZS5yZXNvbHZlKHRoaXMud2lkZ2V0KCk/LnR5cGUpO1xuICAgICAgICBpZiAoY29uZmlnKSB7XG4gICAgICAgICAgdGhpcy5pbml0aWFsQ29udGV4dCA9IHt9O1xuICAgICAgICAgIHRoaXMuY29uZmlnLnNldChjb25maWcpO1xuICAgICAgICAgIHRoaXMuZmlsbFRhYnMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBJbnZhbGlkIHdpZGdldCBuYW1lOiAke3RoaXMud2lkZ2V0KCl9YCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWxsVGFicygpIHtcbiAgICBjb25zdCB0YWJzOiBBWFBXaWRnZXRQcm9wZXJ0eVRhYltdID0gW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnZ2VuZXJhbCcsXG4gICAgICAgIHRpdGxlOiAnR2VuZXJhbCcsXG4gICAgICAgIGdyb3VwczogW10sXG4gICAgICB9LFxuICAgIF07XG4gICAgT2JqZWN0LmVudHJpZXModGhpcy5jb25maWcoKT8uY29tcG9uZW50cyA/PyB7fSkuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgaWYgKGNbMV0uY29tcG9uZW50ICE9IG51bGwgJiYgY1sxXS5wcm9wZXJ0aWVzPy5sZW5ndGgpIHtcbiAgICAgICAgdGFicy5wdXNoKHsgbmFtZTogY1swXSwgdGl0bGU6IGNhcGl0YWxpemUoY1swXSksIGdyb3VwczogW10gfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy8vXG4gICAgdGhpcy5hbGxQb3BlcnRpZXMgPSBbXTtcbiAgICAvLy9cbiAgICB0YWJzLmZvckVhY2goKHRhYikgPT4ge1xuICAgICAgY29uc3QgcHJvcHMgPVxuICAgICAgICB0YWIubmFtZSA9PSAnZ2VuZXJhbCdcbiAgICAgICAgICA/IHRoaXMuY29uZmlnKCk/LnByb3BlcnRpZXMgPz8gW11cbiAgICAgICAgICA6ICgoKHRoaXMuY29uZmlnKCk/LmNvbXBvbmVudHMgYXMgYW55KVt0YWIubmFtZV0/LnByb3BlcnRpZXMgYXMgQVhQV2lkZ2V0UHJvcGVydHlbXSkgPz8gW10pLmZpbHRlcigoYykgPT4gYy52aXNpYmxlKTtcbiAgICAgIC8vXG4gICAgICB0aGlzLmFsbFBvcGVydGllcy5wdXNoKC4uLnByb3BzKTtcbiAgICAgIHRhYi5ncm91cHMgPSB1bmlvbkJ5KFxuICAgICAgICBzb3J0QnkoXG4gICAgICAgICAgcHJvcHMubWFwKChwZykgPT4gKHtcbiAgICAgICAgICAgIGlzQ29sbGFwc2VkOiBmYWxzZSxcbiAgICAgICAgICAgIG5hbWU6IHBnLmdyb3VwLm5hbWUsXG4gICAgICAgICAgICB0aXRsZTogcGcuZ3JvdXAudGl0bGUsXG4gICAgICAgICAgICBwcm9wczogc29ydEJ5KFxuICAgICAgICAgICAgICBwcm9wcy5maWx0ZXIoKHApID0+IHAuZ3JvdXAubmFtZSA9PSBwZy5ncm91cC5uYW1lKSxcbiAgICAgICAgICAgICAgJ3RpdGxlJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9KSksXG4gICAgICAgICAgJ3RpdGxlJ1xuICAgICAgICApLFxuICAgICAgICAnbmFtZSdcbiAgICAgICk7XG4gICAgfSk7XG4gICAgdGhpcy50YWJzLnNldCh0YWJzLmZpbHRlcigoYykgPT4gYy5ncm91cHMubGVuZ3RoKSk7XG4gICAgLy9cbiAgICB0aGlzLmluaXRpYWxDb250ZXh0ID0gdGhpcy5hbGxQb3BlcnRpZXNcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChjKSA9PlxuICAgICAgICAgICghaXNBcnJheShjLnNjaGVtYS5kZWZhdWx0VmFsdWUpICYmICFpc05pbChjLnNjaGVtYS5kZWZhdWx0VmFsdWUpKSB8fCAoaXNBcnJheShjLnNjaGVtYS5kZWZhdWx0VmFsdWUpICYmICFpc0VtcHR5KGMuc2NoZW1hLmRlZmF1bHRWYWx1ZSkpXG4gICAgICApXG4gICAgICAucmVkdWNlKChhY2MsIGMpID0+IHtcbiAgICAgICAgc2V0KGFjYywgYy5zY2hlbWEuaW50ZXJmYWNlLnBhdGgsIGMuc2NoZW1hLmRlZmF1bHRWYWx1ZSk7IC8vIFVzZSBsb2Rhc2gncyBzZXRcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9KTtcbiAgICAvL1xuICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbnRleHQuc2V0KG1lcmdlKGNsb25lRGVlcCh0aGlzLmluaXRpYWxDb250ZXh0KSwgdGhpcy53aWRnZXQoKSkpO1xuICAgICAgdGhpcy5vbkNoYW5nZWQuZW1pdCh7IHZhbHVlczogdGhpcy5jb250ZXh0KCksIG1vZGU6ICdpbml0JyB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVDb250ZXh0Q2hhbmdlKGU6IEFYUExheW91dENvbnRleHRFdmVudCkge1xuICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbnRleHQuc2V0KGUuZGF0YSk7XG4gICAgfSk7XG4gICAgdGhpcy5vbkNoYW5nZWQuZW1pdCh7IHZhbHVlczogdGhpcy5jb250ZXh0KCksIG1vZGU6ICd1cGRhdGUnLCB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVUYWJDaGFuZ2UoZXZlbnQ6IEFYVGFiU3RyaXBDaGFuZ2VkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBpbmR4ID0gZXZlbnQuaW5kZXg7XG4gICAgaWYgKHRoaXMuY3VycmVudFRhYkluZGV4KCkgIT0gaW5keCkge1xuICAgICAgdGhpcy5jdXJyZW50VGFiSW5kZXguc2V0KGluZHgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGF4cC13aWRnZXRzLWNvbnRhaW5lciBbY29udGV4dF09XCJjb250ZXh0KClcIiAob25DaGFuZ2VkKT1cImhhbmRsZUNvbnRleHRDaGFuZ2UoJGV2ZW50KVwiPlxuICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1wYi0yXCI+XG4gICAgICAgICAgICA8YXgtdGFicyBsb29rPVwiZGVmYXVsdFwiIChvbkFjdGl2ZVRhYkNoYW5nZWQpPVwiaGFuZGxlVGFiQ2hhbmdlKCRldmVudClcIiBbbG9va109XCInd2l0aC1saW5lJ1wiPlxuICAgICAgICAgICAgICAgIEBmb3IoIHRhYiBvZiB0YWJzKCk7dHJhY2sgJGluZGV4KXtcbiAgICAgICAgICAgICAgICA8YXgtdGFiLWl0ZW0gW3RleHRdPVwidGFiLnRpdGxlXCIgW2tleV09XCIkaW5kZXgudG9TdHJpbmcoKVwiIFthY3RpdmVdPVwiY3VycmVudFRhYkluZGV4KCkgPT09ICRpbmRleFwiPlxuICAgICAgICAgICAgICAgIDwvYXgtdGFiLWl0ZW0+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9heC10YWJzPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXgtMSBheC1vdmVyZmxvdy1hdXRvXCI+XG4gICAgICAgICAgICA8YXgtY29sbGFwc2UtZ3JvdXAgY2xhc3M9XCJheC1oLWZpdFwiIGxvb2s9XCJibGFua1wiPlxuICAgICAgICAgICAgICAgIEBmb3IoIGdyb3VwIG9mIGdyb3VwcygpO3RyYWNrICRpbmRleCl7XG4gICAgICAgICAgICAgICAgPGF4LWNvbGxhcHNlIFtjYXB0aW9uXT1cImdyb3VwLnRpdGxlXCIgbG9vaz1cInNvbGlkXCIgWyhpc0NvbGxhcHNlZCldPVwiZ3JvdXAuaXNDb2xsYXBzZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZGl2aWRlLXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IoIHAgb2YgZ3JvdXAucHJvcHM7dHJhY2sgJGluZGV4KXtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC0xIGF4LXB5LTIgZmlyc3Q6YXgtcHQtMCBsYXN0OmF4LXBiLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LWZvbnQtc2VtaWJvbGRcIj57e3AudGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYocC5zY2hlbWEuaW50ZXJmYWNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXhwLXdpZGdldC1yZW5kZXJlciBbbm9kZV09XCJwLnNjaGVtYS5pbnRlcmZhY2VcIiBbbW9kZV09XCInZWRpdCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F4cC13aWRnZXQtcmVuZGVyZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYXgtY29sbGFwc2U+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9heC1jb2xsYXBzZS1ncm91cD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2F4cC13aWRnZXRzLWNvbnRhaW5lcj4iXX0=
|