{"version":3,"file":"acorex-platform-layout-widgets.mjs","sources":["../../../../libs/platform/layout/widgets/src/lib/shared/multi-language-component/popup/select-language.popup.ts","../../../../libs/platform/layout/widgets/src/lib/shared/multi-language-component/popup/select-language.popup.html","../../../../libs/platform/layout/widgets/src/lib/widgets.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/providers/shared/provider-select-widget-edit.base.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/providers/shared/provider-select-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/providers/shared/provider-select-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/actions/button/button-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/actions/button/button-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/actions/button/button-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/expression-builders/condition-builder/condition-builder-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/expression-builders/condition-builder/condition-builder-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/expression-builders/condition-builder/condition-builder-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/status/status-widget.utils.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/checkbox/checkbox-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/checkbox/checkbox-widget-designer.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/checkbox/checkbox-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/checkbox/checkbox-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/checkbox/checkbox-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/color-box/color-box-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/color-box/color-box-widget-designer.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/color-box/color-box-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/color-box/color-box-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/color-box/color-box-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/color-palette/color-palette-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/color-palette/color-palette-widget-designer.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/color-palette/color-palette-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/color-palette/color-palette-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/color-palette/color-palette-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/connected-lists/connected-lists-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/connected-lists/connected-lists-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/connected-lists/connected-lists-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/connected-lists/connected-lists-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/contact/contact-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/contact/contact.service.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/contact/contact-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/contact/contact-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/contact/contact-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/address/address-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/address/address-widget.types.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/address/address.service.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/address/address-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/address/address-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/address/address-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/date-time/date-time-box-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/filters/operations/operations.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/filters/operations/operations.component.html","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/date-time/date-time-box-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/date-time/date-time-box-widget-edit.component.html","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/date-time/date-time-box-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/date-time/date-time-box-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/editor-js/editor-js-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/editor-js/editor-js-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/editor-js/editor-js-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/editor-js/editor-js-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/large-text/large-text-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/large-text/large-text-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/large-text/large-text-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/large-text/large-text-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/list/list-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/list/list-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/list/list-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/list/list-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/node-renderer/node-renderer-widget.util.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/node-renderer/node-renderer-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/node-renderer/node-renderer-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/node-renderer/node-renderer-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/number/number-box-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/number/number-box-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/number/number-box-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/number/number-box-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/password/password-text-direction.util.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/password/password-box-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/password/password-box-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/password/password-box-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/password/password-box-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/progress-bar/progress-bar-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/progress-bar/progress-bar-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/progress-bar/progress-bar-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/progress-bar/progress-bar-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/rate-picker/rate-picker-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/rate-picker/rate-picker-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/rate-picker/rate-picker-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/rate-picker/rate-picker-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/rich-text/rich-text-dialog.helpers.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/rich-text/rich-text-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/rich-text/rich-text-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/rich-text/rich-text-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/rich-text/rich-text-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/select/select-box-item-badge.utils.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/select/select-box-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/select/select-box-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/select/select-box-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/select/select-box-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/selection-list/selection-list-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/selection-list/selection-list-widget-designer.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/selection-list/selection-list-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/selection-list/selection-list-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/selection-list/selection-list-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/tag/tag-editor-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/tag/tag-editor-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/tag/tag-editor-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/tag/tag-editor-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/template-box/template-box-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/template-box/template-box-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/template-box/template-box-widget-print.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/template-box/template-box-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/template-box/template-box-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/text/text-box-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/text/text-box-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/text/text-box-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/text/text-box-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/toggle/toggle-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/toggle/toggle-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/toggle/toggle-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/toggle/toggle-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/avatar/avatar-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/avatar/avatar-widget-designer.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/avatar/avatar-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/avatar/avatar-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/avatar/avatar-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/code-editor/code-editor-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/code-editor/code-editor-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/code-editor/code-editor-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/code-editor/code-editor-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/data-list/data-list-widget.types.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/data-list/data-list-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/data-list/data-list-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/gallery/webhook.key.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/gallery/gallery-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/gallery/gallery-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/gallery/gallery-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/image-marker/image-marker-popup.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/image-marker/image-marker-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/image-marker/image-marker-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/image-marker/image-marker-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/image-marker/image-marker-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/integration-connections/integration-connections-panel-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/integration-connections/integration-connections-panel-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/json-viewer/json-viewer-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/json-viewer/json-viewer-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/json-viewer/json-viewer-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/outcome-results-viewer/outcome-results-viewer-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/outcome-results-viewer/outcome-results-viewer-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/map/map-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/map/map-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/qrcode/qrcode-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/qrcode/qrcode-viewer.service.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/qrcode/qrcode-viewer-open.util.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/qrcode/qrcode-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/qrcode/qrcode-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/qrcode/qrcode-widget-edit.component.html","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/qrcode/qrcode-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/scheduler-picker/scheduler-picker-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/scheduler-picker/scheduler-picker-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/scheduler-picker/scheduler-picker-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/scheduler-picker/scheduler-picker-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/signature/signature-pad-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/signature/signature-pad-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/signature/signature-pad-widget-edit.component.html","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/signature/signature-pad-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/signature/signature-pad-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/status/status-chip.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/status/status-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/status/status-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/status/status-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/status/status-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/stopwatch/stopwatch-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/stopwatch/stopwatch-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/widget-field-configurator/widget-field-configurator-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/widget-field-configurator/widget-field-configurator-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/widget-field-configurator/widget-field-configurator-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/item-configurator/item-configurator-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/item-configurator/delegated-parameter-definitions-to-widget-properties.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/item-configurator/item-configurator-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/item-configurator/item-configurator-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/advanced-grid/advanced-grid-widget-designer.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/advanced-grid/advanced-grid-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/advanced-grid/advanced-grid-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/advanced-grid-item/advanced-grid-item-widget-designer.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/advanced-grid-item/advanced-grid-item-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/advanced-grid-item/advanced-grid-item-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/block/block-widget-designer.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/block/block-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/block/block-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/fieldset/fieldset-widget-designer.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/fieldset/fieldset-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/fieldset/fieldset-widget-view.component.html","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/fieldset/fieldset-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/flex/flex-widget-designer.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/flex/flex-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/flex/flex-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/flex-item/flex-item-widget-designer.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/flex-item/flex-item-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/flex-item/flex-item-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/page/page-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/page/page-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/repeater/repeater-entity-lookup.token.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/repeater/repeater-widget-designer.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/repeater/repeater-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/repeater/repeater-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/repeater/repeater-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/step-wizard/step-wizard-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/step-wizard/step-wizard-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/step-wizard/step-wizard-widget.types.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/table/table-widget-helpers.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/table/table-widget-designer.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/table/table-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/table/table-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/table-item/table-item-widget-designer.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/table-item/table-item-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/table-item/table-item-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/grid-options/grid-options-widget.type.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/grid-options/grid-options-widget-editor.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/grid-options/grid-options-widget-editor.component.html","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/grid-options/grid-options-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/advanced-grid-options/advanced-grid-options-widget-editor.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/advanced-grid-options/advanced-grid-options-widget-editor.component.html","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/advanced-grid-options/advanced-grid-options-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/advanced-grid-options/index.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/property-editor.type.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/border/border-widget-editor.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/border/border-widget-editor.component.html","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/border/border-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/data-source-options/data-source-options-widget-editor.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/data-source-options/data-source-options-widget-editor.component.html","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/data-source-options/data-source-options-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/direction/direction-widget-editor.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/direction/direction-widget-editor.component.html","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/direction/direction-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/flex-item-options/flex-item-options-widget-editor.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/flex-item-options/flex-item-options-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/flex-options/flex-options-widget.type.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/flex-options/flex-options-widget-editor.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/flex-options/flex-options-widget-editor.component.html","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/flex-options/flex-options-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/grid-item-options/grid-item-options-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/grid-item-options/grid-item-options-widget.editor.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/spacing/spacing-widget-editor.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/spacing/spacing-widget-editor.component.html","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/spacing/spacing-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/validations/base-validation/base-validation.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/validations/base-validation/base-validation.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/validations/between-validation/between-validation-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/validations/between-validation/between-validation-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/validations/callback-validation/callback-validation-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/validations/callback-validation/callback-validation-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/validations/equal-validation/equal-validation-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/validations/equal-validation/equal-validation-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/validations/greater-than-validation/greater-than-validation-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/validations/greater-than-validation/greater-than-validation-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/validations/less-than-validation/less-than-validation-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/validations/less-than-validation/less-than-validation-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/validations/max-length-validation/max-length-validation-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/validations/max-length-validation/max-length-validation-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/validations/min-length-validation/min-length-validation-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/validations/min-length-validation/min-length-validation-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/validations/regular-expression-validation/regular-expression-validation-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/validations/regular-expression-validation/regular-expression-validation-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/validations/required-validation/required-validation-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/validations/required-validation/required-validation-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/cron-job/cron-job-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/cron-job/cron-job-widget-designer.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/cron-job/cron-job-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/cron-job/cron-job-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/cron-job/cron-job-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/image/image-definition.service.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/image/resolve-stored-image-url.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/image/image-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/image/image-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/image/image-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/image/image-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/list-toolbar/list-toolbar-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/list-toolbar/list-toolbar-widget-view.component.html","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/list-toolbar/list-toolbar-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/advance/map/map-box-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/meta-data/meta-data-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/meta-data/meta-data-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/meta-data/meta-data-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/meta-data/meta-data-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/number-unit/number-unit-box-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/number-unit/number-unit-box-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/number-unit/number-unit-box-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/number-unit/number-unit-box-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/tabular-data/table-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/tabular-data/tabular-data-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/tabular-data/tabular-data-filter.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/tabular-data/tabular-data-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/tabular-data/tabular-data-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/time-duration/time-duration-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/time-duration/time-duration-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/time-duration/time-duration-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/editors/time-duration/time-duration-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/filters/boolean-filter/boolean-filter-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/filters/boolean-filter/boolean-filter-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/filters/number-filter/number-filter-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/filters/number-filter/number-filter-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/filters/status-filter/status-filter-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/filters/status-filter/status-filter-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/filters/string-filter/string-filter-widget-edit.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/filters/string-filter/string-filter-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/alert-box/alert-box-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/alert-box/alert-box-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/alert-box/alert-box-widget-designer.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/badge/badge-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/badge/badge-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/document/document-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/form-field/form-field-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/form-field/form-field-widget-designer.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/form-field/form-field-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/grid/grid-widget-designer.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/grid/grid-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/grid/grid-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/grid-item/grid-item-widget-designer.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/grid-item/grid-item-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/grid-item/grid-item-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/icon/icon-widget-column.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/icon/icon-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/panel/panel-widget-designer.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/panel/panel-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/panel/panel-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/tabset/tabset-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/tabset/tabset-widget-designer.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/tabset/tabset-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/tabset-item/tabset-item-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/tabset-item/tabset-item-widget-designer.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/tabset-item/tabset-item-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/text-block/text-block-widget-view.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/layout/text-block/text-block-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/triggers/triggers-widget.config.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/triggers/triggers-widget-editor.component.ts","../../../../libs/platform/layout/widgets/src/lib/widgets/property-editors/triggers/trigger-expression-editor-popup.component.ts","../../../../libs/platform/layout/widgets/src/lib/widget-definition.provider.ts","../../../../libs/platform/layout/widgets/src/lib/widgets.module.ts","../../../../libs/platform/layout/widgets/src/lib/queries/get-widgets-for-ai.query.ts","../../../../libs/platform/layout/widgets/src/acorex-platform-layout-widgets.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPContextChangeEvent, type AXPWidgetNode } from '@acorex/platform/contracts';\nimport { AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXActionSheetItem, AXActionSheetService } from '@acorex/components/action-sheet';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTabsModule } from '@acorex/components/tabs';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXP_LOCALE_MANAGEMENT_PORT } from '@acorex/platform/common';\n\nimport { AXPDeviceService, setupPopupFooterKeyboardShortcuts } from '@acorex/platform/core';\nimport { AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { Component, computed, inject, OnInit, signal, WritableSignal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n//#endregion\n\n//#region ---- Types ----\n\n/** One row in the multi-language popup (sidebar + tab content). */\nexport interface AXPSelectLanguageRow {\n  code: string;\n  title: string;\n  active: boolean;\n  node: AXPWidgetNode;\n  context: { value: string };\n  /** True when the row comes from locale profiles; false when from Languages only (active, not covered by any profile). */\n  isLocaleProfile: boolean;\n}\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n  templateUrl: './select-language.popup.html',\n  imports: [\n    CommonModule,\n    FormsModule,\n    AXFormModule,\n    AXTextBoxModule,\n    AXButtonModule,\n    AXLabelModule,\n    AXCheckBoxModule,\n    AXDecoratorModule,\n    AXTabsModule,\n    AXBadgeModule,\n    AXTranslationModule,\n    AXPWidgetCoreModule,\n  ],\n})\nexport class AXPSelectLanguagePopup extends AXBasePageComponent implements OnInit {\n  //#region ---- Inputs (popup data) ----\n\n  currentLanguage: string;\n  values: { [key: string]: string } = {};\n  node: AXPWidgetNode;\n  mode: string;\n  context = {};\n\n  //#endregion\n\n  //#region ---- Services & Dependencies ----\n\n  deviceService = inject(AXPDeviceService);\n  isMobile = this.deviceService.isMobileDevice;\n  private actionSheet = inject(AXActionSheetService);\n  private readonly localeManagementPort = inject(AXP_LOCALE_MANAGEMENT_PORT, { optional: true });\n\n  //#endregion\n\n  //#region ---- State ----\n\n  languageList: WritableSignal<AXPSelectLanguageRow[]> = signal([]);\n  currentLanguageTitle = computed(() => this.languageList().find((l) => l.active)?.title ?? '');\n  activeLanguage = computed(() => this.languageList().find((l) => l.active));\n\n  /**\n   * When true, include active Languages-entity locales that are not represented by any locale profile\n   * (same primary language subtag as a profile code, e.g. en for en-US).\n   */\n  showOtherLanguages = signal(false);\n\n  /** True when there is at least one language-only row (not from locale profiles). */\n  hasLanguagesBeyondProfiles = computed(() => this.languageList().some((l) => !l.isLocaleProfile));\n\n  /**\n   * When the checkbox is off, still show non-profile languages that have saved or in-editor content\n   * so values remain accessible after save without turning the option on.\n   */\n  visibleLanguageList = computed(() => {\n    const list = this.languageList();\n    if (this.showOtherLanguages() || !this.hasLanguagesBeyondProfiles()) {\n      return list;\n    }\n    return list.filter((l) => l.isLocaleProfile || this.hasTranslationContent(l.context?.value));\n  });\n\n  //#endregion\n\n  constructor() {\n    super();\n    setupPopupFooterKeyboardShortcuts(\n      () => [\n        {\n          title: '@general:actions.cancel.title',\n          command: 'cancel',\n          handler: () => this.close(),\n        },\n        {\n          title: '@general:actions.save.title',\n          command: 'submit',\n          handler: () => this.onSaveButtonClick(),\n        },\n      ],\n      { id: 'select-language-popup' },\n    );\n  }\n\n  //#region ---- Lifecycle ----\n\n  override ngOnInit(): void {\n    this.context = {\n      value: this.values,\n    };\n    void this.buildLanguageList();\n  }\n\n  //#endregion\n\n  //#region ---- UI Handlers ----\n\n  protected handleContextChanged(e: AXPContextChangeEvent, language: AXPSelectLanguageRow): void {\n    language.context = e.data;\n  }\n\n  //TODO NEED TO FIX THOSE HAS NO PROFILE\n  protected onShowOtherLanguagesChanged(event: AXValueChangedEvent<boolean>): void {\n    const next = !!event.value;\n    this.showOtherLanguages.set(next);\n    if (next) {\n      return;\n    }\n    this.languageList.update((list) => {\n      const current = list.find((l) => l.active);\n      if (!current) {\n        return list;\n      }\n      const staysVisible =\n        current.isLocaleProfile || (!current.isLocaleProfile && this.hasTranslationContent(current.context?.value));\n      if (staysVisible) {\n        return list;\n      }\n      const targetCode = this.resolveActiveRowCode(list, this.currentLanguage);\n      return list.map((row) => ({ ...row, active: row.code === targetCode }));\n    });\n  }\n\n  async openLanguagePicker(): Promise<void> {\n    const visible = this.visibleLanguageList();\n    const items: AXActionSheetItem[] = visible.map((l, idx) => ({\n      text: l.title,\n      icon: this.hasTranslationContent(l.context?.value) ? 'fa-regular fa-circle-check' : 'fa-regular fa-circle',\n      color: l.active ? 'primary' : undefined,\n      data: { index: idx },\n    }));\n    const ref = await this.actionSheet.open({\n      title: 'Choose a language',\n      items,\n      closeOnBackdropClick: true,\n    });\n    ref.onClose.subscribe((res: unknown) => {\n      const idx = (res as { data?: { data?: { index?: number } } })?.data?.data?.index;\n      if (idx === undefined) {\n        return;\n      }\n      const picked = visible[idx];\n      if (!picked) {\n        return;\n      }\n      const code = picked.code;\n      this.languageList.update((list) => list.map((x) => ({ ...x, active: x.code === code })));\n    });\n  }\n\n  async onSaveButtonClick(): Promise<void> {\n    const merged: { [key: string]: string } = { ...this.values };\n    this.languageList().forEach((item) => {\n      if (item.context.value) {\n        merged[item.code] = item.context.value;\n      }\n    });\n    this.close(merged);\n  }\n\n  //#endregion\n\n  //#region ---- Language list (app locales + sort) ----\n\n  /**\n   * True when the string has visible text (handles plain text and simple HTML from rich editors).\n   */\n  protected hasTranslationContent(value: string | undefined | null): boolean {\n    if (value == null) {\n      return false;\n    }\n    const stripped = String(value)\n      .replace(/<[^>]+>/g, ' ')\n      .replace(/&nbsp;/gi, ' ')\n      .trim();\n    return stripped.length > 0;\n  }\n\n  private async buildLanguageList(): Promise<void> {\n    const port = this.localeManagementPort;\n    if (!port) {\n      const code = this.currentLanguage || 'en-US';\n      this.languageList.set(\n        this.sortLanguagesForDisplay([\n          {\n            code,\n            title: code,\n            active: true,\n            node: this.node,\n            context: { value: this.values[code] ?? '' },\n            isLocaleProfile: true,\n          },\n        ]),\n      );\n      return;\n    }\n\n    let profiles: { code: string; title?: string; nativeTitle?: string }[] = [];\n    try {\n      profiles = await port.getLocaleProfiles();\n    } catch {\n      profiles = [];\n    }\n\n    if (profiles.length === 0) {\n      const code = this.currentLanguage || 'en-US';\n      this.languageList.set(\n        this.sortLanguagesForDisplay([\n          {\n            code,\n            title: code,\n            active: true,\n            node: this.node,\n            context: { value: this.values[code] ?? '' },\n            isLocaleProfile: true,\n          },\n        ]),\n      );\n      return;\n    }\n\n    const profileRows: AXPSelectLanguageRow[] = profiles.map((item) => ({\n      code: item.code,\n      title: item.title ?? item.nativeTitle ?? item.code,\n      active: false,\n      node: this.node,\n      context: { value: this.values[item.code] ?? '' },\n      isLocaleProfile: true,\n    }));\n\n    let extraRows: AXPSelectLanguageRow[] = [];\n    try {\n      const managedLanguages = await port.getLanguages();\n      extraRows = managedLanguages\n        .filter((lang) => !this.isLanguageCoveredByLocaleProfiles(lang.code, profiles))\n        .map((lang) => ({\n          code: lang.code,\n          title: lang.title,\n          active: false,\n          node: this.node,\n          context: { value: this.values[lang.code] ?? '' },\n          isLocaleProfile: false,\n        }));\n    } catch {\n      extraRows = [];\n    }\n\n    const merged = [...profileRows, ...extraRows];\n    const activeCode = this.resolveActiveRowCode(merged, this.currentLanguage);\n    const rows = merged.map((row) => ({ ...row, active: row.code === activeCode }));\n\n    this.languageList.set(this.sortLanguagesForDisplay(rows));\n  }\n\n  /**\n   * First segment of a BCP 47 tag (e.g. en-US → en).\n   */\n  private primaryLanguageSubtag(localeCode: string): string {\n    const part = localeCode.split(/[-_]/u)[0];\n    return part ? part.toLowerCase() : '';\n  }\n\n  /**\n   * True when some locale profile uses the same primary language as the Languages-entity code.\n   */\n  private isLanguageCoveredByLocaleProfiles(languageCode: string, profiles: { code: string }[]): boolean {\n    const lc = languageCode.toLowerCase();\n    return profiles.some((p) => this.primaryLanguageSubtag(p.code) === lc);\n  }\n\n  /**\n   * Picks which row should be active from the merged list and current UI language.\n   */\n  private resolveActiveRowCode(rows: AXPSelectLanguageRow[], currentLanguage: string): string {\n    const current = currentLanguage || '';\n    if (rows.some((r) => r.code === current)) {\n      return current;\n    }\n    const primary = this.primaryLanguageSubtag(current);\n    const profileMatch = rows.find((r) => r.isLocaleProfile && this.primaryLanguageSubtag(r.code) === primary);\n    if (profileMatch) {\n      return profileMatch.code;\n    }\n    const extraMatch = rows.find((r) => !r.isLocaleProfile && r.code === primary);\n    if (extraMatch) {\n      return extraMatch.code;\n    }\n    const firstProfile = rows.find((r) => r.isLocaleProfile);\n    return firstProfile?.code ?? rows[0]?.code ?? current;\n  }\n\n  /**\n   * Non-empty translations first (green badge), then empty; within each group sort by title.\n   */\n  private sortLanguagesForDisplay(items: AXPSelectLanguageRow[]): AXPSelectLanguageRow[] {\n    return [...items].sort((a, b) => {\n      const aHas = this.hasTranslationContent(a.context?.value);\n      const bHas = this.hasTranslationContent(b.context?.value);\n      if (aHas !== bHas) {\n        return aHas ? -1 : 1;\n      }\n      return (a.title || '').localeCompare(b.title || '', undefined, { sensitivity: 'base' });\n    });\n  }\n\n  //#endregion\n}\n\n//#endregion\n","@if (isMobile()) {\n<div class=\"ax-flex ax-flex-col ax-w-full\">\n  <div class=\"ax-flex ax-items-center ax-justify-between ax-gap-2 ax-px-3 ax-py-2 ax-border-b ax-border-gray-200\">\n    <span class=\"ax-font-semibold ax-truncate\">{{ currentLanguageTitle() || (\"@general:fields.language.title\" |\n      translate | async) }}</span>\n    @if (visibleLanguageList().length > 1) {\n    <ax-button (onClick)=\"openLanguagePicker()\" color=\"primary\"\n      [text]=\"('@general:actions.change.title' | translate | async)\"></ax-button>\n    }\n  </div>\n  <div class=\"ax-flex-1 ax-min-w-0 ax-overflow-auto ax-p-3\">\n    @if (activeLanguage(); as lang) {\n    <div class=\"ax-flex ax-flex-grow ax-items-center ax-justify-center\">\n      <axp-widgets-container class=\"ax-flex ax-flex-col ax-gap-2 ax-p-4\" [context]=\"lang.context\"\n        (onContextChanged)=\"handleContextChanged($event, lang)\">\n        <ng-container axp-widget-renderer [node]=\"lang.node\" [mode]=\"'edit'\"> </ng-container>\n      </axp-widgets-container>\n    </div>\n    }\n  </div>\n</div>\n} @else {\n<div class=\"ax-flex ax-h-[max(70vh,20rem)]\">\n  <aside class=\"ax-overflow-auto ax-flex-shrink-0 ax-min-w-[12rem] ax-border-e ax-border-neutral-200\">\n    <ax-tabs [content]=\"content\" location=\"end\" look=\"with-line-color\" [fitParent]=\"true\">\n      @for (language of visibleLanguageList(); track language.code) {\n      <ax-tab-item [text]=\"language.title\" [key]=\"language.code\" [(active)]=\"language.active\">\n        <ax-suffix>\n          <ax-badge [color]=\"hasTranslationContent(language.context.value) ? 'success' : 'ghost'\"></ax-badge>\n        </ax-suffix>\n        <ax-content>\n          <p class=\"ax-font-semibold ax-self-start ax-mb-4\">{{ language.title }}</p>\n          <div class=\"ax-flex ax-flex-grow ax-items-center ax-justify-center\">\n            <axp-widgets-container class=\"ax-flex ax-flex-col ax-gap-2 ax-p-4\" [context]=\"language.context\"\n              (onContextChanged)=\"handleContextChanged($event, language)\">\n              <ng-container axp-widget-renderer [node]=\"language.node\" [mode]=\"'edit'\"> </ng-container>\n            </axp-widgets-container>\n          </div>\n        </ax-content>\n      </ax-tab-item>\n      }\n    </ax-tabs>\n  </aside>\n  <div class=\"ax-flex-1 ax-min-w-0 ax-p-4 ax-flex ax-flex-col\">\n    <ng-template [axTabContent] #content=\"axTabContent\"> </ng-template>\n  </div>\n</div>\n}\n<ax-footer class=\"ax-flex ax-items-center ax-justify-between ax-gap-4\">\n  <ax-prefix class=\"ax-flex ax-items-center ax-min-w-0\">\n    @if (hasLanguagesBeyondProfiles()) {\n    <ax-check-box [value]=\"showOtherLanguages()\" (onValueChanged)=\"onShowOtherLanguagesChanged($event)\">\n      <ax-label>{{ ('@general:widgets.multi-language-select.show-other-languages' | translate | async) }}</ax-label>\n    </ax-check-box>\n    }\n  </ax-prefix>\n  <ax-suffix>\n    <ax-button [text]=\"('@general:actions.cancel.title' | translate | async)\" (onClick)=\"close()\"></ax-button>\n    <ax-button color=\"primary\" [text]=\"('@general:actions.save.title' | translate | async)\"\n      (onClick)=\"onSaveButtonClick()\"></ax-button>\n  </ax-suffix>\n</ax-footer>","import { InjectionToken } from '@angular/core';\n\nexport interface StrategyConfig {\n  selectValueStrategy: 'valueField' | 'item';\n  lookupValueStrategy: 'valueField' | 'item';\n}\n\nexport const DEFAULT_STRATEGY_CONFIG: StrategyConfig = {\n  selectValueStrategy: 'item',\n  lookupValueStrategy: 'item',\n};\n\nexport const STRATEGY_CONFIG_TOKEN = new InjectionToken<StrategyConfig>('STRATEGY_CONFIG', {\n  providedIn: 'root',\n  factory: () => DEFAULT_STRATEGY_CONFIG,\n});\n","//#region ---- Imports ----\n\nimport { AXDataSourceFilterOption, AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXSelectBoxComponent } from '@acorex/components/select-box';\nimport { AXPCleanNestedFilters, AXPFilterOperatorMiddlewareService } from '@acorex/platform/common';\nimport { setSmart } from '@acorex/platform/contracts';\nimport { AXPDataListWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { Directive, HostBinding, computed, effect, inject, signal, untracked, viewChild } from '@angular/core';\nimport { get, set } from 'lodash-es';\nimport { STRATEGY_CONFIG_TOKEN, StrategyConfig } from '../../../widgets.config';\n\n//#endregion\n\n/**\n * Shared select UI for provider-backed editors (module, permission, menu, entity).\n * Subclasses implement {@link loadDataSourceRows} to populate `{ value, title }[]`.\n */\n@Directive()\nexport abstract class AXPProviderSelectWidgetEditBase extends AXPDataListWidgetComponent {\n  //#region ---- Services & Dependencies ----\n\n  protected readonly selectBox = viewChild<AXSelectBoxComponent>(AXSelectBoxComponent);\n  protected readonly widgetsConfigs = inject<StrategyConfig>(STRATEGY_CONFIG_TOKEN);\n  private readonly filterOperatorMiddleware = inject(AXPFilterOperatorMiddlewareService);\n\n  //#endregion\n\n  //#region ---- Abstract API ----\n\n  /**\n   * Loads option rows for the select. `value` is persisted; `title` is shown.\n   */\n  protected abstract loadDataSourceRows(): Promise<Array<{ value: string; title: string }>>;\n\n  //#endregion\n\n  //#region ---- Expose & Options ----\n\n  protected expose = computed<string | Array<string | { source: string; target: string }> | undefined>(\n    () => this.options()['expose'] as string | Array<string | { source: string; target: string }> | undefined,\n  );\n\n  protected multiple = computed<boolean>(() => this.options()['multiple'] as boolean);\n  protected disabled = computed<boolean>(() => (this.options()['disabled'] as boolean) ?? false);\n  protected readonly = computed<boolean>(() => this.options()['readonly'] as boolean);\n  protected placeholder = computed<string>(() => (this.options()['placeholder'] as string) ?? '');\n  protected hasClearButton = computed<boolean>(() => (this.options()['hasClearButton'] as boolean) ?? false);\n  protected allowSearch = computed<boolean>(() => (this.options()['allowSearch'] as boolean) ?? true);\n  protected filter = computed<AXDataSourceFilterOption>(() => this.options()['filter'] as AXDataSourceFilterOption);\n  protected filterMode = computed<boolean>(() => (this.options()['filterMode'] as boolean) ?? false);\n\n  protected selectFilterDisplayValue = computed(() => {\n    const raw = this.getValue();\n    const val = raw && typeof raw === 'object' && 'value' in raw ? (raw as { value?: unknown }).value : raw;\n    if (val === undefined || val === null) {\n      return undefined;\n    }\n    if (typeof val === 'object' && val !== null && this.valueField()) {\n      return (val as Record<string, unknown>)[this.valueField()] ?? val;\n    }\n    return val;\n  });\n\n  protected searchValue = signal<string | undefined>(undefined);\n\n  //#endregion\n\n  //#region ---- Lifecycle ----\n\n  override ngOnInit(): void {\n    super.ngOnInit();\n    void this.reloadProviderData();\n  }\n\n  /**\n   * Full row list from the last {@link loadDataSourceRows} (used for client-side search).\n   */\n  protected readonly allProviderRows = signal<Array<{ value: string; title: string }>>([]);\n\n  /**\n   * Reloads datasource rows from {@link loadDataSourceRows} and applies them to the select.\n   * Subclasses may override {@link refresh} to call this when context changes.\n   */\n  protected async reloadProviderData(): Promise<void> {\n    const rows = await this.loadDataSourceRows();\n    this.allProviderRows.set(rows);\n    const q = this.searchValue()?.toString().trim().toLowerCase();\n    if (q) {\n      const filtered = rows.filter((r) => r.title.toLowerCase().includes(q) || r.value.toLowerCase().includes(q));\n      this.applyProviderRowsToOptions(filtered);\n    } else {\n      this.applyProviderRowsToOptions(rows);\n    }\n  }\n\n  /**\n   * Pushes rows into widget options so {@link AXPDataListWidgetComponent} builds the dataSource.\n   * Client-side search uses this instead of {@link AXDataSource} filter (unreliable for static arrays).\n   */\n  private applyProviderRowsToOptions(rows: Array<{ value: string; title: string }>): void {\n    this.setOptions({\n      ...this.options(),\n      dataSource: rows,\n      textField: 'title',\n      valueField: 'value',\n    } as Record<string, unknown>);\n  }\n\n  //#endregion\n\n  //#region ---- Focus ----\n\n  private readonly shouldFocus = signal(false);\n\n  #focusEffect = effect(() => {\n    const shouldFocus = this.shouldFocus();\n    if (!shouldFocus) {\n      return;\n    }\n    const selectBox = this.selectBox();\n    if (selectBox) {\n      try {\n        selectBox.focus();\n        this.shouldFocus.set(false);\n      } catch {\n        // ignore focus errors\n      }\n    }\n  });\n\n  public focus(): void {\n    this.shouldFocus.set(true);\n  }\n\n  //#endregion\n\n  //#region ---- Outputs ----\n\n  protected override outputs(): (string | { name: string; value: unknown })[] {\n    return [\n      { name: 'items', value: this.selectedItems() },\n      { name: 'item', value: this.item },\n    ];\n  }\n\n  //#endregion\n\n  //#region ---- Value handlers ----\n\n  protected handleValueChange(e: AXValueChangedEvent) {\n    this.selectedItems.set((e.component as AXSelectBoxComponent).selectedItems);\n    if (e.isUserInteraction) {\n      if (this.expose()) {\n        const selections = this.selectedItems();\n        const exposeList = Array.isArray(this.expose()) ? (this.expose() as unknown[]) : [this.expose()];\n        const itemToExpose: Record<string, unknown> = {};\n\n        exposeList.forEach((expr) => {\n          if (typeof expr === 'string') {\n            const values = selections.map((item) => set({}, expr, get(item, expr)));\n            setSmart(itemToExpose, expr, this.singleOrMultiple(values));\n          } else if (expr && typeof expr === 'object') {\n            const mapping = expr as { source: string; target: string };\n            const values = this.multiple()\n              ? selections.map((item) => set({}, mapping.source, get(item, mapping.source)))\n              : selections.map((item) => get(item, mapping.source));\n            setSmart(itemToExpose, mapping.target, this.singleOrMultiple(values));\n          }\n        });\n\n        this.contextService.applyObjectPaths(itemToExpose, { origin: 'user' });\n      }\n\n      if (this.filterMode()) {\n        const newValue = e.value;\n        const text = this.selectedItems().map((item) => get(item, this.textField()));\n        this.setValue({\n          value: newValue,\n          displayText: text,\n          operation: {\n            type: this.multiple() ? 'in' : 'equal',\n          },\n        });\n      } else if (this.multiple()) {\n        const keys = this.selectedItems().map((item) => get(item, this.valueField()));\n        this.setValue(keys);\n      } else {\n        this.setValue(e.value);\n      }\n    }\n  }\n\n  protected handleSearchValueChange(e: AXValueChangedEvent) {\n    if (e.isUserInteraction) {\n      this.searchValue.set(e.value);\n      const q = (e.value ?? '').toString().trim().toLowerCase();\n      const all = this.allProviderRows();\n      if (!q) {\n        this.applyProviderRowsToOptions(all);\n      } else {\n        const filtered = all.filter((r) => r.title.toLowerCase().includes(q) || r.value.toLowerCase().includes(q));\n        this.applyProviderRowsToOptions(filtered);\n      }\n      setTimeout(() => this.selectBox()?.refresh(), 0);\n    }\n  }\n\n  #filterEffect = effect(() => {\n    if (this.filter()) {\n      const cleanedFilters = AXPCleanNestedFilters([this.filter()]);\n      if (cleanedFilters.length > 0) {\n        untracked(() => {\n          setTimeout(() => {\n            this.dataSource()?.filter(this.filterOperatorMiddleware.transformFilter(cleanedFilters[0]));\n          });\n        });\n      }\n    }\n  });\n\n  refresh(): void {\n    setTimeout(() => {\n      this.searchValue.set(undefined);\n      this.applyProviderRowsToOptions(this.allProviderRows());\n      this.selectBox()?.refresh();\n    }, 0);\n  }\n\n  clear(): void {\n    this.selectBox()?.reset(true);\n    this.refresh();\n  }\n\n  protected get item() {\n    return this.selectedItems()[0];\n  }\n\n  @HostBinding('class')\n  private get __class(): Record<string, boolean> {\n    const cls: Record<string, boolean> = {};\n    cls['ax-block'] = true;\n    cls['ax-flex-1'] = true;\n    return cls;\n  }\n\n  private singleOrMultiple<T>(values: T[]): T | T[] {\n    return this.multiple() ? values : values[0];\n  }\n\n  //#endregion\n}\n","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPDataListWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';\n\n@Component({\n  selector: 'axp-provider-select-widget-view',\n  template: `\n    @for (item of selectedItems(); track $index) {\n      <span>{{ item[this.textField()] | translate | async }}</span>\n    } @empty {\n      <span class=\"ax-text-muted\">---</span>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXBadgeModule, CommonModule, AXTranslationModule],\n})\nexport class AXPProviderSelectWidgetViewComponent extends AXPDataListWidgetComponent {\n  @HostBinding('class')\n  private get __class(): Record<string, boolean> {\n    const cls: Record<string, boolean> = {};\n    cls['ax-flex'] = true;\n    cls['ax-gap-1'] = true;\n    return cls;\n  }\n}\n","import { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { castArray, isNil } from 'lodash-es';\n\n@Component({\n  selector: 'axp-provider-select-widget-column',\n  template: ` <div class=\"ax-flex ax-gap-2\">\n    @for (item of internalValue(); track $index) {\n      <span class=\"ax-px-2 ax-py-1 ax-text-xs ax-font-medium ax-rounded-lg {{ badgeClass }}\">{{\n        $any(item)[textField] | translate | async\n      }}</span>\n    } @empty {\n      <span class=\"ax-text-muted\">---</span>\n    }\n  </div>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [CommonModule, AXTranslationModule],\n  inputs: ['rawValue', 'rowData'],\n})\nexport class AXPProviderSelectWidgetColumnComponent extends AXPColumnWidgetComponent<unknown> {\n  protected valueField: string = this.options['valueField'] ?? 'value';\n  protected textField: string = this.options['textField'] ?? 'title';\n  protected badgeClass: string =\n    this.options['badgeClass'] ?? 'ax-primary-lightest dark:ax-primary-darker';\n  protected dataSource: unknown[] = (this.options['dataSource'] as unknown[]) ?? [];\n\n  protected internalValue = computed(() =>\n    castArray(this.rawValue)\n      .map((item: unknown) => this.extractItem(item))\n      .filter((c) => c != null),\n  );\n\n  private extractItem(item: unknown): Record<string, unknown> | null {\n    if (isNil(item)) {\n      return null;\n    }\n\n    const isDataSourceObjects =\n      Array.isArray(this.dataSource) &&\n      this.dataSource.length > 0 &&\n      typeof this.dataSource[0] === 'object';\n\n    if (typeof item !== 'object' && isDataSourceObjects) {\n      const foundItem = this.dataSource.find(\n        (ds: unknown) => (ds as Record<string, unknown>)[this.valueField] === item,\n      );\n      if (foundItem) {\n        return {\n          [this.valueField]: (foundItem as Record<string, unknown>)[this.valueField],\n          [this.textField]: (foundItem as Record<string, unknown>)[this.textField],\n        };\n      }\n    }\n\n    if (typeof item === 'object' && item !== null) {\n      return {\n        [this.valueField]: (item as Record<string, unknown>)?.[this.valueField],\n        [this.textField]: (item as Record<string, unknown>)?.[this.textField],\n      };\n    }\n\n    return {\n      [this.valueField]: item,\n      [this.textField]: item,\n    };\n  }\n}\n","import { AXClickEvent, AXStyleColorType } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\n@Component({\n  selector: 'axp-button-widget-column',\n  template: `\n    <ax-button [disabled]=\"disabled()\" [color]=\"color()\" look=\"link\" [text]=\"text()\" (onClick)=\"handleClick($event)\">\n      @if (icon() && text()) {\n        <ax-prefix>\n          <ax-icon>\n            <i class=\"fa-solid\" [class]=\"icon()\"></i>\n          </ax-icon>\n        </ax-prefix>\n      } @else if (icon() && !text()) {\n        <ax-icon>\n          <i class=\"fa-solid\" [class]=\"icon()\"></i>\n        </ax-icon>\n      }\n      @if (loading()) {\n        <ax-loading></ax-loading>\n      }\n    </ax-button>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXButtonModule, AXLoadingModule, AXDecoratorModule],\n  inputs: ['rawValue', 'rowData'],\n})\nexport class AXPButtonWidgetColumnComponent extends AXPColumnWidgetComponent<any> {\n  protected disabled = computed<boolean>(() => this.options['disabled']);\n  protected color = computed<AXStyleColorType>(() => this.options['color']?.id ?? 'primary');\n  protected text = computed<string | undefined>(() => this.options['text']);\n  protected loading = computed<boolean>(() => this.options['loading'] ?? false);\n  protected icon = computed<string | undefined>(() => this.options['icon']);\n\n  protected handleClick(e: AXClickEvent) {\n    // Handle click event if needed\n    console.log('Button clicked in column mode', e);\n  }\n}\n","import type { AXPCommandActionCallback } from '@acorex/platform/layout/entity-contracts';\nimport { AXClickEvent, AXStyleColorType, AXStyleLookType } from '@acorex/cdk/common';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\n\nimport { AXPLayoutBaseWidgetComponent, AXPWidgetCoreElementAPI } from '@acorex/platform/layout/widget-core';\nimport { AXPCommandService } from '@acorex/platform/runtime';\n\nimport { ChangeDetectionStrategy, Component, computed, EventEmitter, inject } from '@angular/core';\n\n@Component({\n  selector: 'axp-button-widget-view',\n  template: `\n    <ax-button [disabled]=\"disabled()\" [color]=\"color()\" [look]=\"look()\" [text]=\"text()\" (onClick)=\"handleClick($event)\">\n      @if (icon() && text()) {\n        <ax-prefix\n          ><ax-icon> <i class=\"fa-solid\" [class]=\"icon()\"></i> </ax-icon\n        ></ax-prefix>\n      } @else if (icon() && !text()) {\n        <ax-icon> <i class=\"fa-solid\" [class]=\"icon()\"></i> </ax-icon>\n      }\n      @if (loading()) {\n        <ax-loading> </ax-loading>\n      }\n    </ax-button>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXButtonModule, AXLoadingModule, AXDecoratorModule, AXBadgeModule],\n})\nexport class AXPButtonWidgetViewComponent extends AXPLayoutBaseWidgetComponent {\n  //#region ---- Services & Dependencies ----\n\n  private readonly commandService = inject(AXPCommandService);\n\n  //#endregion\n\n  //#region ---- Computed ----\n\n  protected disabled = computed<boolean>(() => this.options()['disabled']);\n  protected color = computed<AXStyleColorType>(() => this.options()['color']?.id ?? 'primary');\n  protected look = computed<AXStyleLookType>(() => this.options()['look']?.id ?? 'solid');\n  protected text = computed<string | undefined>(() => this.options()['text']);\n  protected loading = computed<boolean>(() => this.options()['loading'] ?? false);\n  protected icon = computed<string | undefined>(() => this.options()['icon']);\n\n  //#endregion\n\n  //#region ---- Events ----\n\n  public onClick = new EventEmitter<AXClickEvent>();\n\n  //#endregion\n\n  //#region ---- UI Handlers ----\n\n  protected handleClick(e: AXClickEvent): void {\n    this.onClick.emit(e);\n    void this.runOptionsCommand();\n  }\n\n  //#endregion\n\n  //#region ---- API ----\n\n  override api(): AXPWidgetCoreElementAPI {\n    return {\n      onClick: this.onClick,\n    };\n  }\n\n  //#endregion\n\n  //#region ---- Command execution ----\n\n  /**\n   * When **`options.command`** matches {@link AXPCommandActionCallback}, runs the registered **`AXPCommand`**\n   * via {@link AXPCommandService.execute} (`name` registry key + `options` payload).\n   */\n  private async runOptionsCommand(): Promise<void> {\n    const raw = this.options()['command'] as AXPCommandActionCallback | undefined;\n    if (raw == null || raw === '') {\n      return;\n    }\n\n    if (typeof raw === 'string') {\n      await this.safeExecute(raw.trim(), {});\n      return;\n    }\n\n    if (typeof raw === 'object' && typeof raw.name === 'string' && raw.name.trim().length > 0) {\n      await this.safeExecute(raw.name.trim(), (raw.options ?? {}) as Record<string, unknown>);\n    }\n  }\n\n  private async safeExecute(key: string, input: unknown): Promise<void> {\n    if (!this.commandService.exists(key)) {\n      console.warn('[AXP button-action] Command is not registered on AXPCommandRegistry:', key);\n      return;\n    }\n    try {\n      await this.commandService.execute(key, input);\n    } catch (err) {\n      console.warn('[AXP button-action] Command execution failed:', key, err);\n    }\n  }\n\n  //#endregion\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, cloneProperty } from '@acorex/platform/layout/widget-core-contracts';\nimport type { AXPCommandActionCallback } from '@acorex/platform/layout/entity-contracts';\nimport { AXStyleColorType, AXStyleLookType } from '@acorex/cdk/common';\n\nimport { AXP_WIDGETS_ACTION_CATEGORY, AXP_WIDGETS_ACTION_SUB_CONTROLS } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_DISABLED_PROPERTY,\n  AXP_ICON_PROPERTY,\n  AXP_IS_LOADING_PROPERTY,\n  AXP_NAME_PROPERTY,\n  AXP_STYLE_COLOR_PROPERTY,\n  AXP_STYLE_LOOK_PROPERTY,\n  AXP_TEXT_PROPERTY,\n} from '../../../properties';\n\nexport const AXPButtonWidget: AXPWidgetConfig = {\n  name: 'button-action',\n  title: '@platform-layout-widgets:widgets.button-action.title',\n  description: '@platform-layout-widgets:widgets.button-action.description',\n  icon: 'fa-light fa-play',\n  categories: [AXP_WIDGETS_ACTION_CATEGORY],\n  subCategory: AXP_WIDGETS_ACTION_SUB_CONTROLS,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  type: 'action',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DISABLED_PROPERTY,\n    cloneProperty(AXP_TEXT_PROPERTY, { schema: { defaultValue: 'Click Here' } }),\n    AXP_STYLE_COLOR_PROPERTY,\n    AXP_STYLE_LOOK_PROPERTY,\n    AXP_ICON_PROPERTY,\n    AXP_IS_LOADING_PROPERTY,\n  ],\n  components: {\n    designer: {\n      component: () => import('./button-widget-designer.component').then((c) => c.AXPButtonWidgetDesignerComponent),\n    },\n    view: {\n      component: () => import('./button-widget-view.component').then((c) => c.AXPButtonWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./button-widget-view.component').then((c) => c.AXPButtonWidgetViewComponent),\n    },\n    column: {\n      component: () => import('./button-widget-column.component').then((c) => c.AXPButtonWidgetColumnComponent),\n    },\n  },\n};\n\nexport interface AXPButtonWidgetDesignerOptions {\n  disabled?: boolean;\n  color?: AXStyleColorType;\n  look?: AXStyleLookType;\n  text?: string;\n  loading?: boolean;\n  icon?: string;\n  /** Registry key (`string`) or `{ name, options }` passed to `AXPCommandService.execute`. */\n  command?: AXPCommandActionCallback;\n}\n\nexport interface AXPButtonWidgetViewOptions {\n  disabled?: boolean;\n  color?: AXStyleColorType;\n  look?: AXStyleLookType;\n  text?: string;\n  loading?: boolean;\n  icon?: string;\n  /** Registry key (`string`) or `{ name, options }` passed to `AXPCommandService.execute`. */\n  command?: AXPCommandActionCallback;\n}\n\nexport interface AXPButtonWidgetEditOptions {\n  disabled?: boolean;\n  color?: AXStyleColorType;\n  look?: AXStyleLookType;\n  text?: string;\n  loading?: boolean;\n  icon?: string;\n  /** Registry key (`string`) or `{ name, options }` passed to `AXPCommandService.execute`. */\n  command?: AXPCommandActionCallback;\n}\n\nexport interface AXPButtonWidgetColumnOptions {\n  disabled?: boolean;\n  color?: AXStyleColorType;\n  text?: string;\n  loading?: boolean;\n  icon?: string;\n}\n\nexport interface AXPButtonWidgetOptions {\n  designer: AXPButtonWidgetDesignerOptions;\n  view: AXPButtonWidgetViewOptions;\n  edit: AXPButtonWidgetEditOptions;\n  column: AXPButtonWidgetColumnOptions;\n}\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    buttonAction: 'button-action';\n  }\n}\n","//#region ----   Imports   ----\n\nimport { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\n\n//#endregion\n\n//#region ----   Widget Config   ----\n\nexport const AXPConditionBuilderWidget: AXPWidgetConfig = {\n  name: 'condition-builder-editor',\n  title: 'Condition Builder',\n  description: 'Builds filter conditions (field/operator/value) with AND/OR groups',\n  icon: 'fa-light fa-filter',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  groups: [AXPWidgetGroupEnum.BaseWidget],\n  type: 'editor',\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY],\n  components: {\n    view: {\n      component: () =>\n        import('./condition-builder-widget-view.component').then(\n          (c) => c.AXPConditionBuilderWidgetViewComponent\n        ),\n      properties: [],\n    },\n    edit: {\n      component: () =>\n        import('./condition-builder-widget-edit.component').then(\n          (c) => c.AXPConditionBuilderWidgetEditComponent\n        ),\n    },\n    column: {\n      component: () =>\n        import('./condition-builder-widget-edit.component').then(\n          (c) => c.AXPConditionBuilderWidgetEditComponent\n        ),\n    },\n    designer: {\n      component: () =>\n        import('./condition-builder-widget-edit.component').then(\n          (c) => c.AXPConditionBuilderWidgetEditComponent\n        ),\n    },\n  },\n};\n\n//#endregion\n","//#region ----   Imports   ----\n\nimport { AXPFilterClause, AXPFilterDefinition } from '@acorex/platform/contracts';\nimport { AXPConditionBuilderComponent } from '@acorex/platform/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, OnInit } from '@angular/core';\n\n//#endregion\n\nconst LOG_PREFIX = '[AXPConditionBuilderWidgetEdit]';\n\n//#region ----   Component   ----\n\n@Component({\n  selector: 'axp-condition-builder-widget-edit',\n  template: `\n    <axp-condition-builder\n      [value]=\"valueForBuilder()\"\n      [filterDefinitions]=\"filterDefinitions()\"\n      (valueChange)=\"onValueChange($event)\"\n    />\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPConditionBuilderComponent],\n})\nexport class AXPConditionBuilderWidgetEditComponent\n  extends AXPValueWidgetComponent<AXPFilterClause>\n  implements OnInit\n{\n  //#region ----   Computed   ----\n\n  protected readonly filterDefinitions = computed<AXPFilterDefinition[]>(() => {\n    const defs = (this.options()['filterDefinitions'] as AXPFilterDefinition[]) ?? [];\n    console.debug(LOG_PREFIX, 'filterDefinitions computed', {\n      count: defs?.length ?? 0,\n      rawType: typeof this.options()['filterDefinitions'],\n      firstField: defs?.[0]?.field,\n    });\n    return defs;\n  });\n\n  /** Exposes value for template with logging */\n  protected readonly valueForBuilder = computed(() => {\n    const v = this.getValue();\n    console.debug(LOG_PREFIX, 'valueForBuilder (getValue)', {\n      fullPath: this.fullPath(),\n      hasValue: v != null,\n      filtersCount: v?.filters?.length ?? 0,\n      value: v,\n    });\n    return v;\n  });\n\n  //#endregion\n\n  //#region ----   Lifecycle   ----\n\n  override ngOnInit(): void {\n    super.ngOnInit();\n    console.debug(LOG_PREFIX, 'ngOnInit', {\n      name: this.name,\n      path: this.path,\n      fullPath: this.fullPath(),\n      initialValue: this.getValue(),\n    });\n  }\n\n  //#endregion\n\n  //#region ----   Event Handlers   ----\n\n  onValueChange(value: AXPFilterClause): void {\n    console.debug(LOG_PREFIX, 'onValueChange', {\n      fullPath: this.fullPath(),\n      value,\n      hasFilters: !!(value?.filters?.length),\n    });\n    this.setValue(value);\n  }\n\n  //#endregion\n}\n\n//#endregion\n","//#region ----   Imports   ----\n\nimport { AXPFilterClause, AXPFilterDefinition } from '@acorex/platform/contracts';\nimport { AXPConditionBuilderComponent } from '@acorex/platform/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\n//#endregion\n\n//#region ----   Component   ----\n\n@Component({\n  selector: 'axp-condition-builder-widget-view',\n  template: `\n    <axp-condition-builder\n      [value]=\"getValue()\"\n      [filterDefinitions]=\"filterDefinitions()\"\n    />\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPConditionBuilderComponent],\n})\nexport class AXPConditionBuilderWidgetViewComponent extends AXPValueWidgetComponent<AXPFilterClause> {\n  //#region ----   Computed   ----\n\n  protected readonly filterDefinitions = computed(() => {\n    return ((this.options()['filterDefinitions'] ?? []) as AXPFilterDefinition[]);\n  });\n\n  //#endregion\n}\n\n//#endregion\n","export interface AXPStatusVisual {\n    chipClass?: string;\n    chipStyle?: Record<string, string>;\n    iconClass?: string;\n    iconStyle?: Record<string, string>;\n}\n\nconst SEMANTIC_COLOR_CLASS_MAP: Record<string, { chip: string; icon: string }> = {\n    primary: { chip: 'axp-status-chip--primary', icon: 'axp-status-icon--primary' },\n    secondary: { chip: 'axp-status-chip--secondary', icon: 'axp-status-icon--secondary' },\n    success: { chip: 'axp-status-chip--success', icon: 'axp-status-icon--success' },\n    warning: { chip: 'axp-status-chip--warning', icon: 'axp-status-icon--warning' },\n    danger: { chip: 'axp-status-chip--danger', icon: 'axp-status-icon--danger' },\n    info: { chip: 'axp-status-chip--info', icon: 'axp-status-icon--info' },\n    accent1: { chip: 'axp-status-chip--accent1', icon: 'axp-status-icon--accent1' },\n    accent2: { chip: 'axp-status-chip--accent2', icon: 'axp-status-icon--accent2' },\n    accent3: { chip: 'axp-status-chip--accent3', icon: 'axp-status-icon--accent3' },\n    neutral: { chip: 'axp-status-chip--neutral', icon: 'axp-status-icon--neutral' },\n};\n\nconst EXPLICIT_COLOR_PATTERN =\n    /^(#(?:[0-9a-f]{3,8})|(rgb|rgba|hsl|hsla)\\s*\\(|var\\()|^[0-9.]+\\s*(deg|turn|rad)/i;\n\n/**\n * Resolves the visual representation (class names or inline styles) for\n * a status color value. Semantic color tokens map to predefined classes,\n * otherwise falls back to inline styles for custom colors.\n */\nexport function resolveStatusVisual(color?: string | null): AXPStatusVisual {\n    if (!color) {\n        return {};\n    }\n\n    const normalized = color.trim().toLowerCase();\n    const semantic = SEMANTIC_COLOR_CLASS_MAP[normalized];\n\n    if (semantic) {\n        return {\n            chipClass: semantic.chip,\n            iconClass: semantic.icon,\n        };\n    }\n\n    if (!EXPLICIT_COLOR_PATTERN.test(normalized)) {\n        // Treat unknown identifiers as custom CSS color keywords\n        // and fall back to inline styling.\n    }\n\n    const style = {\n        'background-color': color,\n        color: '#ffffff',\n    };\n    return {\n        chipStyle: style,\n        iconStyle: style,\n    };\n}\n\n\n","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\n\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { AXPStatusVisual, resolveStatusVisual } from '../../advance/status/status-widget.utils';\n@Component({\n  selector: 'axp-checkbox-widget-column',\n  template: ` <div>\n    @if (this.rawValue === null || this.rawValue === undefined) {\n      @if (nullText) {\n        <span>{{ nullText | translate | async }}</span>\n      } @else {\n        <span>---</span>\n      }\n    } @else if (this.rawValue) {\n      @if (trulyText) {\n        @let visual = getVisual(true);\n        <span\n          class=\"ax-inline-flex ax-items-center ax-gap-1.5 ax-rounded-md ax-px-2 ax-py-0.5 ax-text-xs ax-font-medium\"\n          [ngClass]=\"visual.chipClass\"\n          [ngStyle]=\"visual.chipStyle\"\n        >\n          {{ (trulyText | translate | async)! }}\n        </span>\n      } @else {\n        @if (negative) {\n          <ax-icon class=\"fa-solid fa-xmark  ax-text-danger-500\"> </ax-icon>\n        } @else {\n          <ax-icon class=\"fa-solid fa-check ax-text-success\"> </ax-icon>\n        }\n      }\n    } @else {\n      @if (falsyText) {\n        @let visual = getVisual(false);\n        <span\n          class=\"ax-inline-flex ax-items-center ax-gap-1.5 ax-rounded-md ax-px-2 ax-py-0.5 ax-text-xs ax-font-medium\"\n          [ngClass]=\"visual.chipClass\"\n          [ngStyle]=\"visual.chipStyle\"\n        >\n          {{ (falsyText | translate | async)! }}\n        </span>\n      } @else {\n        @if (negative) {\n          <ax-icon class=\"fa-solid fa-check ax-text-success\"> </ax-icon>\n        } @else {\n          <ax-icon class=\"fa-solid fa-xmark  ax-text-danger-500\"> </ax-icon>\n        }\n      }\n    }\n  </div>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [CommonModule, AXDecoratorModule, AXTranslationModule],\n  inputs: ['rawValue', 'rowData'],\n})\nexport class AXPCheckBoxWidgetColumnComponent extends AXPColumnWidgetComponent<boolean | null | undefined> {\n  protected negative = this.options['negative'] as boolean;\n  protected trulyText = this.options['trulyText'] as string;\n  protected falsyText = this.options['falsyText'] as string;\n\n  protected getVisual(isTrue: boolean): AXPStatusVisual {\n    const semantic = isTrue ? (this.negative ? 'danger' : 'success') : this.negative ? 'success' : 'danger';\n    return resolveStatusVisual(semantic);\n  }\n}\n","import { AXCheckBoxModule } from '@acorex/components/check-box';\n\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, HostBinding } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n  selector: 'axp-checkbox-widget-designer',\n  template: `\n    <ax-check-box [ngModel]=\"this.getValue()\" [disabled]=\"disabled()\" [readonly]=\"readonly()\">\n      @if (label()) {\n        <ax-label>{{ label() }}</ax-label>\n      }\n    </ax-check-box>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXCheckBoxModule, FormsModule, AXLabelModule],\n})\nexport class AXPCheckBoxWidgetDesignerComponent extends AXPValueWidgetComponent<boolean | null> {\n  protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n  protected readonly = computed<boolean>(() => this.options()['readonly'] as boolean);\n  protected label = computed<string>(() => this.options()['label'] as string);\n\n  @HostBinding('class')\n  private get __class(): string {\n    const cls: any = {};\n    //\n    cls['ax-inline-block'] = true;\n    return cls;\n  }\n}\n","import { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n  selector: 'axp-checkbox-widget-edit',\n  template: `\n    <ax-check-box\n      [ngModel]=\"this.getValue()\"\n      [disabled]=\"disabled()\"\n      [readonly]=\"readonly()\"\n      (onValueChanged)=\"handleValueChanged($event)\"\n    >\n      @for (validation of validationRules(); track $index) {\n        <ax-validation-rule\n          [rule]=\"validation.rule\"\n          [message]=\"validation.options?.message\"\n          [options]=\"validation.options\"\n        ></ax-validation-rule>\n      }\n      @if (label()) {\n        <ax-label>{{ label() }}</ax-label>\n      }\n    </ax-check-box>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXCheckBoxModule, FormsModule, AXFormModule, AXLabelModule, AXValidationModule],\n})\nexport class AXPCheckBoxWidgetEditComponent extends AXPValueWidgetComponent<boolean | null> {\n  protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n  protected readonly = computed<boolean>(() => this.options()['readonly'] as boolean);\n  protected label = computed<string>(() => this.options()['label'] as string);\n}\n","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { resolveStatusVisual } from '../../advance/status/status-widget.utils';\n\n@Component({\n  selector: 'axp-checkbox-widget-view',\n  template: `\n    <div class=\"ax-font-semibold\">\n      @if (this.getValue() === null || this.getValue() === undefined) {\n        @if (nullText()) {\n          <span>{{ nullText() | translate | async }}</span>\n        } @else {\n          <span>---</span>\n        }\n      } @else if (this.getValue()) {\n        @if (trulyText()) {\n          @let visual = trueVisual();\n          <span\n            class=\"ax-inline-flex ax-items-center ax-gap-1.5 ax-rounded-md ax-px-2 ax-py-0.5 ax-text-xs ax-font-medium\"\n            [ngClass]=\"visual.chipClass\"\n            [ngStyle]=\"visual.chipStyle\"\n          >\n            {{ (trulyText() | translate | async)! }}\n          </span>\n        } @else {\n          @if (negative()) {\n            <ax-icon class=\"fa-solid fa-xmark  ax-text-danger-500\"> </ax-icon>\n          } @else {\n            <ax-icon class=\"fa-solid fa-check ax-text-success\"> </ax-icon>\n          }\n        }\n      } @else {\n        @if (falsyText()) {\n          @let visual = falseVisual();\n          <span\n            class=\"ax-inline-flex ax-items-center ax-gap-1.5 ax-rounded-md ax-px-2 ax-py-0.5 ax-text-xs ax-font-medium\"\n            [ngClass]=\"visual.chipClass\"\n            [ngStyle]=\"visual.chipStyle\"\n          >\n            {{ (falsyText() | translate | async)! }}\n          </span>\n        } @else {\n          @if (negative()) {\n            <ax-icon class=\"fa-solid fa-check ax-text-success\"> </ax-icon>\n          } @else {\n            <ax-icon class=\"fa-solid fa-xmark  ax-text-danger-500\"> </ax-icon>\n          }\n        }\n      }\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [CommonModule, AXDecoratorModule, AXTranslationModule],\n})\nexport class AXPCheckBoxWidgetViewComponent extends AXPValueWidgetComponent<boolean | null | undefined> {\n  protected negative = computed<boolean>(() => this.options()['negative'] as boolean);\n  protected trulyText = computed<string>(() => this.options()['trulyText'] as string);\n  protected falsyText = computed<string>(() => this.options()['falsyText'] as string);\n  protected nullText = computed<string>(() => this.options()['nullText'] as string);\n  protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n  protected readonly = computed<boolean>(() => this.options()['readonly'] as boolean);\n  protected label = computed<string>(() => this.options()['label'] as string);\n\n  protected trueVisual = computed(() =>\n    resolveStatusVisual(this.negative() ? 'danger' : 'success'),\n  );\n  protected falseVisual = computed(() =>\n    resolveStatusVisual(this.negative() ? 'success' : 'danger'),\n  );\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_CHOICE } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_DATA_PATH_PROPERTY,\n  AXP_DISABLED_PROPERTY,\n  AXP_LABEL_PROPERTY,\n  AXP_READONLY_PROPERTY,\n  AXP_TRIGGERS_PROPERTY,\n  booleanDefaultProperty,\n} from '../../../properties';\nimport { AXP_NAME_PROPERTY } from '../../../properties/general.props';\n\nexport const AXPCheckBoxWidget: AXPWidgetConfig<AXPCheckBoxWidgetConfigType> = {\n  name: 'checkbox-editor',\n  title: '@platform-layout-widgets:widgets.checkbox-editor.title',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_CHOICE,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  description: '@platform-layout-widgets:widgets.checkbox-editor.description',\n  icon: 'fa-light fa-square-check',\n  defaultFilterWidgetName: 'boolean-filter',\n  type: 'editor',\n  options: {\n    needLabel: false,\n  },\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    AXP_LABEL_PROPERTY,\n    AXP_READONLY_PROPERTY,\n    AXP_DISABLED_PROPERTY,\n    AXP_TRIGGERS_PROPERTY,\n    // AXP_VALIDATION_PROPERTY,\n    booleanDefaultProperty(),\n  ],\n  components: {\n    designer: {\n      component: () => import('./checkbox-widget-designer.component').then((c) => c.AXPCheckBoxWidgetDesignerComponent),\n    },\n    view: {\n      component: () => import('./checkbox-widget-view.component').then((c) => c.AXPCheckBoxWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./checkbox-widget-edit.component').then((c) => c.AXPCheckBoxWidgetEditComponent),\n    },\n    column: {\n      component: () => import('./checkbox-widget-column.component').then((c) => c.AXPCheckBoxWidgetColumnComponent),\n    },\n  },\n};\n\nexport type AXPCheckBoxWidgetConfigType = {\n  type: 'editor';\n};\n\nexport interface AXPCheckBoxWidgetDesignerOptions {\n  disabled?: boolean;\n  readonly?: boolean;\n  label?: string;\n}\n\nexport interface AXPCheckBoxWidgetViewOptions {\n  negative?: boolean;\n  trulyText?: string;\n  falsyText?: string;\n  nullText?: string;\n  disabled?: boolean;\n  readonly?: boolean;\n  label?: string;\n}\n\nexport interface AXPCheckBoxWidgetEditOptions {\n  disabled?: boolean;\n  readonly?: boolean;\n  label?: string;\n}\n\nexport interface AXPCheckBoxWidgetColumnOptions {\n  negative?: boolean;\n  trulyText?: string;\n  falsyText?: string;\n  nullText?: string;\n}\n\nexport interface AXPCheckBoxWidgetOptions {\n  designer: AXPCheckBoxWidgetDesignerOptions;\n  view: AXPCheckBoxWidgetViewOptions;\n  edit: AXPCheckBoxWidgetEditOptions;\n  print: AXPCheckBoxWidgetEditOptions;\n  column: AXPCheckBoxWidgetColumnOptions;\n}\n","import { AXColorUtil } from '@acorex/core/utils';\nimport { AXPClipBoardService } from '@acorex/platform/common';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\n@Component({\n  selector: 'axp-color-box-widget-column',\n  template: `<div class=\"ax-flex ax-justify-start ax-items-center ax-gap-2 ax-group ax-w-fit\">\n    <div class=\"ax-size-4 ax-rounded-full ax-border\" [style.backgroundColor]=\"rgba()\"></div>\n    <span>{{ rawValue }}</span>\n    <i\n      (click)=\"clipboard.copy('Color', rawValue)\"\n      class=\"fa-solid fa-copy ax-text-neutral-400 dark:hover:ax-text-neutral-100 hover:ax-text-neutral-900 group-hover:ax-visible ax-invisible\"\n    ></i>\n  </div>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [],\n  inputs: ['rawValue', 'rowData'],\n})\nexport class AXPColorBoxWidgetColumnComponent extends AXPColumnWidgetComponent<any> {\n  rgba = () => AXColorUtil.toString(this.rawValue, 'rgba');\n  protected clipboard = inject(AXPClipBoardService);\n}\n","import { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { AXColorBoxModule } from '@acorex/components/color-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { ChangeDetectionStrategy, Component, computed, HostBinding } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n  selector: 'axp-color-box-widget-designer',\n  template: `\n    <ax-color-box [disabled]=\"disabled()\" [readonly]=\"readonly()\" [ngModel]=\"getValue()\" [placeholder]=\"placeholder()\">\n      @if (hasClearButton()) {\n        <ax-clear-button></ax-clear-button>\n      }\n    </ax-color-box>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [FormsModule, AXColorBoxModule, AXDecoratorModule, AXFormModule],\n})\nexport class AXPColorBoxWidgetDesignerComponent extends AXPValueWidgetComponent<string> {\n  protected placeholder = computed<string>(() => this.options()['placeholder'] as string);\n  protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n  protected readonly = computed<boolean>(() => this.options()['readonly'] as boolean);\n  protected hasClearButton = computed<boolean>(() => this.options()['hasClearButton'] as boolean);\n\n  @HostBinding('class')\n  private get __class(): string {\n    const cls: any = {};\n    cls[`ax-block`] = true;\n    cls[`ax-flex-1`] = true;\n    return cls;\n  }\n}\n","import { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { AXColorBoxModule } from '@acorex/components/color-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { ChangeDetectionStrategy, Component, computed, HostBinding } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n  selector: 'axp-color-box-widget-edit',\n  template: `\n    <ax-color-box\n      [disabled]=\"disabled()\"\n      [readonly]=\"readonly()\"\n      [ngModel]=\"getValue()\"\n      [placeholder]=\"placeholder()\"\n      (onValueChanged)=\"handleValueChanged($event)\"\n    >\n      @for (validation of validationRules(); track $index) {\n        <ax-validation-rule\n          [rule]=\"validation.rule\"\n          [message]=\"validation.options?.message\"\n          [options]=\"validation.options\"\n        ></ax-validation-rule>\n      }\n      @if (hasClearButton()) {\n        <ax-clear-button></ax-clear-button>\n      }\n    </ax-color-box>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [FormsModule, AXColorBoxModule, AXDecoratorModule, AXFormModule],\n})\nexport class AXPColorBoxWidgetEditComponent extends AXPValueWidgetComponent<string> {\n  protected placeholder = computed<string>(() => this.options()['placeholder'] as string);\n  protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n  protected readonly = computed<boolean>(() => this.options()['readonly'] as boolean);\n  protected hasClearButton = computed<boolean>(() => this.options()['hasClearButton'] as boolean);\n\n  @HostBinding('class')\n  private get __class(): string {\n    const cls: any = {};\n    cls[`ax-flex-1`] = true;\n    return cls;\n  }\n}\n","import { AXColorUtil } from '@acorex/core/utils';\nimport { AXPClipBoardService } from '@acorex/platform/common';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\n\n@Component({\n  selector: 'axp-color-box-widget-view',\n  template: `<div class=\"ax-flex ax-justify-start ax-items-center ax-gap-2 ax-group ax-w-fit\">\n    <div class=\"ax-size-4 ax-rounded-full ax-border\" [style.backgroundColor]=\"rgba()\"></div>\n    <span>{{ getValue() }}</span>\n    <i\n      (click)=\"clipboard.copy('Color', getValue())\"\n      class=\"fa-solid fa-copy ax-text-neutral-400 dark:hover:ax-text-neutral-100 hover:ax-text-neutral-900 group-hover:ax-visible ax-invisible\"\n    ></i>\n  </div>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPColorBoxWidgetViewComponent extends AXPValueWidgetComponent<any> {\n  rgba = computed(() => AXColorUtil.toString(this.getValue(), 'rgba'));\n  protected clipboard = inject(AXPClipBoardService);\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_VISUAL } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_DATA_PATH_PROPERTY,\n  AXP_DISABLED_PROPERTY,\n  AXP_HAS_CLEAR_BUTTON_PROPERTY,\n  AXP_PLACEHOLDER_PROPERTY,\n  AXP_READONLY_PROPERTY,\n} from '../../../properties';\nimport { AXP_NAME_PROPERTY } from '../../../properties/general.props';\n\nexport const AXPColorBoxWidget: AXPWidgetConfig = {\n  name: 'color-editor',\n  title: '@platform-layout-widgets:widgets.color-editor.title',\n  description: '@platform-layout-widgets:widgets.color-editor.description',\n  icon: 'fa-light fa-palette',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_VISUAL,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  type: 'editor',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    AXP_READONLY_PROPERTY,\n    AXP_DISABLED_PROPERTY,\n    AXP_PLACEHOLDER_PROPERTY,\n    AXP_HAS_CLEAR_BUTTON_PROPERTY,\n  ],\n  components: {\n    designer: {\n      component: () =>\n        import('./color-box-widget-designer.component').then((c) => c.AXPColorBoxWidgetDesignerComponent),\n    },\n    view: {\n      component: () => import('./color-box-widget-view.component').then((c) => c.AXPColorBoxWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./color-box-widget-edit.component').then((c) => c.AXPColorBoxWidgetEditComponent),\n    },\n    column: {\n      component: () => import('./color-box-widget-column.component').then((c) => c.AXPColorBoxWidgetColumnComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    color: 'color-editor';\n  }\n}\n\nexport interface AXPColorBoxWidgetDesignerOptions {\n  placeholder?: string;\n  disabled?: boolean;\n  readonly?: boolean;\n  hasClearButton?: boolean;\n}\n\nexport interface AXPColorBoxWidgetViewOptions {}\n\nexport interface AXPColorBoxWidgetEditOptions {\n  placeholder?: string;\n  disabled?: boolean;\n  readonly?: boolean;\n  hasClearButton?: boolean;\n}\n\nexport interface AXPColorBoxWidgetColumnOptions {}\n\nexport interface AXPColorBoxWidgetOptions {\n  designer: AXPColorBoxWidgetDesignerOptions;\n  view: AXPColorBoxWidgetViewOptions;\n  edit: AXPColorBoxWidgetEditOptions;\n  print: AXPColorBoxWidgetEditOptions;\n  column: AXPColorBoxWidgetColumnOptions;\n}\n","import { AXColorUtil } from '@acorex/core/utils';\nimport { AXPClipBoardService } from '@acorex/platform/common';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { isNil } from 'lodash-es';\n\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\n\n@Component({\n  selector: 'axp-color-palette-widget-column',\n  template: `\n    @if (hasValue()) {\n      <div class=\"ax-flex ax-justify-start ax-items-center ax-gap-2 ax-group ax-w-fit\">\n        <div class=\"ax-size-4 ax-rounded-full ax-border\" [style.backgroundColor]=\"rgba()\"></div>\n        <span>{{ rawValue }}</span>\n        <i\n          (click)=\"clipboard.copy('Color', rawValue)\"\n          class=\"fa-solid fa-copy ax-text-neutral-400 dark:hover:ax-text-neutral-100 hover:ax-text-neutral-900 group-hover:ax-visible ax-invisible\"\n        ></i>\n      </div>\n    } @else {\n      <span class=\"ax-text-muted\">---</span>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [],\n  inputs: ['rawValue', 'rowData'],\n})\nexport class AXPColorPaletteWidgetColumnComponent extends AXPColumnWidgetComponent<any> {\n  //#region ----   Computed Properties   ----\n\n  hasValue = () => !isNil(this.rawValue);\n  rgba = () => AXColorUtil.toString(this.rawValue, 'rgba');\n\n  //#endregion\n\n  //#region ----   Services & Dependencies   ----\n\n  protected clipboard = inject(AXPClipBoardService);\n\n  //#endregion\n}\n","import { AXPColorPaletteService } from '@acorex/platform/core';\nimport { AXPColorPalettePickerComponent } from '@acorex/platform/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, effect, HostBinding, inject, signal } from '@angular/core';\n\n@Component({\n  selector: 'axp-color-palette-widget-designer',\n  template: `\n    <axp-color-palette-picker\n      [colors]=\"colorCodes()\"\n      [selectedColor]=\"getValue()\"\n      [disabled]=\"disabled()\"\n      [readonly]=\"readonly()\"\n      (colorSelected)=\"handleColorSelect($event)\"\n    ></axp-color-palette-picker>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPColorPalettePickerComponent],\n})\nexport class AXPColorPaletteWidgetDesignerComponent extends AXPValueWidgetComponent<string> {\n  //#region ----   Dependencies   ----\n\n  private readonly paletteService = inject(AXPColorPaletteService);\n\n  //#endregion\n\n  //#region ----   State   ----\n\n  protected colorCodes = signal<string[]>([]);\n\n  //#endregion\n\n  //#region ----   Computed Properties   ----\n\n  protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n  protected readonly = computed<boolean>(() => this.options()['readonly'] as boolean);\n\n  //#endregion\n\n  //#region ----   Effects   ----\n\n  /**\n   * Load color palette based on swatches option\n   */\n  private loadPaletteEffect = effect(async () => {\n    const swatches = this.options()['swatches'];\n\n    // If swatches is a string, resolve it from the palette provider\n    if (typeof swatches === 'string') {\n      const palette = await this.paletteService.getPalette(swatches);\n      if (palette) {\n        this.colorCodes.set(palette.colors);\n      } else {\n        console.warn(`Color palette \"${swatches}\" not found`);\n        await this.loadDefaultPalette();\n      }\n      return;\n    }\n\n    // If swatches is an array, use it directly\n    if (Array.isArray(swatches)) {\n      this.colorCodes.set(swatches);\n      return;\n    }\n\n    // Load default palette if no swatches configured\n    await this.loadDefaultPalette();\n  });\n\n  //#endregion\n\n  //#region ----   Lifecycle   ----\n\n  override async ngOnInit(): Promise<void> {\n    super.ngOnInit();\n    // Preload palettes cache before effect runs\n    await this.paletteService.reload();\n  }\n\n  //#endregion\n\n  //#region ----   Event Handlers   ----\n\n  protected handleColorSelect(color: string | null | undefined): void {\n    this.setValue(color ?? null);\n  }\n\n  //#endregion\n\n  //#region ----   Private Methods   ----\n\n  /**\n   * Load the default material-design palette\n   */\n  private async loadDefaultPalette(): Promise<void> {\n    const defaultPalette = await this.paletteService.getDefaultPalette();\n    this.colorCodes.set(defaultPalette.colors);\n  }\n\n  //#endregion\n\n  //#region ----   Host Bindings   ----\n\n  @HostBinding('class')\n  private get __class(): string {\n    const cls: any = {};\n    cls[`ax-block`] = true;\n    cls[`ax-flex-1`] = true;\n    return cls;\n  }\n\n  //#endregion\n}\n\n","import { AXPColorPaletteService } from '@acorex/platform/core';\nimport { AXPColorPalettePickerComponent } from '@acorex/platform/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, effect, HostBinding, inject, signal } from '@angular/core';\n\n@Component({\n  selector: 'axp-color-palette-widget-edit',\n  template: `\n    <axp-color-palette-picker\n      [colors]=\"colorCodes()\"\n      [selectedColor]=\"getValue()\"\n      [disabled]=\"disabled()\"\n      [readonly]=\"readonly()\"\n      (colorSelected)=\"handleColorSelect($event)\"\n    ></axp-color-palette-picker>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPColorPalettePickerComponent],\n})\nexport class AXPColorPaletteWidgetEditComponent extends AXPValueWidgetComponent<string> {\n  //#region ----   Dependencies   ----\n\n  private readonly paletteService = inject(AXPColorPaletteService);\n\n  //#endregion\n\n  //#region ----   State   ----\n\n  protected colorCodes = signal<string[]>([]);\n\n  //#endregion\n\n  //#region ----   Computed Properties   ----\n\n  protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n  protected readonly = computed<boolean>(() => this.options()['readonly'] as boolean);\n\n  //#endregion\n\n  //#region ----   Effects   ----\n\n  /**\n   * Load color palette based on swatches option\n   */\n  private loadPaletteEffect = effect(async () => {\n    const swatches = this.options()['swatches'];\n\n    // If swatches is a string, resolve it from the palette provider\n    if (typeof swatches === 'string') {\n      const palette = await this.paletteService.getPalette(swatches);\n      if (palette) {\n        this.colorCodes.set(palette.colors);\n      } else {\n        console.warn(`Color palette \"${swatches}\" not found`);\n        await this.loadDefaultPalette();\n      }\n      return;\n    }\n\n    // If swatches is an array, use it directly\n    if (Array.isArray(swatches)) {\n      this.colorCodes.set(swatches);\n      return;\n    }\n\n    // Load default palette if no swatches configured\n    await this.loadDefaultPalette();\n  });\n\n  //#endregion\n\n  //#region ----   Lifecycle   ----\n\n  override async ngOnInit(): Promise<void> {\n    super.ngOnInit();\n    // Preload palettes cache before effect runs\n    await this.paletteService.reload();\n  }\n\n  //#endregion\n\n  //#region ----   Event Handlers   ----\n\n  protected handleColorSelect(color: string | null | undefined): void {\n    this.setValue(color ?? null);\n  }\n\n  //#endregion\n\n  //#region ----   Private Methods   ----\n\n  /**\n   * Load the default material-design palette\n   */\n  private async loadDefaultPalette(): Promise<void> {\n    const defaultPalette = await this.paletteService.getDefaultPalette();\n    this.colorCodes.set(defaultPalette.colors);\n  }\n\n  //#endregion\n\n  //#region ----   Host Bindings   ----\n\n  @HostBinding('class')\n  private get __class(): string {\n    const cls: any = {};\n    cls[`ax-flex-1`] = true;\n    return cls;\n  }\n\n  //#endregion\n}\n\n","import { AXColorUtil } from '@acorex/core/utils';\nimport { AXPClipBoardService } from '@acorex/platform/common';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { isNil } from 'lodash-es';\n\nimport { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\n\n@Component({\n    selector: 'axp-color-palette-widget-view',\n    template: `\n    @if (hasValue()) {\n      <div class=\"ax-flex ax-justify-start ax-items-center ax-gap-2 ax-group ax-w-fit\">\n        <div class=\"ax-size-4 ax-rounded-full ax-border\" [style.backgroundColor]=\"rgba()\"></div>\n        <span>{{ getValue() }}</span>\n        <i\n          (click)=\"clipboard.copy('Color', getValue())\"\n          class=\"fa-solid fa-copy ax-text-neutral-400 dark:hover:ax-text-neutral-100 hover:ax-text-neutral-900 group-hover:ax-visible ax-invisible\"\n        ></i>\n      </div>\n    } @else {\n      <span class=\"ax-text-muted\">---</span>\n    }\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPColorPaletteWidgetViewComponent extends AXPValueWidgetComponent<any> {\n    //#region ----   Computed Properties   ----\n\n    hasValue = computed(() => !isNil(this.getValue()));\n    rgba = computed(() => AXColorUtil.toString(this.getValue(), 'rgba'));\n\n    //#endregion\n\n    //#region ----   Services & Dependencies   ----\n\n    protected clipboard = inject(AXPClipBoardService);\n\n    //#endregion\n}\n\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_VISUAL } from '@acorex/platform/layout/widget-core';\nimport {\n    AXP_DATA_PATH_PROPERTY,\n    AXP_DISABLED_PROPERTY,\n    AXP_HAS_CLEAR_BUTTON_PROPERTY,\n    AXP_READONLY_PROPERTY,\n} from '../../../properties';\nimport { AXP_DATA_PROPERTY_GROUP } from '../../../properties/groups';\nimport { AXP_NAME_PROPERTY } from '../../../properties/general.props';\n\nexport const AXPColorPaletteWidget: AXPWidgetConfig = {\n    name: 'color-palette-editor',\n    title: '@platform-layout-widgets:widgets.color-palette-editor.title',\n    description: '@platform-layout-widgets:widgets.color-palette-editor.description',\n    icon: 'fa-light fa-swatchbook',\n    categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_VISUAL,\n    groups: [AXPWidgetGroupEnum.FormElement],\n    type: 'editor',\n    properties: [\n        AXP_NAME_PROPERTY,\n        AXP_DATA_PATH_PROPERTY,\n        AXP_READONLY_PROPERTY,\n        AXP_DISABLED_PROPERTY,\n        AXP_HAS_CLEAR_BUTTON_PROPERTY,\n        {\n            name: 'swatches',\n            title: 'Swatches',\n            group: AXP_DATA_PROPERTY_GROUP,\n            schema: {\n                dataType: 'object',\n                interface: {\n                    name: 'swatches',\n                    path: 'options.swatches',\n                    type: 'object',\n                    options: {},\n                },\n            },\n            visible: true,\n        },\n    ],\n    components: {\n        designer: {\n            component: () =>\n                import('./color-palette-widget-designer.component').then((c) => c.AXPColorPaletteWidgetDesignerComponent),\n        },\n        view: {\n            component: () => import('./color-palette-widget-view.component').then((c) => c.AXPColorPaletteWidgetViewComponent),\n        },\n        edit: {\n            component: () => import('./color-palette-widget-edit.component').then((c) => c.AXPColorPaletteWidgetEditComponent),\n        },\n        column: {\n            component: () => import('./color-palette-widget-column.component').then((c) => c.AXPColorPaletteWidgetColumnComponent),\n        },\n    },\n};\n\nexport interface AXPColorPaletteWidgetDesignerOptions {\n    disabled?: boolean;\n    readonly?: boolean;\n    hasClearButton?: boolean;\n    /**\n     * Color swatches to display\n     * - String: Palette name to resolve from AXPColorPaletteService\n     * - String[]: Direct array of color codes\n     */\n    swatches?: string | string[];\n}\n\nexport interface AXPColorPaletteWidgetViewOptions {\n    /**\n     * Color swatches to display\n     * - String: Palette name to resolve from AXPColorPaletteService\n     * - String[]: Direct array of color codes\n     */\n    swatches?: string | string[];\n}\n\nexport interface AXPColorPaletteWidgetEditOptions {\n    disabled?: boolean;\n    readonly?: boolean;\n    hasClearButton?: boolean;\n    /**\n     * Color swatches to display\n     * - String: Palette name to resolve from AXPColorPaletteService\n     * - String[]: Direct array of color codes\n     */\n    swatches?: string | string[];\n}\n\nexport interface AXPColorPaletteWidgetColumnOptions {\n    /**\n     * Color swatches to display\n     * - String: Palette name to resolve from AXPColorPaletteService\n     * - String[]: Direct array of color codes\n     */\n    swatches?: string | string[];\n}\n\nexport interface AXPColorPaletteWidgetOptions {\n    designer: AXPColorPaletteWidgetDesignerOptions;\n    view: AXPColorPaletteWidgetViewOptions;\n    edit: AXPColorPaletteWidgetEditOptions;\n    print: AXPColorPaletteWidgetEditOptions;\n    column: AXPColorPaletteWidgetColumnOptions;\n}\n\n","import { AXDropListDroppedEvent } from '@acorex/cdk/drag-drop';\nimport { AXPDragDropListComponent, AXPDragDropListItem } from '@acorex/platform/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, linkedSignal } from '@angular/core';\n\n@Component({\n  selector: 'axp-connected-drag-drop-lists-widget-edit',\n  template: `\n    <div class=\"ax-grid ax-grid-cols-1 md:ax-grid-cols-2 ax-gap-4\">\n      <!-- Available Items List -->\n      <div>\n        <div class=\"ax-mb-2\">\n          <h4 class=\"ax-text-sm ax-font-medium\">Available</h4>\n        </div>\n        <axp-drag-drop-list\n          [items]=\"listAvailableItems()\"\n          [listId]=\"'connected-lists-available'\"\n          [dropListGroup]=\"'connected-lists'\"\n          [emptyMessage]=\"emptyMessage()\"\n          (dropListDropped)=\"onDrop($event)\"\n        />\n      </div>\n\n      <!-- Selected Items List -->\n      <div>\n        <div class=\"ax-mb-2\">\n          <h4 class=\"ax-text-sm ax-font-medium\">Selected</h4>\n        </div>\n        <axp-drag-drop-list\n          [items]=\"listSelectedItems()\"\n          (itemsChange)=\"onItemsChange($event)\"\n          [listId]=\"'connected-lists-selected'\"\n          [dropListGroup]=\"'connected-lists'\"\n          [emptyMessage]=\"emptyMessage()\"\n          (dropListDropped)=\"onDrop($event)\"\n        />\n      </div>\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPDragDropListComponent],\n  host: {\n    class: 'ax-block ax-flex-1',\n  },\n})\nexport class AXPConnectedListsWidgetEditComponent extends AXPValueWidgetComponent<AXPDragDropListItem[] | string[]> {\n  // Check if getValue returns string[] or AXPDragDropListItem[]\n  private isStringArray = computed(() => {\n    const value = this.getValue();\n    return Array.isArray(value) && value.length > 0 && typeof value[0] === 'string';\n  });\n\n  // Validate and filter selected items - only include items that exist in availableItems\n  listSelectedItems = linkedSignal<AXPDragDropListItem[]>(() => {\n    const value = this.getValue() ?? [];\n    const allAvailableItems = this.options()['availableItems'] ?? [];\n\n    // Handle both string[] (IDs) and AXPDragDropListItem[] (objects)\n    const selectedIds: string[] = this.isStringArray()\n      ? (value as string[])\n      : (value as AXPDragDropListItem[]).map((item) => item.id);\n\n    // Filter availableItems to only include items with IDs in selectedIds\n    return allAvailableItems.filter((availItem: AXPDragDropListItem) => selectedIds.includes(availItem.id));\n  });\n\n  // Filter available items to exclude already selected items\n  listAvailableItems = linkedSignal<AXPDragDropListItem[]>(() => {\n    const allAvailableItems = this.options()['availableItems'] ?? [];\n    const selectedItems = this.listSelectedItems();\n\n    // Remove items that are already selected\n    return allAvailableItems.filter(\n      (availItem: AXPDragDropListItem) => !selectedItems.some((selectedItem) => selectedItem.id === availItem.id),\n    );\n  });\n\n  protected emptyMessage = computed<string>(() => this.options()['emptyMessage'] ?? 'No items');\n\n  private updateValue(items: AXPDragDropListItem[]) {\n    this.setValue(this.isStringArray() ? items.map((item) => item.id) : items);\n  }\n\n  onItemsChange(items: AXPDragDropListItem[]) {\n    this.updateValue(items);\n  }\n\n  onDrop(event: AXDropListDroppedEvent) {\n    if (event.previousContainer === event.container) return;\n\n    const newSelected = [...this.listSelectedItems()];\n    const isFromAvailable = event.previousContainer.element.id === 'connected-lists-available';\n\n    if (isFromAvailable) {\n      const itemToAdd = this.listAvailableItems()[event.previousIndex];\n      newSelected.splice(event.currentIndex, 0, itemToAdd);\n    } else {\n      newSelected.splice(event.previousIndex, 1);\n    }\n\n    this.updateValue(newSelected);\n  }\n}\n","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXPDragDropListItem } from '@acorex/platform/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n  selector: 'axp-connected-drag-drop-lists-widget-view',\n  template: `\n    @for (item of this.getValue(); track $index) {\n      <ax-badge class=\"ax-p-0.5\" [text]=\"item.content\"></ax-badge>\n    } @empty {\n      <span class=\"ax-text-muted\">---</span>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXBadgeModule],\n  host: {\n    class: 'ax-flex ax-flex-1 ax-gap-4',\n  },\n})\nexport class AXPConnectedListsWidgetViewComponent extends AXPValueWidgetComponent<AXPDragDropListItem[]> {}\n","import { AXPColumnItemListComponent, AXPDragDropListItem } from '@acorex/platform/layout/components';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n  selector: 'axp-connected-drag-drop-lists-widget-column',\n  template: `<axp-column-item-list [items]=\"allItems()\" />`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPColumnItemListComponent],\n  inputs: ['rawValue', 'rowData'],\n  styles: `\n    :host {\n      display: block;\n      width: 100%;\n    }\n  `,\n})\nexport class AXPConnectedListsWidgetColumnComponent extends AXPColumnWidgetComponent<\n  AXPDragDropListItem[] | null | undefined\n> {\n  protected allItems = () => this.rawValue ?? [];\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_CHOICE } from '@acorex/platform/layout/widget-core';\nimport { AXPDragDropListItem } from '@acorex/platform/layout/components';\nimport { AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\n\nexport const AXPConnectedDragDropListsWidget: AXPWidgetConfig = {\n  name: 'connected-lists-editor',\n  title: '@platform-layout-widgets:widgets.connected-lists-editor.title',\n  description: '@platform-layout-widgets:widgets.connected-lists-editor.description',\n  icon: 'fa-light fa-arrow-right-arrow-left',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_CHOICE,\n  groups: [AXPWidgetGroupEnum.UtilityWidget],\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY],\n  type: 'editor',\n  components: {\n    view: {\n      component: () =>\n        import('./connected-lists-widget-view.component').then((c) => c.AXPConnectedListsWidgetViewComponent),\n    },\n    edit: {\n      component: () =>\n        import('./connected-lists-widget-edit.component').then((c) => c.AXPConnectedListsWidgetEditComponent),\n    },\n    designer: {\n      component: () =>\n        import('./connected-lists-widget-view.component').then((c) => c.AXPConnectedListsWidgetViewComponent),\n    },\n    column: {\n      component: () =>\n        import('./connected-lists-widget-column.component').then((c) => c.AXPConnectedListsWidgetColumnComponent),\n    },\n  },\n};\n\nexport interface AXPConnectedListsWidgetDesignerOptions {\n  availableItems?: AXPDragDropListItem[];\n  emptyMessage?: string;\n}\n\nexport interface AXPConnectedListsWidgetViewOptions {\n  availableItems?: AXPDragDropListItem[];\n  emptyMessage?: string;\n}\n\nexport interface AXPConnectedListsWidgetEditOptions {\n  availableItems?: AXPDragDropListItem[];\n  emptyMessage?: string;\n}\n\nexport interface AXPConnectedListsWidgetColumnOptions {\n  availableItems?: AXPDragDropListItem[];\n  emptyMessage?: string;\n}\n\nexport interface AXPConnectedListsWidgetOptions {\n  designer: AXPConnectedListsWidgetDesignerOptions;\n  view: AXPConnectedListsWidgetViewOptions;\n  edit: AXPConnectedListsWidgetEditOptions;\n  column: AXPConnectedListsWidgetColumnOptions;\n}\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    connectedLists: 'connected-lists-editor';\n  }\n}\n","import { AXPClipBoardService } from '@acorex/platform/common';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { AXPContactData } from './contact.service';\n@Component({\n  selector: 'axp-contact-widget-column',\n  template: `@if (hasValue()) {\n      <div class=\"ax-flex ax-cursor-pointer ax-justify-start ax-items-center ax-group ax-w-fit\" (click)=\"onCopyClick($event)\">\n        <span class=\"ax-truncate\" [title]=\"getText('line')\">{{ getText('comma') }}</span>\n        <i\n          class=\"fa-solid fa-copy ax-hidden group-hover:ax-inline-block ax-shrink-0 ax-ms-2 ax-transition-opacity ax-duration-200 ax-ease-in-out ax-text-neutral-400  hover:ax-text-primary-400\"\n        ></i>\n      </div>\n    } @else {\n      <span class=\"ax-text-muted\">---</span>\n    }`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['rawValue', 'rowData'],\n})\nexport class AXPContactWidgetColumnComponent extends AXPColumnWidgetComponent<any> {\n  protected clipboard = inject(AXPClipBoardService);\n\n  protected onCopyClick(event: Event): void {\n    event.preventDefault();\n    event.stopPropagation();\n    this.clipboard.copy('Contact', this.rawValue);\n  }\n\n  protected hasValue = computed(() => {\n    if (typeof this.rawValue === 'string') return this.rawValue.trim() !== '';\n    else return this.rawValue?.length > 0;\n  });\n\n  protected getText(seperator: 'line' | 'comma') {\n    const sep = seperator === 'comma' ? ',' : '\\\\n';\n    if (typeof this.rawValue === 'string') return this.rawValue;\n    else {\n      return this.rawValue?.map((item: AXPContactData) => this.itemToValue(item)).join(sep);\n    }\n  }\n  private itemToValue = (item: AXPContactData | string): string => {\n    if (typeof item === 'string') return item;\n    if (item == null) return '';\n    return this.extractContactStringValue(item.value);\n  };\n\n  private extractContactStringValue(val: unknown): string {\n    if (typeof val === 'string') return val;\n    if (val != null && typeof val === 'object' && 'value' in val && typeof (val as AXPContactData).value === 'string') {\n      return (val as AXPContactData).value;\n    }\n    return val != null ? String(val) : '';\n  }\n}\n","import { AXPValidationRule } from '@acorex/platform/contracts';\n\nimport { inject, Injectable, InjectionToken } from '@angular/core';\n\nexport interface AXPContactWidgetType {\n  name: string;\n  title: string;\n  icon: string;\n  validation: AXPValidationRule;\n  labels: { id: string; name: string }[];\n  /** Label id to pre-select when the contact value is empty. Must exist in labels. */\n  defaultLabel?: string;\n  placeholder?: string;\n  hrefGenerator?: (value: string, label?: string) => string;\n}\n\nexport abstract class AXPContactWidgetProvider {\n  abstract provide(): Promise<AXPContactWidgetType[]>;\n}\n\nexport interface AXPContactData {\n  value: string;\n  label: string;\n}\n\nfunction ensureProtocol(value: string): string {\n  if (\n    value.startsWith('http://') ||\n    value.startsWith('https://') ||\n    value.startsWith('mailto:') ||\n    value.startsWith('tel:') ||\n    value.startsWith('skype:')\n  ) {\n    return value;\n  }\n  // If value looks like a URL (contains domain), add https://\n  if (value.includes('.') && value.includes('/')) {\n    return `https://${value}`;\n  }\n  return value;\n}\n\nconst DEFAULT_CONTACT_WIDGET_TYPES: AXPContactWidgetType[] = [\n  {\n    name: 'email',\n    title: 'Email',\n    icon: 'fa-solid fa-envelope',\n    validation: { rule: 'email' },\n    labels: [\n      { id: 'work', name: 'Work' },\n      { id: 'home', name: 'Home' },\n      { id: 'personal', name: 'Personal' },\n    ],\n    defaultLabel: 'work',\n    placeholder: 'Enter your email address',\n    hrefGenerator: (value: string) => `mailto:${value}`,\n  },\n  {\n    name: 'phone',\n    title: 'Phone',\n    icon: 'fa-solid fa-phone',\n    validation: {\n      rule: 'regex',\n      options: { pattern: /^\\+?[0-9 ()-]+$/ },\n      message: 'Please enter a valid phone number (digits, spaces, hyphens, parentheses, and optional + prefix).',\n    },\n    labels: [\n      { id: 'mobile', name: 'Mobile' },\n      { id: 'work', name: 'Work' },\n      { id: 'home', name: 'Home' },\n      { id: 'fax', name: 'Fax' },\n    ],\n    defaultLabel: 'mobile',\n    placeholder: 'Enter your phone number',\n    hrefGenerator: (value: string) => `tel:${value.replace(/[\\s()-]/g, '')}`,\n  },\n  {\n    name: 'url',\n    title: 'Website',\n    icon: 'fa-solid fa-link',\n    validation: {\n      rule: 'regex',\n      options: {\n        pattern:\n          '^https?://(www\\\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\\\.[a-zA-Z0-9()]{1,6}\\\\b([-a-zA-Z0-9()@:%_+.~#?&/=]*)$',\n      },\n      message: 'Invalid URL',\n    },\n    labels: [\n      { id: 'website', name: 'Website' },\n      { id: 'blog', name: 'Blog' },\n      { id: 'portfolio', name: 'Portfolio' },\n      { id: 'company', name: 'Company' },\n    ],\n    defaultLabel: 'website',\n    placeholder: 'Enter your website URL',\n    hrefGenerator: (value: string) => {\n      if (value.startsWith('http://') || value.startsWith('https://')) {\n        return value;\n      }\n      return `https://${value}`;\n    },\n  },\n  {\n    name: 'social',\n    title: 'Social Media',\n    icon: 'fa-solid fa-share-nodes',\n    validation: {\n      rule: 'regex',\n      options: { pattern: /^.+$/ },\n      message: 'Invalid social media value',\n    },\n    labels: [\n      { id: 'telegram', name: 'Telegram' },\n      { id: 'whatsapp', name: 'WhatsApp' },\n      { id: 'instagram', name: 'Instagram' },\n      { id: 'linkedin', name: 'LinkedIn' },\n      { id: 'twitter', name: 'Twitter / X' },\n      { id: 'facebook', name: 'Facebook' },\n      { id: 'github', name: 'GitHub' },\n      { id: 'youtube', name: 'YouTube' },\n      { id: 'skype', name: 'Skype' },\n      { id: 'discord', name: 'Discord' },\n    ],\n    defaultLabel: 'telegram',\n    placeholder: 'Enter social media username or identifier',\n    hrefGenerator: (value: string, label?: string) => {\n      if (!label) {\n        return ensureProtocol(value);\n      }\n\n      const platform = label.toLowerCase();\n      const platformUrls: Record<string, string> = {\n        telegram: 'https://t.me/{value}',\n        whatsapp: 'https://wa.me/{value}',\n        instagram: 'https://instagram.com/{value}',\n        linkedin: 'https://linkedin.com/in/{value}',\n        twitter: 'https://twitter.com/{value}',\n        facebook: 'https://facebook.com/{value}',\n        github: 'https://github.com/{value}',\n        youtube: 'https://youtube.com/@{value}',\n        discord: 'https://discord.com/users/{value}',\n      };\n\n      // Special case: Skype uses protocol scheme\n      if (platform === 'skype') {\n        return `skype:${value}?chat`;\n      }\n\n      // If value already has protocol, return as-is\n      if (value.startsWith('http://') || value.startsWith('https://')) {\n        return value;\n      }\n\n      const urlTemplate = platformUrls[platform];\n      if (!urlTemplate) {\n        return ensureProtocol(value);\n      }\n\n      // Normalize value: remove @ prefix, clean phone numbers, handle domain paths\n      let normalizedValue = value;\n      if (platform === 'whatsapp') {\n        normalizedValue = value.replace(/[\\s()-]/g, '');\n      } else if (['telegram', 'instagram', 'twitter'].includes(platform)) {\n        normalizedValue = value.startsWith('@') ? value.substring(1) : value;\n      } else if (platform === 'linkedin') {\n        // Handle full URLs without protocol or paths\n        if (value.includes('linkedin.com/')) {\n          return ensureProtocol(value);\n        }\n        if (value.startsWith('in/') || value.startsWith('/in/')) {\n          normalizedValue = value.replace(/^\\/?in\\//, '');\n        }\n      } else if (platform === 'youtube') {\n        if (value.includes('youtube.com/') || value.includes('youtu.be/')) {\n          return ensureProtocol(value);\n        }\n        normalizedValue = value.startsWith('@') ? value.substring(1) : value;\n      } else if (['facebook', 'github'].includes(platform)) {\n        if (value.includes(`${platform}.com/`) || value.includes(`www.${platform}.com/`)) {\n          return ensureProtocol(value);\n        }\n      }\n\n      return urlTemplate.replace('{value}', normalizedValue);\n    },\n  },\n];\n\nexport class AXPContactWidgetProviderDefault extends AXPContactWidgetProvider {\n  async provide(): Promise<AXPContactWidgetType[]> {\n    return DEFAULT_CONTACT_WIDGET_TYPES;\n  }\n}\n\nexport const AXP_CONTACT_WIDGET_PROVIDER = new InjectionToken<AXPContactWidgetProvider | AXPContactWidgetProvider[]>(\n  'AXP_CONTACT_WIDGET_PROVIDER',\n);\n\n@Injectable({ providedIn: 'root' })\nexport class AXPContactWidgetService {\n  private defaultProvider = new AXPContactWidgetProviderDefault();\n  private resolvers = (() => {\n    const injected = inject(AXP_CONTACT_WIDGET_PROVIDER, { optional: true });\n    if (!injected) {\n      return [this.defaultProvider];\n    }\n    const providers = Array.isArray(injected) ? injected : [injected];\n    return [...providers, this.defaultProvider];\n  })();\n\n  private cache = new Map<string, AXPContactWidgetType>();\n\n  async resolve(name: string): Promise<AXPContactWidgetType> {\n    if (this.cache.has(name)) {\n      return this.cache.get(name)!;\n    }\n\n    for (const resolver of this.resolvers) {\n      const result = await resolver.provide();\n      const contact = result.find((c) => c.name === name);\n      if (contact) {\n        this.cache.set(name, contact);\n        return contact;\n      }\n    }\n\n    throw new Error(`AXPContactWidgetService: Could not resolve contact \"${name}\"`);\n  }\n\n  async getAll(): Promise<AXPContactWidgetType[]> {\n    if (this.cache.size > 0) {\n      return Array.from(this.cache.values());\n    }\n    const allContacts: AXPContactWidgetType[] = [];\n    for (const resolver of this.resolvers) {\n      const result = await resolver.provide();\n      allContacts.push(...result);\n    }\n    const uniqueContacts = allContacts.filter(\n      (contact, index, self) => index === self.findIndex((c) => c.name === contact.name),\n    );\n\n    uniqueContacts.forEach((c) => this.cache.set(c.name, c));\n    return uniqueContacts;\n  }\n}\n","import { AXDataSource, AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { extractValue } from '@acorex/platform/contracts';\nimport { AXPLayoutBuilderService, IActionBuilder } from '@acorex/platform/layout/builder';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostBinding, computed, effect, inject, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXPContactData, AXPContactWidgetService, AXPContactWidgetType } from './contact.service';\n\n@Component({\n  selector: 'axp-contact-widget-edit',\n  template: `\n    <div class=\"ax-grid ax-grid-cols-12 ax-gap-4 ax-auto-cols-max\">\n      <ax-text-box\n        [ngModel]=\"valueAsObject().value\"\n        (onValueChanged)=\"handleValueChange($event)\"\n        type=\"text\"\n        name=\"value\"\n        [placeholder]=\"placeholder()\"\n        [ngClass]=\"generateClasses('value')\"\n        [disabled]=\"disabled()\"\n      >\n        @if (hasIcon()) {\n          <ax-prefix><ax-icon [class]=\"icon()\"></ax-icon></ax-prefix>\n        }\n        @for (validation of combinedValidationRules(); track $index) {\n          <ax-validation-rule\n            [rule]=\"validation.rule\"\n            [message]=\"validation.message ?? validation.options?.message\"\n            [options]=\"validation.options\"\n          ></ax-validation-rule>\n        }\n      </ax-text-box>\n      @if (hasLabel()) {\n        <ax-select-box\n          [dataSource]=\"labelsDataSource\"\n          [ngModel]=\"valueAsObject().label\"\n          [disabled]=\"disabled()\"\n          (onValueChanged)=\"handleValueChange($event)\"\n          placeholder=\"{{ '@general:widgets.selectbox.popover.title' | translate | async }}\"\n          name=\"label\"\n          valueField=\"id\"\n          textField=\"name\"\n          [ngClass]=\"generateClasses('label')\"\n        >\n        </ax-select-box>\n      }\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    CommonModule,\n    FormsModule,\n    AXSelectBoxModule,\n    AXFormModule,\n    AXDecoratorModule,\n    AXTextBoxModule,\n    AXValidationModule,\n    AXTranslationModule,\n  ],\n})\nexport class AXPContactWidgetEditComponent extends AXPValueWidgetComponent<AXPContactData | string> {\n  private contactService = inject(AXPContactWidgetService);\n  private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n\n  protected contactType = computed<string>(() => (extractValue(this.options()['type']) as string) || 'email');\n\n  protected activeContactType = signal<AXPContactWidgetType | undefined>(undefined);\n\n  protected placeholder = computed<string>(\n    () => this.activeContactType()?.placeholder || this.options()['placeholder'] || `Enter value...`,\n  );\n\n  protected labels = computed<{ id: string; name: string }[]>(\n    () => this.activeContactType()?.labels || this.options()['labels'] || [],\n  );\n  protected icon = computed<string | undefined>(() => this.activeContactType()?.icon || this.options()['icon']);\n\n  protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n  protected hasLabel = computed<boolean>(() => (this.options()['hasLabel'] as boolean) ?? true);\n  protected hasIcon = computed<boolean>(() => (this.options()['hasIcon'] as boolean) ?? true);\n  protected defaultLabel = computed<string | undefined>(() => {\n    const v = this.options()['defaultLabel'];\n    return typeof v === 'string' && v.trim() !== '' ? v.trim() : undefined;\n  });\n\n  protected combinedValidationRules = computed(() => {\n    const base = this.validationRules();\n    const extra = this.activeContactType()?.validation;\n    return extra ? [...base, extra] : base;\n  });\n\n  private format = computed<'object' | 'string'>(() => {\n    if (this.hasLabel()) {\n      return 'object';\n    }\n    return 'string';\n  });\n\n  protected valueAsObject = computed(() => this.toObject(this.getValue()));\n\n  protected labelsDataSource = new AXDataSource({\n    pageSize: 20,\n    load: (e) => {\n      const labels = this.labels();\n      return Promise.resolve({\n        items: labels.slice(e.skip, (e.skip ?? 0) + (e.take ?? 0)),\n        total: labels.length,\n      });\n    },\n    byKey: (key) => {\n      return Promise.resolve(this.labels().find((i) => i.id === key));\n    },\n  });\n\n  constructor() {\n    super();\n    effect(async () => {\n      const name = this.contactType();\n      if (!name) {\n        this.activeContactType.set(undefined);\n        return;\n      }\n      try {\n        const type = await this.contactService.resolve(name);\n        this.activeContactType.set(type);\n      } catch (error) {\n        console.error(`Error resolving contact type '${name}':`, error);\n        this.activeContactType.set(undefined);\n      }\n    });\n  }\n\n  protected async handleValueChange(e: AXValueChangedEvent) {\n    let { name, value, isUserInteraction } = e;\n    if (isUserInteraction) {\n      if (name === 'label' && value === 'Add New') {\n        const ref = await this.layoutBuilder\n          .create()\n          .dialog((dialog) => {\n            dialog\n              .setTitle('Enter Label...')\n              .setSize('sm')\n              .setContext({ value: '' })\n              .content((layoutBuilder) => {\n                layoutBuilder.flex((flex) => {\n                  flex\n                    .mode('edit')\n                    .setDirection('column')\n                    .setGap('16px')\n                    .formField('Label', (field) => {\n                      field.path('value');\n                      field.textBox({});\n                    });\n                });\n              })\n              .setActions((actions: IActionBuilder) => {\n                actions.cancel('@general:actions.cancel.title').submit('@general:actions.apply.title');\n              });\n          })\n          .show();\n        if (ref.action() === 'cancel') {\n          ref.close();\n          return;\n        }\n        const ctxValue = ref.context()?.value;\n        ref.close();\n        if (ctxValue) {\n          value = ctxValue;\n          this.labels().pop();\n          this.labels().push(\n            { id: (value as string).toLowerCase(), name: value as string },\n            { id: 'add-new', name: 'Add New' },\n          );\n          this.labelsDataSource.refresh();\n        }\n      }\n      const newValues = { ...this.valueAsObject(), [name as string]: value };\n      this.setValue(this.setFormatedValue(newValues));\n    }\n  }\n\n  protected generateClasses(element: 'value' | 'label'): any {\n    const isValue = element === 'value';\n    const hasLabel = this.hasLabel();\n    const baseClass = 'ax-col-span-12';\n    if (!hasLabel) {\n      return baseClass;\n    }\n    return {\n      [baseClass]: true,\n      'lg:ax-col-span-7': isValue,\n      'lg:ax-col-span-5': !isValue,\n    };\n  }\n\n  private toObject(item: AXPContactData | string | null | undefined): AXPContactData {\n    const resolveLabel = (currentLabel: string | undefined): string => {\n      if (!this.hasLabel()) return '';\n      const labels = this.activeContactType()?.labels ?? this.labels();\n      const validLabel =\n        currentLabel && labels.some((i) => i.id === currentLabel) ? currentLabel : '';\n      if (validLabel !== '') return validLabel;\n      const def =\n        this.defaultLabel() ?? this.activeContactType()?.defaultLabel;\n      if (def && labels.some((i) => i.id.toLowerCase() === def.toLowerCase())) {\n        const found = labels.find((i) => i.id.toLowerCase() === def.toLowerCase());\n        return found ? found.id : '';\n      }\n      return '';\n    };\n\n    if (typeof item === 'object' && item !== null) {\n      return {\n        value: item.value ?? '',\n        label: resolveLabel(item.label),\n      };\n    }\n    return {\n      value: item?.toString() || '',\n      label: resolveLabel(''),\n    };\n  }\n\n  private setFormatedValue(item: AXPContactData): string | AXPContactData {\n    if (this.format() === 'string') {\n      return item.value;\n    }\n    return {\n      value: item.value,\n      label: item.label,\n    };\n  }\n\n  @HostBinding('class')\n  private get __class(): string {\n    return 'ax-block ax-flex-1';\n  }\n}\n","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPClipBoardService } from '@acorex/platform/common';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, Signal, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { isEmpty, isNull } from 'lodash-es';\nimport { AXPContactData, AXPContactWidgetService, AXPContactWidgetType } from './contact.service';\n\n@Component({\n  selector: 'axp-contact-widget-view',\n  template: `\n    @if (hasValue()) {\n      <div class=\"ax-flex ax-gap-3 ax-items-center ax-min-w-0\">\n        <div class=\"ax-flex ax-gap-1 ax-items-center ax-group ax-min-w-0\" [class.ax-flex-row-reverse]=\"!hasLabel()\">\n          @if (hasIcon()) {\n            <div\n              class=\"ax-flex-shrink-0 ax-text-neutral-500 group-hover:ax-text-primary-500 ax-transition-colors ax-duration-200\"\n            >\n              <ax-icon>\n                <i class=\"fa-solid\" [class]=\"activeContactType()?.icon\"></i>\n              </ax-icon>\n            </div>\n          }\n          <a\n            [href]=\"hrefValue()\"\n            [target]=\"'_blank'\"\n            [attr.rel]=\"'noopener noreferrer'\"\n            [attr.aria-label]=\"'Open ' + (activeContactType()?.title || 'contact') + ': ' + internalValue().value\"\n            class=\"ax-flex-1 ax-min-w-0 ax-truncate ax-text-sm  ax-text-primary-600 hover:ax-text-primary-700 hover:ax-underline ax-decoration-primary-500 ax-decoration-1 ax-underline-offset-2 ax-transition-all ax-duration-200 ax-outline-none focus-visible:ax-outline-2 focus-visible:ax-outline-primary-500 focus-visible:ax-outline-offset-2\"\n            >{{ internalValue().value }}</a\n          >\n          <button\n            type=\"button\"\n            [attr.aria-label]=\"'Copy ' + (activeContactType()?.title || 'contact') + ' to clipboard'\"\n            class=\"ax-flex-shrink-0 ax-p-1 ax-rounded-md ax-text-neutral-400 hover:ax-text-primary-600 hover:ax-bg-primary-50 active:ax-bg-primary-100 ax-invisible group-hover:ax-visible ax-transition-all ax-duration-200 ax-cursor-pointer ax-outline-none focus-visible:ax-outline-2 focus-visible:ax-outline-primary-500 focus-visible:ax-outline-offset-1\"\n            (click)=\"handleCopy($event)\"\n            (mouseenter)=\"showCopyTooltip.set(true)\"\n            (mouseleave)=\"showCopyTooltip.set(false)\"\n          >\n            <ax-icon>\n              <i class=\"fa-regular fa-copy ax-text-xs\"></i>\n            </ax-icon>\n          </button>\n        </div>\n        @if (hasLabel() && internalValue().label) {\n          <div class=\"ax-flex-shrink-0\">\n            <ax-badge [color]=\"'primary'\" [look]=\"'twotone'\" [text]=\"getLabelName()\" class=\"ax-text-xs\"></ax-badge>\n          </div>\n        }\n      </div>\n    } @else {\n      <div class=\"ax-flex ax-items-center ax-gap-2 ax-text-neutral-400 ax-text-sm\">\n        <ax-icon>\n          <i class=\"fa-regular fa-minus\"></i>\n        </ax-icon>\n        <span>No contact information</span>\n      </div>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [FormsModule, AXBadgeModule, AXDecoratorModule],\n})\nexport class AXPContactWidgetViewComponent extends AXPValueWidgetComponent<AXPContactData | string> {\n  private contactService = inject(AXPContactWidgetService);\n  protected contactName = computed<string>(() => (this.options()['type'] as string) || 'email');\n  protected activeContactType = signal<AXPContactWidgetType | undefined>(undefined);\n\n  protected icon = computed<string | undefined>(() => this.activeContactType()?.icon || this.options()['icon']);\n\n  protected hasLabel = computed<boolean>(() => (this.options()['hasLabel'] as boolean) ?? true);\n  protected hasIcon = computed<boolean>(() => (this.options()['hasIcon'] as boolean) ?? true);\n\n  protected internalValue: Signal<AXPContactData> = computed(() => this.correctItems(this.getValue()));\n  protected clipboard = inject(AXPClipBoardService);\n  protected showCopyTooltip = signal(false);\n\n  protected hasValue = computed(() => {\n    const rawValue = this.getValue();\n    if (isNull(rawValue)) return false;\n    return !isEmpty(rawValue);\n  });\n\n  protected getLabelName(): string {\n    const labelId = this.internalValue().label;\n    if (!labelId) return '';\n    const contactType = this.activeContactType();\n    const label = contactType?.labels.find((l) => l.id === labelId);\n    return label?.name || labelId;\n  }\n\n  protected handleCopy(event: Event): void {\n    event.preventDefault();\n    event.stopPropagation();\n    const value = this.internalValue().value;\n    const contactType = this.activeContactType();\n    const label = contactType?.title || 'Contact';\n    this.clipboard.copy(label, value);\n  }\n\n  protected hrefValue = computed(() => {\n    const contactType = this.activeContactType();\n    const contactData = this.internalValue();\n    const value = contactData.value;\n    const label = contactData.label;\n    if (!contactType || !value) {\n      return '#';\n    }\n    if (contactType.hrefGenerator) {\n      return contactType.hrefGenerator(value, label);\n    }\n    // Fallback to default behavior if no hrefGenerator is provided\n    return value;\n  });\n\n  constructor() {\n    super();\n    effect(async () => {\n      const name = this.contactName();\n      try {\n        const type = await this.contactService.resolve(name);\n        this.activeContactType.set(type);\n      } catch (error) {\n        console.error(`Error resolving contact type '${name}':`, error);\n        this.activeContactType.set(undefined);\n      }\n    });\n  }\n\n  private extractContactStringValue(val: unknown): string {\n    if (typeof val === 'string') return val;\n    if (val != null && typeof val === 'object' && 'value' in val && typeof (val as AXPContactData).value === 'string') {\n      return (val as AXPContactData).value;\n    }\n    return val != null ? String(val) : '';\n  }\n\n  private correctItems = (item: AXPContactData | string): AXPContactData => {\n    if (typeof item === 'object') {\n      const rawValue = item?.value;\n      const value = this.extractContactStringValue(rawValue);\n      if (value === '') {\n        console.error('Contact value is empty');\n      }\n      const contactType = this.activeContactType();\n      let normalizedLabel = '';\n      const rawLabel = item.label;\n      const labelId =\n        typeof rawLabel === 'object' && rawLabel && 'id' in rawLabel ? (rawLabel as { id: string }).id : rawLabel;\n      if (this.hasLabel() && contactType && labelId) {\n        // Find matching label (case-insensitive) and use the actual ID\n        const matchingLabel = contactType.labels.find((i) => i.id.toLowerCase() === String(labelId).toLowerCase());\n        normalizedLabel = matchingLabel ? matchingLabel.id : '';\n      }\n      return {\n        value,\n        label: normalizedLabel,\n      };\n    } else {\n      if (item === '') {\n        console.error('Contact value is empty');\n      }\n      return {\n        value: String(item),\n        label: this.hasLabel() ? '' : '',\n      };\n    }\n  };\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, createSelectProperty, createStringProperty } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_COMPOSITE } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_BEHAVIOR_PROPERTY_GROUP,\n  AXP_DATA_PATH_PROPERTY,\n  AXP_DISABLED_PROPERTY,\n  AXP_HAS_ICON_PROPERTY,\n  AXP_HAS_LABEL_PROPERTY,\n  AXP_ICON_PROPERTY,\n  AXP_NAME_PROPERTY,\n  AXP_PLACEHOLDER_PROPERTY,\n} from '../../../properties';\n\nexport const AXPContactWidget: AXPWidgetConfig = {\n  name: 'contact-editor',\n  title: '@platform-layout-widgets:widgets.contact-editor.title',\n  description: '@platform-layout-widgets:widgets.contact-editor.description',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_COMPOSITE,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  icon: 'fa-light fa-address-book',\n  defaultFilterWidgetName: 'string-filter',\n  type: 'editor',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    createSelectProperty({\n      name: 'type',\n      title: 'Contact Type',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n      dataSource: [\n        { id: 'url', title: 'Link' },\n        { id: 'email', title: 'Email' },\n        { id: 'phone', title: 'Phone' },\n      ],\n      defaultValue: { id: 'email', title: 'Email' },\n      path: 'options.type',\n    }),\n\n    AXP_DISABLED_PROPERTY,\n    AXP_HAS_LABEL_PROPERTY,\n    createStringProperty({\n      name: 'defaultLabel',\n      title: 'Default Label',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n      path: 'options.defaultLabel',\n    }),\n    AXP_HAS_ICON_PROPERTY,\n    AXP_ICON_PROPERTY,\n    AXP_PLACEHOLDER_PROPERTY,\n  ],\n  components: {\n    view: {\n      component: () => import('./contact-widget-view.component').then((c) => c.AXPContactWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./contact-widget-edit.component').then((c) => c.AXPContactWidgetEditComponent),\n    },\n    column: {\n      component: () => import('./contact-widget-column.component').then((c) => c.AXPContactWidgetColumnComponent),\n    },\n    designer: {\n      component: () => import('./contact-widget-edit.component').then((c) => c.AXPContactWidgetEditComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    contact: 'contact-editor';\n  }\n}\n\nexport interface AXPContactWidgetDesignerOptions {\n  type?: string;\n  placeholder?: string;\n  labels?: { id: string; name: string }[];\n  defaultLabel?: string;\n  icon?: string;\n  disabled?: boolean;\n  hasLabel?: boolean;\n  hasIcon?: boolean;\n}\n\nexport interface AXPContactWidgetViewOptions {\n  type?: string;\n  icon?: string;\n  hasLabel?: boolean;\n  hasIcon?: boolean;\n}\n\nexport interface AXPContactWidgetEditOptions {\n  type?: string;\n  placeholder?: string;\n  labels?: { id: string; name: string }[];\n  defaultLabel?: string;\n  icon?: string;\n  disabled?: boolean;\n  hasLabel?: boolean;\n  hasIcon?: boolean;\n}\n\nexport interface AXPContactWidgetColumnOptions {}\n\nexport interface AXPContactWidgetOptions {\n  designer: AXPContactWidgetDesignerOptions;\n  view: AXPContactWidgetViewOptions;\n  edit: AXPContactWidgetEditOptions;\n  print: AXPContactWidgetViewOptions;\n  column: AXPContactWidgetColumnOptions;\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, createBooleanProperty, createSelectProperty } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_COMPOSITE } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_BEHAVIOR_PROPERTY_GROUP,\n  AXP_DATA_PATH_PROPERTY,\n  AXP_DISABLED_PROPERTY,\n  AXP_HAS_LABEL_PROPERTY,\n  AXP_NAME_PROPERTY,\n  AXP_PLACEHOLDER_PROPERTY,\n} from '../../../properties';\n\nexport const AXPAddressWidget: AXPWidgetConfig = {\n  name: 'address-editor',\n  title: '@platform-layout-widgets:widgets.address-editor.title',\n  description: '@platform-layout-widgets:widgets.address-editor.description',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_COMPOSITE,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  icon: 'fa-light fa-location-dot',\n  defaultFilterWidgetName: 'string-filter',\n  type: 'editor',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    createSelectProperty({\n      name: 'mode',\n      title: 'Mode',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n      dataSource: [\n        { id: 'simple', title: 'Single line' },\n        { id: 'popup', title: 'Popup editor' },\n        { id: 'expandable', title: 'Expandable panel' },\n      ],\n      defaultValue: { id: 'simple', title: 'Single line' },\n      path: 'options.mode',\n    }),\n    createBooleanProperty({\n      name: 'hasLabel',\n      title: 'Has Label',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n      defaultValue: false,\n      path: 'options.hasLabel',\n    }),\n    createBooleanProperty({\n      name: 'hasMap',\n      title: 'Has Map',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n      defaultValue: true,\n      path: 'options.hasMap',\n    }),\n    AXP_DISABLED_PROPERTY,\n    AXP_HAS_LABEL_PROPERTY,\n    AXP_PLACEHOLDER_PROPERTY,\n  ],\n  components: {\n    view: {\n      component: () => import('./address-widget-view.component').then((c) => c.AXPAddressWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./address-widget-edit.component').then((c) => c.AXPAddressWidgetEditComponent),\n    },\n    column: {\n      component: () => import('./address-widget-column.component').then((c) => c.AXPAddressWidgetColumnComponent),\n    },\n    designer: {\n      component: () => import('./address-widget-edit.component').then((c) => c.AXPAddressWidgetEditComponent),\n    },\n  },\n};\n\n","import type { AXPAddressLabel, AXPAddressMode } from '@acorex/platform/contracts';\n\n//#region ----   Widget Options Types   ----\n\n/**\n * Address widget designer options\n */\nexport interface AXPAddressWidgetDesignerOptions {\n  mode?: AXPAddressMode;\n  placeholder?: string;\n  labels?: AXPAddressLabel[];\n  disabled?: boolean;\n  hasLabel?: boolean;\n  hasMap?: boolean;\n}\n\n/**\n * Address widget view options\n */\nexport interface AXPAddressWidgetViewOptions {\n  mode?: AXPAddressMode;\n  hasLabel?: boolean;\n  hasMap?: boolean;\n}\n\n/**\n * Address widget edit options\n */\nexport interface AXPAddressWidgetEditOptions {\n  mode?: AXPAddressMode;\n  placeholder?: string;\n  labels?: AXPAddressLabel[];\n  disabled?: boolean;\n  hasLabel?: boolean;\n  hasMap?: boolean;\n}\n\n/**\n * Address widget column options\n */\nexport interface AXPAddressWidgetColumnOptions { }\n\n/**\n * Complete address widget options structure\n */\nexport interface AXPAddressWidgetOptions {\n  designer: AXPAddressWidgetDesignerOptions;\n  view: AXPAddressWidgetViewOptions;\n  edit: AXPAddressWidgetEditOptions;\n  print: AXPAddressWidgetViewOptions;\n  column: AXPAddressWidgetColumnOptions;\n}\n\n//#endregion\n","import { AXPAddressData, AXPAddressLabel, type AXPWidgetNode, extractValue } from '@acorex/platform/contracts';\nimport { AXPLayoutBuilderService, IActionBuilder } from '@acorex/platform/layout/builder';\n\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { inject, Injectable } from '@angular/core';\nimport { first } from 'lodash-es';\n\nexport interface AXPAddressCollapsibleHeader {\n  labelText: string | null;\n  addressText: string;\n}\n\nexport interface AXPAddressFormContentOptions {\n  labels?: AXPAddressLabel[];\n  hasMap: boolean;\n  addressData?: Partial<AXPAddressData>;\n}\n\n/** Transient flat lookup ids used in the address form context (same pattern as Location entity). */\nexport interface AXPAddressFormContext extends Partial<AXPAddressData> {\n  countryId?: string;\n  stateId?: string;\n  cityId?: string;\n  showMap?: boolean;\n}\n\n//#region ----   Service   ----\n\n@Injectable({ providedIn: 'root' })\nexport class AXPAddressWidgetService {\n  //#region ----   Services & Dependencies   ----\n\n  private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n  private readonly translationService = inject(AXTranslationService);\n\n  //#endregion\n\n  //#region ----   Shared address form layout (dialog + inline renderer)   ----\n\n  /**\n   * Builds the address form content (street1, street2, country, state, city, postalCode, label, map).\n   * Used by both the dialog and the expandable inline layout via create().flex().build().\n   */\n  buildAddressFormContent(flex: any, options: AXPAddressFormContentOptions): void {\n    const { labels = [], hasMap, addressData } = options;\n    const hasLabel = labels.length > 0;\n\n    flex.mode('edit').setDirection('column').setGap('12px');\n\n    //#region ----   Row 1: label + show map   ----\n\n    if (hasLabel || hasMap) {\n      flex.grid((metaRow: any) => {\n        metaRow.setColumns(12).setGap('12px');\n\n        if (hasLabel) {\n          const defaultLabelId = this.resolveDefaultLabelId(labels);\n\n          metaRow.formField('@location-management:locations.entities.location.fields.label', (field: any) => {\n            field.path('label');\n            field.layout(3);\n            if (defaultLabelId) {\n              field.defaultValue(defaultLabelId);\n            }\n            field.selectBox({\n              valueField: 'id',\n              textField: 'name',\n              dataSource: labels,\n              validations: [{ rule: 'required', message: '@general:validation.messages.required' }],\n            });\n          });\n        }\n\n        if (hasMap) {\n          metaRow.formField('@location-management:locations.entities.location.fields.show-map', (field: any) => {\n            field.path('showMap');\n            field.layout(3);\n            field.toggleSwitch({\n              defaultValue: !!(addressData?.coordinates),\n            });\n          });\n        }\n      });\n    }\n\n    //#endregion\n\n    //#region ----   Row 2: street address + address line 2   ----\n\n    flex.grid((streetRow: any) => {\n      streetRow.setColumns(12).setGap('12px');\n\n      streetRow\n        .formField('@location-management:locations.entities.location.fields.street1', (field: any) => {\n          field.path('street1');\n          field.layout(6);\n          field.textBox({\n            validations: [{ rule: 'required', message: '@general:validation.messages.required' }],\n          });\n        })\n        .formField('@location-management:locations.entities.location.fields.street2', (field: any) => {\n          field.path('street2');\n          field.layout(6);\n          field.textBox({});\n        });\n    });\n\n    //#endregion\n\n    //#region ----   Row 3: postal code + country + state + city   ----\n\n    flex.grid((geoRow: any) => {\n      geoRow.setColumns(12).setGap('12px');\n\n      geoRow\n        .formField('@location-management:locations.entities.location.fields.postal-code', (field: any) => {\n          field.path('postalCode');\n          field.layout(3);\n          field.textBox({ placeholder: 'Enter postal code' });\n        })\n        .formField('@location-management:locations.entities.location.fields.country', (field: any) => {\n          field.path('countryId');\n          field.layout(3);\n          field.customWidget('lookup-editor', {\n            entity: 'LocationManagement.GeographicRegion',\n            look: 'select',\n            textField: 'title',\n            valueField: 'id',\n            hasClearButton: true,\n            allowCreate: 'quick',\n            create: {\n              enable: true,\n            },\n            expose: [\n              { source: 'id', target: 'country.id' },\n              { source: 'title', target: 'country.title' },\n            ],\n            filter: {\n              logic: 'and',\n              filters: [{ field: 'type.code', operator: { type: 'equal' }, value: 'country' }],\n            },\n          });\n        })\n        .formField('@location-management:locations.entities.location.fields.state', (field: any) => {\n          field.path('stateId');\n          field.layout(3);\n          field.customWidget('lookup-editor', {\n            entity: 'LocationManagement.GeographicRegion',\n            look: 'select',\n            textField: 'title',\n            valueField: 'id',\n            hasClearButton: true,\n            allowCreate: 'quick',\n            disabled: '{{ !context.eval(\"countryId\") }}',\n            create: {\n              enable: true,\n              context: {\n                parentId: '{{ context.eval(\"countryId\") }}',\n                type: { code: 'state' },\n              },\n            },\n            expose: [\n              { source: 'id', target: 'state.id' },\n              { source: 'title', target: 'state.title' },\n            ],\n            filter: {\n              logic: 'and',\n              filters: [\n                { field: 'parentId', operator: { type: 'equal' }, value: '{{ context.eval(\"countryId\") }}' },\n                { field: 'type.code', operator: { type: 'equal' }, value: 'state' },\n              ],\n            },\n            triggers: [\n              {\n                event: \"{{ events.context('countryId') }}\",\n                action:\n                  \"{{ widget.setValue(null); context.set('state.title', null); context.set('cityId', null); context.set('city.id', null); context.set('city.title', null); widget.refresh(); }}\",\n              },\n            ],\n          });\n        })\n        .formField('@location-management:locations.entities.location.fields.city', (field: any) => {\n          field.path('cityId');\n          field.layout(3);\n          field.customWidget('lookup-editor', {\n            entity: 'LocationManagement.GeographicRegion',\n            look: 'select',\n            textField: 'title',\n            valueField: 'id',\n            hasClearButton: true,\n            allowCreate: 'quick',\n            disabled: '{{ !context.eval(\"stateId\") }}',\n            create: {\n              enable: true,\n              context: {\n                parentId: '{{ context.eval(\"stateId\") }}',\n                type: { code: 'city' },\n              },\n            },\n            expose: [\n              { source: 'id', target: 'city.id' },\n              { source: 'title', target: 'city.title' },\n            ],\n            filter: {\n              logic: 'and',\n              filters: [\n                { field: 'parentId', operator: { type: 'equal' }, value: '{{ context.eval(\"stateId\") }}' },\n                { field: 'type.code', operator: { type: 'equal' }, value: 'city' },\n              ],\n            },\n            triggers: [\n              {\n                event: \"{{ events.context('stateId') }}\",\n                action: \"{{ widget.setValue(null); context.set('city.title', null); widget.refresh(); }}\",\n              },\n              {\n                event: \"{{ events.context('countryId') }}\",\n                action: \"{{ widget.setValue(null); context.set('city.title', null); widget.refresh(); }}\",\n              },\n            ],\n          });\n        });\n    });\n\n    //#endregion\n\n    //#region ----   Map picker (when show map is enabled)   ----\n\n    if (hasMap) {\n      flex.grid((mapRow: any) => {\n        mapRow.setColumns(12).setGap('12px');\n        mapRow.formField('@location-management:locations.entities.location.fields.coordinates', (field: any) => {\n          field.path('coordinates');\n          field.layout(12);\n          field.visible('{{ context.eval(\"showMap\") }}');\n          field.customWidget('map', { hasDraw: true, maxPolygon: 0 });\n        });\n      });\n    }\n\n    //#endregion\n  }\n\n  /**\n   * Returns the address form layout node using layoutBuilder.create().flex().build() for use in axp-layout-renderer.\n   */\n  getAddressFormLayout(options: AXPAddressFormContentOptions): AXPWidgetNode {\n    return this.layoutBuilder\n      .create()\n      .flex((flex) => this.buildAddressFormContent(flex, options))\n      .build();\n  }\n\n  //#endregion\n\n  //#region ----   Geographic Cascade Methods   ----\n\n  /**\n   * Builds layout context with flat lookup ids (countryId/stateId/cityId) required for cascade triggers.\n   * Same pattern as LocationManagement.Location entity fields.\n   */\n  buildAddressFormContext(\n    addressData: Partial<AXPAddressData>,\n    options?: { hasMap?: boolean; labels?: AXPAddressLabel[] },\n  ): AXPAddressFormContext {\n    const labels = options?.labels ?? [];\n    const dataWithLabelDefault =\n      labels.length > 0 ? this.applyLabelDefaults(addressData, labels) : addressData;\n\n    return {\n      ...dataWithLabelDefault,\n      countryId: dataWithLabelDefault.country?.id,\n      stateId: dataWithLabelDefault.state?.id,\n      cityId: dataWithLabelDefault.city?.id,\n      showMap: (options?.hasMap ?? false) && !!dataWithLabelDefault.coordinates,\n    };\n  }\n\n  /**\n   * Clears dependent geographic fields when a parent selection changes.\n   * Mirrors Location entity cascade: state depends on country, city depends on state.\n   */\n  applyGeographicCascade(\n    previous: Partial<AXPAddressFormContext>,\n    next: Partial<AXPAddressFormContext>,\n  ): Partial<AXPAddressFormContext> {\n    const result = { ...next };\n    const previousCountryId = previous.countryId ?? previous.country?.id;\n    const nextCountryId = result.countryId ?? result.country?.id;\n    const previousStateId = previous.stateId ?? previous.state?.id;\n    const nextStateId = result.stateId ?? result.state?.id;\n\n    if (previousCountryId !== nextCountryId) {\n      result.state = undefined;\n      result.city = undefined;\n      result.stateId = undefined;\n      result.cityId = undefined;\n    } else if (previousStateId !== nextStateId) {\n      result.city = undefined;\n      result.cityId = undefined;\n    }\n\n    return result;\n  }\n\n  //#endregion\n\n  //#region ----   Address Formatting Methods   ----\n\n  /**\n   * Formats address data into full address string\n   * Format: [street1], [street2], [country] - [state], [city], [postalCode]\n   * Uses titles from exposed fields, excludes coordinates\n   */\n  formatAddress(data: Partial<AXPAddressData>): string {\n    const parts: string[] = [];\n\n    if (data.street1) {\n      parts.push(data.street1);\n    }\n\n    if (data.street2) {\n      parts.push(data.street2);\n    }\n\n    const locationParts: string[] = [];\n\n    // Use exposed title fields if available (from lookup widget expose)\n    const countryTitle = data.country?.title;\n    const stateTitle = data.state?.title;\n    const cityTitle = data.city?.title;\n\n    if (countryTitle) {\n      locationParts.push(countryTitle);\n    }\n\n    if (stateTitle) {\n      locationParts.push(stateTitle);\n    }\n\n    if (locationParts.length > 0) {\n      parts.push(locationParts.join(' - '));\n    }\n\n    if (cityTitle) {\n      parts.push(cityTitle);\n    }\n\n    if (data.postalCode) {\n      parts.push(data.postalCode);\n    }\n\n    // Explicitly exclude coordinates from formatted address\n    return parts.filter(Boolean).join(', ');\n  }\n\n  /**\n   * Collapse header parts: translated label (semibold in template) + full address.\n   */\n  async resolveCollapsibleHeader(\n    value: Partial<AXPAddressData>,\n    options: { labels: AXPAddressLabel[]; placeholder: string },\n  ): Promise<AXPAddressCollapsibleHeader> {\n    const full = (value.full?.trim() || this.formatAddress(value)).trim();\n    const addressText = full !== '' ? full : options.placeholder;\n    const labelId = extractValue<string>(value.label);\n\n    if (!labelId || options.labels.length === 0) {\n      return { labelText: null, addressText };\n    }\n\n    const entry = options.labels.find((item) => item.id === labelId);\n    if (!entry) {\n      return { labelText: null, addressText };\n    }\n\n    const labelText = await this.translationService.translateAsync(entry.name);\n    return { labelText, addressText };\n  }\n\n  //#endregion\n\n  //#region ----   Dialog & UI Methods   ----\n\n  /**\n   * Shows address details popup dialog using the shared address form layout.\n   */\n  async showAddressDetailsPopup(\n    addressData: Partial<AXPAddressData>,\n    labels?: AXPAddressLabel[],\n    hasMap: boolean = true,\n  ): Promise<AXPAddressData | null> {\n    const initialContext = this.buildAddressFormContext(addressData, { hasMap, labels: labels ?? [] });\n    const dialogTitle = await this.translationService.translateAsync('@general:terms.common.address');\n    const ref = await this.layoutBuilder\n      .create()\n      .dialog((dialog) => {\n        dialog\n          .setTitle(dialogTitle)\n          .setSize('lg')\n          .setContext(initialContext)\n          .content((layoutBuilder) => {\n            layoutBuilder.flex((flex) =>\n              this.buildAddressFormContent(flex, {\n                labels: labels ?? [],\n                hasMap,\n                addressData,\n              }),\n            );\n          })\n          .setActions((actions: IActionBuilder) => {\n            actions.cancel('@general:actions.cancel.title').submit('@general:actions.apply.title');\n          });\n      })\n      .show();\n\n    if (ref.action() === 'cancel') {\n      ref.close();\n      return null;\n    }\n\n    const result = this.applyGeographicCascade(\n      initialContext,\n      this.normalizeAddressData(ref.context() as AXPAddressData),\n    ) as AXPAddressData;\n    ref.close();\n    return result;\n  }\n\n  //#endregion\n\n  //#region ----   Label Defaults   ----\n\n  /** Returns the first configured label id, used as the default selection. */\n  resolveDefaultLabelId(labels: AXPAddressLabel[]): string | undefined {\n    return first(labels)?.id;\n  }\n\n  /** Applies the default label when labels are configured and none is set yet. */\n  applyLabelDefaults(\n    value: Partial<AXPAddressData>,\n    labels: AXPAddressLabel[],\n  ): Partial<AXPAddressData> {\n    if (labels.length === 0) {\n      return value;\n    }\n\n    const labelId = extractValue<string>(value.label);\n    if (labelId) {\n      return value;\n    }\n\n    const defaultLabelId = this.resolveDefaultLabelId(labels);\n    if (!defaultLabelId) {\n      return value;\n    }\n\n    return { ...value, label: defaultLabelId };\n  }\n\n  //#endregion\n\n  //#region ----   Data Normalization Methods   ----\n\n  /**\n   * Normalizes address data from various input formats\n   */\n  normalizeAddressData(value: Partial<AXPAddressData> | AXPAddressData | string | null | undefined): AXPAddressData {\n    if (typeof value === 'object' && value !== null) {\n      return {\n        street1: value.street1 ?? '',\n        street2: value.street2,\n        country: value.country,\n        state: value.state,\n        city: value.city,\n        postalCode: value.postalCode,\n        coordinates: value.coordinates,\n        full: value.full ?? this.formatAddress(value),\n        label: extractValue<string>(value.label) ?? undefined,\n      };\n    }\n\n    // Simple string format\n    return {\n      street1: '',\n      street2: '',\n      country: undefined,\n      state: undefined,\n      city: undefined,\n      postalCode: '',\n      coordinates: undefined,\n      full: value?.toString() || '',\n      label: undefined,\n    };\n  }\n\n  //#endregion\n}\n\n//#endregion\n\n","import { AXPAddressData, AXPAddressLabel, AXPAddressMode, extractValue } from '@acorex/platform/contracts';\nimport { AXDataSource, AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCollapseModule } from '@acorex/components/collapse';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPLayoutRendererComponent } from '@acorex/platform/layout/builder';\n\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostBinding, computed, effect, inject, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { AXPAddressWidgetService } from './address.service';\n\n@Component({\n  selector: 'axp-address-widget-edit',\n  template: `\n    @if (addressMode() === 'simple') {\n      <div class=\"ax-grid ax-grid-cols-12 ax-gap-4 ax-auto-cols-max\">\n        <ax-text-box\n          [ngModel]=\"valueAsObject().full\"\n          (onValueChanged)=\"handleValueChange($event)\"\n          type=\"text\"\n          name=\"full\"\n          [placeholder]=\"placeholder()\"\n          [ngClass]=\"generateClasses('value')\"\n          [disabled]=\"disabled()\"\n        >\n          @for (validation of validationRules(); track $index) {\n            <ax-validation-rule\n              [rule]=\"validation.rule\"\n              [message]=\"validation.options?.message\"\n              [options]=\"validation.options\"\n            ></ax-validation-rule>\n          }\n        </ax-text-box>\n        @if (hasLabel()) {\n          <ax-select-box\n            [dataSource]=\"labelsDataSource\"\n            [ngModel]=\"valueAsObject().label\"\n            [disabled]=\"disabled()\"\n            (onValueChanged)=\"handleValueChange($event)\"\n            placeholder=\"{{ '@general:widgets.selectbox.popover.title' | translate | async }}\"\n            name=\"label\"\n            valueField=\"id\"\n            textField=\"name\"\n            [ngClass]=\"generateClasses('label')\"\n          >\n            <ax-validation-rule\n              rule=\"required\"\n              message=\"{{ '@general:validation.messages.required' | translate | async }}\"\n            ></ax-validation-rule>\n          </ax-select-box>\n        }\n      </div>\n    } @else if (addressMode() === 'expandable') {\n      <div class=\"ax-w-full\">\n        <ax-collapse-group look=\"fill\">\n          <ax-collapse\n            [headerTemplate]=\"collapseHeaderTemplate\"\n            [showHeader]=\"true\"\n            [isCollapsed]=\"collapsibleCollapsed()\"\n            (isCollapsedChange)=\"collapsibleCollapsed.set($event)\"\n          >\n            <div class=\"ax-pt-1\">\n              @for (formKey of [layoutRendererGeneration()]; track formKey) {\n                <axp-layout-renderer\n                  [layout]=\"addressFormLayout()\"\n                  [context]=\"collapsibleFormContext()\"\n                  (contextChange)=\"onCollapsibleFormContextChange($event)\"\n                />\n              }\n            </div>\n          </ax-collapse>\n        </ax-collapse-group>\n      </div>\n\n      <ng-template #collapseHeaderTemplate>\n        <div class=\"ax-collapse-header-container\">\n          <div class=\"ax-collapse-header-start\">\n            <span class=\"ax-collapse-header-icon fa-light fa-map-marker-alt\"></span>\n            <span>\n              @if (collapsibleHeaderLabel()) {\n                <span class=\"ax-font-semibold\">{{ collapsibleHeaderLabel() }}</span>\n                @if (collapsibleHeaderAddress()) {\n                  <span> · {{ collapsibleHeaderAddress() }}</span>\n                }\n              } @else {\n                {{ collapsibleHeaderAddress() }}\n              }\n            </span>\n          </div>\n          <div class=\"ax-collapse-header-end\">\n            <span\n              class=\"ax-icon ax-icon-chevron-left ax-collapse-arrow\"\n              [class]=\"collapsibleCollapsed() ? '-rotation-90' : 'rotation-90'\"\n            ></span>\n          </div>\n        </div>\n      </ng-template>\n    } @else {\n      <div class=\"ax-grid ax-grid-cols-12 ax-gap-4 ax-auto-cols-max\">\n        <div class=\"ax-flex ax-items-center ax-gap-2 ax-col-span-12\">\n          <ax-text-box\n            [ngModel]=\"formattedAddress()\"\n            type=\"text\"\n            [readonly]=\"true\"\n            [placeholder]=\"placeholder()\"\n            class=\"ax-flex-1\"\n            [disabled]=\"disabled()\"\n          >\n          <ax-prefix>\n            <ax-icon icon=\"fa-light fa-map-marker-alt\"/>\n          </ax-prefix>\n          <ax-suffix>\n            <ax-button\n              look=\"flat\"\n              size=\"sm\"\n              [disabled]=\"disabled()\"\n              (onClick)=\"showDetailsPopup()\"\n            >\n              <ax-icon icon=\"fa-light fa-cog\"/>\n            </ax-button>\n          </ax-suffix>\n          </ax-text-box>\n        </div>\n      </div>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    CommonModule,\n    FormsModule,\n    AXSelectBoxModule,\n    AXFormModule,\n    AXDecoratorModule,\n    AXTextBoxModule,\n    AXValidationModule,\n    AXTranslationModule,\n    AXButtonModule,\n    AXCollapseModule,\n    AXPLayoutRendererComponent,\n  ],\n})\nexport class AXPAddressWidgetEditComponent extends AXPValueWidgetComponent<AXPAddressData | string> {\n  private addressService = inject(AXPAddressWidgetService);\n\n  /** Collapsible mode: true = panel collapsed (only full address visible), false = expanded (edit button visible) */\n  protected collapsibleCollapsed = signal<boolean>(true);\n  protected collapsibleHeaderLabel = signal<string | null>(null);\n  protected collapsibleHeaderAddress = signal<string>('');\n\n  /** Bumped on parent discard so the nested layout renderer remounts with reverted context. */\n  protected layoutRendererGeneration = signal(0);\n\n  private parentContextWasRestored = false;\n\n  #resetNestedFormOnDiscard = effect(() => {\n    if (this.addressMode() !== 'expandable') {\n      return;\n    }\n\n    const isRestored = this.contextService.changeEvent().state === 'restored';\n    if (isRestored && !this.parentContextWasRestored) {\n      this.layoutRendererGeneration.update((generation) => generation + 1);\n    }\n    this.parentContextWasRestored = isRestored;\n  });\n\n  #ensureDefaultLabelEffect = effect(() => {\n    const labels = this.labels();\n    if (!this.hasLabel() || labels.length === 0) {\n      return;\n    }\n\n    const value = this.valueAsObject();\n    const labelId = extractValue<string>(value.label);\n    if (labelId) {\n      return;\n    }\n\n    const defaulted = this.addressService.applyLabelDefaults(value, labels);\n    this.setValue(this.setFormattedValue(defaulted as AXPAddressData));\n  });\n\n  #collapsibleHeaderEffect = effect(() => {\n    const value = this.valueAsObject();\n    this.formattedAddress();\n    const labels = this.labels();\n    const placeholder = this.placeholder();\n\n    void this.addressService\n      .resolveCollapsibleHeader(value, { labels, placeholder })\n      .then((header) => {\n        this.collapsibleHeaderLabel.set(header.labelText);\n        this.collapsibleHeaderAddress.set(header.addressText);\n      });\n  });\n\n  protected addressMode = computed<AXPAddressMode>(\n    () => (extractValue(this.options()['mode']) as AXPAddressMode) || 'simple',\n  );\n\n  protected placeholder = computed<string>(\n    () => (this.options()['placeholder'] as string) || 'Enter address...',\n  );\n\n  protected labels = computed<AXPAddressLabel[]>(() => this.options()['labels'] || []);\n  protected disabled = computed<boolean>(() => (this.options()['disabled'] as boolean) ?? false);\n  protected hasLabel = computed<boolean>(() => (this.options()['hasLabel'] as boolean) ?? false);\n  protected hasMap = computed<boolean>(() => (this.options()['hasMap'] as boolean) ?? true);\n\n  private format = computed<'object' | 'string'>(() => {\n    if (this.hasLabel() || this.addressMode() === 'popup' || this.addressMode() === 'expandable') {\n      return 'object';\n    }\n    return 'string';\n  });\n\n  protected valueAsObject = computed(() => this.toObject(this.getValue()));\n\n  protected formattedAddress = computed(() => {\n    const value = this.valueAsObject();\n    return value.full || this.addressService.formatAddress(value);\n  });\n\n  /** Layout node from create().flex().build() for inline renderer (expandable mode). */\n  protected addressFormLayout = computed(() =>\n    this.addressService.getAddressFormLayout({\n      labels: this.hasLabel() ? this.labels() : [],\n      hasMap: this.hasMap(),\n      addressData: this.valueAsObject(),\n    }),\n  );\n\n  /** Context for inline address form (expandable); includes showMap for map toggle. */\n  protected collapsibleFormContext = computed(() =>\n    this.addressService.buildAddressFormContext(this.valueAsObject(), {\n      hasMap: this.hasMap(),\n      labels: this.hasLabel() ? this.labels() : [],\n    }),\n  );\n\n  protected onCollapsibleFormContextChange(ctx: Partial<AXPAddressData> | null | undefined): void {\n    if (ctx == null) return;\n    const labels = this.hasLabel() ? this.labels() : [];\n    const previous = this.addressService.buildAddressFormContext(this.valueAsObject(), {\n      hasMap: this.hasMap(),\n      labels,\n    });\n    const normalized = this.addressService.normalizeAddressData(\n      this.addressService.applyGeographicCascade(previous, ctx),\n    );\n    normalized.full = this.addressService.formatAddress(normalized);\n    this.setValue(this.setFormattedValue(normalized));\n  }\n\n  protected labelsDataSource = new AXDataSource({\n    pageSize: 20,\n    load: (e) => {\n      const labels = this.labels();\n      return Promise.resolve({\n        items: labels.slice(e.skip, (e.skip ?? 0) + (e.take ?? 0)),\n        total: labels.length,\n      });\n    },\n    byKey: (key) => {\n      return Promise.resolve(this.labels().find((i) => i.id === key));\n    },\n  });\n\n  protected async handleValueChange(e: AXValueChangedEvent) {\n    const { name, value, isUserInteraction } = e;\n    if (isUserInteraction) {\n      const newValues = { ...this.valueAsObject(), [name as string]: value };\n      this.setValue(this.setFormattedValue(newValues));\n    }\n  }\n\n  protected async showDetailsPopup() {\n    const currentValue = this.valueAsObject();\n    const result = await this.addressService.showAddressDetailsPopup(currentValue, this.labels(), this.hasMap());\n\n    if (result) {\n      // Auto-generate full address\n      result.full = this.addressService.formatAddress(result);\n      this.setValue(this.setFormattedValue(result));\n    }\n  }\n\n  protected generateClasses(element: 'value' | 'label'): any {\n    const isValue = element === 'value';\n    const hasLabel = this.hasLabel();\n    const baseClass = 'ax-col-span-12';\n    if (!hasLabel) {\n      return baseClass;\n    }\n    return {\n      [baseClass]: true,\n      'lg:ax-col-span-7': isValue,\n      'lg:ax-col-span-5': !isValue,\n    };\n  }\n\n  private toObject(item: AXPAddressData | string | null | undefined): AXPAddressData {\n    return this.addressService.normalizeAddressData(item);\n  }\n\n  private setFormattedValue(item: AXPAddressData): string | AXPAddressData {\n    if (this.format() === 'string') {\n      return item.full;\n    }\n    return item;\n  }\n\n  @HostBinding('class')\n  private get __class(): string {\n    return 'ax-block ax-flex-1';\n  }\n}\n\n","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { isEmpty, isNull } from 'lodash-es';\nimport { AXPAddressData } from '@acorex/platform/contracts';\nimport { AXPAddressWidgetService } from './address.service';\n\n@Component({\n    selector: 'axp-address-widget-view',\n    template: `\n    @if (hasValue()) {\n      <div class=\"ax-flex ax-gap-2 ax-items-center\">\n        <div class=\"ax-flex ax-gap-2 ax-group ax-items-center ax-justify-center ax-truncate\">\n          <span class=\"ax-truncate\">{{ formattedAddress() }}</span>\n        </div>\n        @if (hasLabel() && internalValue().label) {\n          <div><ax-badge color=\"primary\" [look]=\"'twotone'\" [text]=\"internalValue().label || ''\"></ax-badge></div>\n        }\n      </div>\n    } @else {\n      <span class=\"ax-text-muted\">---</span>\n    }\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [FormsModule, AXBadgeModule, AXDecoratorModule],\n})\nexport class AXPAddressWidgetViewComponent extends AXPValueWidgetComponent<AXPAddressData | string> {\n    private addressService = inject(AXPAddressWidgetService);\n\n    protected hasLabel = computed<boolean>(() => (this.options()['hasLabel'] as boolean) ?? false);\n\n    protected internalValue = computed(() => this.addressService.normalizeAddressData(this.getValue()));\n\n    protected formattedAddress = computed(() => {\n        const value = this.internalValue();\n        return value.full || this.addressService.formatAddress(value);\n    });\n\n    protected hasValue = computed(() => {\n        const rawValue = this.getValue();\n        if (isNull(rawValue)) return false;\n        const value = this.addressService.normalizeAddressData(rawValue);\n        return !isEmpty(value.full);\n    });\n}\n\n","import { AXPClipBoardService } from '@acorex/platform/common';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { isEmpty, isNull } from 'lodash-es';\nimport { AXPAddressData } from '@acorex/platform/contracts';\nimport { AXPAddressWidgetService } from './address.service';\n\n@Component({\n    selector: 'axp-address-widget-column',\n    template: `\n    @if (hasValue()) {\n      <div class=\"ax-flex ax-justify-start ax-items-center ax-gap-2 ax-group ax-w-fit\">\n        <span class=\"ax-truncate\" [title]=\"formattedAddress()\">{{ formattedAddress() }}</span>\n        <i\n          (click)=\"clipboard.copy('Address', formattedAddress())\"\n          class=\"fa-solid fa-copy ax-text-neutral-400 dark:hover:ax-text-neutral-100 hover:ax-text-neutral-900 group-hover:ax-visible ax-invisible\"\n        ></i>\n      </div>\n    } @else {\n      <span class=\"ax-text-muted\">---</span>\n    }\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    inputs: ['rawValue', 'rowData'],\n})\nexport class AXPAddressWidgetColumnComponent extends AXPColumnWidgetComponent<any> {\n    protected clipboard = inject(AXPClipBoardService);\n    private addressService = inject(AXPAddressWidgetService);\n\n    protected normalizedValue = computed(() => {\n        const raw = this.rawValue;\n        if (!raw) return null;\n        return this.addressService.normalizeAddressData(raw);\n    });\n\n    protected formattedAddress = computed(() => {\n        const value = this.normalizedValue();\n        if (!value) return '';\n        return value.full || this.addressService.formatAddress(value);\n    });\n\n    protected hasValue = computed(() => {\n        const value = this.normalizedValue();\n        if (!value) return false;\n        return !isEmpty(value.full);\n    });\n}\n\n","import { AXFormatService } from '@acorex/core/format';\nimport { AXPSettingsService } from '@acorex/platform/common';\nimport { AXPRegionalSetting } from '@acorex/platform/contracts';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\n@Component({\n  selector: 'axp-date-time-box-widget-column',\n  template: `<div class=\"ax-flex\">\n    <span [dir]=\"'ltr'\" [title]=\"displayValue()\">{{ displayValue() }}</span>\n  </div>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [],\n  inputs: ['rawValue', 'rowData'],\n})\nexport class AXPDateTimeBoxWidgetColumnComponent extends AXPColumnWidgetComponent<string> {\n  private formatter = inject(AXFormatService);\n  private settingsService = inject(AXPSettingsService);\n\n  protected convertedValue = signal<string | null>(\n    typeof this.rawValue === 'string' ? this.rawValue : null,\n  );\n  protected displayValue = computed(() => this.convertedValue() ?? '---');\n  protected dateMode = computed<'short' | 'long'>(() => (this.options['mode'] as 'short' | 'long') || 'short');\n  protected format = computed<'date' | 'time' | 'datetime'>(() => {\n    const rawValue = this.options['format'] as any;\n    if (typeof rawValue == 'string') return rawValue;\n    else if (rawValue && typeof rawValue == 'object') return rawValue['id'];\n    else return 'date';\n  });\n\n  #effect = effect(() => {\n    this.updateValue();\n  });\n\n  private updateValue = async () => {\n    const rawValue = this.rawValue;\n    if (rawValue == null) {\n      this.convertedValue.set('---');\n      return;\n    }\n    this.convertedValue.set(await this.handleFormat(rawValue));\n  };\n\n  protected async handleFormat(value: string): Promise<string> {\n    let mode = '';\n    const dateMode = this.dateMode();\n    if (this.format() == 'date') {\n      const settingKey = dateMode === 'short' ? AXPRegionalSetting.ShortDate : AXPRegionalSetting.LongDate;\n      mode = await this.settingsService.get(settingKey);\n    } else if (this.format() == 'time') {\n      const settingKey = dateMode === 'short' ? AXPRegionalSetting.ShortTime : AXPRegionalSetting.LongTime;\n      mode = await this.settingsService.get(settingKey);\n    } else if (this.format() == 'datetime') {\n      const dateKey = dateMode === 'short' ? AXPRegionalSetting.ShortDate : AXPRegionalSetting.LongDate;\n      const timeKey = dateMode === 'short' ? AXPRegionalSetting.ShortTime : AXPRegionalSetting.LongTime;\n      mode = `${await this.settingsService.get(dateKey)} ${await this.settingsService.get(timeKey)}`;\n    }\n\n    return value\n      ? this.formatter.format(new Date(value), this.format(), {\n        format: mode,\n      })\n      : '---';\n  }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXSelectionListModule } from '@acorex/components/selection-list';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport {\n  ALL_DEFAULT_OPERATORS,\n  AXPFilterOperator,\n  BOOLEAN_OPERATORS,\n  DATE_OPERATORS,\n  NUMBER_OPERATORS,\n  STRING_OPERATORS,\n} from '@acorex/platform/common';\n\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, model, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n  selector: 'axp-filter-operations',\n  templateUrl: './operations.component.html',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [FormsModule, AXDecoratorModule, AXPopoverModule, AXButtonModule, AXSelectionListModule],\n})\nexport class AXPFilterOperationsComponent {\n  private readonly translationService = inject(AXTranslationService);\n\n  selectedOperation = model.required();\n  type = input<'string' | 'number' | 'datetime' | 'boolean'>('string');\n  /** When set and non-empty, only these operators are shown (order preserved). Must match names allowed for `type`. */\n  operations = input<AXPFilterOperator[] | undefined>(undefined);\n\n  private readonly rawOperations = computed(() => this.resolveOperations());\n  private readonly operationsSignal = signal<AXPFilterOperator[]>([]);\n\n  protected operationItems = computed(() => this.operationsSignal());\n\n  constructor() {\n    // Translate operators when raw operations change\n    effect(() => {\n      const ops = this.rawOperations(); // Track changes\n      this.translateOperators(ops);\n    });\n\n    // Re-translate when language changes\n    this.translationService.langChanges$.subscribe(() => {\n      this.translateOperators(this.rawOperations());\n    });\n  }\n\n  private translateOperators(ops: AXPFilterOperator[]): void {\n    Promise.all(\n      ops.map(async (op) => ({\n        ...op,\n        title: op.title.startsWith('@')\n          ? await this.translationService.translateAsync(op.title)\n          : op.title,\n      }))\n    ).then((translatedOps) => {\n      this.operationsSignal.set(translatedOps);\n    });\n  }\n\n  private getOperationsForType(): AXPFilterOperator[] {\n    switch (this.type()) {\n      case 'string':\n        return STRING_OPERATORS;\n      case 'number':\n        return NUMBER_OPERATORS;\n      case 'boolean':\n        return BOOLEAN_OPERATORS;\n      case 'datetime':\n        return DATE_OPERATORS;\n      default:\n        return ALL_DEFAULT_OPERATORS;\n    }\n  }\n\n  private resolveOperations(): AXPFilterOperator[] {\n    const base = this.getOperationsForType();\n    const configured = this.operations();\n    if (!configured?.length) {\n      return base;\n    }\n    const byName = new Map(base.map((o) => [o.name, o]));\n    const resolved: AXPFilterOperator[] = [];\n    for (const op of configured) {\n      const canonical = byName.get(op.name);\n      if (canonical) {\n        resolved.push({\n          ...canonical,\n          ...op,\n          hasValue: canonical.hasValue,\n        });\n      }\n    }\n    return resolved.length > 0 ? resolved : base;\n  }\n}\n","@if (operationItems().length > 1) {\n<ax-button #changeOperator look=\"blank\" color=\"default\" class=\"ax-sm\">\n  <ax-icon class=\"fa-solid fa-ellipsis-vertical\"></ax-icon>\n</ax-button>\n<ax-popover\n  #operatorsPopover\n  [target]=\"changeOperator\"\n  [openOn]=\"'toggle'\"\n  [closeOn]=\"'clickOut'\"\n  [adaptivityEnabled]=\"true\"\n>\n  <div\n    class=\"ax-max-h-max ax-overflow-auto ax-bg-lightest ax-py-5 ax-px-3 ax-border ax-border-default ax-rounded-md ax-shadow-md ax-w-full ax-min-w-[250px]\"\n  >\n    <ax-selection-list\n      class=\"\"\n      [valueField]=\"'name'\"\n      [textField]=\"'title'\"\n      [(ngModel)]=\"selectedOperation\"\n      (ngModelChange)=\"operatorsPopover.close()\"\n      [direction]=\"'vertical'\"\n      [items]=\"operationItems()\"\n      [multiple]=\"false\"\n    ></ax-selection-list>\n  </div>\n</ax-popover>\n}\n","import { AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXCalendarViewType } from '@acorex/components/calendar';\nimport { AXDateTimeBoxModule } from '@acorex/components/datetime-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXSelectBoxComponent, AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXCalendarService } from '@acorex/core/date-time';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXValidationModule, AXValidationService } from '@acorex/core/validation';\nimport {\n  AXPFilterOperator,\n  AXPSettingsService,\n  applyDateFilterPreset,\n  AXPDateTimeFilterPreset,\n  AXPDateTimeFilterValue,\n  findManualPresetIdByOperation,\n  resolveDateFilterPresets,\n} from '@acorex/platform/common';\nimport { AXPRegionalSetting } from '@acorex/platform/contracts';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { CommonModule } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  HostBinding,\n  Signal,\n  computed,\n  effect,\n  inject,\n  signal,\n  untracked,\n  viewChild,\n  WritableSignal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXPFilterOperationsComponent } from '../../filters/operations/operations.component';\nimport type { AXPDateTimeFilterUiMode } from './date-time-box-widget.config';\n\ninterface AXPDateTimeFilterPresetItem {\n  id: string;\n  title: string;\n}\n\n@Component({\n  selector: 'axp-date-time-box-widget-edit',\n  templateUrl: './date-time-box-widget-edit.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    CommonModule,\n    FormsModule,\n    AXFormModule,\n    AXValidationModule,\n    AXDateTimeBoxModule,\n    AXDecoratorModule,\n    AXSelectBoxModule,\n    AXTranslationModule,\n    AXPFilterOperationsComponent,\n  ],\n})\nexport class AXPDateTimeBoxWidgetEditComponent\n  extends AXPValueWidgetComponent<string | AXPDateTimeFilterValue>\n  implements AfterViewInit\n{\n  //#region ---- Services & Dependencies ----\n\n  protected validationService = inject(AXValidationService);\n  private settingsService = inject(AXPSettingsService);\n  private calendarService = inject(AXCalendarService);\n  private translationService = inject(AXTranslationService);\n\n  //#endregion\n\n  //#region ---- View References ----\n\n  protected selectBox = viewChild<AXSelectBoxComponent>('selectBox');\n\n  //#endregion\n\n  //#region ---- Computed Properties ----\n\n  protected filterMode = computed<boolean>(() => (this.options()['filterMode'] as boolean) ?? false);\n\n  protected filterUi = computed<AXPDateTimeFilterUiMode>(() => {\n    const ui = this.options()['filterUi'] as AXPDateTimeFilterUiMode | undefined;\n    return ui === 'simple' ? 'simple' : 'presets';\n  });\n\n  protected resolvedPresets = computed(() =>\n    resolveDateFilterPresets(\n      this.options()['filterPresets'] as AXPDateTimeFilterPreset[] | undefined,\n      this.options()['filterPresetIds'] as string[] | undefined,\n    ),\n  );\n\n  protected filterOperations = computed((): AXPFilterOperator[] | undefined => {\n    const raw = this.options()['operations'] as AXPFilterOperator[] | undefined;\n    return raw?.length ? raw : undefined;\n  });\n\n  protected selectedManualPreset = computed(() => {\n    const id = this.selectedPresetId();\n    if (!id) {\n      return undefined;\n    }\n    return this.resolvedPresets().find((p) => p.id === id && p.kind === 'manual');\n  });\n\n  protected clearButton = computed<boolean>(() => this.options()['clearButton'] as boolean);\n  protected minValue = computed<string>(() => this.options()['minValue'] as string);\n  protected maxValue = computed<string>(() => this.options()['maxValue'] as string);\n  protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n  protected readonly = computed<boolean>(() => this.options()['readonly'] as boolean);\n  protected placeholder = computed<string>(() => this.options()['placeholder']);\n\n  protected dateMode = computed<'short' | 'long'>(() => (this.options()['mode'] as 'short' | 'long') || 'short');\n\n  protected format = computed<'date' | 'time' | 'datetime'>(() => {\n    const rawValue = this.options()['format'] as string | { id: 'date' | 'time' | 'datetime' } | undefined;\n    if (rawValue === 'date' || rawValue === 'time' || rawValue === 'datetime') return rawValue;\n    if (rawValue && typeof rawValue === 'object') return rawValue.id;\n    return 'date';\n  });\n\n  /** Passed to `ax-datetime-box` `[depth]` (`AXCalendarViewType`). */\n  protected inputDepth = computed((): AXCalendarViewType | undefined => {\n    if (this.format() === 'time') {\n      return undefined;\n    }\n\n    const raw = this.options()['depth'] as AXCalendarViewType | { id: AXCalendarViewType } | undefined;\n    if (raw === 'year' || raw === 'month' || raw === 'day') {\n      return raw;\n    }\n    if (raw && typeof raw === 'object' && 'id' in raw) {\n      const id = raw.id;\n      if (id === 'year' || id === 'month' || id === 'day') {\n        return id;\n      }\n    }\n    return undefined;\n  });\n\n  protected filterValue: Signal<Date | ''> = computed(() => {\n    const value = (this.getValue() as AXPDateTimeFilterValue | undefined)?.value;\n    if (typeof value === 'object' && value !== null) {\n      return '';\n    }\n    return this.convertSingleISODateToDate(value);\n  });\n\n  protected filterRangeValue: Signal<{ from: Date | ''; to: Date | '' }> = computed(() => {\n    const value = (this.getValue() as AXPDateTimeFilterValue | undefined)?.value;\n    if (typeof value === 'object' && value !== null) {\n      return this.convertRangeISODateToDate(value);\n    }\n    return { from: '', to: '' };\n  });\n\n  protected operation = computed(() => {\n    const existing = (this.getValue() as AXPDateTimeFilterValue | undefined)?.operation;\n    if (existing?.type) {\n      return existing;\n    }\n    if (this.filterMode() && this.filterUi() === 'simple') {\n      const ops = this.filterOperations();\n      if (ops?.length === 1) {\n        return { type: ops[0].name };\n      }\n      return { type: 'equal' };\n    }\n    return existing ?? { type: 'between' };\n  });\n\n  protected isValuelessOperation = computed(\n    () => this.operation().type === 'isEmpty' || this.operation().type === 'isNotEmpty',\n  );\n\n  protected rangeLimitDays = computed(() => {\n    const limit = this.options()['limit'];\n    return typeof limit === 'number' && limit > 0 ? limit : undefined;\n  });\n\n  protected filterBetweenRangeActive = computed(() => {\n    if (!this.filterMode() || !this.rangeLimitDays()) {\n      return false;\n    }\n    if (this.filterUi() === 'simple') {\n      return this.operation().type === 'between';\n    }\n    return this.selectedManualPreset()?.operationType === 'between';\n  });\n\n  protected filterFromMinValue = computed(() => this.resolveFilterFromMinValue());\n\n  protected filterFromMaxValue = computed(() => this.resolveFilterFromMaxValue());\n\n  protected filterToMinValue = computed(() => this.resolveFilterToMinValue());\n\n  protected filterToMaxValue = computed(() => this.resolveFilterToMaxValue());\n\n  //#endregion\n\n  //#region ---- Filter Mode State ----\n\n  protected selectedPresetId: WritableSignal<string> = signal('');\n\n  protected translatedPresets = signal<AXPDateTimeFilterPresetItem[]>([]);\n\n  //#endregion\n\n  //#region ---- Calendar Format ----\n\n  protected calendarFormat = signal('date');\n\n  #calendarFormatEffect = effect(async () => {\n    let mode = '';\n    const dateMode = this.dateMode();\n    if (this.format() === 'date') {\n      const settingKey = dateMode === 'short' ? AXPRegionalSetting.ShortDate : AXPRegionalSetting.LongDate;\n      mode = await this.settingsService.get(settingKey);\n    } else if (this.format() === 'time') {\n      const settingKey = dateMode === 'short' ? AXPRegionalSetting.ShortTime : AXPRegionalSetting.LongTime;\n      mode = await this.settingsService.get(settingKey);\n    } else if (this.format() === 'datetime') {\n      const dateKey = dateMode === 'short' ? AXPRegionalSetting.ShortDate : AXPRegionalSetting.LongDate;\n      const timeKey = dateMode === 'short' ? AXPRegionalSetting.ShortTime : AXPRegionalSetting.LongTime;\n      mode = `${await this.settingsService.get(dateKey)} ${await this.settingsService.get(timeKey)}`;\n    }\n    this.calendarFormat.set(mode);\n  });\n\n  #presetTranslateEffect = effect(() => {\n    if (!this.filterMode() || this.filterUi() !== 'presets') {\n      return;\n    }\n    const presets = this.resolvedPresets();\n    void this.translatePresets(presets);\n  });\n\n  //#endregion\n\n  //#region ---- Lifecycle Methods ----\n\n  constructor() {\n    super();\n    this.translationService.langChanges$.subscribe(() => {\n      if (this.filterMode() && this.filterUi() === 'presets') {\n        void this.translatePresets(this.resolvedPresets());\n      }\n    });\n  }\n\n  ngAfterViewInit(): void {\n    if (!this.filterMode() || this.filterUi() !== 'presets') {\n      return;\n    }\n\n    const presetId = findManualPresetIdByOperation(this.operation()?.type, this.resolvedPresets());\n    if (presetId) {\n      this.selectedPresetId.set(presetId);\n    }\n  }\n\n  //#endregion\n\n  //#region ---- Standard Mode Handlers ----\n\n  protected handleValueChange(e: AXValueChangedEvent): void {\n    if (e.isUserInteraction) {\n      this.setValue(e.value);\n    }\n  }\n\n  //#endregion\n\n  //#region ---- Filter Mode Handlers ----\n\n  protected handlePresetChange(e: AXValueChangedEvent): void {\n    if (e.isUserInteraction) {\n      this.selectedPresetId.set(e.value);\n      const nextValue = applyDateFilterPreset(e.value, this.calendarService);\n      this.setValue(nextValue);\n    }\n  }\n\n  protected handleOperationChange(operationType: unknown): void {\n    this.setValue({\n      value: (this.getValue() as AXPDateTimeFilterValue | undefined)?.value,\n      operation: { type: operationType as string },\n    });\n  }\n\n  protected handleFilterValueChange(e: AXValueChangedEvent, type: 'from' | 'to' | 'self'): void {\n    if (e.isUserInteraction) {\n      const operation = untracked(this.operation);\n      const currentRange = this.filterRangeValue();\n\n      switch (type) {\n        case 'self':\n          this.setValue({ operation, value: e.value?.toISOString() });\n          break;\n        case 'to': {\n          const from = currentRange.from;\n          this.setValue({\n            operation,\n            value: {\n              from: from instanceof Date ? from.toISOString() : from || undefined,\n              to: e.value?.toISOString(),\n            },\n          });\n          break;\n        }\n        case 'from': {\n          const to = currentRange.to;\n          this.setValue({\n            operation,\n            value: {\n              from: e.value?.toISOString(),\n              to: to instanceof Date ? to.toISOString() : to || undefined,\n            },\n          });\n          break;\n        }\n        default:\n          break;\n      }\n    }\n  }\n\n  //#endregion\n\n  //#region ---- Utility Methods ----\n\n  private async translatePresets(presets: AXPDateTimeFilterPreset[]): Promise<void> {\n    const translated = await Promise.all(\n      presets.map(async (preset) => ({\n        id: preset.id,\n        title: preset.title.startsWith('@')\n          ? await this.translationService.translateAsync(preset.title)\n          : preset.title,\n      })),\n    );\n    this.translatedPresets.set(translated);\n  }\n\n  private convertSingleISODateToDate = (value?: string): Date | '' => (value ? new Date(value) : '');\n\n  private convertRangeISODateToDate = (value: { from?: string; to?: string }): { from: Date | ''; to: Date | '' } => ({\n    from: value.from ? new Date(value.from) : '',\n    to: value.to ? new Date(value.to) : '',\n  });\n\n  private toFilterDate(value: Date | '' | string | undefined): Date | undefined {\n    if (value === '' || value === null || value === undefined) {\n      return undefined;\n    }\n    const date = value instanceof Date ? value : new Date(value);\n    return Number.isNaN(date.getTime()) ? undefined : date;\n  }\n\n  private addCalendarDays(date: Date, days: number): Date {\n    return this.calendarService.calendar.add(date, 'day', days).date;\n  }\n\n  private mergeMinBound(staticMin: string | undefined, dynamicMin: Date | undefined): Date | string | undefined {\n    const staticDate = staticMin ? new Date(staticMin) : undefined;\n    const staticValid = staticDate && !Number.isNaN(staticDate.getTime());\n    if (dynamicMin && staticValid) {\n      return staticDate > dynamicMin ? staticDate : dynamicMin;\n    }\n    return dynamicMin ?? staticMin;\n  }\n\n  private mergeMaxBound(staticMax: string | undefined, dynamicMax: Date | undefined): Date | string | undefined {\n    const staticDate = staticMax ? new Date(staticMax) : undefined;\n    const staticValid = staticDate && !Number.isNaN(staticDate.getTime());\n    if (dynamicMax && staticValid) {\n      return staticDate < dynamicMax ? staticDate : dynamicMax;\n    }\n    return dynamicMax ?? staticMax;\n  }\n\n  private resolveFilterFromMinValue(): Date | string | undefined {\n    if (!this.filterBetweenRangeActive()) {\n      return this.minValue() || undefined;\n    }\n    const to = this.toFilterDate(this.filterRangeValue().to);\n    if (!to) {\n      return this.minValue() || undefined;\n    }\n    const limit = this.rangeLimitDays()!;\n    return this.mergeMinBound(this.minValue(), this.addCalendarDays(to, -limit));\n  }\n\n  private resolveFilterFromMaxValue(): Date | string | undefined {\n    if (!this.filterBetweenRangeActive()) {\n      return this.maxValue() || undefined;\n    }\n    const to = this.toFilterDate(this.filterRangeValue().to);\n    if (!to) {\n      return this.maxValue() || undefined;\n    }\n    return this.mergeMaxBound(this.maxValue(), to);\n  }\n\n  private resolveFilterToMinValue(): Date | string | undefined {\n    if (!this.filterBetweenRangeActive()) {\n      return this.minValue() || undefined;\n    }\n    const from = this.toFilterDate(this.filterRangeValue().from);\n    if (!from) {\n      return this.minValue() || undefined;\n    }\n    return this.mergeMinBound(this.minValue(), from);\n  }\n\n  private resolveFilterToMaxValue(): Date | string | undefined {\n    if (!this.filterBetweenRangeActive()) {\n      return this.maxValue() || undefined;\n    }\n    const from = this.toFilterDate(this.filterRangeValue().from);\n    if (!from) {\n      return this.maxValue() || undefined;\n    }\n    const limit = this.rangeLimitDays()!;\n    return this.mergeMaxBound(this.maxValue(), this.addCalendarDays(from, limit));\n  }\n\n  focus(): void {\n    this.selectBox()?.focus();\n  }\n\n  //#endregion\n\n  //#region ---- Host Binding ----\n\n  @HostBinding('class')\n  private get __class(): string {\n    const cls: Record<string, boolean> = {};\n    cls['ax-block'] = true;\n    cls['ax-flex-1'] = true;\n    return cls as unknown as string;\n  }\n\n  //#endregion\n}\n","<!-- Filter mode: grid/list filters with operation metadata and optional preset ranges -->\n@if (filterMode()) {\n  <!-- Simple filter UI: operation picker + one or two datetime inputs -->\n  @if (filterUi() === 'simple') {\n    <div class=\"ax-flex ax-items-center ax-w-full\">\n      <!-- Between operation: from / to range inputs -->\n      @if (operation().type === 'between') {\n        <div class=\"ax-flex-1 ax-flex ax-gap-2\">\n          <ax-datetime-box\n            #dateTimeBox\n            class=\"ax-w-full\"\n            [format]=\"calendarFormat()\"\n            [picker]=\"format()\"\n            [depth]=\"inputDepth()\"\n            [minValue]=\"filterFromMinValue()\"\n            [maxValue]=\"filterFromMaxValue()\"\n            [placeholder]=\"'@general:terms.common.from' | translate | async\"\n            [disabled]=\"isValuelessOperation()\"\n            [ngModel]=\"filterRangeValue().from\"\n            (onValueChanged)=\"handleFilterValueChange($event, 'from')\"\n          >\n            <ax-clear-button></ax-clear-button>\n            @for (validation of validationRules(); track $index) {\n              <ax-validation-rule\n                [rule]=\"validation.rule\"\n                [message]=\"validation.options?.message\"\n                [options]=\"validation.options\"\n              ></ax-validation-rule>\n            }\n          </ax-datetime-box>\n          <ax-datetime-box\n            class=\"ax-w-full\"\n            [format]=\"calendarFormat()\"\n            [picker]=\"format()\"\n            [depth]=\"inputDepth()\"\n            [minValue]=\"filterToMinValue()\"\n            [maxValue]=\"filterToMaxValue()\"\n            [placeholder]=\"'@general:terms.common.to' | translate | async\"\n            [disabled]=\"isValuelessOperation()\"\n            [ngModel]=\"filterRangeValue().to\"\n            (onValueChanged)=\"handleFilterValueChange($event, 'to')\"\n          >\n            <ax-clear-button></ax-clear-button>\n            @for (validation of validationRules(); track $index) {\n              <ax-validation-rule\n                [rule]=\"validation.rule\"\n                [message]=\"validation.options?.message\"\n                [options]=\"validation.options\"\n              ></ax-validation-rule>\n            }\n          </ax-datetime-box>\n        </div>\n      } @else {\n        <!-- Single-value operations: equal, greaterThan, lessThan, isEmpty, isNotEmpty, etc. -->\n        <ax-datetime-box\n          #dateTimeBox\n          class=\"ax-flex-1\"\n          [format]=\"calendarFormat()\"\n          [picker]=\"format()\"\n          [depth]=\"inputDepth()\"\n          [placeholder]=\"(placeholder() | translate | async) ?? ''\"\n          [disabled]=\"isValuelessOperation()\"\n          [ngModel]=\"filterValue()\"\n          (onValueChanged)=\"handleFilterValueChange($event, 'self')\"\n        >\n          <ax-clear-button></ax-clear-button>\n          @for (validation of validationRules(); track $index) {\n            <ax-validation-rule\n              [rule]=\"validation.rule\"\n              [message]=\"validation.options?.message\"\n              [options]=\"validation.options\"\n            ></ax-validation-rule>\n          }\n        </ax-datetime-box>\n      }\n\n      <!-- Operation selector (equal, between, isEmpty, ...) -->\n      <axp-filter-operations\n        type=\"datetime\"\n        [operations]=\"filterOperations()\"\n        [selectedOperation]=\"operation().type\"\n        (selectedOperationChange)=\"handleOperationChange($event)\"\n      ></axp-filter-operations>\n    </div>\n  } @else {\n    <!-- Presets filter UI: relative ranges (Today, This Week, ...) plus manual inputs -->\n    <div class=\"ax-flex ax-flex-col ax-items-center ax-w-full\">\n      <!-- Preset dropdown (Today, Yesterday, This Week, Between, Greater Than, ...) -->\n      @if (resolvedPresets().length) {\n        <ax-select-box\n          #selectBox\n          class=\"ax-w-full\"\n          [dataSource]=\"translatedPresets()\"\n          [valueField]=\"'id'\"\n          [textField]=\"'title'\"\n          [placeholder]=\"('@general:actions.select.title' | translate | async) ?? ''\"\n          [ngModel]=\"selectedPresetId()\"\n          (onValueChanged)=\"handlePresetChange($event)\"\n        >\n          <ax-clear-button></ax-clear-button>\n        </ax-select-box>\n      }\n\n      <!-- Manual preset: custom between range -->\n      @if (selectedManualPreset()?.operationType === 'between') {\n        <div class=\"ax-flex ax-gap-2 ax-mt-2 ax-w-full\">\n          <ax-datetime-box\n            [format]=\"calendarFormat()\"\n            [picker]=\"format()\"\n            [depth]=\"inputDepth()\"\n            [minValue]=\"filterFromMinValue()\"\n            [maxValue]=\"filterFromMaxValue()\"\n            [placeholder]=\"'@general:terms.common.from' | translate | async\"\n            [ngModel]=\"filterRangeValue().from\"\n            (onValueChanged)=\"handleFilterValueChange($event, 'from')\"\n          >\n            @for (validation of validationRules(); track $index) {\n              <ax-validation-rule\n                [rule]=\"validation.rule\"\n                [message]=\"validation.options?.message\"\n                [options]=\"validation.options\"\n              ></ax-validation-rule>\n            }\n            <ax-clear-button></ax-clear-button>\n          </ax-datetime-box>\n          <ax-datetime-box\n            [format]=\"calendarFormat()\"\n            [picker]=\"format()\"\n            [depth]=\"inputDepth()\"\n            [minValue]=\"filterToMinValue()\"\n            [maxValue]=\"filterToMaxValue()\"\n            [placeholder]=\"'@general:terms.common.to' | translate | async\"\n            [ngModel]=\"filterRangeValue().to\"\n            (onValueChanged)=\"handleFilterValueChange($event, 'to')\"\n          >\n            <ax-clear-button></ax-clear-button>\n            @for (validation of validationRules(); track $index) {\n              <ax-validation-rule\n                [rule]=\"validation.rule\"\n                [message]=\"validation.options?.message\"\n                [options]=\"validation.options\"\n              ></ax-validation-rule>\n            }\n          </ax-datetime-box>\n        </div>\n      }\n\n      <!-- Manual preset: single bound for greaterThan / lessThan -->\n      @if (\n        selectedManualPreset()?.operationType === 'greaterThan' ||\n        selectedManualPreset()?.operationType === 'lessThan'\n      ) {\n        <div class=\"ax-w-full ax-mt-2\">\n          <ax-datetime-box\n            [format]=\"calendarFormat()\"\n            [picker]=\"format()\"\n            [depth]=\"inputDepth()\"\n            [ngModel]=\"filterValue()\"\n            (onValueChanged)=\"handleFilterValueChange($event, 'self')\"\n          >\n            @for (validation of validationRules(); track $index) {\n              <ax-validation-rule\n                [rule]=\"validation.rule\"\n                [message]=\"validation.options?.message\"\n                [options]=\"validation.options\"\n              ></ax-validation-rule>\n            }\n            <ax-clear-button></ax-clear-button>\n          </ax-datetime-box>\n        </div>\n      }\n    </div>\n  }\n} @else {\n  <!-- Standard form edit: single date/time value bound to entity or form field -->\n  <ax-datetime-box\n    [ngModel]=\"getValue()\"\n    [picker]=\"format()\"\n    [depth]=\"inputDepth()\"\n    (onValueChanged)=\"handleValueChange($event)\"\n    [minValue]=\"minValue()\"\n    [maxValue]=\"maxValue()\"\n    [disabled]=\"disabled()\"\n    [readonly]=\"readonly()\"\n    [format]=\"calendarFormat()\"\n    [placeholder]=\"placeholder()\"\n  >\n    @for (validation of validationRules(); track $index) {\n      <ax-validation-rule\n        [rule]=\"validation.rule\"\n        [message]=\"validation.options?.message\"\n        [options]=\"validation.options\"\n      ></ax-validation-rule>\n    }\n    @if (clearButton()) {\n      <ax-clear-button></ax-clear-button>\n    }\n  </ax-datetime-box>\n}\n","import { AXFormatService } from '@acorex/core/format';\nimport { AXPSettingsService } from '@acorex/platform/common';\nimport { AXPRegionalSetting } from '@acorex/platform/contracts';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\n\n@Component({\n  selector: 'axp-date-time-box-widget-view',\n  template: `\n    <div class=\"ax-text-muted\">\n      <span [dir]=\"'ltr'\" [title]=\"convertedValue()\">{{ convertedValue() }}</span>\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPDateTimeBoxWidgetViewComponent extends AXPValueWidgetComponent<string> {\n  private formatter = inject(AXFormatService);\n  private settingsService = inject(AXPSettingsService);\n\n  protected dateMode = computed<'short' | 'long'>(() => (this.options()['mode'] as 'short' | 'long') || 'short');\n\n  protected convertedValue = signal<string | null>(null);\n\n  protected format = computed<'date' | 'time' | 'datetime'>(() => {\n    const rawValue = this.options()['format'] as any;\n    if (typeof rawValue == 'string') return rawValue;\n    else if (rawValue && typeof rawValue == 'object') return rawValue['id'];\n    else return 'date';\n  });\n\n  #effect = effect(() => {\n    this.updateValue();\n  });\n\n  private updateValue = async () => {\n    const rawValue = this.getValue();\n    if (rawValue == null) {\n      this.convertedValue.set(null);\n      return;\n    }\n    this.convertedValue.set(await this.handleFormat(rawValue));\n  };\n\n  protected async handleFormat(value: string): Promise<string> {\n    let mode = '';\n    const dateMode = this.dateMode();\n    if (this.format() == 'date') {\n      const settingKey = dateMode === 'short' ? AXPRegionalSetting.ShortDate : AXPRegionalSetting.LongDate;\n      mode = await this.settingsService.get(settingKey);\n    } else if (this.format() == 'time') {\n      const settingKey = dateMode === 'short' ? AXPRegionalSetting.ShortTime : AXPRegionalSetting.LongTime;\n      mode = await this.settingsService.get(settingKey);\n    } else if (this.format() == 'datetime') {\n      const dateKey = dateMode === 'short' ? AXPRegionalSetting.ShortDate : AXPRegionalSetting.LongDate;\n      const timeKey = dateMode === 'short' ? AXPRegionalSetting.ShortTime : AXPRegionalSetting.LongTime;\n      mode = `${await this.settingsService.get(dateKey)} ${await this.settingsService.get(timeKey)}`;\n    }\n\n    return value\n      ? this.formatter.format(new Date(value), this.format(), {\n        format: mode,\n      })\n      : '---';\n  }\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, cloneProperty } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXCalendarViewType } from '@acorex/components/calendar';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_DATETIME } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_DATA_PATH_PROPERTY,\n  AXP_DATE_DEPTH_PROPERTY,\n  AXP_DATE_FORMAT_PROPERTY,\n  AXP_DATE_RANGE_LIMIT_PROPERTY,\n  AXP_DISABLED_PROPERTY,\n  AXP_GREATER_THAN_VALIDATION_PROPERTY,\n  AXP_HAS_CLEAR_BUTTON_PROPERTY,\n  AXP_LESS_THAN_VALIDATION_PROPERTY,\n  AXP_NAME_PROPERTY,\n  AXP_PLACEHOLDER_PROPERTY,\n  AXP_READONLY_PROPERTY,\n  AXP_REQUIRED_VALIDATION_PROPERTY,\n  AXP_TABLE_COLUMN_WIDTH_PROPERTY,\n  AXP_TRIGGERS_PROPERTY,\n} from '../../../properties';\n\nexport const AXPDateTimeBoxWidget: AXPWidgetConfig = {\n  name: 'date-time-editor',\n  title: '@platform-layout-widgets:widgets.date-time-editor.title',\n  description: '@platform-layout-widgets:widgets.date-time-editor.description',\n  icon: 'fa-light fa-calendar',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_DATETIME,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  type: 'editor',\n  defaultFilterWidgetName: 'datetime-filter',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    AXP_HAS_CLEAR_BUTTON_PROPERTY,\n    AXP_DATE_FORMAT_PROPERTY,\n    AXP_DATE_DEPTH_PROPERTY,\n    AXP_DATE_RANGE_LIMIT_PROPERTY,\n    AXP_READONLY_PROPERTY,\n    AXP_DISABLED_PROPERTY,\n    AXP_PLACEHOLDER_PROPERTY,\n    AXP_TRIGGERS_PROPERTY,\n    cloneProperty(AXP_TABLE_COLUMN_WIDTH_PROPERTY, { schema: { defaultValue: '200px' } }),\n    //\n    AXP_REQUIRED_VALIDATION_PROPERTY,\n    AXP_LESS_THAN_VALIDATION_PROPERTY,\n    AXP_GREATER_THAN_VALIDATION_PROPERTY,\n  ],\n  components: {\n    view: {\n      component: () => import('./date-time-box-widget-view.component').then((c) => c.AXPDateTimeBoxWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./date-time-box-widget-edit.component').then((c) => c.AXPDateTimeBoxWidgetEditComponent),\n    },\n    column: {\n      component: () =>\n        import('./date-time-box-widget-column.component').then((c) => c.AXPDateTimeBoxWidgetColumnComponent),\n    },\n    designer: {\n      component: () => import('./date-time-box-widget-edit.component').then((c) => c.AXPDateTimeBoxWidgetEditComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    dateTime: 'date-time-editor';\n  }\n}\n\nexport interface AXPDateTimeBoxWidgetDesignerOptions {\n  clearButton?: boolean;\n  format?: any;\n  depth?: AXCalendarViewType | { id: AXCalendarViewType };\n  /** Max days between from and to when filter operation is `between`. */\n  limit?: number;\n  disabled?: boolean;\n  placeholder?: string;\n}\n\nexport interface AXPDateTimeBoxWidgetViewOptions {\n  format?: any;\n}\n\nexport type AXPDateTimeFilterUiMode = 'presets' | 'simple';\n\nexport interface AXPDateTimeBoxWidgetEditOptions {\n  clearButton?: boolean;\n  format?: any;\n  depth?: AXCalendarViewType | { id: AXCalendarViewType };\n  limit?: number;\n  disabled?: boolean;\n  readonly?: boolean;\n  placeholder?: string;\n  filterMode?: boolean;\n  filterUi?: AXPDateTimeFilterUiMode;\n  filterPresets?: import('@acorex/platform/common').AXPDateTimeFilterPreset[];\n  filterPresetIds?: string[];\n  operations?: import('@acorex/platform/common').AXPFilterOperator[];\n}\n\nexport interface AXPDateTimeBoxWidgetColumnOptions {\n  format?: any;\n}\n\nexport interface AXPDateTimeBoxWidgetPrintOptions {}\n\nexport interface AXPDateTimeBoxWidgetOptions {\n  designer: AXPDateTimeBoxWidgetDesignerOptions;\n  view: AXPDateTimeBoxWidgetViewOptions;\n  edit: AXPDateTimeBoxWidgetEditOptions;\n  print: AXPDateTimeBoxWidgetPrintOptions;\n  column: AXPDateTimeBoxWidgetColumnOptions;\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXSafePipe } from '@acorex/core/pipes';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXPLayoutBuilderService, IActionBuilder } from '@acorex/platform/layout/builder';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\n\n@Component({\n  selector: 'axp-editor-js-widget-column',\n  template: `\n    @if (rawValue) {\n      <span\n        class=\"ax-truncate ax-underline ax-block ax-w-full ax-cursor-pointer\"\n        (click)=\"openPopup()\"\n        [innerHTML]=\"rawValue | safe: 'html'\"\n      >\n      </span>\n    } @else {\n      <span class=\"ax-text-muted\">---</span>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXDecoratorModule, AXButtonModule, AXSafePipe],\n  inputs: ['rawValue', 'rowData'],\n})\nexport class AXPEditorJsWidgetColumnComponent extends AXPColumnWidgetComponent<string | null | undefined> {\n  private platform = inject(AXPlatform);\n  private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n\n  protected async openPopup() {\n    const html = this.rawValue ?? '';\n    const size = this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : 'md';\n    const ref = await this.layoutBuilder\n      .create()\n      .dialog((dialog) => {\n        dialog\n          .setTitle(this.path ?? '')\n          .setSize(size as any)\n          .content((layoutBuilder) => {\n            layoutBuilder.flex((flex) => {\n              flex.mode('view').formField('Content', (field) => {\n                field.readonly(true).customWidget('editor-js-editor', {\n                  src: html,\n                  toolbar: [],\n                  height: 400,\n                });\n              });\n            });\n          })\n          .setActions((actions: IActionBuilder) => {\n            actions.cancel('@general:actions.cancel.title');\n          });\n      })\n      .show();\n    ref.close();\n  }\n}\n","import { AXStyleLookType } from '@acorex/cdk/common';\nimport { AXEditorComponent, EditorJsTool, ImageToolConfig } from '@acorex/components/editor';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'axp-editor-js-widget-edit',\n  template: `\n    <ax-editor\n      [disabled]=\"disabled()\"\n      [readonly]=\"readonly()\"\n      [imageConfig]=\"imageConfigData()\"\n      (onValueChanged)=\"setValue($event.value)\"\n      [modules]=\"modules()\"\n      [look]=\"look()\"\n      [value]=\"getValue()\"\n    >\n      @for (validation of validationRules(); track $index) {\n        <ax-validation-rule\n          [rule]=\"validation.rule\"\n          [message]=\"validation.options?.message\"\n          [options]=\"validation.options\"\n        ></ax-validation-rule>\n      }\n    </ax-editor>\n  `,\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXEditorComponent, AXValidationModule, AXFormModule],\n})\nexport class AXPEditorJsWidgetEditComponent extends AXPValueWidgetComponent<any> {\n  private defaultModules: EditorJsTool[] = ['header', 'list', 'underline', 'color', 'codeBox'];\n  protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n  protected readonly = computed<boolean>(() => this.options()['readonly'] as boolean);\n  protected imageConfigData = computed<ImageToolConfig>(() => this.options()['imageConfig'] as ImageToolConfig);\n  protected modules = computed<EditorJsTool[]>(\n    () => (this.options()['modules'] as EditorJsTool[]) ?? this.defaultModules,\n  );\n  protected look = computed<AXStyleLookType>(() => (this.options()['look'] as AXStyleLookType) ?? 'solid');\n}\n","import { AXSafePipe } from '@acorex/core/pipes';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXPLayoutBuilderService, IActionBuilder } from '@acorex/platform/layout/builder';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\n\n@Component({\n  selector: 'axp-editor-js-widget-view',\n  template: `\n    @if (getValue()) {\n      <span\n        class=\"ax-truncate ax-underline ax-cursor-pointer ax-text-muted\"\n        (click)=\"openPopup()\"\n        [innerHTML]=\"getValue() | safe: 'html'\"\n      >\n      </span>\n    } @else {\n      <span class=\"ax-text-muted\">---</span>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXSafePipe],\n})\nexport class AXPEditorJsWidgetViewComponent extends AXPValueWidgetComponent<any> {\n  private platform = inject(AXPlatform);\n  private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n\n  protected async openPopup() {\n    const size = this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : 'md';\n    const ref = await this.layoutBuilder\n      .create()\n      .dialog((dialog) => {\n        dialog\n          .setTitle(this.path ?? '')\n          .setSize(size as any)\n          .content((layoutBuilder) => {\n            layoutBuilder.flex((flex) => {\n              flex.mode('view').formField('Content', (field) => {\n                field.readonly(true).customWidget('editor-js-editor', {\n                  src: this.getValue(),\n                  toolbar: [],\n                  height: 400,\n                });\n              });\n            });\n          })\n          .setActions((actions: IActionBuilder) => {\n            actions.cancel('@general:actions.cancel.title');\n          });\n      })\n      .show();\n    ref.close();\n  }\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport {\n AXStyleLookType } from '@acorex/cdk/common';\nimport { EditorJsTool, ImageToolConfig } from '@acorex/components/editor';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_RICH } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_DATA_PATH_PROPERTY,\n  AXP_DISABLED_PROPERTY,\n  AXP_READONLY_PROPERTY,\n  AXP_STYLE_LOOK_PROPERTY,\n} from '../../../properties';\nimport { AXP_NAME_PROPERTY } from '../../../properties/general.props';\n\nexport const AXPEditorJsWidget: AXPWidgetConfig = {\n  name: 'editor-js-editor',\n  title: '@platform-layout-widgets:widgets.editor-js-editor.title',\n  description: '@platform-layout-widgets:widgets.editor-js-editor.description',\n  icon: 'fa-light fa-input-text',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_RICH,\n  groups: [AXPWidgetGroupEnum.BaseWidget],\n  defaultFilterWidgetName: 'string-filter',\n  type: 'editor',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    AXP_DISABLED_PROPERTY,\n    AXP_READONLY_PROPERTY,\n    AXP_STYLE_LOOK_PROPERTY,\n  ],\n  components: {\n    view: {\n      component: () => import('./editor-js-widget-view.component').then((c) => c.AXPEditorJsWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./editor-js-widget-edit.component').then((c) => c.AXPEditorJsWidgetEditComponent),\n    },\n    column: {\n      component: () => import('./editor-js-widget-column.component').then((c) => c.AXPEditorJsWidgetColumnComponent),\n    },\n    designer: {\n      component: () => import('./editor-js-widget-edit.component').then((c) => c.AXPEditorJsWidgetEditComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    editorJs: 'editor-js-editor';\n  }\n}\n\nexport interface AXPEditorJsWidgetDesignerOptions {\n  modules?: EditorJsTool[];\n  imageConfig?: ImageToolConfig;\n  disabled?: boolean;\n  readonly?: boolean;\n  look?: AXStyleLookType;\n}\n\nexport interface AXPEditorJsWidgetViewOptions {}\n\nexport interface AXPEditorJsWidgetEditOptions {\n  modules?: EditorJsTool[];\n  imageConfig?: ImageToolConfig;\n  disabled?: boolean;\n  readonly?: boolean;\n  look?: AXStyleLookType;\n}\n\nexport interface AXPEditorJsWidgetColumnOptions {}\n\nexport interface AXPEditorJsWidgetPrintOptions {}\n\nexport interface AXPEditorJsWidgetOptions {\n  designer: AXPEditorJsWidgetDesignerOptions;\n  view: AXPEditorJsWidgetViewOptions;\n  edit: AXPEditorJsWidgetEditOptions;\n  print: AXPEditorJsWidgetPrintOptions;\n  column: AXPEditorJsWidgetColumnOptions;\n}\n","import { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n  selector: 'axp-large-text-widget-column',\n  template: `\n    @let text = rawValue | translate | async;\n    @if (text) {\n      <span class=\"ax-truncate\"> {{ text }} </span>\n    } @else {\n      <span class=\"ax-text-muted\">---</span>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXTranslationModule, AsyncPipe],\n  inputs: ['rawValue', 'rowData'],\n})\nexport class AXPLargeTextWidgetColumnComponent extends AXPColumnWidgetComponent<\n  string | Record<string, string> | undefined\n> {}\n","\nimport { type AXPWidgetNode, buildLocaleTextMapValue, shouldUseLocaleMapShape } from '@acorex/platform/contracts';\nimport { AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXTextAreaModule } from '@acorex/components/text-area';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\n\nimport { AXPSelectLanguagePopup } from '../../../shared/multi-language-component/popup';\n\n@Component({\n  selector: 'axp-large-text-box-widget-edit',\n  template: `\n    <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n      <div class=\"ax-col-span-12 ax-relative\">\n        <ax-text-area\n          [disabled]=\"disabled()\"\n          [readonly]=\"readonly()\"\n          [ngModel]=\"getCurrentText()\"\n          (onValueChanged)=\"handleValueChange($event)\"\n          [rows]=\"rows()\"\n          [placeholder]=\"(placeholder() | translate | async)!\"\n        >\n          @if (clearButton()) {\n            <ax-clear-button></ax-clear-button>\n          }\n          @for (validation of validationRules(); track $index) {\n            <ax-validation-rule\n              [rule]=\"validation.rule\"\n              [message]=\"validation.options?.message\"\n              [options]=\"validation.options\"\n            ></ax-validation-rule>\n          }\n        </ax-text-area>\n        @if (effectiveMultiLanguage()) {\n          <ax-button\n            look=\"blank\"\n            class=\"ax-absolute ax-sm ax-end-1 ax-bottom-1 ax-z-0 ax-opacity-50 hover:ax-opacity-100 hover:ax-z-10\"\n            (onClick)=\"openMultiLanguagePopup()\"\n            [disabled]=\"disabled()\"\n          >\n            <ax-prefix>\n              <ax-icon class=\"fa-regular fa-globe\"></ax-icon>\n            </ax-prefix>\n          </ax-button>\n        }\n      </div>\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    class: 'ax-block ax-flex-1',\n  },\n  imports: [\n    CommonModule,\n    AXDecoratorModule,\n    FormsModule,\n    AXFormModule,\n    AXTextAreaModule,\n    AXButtonModule,\n    AXTranslationModule,\n  ],\n  inputs: ['disabled', 'clearButton'],\n})\nexport class AXPLargeTextWidgetEditComponent extends AXPValueWidgetComponent<\n  string | Record<string, string> | undefined\n> {\n  protected multiple = computed<boolean>(() => this.options()['multiple'] as boolean);\n  protected effectiveMultiLanguage = computed(() =>\n    shouldUseLocaleMapShape(\n      !!this.options()['multiLanguage'],\n      this.getValue(),\n      this.fullPath() ? this.contextService.getSavedValue(this.fullPath()!) : undefined,\n    ),\n  );\n  protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n  protected clearButton = computed<boolean>(() => (this.options()['clearButton'] as boolean) ?? true);\n  protected placeholder = computed<string>(() => this.options()['placeholder'] as string);\n  protected readonly = computed<boolean>(() => this.options()['readonly'] as boolean);\n  protected rows = computed<number>(() => this.options()['rows'] as number);\n\n  private popupService = inject(AXPopupService);\n  private translationService = inject(AXTranslationService);\n  private readonly currentLanguage = toSignal(this.translationService.langChanges$, {\n    initialValue: this.translationService.getActiveLang(),\n  });\n\n  handleValueChange(e: AXValueChangedEvent) {\n    if (!e.isUserInteraction) {\n      return;\n    }\n    const path = this.fullPath();\n    const current = this.getValue();\n    const saved = path ? this.contextService.getSavedValue(path) : undefined;\n    const nextValue = this.effectiveMultiLanguage()\n      ? buildLocaleTextMapValue(current, saved, this.currentLanguage(), (e.value as string) ?? '')\n      : ((e.value as string) ?? '');\n    this.setValue(nextValue);\n  }\n\n  protected openMultiLanguagePopup() {\n    const node: AXPWidgetNode = {\n      type: 'large-text-editor',\n      path: 'value',\n      options: {\n        ...this.options(),\n        multiLanguage: false,\n      },\n    };\n    this.popupService\n      .open(AXPSelectLanguagePopup, {\n        title: 'Select Language',\n        size: 'md',\n        data: {\n          values: this.translationService.toLocaleMap(this.getValue(), this.currentLanguage()),\n          currentLanguage: this.currentLanguage(),\n          node: node,\n          mode: 'edit',\n        },\n      })\n      .then((res) => {\n        if (res?.data) {\n          const map = res.data as Record<string, string>;\n          this.setValue({ ...map });\n        }\n      });\n  }\n\n  protected getCurrentText = computed(() => this.translationService.resolve(this.getValue(), this.currentLanguage()));\n}\n","import { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n  selector: 'axp-large-text-widget-view',\n\n  template: `\n    <div class=\"ax-max-w-full ax-text-muted\">\n      @let text = getValue() | translate | async;\n\n      @if (text) {\n        <span> {{ text }} </span>\n      } @else {\n        <span class=\"ax-text-muted\">---</span>\n      }\n    </div>\n  `,\n\n  changeDetection: ChangeDetectionStrategy.OnPush,\n\n  imports: [AXTranslationModule, AsyncPipe],\n})\nexport class AXPLargeTextWidgetViewComponent extends AXPValueWidgetComponent<\n  string | Record<string, string> | undefined\n> {}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_TEXT_INPUTS } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_DATA_PATH_PROPERTY,\n  AXP_DISABLED_PROPERTY,\n  AXP_HAS_CLEAR_BUTTON_PROPERTY,\n  AXP_MAX_LENGTH_VALIDATION_PROPERTY,\n  AXP_MIN_LENGTH_VALIDATION_PROPERTY,\n  AXP_MULTI_LANGUAGE_PROPERTY,\n  AXP_PLACEHOLDER_PROPERTY,\n  AXP_READONLY_PROPERTY,\n  AXP_REGULAR_EXPRESSION_VALIDATION_PROPERTY,\n  AXP_REQUIRED_VALIDATION_PROPERTY,\n  AXP_TRIGGERS_PROPERTY,\n  largeTextDefaultProperty,\n} from '../../../properties';\nimport { AXP_NAME_PROPERTY } from '../../../properties/general.props';\n\nexport const AXPLargeTextWidget: AXPWidgetConfig = {\n  name: 'large-text-editor',\n  title: '@platform-layout-widgets:widgets.large-text-editor.title',\n  description: '@platform-layout-widgets:widgets.large-text-editor.description',\n  icon: 'fa-light fa-input-text',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_TEXT_INPUTS,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  defaultFilterWidgetName: 'string-filter',\n  type: 'editor',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    AXP_DISABLED_PROPERTY,\n    AXP_READONLY_PROPERTY,\n    AXP_PLACEHOLDER_PROPERTY,\n    AXP_HAS_CLEAR_BUTTON_PROPERTY,\n    AXP_MULTI_LANGUAGE_PROPERTY,\n    largeTextDefaultProperty(),\n    //cloneProperty(AXP_TABLE_COLUMN_WIDTH_PROPERTY, { schema: { defaultValue: '300px' } }),\n    AXP_REQUIRED_VALIDATION_PROPERTY,\n    AXP_MIN_LENGTH_VALIDATION_PROPERTY,\n    AXP_REGULAR_EXPRESSION_VALIDATION_PROPERTY,\n    AXP_MAX_LENGTH_VALIDATION_PROPERTY,\n    AXP_TRIGGERS_PROPERTY,\n  ],\n  components: {\n    view: {\n      component: () => import('./large-text-widget-view.component').then((c) => c.AXPLargeTextWidgetViewComponent),\n      properties: [],\n    },\n    edit: {\n      component: () => import('./large-text-widget-edit.component').then((c) => c.AXPLargeTextWidgetEditComponent),\n    },\n    column: {\n      component: () => import('./large-text-widget-column.component').then((c) => c.AXPLargeTextWidgetColumnComponent),\n    },\n    designer: {\n      component: () => import('./large-text-widget-edit.component').then((c) => c.AXPLargeTextWidgetEditComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    largeText: 'large-text-editor';\n  }\n}\n\nexport interface AXPLargeTextWidgetDesignerOptions {\n  multiple?: boolean;\n  multiLanguage?: boolean;\n  disabled?: boolean;\n  readonly?: boolean;\n  clearButton?: boolean;\n  placeholder?: string;\n}\n\nexport interface AXPLargeTextWidgetViewOptions { }\n\nexport interface AXPLargeTextWidgetEditOptions {\n  multiple?: boolean;\n  multiLanguage?: boolean;\n  disabled?: boolean;\n  readonly?: boolean;\n  clearButton?: boolean;\n  placeholder?: string;\n}\n\nexport interface AXPLargeTextWidgetColumnOptions { }\n\nexport interface AXPLargeTextWidgetPrintOptions { }\n\nexport interface AXPLargeTextWidgetOptions {\n  designer: AXPLargeTextWidgetDesignerOptions;\n  view: AXPLargeTextWidgetViewOptions;\n  edit: AXPLargeTextWidgetEditOptions;\n  print: AXPLargeTextWidgetPrintOptions;\n  column: AXPLargeTextWidgetColumnOptions;\n}\n","import { AXPDragDropListComponent, AXPDragDropListItem } from '@acorex/platform/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\n@Component({\n  selector: 'axp-drag-drop-list-widget-edit',\n  template: `\n    <axp-drag-drop-list\n      [items]=\"this.getValue()\"\n      (itemsChange)=\"setValue($event)\"\n      [listId]=\"'drag-drop-list'\"\n      [orientation]=\"orientation()\"\n      [emptyMessage]=\"emptyMessage()\"\n      [disable]=\"disabled()\"\n    />\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPDragDropListComponent],\n  host: {\n    class: 'ax-block ax-flex-1',\n  },\n})\nexport class AXPListWidgetEditComponent extends AXPValueWidgetComponent<AXPDragDropListItem[]> {\n  protected orientation = computed<'vertical' | 'horizontal'>(() => this.options()['orientation']?.id ?? 'vertical');\n  protected emptyMessage = computed<string>(() => this.options()['emptyMessage'] ?? 'No items');\n  protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n}\n","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXPDragDropListItem } from '@acorex/platform/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n  selector: 'axp-drag-drop-list-widget-view',\n  template: `\n    @for (item of this.getValue(); track $index) {\n      <ax-badge class=\"ax-p-0.5\" [text]=\"item.content\"></ax-badge>\n    } @empty {\n      <span class=\"ax-text-muted\">---</span>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXBadgeModule],\n  host: {\n    class: 'ax-flex ax-flex-1 ax-gap-4',\n  },\n})\nexport class AXPListWidgetViewComponent extends AXPValueWidgetComponent<AXPDragDropListItem[]> {}\n","import { AXPColumnItemListComponent, AXPDragDropListItem } from '@acorex/platform/layout/components';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n  selector: 'axp-drag-drop-list-widget-column',\n  template: `<axp-column-item-list [items]=\"allItems()\" />`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPColumnItemListComponent],\n  inputs: ['rawValue', 'rowData'],\n  styles: `\n    :host {\n      display: block;\n      width: 100%;\n    }\n  `,\n})\nexport class AXPListWidgetColumnComponent extends AXPColumnWidgetComponent<AXPDragDropListItem[] | null | undefined> {\n  protected allItems = () => this.rawValue ?? [];\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_CHOICE } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\n\nexport const AXPDragDropListWidget: AXPWidgetConfig = {\n  name: 'list-editor',\n  title: '@platform-layout-widgets:widgets.list-editor.title',\n  description: '@platform-layout-widgets:widgets.list-editor.description',\n  icon: 'fa-light fa-list',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_CHOICE,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n  type: 'editor',\n  components: {\n    view: {\n      component: () => import('./list-widget-view.component').then((c) => c.AXPListWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./list-widget-edit.component').then((c) => c.AXPListWidgetEditComponent),\n    },\n    designer: {\n      component: () => import('./list-widget-view.component').then((c) => c.AXPListWidgetViewComponent),\n    },\n    column: {\n      component: () => import('./list-widget-column.component').then((c) => c.AXPListWidgetColumnComponent),\n    },\n  },\n};\n\nexport interface AXPListWidgetDesignerOptions {\n  disabled?: boolean;\n  emptyMessage?: string;\n}\n\nexport interface AXPListWidgetViewOptions {\n  disabled?: boolean;\n  emptyMessage?: string;\n}\n\nexport interface AXPListWidgetEditOptions {\n  disabled?: boolean;\n  emptyMessage?: string;\n}\n\nexport interface AXPListWidgetColumnOptions {\n  disabled?: boolean;\n  emptyMessage?: string;\n}\n\nexport interface AXPListWidgetOptions {\n  designer: AXPListWidgetDesignerOptions;\n  view: AXPListWidgetViewOptions;\n  edit: AXPListWidgetEditOptions;\n  column: AXPListWidgetColumnOptions;\n}\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    list: 'list-editor';\n  }\n}\n","import type { AXPWidgetNode, AXPWidgetRenderMode } from '@acorex/platform/contracts';\nimport { cloneDeep, isArray, isEqual, isObjectLike, isString, isUndefined } from 'lodash-es';\n\n/**\n * True when `source` can be rendered as an AXPWidgetNode.\n * Rejects unevaluated expression strings, arrays, and nullish values without requiring a lodash plain object\n * (class instances and objects from another realm still have a string `type`).\n */\nfunction isNodeRendererChildSource(source: unknown): source is AXPWidgetNode {\n  return isObjectLike(source) && !isArray(source) && isString((source as AXPWidgetNode).type);\n}\n\nfunction coerceNodeRendererSource(source: unknown): unknown {\n  if (isNodeRendererChildSource(source)) {\n    return source;\n  }\n  if (isObjectLike(source) && !isArray(source)) {\n    const iface = (source as { interface?: unknown }).interface;\n    if (isNodeRendererChildSource(iface)) {\n      return iface;\n    }\n  }\n  return undefined;\n}\n\n/**\n * True when `source` has not been evaluated yet (unset or a raw `{{ ... }}` template).\n * Explicit `null` is a resolved \"no node\" and must not fall back to a stale layout node.\n */\nfunction isUnevaluatedNodeRendererSource(source: unknown): boolean {\n  if (isUndefined(source)) {\n    return true;\n  }\n  return isString(source) && source.includes('{{');\n}\n\n/**\n * Picks the evaluated `options.node`, falling back to the layout node only while the\n * instance signal still holds an unevaluated expression (or is unset).\n * When the expression resolves to `null`, that value wins so `@if (renderNode())` can unmount.\n */\nexport function pickNodeRendererSource(evaluated: unknown, ...fallbacks: unknown[]): unknown {\n  const evaluatedNode = coerceNodeRendererSource(evaluated);\n  if (isNodeRendererChildSource(evaluatedNode)) {\n    return evaluatedNode;\n  }\n\n  if (!isUnevaluatedNodeRendererSource(evaluated)) {\n    return evaluatedNode;\n  }\n\n  for (const fallback of fallbacks) {\n    const coerced = coerceNodeRendererSource(fallback);\n    if (isNodeRendererChildSource(coerced)) {\n      return coerced;\n    }\n  }\n\n  return evaluatedNode;\n}\n\n/**\n * Prepares options.node for rendering under a parent value widget:\n * clears path/name so the inner value widget inherits the parent's fullPath.\n * Returns null while options.node is still an unevaluated expression string or otherwise invalid.\n */\nexport function prepareNodeRendererChild(\n  source: AXPWidgetNode | undefined | null | unknown,\n  mode: AXPWidgetRenderMode,\n): AXPWidgetNode | null {\n  if (!isNodeRendererChildSource(source)) {\n    return null;\n  }\n\n  const node = cloneDeep(source);\n  delete node.path;\n  delete node.name;\n  node.mode = mode;\n  return node;\n}\n\n/**\n * Equality for the prepared child node.\n * Nullish vs a real node must always be treated as a change so `@if (renderNode())` can mount\n * after options.node arrives late. Structurally equal clones are skipped to avoid inner re-renders.\n */\nexport function arePreparedRenderNodesEqual(previous: AXPWidgetNode | null, next: AXPWidgetNode | null): boolean {\n  if (previous == null || next == null) {\n    return previous === next;\n  }\n  return isEqual(previous, next);\n}\n","import type { AXPWidgetNode } from '@acorex/platform/contracts';\nimport { AXPValueWidgetComponent, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport {\n  arePreparedRenderNodesEqual,\n  pickNodeRendererSource,\n  prepareNodeRendererChild,\n} from './node-renderer-widget.util';\n\n@Component({\n  selector: 'axp-node-renderer-widget-edit',\n  host: {\n    class: 'ax-block ax-w-full ax-min-w-0',\n  },\n  template: `\n    @if (renderNode(); as node) {\n      <ng-container\n        axp-widget-renderer\n        [node]=\"node\"\n        [parentNode]=\"this\"\n        [mode]=\"mode\"\n      ></ng-container>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule],\n})\nexport class AXPNodeRendererWidgetEditComponent extends AXPValueWidgetComponent<unknown> {\n  protected renderNode = computed<AXPWidgetNode | null>(\n    () =>\n      prepareNodeRendererChild(\n        pickNodeRendererSource(this.options()['node'], this.node.options?.['node']),\n        this.mode,\n      ),\n    { equal: arePreparedRenderNodesEqual },\n  );\n}\n","import type { AXPWidgetNode } from '@acorex/platform/contracts';\nimport { AXPValueWidgetComponent, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport {\n  arePreparedRenderNodesEqual,\n  pickNodeRendererSource,\n  prepareNodeRendererChild,\n} from './node-renderer-widget.util';\n\n@Component({\n  selector: 'axp-node-renderer-widget-view',\n  host: {\n    class: 'ax-block ax-w-full ax-min-w-0',\n  },\n  template: `\n    @if (renderNode(); as node) {\n      <ng-container\n        axp-widget-renderer\n        [node]=\"node\"\n        [parentNode]=\"this\"\n        [mode]=\"mode\"\n      ></ng-container>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule],\n})\nexport class AXPNodeRendererWidgetViewComponent extends AXPValueWidgetComponent<unknown> {\n  protected renderNode = computed<AXPWidgetNode | null>(\n    () =>\n      prepareNodeRendererChild(\n        pickNodeRendererSource(this.options()['node'], this.node.options?.['node']),\n        this.mode,\n      ),\n    { equal: arePreparedRenderNodesEqual },\n  );\n}\n","import type { AXPWidgetNode } from '@acorex/platform/contracts';\nimport { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_COMPOSITE } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY } from '../../../properties';\nimport { AXP_NAME_PROPERTY } from '../../../properties/general.props';\n\nexport const AXPNodeRendererWidget: AXPWidgetConfig = {\n  name: 'node-renderer-widget',\n  title: '@platform-layout-widgets:widgets.node-renderer-widget.title',\n  icon: 'fa-light fa-sitemap',\n  description: '@platform-layout-widgets:widgets.node-renderer-widget.description',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_COMPOSITE,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  type: 'editor',\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY],\n  components: {\n    view: {\n      component: () =>\n        import('./node-renderer-widget-view.component').then((c) => c.AXPNodeRendererWidgetViewComponent),\n    },\n    edit: {\n      component: () =>\n        import('./node-renderer-widget-edit.component').then((c) => c.AXPNodeRendererWidgetEditComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    nodeRenderer: 'node-renderer-widget';\n  }\n}\n\nexport interface AXPNodeRendererWidgetEditOptions {\n  /** Inner widget node to render; its bound value becomes this widget's value. */\n  node?: AXPWidgetNode;\n}\n\nexport interface AXPNodeRendererWidgetViewOptions {\n  node?: AXPWidgetNode;\n}\n\nexport interface AXPNodeRendererWidgetOptions {\n  edit: AXPNodeRendererWidgetEditOptions;\n  view: AXPNodeRendererWidgetViewOptions;\n}\n","import { AXFormatService } from '@acorex/core/format';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { isNumber } from 'lodash-es';\n@Component({\n  selector: 'axp-number-box-widget-column',\n  template: `{{ value() }}`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['rawValue', 'rowData'],\n  host: { class: 'ax-flex ax-items-center ax-justify-end' },\n})\nexport class AXPNumberBoxWidgetColumnComponent extends AXPColumnWidgetComponent<any> {\n  private formatService = inject(AXFormatService);\n\n  protected override value = computed(() => {\n    if (!isNumber(this.rawValue)) {\n      return this.nullText;\n    }\n    const value: number = Number(this.rawValue);\n    if (this.options['format'] && this.options['format']['name']) {\n      const { name, options } = this.options['format'];\n      return this.formatService.format(value, name, options);\n    } else {\n      return value.toString();\n    }\n  });\n}\n","import { AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXNumberBoxModule } from '@acorex/components/number-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostBinding, Signal, computed } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n  selector: 'axp-number-box-widget-edit',\n  template: `\n    <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n      @for (number of internalValue(); track $index) {\n        <ax-number-box\n          class=\"ax-col-span-12\"\n          [minValue]=\"minValue()\"\n          [showSpinButtons]=\"spinButton()\"\n          [maxValue]=\"maxValue()\"\n          [decimals]=\"decimals()\"\n          [thousandsSeparator]=\"seprator()\"\n          [placeholder]=\"(placeholder() | translate | async) ?? ''\"\n          [ngModel]=\"number\"\n          (onValueChanged)=\"handleValueChange($event, $index)\"\n          [disabled]=\"disabled()\"\n          [readonly]=\"readonly()\"\n        >\n          @for (validation of validationRules(); track $index) {\n            <ax-validation-rule\n              [rule]=\"validation.rule\"\n              [message]=\"validation.options?.message\"\n              [options]=\"validation.options\"\n            ></ax-validation-rule>\n          }\n          @if (clearButton()) {\n            <ax-clear-button></ax-clear-button>\n          }\n          @if (multiple()) {\n            <ax-suffix>\n              <ax-button class=\"ax-border-s\" (onClick)=\"deleteItem($index)\" look=\"blank\" color=\"danger\">\n                <ax-icon class=\"far fa-trash\"> </ax-icon>\n              </ax-button>\n            </ax-suffix>\n          }\n        </ax-number-box>\n      }\n      @if (multiple()) {\n        <ax-button\n          [text]=\"internalValue().length == 0 ? 'Add New' : 'Add Another'\"\n          [disabled]=\"disabled()\"\n          look=\"twotone\"\n          (onClick)=\"addItem()\"\n          class=\"ax-col-start-8 lg:ax-col-start-10 2xl:ax-col-start-10 ax-col-end-13\"\n        >\n          <ax-prefix>\n            <ax-icon class=\"fa-solid fa-add\"></ax-icon>\n          </ax-prefix>\n        </ax-button>\n      }\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    AXNumberBoxModule,\n    FormsModule,\n    AXDecoratorModule,\n    AXFormModule,\n    AXButtonModule,\n    AXTranslationModule,\n    AsyncPipe,\n  ],\n})\nexport class AXPNumberBoxWidgetEditComponent extends AXPValueWidgetComponent<number | number[]> {\n  protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n  protected readonly = computed<boolean>(() => this.options()['readonly'] as boolean);\n  protected multiple = computed<boolean>(() => this.options()['multiple'] as boolean);\n  protected clearButton = computed<boolean>(() => (this.options()['hasClearButton'] as boolean) ?? true);\n  protected spinButton = computed<boolean>(() => (this.options()['spinButton'] as boolean) ?? true);\n\n  protected decimals = computed<number>(() => (this.options()['decimals'] as number) ?? 0);\n  protected minValue = computed<number>(() => this.options()['minValue'] as number);\n  protected maxValue = computed<number>(() => this.options()['maxValue'] as number);\n  protected seprator = computed<string>(() => (this.options()['seprator'] as string) ?? null);\n\n  protected placeholder = computed<string>(() => this.options()['placeholder'] as string);\n\n  protected internalValue: Signal<number[]> = computed(() =>\n    Array.isArray(this.getValue()) ? (this.getValue() as number[]) : [this.getValue() as number],\n  );\n\n  protected handleValueChange(e: AXValueChangedEvent, i: number) {\n    if (e.isUserInteraction) {\n      const newValues = this.internalValue().map((item, index) => (i === index ? e.value : item));\n      if (this.multiple()) {\n        this.setValue(newValues);\n      } else this.setValue(newValues[0]);\n    }\n  }\n\n  protected addItem() {\n    const newValues = [...this.internalValue(), 0];\n    this.setValue(newValues);\n  }\n  protected deleteItem(i: number) {\n    const newValues = this.internalValue().filter((_, index) => index != i);\n    this.setValue(newValues);\n  }\n\n  @HostBinding('class')\n  private get __class(): string {\n    const cls: any = {};\n    cls[`ax-block`] = true;\n    cls[`ax-flex-1`] = true;\n    return cls;\n  }\n}\n","import { AXFormatService, AXNumberFormatterOptions } from '@acorex/core/format';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { isNumber } from 'lodash-es';\n\n@Component({\n  selector: 'axp-number-box-widget-view',\n  template: `\n    <div class=\"ax-text-muted\">\n      @if (multiple()) {\n        @for (item of internalValue(); track $index) {\n          <p>{{ item }}</p>\n        }\n      } @else {\n        <p>{{ internalValue()[0] }}</p>\n      }\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPNumberBoxWidgetViewComponent extends AXPValueWidgetComponent<any> {\n  protected internalValue = computed(() =>\n    Array.isArray(this.formattedValue()) ? this.formattedValue() : [this.formattedValue()],\n  );\n\n  protected multiple = computed<boolean>(() => this.options()['multiple'] as boolean);\n  protected format = computed<AXNumberFormatterOptions>(() => this.options()['format'] as AXNumberFormatterOptions);\n\n  private formatService = inject(AXFormatService);\n\n  private formattedValue() {\n    if (!isNumber(this.getValue())) return '---';\n    const value: number = Number(this.getValue());\n    return this.formatService.format(value, 'number', this.format());\n  }\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, cloneProperty, createNumberProperty } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXNumberFormatterOptions } from '@acorex/core/format';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_NUMERIC } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_ALLOW_MULTIPLE_PROPERTY,\n  AXP_BEHAVIOR_PROPERTY_GROUP,\n  AXP_DATA_PATH_PROPERTY,\n  AXP_DISABLED_PROPERTY,\n  AXP_GREATER_THAN_VALIDATION_PROPERTY,\n  AXP_HAS_CLEAR_BUTTON_PROPERTY,\n  AXP_LESS_THAN_VALIDATION_PROPERTY,\n  AXP_NAME_PROPERTY,\n  AXP_NUMBER_SEPARATOR_PROPERTY,\n  AXP_PLACEHOLDER_PROPERTY,\n  AXP_READONLY_PROPERTY,\n  AXP_REQUIRED_VALIDATION_PROPERTY,\n  AXP_SPIN_BUTTON_PROPERTY,\n  AXP_TABLE_COLUMN_WIDTH_PROPERTY,\n  AXP_TRIGGERS_PROPERTY,\n  numberDefaultProperty,\n  numberMaxValueProperty,\n  numberMinValueProperty,\n} from '../../../properties';\n\nexport const AXPNumberBoxWidget: AXPWidgetConfig = {\n  name: 'number-editor',\n  title: '@platform-layout-widgets:widgets.number-editor.title',\n  description: '@platform-layout-widgets:widgets.number-editor.description',\n  icon: 'fa-light fa-input-numeric',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_NUMERIC,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  type: 'editor',\n  defaultFilterWidgetName: 'number-filter',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    AXP_ALLOW_MULTIPLE_PROPERTY,\n    AXP_HAS_CLEAR_BUTTON_PROPERTY,\n    AXP_DISABLED_PROPERTY,\n    AXP_READONLY_PROPERTY,\n    AXP_PLACEHOLDER_PROPERTY,\n    AXP_TRIGGERS_PROPERTY,\n    numberDefaultProperty(),\n    numberMinValueProperty(),\n    numberMaxValueProperty(),\n    createNumberProperty({\n      defaultValue: 0,\n      name: 'decimals',\n      title: 'Decimals',\n      path: 'options.decimals',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n    }),\n    AXP_SPIN_BUTTON_PROPERTY,\n    AXP_NUMBER_SEPARATOR_PROPERTY,\n    cloneProperty(AXP_TABLE_COLUMN_WIDTH_PROPERTY, { schema: { defaultValue: '200px' } }),\n    //\n    AXP_REQUIRED_VALIDATION_PROPERTY,\n    AXP_LESS_THAN_VALIDATION_PROPERTY,\n    AXP_GREATER_THAN_VALIDATION_PROPERTY,\n  ],\n  components: {\n    view: {\n      component: () => import('./number-box-widget-view.component').then((c) => c.AXPNumberBoxWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./number-box-widget-edit.component').then((c) => c.AXPNumberBoxWidgetEditComponent),\n    },\n    column: {\n      component: () => import('./number-box-widget-column.component').then((c) => c.AXPNumberBoxWidgetColumnComponent),\n    },\n    designer: {\n      component: () => import('./number-box-widget-edit.component').then((c) => c.AXPNumberBoxWidgetEditComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    number: 'number-editor';\n  }\n}\n\nexport interface AXPNumberBoxWidgetDesignerOptions {\n  disabled?: boolean;\n  readonly?: boolean;\n  multiple?: boolean;\n  hasClearButton?: boolean;\n  spinButton?: boolean;\n  decimals?: number;\n  minValue?: number;\n  maxValue?: number;\n  seprator?: string;\n  placeholder?: string;\n}\n\nexport interface AXPNumberBoxWidgetViewOptions {\n  multiple?: boolean;\n  format?: AXNumberFormatterOptions;\n}\n\nexport interface AXPNumberBoxWidgetEditOptions {\n  disabled?: boolean;\n  readonly?: boolean;\n  multiple?: boolean;\n  hasClearButton?: boolean;\n  spinButton?: boolean;\n  decimals?: number;\n  minValue?: number;\n  maxValue?: number;\n  seprator?: string;\n  placeholder?: string;\n}\n\nexport interface AXPNumberBoxWidgetColumnOptions {\n  format?: any;\n}\n\nexport interface AXPNumberBoxWidgetPrintOptions { }\n\nexport interface AXPNumberBoxWidgetOptions {\n  designer: AXPNumberBoxWidgetDesignerOptions;\n  view: AXPNumberBoxWidgetViewOptions;\n  edit: AXPNumberBoxWidgetEditOptions;\n  print: AXPNumberBoxWidgetPrintOptions;\n  column: AXPNumberBoxWidgetColumnOptions;\n}\n","//#region ---- Password Text Direction ----\n\n/** Default text direction for password inputs (Latin passwords in RTL locales). */\nexport const PASSWORD_DEFAULT_TEXT_DIRECTION = 'ltr' as const;\n\n/**\n * Resolves password field text direction. Defaults to LTR unless explicitly overridden.\n */\nexport function resolvePasswordTextDirection(options: Record<string, unknown>): 'ltr' | 'rtl' {\n  const direction = options['direction'];\n\n  if (direction === 'ltr' || direction === 'rtl') {\n    return direction;\n  }\n\n  return PASSWORD_DEFAULT_TEXT_DIRECTION;\n}\n\n//#endregion\n","import { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, HostBinding, signal } from '@angular/core';\nimport { resolvePasswordTextDirection } from './password-text-direction.util';\n\n@Component({\n  selector: 'axp-password-box-widget-column',\n  template: `<div class=\"ax-flex ax-flex-1 ax-gap-3 ax-group ax-items-start ax-w-max\">\n    <span>{{ show() ? rawValue : '*******' }}</span>\n    @if (hasEyeIcon) {\n      <span\n        class=\"ax-text-neutral-400 ax-cursor-pointer ax-invisible group-hover:ax-visible hover:!ax-text-primary-500\"\n        (click)=\"toggleEye()\"\n      >\n        @if (!showPassword) {\n          <i class=\"fa-solid fa-eye\"></i>\n        } @else {\n          <i class=\"fa-solid fa-eye-slash\"></i>\n        }\n      </span>\n    }\n  </div>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['rawValue', 'rowData'],\n})\nexport class AXPPasswordBoxWidgetColumnComponent extends AXPColumnWidgetComponent<any> {\n  protected hasEyeIcon = this.options['hasEyeIcon'];\n  protected showPassword = this.options['showPassword'];\n  protected textDirection = computed(() => resolvePasswordTextDirection(this.options));\n\n  protected show = signal(!!this.rawValue);\n\n  @HostBinding('attr.dir')\n  protected get hostDir(): 'ltr' | 'rtl' {\n    return this.textDirection();\n  }\n\n  @HostBinding('style.direction')\n  protected get hostDirection(): 'ltr' | 'rtl' {\n    return this.textDirection();\n  }\n\n  toggleEye() {\n    this.show.update((prev) => !prev);\n  }\n}\n","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXPasswordBoxModule } from '@acorex/components/password-box';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, HostBinding } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { resolvePasswordTextDirection } from './password-text-direction.util';\n\n@Component({\n  selector: 'axp-password-box-widget-edit',\n  template: `\n    <ax-password-box [ngModel]=\"getValue()\" [disabled]=\"disabled()\" (onValueChanged)=\"handleValueChanged($event)\">\n      @for (validation of validationRules(); track $index) {\n        <ax-validation-rule\n          [rule]=\"validation.rule\"\n          [message]=\"validation.options?.message\"\n          [options]=\"validation.options\"\n        ></ax-validation-rule>\n      }\n      @if (hasClearButton()) {\n        <ax-clear-button></ax-clear-button>\n      }\n    </ax-password-box>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [FormsModule, AXDecoratorModule, AXPasswordBoxModule, AXValidationModule, AXFormModule],\n})\nexport class AXPPasswordBoxWidgetEditComponent extends AXPValueWidgetComponent<string> {\n  protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n  protected hasClearButton = computed<boolean>(() => this.options()['hasClearButton'] as boolean);\n  protected textDirection = computed(() => resolvePasswordTextDirection(this.options()));\n\n  @HostBinding('attr.dir')\n  protected get hostDir(): 'ltr' | 'rtl' {\n    return this.textDirection();\n  }\n\n  @HostBinding('style.direction')\n  protected get hostDirection(): 'ltr' | 'rtl' {\n    return this.textDirection();\n  }\n\n  @HostBinding('class')\n  private get __class(): string {\n    const cls: any = {};\n    cls[`ax-block`] = true;\n    cls[`ax-flex-1`] = true;\n    return cls;\n  }\n}\n","import { AXPClipBoardService } from '@acorex/platform/common';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, inject, signal } from '@angular/core';\nimport { resolvePasswordTextDirection } from './password-text-direction.util';\n\n@Component({\n  selector: 'axp-password-box-widget-view',\n  template: `\n    <div class=\"ax-col-start-1 ax-col-end-10 lg:ax-col-end-7\">\n      <div\n        class=\"ax-flex ax-flex-1 ax-gap-3 ax-group ax-items-start ax-w-max\"\n        [attr.dir]=\"textDirection()\"\n        [style.direction]=\"textDirection()\"\n      >\n        <span>{{ show() ? internalValue() : '*******' }}</span>\n        @if (hasEyeIcon()) {\n          <span\n            class=\"ax-text-neutral-400 ax-cursor-pointer ax-invisible group-hover:ax-visible hover:!ax-text-primary-500\"\n            (click)=\"toggleEye()\"\n          >\n            @if (!showPassword()) {\n              <i class=\"fa-solid fa-eye\"></i>\n            } @else {\n              <i class=\"fa-solid fa-eye-slash\"></i>\n            }\n          </span>\n        }\n        @if (hasCopyIcon() && hasEyeIcon()) {\n          <span\n            class=\"ax-text-neutral-400  ax-cursor-pointer ax-invisible group-hover:ax-visible hover:!ax-text-primary-500\"\n            (click)=\"clipboard.copy('Password', internalValue())\"\n          >\n            <i class=\"fa-solid fa-copy\"></i>\n          </span>\n        }\n      </div>\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPPasswordBoxWidgetViewComponent extends AXPValueWidgetComponent<string> {\n  protected internalValue = computed(() => this.getValue());\n\n  protected hasCopyIcon = computed<boolean>(() => this.options()['hasCopyIcon'] as boolean);\n  protected hasEyeIcon = computed<boolean>(() => this.options()['hasEyeIcon'] as boolean);\n  protected showPassword = computed<boolean>(() => this.options()['showPassword'] as boolean);\n  protected textDirection = computed(() => resolvePasswordTextDirection(this.options()));\n\n  protected show = signal(false);\n\n  protected clipboard = inject(AXPClipBoardService);\n\n  toggleEye() {\n    this.show.update((prev) => !prev);\n  }\n}\n","import { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_TEXT_INPUTS } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_DATA_PATH_PROPERTY,\n  AXP_DISABLED_PROPERTY,\n  AXP_HAS_CLEAR_BUTTON_PROPERTY,\n  AXP_HAS_COPY_ICON_PROPERTY,\n  AXP_HAS_EYE_ICON_PROPERTY,\n  AXP_NAME_PROPERTY,\n  AXP_REQUIRED_VALIDATION_PROPERTY,\n  AXP_SHOW_PASSWORD_PROPERTY,\n} from '../../../properties';\n\nexport const AXPPasswordBoxWidget: AXPWidgetConfig = {\n  name: 'password-editor',\n  title: '@platform-layout-widgets:widgets.password-editor.title',\n  description: '@platform-layout-widgets:widgets.password-editor.description',\n  icon: 'fa-light fa-lock',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_TEXT_INPUTS,\n  type: 'editor',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    AXP_HAS_CLEAR_BUTTON_PROPERTY,\n    AXP_DISABLED_PROPERTY,\n    AXP_HAS_COPY_ICON_PROPERTY,\n    AXP_HAS_EYE_ICON_PROPERTY,\n    AXP_SHOW_PASSWORD_PROPERTY,\n    //\n    AXP_REQUIRED_VALIDATION_PROPERTY,\n  ],\n  components: {\n    view: {\n      component: () => import('./password-box-widget-view.component').then((c) => c.AXPPasswordBoxWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./password-box-widget-edit.component').then((c) => c.AXPPasswordBoxWidgetEditComponent),\n    },\n    column: {\n      component: () =>\n        import('./password-box-widget-column.component').then((c) => c.AXPPasswordBoxWidgetColumnComponent),\n    },\n    designer: {\n      component: () => import('./password-box-widget-edit.component').then((c) => c.AXPPasswordBoxWidgetEditComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    password: 'password-editor';\n  }\n}\n\nexport interface AXPPasswordBoxWidgetDesignerOptions {\n  disabled?: boolean;\n  hasClearButton?: boolean;\n}\n\nexport interface AXPPasswordBoxWidgetViewOptions {\n  hasCopyIcon?: boolean;\n  hasEyeIcon?: boolean;\n  showPassword?: boolean;\n}\n\nexport interface AXPPasswordBoxWidgetEditOptions {\n  disabled?: boolean;\n  hasClearButton?: boolean;\n}\n\nexport interface AXPPasswordBoxWidgetColumnOptions {\n  hasEyeIcon?: any;\n  showPassword?: any;\n}\n\nexport interface AXPPasswordBoxWidgetPrintOptions {}\n\nexport interface AXPPasswordBoxWidgetOptions {\n  designer: AXPPasswordBoxWidgetDesignerOptions;\n  view: AXPPasswordBoxWidgetViewOptions;\n  edit: AXPPasswordBoxWidgetEditOptions;\n  print: AXPPasswordBoxWidgetPrintOptions;\n  column: AXPPasswordBoxWidgetColumnOptions;\n}\n","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXProgressBarModule } from '@acorex/components/progress-bar';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { isNumber } from 'lodash-es';\n\n@Component({\n    selector: 'axp-progress-bar-widget-column',\n    template: `\n    @if (value() == null || value() === undefined) {\n      <span>{{ nullText }}</span>\n    } @else {\n      <div class=\"ax-flex ax-items-center ax-gap-2\">\n        <ax-progress-bar\n          [progress]=\"percentage()\"\n          [color]=\"color()\"\n          [style.height.px]=\"height()\"\n          class=\"ax-flex-1\"\n        >\n          @if (showText()) {\n            <ax-suffix>\n              <div class=\"ax-text-xs ax-font-medium ax-min-w-[3rem] ax-text-right\">\n                {{ displayText() }}\n              </div>\n            </ax-suffix>\n          }\n        </ax-progress-bar>\n      </div>\n    }\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [AXProgressBarModule, AXDecoratorModule],\n    inputs: ['rawValue', 'rowData'],\n})\nexport class AXPProgressBarWidgetColumnComponent extends AXPColumnWidgetComponent<number | null | undefined> {\n    //#region ----   Component Properties   ----\n\n    protected total = computed<number>(() => (this.options['total'] as number) ?? 100);\n    protected showText = computed<boolean>(() => (this.options['showText'] as boolean) ?? true);\n    protected textFormat = computed<'fraction' | 'percentage'>(() =>\n        (this.options['textFormat'] as 'fraction' | 'percentage') ?? 'fraction'\n    );\n    protected color = computed<string>(() => {\n        const colorOption = this.options['color'];\n        if (typeof colorOption === 'string') {\n            return colorOption;\n        }\n        if (colorOption?.id) {\n            return colorOption.id;\n        }\n        return 'primary';\n    });\n    protected height = computed<number>(() => (this.options['height'] as number) ?? 8);\n\n    protected override value = computed(() => {\n        if (!isNumber(this.rawValue)) {\n            return null;\n        }\n        return Number(this.rawValue);\n    });\n\n    protected percentage = computed(() => {\n        const val = this.value();\n        const total = this.total();\n        if (val == null || total <= 0) {\n            return 0;\n        }\n        return Math.min(Math.round((val / total) * 100), 100);\n    });\n\n    protected displayText = computed(() => {\n        const val = this.value();\n        const total = this.total();\n        const format = this.textFormat();\n\n        if (val == null) {\n            return '---';\n        }\n\n        if (format === 'percentage') {\n            return `${this.percentage()}%`;\n        } else {\n            return `${val} / ${total}`;\n        }\n    });\n\n    //#endregion\n}\n\n","import { AXFormModule } from '@acorex/components/form';\nimport { AXRangeSliderModule } from '@acorex/components/range-slider';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, HostBinding } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n  selector: 'axp-progress-bar-widget-edit',\n  template: `\n    <div class=\"ax-flex ax-flex-col ax-gap-3\">\n      <ax-range-slider\n        class=\"ax-w-full\"\n        [min]=\"0\"\n        [max]=\"total()\"\n        [ngModel]=\"currentValue()\"\n        (ngModelChange)=\"handleSliderChange($event)\"\n        [disabled]=\"disabled()\"\n      >\n        @for (validation of validationRules(); track $index) {\n          <ax-validation-rule\n            [rule]=\"validation.rule\"\n            [message]=\"validation.options?.message\"\n            [options]=\"validation.options\"\n          ></ax-validation-rule>\n        }\n      </ax-range-slider>\n      @if (showText()) {\n        <div class=\"ax-text-sm ax-text-muted ax-text-center\">\n          {{ displayText() }}\n        </div>\n      }\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [FormsModule, AXFormModule, AXRangeSliderModule, AXValidationModule],\n})\nexport class AXPProgressBarWidgetEditComponent extends AXPValueWidgetComponent<number> {\n  //#region ----   Component Properties   ----\n\n  protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n  protected total = computed<number>(() => (this.options()['total'] as number) ?? 100);\n  protected maxValue = computed<number>(() => {\n    const max = this.options()['maxValue'] as number;\n    return max ?? this.total();\n  });\n  protected showText = computed<boolean>(() => (this.options()['showText'] as boolean) ?? true);\n  protected textFormat = computed<'fraction' | 'percentage'>(() =>\n    (this.options()['textFormat'] as 'fraction' | 'percentage') ?? 'fraction'\n  );\n\n  protected currentValue = computed(() => {\n    const value = this.getValue();\n    return value != null && value !== undefined ? Number(value) : 0;\n  });\n\n  protected displayText = computed(() => {\n    const value = this.currentValue();\n    const total = this.total();\n    const format = this.textFormat();\n\n    if (format === 'percentage') {\n      const percentage = total > 0 ? Math.round((value / total) * 100) : 0;\n      return `${percentage}%`;\n    } else {\n      return `${value} / ${total}`;\n    }\n  });\n\n  //#endregion\n\n  //#region ----   Event Handlers   ----\n\n  protected handleSliderChange(value: number | null): void {\n    const newValue = value ?? 0;\n    const total = this.total();\n    const max = this.maxValue();\n\n    // Ensure value doesn't exceed total or maxValue\n    const clampedValue = Math.min(newValue, Math.min(total, max));\n    this.setValue(clampedValue);\n  }\n\n  //#endregion\n\n  @HostBinding('class')\n  private get __class(): string {\n    const cls: any = {};\n    cls['ax-block'] = true;\n    cls['ax-flex-1'] = true;\n    return cls;\n  }\n}\n\n","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXProgressBarModule } from '@acorex/components/progress-bar';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { isNumber } from 'lodash-es';\n\n@Component({\n  selector: 'axp-progress-bar-widget-view',\n  template: `\n    @if (value() == null || value() === undefined) {\n      <span class=\"ax-text-muted\">---</span>\n    } @else {\n      <div class=\"ax-flex ax-flex-col ax-gap-2\">\n        <ax-progress-bar\n          [progress]=\"percentage()\"\n          [color]=\"color()\"\n          [style.height.px]=\"height()\"\n        >\n          @if (showText()) {\n            <ax-suffix>\n              <div class=\"ax-text-sm ax-font-medium\">\n                {{ displayText() }}\n              </div>\n            </ax-suffix>\n          }\n        </ax-progress-bar>\n      </div>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXProgressBarModule, AXDecoratorModule],\n})\nexport class AXPProgressBarWidgetViewComponent extends AXPValueWidgetComponent<number> {\n  //#region ----   Component Properties   ----\n\n  protected total = computed<number>(() => (this.options()['total'] as number) ?? 100);\n  protected showText = computed<boolean>(() => (this.options()['showText'] as boolean) ?? true);\n  protected textFormat = computed<'fraction' | 'percentage'>(() => \n    (this.options()['textFormat'] as 'fraction' | 'percentage') ?? 'fraction'\n  );\n  protected color = computed<string>(() => {\n    const colorOption = this.options()['color'];\n    if (typeof colorOption === 'string') {\n      return colorOption;\n    }\n    if (colorOption?.id) {\n      return colorOption.id;\n    }\n    return 'primary';\n  });\n  protected height = computed<number>(() => (this.options()['height'] as number) ?? 12);\n\n  protected value = computed(() => {\n    const val = this.getValue();\n    if (!isNumber(val)) {\n      return null;\n    }\n    return Number(val);\n  });\n\n  protected percentage = computed(() => {\n    const val = this.value();\n    const total = this.total();\n    if (val == null || total <= 0) {\n      return 0;\n    }\n    return Math.min(Math.round((val / total) * 100), 100);\n  });\n\n  protected displayText = computed(() => {\n    const val = this.value();\n    const total = this.total();\n    const format = this.textFormat();\n\n    if (val == null) {\n      return '---';\n    }\n\n    if (format === 'percentage') {\n      return `${this.percentage()}%`;\n    } else {\n      return `${val} / ${total}`;\n    }\n  });\n\n  //#endregion\n}\n\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, cloneProperty, createBooleanProperty, createNumberProperty } from '@acorex/platform/layout/widget-core-contracts';\nimport {\n AXStyleColorType } from '@acorex/cdk/common';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_NUMERIC } from '@acorex/platform/layout/widget-core';\nimport {\n    AXP_BEHAVIOR_PROPERTY_GROUP,\n    AXP_DATA_PATH_PROPERTY,\n    AXP_DISABLED_PROPERTY,\n    AXP_NAME_PROPERTY,\n    AXP_REQUIRED_VALIDATION_PROPERTY,\n    AXP_TABLE_COLUMN_WIDTH_PROPERTY,\n    numberDefaultProperty,\n    numberMaxValueProperty,\n} from '../../../properties';\n\nexport const AXPProgressBarWidget: AXPWidgetConfig = {\n    name: 'progress-bar-editor',\n    title: '@platform-layout-widgets:widgets.progress-bar-editor.title',\n    description: '@platform-layout-widgets:widgets.progress-bar-editor.description',\n    icon: 'fa-light fa-chart-line-up',\n    categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_NUMERIC,\n    groups: [AXPWidgetGroupEnum.FormElement],\n    type: 'editor',\n    properties: [\n        AXP_NAME_PROPERTY,\n        AXP_DATA_PATH_PROPERTY,\n        AXP_DISABLED_PROPERTY,\n        numberDefaultProperty(),\n        createNumberProperty({\n            defaultValue: 100,\n            name: 'total',\n            title: 'Total',\n            path: 'options.total',\n            group: AXP_BEHAVIOR_PROPERTY_GROUP,\n        }),\n        numberMaxValueProperty(),\n        createBooleanProperty({\n            defaultValue: true,\n            name: 'showText',\n            title: 'Show Text',\n            path: 'options.showText',\n            group: AXP_BEHAVIOR_PROPERTY_GROUP,\n        }),\n        cloneProperty(AXP_TABLE_COLUMN_WIDTH_PROPERTY, { schema: { defaultValue: '200px' } }),\n        AXP_REQUIRED_VALIDATION_PROPERTY,\n    ],\n    components: {\n        view: {\n            component: () =>\n                import('./progress-bar-widget-view.component').then((c) => c.AXPProgressBarWidgetViewComponent),\n        },\n        edit: {\n            component: () =>\n                import('./progress-bar-widget-edit.component').then((c) => c.AXPProgressBarWidgetEditComponent),\n        },\n        column: {\n            component: () =>\n                import('./progress-bar-widget-column.component').then((c) => c.AXPProgressBarWidgetColumnComponent),\n        },\n        designer: {\n            component: () =>\n                import('./progress-bar-widget-edit.component').then((c) => c.AXPProgressBarWidgetEditComponent),\n        },\n    },\n};\n\nexport interface AXPProgressBarWidgetDesignerOptions {\n    disabled?: boolean;\n    total?: number;\n    maxValue?: number;\n    showText?: boolean;\n    textFormat?: 'fraction' | 'percentage';\n    color?: AXStyleColorType;\n    height?: number;\n}\n\nexport interface AXPProgressBarWidgetViewOptions {\n    total?: number;\n    showText?: boolean;\n    textFormat?: 'fraction' | 'percentage';\n    color?: AXStyleColorType;\n    height?: number;\n}\n\nexport interface AXPProgressBarWidgetEditOptions {\n    disabled?: boolean;\n    total?: number;\n    maxValue?: number;\n    showText?: boolean;\n    textFormat?: 'fraction' | 'percentage';\n    color?: AXStyleColorType;\n}\n\nexport interface AXPProgressBarWidgetColumnOptions {\n    total?: number;\n    showText?: boolean;\n    textFormat?: 'fraction' | 'percentage';\n    color?: AXStyleColorType;\n    height?: number;\n}\n\nexport interface AXPProgressBarWidgetPrintOptions { }\n\nexport interface AXPProgressBarWidgetOptions {\n    designer: AXPProgressBarWidgetDesignerOptions;\n    view: AXPProgressBarWidgetViewOptions;\n    edit: AXPProgressBarWidgetEditOptions;\n    print: AXPProgressBarWidgetPrintOptions;\n    column: AXPProgressBarWidgetColumnOptions;\n}\n\n","import { AXRatePickerComponent } from '@acorex/components/rate-picker';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n  selector: 'axp-rate-picker-widget-column',\n  template: `\n    @if (rawValue !== null && rawValue !== undefined) {\n      <ax-rate-picker\n        [ngModel]=\"rawValue\"\n        [readonly]=\"true\"\n        [max]=\"max()\"\n        [title]=\"tooltipText()\"\n      ></ax-rate-picker>\n    } @else {\n      <span class=\"ax-text-muted\">---</span>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['rawValue', 'rowData'],\n  imports: [FormsModule, AXRatePickerComponent],\n  host: { class: 'ax-xs ax-flex ' },\n})\nexport class AXPRatePickerWidgetColumnComponent extends AXPColumnWidgetComponent<number | null> {\n  protected max = computed<number>(() => (this.options['max'] as number) ?? 5);\n  protected tooltipText = computed<string>(() => {\n    if (this.rawValue === null || this.rawValue === undefined) {\n      return '---';\n    }\n    return `${this.rawValue} / ${this.max()}`;\n  });\n}\n\n","import { AXFormModule } from '@acorex/components/form';\nimport { AXRatePickerComponent } from '@acorex/components/rate-picker';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, HostBinding } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n  selector: 'axp-rate-picker-widget-edit',\n  template: `\n    <ax-rate-picker\n      [ngModel]=\"internalValue()\"\n      [disabled]=\"disabled()\"\n      [readonly]=\"readonly()\"\n      [max]=\"max()\"\n      (ngModelChange)=\"handleValueChange($event)\"\n    >\n      @for (validation of validationRules(); track $index) {\n        <ax-validation-rule\n          [rule]=\"validation.rule\"\n          [message]=\"validation.options?.message\"\n          [options]=\"validation.options\"\n        ></ax-validation-rule>\n      }\n    </ax-rate-picker>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [FormsModule, AXFormModule, AXRatePickerComponent, AXValidationModule],\n})\nexport class AXPRatePickerWidgetEditComponent extends AXPValueWidgetComponent<number | null> {\n  protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n  protected readonly = computed<boolean>(() => this.options()['readonly'] as boolean);\n  protected max = computed<number>(() => (this.options()['max'] as number) ?? 5);\n\n  protected internalValue = computed<number | null>(() => this.getValue() ?? null);\n\n  protected handleValueChange(value: number | null) {\n    this.setValue(value);\n  }\n\n  @HostBinding('class')\n  private get __class(): string {\n    const cls: any = {};\n    cls['ax-block'] = true;\n    cls['ax-sm'] = true;\n    cls['ax-flex-1'] = true;\n    return cls;\n  }\n}\n\n","import { AXRatePickerComponent } from '@acorex/components/rate-picker';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n  selector: 'axp-rate-picker-widget-view',\n  template: `\n    <ax-rate-picker\n      [ngModel]=\"internalValue()\"\n      [readonly]=\"true\"\n      [max]=\"max()\"\n      [title]=\"tooltipText()\"\n    ></ax-rate-picker>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [FormsModule, AXRatePickerComponent],\n  host: { class: 'ax-sm' },\n})\nexport class AXPRatePickerWidgetViewComponent extends AXPValueWidgetComponent<number | null> {\n  protected internalValue = computed<number | null>(() => this.getValue() ?? null);\n  protected max = computed<number>(() => (this.options()['max'] as number) ?? 5);\n  protected tooltipText = computed<string>(() => {\n    const value = this.internalValue();\n    if (value === null || value === undefined) {\n      return '---';\n    }\n    return `${value} / ${this.max()}`;\n  });\n}\n\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, cloneProperty, createBooleanProperty, createNumberProperty } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_NUMERIC } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_BEHAVIOR_PROPERTY_GROUP,\n  AXP_DATA_PATH_PROPERTY,\n  AXP_DISABLED_PROPERTY,\n  AXP_NAME_PROPERTY,\n  AXP_REQUIRED_VALIDATION_PROPERTY,\n  AXP_TABLE_COLUMN_WIDTH_PROPERTY,\n} from '../../../properties';\n\nexport const AXPRatePickerWidget: AXPWidgetConfig = {\n  name: 'rate-picker-editor',\n  title: '@platform-layout-widgets:widgets.rate-picker-editor.title',\n  description: '@platform-layout-widgets:widgets.rate-picker-editor.description',\n  icon: 'fa-light fa-star',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_NUMERIC,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  defaultFilterWidgetName: 'number-filter',\n  type: 'editor',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    AXP_DISABLED_PROPERTY,\n    createNumberProperty({\n      defaultValue: 5,\n      name: 'max',\n      title: 'Max Value',\n      path: 'options.max',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n    }),\n    createBooleanProperty({\n      defaultValue: false,\n      name: 'readonly',\n      title: 'Readonly',\n      path: 'options.readonly',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n    }),\n    cloneProperty(AXP_TABLE_COLUMN_WIDTH_PROPERTY, { schema: { defaultValue: '150px' } }),\n    //\n    AXP_REQUIRED_VALIDATION_PROPERTY,\n  ],\n  components: {\n    view: {\n      component: () =>\n        import('./rate-picker-widget-view.component').then((c) => c.AXPRatePickerWidgetViewComponent),\n    },\n    edit: {\n      component: () =>\n        import('./rate-picker-widget-edit.component').then((c) => c.AXPRatePickerWidgetEditComponent),\n    },\n    column: {\n      component: () =>\n        import('./rate-picker-widget-column.component').then((c) => c.AXPRatePickerWidgetColumnComponent),\n    },\n    designer: {\n      component: () =>\n        import('./rate-picker-widget-edit.component').then((c) => c.AXPRatePickerWidgetEditComponent),\n    },\n  },\n};\n\nexport interface AXPRatePickerWidgetDesignerOptions {\n  disabled?: boolean;\n  readonly?: boolean;\n  max?: number;\n}\n\nexport interface AXPRatePickerWidgetViewOptions {\n  max?: number;\n}\n\nexport interface AXPRatePickerWidgetEditOptions {\n  disabled?: boolean;\n  readonly?: boolean;\n  max?: number;\n}\n\nexport interface AXPRatePickerWidgetColumnOptions {\n  max?: number;\n}\n\nexport interface AXPRatePickerWidgetPrintOptions { }\n\nexport interface AXPRatePickerWidgetOptions {\n  designer: AXPRatePickerWidgetDesignerOptions;\n  view: AXPRatePickerWidgetViewOptions;\n  edit: AXPRatePickerWidgetEditOptions;\n  print: AXPRatePickerWidgetPrintOptions;\n  column: AXPRatePickerWidgetColumnOptions;\n}\n\n","import { AXTranslationService } from '@acorex/core/translation';\n\n/** Stable context path for rich-text preview dialogs (layout builder + context store). */\nexport const AXP_RICH_TEXT_DIALOG_BODY_PATH = '__axpRichTextDialogBody';\n\n/**\n * Turns camelCase / kebab-case property segments into Title Case words for fallback titles.\n */\nexport function humanizePropertyPath(path: string): string {\n  if (!path) {\n    return '';\n  }\n  const spaced = path.replace(/([a-z])([A-Z])/g, '$1 $2').replace(/[-_]/g, ' ');\n  return spaced.replace(/\\b\\w/g, (c) => c.toUpperCase());\n}\n\n/**\n * Resolves dialog title: translated keys (`@...`), humanized identifiers, or plain captions.\n */\nexport async function resolveRichTextPreviewTitle(\n  translation: AXTranslationService,\n  caption: string | undefined,\n  path: string | undefined,\n): Promise<string> {\n  const raw = caption?.trim() || path?.trim() || '';\n  if (!raw) {\n    return '';\n  }\n  if (raw.startsWith('@')) {\n    return (await translation.translateAsync(raw)) ?? raw;\n  }\n  if (/^[a-z][a-zA-Z0-9]*$/.test(raw)) {\n    return humanizePropertyPath(raw);\n  }\n  return raw;\n}\n\n/**\n * Approximate visible text length for rich HTML (decides inline vs truncated column cell).\n */\nexport function richTextPlainTextLength(html: string): number {\n  if (!html?.trim()) {\n    return 0;\n  }\n  try {\n    if (typeof DOMParser !== 'undefined') {\n      const doc = new DOMParser().parseFromString(html, 'text/html');\n      const text = doc.body.textContent?.replace(/\\s+/g, ' ').trim() ?? '';\n      return text.length;\n    }\n  } catch {\n    /* ignore */\n  }\n  return html.replace(/<[^>]*>/g, ' ').replace(/\\s+/g, ' ').trim().length;\n}\n","import { AXClickEvent } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXSafePipe } from '@acorex/core/pipes';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPLayoutBuilderService, IActionBuilder } from '@acorex/platform/layout/builder';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport {\n  AXP_RICH_TEXT_DIALOG_BODY_PATH,\n  resolveRichTextPreviewTitle,\n  richTextPlainTextLength,\n} from './rich-text-dialog.helpers';\n\n@Component({\n  selector: 'axp-rich-text-widget-column',\n  template: `\n    @let html = rawValue | translate | async;\n    @let expandHint = '@platform-layout-widgets:widgets.rich-text-editor.column-expand-title' | translate | async;\n    @if (html) {\n      @if (isTruncatedPreview(html)) {\n        <div class=\"ax-flex ax-gap-1 ax-items-start ax-min-w-0 ax-max-w-full\">\n          <div\n            class=\"ax-min-w-0 ax-flex-1 ax-line-clamp-3 ax-overflow-hidden ax-break-words\"\n            [innerHTML]=\"html | safe: 'html'\"\n          ></div>\n          <ax-button\n            class=\"ax-xs ax-shrink-0\"\n            look=\"blank\"\n            [iconOnly]=\"true\"\n            [text]=\"expandHint ?? ''\"\n            [title]=\"expandHint ?? ''\"\n            (onClick)=\"onExpandClick($event)\"\n          >\n            <ax-icon icon=\"far fa-expand\"></ax-icon>\n          </ax-button>\n        </div>\n      } @else {\n        <div class=\"ax-min-w-0 ax-max-w-full ax-break-words\" [innerHTML]=\"html | safe: 'html'\"></div>\n      }\n    } @else {\n      <span class=\"ax-text-muted\">---</span>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXButtonModule, AXDecoratorModule, AXSafePipe, AXTranslationModule, AsyncPipe],\n  inputs: ['rawValue', 'rowData'],\n})\nexport class AXPRichTextWidgetColumnComponent extends AXPColumnWidgetComponent<\n  string | Record<string, string> | null | undefined\n> {\n  private platform = inject(AXPlatform);\n  private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n  private readonly mlResolver = inject(AXTranslationService);\n\n  /** Plain-text length threshold: above this, cell is clamped and clickable for full preview. */\n  protected previewMaxChars(): number {\n    const v = this.options['previewMaxChars'] as number | undefined;\n    return typeof v === 'number' && v > 0 ? v : 100;\n  }\n\n  /** Whether resolved HTML is long enough to warrant truncation + popup. */\n  protected isTruncatedPreview(resolvedHtml: string): boolean {\n    return richTextPlainTextLength(resolvedHtml) > this.previewMaxChars();\n  }\n\n  protected onExpandClick(event: AXClickEvent): void {\n    event.nativeEvent.preventDefault();\n    event.nativeEvent.stopPropagation();\n    void this.openPopup();\n  }\n\n  protected async openPopup(): Promise<void> {\n    const lang = this.mlResolver.getActiveLang();\n    const resolvedHtml = this.mlResolver.resolve(this.rawValue as string | Record<string, string> | null | undefined, lang) ?? '';\n    if (!this.isTruncatedPreview(resolvedHtml)) {\n      return;\n    }\n    const title = await resolveRichTextPreviewTitle(this.mlResolver, this.columnCaption, this.path);\n    const size = this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : 'md';\n\n    await this.layoutBuilder\n      .create()\n      .dialog((dialog) => {\n        dialog\n          .setTitle(title)\n          .setSize(size as any)\n          .setContext({ [AXP_RICH_TEXT_DIALOG_BODY_PATH]: resolvedHtml })\n          .content((layoutBuilder) => {\n            layoutBuilder.flex((flex) => {\n              flex.mode('view').richText({\n                path: AXP_RICH_TEXT_DIALOG_BODY_PATH,\n                defaultValue: resolvedHtml,\n                showFullContent: true,\n                height: 400,\n              });\n            });\n          })\n          .setActions((actions: IActionBuilder) => {\n            actions.cancel('@general:actions.cancel.title');\n          });\n      })\n      .show();\n  }\n}\n","\nimport { AXPContextState, type AXPWidgetNode, buildLocaleTextMapValue, shouldUseLocaleMapShape } from '@acorex/platform/contracts';\nimport { AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXWysiwygContainerComponent, AXWysiwygModule } from '@acorex/components/wysiwyg';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { AsyncPipe } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  effect,\n  inject,\n  untracked,\n  viewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\n\nimport { defaultTo } from 'lodash-es';\nimport { AXPSelectLanguagePopup } from '../../../shared/multi-language-component/popup';\n\n@Component({\n  selector: 'axp-rich-text-widget-edit',\n  template: `<ax-wysiwyg-container\n    #wysiwygRef\n    [placeHolder]=\"(placeholder() | translate | async)!\"\n    [disabled]=\"disabled()\"\n    [readonly]=\"readonly()\"\n    [initialLine]=\"3\"\n    [look]=\"'solid'\"\n    [ngModel]=\"getCurrentText()\"\n    (onValueChanged)=\"onWysiwygChanged($event)\"\n  >\n    <ax-wysiwyg-view></ax-wysiwyg-view>\n    <ax-wysiwyg-toolbar>\n      <ax-prefix>\n        <ax-wysiwyg-history></ax-wysiwyg-history>\n        <ax-wysiwyg-insert></ax-wysiwyg-insert>\n        <ax-wysiwyg-font-style></ax-wysiwyg-font-style>\n        <ax-wysiwyg-colors></ax-wysiwyg-colors>\n        <ax-wysiwyg-list></ax-wysiwyg-list>\n        <ax-wysiwyg-alignment></ax-wysiwyg-alignment>\n      </ax-prefix>\n      @if (effectiveMultiLanguage()) {\n        <ax-suffix>\n          <ax-button class=\"ax-sm\" (onClick)=\"openMultiLanguagePopup()\" [disabled]=\"disabled()\" look=\"blank\">\n            <ax-prefix>\n              <ax-icon class=\"fa-regular fa-globe\"></ax-icon>\n            </ax-prefix>\n          </ax-button>\n        </ax-suffix>\n      }\n    </ax-wysiwyg-toolbar>\n    @for (validation of validationRules(); track $index) {\n      <ax-validation-rule\n        [rule]=\"validation.rule\"\n        [message]=\"validation.options?.message\"\n        [options]=\"validation.options\"\n      ></ax-validation-rule>\n    }\n  </ax-wysiwyg-container>`,\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    class: 'ax-block ax-flex-1',\n  },\n  imports: [\n    AXDecoratorModule,\n    AXWysiwygModule,\n    AXValidationModule,\n    AXFormModule,\n    FormsModule,\n    AXButtonModule,\n    AXTranslationModule,\n    AsyncPipe,\n  ],\n})\nexport class AXPRichTextWidgetEditComponent extends AXPValueWidgetComponent<\n  string | Record<string, string> | undefined\n> {\n  //#region ----   Services & Dependencies   ----\n\n  private readonly popupService = inject(AXPopupService);\n  private readonly translationService = inject(AXTranslationService);\n  private readonly wysiwygRef = viewChild<AXWysiwygContainerComponent>('wysiwygRef');\n\n  //#endregion\n\n  //#region ----   Computed Properties   ----\n\n  protected placeholder = computed<string>(() => this.options()['placeholder'] as string);\n  protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n  protected readonly = computed<boolean>(() => this.options()['readonly'] as boolean);\n  protected effectiveMultiLanguage = computed(() =>\n    shouldUseLocaleMapShape(\n      !!this.options()['multiLanguage'],\n      this.getValue(),\n      this.fullPath() ? this.contextService.getSavedValue(this.fullPath()!) : undefined,\n    ),\n  );\n  protected minLineCount = computed<number>(\n    () => (this.options()['minLineCount'] as number) ?? (this.options()['maxLineCount'] as number) ?? 3,\n  );\n  protected maxLineCount = computed<number>(\n    () => (this.options()['maxLineCount'] as number) ?? (this.options()['minLineCount'] as number) ?? 3,\n  );\n\n  protected getCurrentText = computed(() => this.translationService.resolve(this.getValue(), this.currentLanguage()));\n\n  currentLanguage = toSignal(this.translationService.langChanges$, {\n    initialValue: this.translationService.getActiveLang(),\n  });\n\n  //#endregion\n\n  //#region ----   Effects   ----\n\n  /**\n   * Quill keeps its own DOM state; one-way ngModel does not refresh it on discard/apply.\n   * Re-sync when the context store reverts or replaces data from outside user edits.\n   */\n  #syncWysiwygFromContextEffect = effect(() => {\n    const changeState = this.contextService.changeEvent().state;\n    const text = this.getCurrentText();\n    const wysiwyg = this.wysiwygRef();\n\n    if (!this.shouldSyncWysiwygFromContext(changeState)) {\n      return;\n    }\n\n    untracked(() => {\n      void this.applyWysiwygContentWhenReady(wysiwyg, text);\n    });\n  });\n\n  //#endregion\n\n  //#region ----   UI Handlers   ----\n\n  protected onWysiwygChanged(e: AXValueChangedEvent<string>) {\n    if (!e.isUserInteraction) return;\n    const path = this.fullPath();\n    const current = this.getValue();\n    const saved = path ? this.contextService.getSavedValue(path) : undefined;\n    const lang = this.currentLanguage() ?? '';\n    const nextValue = this.effectiveMultiLanguage()\n      ? buildLocaleTextMapValue(current, saved, lang, e.value ?? '')\n      : (e.value ?? '');\n    this.setValue(nextValue);\n  }\n\n  protected async openMultiLanguagePopup() {\n    const node: AXPWidgetNode = {\n      type: 'rich-text-editor',\n      path: 'value',\n      options: {\n        ...this.options(),\n        multiLanguage: false,\n      },\n    };\n    const res = await this.popupService.open(AXPSelectLanguagePopup, {\n      title: 'Select Language',\n      size: 'lg',\n      data: {\n        values: this.translationService.toLocaleMap(this.getValue(), this.currentLanguage()),\n        currentLanguage: this.currentLanguage(),\n        node: node,\n        mode: 'edit',\n      },\n    });\n    if (res?.data) {\n      const map = res.data as Record<string, string>;\n      this.setValue({ ...map });\n    }\n  }\n\n  //#endregion\n\n  //#region ----   Utility Methods   ----\n\n  private shouldSyncWysiwygFromContext(state: AXPContextState): boolean {\n    return state === 'restored' || state === 'initiated';\n  }\n\n  private async applyWysiwygContentWhenReady(\n    wysiwyg: AXWysiwygContainerComponent | undefined,\n    text: string,\n  ): Promise<void> {\n    const content = defaultTo(text, '');\n\n    for (let attempt = 0; attempt < 30; attempt++) {\n      const editor = wysiwyg ?? this.wysiwygRef();\n      if (!editor) {\n        return;\n      }\n\n      try {\n        editor.setWysiwygContent(content);\n        return;\n      } catch {\n        await new Promise((resolve) => setTimeout(resolve, 50));\n      }\n    }\n  }\n\n  //#endregion\n}\n","import { AXSafePipe } from '@acorex/core/pipes';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPLayoutBuilderService, IActionBuilder } from '@acorex/platform/layout/builder';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport {\n  AXP_RICH_TEXT_DIALOG_BODY_PATH,\n  resolveRichTextPreviewTitle,\n} from './rich-text-dialog.helpers';\n\n@Component({\n  selector: 'axp-rich-text-widget-view',\n  template: `\n    @let html = getValue() | translate | async;\n    @if (showFullContent()) {\n      @if (html) {\n        <div\n          class=\"ax-overflow-auto ax-min-h-0 ax-rich-text-widget-full-preview\"\n          [style.max-height.px]=\"previewMaxHeightPx()\"\n          [innerHTML]=\"html | safe: 'html'\"\n        ></div>\n      } @else {\n        <span class=\"ax-text-muted\">---</span>\n      }\n    } @else {\n      @if (html) {\n        <span\n          class=\"ax-truncate ax-underline ax-block ax-w-full ax-cursor-pointer ax-text-muted\"\n          (click)=\"openPopup()\"\n          [innerHTML]=\"html | safe: 'html'\"\n        >\n        </span>\n      } @else {\n        <span class=\"ax-text-muted\">---</span>\n      }\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXSafePipe, AXTranslationModule, AsyncPipe],\n})\nexport class AXPRichTextWidgetViewComponent extends AXPValueWidgetComponent<\n  string | Record<string, string> | undefined\n> {\n  private platform = inject(AXPlatform);\n  private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n  private readonly mlResolver = inject(AXTranslationService);\n\n  private readonly currentLanguage = toSignal(this.mlResolver.langChanges$, {\n    initialValue: this.mlResolver.getActiveLang(),\n  });\n\n  /** Resolved HTML for inline snippet and preview dialog. */\n  protected displayHtml = computed<string>(() => {\n    const v = this.getValue() as string | Record<string, string> | undefined;\n    return this.mlResolver.resolve(v, this.currentLanguage());\n  });\n\n  /** Full-body preview (dialogs) vs truncated grid snippet. */\n  protected showFullContent = computed(() => this.options()['showFullContent'] === true);\n\n  protected previewMaxHeightPx = computed(() => {\n    const h = this.options()['height'] as number | undefined;\n    return h != null && h > 0 ? h : 400;\n  });\n\n  protected async openPopup(): Promise<void> {\n    const resolvedHtml = this.displayHtml();\n    const title = await resolveRichTextPreviewTitle(this.mlResolver, undefined, this.path);\n    const size = this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : 'md';\n\n    await this.layoutBuilder\n      .create()\n      .dialog((dialog) => {\n        dialog\n          .setTitle(title)\n          .setSize(size as any)\n          .setContext({ [AXP_RICH_TEXT_DIALOG_BODY_PATH]: resolvedHtml })\n          .content((layoutBuilder) => {\n            layoutBuilder.flex((flex) => {\n              flex.mode('view').richText({\n                path: AXP_RICH_TEXT_DIALOG_BODY_PATH,\n                defaultValue: resolvedHtml,\n                showFullContent: true,\n                height: 400,\n              });\n            });\n          })\n          .setActions((actions: IActionBuilder) => {\n            actions.cancel('@general:actions.cancel.title');\n          });\n      })\n      .show();\n  }\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_RICH } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_DATA_PATH_PROPERTY,\n  AXP_DISABLED_PROPERTY,\n  AXP_FIT_LINE_COUNT_PROPERTY,\n  AXP_MAX_LENGTH_VALIDATION_PROPERTY,\n  AXP_MAX_LINE_COUNT_PROPERTY,\n  AXP_MIN_LENGTH_VALIDATION_PROPERTY,\n  AXP_MIN_LINE_COUNT_PROPERTY,\n  AXP_MULTI_LANGUAGE_PROPERTY,\n  AXP_PLACEHOLDER_PROPERTY,\n  AXP_READONLY_PROPERTY,\n  AXP_REQUIRED_VALIDATION_PROPERTY,\n  AXP_TRIGGERS_PROPERTY,\n  richTextDefaultProperty,\n} from '../../../properties';\nimport { AXP_NAME_PROPERTY } from '../../../properties/general.props';\n\nexport const AXPRichTextWidget: AXPWidgetConfig = {\n  name: 'rich-text-editor',\n  title: '@platform-layout-widgets:widgets.rich-text-editor.title',\n  description: '@platform-layout-widgets:widgets.rich-text-editor.description',\n  icon: 'fa-light fa-input-text',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_RICH,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  defaultFilterWidgetName: 'string-filter',\n  type: 'editor',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    richTextDefaultProperty(),\n    AXP_DISABLED_PROPERTY,\n    AXP_READONLY_PROPERTY,\n    AXP_PLACEHOLDER_PROPERTY,\n    AXP_MULTI_LANGUAGE_PROPERTY,\n    AXP_MIN_LINE_COUNT_PROPERTY,\n    AXP_MAX_LINE_COUNT_PROPERTY,\n    AXP_FIT_LINE_COUNT_PROPERTY,\n    AXP_REQUIRED_VALIDATION_PROPERTY,\n    AXP_MIN_LENGTH_VALIDATION_PROPERTY,\n    AXP_MAX_LENGTH_VALIDATION_PROPERTY,\n    AXP_TRIGGERS_PROPERTY,\n  ],\n  components: {\n    view: {\n      component: () => import('./rich-text-widget-view.component').then((c) => c.AXPRichTextWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./rich-text-widget-edit.component').then((c) => c.AXPRichTextWidgetEditComponent),\n    },\n    column: {\n      component: () => import('./rich-text-widget-column.component').then((c) => c.AXPRichTextWidgetColumnComponent),\n    },\n    designer: {\n      component: () => import('./rich-text-widget-edit.component').then((c) => c.AXPRichTextWidgetEditComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    richText: 'rich-text-editor';\n  }\n}\n\nexport interface AXPRichTextWidgetDesignerOptions {\n  placeholder?: string;\n  disabled?: boolean;\n  readonly?: boolean;\n  multiLanguage?: boolean;\n  minLineCount?: number;\n  maxLineCount?: number;\n  fitLineCount?: boolean;\n}\n\nexport interface AXPRichTextWidgetViewOptions {\n  /** Scrollable full HTML in view mode (e.g. layout-builder preview dialogs). */\n  showFullContent?: boolean;\n  /** Max height in px when `showFullContent` is true; defaults to 400. */\n  height?: number;\n}\n\nexport interface AXPRichTextWidgetEditOptions {\n  placeholder?: string;\n  disabled?: boolean;\n  readonly?: boolean;\n  multiLanguage?: boolean;\n  minLineCount?: number;\n  maxLineCount?: number;\n  fitLineCount?: boolean;\n}\n\nexport interface AXPRichTextWidgetColumnOptions {\n  /**\n   * Plain-text length above which the grid cell is line-clamped and opens the preview dialog on click.\n   * @default 100\n   */\n  previewMaxChars?: number;\n}\n\nexport interface AXPRichTextWidgetPrintOptions { }\n\nexport interface AXPRichTextWidgetOptions {\n  designer: AXPRichTextWidgetDesignerOptions;\n  view: AXPRichTextWidgetViewOptions;\n  edit: AXPRichTextWidgetEditOptions;\n  print: AXPRichTextWidgetPrintOptions;\n  column: AXPRichTextWidgetColumnOptions;\n}\n","//#region ---- Badge styling ----\n\nconst BADGE_BASE_CLASSES = 'ax-inline-flex ax-items-center ax-px-2 ax-py-1 ax-text-xs ax-font-medium ax-rounded-lg ax-border';\n\nconst DEFAULT_BADGE_CSS_CLASS =\n  'ax-primary-lighter';\n\nexport function readSelectItemCssClass(\n  item: Record<string, unknown>,\n  cssClassField: string | undefined,\n): string | undefined {\n  if (!cssClassField) {\n    return undefined;\n  }\n  const raw = item[cssClassField];\n  return typeof raw === 'string' && raw.trim() ? raw.trim() : undefined;\n}\n\n/**\n * Resolves badge classes: layout base + scope {@link cssClass} (whole badge) or default fallback.\n */\nexport function resolveSelectBadgeClasses(\n  item: Record<string, unknown>,\n  options: {\n    cssClassField?: string;\n    badgeClass?: string;\n  },\n): string {\n  const scopeClass = readSelectItemCssClass(item, options.cssClassField);\n  if (scopeClass) {\n    return `${BADGE_BASE_CLASSES} ${scopeClass}`;\n  }\n\n  const fallback = options.badgeClass?.trim() || DEFAULT_BADGE_CSS_CLASS;\n  return `${BADGE_BASE_CLASSES} ${fallback}`;\n}\n\n//#endregion\n","import { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { castArray, isNil } from 'lodash-es';\nimport {\n  readSelectItemCssClass,\n  resolveSelectBadgeClasses,\n} from './select-box-item-badge.utils';\n\n@Component({\n  selector: 'axp-select-box-widget-column',\n  template: ` <div class=\"ax-flex ax-gap-2\">\n    @for (item of internalValue(); track $index) {\n      <span class=\"{{ resolveBadgeClasses(item) }}\">{{ getItemLabel(item) | translate | async }}</span>\n    } @empty {\n      <span class=\"ax-text-muted\">---</span>\n    }\n  </div>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [CommonModule, AXTranslationModule],\n  inputs: ['rawValue', 'rowData'],\n})\nexport class AXPSelectBoxWidgetColumnComponent extends AXPColumnWidgetComponent<any> {\n  protected textField = computed(() => (this.options['textField'] as string) ?? 'title');\n  protected valueField = computed(() => (this.options['valueField'] as string) ?? 'id');\n  protected cssClassField = computed(() => this.options['cssClassField'] as string | undefined);\n  protected badgeClass = computed(() => this.options['badgeClass'] as string | undefined);\n  protected dataSource = computed(() => (this.options['dataSource'] as unknown[]) ?? []);\n\n  protected resolveBadgeClasses(item: unknown): string {\n    const row = item as Record<string, unknown>;\n    return resolveSelectBadgeClasses(row, {\n      cssClassField: this.cssClassField(),\n      badgeClass: this.badgeClass(),\n    });\n  }\n\n  protected getItemLabel(item: unknown): string | Record<string, string> {\n    const row = item as Record<string, unknown>;\n    const label = row[this.textField()];\n    if (label != null && typeof label === 'object') {\n      return label as Record<string, string>;\n    }\n    return String(label ?? '');\n  }\n\n  protected internalValue = computed(() =>\n    castArray(this.rawValue)\n      .map((item: unknown) => this.extractItem(item))\n      .filter((c) => c != null),\n  );\n\n  private extractItem(item: unknown): Record<string, unknown> | null {\n    if (isNil(item)) {\n      return null;\n    }\n\n    const valueField = this.valueField();\n    const textField = this.textField();\n    const cssClassField = this.cssClassField();\n    const dataSource = this.dataSource();\n    const isDataSourceObjects =\n      Array.isArray(dataSource) && dataSource.length > 0 && typeof dataSource[0] === 'object';\n\n    if (typeof item !== 'object') {\n      if (isDataSourceObjects) {\n        const foundItem = dataSource.find(\n          (ds) => (ds as Record<string, unknown>)[valueField] === item,\n        ) as Record<string, unknown> | undefined;\n        if (foundItem) {\n          return { ...foundItem };\n        }\n      }\n\n      return {\n        [valueField]: item,\n        [textField]: item,\n      };\n    }\n\n    const row = item as Record<string, unknown>;\n    if (!readSelectItemCssClass(row, cssClassField) && isDataSourceObjects && row[valueField] != null) {\n      const foundItem = dataSource.find(\n        (ds) => (ds as Record<string, unknown>)[valueField] === row[valueField],\n      ) as Record<string, unknown> | undefined;\n      const cssKey = cssClassField ?? 'cssClass';\n      if (foundItem?.[cssKey]) {\n        return { ...row, [cssKey]: foundItem[cssKey] };\n      }\n    }\n\n    return { ...row };\n  }\n}\n","import { AXDataSourceFilterOption, AXDataSourceQuery, AXValueChangedEvent, convertArrayToDataSource } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSelectBoxComponent, AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXLocaleService } from '@acorex/core/locale';\nimport { AXPCleanNestedFilters, AXPFilterOperatorMiddlewareService } from '@acorex/platform/common';\nimport { extractValue, isSelectionValueEqual, setSmart } from '@acorex/platform/contracts';\nimport { AXPDebugService, FORM_DIRTY_TRACE_NS } from '@acorex/platform/core';\nimport { AXPDataListWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { AsyncPipe } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  DestroyRef,\n  HostBinding,\n  computed,\n  effect,\n  inject,\n  signal,\n  untracked,\n  viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { castArray, get, has, isArray, isNil, isString, set } from 'lodash-es';\nimport { merge } from 'rxjs';\nimport { STRATEGY_CONFIG_TOKEN, StrategyConfig } from '../../../widgets.config';\n\n@Component({\n  selector: 'axp-select-box-widget-edit',\n  template: `\n    @if (showSelectBoxSkeleton()) {\n      <ax-skeleton [animated]=\"true\" class=\"axp-select-box-skeleton\"></ax-skeleton>\n    } @else if (selectBoxKey()) {\n      <ax-select-box\n        [placeholder]=\"(placeholder() | translate | async) ?? ''\"\n        [dataSource]=\"effectiveDataSource()\"\n        [disabled]=\"isSelectBoxDisabled()\"\n        [valueField]=\"valueField()\"\n        [textField]=\"textField()\"\n        [textTemplate]=\"textTemplate()\"\n        [multiple]=\"multiple()\"\n        [readonly]=\"readonly()\"\n        [showItemTooltip]=\"showItemTooltip()\"\n        [isItemTruncated]=\"isItemTruncated()\"\n        [ngModel]=\"selectBoxModel()\"\n        (mousedown)=\"enableListLoad()\"\n        (focus)=\"enableListLoad()\"\n        (onValueChanged)=\"handleValueChange($event)\"\n      >\n        @if (allowSearch()) {\n          <ax-search-box [autoSearch]=\"false\" [ngModel]=\"searchValue()\" (onValueChanged)=\"handleSearchValueChange($event)\"\n            ><ax-clear-button></ax-clear-button\n          ></ax-search-box>\n        }\n        @if (hasClearButton() && !this.filterMode()) {\n          <ax-clear-button></ax-clear-button>\n        }\n        @for (validation of validationRules(); track $index) {\n          <ax-validation-rule\n            [rule]=\"validation.rule\"\n            [message]=\"validation.options?.message\"\n            [options]=\"validation.options\"\n          ></ax-validation-rule>\n        }\n      </ax-select-box>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    class: 'ax-block ax-flex-1',\n  },\n  styles: `\n    :host .axp-select-box-skeleton {\n      display: block;\n      width: 100%;\n      height: 2.5rem;\n      border-radius: var(--ax-sys-radius-md, 0.375rem);\n    }\n  `,\n  imports: [\n    FormsModule,\n    AXSelectBoxModule,\n    AXFormModule,\n    AXDecoratorModule,\n    AXSearchBoxModule,\n    AXSkeletonModule,\n    AXTranslationModule,\n    AsyncPipe,\n  ],\n})\nexport class AXPSelectBoxWidgetEditComponent extends AXPDataListWidgetComponent {\n  private static readonly emptyDataSource = convertArrayToDataSource<any>([]);\n\n  private selectBox = viewChild<AXSelectBoxComponent>(AXSelectBoxComponent);\n  //\n  protected widgetsConfigs = inject<StrategyConfig>(STRATEGY_CONFIG_TOKEN);\n  private readonly filterOperatorMiddleware = inject(AXPFilterOperatorMiddlewareService);\n  private readonly translationService = inject(AXTranslationService);\n  private readonly localeService = inject(AXLocaleService);\n  private readonly destroyRef = inject(DestroyRef);\n\n  /** Toggled to force ax-select-box to re-render after locale / language changes. */\n  protected readonly selectBoxKey = signal(true);\n\n  /** Registry list query runs only after the user interacts (not on form mount). */\n  private readonly listLoadEnabled = signal(false);\n\n  private readonly isLazyRegistrySelect = computed(\n    () => !this.filterMode() && !!this.registryDataSourceName(),\n  );\n\n  private readonly selectBoxLocaleChanged = merge(\n    this.translationService.langChanges$,\n    this.localeService.profileChanged$,\n  )\n    .pipe(takeUntilDestroyed(this.destroyRef))\n    .subscribe(() => this.rerenderSelectBox());\n\n  //#region ----   Expose & Options   ----\n\n  /**\n   * Expose configuration similar to lookup widget. Can be:\n   * - string path(s): 'field.path'\n   * - mapping objects: { source: 'field.path', target: 'context.target.path' }\n   */\n  protected expose = computed<string | Array<string | { source: string; target: string }> | undefined>(\n    () => this.options()['expose'] as any,\n  );\n\n  //#endregion\n\n  protected multiple = computed<boolean>(() => this.options()['multiple'] as boolean);\n  protected disabled = computed<boolean>(() => (this.options()['disabled'] as boolean) ?? false);\n  protected readonly = computed<boolean>(() => this.options()['readonly'] as boolean);\n  protected placeholder = computed<string>(() => (this.options()['placeholder'] as string) ?? '');\n  protected hasClearButton = computed<boolean>(() => (this.options()['hasClearButton'] as boolean) ?? false);\n  protected allowSearch = computed<boolean>(() => (this.options()['allowSearch'] as boolean) ?? false);\n  protected showItemTooltip = computed<boolean>(() => (this.options()['showItemTooltip'] as boolean) ?? false);\n  protected isItemTruncated = computed<boolean>(() => (this.options()['isItemTruncated'] as boolean) ?? true);\n  protected filter = computed<AXDataSourceFilterOption>(() => this.options()['filter'] as AXDataSourceFilterOption);\n  protected filterMode = computed<boolean>(() => (this.options()['filterMode'] as boolean) ?? false);\n\n  /**\n   * True when a cascade/parent filter is configured but required values are still empty\n   * (e.g. state select before country is chosen).\n   */\n  protected hasPendingCascadeFilter = computed(() => {\n    if (this.filterMode()) {\n      return false;\n    }\n    const rawFilter = this.filter();\n    if (!rawFilter) {\n      return false;\n    }\n    return AXPCleanNestedFilters([rawFilter]).length === 0;\n  });\n\n  /**\n   * Registry-backed selects defer list loading until the user opens the dropdown.\n   * Existing values are still resolved via `byKey` in the base widget.\n   */\n  protected shouldDeferListLoad = computed(\n    () => this.isLazyRegistrySelect() && !this.listLoadEnabled(),\n  );\n\n  /** Only swap datasource when cascade parent is missing; defer load via patched `load` instead. */\n  protected effectiveDataSource = computed(() => {\n    if (this.hasPendingCascadeFilter()) {\n      return AXPSelectBoxWidgetEditComponent.emptyDataSource;\n    }\n    return this.dataSource();\n  });\n\n  protected isSelectBoxDisabled = computed(() => this.disabled() || this.hasPendingCascadeFilter());\n\n  /** For filter mode: display valueField from object to avoid [object Object] when value is stored as full item */\n  protected selectFilterDisplayValue = computed(() => {\n    const raw = this.getValue();\n    const val = raw && typeof raw === 'object' && 'value' in raw ? (raw as { value?: unknown }).value : raw;\n    if (val === undefined || val === null) return undefined;\n    if (typeof val === 'object' && val !== null && this.valueField()) {\n      return (val as Record<string, unknown>)[this.valueField()] ?? val;\n    }\n    return val;\n  });\n\n  /**\n   * In filter mode the stored value is wrapped as `{ value, operation, displayText }`.\n   * Item resolution in the base widget needs the unwrapped key(s), so expose the same\n   * display value used by the template to avoid resolving items with an `undefined` key.\n   */\n  protected override resolveSelectedItemsValue(): any {\n    return this.filterMode() ? this.selectFilterDisplayValue() : this.getValue();\n  }\n\n  /** Show skeleton while a registry-backed datasource is still resolving. */\n  protected showSelectBoxSkeleton = computed(\n    () =>\n      !this.filterMode() && !!this.registryDataSourceName() && !this.registryDataSourceReady(),\n  );\n\n  /**\n   * Bind resolved row object(s) when available so ax-select-box can render textField labels.\n   * Falls back to primitive key(s) while selectedItems are still loading.\n   * In filterMode, prefer stored `displayText` when byKey has not resolved a real label yet.\n   * Label translation is handled by ax-select-box (`getDisplayText(item) | translate`).\n   */\n  protected selectBoxModel = computed(() => {\n    const items = this.selectedItems();\n\n    if (this.filterMode()) {\n      if (this.multiple()) {\n        if (items.length) {\n          return items.map((item, index) => this.withFilterDisplayText(item, index));\n        }\n        const val = this.selectFilterDisplayValue();\n        const values = isArray(val) ? val : castArray(val ?? []);\n        return values.map((value, index) => this.withFilterDisplayText(value, index));\n      }\n      if (items[0] != null) {\n        return this.withFilterDisplayText(items[0]);\n      }\n      return this.withFilterDisplayText(this.selectFilterDisplayValue());\n    }\n\n    if (this.multiple()) {\n      if (items.length) {\n        return items;\n      }\n      const value = this.getValue();\n      return isArray(value) ? value : castArray(value ?? []);\n    }\n\n    if (items[0] != null) {\n      return items[0];\n    }\n\n    return this.getValue();\n  });\n\n  /** Reads `displayText` from filterMode payload `{ value, operation, displayText }`. */\n  private getFilterDisplayText(index?: number): string | undefined {\n    const raw = this.getValue();\n    if (isNil(raw) || typeof raw !== 'object' || !('displayText' in raw)) {\n      return undefined;\n    }\n\n    const displayText = (raw as { displayText?: unknown }).displayText;\n    if (isArray(displayText)) {\n      const text = displayText[index ?? 0];\n      if (isString(text)) {\n        return text;\n      }\n      return isNil(text) ? undefined : String(text);\n    }\n    if (isString(displayText)) {\n      return displayText;\n    }\n    if (isNil(displayText) || displayText === '') {\n      return undefined;\n    }\n    return String(displayText);\n  }\n\n  /**\n   * Ensures filterMode select shows a label: when selectedItems/byKey only have the raw key\n   * (or are missing), synthesize/enrich the model with stored `displayText`.\n   */\n  private withFilterDisplayText(item: unknown, index?: number): unknown {\n    const displayText = this.getFilterDisplayText(index);\n    if (isNil(displayText) || displayText === '') {\n      return item;\n    }\n\n    const valueField = this.valueField();\n    const textField = this.textField();\n\n    if (item != null && typeof item === 'object') {\n      const record = item as Record<string, unknown>;\n      const currentText = get(record, textField);\n      const currentValue = get(record, valueField);\n      const looksUnresolved =\n        isNil(currentText) ||\n        currentText === '' ||\n        currentText === currentValue ||\n        String(currentText) === String(currentValue);\n\n      if (!looksUnresolved) {\n        return item;\n      }\n\n      return {\n        ...record,\n        [textField]: displayText,\n      };\n    }\n\n    return {\n      [valueField]: item,\n      [textField]: displayText,\n    };\n  }\n\n  protected searchValue = signal<string | undefined>(undefined);\n  private lastDataSource: unknown = undefined;\n  private hasSeenDataSource = false;\n\n  //#region ----   Focus Management   ----\n\n  private shouldFocus = signal(false);\n\n  #focusEffect = effect(() => {\n    const shouldFocus = this.shouldFocus();\n    if (!shouldFocus) {\n      return;\n    }\n\n    const selectBox = this.selectBox();\n    if (selectBox) {\n      try {\n        selectBox.focus();\n        this.shouldFocus.set(false);\n      } catch (error) {\n        // Error focusing select box\n      }\n    }\n  });\n\n  public focus(): void {\n    this.shouldFocus.set(true);\n  }\n\n  //#endregion\n\n  protected override outputs(): (string | { name: string; value: unknown })[] {\n    return [\n      {\n        name: 'items',\n        value: this.selectedItems(),\n      },\n      {\n        name: 'item',\n        value: this.item,\n      },\n    ];\n  }\n\n  protected handleValueChange(e: AXValueChangedEvent) {\n    const componentItems = (e.component as AXSelectBoxComponent).selectedItems ?? [];\n\n    if (!e.isUserInteraction && this.isStaleFallbackSelection(componentItems)) {\n      return;\n    }\n\n    this.selectedItems.set(componentItems);\n\n    if (e.isUserInteraction) {\n      AXPDebugService.instance?.trace(FORM_DIRTY_TRACE_NS, 'select-box-widget', 'handleValueChange', () => ({\n        path: this.fullPath(),\n        value: e.value,\n        selectedItems: this.selectedItems(),\n        expose: this.expose(),\n        strategy: this.widgetsConfigs.selectValueStrategy,\n      }));\n\n      //#region ----   Expose extra values to context   ----\n\n      const widgetPath = this.fullPath();\n      const savedWidgetValue = widgetPath ? this.contextService.getSavedValue(widgetPath) : undefined;\n      const selectionValue =\n        this.filterMode() ? e.value : this.widgetsConfigs.selectValueStrategy === 'valueField'\n          ? e.value\n          : this.multiple()\n            ? this.selectedItems()\n            : this.selectedItems()[0];\n      const selectionMatchesSaved =\n        this.contextService.isSavedCommitted() &&\n        widgetPath != null &&\n        isSelectionValueEqual(selectionValue, savedWidgetValue);\n\n      if (this.expose()) {\n        if (selectionMatchesSaved) {\n          this.syncExposePathsToSavedBaseline();\n        } else {\n          const selections = this.selectedItems();\n          const exposeList = Array.isArray(this.expose()) ? (this.expose() as any[]) : [this.expose()];\n          const itemToExpose: any = {};\n\n          exposeList.forEach((expr) => {\n            if (typeof expr === 'string') {\n              const values = selections.map((item) => set({}, expr, get(item, expr)));\n              setSmart(itemToExpose, expr, this.singleOrMultiple(values));\n            } else if (expr && typeof expr === 'object') {\n              const values = this.multiple()\n                ? selections.map((item) => set({}, expr.source, get(item, expr.source)))\n                : selections.map((item) => get(item, expr.source));\n              setSmart(itemToExpose, expr.target, this.singleOrMultiple(values));\n            }\n          });\n\n          this.contextService.applyObjectPaths(itemToExpose, { origin: 'user' });\n        }\n      }\n\n      //#endregion\n\n      //#region ----   Set Value Based on Mode   ----\n      if (this.filterMode()) {\n        const newValue = this.multiple()\n          ? castArray(e.value).map((item) => extractValue(item, this.valueField()))\n          : extractValue(e.value, this.valueField());\n        const text = this.selectedItems().map((item) => get(item, this.textField()));\n        const displayText = this.multiple() ? text : (text[0] ?? '');\n\n        this.setValue({\n          value: newValue,\n          displayText,\n          operation: {\n            type: this.multiple() ? 'in' : 'equal',\n          },\n        });\n      } else if (this.widgetsConfigs.selectValueStrategy === 'valueField') {\n        this.setValue(e.value);\n      } else if (this.multiple()) {\n        this.setValue(this.selectedItems());\n      } else {\n        this.setValue(this.selectedItems()[0]);\n      }\n\n      if (this.expose() && selectionMatchesSaved) {\n        this.syncExposePathsToSavedBaseline();\n      }\n    }\n\n    //#endregion\n  }\n\n  /**\n   * When selection matches saved baseline, align expose targets (restore or remove paths absent from baseline).\n   */\n  private syncExposePathsToSavedBaseline(): void {\n    const exposeValue = castArray(this.expose() ?? []);\n    const parentPaths = new Set<string>();\n\n    exposeValue.forEach((item) => {\n      const target = typeof item === 'string' ? item : item.target;\n      if (target.includes('.')) {\n        parentPaths.add(target.split('.').slice(0, -1).join('.'));\n      }\n      this.contextService.syncPathToSavedBaseline(target, { origin: 'system' });\n    });\n\n    const saved = this.contextService.saved() as Record<string, unknown>;\n    parentPaths.forEach((parentPath) => {\n      if (!has(saved, parentPath)) {\n        this.contextService.syncPathToSavedBaseline(parentPath, { origin: 'system' });\n      }\n    });\n  }\n\n  protected handleSearchValueChange(e: AXValueChangedEvent) {\n    if (e.isUserInteraction) {\n      this.searchValue.set(e.value);\n      if (this.shouldDeferListLoad()) {\n        return;\n      }\n      const baseFilter = this.resolveActiveWidgetFilter();\n      const searchFilter = this.filterOperatorMiddleware.transformFilter({\n        field: this.textField(),\n        operator: { type: 'contains' },\n        value: e.value,\n      });\n\n      let mergedFilter = searchFilter;\n      if (baseFilter) {\n        if (this.searchValue() !== undefined) {\n          mergedFilter = {\n            logic: 'and',\n            filters: [baseFilter, searchFilter],\n          };\n        } else {\n          mergedFilter = baseFilter;\n        }\n      } else if (this.searchValue() === undefined) {\n        mergedFilter = {};\n      }\n\n      this.dataSource()?.filter(mergedFilter);\n      this.dataSource()?.refresh();\n    }\n  }\n\n  /** Normalized, middleware-ready filter for the current widget options (or null). */\n  private resolveActiveWidgetFilter(): AXDataSourceFilterOption | null {\n    const filterOption = this.filter();\n    if (!filterOption) {\n      return null;\n    }\n\n    const cleanedFilters = AXPCleanNestedFilters([filterOption]);\n    if (cleanedFilters.length === 0) {\n      return null;\n    }\n\n    return this.filterOperatorMiddleware.transformFilter(\n      this.normalizeDataSourceFilter(cleanedFilters[0] as AXDataSourceFilterOption),\n    );\n  }\n\n  /** Applies widget filter to the isolated datasource whenever options change (cascade parent id). */\n  #filterEffect = effect(() => {\n    const filterOption = this.filter();\n    const registryReady = this.registryDataSourceReady();\n\n    if (!registryReady || !filterOption || this.filterMode() || this.hasPendingCascadeFilter()) {\n      return;\n    }\n\n    const widgetFilter = this.resolveActiveWidgetFilter();\n    if (!widgetFilter) {\n      return;\n    }\n\n    untracked(() => {\n      this.dataSource()?.filter(widgetFilter);\n    });\n  });\n\n  #registryDataSourceEffect = effect(() => {\n    const registryReady = this.registryDataSourceReady();\n    const registryName = this.registryDataSourceName();\n\n    if (!registryReady || !registryName || this.filterMode()) {\n      return;\n    }\n\n    untracked(() => {\n      this.patchRegistryDataSourceLoad();\n    });\n  });\n\n  /**\n   * Patches registry `load` to defer list fetch until the user opens the dropdown.\n   * Filtering is handled via {@link #filterEffect} on the datasource (lookup-select pattern).\n   */\n  private patchRegistryDataSourceLoad(): void {\n    const ds = this.dataSource();\n    const config = ds?.config;\n    if (!config?.load || (config as { __axpSelectFilterPatched?: boolean }).__axpSelectFilterPatched) {\n      return;\n    }\n\n    const originalLoad = config.load.bind(ds);\n    config.load = async (event: AXDataSourceQuery) => {\n      if (this.shouldDeferListLoad() || this.hasPendingCascadeFilter()) {\n        return { items: [], total: 0 };\n      }\n\n      return originalLoad(event);\n    };\n    (config as { __axpSelectFilterPatched?: boolean }).__axpSelectFilterPatched = true;\n  }\n\n  #clearOnDataSourceChangedEffect = effect(() => {\n    const currentDataSource = this.options()['dataSource'];\n\n    if (!this.hasSeenDataSource) {\n      this.lastDataSource = currentDataSource;\n      this.hasSeenDataSource = true;\n      return;\n    }\n\n    if (Object.is(this.lastDataSource, currentDataSource)) {\n      return;\n    }\n\n    this.lastDataSource = currentDataSource;\n    this.registryDataSourceReady.set(false);\n    this.selectedItems.set([]);\n    this.setValue(null);\n    this.refresh();\n  });\n\n  // TODO: Duplicate registry list API calls — opening a cascade select (or country-change refresh)\n  // currently triggers two loads (e.g. dataSource.refresh + selectBox.refresh, and/or #filterEffect\n  // plus refresh/enableListLoad). Coalesce to a single load path without breaking cascade filter refresh.\n  refresh() {\n    setTimeout(() => {\n      this.searchValue.set(undefined);\n      this.applyActiveFilterToDataSource();\n      this.listLoadEnabled.set(true);\n      this.dataSource()?.refresh();\n      this.selectBox()?.refresh();\n    }, 0);\n  }\n\n  /** Push the current widget filter onto the isolated datasource. */\n  private applyActiveFilterToDataSource(): void {\n    const widgetFilter = this.resolveActiveWidgetFilter();\n    if (widgetFilter) {\n      this.dataSource()?.filter(widgetFilter);\n    }\n  }\n\n  /** Allow the patched datasource `load` before the dropdown panel opens. */\n  protected enableListLoad(): void {\n    if (this.filterMode() || this.hasPendingCascadeFilter() || !this.isLazyRegistrySelect()) {\n      return;\n    }\n\n    this.listLoadEnabled.set(true);\n    this.applyActiveFilterToDataSource();\n  }\n\n  /** Re-mount ax-select-box so translate pipe picks up the active locale. */\n  private rerenderSelectBox(): void {\n    this.refreshRegistryDataSource();\n    this.listLoadEnabled.set(false);\n    this.selectBoxKey.set(false);\n    setTimeout(() => {\n      this.selectBoxKey.set(true);\n      setTimeout(() => this.selectBox()?.refresh(), 0);\n    }, 0);\n  }\n\n  clear() {\n    this.selectBox()?.reset(true);\n    this.refresh();\n  }\n\n  protected get item() {\n    return this.selectedItems()[0];\n  }\n\n  @HostBinding('class')\n  private get __class(): string {\n    const cls: any = {};\n    cls[`ax-block`] = true;\n    cls[`ax-flex-1`] = true;\n    return cls;\n  }\n\n  //#region ----   Utility Methods   ----\n\n  /**\n   * ax-select-box may emit a non-user init event with a placeholder item whose title equals the raw id.\n   */\n  private isStaleFallbackSelection(items: unknown[]): boolean {\n    if (!items.length) {\n      return false;\n    }\n    const textField = this.textField();\n    const valueField = this.valueField();\n    return items.every((item) => {\n      if (item == null || typeof item !== 'object') {\n        return false;\n      }\n      const row = item as Record<string, unknown>;\n      const id = row[valueField];\n      const title = row[textField];\n      return id != null && title === id;\n    });\n  }\n\n  /**\n   * Return a single value for single-select, or the full list for multi-select\n   */\n  private singleOrMultiple<T>(values: T[]): T | T[] {\n    return this.multiple() ? values : values[0];\n  }\n\n  /**\n   * Normalizes filter payloads for datasource queries: unwraps filter-mode values and\n   * reduces selected row objects to scalar keys (default `id`).\n   */\n  private normalizeDataSourceFilter(filter: AXDataSourceFilterOption): AXDataSourceFilterOption {\n    if (!filter) {\n      return filter;\n    }\n\n    let normalized = this.filterMode() ? this.normalizeFilterValues(filter) : filter;\n\n    if (Array.isArray(normalized.filters) && normalized.filters.length > 0) {\n      return {\n        ...normalized,\n        filters: normalized.filters.map((entry) =>\n          this.normalizeDataSourceFilter(entry as AXDataSourceFilterOption),\n        ),\n      };\n    }\n\n    const extracted = extractValue(normalized.value, 'id');\n    if (extracted != null && extracted !== normalized.value) {\n      normalized = { ...normalized, value: extracted };\n    }\n\n    return normalized;\n  }\n\n  /**\n   * In filterMode, widget context stores values as `{ value, operation, displayText }`.\n   * DataSource filtering expects the raw scalar/array value, so unwrap `value.value`.\n   */\n  private normalizeFilterValues(filter: AXDataSourceFilterOption): AXDataSourceFilterOption {\n    if (!filter) {\n      return filter;\n    }\n    if (Array.isArray(filter.filters) && filter.filters.length > 0) {\n      return {\n        ...filter,\n        filters: filter.filters.map((f) => this.normalizeFilterValues(f as AXDataSourceFilterOption)),\n      };\n    }\n\n    const v = filter.value as unknown;\n    if (v && typeof v === 'object' && 'value' in (v as Record<string, unknown>)) {\n      return {\n        ...filter,\n        value: (v as Record<string, unknown>)['value'],\n      };\n    }\n    return filter;\n  }\n\n  //#endregion\n}\n","import { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPDataListWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { resolveSelectBadgeClasses } from './select-box-item-badge.utils';\n\n@Component({\n  selector: 'axp-select-box-widget-view',\n  template: `\n    @for (item of selectedItems(); track $index) {\n      <span class=\"{{ resolveBadgeClasses(item) }}\">\n        {{ getItemLabel(item) | translate | async }}\n      </span>\n    } @empty {\n      <span class=\"ax-text-muted\">---</span>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    class: 'ax-flex ax-gap-1 ax-flex-wrap',\n  },\n  imports: [CommonModule, AXTranslationModule],\n})\nexport class AXPSelectBoxWidgetViewComponent extends AXPDataListWidgetComponent {\n  protected cssClassField = computed(() => this.options()['cssClassField'] as string | undefined);\n\n  protected badgeClass = computed(() => this.options()['badgeClass'] as string | undefined);\n\n  protected resolveBadgeClasses(item: unknown): string {\n    return resolveSelectBadgeClasses(item as Record<string, unknown>, {\n      cssClassField: this.cssClassField(),\n      badgeClass: this.badgeClass(),\n    });\n  }\n\n  protected getItemLabel(item: unknown): string | Record<string, string> {\n    const row = item as Record<string, unknown>;\n    const label = row[this.textField()];\n    if (label != null && typeof label === 'object') {\n      return label as Record<string, string>;\n    }\n    return String(label ?? '');\n  }\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport {\n AXDataSourceFilterOption } from '@acorex/cdk/common';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_CHOICE } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_ALLOW_MULTIPLE_PROPERTY,\n  AXP_ALLOW_SEARCH_PROPERTY,\n  AXP_DATA_PATH_PROPERTY,\n  AXP_DATA_SOURCE_OPTIONS_PROPERTY,\n  AXP_DISABLED_PROPERTY,\n  AXP_HAS_CLEAR_BUTTON_PROPERTY,\n  AXP_NAME_PROPERTY,\n  AXP_PLACEHOLDER_PROPERTY,\n  AXP_READONLY_PROPERTY,\n  AXP_TRIGGERS_PROPERTY,\n  selectEditorDefaultValueProperty,\n} from '../../../properties';\n\nexport const AXPSelectBoxWidget: AXPWidgetConfig = {\n  name: 'select-editor',\n  title: '@platform-layout-widgets:widgets.select-editor.title',\n  description: '@platform-layout-widgets:widgets.select-editor.description',\n  icon: 'fa-light fa-list-dropdown',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_CHOICE,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  defaultFilterWidgetName: 'select-filter',\n  type: 'editor',\n  properties: [\n    AXP_DATA_SOURCE_OPTIONS_PROPERTY,\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    selectEditorDefaultValueProperty(),\n    AXP_ALLOW_MULTIPLE_PROPERTY,\n    AXP_DISABLED_PROPERTY,\n    AXP_READONLY_PROPERTY,\n    AXP_PLACEHOLDER_PROPERTY,\n    AXP_HAS_CLEAR_BUTTON_PROPERTY,\n    AXP_ALLOW_SEARCH_PROPERTY,\n    AXP_TRIGGERS_PROPERTY,\n  ],\n  components: {\n    view: {\n      component: () => import('./select-box-widget-view.component').then((c) => c.AXPSelectBoxWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./select-box-widget-edit.component').then((c) => c.AXPSelectBoxWidgetEditComponent),\n    },\n    column: {\n      component: () => import('./select-box-widget-column.component').then((c) => c.AXPSelectBoxWidgetColumnComponent),\n    },\n    designer: {\n      component: () => import('./select-box-widget-edit.component').then((c) => c.AXPSelectBoxWidgetEditComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    select: 'select-editor';\n  }\n}\n\nexport interface AXPSelectBoxWidgetDesignerOptions {\n  multiple?: boolean;\n  disabled?: boolean;\n  readonly?: boolean;\n  placeholder?: string;\n  hasClearButton?: boolean;\n  allowSearch?: boolean;\n  filter?: AXDataSourceFilterOption;\n  expose?: any;\n}\n\nexport interface AXPSelectBoxWidgetViewOptions {\n  badgeClass?: string;\n}\n\nexport interface AXPSelectBoxWidgetEditOptions {\n  multiple?: boolean;\n  disabled?: boolean;\n  readonly?: boolean;\n  placeholder?: string;\n  hasClearButton?: boolean;\n  allowSearch?: boolean;\n  filter?: AXDataSourceFilterOption;\n  expose?: any;\n}\n\nexport interface AXPSelectBoxWidgetColumnOptions {\n  valueField?: any;\n  textField?: any;\n  badgeClass?: any;\n}\n\nexport interface AXPSelectBoxWidgetPrintOptions { }\n\nexport interface AXPSelectBoxWidgetOptions {\n  designer: AXPSelectBoxWidgetDesignerOptions;\n  view: AXPSelectBoxWidgetViewOptions;\n  edit: AXPSelectBoxWidgetEditOptions;\n  print: AXPSelectBoxWidgetPrintOptions;\n  column: AXPSelectBoxWidgetColumnOptions;\n}\n","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, Signal, computed } from '@angular/core';\n\n@Component({\n  selector: 'axp-selection-list-widget-column',\n  template: ` <div class=\"ax-flex ax-gap-2\">\n    @if (multiple) {\n      @for (item of selectedItems(); track $index) {\n        @if (imageMode) {\n          <img class=\"ax-w-10 ax-h-10 ax-rounded-sm\" [src]=\"item[this.textField]\" />\n        } @else {\n          <ax-badge [look]=\"'twotone'\" [text]=\"item[this.textField]\" color=\"primary\"></ax-badge>\n        }\n      }\n    } @else {\n      @if (imageMode) {\n        <img class=\"ax-w-10 ax-h-10 ax-rounded-sm\" [src]=\"firstItem()[this.textField]\" />\n      } @else {\n        <ax-badge [look]=\"'twotone'\" [text]=\"firstItem()[this.textField]\" color=\"primary\"></ax-badge>\n      }\n    }\n  </div>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXBadgeModule],\n  inputs: ['rawValue', 'rowData'],\n})\nexport class AXPSelectionListWidgetColumnComponent extends AXPColumnWidgetComponent<any> {\n  protected valueField: string = this.options['valueField'];\n  protected textField: string = this.options['textField'];\n  protected items: any[] = this.options['items'];\n  protected multiple: boolean = this.options['multiple'];\n  protected imageMode: boolean = this.options['imageMode'];\n\n  protected selectedItemIds: Signal<string[]> = computed(() => {\n    return this.rawValue || [];\n  });\n\n  protected selectedItems = computed(() => {\n    const selectedIds = this.selectedItemIds();\n    const filteredItems = this.items.filter((item) => {\n      const itemValue = item[this.valueField];\n      const isSelected = selectedIds.includes(itemValue);\n      return isSelected;\n    });\n    return filteredItems;\n  });\n\n  protected firstItem = computed(() => {\n    const first = this.selectedItems()[0];\n    return first;\n  });\n}\n","import { AXDirection } from '@acorex/cdk/common';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXSelectionListModule } from '@acorex/components/selection-list';\nimport { AXPDataListWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, effect, HostBinding, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { first } from 'rxjs';\n\n@Component({\n  selector: 'axp-selection-list-widget-designer',\n  template: `\n    <ax-selection-list\n      class=\"ax-w-max\"\n      [valueField]=\"valueField()\"\n      [textField]=\"textField()\"\n      [ngModel]=\"this.getValue()\"\n      [items]=\"displayItems()\"\n      [multiple]=\"multiple()\"\n      [direction]=\"direction()\"\n      [disabled]=\"disabled()\"\n      [readonly]=\"readonly()\"\n    >\n    </ax-selection-list>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [FormsModule, AXSelectionListModule, AXFormModule],\n})\nexport class AXPSelectionListWidgetDesignerComponent extends AXPDataListWidgetComponent {\n  protected multiple = computed<boolean>(() => this.options()['multiple'] as boolean);\n  protected direction = computed<AXDirection>(() => this.options()['direction']?.id ?? 'horizontal');\n  protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n  protected readonly = computed<boolean>(() => this.options()['readonly'] as boolean);\n  protected displayItems = signal<any[]>([]);\n\n  private samples = computed<any[]>(() =>\n    Array.from({ length: 3 }).map((c, i) => {\n      const item: any = {};\n      item[this.valueField()] = i + 1;\n      item[this.textField()] = `Sample Item ${i + 1}`;\n      return item;\n    }),\n  );\n\n  private ef = effect(() => {\n    this.dataSource()\n      .onChanged.pipe(first())\n      .subscribe((e) => {\n        if (e.items?.length > 0) {\n          this.displayItems.set(e.items);\n        } else {\n          this.displayItems.set(this.samples());\n        }\n      });\n    this.dataSource().refresh();\n  });\n\n  @HostBinding('class')\n  private get __class(): string {\n    const cls: any = {};\n    cls[`ax-block`] = true;\n    cls[`ax-flex-1`] = true;\n    return cls;\n  }\n}\n","import { AXDirection, AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXSelectionListLook, AXSelectionListModule } from '@acorex/components/selection-list';\nimport { AXPDataListWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, effect, HostBinding, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { get } from 'lodash-es';\n\n@Component({\n  selector: 'axp-selection-list-widget-edit',\n  template: `\n    <ax-selection-list\n      class=\"ax-w-max\"\n      [valueField]=\"valueField()\"\n      [textField]=\"textField()\"\n      [ngModel]=\"getValue()\"\n      (onValueChanged)=\"handleValueChange($event)\"\n      [items]=\"displayItems()\"\n      [multiple]=\"multiple()\"\n      [disabled]=\"disabled()\"\n      [readonly]=\"readonly()\"\n      [direction]=\"direction()\"\n      [look]=\"look()\"\n      [showControl]=\"showControl()\"\n      [customTemplate]=\"(imageMode() ? imageTemplate : undefined)!\"\n    >\n      <ng-template #imageTemplate let-item>\n        @if (imageMode()) {\n          <img class=\"ax-w-14 ax-h-14\" [src]=\"resolveItemImage(item)\" [attr.alt]=\"resolveItemAlt(item)\" />\n        }\n      </ng-template>\n      @for (validation of validationRules(); track $index) {\n        <ax-validation-rule\n          [rule]=\"validation.rule\"\n          [message]=\"validation.options?.message\"\n          [options]=\"validation.options\"\n        ></ax-validation-rule>\n      }\n    </ax-selection-list>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [FormsModule, AXSelectionListModule, AXFormModule],\n})\nexport class AXPSelectionListWidgetEditComponent extends AXPDataListWidgetComponent {\n  protected multiple = computed<boolean>(() => this.options()['multiple'] as boolean);\n  protected direction = computed<AXDirection>(() => this.options()['direction']?.id ?? 'horizontal');\n  protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n  protected readonly = computed<boolean>(() => this.options()['readonly'] as boolean);\n  protected look = computed<AXSelectionListLook>(() => (this.options()['look'] as AXSelectionListLook) ?? 'solid');\n  protected showControl = computed<boolean>(() => (this.options()['showControl'] as boolean) ?? true);\n  protected imageMode = computed<boolean>(() => (this.options()['imageMode'] as boolean) ?? false);\n  protected imageField = computed<string>(\n    () => (this.options()['imageField'] as string) ?? this.textField(),\n  );\n  protected displayItems = signal<any[]>([]);\n\n  private ef = effect((onCleanup) => {\n    const rawDataSource = this.options()['dataSource'];\n    if (Array.isArray(rawDataSource) && rawDataSource.length > 0) {\n      this.displayItems.set(rawDataSource);\n    }\n\n    const ds = this.dataSource();\n    const sub = ds.onChanged.subscribe((e) => {\n      if (e.items?.length) {\n        this.displayItems.set(e.items);\n      }\n    });\n    onCleanup(() => sub.unsubscribe());\n    void ds.refresh();\n  });\n\n  protected resolveItemImage(item: unknown): string {\n    const field = this.imageField();\n    const row = get(item, 'data', item);\n    return String(get(row, field, ''));\n  }\n\n  protected resolveItemAlt(item: unknown): string {\n    const row = get(item, 'data', item);\n    return String(get(row, 'title', get(row, this.valueField(), '')));\n  }\n\n  protected handleValueChange(e: AXValueChangedEvent) {\n    if (e.isUserInteraction) {\n      this.setValue(e.value);\n    }\n  }\n\n  @HostBinding('class')\n  private get __class(): string {\n    const cls: any = {};\n    cls[`ax-block`] = true;\n    cls[`ax-flex-1`] = true;\n    return cls;\n  }\n}\n","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXPDataListWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, HostBinding } from '@angular/core';\n\n@Component({\n  selector: 'axp-selection-list-widget-view',\n  template: `\n    @for (item of selectedItems(); track $index) {\n      @if (imageMode()) {\n        <img class=\"ax-w-14 ax-h-14 ax-rounded-sm\" [src]=\"resolveItemImage(item)\" [attr.alt]=\"item[textField()]\" />\n      } @else {\n        <ax-badge class=\"ax-p-0.5\" [color]=\"'surface'\" [text]=\"item[textField()]\"></ax-badge>\n      }\n    } @empty {\n      <span class=\"ax-text-muted\">---</span>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXBadgeModule],\n})\nexport class AXPSelectionListWidgetViewComponent extends AXPDataListWidgetComponent {\n  protected imageMode = computed<boolean>(() => (this.options()['imageMode'] as boolean) ?? false);\n  protected imageField = computed<string>(\n    () => (this.options()['imageField'] as string) ?? this.textField(),\n  );\n\n  protected resolveItemImage(item: Record<string, unknown>): string {\n    return String(item[this.imageField()] ?? '');\n  }\n\n  @HostBinding('class')\n  private get __class(): string {\n    const cls: any = {};\n    cls[`ax-flex`] = true;\n    cls[`ax-gap-1`] = true;\n    return cls;\n  }\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport {\n AXDirection } from '@acorex/cdk/common';\nimport { AXSelectionListLook } from '@acorex/components/selection-list';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_CHOICE } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_ALLOW_MULTIPLE_PROPERTY,\n  AXP_DATA_PATH_PROPERTY,\n  AXP_DATA_SOURCE_OPTIONS_PROPERTY,\n  AXP_DIRECTION_PROPERTY,\n  AXP_DISABLED_PROPERTY,\n  AXP_NAME_PROPERTY,\n  AXP_READONLY_PROPERTY,\n  AXP_REQUIRED_VALIDATION_PROPERTY,\n  selectionListEditorDefaultValueProperty,\n} from '../../../properties';\n\nexport const AXPSelectionListWidget: AXPWidgetConfig = {\n  name: 'selection-list-editor',\n  title: '@platform-layout-widgets:widgets.selection-list-editor.title',\n  description: '@platform-layout-widgets:widgets.selection-list-editor.description',\n  icon: 'fa-light fa-list-radio',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_CHOICE,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  defaultFilterWidgetName: 'select-filter',\n  properties: [\n    AXP_DATA_SOURCE_OPTIONS_PROPERTY,\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    selectionListEditorDefaultValueProperty(),\n    AXP_ALLOW_MULTIPLE_PROPERTY,\n    AXP_DIRECTION_PROPERTY,\n    AXP_DISABLED_PROPERTY,\n    AXP_READONLY_PROPERTY,\n    //cloneProperty(AXP_TABLE_COLUMN_WIDTH_PROPERTY, { schema: { defaultValue: '200px' } }),\n    AXP_REQUIRED_VALIDATION_PROPERTY,\n  ],\n\n  type: 'editor',\n  components: {\n    view: {\n      component: () =>\n        import('./selection-list-widget-view.component').then((c) => c.AXPSelectionListWidgetViewComponent),\n    },\n    edit: {\n      component: () =>\n        import('./selection-list-widget-edit.component').then((c) => c.AXPSelectionListWidgetEditComponent),\n    },\n    column: {\n      component: () =>\n        import('./selection-list-widget-column.component').then((c) => c.AXPSelectionListWidgetColumnComponent),\n    },\n    designer: {\n      component: () =>\n        import('./selection-list-widget-designer.component').then((c) => c.AXPSelectionListWidgetDesignerComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    selectionList: 'selection-list-editor';\n  }\n}\n\nexport interface AXPSelectionListWidgetDesignerOptions {\n  multiple?: boolean;\n  direction?: AXDirection;\n  disabled?: boolean;\n  readonly?: boolean;\n}\n\nexport interface AXPSelectionListWidgetViewOptions {\n  items?: any;\n  valueField?: string;\n  textField?: string;\n  imageMode?: boolean;\n}\n\nexport interface AXPSelectionListWidgetEditOptions {\n  multiple?: boolean;\n  direction?: AXDirection;\n  disabled?: boolean;\n  readonly?: boolean;\n  look?: AXSelectionListLook;\n  showControl?: boolean;\n  imageMode?: boolean;\n  /** Image URL field when `imageMode` is true; defaults to `textField`. */\n  imageField?: string;\n}\n\nexport interface AXPSelectionListWidgetColumnOptions {\n  valueField?: any;\n  textField?: any;\n  items?: any;\n  multiple?: any;\n  imageMode?: any;\n}\n\nexport interface AXPSelectionListWidgetPrintOptions { }\n\nexport interface AXPSelectionListWidgetOptions {\n  designer: AXPSelectionListWidgetDesignerOptions;\n  view: AXPSelectionListWidgetViewOptions;\n  edit: AXPSelectionListWidgetEditOptions;\n  print: AXPSelectionListWidgetPrintOptions;\n  column: AXPSelectionListWidgetColumnOptions;\n}\n","\nimport { AXPTag, AXPTagService } from '@acorex/platform/core';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\n\n//#region ----   Component   ----\n\n@Component({\n  selector: 'axp-tag-editor-widget-column',\n  template: `\n    @if (tags().length > 0) {\n      <div class=\"ax-flex ax-flex-wrap ax-gap-1 ax-sm\">\n        @for (tag of tags(); track tag.title) {\n          <div\n            class=\"ax-inline-flex ax-items-center ax-gap-1.5 ax-rounded-md ax-px-2 ax-py-0.5 ax-text-xs ax-font-medium ax-surface\"\n            [style.background-color]=\"tag.color || null\"\n            [style.color]=\"tag.color ? 'white' : null\"\n          >\n          <i\n            class=\"fa-solid fa-tag\"\n            [style.color]=\"tag.color ? 'white' : null\"\n          ></i>\n            <span>{{ tag.title }}</span>\n          </div>\n        }\n      </div>\n    } @else {\n      <span class=\"ax-text-muted\">---</span>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [],\n  inputs: ['rawValue', 'rowData'],\n})\nexport class AXPTagEditorWidgetColumnComponent extends AXPColumnWidgetComponent<string[]> {\n\n  //#region ----   Dependencies   ----\n\n  private tagService = inject(AXPTagService);\n\n  //#endregion\n\n  //#region ----   State   ----\n\n  private availableTags = signal<AXPTag[]>([]);\n\n  //#endregion\n\n  //#region ----   Computed Properties   ----\n\n  /**\n   * Normalizes the raw value to an array of tag objects with colors\n   */\n  protected tags = computed<AXPTag[]>(() => {\n    const value = this.rawValue;\n    if (!value || !Array.isArray(value)) {\n      return [];\n    }\n\n    return value.map((tagTitle: any) => {\n      // If it's a string, look up the tag from available tags\n      if (typeof tagTitle === 'string') {\n        const foundTag = this.availableTags().find(t => t.title === tagTitle);\n        return foundTag || { title: tagTitle, color: '' };\n      }\n\n      // If it's already an object, use it as is\n      if (typeof tagTitle === 'object' && tagTitle !== null) {\n        return {\n          title: tagTitle.title || String(tagTitle),\n          color: tagTitle.color || '',\n        } as AXPTag;\n      }\n\n      // Default case\n      return {\n        title: String(tagTitle),\n        color: '',\n      } as AXPTag;\n    });\n  });\n\n  //#endregion\n\n  //#region ----   Effects   ----\n\n  /**\n   * Load available tags on init\n   */\n  private loadTagsEffect = effect(async () => {\n    try {\n      const tags = await this.tagService.getTags();\n      this.availableTags.set(tags);\n    } catch (error) {\n      console.error('Error loading tags for column:', error);\n    }\n  });\n\n  //#endregion\n\n}\n\n//#endregion\n\n","import { AXDataSource, AXDataSourceQuery, AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXAutocompleteModule } from '@acorex/components/autocomplete';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXTagBoxModule } from '@acorex/components/tag-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { AXPTag, AXPTagService } from '@acorex/platform/core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostBinding, computed, inject, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n//#region ----   Component   ----\n\n@Component({\n  selector: 'axp-tag-editor-widget-edit',\n  template: `\n    <ax-tag-box\n      #tagBoxComponent\n      [tagTemplate]=\"tagTemplate\"\n      [ngModel]=\"internalValue()\"\n      [textField]=\"'title'\"\n      (onValueChanged)=\"handleValueChange($event)\"\n      [disabled]=\"disabled()\"\n      [readonly]=\"readonly()\"\n      [placeholder]=\"placeholder() | translate | async\"\n      [allowDuplicateValues]=\"allowDuplicate()\"\n    >\n      <!-- Autocomplete dropdown -->\n      <ax-autocomplete\n        [dataSource]=\"tagDataSource\"\n        [valueField]=\"'title'\"\n        [textField]=\"'title'\"\n        [itemHeight]=\"56\"\n        [itemTemplate]=\"itemTemplate\"\n        [emptyTemplate]=\"emptyTemplate\"\n        [loadingTemplate]=\"loadingTemplate\"\n      >\n      </ax-autocomplete>\n      @for (validation of validationRules(); track $index) {\n        <ax-validation-rule\n          [rule]=\"validation.rule\"\n          [message]=\"validation.options?.message\"\n          [options]=\"validation.options\"\n        ></ax-validation-rule>\n      }\n    </ax-tag-box>\n\n    <!-- Custom Tag Template -->\n    <ng-template #tagTemplate let-item let-index=\"index\">\n      <div\n        class=\"ax-inline-flex ax-items-center ax-gap-1.5 ax-rounded-md ax-px-3 ax-py-1 ax-text-sm ax-surface\"\n        [style.background-color]=\"item.color || null\"\n        [style.color]=\"item.color ? 'white' : null\"\n      >\n        <i class=\"fa-solid fa-tag\" [style.color]=\"item.color ? 'white' : null\"></i>\n        <span>{{ item.title }}</span>\n        <button (click)=\"tagBoxComponent.removeItem(index)\" type=\"button\">\n          <ax-icon class=\"ax-icon ax-icon-close\"></ax-icon>\n        </button>\n      </div>\n    </ng-template>\n\n    <!-- Custom Autocomplete Item Template -->\n    <ng-template #itemTemplate let-context>\n      @let item = context.data;\n      <div class=\"ax-flex ax-w-full ax-items-center ax-gap-3 ax-rounded ax-p-2 \">\n        <i class=\"fa-solid fa-tag ax-text-xl\" [style.color]=\"item.color || null\"></i>\n        <div class=\"ax-flex-1\">\n          <ax-title>{{ item.title }}</ax-title>\n          @if (item.description) {\n            <ax-subtitle>{{ item.description }}</ax-subtitle>\n          }\n        </div>\n      </div>\n    </ng-template>\n\n    <!-- Custom Empty Template -->\n    <ng-template #emptyTemplate>\n      <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-px-4 ax-py-8\">\n        <ax-title>{{ '@general:state-message.no-results.title' | translate | async }}</ax-title>\n      </div>\n    </ng-template>\n\n    <!-- Custom Loading Template -->\n    <ng-template #loadingTemplate>\n      <div class=\"ax-flex ax-items-center ax-justify-center ax-py-4\">\n        <div class=\"ax-flex ax-items-center ax-gap-2\">\n          <div\n            class=\"fa-spin ax-h-4 ax-w-4 ax-rounded-full ax-border-2 ax-border-primary ax-border-t-transparent\"\n          ></div>\n          <span class=\"ax-text-sm ax-text-gray-500\">{{\n            '@general:state-message.searching.title' | translate | async\n          }}</span>\n        </div>\n      </div>\n    </ng-template>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    CommonModule,\n    AXTagBoxModule,\n    AXAutocompleteModule,\n    FormsModule,\n    AXFormModule,\n    AXDecoratorModule,\n    AXValidationModule,\n    AXTranslationModule,\n  ],\n})\nexport class AXPTagEditorWidgetEditComponent extends AXPValueWidgetComponent<string[]> {\n  //#region ----   Dependencies   ----\n\n  private tagService = inject(AXPTagService);\n\n  //#endregion\n\n  //#region ----   State   ----\n\n  protected availableTags = signal<AXPTag[]>([]);\n\n  //#endregion\n\n  //#region ----   Computed Properties   ----\n\n  protected hasClearButton = computed<boolean>(() => this.options()['hasClearButton'] as boolean);\n  protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n  protected readonly = computed<boolean>(() => this.options()['readonly'] as boolean);\n  protected placeholder = computed<string>(() => this.options()['placeholder'] as string);\n  protected allowDuplicate = computed<boolean>(() => this.options()['allowDuplicate'] as boolean);\n\n  protected internalValue = computed<string[]>(() => {\n    const value = this.getValue();\n    return Array.isArray(value) ? value : [];\n  });\n\n  //#endregion\n\n  //#region ----   Data Source   ----\n\n  protected tagDataSource: AXDataSource<AXPTag> = new AXDataSource({\n    load: async (e: AXDataSourceQuery) => {\n      // Extract search text from filter if available\n      const searchText = this.extractSearchTextFromFilter(e.filter) || '';\n      const tags = await this.tagService.getTags({\n        search: searchText,\n      });\n      this.availableTags.set(tags);\n      return {\n        items: tags,\n        total: tags.length,\n      };\n    },\n    pageSize: 50,\n  });\n\n  //#endregion\n\n  //#region ----   Lifecycle   ----\n\n  override ngOnInit(): void {\n    super.ngOnInit();\n    this.loadTags();\n  }\n\n  //#endregion\n\n  //#region ----   Event Handlers   ----\n\n  protected handleValueChange(e: AXValueChangedEvent<string[]>) {\n    if (e.isUserInteraction) {\n      this.setValue(e.value);\n    }\n  }\n\n  //#endregion\n\n  //#region ----   Private Methods   ----\n\n  private async loadTags(): Promise<void> {\n    try {\n      const tags = await this.tagService.getTags();\n      this.availableTags.set(tags);\n    } catch (error) {\n      console.error('Error loading tags:', error);\n    }\n  }\n\n  private extractSearchTextFromFilter(filter: any): string {\n    if (!filter) return '';\n\n    // Handle simple filter with contains operator\n    if (filter.operator?.type === 'contains' && filter.value) {\n      return filter.value;\n    }\n\n    // Handle complex filter with nested filters\n    if (filter.filters && Array.isArray(filter.filters)) {\n      for (const subFilter of filter.filters) {\n        const result = this.extractSearchTextFromFilter(subFilter);\n        if (result) return result;\n      }\n    }\n\n    return '';\n  }\n\n  //#endregion\n\n  //#region ----   Host Bindings   ----\n\n  @HostBinding('class')\n  private get __class(): string {\n    const cls: any = {};\n    cls[`ax-block`] = true;\n    cls[`ax-flex-1`] = true;\n    return cls;\n  }\n\n  //#endregion\n}\n\n//#endregion\n","import { AXChipsModule } from '@acorex/components/chips';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\n//#region ----   Component   ----\n\n@Component({\n    selector: 'axp-tag-editor-widget-view',\n    template: `\n    <div class=\"ax-flex ax-flex-wrap ax-gap-2\">\n      @if (internalValue().length > 0) {\n        @for (tag of internalValue(); track $index) {\n          <ax-chips [text]=\"tag\"></ax-chips>\n        }\n      } @else {\n        <span class=\"ax-text-muted\">---</span>\n      }\n    </div>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [AXChipsModule],\n})\nexport class AXPTagEditorWidgetViewComponent extends AXPValueWidgetComponent<string[]> {\n\n    //#region ----   Computed Properties   ----\n\n    protected internalValue = computed<string[]>(() => {\n        const value = this.getValue();\n        return Array.isArray(value) ? value : [];\n    });\n\n    //#endregion\n}\n\n//#endregion\n\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_CHOICE } from '@acorex/platform/layout/widget-core';\nimport {\n    AXP_DATA_PATH_PROPERTY,\n    AXP_DISABLED_PROPERTY,\n    AXP_HAS_CLEAR_BUTTON_PROPERTY,\n    AXP_PLACEHOLDER_PROPERTY,\n    AXP_READONLY_PROPERTY,\n    plainTextDefaultProperty,\n} from '../../../properties';\nimport { AXP_NAME_PROPERTY } from '../../../properties/general.props';\nimport { AXP_REQUIRED_VALIDATION_PROPERTY } from '../../../properties/validation.props';\n\nexport const AXPTagEditorWidget: AXPWidgetConfig = {\n    name: 'tag-editor',\n    title: '@platform-layout-widgets:widgets.tag-editor.title',\n    icon: 'fa-light fa-tags',\n    description: '@platform-layout-widgets:widgets.tag-editor.description',\n    categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_CHOICE,\n    groups: [AXPWidgetGroupEnum.FormElement],\n    type: 'editor',\n    defaultFilterWidgetName: 'string-filter',\n    properties: [\n        AXP_NAME_PROPERTY,\n        AXP_DATA_PATH_PROPERTY,\n        AXP_DISABLED_PROPERTY,\n        AXP_READONLY_PROPERTY,\n        AXP_PLACEHOLDER_PROPERTY,\n        AXP_HAS_CLEAR_BUTTON_PROPERTY,\n        plainTextDefaultProperty(),\n        //\n        AXP_REQUIRED_VALIDATION_PROPERTY,\n    ],\n    components: {\n        view: {\n            component: () => import('./tag-editor-widget-view.component').then((c) => c.AXPTagEditorWidgetViewComponent),\n        },\n        edit: {\n            component: () => import('./tag-editor-widget-edit.component').then((c) => c.AXPTagEditorWidgetEditComponent),\n        },\n        column: {\n            component: () => import('./tag-editor-widget-column.component').then((c) => c.AXPTagEditorWidgetColumnComponent),\n        },\n        designer: {\n            component: () => import('./tag-editor-widget-edit.component').then((c) => c.AXPTagEditorWidgetEditComponent),\n        },\n    },\n};\n\nexport interface AXPTagEditorWidgetDesignerOptions {\n    hasClearButton?: boolean;\n    disabled?: boolean;\n    readonly?: boolean;\n    placeholder?: string;\n    allowDuplicate?: boolean;\n}\n\nexport interface AXPTagEditorWidgetViewOptions { }\n\nexport interface AXPTagEditorWidgetEditOptions {\n    hasClearButton?: boolean;\n    disabled?: boolean;\n    readonly?: boolean;\n    placeholder?: string;\n    allowDuplicate?: boolean;\n}\n\nexport interface AXPTagEditorWidgetColumnOptions { }\n\nexport interface AXPTagEditorWidgetPrintOptions { }\n\nexport interface AXPTagEditorWidgetOptions {\n    designer: AXPTagEditorWidgetDesignerOptions;\n    view: AXPTagEditorWidgetViewOptions;\n    edit: AXPTagEditorWidgetEditOptions;\n    print: AXPTagEditorWidgetPrintOptions;\n    column: AXPTagEditorWidgetColumnOptions;\n}\n\n","import { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, inject, OnInit, signal } from '@angular/core';\n\n@Component({\n  selector: 'axp-template-box-widget-column',\n  template: ` <div class=\"ax-truncate\">{{ displayText() }}</div> `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXTranslationModule],\n})\nexport class AXPTemplateBoxWidgetColumnComponent extends AXPValueWidgetComponent<any> implements OnInit {\n  private translationService = inject(AXTranslationService);\n  protected displayText = signal<string>('');\n\n  override ngOnInit() {\n    const value = this.getValue() || {};\n    const currentLang = this.translationService.getActiveLang();\n\n    // Display text in current language or fall back to default language\n    if (value[currentLang]) {\n      this.displayText.set(value[currentLang]);\n    } else {\n      const defaultLang = this.translationService.getDefaultLang();\n      this.displayText.set(value[defaultLang] || '');\n    }\n  }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXTextAreaModule } from '@acorex/components/text-area';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPLanguage } from '@acorex/platform/common';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, HostBinding, inject, OnInit, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\ninterface TemplateVariable {\n  name: string;\n  required: boolean;\n}\n\n@Component({\n  selector: 'axp-template-box-widget-edit',\n  template: `\n    <div class=\"ax-flex ax-flex-col ax-gap-2 ax-w-full\">\n      <ax-text-area\n        [disabled]=\"disabled()\"\n        [ngModel]=\"currentContent()\"\n        (ngModelChange)=\"handleValueChange($event)\"\n        [placeholder]=\"placeholder()\"\n        class=\"ax-w-full ax-flex-1 ax-min-h-40\"\n      >\n        @if (clearButton()) {\n          <ax-clear-button></ax-clear-button>\n        }\n        @for (validation of validationRules(); track $index) {\n          <ax-validation-rule\n            [rule]=\"validation.rule\"\n            [message]=\"validation.options?.message\"\n            [options]=\"validation.options\"\n          ></ax-validation-rule>\n        }\n      </ax-text-area>\n\n      <div class=\"ax-flex ax-justify-between ax-items-center ax-mt-2\">\n        @if (templateVariables().length > 0) {\n          <div class=\"ax-flex ax-flex-wrap ax-gap-2\">\n            @for (variable of templateVariables(); track variable) {\n              <div class=\"ax-px-2 ax-py-1 ax-bg-gray-100 ax-rounded-md ax-text-sm\">\n                {{ variable.name }}\n                @if (variable.required) {\n                  <span class=\"ax-text-red-500\">*</span>\n                }\n              </div>\n            }\n          </div>\n        }\n\n        <div class=\"ax-flex ax-items-center ax-gap-2\">\n          <span class=\"ax-text-sm ax-text-gray-500\">{{ '@general:terms.common.language' | translate | async }}:</span>\n          <div>\n            <ax-button color=\"light\" class=\"ax-px-3 ax-py-1\">\n              {{ selectedLanguageTitle() }}\n              <ax-suffix>\n                <ax-icon icon=\"fa-regular fa-chevron-down\"></ax-icon>\n              </ax-suffix>\n            </ax-button>\n            <ax-dropdown-panel>\n              <ax-button-item-list>\n                @for (lang of availableLanguages(); track lang.code) {\n                  <ax-button-item\n                    [text]=\"lang.title\"\n                    [selected]=\"selectedLanguage() === lang.code\"\n                    (onClick)=\"handleLanguageChange(lang.code)\"\n                  >\n                    <ax-prefix>\n                      <ax-icon icon=\"fa-solid fa-language\"></ax-icon>\n                    </ax-prefix>\n                  </ax-button-item>\n                }\n              </ax-button-item-list>\n            </ax-dropdown-panel>\n          </div>\n        </div>\n      </div>\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    CommonModule,\n    AXDecoratorModule,\n    FormsModule,\n    AXFormModule,\n    AXTextAreaModule,\n    AXDropdownModule,\n    AXButtonModule,\n    AXTranslationModule,\n    AXDropdownModule,\n  ],\n  inputs: ['disabled', 'clearButton'],\n})\nexport class AXPTemplateBoxWidgetEditComponent extends AXPValueWidgetComponent<any> implements OnInit {\n  private translationService = inject(AXTranslationService);\n\n  protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n  protected clearButton = computed<boolean>(() => (this.options()['clearButton'] as boolean) ?? true);\n  protected placeholder = computed<string>(() => this.options()['placeholder'] as string);\n\n  protected availableLanguages = signal<AXPLanguage[]>([]);\n  protected selectedLanguage = signal<string>('');\n  protected selectedLanguageTitle = computed(() => {\n    const lang = this.availableLanguages().find((l) => l.code === this.selectedLanguage());\n    return lang ? lang.title : '';\n  });\n\n  protected templateContent = signal<Record<string, string>>({});\n  protected templateVariables = signal<TemplateVariable[]>([]);\n\n  protected currentContent = computed(() => {\n    const content = this.templateContent();\n    const langCode = this.selectedLanguage();\n    return content[langCode] || '';\n  });\n\n  override async ngOnInit() {\n    //const languages = await this.regionalService.getAvailableLanguages();\n    this.availableLanguages.set([]);\n\n    // Initialize with default language\n    const defaultLang = this.translationService.getDefaultLang();\n    this.selectedLanguage.set(defaultLang);\n\n    // Initialize template content from value\n    const value = this.getValue() || {};\n    this.templateContent.set(typeof value === 'object' ? value : { [defaultLang]: value });\n\n    // Extract variables from content\n    if (value[defaultLang]) {\n      this.extractVariables(value[defaultLang]);\n    }\n  }\n\n  protected handleLanguageChange(langCode: string) {\n    // Save current content before changing language\n    const currentLang = this.selectedLanguage();\n    const currentText = this.currentContent();\n    const content = { ...this.templateContent() };\n    content[currentLang] = currentText;\n    this.templateContent.set(content);\n\n    // Change language\n    this.selectedLanguage.set(langCode);\n\n    // Set value to persist all languages\n    this.setValue(content);\n  }\n\n  protected handleValueChange(text: string) {\n    // Update content for current language\n    const currentLang = this.selectedLanguage();\n    const content = { ...this.templateContent() };\n    content[currentLang] = text;\n    this.templateContent.set(content);\n\n    // Extract variables\n    this.extractVariables(text);\n\n    // Update value\n    this.setValue(content);\n  }\n\n  private extractVariables(text: string) {\n    const regex = /\\{\\{([^}]+)\\}\\}/g;\n    const variables: TemplateVariable[] = [];\n    let match;\n\n    while ((match = regex.exec(text)) !== null) {\n      const name = match[1].trim();\n      // Consider variables with '_required' suffix as required\n      const isRequired = name.endsWith('_required');\n      const cleanName = isRequired ? name.replace('_required', '') : name;\n\n      if (!variables.some((v) => v.name === cleanName)) {\n        variables.push({\n          name: cleanName,\n          required: isRequired,\n        });\n      }\n    }\n\n    this.templateVariables.set(variables);\n  }\n\n  @HostBinding('class')\n  private get __class(): string {\n    return 'ax-block ax-flex-1';\n  }\n}\n","import { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, inject, OnInit, signal } from '@angular/core';\n\n@Component({\n  selector: 'axp-template-box-widget-print',\n  template: ` <div class=\"ax-whitespace-pre-wrap\">{{ displayText() }}</div> `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXTranslationModule],\n})\nexport class AXPTemplateBoxWidgetPrintComponent extends AXPValueWidgetComponent<any> implements OnInit {\n  private translationService = inject(AXTranslationService);\n  protected displayText = signal<string>('');\n\n  override ngOnInit() {\n    const value = this.getValue() || {};\n    const currentLang = this.translationService.getActiveLang();\n\n    // Display text in current language or fall back to default language\n    if (value[currentLang]) {\n      this.displayText.set(value[currentLang]);\n    } else {\n      const defaultLang = this.translationService.getDefaultLang();\n      this.displayText.set(value[defaultLang] || '');\n    }\n  }\n}\n","import { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, HostBinding, inject, OnInit, signal } from '@angular/core';\n\n@Component({\n  selector: 'axp-template-box-widget-view',\n  template: ` <div class=\"ax-p-2 ax-whitespace-pre-wrap\">{{ displayText() }}</div> `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXTranslationModule],\n})\nexport class AXPTemplateBoxWidgetViewComponent extends AXPValueWidgetComponent<any> implements OnInit {\n  private translationService = inject(AXTranslationService);\n  protected displayText = signal<string>('');\n\n  override ngOnInit() {\n    const value = this.getValue() || {};\n    const currentLang = this.translationService.getActiveLang();\n\n    // Display text in current language or fall back to default language\n    if (value[currentLang]) {\n      this.displayText.set(value[currentLang]);\n    } else {\n      const defaultLang = this.translationService.getDefaultLang();\n      this.displayText.set(value[defaultLang] || '');\n    }\n  }\n\n  @HostBinding('class')\n  private get __class(): string {\n    return 'ax-block ax-flex-1';\n  }\n}\n","import { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_TEXT_INPUTS } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_DATA_PATH_PROPERTY,\n  AXP_DISABLED_PROPERTY,\n  AXP_HAS_CLEAR_BUTTON_PROPERTY,\n  AXP_PLACEHOLDER_PROPERTY,\n  AXP_REQUIRED_VALIDATION_PROPERTY,\n} from '../../../properties';\nimport { AXP_NAME_PROPERTY } from '../../../properties/general.props';\n\nexport const AXPTemplateBoxWidget: AXPWidgetConfig = {\n  name: 'template-box-editor',\n  title: '@platform-layout-widgets:widgets.template-box-editor.title',\n  icon: 'fa-light fa-file-alt',\n  description: '@platform-layout-widgets:widgets.template-box-editor.description',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_TEXT_INPUTS,\n  type: 'editor',\n  defaultFilterWidgetName: 'string-filter',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    AXP_DISABLED_PROPERTY,\n    AXP_PLACEHOLDER_PROPERTY,\n    AXP_HAS_CLEAR_BUTTON_PROPERTY,\n    AXP_REQUIRED_VALIDATION_PROPERTY,\n  ],\n  components: {\n    view: {\n      component: () => import('./template-box-widget-view.component').then((c) => c.AXPTemplateBoxWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./template-box-widget-edit.component').then((c) => c.AXPTemplateBoxWidgetEditComponent),\n    },\n    column: {\n      component: () =>\n        import('./template-box-widget-column.component').then((c) => c.AXPTemplateBoxWidgetColumnComponent),\n    },\n    print: {\n      component: () =>\n        import('./template-box-widget-print.component').then((c) => c.AXPTemplateBoxWidgetPrintComponent),\n    },\n    designer: {\n      component: () => import('./template-box-widget-edit.component').then((c) => c.AXPTemplateBoxWidgetEditComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  export interface AXPWidgetTypesMap {\n    templateEditor: 'template-box-editor';\n  }\n}\n\nexport interface AXPTemplateBoxWidgetDesignerOptions {\n  disabled?: boolean;\n  clearButton?: boolean;\n  placeholder?: string;\n}\n\nexport interface AXPTemplateBoxWidgetViewOptions {}\n\nexport interface AXPTemplateBoxWidgetEditOptions {\n  disabled?: boolean;\n  clearButton?: boolean;\n  placeholder?: string;\n}\n\nexport interface AXPTemplateBoxWidgetColumnOptions {}\n\nexport interface AXPTemplateBoxWidgetPrintOptions {}\n\nexport interface AXPTemplateBoxWidgetOptions {\n  designer: AXPTemplateBoxWidgetDesignerOptions;\n  view: AXPTemplateBoxWidgetViewOptions;\n  edit: AXPTemplateBoxWidgetEditOptions;\n  print: AXPTemplateBoxWidgetPrintOptions;\n  column: AXPTemplateBoxWidgetColumnOptions;\n}\n","import { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n  selector: 'axp-text-box-widget-column',\n  template: `\n    @let text = rawValue | translate | async;\n    @if (text) {\n      {{ text }}\n    } @else {\n      <span class=\"ax-text-muted\">---</span>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXTranslationModule, AsyncPipe],\n  inputs: ['rawValue', 'rowData'],\n})\nexport class AXPTextBoxWidgetColumnComponent extends AXPColumnWidgetComponent<\n  string | Record<string, string> | undefined\n> {}\n","\nimport { type AXPWidgetNode, buildLocaleTextMapValue, shouldUseLocaleMapShape } from '@acorex/platform/contracts';\nimport { AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { AXMaskTokens } from '@acorex/cdk/input-mask';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, HostBinding, inject, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { AXPSelectLanguagePopup } from '../../../shared/multi-language-component/popup';\n\n@Component({\n  selector: 'axp-text-box-widget-edit',\n  template: `\n    <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n      <ax-text-box\n        class=\"ax-col-span-12\"\n        [ngModel]=\"getCurrentText()\"\n        [type]=\"'text'\"\n        (onValueChanged)=\"onTextChanged($event)\"\n        [disabled]=\"disabled()\"\n        [readonly]=\"readonly()\"\n        [maskPattern]=\"maskPattern()\"\n        [customTokens]=\"customTokens()\"\n        [placeholder]=\"placeholder() | translate | async\"\n      >\n        @for (validation of validationRules(); track $index) {\n          <ax-validation-rule\n            [rule]=\"validation.rule\"\n            [message]=\"validation.options?.message\"\n            [options]=\"validation.options\"\n          ></ax-validation-rule>\n        }\n        @if (hasClearButton()) {\n          <ax-clear-button></ax-clear-button>\n        }\n        @if (effectiveMultiLanguage()) {\n          <ax-suffix>\n            <ax-button (onClick)=\"openMultiLanguagePopup()\" [disabled]=\"disabled()\" look=\"blank\">\n              <ax-prefix>\n                <ax-icon class=\"fa-regular fa-globe\"></ax-icon>\n              </ax-prefix>\n            </ax-button>\n          </ax-suffix>\n        }\n      </ax-text-box>\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    AXTextBoxModule,\n    FormsModule,\n    AXFormModule,\n    AXDecoratorModule,\n    AXValidationModule,\n    AXButtonModule,\n    AXTranslationModule,\n    AsyncPipe,\n  ],\n})\nexport class AXPTextBoxWidgetEditComponent extends AXPValueWidgetComponent<\n  string | Record<string, string> | undefined\n> {\n  private popupService = inject(AXPopupService);\n  private translationService = inject(AXTranslationService);\n  protected effectiveMultiLanguage = computed(() =>\n    shouldUseLocaleMapShape(\n      !!this.options()['multiLanguage'],\n      this.getValue(),\n      this.fullPath() ? this.contextService.getSavedValue(this.fullPath()!) : undefined,\n    ),\n  );\n  protected hasClearButton = computed<boolean>(() => this.options()['hasClearButton'] as boolean);\n  protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n  protected readonly = computed<boolean>(() => this.options()['readonly'] as boolean);\n  protected placeholder = computed<string>(() => this.options()['placeholder'] as string);\n  protected maskPattern = computed<string>(() => this.options()['maskPattern'] as string);\n  protected customTokens = computed<AXMaskTokens>(() => this.options()['customTokens'] as AXMaskTokens);\n  currentLanguage = signal(this.translationService.getActiveLang());\n\n  override ngOnInit(): void {\n    super.ngOnInit();\n    this.translationService.langChanges$.subscribe((i) => {\n      this.currentLanguage.set(i);\n    });\n  }\n\n  protected onTextChanged(e: AXValueChangedEvent<string>) {\n    if (!e.isUserInteraction) {\n      return;\n    }\n\n    const path = this.fullPath();\n    const current = this.getValue();\n    const saved = path ? this.contextService.getSavedValue(path) : undefined;\n\n    const nextValue = this.effectiveMultiLanguage()\n      ? buildLocaleTextMapValue(current, saved, this.currentLanguage(), e.value ?? '')\n      : (e.value ?? '');\n\n    this.setValue(nextValue);\n  }\n\n  protected getCurrentText(): string {\n    return this.translationService.resolve(this.getValue(), this.currentLanguage());\n  }\n\n  protected async openMultiLanguagePopup() {\n    const node: AXPWidgetNode = {\n      type: 'text-editor',\n      path: 'value',\n      options: {\n        ...this.options(),\n        multiLanguage: false,\n      },\n    };\n    const res = await this.popupService.open(AXPSelectLanguagePopup, {\n      title: 'Multi-language Text',\n      size: 'md',\n      data: {\n        values: this.translationService.toLocaleMap(this.getValue(), this.currentLanguage()),\n        currentLanguage: this.currentLanguage(),\n        node: node,\n        mode: 'edit',\n      },\n    });\n    if (res?.data) {\n      this.setValue({ ...(res.data as Record<string, string>) });\n    }\n  }\n\n  @HostBinding('class')\n  private get __class(): string {\n    const cls: any = {};\n    cls[`ax-block`] = true;\n    cls[`ax-flex-1`] = true;\n    return cls;\n  }\n}\n","import { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n  selector: 'axp-text-box-widget-view',\n\n  template: `\n    <div class=\"ax-text-muted\">\n      @let text = getValue() | translate | async;\n\n      @if (text) {\n        <p>{{ text }}</p>\n      } @else {\n        <p class=\"ax-text-muted\">---</p>\n      }\n    </div>\n  `,\n\n  changeDetection: ChangeDetectionStrategy.OnPush,\n\n  imports: [AXTranslationModule, AsyncPipe],\n})\nexport class AXPTextBoxWidgetViewComponent extends AXPValueWidgetComponent<string | Record<string, string>> {}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_TEXT_INPUTS } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_ALLOW_MULTIPLE_PROPERTY,\n  AXP_DATA_PATH_PROPERTY,\n  AXP_DISABLED_PROPERTY,\n  AXP_HAS_CLEAR_BUTTON_PROPERTY,\n  AXP_PLACEHOLDER_PROPERTY,\n  AXP_READONLY_PROPERTY,\n  AXP_TRIGGERS_PROPERTY,\n  plainTextDefaultProperty,\n} from '../../../properties';\nimport { AXP_NAME_PROPERTY } from '../../../properties/general.props';\nimport {\n  AXP_MAX_LENGTH_VALIDATION_PROPERTY,\n  AXP_MIN_LENGTH_VALIDATION_PROPERTY,\n  AXP_REGULAR_EXPRESSION_VALIDATION_PROPERTY,\n  AXP_REQUIRED_VALIDATION_PROPERTY,\n} from '../../../properties/validation.props';\n\nexport const AXPTextBoxWidget: AXPWidgetConfig = {\n  name: 'text-editor',\n  title: '@platform-layout-widgets:widgets.text-editor.title',\n  icon: 'fa-light fa-input-text',\n  description: '@platform-layout-widgets:widgets.text-editor.description',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_TEXT_INPUTS,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  type: 'editor',\n  defaultFilterWidgetName: 'string-filter',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    AXP_ALLOW_MULTIPLE_PROPERTY,\n    AXP_DISABLED_PROPERTY,\n    AXP_READONLY_PROPERTY,\n    AXP_PLACEHOLDER_PROPERTY,\n    AXP_HAS_CLEAR_BUTTON_PROPERTY,\n    AXP_TRIGGERS_PROPERTY,\n    plainTextDefaultProperty(),\n    //\n    AXP_REQUIRED_VALIDATION_PROPERTY,\n    AXP_MIN_LENGTH_VALIDATION_PROPERTY,\n    AXP_REGULAR_EXPRESSION_VALIDATION_PROPERTY,\n    AXP_MAX_LENGTH_VALIDATION_PROPERTY,\n  ],\n  components: {\n    view: {\n      component: () => import('./text-box-widget-view.component').then((c) => c.AXPTextBoxWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./text-box-widget-edit.component').then((c) => c.AXPTextBoxWidgetEditComponent),\n    },\n    column: {\n      component: () => import('./text-box-widget-column.component').then((c) => c.AXPTextBoxWidgetColumnComponent),\n    },\n    designer: {\n      component: () => import('./text-box-widget-edit.component').then((c) => c.AXPTextBoxWidgetEditComponent),\n    },\n  },\n};\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  export interface AXPWidgetTypesMap {\n    text: 'text-editor';\n  }\n}\n\nexport interface AXPTextBoxWidgetDesignerOptions {\n  multiple?: boolean;\n  multiLanguage?: boolean;\n  hasClearButton?: boolean;\n  disabled?: boolean;\n  readonly?: boolean;\n  placeholder?: string;\n}\n\nexport interface AXPTextBoxWidgetViewOptions {\n  multiple?: boolean;\n}\n\nexport interface AXPTextBoxWidgetEditOptions {\n  multiple?: boolean;\n  multiLanguage?: boolean;\n  hasClearButton?: boolean;\n  disabled?: boolean;\n  readonly?: boolean;\n  placeholder?: string;\n}\n\nexport interface AXPTextBoxWidgetColumnOptions { }\n\nexport interface AXPTextBoxWidgetPrintOptions { }\n\nexport interface AXPTextBoxWidgetOptions {\n  designer: AXPTextBoxWidgetDesignerOptions;\n  view: AXPTextBoxWidgetViewOptions;\n  edit: AXPTextBoxWidgetEditOptions;\n  print: AXPTextBoxWidgetPrintOptions;\n  column: AXPTextBoxWidgetColumnOptions;\n}\n","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\n\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { resolveStatusVisual, AXPStatusVisual } from '../../advance/status/status-widget.utils';\n\n@Component({\n  selector: 'axp-toggle-widget-column',\n  template: `\n    @if (value() == null || value() == undefined) {\n      <!-- Null/Undefined state -->\n      @if (value() != null && value() != undefined) {\n        <span>{{ nullText | translate | async }}</span>\n      } @else {\n        <span>---</span>\n      }\n    } @else {\n      <!-- True state -->\n      @if (value() == true) {\n        @if (trulyText) {\n          @let visual = getVisual(true);\n          <span\n            class=\"ax-inline-flex ax-items-center ax-gap-1.5 ax-rounded-md ax-px-2 ax-py-0.5 ax-text-xs ax-font-medium\"\n            [ngClass]=\"visual.chipClass\"\n            [ngStyle]=\"visual.chipStyle\"\n          >\n            {{ (trulyText | translate | async)! }}\n          </span>\n        } @else {\n          @if (negative) {\n            <ax-icon class=\"fa-solid fa-xmark ax-text-danger-500\"></ax-icon>\n          } @else {\n            <ax-icon class=\"fa-solid fa-check ax-text-success\"></ax-icon>\n          }\n        }\n      }\n      <!-- False state -->\n      @else {\n        @if (falsyText) {\n          @let visual = getVisual(false);\n          <span\n            class=\"ax-inline-flex ax-items-center ax-gap-1.5 ax-rounded-md ax-px-2 ax-py-0.5 ax-text-xs ax-font-medium\"\n            [ngClass]=\"visual.chipClass\"\n            [ngStyle]=\"visual.chipStyle\"\n          >\n            {{ (falsyText | translate | async)! }}\n          </span>\n        } @else {\n          @if (negative) {\n            <ax-icon class=\"fa-solid fa-check ax-text-success\"></ax-icon>\n          } @else {\n            <ax-icon class=\"fa-solid fa-xmark ax-text-danger-500\"></ax-icon>\n          }\n        }\n      }\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [CommonModule, AXDecoratorModule, AXTranslationModule],\n  inputs: ['rawValue', 'rowData'],\n})\nexport class AXPToggleWidgetColumnComponent extends AXPColumnWidgetComponent<boolean | null | undefined> {\n  //#region ----   Component Properties   ----\n\n  protected negative = this.options['negative'] as boolean;\n  protected trulyText = this.options['trulyText'] as string;\n  protected falsyText = this.options['falsyText'] as string;\n\n  protected getVisual(isTrue: boolean): AXPStatusVisual {\n    const semantic = isTrue\n      ? this.negative\n        ? 'danger'\n        : 'success'\n      : this.negative\n        ? 'success'\n        : 'danger';\n    return resolveStatusVisual(semantic);\n  }\n\n  //#endregion\n}\n","import { AXStyleColorType } from '@acorex/cdk/common';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXSwitchModule } from '@acorex/components/switch';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, HostBinding } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n  selector: 'axp-toggle-widget-edit',\n  template: `\n    <div class=\"ax-flex ax-items-center ax-gap-2\">\n      <ax-switch\n        [ngModel]=\"this.getValue()\"\n        [disabled]=\"disabled()\"\n        [readonly]=\"readonly()\"\n        [color]=\"color()\"\n        (onValueChanged)=\"handleValueChanged($event)\"\n      >\n      </ax-switch>\n      @if (label()) {\n        <ax-label [textContent]=\"label() | translate | async\"></ax-label>\n      }\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [FormsModule, AXFormModule, AXSwitchModule, AXValidationModule, AXLabelModule, AXTranslationModule, AsyncPipe],\n})\nexport class AXPToggleWidgetEditComponent extends AXPValueWidgetComponent<any> {\n  protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n  protected readonly = computed<boolean>(() => this.options()['readonly'] as boolean);\n  protected label = computed<string>(() => this.options()['label'] as string);\n  protected color = computed<AXStyleColorType>(() => this.options()['color']?.id ?? 'primary');\n\n  @HostBinding('class')\n  private get __class(): string {\n    const cls: any = {};\n    //\n    cls['ax-inline-block'] = true;\n    return cls;\n  }\n}\n","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { resolveStatusVisual } from '../../advance/status/status-widget.utils';\n\n@Component({\n  selector: 'axp-toggle-widget-view',\n  template: ` @if (getValue() === null || getValue() === undefined) {\n      @if (nullText()) {\n        <span>{{ nullText() | translate | async }}</span>\n      } @else {\n        <span>---</span>\n      }\n    } @else if (getValue()) {\n      @if (trulyText()) {\n        @let visual = trueVisual();\n        <span\n          class=\"ax-inline-flex ax-items-center ax-gap-1.5 ax-rounded-md ax-px-2 ax-py-0.5 ax-text-xs ax-font-medium\"\n          [ngClass]=\"visual.chipClass\"\n          [ngStyle]=\"visual.chipStyle\"\n        >\n          {{ (trulyText() | translate | async)! }}\n        </span>\n      } @else {\n        @if (negative()) {\n          <ax-icon class=\"fa-solid fa-xmark  ax-text-danger-500\"> </ax-icon>\n        } @else {\n          <ax-icon class=\"fa-solid fa-check ax-text-success\"> </ax-icon>\n        }\n      }\n    } @else {\n      @if (falsyText()) {\n        @let visual = falseVisual();\n        <span\n          class=\"ax-inline-flex ax-items-center ax-gap-1.5 ax-rounded-md ax-px-2 ax-py-0.5 ax-text-xs ax-font-medium\"\n          [ngClass]=\"visual.chipClass\"\n          [ngStyle]=\"visual.chipStyle\"\n        >\n          {{ (falsyText() | translate | async)! }}\n        </span>\n      } @else {\n        @if (negative()) {\n          <ax-icon class=\"fa-solid fa-check ax-text-success\"> </ax-icon>\n        } @else {\n          <ax-icon class=\"fa-solid fa-xmark  ax-text-danger-500\"> </ax-icon>\n        }\n      }\n    }`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [CommonModule, AXDecoratorModule, AXTranslationModule],\n})\nexport class AXPToggleWidgetViewComponent extends AXPValueWidgetComponent<boolean | null | undefined> {\n  protected negative = computed<boolean>(() => this.options()['negative']);\n  protected falsyText = computed<string>(() => this.options()['falsyText']);\n  protected trulyText = computed<string>(() => this.options()['trulyText']);\n  protected nullText = computed<string>(() => this.options()['nullText']);\n\n  protected trueVisual = computed(() =>\n    resolveStatusVisual(this.negative() ? 'danger' : 'success'),\n  );\n  protected falseVisual = computed(() =>\n    resolveStatusVisual(this.negative() ? 'success' : 'danger'),\n  );\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport {\n AXStyleColorType } from '@acorex/cdk/common';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_CHOICE } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_DATA_PATH_PROPERTY,\n  AXP_DISABLED_PROPERTY,\n  AXP_FALSY_TEXT_PROPERTY,\n  AXP_READONLY_PROPERTY,\n  AXP_STYLE_COLOR_PROPERTY,\n  AXP_TRIGGERS_PROPERTY,\n  AXP_TRULY_TEXT_PROPERTY,\n  booleanDefaultProperty,\n} from '../../../properties';\nimport { AXP_NAME_PROPERTY } from '../../../properties/general.props';\nexport const AXPToggleWidget: AXPWidgetConfig = {\n  name: 'toggle-editor',\n  title: '@platform-layout-widgets:widgets.toggle-editor.title',\n  description: '@platform-layout-widgets:widgets.toggle-editor.description',\n  icon: 'fa-light fa-toggle-on',\n  defaultFilterWidgetName: 'boolean-filter',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_CHOICE,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  type: 'editor',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    AXP_DISABLED_PROPERTY,\n    AXP_READONLY_PROPERTY,\n    AXP_STYLE_COLOR_PROPERTY,\n    AXP_FALSY_TEXT_PROPERTY,\n    AXP_TRULY_TEXT_PROPERTY,\n    AXP_TRIGGERS_PROPERTY,\n    booleanDefaultProperty(),\n  ],\n  components: {\n    view: {\n      component: () => import('./toggle-widget-view.component').then((c) => c.AXPToggleWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./toggle-widget-edit.component').then((c) => c.AXPToggleWidgetEditComponent),\n    },\n    column: {\n      component: () => import('./toggle-widget-column.component').then((c) => c.AXPToggleWidgetColumnComponent),\n    },\n    designer: {\n      component: () => import('./toggle-widget-edit.component').then((c) => c.AXPToggleWidgetEditComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    toggle: 'toggle-editor';\n  }\n}\n\nexport interface AXPToggleWidgetDesignerOptions {\n  disabled?: boolean;\n  readonly?: boolean;\n  label?: string;\n  color?: AXStyleColorType;\n}\n\nexport interface AXPToggleWidgetViewOptions {\n  negative?: boolean;\n  falsyText?: string;\n  trulyText?: string;\n  nullText?: string;\n}\n\nexport interface AXPToggleWidgetEditOptions {\n  disabled?: boolean;\n  readonly?: boolean;\n  label?: string;\n  color?: AXStyleColorType;\n}\n\nexport interface AXPToggleWidgetColumnOptions {\n  negative?: boolean;\n  trulyText?: string;\n  falsyText?: string;\n}\n\nexport interface AXPToggleWidgetPrintOptions { }\n\nexport interface AXPToggleWidgetOptions {\n  designer: AXPToggleWidgetDesignerOptions;\n  view: AXPToggleWidgetViewOptions;\n  edit: AXPToggleWidgetEditOptions;\n  print: AXPToggleWidgetPrintOptions;\n  column: AXPToggleWidgetColumnOptions;\n}\n","import { AXPFileStorageService } from '@acorex/platform/common';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { AXPFileListItem } from '@acorex/platform/contracts';\n\nimport { AXPLayoutBuilderService } from '@acorex/platform/layout/builder';\nimport { ChangeDetectionStrategy, Component, effect, inject, signal, untracked } from '@angular/core';\n\n@Component({\n  selector: 'axp-avatar-widget-column',\n  template: `\n    <div class=\"ax-flex ax-items-center ax-gap-2\">\n      @if (imageUrl()) {\n        <i class=\"fa-solid fa-user ax-text-base\"></i>\n      } @else {\n        <span>-</span>\n      }\n    </div>\n  `,\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['rawValue', 'rowData'],\n  host: {\n    '(mouseenter)': 'handleMouseEnter()',\n  },\n})\nexport class AXPAvatarWidgetColumnComponent extends AXPColumnWidgetComponent<AXPFileListItem | undefined> {\n  //#region ----   Services & Dependencies   ----\n  private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n  private readonly fileStorage = inject(AXPFileStorageService);\n\n  //#endregion\n\n  imageUrl = signal<string | null>(null);\n  private blobUrl = signal<string | null>(null);\n\n  constructor() {\n    super();\n    effect(async () => {\n      const value = (this as any).rawValue as AXPFileListItem | undefined;\n      await untracked(async () => {\n        try {\n          if (value?.source) {\n            const source = value.source;\n            switch (source.kind) {\n              case 'url':\n                this.cleanupBlobUrl();\n                this.imageUrl.set(source.value as string);\n                break;\n              case 'blob': {\n                this.cleanupBlobUrl();\n                const blob = source.value as Blob;\n                const next = URL.createObjectURL(blob);\n                this.blobUrl.set(next);\n                this.imageUrl.set(next);\n                break;\n              }\n              case 'fileId': {\n                const fileId = source.value as string;\n                const info = await this.fileStorage.getInfo(fileId);\n                this.cleanupBlobUrl();\n                this.imageUrl.set(info?.url ?? null);\n                break;\n              }\n              default:\n                this.cleanupBlobUrl();\n                this.imageUrl.set(null);\n                break;\n            }\n          } else {\n            this.cleanupBlobUrl();\n            this.imageUrl.set(null);\n          }\n        } catch {\n          this.cleanupBlobUrl();\n          this.imageUrl.set(null);\n        }\n      });\n    });\n  }\n\n  private lastOpenAt = 0;\n\n  async handleMouseEnter(): Promise<void> {\n    const url = this.imageUrl();\n    if (!url) {\n      return;\n    }\n    const now = Date.now();\n    if (now - this.lastOpenAt < 800) {\n      return;\n    }\n    this.lastOpenAt = now;\n    await this.openDialog(url);\n  }\n\n  //#region ----   Utility Methods   ----\n\n  private async openDialog(url: string): Promise<void> {\n    const ref = await this.layoutBuilder\n      .create()\n      .dialog((dialog) => {\n        dialog\n          .setTitle('Image')\n          .setSize('lg')\n          .content((layoutBuilder) => {\n            layoutBuilder.flex((flex) => {\n              flex.mode('view').formField('Preview', (field) => {\n                field.readonly(true).customWidget('image', {\n                  src: url,\n                  width: '100%',\n                  height: 'auto',\n                  objectFit: 'contain',\n                });\n              });\n            });\n          })\n          .setActions((actions) => {\n            actions.cancel('@general:actions.cancel.title');\n          });\n      })\n      .show();\n    ref.close();\n  }\n\n  //#endregion\n\n  //#region ----   Lifecycle Methods   ----\n\n  ngOnDestroy(): void {\n    this.cleanupBlobUrl();\n  }\n\n  //#endregion\n\n  //#region ----   Private Helpers   ----\n\n  private cleanupBlobUrl(): void {\n    const prev = this.blobUrl();\n    if (prev) {\n      URL.revokeObjectURL(prev);\n    }\n    this.blobUrl.set(null);\n  }\n\n  //#endregion\n}\n","import { AXPWidgetStatus } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { AXPFileStorageService } from '@acorex/platform/common';\nimport { AXPFileListItem } from '@acorex/platform/contracts';\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  effect,\n  inject,\n  signal,\n  untracked,\n  ViewEncapsulation,\n} from '@angular/core';\n@Component({\n  selector: 'axp-avatar-widget-designer',\n  template: `\n    <div class=\"axp-designer-preview\">\n      <div class=\"axp-preview-content\">\n        @if (isBusy()) {\n          <div class=\"axp-empty axp-state-loading\">\n            <i class=\"fa-solid fa-spinner-third fa-spin\"></i>\n          </div>\n        } @else if (!url()) {\n          <div class=\"axp-empty\">\n            <i class=\"fa-solid fa-user ax-text-3xl\"></i>\n          </div>\n        } @else {\n          <div class=\"axp-content\">\n            <div [style.backgroundImage]=\"url() ? 'url(' + url() + ')' : ''\"></div>\n          </div>\n        }\n      </div>\n    </div>\n  `,\n  styles: `\n    axp-avatar-widget-designer {\n      .axp-designer-preview {\n        @apply ax-p-4 ax-bg-lightest;\n        @apply ax-min-h-32 ax-flex ax-flex-col;\n      }\n\n      .axp-preview-content {\n        @apply ax-flex-1 ax-flex ax-flex-col ax-items-center ax-justify-center ax-gap-3;\n      }\n\n      .axp-empty {\n        @apply ax-border-2 ax-border-dashed ax-h-44 ax-w-44 ax-rounded-md;\n        @apply ax-bg-lightest;\n        @apply ax-flex ax-justify-center ax-items-center;\n\n        &.axp-state-loading {\n          --fa-animation-duration: 700ms;\n          i {\n            @apply ax-text-3xl;\n          }\n        }\n      }\n\n      .axp-content {\n        @apply ax-w-fit ax-border ax-rounded-md ax-overflow-hidden;\n        @apply ax-flex;\n\n        & > :first-child {\n          @apply ax-bg-center ax-bg-cover ax-rounded-md;\n          @apply ax-h-44 ax-w-44;\n        }\n      }\n    }\n  `,\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n})\nexport class AXPAvatarWidgetDesignerComponent extends AXPValueWidgetComponent<AXPFileListItem | undefined> {\n  private fileStorage = inject(AXPFileStorageService);\n\n  protected url = signal<string | null>(null);\n  private blobUrl = signal<string | null>(null);\n\n  #effect1 = effect(async () => {\n    this.getValue();\n    this.beginHydration();\n    try {\n      await untracked(async () => {\n        try {\n          const value = this.getValue();\n          if (value) {\n            const source = value.source;\n            if (source) {\n              switch (source.kind) {\n                case 'url':\n                  this.url.set(source.value as string);\n                  break;\n                case 'blob': {\n                  const prev = this.blobUrl();\n                  if (prev) {\n                    URL.revokeObjectURL(prev);\n                  }\n                  const blob = source.value as Blob;\n                  const next = URL.createObjectURL(blob);\n                  this.blobUrl.set(next);\n                  this.url.set(next);\n                  break;\n                }\n                case 'fileId': {\n                  const fileId = source.value as string;\n                  const info = await this.fileStorage.getInfo(fileId);\n                  this.url.set(info?.url ? (info.url as string) : null);\n                  break;\n                }\n                default:\n                  this.url.set(null);\n                  break;\n              }\n            } else {\n              this.url.set(null);\n            }\n          } else {\n            this.url.set(null);\n          }\n        } catch {\n          this.setStatus(AXPWidgetStatus.Error);\n        }\n      });\n    } finally {\n      this.endHydration();\n    }\n  });\n\n  ngOnDestroy(): void {\n    const prev = this.blobUrl();\n    if (prev) {\n      URL.revokeObjectURL(prev);\n    }\n    this.blobUrl.set(null);\n  }\n}\n","import { AXPWidgetStatus } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFileService } from '@acorex/core/file';\nimport { AXPFileStorageService } from '@acorex/platform/common';\nimport { AXPFileListItem } from '@acorex/platform/contracts';\n\nimport { AXPImageEditorService } from '@acorex/platform/layout/components';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  effect,\n  inject,\n  signal,\n  untracked,\n  ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n  selector: 'axp-avatar-widget-edit',\n  template: `\n    @if (isBusy()) {\n      <div class=\"axp-empty axp-state-loading\">\n        <i class=\"fa-solid fa-spinner-third fa-spin\"></i>\n      </div>\n    } @else if (!url()) {\n      <div class=\"axp-empty\" (click)=\"handleChange()\" [class.axp-state-error]=\"this.status() == 'error'\">\n        <i\n          class=\"fa-solid fa-camera ax-text-4xl ax-bg-gradient-to-t ax-from-primary-500 ax-to-primary-200 ax-text-transparent ax-bg-clip-text\"\n        ></i>\n      </div>\n    } @else {\n      <div class=\"axp-content\" [class.axp-state-error]=\"this.status() == 'error'\">\n        <div (click)=\"handleEdit()\">\n          <img [src]=\"url()\" />\n        </div>\n        <div>\n          <ax-button color=\"default\" class=\"ax-xs\" (click)=\"handleChange()\">\n            <ax-prefix>\n              <i class=\"fa-light fa-camera\"></i>\n            </ax-prefix>\n          </ax-button>\n          <ax-button color=\"danger\" class=\"ax-xs\" (click)=\"handleRemove()\">\n            <ax-prefix>\n              <i class=\"fa-light fa-trash-can\"></i>\n            </ax-prefix>\n          </ax-button>\n        </div>\n      </div>\n    }\n  `,\n  styles: `\n    axp-avatar-widget-edit {\n      .axp-empty {\n        @apply ax-border-2 ax-border-primary-surface ax-rounded-full ax-border-dashed hover:ax-bg-primary-50 ax-transition-all ax-duration-500 ax-size-28 ax-cursor-pointer;\n        @apply ax-flex ax-flex-col ax-justify-center ax-items-center ax-gap-2;\n        &.axp-state-error {\n          @apply ax-border-danger-surface;\n        }\n\n        &.axp-state-loading {\n          --fa-animation-duration: 700ms;\n          i {\n            @apply ax-text-3xl;\n          }\n        }\n      }\n\n      .axp-content {\n        @apply ax-flex ax-size-28 ax-rounded-full ax-overflow-hidden ax-relative;\n\n        & > :first-child {\n          @apply ax-bg-center ax-bg-cover ax-size-full ax-cursor-pointer;\n        }\n\n        & > :last-child {\n          @apply ax-hidden ax-transition-all ax-duration-500 ax-w-full ax-h-full ax-absolute ax-flex ax-items-center ax-justify-center ax-gap-2;\n        }\n\n        &:hover > :last-child {\n          @apply ax-flex ax-bg-black/30;\n        }\n      }\n    }\n  `,\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  imports: [AXButtonModule, AXDecoratorModule],\n})\nexport class AXPAvatarWidgetEditComponent extends AXPValueWidgetComponent<AXPFileListItem | undefined> {\n  private fileService = inject(AXFileService);\n  private fileStorage = inject(AXPFileStorageService);\n  private imageEditor = inject(AXPImageEditorService);\n\n  protected url = signal<string | null>(null);\n  protected isEmpty = computed(() => this.url() == null);\n\n  private blobUrl = signal<string | null>(null);\n\n  #effect1 = effect(async () => {\n    this.getValue();\n    this.beginHydration();\n    try {\n      await untracked(async () => {\n        try {\n          const data = this.getValue();\n          if (data) {\n            if (data?.source) {\n              switch (data.source.kind) {\n                case 'url':\n                  this.url.set(data.source.value as string);\n                  break;\n                case 'blob': {\n                  const blob = data.source.value as Blob;\n                  this.blobUrl.set(URL.createObjectURL(blob));\n                  this.url.set(this.blobUrl());\n                  break;\n                }\n                case 'fileId': {\n                  const fileId = data.source.value as string;\n                  const info = await this.fileStorage.getInfo(fileId);\n                  this.url.set(info?.url ? (info.url as string) : null);\n                  break;\n                }\n                default:\n                  this.url.set(null);\n                  break;\n              }\n            } else {\n              this.url.set(null);\n            }\n          } else {\n            this.url.set(null);\n          }\n        } catch {\n          this.setStatus(AXPWidgetStatus.Error);\n        }\n      });\n    } finally {\n      this.endHydration();\n    }\n  });\n\n  private async chooseFile() {\n    const files = await this.fileService.choose({ accept: 'image/png, image/jpeg' });\n    const file = files[0];\n    const previewUrl = URL.createObjectURL(file);\n    const initialBlob = await (await fetch(previewUrl)).blob();\n    const editedBlob = await this.imageEditor.open({\n      image: initialBlob,\n      title: '@general:actions.edit.title',\n      look: 'blank',\n    });\n    if (editedBlob) {\n      const f = new File([editedBlob], file.name || 'avatar.png', { type: editedBlob.type || 'image/png' });\n      this.url.set(URL.createObjectURL(f));\n      this.setValue({\n        name: f.name,\n        status: 'attached',\n        size: f.size,\n        source: { kind: 'blob', value: f },\n      } as AXPFileListItem);\n    }\n    URL.revokeObjectURL(previewUrl);\n  }\n\n  protected async handleChange() {\n    await this.chooseFile();\n  }\n\n  protected async handleEdit() {\n    const currentUrl = this.url();\n    if (!currentUrl) {\n      await this.chooseFile();\n      return;\n    }\n    const blob = await (await fetch(currentUrl)).blob();\n    const editedBlob = await this.imageEditor.open({ image: blob, title: '@general:actions.edit.title' });\n    if (editedBlob) {\n      const f = new File([editedBlob], 'avatar.png', { type: editedBlob.type || 'image/png' });\n      this.url.set(URL.createObjectURL(f));\n      this.setValue({\n        name: f.name,\n        status: 'attached',\n        size: f.size,\n        source: { kind: 'blob', value: f },\n      } as AXPFileListItem);\n    }\n  }\n\n  protected async handleRemove() {\n    if (this.blobUrl()) {\n      URL.revokeObjectURL(this.blobUrl()!);\n    }\n    this.blobUrl.set(null);\n    this.url.set(null);\n    this.setValue(undefined);\n  }\n\n  ngOnDestroy(): void {\n    this.handleRemove();\n  }\n}\n","import { AXPWidgetStatus } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { AXFileService } from '@acorex/core/file';\nimport { AXPFileStorageService } from '@acorex/platform/common';\nimport { AXPFileListItem } from '@acorex/platform/contracts';\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  effect,\n  inject,\n  signal,\n  untracked,\n  ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n  selector: 'axp-avatar-widget-view',\n  template: `\n    @if (isBusy()) {\n      <div class=\"axp-empty axp-state-loading\">\n        <i class=\"fa-solid fa-spinner-third fa-spin\"></i>\n      </div>\n    } @else if (!url()) {\n      <div class=\"axp-empty\">\n        <i class=\"fa-solid fa-user ax-text-3xl\"></i>\n      </div>\n    } @else {\n      <div class=\"axp-content\">\n        <div [style.backgroundImage]=\"url() ? 'url(' + url() + ')' : ''\"></div>\n      </div>\n    }\n  `,\n  styles: `\n    axp-avatar-widget-view {\n      .axp-empty {\n        @apply ax-border-2 ax-border-dashed ax-h-44 ax-w-44 ax-rounded-md;\n        @apply ax-bg-lightest;\n        @apply ax-flex ax-justify-center ax-items-center;\n\n        &.axp-state-loading {\n          --fa-animation-duration: 700ms;\n          i {\n            @apply ax-text-3xl;\n          }\n        }\n      }\n\n      .axp-content {\n        @apply ax-w-fit ax-border ax-rounded-md ax-overflow-hidden;\n        @apply ax-flex;\n\n        & > :first-child {\n          @apply ax-bg-center ax-bg-cover ax-rounded-md;\n          @apply ax-h-44 ax-w-44;\n        }\n      }\n    }\n  `,\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n})\nexport class AXPAvatarWidgetViewComponent extends AXPValueWidgetComponent<AXPFileListItem | undefined> {\n  private fileService = inject(AXFileService);\n  private fileStorage = inject(AXPFileStorageService);\n\n  protected url = signal<string | null>(null);\n  private blobUrl = signal<string | null>(null);\n\n  #effect1 = effect(async () => {\n    this.getValue();\n    this.beginHydration();\n    try {\n      await untracked(async () => {\n        try {\n          const value = this.getValue();\n          if (value) {\n            const source = value.source;\n            if (source) {\n              switch (source.kind) {\n                case 'url':\n                  this.url.set(source.value as string);\n                  break;\n                case 'blob': {\n                  const prev = this.blobUrl();\n                  if (prev) {\n                    URL.revokeObjectURL(prev);\n                  }\n                  const blob = source.value as Blob;\n                  const next = URL.createObjectURL(blob);\n                  this.blobUrl.set(next);\n                  this.url.set(next);\n                  break;\n                }\n                case 'fileId': {\n                  const fileId = source.value as string;\n                  const info = await this.fileStorage.getInfo(fileId);\n                  this.url.set(info?.url ? (info.url as string) : null);\n                  break;\n                }\n                default:\n                  this.url.set(null);\n                  break;\n              }\n            } else {\n              this.url.set(null);\n            }\n          } else {\n            this.url.set(null);\n          }\n        } catch {\n          this.setStatus(AXPWidgetStatus.Error);\n        }\n      });\n    } finally {\n      this.endHydration();\n    }\n  });\n\n  ngOnDestroy(): void {\n    const prev = this.blobUrl();\n    if (prev) {\n      URL.revokeObjectURL(prev);\n    }\n    this.blobUrl.set(null);\n  }\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, createStringProperty } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_ADVANCE_SUB_MEDIA } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_BEHAVIOR_PROPERTY_GROUP,\n  AXP_DATA_PATH_PROPERTY,\n  AXP_NAME_PROPERTY,\n  AXP_READONLY_PROPERTY,\n} from '../../../properties';\n\nexport const AXPAvatarWidget: AXPWidgetConfig = {\n  name: 'avatar',\n  title: '@platform-layout-widgets:widgets.avatar.title',\n  description: '@platform-layout-widgets:widgets.avatar.description',\n  icon: 'fa-light fa-image-user',\n  categories: [AXP_WIDGETS_ADVANCE_CATEGORY],\n  subCategory: AXP_WIDGETS_ADVANCE_SUB_MEDIA,\n  groups: [AXPWidgetGroupEnum.EntityWidget],\n  type: 'editor',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    AXP_READONLY_PROPERTY,\n    createStringProperty({\n      name: 'refId',\n      title: 'Reference Id',\n      path: 'options.refId',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n    }),\n    createStringProperty({\n      name: 'refType',\n      title: 'Reference Type',\n      path: 'options.refType',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n    }),\n  ],\n  components: {\n    view: {\n      component: () => import('./avatar-widget-view.component').then((c) => c.AXPAvatarWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./avatar-widget-edit.component').then((c) => c.AXPAvatarWidgetEditComponent),\n    },\n    column: {\n      component: () => import('./avatar-widget-column.component').then((c) => c.AXPAvatarWidgetColumnComponent),\n    },\n    designer: {\n      component: () => import('./avatar-widget-designer.component').then((c) => c.AXPAvatarWidgetDesignerComponent),\n    },\n  },\n};\n\nexport interface AXPAvatarWidgetDesignerOptions { }\n\nexport interface AXPAvatarWidgetViewOptions { }\n\nexport interface AXPAvatarWidgetEditOptions {\n  refId?: string;\n  refType?: string;\n}\n\nexport interface AXPAvatarWidgetColumnOptions { }\n\nexport interface AXPAvatarWidgetPrintOptions { }\n\nexport interface AXPAvatarWidgetOptions {\n  designer: AXPAvatarWidgetDesignerOptions;\n  view: AXPAvatarWidgetViewOptions;\n  edit: AXPAvatarWidgetEditOptions;\n  print: AXPAvatarWidgetPrintOptions;\n  column: AXPAvatarWidgetColumnOptions;\n}\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    avatar: 'avatar';\n  }\n}\n","//#region ----   Imports   ----\n\nimport { AXCodeEditorModule } from '@acorex/components/code-editor';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\n//#endregion\n\n//#region ----   Component   ----\n\n@Component({\n    selector: 'axp-code-editor-widget-view',\n    template: `\n    <div class=\"ax-w-full ax-border ax-rounded-md ax-p-2\" style=\"direction: ltr;\">\n      <ax-code-editor\n        [value]=\"currentValue()\"\n        [readonly]=\"true\"\n        [language]=\"language()\"\n        [lineNumbers]=\"lineNumbers()\"\n        class=\"ax-w-full ax-h-full\"\n      ></ax-code-editor>\n    </div>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [AXCodeEditorModule],\n    host: {\n        class: 'ax-block ax-w-full',\n    },\n})\nexport class AXPCodeEditorWidgetViewComponent extends AXPValueWidgetComponent<string> {\n    //#region ----   Computed Properties   ----\n\n    protected currentValue = computed(() => {\n        const value = this.getValue();\n        return value ?? '';\n    });\n\n    protected language = computed(() => {\n        const options = this.options();\n        return (options?.['language'] as any) ?? 'javascript';\n    });\n\n    protected lineNumbers = computed(() => {\n        const options = this.options();\n        return (options?.['lineNumbers'] as boolean) ?? true;\n    });\n\n    //#endregion\n}\n\n//#endregion\n\n","//#region ----   Imports   ----\n\nimport { AXCodeEditorDefaultLanguage, AXCodeEditorModule } from '@acorex/components/code-editor';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\n\n//#endregion\n\n//#region ----   Component   ----\n\n@Component({\n  selector: 'axp-code-editor-widget-edit',\n  template: `\n      <ax-code-editor\n        [ngModel]=\"currentValue()\"\n        (ngModelChange)=\"handleValueChange($event)\"\n        [language]=\"language()\"\n        [lineNumbers]=\"lineNumbers()\"\n        [class]=\"editorClass()\"\n      ></ax-code-editor>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [FormsModule, AXCodeEditorModule],\n  host: {\n    class: 'ax-block ax-w-full ax-ltr',\n  },\n})\nexport class AXPCodeEditorWidgetEditComponent extends AXPValueWidgetComponent<string> {\n  //#region ----   Computed Properties   ----\n\n  protected currentValue = computed(() => {\n    const value = this.getValue();\n    return value ?? '';\n  });\n\n  protected language = computed<AXCodeEditorDefaultLanguage>(() => {\n    const options = this.options();\n    return ((options?.['language'] as AXCodeEditorDefaultLanguage) ?? 'javascript');\n  });\n\n  protected lineNumbers = computed(() => {\n    const options = this.options();\n    return (options?.['lineNumbers'] as boolean) ?? true;\n  });\n\n  protected editorClass = computed(() => {\n    const options = this.options();\n    const height = (options?.['height'] as string) ?? 'min-h-96';\n    return `ax-w-full ax-h-full ${height}`;\n  });\n\n  //#endregion\n\n  //#region ----   Event Handlers   ----\n\n  protected handleValueChange(newValue: string): void {\n    this.setValue(newValue);\n  }\n\n  //#endregion\n}\n\n//#endregion\n\n","//#region ----   Imports   ----\n\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\n//#endregion\n\n//#region ----   Component   ----\n\n@Component({\n    selector: 'axp-code-editor-widget-column',\n    template: `\n    @if (displayText()) {\n      <span [title]=\"fullValue()\" class=\"ax-text-xs ax-font-mono ax-text-muted\">\n        {{ displayText() }}\n      </span>\n    } @else {\n      <span class=\"ax-text-muted\">---</span>\n    }\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [],\n    inputs: ['rawValue', 'rowData'],\n})\nexport class AXPCodeEditorWidgetColumnComponent extends AXPColumnWidgetComponent<string> {\n    //#region ----   Computed Properties   ----\n\n    protected fullValue = computed(() => {\n        const value = this.rawValue as string | undefined;\n        return value ?? '';\n    });\n\n    protected displayText = computed(() => {\n        const value = this.fullValue();\n        if (!value) {\n            return '';\n        }\n\n        // Trim whitespace and normalize line breaks\n        const trimmed = value.trim().replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\n        // If empty after trimming, return empty\n        if (!trimmed) {\n            return '';\n        }\n\n        // Get max length from options (default: 100 characters)\n        const options = this.options;\n        const maxLength = (options?.['maxLength'] as number) ?? 100;\n\n        // If value is shorter than max length, return as-is\n        if (trimmed.length <= maxLength) {\n            return trimmed;\n        }\n\n        // Truncate and add ellipsis\n        return trimmed.substring(0, maxLength) + '...';\n    });\n\n    //#endregion\n}\n\n//#endregion\n\n","//#region ----   Imports   ----\n\nimport { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_ADVANCE_SUB_INPUT } from '@acorex/platform/layout/widget-core';\nimport {\n    AXP_DATA_PATH_PROPERTY,\n    AXP_DISABLED_PROPERTY,\n    AXP_NAME_PROPERTY,\n} from '../../../properties';\n\n//#endregion\n\n//#region ----   Widget Config   ----\n\nexport const AXPCodeEditorWidget: AXPWidgetConfig = {\n    name: 'code-editor',\n    title: '@platform-layout-widgets:widgets.code-editor.title',\n    description: '@platform-layout-widgets:widgets.code-editor.description',\n    icon: 'fa-light fa-code',\n    categories: [AXP_WIDGETS_ADVANCE_CATEGORY],\n    subCategory: AXP_WIDGETS_ADVANCE_SUB_INPUT,\n    groups: [AXPWidgetGroupEnum.FormElement],\n    type: 'editor',\n    properties: [\n        AXP_NAME_PROPERTY,\n        AXP_DATA_PATH_PROPERTY,\n        AXP_DISABLED_PROPERTY,\n    ],\n    components: {\n        view: {\n            component: () => import('./code-editor-widget-view.component').then((c) => c.AXPCodeEditorWidgetViewComponent),\n        },\n        edit: {\n            component: () => import('./code-editor-widget-edit.component').then((c) => c.AXPCodeEditorWidgetEditComponent),\n        },\n        column: {\n            component: () => import('./code-editor-widget-column.component').then((c) => c.AXPCodeEditorWidgetColumnComponent),\n        },\n        designer: {\n            component: () => import('./code-editor-widget-edit.component').then((c) => c.AXPCodeEditorWidgetEditComponent),\n        },\n    },\n};\n\n//#endregion\n\n//#region ----   Widget Options Interfaces   ----\n\nexport interface AXPCodeEditorWidgetOptions {\n    designer: {\n        language?: string;\n        lineNumbers?: boolean;\n        height?: string;\n    };\n    view: {\n        language?: string;\n        lineNumbers?: boolean;\n    };\n    edit: {\n        language?: string;\n        lineNumbers?: boolean;\n        height?: string;\n    };\n    column: {\n        maxLength?: number;\n    };\n}\n\n//#endregion\n\n","import { AXDataSource } from '@acorex/cdk/common';\nimport { AXRowCommandItemClickEvent } from '@acorex/components/data-table';\nimport type { AXPPropertyDefinition } from '@acorex/platform/domain-contracts';\n\n/**\n * Prefix for row-level expression strings so widget-renderer does not evaluate them\n * (renderer only evaluates strings that look like {{ ... }}). Data-list evaluates\n * these per row with row data scope.\n */\nexport const AXP_ROW_EXPR_PREFIX = '__expr:';\n\n/** Built-in row command names (edit component). */\nexport const AXP_DATA_LIST_CMD_EDIT = '__dl-edit';\nexport const AXP_DATA_LIST_CMD_DELETE = '__dl-delete';\n\n/**\n * Row marked for removal in edit mode only (not persisted until form Save).\n * Stripped / filtered in {@link sanitizeDataListRowsForPersist}.\n */\nexport const AXP_DATA_LIST_PENDING_DELETE_KEY = '__axpDataListPendingDelete';\n\nexport interface AXPDataListWidgetColumn {\n  name: string;\n  title?: string;\n  width?: string;\n  visible?: boolean;\n  fixed?: 'start' | 'end';\n  /** Optional schema (domain standard); drives cell/editor widget via interface.name when set. */\n  schema?: Partial<AXPPropertyDefinition>;\n  widget?: {\n    type: string;\n    path?: string;\n    options?: any;\n  };\n}\n\n/**\n * Resolves the display width for a data-list column.\n * Prefers top-level `width`, then `widget.options.width`.\n */\nexport function resolveDataListColumnWidth(column: AXPDataListWidgetColumn): string | undefined {\n  const width = column.width ?? column.widget?.options?.width;\n  if (width == null || width === '') {\n    return undefined;\n  }\n  return String(width);\n}\n\n/** Toggle built-in row/header commands in edit mode (defaults true when omitted). */\nexport interface AXPDataListWidgetCommandsOptions {\n  add?: boolean;\n  edit?: boolean;\n  remove?: boolean;\n}\n\n/**\n * How header `command` result `data` is merged into the bound list.\n * - `append-row` / `prepend-row`: reads `data.items`, `data.item`, `data.row`, a plain object, or an array of rows.\n * - `replace-value`: replaces the whole list with an array from `data` or `data.rows` / `data.value`.\n * - `none`: no list mutation (command handled persistence or side effects only).\n */\nexport type AXPDataListHeaderCommandApplyMode = 'append-row' | 'prepend-row' | 'replace-value' | 'none';\n\n/**\n * Runs a registered platform command (`AXPCommandExecutor.execute`); optional `applyMode` merges result into the list.\n * Entity- or feature-specific behavior lives in the command implementation, not inside the data-list widget.\n */\nexport interface AXPDataListWidgetHeaderCommandAction {\n  kind: 'command';\n  /** Registry key, e.g. `PlatformManagement:DataListPickEntityItem` */\n  command: string;\n  /**\n   * `primary`: toolbar button next to Add Row. `secondary`: grouped under the Actions dropdown (master list pattern).\n   * @default undefined — treated as primary for backward compatibility.\n   */\n  priority?: 'primary' | 'secondary';\n  title?: string;\n  icon?: string;\n  color?: string;\n  /** Default `append-row` */\n  applyMode?: AXPDataListHeaderCommandApplyMode;\n  /** Target row path <- lodash path on each source item (after command returns). */\n  fieldMap?: Record<string, string>;\n  /** Merged into the command execute input (e.g. `entity`, `columns`). */\n  payload?: Record<string, unknown>;\n  /** When set with append/prepend, opens the row editor popup for each mapped row before applying. */\n  openRowEditorAfter?: boolean;\n}\n\n/** Declarative header action (serializable in entity JSON). */\nexport type AXPDataListWidgetHeaderAction = AXPDataListWidgetHeaderCommandAction;\n\nexport interface AXPDataListWidgetRowCommand {\n  name: string;\n  text: string;\n  icon?: string;\n  color?: string;\n  disabled?: boolean | string;\n  hidden?: boolean | string;\n}\n\nexport interface AXPDataListWidgetComponentOptions {\n  // Core Data\n  dataSource: AXDataSource;\n  columns: AXPDataListWidgetColumn[];\n\n  // Row Commands\n  primaryCommands?: AXPDataListWidgetRowCommand[];\n  secondaryCommands?: AXPDataListWidgetRowCommand[];\n\n  // Table Features\n  showIndex?: boolean;\n  allowSelection?: boolean;\n  paging?: boolean;\n  showHeader?: boolean;\n  showFooter?: boolean;\n\n  // Entity Info\n  parentField?: string;\n\n  // Events\n  onRowClick?: (row: any) => void | string;\n  onRowDoubleClick?: (row: any) => void | string;\n  onSelectionChange?: (selectedRows: any[]) => void | string;\n  onRowCommand?: (command: AXRowCommandItemClickEvent, selectedRows: any[]) => Promise<void> | string;\n}\n","import { AXButtonClickEvent, AXDataSource, convertArrayToDataSource } from '@acorex/cdk/common';\nimport {\n  AXDataTableComponent,\n  AXDataTableModule,\n  AXRowCommandItem,\n  AXRowCommandItemClickEvent,\n} from '@acorex/components/data-table';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPExpressionEvaluatorScope, AXPExpressionEvaluatorService } from '@acorex/platform/core';\nimport {\n  AXPValueWidgetComponent,\n  AXPWidgetCoreElementAPI,\n  AXPWidgetCoreModule,\n} from '@acorex/platform/layout/widget-core';\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Signal,\n  computed,\n  inject,\n  signal,\n  viewChild,\n} from '@angular/core';\nimport { get } from 'lodash-es';\nimport { AXPDataListWidgetColumn, AXPDataListWidgetRowCommand, AXP_ROW_EXPR_PREFIX, resolveDataListColumnWidth } from './data-list-widget.types';\n\n@Component({\n  selector: 'axp-data-list-widget-view',\n  host: {\n    '[style.min-height]': 'minHeight() + \"px\"',\n    '[class]': '\"ax-h-full ax-flex ax-flex-col\"',\n  },\n  template: `\n    <ax-data-table\n      #grid\n      class=\"ax-flex-1 ax-overflow-auto ax-h-full\"\n      [showFooter]=\"showFooter()\"\n      [showHeader]=\"showHeader()\"\n      [fixedHeader]=\"fixHeader()\"\n      [fixedFooter]=\"fixFooter()\"\n      [paging]=\"paging()\"\n      [fetchDataMode]=\"fetchDataMode()\"\n      [parentField]=\"parentField() || ''\"\n      [loading]=\"loading()\"\n      [dataSource]=\"processedDataSource()\"\n      [selectedRows]=\"selectedRows()\"\n      (selectedRowsChange)=\"handleSelectedRowsChange($event)\"\n      (onRowDbClick)=\"handleRowDbClick($event)\"\n    >\n      <!-- Index Column -->\n      @if (showIndex()) {\n        <ax-index-column fixed=\"start\" [width]=\"'80px'\" [padZero]=\"false\"> </ax-index-column>\n      }\n\n      <!-- Select Column -->\n      @if (allowSelection()) {\n        <ax-select-column fixed=\"start\" [width]=\"'60px'\"> </ax-select-column>\n      }\n\n      <!-- Data Columns -->\n      @for (col of visibleColumns(); track col.name) {\n        <axp-widget-column-renderer\n          [expandHandler]=\"$index === 0 && parentField() ? true : false\"\n          [caption]=\"col.title || col.name\"\n          [node]=\"getColumnNode(col)\"\n          [customWidth]=\"resolveColumnWidth(col) ?? ''\"\n        ></axp-widget-column-renderer>\n      }\n\n      <!-- Row Command Columns -->\n      @if (primaryCommands().length > 0) {\n        <ax-command-column\n          fixed=\"end\"\n          [width]=\"getCommandColumnWidth()\"\n          [items]=\"primaryCommands()\"\n          (onItemClick)=\"handleRowCommandClick($event)\"\n        ></ax-command-column>\n      }\n\n      <!-- Dropdown Command Column -->\n      @if (secondaryCommands().length > 0) {\n        <ax-dropdown-command-column\n          fixed=\"end\"\n          [width]=\"'60px'\"\n          [items]=\"evaluatedSecondaryCommands\"\n          (onItemClick)=\"handleRowCommandClick($event)\"\n        ></ax-dropdown-command-column>\n      }\n    </ax-data-table>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXDataTableModule, AXPWidgetCoreModule, AXTranslationModule],\n})\nexport class AXPDataListWidgetViewComponent extends AXPValueWidgetComponent<any[]> {\n  protected grid = viewChild<AXDataTableComponent>('grid');\n\n  //#region ----   Services & Dependencies   ----\n  protected expressionEvaluator = inject(AXPExpressionEvaluatorService);\n  //#endregion\n\n  //#region ----   Computed Properties   ----\n\n  protected dataSource = computed(() => this.options()['dataSource'] || []);\n  protected columns = computed<AXPDataListWidgetColumn[]>(() => this.options()['columns'] || []);\n\n  protected onRowClick = computed<((row: any) => void) | undefined>(() => this.options()['onRowClick']);\n  protected onRowDoubleClick = computed<((row: any) => void) | undefined>(() => this.options()['onRowDoubleClick']);\n  protected onSelectionChange = computed<((selectedRows: any[]) => void) | undefined>(\n    () => this.options()['onSelectionChange'],\n  );\n  protected onRowCommand = computed<((command: AXRowCommandItemClickEvent, selectedRows: any[]) => void) | undefined>(\n    () => this.options()['onRowCommand'],\n  );\n\n  public onSelectionChanged = new EventEmitter<any[]>();\n\n  // Table Features\n  protected paging = computed<boolean>(() => this.options()['paging'] ?? true);\n  protected showHeader = computed<boolean>(() => this.options()['showHeader'] ?? true);\n  protected showFooter = computed<boolean>(() => this.options()['showFooter'] ?? false);\n  protected fixHeader = computed<boolean>(() => this.options()['fixHeader'] ?? true);\n  protected fixFooter = computed<boolean>(() => this.options()['fixFooter'] ?? true);\n  protected fetchDataMode = computed<'auto' | 'manual'>(() => this.options()['fetchDataMode'] ?? 'auto');\n  protected parentField = computed<string | undefined>(() => this.options()['parentField']);\n  protected minHeight = computed<string | undefined>(() => this.options()['minHeight'] ?? 200);\n\n  // Simple Flags (entity list resolves `showIndex` in AXPEntityListTableService, including common setting)\n  protected showIndex = computed<boolean>(() => this.options()['showIndex'] ?? false);\n  protected allowSelection = computed<boolean>(() => this.options()['allowSelection'] ?? false);\n\n  // Row Commands\n  protected primaryCommands = computed<AXRowCommandItem[]>(() => this.options()['primaryCommands'] || []);\n  protected secondaryCommands = computed<AXPDataListWidgetRowCommand[]>(\n    () => this.options()['secondaryCommands'] || [],\n  );\n  protected evaluatedSecondaryCommands = async (rowData: any): Promise<AXRowCommandItem[]> => {\n    const scope: AXPExpressionEvaluatorScope = {\n      context: {\n        eval: (path: string) => get(rowData, path),\n      },\n    };\n\n    const commands = this.secondaryCommands();\n    const evaluatedCommands = await Promise.all(\n      commands.map(async (a) => {\n        const isHidden = await this.evaluateRowExpr(a.hidden, scope);\n        if (isHidden) return null;\n        const disabled = await this.evaluateRowExpr(a.disabled, scope);\n        return { ...a, disabled };\n      }),\n    );\n    return evaluatedCommands.filter(Boolean) as AXRowCommandItem[];\n  };\n\n  /**\n   * Evaluates hidden/disabled: if value is wrapped with AXP_ROW_EXPR_PREFIX (so it was\n   * not evaluated by widget-renderer), unwraps and evaluates with row scope; otherwise\n   * treats as boolean or evaluates as expression.\n   */\n  private async evaluateRowExpr(\n    value: boolean | string | undefined,\n    scope: AXPExpressionEvaluatorScope,\n  ): Promise<boolean> {\n    if (value === undefined || value === null) return false;\n    if (typeof value === 'boolean') return value;\n    const expr =\n      typeof value === 'string' && value.startsWith(AXP_ROW_EXPR_PREFIX)\n        ? value.slice(AXP_ROW_EXPR_PREFIX.length)\n        : value;\n    const result = await this.expressionEvaluator.evaluate(expr, scope);\n    return Boolean(result);\n  }\n\n  override ngOnInit(): void {\n    super.ngOnInit();\n    this.setValue([]);\n  }\n\n  // States\n  protected loading = computed(() => ({\n    enabled: this.options()['loading']?.enabled ?? true,\n    animation: this.options()['loading']?.animation ?? true,\n  }));\n\n  // Processed Data\n  protected processedDataSource: Signal<AXDataSource> = computed(() => {\n    const ds = this.dataSource();\n    if (Array.isArray(ds)) {\n      return convertArrayToDataSource(ds);\n    }\n    return ds;\n  });\n\n  protected visibleColumns = computed<AXPDataListWidgetColumn[]>(() =>\n    this.columns().filter((col) => col.visible !== false),\n  );\n\n  // protected selectedRows = computed<any[]>(() => this.getValue() || []);\n  selectedRows = signal<any[]>([]);\n\n  //#endregion\n\n  //#region ----   Utility Methods   ----\n\n  protected getColumnNode(col: AXPDataListWidgetColumn) {\n    const widgetOptions = col.widget?.options || {};\n    const width = resolveDataListColumnWidth(col);\n\n    return {\n      type: col.widget?.type || 'text-editor',\n      path: col.widget?.path || col.name,\n      options: {\n        ...widgetOptions,\n        ...(width ? { width } : {}),\n      },\n    };\n  }\n\n  protected resolveColumnWidth(col: AXPDataListWidgetColumn): string | undefined {\n    return resolveDataListColumnWidth(col);\n  }\n\n  protected getCommandColumnWidth(): string {\n    const count = this.primaryCommands().length;\n    return `${count * 70}px`;\n  }\n\n  //#endregion\n\n  //#region ----   Event Handlers   ----\n\n  protected handleSelectedRowsChange(srs: any[]) {\n    this.selectedRows.set(srs);\n    this.onSelectionChange()?.(srs);\n    this.onSelectionChanged.emit(srs);\n  }\n\n  protected handleRowClick(event: any) {\n    this.onRowClick()?.(event.row || event);\n  }\n\n  protected handleRowDbClick(event: any) {\n    this.onRowDoubleClick()?.(event.row || event);\n  }\n\n  protected handleRowCommandClick(event: AXButtonClickEvent) {\n    this.onRowCommand()?.(event, this.selectedRows());\n  }\n\n  protected override outputs(): (string | { [name: string]: unknown })[] {\n    return [\n      {\n        name: 'selectedRows',\n        value: this.selectedRows(),\n      },\n    ];\n  }\n\n  //#endregion\n\n  override api(): AXPWidgetCoreElementAPI {\n    return {\n      onSelectionChange: this.onSelectionChanged,\n    };\n  }\n\n  //#region ----   Public Methods   ----\n\n  /**\n   * Returns true when the data-table view child accepted the refresh.\n   * Callers must retry while this is false (grid may not be ready yet after remount).\n   */\n  public refresh(): boolean {\n    const grid = this.grid();\n    if (!grid) {\n      return false;\n    }\n    grid.refresh();\n    this.selectedRows.set([]);\n    return true;\n  }\n\n  //#endregion\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, createBooleanProperty, createNumberProperty, createStringProperty } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXRowCommandItemClickEvent } from '@acorex/components/data-table';\nimport { AXPWidgetsCatalog } from '@acorex/platform/contracts';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGETS_LAYOUT_SUB_LISTS } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_BEHAVIOR_PROPERTY_GROUP,\n  AXP_DATA_PATH_PROPERTY,\n  AXP_DATA_PROPERTY_GROUP,\n  AXP_NAME_PROPERTY,\n} from '../../../properties';\nimport {\n  AXPDataListWidgetColumn,\n  AXPDataListWidgetCommandsOptions,\n  AXPDataListWidgetHeaderAction,\n  AXPDataListWidgetRowCommand,\n} from './data-list-widget.types';\n\nexport const AXPDataListWidget: AXPWidgetConfig = {\n  name: 'data-list',\n  title: '@platform-layout-widgets:widgets.data-list.title',\n  description: '@platform-layout-widgets:widgets.data-list.description',\n  icon: 'fa-light fa-table',\n  categories: [AXP_WIDGETS_LAYOUT_CATEGORY],\n  subCategory: AXP_WIDGETS_LAYOUT_SUB_LISTS,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  type: 'view',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n\n    // Data Configuration\n    {\n      name: 'dataSource',\n      title: 'Data Source',\n      group: AXP_DATA_PROPERTY_GROUP,\n      schema: {\n        dataType: 'object',\n        defaultValue: [],\n        interface: {\n          name: 'dataSource',\n          path: 'options.dataSource',\n          type: AXPWidgetsCatalog.text,\n        },\n      },\n      visible: true,\n    },\n\n    {\n      name: 'columns',\n      title: 'Columns',\n      group: AXP_DATA_PROPERTY_GROUP,\n      schema: {\n        dataType: 'object',\n        defaultValue: [],\n        interface: {\n          name: 'columns',\n          path: 'options.columns',\n          type: AXPWidgetsCatalog.text,\n        },\n      },\n      visible: true,\n    },\n\n    // Table Features\n    createBooleanProperty({\n      name: 'paging',\n      title: 'Enable Paging',\n      path: 'options.paging',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n      defaultValue: true,\n    }),\n\n    createBooleanProperty({\n      name: 'showFooter',\n      title: 'Show Footer',\n      path: 'options.showFooter',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n      defaultValue: false,\n    }),\n\n    // Header/Footer Fixing\n    createBooleanProperty({\n      name: 'showHeader',\n      title: 'Show Header',\n      path: 'options.showHeader',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n      defaultValue: true,\n    }),\n    createBooleanProperty({\n      name: 'fixHeader',\n      title: 'Fix Header',\n      path: 'options.fixHeader',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n      defaultValue: true,\n    }),\n    createBooleanProperty({\n      name: 'fixFooter',\n      title: 'Fix Footer',\n      path: 'options.fixFooter',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n      defaultValue: true,\n    }),\n\n    createStringProperty({\n      name: 'fetchDataMode',\n      title: 'Fetch Data Mode',\n      path: 'options.fetchDataMode',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n      defaultValue: 'auto',\n    }),\n\n    // Special Columns\n    createBooleanProperty({\n      name: 'showIndex',\n      title: 'Show Index Column',\n      path: 'options.showIndex',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n      defaultValue: false,\n    }),\n\n    createBooleanProperty({\n      name: 'allowSelection',\n      title: 'Allow Row Selection',\n      path: 'options.allowSelection',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n      defaultValue: false,\n    }),\n\n    // Layout\n    createNumberProperty({\n      name: 'minHeight',\n      title: 'Min Height',\n      path: 'options.minHeight',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n    }),\n\n    // Data hierarchy\n    createStringProperty({\n      name: 'parentField',\n      title: 'Parent Field',\n      path: 'options.parentField',\n      group: AXP_DATA_PROPERTY_GROUP,\n    }),\n\n    // Loading Configuration\n    {\n      name: 'loading',\n      title: 'Loading Configuration',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n      schema: {\n        dataType: 'object',\n        defaultValue: { enabled: false, animation: true },\n        interface: {\n          name: 'loading',\n          path: 'options.loading',\n          type: AXPWidgetsCatalog.text,\n        },\n      },\n      visible: true,\n    },\n\n    // Events Configuration\n    {\n      name: 'events',\n      title: 'Events',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n      schema: {\n        dataType: 'object',\n        defaultValue: {},\n        interface: {\n          name: 'events',\n          path: 'options.events',\n          type: AXPWidgetsCatalog.text,\n        },\n      },\n      visible: true,\n    },\n  ],\n\n  components: {\n    view: {\n      component: () => import('./data-list-widget-view.component').then((c) => c.AXPDataListWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./data-list-widget-view.component').then((c) => c.AXPDataListWidgetViewComponent),\n    },\n    designer: {\n      component: () => import('./data-list-widget-view.component').then((c) => c.AXPDataListWidgetViewComponent),\n    },\n  },\n};\n\nexport interface AXPDataListWidgetViewOptions {\n  // Core Data\n  dataSource?: AXDataSource;\n  columns?: AXPDataListWidgetColumn[];\n\n  /** When true, edit mode hides add/row/header actions and treats cells as read-only (entity read-only field). */\n  disabled?: boolean;\n\n  /** Edit mode: built-in add/edit/remove toggles (default all on). */\n  commands?: AXPDataListWidgetCommandsOptions;\n\n  /** Edit mode: header toolbar actions (`command` + `applyMode`; see data-list-widget.types). */\n  headerActions?: AXPDataListWidgetHeaderAction[];\n\n  // Row Commands\n  primaryCommands?: AXPDataListWidgetRowCommand[];\n  secondaryCommands?: AXPDataListWidgetRowCommand[];\n\n  // Table Features\n  showIndex?: boolean;\n  allowSelection?: boolean;\n  paging?: boolean;\n  showHeader?: boolean;\n  showFooter?: boolean;\n  fixHeader?: boolean;\n  fixFooter?: boolean;\n  fetchDataMode?: 'auto' | 'manual';\n  minHeight?: string;\n\n  // Entity Info\n  parentField?: string;\n\n  // Events\n  onRowClick?: (row: any) => void | string;\n  onRowDoubleClick?: (row: any) => void | string;\n  onSelectionChange?: (selectedRows: any[]) => void | string;\n  onRowCommand?: (command: AXRowCommandItemClickEvent, selectedRows: any[]) => Promise<void> | string;\n\n  // Loading\n  loading?: { enabled?: boolean; animation?: boolean };\n}\n\nexport interface AXPDataListWidgetEditOptions extends AXPDataListWidgetViewOptions {}\n\nexport interface AXPDataListWidgetOptions {\n  view: AXPDataListWidgetViewOptions;\n  edit: AXPDataListWidgetEditOptions;\n}\n","export const GalleryWebhookKeys = {\n  BeforeFilesAdded: 'gallery.beforeFilesAdded',\n  AfterFilesAdded: 'gallery.afterFilesAdded',\n} as const;\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXLoadingDialogService } from '@acorex/components/loading-dialog';\nimport {\n  AXMediaViewerContainerComponent,\n  AXMediaViewerData,\n  AXMediaViewerModule,\n} from '@acorex/components/media-viewer';\nimport { AXFileService } from '@acorex/core/file';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport {\n  AXCFileUploaderAction,\n  AXCFileUploaderActionsPayload,\n  AXCFileUploaderCapabilities,\n  AXPFileActionsService,\n  AXPFileStorageService,\n} from '@acorex/platform/common';\nimport { AXPDataGenerator, AXPFileListItem } from '@acorex/platform/contracts';\nimport { AXPHookService } from '@acorex/platform/core';\n\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { AsyncPipe } from '@angular/common';\n\nimport { ChangeDetectionStrategy, Component, computed, inject, OnDestroy, signal, viewChild } from '@angular/core';\nimport { GalleryWebhookKeys } from './webhook.key';\n\ninterface GalleryBeforeFilesAddedPayload {\n  host: AXPGalleryWidgetEditComponent;\n  newFiles: AXPFileListItem[];\n}\n\ninterface GalleryAfterFilesAddedPayload {\n  host: AXPGalleryWidgetEditComponent;\n  newFiles: AXPFileListItem[];\n}\n\n@Component({\n  selector: 'axp-gallery-widget-edit',\n  template: ` <ax-media-viewer-container [thumbnail]=\"thumbnail()\" #c [dataArray]=\"mediaViewerData()\">\n    @if (header()) {\n      <ax-header>\n        @if (allowUpload()) {\n          <ax-prefix>\n            <div *translate=\"let t\">\n              <ax-button class=\"ax-sm\" [text]=\"(t('@general:actions.add-item.title') | async)!\">\n                <ax-prefix>\n                  <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n                </ax-prefix>\n                <ax-dropdown-panel>\n                  <ax-button-item-list>\n                    @for (action of fileActions(); track action.plugin) {\n                      <ax-button-item\n                        (onClick)=\"action.run(capabilities)\"\n                        [text]=\"action.text ?? (action.textKey ? (t(action.textKey) | async)! : '')\"\n                      >\n                        @if (action.icon) {\n                          <ax-prefix>\n                            <ax-icon [icon]=\"action.icon\"></ax-icon>\n                          </ax-prefix>\n                        }\n                      </ax-button-item>\n                    }\n                  </ax-button-item-list>\n                </ax-dropdown-panel>\n              </ax-button>\n            </div>\n          </ax-prefix>\n        }\n\n        @if (fileInfo()) {\n          <ax-file-info></ax-file-info>\n        }\n\n        <ax-suffix>\n          @if (downloadButton()) {\n            <ax-button class=\"ax-sm\" look=\"blank\" (click)=\"download()\" [disabled]=\"mediaViewerData().length === 0\">\n              <ax-icon icon=\"fa-light fa-download\"></ax-icon>\n            </ax-button>\n          }\n          @if (fullScreenButton()) {\n            <ax-fullscreen-button> </ax-fullscreen-button>\n          }\n        </ax-suffix>\n      </ax-header>\n    }\n\n    <ax-prefix>\n      <ax-button class=\"ax-sm\" (click)=\"c.next()\" [disabled]=\"c.getActiveIndex() === this.mediaViewerData().length - 1\">\n        <ax-icon class=\"rtl:ax-rotate-180 ax-icon ax-icon-chevron-right\"> </ax-icon>\n      </ax-button>\n    </ax-prefix>\n\n    <ax-suffix>\n      <ax-button class=\"ax-sm\" (click)=\"c.prev()\" [disabled]=\"c.getActiveIndex() === 0\">\n        <ax-icon class=\"rtl:ax-rotate-180 ax-icon ax-icon-chevron-left\"> </ax-icon>\n      </ax-button>\n    </ax-suffix>\n  </ax-media-viewer-container>`,\n  host: {\n    class: 'ax-block',\n    '[style.height]': 'height()',\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXMediaViewerModule, AXDecoratorModule, AXButtonModule, AXDropdownModule, AXTranslationModule, AsyncPipe],\n})\nexport class AXPGalleryWidgetEditComponent extends AXPValueWidgetComponent<AXPFileListItem[]> implements OnDestroy {\n  protected thumbnail = computed<boolean>(() => this.options()['thumbnail'] as boolean);\n  protected height = computed<string>(() => (this.options()['height'] as string) ?? '30rem');\n  protected header = computed<boolean>(() => this.options()['header'] as boolean);\n  protected fileInfo = computed<boolean>(() => this.options()['fileInfo'] as boolean);\n\n  protected fullScreenButton = computed<boolean>(() => this.options()['fullScreenButton'] ?? true);\n  protected downloadButton = computed<boolean>(() => this.options()['downloadButton'] ?? true);\n\n  protected allowUploadTypes = computed<string[]>(() => this.options()['allowUploadTypes'] ?? [`image/*`]);\n  protected allowUpload = computed<boolean>(() => this.options()['allowUpload'] ?? true);\n\n  protected plugins = computed<{ name: string; options?: unknown }[]>(\n    () => (this.options()['plugins'] as { name: string; options?: unknown }[]) ?? [],\n  );\n  protected excludePlugins = computed<string[]>(() => (this.options()['excludePlugins'] as string[]) ?? []);\n\n  protected readonly fileService = inject(AXFileService);\n  private readonly hooks = inject(AXPHookService);\n  private readonly fileActionsService = inject(AXPFileActionsService);\n  private readonly fileStorageService = inject(AXPFileStorageService);\n  private readonly loadingDialog = inject(AXLoadingDialogService);\n  private readonly translationService = inject(AXTranslationService);\n\n  private gallery = viewChild<AXMediaViewerContainerComponent>('c');\n\n  /** Object URLs created for blobs/binary; revoked on destroy for memory safety. */\n  private readonly objectUrls = new Set<string>();\n\n  /**\n   * Convert AXPFileListItem[] to AXMediaViewerData[] for display in media viewer.\n   * Uses lazy-loading callbacks for URL resolution.\n   */\n  protected readonly mediaViewerData = computed<AXMediaViewerData[]>(() => {\n    const fileItems = this.getValue() ?? [];\n    return fileItems.map((file) => this.fileItemToMediaViewerData(file));\n  });\n\n  private readonly innerActions = signal<AXCFileUploaderAction[]>([]);\n  protected readonly fileActions = computed<AXCFileUploaderAction[]>(() => {\n    const enabledPlugins = this.plugins()?.map((p) => p.name) ?? [];\n    const excludedPlugins = this.excludePlugins() ?? [];\n    const all = this.innerActions() ?? [];\n    return all.filter((a) => {\n      if (excludedPlugins.includes(a.plugin)) {\n        return false;\n      }\n      if (!enabledPlugins || enabledPlugins.length === 0) {\n        return a.global === true;\n      }\n      return enabledPlugins.includes(a.plugin) || a.global === true;\n    });\n  });\n\n  override ngOnInit(): void {\n    super.ngOnInit();\n    this.loadActions();\n  }\n\n  /** Downloads the file at the current media viewer index. */\n  protected async download(): Promise<void> {\n    const galleryRef = this.gallery();\n    const files = this.getValue() ?? [];\n    if (!galleryRef || files.length === 0) {\n      return;\n    }\n    const index = galleryRef.getActiveIndex();\n    const file = files[index];\n    if (!file) {\n      return;\n    }\n\n    const loadingDialogRef = this.loadingDialog.show({\n      title: await this.translationService.translateAsync('@general:actions.download.processing'),\n      mode: 'indeterminate',\n      progressColor: 'primary',\n      status: await this.translationService.translateAsync('@general:actions.download.processing'),\n    });\n\n    try {\n      const url = await this.resolveFileUrl(file);\n      if (!url) {\n        return;\n      }\n      const link = document.createElement('a');\n      link.href = url;\n      link.download = file.name ?? 'download';\n      link.target = '_blank';\n      link.rel = 'noopener noreferrer';\n      link.click();\n      link.remove();\n    } finally {\n      loadingDialogRef.close();\n    }\n  }\n\n  private async loadActions(): Promise<void> {\n    const payload: AXCFileUploaderActionsPayload = {\n      plugins: this.plugins() ?? [],\n      excludePlugins: this.excludePlugins() ?? [],\n      capabilities: this.capabilities,\n      actions: [],\n      options: {\n        multiple: true, // Gallery always supports multiple\n        accept: this.allowUploadTypes().join(','),\n      },\n    };\n    const actions = await this.fileActionsService.getActions(payload);\n    this.innerActions.set(actions);\n  }\n\n  /**\n   * Format file size with appropriate unit (B, KB, MB, GB, etc.)\n   * Divides by 1000 until the value is less than 1000\n   */\n  private formatFileSize(size: number | undefined): string {\n    if (!size) {\n      return '';\n    }\n\n    const units = ['B', 'KB', 'MB', 'GB', 'TB'];\n    let value = size;\n    let unitIndex = 0;\n\n    while (value >= 1000 && unitIndex < units.length - 1) {\n      value /= 1000;\n      unitIndex++;\n    }\n\n    // Round to 2 decimal places, but remove trailing zeros\n    const roundedValue = Math.round(value * 100) / 100;\n    return `${roundedValue} ${units[unitIndex]}`;\n  }\n\n  /**\n   * Convert AXPFileListItem to AXMediaViewerData for display in media viewer.\n   * Uses lazy-loading callbacks for URL and thumbnail resolution.\n   */\n  private fileItemToMediaViewerData(file: AXPFileListItem): AXMediaViewerData {\n    // Create a lazy-loading URL callback\n    const urlCallback = (): Promise<string> => this.resolveFileUrl(file);\n\n    // Create a lazy-loading thumbnail callback (uses same URL for now)\n    const thumbnailCallback = (): Promise<string> => this.resolveFileUrl(file);\n\n    return {\n      id: file.id ?? `media-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`,\n      name: file.name,\n      type: 'image',\n      url: urlCallback,\n      thumbnailUrl: thumbnailCallback,\n      size: this.formatFileSize(file.size),\n    };\n  }\n\n  /**\n   * Resolve the URL for a file item.\n   * Returns a promise that resolves to the file URL.\n   */\n  /**\n   * Register an object URL for later revocation on destroy (memory safety).\n   */\n  private trackObjectUrl(url: string): string {\n    if (url.startsWith('blob:')) {\n      this.objectUrls.add(url);\n    }\n    return url;\n  }\n\n  private async resolveFileUrl(file: AXPFileListItem): Promise<string> {\n    // Blob source - create object URL\n    if (file.source?.kind === 'blob' && file.source.value instanceof Blob) {\n      return this.trackObjectUrl(URL.createObjectURL(file.source.value));\n    }\n\n    // File ID source - fetch from storage service\n    if (file.source?.kind === 'fileId' && typeof file.source.value === 'string') {\n      const fileInfo = await this.fileStorageService.getInfo(file.source.value);\n      if (fileInfo?.url) return fileInfo.url;\n      if (fileInfo?.binary) return this.trackObjectUrl(URL.createObjectURL(fileInfo.binary));\n      return '';\n    }\n\n    // URL source - return directly\n    if (file.source?.kind === 'url' && typeof file.source.value === 'string') {\n      return file.source.value;\n    }\n\n    // String value - check if it's already a URL or needs resolution\n    if (typeof file.source?.value === 'string') {\n      const value = file.source.value;\n\n      // Already a blob URL or data URL - use directly\n      if (value.startsWith('blob:') || value.startsWith('data:') || value.startsWith('http')) {\n        return value;\n      }\n\n      // Assume it's a file ID - fetch from storage service\n      const fileInfo = await this.fileStorageService.getInfo(value);\n      if (fileInfo?.url) return fileInfo.url;\n      if (fileInfo?.binary) return this.trackObjectUrl(URL.createObjectURL(fileInfo.binary));\n      return '';\n    }\n\n    return '';\n  }\n\n  ngOnDestroy(): void {\n    for (const url of this.objectUrls) {\n      URL.revokeObjectURL(url);\n    }\n    this.objectUrls.clear();\n  }\n\n  protected readonly capabilities: AXCFileUploaderCapabilities = {\n    getFiles: () => {\n      return this.getValue() ?? [];\n    },\n    setFiles: (files: AXPFileListItem[]) => {\n      this.setValue(files);\n    },\n    addFiles: (files: AXPFileListItem[]) => {\n      const currentFiles = this.getValue() ?? [];\n      const newValue = [...currentFiles, ...files];\n      this.setValue(newValue);\n      // Navigate to the last item after view updates\n      setTimeout(() => {\n        this.gallery()?.goToIndex(newValue.length - 1);\n      }, 1000);\n    },\n    updateFile: (predicate: (f: AXPFileListItem) => boolean, updater: (f: AXPFileListItem) => AXPFileListItem) => {\n      const currentFiles = this.getValue() ?? [];\n      const updatedFiles = currentFiles.map((f) => (predicate(f) ? updater(f) : f));\n      this.setValue(updatedFiles);\n    },\n    removeFile: (file: AXPFileListItem) => {\n      const currentFiles = this.getValue() ?? [];\n      this.setValue(currentFiles.filter((f) => f.id !== file.id));\n    },\n    clear: () => {\n      this.setValue([]);\n    },\n    getFileById: (id: string) => {\n      const files = this.getValue() ?? [];\n      return files.find((f) => f.id === id);\n    },\n    updateFileById: (id: string, next: Partial<AXPFileListItem>) => {\n      const currentFiles = this.getValue() ?? [];\n      const idx = currentFiles.findIndex((f) => f.id === id);\n      if (idx === -1) {\n        return;\n      }\n      const updatedFile = { ...currentFiles[idx], ...next } as AXPFileListItem;\n      const cloned = [...currentFiles];\n      cloned[idx] = updatedFile;\n      this.setValue(cloned);\n    },\n  };\n\n  /**\n   * Process files from various sources (file picker, drag-drop, etc.)\n   * This method is called by drag-and-drop handler\n   */\n  private async processFiles(files: File[]): Promise<void> {\n    // if no files are selected, return\n    if (files.length === 0) {\n      return;\n    }\n\n    // create the file list items from files\n    const newFileItems = files.map(\n      (file) =>\n        ({\n          id: AXPDataGenerator.uuid(),\n          name: file.name,\n          size: file.size,\n          status: 'attached',\n          source: {\n            kind: 'blob',\n            value: file,\n          },\n        }) as AXPFileListItem,\n    );\n\n    // allow plugins to transform items IN-PLACE before adding (no reassignment)\n    await this.hooks.runAsync<GalleryBeforeFilesAddedPayload>(GalleryWebhookKeys.BeforeFilesAdded, {\n      host: this,\n      newFiles: newFileItems,\n    });\n\n    const newValue = [...(this.getValue() ?? []), ...newFileItems];\n    this.setValue(newValue);\n\n    await this.hooks.runAsync<GalleryAfterFilesAddedPayload>(GalleryWebhookKeys.AfterFilesAdded, {\n      host: this,\n      newFiles: newFileItems,\n    });\n    setTimeout(() => {\n      this.gallery()?.goToIndex(newValue.length - 1);\n    }, 100);\n  }\n\n  //#region ----   Drag & Drop Handlers   ----\n  onFileChange(event: { event: Event; files: File[] }) {\n    this.processFiles(event.files);\n  }\n  //#endregion\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXImageModule } from '@acorex/components/image';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXLoadingDialogService } from '@acorex/components/loading-dialog';\nimport { AXMediaViewerModule } from '@acorex/components/media-viewer';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, Signal, WritableSignal, computed, inject, signal } from '@angular/core';\nimport { AXPMediaInfo, AXPMediaItem } from './gallery-widget-types';\n\n@Component({\n  selector: 'axp-gallery-widget-view',\n  template: `\n    <div class=\"ax-grid ax-grid-cols-12 ax-gap-2\">\n      @if (internalValue().length) {\n        @if (header()) {\n          <div class=\"ax-col-start-1 ax-col-end-13 ax-flex ax-justify-end ax-gap-2 ax-mb-2\">\n            @if (downloadButton()) {\n              <ax-button class=\"ax-sm\" look=\"blank\" (click)=\"download()\">\n                <ax-icon icon=\"fa-light fa-download\"></ax-icon>\n              </ax-button>\n            }\n            @if (fullScreenButton()) {\n              <ax-fullscreen-button></ax-fullscreen-button>\n            }\n          </div>\n        }\n        <div class=\"ax-flex ax-items-center ax-justify-between ax-rounded-lg  ax-col-start-1 ax-col-end-13\">\n          <div class=\"ax-flex ax-items-center md:ax-justify-start ax-justify-center ax-w-full ax-gap-3\">\n            <div class=\"ax-flex ax-flex-col ax-items-center ax-gap-4\">\n              @switch (getMediaInfo(activeMedia()?.name || '').format) {\n                @case ('video') {\n                  <video\n                    class=\"ax-rounded-lg ax-h-48 md:ax-h-72 ax-w-auto ax-shadow-md\"\n                    controls\n                    [src]=\"activeMedia()?.url\"\n                  ></video>\n                }\n                @case ('image') {\n                  <ax-image class=\"ax-rounded-lg ax-h-48 md:ax-h-72 ax-w-auto\" [src]=\"activeMedia()?.url\">\n                    <ax-loading></ax-loading>\n                    <ax-placeholder>\n                      <div\n                        class=\"ax-w-96 ax-h-72 ax-gap-4 ax-flex ax-flex-col ax-items-center ax-justify-center ax-border ax-rounded-lg\"\n                      >\n                        <ax-icon class=\"fa-solid fa-circle-exclamation ax-text-2xl\"> </ax-icon>\n                        <span>Connection Error!</span>\n                      </div>\n                    </ax-placeholder>\n                  </ax-image>\n                }\n                @case ('audio') {\n                  <audio controls class=\"ax-rounded-lg\">\n                    <source [src]=\"activeMedia()?.url\" type=\"audio/mp3\" />\n                  </audio>\n                }\n              }\n              <div class=\"ax-flex ax-gap-4 ax-overflow-x-auto ax-max-w-[320px] lg:ax-max-w-[480px] ax-pb-2\">\n                @for (media of thumbnails(); track $index) {\n                  @if (getMediaInfo(media.name); as mediaInfo) {\n                    <div\n                      class=\"hover:ax-opacity-75 ax-transition-all ax-relative ax-cursor-pointer ax-flex ax-justify-center ax-items-center\"\n                      (click)=\"changeMediaSelected(media)\"\n                    >\n                      <ax-image\n                        class=\"ax-w-16 ax-brightness-50 ax-h-16 ax-rounded-lg ax-shadow-md ax-filter\"\n                        [src]=\"mediaInfo.format == 'image' ? media.url : media.posterUrl\"\n                      ></ax-image>\n                      <div class=\"ax-absolute ax-text-neutral-300 ax-text-xl\">\n                        <ax-icon [class]=\"mediaInfo.icon\"> </ax-icon>\n                      </div>\n                    </div>\n                  }\n                }\n              </div>\n            </div>\n          </div>\n        </div>\n      } @else {\n        <!-- Empty State -->\n        <axp-state-message\n          icon=\"fa-light fa-images\"\n          [title]=\"'@general:no-media.title'\"\n          [description]=\"'@general:no-media.description'\"\n        >\n        </axp-state-message>\n      }\n    </div>\n  `,\n  host: {\n    class: 'ax-block',\n    '[style.height]': 'height()',\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    AXImageModule,\n    AXDecoratorModule,\n    AXLoadingModule,\n    AXPStateMessageComponent,\n    AXButtonModule,\n    AXMediaViewerModule,\n  ],\n})\nexport class AXPGalleryWidgetViewComponent extends AXPValueWidgetComponent<any> {\n  private readonly loadingDialog = inject(AXLoadingDialogService);\n  private readonly translationService = inject(AXTranslationService);\n\n  protected internalValue = computed(() => {\n    const parsedValue = this.getValue() ? JSON.parse(this.getValue()) : [];\n    return Array.isArray(parsedValue) ? parsedValue.map((c) => c) : [parsedValue];\n  });\n  protected multiple = computed<boolean>(() => this.options()['multiple'] as boolean);\n  protected height = computed<string>(() => (this.options()['height'] as string) ?? 30);\n  protected header = computed<boolean>(() => (this.options()['header'] as boolean) ?? true);\n  protected fullScreenButton = computed<boolean>(() => (this.options()['fullScreenButton'] as boolean) ?? true);\n  protected downloadButton = computed<boolean>(() => (this.options()['downloadButton'] as boolean) ?? true);\n\n  protected thumbnails: Signal<AXPMediaItem[]> = computed(() =>\n    this.internalValue().filter((i) => i.id !== this.activeMedia()?.id),\n  );\n  protected activeMedia: WritableSignal<AXPMediaItem | undefined> = signal(undefined);\n\n  ngAfterViewInit(): void {\n    this.activeMedia.set(this.internalValue()[0]);\n  }\n\n  changeMediaSelected(media: AXPMediaItem) {\n    this.activeMedia.set(media);\n  }\n\n  /** Downloads the currently active media file. */\n  protected async download(): Promise<void> {\n    const media = this.activeMedia();\n    if (!media?.url) {\n      return;\n    }\n\n    const loadingDialogRef = this.loadingDialog.show({\n      title: await this.translationService.translateAsync('@general:actions.download.processing'),\n      mode: 'indeterminate',\n      progressColor: 'primary',\n      status: await this.translationService.translateAsync('@general:actions.download.processing'),\n    });\n\n    try {\n      const link = document.createElement('a');\n      link.href = media.url;\n      link.download = media.name ?? 'download';\n      link.target = '_blank';\n      link.rel = 'noopener noreferrer';\n      link.click();\n    } finally {\n      loadingDialogRef.close();\n    }\n  }\n\n  protected getMediaInfo(mediaName: string): AXPMediaInfo {\n    const extension = mediaName.split('.').pop()?.toLowerCase();\n\n    switch (extension) {\n      case 'jpg':\n      case 'jpeg':\n      case 'png':\n      case 'gif':\n      case 'bmp':\n        return { icon: '', format: 'image' };\n\n      case 'mp4':\n      case 'avi':\n      case 'mkv':\n      case 'mov':\n        return { icon: 'fa-regular fa-play', format: 'video' };\n\n      case 'mp3':\n      case 'wav':\n      case 'ogg':\n        return { icon: 'fa-regular fa-volume-high', format: 'audio' };\n\n      default:\n        return { icon: '', format: 'image' };\n    }\n  }\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, createBooleanProperty } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_ADVANCE_SUB_MEDIA } from '@acorex/platform/layout/widget-core';\nimport { AXP_BEHAVIOR_PROPERTY_GROUP, AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\n\nexport const AXPGalleryWidget: AXPWidgetConfig = {\n  name: 'gallery',\n  title: '@platform-layout-widgets:widgets.gallery.title',\n  description: '@platform-layout-widgets:widgets.gallery.description',\n  icon: 'fa-light fa-images',\n  categories: [AXP_WIDGETS_ADVANCE_CATEGORY],\n  subCategory: AXP_WIDGETS_ADVANCE_SUB_MEDIA,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    createBooleanProperty({\n      name: 'thumbnail',\n      title: 'Thumbnail',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n      defaultValue: true,\n      path: 'options.thumbnail',\n    }),\n    createBooleanProperty({\n      name: 'header',\n      title: 'Header',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n      defaultValue: true,\n      path: 'options.header',\n    }),\n    createBooleanProperty({\n      name: 'fileInfo',\n      title: 'File Info',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n      defaultValue: true,\n      path: 'options.fileInfo',\n    }),\n    createBooleanProperty({\n      name: 'fullScreenButton',\n      title: 'Full Screen Button',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n      defaultValue: true,\n      path: 'options.fullScreenButton',\n    }),\n  ],\n  type: 'editor',\n  components: {\n    view: {\n      component: () => import('./gallery-widget-view.component').then((c) => c.AXPGalleryWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./gallery-widget-edit.component').then((c) => c.AXPGalleryWidgetEditComponent),\n    },\n    designer: {\n      component: () => import('./gallery-widget-edit.component').then((c) => c.AXPGalleryWidgetEditComponent),\n    },\n  },\n};\n\nexport interface AXPGalleryWidgetDesignerOptions {\n  thumbnail?: boolean;\n  header?: boolean;\n  fileInfo?: boolean;\n  fullScreenButton?: boolean;\n}\n\nexport interface AXPGalleryWidgetViewOptions {\n  multiple?: boolean;\n}\n\nexport interface AXPGalleryWidgetEditOptions {\n  thumbnail?: boolean;\n  header?: boolean;\n  fileInfo?: boolean;\n  fullScreenButton?: boolean;\n}\n\nexport interface AXPGalleryWidgetPrintOptions {}\n\nexport interface AXPGalleryWidgetOptions {\n  designer: AXPGalleryWidgetDesignerOptions;\n  view: AXPGalleryWidgetViewOptions;\n  edit: AXPGalleryWidgetEditOptions;\n  print: AXPGalleryWidgetPrintOptions;\n}\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    gallery: 'gallery';\n  }\n}\n","import type { AXPWidgetNode } from '@acorex/platform/contracts';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { AXPImageMarkerWidgetPoint } from './image-marker-widget-types';\n\n@Component({\n  imports: [AXPWidgetCoreModule],\n  template: `\n    <axp-widgets-container>\n      <ng-container axp-widget-renderer [node]=\"node\" mode=\"view\"></ng-container>\n    </axp-widgets-container>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPImageMarkerPopupComponent extends AXBasePageComponent {\n  options: {};\n  value: AXPImageMarkerWidgetPoint[];\n\n  node: AXPWidgetNode;\n\n  protected override ngOnInit(): void {\n    this.node = {\n      name: 'image-marker-popup-view',\n      type: 'image-marker',\n      options: this.options,\n      defaultValue: this.value,\n    };\n  }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPLayoutBuilderService, IActionBuilder } from '@acorex/platform/layout/builder';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, OnDestroy, signal } from '@angular/core';\nimport { AXPImageMarkerWidgetComponentOptions, AXPImageMarkerWidgetPoint } from './image-marker-widget-types';\n\n@Component({\n  selector: 'axp-image-marker-widget-column',\n  imports: [AXButtonModule, AXDecoratorModule],\n  template: `\n    <div class=\"ax-flex ax-items-center ax-gap-2\">\n      <span> Image </span>\n      <ax-button color=\"default\" (click)=\"showPopup()\">\n        <ax-icon>\n          <i class=\"fa-regular fa-info-image\"></i>\n        </ax-icon>\n      </ax-button>\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPImageMarkerWidgetColumnComponent\n  extends AXPColumnWidgetComponent<AXPImageMarkerWidgetPoint[]>\n  implements OnDestroy\n{\n  private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n\n  private rawImage = computed(() => (this.options as AXPImageMarkerWidgetComponentOptions)?.image);\n  private rawPoints = () => this.rawValue;\n  imageUrl = signal<string | null>(null);\n\n  constructor() {\n    super();\n    effect(() => {\n      const imageSource = this.rawImage();\n      const currentUrl = this.imageUrl();\n      if (currentUrl && currentUrl.startsWith('blob:')) {\n        URL.revokeObjectURL(currentUrl);\n      }\n      if (typeof imageSource === 'string') {\n        this.imageUrl.set(imageSource);\n      } else if (imageSource instanceof URL) {\n        this.imageUrl.set(imageSource.href);\n      } else if (imageSource instanceof Blob) {\n        this.imageUrl.set(URL.createObjectURL(imageSource));\n      } else if (imageSource instanceof ArrayBuffer) {\n        const blob = new Blob([imageSource]);\n        this.imageUrl.set(URL.createObjectURL(blob));\n      } else {\n        this.imageUrl.set(null);\n      }\n    });\n  }\n\n  async showPopup(): Promise<void> {\n    const url = this.imageUrl();\n    if (!url) {\n      return;\n    }\n    const opts = this.options as AXPImageMarkerWidgetComponentOptions;\n    const ref = await this.layoutBuilder\n      .create()\n      .dialog((dialog) => {\n        dialog\n          .setTitle('Image Marker')\n          .setSize('lg')\n          .setContext({ value: this.rawPoints() })\n          .content((layoutBuilder) => {\n            layoutBuilder.flex((flex) => {\n              flex.mode('view').formField('Marker', (field) => {\n                field.path('value');\n                field.customWidget('image-marker', {\n                  width: opts?.width,\n                  radius: opts?.radius,\n                  color: opts?.color,\n                  showGrid: opts?.showGrid,\n                  gridColor: opts?.gridColor,\n                  gridX: opts?.gridX,\n                  gridY: opts?.gridY,\n                  image: url,\n                });\n              });\n            });\n          })\n          .setActions((actions: IActionBuilder) => {\n            actions.cancel('@general:actions.cancel.title');\n          });\n      })\n      .show();\n    ref.close();\n  }\n\n  ngOnDestroy(): void {\n    const currentUrl = this.imageUrl();\n    if (currentUrl && currentUrl.startsWith('blob:')) {\n      URL.revokeObjectURL(currentUrl);\n    }\n  }\n}\n","import { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  effect,\n  ElementRef,\n  OnDestroy,\n  signal,\n  viewChild,\n} from '@angular/core';\nimport { AXPImageMarkerWidgetComponentOptions, AXPImageMarkerWidgetPoint } from './image-marker-widget-types';\n\n@Component({\n  selector: 'axp-image-marker-widget-edit',\n  imports: [],\n  template: `\n    <div class=\"ax-p-4\">\n      @if (imageUrl()) {\n        <div class=\"ax-cursor-crosshair ax-w-fit ax-relative\" (pointerdown)=\"addPoint($event)\">\n          <img\n            #imageRef\n            class=\" ax-h-auto ax-block ax-pointer-events-none ax-select-none\"\n            [src]=\"imageUrl()\"\n            [style.width]=\"width()\"\n            (load)=\"handleImageLoad($event)\"\n          />\n          @if (isImageLoaded()) {\n            @if (showGrid()) {\n              <svg style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%\">\n                @for (line of gridLines().vertical; track $index) {\n                  <line\n                    [attr.x1]=\"line\"\n                    [attr.y1]=\"0\"\n                    [attr.x2]=\"line\"\n                    [attr.y2]=\"'100%'\"\n                    [attr.stroke]=\"gridColor()\"\n                  />\n                }\n                @for (line of gridLines().horizontal; track $index) {\n                  <line\n                    [attr.x1]=\"0\"\n                    [attr.y1]=\"line\"\n                    [attr.x2]=\"'100%'\"\n                    [attr.y2]=\"line\"\n                    [attr.stroke]=\"gridColor()\"\n                  />\n                }\n              </svg>\n            }\n            @for (point of points(); track $index) {\n              <div\n                [style.left]=\"point.x + '%'\"\n                [style.top]=\"point.y + '%'\"\n                [style.width.px]=\"radius() * 2\"\n                [style.height.px]=\"radius() * 2\"\n                [style.background]=\"color()\"\n                style=\"position: absolute; border-radius: 50%; transform: translate(-50%, -50%);\"\n                (pointerdown)=\"removePoint($index, $event)\"\n              ></div>\n            }\n          }\n        </div>\n      }\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPImageMarkerWidgetEditComponent\n  extends AXPValueWidgetComponent<AXPImageMarkerWidgetPoint[]>\n  implements OnDestroy\n{\n  protected isImageLoaded = signal<boolean>(false);\n  imageRef = viewChild.required<ElementRef<HTMLImageElement>>('imageRef');\n\n  width = computed(() => (this.options() as AXPImageMarkerWidgetComponentOptions)?.width ?? '100%');\n  radius = computed(() => (this.options() as AXPImageMarkerWidgetComponentOptions)?.radius ?? 5);\n  color = computed(() => (this.options() as AXPImageMarkerWidgetComponentOptions)?.color ?? '#ff0000');\n  points = computed(() => this.getValue() ?? []);\n\n  showGrid = computed(() => (this.options() as AXPImageMarkerWidgetComponentOptions)?.showGrid ?? false);\n  gridColor = computed(() => (this.options() as AXPImageMarkerWidgetComponentOptions)?.gridColor ?? '#00000010');\n  gridX = computed(() => (this.options() as AXPImageMarkerWidgetComponentOptions)?.gridX ?? 10);\n  gridY = computed(() => (this.options() as AXPImageMarkerWidgetComponentOptions)?.gridY ?? 10);\n\n  gridLines = computed(() => {\n    const vertical: string[] = [];\n    const horizontal: string[] = [];\n    const xStep = 100 / this.gridX();\n    const yStep = 100 / this.gridY();\n\n    for (let i = 1; i < this.gridX(); i++) {\n      vertical.push(`${i * xStep}%`);\n    }\n    for (let i = 1; i < this.gridY(); i++) {\n      horizontal.push(`${i * yStep}%`);\n    }\n\n    return { vertical, horizontal };\n  });\n\n  private rawImage = computed(() => (this.options() as AXPImageMarkerWidgetComponentOptions)?.image);\n  imageUrl = signal<string | null>(null);\n\n  constructor() {\n    super();\n    effect(() => {\n      const imageSource = this.rawImage();\n      const currentUrl = this.imageUrl();\n      if (currentUrl && currentUrl.startsWith('blob:')) {\n        URL.revokeObjectURL(currentUrl);\n      }\n      if (typeof imageSource === 'string') {\n        this.imageUrl.set(imageSource);\n      } else if (imageSource instanceof URL) {\n        this.imageUrl.set(imageSource.href);\n      } else if (imageSource instanceof Blob) {\n        this.imageUrl.set(URL.createObjectURL(imageSource));\n      } else if (imageSource instanceof ArrayBuffer) {\n        const blob = new Blob([imageSource]);\n        this.imageUrl.set(URL.createObjectURL(blob));\n      } else {\n        this.imageUrl.set(null);\n      }\n    });\n  }\n\n  handleImageLoad(event: Event) {\n    this.isImageLoaded.set(true);\n  }\n\n  addPoint(event: PointerEvent) {\n    if (!this.imageRef()?.nativeElement) {\n      return;\n    }\n    const rect = this.imageRef()?.nativeElement.getBoundingClientRect();\n    if (!rect || rect.width === 0 || rect.height === 0) {\n      return;\n    }\n    event.preventDefault();\n    const x = ((event.clientX - rect.left) / rect.width) * 100;\n    const y = ((event.clientY - rect.top) / rect.height) * 100;\n    this.setValue([...this.points(), { x, y }]);\n  }\n\n  removePoint(index: number, event: PointerEvent) {\n    event.stopPropagation();\n    const currentPoints = this.points();\n    this.setValue(currentPoints.filter((_, i) => i !== index));\n  }\n\n  ngOnDestroy(): void {\n    const currentUrl = this.imageUrl();\n    if (currentUrl && currentUrl.startsWith('blob:')) {\n      URL.revokeObjectURL(currentUrl);\n    }\n  }\n}\n","import { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, effect, OnDestroy, signal } from '@angular/core';\nimport { AXPImageMarkerWidgetComponentOptions, AXPImageMarkerWidgetPoint } from './image-marker-widget-types';\n\n@Component({\n  selector: 'axp-image-marker-widget-view',\n  imports: [],\n  template: `\n    @if (imageUrl()) {\n      <div [style.width]=\"width()\" style=\"position: relative; height: auto;\">\n        <img [src]=\"imageUrl()\" style=\"width: 100%; height: auto;\" (load)=\"handleImageLoad($event)\" />\n        @for (point of points(); track $index) {\n          <div\n            [style.left]=\"point.x + '%'\"\n            [style.top]=\"point.y + '%'\"\n            [style.width.px]=\"radius() * 2\"\n            [style.height.px]=\"radius() * 2\"\n            [style.background]=\"color()\"\n            style=\"position: absolute; border-radius: 50%; transform: translate(-50%, -50%);\"\n          ></div>\n        }\n      </div>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPImageMarkerWidgetViewComponent\n  extends AXPValueWidgetComponent<AXPImageMarkerWidgetPoint[]>\n  implements OnDestroy\n{\n  width = computed(() => (this.options() as AXPImageMarkerWidgetComponentOptions)?.width || '100%');\n  radius = computed(() => (this.options() as AXPImageMarkerWidgetComponentOptions)?.radius || 5);\n  color = computed(() => (this.options() as AXPImageMarkerWidgetComponentOptions)?.color || '#ff0000');\n  points = computed(() => this.getValue() || []);\n\n  private rawImage = computed(() => (this.options() as AXPImageMarkerWidgetComponentOptions)?.image);\n  protected imageUrl = signal<string | null>(null);\n  protected isImageLoaded = signal<boolean>(false);\n\n  constructor() {\n    super();\n    effect(() => {\n      const imageSource = this.rawImage();\n      const currentUrl = this.imageUrl();\n      if (currentUrl && currentUrl.startsWith('blob:')) {\n        URL.revokeObjectURL(currentUrl);\n      }\n      if (typeof imageSource === 'string') {\n        this.imageUrl.set(imageSource);\n      } else if (imageSource instanceof URL) {\n        this.imageUrl.set(imageSource.href);\n      } else if (imageSource instanceof Blob) {\n        this.imageUrl.set(URL.createObjectURL(imageSource));\n      } else if (imageSource instanceof ArrayBuffer) {\n        const blob = new Blob([imageSource]);\n        this.imageUrl.set(URL.createObjectURL(blob));\n      } else {\n        this.imageUrl.set(null);\n      }\n    });\n  }\n\n  handleImageLoad(event: Event) {\n    this.isImageLoaded.set(true);\n  }\n\n  ngOnDestroy(): void {\n    const currentUrl = this.imageUrl();\n    if (currentUrl && currentUrl.startsWith('blob:')) {\n      URL.revokeObjectURL(currentUrl);\n    }\n  }\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, createBooleanProperty, createNumberProperty, createStringProperty } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_ADVANCE_SUB_MEDIA } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_BEHAVIOR_PROPERTY_GROUP,\n  AXP_DATA_PATH_PROPERTY,\n  AXP_NAME_PROPERTY,\n  AXP_STYLING_PROPERTY_GROUP,\n} from '../../../properties';\n\nexport const AXPImageMarkerWidget: AXPWidgetConfig = {\n  name: 'image-marker',\n  title: '@platform-layout-widgets:widgets.image-marker.title',\n  description: '@platform-layout-widgets:widgets.image-marker.description',\n  icon: 'fa-light fa-map-marker-alt',\n  categories: [AXP_WIDGETS_ADVANCE_CATEGORY],\n  subCategory: AXP_WIDGETS_ADVANCE_SUB_MEDIA,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  type: 'editor',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    createStringProperty({ name: 'width', title: 'Width', path: 'options.width', group: AXP_STYLING_PROPERTY_GROUP }),\n    createNumberProperty({\n      name: 'radius',\n      title: 'Radius',\n      path: 'options.radius',\n      group: AXP_STYLING_PROPERTY_GROUP,\n    }),\n    createStringProperty({ name: 'color', title: 'Color', path: 'options.color', group: AXP_STYLING_PROPERTY_GROUP }),\n    createBooleanProperty({\n      name: 'showGrid',\n      title: 'Show Grid',\n      path: 'options.showGrid',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n    }),\n    createStringProperty({\n      name: 'gridColor',\n      title: 'Grid Color',\n      path: 'options.gridColor',\n      group: AXP_STYLING_PROPERTY_GROUP,\n    }),\n    createNumberProperty({ name: 'gridX', title: 'Grid X', path: 'options.gridX', group: AXP_BEHAVIOR_PROPERTY_GROUP }),\n    createNumberProperty({ name: 'gridY', title: 'Grid Y', path: 'options.gridY', group: AXP_BEHAVIOR_PROPERTY_GROUP }),\n    createStringProperty({\n      name: 'image',\n      title: 'Image Source',\n      path: 'options.image',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n    }),\n  ],\n  components: {\n    edit: {\n      component: () => import('./image-marker-widget-edit.component').then((c) => c.AXPImageMarkerWidgetEditComponent),\n    },\n    view: {\n      component: () => import('./image-marker-widget-view.component').then((c) => c.AXPImageMarkerWidgetViewComponent),\n    },\n    column: {\n      component: () =>\n        import('./image-marker-widget-column.component').then((c) => c.AXPImageMarkerWidgetColumnComponent),\n    },\n  },\n};\n\nexport interface AXPImageMarkerWidgetViewOptions {\n  width?: string;\n  radius?: number;\n  color?: string;\n  image?: string | URL | Blob | ArrayBuffer | null | undefined;\n}\n\nexport interface AXPImageMarkerWidgetEditOptions {\n  width?: string;\n  radius?: number;\n  color?: string;\n  showGrid?: boolean;\n  gridColor?: string;\n  gridX?: number;\n  gridY?: number;\n  image?: string | URL | Blob | ArrayBuffer | null | undefined;\n}\n\nexport interface AXPImageMarkerWidgetDesignerOptions {\n  width?: string;\n  radius?: number;\n  color?: string;\n  showGrid?: boolean;\n  gridColor?: string;\n  gridX?: number;\n  gridY?: number;\n  image?: string | URL | Blob | ArrayBuffer | null | undefined;\n}\n\nexport interface AXPImageMarkerWidgetColumnOptions {\n  image?: string | URL | Blob | ArrayBuffer | null | undefined;\n}\n\nexport interface AXPImageMarkerWidgetOptions {\n  view: AXPImageMarkerWidgetViewOptions;\n  edit: AXPImageMarkerWidgetEditOptions;\n  designer: AXPImageMarkerWidgetDesignerOptions;\n  column: AXPImageMarkerWidgetColumnOptions;\n}\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    imageMarker: 'image-marker';\n  }\n}\n","//#region ----   Imports   ----\n\nimport { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_ADVANCE_SUB_TOOLS } from '@acorex/platform/layout/widget-core';\nimport { AXP_NAME_PROPERTY } from '../../../properties';\n\n//#endregion\n\n//#region ----   Widget Config   ----\n\nexport const AXPIntegrationConnectionsPanelWidget: AXPWidgetConfig = {\n  name: 'integration-connections-panel',\n  title: '@platform-layout-widgets:widgets.integration-connections-panel.title',\n  description: '@platform-layout-widgets:widgets.integration-connections-panel.description',\n  icon: 'fa-light fa-plug',\n  categories: [AXP_WIDGETS_ADVANCE_CATEGORY],\n  subCategory: AXP_WIDGETS_ADVANCE_SUB_TOOLS,\n  groups: [AXPWidgetGroupEnum.UtilityWidget],\n  type: 'editor',\n  properties: [AXP_NAME_PROPERTY],\n  components: {\n    edit: {\n      component: () =>\n        import('./integration-connections-panel-widget-edit.component').then(\n          (c) => c.AXPIntegrationConnectionsPanelWidgetEditComponent,\n        ),\n    },\n    view: {\n      component: () =>\n        import('./integration-connections-panel-widget-edit.component').then(\n          (c) => c.AXPIntegrationConnectionsPanelWidgetEditComponent,\n        ),\n    },\n  },\n};\n\n//#endregion\n\nexport interface AXPIntegrationConnectionsPanelWidgetOptions {\n  disabled?: boolean;\n  /** When set, only the matching integration provider is shown. */\n  providerId?: string;\n}\n","//#region ---- Imports ----\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPasswordBoxModule } from '@acorex/components/password-box';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXP_INTEGRATION_AUTH_METHOD_TYPE, type AXPIntegrationProviderListItemDto, type AXPSafeIntegrationConnectionDto } from '@acorex/platform/contracts';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { AXPCommandService, AXPQueryService } from '@acorex/platform/runtime';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { defaultTo } from 'lodash-es';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst DEFAULT_CONNECT_COMMAND = 'IntegrationManagement.Connection:Connect';\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n  selector: 'axp-integration-connections-panel-widget-edit',\n  template: `\n    <div class=\"ax-flex ax-w-full ax-flex-col ax-gap-4\">\n      @if (loading()) {\n        <ax-loading></ax-loading>\n      } @else {\n        @for (provider of visibleProviders(); track provider.id) {\n          <section\n            class=\"ax-flex ax-flex-col ax-gap-4 ax-rounded-lg ax-border ax-border-surface ax-bg-lighter-surface ax-p-4\"\n          >\n            <div class=\"ax-flex ax-items-start ax-justify-between ax-gap-3\">\n              <div class=\"ax-flex ax-min-w-0 ax-items-center ax-gap-3\">\n                @if (provider.icon) {\n                  <ax-icon class=\"ax-text-lg\">\n                    <i [class]=\"provider.icon\"></i>\n                  </ax-icon>\n                }\n                <div class=\"ax-min-w-0\">\n                  <div class=\"ax-font-medium\">{{ provider.displayName | translate | async }}</div>\n                  @if (provider.description) {\n                    <div class=\"ax-text-sm ax-opacity-70\">{{ provider.description | translate | async }}</div>\n                  }\n                </div>\n              </div>\n\n              @if (provider.isConnected) {\n                <ax-button\n                  size=\"sm\"\n                  look=\"outline\"\n                  color=\"danger\"\n                  [text]=\"I18N + '.actions.disconnect' | translate | async\"\n                  (onClick)=\"disconnect(provider.id)\"\n                ></ax-button>\n              } @else {\n                <ax-button\n                  size=\"sm\"\n                  look=\"outline\"\n                  color=\"primary\"\n                  [text]=\"I18N + '.actions.connect' | translate | async\"\n                  (onClick)=\"handleConnect(provider)\"\n                ></ax-button>\n              }\n            </div>\n\n            @if (provider.isConnected && !isConnectedOAuth(provider.id)) {\n              <div class=\"ax-flex ax-flex-col ax-gap-3\">\n                <ax-form-field>\n                  <ax-label>{{ I18N + '.fields.display-name' | translate | async }}</ax-label>\n                  <ax-text-box\n                    [readonly]=\"true\"\n                    [ngModel]=\"formDisplayName()[provider.id]\"\n                  ></ax-text-box>\n                </ax-form-field>\n\n                <ax-form-field>\n                  <ax-label>{{ I18N + '.fields.instance-url' | translate | async }}</ax-label>\n                  <ax-text-box\n                    [readonly]=\"true\"\n                    [ngModel]=\"formInstanceUrl()[provider.id]\"\n                  ></ax-text-box>\n                </ax-form-field>\n\n                <ax-form-field>\n                  <ax-label>{{ primaryCredentialLabelKey(provider.id) | translate | async }}</ax-label>\n                  <ax-text-box\n                    [readonly]=\"true\"\n                    [ngModel]=\"connectedPrimaryValue(provider.id)\"\n                    [placeholder]=\"connectedSecretPreview(provider.id)\"\n                  ></ax-text-box>\n                </ax-form-field>\n\n                @if (showSecondaryCredential(provider.id)) {\n                  <ax-form-field>\n                    <ax-label>{{ secondaryCredentialLabelKey(provider.id) | translate | async }}</ax-label>\n                    <ax-password-box\n                      [readonly]=\"true\"\n                      [ngModel]=\"''\"\n                      [placeholder]=\"connectedSecretPreview(provider.id)\"\n                    ></ax-password-box>\n                  </ax-form-field>\n                }\n              </div>\n            }\n          </section>\n        }\n      }\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    AsyncPipe,\n    FormsModule,\n    AXButtonModule,\n    AXDecoratorModule,\n    AXFormModule,\n    AXLabelModule,\n    AXLoadingModule,\n    AXPasswordBoxModule,\n    AXTextBoxModule,\n    AXTranslationModule,\n  ],\n})\nexport class AXPIntegrationConnectionsPanelWidgetEditComponent extends AXPValueWidgetComponent<unknown> {\n  //#region ---- Constants ----\n\n  protected readonly I18N = '@platform-layout-widgets:widgets.integration-connections-panel';\n\n  //#endregion\n\n  //#region ---- Services & Dependencies ----\n\n  private readonly queryService = inject(AXPQueryService);\n  private readonly commandService = inject(AXPCommandService);\n\n  //#endregion\n\n  //#region ---- Computed ----\n\n  protected readonly providerIdFilter = computed(() => this.options()['providerId'] as string | undefined);\n\n  protected readonly visibleProviders = computed(() => {\n    const filter = this.providerIdFilter();\n    const list = this.providers();\n    if (!filter) {\n      return list;\n    }\n    return list.filter((provider) => provider.id === filter);\n  });\n\n  //#endregion\n\n  //#region ---- State ----\n\n  protected readonly loading = signal(true);\n  protected readonly providers = signal<AXPIntegrationProviderListItemDto[]>([]);\n  protected readonly connections = signal<AXPSafeIntegrationConnectionDto[]>([]);\n  protected readonly selectedAuthMethod = signal<Record<string, string>>({});\n  protected readonly formDisplayName = signal<Record<string, string>>({});\n  protected readonly formInstanceUrl = signal<Record<string, string>>({});\n  protected readonly formCredentialPrimary = signal<Record<string, string>>({});\n\n  //#endregion\n\n  //#region ---- Lifecycle ----\n\n  constructor() {\n    super();\n    void this.load();\n  }\n\n  //#endregion\n\n  //#region ---- Connection Helpers ----\n\n  protected getConnection(providerId: string): AXPSafeIntegrationConnectionDto | undefined {\n    return this.connections().find((item) => item.providerId === providerId);\n  }\n\n  protected isConnectedOAuth(providerId: string): boolean {\n    const connection = this.getConnection(providerId);\n    return connection?.authMethodType === AXP_INTEGRATION_AUTH_METHOD_TYPE.OAuth2;\n  }\n\n  protected connectedPrimaryValue(providerId: string): string {\n    const connection = this.getConnection(providerId);\n    return defaultTo(\n      this.formCredentialPrimary()[providerId],\n      defaultTo(connection?.externalAccountName, ''),\n    );\n  }\n\n  protected connectedSecretPreview(providerId: string): string {\n    return defaultTo(this.getConnection(providerId)?.secretPreview, '');\n  }\n\n  protected isBasic(providerId: string): boolean {\n    return this.selectedAuthMethod()[providerId] === AXP_INTEGRATION_AUTH_METHOD_TYPE.Basic;\n  }\n\n  protected isApiToken(providerId: string): boolean {\n    return this.selectedAuthMethod()[providerId] === AXP_INTEGRATION_AUTH_METHOD_TYPE.ApiToken;\n  }\n\n  protected showSecondaryCredential(providerId: string): boolean {\n    return this.isBasic(providerId) || this.isApiToken(providerId);\n  }\n\n  protected primaryCredentialLabelKey(providerId: string): string {\n    if (this.isBasic(providerId)) {\n      return `${this.I18N}.fields.username`;\n    }\n    if (this.isApiToken(providerId)) {\n      return `${this.I18N}.fields.email`;\n    }\n    return `${this.I18N}.fields.token`;\n  }\n\n  protected secondaryCredentialLabelKey(providerId: string): string {\n    if (this.isApiToken(providerId)) {\n      return `${this.I18N}.fields.api-token`;\n    }\n    return `${this.I18N}.fields.password`;\n  }\n\n  //#endregion\n\n  //#region ---- Connect Flow ----\n\n  protected async handleConnect(provider: AXPIntegrationProviderListItemDto): Promise<void> {\n    const commandKey = defaultTo(provider.connectCommandKey, DEFAULT_CONNECT_COMMAND);\n    const result = await this.commandService.execute(commandKey, { providerId: provider.id });\n\n    if (!result?.success) {\n      return;\n    }\n\n    const data = result.data as { outcome?: string; redirectUrl?: string } | undefined;\n    if (data?.outcome === 'redirect' && data.redirectUrl) {\n      window.location.assign(data.redirectUrl);\n      return;\n    }\n\n    await this.load();\n  }\n\n  protected async disconnect(providerId: string): Promise<void> {\n    const connection = this.getConnection(providerId);\n    if (!connection) {\n      return;\n    }\n    await this.commandService.execute('IntegrationManagement.Connection:Disconnect', {\n      connectionId: connection.id,\n    });\n    await this.load();\n  }\n\n  //#endregion\n\n  //#region ---- Form State ----\n\n  private populateConnectionFormState(\n    providers: AXPIntegrationProviderListItemDto[],\n    connections: AXPSafeIntegrationConnectionDto[],\n  ): void {\n    const authDefaults: Record<string, string> = {};\n    const displayNames: Record<string, string> = {};\n    const instanceUrls: Record<string, string> = {};\n    const credentialPrimary: Record<string, string> = {};\n\n    for (const provider of providers) {\n      authDefaults[provider.id] = provider.authMethodTypes[0];\n    }\n\n    for (const connection of connections) {\n      authDefaults[connection.providerId] = connection.authMethodType;\n      displayNames[connection.providerId] = connection.displayName;\n      instanceUrls[connection.providerId] = defaultTo(connection.instanceUrl, '');\n      if (connection.externalAccountName) {\n        credentialPrimary[connection.providerId] = connection.externalAccountName;\n      }\n    }\n\n    this.selectedAuthMethod.set(authDefaults);\n    this.formDisplayName.set(displayNames);\n    this.formInstanceUrl.set(instanceUrls);\n    this.formCredentialPrimary.set(credentialPrimary);\n  }\n\n  //#endregion\n\n  //#region ---- Data Loading ----\n\n  private async load(): Promise<void> {\n    this.loading.set(true);\n    try {\n      const providersResult = await this.queryService.fetch<\n        { includeConnectionStatus?: boolean },\n        AXPIntegrationProviderListItemDto[]\n      >('IntegrationManagement.Provider:List', { includeConnectionStatus: true });\n      const connectionsResult = await this.queryService.fetch<\n        Record<string, never>,\n        AXPSafeIntegrationConnectionDto[]\n      >('IntegrationManagement.Connection:ListMine', {});\n\n      const providers = providersResult ?? [];\n      const connections = connectionsResult ?? [];\n\n      this.providers.set(providers);\n      this.connections.set(connections);\n      this.populateConnectionFormState(providers, connections);\n    } finally {\n      this.loading.set(false);\n    }\n  }\n\n  //#endregion\n}\n\n//#endregion\n","//#region ----   Imports   ----\n\nimport { AXJsonViewerModule } from '@acorex/components/json-viewer';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\n//#endregion\n\n//#region ----   Component   ----\n\n@Component({\n  selector: 'axp-json-viewer-widget-view',\n  template: `\n    <div class=\"ax-w-full\">\n      <ax-json-viewer [json]=\"jsonValue()\"></ax-json-viewer>\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXJsonViewerModule],\n  host: {\n    class: 'ax-block ax-w-full',\n  },\n})\nexport class AXPJsonViewerWidgetViewComponent extends AXPValueWidgetComponent<any> {\n  //#region ----   Computed Properties   ----\n\n  protected jsonValue = computed(() => {\n    const value = this.getValue();\n    // If value is already an object, return it directly\n    if (value && typeof value === 'object') {\n      return value;\n    }\n    // If value is a string, try to parse it as JSON\n    if (typeof value === 'string') {\n      try {\n        return JSON.parse(value);\n      } catch {\n        // If parsing fails, return the string wrapped in an object\n        return { value };\n      }\n    }\n    // For other types, wrap in an object\n    return value !== null && value !== undefined ? { value } : {};\n  });\n\n  //#endregion\n}\n\n//#endregion\n\n","//#region ----   Imports   ----\n\nimport { AXJsonViewerModule } from '@acorex/components/json-viewer';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\n//#endregion\n\n//#region ----   Component   ----\n\n@Component({\n  selector: 'axp-json-viewer-widget-edit',\n  template: `\n    <div class=\"ax-w-full\">\n      <ax-json-viewer [json]=\"jsonValue()\"></ax-json-viewer>\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXJsonViewerModule],\n  host: {\n    class: 'ax-block ax-w-full',\n  },\n})\nexport class AXPJsonViewerWidgetEditComponent extends AXPValueWidgetComponent<any> {\n  //#region ----   Computed Properties   ----\n\n  protected jsonValue = computed(() => {\n    const value = this.getValue();\n    // If value is already an object, return it directly\n    if (value && typeof value === 'object') {\n      return value;\n    }\n    // If value is a string, try to parse it as JSON\n    if (typeof value === 'string') {\n      try {\n        return JSON.parse(value);\n      } catch {\n        // If parsing fails, return the string wrapped in an object\n        return { value };\n      }\n    }\n    // For other types, wrap in an object\n    return value !== null && value !== undefined ? { value } : {};\n  });\n\n  //#endregion\n}\n\n//#endregion\n\n","//#region ----   Imports   ----\n\nimport { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_ADVANCE_SUB_DATA } from '@acorex/platform/layout/widget-core';\nimport {\n    AXP_DATA_PATH_PROPERTY,\n    AXP_DISABLED_PROPERTY,\n    AXP_NAME_PROPERTY,\n} from '../../../properties';\n\n//#endregion\n\n//#region ----   Widget Config   ----\n\nexport const AXPJsonViewerWidget: AXPWidgetConfig = {\n    name: 'json-viewer',\n    title: '@platform-layout-widgets:widgets.json-viewer.title',\n    description: '@platform-layout-widgets:widgets.json-viewer.description',\n    icon: 'fa-light fa-code',\n    categories: [AXP_WIDGETS_ADVANCE_CATEGORY],\n  subCategory: AXP_WIDGETS_ADVANCE_SUB_DATA,\n    groups: [AXPWidgetGroupEnum.BaseWidget],\n    type: 'editor',\n    properties: [\n        AXP_NAME_PROPERTY,\n        AXP_DATA_PATH_PROPERTY,\n        AXP_DISABLED_PROPERTY,\n    ],\n    components: {\n        view: {\n            component: () => import('./json-viewer-widget-view.component').then((c) => c.AXPJsonViewerWidgetViewComponent),\n        },\n        edit: {\n            component: () => import('./json-viewer-widget-edit.component').then((c) => c.AXPJsonViewerWidgetEditComponent),\n        },\n        designer: {\n            component: () => import('./json-viewer-widget-edit.component').then((c) => c.AXPJsonViewerWidgetEditComponent),\n        },\n    },\n};\n\n//#endregion\n\n//#region ----   Widget Options Interfaces   ----\n\nexport interface AXPJsonViewerWidgetOptions {\n    designer: Record<string, never>;\n    view: Record<string, never>;\n    edit: Record<string, never>;\n}\n\n//#endregion\n\n","//#region ----   Imports   ----\n\nimport { AXPOutcomeResultsViewerComponent } from '@acorex/platform/layout/components';\nimport type { AXPOutcomeResultsViewModel } from '@acorex/platform/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\n//#endregion\n\n//#region ----   Component   ----\n\n@Component({\n  selector: 'axp-outcome-results-viewer-widget-view',\n  template: `\n    <axp-outcome-results-viewer class=\"ax-w-full\" [model]=\"viewModel()\" />\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPOutcomeResultsViewerComponent],\n  host: { class: 'ax-block ax-w-full' },\n})\nexport class AXPOutcomeResultsViewerWidgetViewComponent extends AXPValueWidgetComponent<AXPOutcomeResultsViewModel> {\n  //#region ----   Computed   ----\n\n  protected readonly viewModel = computed(() => {\n    const value = this.getValue();\n    if (value && typeof value === 'object') {\n      return value as AXPOutcomeResultsViewModel;\n    }\n    return null;\n  });\n\n  //#endregion\n}\n\n//#endregion\n","//#region ----   Imports   ----\n\nimport { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_ADVANCE_SUB_DATA } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\n\n//#endregion\n\n//#region ----   Widget config   ----\n\nexport const AXPOutcomeResultsViewerWidget: AXPWidgetConfig = {\n  name: 'outcome-results-viewer',\n  title: '@platform-layout-widgets:widgets.outcome-results-viewer.title',\n  description: '@platform-layout-widgets:widgets.outcome-results-viewer.description',\n  icon: 'fa-light fa-list-check',\n  categories: [AXP_WIDGETS_ADVANCE_CATEGORY],\n  subCategory: AXP_WIDGETS_ADVANCE_SUB_DATA,\n  groups: [AXPWidgetGroupEnum.BaseWidget],\n  type: 'editor',\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n  components: {\n    view: {\n      component: () =>\n        import('./outcome-results-viewer-widget-view.component').then(\n          (c) => c.AXPOutcomeResultsViewerWidgetViewComponent,\n        ),\n    },\n    edit: {\n      component: () =>\n        import('./outcome-results-viewer-widget-view.component').then(\n          (c) => c.AXPOutcomeResultsViewerWidgetViewComponent,\n        ),\n    },\n    designer: {\n      component: () =>\n        import('./outcome-results-viewer-widget-view.component').then(\n          (c) => c.AXPOutcomeResultsViewerWidgetViewComponent,\n        ),\n    },\n  },\n};\n\n//#endregion\n\n//#region ----   Widget options   ----\n\nexport interface AXPOutcomeResultsViewerWidgetOptions {\n  designer: {\n    title?: string;\n    emptyMessage?: string;\n  };\n  view: {\n    title?: string;\n    emptyMessage?: string;\n  };\n  edit: {\n    title?: string;\n    emptyMessage?: string;\n  };\n}\n\n//#endregion\n","import {\n  AXMapCircle,\n  AXMapData,\n  AXMapMarker,\n  AXMapModule,\n  AXMapPolygon,\n  AXMapPolyline,\n  AXMapRectangle,\n  AXPoiMarker,\n} from '@acorex/components/map';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport {\n  afterNextRender,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  computed,\n  HostBinding,\n  inject,\n  ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n  selector: 'axp-map-box-widget-edit',\n  template: ` <div [style.height.px]=\"height()\" class=\"ax-w-full\">\n    <ax-map\n      class=\"ax-h-full\"\n      (onMarkerChanged)=\"onMarkerChanged($event)\"\n      (onPolygonChanged)=\"onPolygonChanged($event)\"\n      (onPolylineChanged)=\"onPolylineChanged($event)\"\n      (onRectangleChanged)=\"onRectangleChanged($event)\"\n      (onCircleChanged)=\"onCircleChanged($event)\"\n      [hasLocator]=\"hasLocate()\"\n      [hasDraw]=\"hasDraw()\"\n      [latitude]=\"latitude()\"\n      [longitude]=\"longitude()\"\n      [zoomLevel]=\"zoomLevel()\"\n      [maxMarker]=\"maxMarker()\"\n      [maxPolygon]=\"maxPolygon()\"\n      [maxPolyline]=\"maxPolyline()\"\n      [maxRectangle]=\"maxRectangle()\"\n      [maxCircle]=\"maxCircle()\"\n      [markers]=\"markers()\"\n      [polygons]=\"polygons()\"\n      [polylines]=\"polylines()\"\n      [rectangles]=\"rectangles()\"\n      [circles]=\"circles()\"\n      [fitToDraw]=\"fitToDraw()\"\n      [limitDraw]=\"limitDraw()!\"\n      [pois]=\"pois()\"\n      [disabled]=\"disabled()\"\n      [readonly]=\"readonly()\"\n    >\n    </ax-map>\n  </div>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXMapModule],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class AXPMapWidgetEditComponent extends AXPValueWidgetComponent<AXMapData | undefined> {\n  cdr = inject(ChangeDetectorRef);\n\n  markers = computed(() => this.getValue()?.markers ?? []);\n  polygons = computed(() => this.getValue()?.polygons ?? []);\n  polylines = computed(() => this.getValue()?.polylines ?? []);\n  rectangles = computed(() => this.getValue()?.rectangles ?? []);\n  circles = computed(() => this.getValue()?.circles ?? []);\n  hasDraw = computed<boolean>(() => this.options()['hasDraw'] ?? false);\n  hasLocate = computed<boolean>(() => this.options()['hasLocate'] ?? false);\n  maxMarker = computed<number>(() => this.options()['maxMarker'] ?? 1);\n  maxPolygon = computed<number>(() => this.options()['maxPolygon'] ?? 1);\n  maxPolyline = computed<number>(() => this.options()['maxPolyline'] ?? 1);\n  maxRectangle = computed<number>(() => this.options()['maxRectangle'] ?? 1);\n  maxCircle = computed<number>(() => this.options()['maxCircle'] ?? 1);\n  zoomLevel = computed<number>(() => this.options()['zoomLevel'] ?? 13);\n  latitude = computed<number>(() => this.options()['latitude'] ?? 35);\n  longitude = computed<number>(() => this.options()['longitude'] ?? 51);\n  height = computed<number>(() => this.options()['height'] ?? 300);\n  fitToDraw = computed<boolean>(() => this.options()['fitToDraw'] ?? false);\n  limitDraw = computed<AXMapPolygon[] | undefined>(() => this.options()?.['limitDraw'] ?? undefined);\n  pois = computed<AXPoiMarker[]>(() => this.options()['pois'] ?? []);\n  disabled = computed<boolean>(() => this.options()['disabled'] ?? false);\n  readonly = computed<boolean>(() => this.options()['readonly'] ?? false);\n  onMarkerChanged($event: AXMapMarker[]) {\n    this.setValue({ ...this.mapData(), markers: $event });\n  }\n\n  onPolygonChanged($event: AXMapPolygon[]) {\n    this.setValue({ ...this.mapData(), polygons: $event });\n  }\n\n  onPolylineChanged($event: AXMapPolyline[]) {\n    this.setValue({ ...this.mapData(), polylines: $event });\n  }\n\n  onRectangleChanged($event: AXMapRectangle[]) {\n    this.setValue({ ...this.mapData(), rectangles: $event });\n  }\n\n  onCircleChanged($event: AXMapCircle[]) {\n    this.setValue({ ...this.mapData(), circles: $event });\n  }\n\n  private mapData(): AXMapData {\n    const value = this.getValue();\n\n    return {\n      markers: value?.markers ?? [],\n      polygons: value?.polygons ?? [],\n      polylines: value?.polylines ?? [],\n      rectangles: value?.rectangles ?? [],\n      circles: value?.circles ?? [],\n      pois: value?.pois ?? [],\n    };\n  }\n\n  constructor() {\n    super();\n    this.beginHydration();\n  }\n\n  #af = afterNextRender(() => {\n    this.endHydration();\n  });\n\n  @HostBinding('class')\n  private get __class(): string {\n    const cls: any = {};\n    cls[`ax-block`] = true;\n    cls[`ax-flex-1`] = true;\n    return cls;\n  }\n}\n","import { AXMapData, AXMapModule } from '@acorex/components/map';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { afterNextRender, ChangeDetectionStrategy, Component, computed, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'axp-map-box-widget-view',\n  template: `<div [style.height.px]=\"height()\" class=\"ax-w-full\">\n    <ax-map\n      [polygons]=\"polygons()\"\n      [polylines]=\"polylines()\"\n      [rectangles]=\"rectangles()\"\n      [circles]=\"circles()\"\n      [zoomLevel]=\"zoomLevel()\"\n      [latitude]=\"latitude()\"\n      [longitude]=\"longitude()\"\n      [markers]=\"markers()\"\n      [disabled]=\"disabled()\"\n      [readonly]=\"readonly()\"\n    ></ax-map>\n  </div>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXMapModule],\n  inputs: [],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class AXPMapWidgetViewComponent extends AXPValueWidgetComponent<AXMapData | undefined> {\n  markers = computed(() => this.getValue()?.markers ?? []);\n  polygons = computed(() => this.getValue()?.polygons ?? []);\n  polylines = computed(() => this.getValue()?.polylines ?? []);\n  rectangles = computed(() => this.getValue()?.rectangles ?? []);\n  circles = computed(() => this.getValue()?.circles ?? []);\n  height = computed<number>(() => this.options()['height'] ?? 300);\n  zoomLevel = computed<number>(() => this.options()['zoomLevel'] ?? 13);\n  latitude = computed<number>(() => this.options()['latitude'] ?? 35);\n  longitude = computed<number>(() => this.options()['longitude'] ?? 51);\n  disabled = computed<boolean>(() => this.options()['disabled'] ?? false);\n  readonly = computed<boolean>(() => this.options()['readonly'] ?? false);\n  constructor() {\n    super();\n    this.beginHydration();\n  }\n\n  #af = afterNextRender(() => {\n    this.endHydration();\n  });\n}\n","import { AXPWidgetConfig, cloneProperty, createNumberProperty, createSelectProperty } from '@acorex/platform/layout/widget-core-contracts';\nimport {\n AXQrcodeLevel, AXQrcodeOutputType } from '@acorex/components/qrcode';\nimport { AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_ADVANCE_SUB_MEDIA } from '@acorex/platform/layout/widget-core';\nimport { AXP_CONTENT_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_STYLING_PROPERTY_GROUP } from '../../../properties';\nimport { AXP_COLOR_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties/general.props';\n\nexport const DEFAULT_QRCODE_SIZE = 200;\n\nexport const AXPQrcodeWidget: AXPWidgetConfig = {\n  name: 'qrcode',\n  title: '@platform-layout-widgets:widgets.qrcode.title',\n  categories: [AXP_WIDGETS_ADVANCE_CATEGORY],\n  subCategory: AXP_WIDGETS_ADVANCE_SUB_MEDIA,\n  icon: 'fa-light fa-qrcode',\n  description: '@platform-layout-widgets:widgets.qrcode.description',\n  type: 'view',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    cloneProperty(AXP_COLOR_PROPERTY, { schema: { interface: { defaultValue: '#000000' } } }),\n    cloneProperty(AXP_CONTENT_PROPERTY, { schema: { interface: { defaultValue: 'http://google.com' } } }),\n    createNumberProperty({\n      name: 'size',\n      title: 'Size',\n      path: 'options.size',\n      group: AXP_STYLING_PROPERTY_GROUP,\n      defaultValue: DEFAULT_QRCODE_SIZE,\n    }),\n    createSelectProperty({\n      name: 'level',\n      title: 'Error Correction Level',\n      path: 'options.level',\n      group: AXP_STYLING_PROPERTY_GROUP,\n      dataSource: ['L', 'M', 'Q', 'H'],\n      defaultValue: 'M',\n    }),\n    createSelectProperty({\n      name: 'outputType',\n      title: 'Output Type',\n      path: 'options.outputType',\n      group: AXP_STYLING_PROPERTY_GROUP,\n      dataSource: ['svg', 'canvas'],\n      defaultValue: 'svg',\n    }),\n  ],\n  components: {\n    view: {\n      component: () => import('./qrcode-widget-view.component').then((c) => c.AXPQrcodeWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./qrcode-widget-edit.component').then((c) => c.AXPQrcodeWidgetEditComponent),\n    },\n    column: {\n      component: () => import('./qrcode-widget-column.component').then((c) => c.AXPQrcodeWidgetColumnComponent),\n    },\n    designer: {\n      component: () => import('./qrcode-widget-view.component').then((c) => c.AXPQrcodeWidgetViewComponent),\n    },\n  },\n};\n\nexport interface AXPQrcodeWidgetViewOptions {\n  content?: string;\n  size?: number;\n  level?: AXQrcodeLevel;\n  color?: string;\n  outputType?: AXQrcodeOutputType;\n}\n\nexport interface AXPQrcodeWidgetEditOptions extends AXPQrcodeWidgetViewOptions {}\n\nexport interface AXPQrcodeWidgetPrintOptions extends AXPQrcodeWidgetViewOptions {}\n\nexport interface AXPQrcodeWidgetDesignerOptions extends AXPQrcodeWidgetViewOptions {}\n\nexport interface AXPQrcodeWidgetOptions {\n  view: AXPQrcodeWidgetViewOptions;\n  edit: AXPQrcodeWidgetEditOptions;\n  print: AXPQrcodeWidgetPrintOptions;\n  designer: AXPQrcodeWidgetDesignerOptions;\n}\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    qrcode: 'qrcode';\n  }\n}\n","import { AXQrcodeLevel, AXQrcodeOutputType } from '@acorex/components/qrcode';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { normalizePositiveNumberOption, resolveEntityRowDisplayText } from '@acorex/platform/common';\nimport { AXPLayoutBuilderService } from '@acorex/platform/layout/builder';\nimport { inject, Injectable } from '@angular/core';\n\nimport { DEFAULT_QRCODE_SIZE } from './qrcode-widget.config';\n\n//#region ---- Types ----\n\nconst QRCODE_WIDGET_NAME = 'qrcode';\n\nexport interface AXPQrcodeViewerOpenOptions {\n  content: string;\n  size?: number;\n  level?: AXQrcodeLevel;\n  color?: string;\n  outputType?: AXQrcodeOutputType;\n  title?: string;\n}\n\n//#endregion\n\n//#region ---- QR code viewer service ----\n\n/**\n * Opens a read-only QR code preview dialog with print and cancel actions.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXPQrcodeViewerService {\n  //#region ---- Services & Dependencies ----\n\n  private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n  private readonly translation = inject(AXTranslationService);\n\n  //#endregion\n\n  //#region ---- Public API ----\n\n  async open(options: AXPQrcodeViewerOpenOptions): Promise<void> {\n    const contentValue = options.content;\n    if (!contentValue) {\n      return;\n    }\n\n    const ref = await this.layoutBuilder\n      .create()\n      .dialog((dialog) => {\n        dialog\n          .setTitle(this.resolveDialogTitle(options.title))\n          .setSize('md')\n          .setCloseButton(true)\n          .setContext({ qr: contentValue })\n          .content((content) => {\n            content\n              .setDirection('column')\n              .setGap('24px')\n              .setAlignItems('center')\n              .mode('view')\n              .customWidget(QRCODE_WIDGET_NAME, {\n                name: QRCODE_WIDGET_NAME,\n                path: 'qr',\n                size: normalizePositiveNumberOption(options.size, DEFAULT_QRCODE_SIZE),\n                level: options.level ?? 'M',\n                color: options.color ?? '#000000',\n                readonly: true,\n                outputType: options.outputType ?? 'svg',\n                showContent: true,\n              });\n          })\n          .setActions((actions) => {\n            actions.custom({\n              title: '@general:actions.print.title',\n              icon: 'fa-light fa-print',\n              command: { name: `widget:${QRCODE_WIDGET_NAME}.print` },\n              position: 'suffix',\n            });\n            actions.cancel('@general:actions.cancel.title');\n          });\n      })\n      .show();\n\n    ref.close();\n  }\n\n  //#endregion\n\n  //#region ---- Utility Methods ----\n\n  private resolveDialogTitle(title: string | undefined): string {\n    const resolved = resolveEntityRowDisplayText(title, this.translation.getActiveLang());\n    return resolved || '@platform-layout-widgets:widgets.qrcode.title';\n  }\n\n  //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPEntity } from '@acorex/platform/layout/entity-contracts';\nimport { AXQrcodeLevel, AXQrcodeOutputType } from '@acorex/components/qrcode';\nimport { AXFormatService } from '@acorex/core/format';\nimport { normalizePositiveNumberOption, resolveEntityRowDisplayTitle } from '@acorex/platform/common';\n\nimport { AXPQrcodeViewerOpenOptions, AXPQrcodeViewerService } from './qrcode-viewer.service';\nimport { DEFAULT_QRCODE_SIZE } from './qrcode-widget.config';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface AXPQrcodeViewerOpenParams {\n  content: string;\n  widgetOptions: Record<string, unknown>;\n  formatService: AXFormatService;\n  activeLang: string;\n  /** List row data or form context (`contextService.data()`). */\n  data?: Record<string, unknown>;\n  entity?: AXPEntity | null;\n  fallbackTitleKey?: string;\n}\n\n//#endregion\n\n//#region ---- Viewer open helper ----\n\nexport function buildQrcodeViewerOpenOptions(params: AXPQrcodeViewerOpenParams): AXPQrcodeViewerOpenOptions {\n  const title = params.data\n    ? resolveEntityRowDisplayTitle({\n        data: params.data,\n        widgetOptions: params.widgetOptions,\n        formatService: params.formatService,\n        activeLang: params.activeLang,\n        entity: params.entity,\n      })\n    : '';\n\n  const levelOption = params.widgetOptions['level'];\n  const resolvedLevel =\n    (typeof levelOption === 'string'\n      ? levelOption\n      : (levelOption as { id?: AXQrcodeLevel })?.id) ?? 'M';\n\n  return {\n    content: params.content,\n    title: title || params.fallbackTitleKey,\n    size: normalizePositiveNumberOption(params.widgetOptions['size'], DEFAULT_QRCODE_SIZE),\n    level: resolvedLevel as AXQrcodeLevel,\n    color: (params.widgetOptions['color'] as string | undefined) ?? '#000000',\n    outputType: (params.widgetOptions['outputType'] as AXQrcodeOutputType | undefined) ?? 'svg',\n  };\n}\n\nexport async function openQrcodeViewer(\n  viewer: AXPQrcodeViewerService,\n  params: AXPQrcodeViewerOpenParams,\n): Promise<void> {\n  const content = params.content?.trim();\n  if (!content) {\n    return;\n  }\n\n  await viewer.open(buildQrcodeViewerOpenOptions({ ...params, content }));\n}\n\n//#endregion\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { AXPQrcodeViewerService } from './qrcode-viewer.service';\nimport { openQrcodeViewer } from './qrcode-viewer-open.util';\n\n//#region ---- Component: QR Code Widget Column ----\n\n@Component({\n  selector: 'axp-qrcode-widget-column',\n  imports: [AXButtonModule, AXDecoratorModule],\n  template: `\n    <div class=\"ax-flex ax-items-center ax-gap-2\">\n      @if (rawValue) {\n        <ax-button class=\"ax-sm\" look=\"twotone\" color=\"default\" (click)=\"showPopup()\">\n          <ax-icon>\n            <i class=\"fa-regular fa-qrcode\"></i>\n          </ax-icon>\n        </ax-button>\n      } @else {\n        <span>-</span>\n      }\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['rawValue', 'rowData'],\n})\nexport class AXPQrcodeWidgetColumnComponent extends AXPColumnWidgetComponent<string> {\n  //#region ---- Services & Dependencies ----\n\n  private readonly qrcodeViewer = inject(AXPQrcodeViewerService);\n  private readonly formatService = inject(AXFormatService);\n  private readonly translation = inject(AXTranslationService);\n\n  //#endregion\n\n  //#region ---- UI Handlers ----\n\n  async showPopup(): Promise<void> {\n    const contentValue = this.rawValue;\n    if (!contentValue) {\n      return;\n    }\n\n    await openQrcodeViewer(this.qrcodeViewer, {\n      content: contentValue,\n      data: this.rowData as Record<string, unknown> | undefined,\n      widgetOptions: { ...(this.options as Record<string, unknown>), size: 500 },\n      formatService: this.formatService,\n      activeLang: this.translation.getActiveLang(),\n    });\n  }\n\n  //#endregion\n}\n\n//#endregion\n","import { AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXQrcodeLevel, AXQrcodeModule } from '@acorex/components/qrcode';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXColorUtil } from '@acorex/core/utils';\nimport { downloadGraphicFromElement, normalizePositiveNumberOption } from '@acorex/platform/common';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { AsyncPipe } from '@angular/common';\n\nimport { ChangeDetectionStrategy, Component, computed, inject, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { openQrcodeViewer } from './qrcode-viewer-open.util';\nimport { AXPQrcodeViewerService } from './qrcode-viewer.service';\nimport { DEFAULT_QRCODE_SIZE } from './qrcode-widget.config';\n\n@Component({\n  selector: 'axp-qrcode-widget-edit',\n  templateUrl: './qrcode-widget-edit.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    AXTextBoxModule,\n    AXDecoratorModule,\n    AXButtonModule,\n    AXPopoverModule,\n    AXQrcodeModule,\n    AXTranslationModule,\n    AsyncPipe,\n    FormsModule,\n  ],\n  host: { class: 'ax-block ax-flex-1' },\n})\nexport class AXPQrcodeWidgetEditComponent extends AXPValueWidgetComponent<string> {\n  //#region ---- Services & Dependencies ----\n\n  private readonly qrcodeViewer = inject(AXPQrcodeViewerService);\n  private readonly formatService = inject(AXFormatService);\n  private readonly translation = inject(AXTranslationService);\n\n  //#endregion\n\n  protected value = computed<string>(() => this.getValue());\n  protected size = computed<number>(() =>\n    normalizePositiveNumberOption(this.options()['size'], DEFAULT_QRCODE_SIZE),\n  );\n  protected level = computed<AXQrcodeLevel>(() => this.options()['level']?.id ?? 'M');\n  protected color = computed<string>(() => AXColorUtil.colorStringToHex(this.options()['color'] ?? '#000000'));\n  protected format = computed<'jpg' | 'png' | 'svg'>(() => this.options()['format']?.id ?? 'png');\n  protected draft = signal<string>('');\n\n  // text-box behavior options\n  protected disabled = computed<boolean>(() => !!this.options()['disabled']);\n  protected readonly = computed<boolean>(() => !!this.options()['readonly']);\n  protected hasClearButton = computed<boolean>(() => !!this.options()['hasClearButton']);\n  protected placeholder = computed<string>(() => this.options()['placeholder'] ?? '@general:terms.common.placeholder');\n\n  protected onValueChange(e: AXValueChangedEvent) {\n    if (e.isUserInteraction) {\n      this.setValue(e.value);\n    }\n  }\n\n  protected beginEdit() {\n    this.draft.set(this.value() ?? '');\n  }\n\n  protected onDraftChange(e: AXValueChangedEvent) {\n    if (e.isUserInteraction) {\n      this.draft.set((e.value as string) ?? '');\n    }\n  }\n\n  protected applyDraft() {\n    this.setValue(this.draft());\n  }\n\n  protected cancelEdit() {\n    this.draft.set(this.value() ?? '');\n  }\n\n  protected async openPreview(): Promise<void> {\n    const content = this.value();\n    if (!content) {\n      return;\n    }\n\n    await openQrcodeViewer(this.qrcodeViewer, {\n      content,\n      data: this.contextService.data() as Record<string, unknown>,\n      widgetOptions: this.options(),\n      formatService: this.formatService,\n      activeLang: this.translation.getActiveLang(),\n    });\n  }\n\n  public downloadQr(el: HTMLDivElement): void {\n    const fmt = this.format();\n    const format = fmt === 'jpg' ? 'jpeg' : fmt;\n\n    downloadGraphicFromElement(el, {\n      format,\n      filename: `qrcode.${fmt}`,\n      fallbackSize: this.size(),\n    });\n  }\n\n  public clearValue() {\n    this.setValue('');\n  }\n\n  public async onFileSelected(e: Event) {\n    const input = e.target as HTMLInputElement | null;\n    const file = input?.files && input.files.length > 0 ? input.files[0] : null;\n    if (!file) {\n      return;\n    }\n    try {\n      const text = await file.text();\n      this.setValue(text ?? '');\n    } finally {\n      if (input) {\n        input.value = '';\n      }\n    }\n  }\n}\n","<!-- Main Container -->\n<div class=\"ax-flex ax-flex-col ax-gap-3 ax-p-3 ax-w-fit\">\n  <div class=\"ax-flex ax-justify-center\">\n    <!-- QR Code Container -->\n    <div class=\"ax-bg-lightest ax-border ax-border-default ax-rounded-md ax-shadow-md ax-p-3\" #qr>\n      <!-- QR Code Display or Empty Placeholder -->\n      @if (value()) {\n        <!-- Display QR Code when value exists -->\n        <ax-qrcode [content]=\"value()\" [size]=\"size()\" [color]=\"color()\" [level]=\"level()\" [outputType]=\"'svg'\">\n        </ax-qrcode>\n      } @else {\n        <!-- Empty State: Show placeholder when value is null or empty -->\n        <div\n          class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-text-center\"\n          [style.width.px]=\"size()\"\n          [style.height.px]=\"size()\"\n        >\n          <ax-icon icon=\"fa-light fa-qrcode\" class=\"ax-text-4xl ax-text-gray-400 ax-mb-3\"></ax-icon>\n          <div class=\"ax-text-sm ax-text-gray-500\">\n            {{ '@general:state-message.empty.title' | translate | async }}\n          </div>\n        </div>\n      }\n\n      <!-- Action Buttons Section -->\n      @if (!readonly()) {\n        <div class=\"ax-flex ax-items-center ax-justify-between ax-gap-2 ax-pt-4\">\n          <!-- Edit Button: Opens popover to edit QR code content -->\n          <ax-button\n            #editBtn\n            look=\"twotone\"\n            [title]=\"('@general:actions.edit.title' | translate | async)!\"\n            (onClick)=\"beginEdit()\"\n          >\n            <!-- Edit Popover: Text input for editing QR code content -->\n            <ax-popover #po [target]=\"editBtn\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" [adaptivityEnabled]=\"true\">\n              <div\n                class=\"ax-bg-lightest ax-border ax-border-default ax-rounded-md ax-shadow-md ax-p-5 ax-w-full sm:ax-w-96\"\n              >\n                <!-- Text Input for QR Code Content -->\n                <ax-text-box\n                  [value]=\"draft()\"\n                  [disabled]=\"disabled()\"\n                  [readonly]=\"readonly()\"\n                  [placeholder]=\"placeholder() | translate | async\"\n                  (onValueChanged)=\"onDraftChange($event)\"\n                >\n                  @if (hasClearButton()) {\n                    <ax-clear-button></ax-clear-button>\n                  }\n                </ax-text-box>\n                <!-- Popover Action Buttons -->\n                <div class=\"ax-flex ax-justify-end ax-gap-2 ax-mt-3\">\n                  <ax-button\n                    look=\"outline\"\n                    class=\"ax-sm\"\n                    [text]=\"('@general:actions.cancel.title' | translate | async)!\"\n                    (onClick)=\"cancelEdit(); po.close()\"\n                  ></ax-button>\n                  <ax-button\n                    look=\"solid\"\n                    class=\"ax-sm\"\n                    color=\"primary\"\n                    [text]=\"('@general:actions.submit.title' | translate | async)!\"\n                    (onClick)=\"applyDraft(); po.close()\"\n                  ></ax-button>\n                </div>\n              </div>\n            </ax-popover>\n            <ax-icon icon=\"fa-light fa-pen\"></ax-icon>\n          </ax-button>\n\n          <!-- Upload Button: Upload text file to set QR code content -->\n          <!-- <ax-button\n            look=\"twotone\"\n            [title]=\"('@general:actions.upload.title' | translate | async)!\"\n            (onClick)=\"fileInput.click()\"\n          >\n            <input #fileInput type=\"file\" accept=\"text/plain\" class=\"ax-hidden\" (change)=\"onFileSelected($event)\" />\n            <ax-icon icon=\"fa-light fa-upload\"></ax-icon>\n          </ax-button> -->\n\n          <!-- Export Button: Download QR code as image (only shown when value exists) -->\n          @if (value()) {\n            <ax-button\n              look=\"twotone\"\n              [title]=\"('@general:actions.preview.title' | translate | async)!\"\n              (onClick)=\"openPreview()\"\n            >\n              <ax-icon icon=\"fa-light fa-expand\"></ax-icon>\n            </ax-button>\n\n            <ax-button\n              look=\"twotone\"\n              [title]=\"('@general:actions.export.title' | translate | async)!\"\n              (onClick)=\"downloadQr(qr)\"\n            >\n              <ax-icon icon=\"fa-light fa-download\"></ax-icon>\n            </ax-button>\n          }\n\n          <!-- Delete Button: Clear QR code value (only shown when not readonly and value exists) -->\n          @if (!readonly() && value()) {\n            <ax-button\n              look=\"twotone\"\n              [title]=\"('@general:actions.delete.title' | translate | async)!\"\n              (onClick)=\"clearValue()\"\n            >\n              <ax-icon icon=\"ax-text-danger fa-light fa-trash-can\"></ax-icon>\n            </ax-button>\n          }\n        </div>\n      }\n    </div>\n  </div>\n</div>\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXQrcodeLevel, AXQrcodeModule, AXQrcodeOutputType } from '@acorex/components/qrcode';\nimport { AXFormatService } from '@acorex/core/format';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXColorUtil } from '@acorex/core/utils';\nimport { normalizePositiveNumberOption, printGraphicFromElement } from '@acorex/platform/common';\nimport { AXPValueWidgetComponent, AXPWidgetCoreElementAPI } from '@acorex/platform/layout/widget-core';\n\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, ElementRef, inject, viewChild } from '@angular/core';\nimport { openQrcodeViewer } from './qrcode-viewer-open.util';\nimport { AXPQrcodeViewerService } from './qrcode-viewer.service';\nimport { DEFAULT_QRCODE_SIZE } from './qrcode-widget.config';\n\n@Component({\n  selector: 'axp-qrcode-widget',\n  template: `\n    @if (getValue()) {\n      <div class=\"ax-flex ax-w-full ax-flex-col ax-items-center ax-gap-4 ax-text-center\">\n        <div #qrContainer class=\"ax-inline-block\">\n          <ax-qrcode\n            [content]=\"getValue()\"\n            [size]=\"size()\"\n            [color]=\"color()\"\n            [level]=\"level()\"\n            [outputType]=\"outputType()\"\n          >\n          </ax-qrcode>\n        </div>\n        @if (showContent()) {\n          <div class=\"ax-flex ax-max-w-full ax-flex-col ax-items-center ax-gap-1\">\n            <span class=\"ax-text-sm ax-font-medium\">{{ contentLabel() | translate | async }}</span>\n            <span class=\"ax-break-all ax-text-sm\">{{ getValue() }}</span>\n          </div>\n        } @else {\n          <ax-button\n            look=\"twotone\"\n            class=\"ax-sm\"\n            [title]=\"('@general:actions.preview.title' | translate | async)!\"\n            (onClick)=\"openPreview()\"\n          >\n            <ax-icon icon=\"fa-light fa-expand\"></ax-icon>\n          </ax-button>\n        }\n      </div>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXButtonModule, AXDecoratorModule, AXQrcodeModule, AXTranslationModule, AsyncPipe],\n  host: { class: 'ax-block ax-w-full' },\n})\nexport class AXPQrcodeWidgetViewComponent extends AXPValueWidgetComponent<string> {\n  //#region ---- Services & Dependencies ----\n\n  private readonly qrcodeViewer = inject(AXPQrcodeViewerService);\n  private readonly formatService = inject(AXFormatService);\n  private readonly translation = inject(AXTranslationService);\n\n  //#endregion\n\n  //#region ---- View Children ----\n\n  private readonly qrContainer = viewChild<ElementRef<HTMLElement>>('qrContainer');\n\n  //#endregion\n\n  //#region ---- Computed Properties ----\n\n  protected size = computed<number>(() =>\n    normalizePositiveNumberOption(this.options()['size'], DEFAULT_QRCODE_SIZE),\n  );\n  protected level = computed<AXQrcodeLevel>(() => this.options()['level']?.id ?? 'M');\n  protected color = computed<string>(() => AXColorUtil.colorStringToHex(this.options()['color'] ?? '#000000'));\n  protected outputType = computed<AXQrcodeOutputType>(() => this.options()['outputType'] ?? 'svg');\n  protected showContent = computed<boolean>(() => !!this.options()['showContent']);\n  protected contentLabel = computed(\n    () => (this.options()['contentLabel'] as string | undefined) ?? '@platform-layout-widgets:widgets.qrcode.content',\n  );\n\n  //#endregion\n\n  //#region ---- UI Handlers ----\n\n  protected async openPreview(): Promise<void> {\n    const content = this.getValue();\n    if (!content) {\n      return;\n    }\n\n    await openQrcodeViewer(this.qrcodeViewer, {\n      content,\n      data: this.contextService.data() as Record<string, unknown>,\n      widgetOptions: this.options(),\n      formatService: this.formatService,\n      activeLang: this.translation.getActiveLang(),\n    });\n  }\n\n  //#endregion\n\n  //#region ---- Widget API ----\n\n  override api(): AXPWidgetCoreElementAPI {\n    return {\n      print: () => {\n        const container = this.qrContainer()?.nativeElement;\n        if (container) {\n          printGraphicFromElement(container, {\n            fallbackSize: this.size(),\n            title: 'QR Code',\n            imageAlt: 'QR Code',\n          });\n        }\n      },\n    };\n  }\n\n  //#endregion\n}\n","//#region ----   Imports   ----\n\nimport { AXSchedulerPickerService, AXSchedulerPickerValue } from '@acorex/components/scheduler-picker';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, effect, inject, signal } from '@angular/core';\n\n//#endregion\n\n//#region ----   Component   ----\n\n@Component({\n  selector: 'axp-scheduler-picker-widget-column',\n  template: `\n    @if (summary()) {\n      <span class=\"ax-text-sm\" [title]=\"summary()\">{{ summary() }}</span>\n    } @else {\n      <span class=\"ax-text-sm ax-text-muted\">---</span>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['rawValue'],\n})\nexport class AXPSchedulerPickerWidgetColumnComponent extends AXPColumnWidgetComponent<AXSchedulerPickerValue | null> {\n  //#region ----   Services & Dependencies   ----\n\n  private readonly schedulerPickerService = inject(AXSchedulerPickerService);\n\n  //#endregion\n\n  //#region ----   Computed Properties   ----\n\n  protected summary = signal<string>('');\n\n  //#endregion\n\n  //#region ----   Effects   ----\n\n  private isSchedulerValue(value: unknown): value is AXSchedulerPickerValue {\n    return !!value && typeof value === 'object' && 'mode' in value;\n  }\n\n  #summaryEffect = effect(async () => {\n    const value = this.rawValue;\n\n    if (typeof value === 'string') {\n      this.summary.set(value);\n      return;\n    }\n\n    if (this.isSchedulerValue(value)) {\n      try {\n        const text = await this.schedulerPickerService.toNaturalLanguage(value);\n        this.summary.set(text);\n      } catch (err) {\n        console.error(err);\n        this.summary.set('');\n      }\n      return;\n    }\n\n    this.summary.set('');\n  });\n\n  //#endregion\n}\n\n//#endregion\n","//#region ----   Imports   ----\n\nimport { AXLabelComponent } from '@acorex/components/label';\nimport {\n  AXSchedulerPickerComponent,\n  AXSchedulerPickerService,\n  AXSchedulerPickerSettings,\n  AXSchedulerPickerValue,\n} from '@acorex/components/scheduler-picker';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n//#endregion\n\n//#region ----   Component   ----\n\n@Component({\n  selector: 'axp-scheduler-picker-widget-edit',\n  template: `\n    <div class=\"ax-p-2 ax-flex ax-flex-col ax-gap-2\">\n      <ax-scheduler-picker\n        [config]=\"settings()\"\n        [ngModel]=\"internalValue()\"\n        [disabled]=\"disabled()\"\n        (ngModelChange)=\"onValueChange($event)\"\n      />\n      @if (summary()) {\n        <div class=\"ax-mt-2\">\n          <ax-label class=\"ax-text-sm ax-font-medium\">Summary:</ax-label>\n          <ax-label class=\"ax-text-sm ax-text-muted\">{{ summary() }}</ax-label>\n        </div>\n      }\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXSchedulerPickerComponent, FormsModule, AXLabelComponent],\n  host: { class: 'ax-block ax-flex-1' },\n})\nexport class AXPSchedulerPickerWidgetEditComponent extends AXPValueWidgetComponent<AXSchedulerPickerValue | null> {\n  //#region ----   Services & Dependencies   ----\n\n  private readonly schedulerPickerService = inject(AXSchedulerPickerService);\n\n  //#endregion\n\n  //#region ----   Computed Properties   ----\n\n  protected internalValue = computed<AXSchedulerPickerValue | null>(\n    () =>\n      this.getValue() ?? {\n        mode: 'daily',\n        interval: 1,\n        startCondition: { type: 'now', startDate: new Date() },\n        recurrence: {}, // Daily doesn't require specific recurrence data\n        endCondition: { type: 'never' },\n      },\n  );\n\n  protected settings = computed<AXSchedulerPickerSettings>(\n    () =>\n      this.options()['config'] ?? {\n        mode: 'daily',\n        showStartCondition: true,\n        showEndConditions: true,\n        showExclusions: false,\n        showInclusions: false,\n        options: { showInterval: true, showWeekdaysOnly: false },\n      },\n  );\n\n  protected disabled = computed<boolean>(() => this.options()['disabled'] ?? false);\n\n  protected summary = signal<string>('');\n\n  //#endregion\n\n  //#region ----   Effects   ----\n\n  #summaryEffect = effect(async () => {\n    const value = this.internalValue();\n    if (!value) {\n      this.summary.set('');\n      return;\n    }\n    try {\n      const data = await this.schedulerPickerService.toNaturalLanguage(value);\n      this.summary.set(data);\n    } catch (error) {\n      this.summary.set('');\n    }\n  });\n\n  //#endregion\n\n  //#region ----   Event Handlers   ----\n\n  protected onValueChange(val: AXSchedulerPickerValue | null): void {\n    this.setValue(val);\n  }\n\n  //#endregion\n}\n\n//#endregion\n","//#region ----   Imports   ----\n\nimport { AXLabelComponent } from '@acorex/components/label';\nimport { AXSchedulerPickerService, AXSchedulerPickerValue } from '@acorex/components/scheduler-picker';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, effect, inject, signal } from '@angular/core';\n\n//#endregion\n\n//#region ----   Component   ----\n\n@Component({\n  selector: 'axp-scheduler-picker-widget-view',\n  template: `\n    <div class=\"ax-p-2\">\n      @if (summary()) {\n        <ax-label class=\"ax-text-sm\">{{ summary() }}</ax-label>\n      } @else {\n        <ax-label class=\"ax-text-sm ax-text-muted\">---</ax-label>\n      }\n    </div>\n  `,\n  imports: [AXLabelComponent],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: { class: 'ax-inline-block' },\n})\nexport class AXPSchedulerPickerWidgetViewComponent extends AXPValueWidgetComponent<\n  AXSchedulerPickerValue | string | null\n> {\n  //#region ----   Services & Dependencies   ----\n\n  private readonly schedulerPickerService = inject(AXSchedulerPickerService);\n\n  //#endregion\n\n  //#region ----   Computed Properties   ----\n\n  protected summary = signal<string>('');\n\n  //#endregion\n\n  //#region ----   Effects   ----\n\n  private isSchedulerValue(value: unknown): value is AXSchedulerPickerValue {\n    return !!value && typeof value === 'object' && 'mode' in value;\n  }\n\n  #summaryEffect = effect(async () => {\n    const value = this.getValue();\n\n    if (typeof value === 'string') {\n      this.summary.set(value);\n      return;\n    }\n\n    if (this.isSchedulerValue(value)) {\n      try {\n        const text = await this.schedulerPickerService.toNaturalLanguage(value);\n        this.summary.set(text);\n      } catch (err) {\n        console.error(err);\n        this.summary.set('');\n      }\n      return;\n    }\n\n    this.summary.set('');\n  });\n\n  //#endregion\n}\n\n//#endregion\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_ADVANCE_SUB_INPUT } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\n\nexport const AXPSchedulerPickerWidget: AXPWidgetConfig = {\n  name: 'scheduler-picker',\n  title: '@platform-layout-widgets:widgets.scheduler-picker.title',\n  icon: 'fa-light fa-calendar-clock',\n  categories: [AXP_WIDGETS_ADVANCE_CATEGORY],\n  subCategory: AXP_WIDGETS_ADVANCE_SUB_INPUT,\n  type: 'editor',\n  groups: [AXPWidgetGroupEnum.FormElement],\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n  components: {\n    view: {\n      component: () =>\n        import('./scheduler-picker-widget-view.component').then((c) => c.AXPSchedulerPickerWidgetViewComponent),\n    },\n    edit: {\n      component: () =>\n        import('./scheduler-picker-widget-edit.component').then((c) => c.AXPSchedulerPickerWidgetEditComponent),\n    },\n    column: {\n      component: () =>\n        import('./scheduler-picker-widget-column.component').then((c) => c.AXPSchedulerPickerWidgetColumnComponent),\n    },\n    designer: {\n      component: () =>\n        import('./scheduler-picker-widget-edit.component').then((c) => c.AXPSchedulerPickerWidgetEditComponent),\n    },\n  },\n};\n\nexport interface AXPSchedulerPickerWidgetDesignerOptions {}\n\nexport interface AXPSchedulerPickerWidgetViewOptions {}\n\nexport interface AXPSchedulerPickerWidgetEditOptions {}\n\nexport interface AXPSchedulerPickerWidgetColumnOptions {}\n\nexport interface AXPSchedulerPickerWidgetPrintOptions {}\n\nexport interface AXPSchedulerPickerWidgetOptions {\n  designer: AXPSchedulerPickerWidgetDesignerOptions;\n  view: AXPSchedulerPickerWidgetViewOptions;\n  edit: AXPSchedulerPickerWidgetEditOptions;\n  print: AXPSchedulerPickerWidgetPrintOptions;\n  column: AXPSchedulerPickerWidgetColumnOptions;\n}\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    schedulerPicker: 'scheduler-picker';\n  }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPLayoutBuilderService, IActionBuilder } from '@acorex/platform/layout/builder';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, OnDestroy, effect, inject, signal } from '@angular/core';\n\n//#region ----   Component: Signature Widget Column   ----\n\n@Component({\n  selector: 'axp-signature-pad-widget-column',\n  imports: [AXButtonModule, AXDecoratorModule],\n  template: `\n    <div class=\"ax-flex ax-items-center ax-gap-2\">\n      @if (imageUrl()) {\n        <span> Signature </span>\n        <ax-button color=\"default\" (click)=\"showPopup()\">\n          <ax-icon>\n            <i class=\"fa-regular fa-info-image\"></i>\n          </ax-icon>\n        </ax-button>\n      } @else {\n        <span>-</span>\n      }\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['rawValue'],\n})\nexport class AXPSignatureWidgetColumnComponent extends AXPColumnWidgetComponent<string | null> implements OnDestroy {\n  private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n\n  imageUrl = signal<string | null>(null);\n\n  constructor() {\n    super();\n    effect(() => {\n      const value = (this as any).rawValue as string | URL | Blob | ArrayBuffer | null | undefined;\n      const currentUrl = this.imageUrl();\n      if (currentUrl && currentUrl.startsWith('blob:')) {\n        URL.revokeObjectURL(currentUrl);\n      }\n      if (typeof value === 'string') {\n        this.imageUrl.set(value);\n      } else if (value instanceof URL) {\n        this.imageUrl.set(value.href);\n      } else if (value instanceof Blob) {\n        this.imageUrl.set(URL.createObjectURL(value));\n      } else if (value instanceof ArrayBuffer) {\n        const blob = new Blob([value]);\n        this.imageUrl.set(URL.createObjectURL(blob));\n      } else {\n        this.imageUrl.set(null);\n      }\n    });\n  }\n\n  async showPopup(): Promise<void> {\n    const url = this.imageUrl();\n    if (!url) {\n      return;\n    }\n    const ref = await this.layoutBuilder\n      .create()\n      .dialog((dialog) => {\n        dialog\n          .setTitle('@platform-layout-widgets:widgets.signature.title')\n          .setSize('lg')\n          .content((layoutBuilder) => {\n            layoutBuilder.flex((flex) => {\n              flex.mode('view').formField('Preview', (field) => {\n                field.readonly(true).customWidget('image', {\n                  src: url,\n                  width: '100%',\n                  height: 'auto',\n                  objectFit: 'contain',\n                });\n              });\n            });\n          })\n          .setActions((actions: IActionBuilder) => {\n            actions.cancel('@general:actions.cancel.title');\n          });\n      })\n      .show();\n    ref.close();\n  }\n\n  ngOnDestroy(): void {\n    const currentUrl = this.imageUrl();\n    if (currentUrl && currentUrl.startsWith('blob:')) {\n      URL.revokeObjectURL(currentUrl);\n    }\n  }\n}\n\n//#endregion\n","import { AXImageModule } from '@acorex/components/image';\nimport { AXPaintContainerComponent, AXPaintModule, AXPaintViewComponent } from '@acorex/components/paint';\n\nimport { AXTranslationModule } from '@acorex/core/translation';\n\nimport { AXPDeviceService } from '@acorex/platform/core';\n\nimport { AXPSignatureEditorService } from '@acorex/platform/layout/components';\n\nimport { AXPValueWidgetComponent, AXPWidgetCoreElementAPI } from '@acorex/platform/layout/widget-core';\n\nimport { AsyncPipe } from '@angular/common';\n\nimport {\n\n  afterNextRender,\n\n  ChangeDetectionStrategy,\n\n  Component,\n\n  computed,\n\n  effect,\n\n  inject,\n\n  signal,\n\n  viewChild,\n\n} from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\n\n//#region ---- Component: Signature Pad Widget Edit ----\n\n@Component({\n\n  selector: 'axp-signature-pad-widget-edit',\n\n  templateUrl: './signature-pad-widget-edit.component.html',\n\n  styleUrl: './signature-pad-widget-edit.component.scss',\n\n  changeDetection: ChangeDetectionStrategy.OnPush,\n\n  host: {\n\n    class: 'ax-block ax-w-full',\n\n  },\n\n  imports: [FormsModule, AXPaintModule, AXImageModule, AXTranslationModule, AsyncPipe],\n\n})\n\nexport class AXPSignatureWidgetEditComponent extends AXPValueWidgetComponent<string | null> {\n\n  //#region ---- Options & State ----\n\n  protected disabled = computed<boolean>(() => (this.options()['disabled'] as boolean) ?? false);\n\n  /** When true (default), show click-to-edit overlay over read-only paint. Set false when used inside a dialog. */\n\n  protected showOverlay = computed<boolean>(() => (this.options()['showOverlay'] as boolean) ?? true);\n\n  /** Paint editMode: true hides pen/highlighter/eraser toolbars. */\n\n  protected editMode = computed<boolean>(() => (this.options()['editMode'] as boolean) ?? true);\n\n  protected hasSignature = computed<boolean>(() => {\n    const value = this.getValue();\n    return typeof value === 'string' && value.length > 0;\n  });\n\n  protected showSignaturePreview = computed<boolean>(() => this.showOverlay() && this.hasSignature());\n\n  protected showPaintSurface = computed<boolean>(() => !this.showOverlay());\n\n  protected isInteracting = signal(false);\n\n  protected showEmptyHint = computed<boolean>(() => this.showOverlay() && !this.hasSignature());\n\n  protected showDialogHint = computed<boolean>(() => !this.showOverlay() && !this.hasSignature() && !this.isInteracting());\n\n  protected showDesktopHover = computed<boolean>(() => this.showOverlay() && !this.deviceService.isTouchScreen() && !this.disabled());\n\n  protected hovering = signal(false);\n\n  protected emptyHint = computed<string>(() => {\n\n    const placeholder = (this.options()['placeholder'] as string | undefined)?.trim();\n\n    return placeholder || '@platform-layout-widgets:widgets.signature.empty-state.hint';\n\n  });\n\n  protected signHereHint = computed<string>(() => {\n\n    const placeholder = (this.options()['placeholder'] as string | undefined)?.trim();\n\n    return placeholder || '@platform-layout-widgets:widgets.signature.empty-state.sign-here';\n\n  });\n\n  protected paintContainer = viewChild<AXPaintContainerComponent>('paintContainer');\n\n  protected paintView = viewChild<AXPaintViewComponent>('paintView');\n\n  //#endregion\n\n  //#region ---- Services & Dependencies ----\n\n  private readonly signatureEditorService = inject(AXPSignatureEditorService);\n\n  private readonly deviceService = inject(AXPDeviceService);\n\n  //#endregion\n\n  //#region ---- Effects ----\n\n  #loadInitialImageEffect = effect(() => {\n\n    const view = this.paintView();\n\n    const container = this.paintContainer();\n\n    const value = this.getValue();\n\n    if (view && value) {\n\n      view.loadImage(value);\n\n    } else if (container && value == null) {\n\n      container.clear();\n\n      this.isInteracting.set(false);\n\n    }\n\n  });\n\n  #init = afterNextRender(() => {\n\n    this.paintContainer()?.setPenWidth(5);\n\n  });\n\n  //#endregion\n\n  //#region ---- Widget API ----\n\n  override api(): AXPWidgetCoreElementAPI {\n    return {\n      clear: () => {\n        this.clearSignaturePad();\n      },\n    };\n  }\n\n  //#endregion\n\n  //#region ---- UI Handlers ----\n\n  protected clearSignaturePad(): void {\n    this.setValue(null);\n    this.paintContainer()?.clear();\n    this.isInteracting.set(false);\n  }\n\n  protected handleMouseEnter(): void {\n\n    if (!this.showDesktopHover()) {\n\n      return;\n\n    }\n\n    this.hovering.set(true);\n\n  }\n\n  protected handleMouseLeave(): void {\n\n    if (!this.showDesktopHover()) {\n\n      return;\n\n    }\n\n    this.hovering.set(false);\n\n  }\n\n  protected handleSurfaceClick(event: MouseEvent): void {\n\n    const target = event.target as HTMLElement | null;\n\n    if (target?.closest('[data-signature-action]')) {\n\n      return;\n\n    }\n\n    if (!this.showOverlay() || this.disabled()) {\n\n      return;\n\n    }\n\n    event.stopPropagation();\n\n    void this.openEditor();\n\n  }\n\n  protected handleOverlayClick(event: MouseEvent): void {\n\n    event.stopPropagation();\n\n    if (this.disabled()) {\n\n      return;\n\n    }\n\n    void this.openEditor();\n\n  }\n\n  protected handleSurfacePointerDown(event: PointerEvent): void {\n\n    if (this.showOverlay() || this.disabled()) {\n\n      return;\n\n    }\n\n    const target = event.target as HTMLElement;\n\n    if (target.closest('.ax-canvas-element')) {\n\n      this.isInteracting.set(true);\n\n    }\n\n  }\n\n  protected async openEditor(): Promise<void> {\n\n    if (this.disabled()) {\n\n      return;\n\n    }\n\n    const result = await this.signatureEditorService.open({\n      value: this.getValue(),\n      disabled: this.disabled(),\n    });\n\n    if (result.action === 'apply') {\n      this.setValue(result.value);\n    }\n\n  }\n\n  //#endregion\n\n}\n\n//#endregion\n\n","<div class=\"axp-signature-pad-widget-edit ax-block ax-w-full ax-select-none\">\n  <div\n    class=\"ax-relative ax-w-full ax-min-h-[9rem] ax-overflow-hidden ax-rounded-md\"\n    [class.ax-cursor-pointer]=\"showOverlay() && !disabled()\"\n    [class.ax-cursor-not-allowed]=\"disabled()\"\n    [class.ax-opacity-60]=\"disabled()\"\n    (mouseenter)=\"handleMouseEnter()\"\n    (mouseleave)=\"handleMouseLeave()\"\n    (click)=\"handleSurfaceClick($event)\"\n    (pointerdown)=\"handleSurfacePointerDown($event)\"\n  >\n    @if (showSignaturePreview()) {\n      <ax-image [src]=\"getValue()!\" class=\"ax-block ax-w-full ax-min-h-[9rem] ax-object-contain\" />\n    } @else if (showPaintSurface()) {\n      <ax-paint-container\n        look=\"none\"\n        [editMode]=\"editMode()\"\n        [disabled]=\"disabled()\"\n        [ngModel]=\"getValue()\"\n        (ngModelChange)=\"setValue($event)\"\n        class=\"__paint\"\n        #paintContainer\n      >\n        <ax-paint-view #paintView paintBackgroundColor=\"white\"></ax-paint-view>\n      </ax-paint-container>\n    }\n\n    @if (showEmptyHint()) {\n      <div\n        class=\"ax-absolute ax-inset-0 ax-z-10 ax-flex ax-flex-col ax-items-center ax-justify-center ax-gap-2 ax-pointer-events-none\"\n      >\n        <i class=\"fa-light fa-file-signature ax-text-2xl\"></i>\n        <span class=\"ax-text-sm\">{{ emptyHint() | translate | async }}</span>\n      </div>\n    }\n\n    @if (showDialogHint()) {\n      <div\n        class=\"ax-absolute ax-inset-0 ax-z-10 ax-flex ax-items-center ax-justify-center ax-pointer-events-none ax-text-sm ax-opacity-60\"\n      >\n        {{ signHereHint() | translate | async }}\n      </div>\n    }\n\n    @if (showDesktopHover()) {\n      <div\n        class=\"ax-absolute ax-inset-0 ax-z-20 ax-flex ax-cursor-pointer ax-items-center ax-justify-center ax-bg-neutral-900/50 ax-text-neutral-100 ax-transition-opacity ax-duration-400\"\n        data-signature-action=\"true\"\n        [style.opacity]=\"hovering() ? 1 : 0\"\n        (click)=\"handleOverlayClick($event)\"\n      >\n        <i class=\"fa-light fa-pen\"></i>\n      </div>\n    }\n  </div>\n</div>\n","import { AXImageModule } from '@acorex/components/image';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\n@Component({\n  selector: 'axp-signature-pad-widget-view',\n  template: `\n    <div class=\"ax-w-full md:ax-w-auto ax-h-36 ax-border ax-rounded-md ax-flex ax-justify-center ax-items-center\">\n      @if (internalValue()) {\n        <ax-image [src]=\"internalValue()\"></ax-image>\n      } @else {\n        <span>{{ placeholder() }}</span>\n      }\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXImageModule],\n  inputs: [],\n})\nexport class AXPSignatureWidgetViewComponent extends AXPValueWidgetComponent<any> {\n  protected placeholder = computed<string>(() => (this.options()['placeholder'] as string) ?? 'Not Set!');\n\n  protected internalValue = computed(() => this.getValue());\n}\n","import { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_ADVANCE_SUB_INPUT } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_DATA_PATH_PROPERTY,\n  AXP_DISABLED_PROPERTY,\n  AXP_PLACEHOLDER_PROPERTY,\n  AXP_REQUIRED_VALIDATION_PROPERTY,\n} from '../../../properties';\nimport { AXP_NAME_PROPERTY } from '../../../properties/general.props';\n\nexport const AXPSignatureWidget: AXPWidgetConfig = {\n  name: 'signature',\n  title: '@platform-layout-widgets:widgets.signature.title',\n  description: '@platform-layout-widgets:widgets.signature.description',\n  icon: 'fa-light fa-file-signature',\n  categories: [AXP_WIDGETS_ADVANCE_CATEGORY],\n  subCategory: AXP_WIDGETS_ADVANCE_SUB_INPUT,\n  type: 'editor',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    AXP_DISABLED_PROPERTY,\n    AXP_PLACEHOLDER_PROPERTY,\n    AXP_REQUIRED_VALIDATION_PROPERTY,\n  ],\n  components: {\n    view: {\n      component: () => import('./signature-pad-widget-view.component').then((c) => c.AXPSignatureWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./signature-pad-widget-edit.component').then((c) => c.AXPSignatureWidgetEditComponent),\n    },\n    column: {\n      component: () =>\n        import('./signature-pad-widget-column.component').then((c) => c.AXPSignatureWidgetColumnComponent),\n    },\n    designer: {\n      component: () => import('./signature-pad-widget-edit.component').then((c) => c.AXPSignatureWidgetEditComponent),\n    },\n  },\n};\n\nexport interface AXPSignatureWidgetViewOptions {\n  placeholder?: string;\n}\n\nexport interface AXPSignatureWidgetEditOptions {\n  disabled?: boolean;\n  placeholder?: string;\n  /** When true (default), show click-to-edit overlay over read-only paint. Set false when used inside a dialog so paint is directly editable with no overlay. */\n  showOverlay?: boolean;\n}\n\nexport interface AXPSignatureWidgetDesignerOptions {\n  disabled?: boolean;\n  placeholder?: string;\n}\n\nexport interface AXPSignatureWidgetColumnOptions {}\n\nexport interface AXPSignatureWidgetPrintOptions {}\n\nexport interface AXPSignatureWidgetOptions {\n  view: AXPSignatureWidgetViewOptions;\n  edit: AXPSignatureWidgetEditOptions;\n  designer: AXPSignatureWidgetDesignerOptions;\n  column: AXPSignatureWidgetColumnOptions;\n  print: AXPSignatureWidgetPrintOptions;\n}\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    signature: 'signature';\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPopoverModule, AXPopoverComponent } from '@acorex/components/popover';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { ChangeDetectionStrategy, Component, effect, input, output, signal, untracked, viewChild, ElementRef, inject, computed } from '@angular/core';\nimport { AXPStatusDefinition, AXPStatusProvider, AXPStatusTransition } from '@acorex/platform/contracts';\nimport { AXPStatusDefinitionProviderService } from '@acorex/platform/common';\nimport { resolveStatusVisual, AXPStatusVisual } from './status-widget.utils';\n\n//#region ----   Types   ----\n\nexport interface AXPStatusTransitionWithTarget extends AXPStatusTransition {\n  toStatus: AXPStatusDefinition;\n}\n\n//#endregion\n\n//#region ----   Component   ----\n\n@Component({\n  selector: 'axp-status-chip',\n  template: `\n    @let currentStatusDef = currentStatus();\n    @let transitions = computedTransitions();\n    @let hasTransitions = !readonly() && transitions.length > 0;\n    \n    @if (currentStatusDef) {\n      @let visual = getStatusVisual(currentStatusDef);\n      <div\n        class=\"ax-inline-flex ax-items-center ax-gap-1.5 ax-rounded-md ax-px-2 ax-py-0.5 ax-text-xs ax-font-medium axp-status-chip\"\n        [ngClass]=\"visual.chipClass\"\n        [ngStyle]=\"visual.chipStyle\"\n        [class.ax-cursor-pointer]=\"hasTransitions\"\n        [class.ax-cursor-default]=\"!hasTransitions\"\n        (click)=\"hasTransitions && openPopover()\"\n        [attr.title]=\"chipTooltip() ?? null\"\n        #chipElement\n      >\n        @if (currentStatusDef.icon) {\n          <i [class]=\"currentStatusDef.icon + ' ax-text-[0.85em] ax-opacity-90'\"></i>\n        }\n        <span>{{ currentStatusDef.title | translate | async }}</span>\n        @if (hasTransitions) {\n          <i class=\"fa-light fa-chevron-down ax-text-xs\"></i>\n        }\n      </div>\n    } @else {\n      <span class=\"ax-text-muted\">---</span>\n    }\n\n    <!-- Status Change Popover -->\n    @if (hasTransitions) {\n      <ax-popover\n        [openOn]=\"'manual'\"\n        #statusPopover\n        (openChange)=\"onStatusPopoverOpenChange($event)\"\n        [adaptivityEnabled]=\"true\"\n      >\n        <div class=\"ax-lightest-surface ax-border ax-rounded-lg ax-shadow-lg ax-p-2 ax-w-full lg:ax-min-w-[220px]\">\n          <div class=\"ax-mb-2 ax-border-b ax-pb-2\">\n            <h3 class=\"ax-text-sm ax-font-semibold ax-text-on-lightest-surface\">\n              {{ '@general:terms.status.change' | translate | async }}\n            </h3>\n          </div>\n          <div class=\"ax-flex ax-flex-col ax-gap-2\">\n            @for (transition of transitions; track transition.toStatus.name) {\n              @let targetStatus = transition.toStatus;\n              @let transitionVisual = getStatusVisual(targetStatus);\n              <div\n                class=\"ax-inline-flex ax-items-center ax-rounded-md ax-gap-1 ax-text-xs ax-font-medium ax-cursor-pointer hover:ax-lighter-surface ax-p-2\"\n                (click)=\"handleTransitionClick(transition)\"\n                [class.ax-opacity-50]=\"isUpdating()\"\n              >\n                <i\n                  class=\"fa-solid fa-circle\"\n                  [ngClass]=\"transitionVisual.iconClass\"\n                  [ngStyle]=\"transitionVisual.iconStyle\"\n                ></i>\n                <span>\n                  {{ (targetStatus.title || targetStatus.name) | translate | async }}\n                </span>\n              </div>\n            }\n          </div>\n        </div>\n      </ax-popover>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [CommonModule, AXTranslationModule, AXPopoverModule],\n})\nexport class AXPStatusChipComponent {\n  //#region ----   Dependencies   ----\n\n  private readonly statusService = inject(AXPStatusDefinitionProviderService);\n  private readonly dialogService = inject(AXDialogService);\n  private readonly translationService = inject(AXTranslationService);\n\n  //#endregion\n\n  //#region ----   Inputs   ----\n\n  /**\n   * Status definition to display (optional - will be loaded from definitionKey if not provided)\n   */\n  status = input<AXPStatusDefinition | null>(null);\n\n  /**\n   * Status value (status name) - used to find status definition when status is not provided\n   */\n  value = input<string | null>(null);\n\n  /**\n   * Whether the chip is readonly (non-clickable, no popover)\n   */\n  readonly = input<boolean>(false);\n\n  /**\n   * Available transitions to display in the popover (optional - will be computed from definitionKey if not provided)\n   */\n  availableTransitions = input<AXPStatusTransitionWithTarget[] | null>(null);\n\n  /**\n   * Status definition key (e.g., 'task-management.status')\n   * Required for loading status definition and executing transitions\n   */\n  definitionKey = input<string | null>(null);\n\n  /**\n   * Optional entity data to pass to the command execution\n   */\n  entityData = input<Record<string, any> | null>(null);\n\n  //#endregion\n\n  //#region ----   Outputs   ----\n\n  /**\n   * Emitted when popover open state changes\n   */\n  openChange = output<boolean>();\n\n  /**\n   * Emitted when a transition is successfully executed\n   */\n  transitionExecuted = output<AXPStatusTransitionWithTarget>();\n\n  /**\n   * Emitted when a transition execution fails\n   */\n  transitionError = output<Error>();\n\n  //#endregion\n\n  //#region ----   View Children   ----\n\n  protected chipElement = viewChild<ElementRef>('chipElement');\n  protected statusPopover = viewChild<AXPopoverComponent>('statusPopover');\n\n  //#endregion\n\n  //#region ----   Signals   ----\n\n  protected isPopoverOpen = signal(false);\n  protected isUpdating = signal(false);\n  protected providerSignal = signal<AXPStatusProvider | undefined>(undefined);\n  /** Native tooltip from translated `AXPStatusDefinition.description` (i18n key). */\n  protected chipTooltip = signal<string | null>(null);\n\n  //#endregion\n\n  //#region ----   Computed Properties   ----\n\n  protected statuses = computed<AXPStatusDefinition[]>(() => this.providerSignal()?.statuses ?? []);\n  protected transitions = computed<AXPStatusTransition[]>(() => this.providerSignal()?.transitions ?? []);\n\n  /**\n   * Current status definition - either from input or computed from value\n   */\n  protected currentStatus = computed<AXPStatusDefinition | null>(() => {\n    // If status is provided directly, use it\n    const providedStatus = this.status();\n    if (providedStatus) {\n      return providedStatus;\n    }\n\n    // Otherwise, find status by value from loaded provider\n    const statusValue = this.value();\n    if (!statusValue) {\n      return null;\n    }\n\n    return this.statuses().find((s) => s.name === statusValue) ?? null;\n  });\n\n  /**\n   * Available transitions - either from input or computed from definitionKey\n   */\n  protected computedTransitions = computed<AXPStatusTransitionWithTarget[]>(() => {\n    // If transitions are provided directly, use them\n    const providedTransitions = this.availableTransitions();\n    if (providedTransitions !== null && Array.isArray(providedTransitions)) {\n      return providedTransitions;\n    }\n\n    // Otherwise, compute from current status and provider\n    const currentStatus = this.currentStatus();\n    if (!currentStatus) {\n      return [];\n    }\n\n    const statuses = this.statuses();\n    const transitions = this.transitions();\n\n    if (!Array.isArray(statuses) || statuses.length === 0) {\n      return [];\n    }\n\n    // No declared transitions: executeTransition() rejects every path — do not offer fake targets\n    if (!Array.isArray(transitions) || transitions.length === 0) {\n      return [];\n    }\n\n    // Filter transitions that start from current status\n    const availableTransitions = transitions.filter((t) => t.from === currentStatus.name);\n\n    // Map transitions to include target status definition\n    return availableTransitions\n      .map((transition) => {\n        const toStatus = statuses.find((s) => s.name === transition.to);\n        if (!toStatus) {\n          return null;\n        }\n        return {\n          ...transition,\n          toStatus,\n        };\n      })\n      .filter((t): t is AXPStatusTransition & { toStatus: AXPStatusDefinition } => t !== null);\n  });\n\n  //#endregion\n\n  //#region ----   Effects   ----\n\n  /**\n   * Load status provider when definitionKey changes\n   */\n  private loadProvider = effect(async () => {\n    const key = this.definitionKey();\n    if (!key) {\n      untracked(() => {\n        this.providerSignal.set(undefined);\n      });\n      return;\n    }\n\n    const provider = await this.statusService.getStatus(key);\n    untracked(() => {\n      this.providerSignal.set(provider);\n    });\n  });\n\n  private syncDescriptionTooltip = effect(() => {\n    const def = this.currentStatus();\n    const descKey = def?.description;\n    if (!descKey) {\n      untracked(() => this.chipTooltip.set(null));\n      return;\n    }\n    void this.translationService\n      .translateAsync(descKey)\n      .then((t) => untracked(() => this.chipTooltip.set(t || null)))\n      .catch(() => untracked(() => this.chipTooltip.set(null)));\n  });\n\n  //#endregion\n\n  //#region ----   Public Methods   ----\n\n  /**\n   * Open the popover\n   */\n  openPopover(): void {\n    if (this.statusPopover() && this.chipElement()) {\n      this.statusPopover()!.target = this.chipElement()!.nativeElement;\n      this.statusPopover()!.open();\n      this.isPopoverOpen.set(true);\n    }\n  }\n\n  /**\n   * Close the popover\n   */\n  closePopover(): void {\n    this.statusPopover()?.close();\n    this.isPopoverOpen.set(false);\n  }\n\n  //#endregion\n\n  //#region ----   Event Handlers   ----\n\n  protected onStatusPopoverOpenChange(event: any): void {\n    this.isPopoverOpen.set(event);\n    this.openChange.emit(event);\n  }\n\n  protected async handleTransitionClick(transition: AXPStatusTransitionWithTarget): Promise<void> {\n    if (this.isUpdating()) {\n      return;\n    }\n\n    const definitionKey = this.definitionKey();\n    if (!definitionKey) {\n      console.warn('Definition key is required to execute status transition');\n      this.transitionError.emit(new Error('Definition key is required'));\n      return;\n    }\n\n    // Check if approval is required\n    if (transition.requiresApproval === true) {\n      const confirmed = await this.confirmTransition(transition);\n      if (!confirmed) {\n        return;\n      }\n    }\n\n    this.isUpdating.set(true);\n\n    try {\n      // Execute the transition via status service\n      await this.statusService.executeTransition(\n        definitionKey,\n        transition,\n        this.entityData() ?? {}\n      );\n\n      // Close popover after successful execution\n      this.closePopover();\n\n      // Emit success event\n      this.transitionExecuted.emit(transition);\n    } catch (error) {\n      console.error('Failed to execute status transition:', error);\n      this.transitionError.emit(error instanceof Error ? error : new Error(String(error)));\n    } finally {\n      this.isUpdating.set(false);\n    }\n  }\n\n  //#endregion\n\n  //#region ----   Private Methods   ----\n\n  /**\n   * Show confirmation dialog for transitions that require approval\n   */\n  private async confirmTransition(transition: AXPStatusTransitionWithTarget): Promise<boolean> {\n    const title = await this.translationService.translateAsync('@general:terms.status.confirm-change.title').catch(() => 'Confirm Status Change');\n    const transitionTitle = transition.title\n      ? await this.translationService.translateAsync(transition.title).catch(() => transition.title)\n      : transition.toStatus.title\n        ? await this.translationService.translateAsync(transition.toStatus.title).catch(() => transition.toStatus.title)\n        : transition.toStatus.name;\n\n    const message = await this.translationService.translateAsync('@general:terms.status.confirm-change.message', {\n      params: { transition: transitionTitle }\n    }).catch(() => `Are you sure you want to change the status to \"${transitionTitle}\"?`);\n\n    const result = await this.dialogService.confirm(title, message, 'warning', 'horizontal');\n    return !!result.result;\n  }\n\n  //#endregion\n\n  //#region ----   Utilities   ----\n\n  protected getStatusVisual(status: AXPStatusDefinition | null): AXPStatusVisual {\n    return resolveStatusVisual(status?.color);\n  }\n\n  //#endregion\n}\n\n//#endregion\n\n","\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { AXPWorkflowEventService } from '@acorex/platform/workflow';\nimport { AXPRefreshEvent } from '@acorex/platform/common';\n\nimport { ChangeDetectionStrategy, Component, Input, computed, inject, signal, viewChild, effect, untracked } from '@angular/core';\nimport { AXPStatusDefinition, AXPStatusProvider, AXPStatusTransition } from '@acorex/platform/contracts';\nimport { AXPStatusDefinitionProviderService } from '@acorex/platform/common';\nimport { AXPStatusChipComponent, AXPStatusTransitionWithTarget } from './status-chip.component';\n\n//#region ----   Component   ----\n\n@Component({\n  selector: 'axp-status-widget-column',\n  template: `\n    <axp-status-chip\n      [status]=\"statusItem()\"\n      [readonly]=\"columnReadonly()\"\n      [availableTransitions]=\"getAvailableTransitions()\"\n      [definitionKey]=\"definitionKey()\"\n      [entityData]=\"entityData()\"\n      (transitionExecuted)=\"onTransitionExecuted($event)\"\n      (transitionError)=\"onTransitionError($event)\"\n      (openChange)=\"onStatusPopoverOpenChange($event)\"\n      #statusChip\n    ></axp-status-chip>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXTranslationModule, AXPStatusChipComponent],\n  inputs: ['rawValue', 'rowData'],\n})\nexport class AXPStatusWidgetColumnComponent extends AXPColumnWidgetComponent<any> {\n  //#region ----   Dependencies   ----\n\n  private readonly statusService = inject(AXPStatusDefinitionProviderService);\n  private readonly workflowEventService = inject(AXPWorkflowEventService);\n\n  //#endregion\n\n  //#region ----   View Children   ----\n\n  protected statusChip = viewChild(AXPStatusChipComponent);\n\n  //#endregion\n\n  //#region ----   Inputs   ----\n\n  private readonly rawValueSignal = signal<any>(null);\n  protected readonly rowDataSignal = signal<any>(null);\n\n  @Input('rawValue')\n  set rawValueInput(value: any) {\n    this.rawValueSignal.set(value);\n  }\n\n  @Input('rowData')\n  set rowDataInput(value: any) {\n    this.rowDataSignal.set(value);\n  }\n\n  //#endregion\n\n  //#region ----   Signals   ----\n\n  protected isStatusPopoverOpen = signal(false);\n  private providerSignal = signal<AXPStatusProvider | undefined>(undefined);\n\n  //#endregion\n\n  //#region ----   Effects   ----\n\n  private loadProvider = effect(async () => {\n    const key = this.definitionKey();\n    if (!key) {\n      this.providerSignal.set(undefined);\n      return;\n    }\n\n    const provider = await this.statusService.getStatus(key);\n    untracked(() => {\n      this.providerSignal.set(provider);\n    });\n  });\n\n  //#endregion\n\n  //#region ----   Computed Properties   ----\n\n  protected definitionKey = computed<string | null>(() => {\n    return (this.options['definitionKey'] as string) ?? null;\n  });\n\n  /**\n   * When true, the grid cell is display-only (no transition popover). Default false preserves existing grids.\n   */\n  protected columnReadonly = computed(() => !!this.options['readonly']);\n\n  protected entityData = computed<Record<string, any> | null>(() => {\n    const row = this.rowDataSignal();\n    if (!row || typeof row !== 'object') {\n      return null;\n    }\n    const entityKey = this.options['entity'] as string | undefined;\n    const fieldName = this.options['fieldName'] as string | undefined;\n    return {\n      ...row,\n      ...(entityKey ? { entity: entityKey, entityName: entityKey } : {}),\n      ...(fieldName ? { statusField: fieldName } : {}),\n    };\n  });\n\n  private readonly resolvedStatuses = computed<AXPStatusDefinition[]>(() => {\n    return this.providerSignal()?.statuses ?? [];\n  });\n\n  private readonly resolvedTransitions = computed<AXPStatusTransition[]>(() => {\n    return this.providerSignal()?.transitions ?? [];\n  });\n\n  protected statusItem = computed<AXPStatusDefinition | null>(() => {\n    const value = this.rawValueSignal();\n    if (!value) {\n      return null;\n    }\n\n    if (typeof value === 'object') {\n      const name = value?.name;\n      if (name) {\n        return value as AXPStatusDefinition;\n      }\n      return null;\n    }\n\n    if (typeof value === 'string') {\n      return this.resolvedStatuses().find((status) => status.name === value) ?? null;\n    }\n\n    return null;\n  });\n\n  /**\n   * Get available transitions for the current status\n   * Returns transitions with their target status definitions\n   * If no transitions are defined, returns all statuses (except current) as available options\n   */\n  protected getAvailableTransitions = computed<AXPStatusTransitionWithTarget[]>(() => {\n    const currentStatus = this.statusItem();\n    if (!currentStatus) {\n      return [];\n    }\n\n    const transitions = this.resolvedTransitions();\n    const statuses = this.resolvedStatuses();\n\n    if (!Array.isArray(statuses) || statuses.length === 0) {\n      return [];\n    }\n\n    // No declared transitions: executeTransition() rejects every path — do not offer fake targets\n    if (!Array.isArray(transitions) || transitions.length === 0) {\n      return [];\n    }\n\n    // Filter transitions that start from current status\n    const availableTransitions = transitions.filter((t) => t.from === currentStatus.name);\n\n    // If no transitions found for current status, return empty array\n    if (availableTransitions.length === 0) {\n      return [];\n    }\n\n    // Map transitions to include target status definition\n    return availableTransitions\n      .map((transition) => {\n        const toStatus = statuses.find((s) => s.name === transition.to);\n        if (!toStatus) {\n          return null;\n        }\n        return {\n          ...transition,\n          toStatus,\n        };\n      })\n      .filter((t): t is AXPStatusTransition & { toStatus: AXPStatusDefinition } => t !== null);\n  });\n\n  //#endregion\n\n  //#region ----   Event Handlers   ----\n\n  protected onStatusPopoverOpenChange(isOpen: boolean): void {\n    this.isStatusPopoverOpen.set(isOpen);\n  }\n\n  protected onTransitionExecuted(transition: AXPStatusTransitionWithTarget): void {\n    // Dispatch refresh event to update the list\n    const entitySource = this.options['entity'] as string | undefined;\n    if (entitySource) {\n      this.workflowEventService.dispatch(\n        AXPRefreshEvent({\n          entity: entitySource,\n        }),\n      );\n    }\n  }\n\n  protected onTransitionError(error: Error): void {\n    console.error('Status transition error:', error);\n    // Could show a toast notification here if needed\n  }\n\n  //#endregion\n\n  //#endregion\n}\n\n//#endregion","import { AXPStatusDefinition, AXPStatusProvider, AXPStatusTransition } from '@acorex/platform/contracts';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, signal, effect, untracked, inject, viewChild } from '@angular/core';\n\nimport { AXPStatusDefinitionProviderService } from '@acorex/platform/common';\nimport { AXPStatusChipComponent, AXPStatusTransitionWithTarget } from './status-chip.component';\n\n//#region ----   Component   ----\n\n@Component({\n  selector: 'axp-status-widget-edit',\n  template: `\n    <axp-status-chip\n      [status]=\"currentStatus()\"\n      [readonly]=\"isReadonly()\"\n      [availableTransitions]=\"getAvailableTransitions()\"\n      [definitionKey]=\"definitionKey()\"\n      [entityData]=\"getEntityData()\"\n      (transitionExecuted)=\"onTransitionExecuted($event)\"\n      (transitionError)=\"onTransitionError($event)\"\n      (openChange)=\"onStatusPopoverOpenChange($event)\"\n      #statusChip\n    ></axp-status-chip>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXTranslationModule, AXPStatusChipComponent],\n})\nexport class AXPStatusWidgetEditComponent extends AXPValueWidgetComponent<any | null> {\n\n  //#region ----   View Children   ----\n\n  protected statusChip = viewChild(AXPStatusChipComponent);\n\n  //#endregion\n\n  //#region ----   Properties   ----\n\n  private readonly statusService = inject(AXPStatusDefinitionProviderService);\n\n  protected definitionKey = computed<string | null>(() => (this.options()['definitionKey'] as string) ?? null);\n\n  /** When true, the chip is display-only (no transition popover). Set via interface options. */\n  protected isReadonly = computed(\n    () => !!this.options()['readonly'] || !!this.options()['disabled'],\n  );\n\n  protected providerSignal = signal<AXPStatusProvider | undefined>(undefined);\n  protected statuses = computed<AXPStatusDefinition[]>(() => this.providerSignal()?.statuses ?? []);\n  protected transitions = computed<AXPStatusTransition[]>(() => this.providerSignal()?.transitions ?? []);\n\n  // Track the entity path to detect when entity changes\n  protected entityPath = signal<string | null>(null);\n\n  // Initial value - set when entity loads and reset when entity changes (for transition checking)\n  protected initialValue = signal<string | null>(null);\n\n  // Current status for display\n  protected currentStatus = computed<AXPStatusDefinition | null>(() => {\n    const value = this.getValue();\n    const statusName = typeof value === 'string' ? value : value?.name;\n    if (!statusName) {\n      return null;\n    }\n    return this.statuses().find((s) => s.name === statusName) ?? null;\n  });\n\n  //#endregion\n\n  //#region ----   Effects   ----\n\n  private loadProvider = effect(async () => {\n    const key = this.definitionKey();\n    if (!key) {\n      this.providerSignal.set(undefined);\n      return;\n    }\n\n    const provider = await this.statusService.getStatus(key);\n    untracked(() => {\n      this.providerSignal.set(provider);\n    });\n  });\n\n  // Effect to track entity path changes and reset initial value when entity changes\n  private trackEntityPath = effect(() => {\n    const currentPath = this.fullPath();\n    const previousPath = untracked(() => this.entityPath());\n\n    // If path changed (new entity loaded), reset initial value\n    if (currentPath !== previousPath) {\n      untracked(() => {\n        this.entityPath.set(currentPath);\n        // Reset initial value when entity changes\n        this.initialValue.set(null);\n      });\n    }\n  });\n\n  // Effect to set initial value only once when entity data first loads\n  private setInitialValue = effect(() => {\n    const value = this.getValue();\n    const currentInitial = untracked(() => this.initialValue());\n    const currentPath = untracked(() => this.entityPath());\n\n    // Set initial value only if:\n    // 1. We have a path (entity is loaded)\n    // 2. We have a value from entity\n    // 3. Initial value is not set yet (null)\n    // This ensures initial value is set only once per entity load\n    const statusName = typeof value === 'string' ? value : value?.name;\n    if (currentPath && statusName && !currentInitial) {\n      untracked(() => {\n        this.initialValue.set(statusName);\n      });\n    }\n  });\n\n  // Normalize legacy object values into string identifiers to keep storage consistent\n  private normalizeValue = effect(() => {\n    const value = this.getValue();\n    if (value && typeof value === 'object' && value?.name) {\n      const name = value.name;\n      untracked(() => this.setValue(name));\n    }\n  });\n\n  //#endregion\n\n  //#region ----   Signals   ----\n\n  protected isStatusPopoverOpen = signal(false);\n\n  //#endregion\n\n  //#region ----   Computed Properties   ----\n\n  /**\n   * Get available transitions for the current status\n   * Returns transitions with their target status definitions\n   * Respects transition rules if defined\n   */\n  protected getAvailableTransitions = computed<AXPStatusTransitionWithTarget[]>(() => {\n    const currentStatus = this.currentStatus();\n    if (!currentStatus) {\n      return [];\n    }\n\n    const transitions = this.transitions();\n    const statuses = this.statuses();\n\n    if (!Array.isArray(statuses) || statuses.length === 0) {\n      return [];\n    }\n\n    // No declared transitions: executeTransition() rejects every path — do not offer fake targets\n    if (!Array.isArray(transitions) || transitions.length === 0) {\n      return [];\n    }\n\n    // Filter transitions that start from current status\n    const availableTransitions = transitions.filter((t) => t.from === currentStatus.name);\n\n    // If no transitions found for current status, return empty array\n    if (availableTransitions.length === 0) {\n      return [];\n    }\n\n    // Map transitions to include target status definition\n    return availableTransitions\n      .map((transition) => {\n        const toStatus = statuses.find((s) => s.name === transition.to);\n        if (!toStatus) {\n          return null;\n        }\n        return {\n          ...transition,\n          toStatus,\n        };\n      })\n      .filter((t): t is AXPStatusTransition & { toStatus: AXPStatusDefinition } => t !== null);\n  });\n\n  //#endregion\n\n  //#region ----   Event Handlers   ----\n\n  protected onStatusPopoverOpenChange(isOpen: boolean): void {\n    this.isStatusPopoverOpen.set(isOpen);\n  }\n\n  protected onTransitionExecuted(transition: AXPStatusTransitionWithTarget): void {\n    // Update the value after successful transition\n    const newStatus = transition.toStatus.name;\n    if (newStatus) {\n      this.setValue(newStatus);\n    }\n  }\n\n  protected onTransitionError(error: Error): void {\n    console.error('Status transition error:', error);\n    // Could show a toast notification here if needed\n  }\n\n  /**\n   * Build context for default `Entity:UpdateStatus` (entity key, record id, status field path).\n   */\n  protected getEntityData(): Record<string, any> | null {\n    const opts = this.options();\n    const entityKey = (opts['entityName'] ?? opts['entity']) as string | undefined;\n    const statusField = (opts['statusField'] ?? opts['fieldName'] ?? this.path) as string | undefined;\n    const parentPath = this.parentPath();\n\n    const idPathCandidates = [\n      parentPath ? `${parentPath}.id` : null,\n      'id',\n      parentPath ? `${parentPath}._id` : null,\n      '_id',\n    ].filter((p): p is string => !!p);\n\n    let id: unknown;\n    for (const p of idPathCandidates) {\n      id = this.contextService.getValue(p);\n      if (id != null && String(id).length > 0) {\n        break;\n      }\n    }\n\n    if (!entityKey || id == null || String(id).length === 0) {\n      return null;\n    }\n\n    return {\n      entity: entityKey,\n      entityName: entityKey,\n      statusField: statusField ?? 'statusId',\n      id: String(id),\n    };\n  }\n\n  //#endregion\n}\n\n//#endregion\n","\nimport { AXPStatusDefinition, AXPStatusProvider, AXPStatusTransition } from '@acorex/platform/contracts';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPDataListWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, untracked, signal, viewChild } from '@angular/core';\n\nimport { isEqual } from 'lodash-es';\nimport { AXPStatusChipComponent, AXPStatusTransitionWithTarget } from './status-chip.component';\nimport { AXPStatusDefinitionProviderService } from '@acorex/platform/common';\n\n//#region ----   Component   ----\n\n@Component({\n  selector: 'axp-status-widget-view',\n  template: `\n    <axp-status-chip\n      [status]=\"currentStatus()\"\n      [readonly]=\"isReadonly()\"\n      [availableTransitions]=\"getAvailableTransitions()\"\n      [definitionKey]=\"definitionKey()\"\n      [entityData]=\"getEntityData()\"\n      (transitionExecuted)=\"onTransitionExecuted($event)\"\n      (transitionError)=\"onTransitionError($event)\"\n      (openChange)=\"onStatusPopoverOpenChange($event)\"\n      #statusChip\n    ></axp-status-chip>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXTranslationModule, AXPStatusChipComponent],\n})\nexport class AXPStatusWidgetViewComponent extends AXPDataListWidgetComponent {\n  //#region ----   View Children   ----\n\n  protected statusChip = viewChild(AXPStatusChipComponent);\n\n  //#endregion\n\n  //#region ----   Properties   ----\n\n  private readonly statusService = inject(AXPStatusDefinitionProviderService);\n  protected definitionKey = computed<string | null>(() => (this.options()['definitionKey'] as string) ?? null);\n\n  /** When true, the chip is display-only (no transition popover). Set via interface options. */\n  protected isReadonly = computed(\n    () => !!this.options()['readonly'] || !!this.options()['disabled'],\n  );\n\n  private providerSignal = signal<AXPStatusProvider | undefined>(undefined);\n\n  private resolvedStatuses = computed<AXPStatusDefinition[]>(() => this.providerSignal()?.statuses ?? []);\n  private resolvedTransitions = computed<AXPStatusTransition[]>(() => this.providerSignal()?.transitions ?? []);\n\n  //#endregion\n\n  //#region ----   Effects   ----\n\n  private loadProvider = effect(async () => {\n    const key = this.definitionKey();\n    if (!key) {\n      this.providerSignal.set(undefined);\n      return;\n    }\n\n    const provider = await this.statusService.getStatus(key);\n    untracked(() => {\n      this.providerSignal.set(provider);\n    });\n  });\n\n  private synchronizeOptions = effect(() => {\n    const statuses = this.resolvedStatuses();\n\n    untracked(() => {\n      const currentDataSource = this.options()['dataSource'] as AXPStatusDefinition[] | undefined;\n      if (!isEqual(currentDataSource, statuses)) {\n        this.setOptions({ dataSource: statuses });\n      }\n    });\n  });\n\n  //#endregion\n\n  //#region ----   Computed Properties   ----\n\n  /**\n   * Get current status from selected items or value\n   */\n  protected currentStatus = computed<AXPStatusDefinition | null>(() => {\n    const items = this.selectedItems();\n    const firstItem = items?.[0];\n\n    if (!firstItem) {\n      return null;\n    }\n\n    // If item is already a status definition\n    if (firstItem.name && firstItem.title) {\n      return firstItem as AXPStatusDefinition;\n    }\n\n    // If item has a status name/identifier\n    const statusName = typeof firstItem === 'string' ? firstItem : firstItem?.name || firstItem?.status;\n    if (!statusName) {\n      return null;\n    }\n\n    return this.resolvedStatuses().find((s) => s.name === statusName) ?? null;\n  });\n\n  /**\n   * Get available transitions for the current status\n   */\n  protected getAvailableTransitions = computed<AXPStatusTransitionWithTarget[]>(() => {\n    const currentStatus = this.currentStatus();\n    if (!currentStatus) {\n      return [];\n    }\n\n    const transitions = this.resolvedTransitions();\n    const statuses = this.resolvedStatuses();\n\n    if (!Array.isArray(statuses) || statuses.length === 0) {\n      return [];\n    }\n\n    // No declared transitions: executeTransition() rejects every path — do not offer fake targets\n    if (!Array.isArray(transitions) || transitions.length === 0) {\n      return [];\n    }\n\n    // Filter transitions that start from current status\n    const availableTransitions = transitions.filter((t) => t.from === currentStatus.name);\n\n    // If no transitions found for current status, return empty array\n    if (availableTransitions.length === 0) {\n      return [];\n    }\n\n    // Map transitions to include target status definition\n    return availableTransitions\n      .map((transition) => {\n        const toStatus = statuses.find((s) => s.name === transition.to);\n        if (!toStatus) {\n          return null;\n        }\n        return {\n          ...transition,\n          toStatus,\n        };\n      })\n      .filter((t): t is AXPStatusTransition & { toStatus: AXPStatusDefinition } => t !== null);\n  });\n\n  //#endregion\n\n  //#region ----   Event Handlers   ----\n\n  protected onStatusPopoverOpenChange(isOpen: boolean): void {\n    // Handle popover state change if needed\n  }\n\n  protected onTransitionExecuted(transition: AXPStatusTransitionWithTarget): void {\n    // Update the value after successful transition\n    const newStatus = transition.toStatus.name;\n    if (newStatus) {\n      const valueField = this.valueField();\n      const newValue = typeof newStatus === 'string' ? newStatus : newStatus?.[valueField] ?? newStatus;\n      this.setValue(newValue);\n    }\n  }\n\n  protected onTransitionError(error: Error): void {\n    console.error('Status transition error:', error);\n    // Could show a toast notification here if needed\n  }\n\n  /**\n   * Get entity data for command execution context\n   */\n  protected getEntityData(): Record<string, any> | null {\n    // Return first selected item if available\n    const items = this.selectedItems();\n    return items?.[0] ?? null;\n  }\n\n  //#endregion\n}\n\n//#endregion\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_ADVANCE_SUB_DATA } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_DATA_PATH_PROPERTY,\n  AXP_DISABLED_PROPERTY,\n  AXP_NAME_PROPERTY,\n  AXP_PLACEHOLDER_PROPERTY,\n} from '../../../properties';\n\nexport const AXPStatusWidget: AXPWidgetConfig = {\n  name: 'status-widget',\n  title: '@platform-layout-widgets:widgets.status-widget.title',\n  description: '@platform-layout-widgets:widgets.status-widget.description',\n  icon: 'fa-light fa-circle-check',\n  categories: [AXP_WIDGETS_ADVANCE_CATEGORY],\n  subCategory: AXP_WIDGETS_ADVANCE_SUB_DATA,\n  groups: [AXPWidgetGroupEnum.EntityWidget],\n  defaultFilterWidgetName: 'status-filter',\n  type: 'editor',\n  properties: [\n    // custom options instead of generic data source\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    AXP_DISABLED_PROPERTY,\n    AXP_PLACEHOLDER_PROPERTY,\n  ],\n  components: {\n    view: {\n      component: () => import('./status-widget-view.component').then((c) => c.AXPStatusWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./status-widget-edit.component').then((c) => c.AXPStatusWidgetEditComponent),\n    },\n    column: {\n      component: () => import('./status-widget-column.component').then((c) => c.AXPStatusWidgetColumnComponent),\n    },\n    designer: {\n      component: () => import('./status-widget-edit.component').then((c) => c.AXPStatusWidgetEditComponent),\n    },\n  },\n};\n\nexport interface AXPStatusWidgetDesignerOptions {\n  disabled?: boolean;\n  readonly?: boolean;\n  placeholder?: string;\n  definitionKey?: string;\n  showIcon?: boolean;\n  showBadge?: boolean;\n  badgeStyle?: 'default' | 'outline' | 'solid';\n  colorField?: string;\n  iconField?: string;\n  filter?: any;\n  expose?: any;\n}\n\nexport interface AXPStatusWidgetViewOptions {\n  definitionKey?: string;\n  showIcon?: boolean;\n  showBadge?: boolean;\n  badgeStyle?: 'default' | 'outline' | 'solid';\n  colorField?: string;\n  iconField?: string;\n}\n\nexport interface AXPStatusWidgetEditOptions {\n  disabled?: boolean;\n  readonly?: boolean;\n  placeholder?: string;\n  definitionKey?: string;\n  showIcon?: boolean;\n  showBadge?: boolean;\n  badgeStyle?: 'default' | 'outline' | 'solid';\n  colorField?: string;\n  iconField?: string;\n  filter?: any;\n  expose?: any;\n}\n\nexport interface AXPStatusWidgetColumnOptions {\n  valueField?: any;\n  textField?: any;\n  definitionKey?: string;\n  colorField?: any;\n  iconField?: any;\n  showIcon?: boolean;\n  showBadge?: boolean;\n  badgeStyle?: 'default' | 'outline' | 'solid';\n}\n\nexport interface AXPStatusWidgetPrintOptions { }\n\nexport interface AXPStatusWidgetOptions {\n  designer: AXPStatusWidgetDesignerOptions;\n  view: AXPStatusWidgetViewOptions;\n  edit: AXPStatusWidgetEditOptions;\n  print: AXPStatusWidgetPrintOptions;\n  column: AXPStatusWidgetColumnOptions;\n}\n","//#region ----   Imports   ----\n\nimport { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_ADVANCE_SUB_TOOLS } from '@acorex/platform/layout/widget-core';\nimport {\n    AXP_DATA_PATH_PROPERTY,\n    AXP_DISABLED_PROPERTY,\n    AXP_NAME_PROPERTY,\n} from '../../../properties';\n\n//#endregion\n\n//#region ----   Widget Config   ----\n\nexport const AXPStopwatchWidget: AXPWidgetConfig = {\n    name: 'stopwatch',\n    title: '@platform-layout-widgets:widgets.stopwatch.title',\n    description: '@platform-layout-widgets:widgets.stopwatch.description',\n    icon: 'fa-light fa-stopwatch',\n    categories: [AXP_WIDGETS_ADVANCE_CATEGORY],\n  subCategory: AXP_WIDGETS_ADVANCE_SUB_TOOLS,\n    groups: [AXPWidgetGroupEnum.UtilityWidget],\n    type: 'view',\n    properties: [\n        AXP_NAME_PROPERTY,\n        AXP_DATA_PATH_PROPERTY,\n        AXP_DISABLED_PROPERTY,\n        {\n            name: 'mode',\n            title: 'Mode',\n            visible: true,\n            group: { name: 'general', title: 'General', order: 1 },\n            schema: {\n                dataType: 'string',\n                interface: {\n                    path: 'mode',\n                    type: 'select-box',\n                    options: {\n                        valueField: 'value',\n                        textField: 'text',\n                        dataSource: [\n                            { value: 'count-up', text: 'Count Up' },\n                            { value: 'count-down', text: 'Count Down' },\n                        ],\n                    },\n                },\n            },\n        },\n        {\n            name: 'timeLimit',\n            title: 'Time Limit (seconds)',\n            visible: true,\n            group: { name: 'general', title: 'General', order: 1 },\n            schema: {\n                dataType: 'number',\n                interface: {\n                    path: 'timeLimit',\n                    type: 'number-box',\n                    options: {\n                        minValue: 1,\n                        placeholder: 'Enter time limit in seconds',\n                    },\n                },\n            },\n        },\n        {\n            name: 'format',\n            title: 'Display Format',\n            visible: true,\n            group: { name: 'general', title: 'General', order: 1 },\n            schema: {\n                dataType: 'string',\n                interface: {\n                    path: 'format',\n                    type: 'select-box',\n                    options: {\n                        valueField: 'value',\n                        textField: 'text',\n                        dataSource: [\n                            { value: 'hh:mm:ss', text: 'HH:MM:SS' },\n                            { value: 'mm:ss', text: 'MM:SS' },\n                            { value: 'ss', text: 'Seconds Only' },\n                        ],\n                    },\n                },\n            },\n        },\n        {\n            name: 'autoStart',\n            title: 'Auto Start',\n            visible: true,\n            group: { name: 'general', title: 'General', order: 1 },\n            schema: {\n                dataType: 'boolean',\n                interface: {\n                    path: 'autoStart',\n                    type: 'switch',\n                },\n            },\n        },\n        {\n            name: 'showControls',\n            title: 'Show Controls',\n            visible: true,\n            group: { name: 'general', title: 'General', order: 1 },\n            schema: {\n                dataType: 'boolean',\n                interface: {\n                    path: 'showControls',\n                    type: 'switch',\n                },\n            },\n        },\n    ],\n    components: {\n        view: {\n            component: () => import('./stopwatch-widget-view.component').then((c) => c.AXPStopwatchWidgetViewComponent),\n        },\n    },\n};\n\n//#endregion\n\n//#region ----   Widget Options Interfaces   ----\n\nexport interface AXPStopwatchWidgetOptions {\n    mode?: 'count-up' | 'count-down';\n    timeLimit?: number; // seconds\n    format?: 'hh:mm:ss' | 'mm:ss' | 'ss';\n    autoStart?: boolean;\n    showControls?: boolean;\n}\n\n//#endregion\n\n","//#region ----   Imports   ----\n\nimport { AXPStopwatchComponent } from '@acorex/platform/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, effect, OnDestroy } from '@angular/core';\n\nimport { AXPStopwatchWidgetOptions } from './stopwatch-widget.config';\n\n//#endregion\n\n//#region ----   Component   ----\n\n@Component({\n    selector: 'axp-stopwatch-widget-view',\n    template: `\n        <axp-stopwatch\n            [mode]=\"stopwatchMode()\"\n            [timeLimit]=\"timeLimit()\"\n            [format]=\"format()\"\n            [autoStart]=\"autoStart()\"\n            [showControls]=\"showControls()\"\n            [value]=\"getValue() || 0\"\n            (valueChange)=\"handleValueChange($event)\"\n            (timeUp)=\"handleTimeUp()\"\n        ></axp-stopwatch>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [AXPStopwatchComponent],\n    host: {\n        class: 'ax-block ax-w-full',\n    },\n})\nexport class AXPStopwatchWidgetViewComponent extends AXPValueWidgetComponent<number, AXPStopwatchWidgetOptions> {\n    //#region ----   Computed Properties   ----\n\n    protected readonly stopwatchMode = computed<'count-up' | 'count-down'>(() => {\n        return (this.options()?.['mode'] as 'count-up' | 'count-down') || 'count-up';\n    });\n\n    protected readonly timeLimit = computed<number | undefined>(() => {\n        return this.options()?.['timeLimit'] as number | undefined;\n    });\n\n    protected readonly format = computed<'hh:mm:ss' | 'mm:ss' | 'ss'>(() => {\n        return (this.options()?.['format'] as 'hh:mm:ss' | 'mm:ss' | 'ss') || 'mm:ss';\n    });\n\n    protected readonly autoStart = computed<boolean>(() => {\n        return (this.options()?.['autoStart'] as boolean) ?? false;\n    });\n\n    protected readonly showControls = computed<boolean>(() => {\n        return (this.options()?.['showControls'] as boolean) ?? true;\n    });\n\n    //#endregion\n\n    //#region ----   Event Handlers   ----\n\n    protected handleValueChange(value: number | Event): void {\n        const numValue = typeof value === 'number' ? value : 0;\n        this.setValue(numValue);\n    }\n\n    protected handleTimeUp(): void {\n        // Handle time up event if needed\n        // This can be extended to emit an output event\n    }\n\n    //#endregion\n}\n\n//#endregion\n\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_CONFIG } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY } from '../../../properties';\nimport { AXP_NAME_PROPERTY } from '../../../properties/general.props';\n\nexport const AXPWidgetFieldConfiguratorWidget: AXPWidgetConfig = {\n  name: 'widget-field-configurator',\n  title: '@platform-layout-widgets:widgets.widget-field-configurator.title',\n  icon: 'fa-light fa-puzzle-piece',\n  description: '@platform-layout-widgets:widgets.widget-field-configurator.description',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_CONFIG,\n  groups: [AXPWidgetGroupEnum.UtilityWidget],\n  type: 'editor',\n  defaultFilterWidgetName: 'string-filter',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    {\n      name: 'fieldName',\n      title: 'Field Name',\n      visible: true,\n      group: { name: 'general', title: 'General', order: 1 },\n      schema: {\n        dataType: 'string',\n        interface: {\n          path: 'fieldName',\n          type: 'text-box',\n          options: {\n            placeholder: 'Enter field name',\n          },\n        },\n      },\n    },\n    {\n      name: 'fieldTitle',\n      title: 'Field Title',\n      visible: true,\n      group: { name: 'general', title: 'General', order: 1 },\n      schema: {\n        dataType: 'string',\n        interface: {\n          path: 'fieldTitle',\n          type: 'text-box',\n          options: {\n            placeholder: 'Enter field title',\n          },\n        },\n      },\n    },\n    {\n      name: 'label',\n      title: 'Label',\n      visible: true,\n      group: { name: 'general', title: 'General', order: 1 },\n      schema: {\n        dataType: 'string',\n        interface: {\n          path: 'label',\n          type: 'text-box',\n          options: {\n            placeholder: 'Enter label',\n          },\n        },\n      },\n    },\n  ],\n  components: {\n    edit: {\n      component: () =>\n        import('./widget-field-configurator-widget-edit.component').then((c) => c.AXPWidgetFieldConfiguratorWidgetEditComponent),\n    },\n    designer: {\n      component: () =>\n        import('./widget-field-configurator-widget-edit.component').then((c) => c.AXPWidgetFieldConfiguratorWidgetEditComponent),\n    },\n    column: {\n      component: () =>\n        import('./widget-field-configurator-widget-column.component').then((c) => c.AXPWidgetFieldConfiguratorWidgetColumnComponent),\n    },\n  },\n};\n\n","import { AXPWidgetFieldConfiguratorComponent } from '@acorex/platform/layout/components';\nimport { AXPMultiLanguageString, type AXPWidgetNode } from '@acorex/platform/contracts';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, effect, model, signal, untracked } from '@angular/core';\nimport { isEqual } from 'lodash-es';\n\n@Component({\n  selector: 'axp-widget-field-configurator-widget-edit',\n  template: `\n    @if (isInitialized()) {\n      <axp-widget-field-configurator\n        [(widget)]=\"widgetConfigModel\"\n        [fieldName]=\"fieldName()\"\n        [fieldTitle]=\"fieldTitle()\"\n        [label]=\"label()\"\n        [readonly]=\"readonly()\"\n      ></axp-widget-field-configurator>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetFieldConfiguratorComponent],\n})\nexport class AXPWidgetFieldConfiguratorWidgetEditComponent extends AXPValueWidgetComponent<AXPWidgetNode> {\n  //#region ----   Computed Properties   ----\n\n  protected readonly = computed<boolean>(() => this.options()['readonly'] as boolean);\n  protected fieldName = computed<string>(() => {\n    const fieldNameValue = this.options()['fieldName'];\n    // If fieldName is a non-empty string, use it\n    // This handles cases where expression evaluates to a value like \"camera-type\"\n    // Only fallback to 'field' if fieldName is undefined, null, or empty string\n    if (fieldNameValue !== undefined && fieldNameValue !== null) {\n      const stringValue = String(fieldNameValue).trim();\n      return stringValue || 'field';\n    }\n    return 'field';\n  });\n  protected fieldTitle = computed<AXPMultiLanguageString>(() => {\n    const fieldTitleValue = this.options()['fieldTitle'];\n    if (fieldTitleValue === undefined || fieldTitleValue === null) {\n      return '';\n    }\n    if (typeof fieldTitleValue === 'object' && !Array.isArray(fieldTitleValue)) {\n      return fieldTitleValue as Record<string, string>;\n    }\n    const stringValue = String(fieldTitleValue).trim();\n    return stringValue;\n  });\n  protected label = computed<string>(() => (this.options()['label'] as string) || 'Widget Type');\n\n  //#endregion\n\n  //#region ----   State Signals   ----\n\n  // Track if component is initialized with actual value\n  protected isInitialized = signal(false);\n\n  //#endregion\n\n  //#region ----   Models   ----\n\n  // Model for two-way binding with the configurator\n  protected widgetConfigModel = model<AXPWidgetNode>({ type: '', options: {} });\n\n  //#endregion\n\n  //#region ----   Effects   ----\n\n  // Effect to sync widget value to configurator model (one-way: value -> model)\n  private syncValueToConfigurator = effect(() => {\n    const value = this.getValue();\n\n    // If we have a value, sync it to the model and mark as initialized\n    if (value && value.type) {\n      const currentModel = untracked(() => this.widgetConfigModel());\n\n      if (!isEqual(value, currentModel)) {\n        untracked(() => {\n          this.widgetConfigModel.set(value);\n          this.isInitialized.set(true);\n        });\n      }\n    } else {\n      // If no value exists, still mark as initialized to show the empty configurator\n      untracked(() => {\n        if (!this.isInitialized()) {\n          this.isInitialized.set(true);\n        }\n      });\n    }\n  });\n\n  // Effect to sync configurator model changes back to widget value (one-way: model -> value)\n  private syncConfiguratorToValue = effect(() => {\n    const modelValue = this.widgetConfigModel();\n\n    // Only sync back if component is initialized\n    if (!untracked(() => this.isInitialized())) {\n      return;\n    }\n\n    // Skip if model has empty type\n    if (!modelValue || !modelValue.type) {\n      return;\n    }\n\n    const currentValue = untracked(() => this.getValue());\n\n    // Only update if there's a meaningful change using deep comparison\n    if (!isEqual(modelValue, currentValue)) {\n      untracked(() => {\n        this.setValue(modelValue);\n      });\n    }\n  });\n\n  //#endregion\n}\n\n","//#region ----   Imports   ----\n\nimport { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport type { AXPWidgetNode } from '@acorex/platform/contracts';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { AXPWidgetRegistryService } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\n\n//#endregion\n\n//#region ----   Component   ----\n\n@Component({\n  selector: 'axp-widget-field-configurator-widget-column',\n  template: `\n    @if (widget()) {\n      <i [class]=\"widget()?.icon\" class=\"fa-fw\"></i>&nbsp;\n      <span [title]=\"widget()?.title\" class=\"ax-text-xs ax-font-medium\">\n        {{ widget()?.title | translate | async }}\n      </span>\n    } @else {\n      <span class=\"ax-text-muted\">---</span>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXTranslationModule, AsyncPipe],\n  inputs: ['rawValue', 'rowData'],\n})\nexport class AXPWidgetFieldConfiguratorWidgetColumnComponent extends AXPColumnWidgetComponent<AXPWidgetNode> {\n  //#region ----   Services & Dependencies   ----\n\n  private readonly widgetRegistry = inject(AXPWidgetRegistryService);\n\n  //#endregion\n\n  //#region ----   Computed Properties   ----\n\n  protected widget = computed<AXPWidgetConfig | undefined>(() => {\n    const widgetNode = this.rawValue as AXPWidgetNode | undefined;\n    if (!widgetNode?.type) {\n      return undefined;\n    }\n\n    try {\n      const widgetConfig = this.widgetRegistry.resolve(widgetNode.type);\n      return widgetConfig;\n    } catch {\n      // If widget not found in registry, return the type as fallback\n      return undefined;\n    }\n  });\n\n  //#endregion\n}\n\n//#endregion\n\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXPWidgetsCatalog } from '@acorex/platform/contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_CONFIG } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY } from '../../../properties';\nimport { AXP_NAME_PROPERTY } from '../../../properties/general.props';\n\nexport const AXPItemConfiguratorWidget: AXPWidgetConfig = {\n  name: 'item-configurator',\n  title: '@platform-layout-widgets:widgets.item-configurator.title',\n  icon: 'fa-light fa-sliders',\n  description: '@platform-layout-widgets:widgets.item-configurator.description',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_CONFIG,\n  groups: [AXPWidgetGroupEnum.UtilityWidget],\n  type: 'editor',\n  defaultFilterWidgetName: 'string-filter',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    {\n      name: 'label',\n      title: 'Label',\n      visible: true,\n      group: { name: 'general', title: 'General', order: 1 },\n      schema: {\n        dataType: 'string',\n        interface: {\n          path: 'label',\n          type: 'text-box',\n          options: {\n            placeholder: 'Enter label',\n          },\n        },\n      },\n    },\n    {\n      name: 'dataSource',\n      title: 'Data Source',\n      visible: true,\n      group: { name: 'data', title: 'Data', order: 2 },\n      schema: {\n        dataType: 'object',\n        defaultValue: [],\n        interface: {\n          name: 'dataSource',\n          path: 'options.dataSource',\n          type: AXPWidgetsCatalog.text,\n        },\n      },\n    },\n    {\n      name: 'valueField',\n      title: 'Value Field',\n      visible: true,\n      group: { name: 'data', title: 'Data', order: 2 },\n      schema: {\n        dataType: 'string',\n        defaultValue: 'value',\n        interface: {\n          path: 'options.valueField',\n          type: 'text-box',\n          options: { placeholder: 'Field name for stored value (e.g. value, id, name)' },\n        },\n      },\n    },\n    {\n      name: 'textField',\n      title: 'Text Field',\n      visible: true,\n      group: { name: 'data', title: 'Data', order: 2 },\n      schema: {\n        dataType: 'string',\n        defaultValue: 'text',\n        interface: {\n          path: 'options.textField',\n          type: 'text-box',\n          options: { placeholder: 'Field name for display text' },\n        },\n      },\n    },\n    {\n      name: 'iconField',\n      title: 'Icon Field',\n      visible: true,\n      group: { name: 'data', title: 'Data', order: 2 },\n      schema: {\n        dataType: 'string',\n        defaultValue: 'icon',\n        interface: {\n          path: 'options.iconField',\n          type: 'text-box',\n          options: { placeholder: 'Optional field name for icon class' },\n        },\n      },\n    },\n    {\n      name: 'descriptionField',\n      title: 'Description Field',\n      visible: true,\n      group: { name: 'data', title: 'Data', order: 2 },\n      schema: {\n        dataType: 'string',\n        defaultValue: 'description',\n        interface: {\n          path: 'options.descriptionField',\n          type: 'text-box',\n          options: { placeholder: 'Optional field name for description' },\n        },\n      },\n    },\n    {\n      name: 'recordPropertyDefinitionsField',\n      title: 'Record Property Definitions Field',\n      visible: true,\n      group: { name: 'properties', title: 'Properties', order: 3 },\n      schema: {\n        dataType: 'string',\n        interface: {\n          path: 'options.recordPropertyDefinitionsField',\n          type: 'text-box',\n          options: {\n            placeholder: 'Field path on each row (dot path supported) for AXPWidgetProperty[]',\n          },\n        },\n      },\n    },\n    {\n      name: 'headerActions',\n      title: 'Header actions',\n      description: 'JSON array of AXPActionMenuItem (title, icon, color, command, …) shown next to Configure.',\n      visible: true,\n      group: { name: 'behavior', title: 'Behavior', order: 4 },\n      schema: {\n        dataType: 'object',\n        defaultValue: [],\n        interface: {\n          name: 'headerActions',\n          path: 'options.headerActions',\n          type: AXPWidgetsCatalog.text,\n          options: { rows: 6, placeholder: '[]' },\n        },\n      },\n    },\n  ],\n  components: {\n    edit: {\n      component: () =>\n        import('./item-configurator-widget-edit.component').then((c) => c.AXPItemConfiguratorWidgetEditComponent),\n    },\n    designer: {\n      component: () =>\n        import('./item-configurator-widget-edit.component').then((c) => c.AXPItemConfiguratorWidgetEditComponent),\n    },\n    column: {\n      component: () =>\n        import('./item-configurator-widget-column.component').then((c) => c.AXPItemConfiguratorWidgetColumnComponent),\n    },\n  },\n};\n","import { AXPWidgetProperty, AXPWidgetPropertyGroup, createStringProperty } from '@acorex/platform/layout/widget-core-contracts';\n//#region ---- Imports ----\n\n//#endregion\n\n//#region ---- Delegated definitions → property viewer ----\n\n/**\n * Maps AI delegated parameter definitions (name, binding, …) to {@link AXPWidgetProperty} for the property viewer.\n * Used when agent rows store delegated definitions instead of full widget property lists.\n */\nexport function mapDelegatedParameterDefinitionsToWidgetProperties(\n  defs: ReadonlyArray<{\n    name: string;\n    binding: string;\n    title?: string;\n    description?: string;\n    defaultValue?: unknown;\n    group?: { name: string; title: string; order?: number };\n    interface?: {\n      name?: string;\n      options?: Record<string, unknown>;\n    };\n  }>,\n): AXPWidgetProperty[] {\n  const defaultGroup: AXPWidgetPropertyGroup = {\n    name: 'delegated-agent-parameters',\n    title: 'Delegated parameters',\n    order: 1,\n  };\n  const filtered = defs.filter((d) => d.binding === 'assist_locked' || d.binding === 'assist_default');\n  const source =\n    filtered.length > 0\n      ? filtered\n      : [{ name: 'query', binding: 'assist_default', title: 'Query', description: '' }];\n  return source.map((d) => {\n    const group: AXPWidgetPropertyGroup = d.group\n      ? {\n          name: d.group.name,\n          title: d.group.title,\n          order: d.group.order ?? 0,\n        }\n      : defaultGroup;\n    const defaultStr =\n      d.defaultValue !== undefined && d.defaultValue !== null ? String(d.defaultValue) : undefined;\n    const title = (d.title?.trim() || d.name) as string;\n    const desc = typeof d.description === 'string' ? d.description.trim() : '';\n    const widgetType = d.interface?.name?.trim() ? d.interface.name.trim() : 'text-editor';\n\n    if (widgetType !== 'text-editor') {\n      const property: AXPWidgetProperty = {\n        name: d.name,\n        title,\n        ...(desc ? { description: desc } : {}),\n        group,\n        schema: {\n          dataType: 'string',\n          defaultValue: defaultStr,\n          interface: {\n            path: `options.${d.name}`,\n            name: d.name,\n            type: widgetType,\n            options: d.interface?.options ?? {},\n          },\n        },\n        visible: true,\n      };\n      return property;\n    }\n\n    const p = createStringProperty({\n      name: d.name,\n      title,\n      path: `options.${d.name}`,\n      group,\n      visible: true,\n      defaultValue: defaultStr,\n    });\n    return desc ? { ...p, description: desc } : p;\n  });\n}\n\nexport function isDelegatedParameterDefinitionList(value: unknown): value is Array<{\n  name: string;\n  binding: string;\n  title?: string;\n  description?: string;\n  defaultValue?: unknown;\n  group?: { name: string; title: string; order?: number };\n  interface?: {\n    name?: string;\n    options?: Record<string, unknown>;\n  };\n}> {\n  if (!Array.isArray(value) || value.length === 0) {\n    return false;\n  }\n  const first = value[0];\n  if (first == null || typeof first !== 'object' || Array.isArray(first)) {\n    return false;\n  }\n  return (\n    typeof (first as Record<string, unknown>)['name'] === 'string' &&\n    typeof (first as Record<string, unknown>)['binding'] === 'string' &&\n    !('schema' in (first as object))\n  );\n}\n\n//#endregion\n","import { type AXPActionMenuItem, AXPOptionsData, type AXPWidgetNode, isFormValueEqual, sortByMultiLanguageString } from '@acorex/platform/contracts';\nimport { AXPWidgetProperty } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXTranslationService } from '@acorex/core/translation';\n\nimport { AXPDataSourceDefinitionProviderService } from '@acorex/platform/core';\nimport { AXPItemConfiguratorComponent, ItemConfiguratorListItem } from '@acorex/platform/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, model, signal, untracked } from '@angular/core';\nimport { cloneDeep, get, isEqual } from 'lodash-es';\n\nimport {\n  isDelegatedParameterDefinitionList,\n  mapDelegatedParameterDefinitionsToWidgetProperties,\n} from './delegated-parameter-definitions-to-widget-properties';\n\n@Component({\n  selector: 'axp-item-configurator-widget-edit',\n  template: `\n    @if (isInitialized()) {\n      <axp-item-configurator\n        [(selectedItemId)]=\"selectedItemIdModel\"\n        [(values)]=\"valuesModel\"\n        [label]=\"label()\"\n        [readonly]=\"readonly()\"\n        [items]=\"listItems()\"\n        [headerActions]=\"headerActions()\"\n      ></axp-item-configurator>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPItemConfiguratorComponent],\n})\nexport class AXPItemConfiguratorWidgetEditComponent extends AXPValueWidgetComponent<AXPWidgetNode> {\n  //#region ----   Services & Dependencies   ----\n\n  private readonly dataSourceDefinitionService = inject(AXPDataSourceDefinitionProviderService);\n  private readonly translation = inject(AXTranslationService);\n\n  //#endregion\n\n  //#region ----   Computed Properties   ----\n\n  protected readonly = computed<boolean>(() => this.options()['readonly'] as boolean);\n\n  protected label = computed<string>(() => (this.options()['label'] as string) || 'Widget Type');\n\n  private readonly asyncNamedDataSourceItems = signal<unknown[] | undefined>(undefined);\n\n  private readonly augmentedRows = computed<unknown[]>(() => {\n    const ds = this.options()['dataSource'];\n    const base =\n      typeof ds === 'string' && ds.trim() !== '' ? (this.asyncNamedDataSourceItems() ?? []) : normalizeToArray(ds);\n    const fieldPath = this.recordPropertyDefinitionsField();\n    if (!fieldPath || base.length === 0) {\n      return base;\n    }\n    return base.map((row) => augmentRowForDelegatedParameterDefinitions(row, fieldPath));\n  });\n\n  protected listItems = computed<ItemConfiguratorListItem[]>(() => {\n    const rows = this.augmentedRows();\n    const vf = this.valueField();\n    const tf = this.textField();\n    const ifield = this.iconField();\n    const df = this.descriptionField();\n    const defPath = this.recordPropertyDefinitionsField();\n    const list: ItemConfiguratorListItem[] = [];\n    for (const row of rows) {\n      const idRaw = get(row as object, vf);\n      const id = idRaw != null ? String(idRaw).trim() : '';\n      if (!id) {\n        continue;\n      }\n      const textRaw = get(row as object, tf);\n      const title = textRaw != null ? String(textRaw).trim() : id;\n      const iconRaw = ifield ? get(row as object, ifield) : undefined;\n      const icon = iconRaw != null ? String(iconRaw) : undefined;\n      const descRaw = df ? get(row as object, df) : undefined;\n      const description = descRaw != null ? String(descRaw) : undefined;\n      let propertyDefinitions: AXPWidgetProperty[] | undefined;\n      if (defPath) {\n        const raw = get(row as object, defPath);\n        if (isWidgetPropertyArray(raw)) {\n          propertyDefinitions = raw;\n        }\n      }\n      list.push({ id, title, icon, description, propertyDefinitions });\n    }\n    return sortByMultiLanguageString(list, (item) => item.title, this.translation.getActiveLang());\n  });\n\n  protected valueField = computed<string>(() => {\n    const v = this.options()['valueField'];\n    return v != null && String(v).trim() !== '' ? String(v).trim() : 'value';\n  });\n\n  protected textField = computed<string>(() => {\n    const v = this.options()['textField'];\n    return v != null && String(v).trim() !== '' ? String(v).trim() : 'text';\n  });\n\n  protected iconField = computed<string>(() => {\n    const v = this.options()['iconField'];\n    return v != null && String(v).trim() !== '' ? String(v).trim() : 'icon';\n  });\n\n  protected descriptionField = computed<string>(() => {\n    const v = this.options()['descriptionField'];\n    return v != null && String(v).trim() !== '' ? String(v).trim() : 'description';\n  });\n\n  protected recordPropertyDefinitionsField = computed<string | null>(() => {\n    const v = this.options()['recordPropertyDefinitionsField'];\n    if (v === undefined || v === null) {\n      return null;\n    }\n    const s = String(v).trim();\n    return s === '' ? null : s;\n  });\n\n  protected headerActions = computed<AXPActionMenuItem[]>(() =>\n    normalizeHeaderActions(this.options()['headerActions']),\n  );\n\n  //#endregion\n\n  //#region ----   State Signals   ----\n\n  protected isInitialized = signal(false);\n\n  //#endregion\n\n  //#region ----   Models   ----\n\n  protected selectedItemIdModel = model<string>('');\n\n  protected valuesModel = model<Record<string, unknown>>({});\n\n  //#endregion\n\n  //#region ----   Effects   ----\n\n  private loadNamedDataSourceEffect = effect((onCleanup) => {\n    const ds = this.options()['dataSource'];\n    let cancelled = false;\n    onCleanup(() => {\n      cancelled = true;\n    });\n    if (typeof ds !== 'string' || ds.trim() === '') {\n      this.asyncNamedDataSourceItems.set(undefined);\n      return;\n    }\n    const name = ds.trim();\n    void (async () => {\n      try {\n        const def = await this.dataSourceDefinitionService.get(name);\n        if (cancelled) {\n          return;\n        }\n        if (!def?.source) {\n          this.asyncNamedDataSourceItems.set([]);\n          return;\n        }\n        const source = def.source();\n        const dataSource = source instanceof Promise ? await source : source;\n        if (!dataSource) {\n          this.asyncNamedDataSourceItems.set([]);\n          return;\n        }\n        const dataSourceAny = dataSource as unknown as {\n          config?: { load?: (e: unknown) => Promise<{ items?: unknown[] }> };\n        };\n        if (!dataSourceAny.config?.load) {\n          this.asyncNamedDataSourceItems.set([]);\n          return;\n        }\n        const loaded = await dataSourceAny.config.load({ skip: 0, take: 500 });\n        if (cancelled) {\n          return;\n        }\n        this.asyncNamedDataSourceItems.set(loaded.items ?? []);\n      } catch {\n        if (!cancelled) {\n          this.asyncNamedDataSourceItems.set([]);\n        }\n      }\n    })();\n  });\n\n  private syncValueToConfigurator = effect(() => {\n    const value = this.getValue();\n\n    const sid = untracked(() => this.selectedItemIdModel());\n    const vals = untracked(() => this.valuesModel());\n\n    if (value?.type) {\n      const valueOpts = (value.options ?? {}) as Record<string, unknown>;\n      if (value.type !== sid || !isEqual(valueOpts, vals)) {\n        untracked(() => {\n          this.selectedItemIdModel.set(value.type);\n          this.valuesModel.set(cloneDeep(valueOpts));\n          this.isInitialized.set(true);\n        });\n      }\n      return;\n    }\n\n    untracked(() => {\n      if (sid !== '' || !isEqual(vals, {})) {\n        this.selectedItemIdModel.set('');\n        this.valuesModel.set({});\n      }\n      if (!this.isInitialized()) {\n        this.isInitialized.set(true);\n      }\n    });\n  });\n\n  private syncConfiguratorToValue = effect(() => {\n    const sid = this.selectedItemIdModel();\n    const vals = this.valuesModel();\n\n    if (!untracked(() => this.isInitialized())) {\n      return;\n    }\n\n    const currentValue = untracked(() => this.getValue());\n\n    if (!sid) {\n      if (!isFormValueEqual(null, currentValue)) {\n        untracked(() => {\n          this.setValue(null);\n        });\n      }\n      return;\n    }\n\n    const next = this.buildWidgetNode(sid, vals);\n    if (!isFormValueEqual(next, currentValue)) {\n      untracked(() => {\n        this.setValue(next);\n      });\n    }\n  });\n\n  //#endregion\n\n  //#region ----   Utility Methods   ----\n\n  private buildWidgetNode(sid: string, vals: Record<string, unknown>): AXPWidgetNode {\n    const emptyNode: AXPWidgetNode = { type: '', options: {} as AXPOptionsData };\n\n    if (!sid) {\n      return emptyNode;\n    }\n\n    const currentValue = untracked(() => this.getValue());\n    return {\n      ...(currentValue && typeof currentValue === 'object' ? currentValue : {}),\n      type: sid,\n      options: cloneDeep(vals) as AXPOptionsData,\n    };\n  }\n\n  //#endregion\n}\n\n//#region ----   Helpers   ----\n\nfunction normalizeToArray(value: unknown): unknown[] {\n  if (Array.isArray(value)) {\n    return value;\n  }\n  if (typeof value === 'string' && value.trim() !== '') {\n    try {\n      const parsed = JSON.parse(value) as unknown;\n      return Array.isArray(parsed) ? parsed : [];\n    } catch {\n      return [];\n    }\n  }\n  return [];\n}\n\nfunction tryParseJsonIfString(value: unknown): unknown {\n  if (typeof value === 'string' && value.trim()) {\n    try {\n      return JSON.parse(value) as unknown;\n    } catch {\n      return value;\n    }\n  }\n  return value;\n}\n\nfunction isWidgetPropertyArray(value: unknown): value is AXPWidgetProperty[] {\n  if (!Array.isArray(value) || value.length === 0) {\n    return false;\n  }\n  return value.every(\n    (item) =>\n      item != null &&\n      typeof item === 'object' &&\n      'name' in item &&\n      typeof (item as AXPWidgetProperty).name === 'string' &&\n      'schema' in item &&\n      'group' in item,\n  );\n}\n\nfunction augmentRowForDelegatedParameterDefinitions(row: unknown, key: string): unknown {\n  if (row == null || typeof row !== 'object' || Array.isArray(row)) {\n    return row;\n  }\n  const o = row as Record<string, unknown>;\n  const raw = get(o, key);\n  const parsed = tryParseJsonIfString(raw);\n  if (isWidgetPropertyArray(parsed) && parsed.length > 0) {\n    return row;\n  }\n\n  if (\n    key === 'parameterDefinitions' &&\n    (parsed === undefined || parsed === null || (Array.isArray(parsed) && parsed.length === 0))\n  ) {\n    const defaultDelegated = [{ name: 'query', binding: 'assist_default' as const, title: 'Query', description: '' }];\n    return { ...o, [key]: mapDelegatedParameterDefinitionsToWidgetProperties(defaultDelegated) };\n  }\n\n  if (isDelegatedParameterDefinitionList(parsed)) {\n    return { ...o, [key]: mapDelegatedParameterDefinitionsToWidgetProperties(parsed) };\n  }\n  return row;\n}\n\nfunction normalizeHeaderActions(raw: unknown): AXPActionMenuItem[] {\n  const parsed = tryParseJsonIfString(raw);\n  if (!Array.isArray(parsed)) {\n    return [];\n  }\n  return parsed.filter(\n    (item): item is AXPActionMenuItem =>\n      item != null &&\n      typeof item === 'object' &&\n      'title' in item &&\n      typeof (item as AXPActionMenuItem).title === 'string',\n  );\n}\n\n//#endregion\n","//#region ----   Imports   ----\n\nimport { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport type { AXPWidgetNode } from '@acorex/platform/contracts';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { AXPWidgetRegistryService } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\n\n//#endregion\n\n//#region ----   Component   ----\n\n@Component({\n  selector: 'axp-item-configurator-widget-column',\n  template: `\n    @if (widget()) {\n      <i [class]=\"widget()?.icon\" class=\"fa-fw\"></i>&nbsp;\n      <span [title]=\"widget()?.title\" class=\"ax-text-xs ax-font-medium\">\n        {{ widget()?.title }}\n      </span>\n    } @else {\n      <span class=\"ax-text-muted\">{{ fallbackLabel() }}</span>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [],\n  inputs: ['rawValue', 'rowData'],\n})\nexport class AXPItemConfiguratorWidgetColumnComponent extends AXPColumnWidgetComponent<AXPWidgetNode> {\n  //#region ----   Services & Dependencies   ----\n\n  private readonly widgetRegistry = inject(AXPWidgetRegistryService);\n\n  //#endregion\n\n  //#region ----   Computed Properties   ----\n\n  protected widget = computed<AXPWidgetConfig | undefined>(() => {\n    const widgetNode = this.rawValue as AXPWidgetNode | undefined;\n    if (!widgetNode?.type) {\n      return undefined;\n    }\n\n    try {\n      return this.widgetRegistry.resolve(widgetNode.type);\n    } catch {\n      return undefined;\n    }\n  });\n\n  /**\n   * When the type is not registered (dynamic-only entries), show the stored type key.\n   */\n  protected fallbackLabel = computed<string>(() => {\n    const widgetNode = this.rawValue as AXPWidgetNode | undefined;\n    if (!widgetNode?.type) {\n      return '---';\n    }\n    return widgetNode.type;\n  });\n\n  //#endregion\n}\n\n//#endregion\n","import {\n  AXGridLayoutBuilderModule,\n  AXGridLayoutContainerComponent,\n  AXGridLayoutOptions,\n} from '@acorex/components/grid-layout-builder';\nimport { AXPWidgetsCatalog } from '@acorex/platform/contracts';\nimport { AXPGridBreakpointValues, AXPLayoutBaseWidgetComponent, AXPWidgetCoreModule, AXPPropertyEditorHelper } from '@acorex/platform/layout/widget-core';\n\nimport {\n  AXPDesignerGridDrawerComponent,\n  AXPDesignerService,\n  AXPWidgetDesignerRendererDirective,\n} from '@acorex/platform/layout/designer';\n\nimport {\n  afterEveryRender,\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  effect,\n  ElementRef,\n  HostBinding,\n  inject,\n  untracked,\n  viewChild,\n} from '@angular/core';\n\n@Component({\n  selector: 'axp-advanced-grid-widget-designer',\n  template: `\n    @if (settled()) {\n      <ax-grid-layout-container [options]=\"gridOptions\">\n        @for (child of children(); track $index) {\n          <ng-container\n            axp-widget-designer-renderer\n            [node]=\"child\"\n            [parentNode]=\"this\"\n            [mode]=\"this.mode\"\n            [locked]=\"this.locked\"\n          >\n          </ng-container>\n        }\n      </ax-grid-layout-container>\n    } @else {\n      <axp-designer-grid-drawer (onSelect)=\"handleDrawerSelect($event)\"></axp-designer-grid-drawer>\n    }\n    <!--TO BE SURE ALL DYNAMIC TAILWIND CLASSES WORK WELL!-->\n    @if (false) {\n      <div class=\"ax-hidden\">\n        ax-items-start ax-items-center ax-items-end ax-items-stretch ax-justify-items-start ax-justify-items-center\n        ax-justify-items-end ax-justify-items-stretch ax-grid-flow-row ax-grid-flow-col\n      </div>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    AXGridLayoutBuilderModule,\n    AXPWidgetCoreModule,\n    AXPWidgetDesignerRendererDirective,\n    AXPDesignerGridDrawerComponent,\n  ],\n  providers: [\n    {\n      provide: AXPLayoutBaseWidgetComponent,\n      useExisting: AXPAdvancedGridWidgetDesignerComponent,\n    },\n  ],\n})\nexport class AXPAdvancedGridWidgetDesignerComponent extends AXPLayoutBaseWidgetComponent {\n  private grid = viewChild(AXGridLayoutContainerComponent);\n  private el = inject(ElementRef);\n\n  private designerService = inject(AXPDesignerService);\n  public gridOptions: AXGridLayoutOptions = {\n    column: 6,\n    cellHeight: 100,\n    gap: 5,\n    minRow: 1,\n    acceptWidgets: true,\n    // float: true,\n    // rtl: true,\n  };\n\n  protected cols = computed(() => (this.options()['gridOptions'] as AXPGridBreakpointValues)?.default?.columns ?? 1);\n  protected rows = computed(() => (this.options()['gridOptions'] as AXPGridBreakpointValues)?.default?.rows ?? 1);\n\n  protected align = computed(\n    () => (this.options()['gridOptions'] as AXPGridBreakpointValues)?.default?.alignItems ?? 'stretch',\n  );\n\n  protected justify = computed(\n    () => (this.options()['gridOptions'] as AXPGridBreakpointValues)?.default?.justifyItems ?? 'stretch',\n  );\n\n  protected gap = computed(() => (this.options()['gridOptions'] as AXPGridBreakpointValues)?.default?.gap ?? '0px');\n\n  protected cells = computed(\n    () =>\n      ((this.options()['gridOptions'] as AXPGridBreakpointValues)?.default?.rows ?? 1) *\n      ((this.options()['gridOptions'] as AXPGridBreakpointValues)?.default?.columns ?? 1),\n  );\n\n  // effect1 = effect(() => console.log(this.options()['gridOptions']));\n\n  effect2 = effect(() => {\n    this.gap();\n    untracked(() => this.grid()?.setMargin(this.gap()));\n  });\n\n  protected settled = computed(() => this.cols() * this.rows() > 1 && this.children().length);\n\n  protected handleDrawerSelect(e: { rows: number; cols: number }) {\n    this.designerService.update({\n      values: {\n        // options: e,\n        options: {\n          gridOptions: {\n            default: {\n              columns: e.cols,\n              rows: e.rows,\n              gap: '10px',\n            },\n          },\n        },\n      },\n      mode: 'update',\n      widget: this.node,\n    });\n\n    const list = Array.from({ length: this.cells() }).map(() => ({\n      type: AXPWidgetsCatalog.advancedGridItem,\n    }));\n\n    list.forEach((node) => {\n      this.designerService.addWidget(this.node, node);\n    });\n  }\n\n  //eff = effect(() => console.log(this.options()['gridOptions']));\n\n  #rowOrColumnChangeEffect = effect(() => {\n    const deferent = this.cells() - this.children().length;\n    untracked(() => {\n      if (deferent > 0) {\n        Array.from({ length: deferent })\n          .map(() => ({\n            type: AXPWidgetsCatalog.advancedGridItem,\n          }))\n          .forEach((node) => {\n            this.designerService.addWidget(this.node, node);\n          });\n      } else if (deferent < 0) {\n        this.children()\n          .slice(deferent)\n          .forEach((node) => this.designerService.removeWidget(node));\n      }\n    });\n  });\n\n  #setJustifyAndAlign = afterEveryRender(() => {\n    const els = (this.el.nativeElement as HTMLElement).querySelectorAll(\n      'ax-grid-layout-widget > .grid-stack-item-content',\n    );\n    if (els.length) {\n      els.forEach((item) => {\n        if (item instanceof HTMLElement) {\n          item.style.padding = '0.5rem';\n          item.style.removeProperty('justify-content');\n          item.style.justifyContent = this.justify();\n          item.style.removeProperty('align-items');\n          item.style.alignItems = this.align();\n        } else {\n          console.warn('Found a non-HTMLElement within the selected elements:', item);\n        }\n      });\n    }\n  });\n\n  calcTotalCells(rows: string, cols: string) {\n    return AXPPropertyEditorHelper.parseGridTemplate(rows) * AXPPropertyEditorHelper.parseGridTemplate(cols);\n  }\n\n  calcGridRowOrColumn(value: string) {\n    return AXPPropertyEditorHelper.parseGridTemplate(value);\n  }\n\n  @HostBinding('class')\n  private get __class(): any {\n    return {\n      'ax-widget-container': true,\n      'ax-block': true,\n      'ax-w-full': true,\n    };\n  }\n}\n","import {\n  AXGridLayoutBuilderModule,\n  AXGridLayoutContainerComponent,\n  AXGridLayoutOptions,\n} from '@acorex/components/grid-layout-builder';\nimport { AXPWidgetCoreModule, AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { AXPDesignerService, AXPWidgetDesignerRendererDirective } from '@acorex/platform/layout/designer';\n\nimport {\n  afterEveryRender,\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  effect,\n  ElementRef,\n  HostBinding,\n  inject,\n  signal,\n  viewChild,\n} from '@angular/core';\nimport { AXPAdvancedGridBoxValues } from '../../property-editors/advanced-grid-options/advanced-grid-options-widget.type';\n\n@Component({\n  selector: 'axp-advanced-grid-widget-view',\n  template: `\n    <ax-grid-layout-container [options]=\"gridOptions\">\n      @for (child of children(); track $index) {\n        <ax-grid-layout-widget [options]=\"calcWidgetOption($index)\">\n          <ng-container\n            axp-widget-designer-renderer\n            [node]=\"child\"\n            [parentNode]=\"this\"\n            [mode]=\"this.mode\"\n            [locked]=\"this.locked\"\n          >\n          </ng-container>\n        </ax-grid-layout-widget>\n      }\n    </ax-grid-layout-container>\n    <div class=\"ax-p-2\">\n      <div class=\"grid-stack-trash ax-w-full ax-rounded-lg ax-border-2 ax-border-dashed ax-border-danger-400/50\"></div>\n    </div>\n    <!--TO BE SURE ALL DYNAMIC TAILWIND CLASSES WORK WELL!-->\n    @if (false) {\n      <div class=\"ax-hidden\">\n        ax-items-start ax-items-center ax-items-end ax-items-stretch a x-justify-items-start ax-justify-items-center\n        ax-justify-items-end ax-justify-items-stretch\n      </div>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXGridLayoutBuilderModule, AXPWidgetCoreModule, AXPWidgetDesignerRendererDirective],\n  providers: [\n    {\n      provide: AXPValueWidgetComponent,\n      useExisting: AXPAdvancedGridWidgetViewComponent,\n    },\n    AXPDesignerService,\n  ],\n})\nexport class AXPAdvancedGridWidgetViewComponent extends AXPValueWidgetComponent<any> {\n  private isRendered = signal(false);\n  private el = inject(ElementRef);\n  private designerService = inject(AXPDesignerService);\n  private container = viewChild(AXGridLayoutContainerComponent);\n\n  constructor() {\n    super();\n    (window as any).ag = this; //debug purpose\n  }\n\n  protected calcWidgetOption(id: number) {\n    return {\n      h: 1,\n      w: 1,\n      id: id,\n    } as AXGridLayoutOptions;\n  }\n\n  public gridOptions: AXGridLayoutOptions = {\n    column: 6,\n    cellHeight: 100,\n    gap: 5,\n    minRow: 1,\n    acceptWidgets: true,\n\n    // float: true,\n    // rtl: true,\n  };\n\n  itemsCount = computed(() => this.options()['advancedGridOptions']?.itemsCount as number);\n  columns = computed(() => this.options()['advancedGridOptions']?.columns as number);\n  justifyItems = computed(\n    () => this.options()['advancedGridOptions']?.justifyItems as AXPAdvancedGridBoxValues['justifyItems'],\n  );\n  alignItems = computed(\n    () => this.options()['advancedGridOptions']?.alignItems as AXPAdvancedGridBoxValues['alignItems'],\n  );\n\n  #eff = effect(() => console.log(this.options()['advancedGridOptions']));\n\n  // #initValues = afterNextRender(() => {\n  //   this.initValues();\n  //   this.isRendered.set(true);\n  // });\n\n  // private initValues() {\n  //   //TODO update values from\n  //   const data = this.getValue();\n  //   if (data?.layout) {\n  //   } else {\n  //     Array.from({ length: this.itemsCount() }).map(() => ({\n  //       type: AXPWidgetsCatalog.gridItem,\n  //     }));\n  //     const layout = this.container()?.save();\n  //   }\n  // }\n\n  // #rowOrColumnChangeEffect = effect(() => {\n  //   const deferent = this.itemsCount() - this.children().length;\n  //   untracked(() => {\n  //     if (deferent > 0) {\n  //       Array.from({ length: deferent })\n  //         .map(() => ({\n  //           type: AXPWidgetsCatalog.gridItem,\n  //         }))\n  //         .forEach((node) => {\n  //           this.designerService.addWidget(this.node, node);\n  //         });\n  //       const save = this.container()?.save();\n  //       const layout = save?.children?.map((child) => {\n  //         if (child && child.id !== undefined) {\n  //           return {\n  //             ...child,\n  //             data: this.children()[Number.parseInt(child.id)],\n  //           } as AXPAdvancedGridWidgetChild;\n  //         }\n  //         return { ...child, data: undefined } as AXPAdvancedGridWidgetChild;\n  //       });\n  //       const value = {\n  //         data: {\n  //           alignItems: this.alignItems(),\n  //           justifyItems: this.justifyItems(),\n  //           columns: this.columns(),\n  //           itemsCount: this.itemsCount(),\n  //         },\n  //         layout: { ...save, children: layout },\n  //       };\n  //       this.setValue(value);\n  //     } else if (deferent < 0) {\n  //       this.children()\n  //         .slice(deferent)\n  //         .forEach((node) => this.designerService.removeWidget(node));\n  //     }\n  //   });\n  // });\n\n  #setJustifyAndAlign = afterEveryRender(() => {\n    const els = (this.el.nativeElement as HTMLElement).querySelectorAll(\n      'ax-grid-layout-widget > .grid-stack-item-content',\n    );\n    if (els.length) {\n      els.forEach((item) => {\n        if (item instanceof HTMLElement) {\n          item.style.padding = '0.5rem';\n          item.style.removeProperty('justify-content');\n          item.style.justifyContent = this.justifyItems();\n          item.style.removeProperty('align-items');\n          item.style.alignItems = this.alignItems();\n        } else {\n          console.warn('Found a non-HTMLElement within the selected elements:', item);\n        }\n      });\n    }\n  });\n\n  @HostBinding('class')\n  private get __class(): any {\n    return {\n      'ax-widget-container': true,\n      'ax-block': true,\n      'ax-w-full': true,\n    };\n  }\n}\n","import { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGETS_LAYOUT_SUB_GRID } from '@acorex/platform/layout/widget-core';\nimport { AXP_NAME_PROPERTY } from '../../../properties/general.props';\n\nexport const AXPAdvancedGridWidget: AXPWidgetConfig = {\n  name: 'advanced-grid-layout',\n  title: '@platform-layout-widgets:widgets.advanced-grid-layout.title',\n  type: 'container',\n  categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n  subCategory: AXP_WIDGETS_LAYOUT_SUB_GRID,\n  icon: 'fa-light fa-grid-2',\n  properties: [\n    AXP_NAME_PROPERTY,\n    //  AXP_LAYOUT_GRID_PROPERTY,\n    // AXP_LAYOUT_ADVANCED_GRID_PROPERTY,\n    // AXP_LAYOUT_GRID_PROPERTY,\n  ],\n  components: {\n    view: {\n      component: () =>\n        import('./advanced-grid-widget-view.component').then((c) => c.AXPAdvancedGridWidgetViewComponent),\n    },\n    edit: {\n      component: () =>\n        import('./advanced-grid-widget-view.component').then((c) => c.AXPAdvancedGridWidgetViewComponent),\n    },\n\n    designer: {\n      component: () =>\n        import('./advanced-grid-widget-designer.component').then((c) => c.AXPAdvancedGridWidgetDesignerComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    advancedGrid: 'advanced-grid-layout';\n  }\n}\n\nexport interface AXPAdvancedGridWidgetDesignerOptions {\n  gridOptions?: {\n    default?: {\n      columns?: number;\n      rows?: number;\n      alignItems?: string;\n      justifyItems?: string;\n      gap?: string;\n    };\n  };\n}\n\nexport interface AXPAdvancedGridWidgetViewOptions {\n  advancedGridOptions?: {\n    itemsCount?: number;\n    columns?: number;\n    justifyItems?: 'start' | 'end' | 'center' | 'stretch';\n    alignItems?: 'start' | 'end' | 'center' | 'stretch';\n  };\n}\n\nexport interface AXPAdvancedGridWidgetEditOptions {\n  advancedGridOptions?: {\n    itemsCount?: number;\n    columns?: number;\n    justifyItems?: 'start' | 'end' | 'center' | 'stretch';\n    alignItems?: 'start' | 'end' | 'center' | 'stretch';\n  };\n}\n\nexport interface AXPAdvancedGridWidgetOptions {\n  designer: AXPAdvancedGridWidgetDesignerOptions;\n  view: AXPAdvancedGridWidgetViewOptions;\n  edit: AXPAdvancedGridWidgetEditOptions;\n}\n","import { AXGridLayoutBuilderModule, AXGridLayoutNode } from '@acorex/components/grid-layout-builder';\nimport { AXPLayoutBaseWidgetComponent, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport {\n  AXPDesignerAddWidgetMiniButtonComponent,\n  AXPWidgetDesignerRendererDirective,\n} from '@acorex/platform/layout/designer';\n\nimport { afterNextRender, ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';\n\n@Component({\n  selector: 'axp-advanced-grid-item-widget-designer',\n  template: `\n    @for (child of children(); track $index) {\n      <ax-grid-layout-widget [options]=\"gridItemOptions\">\n        <ng-container\n          axp-widget-designer-renderer\n          [node]=\"child\"\n          [parentNode]=\"this\"\n          [mode]=\"this.mode\"\n          [locked]=\"this.locked\"\n        >\n        </ng-container>\n      </ax-grid-layout-widget>\n    } @empty {\n      <ax-grid-layout-widget [options]=\"gridItemOptions\"\n        ><axp-designer-add-widget-mini-button></axp-designer-add-widget-mini-button>\n      </ax-grid-layout-widget>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    AXPWidgetCoreModule,\n    AXPWidgetDesignerRendererDirective,\n    AXPDesignerAddWidgetMiniButtonComponent,\n    AXGridLayoutBuilderModule,\n  ],\n  host: {\n    '[class.grid-stack-item]': 'true',\n  },\n  providers: [\n    {\n      provide: AXPLayoutBaseWidgetComponent,\n      useExisting: AXPAdvancedGridItemWidgetDesignerComponent,\n    },\n  ],\n})\nexport class AXPAdvancedGridItemWidgetDesignerComponent extends AXPLayoutBaseWidgetComponent {\n  protected gridOptions: AXGridLayoutNode = { height: 1, width: 1 };\n\n  protected gridItemOptions: AXGridLayoutNode = { height: 1, width: 1 };\n  // protected colSpan = computed<number>(() => this.options()['colSpan'] as number);\n  // protected colStart = computed<number>(() => this.options()['colStart'] as number);\n  // protected colEnd = computed<number>(() => this.options()['colEnd'] as number);\n\n  // protected flexAlignItems = computed<string>(() => this.options()['flexAlignItems']?.id);\n  // protected flexJustifyContent = computed<string>(() => this.options()['flexJustifyContent']?.id);\n  // protected flexWrap = computed<string>(() => this.options()['flexWrap']?.id);\n  // protected flexDirection = computed<string>(() => this.options()['flexDirection']?.id);\n\n  // protected gap = computed<number>(() => (this.options()['gap'] as number) ?? 0);\n  af = afterNextRender(() => console.log(this.children()));\n\n  @HostBinding('class')\n  private get __class(): any {\n    const cls: any = {};\n    //\n    cls[`ax-widget-container`] = true;\n    // cls[`ax-flex`] = true;\n    // cls[`ax-gap-${this.gap()}`] = true;\n    // //\n    // if (this.flexAlignItems()) {\n    //   cls[this.flexAlignItems()] = true;\n    // }\n    // if (this.flexJustifyContent()) {\n    //   cls[this.flexJustifyContent()] = true;\n    // }\n    // if (this.flexWrap()) {\n    //   cls[this.flexWrap()] = true;\n    // }\n    // if (this.flexDirection()) {\n    //   cls[this.flexDirection()] = true;\n    // }\n    // //\n    // cls[`ax-col-span-12`] = true;\n    // if (this.colSpan() != null) {\n    //   cls[`lg:ax-col-span-${this.colSpan()}`] = true;\n    // } else {\n    //   cls[`lg:ax-col-span-1`] = true;\n    // }\n    // //\n    // if (this.colStart() != null) {\n    //   cls[`lg:ax-col-start-${this.colStart()}`] = true;\n    // }\n    // //\n    // if (this.colEnd() != null) {\n    //   cls[`lg:ax-col-end-${this.colEnd()}`] = true;\n    // }\n    return cls;\n  }\n}\n","import { AXPLayoutBaseWidgetComponent, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, HostBinding } from '@angular/core';\n\n@Component({\n  selector: 'axp-advanced-grid-item-widget-view',\n  template: `\n    @for (child of children(); track $index) {\n      <ng-container axp-widget-renderer [node]=\"child\" [index]=\"index\" [parentNode]=\"this\" [mode]=\"this.mode\">\n      </ng-container>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule],\n  providers: [\n    {\n      provide: AXPLayoutBaseWidgetComponent,\n      useExisting: AXPAdvancedGridItemWidgetViewComponent,\n    },\n  ],\n})\nexport class AXPAdvancedGridItemWidgetViewComponent extends AXPLayoutBaseWidgetComponent {\n  protected colSpan = computed<number>(() => this.options()['colSpan'] as number);\n  protected colStart = computed<number>(() => this.options()['colStart'] as number);\n  protected colEnd = computed<number>(() => this.options()['colEnd'] as number);\n\n  protected flexAlignItems = computed<string>(() => this.options()['flexAlignItems']?.id);\n  protected flexJustifyContent = computed<string>(() => this.options()['flexJustifyContent']?.id);\n  protected flexWrap = computed<string>(() => this.options()['flexWrap']?.id);\n  protected flexDirection = computed<string>(() => this.options()['flexDirection']?.id);\n\n  protected gap = computed<number>(() => (this.options()['gap'] as number) ?? 0);\n\n  @HostBinding('class')\n  private get __class(): any {\n    const cls: any = {};\n    //\n    cls[`ax-flex`] = true;\n    cls[`ax-gap-${this.gap()}`] = true;\n    //\n    if (this.flexAlignItems()) {\n      cls[this.flexAlignItems()] = true;\n    }\n    if (this.flexJustifyContent()) {\n      cls[this.flexJustifyContent()] = true;\n    }\n    if (this.flexWrap()) {\n      cls[this.flexWrap()] = true;\n    }\n    if (this.flexDirection()) {\n      cls[this.flexDirection()] = true;\n    }\n    //\n    cls[`ax-col-span-12`] = true;\n    if (this.colSpan() != null) {\n      cls[`lg:ax-col-span-${this.colSpan()}`] = true;\n    } else {\n      cls[`lg:ax-col-span-1`] = true;\n    }\n    //\n    if (this.colStart() != null) {\n      cls[`lg:ax-col-start-${this.colStart()}`] = true;\n    }\n    //\n    if (this.colEnd() != null) {\n      cls[`lg:ax-col-end-${this.colEnd()}`] = true;\n    }\n    return cls;\n  }\n}\n","import { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGETS_LAYOUT_SUB_GRID } from '@acorex/platform/layout/widget-core';\nimport { AXP_NAME_PROPERTY } from '../../../properties/general.props';\n\nexport const AXPAdvancedGridItemWidget: AXPWidgetConfig = {\n  name: 'advanced-grid-item-layout',\n  title: '@platform-layout-widgets:widgets.advanced-grid-item-layout.title',\n  type: 'container',\n  categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n  subCategory: AXP_WIDGETS_LAYOUT_SUB_GRID,\n  icon: 'fa-light fa-objects-column',\n  properties: [\n    AXP_NAME_PROPERTY,\n    // ...AXP_LAYOUT_GRID_ITEM_PROPERTIES,\n  ],\n  components: {\n    view: {\n      component: () =>\n        import('./advanced-grid-item-widget-view.component').then((c) => c.AXPAdvancedGridItemWidgetViewComponent),\n    },\n    edit: {\n      component: () =>\n        import('./advanced-grid-item-widget-view.component').then((c) => c.AXPAdvancedGridItemWidgetViewComponent),\n    },\n\n    designer: {\n      component: () =>\n        import('./advanced-grid-item-widget-designer.component').then(\n          (c) => c.AXPAdvancedGridItemWidgetDesignerComponent,\n        ),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    advancedGridItem: 'advanced-grid-item-layout';\n  }\n}\n\nexport interface AXPAdvancedGridItemWidgetDesignerOptions {\n  colSpan?: number;\n  colStart?: number;\n  colEnd?: number;\n  gap?: number;\n  flexAlignItems?: { id: string };\n  flexJustifyContent?: { id: string };\n  flexWrap?: { id: string };\n  flexDirection?: { id: string };\n}\n\nexport interface AXPAdvancedGridItemWidgetViewOptions {\n  colSpan?: number;\n  colStart?: number;\n  colEnd?: number;\n  gap?: number;\n  flexAlignItems?: { id: string };\n  flexJustifyContent?: { id: string };\n  flexWrap?: { id: string };\n  flexDirection?: { id: string };\n}\n\nexport interface AXPAdvancedGridItemWidgetEditOptions {\n  colSpan?: number;\n  colStart?: number;\n  colEnd?: number;\n  gap?: number;\n  flexAlignItems?: { id: string };\n  flexJustifyContent?: { id: string };\n  flexWrap?: { id: string };\n  flexDirection?: { id: string };\n}\n\nexport interface AXPAdvancedGridItemWidgetPrintOptions {}\n\nexport interface AXPAdvancedGridItemWidgetOptions {\n  designer: AXPAdvancedGridItemWidgetDesignerOptions;\n  view: AXPAdvancedGridItemWidgetViewOptions;\n  edit: AXPAdvancedGridItemWidgetEditOptions;\n  print: AXPAdvancedGridItemWidgetPrintOptions;\n}\n","import {\n  AXPBlockBaseLayoutWidgetComponent,\n  AXPLayoutBaseWidgetComponent,\n  AXPWidgetCoreModule,\n} from '@acorex/platform/layout/widget-core';\n\nimport {\n  AXPDesignerAddWidgetMiniButtonComponent,\n  AXPWidgetDesignerRendererDirective,\n} from '@acorex/platform/layout/designer';\n\nimport { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';\n\n@Component({\n  selector: 'axp-block-widget-designer',\n  template: `\n    @for (node of children(); track $index) {\n      <ng-container\n        axp-widget-designer-renderer\n        [node]=\"node\"\n        [parentNode]=\"this\"\n        [mode]=\"this.mode\"\n        [locked]=\"this.locked\"\n      ></ng-container>\n    } @empty {\n      <axp-designer-add-widget-mini-button\n        class=\"ax-flex-1 ax-self-center ax-place-self-end\"\n      ></axp-designer-add-widget-mini-button>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule, AXPWidgetDesignerRendererDirective, AXPDesignerAddWidgetMiniButtonComponent],\n  providers: [\n    {\n      provide: AXPLayoutBaseWidgetComponent,\n      useExisting: AXPBlockWidgetDesignerComponent,\n    },\n  ],\n})\nexport class AXPBlockWidgetDesignerComponent extends AXPBlockBaseLayoutWidgetComponent {\n  @HostBinding('class')\n  get __class(): any {\n    return this.hostClass();\n  }\n\n  @HostBinding('style')\n  get __style(): any {\n    return this.hostStyle();\n  }\n}\n","import { AXPBlockBaseLayoutWidgetComponent, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';\n\n@Component({\n  selector: 'axp-block-widget-view',\n  template: `\n    @for (node of children(); track $index) {\n      <ng-container\n        axp-widget-renderer\n        [node]=\"node\"\n        [index]=\"index\"\n        [parentNode]=\"this\"\n        [mode]=\"this.mode\"\n      ></ng-container>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule],\n})\nexport class AXPBlockWidgetViewComponent extends AXPBlockBaseLayoutWidgetComponent {\n  @HostBinding('class')\n  get __class(): any {\n    return this.hostClass();\n  }\n\n  @HostBinding('style')\n  get __style(): any {\n    return this.hostStyle();\n  }\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGETS_LAYOUT_SUB_GRID } from '@acorex/platform/layout/widget-core';\nimport { AXP_NAME_PROPERTY } from '../../../properties';\nimport {\n  AXP_LAYOUT_BORDER_PROPERTY,\n  AXP_LAYOUT_DIRECTION_PROPERTY,\n  AXP_LAYOUT_SPACING_PROPERTY,\n} from '../../../properties/layout.props';\n\nexport const AXPBlockWidget: AXPWidgetConfig<AXPBlockWidgetConfigType> = {\n  name: 'block-layout',\n  type: 'container',\n  title: '@platform-layout-widgets:widgets.block-layout.title',\n  description: '@platform-layout-widgets:widgets.block-layout.description',\n  icon: 'fa-light fa-block',\n  categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n  subCategory: AXP_WIDGETS_LAYOUT_SUB_GRID,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  options: {\n    canInsert: true,\n  },\n  properties: [\n    AXP_NAME_PROPERTY,\n    // AXP_FONT_SIZE_PROPERTY,\n    // cloneProperty(AXP_BG_COLOR_PROPERTY, { schema: { defaultValue: null } }),\n    AXP_LAYOUT_SPACING_PROPERTY,\n    AXP_LAYOUT_BORDER_PROPERTY,\n    AXP_LAYOUT_DIRECTION_PROPERTY,\n  ],\n  components: {\n    designer: {\n      component: () => import('./block-widget-designer.component').then((c) => c.AXPBlockWidgetDesignerComponent),\n    },\n    edit: {\n      component: () => import('./block-widget-view.component').then((c) => c.AXPBlockWidgetViewComponent),\n    },\n    view: {\n      component: () => import('./block-widget-view.component').then((c) => c.AXPBlockWidgetViewComponent),\n    },\n  },\n};\n\nexport type AXPBlockWidgetConfigType = {\n  type: 'container';\n};\n\nexport interface AXPBlockWidgetDesignerOptions {\n  spacing?: {\n    padding?: string;\n    margin?: string;\n  };\n  border?: {\n    radius?: string;\n    width?: string;\n    color?: string;\n    style?: string;\n  };\n  backgroundColor?: string;\n  direction?: string;\n  overflow?: string;\n  overflowX?: string;\n  overflowY?: string;\n  width?: string;\n  minWidth?: string;\n  maxWidth?: string;\n  height?: string;\n  minHeight?: string;\n  maxHeight?: string;\n}\n\nexport interface AXPBlockWidgetViewOptions {\n  spacing?: {\n    padding?: string;\n    margin?: string;\n  };\n  border?: {\n    radius?: string;\n    width?: string;\n    color?: string;\n    style?: string;\n  };\n  backgroundColor?: string;\n  direction?: string;\n  overflow?: string;\n  overflowX?: string;\n  overflowY?: string;\n  width?: string;\n  minWidth?: string;\n  maxWidth?: string;\n  height?: string;\n  minHeight?: string;\n  maxHeight?: string;\n}\n\nexport interface AXPBlockWidgetEditOptions {\n  spacing?: {\n    padding?: string;\n    margin?: string;\n  };\n  border?: {\n    radius?: string;\n    width?: string;\n    color?: string;\n    style?: string;\n  };\n  backgroundColor?: string;\n  direction?: string;\n  overflow?: string;\n  overflowX?: string;\n  overflowY?: string;\n  width?: string;\n  minWidth?: string;\n  maxWidth?: string;\n  height?: string;\n  minHeight?: string;\n  maxHeight?: string;\n}\n\nexport interface AXPBlockWidgetPrintOptions {\n  spacing?: {\n    padding?: string;\n    margin?: string;\n  };\n  border?: {\n    radius?: string;\n    width?: string;\n    color?: string;\n    style?: string;\n  };\n  backgroundColor?: string;\n  direction?: string;\n  overflow?: string;\n  overflowX?: string;\n  overflowY?: string;\n  width?: string;\n  minWidth?: string;\n  maxWidth?: string;\n  height?: string;\n  minHeight?: string;\n  maxHeight?: string;\n}\n\nexport interface AXPBlockWidgetOptions {\n  designer: AXPBlockWidgetDesignerOptions;\n  view: AXPBlockWidgetViewOptions;\n  edit: AXPBlockWidgetEditOptions;\n  print: AXPBlockWidgetPrintOptions;\n}\n","import { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPMultiLanguageString } from '@acorex/platform/contracts';\nimport {\n  AXPDesignerAddWidgetMiniButtonComponent,\n  AXPWidgetDesignerRendererDirective,\n} from '@acorex/platform/layout/designer';\nimport { AXPLayoutBaseWidgetComponent, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\n\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, HostBinding, linkedSignal } from '@angular/core';\n\n@Component({\n  selector: 'axp-fieldset-widget-designer',\n  template: `\n    <fieldset [attr.disabled]=\"disabled() ? true : null\" class=\"axp-fieldset\">\n      @if (showHeader()) {\n        <legend>\n          @if (icon()) {\n            <i [class]=\"icon()\" style=\"margin-inline-end: 0.5em;\"></i>\n          }\n          {{ title() | translate | async }}\n        </legend>\n      }\n      <div class=\"axp-fieldset-content\">\n        @for (node of children(); track $index) {\n          <ng-container\n            axp-widget-designer-renderer\n            [node]=\"node\"\n            [parentNode]=\"this\"\n            [mode]=\"this.mode\"\n            [locked]=\"this.locked\"\n          ></ng-container>\n        } @empty {\n          <axp-designer-add-widget-mini-button\n            class=\"ax-flex-1 ax-self-center ax-place-self-end\"\n          ></axp-designer-add-widget-mini-button>\n        }\n      </div>\n    </fieldset>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    CommonModule,\n    AXTranslationModule,\n    AXPWidgetCoreModule,\n    AXPWidgetDesignerRendererDirective,\n    AXPDesignerAddWidgetMiniButtonComponent,\n  ],\n  providers: [\n    {\n      provide: AXPLayoutBaseWidgetComponent,\n      useExisting: AXPFieldsetWidgetDesignerComponent,\n    },\n  ],\n  standalone: true,\n})\nexport class AXPFieldsetWidgetDesignerComponent extends AXPLayoutBaseWidgetComponent {\n  protected title = computed<AXPMultiLanguageString>(\n    () => (this.options()['title'] as AXPMultiLanguageString) || 'Fieldset',\n  );\n  protected description = computed<AXPMultiLanguageString>(\n    () => this.options()['description'] as AXPMultiLanguageString,\n  );\n  protected icon = computed<string>(() => (this.options()['icon'] as string) || '');\n  protected collapsible = computed<boolean>(() => (this.options()['collapsible'] as boolean) || false);\n  protected isOpen = linkedSignal<boolean>(() => (this.options()['isOpen'] as boolean) ?? true);\n  protected look = computed<'fieldset' | 'card' | 'group'>(() => this.options()['look'] || 'card');\n  protected disabled = computed<boolean>(() => (this.options()['disabled'] as boolean) || false);\n  protected showHeader = computed<boolean>(() => (this.options()['showHeader'] as boolean) ?? true);\n\n  @HostBinding('class')\n  private get __class(): string {\n    const cls: any = {};\n    cls[`ax-w-full`] = true;\n    cls[`ax-flex`] = true;\n    cls[`ax-flex-col`] = true;\n    return cls;\n  }\n}\n","import { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPMultiLanguageString } from '@acorex/platform/contracts';\nimport { AXPLayoutBaseWidgetComponent, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, linkedSignal } from '@angular/core';\nimport { isEmpty } from 'lodash-es';\nimport { AXPFieldsetWidgetLook } from './fieldset-widget.types';\n\n@Component({\n  selector: 'axp-fieldset-widget-view',\n  templateUrl: './fieldset-widget-view.component.html',\n  styleUrl: './fieldset-widget-view.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [CommonModule, AXPWidgetCoreModule, AXTranslationModule],\n  standalone: true,\n})\nexport class AXPFieldsetWidgetViewComponent extends AXPLayoutBaseWidgetComponent {\n  protected title = computed<AXPMultiLanguageString>(() => (this.options()['title'] as AXPMultiLanguageString) || '');\n  protected description = computed<AXPMultiLanguageString>(\n    () => this.options()['description'] as AXPMultiLanguageString,\n  );\n  protected icon = computed<string>(() => (this.options()['icon'] as string) || '');\n  protected collapsible = computed<boolean>(() => (this.options()['collapsible'] as boolean) || false);\n  protected isOpen = linkedSignal<boolean>(() => (this.options()['isOpen'] as boolean) ?? true);\n  protected look = computed<AXPFieldsetWidgetLook>(() => this.options()['look'] || 'card');\n  protected cols = computed<number>(() => (this.options()['cols'] as number) || 1);\n  protected showTitle = computed<boolean>(() => (this.options()['showTitle'] as boolean) ?? true);\n\n  // Show title only if showTitle is true and title is not empty\n  protected shouldShowTitle = computed<boolean>(() => {\n    return this.showTitle() && !isEmpty(this.title());\n  });\n\n  protected toggleCollapse() {\n    if (this.collapsible()) {\n      this.isOpen.set(!this.isOpen());\n    }\n  }\n}\n","@switch (look()) {\n  <!-- fieldset Style -->\n  @case ('fieldset') {\n    <fieldset class=\"fieldset\">\n      @if (shouldShowTitle()) {\n        <legend class=\"legend\" (click)=\"toggleCollapse()\">\n          @if (icon()) {\n            <i [class]=\"icon()\" class=\"ax-text-sm\"></i>\n          }\n          {{ title() | translate | async }}\n        </legend>\n      }\n      @if (!collapsible() || isOpen()) {\n        <div class=\"content\" [style.grid-template-columns]=\"'repeat(' + cols() + ', 1fr)'\">\n          @if (description()) {\n            <p class=\"description\" [style.grid-column]=\"'1 / -1'\">\n              {{ description() | translate | async }}\n            </p>\n          }\n          <!-- render widgets -->\n          @for (node of children(); track $index) {\n            <ng-container\n              axp-widget-renderer\n              [node]=\"node\"\n              [index]=\"index\"\n              [parentNode]=\"this\"\n              [mode]=\"node.mode ?? this.mode\"\n            ></ng-container>\n          }\n        </div>\n      }\n    </fieldset>\n  }\n  <!-- Card Style -->\n  @case ('card') {\n    <div class=\"card\">\n      @if (shouldShowTitle()) {\n        <div class=\"legend\" (click)=\"toggleCollapse()\">\n          <div class=\"caption\">\n            @if (icon()) {\n              <i [class]=\"icon()\" class=\"ax-text-md\"></i>\n            }\n            <div class=\"text-content\">\n              <h3 class=\"title\">{{ title() | translate | async }}</h3>\n              @if (description()) {\n                <p class=\"description\">{{ description() | translate | async }}</p>\n              }\n            </div>\n          </div>\n          <div class=\"icon\" [ngClass]=\"{ 'ax-transform ax-rotate-180': isOpen() }\">\n            @if (collapsible()) {\n              <i class=\"fa-solid fa-chevron-down\"></i>\n            }\n          </div>\n        </div>\n      }\n\n      @if (!collapsible() || isOpen()) {\n        <div class=\"content\" [style.grid-template-columns]=\"'repeat(' + cols() + ', 1fr)'\">\n          @for (node of children(); track $index) {\n            <ng-container\n              axp-widget-renderer\n              [node]=\"node\"\n              [index]=\"index\"\n              [parentNode]=\"this\"\n              [mode]=\"node.mode ?? this.mode\"\n            ></ng-container>\n          }\n        </div>\n      }\n    </div>\n  }\n  <!-- Group Line style -->\n  @case ('group') {\n    <fieldset class=\"group\">\n      @if (shouldShowTitle()) {\n        <legend class=\"legend\">\n          @if (icon()) {\n            <i [class]=\"icon()\" class=\"ax-text-sm\"></i>\n          }\n          <h3 class=\"title\">{{ title() | translate | async }}</h3>\n          <div class=\"title-line\"></div>\n        </legend>\n      }\n      @if (!collapsible() || isOpen()) {\n        <div class=\"content\" [style.grid-template-columns]=\"'repeat(' + cols() + ', 1fr)'\">\n          @if (description()) {\n            <p class=\"description\" [style.grid-column]=\"'1 / -1'\">\n              {{ description() | translate | async }}\n            </p>\n          }\n          <!-- render widgets -->\n          @for (node of children(); track $index) {\n            <ng-container\n              axp-widget-renderer\n              [node]=\"node\"\n              [index]=\"index\"\n              [parentNode]=\"this\"\n              [mode]=\"node.mode ?? this.mode\"\n            ></ng-container>\n          }\n        </div>\n      }\n    </fieldset>\n  }\n  <!-- Container Style -->\n  @case ('container') {\n    <div class=\"container\">\n      @for (node of children(); track $index) {\n        <ng-container\n          axp-widget-renderer\n          [node]=\"node\"\n          [index]=\"index\"\n          [parentNode]=\"this\"\n          [mode]=\"node.mode ?? this.mode\"\n        ></ng-container>\n      }\n    </div>\n  }\n  <!-- End of switch-->\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGETS_LAYOUT_SUB_SURFACES } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_ICON_PROPERTY,\n  AXP_LAYOUT_COLUMNS_PROPERTY,\n  AXP_LAYOUT_SHOW_HEADER_PROPERTY,\n  AXP_NAME_PROPERTY,\n  AXP_TITLE_PROPERTY,\n} from '../../../properties';\n\nexport const AXPFieldsetWidget: AXPWidgetConfig = {\n  name: 'fieldset-layout',\n  type: 'container',\n  title: '@platform-layout-widgets:widgets.fieldset-layout.title',\n  description: '@platform-layout-widgets:widgets.fieldset-layout.description',\n  icon: 'fa-light fa-object-group',\n  categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n  subCategory: AXP_WIDGETS_LAYOUT_SUB_SURFACES,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  properties: [AXP_NAME_PROPERTY, AXP_TITLE_PROPERTY, AXP_ICON_PROPERTY, AXP_LAYOUT_SHOW_HEADER_PROPERTY, AXP_LAYOUT_COLUMNS_PROPERTY],\n  components: {\n    designer: {\n      component: () => import('./fieldset-widget-designer.component').then((c) => c.AXPFieldsetWidgetDesignerComponent),\n    },\n    view: {\n      component: () => import('./fieldset-widget-view.component').then((c) => c.AXPFieldsetWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./fieldset-widget-view.component').then((c) => c.AXPFieldsetWidgetViewComponent),\n    },\n  },\n};\n\nexport interface AXPFieldsetWidgetDesignerOptions {\n  title?: string;\n  description?: string;\n  icon?: string;\n  collapsible?: boolean;\n  isOpen?: boolean;\n  look?: 'fieldset' | 'card' | 'group';\n  disabled?: boolean;\n  showHeader?: boolean;\n  cols?: number;\n}\n\nexport interface AXPFieldsetWidgetViewOptions {\n  title?: string;\n  description?: string;\n  icon?: string;\n  collapsible?: boolean;\n  isOpen?: boolean;\n  look?: 'fieldset' | 'card' | 'group';\n  cols?: number;\n}\n\nexport interface AXPFieldsetWidgetEditOptions {\n  title?: string;\n  description?: string;\n  icon?: string;\n  collapsible?: boolean;\n  isOpen?: boolean;\n  look?: 'fieldset' | 'card' | 'group';\n  cols?: number;\n}\n\nexport interface AXPFieldsetWidgetPrintOptions {\n  title?: string;\n  description?: string;\n  icon?: string;\n  collapsible?: boolean;\n  isOpen?: boolean;\n  look?: 'fieldset' | 'card' | 'group';\n  cols?: number;\n}\n\nexport interface AXPFieldsetWidgetOptions {\n  designer: AXPFieldsetWidgetDesignerOptions;\n  view: AXPFieldsetWidgetViewOptions;\n  edit: AXPFieldsetWidgetEditOptions;\n  print: AXPFieldsetWidgetPrintOptions;\n}\n","import { AXPWidgetsCatalog } from '@acorex/platform/contracts';\nimport { AXPFlexBaseLayoutWidgetComponent, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\n\nimport {\n  AXPDesignerFlexDrawerComponent,\n  AXPDesignerService,\n  AXPWidgetDesignerRendererDirective,\n} from '@acorex/platform/layout/designer';\n\nimport { ChangeDetectionStrategy, Component, HostBinding, inject } from '@angular/core';\n\n@Component({\n  selector: 'axp-flex-widget-designer',\n  template: `\n    @if (children().length) {\n      @for (node of children(); track $index) {\n        <ng-container\n          axp-widget-designer-renderer\n          [node]=\"node\"\n          [parentNode]=\"this\"\n          [mode]=\"this.mode\"\n          [locked]=\"this.locked\"\n        ></ng-container>\n      }\n    } @else {\n      <axp-designer-flex-drawer (onSelect)=\"handleDrawerSelect($event)\"></axp-designer-flex-drawer>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule, AXPWidgetDesignerRendererDirective, AXPDesignerFlexDrawerComponent],\n  providers: [],\n})\nexport class AXPFlexWidgetDesignerComponent extends AXPFlexBaseLayoutWidgetComponent {\n  private designerService = inject(AXPDesignerService);\n\n  protected handleDrawerSelect(count: number) {\n    const total = Math.max(0, count ?? 0);\n    Array.from({ length: total })\n      .map(() => ({ type: AXPWidgetsCatalog.flexItem }))\n      .forEach((node) => this.designerService.addWidget(this.node, node));\n  }\n\n  @HostBinding('class')\n  get __class(): any {\n    return this.hostClass();\n  }\n\n  @HostBinding('style')\n  get __style(): any {\n    return this.hostStyle();\n  }\n}\n","import { AXPFlexBaseLayoutWidgetComponent, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';\n\n@Component({\n  selector: 'axp-flex-widget-view',\n  template: `\n    @for (node of children(); track $index) {\n      <ng-container\n        axp-widget-renderer\n        [node]=\"node\"\n        [index]=\"index\"\n        [parentNode]=\"this\"\n        [mode]=\"node.mode ?? this.mode\"\n      ></ng-container>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule],\n})\nexport class AXPFlexWidgetViewComponent extends AXPFlexBaseLayoutWidgetComponent {\n  @HostBinding('class')\n  get __class(): any {\n    return this.hostClass();\n  }\n\n  @HostBinding('style')\n  get __style(): any {\n    return this.hostStyle();\n  }\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGETS_LAYOUT_SUB_GRID } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\nimport {\n  AXP_LAYOUT_BORDER_PROPERTY,\n  AXP_LAYOUT_FLEX_PROPERTY,\n  AXP_LAYOUT_SPACING_PROPERTY,\n} from '../../../properties/layout.props';\n\nexport const AXPFlexWidget: AXPWidgetConfig<AXPFlexWidgetConfigType> = {\n  name: 'flex-layout',\n  type: 'container',\n  title: '@platform-layout-widgets:widgets.flex-layout.title',\n  description: '@platform-layout-widgets:widgets.flex-layout.description',\n  icon: 'fa-light fa-box-taped',\n  categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n  subCategory: AXP_WIDGETS_LAYOUT_SUB_GRID,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  options: {\n    canInsert: true,\n  },\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    AXP_LAYOUT_SPACING_PROPERTY,\n    AXP_LAYOUT_BORDER_PROPERTY,\n    AXP_LAYOUT_FLEX_PROPERTY,\n  ],\n  components: {\n    designer: {\n      component: () => import('./flex-widget-designer.component').then((c) => c.AXPFlexWidgetDesignerComponent),\n    },\n    edit: {\n      component: () => import('./flex-widget-view.component').then((c) => c.AXPFlexWidgetViewComponent),\n    },\n    view: {\n      component: () => import('./flex-widget-view.component').then((c) => c.AXPFlexWidgetViewComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    flexLayout: 'flex-layout';\n  }\n}\n\nexport type AXPFlexWidgetConfigType = {\n  type: 'container';\n};\n\nexport interface AXPFlexWidgetDesignerOptions {\n  flexDirection?: string;\n  flexWrap?: string;\n  justifyContent?: string;\n  alignItems?: string;\n  gap?: string;\n  spacing?: {\n    padding?: string;\n    margin?: string;\n  };\n  border?: {\n    radius?: string;\n    width?: string;\n    color?: string;\n    style?: string;\n  };\n  backgroundColor?: string;\n  direction?: string;\n  overflow?: string;\n  overflowX?: string;\n  overflowY?: string;\n  width?: string;\n  minWidth?: string;\n  maxWidth?: string;\n  height?: string;\n  minHeight?: string;\n  maxHeight?: string;\n}\n\nexport interface AXPFlexWidgetViewOptions {\n  flexDirection?: string;\n  flexWrap?: string;\n  justifyContent?: string;\n  alignItems?: string;\n  gap?: string;\n  spacing?: {\n    padding?: string;\n    margin?: string;\n  };\n  border?: {\n    radius?: string;\n    width?: string;\n    color?: string;\n    style?: string;\n  };\n  backgroundColor?: string;\n  direction?: string;\n  overflow?: string;\n  overflowX?: string;\n  overflowY?: string;\n  width?: string;\n  minWidth?: string;\n  maxWidth?: string;\n  height?: string;\n  minHeight?: string;\n  maxHeight?: string;\n}\n\nexport interface AXPFlexWidgetEditOptions {\n  flexDirection?: string;\n  flexWrap?: string;\n  justifyContent?: string;\n  alignItems?: string;\n  gap?: string;\n  spacing?: {\n    padding?: string;\n    margin?: string;\n  };\n  border?: {\n    radius?: string;\n    width?: string;\n    color?: string;\n    style?: string;\n  };\n  backgroundColor?: string;\n  direction?: string;\n  overflow?: string;\n  overflowX?: string;\n  overflowY?: string;\n  width?: string;\n  minWidth?: string;\n  maxWidth?: string;\n  height?: string;\n  minHeight?: string;\n  maxHeight?: string;\n}\n\nexport interface AXPFlexWidgetPrintOptions {\n  flexDirection?: string;\n  flexWrap?: string;\n  justifyContent?: string;\n  alignItems?: string;\n  gap?: string;\n  spacing?: {\n    padding?: string;\n    margin?: string;\n  };\n  border?: {\n    radius?: string;\n    width?: string;\n    color?: string;\n    style?: string;\n  };\n  backgroundColor?: string;\n  direction?: string;\n  overflow?: string;\n  overflowX?: string;\n  overflowY?: string;\n  width?: string;\n  minWidth?: string;\n  maxWidth?: string;\n  height?: string;\n  minHeight?: string;\n  maxHeight?: string;\n}\n\nexport interface AXPFlexWidgetOptions {\n  designer: AXPFlexWidgetDesignerOptions;\n  view: AXPFlexWidgetViewOptions;\n  edit: AXPFlexWidgetEditOptions;\n  print: AXPFlexWidgetPrintOptions;\n}\n","import {\n  AXPFlexItemBaseLayoutWidgetComponent,\n  AXPLayoutBaseWidgetComponent,\n  AXPWidgetCoreModule,\n} from '@acorex/platform/layout/widget-core';\nimport {\n  AXPDesignerAddWidgetMiniButtonComponent,\n  AXPWidgetDesignerRendererDirective,\n} from '@acorex/platform/layout/designer';\n\nimport { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';\n\n@Component({\n  selector: 'axp-flex-item-widget-designer',\n  template: `\n    @for (node of children(); track $index) {\n      <ng-container\n        axp-widget-designer-renderer\n        [node]=\"node\"\n        [parentNode]=\"this\"\n        [mode]=\"this.mode\"\n        [locked]=\"this.locked\"\n      ></ng-container>\n    } @empty {\n      <axp-designer-add-widget-mini-button></axp-designer-add-widget-mini-button>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule, AXPWidgetDesignerRendererDirective, AXPDesignerAddWidgetMiniButtonComponent],\n  providers: [\n    {\n      provide: AXPLayoutBaseWidgetComponent,\n      useExisting: AXPFlexItemWidgetDesignerComponent,\n    },\n  ],\n})\nexport class AXPFlexItemWidgetDesignerComponent extends AXPFlexItemBaseLayoutWidgetComponent {\n  @HostBinding('class')\n  private get __class() {\n    return this.hostClass();\n  }\n\n  @HostBinding('style')\n  private get __style(): any {\n    return this.hostStyle();\n  }\n}\n","import { AXPFlexItemBaseLayoutWidgetComponent, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';\n\n@Component({\n  selector: 'axp-flex-item-widget-view',\n  template: `\n    @for (node of children(); track $index) {\n      <ng-container\n        axp-widget-renderer\n        [node]=\"node\"\n        [index]=\"index\"\n        [parentNode]=\"this\"\n        [mode]=\"this.mode\"\n      ></ng-container>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule],\n})\nexport class AXPFlexItemWidgetViewComponent extends AXPFlexItemBaseLayoutWidgetComponent {\n  @HostBinding('class')\n  private get __class() {\n    return this.hostClass();\n  }\n\n  @HostBinding('style')\n  private get __style(): any {\n    return this.hostStyle();\n  }\n}\n","import { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGETS_LAYOUT_SUB_GRID } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\nimport {\n  AXP_LAYOUT_BORDER_PROPERTY,\n  AXP_LAYOUT_DIRECTION_PROPERTY,\n  AXP_LAYOUT_FLEX_ITEM_PROPERTY,\n  AXP_LAYOUT_SPACING_PROPERTY,\n} from '../../../properties/layout.props';\n\nexport const AXPFlexItemWidget: AXPWidgetConfig = {\n  name: 'flex-item-layout',\n  title: '@platform-layout-widgets:widgets.flex-item-layout.title',\n  type: 'container',\n  categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n  subCategory: AXP_WIDGETS_LAYOUT_SUB_GRID,\n  // groups: [AXPWidgetGroupEnum.FormElement],\n  description: '@platform-layout-widgets:widgets.flex-item-layout.description',\n  icon: 'fa-light fa-rectangle-vertical-history',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    AXP_LAYOUT_SPACING_PROPERTY,\n    AXP_LAYOUT_BORDER_PROPERTY,\n    AXP_LAYOUT_DIRECTION_PROPERTY,\n    AXP_LAYOUT_FLEX_ITEM_PROPERTY,\n  ],\n  components: {\n    view: {\n      component: () => import('./flex-item-widget-view.component').then((c) => c.AXPFlexItemWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./flex-item-widget-view.component').then((c) => c.AXPFlexItemWidgetViewComponent),\n    },\n    designer: {\n      component: () =>\n        import('./flex-item-widget-designer.component').then((c) => c.AXPFlexItemWidgetDesignerComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    flexItem: 'flex-item-layout';\n  }\n}\n\nexport interface AXPFlexItemWidgetDesignerOptions {\n  order?: number;\n  grow?: number;\n  shrink?: number;\n  basis?: string;\n  alignSelf?: string;\n  spacing?: {\n    padding?: string;\n    margin?: string;\n  };\n  border?: {\n    radius?: string;\n    width?: string;\n    color?: string;\n    style?: string;\n  };\n  backgroundColor?: string;\n  direction?: string;\n  overflow?: string;\n  overflowX?: string;\n  overflowY?: string;\n  width?: string;\n  minWidth?: string;\n  maxWidth?: string;\n  height?: string;\n  minHeight?: string;\n  maxHeight?: string;\n}\n\nexport interface AXPFlexItemWidgetViewOptions {\n  order?: number;\n  grow?: number;\n  shrink?: number;\n  basis?: string;\n  alignSelf?: string;\n  spacing?: {\n    padding?: string;\n    margin?: string;\n  };\n  border?: {\n    radius?: string;\n    width?: string;\n    color?: string;\n    style?: string;\n  };\n  backgroundColor?: string;\n  direction?: string;\n  overflow?: string;\n  overflowX?: string;\n  overflowY?: string;\n  width?: string;\n  minWidth?: string;\n  maxWidth?: string;\n  height?: string;\n  minHeight?: string;\n  maxHeight?: string;\n}\n\nexport interface AXPFlexItemWidgetEditOptions {\n  order?: number;\n  grow?: number;\n  shrink?: number;\n  basis?: string;\n  alignSelf?: string;\n  spacing?: {\n    padding?: string;\n    margin?: string;\n  };\n  border?: {\n    radius?: string;\n    width?: string;\n    color?: string;\n    style?: string;\n  };\n  backgroundColor?: string;\n  direction?: string;\n  overflow?: string;\n  overflowX?: string;\n  overflowY?: string;\n  width?: string;\n  minWidth?: string;\n  maxWidth?: string;\n  height?: string;\n  minHeight?: string;\n  maxHeight?: string;\n}\n\nexport interface AXPFlexItemWidgetPrintOptions {\n  order?: number;\n  grow?: number;\n  shrink?: number;\n  basis?: string;\n  alignSelf?: string;\n  spacing?: {\n    padding?: string;\n    margin?: string;\n  };\n  border?: {\n    radius?: string;\n    width?: string;\n    color?: string;\n    style?: string;\n  };\n  backgroundColor?: string;\n  direction?: string;\n  overflow?: string;\n  overflowX?: string;\n  overflowY?: string;\n  width?: string;\n  minWidth?: string;\n  maxWidth?: string;\n  height?: string;\n  minHeight?: string;\n  maxHeight?: string;\n}\n\nexport interface AXPFlexItemWidgetOptions {\n  designer: AXPFlexItemWidgetDesignerOptions;\n  view: AXPFlexItemWidgetViewOptions;\n  edit: AXPFlexItemWidgetEditOptions;\n  print: AXPFlexItemWidgetPrintOptions;\n}\n","import { AXPLayoutBaseWidgetComponent, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, HostBinding, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'axp-page-widget-view',\n  template: `\n    @for (node of children(); track $index) {\n      <ng-container\n        axp-widget-renderer\n        [node]=\"node\"\n        [index]=\"index\"\n        [parentNode]=\"this\"\n        [mode]=\"this.mode\"\n      ></ng-container>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  imports: [AXPWidgetCoreModule],\n})\nexport class AXPPageWidgetViewComponent extends AXPLayoutBaseWidgetComponent {\n  protected backgroundColor = computed<string>(() => this.options()['backgroundColor'] as string);\n  protected direction = computed<string>(() => this.options()['direction']);\n  protected theme = computed<string>(() => (this.options()['theme']?.id as string) ?? 'default');\n\n  @HostBinding('style')\n  private get __style(): any {\n    return {\n      'background-color': this.backgroundColor(),\n    };\n  }\n\n  @HostBinding('class')\n  private get __class(): any {\n    return {\n      'ax-dark': this.theme() == 'dark',\n      'ax-light': this.theme() == 'light',\n      'ax-block': true,\n      'ax-w-full': true,\n      'ax-overflow-auto': true,\n      'ax-rtl': this.direction() == 'rtl',\n    };\n  }\n}\n","import { AXPWidgetConfig, cloneProperty, createBooleanProperty } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGETS_LAYOUT_SUB_SHELL } from '@acorex/platform/layout/widget-core';\nimport { AXP_BEHAVIOR_PROPERTY_GROUP, AXP_LAYOUT_DIRECTION_PROPERTY } from '../../../properties';\nimport {\n  AXP_BG_COLOR_PROPERTY,\n  AXP_FONT_SIZE_PROPERTY,\n  AXP_NAME_PROPERTY,\n  AXP_THEME_PROPERTY,\n} from '../../../properties/general.props';\n\nexport const AXPPageWidget: AXPWidgetConfig = {\n  name: 'page-layout',\n  title: '@platform-layout-widgets:widgets.page-layout.title',\n  description: '@platform-layout-widgets:widgets.page-layout.description',\n  icon: 'fa-light fa-page',\n  categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n  subCategory: AXP_WIDGETS_LAYOUT_SUB_SHELL,\n  type: 'container',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_THEME_PROPERTY,\n    cloneProperty(AXP_BG_COLOR_PROPERTY, { schema: { defaultValue: '#ffffff' } }),\n    AXP_FONT_SIZE_PROPERTY,\n    createBooleanProperty({\n      name: 'hasHeader',\n      path: 'options.hasHeader',\n      title: 'Header',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n      defaultValue: false,\n    }),\n    createBooleanProperty({\n      name: 'hasFooter',\n      path: 'options.hasFooter',\n      title: 'Footer',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n      defaultValue: false,\n    }),\n    AXP_LAYOUT_DIRECTION_PROPERTY,\n  ],\n  components: {\n    view: {\n      component: () => import('./page-widget-view.component').then((c) => c.AXPPageWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./page-widget-view.component').then((c) => c.AXPPageWidgetViewComponent),\n    },\n    designer: {\n      component: () => import('./page-widget-designer.component').then((c) => c.AXPPageWidgetDesignerComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    pageLayout: 'page-layout';\n  }\n}\n\nexport interface AXPPageWidgetDesignerOptions {\n  backgroundColor?: string;\n  theme?: { id: string };\n  hasHeader?: boolean;\n  hasFooter?: boolean;\n  direction?: string;\n}\n\nexport interface AXPPageWidgetViewOptions {\n  backgroundColor?: string;\n  theme?: { id: string };\n  direction?: string;\n}\n\nexport interface AXPPageWidgetEditOptions {\n  backgroundColor?: string;\n  theme?: { id: string };\n  direction?: string;\n}\n\nexport interface AXPPageWidgetPrintOptions {\n  backgroundColor?: string;\n  theme?: { id: string };\n  direction?: string;\n}\n\nexport interface AXPPageWidgetOptions {\n  designer: AXPPageWidgetDesignerOptions;\n  view: AXPPageWidgetViewOptions;\n  edit: AXPPageWidgetEditOptions;\n  print: AXPPageWidgetPrintOptions;\n}\n","import { InjectionToken } from '@angular/core';\n\n//#region ---- Repeater entity lookup port ----\n\n/** Minimal entity-by-key lookup used to hydrate repeater lookup FK values in list columns. */\nexport interface AXPRepeaterEntityByKeyLookup {\n  byKey(entityKey: string, id: unknown): Promise<unknown>;\n}\n\nexport const AXP_REPEATER_ENTITY_BY_KEY_LOOKUP = new InjectionToken<AXPRepeaterEntityByKeyLookup>(\n  'AXP_REPEATER_ENTITY_BY_KEY_LOOKUP',\n);\n\n//#endregion\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport {\n  AXPLayoutBaseWidgetComponent,\n  AXPWidgetCoreModule,\n  AXPValueWidgetComponent,\n} from '@acorex/platform/layout/widget-core';\nimport {\n  AXPDesignerAddWidgetMiniButtonComponent,\n  AXPWidgetDesignerRendererDirective,\n} from '@acorex/platform/layout/designer';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, HostBinding } from '@angular/core';\n@Component({\n  selector: 'axp-repeater-widget-designer',\n  template: `\n    @if (hasControls()) {\n      <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n        <div class=\"ax-col-span-11\">\n          <ng-container [ngTemplateOutlet]=\"tpl\"></ng-container>\n        </div>\n        <ax-button\n          [disabled]=\"disabled()\"\n          look=\"twotone\"\n          color=\"danger\"\n          class=\"ax-col-start-12 ax-col-end-13 ax-justify-self-end ax-self-end\"\n        >\n          <ax-icon icon=\"fa-regular fa-xmark\"></ax-icon>\n        </ax-button>\n        <ax-button [text]=\"'Add New'\" look=\"twotone\" [disabled]=\"disabled()\" class=\"ax-col-start-10  ax-col-end-13\">\n          <ax-prefix>\n            <ax-icon class=\"fa-solid fa-add\"></ax-icon>\n          </ax-prefix>\n        </ax-button>\n      </div>\n    } @else {\n      <ng-container [ngTemplateOutlet]=\"tpl\"></ng-container>\n    }\n    <ng-template #tpl>\n      @for (node of children(); track $index) {\n        <ng-container\n          axp-widget-designer-renderer\n          [node]=\"node\"\n          [parentNode]=\"this\"\n          [mode]=\"this.mode\"\n          [locked]=\"this.locked\"\n        >\n        </ng-container>\n      } @empty {\n        <axp-designer-add-widget-mini-button></axp-designer-add-widget-mini-button>\n      }\n    </ng-template>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    CommonModule,\n    AXButtonModule,\n    AXDecoratorModule,\n    AXPWidgetCoreModule,\n    AXPWidgetDesignerRendererDirective,\n    AXPDesignerAddWidgetMiniButtonComponent,\n  ],\n  providers: [\n    {\n      provide: AXPValueWidgetComponent,\n      useExisting: AXPRepeaterWidgetDesignerComponent,\n    },\n    {\n      provide: AXPLayoutBaseWidgetComponent,\n      useExisting: AXPRepeaterWidgetDesignerComponent,\n    },\n  ],\n})\nexport class AXPRepeaterWidgetDesignerComponent extends AXPValueWidgetComponent<void> {\n  protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n  protected hasControls = computed<boolean>(() => this.options()['hasControls'] as boolean);\n\n  @HostBinding('class')\n  private get __class(): string {\n    const cls: any = {};\n    //\n    cls[`ax-block`] = true;\n    cls[`ax-w-full`] = true;\n    return cls;\n  }\n}\n","import { AXDropListDroppedEvent, moveItemInArray } from '@acorex/cdk/drag-drop';\nimport { AXPRepeaterRowsLayoutComponent } from '@acorex/platform/layout/components';\nimport {\n  AXPValueWidgetComponent,\n  AXPWidgetCoreElementAPI,\n  AXPWidgetCoreModule,\n} from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\n@Component({\n  selector: 'axp-repeater-widget-edit',\n  host: {\n    class: 'ax-block ax-w-full ax-min-w-0',\n  },\n  template: `\n    <axp-repeater-rows-layout\n      [count]=\"rows().length\"\n      [rowTemplate]=\"tpl\"\n      [disabled]=\"disabled()\"\n      [hasControls]=\"hasControls()\"\n      [allowReorder]=\"allowReorder()\"\n      (addClick)=\"handleAddItemClick()\"\n      (removeClick)=\"handleRemoveItemClick($event)\"\n      (drop)=\"onDrop($event)\"\n    ></axp-repeater-rows-layout>\n\n    <ng-template #tpl let-index=\"index\">\n      @for (node of children(); track $index) {\n        <ng-container\n          axp-widget-renderer\n          [node]=\"node\"\n          [parentNode]=\"this\"\n          [index]=\"index\"\n          [mode]=\"this.mode\"\n        ></ng-container>\n      }\n    </ng-template>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule, AXPRepeaterRowsLayoutComponent],\n})\nexport class AXPRepeaterWidgetEditComponent extends AXPValueWidgetComponent<any> {\n  protected disabled = computed<boolean>(() => (this.options()['disabled'] ?? false) as boolean);\n  protected hasControls = computed<boolean>(() => (this.options()['hasControls'] ?? false) as boolean);\n\n  protected allowReorder = computed<boolean>(() => (this.options()['allowReorder'] ?? false) as boolean);\n\n  protected rows = computed<any[]>(() => {\n    return this.convertValueToArray() ?? [];\n  });\n\n  onDrop(e: AXDropListDroppedEvent) {\n    const currentArray = [...this.convertValueToArray()];\n    moveItemInArray(currentArray, e.previousIndex, e.currentIndex);\n    this.setValue(currentArray);\n  }\n\n  protected handleAddItemClick() {\n    this.addNew();\n  }\n\n  protected handleRemoveItemClick(i: number) {\n    this.removeItem(i);\n  }\n\n  public addNew() {\n    const newValue = [...(this.convertValueToArray() ?? []), {}];\n    this.setValue(newValue);\n  }\n\n  public removeItem(index: number) {\n    const currentArray = [...this.convertValueToArray()];\n    currentArray.splice(index, 1);\n    this.setValue(currentArray);\n  }\n\n  private convertValueToArray(): any[] {\n    return this.getValue() ? (Array.isArray(this.getValue()) ? this.getValue() : [this.getValue()]) : [];\n  }\n\n  override api(): AXPWidgetCoreElementAPI {\n    return {\n      addNew: this.addNew.bind(this),\n    };\n  }\n}\n","import { AXPWidgetCoreModule, AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, WritableSignal, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n  selector: 'axp-repeater-widget-view',\n  template: `\n    @for (row of rows(); let i = $index; track i) {\n      @for (node of children(); track $index) {\n        <ng-container\n          axp-widget-renderer\n          [node]=\"node\"\n          [parentNode]=\"this\"\n          [index]=\"i\"\n          [mode]=\"this.mode\"\n        ></ng-container>\n      }\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [FormsModule, AXPWidgetCoreModule],\n})\nexport class AXPRepeaterWidgetViewComponent extends AXPValueWidgetComponent<any[]> {\n  protected rows: WritableSignal<any[]> = signal([]);\n\n  ngAfterViewInit() {\n    this.rows.set(this.getValue() ?? []);\n  }\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, createBooleanProperty } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGETS_LAYOUT_SUB_SURFACES } from '@acorex/platform/layout/widget-core';\nimport { AXP_BEHAVIOR_PROPERTY_GROUP, AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\n\nexport const AXPRepeaterWidget: AXPWidgetConfig = {\n  name: 'repeater-layout',\n  title: '@platform-layout-widgets:widgets.repeater-layout.title',\n  description: '@platform-layout-widgets:widgets.repeater-layout.description',\n  icon: 'fa-light fa-table-list',\n  categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n  subCategory: AXP_WIDGETS_LAYOUT_SUB_SURFACES,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  type: 'container',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    createBooleanProperty({\n      name: 'hasControls',\n      title: 'Controls',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n      defaultValue: true,\n      path: 'options.hasControls',\n    }),\n  ],\n  components: {\n    view: {\n      component: () => import('./repeater-widget-view.component').then((c) => c.AXPRepeaterWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./repeater-widget-edit.component').then((c) => c.AXPRepeaterWidgetEditComponent),\n    },\n    designer: {\n      component: () => import('./repeater-widget-designer.component').then((c) => c.AXPRepeaterWidgetDesignerComponent),\n    },\n    column: {\n      component: () => import('./repeater-widget-column.component').then((c) => c.AXPRepeaterWidgetColumnComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    repeaterLayout: 'repeater-layout';\n  }\n}\n\nexport interface AXPRepeaterWidgetDesignerOptions {\n  disabled?: boolean;\n  hasControls?: boolean;\n}\n\nexport interface AXPRepeaterWidgetViewOptions {}\n\nexport interface AXPRepeaterWidgetEditOptions {\n  disabled?: boolean;\n  hasControls?: boolean;\n  allowReorder?: boolean;\n}\n\nexport interface AXPRepeaterWidgetPrintOptions {}\n\nexport interface AXPRepeaterWidgetOptions {\n  designer: AXPRepeaterWidgetDesignerOptions;\n  view: AXPRepeaterWidgetViewOptions;\n  edit: AXPRepeaterWidgetEditOptions;\n  print: AXPRepeaterWidgetPrintOptions;\n}\n","import {\n  AXPLayoutBaseWidgetComponent,\n  AXPWidgetCoreElementAction,\n  AXPWidgetCoreModule,\n} from '@acorex/platform/layout/widget-core';\n\nimport { AsyncPipe } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  ViewEncapsulation,\n  computed,\n  inject,\n  signal,\n  viewChild,\n} from '@angular/core';\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXStepWizardComponent, AXStepWizardModule } from '@acorex/components/step-wizard';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport {\n  AXPStepWizardGuardPayload,\n  AXPStepWizardStatus,\n  AXPStepWizardWidgetDefinition,\n} from './step-wizard-widget.types';\n\n@Component({\n  selector: 'axp-step-wizard-widget-view',\n  template: `\n    <div class=\"ax-w-full\">\n      <ax-step-wizard class=\"ax-mb-4\" [content]=\"wizardContent\" #wizard [look]=\"definition().look || 'circular'\">\n        @for (step of steps(); track step.id; let stepIndex = $index) {\n          <ax-step-wizard-item\n            [step]=\"stepIndex + 1\"\n            [label]=\"(step.title | translate | async) ?? step.title\"\n            [description]=\"step.description ? ((step.description | translate | async) ?? step.description) : ''\"\n            [id]=\"step.id\"\n          >\n            @if (step.icon) {\n              <ax-icon [class]=\"step.icon\"></ax-icon>\n            }\n            <ax-content>\n              <ng-container\n                axp-widget-renderer\n                [node]=\"step.content\"\n                [parentNode]=\"this\"\n                [mode]=\"this.mode\"\n              >\n              </ng-container>\n            </ax-content>\n          </ax-step-wizard-item>\n        }\n      </ax-step-wizard>\n      <ng-template [axStepWizardContent] #wizardContent=\"axStepWizardContent\"></ng-template>\n      @if (definition().showActions ?? true) {\n        <div class=\"ax-mt-4 ax-flex ax-justify-between ax-items-center\">\n          <ax-button\n            look=\"outline\"\n            [color]=\"definition().actions?.previous?.color ?? 'primary'\"\n            [text]=\"(definition().actions?.previous?.title ?? 'Previous' | translate | async) ?? 'Previous'\"\n            [disabled]=\"wizard.isFirst()\"\n            (onClick)=\"handlePrevious(wizard)\"\n          >\n            @if (definition().actions?.previous?.icon) {\n              <ax-icon><i [class]=\"definition().actions?.previous?.icon\"></i></ax-icon>\n            }\n          </ax-button>\n\n          <div class=\"ax-flex ax-items-center ax-gap-2\">\n            @for (action of currentStepActions(); track action.title) {\n              @if (action.visible !== false) {\n                <ax-button\n                  [color]=\"action.color ?? 'default'\"\n                  [text]=\"(action.title | translate | async) ?? action.title\"\n                  (onClick)=\"executeStepAction(action)\"\n                >\n                  @if (action.icon) {\n                    <ax-icon><i [class]=\"action.icon\"></i></ax-icon>\n                  }\n                </ax-button>\n              }\n            }\n\n            @if (!wizard.isLast()) {\n              <ax-button\n                [color]=\"definition().actions?.next?.color ?? 'primary'\"\n                [text]=\"(definition().actions?.next?.title ?? 'Next' | translate | async) ?? 'Next'\"\n                (onClick)=\"handleNext(wizard)\"\n              >\n                @if (definition().actions?.next?.icon) {\n                  <ax-icon><i [class]=\"definition().actions?.next?.icon\"></i></ax-icon>\n                }\n              </ax-button>\n            } @else {\n              <ax-button\n                [color]=\"definition().actions?.submit?.color ?? 'success'\"\n                [text]=\"(definition().actions?.submit?.title ?? 'Finish' | translate | async) ?? 'Finish'\"\n                (onClick)=\"handleSubmit(wizard)\"\n              >\n                @if (definition().actions?.submit?.icon) {\n                  <ax-icon><i [class]=\"definition().actions?.submit?.icon\"></i></ax-icon>\n                }\n              </ax-button>\n            }\n          </div>\n        </div>\n      }\n    </div>\n  `,\n\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  imports: [AXStepWizardModule, AXButtonModule, AXDecoratorModule, AXTranslationModule, AsyncPipe, AXPWidgetCoreModule],\n  styles: [\n    `\n      /*\n       * Step body is shown via AXStepWizardContentDirective (portal). Without hiding these hosts,\n       * the same projected step content can appear twice (under each step item and in the portal outlet).\n       */\n      :host ax-step-wizard-item > ax-content {\n        display: none !important;\n      }\n    `,\n  ],\n})\nexport class AXPStepWizardWidgetViewComponent extends AXPLayoutBaseWidgetComponent {\n  //#region ----   Services & Dependencies   ----\n\n  private elementRef = inject(ElementRef);\n  private wizard = viewChild<AXStepWizardComponent>('wizard');\n\n  //#endregion\n\n  //#region ----   Computed Properties   ----\n\n  protected definition = computed<AXPStepWizardWidgetDefinition>(() => {\n    return this.options()['definition'] || {};\n  });\n\n  protected steps = computed(() => this.definition().steps ?? []);\n\n  private currentIndex = signal(0);\n\n  protected currentStep = computed(() => this.steps()[this.currentIndex()] ?? null);\n\n  protected currentStepActions = computed(() => this.currentStep()?.actions ?? []);\n\n  //#endregion\n\n  //#region ----   UI Handlers   ----\n\n  protected async handlePrevious(wizard: AXStepWizardComponent): Promise<void> {\n    const idx = this.currentIndex();\n    const step = this.steps()[idx];\n    const payload = this.buildGuardPayload(step, idx);\n\n    // Guard for prev (if provided)\n    const prevGuard = this.definition().guards?.prev;\n    if (prevGuard) {\n      const allowed = await Promise.resolve(prevGuard(payload));\n      if (!allowed) {\n        return;\n      }\n    }\n\n    wizard.previous();\n    this.setIndex(Math.max(0, idx - 1));\n    this.emitStepChanged();\n  }\n\n  protected async handleNext(\n    wizard: AXStepWizardComponent,\n    callback?: { setLoading: (loading: boolean) => void },\n  ): Promise<void> {\n    const idx = this.currentIndex();\n    const step = this.steps()[idx];\n\n    if (!step) {\n      return;\n    }\n\n    // Handle skippable\n    if (step.skippable) {\n      wizard.next();\n      this.setIndex(Math.min(this.steps().length - 1, idx + 1));\n      this.emitStepChanged();\n      return;\n    }\n\n    if (callback) {\n      callback.setLoading(true);\n    }\n\n    // 2) Guard for next (if provided)\n    const payload = this.buildGuardPayload(step, idx);\n    const nextGuard = this.definition().guards?.next;\n    if (nextGuard) {\n      const allowed = await Promise.resolve(nextGuard(payload));\n      if (!allowed) {\n        if (callback) {\n          callback.setLoading(false);\n        }\n        return;\n      }\n    }\n\n    wizard.next();\n    this.setIndex(Math.min(this.steps().length - 1, idx + 1));\n    this.emitStepChanged();\n    if (callback) {\n      callback.setLoading(false);\n    }\n  }\n\n  protected async handleSubmit(\n    wizard: AXStepWizardComponent,\n    callback?: { setLoading: (loading: boolean) => void; close: (result?: any) => void },\n  ): Promise<void> {\n    if (callback) {\n      callback.setLoading(true);\n    }\n\n    const status = this.buildStatus();\n    const success = await Promise.resolve(this.definition().events?.onComplete?.(status));\n\n    if (callback?.close) {\n      if (success) {\n        callback.close(true);\n      }\n    }\n    if (callback) {\n      callback.setLoading(false);\n    }\n  }\n\n  protected executeStepAction(action: any): void {\n    const cmd: any = action?.command;\n    if (typeof cmd === 'function') {\n      try {\n        cmd({ context: this.contextService.data() });\n      } catch {}\n    }\n  }\n\n  //#endregion\n\n  //#region ----   Utility Methods   ----\n\n  private setIndex(i: number): void {\n    this.currentIndex.set(i);\n  }\n\n  private emitStepChanged(): void {\n    const status = this.buildStatus();\n    this.definition().events?.onStepChanged?.(status);\n  }\n\n  private buildStatus(): AXPStepWizardStatus {\n    const idx = this.currentIndex();\n    const steps = this.steps();\n    const step = steps[idx];\n    return {\n      currentStep: step,\n      index: idx,\n      total: steps.length,\n      isFirst: idx === 0,\n      isLast: idx === steps.length - 1,\n    } as AXPStepWizardStatus;\n  }\n\n  private buildGuardPayload(step: any, index: number): AXPStepWizardGuardPayload {\n    const steps = this.steps();\n    return {\n      step: step,\n      index,\n      total: steps.length,\n      isFirst: index === 0,\n      isLast: index === steps.length - 1,\n      context: this.contextService.data(),\n      // stepContext: this.contextService.data(),\n    };\n  }\n\n  //#endregion\n\n  //#region ----   Public API   ----\n\n  override api() {\n    const self = this;\n    return {\n      next: async (callback: { setLoading: (loading: boolean) => void }) => {\n        const wizardComponent = self.wizard();\n        if (wizardComponent) {\n          await self.handleNext(wizardComponent, callback);\n        }\n      },\n      previous: async () => {\n        const wizardComponent = self.wizard();\n        if (wizardComponent) {\n          await self.handlePrevious(wizardComponent);\n        }\n      },\n      submit: async (callback: { setLoading: (loading: boolean) => void; close: (result?: any) => void }) => {\n        const wizardComponent = self.wizard();\n        if (wizardComponent) {\n          await self.handleSubmit(wizardComponent, callback);\n        }\n      },\n      getStatus: () => self.buildStatus(),\n      getCurrentIndex: () => self.currentIndex(),\n      setIndex: (i: number) => self.setIndex(i),\n      getSteps: () => self.steps(),\n    };\n  }\n  override actions(): AXPWidgetCoreElementAction[] {\n    if (this.definition().showActions === false) {\n      return [];\n    }\n\n    return [\n      {\n        title: '@general:actions.previous.title',\n        icon: 'fa-regular fa-arrow-left',\n        color: 'primary',\n        command: `widget:${this.name}.previous`,\n        zone: 'footer',\n        placement: 'prefix',\n        scope: 'primary',\n        disabled: '{{api.getStatus().isFirst}}',\n      },\n      {\n        title: '@general:actions.next.title',\n        icon: 'fa-regular fa-arrow-right',\n        color: 'primary',\n        command: `widget:${this.name}.next`,\n        zone: 'footer',\n        placement: 'suffix',\n        scope: 'primary',\n        hidden: '{{api.getStatus().isLast}}',\n      },\n      {\n        title: '@general:actions.submit.title',\n        icon: 'fa-regular fa-check',\n        color: 'success',\n        command: `widget:${this.name}.submit`,\n        zone: 'footer',\n        placement: 'suffix',\n        scope: 'primary',\n        hidden: '{{!api.getStatus().isLast}}',\n      },\n    ];\n  }\n\n  //#endregion\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGETS_LAYOUT_SUB_SURFACES } from '@acorex/platform/layout/widget-core';\n\nexport const AXPStepWizardWidget: AXPWidgetConfig = {\n  name: 'step-wizard',\n  title: '@platform-layout-widgets:widgets.step-wizard.title',\n  icon: 'fa-light fa-image-user',\n  categories: [AXP_WIDGETS_LAYOUT_CATEGORY],\n  subCategory: AXP_WIDGETS_LAYOUT_SUB_SURFACES,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  type: 'view',\n  properties: [],\n  components: {\n    view: {\n      component: () => import('./step-wizard-widget-view.component').then((c) => c.AXPStepWizardWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./step-wizard-widget-view.component').then((c) => c.AXPStepWizardWidgetViewComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    stepWizard: 'step-wizard';\n  }\n}\n","\n\nimport { AXPActionMenuItem, type AXPWidgetNode } from '@acorex/platform/contracts';\nimport { AXOrientation } from '@acorex/cdk/common';\nimport { AXStepWizardLook } from '@acorex/components/step-wizard';\n\n//#region ----   Types: Actions   ----\n\n/** Limited action configuration for core navigation actions. */\nexport interface AXPStepWizardActionConfig {\n  /** Button title (text). */\n  title: string;\n  /** Optional icon class (e.g., FontAwesome). */\n  icon?: string;\n  /** Optional semantic color key (e.g., primary, success). */\n  color?: string;\n}\n\n/** Core navigation actions available globally. */\nexport interface AXPStepWizardGlobalActions {\n  /** Next action configuration. */\n  next?: AXPStepWizardActionConfig;\n  /** Previous action configuration. */\n  previous?: AXPStepWizardActionConfig;\n  /** Submit/Finish action configuration (visible on last step). */\n  submit?: AXPStepWizardActionConfig;\n}\n\n//#endregion\n\n//#region ----   Types: Steps   ----\n\n/** Single wizard step definition. */\nexport interface AXPStepWizardStep {\n  /** Unique step identifier. */\n  id: string;\n  /** Step title. */\n  title: string;\n  /** Optional step description. */\n  description?: string;\n  /** Optional step icon. */\n  icon?: string;\n  /** Step content built from widgets. */\n  content: AXPWidgetNode;\n  /** If true, Next moves forward without any guard or validation checks. */\n  skippable?: boolean;\n  /** Per-step custom actions to render alongside core actions. */\n  actions?: AXPActionMenuItem[];\n}\n\n//#endregion\n\n//#region ----   Types: Guards & Events   ----\n\n/**\n * Payload passed to guard functions before navigation.\n * Contains step meta and both global and step-local context accessors.\n */\nexport interface AXPStepWizardGuardPayload {\n  /** The target step meta. */\n  step: AXPStepWizardStep;\n  /** Zero-based index of the target step. */\n  index: number;\n  /** Total steps count. */\n  total: number;\n  /** True if the target step is first. */\n  isFirst: boolean;\n  /** True if the target step is last. */\n  isLast: boolean;\n  /** Full widget shared context data. */\n  context: any;\n  /** Returns a value from the shared context by path. */\n  getContextValue?: (path: string) => unknown;\n  /** Optional step-local context data, if any. */\n  stepContext?: any;\n}\n\n/** Guard function signature for next/prev navigation. */\nexport type AXPStepWizardGuard = (payload: AXPStepWizardGuardPayload) => boolean | Promise<boolean>;\n\n/** Emitted runtime wizard status. */\nexport interface AXPStepWizardStatus {\n  currentStep: AXPStepWizardStep;\n  index: number;\n  total: number;\n  isFirst: boolean;\n  isLast: boolean;\n}\n\n/** Wizard lifecycle events. */\nexport interface AXPStepWizardEvents {\n  /** Emitted after step changed. */\n  onStepChanged?: (status: AXPStepWizardStatus) => void;\n  /** Emitted on successful completion (submit on last step). */\n  onComplete?: (status: AXPStepWizardStatus) => boolean | Promise<boolean>;\n}\n\n//#endregion\n\n//#region ----   Definition: Step Wizard   ----\n\n/**\n * Step Wizard widget definition options.\n * This definition configures steps, navigation, guards, and events.\n */\nexport interface AXPStepWizardWidgetDefinition {\n  /** Ordered list of wizard steps. */\n  steps: AXPStepWizardStep[];\n\n  /** Linear navigation (true) vs non-linear (false). */\n  linear?: boolean;\n\n  /** Visual orientation of the wizard. */\n  direction?: AXOrientation;\n\n  /** Optional look/style for the step wizard component. */\n  look?: AXStepWizardLook;\n\n  /** Show built-in actions (Previous/Next/Submit). Useful to disable when embedding in popups. */\n  showActions?: boolean;\n\n  /** Global core actions configuration (Next, Previous, Submit). */\n  actions?: AXPStepWizardGlobalActions;\n\n  /** Navigation guards for next/previous actions. */\n  guards?: {\n    /** Optional next guard. */\n    next?: AXPStepWizardGuard;\n    /** Optional previous guard. */\n    prev?: AXPStepWizardGuard;\n  };\n\n  /** Wizard emitted events. */\n  events?: AXPStepWizardEvents;\n}\n\n//#endregion\n","import { type AXPWidgetNode, AXPWidgetsCatalog } from '@acorex/platform/contracts';\n\nimport { AXPDesignerService } from '@acorex/platform/layout/designer';\n\nexport type TableRowShape = { index: number; cells: { index: number; node?: AXPWidgetNode }[] }[];\n\nexport type Placement = {\n  node: AXPWidgetNode;\n  row: number;\n  col: number;\n  colSpan: number;\n  rowSpan: number;\n};\n\nexport function computePlacements(args: {\n  columns: number;\n  nodes: AXPWidgetNode[];\n  getColSpan: (node: AXPWidgetNode) => number;\n  getRowSpan: (node: AXPWidgetNode) => number;\n}): Placement[] {\n  const cols = Math.max(1, args.columns);\n  const nodes = args.nodes ?? [];\n  const placements: Placement[] = [];\n  const occ: boolean[][] = [];\n  const ensureRow = (ri: number) => {\n    while (occ.length <= ri) {\n      occ.push(Array.from({ length: cols }).map(() => false));\n    }\n  };\n  const canPlace = (ri: number, ci: number, w: number, h: number) => {\n    if (ci + w > cols) return false;\n    for (let r = 0; r < h; r++) {\n      ensureRow(ri + r);\n      for (let c = 0; c < w; c++) if (occ[ri + r][ci + c]) return false;\n    }\n    return true;\n  };\n  const mark = (ri: number, ci: number, w: number, h: number) => {\n    for (let r = 0; r < h; r++) for (let c = 0; c < w; c++) occ[ri + r][ci + c] = true;\n  };\n  let row = 0;\n  for (const node of nodes) {\n    const w = args.getColSpan(node) ?? 1;\n    const h = args.getRowSpan(node) ?? 1;\n    let placed = false;\n    while (!placed) {\n      ensureRow(row);\n      for (let col = 0; col < cols; col++) {\n        if (canPlace(row, col, w, h)) {\n          placements.push({ node, row, col, colSpan: w, rowSpan: h });\n          mark(row, col, w, h);\n          placed = true;\n          break;\n        }\n      }\n      if (!placed) row++;\n    }\n  }\n  return placements;\n}\n\nfunction findNeighborPlacement(\n  placements: Placement[],\n  me: { row: number; col: number; colSpan: number; rowSpan: number },\n  dir: 'left' | 'right' | 'top' | 'bottom',\n) {\n  if (dir === 'right') return placements.find((p) => p.row === me.row && p.col === me.col + me.colSpan) || null;\n  if (dir === 'left') return placements.find((p) => p.row === me.row && p.col + p.colSpan === me.col) || null;\n  if (dir === 'bottom') return placements.find((p) => p.col === me.col && p.row === me.row + me.rowSpan) || null;\n  return placements.find((p) => p.col === me.col && p.row + p.rowSpan === me.row) || null;\n}\n\nexport function mergeCells(args: {\n  target: AXPWidgetNode;\n  dir: 'left' | 'right' | 'top' | 'bottom';\n  columns: number;\n  nodes: AXPWidgetNode[];\n  getColSpan: (node: AXPWidgetNode) => number;\n  getRowSpan: (node: AXPWidgetNode) => number;\n  designerService: AXPDesignerService;\n  rootNode: AXPWidgetNode;\n}) {\n  const placements = computePlacements({\n    columns: args.columns,\n    nodes: args.nodes,\n    getColSpan: args.getColSpan,\n    getRowSpan: args.getRowSpan,\n  });\n  const place = placements.find((p) => p.node === args.target);\n  if (!place) return;\n  const colsEqual = (a: number, b: number) => a === b;\n  const rowsEqual = (a: number, b: number) => a === b;\n\n  if (args.dir === 'right') {\n    const neighbor = findNeighborPlacement(placements, place, 'right');\n    if (!neighbor || !rowsEqual(neighbor.rowSpan, place.rowSpan)) return;\n    const newSpan = (place.colSpan ?? 1) + (neighbor.colSpan ?? 1);\n    args.designerService.update({ values: { options: { colSpan: newSpan } }, mode: 'update', widget: args.target });\n    args.designerService.removeWidget(neighbor.node);\n    args.designerService.refresh({ widget: args.rootNode });\n    return;\n  }\n  if (args.dir === 'left') {\n    const neighbor = findNeighborPlacement(placements, place, 'left');\n    if (!neighbor || !rowsEqual(neighbor.rowSpan, place.rowSpan)) return;\n    const newSpan = (place.colSpan ?? 1) + (neighbor.colSpan ?? 1);\n    args.designerService.update({ values: { options: { colSpan: newSpan } }, mode: 'update', widget: args.target });\n    args.designerService.removeWidget(neighbor.node);\n    args.designerService.refresh({ widget: args.rootNode });\n    return;\n  }\n  if (args.dir === 'bottom') {\n    const neighbor = findNeighborPlacement(placements, place, 'bottom');\n    if (!neighbor || !colsEqual(neighbor.colSpan, place.colSpan)) return;\n    const newSpan = (place.rowSpan ?? 1) + (neighbor.rowSpan ?? 1);\n    args.designerService.update({ values: { options: { rowSpan: newSpan } }, mode: 'update', widget: args.target });\n    args.designerService.removeWidget(neighbor.node);\n    args.designerService.refresh({ widget: args.rootNode });\n    return;\n  }\n  {\n    const neighbor = findNeighborPlacement(placements, place, 'top');\n    if (!neighbor || !colsEqual(neighbor.colSpan, place.colSpan)) return;\n    const newSpan = (place.rowSpan ?? 1) + (neighbor.rowSpan ?? 1);\n    const neighborChildren = [...(((neighbor.node as any)?.children ?? []) as AXPWidgetNode[])];\n    const currentChildren = [...(((args.target as any)?.children ?? []) as AXPWidgetNode[])];\n    args.designerService.update({\n      values: {\n        options: { rowSpan: newSpan },\n        children: [\n          // keep currentChildren, drop neighborChildren\n          ...currentChildren,\n        ],\n      },\n      mode: 'update',\n      widget: neighbor.node,\n    });\n    args.designerService.removeWidget(args.target);\n    args.designerService.refresh({ widget: args.rootNode });\n  }\n}\n\nexport function canMergeCells(args: {\n  target: AXPWidgetNode;\n  dir: 'left' | 'right' | 'top' | 'bottom';\n  columns: number;\n  nodes: AXPWidgetNode[];\n  getColSpan: (node: AXPWidgetNode) => number;\n  getRowSpan: (node: AXPWidgetNode) => number;\n}): boolean {\n  const placements = computePlacements({\n    columns: args.columns,\n    nodes: args.nodes,\n    getColSpan: args.getColSpan,\n    getRowSpan: args.getRowSpan,\n  });\n  const me = placements.find((p) => p.node === args.target);\n  if (!me) return false;\n  const neighbor = findNeighborPlacement(placements, me, args.dir);\n  if (!neighbor) return false;\n  if (args.dir === 'left' || args.dir === 'right') return me.rowSpan === neighbor.rowSpan;\n  return me.colSpan === neighbor.colSpan;\n}\n\nexport function insertColumnRelativeTo(args: {\n  target: AXPWidgetNode;\n  side: 'left' | 'right';\n  columns: number;\n  rows: TableRowShape;\n  rootNode: AXPWidgetNode;\n  designerService: AXPDesignerService;\n}) {\n  const cols = Math.max(1, args.columns);\n  const rows = args.rows ?? [];\n  const rowIndex = rows.findIndex((r) => r.cells.some((c) => c.node === args.target));\n  if (rowIndex < 0) return;\n  const cellIndex = rows[rowIndex].cells.findIndex((c) => c.node === args.target);\n  if (cellIndex < 0) return;\n  const insertColIndex = args.side === 'left' ? cellIndex : cellIndex + 1;\n\n  const nextCols = cols + 1;\n  args.designerService.update({ values: { options: { columns: nextCols } }, mode: 'update', widget: args.rootNode });\n\n  const childrenRef = args.rootNode.children ?? [];\n  for (let r = 0; r < rows.length; r++) {\n    const rowStart = r * nextCols;\n    const idx = rowStart + insertColIndex;\n    const added = args.designerService.addWidget(args.rootNode, { type: AXPWidgetsCatalog.tableItem });\n    const addedIndex = childrenRef.indexOf(added);\n    if (addedIndex >= 0) childrenRef.splice(addedIndex, 1);\n    childrenRef.splice(Math.min(Math.max(idx, 0), childrenRef.length), 0, added);\n  }\n  args.designerService.refresh({ widget: args.rootNode });\n}\n\nexport function insertRow(args: {\n  target: AXPWidgetNode;\n  where: 'above' | 'below';\n  columns: number;\n  rows: TableRowShape;\n  rootNode: AXPWidgetNode;\n  designerService: AXPDesignerService;\n}) {\n  const cols = Math.max(1, args.columns);\n  const rows = args.rows ?? [];\n  const rowIndex = rows.findIndex((r) => r.cells.some((c) => c.node === args.target));\n  if (rowIndex < 0) return;\n  const insertRowIndex = args.where === 'above' ? rowIndex : rowIndex + 1;\n  const childrenRef = args.rootNode.children ?? [];\n  const linearIndex = insertRowIndex * cols;\n  const newItems = Array.from({ length: cols }).map(() =>\n    args.designerService.addWidget(args.rootNode, { type: AXPWidgetsCatalog.tableItem }),\n  );\n  for (let i = newItems.length - 1; i >= 0; i--) {\n    const addedIndex = childrenRef.indexOf(newItems[i]);\n    if (addedIndex >= 0) childrenRef.splice(addedIndex, 1);\n    childrenRef.splice(Math.min(Math.max(linearIndex, 0), childrenRef.length), 0, newItems[i]);\n  }\n  args.designerService.refresh({ widget: args.rootNode });\n}\n\nexport function insertCellShiftRight(args: {\n  target: AXPWidgetNode;\n  columns: number;\n  rootNode: AXPWidgetNode;\n  designerService: AXPDesignerService;\n}) {\n  const oldCols = Math.max(1, args.columns);\n  const childrenRef = args.rootNode.children ?? [];\n  const targetIndex = childrenRef.indexOf(args.target);\n  if (targetIndex < 0) return;\n  const rowIndex = Math.floor(targetIndex / oldCols);\n  const colIndex = targetIndex % oldCols;\n  const rowCount = Math.ceil((childrenRef.length || 0) / oldCols);\n\n  const newCols = oldCols + 1;\n  args.designerService.update({ values: { options: { columns: newCols } }, mode: 'update', widget: args.rootNode });\n\n  const insertIndex = rowIndex * oldCols + colIndex;\n  const added = args.designerService.addWidget(args.rootNode, { type: AXPWidgetsCatalog.tableItem });\n  let addedIndex = childrenRef.indexOf(added);\n  if (addedIndex >= 0) childrenRef.splice(addedIndex, 1);\n  childrenRef.splice(Math.min(Math.max(insertIndex, 0), childrenRef.length), 0, added);\n\n  for (let r = 0; r < rowCount; r++) {\n    if (r === rowIndex) continue;\n    const extra = args.designerService.addWidget(args.rootNode, { type: AXPWidgetsCatalog.tableItem });\n    const extraIndex = childrenRef.indexOf(extra);\n    if (extraIndex >= 0) childrenRef.splice(extraIndex, 1);\n    const endOfRowIndex = (r + 1) * newCols - 1;\n    const bounded = Math.min(Math.max(endOfRowIndex, 0), childrenRef.length);\n    childrenRef.splice(bounded, 0, extra);\n  }\n\n  args.designerService.refresh({ widget: args.rootNode });\n}\n\nexport function insertCellShiftDown(args: {\n  target: AXPWidgetNode;\n  columns: number;\n  rootNode: AXPWidgetNode;\n  designerService: AXPDesignerService;\n}) {\n  const cols = Math.max(1, args.columns);\n  const childrenRef = args.rootNode.children ?? [];\n  const targetIndex = childrenRef.indexOf(args.target);\n  if (targetIndex < 0) return;\n  const rowIndex = Math.floor(targetIndex / cols);\n  const colIndex = targetIndex % cols;\n\n  const currentRows = Math.ceil((childrenRef.length || 0) / cols);\n  const nextRows = currentRows + 1;\n  args.designerService.update({ values: { options: { rows: nextRows } }, mode: 'update', widget: args.rootNode });\n\n  for (let c = 0; c < cols; c++) {\n    const e = args.designerService.addWidget(args.rootNode, { type: AXPWidgetsCatalog.tableItem });\n    const pos = childrenRef.indexOf(e);\n    if (pos >= 0) childrenRef.splice(pos, 1);\n    childrenRef.push(e);\n  }\n\n  for (let r = currentRows - 1; r >= rowIndex; r--) {\n    const fromIdx = r * cols + colIndex;\n    const toIdx = (r + 1) * cols + colIndex;\n    childrenRef[toIdx] = childrenRef[fromIdx];\n  }\n\n  const inserted = args.designerService.addWidget(args.rootNode, { type: AXPWidgetsCatalog.tableItem });\n  const ii = childrenRef.indexOf(inserted);\n  if (ii >= 0) childrenRef.splice(ii, 1);\n  childrenRef[rowIndex * cols + colIndex] = inserted;\n\n  args.designerService.refresh({ widget: args.rootNode });\n}\n\nexport function removeColumnAtCell(args: {\n  target: AXPWidgetNode;\n  columns: number;\n  rootNode: AXPWidgetNode;\n  designerService: AXPDesignerService;\n}) {\n  const cols = Math.max(1, args.columns);\n  if (cols <= 1) return;\n  const childrenRef = args.rootNode.children ?? [];\n  const targetIndex = childrenRef.indexOf(args.target);\n  if (targetIndex < 0) return;\n  const colIndex = targetIndex % cols;\n  const rowCount = Math.ceil((childrenRef.length || 0) / cols);\n  for (let r = rowCount - 1; r >= 0; r--) {\n    const idx = r * cols + colIndex;\n    if (idx >= 0 && idx < childrenRef.length) {\n      childrenRef.splice(idx, 1);\n    }\n  }\n  args.designerService.update({ values: { options: { columns: cols - 1 } }, mode: 'update', widget: args.rootNode });\n  args.designerService.refresh({ widget: args.rootNode });\n}\n\nexport function removeRowAtCell(args: {\n  target: AXPWidgetNode;\n  columns: number;\n  rootNode: AXPWidgetNode;\n  designerService: AXPDesignerService;\n}) {\n  const cols = Math.max(1, args.columns);\n  const childrenRef = args.rootNode.children ?? [];\n  const targetIndex = childrenRef.indexOf(args.target);\n  if (targetIndex < 0) return;\n  const rowIndex = Math.floor(targetIndex / cols);\n  const start = rowIndex * cols;\n  for (let i = cols - 1; i >= 0; i--) {\n    const idx = start + i;\n    if (idx >= 0 && idx < childrenRef.length) {\n      childrenRef.splice(idx, 1);\n    }\n  }\n  const currentRowsOpt = Math.ceil((childrenRef.length + cols) / cols);\n  const nextRows = Math.max(0, currentRowsOpt - 1);\n  args.designerService.update({ values: { options: { rows: nextRows } }, mode: 'update', widget: args.rootNode });\n  args.designerService.refresh({ widget: args.rootNode });\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXMenuItem } from '@acorex/components/menu';\nimport { type AXPWidgetNode, AXPWidgetsCatalog } from '@acorex/platform/contracts';\nimport { AXPBorderBoxString, AXPWidgetCoreModule, AXPWidgetCoreElementAPI, AXPPropertyEditorHelper, AXPTableBaseLayoutWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport {\n  AXPDesignerGridDrawerComponent,\n  AXPDesignerService,\n  AXPWidgetDesignerRendererDirective,\n} from '@acorex/platform/layout/designer';\nimport { ChangeDetectionStrategy, Component, ComponentRef, computed, HostBinding, inject } from '@angular/core';\nimport {\n  canMergeCells,\n  computePlacements as helpersComputePlacements,\n  insertCellShiftDown as helpersInsertCellShiftDown,\n  insertCellShiftRight as helpersInsertCellShiftRight,\n  insertColumnRelativeTo as helpersInsertColumnRelativeTo,\n  insertRow as helpersInsertRow,\n  removeColumnAtCell as helpersRemoveColumnAtCell,\n  removeRowAtCell as helpersRemoveRowAtCell,\n  mergeCells,\n} from './table-widget-helpers';\n\n@Component({\n  selector: 'axp-table-widget-designer',\n  template: `\n    @if (hasAnyChildren()) {\n      <table class=\"ax-w-full ax-border-collapse ax-p-2\" [class.axp-responsive-table]=\"responsive()\">\n        @if (captionText()) {\n          <caption [style]=\"captionStyle()\">\n            {{\n              captionText()\n            }}\n          </caption>\n        }\n        <tbody>\n          @for (row of bodyRows(); track row) {\n            <tr [class.axp-hide-on-mobile]=\"responsive() && hasHeader() && row.index === 0\">\n              @for (cell of row.cells; track cell) {\n                @if (cell.node) {\n                  <td\n                    #td\n                    class=\"ax-p-0\"\n                    [attr.colspan]=\"getColSpan(cell.node)\"\n                    [attr.rowspan]=\"getRowSpan(cell.node)\"\n                    [attr.data-label]=\"responsive() ? getColumnLabel(cell.index) : null\"\n                    [style]=\"tdStyle()\"\n                  >\n                    <ng-container\n                      axp-widget-designer-renderer\n                      [node]=\"cell.node\"\n                      [parentNode]=\"cell.node\"\n                      [parentComponent]=\"componentRef\"\n                      [parentElement]=\"td\"\n                      [mode]=\"this.mode\"\n                      [locked]=\"this.locked\"\n                    ></ng-container>\n                  </td>\n                }\n              }\n            </tr>\n          }\n        </tbody>\n      </table>\n    } @else {\n      <axp-designer-grid-drawer (onSelect)=\"handleGridDrawerSelect($event)\"></axp-designer-grid-drawer>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule, AXPWidgetDesignerRendererDirective, AXPDesignerGridDrawerComponent, AXButtonModule],\n  styles: [\n    `\n      @media screen and (max-width: 600px) {\n        :host table.axp-responsive-table {\n          border: 0;\n        }\n        :host table.axp-responsive-table caption {\n          font-size: 1.3em;\n        }\n        :host table.axp-responsive-table thead {\n          border: none;\n          clip: rect(0 0 0 0);\n          height: 1px;\n          margin: -1px;\n          overflow: hidden;\n          padding: 0;\n          position: absolute;\n          width: 1px;\n        }\n        :host table.axp-responsive-table tr {\n          border-bottom: 3px solid #ddd;\n          display: block;\n          margin-bottom: 0.625em;\n        }\n        :host table.axp-responsive-table tr.axp-hide-on-mobile {\n          display: none;\n        }\n        :host table.axp-responsive-table td {\n          border-bottom: 1px solid #ddd;\n          padding: 0.25em;\n          display: block;\n          font-size: 0.8em;\n          text-align: right;\n        }\n        :host table.axp-responsive-table td::before {\n          content: attr(data-label);\n          float: left;\n          font-weight: bold;\n          text-transform: uppercase;\n        }\n        :host table.axp-responsive-table td:last-child {\n          border-bottom: 0;\n        }\n      }\n    `,\n  ],\n})\nexport class AXPTableWidgetDesignerComponent extends AXPTableBaseLayoutWidgetComponent {\n  private designerService = inject(AXPDesignerService);\n  public componentRef = this as unknown as ComponentRef<any>;\n\n  protected bodyCells = computed(() => this.children());\n  protected columns = computed(() => (this.options()['columns'] as number) ?? 1);\n  protected rows = computed(() => (this.options()['rows'] as number) ?? 1);\n  protected tdBorderStyle = computed(() => this.computeTdBorderStyle());\n  protected tdAlignStyle = computed(() => this.computeTdAlignStyle());\n  protected tdStyle = computed(() => ({ ...this.tdBorderStyle(), ...this.tdAlignStyle() }));\n  protected captionText = computed(() => (this.options() as any)?.caption as string | undefined);\n  protected captionSide = computed(() => ((this.options() as any)?.captionSide?.value as string | undefined) ?? 'top');\n  protected captionStyle = computed(() => this.computeCaptionStyle());\n  protected hasAnyChildren = computed(() => this.children().length > 0);\n  protected responsive = computed(() => !!(this.options() as any)?.responsiveness);\n  protected hasHeader = computed(() => !!(this.options() as any)?.hasHeader);\n  protected bodyRows = computed(() => {\n    const cols = Math.max(1, this.columns());\n    const nodes = this.bodyCells();\n    const rows: { index: number; cells: { index: number; node?: any }[] }[] = [];\n    const occ: boolean[][] = [];\n    const ensureRow = (ri: number) => {\n      while (rows.length <= ri) {\n        rows.push({ index: rows.length, cells: Array.from({ length: cols }).map((_, j) => ({ index: j })) });\n        occ.push(Array.from({ length: cols }).map(() => false));\n      }\n    };\n    const canPlace = (ri: number, ci: number, w: number, h: number): boolean => {\n      if (ci + w > cols) return false;\n      for (let r = 0; r < h; r++) {\n        ensureRow(ri + r);\n        for (let c = 0; c < w; c++) if (occ[ri + r][ci + c]) return false;\n      }\n      return true;\n    };\n    const mark = (ri: number, ci: number, w: number, h: number) => {\n      for (let r = 0; r < h; r++) for (let c = 0; c < w; c++) occ[ri + r][ci + c] = true;\n    };\n    let row = 0;\n    for (const node of nodes) {\n      const w = this.getColSpan(node) ?? 1;\n      const h = this.getRowSpan(node) ?? 1;\n      let placed = false;\n      while (!placed) {\n        ensureRow(row);\n        for (let col = 0; col < cols; col++) {\n          if (canPlace(row, col, w, h)) {\n            rows[row].cells[col].node = node;\n            mark(row, col, w, h);\n            placed = true;\n            break;\n          }\n        }\n        if (!placed) row++;\n      }\n    }\n    return rows;\n  });\n\n  protected handleDrawerSelect(count: number) {\n    const total = Math.max(0, count ?? 0);\n    Array.from({ length: total })\n      .map(() => ({ type: AXPWidgetsCatalog.tableItem }))\n      .forEach((node) => this.designerService.addWidget(this.node, node));\n  }\n\n  protected handleGridDrawerSelect(e: { rows: number; cols: number }) {\n    const rows = Math.max(1, e?.rows ?? 1);\n    const cols = Math.max(1, e?.cols ?? 1);\n    this.designerService.update({\n      values: {\n        options: {\n          rows,\n          columns: cols,\n        },\n      },\n      mode: 'update',\n      widget: this.node,\n    });\n    const count = rows * cols;\n    Array.from({ length: count })\n      .map(() => ({ type: AXPWidgetsCatalog.tableItem }))\n      .forEach((node) => this.designerService.addWidget(this.node, node));\n  }\n\n  protected handleAddRow() {\n    // Add one full row of items based on table columns\n    const cols = Math.max(1, this.columns());\n    Array.from({ length: cols })\n      .map(() => ({ type: AXPWidgetsCatalog.tableItem }))\n      .forEach((node) => this.designerService.addWidget(this.node, node));\n  }\n\n  protected async handleAddCell(rowIndex: number, colIndex: number) {\n    const widgets = await this.designerService.showPicker(this.node);\n    // New widgets appended; bodyRows will recompute automatically\n  }\n\n  protected getColSpan(node?: AXPWidgetNode): number | null {\n    if (!node) return null;\n    const v = (node.options as any)?.colSpan as number | undefined;\n    return v ? Math.max(1, v) : null;\n  }\n\n  protected getRowSpan(node?: AXPWidgetNode): number | null {\n    if (!node) return null;\n    const v = (node.options as any)?.rowSpan as number | undefined;\n    return v ? Math.max(1, v) : null;\n  }\n\n  private static readonly MENU_ADD_ROW: AXMenuItem = {\n    name: 'table.addRow',\n    text: 'Add Row',\n    icon: 'fa-light fa-row-insert-bottom',\n  };\n  private static readonly MENU_ADD_COLUMN: AXMenuItem = {\n    name: 'table.addColumn',\n    text: 'Add Column',\n    icon: 'fa-light fa-columne',\n  } as any;\n\n  onContextMenu(context: { items: AXMenuItem[] }): void {\n    const items: AXMenuItem[] = [\n      AXPTableWidgetDesignerComponent.MENU_ADD_ROW,\n      AXPTableWidgetDesignerComponent.MENU_ADD_COLUMN,\n    ];\n    items[items.length - 1].break = true;\n    context.items.unshift(...items);\n  }\n\n  async executeCommand(command: { name: string; data?: any; handled: boolean }): Promise<void> {\n    switch (command.name) {\n      case 'table.addRow':\n        this.handleAddRow();\n        command.handled = true;\n        break;\n      case 'table.addColumn': {\n        // Increase columns and append an empty cell to the end (right) of each row\n        const oldCols = Math.max(1, this.columns());\n        const childrenRef = this.node.children ?? [];\n        const rowCount = Math.ceil((childrenRef.length || 0) / oldCols);\n        const next = oldCols + 1;\n        this.designerService.update({\n          values: { options: { columns: next } },\n          mode: 'update',\n          widget: this.node,\n        });\n        for (let r = 0; r < rowCount; r++) {\n          const added = this.designerService.addWidget(this.node, { type: AXPWidgetsCatalog.tableItem });\n          const addedIndex = childrenRef.indexOf(added);\n          if (addedIndex >= 0) {\n            childrenRef.splice(addedIndex, 1);\n          }\n          const endOfRowIndex = (r + 1) * next - 1;\n          const bounded = Math.min(Math.max(endOfRowIndex, 0), childrenRef.length);\n          childrenRef.splice(bounded, 0, added);\n        }\n        this.designerService.refresh({ widget: this.node });\n        command.handled = true;\n        break;\n      }\n    }\n  }\n\n  override api(): AXPWidgetCoreElementAPI {\n    return {\n      insertColumnLeft: (target: AXPWidgetNode) => this.#insertColumnRelativeTo(target, 'left'),\n      insertColumnRight: (target: AXPWidgetNode) => this.#insertColumnRelativeTo(target, 'right'),\n      insertRowAbove: (target: AXPWidgetNode) => this.#insertRow(target, 'above'),\n      insertRowBelow: (target: AXPWidgetNode) => this.#insertRow(target, 'below'),\n      insertCellShiftRight: (target: AXPWidgetNode) => this.#insertCellShiftRight(target),\n      insertCellShiftDown: (target: AXPWidgetNode) => this.#insertCellShiftDown(target),\n      removeColumnAtCell: (target: AXPWidgetNode) => this.#removeColumnAtCell(target),\n      removeRowAtCell: (target: AXPWidgetNode) => this.#removeRowAtCell(target),\n      mergeLeft: (target: AXPWidgetNode) => this.#merge(target, 'left'),\n      mergeRight: (target: AXPWidgetNode) => this.#merge(target, 'right'),\n      mergeTop: (target: AXPWidgetNode) => this.#merge(target, 'top'),\n      mergeBottom: (target: AXPWidgetNode) => this.#merge(target, 'bottom'),\n      canMergeLeft: (target: AXPWidgetNode) => this.#canMerge(target, 'left'),\n      canMergeRight: (target: AXPWidgetNode) => this.#canMerge(target, 'right'),\n      canMergeTop: (target: AXPWidgetNode) => this.#canMerge(target, 'top'),\n      canMergeBottom: (target: AXPWidgetNode) => this.#canMerge(target, 'bottom'),\n    };\n  }\n\n  /**\n   * Inserts a column adjacent to the target cell's column across all rows.\n   * @param target Target cell node\n   * @param side Side relative to the target column to insert (left|right)\n   */\n  #insertColumnRelativeTo(target: AXPWidgetNode, side: 'left' | 'right') {\n    helpersInsertColumnRelativeTo({\n      target,\n      side,\n      columns: this.columns(),\n      rows: this.bodyRows(),\n      rootNode: this.node,\n      designerService: this.designerService,\n    });\n  }\n\n  // Placement map respecting current colSpan/rowSpan\n  #computePlacements() {\n    return helpersComputePlacements({\n      columns: this.columns(),\n      nodes: this.bodyCells(),\n      getColSpan: (n: AXPWidgetNode) => this.getColSpan(n) ?? 1,\n      getRowSpan: (n: AXPWidgetNode) => this.getRowSpan(n) ?? 1,\n    });\n  }\n\n  #merge(target: AXPWidgetNode, dir: 'left' | 'right' | 'top' | 'bottom') {\n    mergeCells({\n      target,\n      dir,\n      columns: this.columns(),\n      nodes: this.bodyCells(),\n      getColSpan: (n: AXPWidgetNode) => this.getColSpan(n) ?? 1,\n      getRowSpan: (n: AXPWidgetNode) => this.getRowSpan(n) ?? 1,\n      designerService: this.designerService,\n      rootNode: this.node,\n    });\n  }\n\n  #canMerge(target: AXPWidgetNode, dir: 'left' | 'right' | 'top' | 'bottom'): boolean {\n    return canMergeCells({\n      target,\n      dir,\n      columns: this.columns(),\n      nodes: this.bodyCells(),\n      getColSpan: (n: AXPWidgetNode) => this.getColSpan(n) ?? 1,\n      getRowSpan: (n: AXPWidgetNode) => this.getRowSpan(n) ?? 1,\n    });\n  }\n\n  /**\n   * Inserts a full row of empty cells above or below the target cell's row.\n   * @param target Target cell node\n   * @param where Position relative to target row (above|below)\n   */\n  #insertRow(target: AXPWidgetNode, where: 'above' | 'below') {\n    helpersInsertRow({\n      target,\n      where,\n      columns: this.columns(),\n      rows: this.bodyRows(),\n      rootNode: this.node,\n      designerService: this.designerService,\n    });\n  }\n\n  /**\n   * Inserts an empty cell immediately before the target cell within its row,\n   * shifts subsequent cells right, increases the total column count, and\n   * appends an empty cell to the end of all other rows to keep the grid rectangular.\n   * @param target Target cell node\n   */\n  #insertCellShiftRight(target: AXPWidgetNode) {\n    helpersInsertCellShiftRight({\n      target,\n      columns: this.columns(),\n      rootNode: this.node,\n      designerService: this.designerService,\n    });\n  }\n\n  /**\n   * Inserts an empty cell above the target cell in the same column, increases\n   * the total row count by one, and shifts the cells below it in that column\n   * down by one row. Pads the new last row with empty cells.\n   * @param target Target cell node\n   */\n  #insertCellShiftDown(target: AXPWidgetNode) {\n    helpersInsertCellShiftDown({\n      target,\n      columns: this.columns(),\n      rootNode: this.node,\n      designerService: this.designerService,\n    });\n  }\n\n  /**\n   * Removes the column containing the given target cell and updates the column count.\n   * @param target Target cell node\n   */\n  #removeColumnAtCell(target: AXPWidgetNode) {\n    helpersRemoveColumnAtCell({\n      target,\n      columns: this.columns(),\n      rootNode: this.node,\n      designerService: this.designerService,\n    });\n  }\n\n  /**\n   * Removes the row containing the given target cell and updates the row count.\n   * @param target Target cell node\n   */\n  #removeRowAtCell(target: AXPWidgetNode) {\n    helpersRemoveRowAtCell({\n      target,\n      columns: this.columns(),\n      rootNode: this.node,\n      designerService: this.designerService,\n    });\n  }\n\n  private computeTdBorderStyle(): Record<string, string> {\n    const borderItems = this.options()['borderItems'] as AXPBorderBoxString | undefined;\n    if (!borderItems) return {};\n    const parsed = AXPPropertyEditorHelper.parseBorderBox(borderItems);\n    const style: Record<string, string> = {};\n    if (parsed.width.top || parsed.style.top || parsed.color.top) {\n      style['border-top-width'] = `${parsed.width.top}px`;\n      style['border-top-style'] = `${parsed.style.top}`;\n      style['border-top-color'] = `${parsed.color.top}`;\n    }\n    if (parsed.width.right || parsed.style.right || parsed.color.right) {\n      style['border-right-width'] = `${parsed.width.right}px`;\n      style['border-right-style'] = `${parsed.style.right}`;\n      style['border-right-color'] = `${parsed.color.right}`;\n    }\n    if (parsed.width.bottom || parsed.style.bottom || parsed.color.bottom) {\n      style['border-bottom-width'] = `${parsed.width.bottom}px`;\n      style['border-bottom-style'] = `${parsed.style.bottom}`;\n      style['border-bottom-color'] = `${parsed.color.bottom}`;\n    }\n    if (parsed.width.left || parsed.style.left || parsed.color.left) {\n      style['border-left-width'] = `${parsed.width.left}px`;\n      style['border-left-style'] = `${parsed.style.left}`;\n      style['border-left-color'] = `${parsed.color.left}`;\n    }\n    const radius = parsed.radius;\n    style['border-top-left-radius'] = `${radius['top-left']}px`;\n    style['border-top-right-radius'] = `${radius['top-right']}px`;\n    style['border-bottom-right-radius'] = `${radius['bottom-right']}px`;\n    style['border-bottom-left-radius'] = `${radius['bottom-left']}px`;\n    return style;\n  }\n\n  private computeTdAlignStyle(): Record<string, string> {\n    const style: Record<string, string> = {};\n    const textAlign = (this.options() as any)?.textAlign?.value as string | undefined;\n    const verticalAlign = (this.options() as any)?.verticalAlign?.value as string | undefined;\n    if (textAlign) style['text-align'] = textAlign;\n    if (verticalAlign) style['vertical-align'] = verticalAlign;\n    return style;\n  }\n\n  private computeCaptionStyle(): Record<string, string> {\n    const style: Record<string, string> = {};\n    const side = this.captionSide();\n    if (side) style['caption-side'] = side as any;\n    return style;\n  }\n\n  protected getColumnLabel(index: number): string {\n    if (this.hasHeader()) {\n      const firstRow = this.bodyRows()[0];\n      const firstCellNode = firstRow?.cells?.[index]?.node as AXPWidgetNode | undefined;\n      const firstChild = firstCellNode?.children?.[0] as AXPWidgetNode | undefined;\n      const content = (firstChild?.options as any)?.content as string | undefined;\n      const text = this.#extractTextFromHtml(content);\n      if (text.length > 0) return text;\n    }\n    return `Column ${index + 1}`;\n  }\n\n  #extractTextFromHtml(html?: string): string {\n    if (!html) return '';\n    const noTags = html.replace(/<[^>]*>/g, ' ');\n    const decoded = noTags\n      .replace(/&nbsp;/gi, ' ')\n      .replace(/&amp;/gi, '&')\n      .replace(/&lt;/gi, '<')\n      .replace(/&gt;/gi, '>')\n      .replace(/&quot;/gi, '\"')\n      .replace(/&#39;/gi, \"'\");\n    return decoded.replace(/\\s+/g, ' ').trim();\n  }\n\n  @HostBinding('class')\n  get __class(): any {\n    return this.hostClass();\n  }\n\n  @HostBinding('style')\n  get __style(): any {\n    return this.hostStyle();\n  }\n}\n","import type { AXPWidgetNode } from '@acorex/platform/contracts';\nimport { AXPBorderBoxString, AXPWidgetCoreModule, AXPPropertyEditorHelper, AXPTableBaseLayoutWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, HostBinding, computed } from '@angular/core';\n\n@Component({\n  selector: 'axp-table-widget-view',\n  template: `\n    <table class=\"ax-w-full ax-border-collapse ax-p-2\" [class.axp-responsive-table]=\"responsive()\">\n      @if (captionText()) {\n        <caption [style]=\"captionStyle()\">\n          {{\n            captionText()\n          }}\n        </caption>\n      }\n      <tbody>\n        @for (row of bodyRows(); track row.index) {\n          <tr [class.axp-hide-on-mobile]=\"responsive() && hasHeader() && row.index === 0\">\n            @for (cell of row.cells; track cell.index) {\n              @if (cell.node) {\n                <td\n                  [attr.colspan]=\"getColSpan(cell.node)\"\n                  [attr.rowspan]=\"getRowSpan(cell.node)\"\n                  [attr.data-label]=\"responsive() ? getColumnLabel(cell.index) : null\"\n                  [style]=\"tdStyle()\"\n                >\n                  <ng-container\n                    axp-widget-renderer\n                    [node]=\"cell.node\"\n                    [parentNode]=\"this\"\n                    [mode]=\"this.mode\"\n                  ></ng-container>\n                </td>\n              } @else {\n                <td [attr.data-label]=\"responsive() ? getColumnLabel(cell.index) : null\" [style]=\"tdStyle()\"></td>\n              }\n            }\n          </tr>\n        }\n      </tbody>\n    </table>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule],\n  styles: [\n    `\n      @media screen and (max-width: 600px) {\n        :host table.axp-responsive-table {\n          border: 0;\n        }\n        :host table.axp-responsive-table caption {\n          font-size: 1.3em;\n        }\n        :host table.axp-responsive-table thead {\n          border: none;\n          clip: rect(0 0 0 0);\n          height: 1px;\n          margin: -1px;\n          overflow: hidden;\n          padding: 0;\n          position: absolute;\n          width: 1px;\n        }\n        :host table.axp-responsive-table tr {\n          border-bottom: 3px solid #ddd;\n          display: block;\n          margin-bottom: 0.625em;\n        }\n        :host table.axp-responsive-table tr.axp-hide-on-mobile {\n          display: none;\n        }\n        :host table.axp-responsive-table td {\n          border-bottom: 1px solid #ddd;\n          padding: 0.25em;\n          display: block;\n          font-size: 0.8em;\n          text-align: right;\n        }\n        :host table.axp-responsive-table td::before {\n          content: attr(data-label);\n          float: left;\n          font-weight: bold;\n          text-transform: uppercase;\n        }\n        :host table.axp-responsive-table td:last-child {\n          border-bottom: 0;\n        }\n      }\n    `,\n  ],\n})\nexport class AXPTableWidgetViewComponent extends AXPTableBaseLayoutWidgetComponent {\n  // #region ----   Computed Properties   ----\n  protected bodyCells = computed(() => this.children());\n  protected columns = computed(() => (this.options()['columns'] as number) ?? 1);\n  protected tdBorderStyle = computed(() => this.computeTdBorderStyle());\n  protected tdAlignStyle = computed(() => this.computeTdAlignStyle());\n  protected tdStyle = computed(() => ({ ...this.tdBorderStyle(), ...this.tdAlignStyle() }));\n  protected captionText = computed(() => (this.options() as any)?.caption as string | undefined);\n  protected captionSide = computed(() => ((this.options() as any)?.captionSide?.value as string | undefined) ?? 'top');\n  protected captionStyle = computed(() => this.computeCaptionStyle());\n  protected responsive = computed(() => !!(this.options() as any)?.responsiveness);\n  protected hasHeader = computed(() => !!(this.options() as any)?.hasHeader);\n  protected bodyRows = computed(() => {\n    const cols = Math.max(1, this.columns());\n    const cells = this.bodyCells();\n    const rows: { index: number; cells: { index: number; node?: AXPWidgetNode }[] }[] = [];\n    for (let i = 0; i < Math.ceil(cells.length / cols); i++) {\n      rows.push({\n        index: i,\n        cells: Array.from({ length: cols }).map((_, j) => ({ index: j, node: cells[i * cols + j] })),\n      });\n    }\n    return rows;\n  });\n  // #endregion\n\n  // #region ----   Helpers   ----\n  protected getColSpan(node: AXPWidgetNode): number | null {\n    const v = (node.options as any)?.colSpan as number | undefined;\n    return v ? Math.max(1, v) : null;\n  }\n  protected getRowSpan(node: AXPWidgetNode): number | null {\n    const v = (node.options as any)?.rowSpan as number | undefined;\n    return v ? Math.max(1, v) : null;\n  }\n  // #endregion\n\n  private computeTdBorderStyle(): Record<string, string> {\n    const borderItems = this.options()['borderItems'] as AXPBorderBoxString | undefined;\n    if (!borderItems) return {};\n    const parsed = AXPPropertyEditorHelper.parseBorderBox(borderItems);\n    const style: Record<string, string> = {};\n    if (parsed.width.top || parsed.style.top || parsed.color.top) {\n      style['border-top-width'] = `${parsed.width.top}px`;\n      style['border-top-style'] = `${parsed.style.top}`;\n      style['border-top-color'] = `${parsed.color.top}`;\n    }\n    if (parsed.width.right || parsed.style.right || parsed.color.right) {\n      style['border-right-width'] = `${parsed.width.right}px`;\n      style['border-right-style'] = `${parsed.style.right}`;\n      style['border-right-color'] = `${parsed.color.right}`;\n    }\n    if (parsed.width.bottom || parsed.style.bottom || parsed.color.bottom) {\n      style['border-bottom-width'] = `${parsed.width.bottom}px`;\n      style['border-bottom-style'] = `${parsed.style.bottom}`;\n      style['border-bottom-color'] = `${parsed.color.bottom}`;\n    }\n    if (parsed.width.left || parsed.style.left || parsed.color.left) {\n      style['border-left-width'] = `${parsed.width.left}px`;\n      style['border-left-style'] = `${parsed.style.left}`;\n      style['border-left-color'] = `${parsed.color.left}`;\n    }\n    const radius = parsed.radius;\n    style['border-top-left-radius'] = `${radius['top-left']}px`;\n    style['border-top-right-radius'] = `${radius['top-right']}px`;\n    style['border-bottom-right-radius'] = `${radius['bottom-right']}px`;\n    style['border-bottom-left-radius'] = `${radius['bottom-left']}px`;\n    return style;\n  }\n\n  private computeTdAlignStyle(): Record<string, string> {\n    const style: Record<string, string> = {};\n    const textAlign = (this.options() as any)?.textAlign?.value as string | undefined;\n    const verticalAlign = (this.options() as any)?.verticalAlign?.value as string | undefined;\n    if (textAlign) style['text-align'] = textAlign;\n    if (verticalAlign) style['vertical-align'] = verticalAlign;\n    return style;\n  }\n\n  private computeCaptionStyle(): Record<string, string> {\n    const style: Record<string, string> = {};\n    const side = this.captionSide();\n    if (side) style['caption-side'] = side as any;\n    return style;\n  }\n\n  protected getColumnLabel(index: number): string {\n    if (this.hasHeader()) {\n      const firstRow = this.bodyRows()[0];\n      const firstCellNode = firstRow?.cells?.[index]?.node as AXPWidgetNode | undefined;\n      const firstChild = firstCellNode?.children?.[0] as AXPWidgetNode | undefined;\n      const content = (firstChild?.options as any)?.content as string | undefined;\n      const text = this.#extractTextFromHtml(content);\n      if (text.length > 0) return text;\n    }\n    return `Column ${index + 1}`;\n  }\n\n  #extractTextFromHtml(html?: string): string {\n    if (!html) return '';\n    const noTags = html.replace(/<[^>]*>/g, ' ');\n    const decoded = noTags\n      .replace(/&nbsp;/gi, ' ')\n      .replace(/&amp;/gi, '&')\n      .replace(/&lt;/gi, '<')\n      .replace(/&gt;/gi, '>')\n      .replace(/&quot;/gi, '\"')\n      .replace(/&#39;/gi, \"'\");\n    return decoded.replace(/\\s+/g, ' ').trim();\n  }\n\n  @HostBinding('class')\n  get __class(): any {\n    return this.hostClass();\n  }\n\n  @HostBinding('style')\n  get __style(): any {\n    return this.hostStyle();\n  }\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, cloneProperty } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGETS_LAYOUT_SUB_GRID } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\nimport {\n  AXP_LAYOUT_BORDER_PROPERTY,\n  AXP_LAYOUT_DIRECTION_PROPERTY,\n  AXP_LAYOUT_SPACING_PROPERTY,\n  AXP_LAYOUT_TABLE_PROPERTY_GROUP,\n  AXP_TABLE_COLUMNS_PROPERTY,\n} from '../../../properties/layout.props';\n\nexport const AXPTableWidget: AXPWidgetConfig<AXPTableWidgetConfigType> = {\n  name: 'table-layout',\n  type: 'container',\n  title: '@platform-layout-widgets:widgets.table-layout.title',\n  description: '@platform-layout-widgets:widgets.table-layout.description',\n  icon: 'fa-light fa-table',\n  categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n  subCategory: AXP_WIDGETS_LAYOUT_SUB_GRID,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  options: {\n    canInsert: true,\n  },\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    AXP_TABLE_COLUMNS_PROPERTY,\n    AXP_LAYOUT_SPACING_PROPERTY,\n    // AXP_LAYOUT_BORDER_PROPERTY,\n    cloneProperty(AXP_LAYOUT_BORDER_PROPERTY, {\n      schema: { interface: { path: 'options.borderItems' } },\n    }),\n    {\n      name: 'textAlign',\n      title: 'Text Align',\n      group: AXP_LAYOUT_TABLE_PROPERTY_GROUP,\n      schema: {\n        dataType: 'string',\n        interface: {\n          name: 'select',\n          path: 'options.textAlign',\n          type: 'select-editor',\n          options: {\n            valueField: 'value',\n            textField: 'text',\n            dataSource: [\n              { value: 'left', text: 'Left' },\n              { value: 'center', text: 'Center' },\n              { value: 'right', text: 'Right' },\n              { value: 'justify', text: 'Justify' },\n            ],\n          },\n        },\n      },\n      visible: true,\n    },\n    {\n      name: 'verticalAlign',\n      title: 'Vertical Align',\n      group: AXP_LAYOUT_TABLE_PROPERTY_GROUP,\n      schema: {\n        dataType: 'string',\n        interface: {\n          name: 'select',\n          path: 'options.verticalAlign',\n          type: 'select-editor',\n          options: {\n            valueField: 'value',\n            textField: 'text',\n            dataSource: [\n              { value: 'top', text: 'Top' },\n              { value: 'middle', text: 'Middle' },\n              { value: 'bottom', text: 'Bottom' },\n              { value: 'baseline', text: 'Baseline' },\n            ],\n          },\n        },\n      },\n      visible: true,\n    },\n    {\n      name: 'caption',\n      title: 'Caption',\n      group: AXP_LAYOUT_TABLE_PROPERTY_GROUP,\n      schema: {\n        dataType: 'string',\n        interface: {\n          name: 'caption',\n          path: 'options.caption',\n          type: 'text-editor',\n          options: {\n            placeholder: 'Enter caption...',\n            maxLength: 512,\n          },\n        },\n      },\n      visible: true,\n    },\n    {\n      name: 'captionSide',\n      title: 'Caption Side',\n      group: AXP_LAYOUT_TABLE_PROPERTY_GROUP,\n      schema: {\n        dataType: 'string',\n        interface: {\n          name: 'captionSide',\n          path: 'options.captionSide',\n          type: 'select-editor',\n          options: {\n            valueField: 'value',\n            textField: 'text',\n            dataSource: [\n              { value: 'top', text: 'Top' },\n              { value: 'bottom', text: 'Bottom' },\n            ],\n          },\n        },\n      },\n      visible: true,\n    },\n    {\n      name: 'responsiveness',\n      title: 'Responsive Table',\n      group: AXP_LAYOUT_TABLE_PROPERTY_GROUP,\n      schema: {\n        dataType: 'boolean',\n        defaultValue: false,\n        interface: {\n          name: 'responsiveness',\n          path: 'options.responsiveness',\n          type: 'toggle-editor',\n        },\n      },\n      visible: true,\n    },\n    {\n      name: 'hasHeader',\n      title: 'Has Header (first row as header)',\n      group: AXP_LAYOUT_TABLE_PROPERTY_GROUP,\n      schema: {\n        dataType: 'boolean',\n        defaultValue: false,\n        interface: {\n          name: 'hasHeader',\n          path: 'options.hasHeader',\n          type: 'toggle-editor',\n        },\n      },\n      visible: true,\n      description: 'Treat the first row as header; use its content as mobile labels.',\n    },\n    AXP_LAYOUT_DIRECTION_PROPERTY,\n  ],\n  components: {\n    designer: {\n      component: () => import('.').then((c) => c.AXPTableWidgetDesignerComponent),\n    },\n    edit: {\n      component: () => import('.').then((c) => c.AXPTableWidgetViewComponent),\n    },\n    view: {\n      component: () => import('.').then((c) => c.AXPTableWidgetViewComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    tableLayout: 'table-layout';\n  }\n}\n\nexport type AXPTableWidgetConfigType = {\n  type: 'container';\n};\n\nexport interface AXPTableWidgetDesignerOptions {\n  spacing?: {\n    padding?: string;\n    margin?: string;\n  };\n  border?: {\n    radius?: string;\n    width?: string;\n    color?: string;\n    style?: string;\n  };\n  backgroundColor?: string;\n  direction?: string;\n  overflow?: string;\n  overflowX?: string;\n  overflowY?: string;\n  width?: string;\n  minWidth?: string;\n  maxWidth?: string;\n  height?: string;\n  minHeight?: string;\n  maxHeight?: string;\n  /** Caption text displayed with the table in designer */\n  caption?: string;\n  /** Where the caption is positioned relative to the table */\n  captionSide?: 'top' | 'bottom' | 'left' | 'right';\n  /** Enable responsive behavior for table layout */\n  responsiveness?: boolean;\n  /** First row acts as header and provides mobile labels */\n  hasHeader?: boolean;\n}\n\nexport interface AXPTableWidgetViewOptions {\n  spacing?: {\n    padding?: string;\n    margin?: string;\n  };\n  border?: {\n    radius?: string;\n    width?: string;\n    color?: string;\n    style?: string;\n  };\n  backgroundColor?: string;\n  direction?: string;\n  overflow?: string;\n  overflowX?: string;\n  overflowY?: string;\n  width?: string;\n  minWidth?: string;\n  maxWidth?: string;\n  height?: string;\n  minHeight?: string;\n  maxHeight?: string;\n  /** Caption text displayed with the table in view */\n  caption?: string;\n  /** Where the caption is positioned relative to the table */\n  captionSide?: 'top' | 'bottom' | 'left' | 'right';\n  responsiveness?: boolean;\n  hasHeader?: boolean;\n}\n\nexport interface AXPTableWidgetEditOptions {\n  spacing?: {\n    padding?: string;\n    margin?: string;\n  };\n  border?: {\n    radius?: string;\n    width?: string;\n    color?: string;\n    style?: string;\n  };\n  backgroundColor?: string;\n  direction?: string;\n  overflow?: string;\n  overflowX?: string;\n  overflowY?: string;\n  width?: string;\n  minWidth?: string;\n  maxWidth?: string;\n  height?: string;\n  minHeight?: string;\n  maxHeight?: string;\n  caption?: string;\n  captionSide?: 'top' | 'bottom' | 'left' | 'right';\n  responsiveness?: boolean;\n  hasHeader?: boolean;\n}\n\nexport interface AXPTableWidgetPrintOptions {\n  spacing?: {\n    padding?: string;\n    margin?: string;\n  };\n  border?: {\n    radius?: string;\n    width?: string;\n    color?: string;\n    style?: string;\n  };\n  backgroundColor?: string;\n  direction?: string;\n  overflow?: string;\n  overflowX?: string;\n  overflowY?: string;\n  width?: string;\n  minWidth?: string;\n  maxWidth?: string;\n  height?: string;\n  minHeight?: string;\n  maxHeight?: string;\n  caption?: string;\n  captionSide?: 'top' | 'bottom' | 'left' | 'right';\n  responsiveness?: boolean;\n  hasHeader?: boolean;\n}\n\nexport interface AXPTableWidgetOptions {\n  designer: AXPTableWidgetDesignerOptions;\n  view: AXPTableWidgetViewOptions;\n  edit: AXPTableWidgetEditOptions;\n  print: AXPTableWidgetPrintOptions;\n}\n","import { AXMenuItem } from '@acorex/components/menu';\nimport {\n  AXPLayoutBaseWidgetComponent,\n  AXPWidgetCoreModule,\n  AXPTableItemBaseLayoutWidgetComponent,\n  AXPValueWidgetComponent,\n} from '@acorex/platform/layout/widget-core';\nimport {\n  AXPDesignerAddWidgetMiniButtonComponent,\n  AXPWidgetDesignerRendererDirective,\n} from '@acorex/platform/layout/designer';\nimport { ChangeDetectionStrategy, Component, effect, HostBinding } from '@angular/core';\n\n@Component({\n  selector: 'axp-table-item-widget-designer',\n  template: `\n    @for (node of children(); track $index) {\n      <ng-container\n        axp-widget-designer-renderer\n        [node]=\"node\"\n        [parentNode]=\"this\"\n        [mode]=\"this.mode\"\n        [locked]=\"this.locked\"\n      ></ng-container>\n    } @empty {\n      <axp-designer-add-widget-mini-button></axp-designer-add-widget-mini-button>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule, AXPWidgetDesignerRendererDirective, AXPDesignerAddWidgetMiniButtonComponent],\n  providers: [\n    {\n      provide: AXPValueWidgetComponent,\n      useExisting: AXPTableItemWidgetDesignerComponent,\n    },\n    {\n      provide: AXPLayoutBaseWidgetComponent,\n      useExisting: AXPTableItemWidgetDesignerComponent,\n    },\n  ],\n})\nexport class AXPTableItemWidgetDesignerComponent extends AXPTableItemBaseLayoutWidgetComponent {\n  #effect = effect(() => {\n    this.parentElement?.setAttribute('colspan', this.colSpan().toString());\n    this.parentElement?.setAttribute('rowspan', this.rowSpan().toString());\n  });\n\n  private get parentApi(): any {\n    return (this.parentComponent as any)?.api?.();\n  }\n\n  private invoke(action: string): void {\n    this.parentApi?.[action]?.(this.node);\n  }\n\n  @HostBinding('class')\n  private get __class() {\n    return this.hostClass();\n  }\n\n  @HostBinding('style')\n  private get __style(): any {\n    return this.hostStyle();\n  }\n\n  // Context menu grouped by operations: Column, Row, Cell\n  onContextMenu(context: { items: AXMenuItem[] }): void {\n    const canLeft = this.canMerge('left');\n    const canRight = this.canMerge('right');\n    const canTop = this.canMerge('top');\n    const canBottom = this.canMerge('bottom');\n    const items: AXMenuItem[] = [\n      {\n        name: 'tableItem.group.columns',\n        text: 'Column',\n        icon: 'fa-light fa-table-columns',\n        items: [\n          { name: 'tableItem.colLeft', text: 'Insert Column Left', icon: 'fa-light fa-arrow-left-to-line' },\n          { name: 'tableItem.colRight', text: 'Insert Column Right', icon: 'fa-light fa-arrow-right-to-line' },\n          { name: 'tableItem.colRemove', text: 'Remove Column', icon: 'fa-light fa-trash-can' },\n        ],\n      },\n      {\n        name: 'tableItem.group.rows',\n        text: 'Row',\n        icon: 'fa-light fa-table-rows',\n        items: [\n          { name: 'tableItem.rowAbove', text: 'Insert Row Above', icon: 'fa-light fa-arrow-up-to-line' },\n          { name: 'tableItem.rowBelow', text: 'Insert Row Below', icon: 'fa-light fa-arrow-down-to-line' },\n          { name: 'tableItem.rowRemove', text: 'Remove Row', icon: 'fa-light fa-trash-can' },\n        ],\n      },\n      {\n        name: 'tableItem.group.cells',\n        text: 'Cell',\n        icon: 'fa-light fa-table-cells',\n        items: [\n          {\n            name: 'tableItem.cellShiftRight',\n            text: 'Insert Cell (Shift Right)',\n            icon: 'fa-light fa-arrow-right',\n          },\n          { name: 'tableItem.cellShiftDown', text: 'Insert Cell (Shift Down)', icon: 'fa-light fa-arrow-down' },\n        ],\n      },\n      {\n        name: 'tableItem.group.merge',\n        text: 'Merge',\n        icon: 'fa-light fa-merge',\n        items: [\n          {\n            name: 'tableItem.mergeLeft',\n            text: 'Merge Left',\n            icon: 'fa-light fa-arrow-left-to-line',\n            disabled: !canLeft,\n          },\n          {\n            name: 'tableItem.mergeRight',\n            text: 'Merge Right',\n            icon: 'fa-light fa-arrow-right-to-line',\n            disabled: !canRight,\n          },\n          { name: 'tableItem.mergeTop', text: 'Merge Top', icon: 'fa-light fa-arrow-up-to-line', disabled: !canTop },\n          {\n            name: 'tableItem.mergeBottom',\n            text: 'Merge Bottom',\n            icon: 'fa-light fa-arrow-down-to-line',\n            disabled: !canBottom,\n          },\n        ],\n      },\n    ];\n    items[items.length - 1].break = true;\n    context.items.unshift(...items);\n  }\n\n  async executeCommand(command: { name: string; data?: any; handled: boolean }): Promise<void> {\n    const handlers: Record<string, () => void> = {\n      'tableItem.colLeft': () => this.invoke('insertColumnLeft'),\n      'tableItem.colRight': () => this.invoke('insertColumnRight'),\n      'tableItem.colRemove': () => this.invoke('removeColumnAtCell'),\n      'tableItem.rowAbove': () => this.invoke('insertRowAbove'),\n      'tableItem.rowBelow': () => this.invoke('insertRowBelow'),\n      'tableItem.rowRemove': () => this.invoke('removeRowAtCell'),\n      'tableItem.cellShiftRight': () => this.invoke('insertCellShiftRight'),\n      'tableItem.cellShiftDown': () => this.invoke('insertCellShiftDown'),\n      'tableItem.mergeLeft': () => this.invoke('mergeLeft'),\n      'tableItem.mergeRight': () => this.invoke('mergeRight'),\n      'tableItem.mergeTop': () => this.invoke('mergeTop'),\n      'tableItem.mergeBottom': () => this.invoke('mergeBottom'),\n    };\n    const fn = handlers[command.name];\n    if (fn) {\n      fn();\n      command.handled = true;\n    }\n  }\n\n  private canMerge(dir: 'left' | 'right' | 'top' | 'bottom'): boolean {\n    const map: Record<'left' | 'right' | 'top' | 'bottom', string> = {\n      left: 'canMergeLeft',\n      right: 'canMergeRight',\n      top: 'canMergeTop',\n      bottom: 'canMergeBottom',\n    };\n    const method = map[dir];\n    return !!this.parentApi?.[method]?.(this.node);\n  }\n\n  // Implement abstract ops via parent table API\n  insertColumnLeft(): void {\n    this.invoke('insertColumnLeft');\n  }\n  insertColumnRight(): void {\n    this.invoke('insertColumnRight');\n  }\n  insertColumnToStart(): void {\n    this.invoke('insertColumnLeft');\n  }\n  insertColumnToEnd(): void {\n    this.invoke('insertColumnRight');\n  }\n  insertRowAbove(): void {\n    this.invoke('insertRowAbove');\n  }\n  insertRowBelow(): void {\n    this.invoke('insertRowBelow');\n  }\n  insertCellShiftRight(): void {\n    this.invoke('insertCellShiftRight');\n  }\n  insertCellShiftDown(): void {\n    this.invoke('insertCellShiftDown');\n  }\n}\n","import { AXPWidgetCoreModule, AXPTableItemBaseLayoutWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';\n\n@Component({\n  selector: 'axp-table-item-widget-view',\n  template: `\n    @for (node of children(); track $index) {\n      <ng-container\n        axp-widget-renderer\n        [node]=\"node\"\n        [index]=\"index\"\n        [parentNode]=\"this\"\n        [mode]=\"this.mode\"\n      ></ng-container>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule],\n})\nexport class AXPTableItemWidgetViewComponent extends AXPTableItemBaseLayoutWidgetComponent {\n  @HostBinding('class') private get __class() {\n    return this.hostClass();\n  }\n  @HostBinding('style') private get __style(): any {\n    return this.hostStyle();\n  }\n\n  // No-op implementations for runtime (view) mode\n  insertColumnLeft(): void {}\n  insertColumnRight(): void {}\n  insertRowAbove(): void {}\n  insertRowBelow(): void {}\n  insertCellShiftRight(): void {}\n  insertCellShiftDown(): void {}\n}\n","import { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGETS_LAYOUT_SUB_GRID } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\nimport {\n  AXP_LAYOUT_BORDER_PROPERTY,\n  AXP_LAYOUT_DIRECTION_PROPERTY,\n  AXP_LAYOUT_SPACING_PROPERTY,\n  AXP_TABLE_ITEM_COLSPAN_PROPERTY,\n  AXP_TABLE_ITEM_ROWSPAN_PROPERTY,\n} from '../../../properties/layout.props';\n\nexport const AXPTableItemWidget: AXPWidgetConfig = {\n  name: 'table-item-layout',\n  title: '@platform-layout-widgets:widgets.table-item-layout.title',\n  type: 'container',\n  categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n  subCategory: AXP_WIDGETS_LAYOUT_SUB_GRID,\n  description: '@platform-layout-widgets:widgets.table-item-layout.description',\n  icon: 'fa-light fa-table-cells',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    AXP_TABLE_ITEM_COLSPAN_PROPERTY,\n    AXP_TABLE_ITEM_ROWSPAN_PROPERTY,\n    AXP_LAYOUT_SPACING_PROPERTY,\n    AXP_LAYOUT_BORDER_PROPERTY,\n    AXP_LAYOUT_DIRECTION_PROPERTY,\n  ],\n  components: {\n    view: {\n      component: () => import('.').then((c) => c.AXPTableItemWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('.').then((c) => c.AXPTableItemWidgetViewComponent),\n    },\n    designer: {\n      component: () => import('.').then((c) => c.AXPTableItemWidgetDesignerComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    tableItem: 'table-item-layout';\n  }\n}\n\nexport interface AXPTableItemWidgetDesignerOptions {\n  spacing?: {\n    padding?: string;\n    margin?: string;\n  };\n  border?: {\n    radius?: string;\n    width?: string;\n    color?: string;\n    style?: string;\n  };\n  backgroundColor?: string;\n  direction?: string;\n  overflow?: string;\n  overflowX?: string;\n  overflowY?: string;\n  width?: string;\n  minWidth?: string;\n  maxWidth?: string;\n  height?: string;\n  minHeight?: string;\n  maxHeight?: string;\n}\n\nexport interface AXPTableItemWidgetViewOptions extends AXPTableItemWidgetDesignerOptions {}\nexport interface AXPTableItemWidgetEditOptions extends AXPTableItemWidgetDesignerOptions {}\nexport interface AXPTableItemWidgetPrintOptions extends AXPTableItemWidgetDesignerOptions {}\n\nexport interface AXPTableItemWidgetOptions {\n  designer: AXPTableItemWidgetDesignerOptions;\n  view: AXPTableItemWidgetViewOptions;\n  edit: AXPTableItemWidgetEditOptions;\n  print: AXPTableItemWidgetPrintOptions;\n}\n","import { AXPGridBoxString } from '@acorex/platform/layout/widget-core';\n\nexport interface AXPGridBoxOption {\n  value: string;\n  label: string;\n}\n\nexport interface AXPGridBoxAlignmentOption extends AXPGridBoxOption {\n  justifyItems: AXPGridBoxString['justifyItems'];\n  alignItems: AXPGridBoxString['alignItems'];\n}\n\nexport const AXP_Grid_Box_Alignments: AXPGridBoxAlignmentOption[] = [\n  { value: 'top-left', label: 'Top Left', alignItems: 'start', justifyItems: 'start' },\n  { value: 'top-center', label: 'Top Center', alignItems: 'start', justifyItems: 'center' },\n  { value: 'top-right', label: 'Top Right', alignItems: 'start', justifyItems: 'end' },\n  { value: 'middle-left', label: 'Middle Left', alignItems: 'center', justifyItems: 'start' },\n  { value: 'middle-center', label: 'Middle Center', alignItems: 'center', justifyItems: 'center' },\n  { value: 'middle-right', label: 'Middle Right', alignItems: 'center', justifyItems: 'end' },\n  { value: 'bottom-left', label: 'Bottom Left', alignItems: 'end', justifyItems: 'start' },\n  { value: 'bottom-center', label: 'Bottom Center', alignItems: 'end', justifyItems: 'center' },\n  { value: 'bottom-right', label: 'Bottom Right', alignItems: 'end', justifyItems: 'end' },\n];\n\nexport const AXP_Grid_Box_Align_Items_Options: AXPGridBoxOption[] = [\n  { value: 'start', label: 'Start' },\n  { value: 'end', label: 'End' },\n  { value: 'center', label: 'Center' },\n  { value: 'stretch', label: 'Stretch' },\n];\n\nexport const AXP_Grid_Box_Justify_Items_Options: AXPGridBoxOption[] = [\n  { value: 'start', label: 'Start' },\n  { value: 'end', label: 'End' },\n  { value: 'center', label: 'Center' },\n  { value: 'stretch', label: 'Stretch' },\n];\n","import { AXDataSource, AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXButtonGroupModule } from '@acorex/components/button-group';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXNumberBoxModule } from '@acorex/components/number-box';\nimport { AXRangeSliderModule } from '@acorex/components/range-slider';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXSelectionListModule } from '@acorex/components/selection-list';\nimport {\n  AXPBreakpoints,\n  AXPGridBoxString,\n  AXPGridBreakpointValues,\n  AXPPropertyEditorHelper,\n  AXPValueWidgetComponent,\n  findNonEmptyBreakpoints,\n} from '@acorex/platform/layout/widget-core';\n\nimport {\n  afterNextRender,\n  ChangeDetectionStrategy,\n  Component,\n  effect,\n  signal,\n  untracked,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { cloneDeep } from 'lodash-es';\nimport {\n  AXP_Grid_Box_Align_Items_Options,\n  AXP_Grid_Box_Alignments,\n  AXP_Grid_Box_Justify_Items_Options,\n  AXPGridBoxAlignmentOption,\n  AXPGridBoxOption,\n} from './grid-options-widget.type';\n\n@Component({\n  selector: 'axp-grid-options-widget-editor',\n  templateUrl: './grid-options-widget-editor.component.html',\n  styleUrl: './grid-options-widget-editor.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  imports: [\n    AXButtonGroupModule,\n    AXDecoratorModule,\n    AXSelectBoxModule,\n    AXNumberBoxModule,\n    AXDropdownModule,\n    AXButtonModule,\n    FormsModule,\n    AXRangeSliderModule,\n    AXSelectionListModule,\n    FormsModule,\n  ],\n})\nexport class AXPGridOptionsWidgetEditComponent extends AXPValueWidgetComponent<AXPGridBreakpointValues> {\n  private rendered = signal(false);\n  protected gridSides = AXP_Grid_Box_Alignments;\n\n  protected currentBreakpoint = signal<AXPBreakpoints>('default');\n  protected lastBreakpoint = signal<AXPBreakpoints>('default');\n  protected isBreakpointConfigured = signal<Record<AXPBreakpoints | string, boolean>>({\n    default: true,\n    sm: false,\n    md: false,\n    lg: false,\n    xl: false,\n    '2xl': false,\n    '3xl': false,\n  });\n\n  protected selectionItems: {\n    id: AXPBreakpoints;\n    text: string;\n  }[] = [\n    { id: 'default', text: 'Default' },\n    { id: 'sm', text: 'Sm' },\n    { id: 'md', text: 'Md' },\n    { id: 'lg', text: 'Lg' },\n    { id: 'xl', text: 'Xl' },\n    { id: '2xl', text: '2Xl' },\n    { id: '3xl', text: '3Xl' },\n  ];\n\n  protected columns = signal(1);\n  protected rows = signal(1);\n  protected gridDirection = signal<AXPGridBoxString['autoFlow']>('row');\n\n  protected gapUnit = signal('px');\n  protected gap = signal<Record<'x' | 'y', number>>({ x: 0, y: 0 });\n  protected gapMode = signal<'single' | 'multiple'>('single');\n  protected lastGap = signal(0);\n\n  protected selectedJustify = signal<AXPGridBoxOption>({ value: 'stretch', label: 'Stretch' });\n  protected selectedAlign = signal<AXPGridBoxOption>({ value: 'stretch', label: 'Stretch' });\n\n  protected hoveredAlign = signal<AXPGridBoxString['alignItems'] | null>(null);\n  protected hoveredJustify = signal<AXPGridBoxString['justifyItems'] | null>(null);\n\n  protected clickedAlign = signal<AXPGridBoxString['alignItems']>('stretch');\n  protected clickedJustify = signal<AXPGridBoxString['justifyItems']>('stretch');\n\n  protected setGridDirection(value: AXPGridBoxString['autoFlow']) {\n    this.gridDirection.set(value);\n    this.saveValue({ autoFlow: value });\n  }\n\n  protected setRowOrColumn(value: number, type: 'column' | 'row') {\n    if (type === 'column') {\n      this.columns.set(value);\n      // this.saveValue({ columns: `repeat(${value}, 1fr)` });\n      this.saveValue({ columns: value });\n    } else {\n      this.rows.set(value);\n      // this.saveValue({ rows: `repeat(${value}, 1fr)` });\n      this.saveValue({ rows: value });\n    }\n  }\n\n  protected toggleGapMode() {\n    if (this.gapMode() === 'single') {\n      this.gapMode.set('multiple');\n    } else {\n      this.gapMode.set('single');\n      this.setGap(this.lastGap(), 'both');\n    }\n  }\n\n  protected setGap(size: number | [number, number], side: 'both' | 'x' | 'y') {\n    this.lastGap.set(size as number);\n    if (side === 'both') {\n      this.gap.set({ x: size as number, y: size as number });\n      const gapString = this.gap().x + this.gapUnit();\n      this.saveValue({ gap: gapString });\n    } else {\n      this.gap.update((i) => ({ ...i, [side]: size as number }));\n      const gapString = this.gap().x + this.gapUnit() + ' ' + this.gap().y + this.gapUnit();\n      this.saveValue({ gap: gapString });\n    }\n  }\n\n  protected onClick(data: AXPGridBoxAlignmentOption): void {\n    if (this.clickedAlign() === 'stretch' && this.clickedJustify() === 'stretch') {\n      return;\n    } else if (this.clickedAlign() === 'stretch') {\n      this.clickedJustify.set(data.justifyItems);\n      this.selectedJustify.set({ value: data.justifyItems!, label: this.findJustifyNameById(data.justifyItems!) });\n      this.saveValue({ justifyItems: data.justifyItems });\n    } else if (this.clickedJustify() === 'stretch') {\n      this.clickedAlign.set(data.alignItems);\n      this.selectedAlign.set({ value: data.alignItems!, label: this.findAlignNameById(data.alignItems!) });\n      this.saveValue({ alignItems: data.alignItems });\n    } else {\n      this.clickedAlign.set(data.alignItems);\n      this.clickedJustify.set(data.justifyItems);\n      this.selectedAlign.set({ value: data.alignItems!, label: this.findAlignNameById(data.alignItems!) });\n      this.selectedJustify.set({ value: data.justifyItems!, label: this.findJustifyNameById(data.justifyItems!) });\n      this.saveValue({ alignItems: data.alignItems, justifyItems: data.justifyItems! });\n    }\n  }\n\n  protected onHover(data: AXPGridBoxAlignmentOption): void {\n    this.hoveredAlign.set(data.alignItems);\n    this.hoveredJustify.set(data.justifyItems);\n  }\n\n  protected onHoverLeave() {\n    this.hoveredAlign.set(null);\n    this.hoveredJustify.set(null);\n  }\n\n  protected onJustifyChange(event: AXValueChangedEvent<any>) {\n    if (event.isUserInteraction) {\n      this.selectedJustify.set({ value: event.value, label: this.findJustifyNameById(event.value) });\n      this.clickedJustify.set(event.value);\n    }\n    this.saveValue({ justifyItems: this.clickedJustify() });\n  }\n\n  protected onAlignChange(event: AXValueChangedEvent<any>) {\n    if (event.isUserInteraction) {\n      this.selectedAlign.set({ value: event.value, label: this.findAlignNameById(event.value) });\n      this.clickedAlign.set(event.value);\n    }\n    this.saveValue({ alignItems: this.clickedAlign() });\n  }\n\n  protected changeBreakPoint(event: AXValueChangedEvent<any>) {\n    if (event.isUserInteraction) {\n      const value = this.getValue();\n\n      const newBreakpoint = (typeof event.value === 'object' ? event.value.id : event.value) as AXPBreakpoints;\n      const currentBreakpoint = this.currentBreakpoint();\n\n      if (newBreakpoint === currentBreakpoint) {\n        return;\n      }\n\n      this.lastBreakpoint.set(currentBreakpoint);\n      this.currentBreakpoint.set(newBreakpoint);\n\n      if (value[currentBreakpoint] && value[newBreakpoint] === undefined) {\n        this.setValue({ ...value, [newBreakpoint]: value[currentBreakpoint] });\n      }\n      this.initialValues();\n    }\n  }\n\n  protected resetBreakpoint() {\n    // this.setValue({});\n    if (this.currentBreakpoint() === 'default') {\n      return;\n    } else {\n      const value = cloneDeep(this.getValue());\n      delete value[this.currentBreakpoint()];\n\n      const newBreakpoint = this.lastBreakpoint();\n      const otherBreakpoints = findNonEmptyBreakpoints(value);\n\n      this.currentBreakpoint.set(newBreakpoint);\n      const filteredOtherBreakpoints = otherBreakpoints.filter((i) => i !== newBreakpoint);\n      if (filteredOtherBreakpoints.length === 0) {\n        this.lastBreakpoint.set(newBreakpoint);\n      } else {\n        this.lastBreakpoint.set(filteredOtherBreakpoints[filteredOtherBreakpoints.length - 1]);\n      }\n      this.setValue({ ...value });\n      this.initialValues();\n      this.getValue();\n    }\n  }\n\n  protected detectConfiguredBreakpoints() {\n    const value = this.getValue();\n    let newBreakpointConfigured: Record<AXPBreakpoints | string, boolean> = {};\n\n    Object.keys(value).forEach((key) => {\n      newBreakpointConfigured[key] = true;\n    });\n\n    this.isBreakpointConfigured.set(newBreakpointConfigured);\n  }\n\n  private saveValue(item: Partial<AXPGridBoxString>) {\n    const value = this.getValue();\n    const breakpoint = this.currentBreakpoint();\n\n    if (value) {\n      const existingBreakpointValue = value[breakpoint];\n      const newValue = {\n        ...value,\n        [breakpoint]: existingBreakpointValue ? { ...existingBreakpointValue, ...item } : item,\n      };\n      this.setValue(newValue);\n    } else {\n      this.setValue({\n        [breakpoint]: item,\n      });\n    }\n  }\n\n  protected justifyDataSource = new AXDataSource({\n    pageSize: 99,\n    load: async (e) => {\n      return {\n        items: AXP_Grid_Box_Justify_Items_Options,\n        total: AXP_Grid_Box_Justify_Items_Options.length,\n      };\n    },\n  });\n\n  protected alignDataSource = new AXDataSource({\n    pageSize: 99,\n    load: async (e) => {\n      return {\n        items: AXP_Grid_Box_Align_Items_Options,\n        total: AXP_Grid_Box_Align_Items_Options.length,\n      };\n    },\n  });\n\n  private findAlignNameById = (value: string): string => {\n    const side = AXP_Grid_Box_Align_Items_Options.find((side) => side.value === value)!;\n    return side.label;\n  };\n\n  private findJustifyNameById = (value: string): string => {\n    const side = AXP_Grid_Box_Justify_Items_Options.find((side) => side.value === value)!;\n    return side.label;\n  };\n\n  #firstInitialize = afterNextRender(() => {\n    this.initialValues();\n    this.rendered.set(true);\n  });\n\n  #trackChange = effect(() => {\n    this.getValue();\n    untracked(() => this.initialValues());\n  });\n\n  // #eff1 = effect(() => console.log(this.getValue()));\n  // #eff2 = effect(() => console.log(this.currentBreakpoint(), this.clickedAlign(), this.clickedJustify()));\n\n  initialValues() {\n    const value = this.getValue();\n    if (value) {\n      if (!this.rendered()) {\n        const keys = findNonEmptyBreakpoints(value);\n        this.currentBreakpoint.set(keys.length === 0 ? 'default' : keys[keys.length - 1]);\n      }\n\n      const justify = value[this.currentBreakpoint()]?.justifyItems ?? 'stretch';\n      const align = value[this.currentBreakpoint()]?.alignItems ?? 'stretch';\n\n      this.clickedJustify.set(justify);\n      this.clickedAlign.set(align);\n\n      this.selectedJustify.set({ value: justify, label: this.findJustifyNameById(justify) });\n      this.selectedAlign.set({ value: align, label: this.findAlignNameById(align) });\n\n      // const rows = AXPPropertyEditorHelper.parseGridTemplate(\n      //   value[this.currentBreakpoint()]?.rows ?? 'repeat(1, 1fr)',\n      // );\n      // const cols = AXPPropertyEditorHelper.parseGridTemplate(\n      //   value[this.currentBreakpoint()]?.columns ?? 'repeat(1, 1fr)',\n      // );\n      const rows = value[this.currentBreakpoint()]?.rows ?? 1;\n      const cols = value[this.currentBreakpoint()]?.columns ?? 1;\n      this.rows.set(rows as number);\n      this.columns.set(cols as number);\n\n      const { values, unit } = AXPPropertyEditorHelper.parseGap(value[this.currentBreakpoint()]?.gap ?? '0px');\n      this.setGap(values.x, 'x');\n      this.setGap(values.y, 'y');\n      this.gapUnit.set(unit);\n      this.detectConfiguredBreakpoints();\n    }\n  }\n}\n","<div class=\"axp-grid-breakpoints ax-pb-4\">\n  <ax-selection-list\n    [direction]=\"'horizontal'\"\n    [items]=\"selectionItems\"\n    [look]=\"'card'\"\n    [customTemplate]=\"customTemplate\"\n    [showControl]=\"false\"\n    [ngModel]=\"currentBreakpoint()\"\n    (onValueChanged)=\"changeBreakPoint($event)\"\n  ></ax-selection-list>\n</div>\n<ng-template #customTemplate let-item>\n  @let data = item.data;\n  <div [class]=\"isBreakpointConfigured()[data.id] ? 'ax-text-primary-300' : ''\">\n    {{ data.text }}\n  </div>\n</ng-template>\n<ax-button\n  color=\"primary\"\n  text=\"Reset\"\n  [disabled]=\"currentBreakpoint() === 'default'\"\n  (click)=\"resetBreakpoint()\"\n></ax-button>\n\n<div class=\"axp-grid-option ax-grid ax-grid-cols-[auto_1fr] ax-pt-2 ax-gap-2 ax-items-center ax-justify-items-start\">\n  <span> Direction </span>\n  <div>\n    <ax-button-group [selection]=\"'single'\">\n      <ax-button-group-item (onClick)=\"setGridDirection('row')\" [selected]=\"gridDirection() === 'row'\"\n        ><ax-prefix\n          ><svg\n            data-wf-icon=\"FlexFlowWrapIcon\"\n            width=\"16\"\n            height=\"16\"\n            viewBox=\"0 0 16 16\"\n            fill=\"none\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n          >\n            <path\n              fill-rule=\"evenodd\"\n              clip-rule=\"evenodd\"\n              d=\"M3 4H11V3H3V4ZM13.8536 11.1464L10.8536 8.14645L10.1464 8.85355L12.2929 11H3V12H12.2929L10.1464 14.1464L10.8536 14.8536L13.8536 11.8536L14.2071 11.5L13.8536 11.1464Z\"\n              fill=\"currentColor\"\n            ></path>\n            <path\n              opacity=\"0.4\"\n              fill-rule=\"evenodd\"\n              clip-rule=\"evenodd\"\n              d=\"M3 10.7929L9.79289 4H11V4.20711L4.20711 11H3V10.7929Z\"\n              fill=\"currentColor\"\n            ></path></svg></ax-prefix\n      ></ax-button-group-item>\n      <ax-button-group-item (onClick)=\"setGridDirection('column')\" [selected]=\"gridDirection() === 'column'\"\n        ><ax-prefix\n          ><svg\n            data-wf-icon=\"FlexFlowColumnWrapIcon\"\n            width=\"16\"\n            height=\"16\"\n            viewBox=\"0 0 16 16\"\n            fill=\"none\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n          >\n            <path\n              fill-rule=\"evenodd\"\n              clip-rule=\"evenodd\"\n              d=\"M4 3L4 11L3 11L3 3L4 3ZM11.1464 13.8536L8.14645 10.8536L8.85355 10.1464L11 12.2929L11 3L12 3L12 12.2929L14.1464 10.1464L14.8536 10.8536L11.8536 13.8536L11.5 14.2071L11.1464 13.8536Z\"\n              fill=\"currentColor\"\n            ></path>\n            <path\n              opacity=\"0.4\"\n              fill-rule=\"evenodd\"\n              clip-rule=\"evenodd\"\n              d=\"M10.7929 3L4 9.79289L4 11L4.20711 11L11 4.20711L11 3L10.7929 3Z\"\n              fill=\"currentColor\"\n            ></path></svg></ax-prefix\n      ></ax-button-group-item>\n    </ax-button-group>\n  </div>\n  <span>Grid</span>\n  <div class=\"ax-flex ax-items-center ax-justify-between ax-gap-1\">\n    <span class=\"ax-text-xs\">Row</span>\n    <ax-number-box\n      [minValue]=\"1\"\n      [maxValue]=\"12\"\n      [value]=\"rows()\"\n      (onValueChanged)=\"setRowOrColumn($event.value, 'row')\"\n      [changeOnScroll]=\"true\"\n      [showSpinButtons]=\"false\"\n      class=\"ax-sm ax-max-w-12\"\n    ></ax-number-box>\n    <span class=\"ax-text-xs\">Column</span>\n    <ax-number-box\n      [minValue]=\"1\"\n      [maxValue]=\"12\"\n      [value]=\"columns()\"\n      (onValueChanged)=\"setRowOrColumn($event.value, 'column')\"\n      [changeOnScroll]=\"true\"\n      [showSpinButtons]=\"false\"\n      class=\"ax-sm ax-max-w-12\"\n    ></ax-number-box>\n    <!-- <button>\n      <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <path\n          fill-rule=\"evenodd\"\n          clip-rule=\"evenodd\"\n          d=\"M7 3.29289C7.18754 3.10536 7.44189 3 7.70711 3H10.5C10.7022 3 10.8845 3.12182 10.9619 3.30866C11.0393 3.4955 10.9966 3.71055 10.8536 3.85355L9 5.70711V7H10.2929L12.1464 5.14645C12.2894 5.00345 12.5045 4.96067 12.6913 5.03806C12.8782 5.11545 13 5.29777 13 5.5V8.29289C13 8.55811 12.8946 8.81246 12.7071 9L11 10.7071C10.8125 10.8946 10.5581 11 10.2929 11H7.70711L4.85355 13.8536C4.65829 14.0488 4.34171 14.0488 4.14645 13.8536L2.14645 11.8536C1.95118 11.6583 1.95118 11.3417 2.14645 11.1464L5 8.29289V5.70711C5 5.44189 5.10536 5.18754 5.29289 5L7 3.29289ZM9.29289 4H7.70711L6 5.70711L6 8.29289C6 8.55811 5.89464 8.81246 5.70711 9L3.20711 11.5L4.5 12.7929L7 10.2929C7.18754 10.1054 7.44189 10 7.70711 10H10.2929L12 8.29289V6.70711L10.8536 7.85355C10.7598 7.94732 10.6326 8 10.5 8H8.5C8.22386 8 8 7.77614 8 7.5V5.5C8 5.36739 8.05268 5.24021 8.14645 5.14645L9.29289 4Z\"\n          fill=\"currentColor\"\n        ></path>\n      </svg>\n    </button> -->\n  </div>\n\n  <span>Align</span>\n  <div class=\"ax-flex ax-justify-between ax-gap-2 ax-items-center\">\n    <div\n      class=\"ax-relative ax-size-[62px] ax-bg-[rgb(30,30,30)] ax-border ax-border-white ax-border-opacity-15 ax-rounded\"\n    >\n      <div class=\"ax-absolute ax-inset-0 ax-grid ax-grid-cols-3 ax-grid-rows-3\">\n        @for (side of gridSides; track side.value) {\n          <div\n            [attr.aria-label]=\"side.label\"\n            [attr.aria-value]=\"side.value\"\n            class=\"ax-grid ax-place-content-center\"\n            (mouseenter)=\"onHover(side)\"\n            (mouseleave)=\"onHoverLeave()\"\n            (click)=\"onClick(side)\"\n          >\n            @if (true) {\n              <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\">\n                <rect x=\"7\" y=\"7\" width=\"2\" height=\"2\" rx=\"1\" fill=\"currentColor\" fill-opacity=\"0.3\"></rect>\n              </svg>\n            }\n          </div>\n        }\n      </div>\n      @if (hoveredJustify() && hoveredAlign()) {\n        <div\n          class=\"axp-grid-option-hover ax-absolute ax-inset-0 ax-grid ax-pointer-events-none ax-transition-all\"\n          [style.justify-items]=\"hoveredJustify()\"\n          [style.align-items]=\"hoveredAlign()\"\n        >\n          <div class=\"ax-flex ax-justify-center ax-items-center ax-min-w-5 ax-min-h-5\">\n            <div class=\"ax-size-auto ax-z-[1] ax-rounded-lg ax-bg-[rgb(30,30,30)] ax-flex-none\">\n              @if (clickedJustify() === 'stretch' && clickedAlign() === 'stretch') {\n              } @else if (clickedJustify() === 'stretch') {\n                <svg\n                  width=\"60\"\n                  height=\"20\"\n                  viewBox=\"0 0 60 20\"\n                  fill=\"none\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  style=\"color: white\"\n                >\n                  <path\n                    d=\"M4.5 4.6a.15.15 0 0 1 .033-.1h50.934l.003.003a.15.15 0 0 1 .03.097v10.8a.15.15 0 0 1-.03.097l-.003.003H4.533l-.003-.003a.15.15 0 0 1-.03-.097V4.6Z\"\n                    fill=\"currentColor\"\n                    stroke=\"currentColor\"\n                    style=\"fill-opacity: 0.07; stroke-opacity: 0.25\"\n                  ></path>\n                </svg>\n              } @else if (clickedAlign() === 'stretch') {\n                <svg\n                  width=\"20\"\n                  height=\"60\"\n                  viewBox=\"0 0 20 60\"\n                  fill=\"none\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  style=\"color: white\"\n                >\n                  <path\n                    d=\"M4.6 4.5h10.8a.15.15 0 0 1 .097.03l.003.003v50.934l-.003.003a.15.15 0 0 1-.097.03H4.6a.15.15 0 0 1-.1-.033V4.533l.003-.003A.15.15 0 0 1 4.6 4.5Z\"\n                    fill=\"currentColor\"\n                    stroke=\"currentColor\"\n                    style=\"fill-opacity: 0.07; stroke-opacity: 0.25\"\n                  ></path>\n                </svg>\n              } @else {\n                <svg\n                  width=\"20\"\n                  height=\"20\"\n                  viewBox=\"0 0 20 20\"\n                  fill=\"none\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  style=\"color: #efeaea\"\n                >\n                  <path\n                    d=\"M4.5 4.6a.1.1 0 0 1 .1-.1h10.8a.1.1 0 0 1 .1.1v10.8a.1.1 0 0 1-.1.1H4.6a.1.1 0 0 1-.1-.1V4.6Z\"\n                    fill=\"currentColor\"\n                    stroke=\"currentColor\"\n                    style=\"stroke-opacity: 0.25; fill-opacity: 0.07\"\n                    class=\"hover:fill-opacity-20\"\n                  ></path>\n                </svg>\n              }\n            </div>\n          </div>\n        </div>\n      }\n\n      <div\n        class=\"axp-grid-option-active ax-absolute ax-inset-0 ax-grid ax-pointer-events-none ax-transition-all\"\n        [style.justify-items]=\"clickedJustify()\"\n        [style.align-items]=\"clickedAlign()\"\n      >\n        <div class=\"ax-flex ax-justify-center ax-items-center ax-min-w-5 ax-min-h-5\">\n          <div class=\"ax-size-auto ax-z-[2] ax-rounded-lg ax-bg-[rgb(30,30,30)] ax-flex-none\">\n            @if (clickedJustify() === 'stretch' && clickedAlign() === 'stretch') {\n              <svg\n                width=\"60\"\n                height=\"60\"\n                viewBox=\"0 0 60 60\"\n                fill=\"none\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n                style=\"color: white\"\n              >\n                <path\n                  d=\"M55.5 55.48a.02.02 0 0 1-.02.02H4.52a.02.02 0 0 1-.02-.02V4.52a.02.02 0 0 1 .02-.02h50.96a.02.02 0 0 1 .02.02v50.96Z\"\n                  fill=\"currentColor\"\n                  stroke=\"currentColor\"\n                  style=\"fill-opacity: 0.16; stroke: white\"\n                ></path>\n                <path\n                  d=\"m26.354 20.354 3.146-3.147V29.5h-3v1h3v12.293l-3.146-3.147-.707.708L30 44.707l4.354-4.353-.707-.708-3.147 3.147V30.5h12.293l-3.147 3.147.708.707L44.707 30l-4.353-4.354-.708.708 3.147 3.146H30.5V17.207l3.146 3.147.707-.707L30 15.293l-4.354 4.354.707.707Z\"\n                  fill=\"currentColor\"\n                  style=\"fill-opacity: 0.25\"\n                ></path>\n                <path\n                  d=\"m17.207 30.5 3.146 3.147-.707.707L15.293 30l4.353-4.354.707.708-3.146 3.146H26.5v1h-9.293Z\"\n                  fill=\"currentColor\"\n                  style=\"fill-opacity: 0.25\"\n                ></path>\n              </svg>\n            } @else if (clickedJustify() === 'stretch') {\n              <svg\n                width=\"60\"\n                height=\"20\"\n                viewBox=\"0 0 60 20\"\n                fill=\"none\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n                style=\"color: white\"\n              >\n                <path\n                  d=\"M4.5 4.6a.15.15 0 0 1 .033-.1h50.934l.003.003a.15.15 0 0 1 .03.097v10.8a.15.15 0 0 1-.03.097l-.003.003H4.533l-.003-.003a.15.15 0 0 1-.03-.097V4.6Z\"\n                  fill=\"currentColor\"\n                  stroke=\"currentColor\"\n                  style=\"fill-opacity: 0.16; stroke: white\"\n                ></path>\n              </svg>\n            } @else if (clickedAlign() === 'stretch') {\n              <svg\n                width=\"20\"\n                height=\"60\"\n                viewBox=\"0 0 20 60\"\n                fill=\"none\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n                style=\"color: white\"\n              >\n                <path\n                  d=\"M4.6 4.5h10.8a.15.15 0 0 1 .097.03l.003.003v50.934l-.003.003a.15.15 0 0 1-.097.03H4.6a.15.15 0 0 1-.1-.033V4.533l.003-.003A.15.15 0 0 1 4.6 4.5Z\"\n                  fill=\"currentColor\"\n                  stroke=\"currentColor\"\n                  style=\"fill-opacity: 0.16; stroke: white\"\n                ></path>\n              </svg>\n            } @else {\n              <svg\n                width=\"20\"\n                height=\"20\"\n                viewBox=\"0 0 20 20\"\n                fill=\"none\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n                style=\"color: #efeaea\"\n              >\n                <path\n                  d=\"M4.5 4.6a.1.1 0 0 1 .1-.1h10.8a.1.1 0 0 1 .1.1v10.8a.1.1 0 0 1-.1.1H4.6a.1.1 0 0 1-.1-.1V4.6Z\"\n                  fill=\"currentColor\"\n                  stroke=\"currentColor\"\n                  style=\"fill: #cebcbc; fill-opacity: 0.16\"\n                ></path>\n              </svg>\n            }\n          </div>\n        </div>\n      </div>\n    </div>\n    <div class=\"ax-grid ax-grid-cols-[auto_1fr] ax-items-center ax-justify-items-start ax-gap-2\">\n      <span>X:</span>\n      <div class=\"ax-w-24\">\n        <ax-select-box\n          class=\"ax-sm\"\n          [dataSource]=\"justifyDataSource\"\n          [value]=\"selectedJustify()\"\n          (onValueChanged)=\"onJustifyChange($event)\"\n          textField=\"label\"\n          valueField=\"value\"\n          placeholder=\"Choose...\"\n        >\n        </ax-select-box>\n      </div>\n      <span>Y:</span>\n      <div class=\"ax-w-24\">\n        <ax-select-box\n          class=\"ax-sm\"\n          [dataSource]=\"alignDataSource\"\n          [value]=\"selectedAlign()\"\n          (onValueChanged)=\"onAlignChange($event)\"\n          textField=\"label\"\n          valueField=\"value\"\n          placeholder=\"Choose...\"\n        >\n        </ax-select-box>\n      </div>\n    </div>\n  </div>\n\n  <span>Gap</span>\n  <div class=\"ax-flex ax-gap-2 ax-justify-between ax-items-center\">\n    @if (gapMode() === 'single') {\n      <ax-range-slider\n        class=\"ax-w-32\"\n        [values]=\"gap().x\"\n        (valuesChange)=\"setGap($event ?? 0, 'both')\"\n      ></ax-range-slider>\n      <ax-number-box\n        [minValue]=\"0\"\n        [maxValue]=\"999\"\n        [value]=\"gap().x\"\n        (onValueChanged)=\"setGap($event.value ?? 0, 'both')\"\n        [changeOnScroll]=\"true\"\n        class=\"ax-sm ax-min-w-6\"\n        [showSpinButtons]=\"false\"\n        ><ax-suffix><ax-text class=\"!ax-text-xs !ax-px-1\">PX</ax-text></ax-suffix></ax-number-box\n      >\n    } @else {\n      <div class=\"ax-flex ax-items-center ax-gap-2 ax-h-12\">\n        <span class=\"ax-text-xs\"\n          ><svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path\n              d=\"M12.2929 7.00004L9.14645 3.85359L9.85355 3.14648L14.2071 7.50004L9.85355 11.8536L9.14645 11.1465L12.2929 8.00004H3V7.00004H12.2929Z\"\n              fill=\"currentColor\"\n            ></path></svg ></span>\n        <ax-number-box\n          [minValue]=\"0\"\n          [maxValue]=\"999\"\n          [value]=\"gap().x\"\n          (onValueChanged)=\"setGap($event.value ?? 0, 'x')\"\n          [changeOnScroll]=\"true\"\n          class=\"ax-sm ax-min-w-5\"\n          [showSpinButtons]=\"false\"\n          ><ax-suffix><ax-text class=\"!ax-text-xs !ax-px-1\">PX</ax-text></ax-suffix></ax-number-box\n        >\n        <span class=\"ax-text-xs\"><svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <path\n            d=\"M8.00001 12.2929L4.85356 9.14645L4.14645 9.85355L8.50001 14.2071L12.8536 9.85355L12.1465 9.14645L9.00001 12.2929L9.00001 3H8.00001L8.00001 12.2929Z\"\n            fill=\"currentColor\"\n          ></path></svg></span>\n        <ax-number-box\n          [minValue]=\"0\"\n          [maxValue]=\"999\"\n          [value]=\"gap().y\"\n          [changeOnScroll]=\"true\"\n          (valueChange)=\"setGap($event ?? 0, 'y')\"\n          class=\"ax-sm ax-min-w-5\"\n          [showSpinButtons]=\"false\"\n          ><ax-suffix><ax-text class=\"!ax-text-xs !ax-px-1\">PX</ax-text></ax-suffix></ax-number-box\n        >\n      </div>\n    }\n    <button (click)=\"toggleGapMode()\">\n      <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        @if (gapMode() === 'single') {\n          <path\n            fill-rule=\"evenodd\"\n            clip-rule=\"evenodd\"\n            d=\"M5 7L5 5C5 3.34315 6.34315 2 8 2C9.65685 2 11 3.34315 11 5V7C11.5523 7 12 7.44772 12 8V12C12 12.5523 11.5523 13 11 13H5C4.44772 13 4 12.5523 4 12V8C4 7.44771 4.44772 7 5 7ZM6 5C6 3.89543 6.89543 3 8 3C9.10457 3 10 3.89543 10 5V7H6V5ZM5 12V8H11V12H5Z\"\n            fill=\"currentColor\"\n          ></path>\n        } @else {\n          <path\n            fill-rule=\"evenodd\"\n            clip-rule=\"evenodd\"\n            d=\"M9 5C9 3.89543 9.89543 3 11 3C12.1046 3 13 3.89543 13 5V6H14V5C14 3.34315 12.6569 2 11 2C9.34315 2 8 3.34315 8 5V7H3C2.44772 7 2 7.44771 2 8V12C2 12.5523 2.44772 13 3 13H9C9.55228 13 10 12.5523 10 12V8C10 7.44772 9.55228 7 9 7V5ZM3 8H9V12H3V8Z\"\n            fill=\"currentColor\"\n          ></path>\n        }\n      </svg>\n    </button>\n  </div>\n</div>\n","import { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\nexport const AXPGridOptionsWidget: AXPWidgetConfig = {\n  name: 'grid-options',\n  title: 'Grid Options',\n  description: 'Make an Elements Grid',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  icon: 'fa-light fa-th',\n  type: 'editor',\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY],\n  components: {\n    edit: {\n      component: () =>\n        import('./grid-options-widget-editor.component').then((c) => c.AXPGridOptionsWidgetEditComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    gridOptions: 'grid-options';\n  }\n}\n","import { AXDataSource, AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXNumberBoxModule } from '@acorex/components/number-box';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXPGridBoxString, AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { afterNextRender, ChangeDetectionStrategy, Component, effect, signal, untracked } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n  AXP_Grid_Box_Align_Items_Options,\n  AXP_Grid_Box_Alignments,\n  AXP_Grid_Box_Justify_Items_Options,\n  AXPGridBoxAlignmentOption,\n  AXPGridBoxOption,\n} from '../grid-options';\nimport { AXPAdvancedGridBoxValues } from './advanced-grid-options-widget.type';\n\n@Component({\n  selector: 'axp-advanced-grid-options-widget-editor',\n  templateUrl: './advanced-grid-options-widget-editor.component.html',\n  styleUrl: './advanced-grid-options-widget-editor.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXDecoratorModule, AXButtonModule, AXNumberBoxModule, FormsModule, AXLabelModule, AXSelectBoxModule],\n})\nexport class AXPAdvancedGridOptionsWidgetEditComponent extends AXPValueWidgetComponent<AXPAdvancedGridBoxValues> {\n  protected gridSides = AXP_Grid_Box_Alignments;\n  private rendered = signal(false);\n\n  protected selectedJustify = signal<AXPGridBoxOption>({ value: 'stretch', label: 'Stretch' });\n  protected selectedAlign = signal<AXPGridBoxOption>({ value: 'stretch', label: 'Stretch' });\n\n  protected hoveredAlign = signal<AXPGridBoxString['alignItems'] | null>(null);\n  protected hoveredJustify = signal<AXPGridBoxString['justifyItems'] | null>(null);\n\n  protected clickedAlign = signal<AXPGridBoxString['alignItems']>('stretch');\n  protected clickedJustify = signal<AXPGridBoxString['justifyItems']>('stretch');\n\n  protected columns = signal(6);\n  protected items = signal(1);\n\n  protected changeValue(event: AXValueChangedEvent<any> | number, type: keyof AXPAdvancedGridBoxValues) {\n    if (typeof event === 'number') {\n      this.saveValue({ [type]: event });\n    } else if (event.isUserInteraction) {\n      this.saveValue({ [type]: event.value });\n    }\n  }\n\n  protected onClick(data: AXPGridBoxAlignmentOption): void {\n    if (this.clickedAlign() === 'stretch' && this.clickedJustify() === 'stretch') {\n      return;\n    } else if (this.clickedAlign() === 'stretch') {\n      this.clickedJustify.set(data.justifyItems);\n      this.selectedJustify.set({ value: data.justifyItems!, label: this.findJustifyNameById(data.justifyItems!) });\n      this.saveValue({ justifyItems: data.justifyItems });\n    } else if (this.clickedJustify() === 'stretch') {\n      this.clickedAlign.set(data.alignItems);\n      this.selectedAlign.set({ value: data.alignItems!, label: this.findAlignNameById(data.alignItems!) });\n      this.saveValue({ alignItems: data.alignItems });\n    } else {\n      this.clickedAlign.set(data.alignItems);\n      this.clickedJustify.set(data.justifyItems);\n      this.selectedAlign.set({ value: data.alignItems!, label: this.findAlignNameById(data.alignItems!) });\n      this.selectedJustify.set({ value: data.justifyItems!, label: this.findJustifyNameById(data.justifyItems!) });\n      this.saveValue({ alignItems: data.alignItems, justifyItems: data.justifyItems });\n    }\n  }\n\n  protected onHover(data: AXPGridBoxAlignmentOption): void {\n    this.hoveredAlign.set(data.alignItems);\n    this.hoveredJustify.set(data.justifyItems);\n  }\n\n  protected onHoverLeave() {\n    this.hoveredAlign.set(null);\n    this.hoveredJustify.set(null);\n  }\n\n  protected onJustifyChange(event: AXValueChangedEvent<any>) {\n    if (event.isUserInteraction) {\n      this.selectedJustify.set({ value: event.value, label: this.findJustifyNameById(event.value) });\n      this.clickedJustify.set(event.value);\n    }\n    this.saveValue({ justifyItems: this.clickedJustify() });\n  }\n\n  protected onAlignChange(event: AXValueChangedEvent<any>) {\n    if (event.isUserInteraction) {\n      this.selectedAlign.set({ value: event.value, label: this.findAlignNameById(event.value) });\n      this.clickedAlign.set(event.value);\n    }\n    this.saveValue({ alignItems: this.clickedAlign() });\n  }\n\n  private saveValue(item: Partial<AXPAdvancedGridBoxValues>) {\n    const value = this.getValue();\n    const newValue = {\n      ...value,\n      ...item,\n    };\n    this.setValue(newValue);\n  }\n\n  protected justifyDataSource = new AXDataSource({\n    pageSize: 99,\n    load: async (e) => {\n      return {\n        items: AXP_Grid_Box_Justify_Items_Options,\n        total: AXP_Grid_Box_Justify_Items_Options.length,\n      };\n    },\n  });\n\n  protected alignDataSource = new AXDataSource({\n    pageSize: 99,\n    load: async (e) => {\n      return {\n        items: AXP_Grid_Box_Align_Items_Options,\n        total: AXP_Grid_Box_Align_Items_Options.length,\n      };\n    },\n  });\n\n  private findAlignNameById = (value: string): string => {\n    const side = AXP_Grid_Box_Align_Items_Options.find((side) => side.value === value)!;\n    return side.label;\n  };\n\n  private findJustifyNameById = (value: string): string => {\n    const side = AXP_Grid_Box_Justify_Items_Options.find((side) => side.value === value)!;\n    return side.label;\n  };\n\n  #initValues = afterNextRender(() => {\n    const value = this.getValue();\n    this.columns.set(value?.columns ?? 1);\n    this.items.set(value?.itemsCount ?? 1);\n  });\n\n  //eff = effect(() => console.log(this.getValue()));\n\n  #firstInitialize = afterNextRender(() => {\n    this.initialValues();\n    this.rendered.set(true);\n  });\n\n  #trackChange = effect(() => {\n    this.getValue();\n    untracked(() => this.initialValues());\n  });\n\n  private initialValues() {\n    const value = this.getValue();\n\n    const justify = value?.justifyItems ?? 'stretch';\n    const align = value?.alignItems ?? 'stretch';\n    const col = value?.columns ?? 6;\n    const items = value?.itemsCount ?? 1;\n\n    this.changeValue(col, 'columns');\n    this.changeValue(items, 'itemsCount');\n\n    this.clickedJustify.set(justify);\n    this.clickedAlign.set(align);\n\n    this.selectedJustify.set({ value: justify, label: this.findJustifyNameById(justify) });\n    this.selectedAlign.set({ value: align, label: this.findAlignNameById(align) });\n  }\n}\n","<div class=\"axp-advanced-grid ax-w-11/12\">\n  <div class=\"ax-grid ax-grid-cols-2 ax-grid-rows-2 ax-gap-x-3 ax-items-center ax-pb-2\">\n    <span>Columns</span>\n    <span>Items</span>\n    <ax-number-box\n      [minValue]=\"1\"\n      [maxValue]=\"12\"\n      [value]=\"columns()\"\n      (onValueChanged)=\"changeValue($event, 'columns')\"\n    ></ax-number-box>\n    <ax-number-box\n      [minValue]=\"1\"\n      [maxValue]=\"99\"\n      [value]=\"items()\"\n      (onValueChanged)=\"changeValue($event, 'itemsCount')\"\n    ></ax-number-box>\n  </div>\n  <span>Align</span>\n  <div class=\"ax-flex ax-justify-between ax-gap-2 ax-items-center\">\n    <div\n      class=\"ax-relative ax-size-[62px] ax-bg-[rgb(30,30,30)] ax-border ax-border-white ax-border-opacity-15 ax-rounded\"\n    >\n      <div class=\"ax-absolute ax-inset-0 ax-grid ax-grid-cols-3 ax-grid-rows-3\">\n        @for(side of gridSides; track side.value){\n        <div\n          [attr.aria-label]=\"side.label\"\n          [attr.aria-value]=\"side.value\"\n          class=\"ax-grid ax-place-content-center\"\n          (mouseenter)=\"onHover(side)\"\n          (mouseleave)=\"onHoverLeave()\"\n          (click)=\"onClick(side)\"\n        >\n          @if (true) {\n          <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\">\n            <rect x=\"7\" y=\"7\" width=\"2\" height=\"2\" rx=\"1\" fill=\"currentColor\" fill-opacity=\"0.3\"></rect>\n          </svg>\n          }\n        </div>\n        }\n      </div>\n      @if(hoveredJustify() && hoveredAlign()){\n      <div\n        class=\"axp-grid-option-hover ax-absolute ax-inset-0 ax-grid ax-pointer-events-none ax-transition-all\"\n        [style.justify-items]=\"hoveredJustify()\"\n        [style.align-items]=\"hoveredAlign()\"\n      >\n        <div class=\"ax-flex ax-justify-center ax-items-center ax-min-w-5 ax-min-h-5\">\n          <div class=\"ax-size-auto ax-z-[1] ax-rounded-lg ax-bg-[rgb(30,30,30)] ax-flex-none\">\n            @if(clickedJustify()==='stretch' && clickedAlign()==='stretch') {} @else if(clickedJustify()==='stretch'){\n            <svg\n              width=\"60\"\n              height=\"20\"\n              viewBox=\"0 0 60 20\"\n              fill=\"none\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              style=\"color: white\"\n            >\n              <path\n                d=\"M4.5 4.6a.15.15 0 0 1 .033-.1h50.934l.003.003a.15.15 0 0 1 .03.097v10.8a.15.15 0 0 1-.03.097l-.003.003H4.533l-.003-.003a.15.15 0 0 1-.03-.097V4.6Z\"\n                fill=\"currentColor\"\n                stroke=\"currentColor\"\n                style=\"fill-opacity: 0.07; stroke-opacity: 0.25\"\n              ></path>\n            </svg>\n            } @else if(clickedAlign()==='stretch'){\n            <svg\n              width=\"20\"\n              height=\"60\"\n              viewBox=\"0 0 20 60\"\n              fill=\"none\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              style=\"color: white\"\n            >\n              <path\n                d=\"M4.6 4.5h10.8a.15.15 0 0 1 .097.03l.003.003v50.934l-.003.003a.15.15 0 0 1-.097.03H4.6a.15.15 0 0 1-.1-.033V4.533l.003-.003A.15.15 0 0 1 4.6 4.5Z\"\n                fill=\"currentColor\"\n                stroke=\"currentColor\"\n                style=\"fill-opacity: 0.07; stroke-opacity: 0.25\"\n              ></path>\n            </svg>\n            } @else{\n            <svg\n              width=\"20\"\n              height=\"20\"\n              viewBox=\"0 0 20 20\"\n              fill=\"none\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              style=\"color: #efeaea\"\n            >\n              <path\n                d=\"M4.5 4.6a.1.1 0 0 1 .1-.1h10.8a.1.1 0 0 1 .1.1v10.8a.1.1 0 0 1-.1.1H4.6a.1.1 0 0 1-.1-.1V4.6Z\"\n                fill=\"currentColor\"\n                stroke=\"currentColor\"\n                style=\"stroke-opacity: 0.25; fill-opacity: 0.07\"\n                class=\"hover:fill-opacity-20\"\n              ></path>\n            </svg>\n            }\n          </div>\n        </div>\n      </div>\n      }\n\n      <div\n        class=\"axp-grid-option-active ax-absolute ax-inset-0 ax-grid ax-pointer-events-none ax-transition-all\"\n        [style.justify-items]=\"clickedJustify()\"\n        [style.align-items]=\"clickedAlign()\"\n      >\n        <div class=\"ax-flex ax-justify-center ax-items-center ax-min-w-5 ax-min-h-5\">\n          <div class=\"ax-size-auto ax-z-[2] ax-rounded-lg ax-bg-[rgb(30,30,30)] ax-flex-none\">\n            @if(clickedJustify()==='stretch' && clickedAlign()==='stretch') {\n            <svg\n              width=\"60\"\n              height=\"60\"\n              viewBox=\"0 0 60 60\"\n              fill=\"none\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              style=\"color: white\"\n            >\n              <path\n                d=\"M55.5 55.48a.02.02 0 0 1-.02.02H4.52a.02.02 0 0 1-.02-.02V4.52a.02.02 0 0 1 .02-.02h50.96a.02.02 0 0 1 .02.02v50.96Z\"\n                fill=\"currentColor\"\n                stroke=\"currentColor\"\n                style=\"fill-opacity: 0.16; stroke: white\"\n              ></path>\n              <path\n                d=\"m26.354 20.354 3.146-3.147V29.5h-3v1h3v12.293l-3.146-3.147-.707.708L30 44.707l4.354-4.353-.707-.708-3.147 3.147V30.5h12.293l-3.147 3.147.708.707L44.707 30l-4.353-4.354-.708.708 3.147 3.146H30.5V17.207l3.146 3.147.707-.707L30 15.293l-4.354 4.354.707.707Z\"\n                fill=\"currentColor\"\n                style=\"fill-opacity: 0.25\"\n              ></path>\n              <path\n                d=\"m17.207 30.5 3.146 3.147-.707.707L15.293 30l4.353-4.354.707.708-3.146 3.146H26.5v1h-9.293Z\"\n                fill=\"currentColor\"\n                style=\"fill-opacity: 0.25\"\n              ></path>\n            </svg>\n            } @else if(clickedJustify()==='stretch'){\n            <svg\n              width=\"60\"\n              height=\"20\"\n              viewBox=\"0 0 60 20\"\n              fill=\"none\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              style=\"color: white\"\n            >\n              <path\n                d=\"M4.5 4.6a.15.15 0 0 1 .033-.1h50.934l.003.003a.15.15 0 0 1 .03.097v10.8a.15.15 0 0 1-.03.097l-.003.003H4.533l-.003-.003a.15.15 0 0 1-.03-.097V4.6Z\"\n                fill=\"currentColor\"\n                stroke=\"currentColor\"\n                style=\"fill-opacity: 0.16; stroke: white\"\n              ></path>\n            </svg>\n            } @else if(clickedAlign()==='stretch'){\n            <svg\n              width=\"20\"\n              height=\"60\"\n              viewBox=\"0 0 20 60\"\n              fill=\"none\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              style=\"color: white\"\n            >\n              <path\n                d=\"M4.6 4.5h10.8a.15.15 0 0 1 .097.03l.003.003v50.934l-.003.003a.15.15 0 0 1-.097.03H4.6a.15.15 0 0 1-.1-.033V4.533l.003-.003A.15.15 0 0 1 4.6 4.5Z\"\n                fill=\"currentColor\"\n                stroke=\"currentColor\"\n                style=\"fill-opacity: 0.16; stroke: white\"\n              ></path>\n            </svg>\n            } @else{\n            <svg\n              width=\"20\"\n              height=\"20\"\n              viewBox=\"0 0 20 20\"\n              fill=\"none\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              style=\"color: #efeaea\"\n            >\n              <path\n                d=\"M4.5 4.6a.1.1 0 0 1 .1-.1h10.8a.1.1 0 0 1 .1.1v10.8a.1.1 0 0 1-.1.1H4.6a.1.1 0 0 1-.1-.1V4.6Z\"\n                fill=\"currentColor\"\n                stroke=\"currentColor\"\n                style=\"fill: #cebcbc; fill-opacity: 0.16\"\n              ></path>\n            </svg>\n            }\n          </div>\n        </div>\n      </div>\n    </div>\n    <div class=\"ax-grid ax-grid-cols-[auto_1fr] ax-items-center ax-justify-items-start ax-gap-2\">\n      <span>X:</span>\n      <div class=\"ax-w-36\">\n        <ax-select-box\n          [dataSource]=\"justifyDataSource\"\n          [value]=\"selectedJustify()\"\n          (onValueChanged)=\"onJustifyChange($event)\"\n          textField=\"label\"\n          valueField=\"value\"\n          placeholder=\"Choose...\"\n        >\n        </ax-select-box>\n      </div>\n      <span>Y:</span>\n      <div class=\"ax-w-36\">\n        <ax-select-box\n          [dataSource]=\"alignDataSource\"\n          [value]=\"selectedAlign()\"\n          (onValueChanged)=\"onAlignChange($event)\"\n          textField=\"label\"\n          valueField=\"value\"\n          placeholder=\"Choose...\"\n        >\n        </ax-select-box>\n      </div>\n    </div>\n  </div>\n</div>\n","import { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\nexport const AXPAdvancedGridOptionsWidget: AXPWidgetConfig = {\n  name: 'advanced-grid-options',\n  title: 'Advanced Grid Options',\n  description: 'options of Advanced Grid',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  icon: 'fa-light fa-th',\n  type: 'editor',\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY],\n  components: {\n    edit: {\n      component: () =>\n        import('./advanced-grid-options-widget-editor.component').then(\n          (c) => c.AXPAdvancedGridOptionsWidgetEditComponent\n        ),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    advancedGridOptions: 'advanced-grid-options';\n  }\n}\n","export * from './advanced-grid-options-widget-editor.component';\nexport * from './advanced-grid-options-widget.config';\n// export * from './advanced-grid-options-widget.type';\n","import { AXPBorderBox, AXPSpacingBox } from '@acorex/platform/layout/widget-core';\n\n//#region ----   Units   ----\n\n/** Absolute CSS units (from curated list). */\nexport const AXP_ABSOLUTE_UNITS = ['px'] as const;\nexport type AXPAbsoluteUnit = (typeof AXP_ABSOLUTE_UNITS)[number];\n\n/** Relative CSS units (from curated list), includes percentage. */\nexport const AXP_RELATIVE_UNITS = [\n  'rem',\n  'em',\n  '%',\n  'vh',\n  'vw',\n  //  'vmin', 'vmax', 'ch', 'ex'\n] as const;\nexport type AXPRelativeUnit = (typeof AXP_RELATIVE_UNITS)[number];\n\n/** Relative units excluding percentage (useful where % is not allowed). */\nexport const AXP_RELATIVE_UNITS_NO_PERCENT = [\n  'rem',\n  'em',\n  'vh',\n  'vw',\n  // 'vmin', 'vmax', 'ch', 'ex'\n] as const;\nexport type AXPRelativeUnitNoPercent = (typeof AXP_RELATIVE_UNITS_NO_PERCENT)[number];\n\n/** Border radius accepts lengths and percentage. */\nexport const AXP_BORDER_RADIUS_UNITS = [...AXP_ABSOLUTE_UNITS, ...AXP_RELATIVE_UNITS] as const;\nexport type AXPBorderRadiusUnit = (typeof AXP_BORDER_RADIUS_UNITS)[number];\n\n/** Border width accepts only length units (no percentage). */\nexport const AXP_BORDER_WIDTH_UNITS = [...AXP_ABSOLUTE_UNITS, ...AXP_RELATIVE_UNITS_NO_PERCENT] as const;\nexport type AXPBorderWidthUnit = (typeof AXP_BORDER_WIDTH_UNITS)[number];\n\n/** Spacing (margin, padding) can accept lengths and percentage. */\nexport const AXP_SPACING_UNITS = [...AXP_ABSOLUTE_UNITS, ...AXP_RELATIVE_UNITS] as const;\nexport type AXPSpacingUnit = (typeof AXP_SPACING_UNITS)[number];\n\n//#endregion\n\nexport interface AXPSpacingBoxDefaultValues {\n  label: string;\n  value: number;\n  colspan?: number;\n  rowspan?: number;\n}\n\nexport const AXP_default_Border_Box_Value: AXPBorderBox<string | number> = {\n  width: { top: 1, left: 1, bottom: 1, right: 1 },\n  radius: { 'top-left': 0, 'top-right': 0, 'bottom-left': 0, 'bottom-right': 0 },\n  color: { top: '#000000', left: '#000000', bottom: '#000000', right: '#000000' },\n  style: { top: 'none', left: 'none', bottom: 'none', right: 'none' },\n};\n\nexport const AXP_default_Border_Box_Units: AXPBorderBox<string> = {\n  width: { top: 'px', left: 'px', bottom: 'px', right: 'px' },\n  radius: { 'top-left': 'px', 'top-right': 'px', 'bottom-left': 'px', 'bottom-right': 'px' },\n  color: { top: '', left: '', bottom: '', right: '' },\n  style: { top: '', left: '', bottom: '', right: '' },\n};\n\nexport const AXP_default_Spacing_Box_Value: AXPSpacingBox<number> = {\n  padding: { top: 0, left: 0, bottom: 0, right: 0 },\n  margin: { top: 0, left: 0, bottom: 0, right: 0 },\n};\n\nexport const AXP_default_Spacing_Box_Units: AXPSpacingBox<string> = {\n  padding: { top: 'px', left: 'px', bottom: 'px', right: 'px' },\n  margin: { top: 'px', left: 'px', bottom: 'px', right: 'px' },\n};\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXButtonGroupModule } from '@acorex/components/button-group';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXColorBoxModule } from '@acorex/components/color-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXNumberBoxModule } from '@acorex/components/number-box';\nimport { AXRangeSliderModule } from '@acorex/components/range-slider';\nimport {\n  AXPBorderBox,\n  AXPBorderBoxString,\n  AXPPropertyEditorCornerValues,\n  AXPPropertyEditorHelper,\n  AXPPropertyEditorSideValues,\n  AXPValueWidgetComponent,\n} from '@acorex/platform/layout/widget-core';\nimport {\n  afterNextRender,\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  ElementRef,\n  inject,\n  signal,\n  untracked,\n  viewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { cloneDeep } from 'lodash-es';\nimport {\n  AXP_BORDER_RADIUS_UNITS,\n  AXP_BORDER_WIDTH_UNITS,\n  AXP_default_Border_Box_Units,\n  AXP_default_Border_Box_Value,\n  AXPBorderRadiusUnit,\n  AXPBorderWidthUnit,\n} from '../property-editor.type';\n\n@Component({\n  selector: 'axp-border-widget-editor',\n  templateUrl: './border-widget-editor.component.html',\n  styleUrl: './border-widget-editor.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    AXNumberBoxModule,\n    FormsModule,\n    AXCheckBoxModule,\n    AXButtonModule,\n    AXDecoratorModule,\n    AXRangeSliderModule,\n    AXButtonGroupModule,\n    AXColorBoxModule,\n    AXDropdownButtonModule,\n  ],\n})\nexport class AXPBorderWidgetEditComponent extends AXPValueWidgetComponent<AXPBorderBoxString> {\n  private el = inject(ElementRef);\n\n  private allwidth = signal(1);\n  private allcolor = signal('rgba(0, 0, 0, 1)');\n  private allstyle = signal('none');\n  protected allRadius = signal(0);\n\n  private units = signal(cloneDeep(AXP_default_Border_Box_Units));\n\n  private lastRadius = signal<number | null>(null);\n\n  protected rendered = signal(false);\n\n  protected currentActiveSide = signal<AXPPropertyEditorSideValues | 'all'>('all');\n  protected currentActiveRadiusSide = signal<AXPPropertyEditorCornerValues | 'sides' | 'all'>('all');\n\n  private allBorderEl = viewChild<ElementRef<HTMLButtonElement>>('allBorderEl');\n  private allRadiusEl = viewChild<ElementRef<HTMLButtonElement>>('allRadiusEl');\n\n  private currentActiveBorderEl?: HTMLButtonElement;\n  private currentActiveRadiusEl?: HTMLButtonElement;\n\n  protected calculatedValues = signal(cloneDeep(AXP_default_Border_Box_Value));\n\n  protected setBorder(\n    value: number | [number, number] | string,\n    type: keyof AXPBorderBox,\n    side: AXPPropertyEditorCornerValues | AXPPropertyEditorSideValues | 'all',\n  ) {\n    if (!this.rendered()) {\n      return;\n    }\n\n    const currentValue = this.calculatedValues();\n\n    if (type === 'radius') {\n      // Clamp radius to [0,100] if unit is percentage\n      const clamp = (v: number) => Math.max(0, Math.min(100, v));\n      if (side === 'all') {\n        if (this.getRadiusUnit('all') === '%') {\n          value = clamp(value as number);\n        }\n      } else {\n        const unit = this.units().radius[side as AXPPropertyEditorCornerValues];\n        if (unit === '%') {\n          value = clamp(value as number);\n        }\n      }\n      this.lastRadius.set(value as number);\n    }\n\n    if (side === 'all') {\n      this.updateAllValues(type, value as number);\n      this.calculatedValues.set({\n        ...currentValue,\n        [type]: this.getUpdatedAllValues(type, value as number),\n      });\n    } else {\n      this.calculatedValues.set({\n        ...currentValue,\n        [type]: { ...currentValue[type], [side]: value },\n      });\n    }\n\n    const data = AXPPropertyEditorHelper.parseBorderBoxReverse(this.calculatedValues(), this.units());\n    this.setValue(cloneDeep(data));\n  }\n\n  private updateAllValues(type: keyof AXPBorderBox, value: number | string) {\n    if (type === 'width') this.allwidth.set(value as number);\n    if (type === 'color') this.allcolor.set(value as string);\n    if (type === 'radius') this.allRadius.set(value as number);\n    if (type === 'style') this.allstyle.set(value as string);\n  }\n\n  private getUpdatedAllValues(type: keyof AXPBorderBox, value: number | string): Record<string, number | string> {\n    if (type === 'radius') {\n      return { 'top-left': value, 'top-right': value, 'bottom-left': value, 'bottom-right': value };\n    } else {\n      return { top: value, left: value, bottom: value, right: value };\n    }\n  }\n\n  protected shownWidth = computed(() =>\n    this.currentActiveSide() === 'all'\n      ? this.allwidth()\n      : (this.calculatedValues().width[this.currentActiveSide() as AXPPropertyEditorSideValues] as number),\n  );\n\n  // protected shownRadius = computed(() => {\n  //   return this.currentActiveRadiusSide() === 'all'\n  //     ? this.allRadius()\n  //     : (this.calculatedValues().radius[this.currentActiveRadiusSide() as AXPPropertyEditorCornerValues] as number);\n  // });\n\n  protected shownColor = computed(() =>\n    this.currentActiveSide() === 'all'\n      ? this.allcolor()\n      : (this.calculatedValues().color[this.currentActiveSide() as AXPPropertyEditorSideValues] as string),\n  );\n\n  protected shownStyle = computed(() =>\n    this.currentActiveSide() === 'all'\n      ? this.allstyle()\n      : (this.calculatedValues().style[this.currentActiveSide() as AXPPropertyEditorSideValues] as string),\n  );\n\n  //#region ----   Unit Handlers   ----\n\n  /**\n   * Available units\n   */\n  protected readonly radiusUnits = AXP_BORDER_RADIUS_UNITS;\n  protected readonly widthUnits = AXP_BORDER_WIDTH_UNITS;\n\n  /**\n   * Returns the unit for the given radius side. For 'all', it detects a uniform unit; otherwise falls back to top-left.\n   */\n  protected getRadiusUnit(side: 'all' | AXPPropertyEditorCornerValues): string {\n    const units = this.units().radius;\n    if (side === 'all') {\n      const [first, ...rest] = Object.values(units);\n      const isUniform = rest.every((u) => u === first);\n      return (isUniform ? (first as string) : (units['top-left'] as string)) ?? 'px';\n    }\n    return (units[side] as string) ?? 'px';\n  }\n\n  /** Returns label text for the unit dropdown. */\n  protected getRadiusUnitLabel(side: 'all' | AXPPropertyEditorCornerValues): string {\n    return this.getRadiusUnit(side)?.toUpperCase();\n  }\n\n  /**\n   * Handles unit change for radius. When 'all' is targeted, applies the unit to all corners.\n   */\n  protected onRadiusUnitChange(unit: AXPBorderRadiusUnit, side: 'all' | AXPPropertyEditorCornerValues): void {\n    this.units.update((old) => {\n      if (side === 'all') {\n        return {\n          ...old,\n          radius: {\n            'top-left': unit,\n            'top-right': unit,\n            'bottom-left': unit,\n            'bottom-right': unit,\n          },\n        };\n      }\n      return {\n        ...old,\n        radius: {\n          ...old.radius,\n          [side]: unit,\n        },\n      };\n    });\n\n    const data = AXPPropertyEditorHelper.parseBorderBoxReverse(this.calculatedValues(), this.units());\n    this.setValue(cloneDeep(data));\n  }\n\n  /**\n   * Width unit helpers (not yet wired in template)\n   */\n  protected getWidthUnit(side: 'all' | AXPPropertyEditorSideValues): string {\n    const units = this.units().width;\n    if (side === 'all') {\n      const [first, ...rest] = Object.values(units);\n      const isUniform = rest.every((u) => u === first);\n      return (isUniform ? (first as string) : (units.top as string)) ?? 'px';\n    }\n    return (units[side] as string) ?? 'px';\n  }\n\n  protected getWidthUnitLabel(side: 'all' | AXPPropertyEditorSideValues): string {\n    return this.getWidthUnit(side)?.toUpperCase();\n  }\n\n  protected onWidthUnitChange(unit: AXPBorderWidthUnit, side: 'all' | AXPPropertyEditorSideValues): void {\n    this.units.update((old) => {\n      if (side === 'all') {\n        return {\n          ...old,\n          width: {\n            top: unit,\n            right: unit,\n            bottom: unit,\n            left: unit,\n          },\n        };\n      }\n      return {\n        ...old,\n        width: {\n          ...old.width,\n          [side]: unit,\n        },\n      };\n    });\n\n    const data = AXPPropertyEditorHelper.parseBorderBoxReverse(this.calculatedValues(), this.units());\n    this.setValue(cloneDeep(data));\n  }\n\n  //#endregion\n\n  protected handleActiveBorderSide(event: PointerEvent) {\n    event.stopPropagation();\n\n    if (this.currentActiveBorderEl) {\n      this.currentActiveBorderEl.style.backgroundColor = 'transparent';\n    }\n\n    this.currentActiveBorderEl = event.currentTarget as HTMLButtonElement;\n\n    const newActiveSide = this.currentActiveBorderEl.name as AXPPropertyEditorSideValues | 'all';\n    const previousActiveSide = this.currentActiveSide();\n\n    if (newActiveSide === 'all' && previousActiveSide !== 'all') {\n      const lastValues = this.calculatedValues();\n      const lastUnits = this.units();\n\n      const lastWidth = lastValues.width[previousActiveSide as AXPPropertyEditorSideValues] as number;\n      const lastColor = lastValues.color[previousActiveSide as AXPPropertyEditorSideValues] as string;\n      const lastStyle = lastValues.style[previousActiveSide as AXPPropertyEditorSideValues] as string;\n      const lastRadiusObject = lastValues.radius;\n\n      const lastWidthUnit = lastUnits.width[previousActiveSide as AXPPropertyEditorSideValues];\n      const lastColorUnit = lastUnits.color[previousActiveSide as AXPPropertyEditorSideValues];\n      const lastStyleUnit = lastUnits.style[previousActiveSide as AXPPropertyEditorSideValues];\n      const lastRadiusObjectUnit = lastUnits.radius;\n\n      this.allwidth.set(lastWidth);\n      this.allcolor.set(lastColor);\n      this.allstyle.set(lastStyle);\n\n      this.units.set({\n        width: this.createUniformValues(lastWidthUnit),\n        color: this.createUniformValues(lastColorUnit),\n        style: this.createUniformValues(lastStyleUnit),\n        radius: lastRadiusObjectUnit,\n      });\n\n      this.calculatedValues.set({\n        width: this.createUniformValues(lastWidth),\n        color: this.createUniformValues(lastColor),\n        style: this.createUniformValues(lastStyle),\n        radius: lastRadiusObject,\n      });\n\n      const data = AXPPropertyEditorHelper.parseBorderBoxReverse(this.calculatedValues(), this.units());\n      this.setValue(cloneDeep(data));\n    }\n\n    this.currentActiveSide.set(newActiveSide);\n\n    this.currentActiveBorderEl.style.backgroundColor = 'var(--focus-color)';\n  }\n\n  protected handleActiveRadiusSide(event: PointerEvent) {\n    event.stopPropagation();\n\n    if (this.currentActiveRadiusEl) {\n      this.currentActiveRadiusEl.style.backgroundColor = 'transparent';\n    }\n    this.currentActiveRadiusEl = event.currentTarget as HTMLButtonElement;\n    const newActiveRadiusSide = this.currentActiveRadiusEl.name as 'sides' | 'all';\n    if (newActiveRadiusSide === 'all' && this.lastRadius() !== null) {\n      this.calculatedValues.update((old) => ({\n        ...old,\n        radius: {\n          'bottom-left': this.lastRadius()!,\n          'bottom-right': this.lastRadius()!,\n          'top-left': this.lastRadius()!,\n          'top-right': this.lastRadius()!,\n        },\n      }));\n      this.allRadius.set(this.lastRadius()!);\n      const data = AXPPropertyEditorHelper.parseBorderBoxReverse(this.calculatedValues(), this.units());\n      this.setValue(cloneDeep(data));\n    }\n\n    this.currentActiveRadiusSide.set(newActiveRadiusSide);\n    this.currentActiveRadiusEl.style.backgroundColor = 'var(--focus-color)';\n  }\n\n  af = afterNextRender(() => {\n    const currentValue = this.getValue();\n    untracked(() => {\n      // Clear any active elements first\n      if (this.currentActiveBorderEl) {\n        this.currentActiveBorderEl.style.backgroundColor = 'transparent';\n        this.currentActiveBorderEl = undefined;\n      }\n      if (this.currentActiveRadiusEl) {\n        this.currentActiveRadiusEl.style.backgroundColor = 'transparent';\n        this.currentActiveRadiusEl = undefined;\n      }\n\n      // Reset active sides\n      this.currentActiveSide.set('all');\n      this.currentActiveRadiusSide.set('all');\n\n      if (currentValue) {\n        this.calculatedValues.set(AXPPropertyEditorHelper.parseBorderBox(cloneDeep(currentValue)));\n        this.initializeBorder();\n        this.initializeRadius();\n      }\n      if (!this.rendered()) {\n        this.rendered.set(true);\n      }\n    });\n  });\n\n  private initializeBorder(): void {\n    const widthValue = this.calculatedValues().width;\n    const widthColor = this.calculatedValues().color;\n    const widthStyle = this.calculatedValues().style;\n\n    const [firstWidthValue, ...restWidthValues] = Object.values(widthValue);\n    const [firstColorValue, ...restColorValues] = Object.values(widthColor);\n    const [firstStyleValue, ...restStyleValues] = Object.values(widthStyle);\n\n    if (\n      restWidthValues.every((value) => value === firstWidthValue) &&\n      restColorValues.every((value) => value === firstColorValue) &&\n      restStyleValues.every((value) => value === firstStyleValue)\n    ) {\n      this.allcolor.set(firstColorValue as string);\n      this.allstyle.set(firstStyleValue as string);\n      this.allwidth.set(firstWidthValue as number);\n      this.currentActiveSide.set('all');\n      this.currentActiveBorderEl = this.allBorderEl()?.nativeElement;\n      if (this.currentActiveBorderEl) {\n        this.currentActiveBorderEl.style.backgroundColor = 'var(--focus-color)';\n      }\n    } else {\n      const currentActive = this.currentActiveSide();\n\n      // First, check if the currently active side still has values\n      if (currentActive !== 'all' && widthValue[currentActive]) {\n        // Just update the focus color, don't change the active side\n        const element = (this.el.nativeElement as HTMLElement).querySelector<HTMLButtonElement>(\n          `button[name=\"${currentActive}\"]`,\n        );\n        if (element) {\n          this.currentActiveBorderEl = element;\n          element.style.backgroundColor = 'var(--focus-color)';\n        }\n      } else {\n        // Find the first side with non-'none' style, or fallback to width\n        const sides: AXPPropertyEditorSideValues[] = ['top', 'right', 'bottom', 'left'];\n\n        // First try to find a side with non-'none' style\n        let foundSide: AXPPropertyEditorSideValues | null = null;\n        for (const side of sides) {\n          if (widthStyle[side] !== 'none') {\n            foundSide = side;\n            break;\n          }\n        }\n\n        // If no non-'none' style found, fallback to first side with width\n        if (!foundSide) {\n          for (const side of sides) {\n            if (widthValue[side]) {\n              foundSide = side;\n              break;\n            }\n          }\n        }\n\n        if (foundSide) {\n          this.currentActiveSide.set(foundSide);\n          const element = (this.el.nativeElement as HTMLElement).querySelector<HTMLButtonElement>(\n            `button[name=\"${foundSide}\"]`,\n          );\n          if (element) {\n            this.currentActiveBorderEl = element;\n            element.style.backgroundColor = 'var(--focus-color)';\n          }\n        }\n      }\n    }\n  }\n\n  private initializeRadius(): void {\n    const values = this.calculatedValues().radius;\n    const [firstValue, ...restValues] = Object.values(values);\n\n    if (restValues.every((value) => value === firstValue)) {\n      this.currentActiveRadiusSide.set('all');\n      this.currentActiveRadiusEl = this.allRadiusEl()?.nativeElement;\n      if (this.currentActiveRadiusEl) {\n        this.currentActiveRadiusEl.style.backgroundColor = 'var(--focus-color)';\n        this.allRadius.set(firstValue as number);\n      }\n    } else {\n      const element = (this.el.nativeElement as HTMLElement).querySelector<HTMLButtonElement>(`button[name=\"sides\"]`);\n      if (element) {\n        this.currentActiveRadiusSide.set('sides');\n        this.currentActiveRadiusEl = element;\n        element.style.backgroundColor = 'var(--focus-color)';\n      }\n    }\n  }\n\n  private createUniformValues<T>(value: T): Record<AXPPropertyEditorSideValues, T> {\n    return {\n      top: value,\n      right: value,\n      bottom: value,\n      left: value,\n    };\n  }\n}\n","<div class=\"ax-pt-2 axp-border-container\">\n  <div class=\"ax-radius-box ax-flex ax-justify-between ax-items-center ax-gap-2 ax-h-[26px]\">\n    <span class=\"ax-text-sm ax-font-light\">Radius</span>\n    <div class=\"ax-flex ax-gap-1 ax-items-center\">\n      <button\n        #allRadiusEl\n        (pointerdown)=\"handleActiveRadiusSide($event)\"\n        name=\"all\"\n        class=\"ax-p-1 hover:!ax-bg-[var(--hover-effect)]\"\n      >\n        <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <path\n            d=\"M2.5 5.5C2.5 3.84315 3.84315 2.5 5.5 2.5H10.5C12.1569 2.5 13.5 3.84315 13.5 5.5V10.5C13.5 12.1569 12.1569 13.5 10.5 13.5H5.5C3.84315 13.5 2.5 12.1569 2.5 10.5V5.5Z\"\n            stroke=\"currentColor\"\n          ></path>\n        </svg>\n      </button>\n\n      <button\n        (pointerdown)=\"handleActiveRadiusSide($event)\"\n        name=\"sides\"\n        class=\"ax-p-1 hover:!ax-bg-[var(--hover-effect)]\"\n      >\n        <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <path\n            d=\"M4.5 2C3.11929 2 2 3.11929 2 4.5V7H3V4.5C3 3.67157 3.67157 3 4.5 3H7V2H4.5Z\"\n            fill=\"currentColor\"\n          ></path>\n          <path\n            d=\"M9 2V3H11.5C12.3284 3 13 3.67157 13 4.5V7H14V4.5C14 3.11929 12.8807 2 11.5 2H9Z\"\n            fill=\"currentColor\"\n          ></path>\n          <path\n            d=\"M14 9H13V11.5C13 12.3284 12.3284 13 11.5 13H9V14H11.5C12.8807 14 14 12.8807 14 11.5V9Z\"\n            fill=\"currentColor\"\n          ></path>\n          <path\n            d=\"M7 14V13H4.5C3.67157 13 3 12.3284 3 11.5V9H2V11.5C2 12.8807 3.11929 14 4.5 14H7Z\"\n            fill=\"currentColor\"\n          ></path>\n        </svg>\n      </button>\n\n      @if (currentActiveRadiusSide() === 'all') {\n        <div class=\"ax-flex ax-justify-center ax-items-center ax-flex-shrink\">\n          <ax-range-slider\n            [values]=\"allRadius()\"\n            [min]=\"0\"\n            [max]=\"100\"\n            (valuesChange)=\"setBorder($event ?? 0, 'radius', 'all')\"\n            class=\"ax-min-w-24\"\n          ></ax-range-slider>\n        </div>\n        <div class=\"ax-flex ax-justify-start ax-items-center\">\n          <ax-number-box\n            [minValue]=\"0\"\n            [maxValue]=\"100\"\n            [value]=\"allRadius()\"\n            [changeOnScroll]=\"true\"\n            (valueChange)=\"setBorder($event ?? 0, 'radius', 'all')\"\n            class=\"ax-min-w-[4.5rem] ax-sm\"\n            [showSpinButtons]=\"false\"\n            ><ax-suffix>\n              <ax-dropdown-button [text]=\"getRadiusUnitLabel('all')\" [look]=\"'blank'\" [mode]=\"'dropdown'\">\n                <ax-button-item-list>\n                  @for (u of radiusUnits; track $index) {\n                    <ax-button-item\n                      [text]=\"u.toUpperCase()\"\n                      [selected]=\"getRadiusUnit('all') === u\"\n                      (onClick)=\"onRadiusUnitChange(u, 'all')\"\n                    ></ax-button-item>\n                  }\n                </ax-button-item-list>\n              </ax-dropdown-button> </ax-suffix\n          ></ax-number-box>\n        </div>\n      } @else {\n        <div class=\"ax-w-48\"></div>\n      }\n    </div>\n  </div>\n\n  <div\n    class=\"axp-border-radius-sides ax-flex ax-justify-end ax-items-center ax-overflow-y-hidden ax-transition-[height] ax-duration-300 ax-ease-in-out\"\n    [class]=\"currentActiveRadiusSide() === 'all' ? '!ax-h-0' : '!ax-h-auto'\"\n    style=\"interpolate-size: allow-keywords\"\n  >\n    <div class=\"ax-grid ax-grid-cols-2 ax-grid-rows-2 ax-gap-2\">\n      <div class=\"ax-flex ax-gap-1 ax-items-center\">\n        <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <g opacity=\"0.4\">\n            <path d=\"M14 14V9H13V13H9V14H14Z\" fill=\"currentColor\"></path>\n            <path d=\"M7 14V13H3V9H2V14H7Z\" fill=\"currentColor\"></path>\n            <path d=\"M2 7H3V6.5C3 4.567 4.567 3 6.5 3H7V2H6.5C4.01472 2 2 4.01472 2 6.5V7Z\" fill=\"currentColor\"></path>\n            <path d=\"M9 2V3H13V7H14V2H9Z\" fill=\"currentColor\"></path>\n          </g>\n          <path d=\"M2.5 7V6.5C2.5 4.29086 4.29086 2.5 6.5 2.5H7\" stroke=\"currentColor\"></path>\n        </svg>\n        <div class=\"ax-flex ax-justify-start ax-items-center ax-max-w-24\">\n          <ax-number-box\n            class=\"ax-sm\"\n            [minValue]=\"0\"\n            [changeOnScroll]=\"true\"\n            [ngModel]=\"calculatedValues().radius['top-left']\"\n            (onValueChanged)=\"setBorder($event.value ?? 0, 'radius', 'top-left')\"\n            [showSpinButtons]=\"false\"\n            ><ax-suffix>\n              <ax-dropdown-button [text]=\"getRadiusUnitLabel('top-left')\" [look]=\"'blank'\" [mode]=\"'dropdown'\">\n                <ax-button-item-list>\n                  @for (u of radiusUnits; track $index) {\n                    <ax-button-item\n                      [text]=\"u.toUpperCase()\"\n                      [selected]=\"getRadiusUnit('top-left') === u\"\n                      (onClick)=\"onRadiusUnitChange(u, 'top-left')\"\n                    ></ax-button-item>\n                  }\n                </ax-button-item-list>\n              </ax-dropdown-button> </ax-suffix\n          ></ax-number-box>\n        </div>\n      </div>\n      <div class=\"ax-flex ax-gap-1 ax-items-center\">\n        <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <g opacity=\"0.4\">\n            <path d=\"M2 14V9H3V13H7V14H2Z\" fill=\"currentColor\"></path>\n            <path d=\"M9 14V13H13V9H14V14H9Z\" fill=\"currentColor\"></path>\n            <path\n              d=\"M14 7H13V6.5C13 4.567 11.433 3 9.5 3H9V2H9.5C11.9853 2 14 4.01472 14 6.5V7Z\"\n              fill=\"currentColor\"\n            ></path>\n            <path d=\"M7 2V3H3V7H2V2H7Z\" fill=\"currentColor\"></path>\n          </g>\n          <path d=\"M13.5 7V6.5C13.5 4.29086 11.7091 2.5 9.5 2.5H9\" stroke=\"currentColor\"></path>\n        </svg>\n        <div class=\"ax-flex ax-justify-start ax-items-center ax-max-w-24\">\n          <ax-number-box\n            class=\"ax-sm\"\n            [minValue]=\"0\"\n            [changeOnScroll]=\"true\"\n            [ngModel]=\"calculatedValues().radius['top-right']\"\n            (onValueChanged)=\"setBorder($event.value ?? 0, 'radius', 'top-right')\"\n            [showSpinButtons]=\"false\"\n            ><ax-suffix>\n              <ax-dropdown-button [text]=\"getRadiusUnitLabel('top-right')\" [look]=\"'blank'\" [mode]=\"'dropdown'\">\n                <ax-button-item-list>\n                  @for (u of radiusUnits; track $index) {\n                    <ax-button-item\n                      [text]=\"u.toUpperCase()\"\n                      [selected]=\"getRadiusUnit('top-right') === u\"\n                      (onClick)=\"onRadiusUnitChange(u, 'top-right')\"\n                    ></ax-button-item>\n                  }\n                </ax-button-item-list>\n              </ax-dropdown-button> </ax-suffix\n          ></ax-number-box>\n        </div>\n      </div>\n      <div class=\"ax-flex ax-gap-1 ax-items-center\">\n        <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <g opacity=\"0.4\">\n            <path d=\"M2 2V7H3V3H7V2H2Z\" fill=\"currentColor\"></path>\n            <path d=\"M9 2V3H13V7H14V2H9Z\" fill=\"currentColor\"></path>\n            <path d=\"M14 9H13V13H9V14H14V9Z\" fill=\"currentColor\"></path>\n            <path\n              d=\"M7 14V13H6.5C4.567 13 3 11.433 3 9.5V9H2V9.5C2 11.9853 4.01472 14 6.5 14H7Z\"\n              fill=\"currentColor\"\n            ></path>\n          </g>\n          <path d=\"M2.5 9V9.5C2.5 11.7091 4.29086 13.5 6.5 13.5H7\" stroke=\"currentColor\"></path>\n        </svg>\n        <div class=\"ax-flex ax-justify-start ax-items-center ax-max-w-24\">\n          <ax-number-box\n            class=\"ax-sm\"\n            [minValue]=\"0\"\n            [changeOnScroll]=\"true\"\n            [ngModel]=\"calculatedValues().radius['bottom-left']\"\n            (onValueChanged)=\"setBorder($event.value ?? 0, 'radius', 'bottom-left')\"\n            [showSpinButtons]=\"false\"\n            ><ax-suffix>\n              <ax-dropdown-button [text]=\"getRadiusUnitLabel('bottom-left')\" [look]=\"'blank'\" [mode]=\"'dropdown'\">\n                <ax-button-item-list>\n                  @for (u of radiusUnits; track $index) {\n                    <ax-button-item\n                      [text]=\"u.toUpperCase()\"\n                      [selected]=\"getRadiusUnit('bottom-left') === u\"\n                      (onClick)=\"onRadiusUnitChange(u, 'bottom-left')\"\n                    ></ax-button-item>\n                  }\n                </ax-button-item-list>\n              </ax-dropdown-button> </ax-suffix\n          ></ax-number-box>\n        </div>\n      </div>\n      <div class=\"ax-flex ax-gap-1 ax-items-center\">\n        <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <g opacity=\"0.4\">\n            <path d=\"M2 2V7H3V3H7V2H2Z\" fill=\"currentColor\"></path>\n            <path d=\"M9 2V3H13V7H14V2H9Z\" fill=\"currentColor\"></path>\n            <path\n              d=\"M14 9H13V11.5C13 12.3284 12.3284 13 11.5 13H9V14H11.5C12.8807 14 14 12.8807 14 11.5V9Z\"\n              fill=\"currentColor\"\n            ></path>\n            <path d=\"M7 14V13H3V9H2V14H7Z\" fill=\"currentColor\"></path>\n          </g>\n          <path d=\"M13.5 9V9.5C13.5 11.7091 11.7091 13.5 9.5 13.5H9\" stroke=\"currentColor\"></path>\n        </svg>\n        <div class=\"ax-flex ax-justify-start ax-items-center ax-max-w-24\">\n          <ax-number-box\n            class=\"ax-sm\"\n            [minValue]=\"0\"\n            [changeOnScroll]=\"true\"\n            [ngModel]=\"calculatedValues().radius['bottom-right']\"\n            (onValueChanged)=\"setBorder($event.value ?? 0, 'radius', 'bottom-right')\"\n            [showSpinButtons]=\"false\"\n            ><ax-suffix>\n              <ax-dropdown-button [text]=\"getRadiusUnitLabel('bottom-right')\" [look]=\"'blank'\" [mode]=\"'dropdown'\">\n                <ax-button-item-list>\n                  @for (u of radiusUnits; track $index) {\n                    <ax-button-item\n                      [text]=\"u.toUpperCase()\"\n                      [selected]=\"getRadiusUnit('bottom-right') === u\"\n                      (onClick)=\"onRadiusUnitChange(u, 'bottom-right')\"\n                    ></ax-button-item>\n                  }\n                </ax-button-item-list>\n              </ax-dropdown-button> </ax-suffix\n          ></ax-number-box>\n        </div>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"ax-flex ax-justify-between ax-items-center ax-py-1\">\n    <span class=\"ax-text-sm ax-font-light\">Borders</span>\n  </div>\n\n  <div class=\"ax-border-box ax-flex ax-justify-between ax-items-center ax-gap-4\">\n    <div class=\"ax-grid ax-grid-cols-3 ax-grid-rows-3 ax-gap-1 ax-flex-shrink-0\">\n      <!-- Top Border -->\n      <div class=\"ax-border-box-top ax-col-start-2 ax-row-start-1\">\n        <button\n          (pointerdown)=\"handleActiveBorderSide($event)\"\n          name=\"top\"\n          class=\"ax-p-1 hover:!ax-bg-[var(--hover-effect)]\"\n        >\n          <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path\n              opacity=\"0.4\"\n              fill-rule=\"evenodd\"\n              clip-rule=\"evenodd\"\n              d=\"M2 13C2 13.5523 2.44772 14 3 14H13C13.5523 14 14 13.5523 14 13V5H13V13H3V5H2V13Z\"\n              fill=\"currentColor\"\n            ></path>\n            <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M2 3H14V2H2V3Z\" fill=\"currentColor\"></path>\n          </svg>\n        </button>\n      </div>\n\n      <!-- Right Border -->\n      <div class=\"ax-border-box-right ax-col-start-3 ax-row-start-2\">\n        <button\n          (pointerdown)=\"handleActiveBorderSide($event)\"\n          name=\"right\"\n          class=\"ax-p-1 hover:!ax-bg-[var(--hover-effect)]\"\n        >\n          <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path\n              opacity=\"0.4\"\n              fill-rule=\"evenodd\"\n              clip-rule=\"evenodd\"\n              d=\"M3 2C2.44772 2 2 2.44772 2 3L2 13C2 13.5523 2.44772 14 3 14L11 14L11 13L3 13L3 3L11 3L11 2L3 2Z\"\n              fill=\"currentColor\"\n            ></path>\n            <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M13 2L13 14L14 14L14 2L13 2Z\" fill=\"currentColor\"></path>\n          </svg>\n        </button>\n      </div>\n\n      <!-- Bottom Border -->\n      <div class=\"ax-border-box-bottom ax-col-start-2 ax-row-start-3\">\n        <button\n          (pointerdown)=\"handleActiveBorderSide($event)\"\n          name=\"bottom\"\n          class=\"ax-p-1 hover:!ax-bg-[var(--hover-effect)]\"\n        >\n          <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path\n              opacity=\"0.4\"\n              fill-rule=\"evenodd\"\n              clip-rule=\"evenodd\"\n              d=\"M2 3C2 2.44772 2.44772 2 3 2H13C13.5523 2 14 2.44772 14 3V11H13V3H3V11H2V3Z\"\n              fill=\"currentColor\"\n            ></path>\n            <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M2 13H14V14H2V13Z\" fill=\"currentColor\"></path>\n          </svg>\n        </button>\n      </div>\n\n      <!-- Left Border -->\n      <div class=\"ax-border-box-left ax-col-start-1 ax-row-start-2\">\n        <button\n          (pointerdown)=\"handleActiveBorderSide($event)\"\n          name=\"left\"\n          class=\"ax-p-1 hover:!ax-bg-[var(--hover-effect)]\"\n        >\n          <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path\n              opacity=\"0.4\"\n              fill-rule=\"evenodd\"\n              clip-rule=\"evenodd\"\n              d=\"M13 2C13.5523 2 14 2.44772 14 3L14 13C14 13.5523 13.5523 14 13 14L5 14L5 13L13 13L13 3L5 3L5 2L13 2Z\"\n              fill=\"currentColor\"\n            ></path>\n            <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3 2L3 14L2 14L2 2L3 2Z\" fill=\"currentColor\"></path>\n          </svg>\n        </button>\n      </div>\n\n      <!-- All -->\n      <div class=\"ax-border-box-all ax-col-start-2 ax-row-start-2\">\n        <button\n          #allBorderEl\n          (pointerdown)=\"handleActiveBorderSide($event)\"\n          name=\"all\"\n          class=\"ax-p-1 hover:!ax-bg-[var(--hover-effect)]\"\n        >\n          <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path\n              fill-rule=\"evenodd\"\n              clip-rule=\"evenodd\"\n              d=\"M2 3C2 2.44772 2.44772 2 3 2H13C13.5523 2 14 2.44772 14 3V13C14 13.5523 13.5523 14 13 14H3C2.44772 14 2 13.5523 2 13V3ZM13 3L3 3V13H13V3Z\"\n              fill=\"currentColor\"\n            ></path>\n          </svg>\n        </button>\n      </div>\n    </div>\n    <div class=\"ax-grid ax-grid-cols-[auto_1fr] ax-items-center ax-justify-items-center ax-gap-x-2 ax-gap-y-2\">\n      <div class=\"ax-text-sm ax-font-light\">Style</div>\n      <ax-button-group class=\"ax-sm\" [selection]=\"'single'\">\n        <ax-button-group-item\n          (onClick)=\"setBorder('none', 'style', currentActiveSide())\"\n          [selected]=\"shownStyle() === 'none'\"\n          ><ax-prefix\n            ><svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n              <path\n                fill-rule=\"evenodd\"\n                clip-rule=\"evenodd\"\n                d=\"M8.70714 8.00004L12.3536 4.35359L11.6465 3.64648L8.00004 7.29293L4.35359 3.64648L3.64648 4.35359L7.29293 8.00004L3.64648 11.6465L4.35359 12.3536L8.00004 8.70714L11.6465 12.3536L12.3536 11.6465L8.70714 8.00004Z\"\n                fill=\"currentColor\"\n              ></path></svg></ax-prefix\n        ></ax-button-group-item>\n        <ax-button-group-item\n          (onClick)=\"setBorder('solid', 'style', currentActiveSide())\"\n          [selected]=\"shownStyle() === 'solid'\"\n          ><ax-prefix\n            ><svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n              <path d=\"M2 7.5H14\" stroke=\"currentColor\"></path></svg></ax-prefix\n        ></ax-button-group-item>\n        <ax-button-group-item\n          (onClick)=\"setBorder('dashed', 'style', currentActiveSide())\"\n          [selected]=\"shownStyle() === 'dashed'\"\n          ><ax-prefix\n            ><svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n              <path\n                fill-rule=\"evenodd\"\n                clip-rule=\"evenodd\"\n                d=\"M5 7H2V8H5V7ZM11 8H12H14V7H12H11V8ZM9.5 7H6.5V8H9.5V7Z\"\n                fill=\"currentColor\"\n              ></path></svg></ax-prefix\n        ></ax-button-group-item>\n        <ax-button-group-item\n          (onClick)=\"setBorder('dotted', 'style', currentActiveSide())\"\n          [selected]=\"shownStyle() === 'dotted'\"\n          ><ax-prefix\n            ><svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n              <path\n                fill-rule=\"evenodd\"\n                clip-rule=\"evenodd\"\n                d=\"M4 7H3V8H4V7ZM6 7H5V8H6V7ZM7 7H8V8H7V7ZM10 7H9V8H10V7ZM11 7H12V8H11V7ZM14 7H13V8H14V7Z\"\n                fill=\"currentColor\"\n              ></path></svg></ax-prefix\n        ></ax-button-group-item>\n      </ax-button-group>\n      <div class=\"ax-contents\" [class]=\"shownStyle() === 'none' ? 'ax-invisible' : 'ax-visible'\">\n        <div class=\"ax-text-sm ax-font-light\">Width</div>\n        <div class=\"ax-flex ax-justify-start ax-items-center ax-max-w-36\">\n          <ax-number-box\n            [minValue]=\"0\"\n            [changeOnScroll]=\"true\"\n            [value]=\"shownWidth()\"\n            (onValueChanged)=\"setBorder($event.value ?? 0, 'width', currentActiveSide())\"\n            class=\"ax-sm ax-exclude\"\n            [showSpinButtons]=\"false\"\n            ><ax-suffix>\n              <ax-dropdown-button [text]=\"getWidthUnitLabel(currentActiveSide())\" [look]=\"'blank'\" [mode]=\"'dropdown'\">\n                <ax-button-item-list>\n                  @for (u of widthUnits; track $index) {\n                    <ax-button-item\n                      [text]=\"u.toUpperCase()\"\n                      [selected]=\"getWidthUnit(currentActiveSide()) === u\"\n                      (onClick)=\"onWidthUnitChange(u, currentActiveSide())\"\n                    ></ax-button-item>\n                  }\n                </ax-button-item-list>\n              </ax-dropdown-button> </ax-suffix\n          ></ax-number-box>\n        </div>\n\n        <div class=\"ax-text-sm ax-font-light\">Color</div>\n        <div class=\"ax-flex ax-justify-start ax-items-center ax-max-w-36 ax-overflow-hidden\">\n          <ax-color-box\n            class=\"ax-sm\"\n            [value]=\"shownColor()\"\n            (onValueChanged)=\"setBorder($event.value ?? '', 'color', currentActiveSide())\"\n          ></ax-color-box>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n","import { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\nexport const AXPBorderWidget: AXPWidgetConfig = {\n  name: 'border',\n  title: 'Box Border',\n  description: 'Editing Elements Border',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  icon: 'fa-light fa-border',\n  type: 'editor',\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY],\n  components: {\n    edit: {\n      component: () => import('./border-widget-editor.component').then((c) => c.AXPBorderWidgetEditComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    border: 'border';\n  }\n}\n","import { AXDropListDroppedEvent, moveItemInArray } from '@acorex/cdk/drag-drop';\nimport { AXDataSource, AXValueChangedEvent, convertArrayToDataSource } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXSelectionListModule } from '@acorex/components/selection-list';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPFilterDefinition } from '@acorex/platform/contracts';\nimport { applyQueryArray, AXPDataSourceDefinitionProviderService } from '@acorex/platform/core';\n\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXPRepeaterRowsLayoutComponent } from '@acorex/platform/layout/components';\nimport { AXPLayoutBuilderService, IActionBuilder } from '@acorex/platform/layout/builder';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { AsyncPipe } from '@angular/common';\nimport { afterNextRender, ChangeDetectionStrategy, Component, computed, inject, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport type { AXPDataSourceDefinition } from '@acorex/platform/core';\nimport type { AXPDataSourceOptionsValue, DataSourceMode } from './data-source-options-widget.type';\n\nconst DATA_SOURCE_OPTIONS_I18N = {\n  source: '@general:widgets.data-source-options.source',\n  modeExists: '@general:widgets.data-source-options.mode.exists',\n  modeList: '@general:widgets.data-source-options.mode.list',\n  dataSource: '@general:widgets.data-source-options.data-source',\n  dataSourcePlaceholder: '@general:widgets.data-source-options.data-source-placeholder',\n  listItems: '@general:widgets.data-source-options.list-items',\n  addListItem: '@general:widgets.data-source-options.add-list-item',\n  valueField: '@general:widgets.data-source-options.value-field',\n  valueFieldPlaceholder: '@general:widgets.data-source-options.value-field-placeholder',\n  valueFieldPlaceholderDisabled: '@general:widgets.data-source-options.value-field-placeholder-disabled',\n  textField: '@general:widgets.data-source-options.text-field',\n  textFieldPlaceholder: '@general:widgets.data-source-options.text-field-placeholder',\n  textFieldPlaceholderDisabled: '@general:widgets.data-source-options.text-field-placeholder-disabled',\n  filters: '@general:widgets.data-source-options.filters',\n  filtersButtonEmpty: '@general:widgets.data-source-options.filters-button-empty',\n  filtersButtonWithCount: '@general:widgets.data-source-options.filters-button-with-count',\n  filtersModalTitle: '@general:widgets.data-source-options.filters-modal-title',\n} as const;\n\n//#region ---- Component ----\n\n@Component({\n  selector: 'axp-data-source-options-widget-editor',\n  templateUrl: './data-source-options-widget-editor.component.html',\n  styleUrl: './data-source-options-widget-editor.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    AsyncPipe,\n    AXButtonModule,\n    AXDecoratorModule,\n    AXSearchBoxModule,\n    AXSelectBoxModule,\n    AXSelectionListModule,\n    AXTranslationModule,\n    AXTextBoxModule,\n    AXPRepeaterRowsLayoutComponent,\n    FormsModule,\n  ],\n})\nexport class AXPDataSourceOptionsWidgetEditComponent extends AXPValueWidgetComponent<Record<string, unknown>> {\n  protected readonly I18N = DATA_SOURCE_OPTIONS_I18N;\n\n  //#region ---- Services ----\n\n  private readonly dataSourceDefinitionService = inject(AXPDataSourceDefinitionProviderService);\n  private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n  private readonly popupService = inject(AXPopupService);\n  private readonly translationService = inject(AXTranslationService);\n\n  //#endregion\n\n  //#region ---- State ----\n\n  private readonly rendered = signal(false);\n\n  /** 'exists' = registered definition, 'list' = simple text rows. */\n  protected readonly dataSourceMode = signal<DataSourceMode>('exists');\n\n  /** Editable text rows for list mode (each row persists as value + text). */\n  protected readonly listEntries = signal<string[]>(['']);\n\n  protected readonly definitions = signal<AXPDataSourceDefinition[]>([]);\n  protected readonly selectedDefinition = signal<AXPDataSourceDefinition | null>(null);\n\n  /** Options for valueField select (from definition columns + valueField) */\n  protected readonly valueFieldOptions = signal<{ value: string; text: string }[]>([]);\n  /** Options for textField select (from definition columns + textField) */\n  protected readonly textFieldOptions = signal<{ value: string; text: string }[]>([]);\n\n  //#endregion\n\n  //#region ---- DataSources for selects ----\n\n  protected readonly definitionsDataSource = new AXDataSource<AXPDataSourceDefinition>({\n    pageSize: 99,\n    load: async (query) => {\n      const allItems = await this.dataSourceDefinitionService.items();\n      this.definitions.set(allItems);\n      return applyQueryArray(allItems, query);\n    },\n    byKey: async (key: unknown) => {\n      const name = String(key);\n      const items = this.definitions().length ? this.definitions() : await this.dataSourceDefinitionService.items();\n      if (!this.definitions().length) {\n        this.definitions.set(items);\n      }\n      const item = items.find((d) => d.name === name);\n      if (!item) {\n        throw new Error(`Data source definition not found: ${name}`);\n      }\n      return item;\n    },\n  });\n\n  protected readonly valueFieldDataSource = computed(() =>\n    convertArrayToDataSource(this.valueFieldOptions(), { key: 'value', pageSize: 99 })\n  );\n\n  protected readonly textFieldDataSource = computed(() =>\n    convertArrayToDataSource(this.textFieldOptions(), { key: 'value', pageSize: 99 })\n  );\n\n  /** Mode options for selection list (translated in init). */\n  protected readonly modeItems = signal<{ value: DataSourceMode; text: string }[]>([]);\n\n  /**\n   * Toggled to force value/text field select-boxes to re-render when dataSource changes\n   * (workaround for ax-select-box dropdown height going to 0 when data-source changes).\n   */\n  protected readonly fieldSelectsKey = signal(true);\n\n  /** Whether value/text field selects should be disabled (no data source selected in 'exists' mode). */\n  protected readonly valueTextFieldDisabled = computed(\n    () => this.dataSourceMode() === 'exists' && this.selectedDefinition() === null\n  );\n\n  /** Number of filters that have a non-empty value (for empty vs non-empty button text). */\n  protected readonly filterCount = computed(() => {\n    const def = this.selectedDefinition();\n    const filterDefs = def?.filters ?? [];\n    const currentFilters = (this.getValue()?.['filters'] as Record<string, unknown>) ?? {};\n    let count = 0;\n    filterDefs.forEach((f, i) => {\n      const key = f.id ?? f.field ?? this.slugFilterTitle(f.title ?? '') ?? `filter_${i}`;\n      const v = currentFilters[key];\n      const str = typeof v === 'string' ? v : v != null ? String(v) : '';\n      if (str.trim().length > 0) count += 1;\n    });\n    return count;\n  });\n\n  //#endregion\n\n  //#region ---- UI Handlers ----\n\n  protected setDataSourceMode(mode: DataSourceMode): void {\n    this.dataSourceMode.set(mode);\n    this.selectedDefinition.set(null);\n    this.valueFieldOptions.set([]);\n    this.textFieldOptions.set([]);\n    this.revalidateFieldSelects();\n\n    if (mode === 'exists') {\n      this.saveValue({\n        dataSource: undefined,\n        valueField: undefined,\n        textField: undefined,\n        filters: {},\n        sourceMode: undefined,\n        columns: undefined,\n      });\n      return;\n    }\n\n    if (mode === 'list') {\n      this.listEntries.set(['']);\n      this.saveValue({\n        dataSource: [],\n        valueField: 'value',\n        textField: 'text',\n        filters: {},\n        sourceMode: 'list',\n        columns: undefined,\n      });\n    }\n  }\n\n  protected onDefinitionChange(event: AXValueChangedEvent<string | null>): void {\n    const name = event.value ?? null;\n    const def = name ? this.definitions().find((d) => d.name === name) ?? null : null;\n    this.selectedDefinition.set(def);\n    this.saveValue({\n      dataSource: name ?? undefined,\n      filters: {},\n      sourceMode: undefined,\n      columns: undefined,\n    });\n\n    if (def) {\n      const valueOpts = this.buildFieldOptions(def, 'valueField');\n      const textOpts = this.buildFieldOptions(def, 'textField');\n      this.valueFieldOptions.set(valueOpts);\n      this.textFieldOptions.set(textOpts);\n      this.saveValue({\n        valueField: def.valueField?.name ?? valueOpts[0]?.value,\n        textField: def.textField?.name ?? textOpts[0]?.value,\n      });\n    } else {\n      this.valueFieldOptions.set([]);\n      this.textFieldOptions.set([]);\n    }\n    this.revalidateFieldSelects();\n  }\n\n  protected onValueFieldChange(event: AXValueChangedEvent<string>): void {\n    this.saveValue({ valueField: event.value ?? undefined });\n  }\n\n  protected onTextFieldChange(event: AXValueChangedEvent<string>): void {\n    this.saveValue({ textField: event.value ?? undefined });\n  }\n\n  protected addListEntry(): void {\n    this.listEntries.update((rows) => [...rows, '']);\n    this.persistListFromEntries();\n  }\n\n  protected removeListEntry(index: number): void {\n    this.listEntries.update((rows) => {\n      const next = rows.filter((_, i) => i !== index);\n      return next.length > 0 ? next : [''];\n    });\n    this.persistListFromEntries();\n  }\n\n  protected onListEntryChange(index: number, event: AXValueChangedEvent<string>): void {\n    const value = event.value ?? '';\n    this.listEntries.update((rows) => {\n      const next = [...rows];\n      next[index] = value;\n      return next;\n    });\n    this.persistListFromEntries();\n  }\n\n  protected onListDrop(event: AXDropListDroppedEvent): void {\n    this.listEntries.update((rows) => {\n      const next = [...rows];\n      moveItemInArray(next, event.previousIndex, event.currentIndex);\n      return next;\n    });\n    this.persistListFromEntries();\n  }\n\n  protected async openFilterEditor(): Promise<void> {\n    const def = this.selectedDefinition();\n    const filterDefs = def?.filters ?? [];\n    const currentFilters = (this.getValue()?.['filters'] as Record<string, unknown>) ?? {};\n\n    const getFilterKey = (f: AXPFilterDefinition, index: number): string =>\n      f.id ?? f.field ?? this.slugFilterTitle(f.title) ?? `filter_${index}`;\n\n    const initialFilters: Record<string, string> = {};\n    filterDefs.forEach((f, i) => {\n      const key = getFilterKey(f, i);\n      const v = currentFilters[key];\n      initialFilters[key] = typeof v === 'string' ? v : v != null ? String(v) : '';\n    });\n\n    const dataSourceSubtitle = def?.title ?? def?.name ?? '';\n    const filtersModalTitle = await this.translationService.translateAsync(DATA_SOURCE_OPTIONS_I18N.filtersModalTitle);\n\n    const ref = await this.layoutBuilder\n      .create()\n      .dialog((dialog) => {\n        dialog\n          .setTitle(filtersModalTitle)\n          .setMessage(dataSourceSubtitle)\n          .setSize('md')\n          .setContext({ filters: initialFilters })\n          .content((layoutBuilder) => {\n            layoutBuilder.flex((flex) => {\n              flex\n                .mode('edit')\n                .setOptions({\n                  flexDirection: 'column',\n                  maxHeight: '60vh',\n                  overflowY: 'auto',\n                });\n              filterDefs.forEach((filter, index) => {\n                const key = getFilterKey(filter, index);\n                flex.formField(filter.title, (field) => {\n                  field\n                    .path(`filters.${key}`)\n                    .customWidget('code-editor', {\n                      language: 'javascript',\n                      lineNumbers: true,\n                      height: 'min-h-48',\n                    });\n                });\n              });\n            });\n          })\n          .setActions((actions: IActionBuilder) => {\n            actions.cancel('@general:actions.cancel.title');\n            if (filterDefs.length > 0) {\n              actions.submit('@general:actions.save.title');\n            }\n          });\n      })\n      .show();\n\n    if (ref.action() === 'submit') {\n      const context = ref.context();\n      const filters = context?.filters ?? {};\n      this.saveValue({ filters });\n      ref.close();\n    } else {\n      ref.close();\n    }\n  }\n\n  private slugFilterTitle(title: string): string {\n    return title\n      .toLowerCase()\n      .replace(/[^a-z0-9\\s]/g, '')\n      .replace(/\\s+/g, '_')\n      .substring(0, 50) || 'filter';\n  }\n\n  //#endregion\n\n  //#region ---- Private ----\n\n  private buildFieldOptions(\n    def: AXPDataSourceDefinition,\n    kind: 'valueField' | 'textField'\n  ): { value: string; text: string }[] {\n    const fromDef = kind === 'valueField' ? def.valueField : def.textField;\n    const options: { value: string; text: string }[] = [];\n    if (fromDef) {\n      options.push({ value: fromDef.name, text: fromDef.title });\n    }\n    def.columns?.forEach((col) => {\n      if (col.name && !options.some((o) => o.value === col.name)) {\n        options.push({ value: col.name, text: col.title ?? col.name });\n      }\n    });\n    return options;\n  }\n\n  private persistListFromEntries(): void {\n    const titles = this.listEntries()\n      .map((s) => s.trim())\n      .filter((s) => s.length > 0);\n    const rows = this.buildUniqueListRows(titles);\n    this.saveValue({\n      dataSource: rows,\n      valueField: 'value',\n      textField: 'text',\n      sourceMode: 'list',\n      columns: undefined,\n    });\n  }\n\n  //#region ---- List identity (value from text) ----\n\n  /**\n   * Derives stable identity `value` from display `text` (slug) and enforces uniqueness.\n   */\n  private buildUniqueListRows(titles: string[]): { value: string; text: string }[] {\n    const used = new Set<string>();\n    return titles.map((text, index) => ({\n      text,\n      value: this.allocateUniqueIdentityValue(this.slugifyIdentityFromTitle(text, index), used, index),\n    }));\n  }\n\n  private slugifyIdentityFromTitle(text: string, index: number): string {\n    const trimmed = text.trim();\n    const withoutMarks = trimmed.normalize('NFKD').replace(/\\p{M}/gu, '');\n    const slug = withoutMarks\n      .toLowerCase()\n      .replace(/[^a-z0-9]+/g, '-')\n      .replace(/^-+|-+$/g, '')\n      .replace(/-+/g, '-');\n    if (slug.length > 0) {\n      return slug;\n    }\n    return `item-${this.shortHash(trimmed)}-${index}`;\n  }\n\n  private shortHash(s: string): string {\n    let h = 2166136261;\n    for (let i = 0; i < s.length; i++) {\n      h ^= s.charCodeAt(i);\n      h = Math.imul(h, 16777619);\n    }\n    return (h >>> 0).toString(36).slice(0, 10);\n  }\n\n  private allocateUniqueIdentityValue(base: string, used: Set<string>, index: number): string {\n    const initial = base.trim().length > 0 ? base : `item-${index}`;\n    let candidate = initial;\n    let n = 2;\n    while (used.has(candidate)) {\n      candidate = `${initial}-${n}`;\n      n++;\n    }\n    used.add(candidate);\n    return candidate;\n  }\n\n  //#endregion\n\n  /**\n   * Loads list row strings from stored `dataSource` (list or legacy inline array).\n   */\n  private syncListEntriesFromValue(): void {\n    const opts = (this.getValue() ?? {}) as AXPDataSourceOptionsValue;\n    const ds = opts.dataSource;\n    const textKey = opts.textField ?? 'text';\n    if (!Array.isArray(ds) || ds.length === 0) {\n      this.listEntries.set(['']);\n      return;\n    }\n    const strings = ds.map((row: unknown) => {\n      if (typeof row === 'string') {\n        return row;\n      }\n      if (row && typeof row === 'object') {\n        const o = row as Record<string, unknown>;\n        const fromTextKey = o[textKey];\n        if (fromTextKey !== undefined && fromTextKey !== null) {\n          return String(fromTextKey);\n        }\n        return String(o['text'] ?? o['value'] ?? '');\n      }\n      return '';\n    });\n    this.listEntries.set(strings.length > 0 ? strings : ['']);\n  }\n\n  private saveValue(partial: Record<string, unknown>): void {\n    if (this.rendered()) {\n      const current = this.getValue() ?? {};\n      this.setValue({ ...current, ...partial });\n    }\n  }\n\n  /**\n   * Force value/text field select-boxes to re-render (workaround for ax-select-box\n   * dropdown height going to 0 when data-source changes).\n   */\n  private revalidateFieldSelects(): void {\n    this.fieldSelectsKey.set(false);\n    setTimeout(() => this.fieldSelectsKey.set(true), 0);\n  }\n\n  //#endregion\n\n  //#region ---- Lifecycle ----\n\n  readonly #init = afterNextRender(async () => {\n    const options = (this.getValue() ?? {}) as AXPDataSourceOptionsValue;\n    const dataSource = options.dataSource;\n\n    if (typeof dataSource === 'string') {\n      this.dataSourceMode.set('exists');\n      const items = await this.dataSourceDefinitionService.items();\n      this.definitions.set(items);\n      const def =\n        items.find((d) => d.name === dataSource) ??\n        (await this.dataSourceDefinitionService.get(dataSource)) ??\n        null;\n      this.selectedDefinition.set(def);\n      if (def) {\n        this.valueFieldOptions.set(this.buildFieldOptions(def, 'valueField'));\n        this.textFieldOptions.set(this.buildFieldOptions(def, 'textField'));\n      }\n    } else if (Array.isArray(dataSource)) {\n      this.dataSourceMode.set('list');\n    } else {\n      this.dataSourceMode.set('exists');\n      const items = await this.dataSourceDefinitionService.items();\n      this.definitions.set(items);\n    }\n\n    if (this.dataSourceMode() === 'list') {\n      this.syncListEntriesFromValue();\n    }\n\n    const [existsText, listText] = await Promise.all([\n      this.translationService.translateAsync(DATA_SOURCE_OPTIONS_I18N.modeExists),\n      this.translationService.translateAsync(DATA_SOURCE_OPTIONS_I18N.modeList),\n    ]);\n    this.modeItems.set([\n      { value: 'exists', text: existsText },\n      { value: 'list', text: listText },\n    ]);\n\n    this.rendered.set(true);\n  });\n\n  //#endregion\n}\n","<div class=\"axp-data-source-options ax-flex ax-flex-col ax-gap-3 ax-py-2\">\n  <!-- 1. Mode: exists or list -->\n  <div class=\"ax-flex ax-flex-col ax-gap-2\">\n    <span class=\"ax-font-medium ax-text-sm\">{{ I18N.source | translate | async }}</span>\n    <ax-selection-list [items]=\"modeItems()\" [ngModel]=\"dataSourceMode()\"\n      (onValueChanged)=\"setDataSourceMode($event.value)\" direction=\"horizontal\" [multiple]=\"false\" [showControl]=\"true\"\n      valueField=\"value\" textField=\"text\" />\n  </div>\n\n  <!-- 2. Select existing data source (only when mode is exists) -->\n  @if (dataSourceMode() === 'exists') {\n  <div class=\"ax-flex ax-flex-col ax-gap-2\">\n    <span class=\"ax-font-medium ax-text-sm\">{{ I18N.dataSource | translate | async }}</span>\n    <ax-select-box [dataSource]=\"definitionsDataSource\" [ngModel]=\"getValue()['dataSource']\"\n      (onValueChanged)=\"onDefinitionChange($event)\" valueField=\"name\" textField=\"title\"\n      [placeholder]=\"(I18N.dataSourcePlaceholder | translate | async) ?? ''\">\n      <ax-search-box></ax-search-box>\n      <ax-clear-button></ax-clear-button>\n    </ax-select-box>\n  </div>\n  }\n\n  <!-- 3. Simple list (text rows) -->\n  @if (dataSourceMode() === 'list') {\n  <div class=\"ax-flex ax-flex-col ax-gap-2\">\n    <span class=\"ax-font-medium ax-text-sm\">{{ I18N.listItems | translate | async }}</span>\n    <axp-repeater-rows-layout\n      [count]=\"listEntries().length\"\n      [rowTemplate]=\"listRowTpl\"\n      [hasControls]=\"true\"\n      [allowReorder]=\"true\"\n      [addItemLabelKey]=\"I18N.addListItem\"\n      (addClick)=\"addListEntry()\"\n      (removeClick)=\"removeListEntry($event)\"\n      (drop)=\"onListDrop($event)\"\n    ></axp-repeater-rows-layout>\n    <ng-template #listRowTpl let-index=\"index\">\n      <ax-text-box\n        class=\"ax-w-full\"\n        [ngModel]=\"listEntries()[index]\"\n        (onValueChanged)=\"onListEntryChange(index, $event)\"\n      />\n    </ng-template>\n  </div>\n  }\n\n  <!-- 4. valueField / textField (exists only) -->\n  @if (fieldSelectsKey() && dataSourceMode() === 'exists') {\n  <div class=\"ax-flex ax-flex-col ax-gap-2\">\n    <span class=\"ax-font-medium ax-text-sm\">{{ I18N.valueField | translate | async }}</span>\n    <ax-select-box [dataSource]=\"valueFieldDataSource()\" [ngModel]=\"getValue()['valueField']\"\n      (onValueChanged)=\"onValueFieldChange($event)\" valueField=\"value\" textField=\"text\"\n      [disabled]=\"valueTextFieldDisabled()\"\n      [placeholder]=\"((valueTextFieldDisabled() ? I18N.valueFieldPlaceholderDisabled : I18N.valueFieldPlaceholder) | translate | async) ?? ''\">\n      <ax-clear-button></ax-clear-button>\n    </ax-select-box>\n  </div>\n\n  <!-- textField select -->\n  <div class=\"ax-flex ax-flex-col ax-gap-2\">\n    <span class=\"ax-font-medium ax-text-sm\">{{ I18N.textField | translate | async }}</span>\n    <ax-select-box [dataSource]=\"textFieldDataSource()\" [ngModel]=\"getValue()['textField']\"\n      (onValueChanged)=\"onTextFieldChange($event)\" valueField=\"value\" textField=\"text\"\n      [disabled]=\"valueTextFieldDisabled()\"\n      [placeholder]=\"((valueTextFieldDisabled() ? I18N.textFieldPlaceholderDisabled : I18N.textFieldPlaceholder) | translate | async) ?? ''\">\n      <ax-clear-button></ax-clear-button>\n    </ax-select-box>\n  </div>\n  }\n\n  <!-- 5. Filter editor (registered data source with filters) -->\n  @if (dataSourceMode() === 'exists' && (selectedDefinition()?.filters?.length ?? 0) > 0) {\n  <div class=\"ax-flex ax-flex-col ax-gap-2\">\n    <span class=\"ax-font-medium ax-text-sm\">{{ I18N.filters | translate | async }}</span>\n    @if (filterCount() === 0) {\n    <ax-button look=\"twotone\" color=\"default\" size=\"sm\" [text]=\"(I18N.filtersButtonEmpty | translate | async) ?? ''\"\n      (onClick)=\"openFilterEditor()\" class=\"ax-w-full\">\n      <ax-prefix>\n        <ax-icon icon=\"fa-light fa-filter\"></ax-icon>\n      </ax-prefix>\n    </ax-button>\n    } @else {\n    <ax-button look=\"twotone\" color=\"default\" size=\"sm\"\n      [text]=\"((I18N.filtersButtonWithCount | translate: { params: { count: filterCount() } }) | async) ?? ''\"\n      (onClick)=\"openFilterEditor()\" class=\"ax-w-full\">\n      <ax-prefix>\n        <ax-icon icon=\"fa-light fa-filter\"></ax-icon>\n      </ax-prefix>\n    </ax-button>\n    }\n  </div>\n  }\n</div>\n","import { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\n\nexport const AXPDataSourceOptionsWidget: AXPWidgetConfig = {\n  name: 'data-source-options',\n  title: 'Data Source Options',\n  description: 'Configure data source, value/text fields, and filters',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  icon: 'fa-light fa-database',\n  type: 'editor',\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY],\n  components: {\n    edit: {\n      component: () =>\n        import('./data-source-options-widget-editor.component').then(\n          (c) => c.AXPDataSourceOptionsWidgetEditComponent\n        ),\n    },\n  },\n};\n\n","import { AXSelectionListModule } from '@acorex/components/selection-list';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation, computed } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n  selector: 'axp-direction-widget-editor',\n  templateUrl: './direction-widget-editor.component.html',\n  styleUrl: './direction-widget-editor.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  imports: [AXSelectionListModule, FormsModule],\n})\nexport class AXPDirectionWidgetEditComponent extends AXPValueWidgetComponent<string> {\n  protected direction = computed(() => this.getValue() || 'inherit');\n\n  protected directionOptions = [\n    { id: 'ltr', text: 'Left to Right', icon: 'fa-light fa-arrow-right' },\n    { id: 'rtl', text: 'Right to Left', icon: 'fa-light fa-arrow-left' },\n  ];\n}\n","<div class=\"ax-pt-2\">\n  <div class=\"ax-mt-2\">\n    <ax-selection-list\n      [items]=\"directionOptions\"\n      [ngModel]=\"direction()\"\n      (onValueChanged)=\"handleValueChanged($event)\"\n      direction=\"horizontal\"\n      [multiple]=\"false\"\n      [showControl]=\"true\"\n      look=\"card\"\n      valueField=\"id\"\n      textField=\"text\"\n    >\n      <ng-template #itemTemplate let-item>\n        <div class=\"ax-flex ax-items-center\">\n          <i [class]=\"item.icon\"></i>\n          <span class=\"ax-ml-2\">{{ item.text }}</span>\n        </div>\n      </ng-template>\n    </ax-selection-list>\n  </div>\n</div>\n","import { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\nexport const AXPDirectionWidget: AXPWidgetConfig = {\n  name: 'direction',\n  title: 'Direction',\n  description: 'Setting text direction (RTL/LTR)',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  icon: 'fa-light fa-directions',\n  type: 'editor',\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY],\n  components: {\n    edit: {\n      component: () => import('./direction-widget-editor.component').then((c) => c.AXPDirectionWidgetEditComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    direction: 'direction';\n  }\n}\n","import { AXNumberBoxModule } from '@acorex/components/number-box';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXPFlexItemStyles } from './flex-item-options-widget.type';\n\n@Component({\n  selector: 'axp-flex-item-options-widget-editor',\n  template: `\n    <div class=\"ax-grid ax-grid-cols-2 ax-gap-3 ax-items-start\">\n      <div class=\"ax-flex ax-flex-col ax-gap-1\">\n        <span>Order</span>\n        <ax-number-box\n          [minValue]=\"-999\"\n          [maxValue]=\"999\"\n          [ngModel]=\"getValue()?.order\"\n          (ngModelChange)=\"save('order', $event)\"\n        ></ax-number-box>\n      </div>\n\n      <div class=\"ax-flex ax-flex-col ax-gap-1\">\n        <span>Grow</span>\n        <ax-number-box\n          [minValue]=\"0\"\n          [maxValue]=\"999\"\n          [ngModel]=\"getValue()?.grow\"\n          (ngModelChange)=\"save('grow', $event)\"\n        ></ax-number-box>\n      </div>\n\n      <div class=\"ax-flex ax-flex-col ax-gap-1\">\n        <span>Shrink</span>\n        <ax-number-box\n          [minValue]=\"0\"\n          [maxValue]=\"999\"\n          [ngModel]=\"getValue()?.shrink\"\n          (ngModelChange)=\"save('shrink', $event)\"\n        ></ax-number-box>\n      </div>\n\n      <div class=\"ax-flex ax-flex-col ax-gap-1\">\n        <span>Basis</span>\n        <ax-text-box\n          [ngModel]=\"getValue()?.basis\"\n          (onValueChanged)=\"save('basis', $event.value)\"\n          placeholder=\"e.g. auto, 0, 200px, 30%\"\n        ></ax-text-box>\n      </div>\n\n      <!-- <div class=\"ax-flex ax-flex-col ax-gap-1\">\n        <span>Align Self</span>\n        <ax-select-box\n          [dataSource]=\"alignOptions\"\n          [valueField]=\"'value'\"\n          [textField]=\"'label'\"\n          [ngModel]=\"getValue()?.alignSelf\"\n          (ngModelChange)=\"save('alignSelf', $event)\"\n        ></ax-select-box>\n      </div> -->\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXNumberBoxModule, AXSelectBoxModule, AXTextBoxModule, FormsModule],\n})\nexport class AXPFlexItemOptionsWidgetEditComponent extends AXPValueWidgetComponent<AXPFlexItemStyles | undefined> {\n  alignOptions = [\n    { value: 'auto', label: 'Auto' },\n    { value: 'flex-start', label: 'Start' },\n    { value: 'flex-end', label: 'End' },\n    { value: 'center', label: 'Center' },\n    { value: 'baseline', label: 'Baseline' },\n    { value: 'stretch', label: 'Stretch' },\n  ];\n\n  save<K extends keyof AXPFlexItemStyles>(key: K, val: AXPFlexItemStyles[K]) {\n    this.setValue({ ...this.getValue(), [key]: val });\n  }\n}\n","import { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\n\nexport const AXPFlexItemOptionsWidget: AXPWidgetConfig = {\n  name: 'flex-item-options',\n  title: 'Flex Item Options',\n  description: 'Customize flex item properties (order, grow, shrink, basis, align-self)',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  icon: 'fa-light fa-ellipsis-vertical',\n  type: 'editor',\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY],\n  components: {\n    edit: {\n      component: () =>\n        import('./flex-item-options-widget-editor.component').then((c) => c.AXPFlexItemOptionsWidgetEditComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    flexItemOptions: 'flex-item-options';\n  }\n}\n","import { AXPFlexBoxString } from '@acorex/platform/layout/widget-core';\n\nexport interface AXPFlexBoxOption {\n  value: string;\n  label: string;\n}\n\nexport interface AXPFlexBoxAlignmentOption extends AXPFlexBoxOption {\n  align: AXPFlexBoxString['alignItems'];\n  justify: AXPFlexBoxString['justifyContent'];\n}\n\nexport const AXP_Flex_Box_Alignments: AXPFlexBoxAlignmentOption[] = [\n  { value: 'top-left', label: 'Top Left', align: 'flex-start', justify: 'flex-start' },\n  { value: 'top-center', label: 'Top Center', align: 'flex-start', justify: 'center' },\n  { value: 'top-right', label: 'Top Right', align: 'flex-start', justify: 'flex-end' },\n  { value: 'middle-left', label: 'Middle Left', align: 'center', justify: 'flex-start' },\n  { value: 'middle-center', label: 'Middle Center', align: 'center', justify: 'center' },\n  { value: 'middle-right', label: 'Middle Right', align: 'center', justify: 'flex-end' },\n  { value: 'bottom-left', label: 'Bottom Left', align: 'flex-end', justify: 'flex-start' },\n  { value: 'bottom-center', label: 'Bottom Center', align: 'flex-end', justify: 'center' },\n  { value: 'bottom-right', label: 'Bottom Right', align: 'flex-end', justify: 'flex-end' },\n];\n\nexport const AXP_Flex_Box_Justify_Options: AXPFlexBoxOption[] = [\n  { value: 'flex-start', label: 'Start' },\n  { value: 'flex-end', label: 'End' },\n  { value: 'center', label: 'Center' },\n  { value: 'space-between', label: 'Space Between' },\n  { value: 'space-around', label: 'Space Around' },\n];\n\nexport const AXP_Flex_Box_Align_Options: AXPFlexBoxOption[] = [\n  { value: 'flex-start', label: 'Start' },\n  { value: 'flex-end', label: 'End' },\n  { value: 'center', label: 'Center' },\n  { value: 'stretch', label: 'Stretch' },\n  { value: 'baseline', label: 'Baseline' },\n];\n","import { AXDataSource, AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXButtonGroupModule } from '@acorex/components/button-group';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXNumberBoxModule } from '@acorex/components/number-box';\nimport { AXRangeSliderModule } from '@acorex/components/range-slider';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXSelectionListModule } from '@acorex/components/selection-list';\nimport { AXPFlexBoxString, AXPPropertyEditorHelper, AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { afterNextRender, ChangeDetectionStrategy, Component, computed, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n  AXP_Flex_Box_Align_Options,\n  AXP_Flex_Box_Alignments,\n  AXP_Flex_Box_Justify_Options,\n  AXPFlexBoxAlignmentOption,\n  AXPFlexBoxOption,\n} from './flex-options-widget.type';\n\n@Component({\n  selector: 'axp-flex-options-widget-editor',\n  templateUrl: './flex-options-widget-editor.component.html',\n  styleUrl: './flex-options-widget-editor.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    AXButtonGroupModule,\n    AXDecoratorModule,\n    AXSelectBoxModule,\n    AXRangeSliderModule,\n    AXNumberBoxModule,\n    AXDropdownModule,\n    AXButtonModule,\n    AXSelectionListModule,\n    FormsModule,\n  ],\n})\nexport class AXPFlexOptionsWidgetEditComponent extends AXPValueWidgetComponent<AXPFlexBoxString> {\n  private rendered = signal(false);\n  protected flexSides = AXP_Flex_Box_Alignments;\n\n  protected flexDirection = signal<AXPFlexBoxString['flexDirection']>('row');\n  protected flexWrap = signal<AXPFlexBoxString['flexWrap']>('nowrap');\n  protected flexDirectionIsColumn = computed(() => this.flexDirection()?.startsWith('column'));\n  protected flexDirectionIsReverse = computed(() => this.flexDirection()?.endsWith('reverse'));\n  protected flexDirectionWithoutReverse = computed(() => this.flexDirection()?.replace('-reverse', ''));\n\n  protected gapMode = signal<'single' | 'both'>('both');\n  protected gapUnit = signal('px');\n  protected gap = signal<Record<'both' | 'x' | 'y', number>>({ both: 0, x: 0, y: 0 });\n  protected lastGap = signal(0);\n\n  protected selectedJustify = signal<AXPFlexBoxOption>({ value: 'flex-start', label: 'Start' });\n  protected selectedAlign = signal<AXPFlexBoxOption>({ value: 'flex-start', label: 'Start' });\n\n  protected hoveredAlign = signal<AXPFlexBoxString['alignItems'] | null>(null);\n  protected hoveredJustify = signal<AXPFlexBoxString['justifyContent'] | null>(null);\n\n  protected clickedAlign = signal<AXPFlexBoxString['alignItems']>('flex-start');\n  protected clickedJustify = signal<AXPFlexBoxString['justifyContent']>('flex-start');\n\n  protected itemsCount = signal<number>(0);\n\n  protected setWrapMode(type: AXPFlexBoxString['flexWrap']) {\n    this.flexWrap.set(type);\n    this.saveValue({ flexWrap: type });\n  }\n\n  protected setGapMode() {\n    if (this.gapMode() === 'single') {\n      this.gapMode.set('both');\n      // this.gap.set({ ...this.gap(), both: this.lastGap() });\n      this.setGap(this.lastGap(), 'both');\n    } else {\n      this.gapMode.set('single');\n      // this.gap.set({ ...this.gap(), x: this.lastGap(), y: this.lastGap() });\n      this.setGap(this.lastGap(), 'x');\n      this.setGap(this.lastGap(), 'y');\n    }\n  }\n\n  protected setFlexDirection(type: AXPFlexBoxString['flexDirection']) {\n    this.flexDirection.set(type);\n    this.saveValue({ flexDirection: type });\n  }\n\n  protected setGap(size: number, side: 'both' | 'x' | 'y') {\n    this.gap.set({ ...this.gap(), [side]: size });\n    if (this.gapMode() === 'both') {\n      const gap = this.gap().both + this.gapUnit();\n      this.saveValue({ gap });\n    } else {\n      const gap = this.gap().x + this.gapUnit() + ' ' + this.gap().y + this.gapUnit();\n      this.saveValue({ gap });\n    }\n    this.lastGap.set(size);\n  }\n\n  protected onClick(data: AXPFlexBoxAlignmentOption): void {\n    // const directionAlign = this.flexDirectionIsReverse() === true ? 'flex-start' : 'flex-end';\n    const directionAlign = 'flex-start';\n    let calcAlign = this.calculateAlign(data.align);\n    let calcJustify = this.calculateJustify(data.justify);\n\n    if (\n      this.flexDirectionIsColumn() &&\n      (calcAlign === 'flex-end' || calcAlign === 'flex-start' || calcAlign === 'center') &&\n      (calcJustify === 'flex-end' || calcJustify === 'flex-start' || calcJustify === 'center')\n    ) {\n      // In column mode, we need to swap x/y alignments for the standard position values\n      [calcAlign, calcJustify] = [calcJustify, calcAlign] as [\n        AXPFlexBoxString['alignItems'],\n        AXPFlexBoxString['justifyContent'],\n      ];\n    }\n\n    if (this.clickedJustify() === 'space-between') {\n      if (this.clickedAlign() === 'stretch') {\n        return;\n      } else if (this.clickedAlign() === 'baseline' && calcAlign === directionAlign) {\n        return;\n      }\n      this.clickedAlign.set(calcAlign);\n      this.selectedAlign.set({ value: calcAlign!, label: this.findAlignNameById(calcAlign!)! });\n    } else if (this.clickedJustify() === 'space-around') {\n      if (this.clickedAlign() === 'stretch') {\n        return;\n      } else if (this.clickedAlign() === 'baseline' && calcAlign === directionAlign) {\n        return;\n      }\n      this.clickedAlign.set(calcAlign);\n      this.selectedAlign.set({ value: calcAlign!, label: this.findAlignNameById(calcAlign!)! });\n    } else if (this.clickedAlign() === 'stretch') {\n      this.clickedJustify.set(calcJustify);\n      this.selectedJustify.set({ value: calcJustify!, label: this.findJustifyNameById(calcJustify!)! });\n    } else if (this.clickedAlign() === 'baseline' && calcAlign === directionAlign) {\n      this.clickedJustify.set(calcJustify);\n      this.selectedJustify.set({ value: calcJustify!, label: this.findJustifyNameById(calcJustify!)! });\n    } else {\n      this.clickedAlign.set(calcAlign);\n      this.clickedJustify.set(calcJustify);\n      this.selectedJustify.set({ value: calcJustify!, label: this.findJustifyNameById(calcJustify!)! });\n      this.selectedAlign.set({ value: calcAlign!, label: this.findAlignNameById(calcAlign!)! });\n    }\n    this.saveValue({ alignItems: this.clickedAlign(), justifyContent: this.clickedJustify() });\n  }\n\n  protected onHover(data: AXPFlexBoxAlignmentOption): void {\n    // const directionAlign = this.flexDirectionIsReverse() === true ? 'flex-start' : 'flex-end';\n    const directionAlign = 'flex-start';\n    let calcAlign = this.calculateAlign(data.align);\n    let calcJustify = this.calculateJustify(data.justify);\n\n    if (\n      this.flexDirectionIsColumn() &&\n      (calcAlign === 'flex-end' || calcAlign === 'flex-start' || calcAlign === 'center') &&\n      (calcJustify === 'flex-end' || calcJustify === 'flex-start' || calcJustify === 'center')\n    ) {\n      // In column mode, we need to swap x/y alignments for the standard position values\n      [calcAlign, calcJustify] = [calcJustify, calcAlign] as [\n        AXPFlexBoxString['alignItems'],\n        AXPFlexBoxString['justifyContent'],\n      ];\n    }\n\n    if (this.clickedJustify() === 'space-between') {\n      this.hoveredAlign.set(calcAlign);\n      this.hoveredJustify.set('space-between');\n    } else if (this.clickedJustify() === 'space-around') {\n      this.hoveredAlign.set(calcAlign);\n      this.hoveredJustify.set('space-around');\n    } else if (this.clickedAlign() === 'stretch') {\n      this.hoveredAlign.set('stretch');\n      this.hoveredJustify.set(calcJustify);\n    } else if (this.clickedAlign() === 'baseline' && calcAlign === directionAlign) {\n      this.hoveredAlign.set('baseline');\n      this.hoveredJustify.set(calcJustify);\n    } else {\n      this.hoveredAlign.set(calcAlign);\n      this.hoveredJustify.set(calcJustify);\n    }\n  }\n\n  protected onHoverLeave() {\n    this.hoveredAlign.set(null);\n    this.hoveredJustify.set(null);\n  }\n\n  protected onJustifyChange(event: AXValueChangedEvent<any>) {\n    if (event.isUserInteraction) {\n      this.selectedJustify.set({ value: event.value, label: this.findJustifyNameById(event.value)! });\n      this.clickedJustify.set(event.value);\n    }\n    this.saveValue({ justifyContent: this.clickedJustify() });\n  }\n\n  protected onAlignChange(event: AXValueChangedEvent<any>) {\n    if (event.isUserInteraction) {\n      this.selectedAlign.set({ value: event.value, label: this.findAlignNameById(event.value)! });\n      this.clickedAlign.set(event.value);\n    }\n    this.saveValue({ alignItems: this.clickedAlign() });\n  }\n\n  protected justifyDataSource = new AXDataSource({\n    pageSize: 99,\n    load: async (e) => {\n      return {\n        items: AXP_Flex_Box_Justify_Options,\n        total: AXP_Flex_Box_Justify_Options.length,\n      };\n    },\n  });\n\n  protected alignDataSource = new AXDataSource({\n    pageSize: 99,\n    load: async (e) => {\n      return {\n        items: AXP_Flex_Box_Align_Options,\n        total: AXP_Flex_Box_Align_Options.length,\n      };\n    },\n  });\n\n  private findAlignNameById = (value: string): string | undefined => {\n    const side = AXP_Flex_Box_Align_Options.find((side) => side.value === value);\n    return side?.label;\n  };\n\n  private findJustifyNameById = (value: string): string | undefined => {\n    const side = AXP_Flex_Box_Justify_Options.find((side) => side.value === value);\n    return side?.label;\n  };\n\n  protected calculateAlign(value: AXPFlexBoxString['alignItems']): AXPFlexBoxString['alignItems'] {\n    if (this.flexDirection() === 'column-reverse') {\n      if (value === 'flex-end') {\n        return 'flex-start';\n      } else if (value === 'flex-start') {\n        return 'flex-end';\n      } else {\n        return value;\n      }\n    }\n    return value;\n  }\n\n  private calculateJustify(value: AXPFlexBoxString['justifyContent']): AXPFlexBoxString['justifyContent'] {\n    if (this.flexDirection() === 'row-reverse') {\n      if (value === 'flex-end') {\n        return 'flex-start';\n      } else if (value === 'flex-start') {\n        return 'flex-end';\n      } else {\n        return value;\n      }\n    }\n    return value;\n  }\n\n  private saveValue(item: Partial<AXPFlexBoxString>) {\n    if (this.rendered()) {\n      this.setValue({ ...this.getValue(), ...item });\n    }\n  }\n\n  protected setItemsCount(count: number) {\n    const safe = Math.max(0, Math.min(100, Math.round(count)));\n    this.itemsCount.set(safe);\n    // store as custom field on flex options\n    this.saveValue({ items: safe } as any);\n  }\n\n  #af = afterNextRender(() => {\n    const value = this.getValue();\n    //this.flexDirection.set(value?.flexDirection ?? 'row');\n    this.setFlexDirection(value?.flexDirection ?? 'row');\n    // this.flexWrap.set(value?.flexWrap ?? 'nowrap');\n    this.setWrapMode(value?.flexWrap ?? 'nowrap');\n\n    this.clickedJustify.set(value?.justifyContent ?? 'flex-start');\n    this.clickedAlign.set(value?.alignItems ?? 'flex-start');\n\n    this.selectedAlign.set({\n      value: value?.alignItems ?? 'flex-start',\n      label: this.findAlignNameById(value?.alignItems ?? 'flex-start')!,\n    });\n    this.selectedJustify.set({\n      value: value?.justifyContent ?? 'flex-start',\n      label: this.findJustifyNameById(value?.justifyContent ?? 'flex-start')!,\n    });\n\n    const { values, unit } = AXPPropertyEditorHelper.parseGap(value?.gap ?? '0px');\n    this.gapUnit.set(unit);\n    if (values.x === values.y) {\n      this.gapMode.set('both');\n      this.setGap(values.x, 'both');\n    } else {\n      this.gapMode.set('single');\n      this.setGap(values.x, 'x');\n      this.setGap(values.y, 'y');\n    }\n    // initialize items count for flex items sizing\n    this.itemsCount.set((value as any)?.items ?? 0);\n    this.rendered.set(true);\n  });\n\n  // #eff1 = effect(() => console.log('HOVER: ', this.hoveredAlign(), this.hoveredJustify()));\n  // #eff2 = effect(() => console.log('CLICKED: ', this.clickedAlign(), this.clickedJustify()));\n  // #eff3 = effect(() => console.log(this.getValue()));\n}\n","<div class=\"axp-flex-option ax-grid ax-grid-cols-[auto_1fr] ax-pt-2 ax-gap-2 ax-items-center ax-justify-items-start\">\n  <span>Direction</span>\n  <div>\n    <ax-button-group class=\"ax-sm\" [selection]=\"'single'\">\n      <ax-button-group-item (onClick)=\"setFlexDirection('row')\" [selected]=\"flexDirection() === 'row'\"\n        ><ax-prefix\n          ><svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path\n              d=\"M12.2929 7.00004L9.14645 3.85359L9.85355 3.14648L14.2071 7.50004L9.85355 11.8536L9.14645 11.1465L12.2929 8.00004H3V7.00004H12.2929Z\"\n              fill=\"currentColor\"\n            ></path></svg></ax-prefix\n      ></ax-button-group-item>\n      <ax-button-group-item (onClick)=\"setFlexDirection('row-reverse')\" [selected]=\"flexDirection() === 'row-reverse'\"\n        ><ax-prefix\n          ><svg\n            width=\"16\"\n            height=\"16\"\n            viewBox=\"0 0 16 16\"\n            fill=\"none\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n            style=\"transform: rotate(180deg)\"\n          >\n            <path\n              d=\"M12.2929 7.00004L9.14645 3.85359L9.85355 3.14648L14.2071 7.50004L9.85355 11.8536L9.14645 11.1465L12.2929 8.00004H3V7.00004H12.2929Z\"\n              fill=\"currentColor\"\n            ></path></svg></ax-prefix\n      ></ax-button-group-item>\n      <ax-button-group-item (onClick)=\"setFlexDirection('column')\" [selected]=\"flexDirection() === 'column'\"\n        ><ax-prefix\n          ><svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path\n              d=\"M8.00001 12.2929L4.85356 9.14645L4.14645 9.85355L8.50001 14.2071L12.8536 9.85355L12.1465 9.14645L9.00001 12.2929L9.00001 3H8.00001L8.00001 12.2929Z\"\n              fill=\"currentColor\"\n            ></path></svg></ax-prefix\n      ></ax-button-group-item>\n      <ax-button-group-item\n        (onClick)=\"setFlexDirection('column-reverse')\"\n        [selected]=\"flexDirection() === 'column-reverse'\"\n        ><ax-prefix\n          ><svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path\n              d=\"M9.00004 3.70721L12.1465 6.85363L12.8536 6.14652L8.50001 1.79297L4.14645 6.14652L4.85356 6.85363L8.00004 3.70715L8.00004 13.0001H9.00004L9.00004 3.70721Z\"\n              fill=\"currentColor\"\n            ></path></svg></ax-prefix\n      ></ax-button-group-item>\n    </ax-button-group>\n  </div>\n  <span> Wrap </span>\n  <div>\n    <ax-selection-list\n      [items]=\"['wrap', 'nowrap']\"\n      [value]=\"flexWrap()\"\n      (onValueChanged)=\"setWrapMode($event.value)\"\n      direction=\"horizontal\"\n      [multiple]=\"false\"\n      [showControl]=\"true\"\n      look=\"card\"\n      valueField=\"id\"\n      textField=\"text\"\n    >\n      <ng-template #itemTemplate let-item>\n        <div class=\"ax-flex ax-items-center\">\n          <ax-icon [icon]=\"item.icon\"></ax-icon>\n          <span class=\"ax-ml-2\">{{ item.text }}</span>\n        </div>\n      </ng-template>\n    </ax-selection-list>\n  </div>\n  <span>Align</span>\n  <div class=\"ax-flex ax-justify-between ax-gap-2 ax-items-center\">\n    <div\n      class=\"ax-relative ax-size-[62px] ax-bg-[rgb(30,30,30)] ax-border ax-border-white ax-border-opacity-15 ax-rounded\"\n    >\n      <div class=\"ax-absolute ax-inset-0 ax-grid ax-grid-cols-3 ax-grid-rows-3\">\n        @for (side of flexSides; track side.value) {\n          <div\n            [attr.aria-label]=\"side.label\"\n            [attr.aria-value]=\"side.value\"\n            class=\"ax-grid ax-place-content-center\"\n            (mouseenter)=\"onHover(side)\"\n            (mouseleave)=\"onHoverLeave()\"\n            (click)=\"onClick(side)\"\n          >\n            @if (true) {\n              <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\">\n                <rect x=\"7\" y=\"7\" width=\"2\" height=\"2\" rx=\"1\" fill=\"currentColor\" fill-opacity=\"0.3\"></rect>\n              </svg>\n            }\n          </div>\n        }\n      </div>\n      <div\n        class=\"ax-absolute ax-inset-0 ax-flex ax-pointer-events-none ax-transition-all\"\n        [style.justify-content]=\"hoveredJustify()\"\n        [style.align-items]=\"hoveredAlign()\"\n        [style.flex-direction]=\"flexDirection()\"\n      >\n        <div class=\"ax-flex ax-justify-center ax-items-center ax-min-w-5 ax-min-h-5\">\n          <div\n            class=\"ax-size-auto ax-z-[1] ax-rounded-lg ax-bg-[rgb(30,30,30)] ax-flex-none\"\n            [class]=\"flexDirectionIsColumn() ? '-ax-rotate-90' : ''\"\n          >\n            @if (hoveredJustify() === 'space-between') {\n              @if (clickedAlign() === 'stretch') {\n              } @else if (clickedAlign() === 'baseline' && hoveredAlign() === 'flex-start') {\n              } @else {\n                <svg width=\"60\" height=\"20\" viewBox=\"0 0 60 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                  <path\n                    fill-rule=\"evenodd\"\n                    clip-rule=\"evenodd\"\n                    d=\"M29 6.5C29 6.22386 29.2239 6 29.5 6H30.5C30.7761 6 31 6.22386 31 6.5V15.5C31 15.7761 30.7761 16 30.5 16H29.5C29.2239 16 29 15.7761 29 15.5V6.5ZM9 8.5C9 8.22386 9.22386 8 9.5 8H10.5C10.7761 8 11 8.22386 11 8.5V12.5C11 12.7761 10.7761 13 10.5 13H9.5C9.22386 13 9 12.7761 9 12.5V8.5ZM49.5 8C49.2239 8 49 8.22386 49 8.5V14.5C49 14.7761 49.2239 15 49.5 15H50.5C50.7761 15 51 14.7761 51 14.5V8.5C51 8.22386 50.7761 8 50.5 8H49.5Z\"\n                    fill=\"currentColor\"\n                    fill-opacity=\"0.3\"\n                  ></path>\n                </svg>\n              }\n            } @else if (hoveredJustify() === 'space-around') {\n              @if (clickedAlign() === 'stretch') {\n              } @else if (clickedAlign() === 'baseline' && hoveredAlign() === 'flex-start') {\n              } @else {\n                <svg width=\"60\" height=\"20\" viewBox=\"0 0 60 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                  <rect x=\"11\" y=\"9\" width=\"2\" height=\"5\" rx=\"0.5\" fill=\"currentColor\" fill-opacity=\"0.3\"></rect>\n                  <rect x=\"29\" y=\"6\" width=\"2\" height=\"10\" rx=\"0.5\" fill=\"currentColor\" fill-opacity=\"0.3\"></rect>\n                  <rect x=\"47\" y=\"8\" width=\"2\" height=\"7\" rx=\"0.5\" fill=\"currentColor\" fill-opacity=\"0.3\"></rect>\n                  <path\n                    fill-rule=\"evenodd\"\n                    clip-rule=\"evenodd\"\n                    d=\"M5 13L8 11L5 9V13ZM55 9L52 11L55 13V9Z\"\n                    fill=\"currentColor\"\n                    fill-opacity=\"0.3\"\n                  ></path>\n                </svg>\n              }\n            } @else if (hoveredAlign() === 'flex-start') {\n              <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                <path\n                  fill-rule=\"evenodd\"\n                  clip-rule=\"evenodd\"\n                  d=\"M3.5 7C3.22386 7 3 6.77614 3 6.5V3.5C3 3.22386 3.22386 3 3.5 3H4.5C4.77614 3 5 3.22386 5 3.5V6.5C5 6.77614 4.77614 7 4.5 7H3.5ZM7.5 13C7.22386 13 7 12.7761 7 12.5V3.5C7 3.22386 7.22386 3 7.5 3H8.5C8.77614 3 9 3.22386 9 3.5V12.5C9 12.7761 8.77614 13 8.5 13H7.5ZM11.5 3C11.2239 3 11 3.22386 11 3.5V8.5C11 8.77614 11.2239 9 11.5 9H12.5C12.7761 9 13 8.77614 13 8.5V3.5C13 3.22386 12.7761 3 12.5 3H11.5Z\"\n                  fill=\"currentColor\"\n                  fill-opacity=\"0.3\"\n                ></path>\n              </svg>\n            } @else if (hoveredAlign() === 'center') {\n              <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                <path\n                  fill-rule=\"evenodd\"\n                  clip-rule=\"evenodd\"\n                  d=\"M7.5 13C7.22386 13 7 12.7761 7 12.5V3.5C7 3.22386 7.22386 3 7.5 3H8.5C8.77614 3 9 3.22386 9 3.5V12.5C9 12.7761 8.77614 13 8.5 13H7.5ZM3.5 10C3.22386 10 3 9.77614 3 9.5V6.5C3 6.22386 3.22386 6 3.5 6H4.5C4.77614 6 5 6.22386 5 6.5V9.5C5 9.77614 4.77614 10 4.5 10H3.5ZM11.5 5C11.2239 5 11 5.22386 11 5.5V10.5C11 10.7761 11.2239 11 11.5 11H12.5C12.7761 11 13 10.7761 13 10.5V5.5C13 5.22386 12.7761 5 12.5 5H11.5Z\"\n                  fill=\"currentColor\"\n                  fill-opacity=\"0.3\"\n                ></path>\n              </svg>\n            } @else if (hoveredAlign() === 'flex-end') {\n              <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                <path\n                  fill-rule=\"evenodd\"\n                  clip-rule=\"evenodd\"\n                  d=\"M11.5 7C11.2239 7 11 7.22386 11 7.5L11 12.5C11 12.7761 11.2239 13 11.5 13L12.5 13C12.7761 13 13 12.7761 13 12.5L13 7.5C13 7.22386 12.7761 7 12.5 7L11.5 7ZM7.5 13C7.22386 13 7 12.7761 7 12.5L7 3.5C7 3.22386 7.22386 3 7.5 3L8.5 3C8.77614 3 9 3.22386 9 3.5L9 12.5C9 12.7761 8.77614 13 8.5 13L7.5 13ZM3.5 13C3.22386 13 3 12.7761 3 12.5L3 9.5C3 9.22386 3.22386 9 3.5 9L4.5 9C4.77614 9 5 9.22386 5 9.5L5 12.5C5 12.7761 4.77614 13 4.5 13L3.5 13Z\"\n                  fill=\"currentColor\"\n                  fill-opacity=\"0.3\"\n                ></path>\n              </svg>\n            } @else if (hoveredAlign() === 'stretch') {\n              <svg width=\"20\" height=\"60\" viewBox=\"0 0 20 60\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                <path\n                  fill-rule=\"evenodd\"\n                  clip-rule=\"evenodd\"\n                  d=\"M7 53.5C7 53.7761 6.77614 54 6.5 54L5.5 54C5.22386 54 5 53.7761 5 53.5L5 6.5C5 6.22386 5.22386 6 5.5 6L6.5 6C6.77614 6 7 6.22386 7 6.5L7 53.5ZM11 53.5C11 53.7761 10.7761 54 10.5 54L9.5 54C9.22386 54 9 53.7761 9 53.5L9 6.5C9 6.22386 9.22386 6 9.5 6L10.5 6C10.7761 6 11 6.22386 11 6.5L11 53.5ZM14.5 54C14.7761 54 15 53.7761 15 53.5L15 6.5C15 6.22386 14.7761 6 14.5 6L13.5 6C13.2239 6 13 6.22386 13 6.5L13 53.5C13 53.7761 13.2239 54 13.5 54L14.5 54Z\"\n                  fill=\"currentColor\"\n                  fill-opacity=\"0.3\"\n                ></path>\n              </svg>\n            } @else if (hoveredAlign() === 'baseline') {\n              <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                <path\n                  d=\"M13 2V8.29289L14.6464 6.64645L15.3536 7.35355L12.5 10.2071L9.64645 7.35355L10.3536 6.64645L12 8.29289V2H13Z\"\n                  fill=\"currentColor\"\n                  fill-opacity=\"0.3\"\n                ></path>\n                <path d=\"M16 12L1 12V13L16 13V12Z\" fill=\"currentColor\"></path>\n                <path\n                  fill-rule=\"evenodd\"\n                  clip-rule=\"evenodd\"\n                  d=\"M4.62582 2H6.37412L8.72712 10H7.68476L7.09649 7.99994H3.90349L3.31524 10H2.27288L4.62582 2ZM6.80237 6.99994L5.62585 2.9999H5.37409L4.19761 6.99994H6.80237Z\"\n                  fill=\"currentColor\"\n                  fill-opacity=\"0.3\"\n                ></path>\n              </svg>\n            }\n          </div>\n        </div>\n      </div>\n      <div\n        class=\"ax-absolute ax-inset-0 ax-flex ax-pointer-events-none ax-transition-all\"\n        [style.justify-content]=\"clickedJustify()\"\n        [style.align-items]=\"clickedAlign()\"\n        [style.flex-direction]=\"flexDirection()\"\n      >\n        <div class=\"ax-flex ax-justify-center ax-items-center ax-min-w-5 ax-min-h-5\">\n          <div\n            class=\"ax-size-auto ax-z-[2] ax-rounded-lg ax-bg-[rgb(30,30,30)] ax-flex-none\"\n            [class]=\"flexDirectionIsColumn() ? '-ax-rotate-90' : ''\"\n          >\n            @if (clickedJustify() === 'space-between') {\n              @if (clickedAlign() === 'stretch') {\n                <svg width=\"60\" height=\"60\" viewBox=\"0 0 60 60\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                  <path\n                    fill-rule=\"evenodd\"\n                    clip-rule=\"evenodd\"\n                    d=\"M11 53.5C11 53.7761 10.7761 54 10.5 54H9.5C9.22386 54 9 53.7761 9 53.5L9 6.5C9 6.22386 9.22386 6 9.5 6H10.5C10.7761 6 11 6.22386 11 6.5L11 53.5ZM31 53.5C31 53.7761 30.7761 54 30.5 54H29.5C29.2239 54 29 53.7761 29 53.5L29 6.5C29 6.22386 29.2239 6 29.5 6H30.5C30.7761 6 31 6.22386 31 6.5L31 53.5ZM50.5 54C50.7761 54 51 53.7761 51 53.5L51 6.5C51 6.22386 50.7761 6 50.5 6H49.5C49.2239 6 49 6.22386 49 6.5L49 53.5C49 53.7761 49.2239 54 49.5 54H50.5Z\"\n                    fill=\"currentColor\"\n                  ></path>\n                </svg>\n              } @else if (clickedAlign() === 'baseline') {\n                <svg width=\"60\" height=\"20\" viewBox=\"0 0 60 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                  <path\n                    d=\"M50.5996 4V10.2929L52.246 8.64645L52.9531 9.35355L50.0996 12.2071L47.246 9.35355L47.9531 8.64645L49.5996 10.2929V4H50.5996Z\"\n                    fill=\"currentColor\"\n                  ></path>\n                  <path\n                    fill-rule=\"evenodd\"\n                    clip-rule=\"evenodd\"\n                    d=\"M9.35294 4H11.1012L13.4542 12H12.4119L11.8236 9.99994H8.63061L8.04236 12H7L9.35294 4ZM11.5295 8.99994L10.353 4.9999H10.1012L8.92473 8.99994H11.5295Z\"\n                    fill=\"currentColor\"\n                  ></path>\n                  <path d=\"M6 14H54V15H6V14Z\" fill=\"currentColor\"></path>\n                </svg>\n              } @else {\n                <svg width=\"60\" height=\"20\" viewBox=\"0 0 60 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                  <path\n                    fill-rule=\"evenodd\"\n                    clip-rule=\"evenodd\"\n                    d=\"M29 6.5C29 6.22386 29.2239 6 29.5 6H30.5C30.7761 6 31 6.22386 31 6.5V15.5C31 15.7761 30.7761 16 30.5 16H29.5C29.2239 16 29 15.7761 29 15.5V6.5ZM9 8.5C9 8.22386 9.22386 8 9.5 8H10.5C10.7761 8 11 8.22386 11 8.5V12.5C11 12.7761 10.7761 13 10.5 13H9.5C9.22386 13 9 12.7761 9 12.5V8.5ZM49.5 8C49.2239 8 49 8.22386 49 8.5V14.5C49 14.7761 49.2239 15 49.5 15H50.5C50.7761 15 51 14.7761 51 14.5V8.5C51 8.22386 50.7761 8 50.5 8H49.5Z\"\n                    fill=\"currentColor\"\n                  ></path>\n                </svg>\n              }\n            } @else if (clickedJustify() === 'space-around') {\n              @if (clickedAlign() === 'stretch') {\n                <svg width=\"60\" height=\"60\" viewBox=\"0 0 60 60\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                  <path d=\"M8 30L5 32L5 28L8 30Z\" fill=\"currentColor\"></path>\n                  <path\n                    fill-rule=\"evenodd\"\n                    clip-rule=\"evenodd\"\n                    d=\"M13 53.5C13 53.7761 12.7761 54 12.5 54H11.5C11.2239 54 11 53.7761 11 53.5L11 6.5C11 6.22386 11.2239 6 11.5 6H12.5C12.7761 6 13 6.22386 13 6.5L13 53.5ZM31 53.5C31 53.7761 30.7761 54 30.5 54H29.5C29.2239 54 29 53.7761 29 53.5L29 6.5C29 6.22386 29.2239 6 29.5 6H30.5C30.7761 6 31 6.22386 31 6.5L31 53.5ZM48.5 54C48.7761 54 49 53.7761 49 53.5L49 6.5C49 6.22386 48.7761 6 48.5 6H47.5C47.2239 6 47 6.22386 47 6.5L47 53.5C47 53.7761 47.2239 54 47.5 54H48.5Z\"\n                    fill=\"currentColor\"\n                  ></path>\n                  <path d=\"M52 30L55 28L55 32L52 30Z\" fill=\"currentColor\"></path>\n                </svg>\n              } @else if (clickedAlign() === 'baseline') {\n                <svg\n                  data-wf-icon=\"NineBoxAlignItemsRowSpaceAroundBaselineIcon\"\n                  width=\"60\"\n                  height=\"20\"\n                  viewBox=\"0 0 60 20\"\n                  fill=\"none\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                >\n                  <path\n                    d=\"M40.8529 4V10.2929L42.4993 8.64645L43.2064 9.35355L40.3529 12.2071L37.4993 9.35355L38.2064 8.64645L39.8529 10.2929V4H40.8529Z\"\n                    fill=\"currentColor\"\n                  ></path>\n                  <path\n                    fill-rule=\"evenodd\"\n                    clip-rule=\"evenodd\"\n                    d=\"M19.3523 4H21.1006L23.4536 12H22.4112L21.8229 9.99994H18.6299L18.0417 12H16.9993L19.3523 4ZM21.5288 8.99994L20.3523 4.9999H20.1005L18.924 8.99994H21.5288Z\"\n                    fill=\"currentColor\"\n                  ></path>\n                  <path d=\"M6 14H54V15H6V14Z\" fill=\"currentColor\"></path>\n                </svg>\n              } @else {\n                <svg width=\"60\" height=\"20\" viewBox=\"0 0 60 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                  <rect x=\"11\" y=\"9\" width=\"2\" height=\"5\" rx=\"0.5\" fill=\"currentColor\"></rect>\n                  <rect x=\"29\" y=\"6\" width=\"2\" height=\"10\" rx=\"0.5\" fill=\"currentColor\"></rect>\n                  <rect x=\"47\" y=\"8\" width=\"2\" height=\"7\" rx=\"0.5\" fill=\"currentColor\"></rect>\n                  <path\n                    fill-rule=\"evenodd\"\n                    clip-rule=\"evenodd\"\n                    d=\"M5 13L8 11L5 9V13ZM55 9L52 11L55 13V9Z\"\n                    fill=\"currentColor\"\n                  ></path>\n                </svg>\n              }\n            } @else if (clickedAlign() === 'flex-start') {\n              <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                <path\n                  fill-rule=\"evenodd\"\n                  clip-rule=\"evenodd\"\n                  d=\"M3.5 7C3.22386 7 3 6.77614 3 6.5V3.5C3 3.22386 3.22386 3 3.5 3H4.5C4.77614 3 5 3.22386 5 3.5V6.5C5 6.77614 4.77614 7 4.5 7H3.5ZM7.5 13C7.22386 13 7 12.7761 7 12.5V3.5C7 3.22386 7.22386 3 7.5 3H8.5C8.77614 3 9 3.22386 9 3.5V12.5C9 12.7761 8.77614 13 8.5 13H7.5ZM11.5 3C11.2239 3 11 3.22386 11 3.5V8.5C11 8.77614 11.2239 9 11.5 9H12.5C12.7761 9 13 8.77614 13 8.5V3.5C13 3.22386 12.7761 3 12.5 3H11.5Z\"\n                  fill=\"currentColor\"\n                ></path>\n              </svg>\n            } @else if (clickedAlign() === 'center') {\n              <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                <path\n                  fill-rule=\"evenodd\"\n                  clip-rule=\"evenodd\"\n                  d=\"M7.5 13C7.22386 13 7 12.7761 7 12.5V3.5C7 3.22386 7.22386 3 7.5 3H8.5C8.77614 3 9 3.22386 9 3.5V12.5C9 12.7761 8.77614 13 8.5 13H7.5ZM3.5 10C3.22386 10 3 9.77614 3 9.5V6.5C3 6.22386 3.22386 6 3.5 6H4.5C4.77614 6 5 6.22386 5 6.5V9.5C5 9.77614 4.77614 10 4.5 10H3.5ZM11.5 5C11.2239 5 11 5.22386 11 5.5V10.5C11 10.7761 11.2239 11 11.5 11H12.5C12.7761 11 13 10.7761 13 10.5V5.5C13 5.22386 12.7761 5 12.5 5H11.5Z\"\n                  fill=\"currentColor\"\n                ></path>\n              </svg>\n            } @else if (clickedAlign() === 'flex-end') {\n              <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                <path\n                  fill-rule=\"evenodd\"\n                  clip-rule=\"evenodd\"\n                  d=\"M11.5 7C11.2239 7 11 7.22386 11 7.5L11 12.5C11 12.7761 11.2239 13 11.5 13L12.5 13C12.7761 13 13 12.7761 13 12.5L13 7.5C13 7.22386 12.7761 7 12.5 7L11.5 7ZM7.5 13C7.22386 13 7 12.7761 7 12.5L7 3.5C7 3.22386 7.22386 3 7.5 3L8.5 3C8.77614 3 9 3.22386 9 3.5L9 12.5C9 12.7761 8.77614 13 8.5 13L7.5 13ZM3.5 13C3.22386 13 3 12.7761 3 12.5L3 9.5C3 9.22386 3.22386 9 3.5 9L4.5 9C4.77614 9 5 9.22386 5 9.5L5 12.5C5 12.7761 4.77614 13 4.5 13L3.5 13Z\"\n                  fill=\"currentColor\"\n                ></path>\n              </svg>\n            } @else if (clickedAlign() === 'stretch') {\n              <svg width=\"20\" height=\"60\" viewBox=\"0 0 20 60\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                <path\n                  fill-rule=\"evenodd\"\n                  clip-rule=\"evenodd\"\n                  d=\"M7 53.5C7 53.7761 6.77614 54 6.5 54L5.5 54C5.22386 54 5 53.7761 5 53.5L5 6.5C5 6.22386 5.22386 6 5.5 6L6.5 6C6.77614 6 7 6.22386 7 6.5L7 53.5ZM11 53.5C11 53.7761 10.7761 54 10.5 54L9.5 54C9.22386 54 9 53.7761 9 53.5L9 6.5C9 6.22386 9.22386 6 9.5 6L10.5 6C10.7761 6 11 6.22386 11 6.5L11 53.5ZM14.5 54C14.7761 54 15 53.7761 15 53.5L15 6.5C15 6.22386 14.7761 6 14.5 6L13.5 6C13.2239 6 13 6.22386 13 6.5L13 53.5C13 53.7761 13.2239 54 13.5 54L14.5 54Z\"\n                  fill=\"currentColor\"\n                ></path>\n              </svg>\n            } @else if (clickedAlign() === 'baseline') {\n              <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                <path\n                  d=\"M13 2V8.29289L14.6464 6.64645L15.3536 7.35355L12.5 10.2071L9.64645 7.35355L10.3536 6.64645L12 8.29289V2H13Z\"\n                  fill=\"currentColor\"\n                ></path>\n                <path d=\"M16 12L1 12V13L16 13V12Z\" fill=\"currentColor\"></path>\n                <path\n                  fill-rule=\"evenodd\"\n                  clip-rule=\"evenodd\"\n                  d=\"M4.62582 2H6.37412L8.72712 10H7.68476L7.09649 7.99994H3.90349L3.31524 10H2.27288L4.62582 2ZM6.80237 6.99994L5.62585 2.9999H5.37409L4.19761 6.99994H6.80237Z\"\n                  fill=\"currentColor\"\n                ></path>\n              </svg>\n            }\n          </div>\n        </div>\n      </div>\n    </div>\n    <div class=\"ax-grid ax-grid-cols-[auto_1fr] ax-items-center ax-justify-items-start ax-gap-2\">\n      <span class=\"ax-order-1\">X:</span>\n      <div class=\"ax-max-w-28\" [style.order]=\"flexDirectionIsColumn() ? '4' : '2'\">\n        <!-- <ax-select-box\n          [dataSource]=\"flexDirectionIsColumn()? alignDataSource : justifyDataSource\"\n          [ngModel]=\"flexDirectionIsColumn()? selectedAlign : selectedJustify\"\n          (ngModelChange)=\"flexDirectionIsColumn()? selectedAlign = $event : selectedJustify = $event\"\n          (onValueChanged)=\"flexDirectionIsColumn()? onAlignChange($event) :onJustifyChange($event)\"\n          textField=\"label\"\n          valueField=\"value\"\n          placeholder=\"Choose...\"\n        >\n        </ax-select-box> -->\n        <ax-select-box\n          class=\"ax-sm\"\n          [dataSource]=\"justifyDataSource\"\n          [(ngModel)]=\"selectedJustify\"\n          (onValueChanged)=\"onJustifyChange($event)\"\n          textField=\"label\"\n          valueField=\"value\"\n          placeholder=\"Choose...\"\n        >\n        </ax-select-box>\n      </div>\n      <span class=\"ax-order-3\">Y:</span>\n      <div class=\"ax-max-w-28\" [style.order]=\"flexDirectionIsColumn() ? '2' : '4'\">\n        <ax-select-box\n          class=\"ax-sm\"\n          [dataSource]=\"alignDataSource\"\n          [(ngModel)]=\"selectedAlign\"\n          (onValueChanged)=\"onAlignChange($event)\"\n          textField=\"label\"\n          valueField=\"value\"\n          placeholder=\"Choose...\"\n        >\n        </ax-select-box>\n      </div>\n    </div>\n  </div>\n  <span>Gap</span>\n  <div class=\"ax-flex ax-gap-2 ax-justify-between ax-items-center\">\n    @if (gapMode() === 'both') {\n      <ax-range-slider\n        class=\"ax-w-32\"\n        [ngModel]=\"gap().both\"\n        (ngModelChange)=\"setGap($event ?? 0, 'both')\"\n      ></ax-range-slider>\n      <ax-number-box\n        [minValue]=\"0\"\n        [maxValue]=\"999\"\n        [value]=\"gap().both\"\n        [changeOnScroll]=\"true\"\n        (onValueChanged)=\"setGap($event.value ?? 0, 'both')\"\n        class=\"ax-sm ax-max-w-[5.5rem]\"\n        [showSpinButtons]=\"false\"\n        ><ax-suffix><ax-text class=\"!ax-text-xs !ax-px-1\">PX</ax-text></ax-suffix></ax-number-box\n      >\n    } @else {\n      <div class=\"ax-flex ax-items-center ax-gap-2 ax-h-12\">\n        <span class=\"ax-text-xs\"\n          ><svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path\n              d=\"M12.2929 7.00004L9.14645 3.85359L9.85355 3.14648L14.2071 7.50004L9.85355 11.8536L9.14645 11.1465L12.2929 8.00004H3V7.00004H12.2929Z\"\n              fill=\"currentColor\"\n            ></path></svg ></span>\n        <ax-number-box\n          [minValue]=\"0\"\n          [maxValue]=\"999\"\n          [value]=\"gap().x\"\n          [changeOnScroll]=\"true\"\n          (onValueChanged)=\"setGap($event.value ?? 0, 'x')\"\n          class=\"ax-sm ax-min-w-5\"\n          [showSpinButtons]=\"false\"\n          ><ax-suffix><ax-text class=\"!ax-text-xs !ax-px-1\">PX</ax-text></ax-suffix></ax-number-box\n        >\n        <span class=\"ax-text-xs\"\n          ><svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path\n              d=\"M8.00001 12.2929L4.85356 9.14645L4.14645 9.85355L8.50001 14.2071L12.8536 9.85355L12.1465 9.14645L9.00001 12.2929L9.00001 3H8.00001L8.00001 12.2929Z\"\n              fill=\"currentColor\"\n            ></path></svg></span>\n        <ax-number-box\n          [minValue]=\"0\"\n          [maxValue]=\"999\"\n          [value]=\"gap().y\"\n          [changeOnScroll]=\"true\"\n          (onValueChanged)=\"setGap($event.value ?? 0, 'y')\"\n          class=\"ax-sm ax-min-w-5\"\n          [showSpinButtons]=\"false\"\n          ><ax-suffix><ax-text class=\"!ax-text-xs !ax-px-1\">PX</ax-text></ax-suffix></ax-number-box\n        >\n      </div>\n    }\n    <button (click)=\"setGapMode()\">\n      <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        @if (gapMode() === 'both') {\n          <path\n            fill-rule=\"evenodd\"\n            clip-rule=\"evenodd\"\n            d=\"M5 7L5 5C5 3.34315 6.34315 2 8 2C9.65685 2 11 3.34315 11 5V7C11.5523 7 12 7.44772 12 8V12C12 12.5523 11.5523 13 11 13H5C4.44772 13 4 12.5523 4 12V8C4 7.44771 4.44772 7 5 7ZM6 5C6 3.89543 6.89543 3 8 3C9.10457 3 10 3.89543 10 5V7H6V5ZM5 12V8H11V12H5Z\"\n            fill=\"currentColor\"\n          ></path>\n        } @else {\n          <path\n            fill-rule=\"evenodd\"\n            clip-rule=\"evenodd\"\n            d=\"M9 5C9 3.89543 9.89543 3 11 3C12.1046 3 13 3.89543 13 5V6H14V5C14 3.34315 12.6569 2 11 2C9.34315 2 8 3.34315 8 5V7H3C2.44772 7 2 7.44771 2 8V12C2 12.5523 2.44772 13 3 13H9C9.55228 13 10 12.5523 10 12V8C10 7.44772 9.55228 7 9 7V5ZM3 8H9V12H3V8Z\"\n            fill=\"currentColor\"\n          ></path>\n        }\n      </svg>\n    </button>\n  </div>\n  <!-- <span>Items</span>\n  <div>\n    <ax-number-box\n      [minValue]=\"0\"\n      [maxValue]=\"12\"\n      [ngModel]=\"itemsCount()\"\n      (ngModelChange)=\"setItemsCount($event ?? 0)\"\n      class=\"ax-w-32\"\n    ></ax-number-box>\n  </div> -->\n</div>\n","import { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\nexport const AXPFlexOptionsWidget: AXPWidgetConfig = {\n  name: 'flex-options',\n  title: 'Flex Options',\n  description: 'Make an Elements Flex',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  icon: 'fa-light fa-ellipsis-h',\n  type: 'editor',\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY],\n  components: {\n    edit: {\n      component: () =>\n        import('./flex-options-widget-editor.component').then((c) => c.AXPFlexOptionsWidgetEditComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    flexOptions: 'flex-options';\n  }\n}\n","import { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\n\nexport const AXPGridItemOptionsWidget: AXPWidgetConfig = {\n  name: 'grid-item-options',\n  title: 'Grid Item Options',\n  description: 'Configure grid item placement (span/start/end)',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  icon: 'fa-light fa-grid-2',\n  type: 'editor',\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY],\n  components: {\n    edit: {\n      component: () => import('./grid-item-options-widget.editor').then((c) => c.AXPGridItemOptionsWidgetEditComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    gridItemOptions: 'grid-item-options';\n  }\n}\n","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXNumberBoxModule } from '@acorex/components/number-box';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXPGridItemBoxString, AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n  AXP_Grid_Box_Align_Items_Options,\n  AXP_Grid_Box_Justify_Items_Options,\n} from '../grid-options/grid-options-widget.type';\n\n@Component({\n  selector: 'axp-grid-item-options-widget-editor',\n  template: `\n    <div class=\"ax-grid ax-grid-cols-6 ax-gap-3 ax-items-start\">\n      <div class=\"ax-col-span-2 ax-flex ax-flex-col ax-gap-1\">\n        <span>C Start</span>\n        <ax-number-box\n          [minValue]=\"1\"\n          [maxValue]=\"12\"\n          [ngModel]=\"getValue()?.colStart\"\n          (ngModelChange)=\"save('colStart', $event)\"\n        ></ax-number-box>\n      </div>\n\n      <div class=\"ax-col-span-2 ax-flex ax-flex-col ax-gap-1\">\n        <span>C End</span>\n        <ax-number-box\n          [minValue]=\"1\"\n          [maxValue]=\"12\"\n          [ngModel]=\"getValue()?.colEnd\"\n          (ngModelChange)=\"save('colEnd', $event)\"\n        ></ax-number-box>\n      </div>\n\n      <div class=\"ax-col-span-2 ax-flex ax-flex-col ax-gap-1\">\n        <span>C Span</span>\n        <ax-number-box\n          [minValue]=\"1\"\n          [maxValue]=\"12\"\n          [ngModel]=\"getValue()?.colSpan\"\n          (ngModelChange)=\"save('colSpan', $event)\"\n        >\n        </ax-number-box>\n      </div>\n\n      <div class=\"ax-col-span-2 ax-flex ax-flex-col ax-gap-1\">\n        <span>R Start</span>\n        <ax-number-box\n          [minValue]=\"1\"\n          [maxValue]=\"101\"\n          [ngModel]=\"getValue()?.rowStart\"\n          (ngModelChange)=\"save('rowStart', $event)\"\n        ></ax-number-box>\n      </div>\n\n      <div class=\"ax-col-span-2 ax-flex ax-flex-col ax-gap-1\">\n        <span>R End</span>\n        <ax-number-box\n          [minValue]=\"1\"\n          [maxValue]=\"101\"\n          [ngModel]=\"getValue()?.rowEnd\"\n          (ngModelChange)=\"save('rowEnd', $event)\"\n        ></ax-number-box>\n      </div>\n\n      <div class=\"ax-col-span-2 ax-flex ax-flex-col ax-gap-1\">\n        <span>R Span</span>\n        <ax-number-box\n          [minValue]=\"1\"\n          [maxValue]=\"12\"\n          [ngModel]=\"getValue()?.rowSpan\"\n          (ngModelChange)=\"save('rowSpan', $event)\"\n        >\n        </ax-number-box>\n      </div>\n\n      <!-- <div class=\"ax-col-span-3 ax-flex ax-flex-col ax-gap-1\">\n        <span>Align Self</span>\n        <ax-select-box\n          [dataSource]=\"alignOptions\"\n          [valueField]=\"'value'\"\n          [textField]=\"'label'\"\n          [ngModel]=\"getValue()?.alignSelf\"\n          (ngModelChange)=\"save('alignSelf', $event)\"\n        >\n          <ax-clear-button></ax-clear-button>\n        </ax-select-box>\n      </div>\n\n      <div class=\"ax-col-span-3 ax-flex ax-flex-col ax-gap-1\">\n        <span>Justify Self</span>\n        <ax-select-box\n          [dataSource]=\"justifyOptions\"\n          [valueField]=\"'value'\"\n          [textField]=\"'label'\"\n          [ngModel]=\"getValue()?.justifySelf\"\n          (ngModelChange)=\"save('justifySelf', $event)\"\n        >\n          <ax-clear-button></ax-clear-button>\n        </ax-select-box>\n      </div> -->\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXNumberBoxModule, AXSelectBoxModule, FormsModule, AXDecoratorModule],\n})\nexport class AXPGridItemOptionsWidgetEditComponent extends AXPValueWidgetComponent<AXPGridItemBoxString | undefined> {\n  readonly alignOptions = AXP_Grid_Box_Align_Items_Options;\n  readonly justifyOptions = AXP_Grid_Box_Justify_Items_Options;\n\n  save<K extends keyof AXPGridItemBoxString>(key: K, val: AXPGridItemBoxString[K]) {\n    this.setValue({ ...(this.getValue() ?? {}), [key]: val });\n  }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXKBDComponent, AXKBDItemComponent } from '@acorex/components/kbd';\nimport { AXNumberBoxModule } from '@acorex/components/number-box';\nimport { AXPopoverComponent, AXPopoverModule } from '@acorex/components/popover';\nimport { AXRangeSliderModule } from '@acorex/components/range-slider';\nimport {\n  AXPPropertyEditorHelper,\n  AXPPropertyEditorSideValues,\n  AXPSpacingBox,\n  AXPSpacingBoxString,\n  AXPValueWidgetComponent,\n} from '@acorex/platform/layout/widget-core';\nimport { chordToKbdItemKeys } from '@acorex/platform/core';\nimport { CommonModule } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  effect,\n  inject,\n  NgZone,\n  signal,\n  untracked,\n  viewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { cloneDeep } from 'lodash-es';\nimport {\n  AXP_default_Spacing_Box_Units,\n  AXP_default_Spacing_Box_Value,\n  AXP_SPACING_UNITS,\n  AXPSpacingBoxDefaultValues,\n  AXPSpacingUnit,\n} from '../property-editor.type';\n\n@Component({\n  selector: 'axp-spacing-widget-editor',\n  templateUrl: './spacing-widget-editor.component.html',\n  styleUrl: './spacing-widget-editor.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    AXNumberBoxModule,\n    FormsModule,\n    AXCheckBoxModule,\n    AXPopoverModule,\n    CommonModule,\n    AXRangeSliderModule,\n    AXButtonModule,\n    AXDropdownButtonModule,\n    AXKBDComponent,\n    AXKBDItemComponent,\n    AXNumberBoxModule,\n    AXDecoratorModule,\n  ],\n})\nexport class AXPSpacingWidgetEditComponent extends AXPValueWidgetComponent<AXPSpacingBoxString> {\n  private ngZone = inject(NgZone);\n\n  protected readonly toggleShortcutKeys = chordToKbdItemKeys('ctrl+b');\n\n  private isDragging = false;\n\n  protected calculatedValues = signal(cloneDeep(AXP_default_Spacing_Box_Value));\n  protected originalValues = signal(cloneDeep(AXP_default_Spacing_Box_Value));\n  protected units = signal(cloneDeep(AXP_default_Spacing_Box_Units));\n\n  //#region ----   Units Helpers   ----\n\n  protected readonly spacingUnits = AXP_SPACING_UNITS;\n\n  protected getSpacingUnit(type: keyof AXPSpacingBox, side: AXPPropertyEditorSideValues): string {\n    return (this.units()[type][side] as string) ?? 'px';\n  }\n\n  protected getSpacingUnitLabel(type: keyof AXPSpacingBox, side: AXPPropertyEditorSideValues): string {\n    return this.getSpacingUnit(type, side).toUpperCase();\n  }\n\n  protected onSpacingUnitChange(\n    unit: AXPSpacingUnit,\n    type: keyof AXPSpacingBox,\n    side: AXPPropertyEditorSideValues,\n  ): void {\n    this.units.update((old) => ({\n      ...old,\n      [type]: {\n        ...old[type],\n        [side]: unit,\n      },\n    }));\n\n    // Clamp value if switching to percentage\n    if (unit === '%') {\n      const current = this.calculatedValues()[type][side] as number;\n      const clamped = Math.max(0, Math.min(100, current));\n      if (clamped !== current) {\n        this.calculatedValues.update((prev) => ({\n          ...prev,\n          [type]: {\n            ...prev[type],\n            [side]: clamped,\n          },\n        }));\n      }\n    }\n\n    const data = AXPPropertyEditorHelper.parseSpacingBoxReverse(this.calculatedValues(), this.units());\n    this.setValue(cloneDeep(data));\n  }\n\n  //#endregion\n\n  protected current = signal<{\n    type: keyof AXPSpacingBox;\n    side: AXPPropertyEditorSideValues;\n    el?: HTMLElement | null;\n  }>({\n    type: 'margin',\n    side: 'bottom',\n  });\n  protected FixedValues: AXPSpacingBoxDefaultValues[] = [\n    { label: '0', value: 0, rowspan: 2 },\n    { label: '5', value: 5 },\n    { label: '10', value: 10 },\n    { label: '25', value: 25 },\n    { label: '50', value: 50 },\n    { label: '75', value: 75 },\n    { label: '100', value: 100 },\n    { label: '150', value: 150 },\n    { label: '200', value: 200 },\n  ];\n\n  protected popover = viewChild.required(AXPopoverComponent);\n\n  protected setSpacing(\n    input: number | Event,\n    type: keyof AXPSpacingBox,\n    side: AXPPropertyEditorSideValues,\n    baseUnit?: AXPSpacingUnit,\n  ) {\n    let value = input instanceof Event ? Number.parseInt((input.target as HTMLInputElement).value) : input;\n\n    // Clamp when base unit or current unit is percentage\n    const unitForClamp = baseUnit ?? (this.getSpacingUnit(type, side) as AXPSpacingUnit);\n    if (unitForClamp === '%') {\n      value = Math.max(0, Math.min(100, value as number));\n    }\n\n    const currentValue = this.calculatedValues();\n\n    this.calculatedValues.set({\n      ...currentValue,\n      [type]: {\n        ...currentValue[type],\n        [side]: value,\n      },\n    });\n\n    const data = AXPPropertyEditorHelper.parseSpacingBoxReverse(this.calculatedValues(), this.units());\n    this.setValue(cloneDeep(data));\n  }\n\n  protected openPopUp(event: Event, type: keyof AXPSpacingBox, side: AXPPropertyEditorSideValues) {\n    if (this.isDragging) {\n      return;\n    }\n    this.current.set({ type, side, el: (event as PointerEvent).target as HTMLElement });\n    this.popover().target = (event as PointerEvent).target as HTMLElement;\n    this.popover().placement = side === 'right' ? ['bottom-end', 'end'] : ['bottom', 'top'];\n    this.popover().open();\n    // setTimeout(() => {\n    //   this.popover().getHostElement().querySelector('input')?.focus();\n    // }, 100);\n  }\n\n  protected listenToMove(event: Event, type: keyof AXPSpacingBox, side: AXPPropertyEditorSideValues): void {\n    this.ngZone.runOutsideAngular(() => {\n      event.preventDefault();\n      let startY = 0,\n        startX = 0,\n        currentValue = 0;\n\n      const targetElement = event.target as HTMLElement | SVGElement;\n      const sides: AXPPropertyEditorSideValues[] = ['top', 'right', 'bottom', 'left'];\n\n      (targetElement as HTMLElement).style.cursor = 's-resize';\n\n      const onMouseDown = (e: MouseEvent | TouchEvent) => {\n        const { clientY, clientX } = this.getClientCoordinates(e);\n        startY = clientY;\n        startX = clientX;\n\n        // Capture base unit from initiating element\n        const baseUnit = this.getSpacingUnit(type, side) as AXPSpacingUnit;\n\n        window.addEventListener('mousemove', onMouseMove);\n        window.addEventListener('mouseup', onMouseUp);\n        window.addEventListener('touchmove', onMouseMove);\n        window.addEventListener('touchend', onMouseUp);\n\n        (onMouseDown as any).baseUnit = baseUnit;\n      };\n\n      const onMouseMove = (e: MouseEvent | TouchEvent) => {\n        const { clientY, clientX } = this.getClientCoordinates(e);\n        const delta = (clientY - startY) * -1; // vertical movement drives value\n        const baseUnit = (onMouseDown as any).baseUnit as AXPSpacingUnit;\n\n        this.isDragging = true;\n        const updateAll = e instanceof MouseEvent && e.shiftKey; // Shift => all sides\n        const updateAxis = e instanceof MouseEvent && e.altKey; // Alt => axis pair\n\n        const runUpdate = (updateSides: AXPPropertyEditorSideValues[]) => {\n          this.ngZone.run(() => {\n            updateSides.forEach((currentSide) => {\n              const oldValue = this.calculatedValues()[type][currentSide];\n              const newValue = delta + AXPPropertyEditorHelper.getValueWithUnit(oldValue).value;\n              this.setSpacing(Math.max(newValue, 0), type, currentSide, baseUnit);\n            });\n          });\n        };\n\n        if (updateAll) {\n          runUpdate(sides);\n        } else if (updateAxis) {\n          const vertical: AXPPropertyEditorSideValues[] = ['top', 'bottom'];\n          const horizontal: AXPPropertyEditorSideValues[] = ['left', 'right'];\n          const axisSides = vertical.includes(side) ? vertical : horizontal;\n          // Ensure all four sides use initiating side unit before applying values\n          this.units.update((old) => {\n            const updatedType = { ...old[type] } as Record<AXPPropertyEditorSideValues, string>;\n            const allSides: AXPPropertyEditorSideValues[] = ['top', 'right', 'bottom', 'left'];\n            allSides.forEach((s) => (updatedType[s] = baseUnit));\n            return {\n              ...old,\n              [type]: updatedType as any,\n            };\n          });\n          runUpdate(axisSides);\n        } else {\n          const oldValue = this.calculatedValues()[type][side];\n          currentValue = delta + AXPPropertyEditorHelper.getValueWithUnit(oldValue).value;\n          this.ngZone.run(() => {\n            this.setSpacing(Math.max(currentValue, 0), type, side, baseUnit);\n          });\n        }\n\n        startY = clientY;\n        startX = clientX;\n      };\n\n      const onMouseUp = () => {\n        window.removeEventListener('mousemove', onMouseMove);\n        window.removeEventListener('mouseup', onMouseUp);\n        window.removeEventListener('touchmove', onMouseMove);\n        window.removeEventListener('touchend', onMouseUp);\n        (targetElement as HTMLElement).style.cursor = '';\n        //TODO FIX LATER\n        setTimeout(() => {\n          this.isDragging = false;\n        });\n      };\n\n      onMouseDown(event as MouseEvent | TouchEvent);\n    });\n  }\n\n  private getClientCoordinates(e: MouseEvent | TouchEvent): { clientX: number; clientY: number } {\n    if (e instanceof MouseEvent) {\n      return { clientX: e.clientX, clientY: e.clientY };\n    }\n    const touch = e.touches[0];\n    return { clientX: touch.clientX, clientY: touch.clientY };\n  }\n\n  valueEffect = effect(() => {\n    this.getValue();\n    untracked(() => {\n      if (this.getValue()) {\n        this.calculatedValues.set(AXPPropertyEditorHelper.parseSpacingBox(this.getValue()));\n      }\n    });\n  });\n}\n","<div class=\"axp-spacing-box ax-flex ax-justify-center ax-items-center ax-pt-4 ax-pb-2\">\n  <div class=\"axp-spacing-inner-box\">\n    <div class=\"axp-spacing-margin-box\">\n      <!--MARGIN SVG DEFINE-->\n      <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"224\" height=\"112\" class=\"area\">\n        <mask id=\"margin-mask\" width=\"224\" height=\"112\">\n          <rect fill=\"#000\" height=\"112\" width=\"224\" x=\"0\" y=\"0\"></rect>\n          <rect fill=\"#fff\" height=\"112\" rx=\"4\" width=\"224\" x=\"0\" y=\"0\"></rect>\n          <rect fill=\"#000\" height=\"66\" rx=\"4\" width=\"154\" x=\"35\" y=\"23\"></rect>\n        </mask>\n        <defs>\n          <linearGradient id=\"FuseLinearGradient\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n            <stop stop-color=\"white\"></stop>\n            <stop offset=\"1\" stop-color=\"white\" stop-opacity=\"0\"></stop>\n          </linearGradient>\n        </defs>\n\n        <!--MARGIN TOP SVG-->\n        <g\n          class=\"hover:ax-brightness-75\"\n          style=\"cursor: s-resize\"\n          (click)=\"openPopUp($event, 'margin', 'top')\"\n          (mousedown)=\"listenToMove($event, 'margin', 'top')\"\n        >\n          <g>\n            <path\n              mode=\"delta\"\n              fill=\"var(--color-background-1)\"\n              d=\"\n  m0,0\n  h224\n  l-36,24\n  h-152\n  l-36,-24z\n  \"\n              mask=\"url(#margin-mask)\"\n            ></path>\n            <path\n              mode=\"delta\"\n              fill=\"white\"\n              d=\"\n  m0,0\n  h224\n  l-36,24\n  h-152\n  l-36,-24z\n  \"\n              fill-opacity=\"0.12\"\n              mask=\"url(#margin-mask)\"\n            ></path>\n            <path\n              mode=\"delta\"\n              fill=\"url(#FuseLinearGradient)\"\n              d=\"\n  m0,0\n  h224\n  l-36,24\n  h-152\n  l-36,-24z\n  \"\n              fill-opacity=\"0.02\"\n              mask=\"url(#margin-mask)\"\n            ></path>\n          </g>\n        </g>\n        <!--MARGIN RIGHT SVG-->\n        <g\n          class=\"hover:ax-brightness-75\"\n          style=\"cursor: s-resize\"\n          (click)=\"openPopUp($event, 'margin', 'right')\"\n          (mousedown)=\"listenToMove($event, 'margin', 'right')\"\n        >\n          <g>\n            <path\n              mode=\"delta\"\n              fill=\"var(--color-background-1)\"\n              d=\"\n  m224,0\n  v112\n  l-36,-24\n  v-64\n  l36,-24z\n  \"\n              mask=\"url(#margin-mask)\"\n            ></path>\n            <path\n              mode=\"delta\"\n              fill=\"white\"\n              d=\"\n  m224,0\n  v112\n  l-36,-24\n  v-64\n  l36,-24z\n  \"\n              fill-opacity=\"0.094\"\n              mask=\"url(#margin-mask)\"\n            ></path>\n          </g>\n        </g>\n        <!--MARGIN BOTTOM SVG-->\n        <g\n          class=\"hover:ax-brightness-75\"\n          style=\"cursor: s-resize\"\n          (click)=\"openPopUp($event, 'margin', 'bottom')\"\n          (mousedown)=\"listenToMove($event, 'margin', 'bottom')\"\n        >\n          <g>\n            <path\n              mode=\"delta\"\n              fill=\"var(--color-background-1)\"\n              d=\"\n  m0,112\n  h224\n  l-36,-24\n  h-152\n  l-36,24z\n  \"\n              mask=\"url(#margin-mask)\"\n            ></path>\n            <path\n              mode=\"delta\"\n              fill=\"white\"\n              d=\"\n  m0,112\n  h224\n  l-36,-24\n  h-152\n  l-36,24z\n  \"\n              fill-opacity=\"0.064\"\n              mask=\"url(#margin-mask)\"\n            ></path>\n          </g>\n        </g>\n        <!--MARGIN LEFT SVG-->\n        <g\n          class=\"hover:ax-brightness-75\"\n          style=\"cursor: s-resize\"\n          (click)=\"openPopUp($event, 'margin', 'left')\"\n          (mousedown)=\"listenToMove($event, 'margin', 'left')\"\n        >\n          <g>\n            <path\n              mode=\"delta\"\n              fill=\"var(--color-background-1)\"\n              d=\"\n  m0,0\n  v112\n  l36,-24\n  v-64\n  l-36,-24z\n  \"\n              mask=\"url(#margin-mask)\"\n            ></path>\n            <path\n              mode=\"delta\"\n              fill=\"white\"\n              d=\"\n  m0,0\n  v112\n  l36,-24\n  v-64\n  l-36,-24z\n  \"\n              fill-opacity=\"0.094\"\n              mask=\"url(#margin-mask)\"\n            ></path>\n          </g>\n        </g>\n      </svg>\n\n      <!--MARGIN TOP VALUE-->\n      <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 1 / 2 / 2 / 3\">\n        <div class=\"axp-spacing-value-field\" style=\"grid-area: 1 / 2 / 2 / 3\">\n          <span>{{ calculatedValues().margin.top + ' ' + units().margin.top }}</span>\n        </div>\n      </div>\n\n      <!--MARGIN RIGHT VALUE-->\n      <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 2 / 3 / 3 / 4\">\n        <div class=\"axp-spacing-value-field\" style=\"grid-area: 2 / 3 / 3 / 4\">\n          <span>{{ calculatedValues().margin.right + ' ' + units().margin.right }}</span>\n        </div>\n      </div>\n\n      <!--MARGIN BOTTOM VALUE-->\n      <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 3 / 2 / 4 / 3\">\n        <div class=\"axp-spacing-value-field\" style=\"grid-area: 3 / 2 / 4 / 3\">\n          <span>{{ calculatedValues().margin.bottom + ' ' + units().margin.bottom }}</span>\n        </div>\n      </div>\n\n      <!--MARGIN LEFT VALUE-->\n      <div tabindex=\"0\" style=\"grid-area: 2 / 1 / 3 / 2\" class=\"axp-spacing-value-container\">\n        <div class=\"axp-spacing-value-field\" style=\"grid-area: 2 / 1 / 3 / 2\">\n          <span>{{ calculatedValues().margin.left + ' ' + units().margin.left }}</span>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"axp-spacing-padding-box\">\n      <!--SVG DEFINE-->\n      <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"150\" height=\"62\" class=\"area\">\n        <mask id=\"padding-mask\" width=\"150\" height=\"62\">\n          <rect fill=\"#000\" height=\"60\" width=\"150\" x=\"0\" y=\"0\"></rect>\n          <rect fill=\"#fff\" height=\"60\" rx=\"2\" width=\"150\" x=\"0\" y=\"0\"></rect>\n          <rect fill=\"#000\" height=\"14\" rx=\"2\" width=\"80\" x=\"35\" y=\"23\"></rect>\n        </mask>\n\n        <!--PADDING TOP SVG-->\n        <g\n          class=\"hover:ax-brightness-75\"\n          style=\"cursor: s-resize\"\n          (click)=\"openPopUp($event, 'padding', 'top')\"\n          (mousedown)=\"listenToMove($event, 'padding', 'top')\"\n        >\n          <g>\n            <path\n              mode=\"delta\"\n              fill=\"var(--color-background-1)\"\n              d=\"\n  m0,0\n  h150\n  l-36,24\n  h-78\n  l-36,-24z\n  \"\n              mask=\"url(#padding-mask)\"\n            ></path>\n            <path\n              mode=\"delta\"\n              fill=\"white\"\n              d=\"\n  m0,0\n  h150\n  l-36,24\n  h-78\n  l-36,-24z\n  \"\n              fill-opacity=\"0.064\"\n              mask=\"url(#padding-mask)\"\n            ></path>\n          </g>\n        </g>\n\n        <!--PADDING RIGHT SVG-->\n        <g\n          class=\"hover:ax-brightness-75\"\n          style=\"cursor: s-resize\"\n          (click)=\"openPopUp($event, 'padding', 'right')\"\n          (mousedown)=\"listenToMove($event, 'padding', 'right')\"\n        >\n          <g>\n            <path\n              mode=\"delta\"\n              fill=\"var(--color-background-1)\"\n              d=\"\n  m150,0\n  v60\n  l-36,-24\n  v-12\n  l36,-24z\n  \"\n              mask=\"url(#padding-mask)\"\n            ></path>\n            <path\n              mode=\"delta\"\n              fill=\"white\"\n              d=\"\n  m150,0\n  v60\n  l-36,-24\n  v-12\n  l36,-24z\n  \"\n              fill-opacity=\"0.094\"\n              mask=\"url(#padding-mask)\"\n            ></path>\n          </g>\n        </g>\n\n        <!--PADDING BOTTOM SVG-->\n        <g\n          class=\"hover:ax-brightness-75\"\n          style=\"cursor: s-resize\"\n          (click)=\"openPopUp($event, 'padding', 'bottom')\"\n          (mousedown)=\"listenToMove($event, 'padding', 'bottom')\"\n        >\n          <g>\n            <path\n              mode=\"delta\"\n              fill=\"var(--color-background-1)\"\n              d=\"\n  m0,60\n  h150\n  l-36,-24\n  h-78\n  l-36,24z\n  \"\n              mask=\"url(#padding-mask)\"\n            ></path>\n            <path\n              mode=\"delta\"\n              fill=\"white\"\n              d=\"\n  m0,60\n  h150\n  l-36,-24\n  h-78\n  l-36,24z\n  \"\n              fill-opacity=\"0.12\"\n              mask=\"url(#padding-mask)\"\n            ></path>\n          </g>\n        </g>\n\n        <!--PADDING LEFT SVG-->\n        <g\n          class=\"hover:ax-brightness-75\"\n          style=\"cursor: s-resize\"\n          (click)=\"openPopUp($event, 'padding', 'left')\"\n          (mousedown)=\"listenToMove($event, 'padding', 'left')\"\n        >\n          <g>\n            <path\n              mode=\"delta\"\n              fill=\"var(--color-background-1)\"\n              d=\"\n  m0,0\n  v60\n  l36,-24\n  v-12\n  l-36,-24z\n  \"\n              mask=\"url(#padding-mask)\"\n            ></path>\n            <path\n              mode=\"delta\"\n              fill=\"white\"\n              d=\"\n  m0,0\n  v60\n  l36,-24\n  v-12\n  l-36,-24z\n  \"\n              fill-opacity=\"0.094\"\n              mask=\"url(#padding-mask)\"\n            ></path>\n          </g>\n        </g>\n      </svg>\n\n      <!--PADDING TOP SVG-->\n      <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 1 / 2 / 2 / 3\">\n        <div class=\"axp-spacing-value-field\" style=\"grid-area: 1 / 2 / 2 / 3\">\n          <span>{{ this.calculatedValues().padding.top + ' ' + units().padding.top }}</span>\n        </div>\n      </div>\n\n      <!--PADDING RIGHT SVG-->\n      <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 2 / 3 / 3 / 4\">\n        <div class=\"axp-spacing-value-field\" style=\"grid-area: 2 / 3 / 3 / 4\">\n          <span>{{ this.calculatedValues().padding.right + ' ' + units().padding.right }}</span>\n        </div>\n      </div>\n\n      <!--PADDING BOTTOM SVG-->\n      <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 3 / 2 / 4 / 3\">\n        <div class=\"axp-spacing-value-field\" style=\"grid-area: 3 / 2 / 4 / 3\">\n          <span>{{ this.calculatedValues().padding.bottom + ' ' + units().padding.bottom }}</span>\n        </div>\n      </div>\n\n      <!--PADDING LEFT SVG-->\n      <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 2 / 1 / 3 / 2\">\n        <div class=\"axp-spacing-value-field\" style=\"grid-area: 2 / 1 / 3 / 2\">\n          <span>{{ this.calculatedValues().padding.left + ' ' + units().padding.left }}</span>\n        </div>\n      </div>\n    </div>\n\n    <!--PADDING TEXT-->\n    <svg class=\"axp-spacing-padding-text\" xmlns=\"http://www.w3.org/2000/svg\" width=\"100%\" height=\"100%\">\n      <text x=\"5\" y=\"10\" fill=\"white\" font-weight=\"500\" font-size=\"7\">PADDING</text>\n    </svg>\n\n    <!--MARGIN TEXT-->\n    <svg class=\"axp-spacing-margin-text\" xmlns=\"http://www.w3.org/2000/svg\" width=\"100%\" height=\"100%\">\n      <text x=\"5\" y=\"10\" fill=\"white\" font-weight=\"500\" font-size=\"7\">MARGIN</text>\n    </svg>\n\n    <!-- Ctrl hint -->\n    <!-- <div class=\"ax-text-xs ax-text-center ax-text-neutral-400 ax-mt-1\">\n      Hold Ctrl while dragging to adjust all sides\n    </div> -->\n  </div>\n</div>\n\n<ng-template #template let-type=\"type\" let-side=\"side\" let-value=\"value\">\n  <div\n    class=\"axp-spacing-popup-container\"\n    (keydown.control.b)=\"setSpacing(originalValues()[this.current().type][this.current().side], type, side)\"\n  >\n    <div class=\"axp-spacing-popover\">\n      <!--SET EMPTY-->\n      <div class=\"ax-size-4 ax-cursor-pointer\" (click)=\"setSpacing(0, type, side)\">\n        <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <path opacity=\"0.4\" d=\"M14 2L14 13L10 13L10 2L14 2Z\" fill=\"currentColor\" fill-opacity=\"0.67\"></path>\n          <path\n            fill-rule=\"evenodd\"\n            clip-rule=\"evenodd\"\n            d=\"M7.99995 7L7.99995 1H8.99995L8.99995 14H7.99995L7.99995 8L3.70706 8L5.85351 10.1464L5.1464 10.8536L1.79285 7.5L5.1464 4.14645L5.85351 4.85355L3.70706 7L7.99995 7Z\"\n            fill=\"currentColor\"\n          ></path>\n        </svg>\n      </div>\n\n      <div class=\"ax-flex ax-justify-center ax-h-6 ax-flex-col\">\n        <input\n          type=\"range\"\n          name=\"range\"\n          [min]=\"0\"\n          [max]=\"200\"\n          [value]=\"this.calculatedValues()[this.current().type][this.current().side]\"\n          (input)=\"setSpacing($event, type, side)\"\n        />\n      </div>\n      <div>\n        <!--INPUT NUMBER-->\n        <div style=\"--local-gap: 8px\">\n          <div\n            style=\"\n              gap: 8px;\n              height: auto;\n              display: flex;\n              flex-flow: column;\n              -webkit-box-align: stretch;\n              align-items: stretch;\n              -webkit-box-pack: start;\n              position: relative;\n              justify-content: stretch;\n              width: 100%;\n              -webkit-box-flex: 1;\n              flex-grow: 1;\n            \"\n          >\n            <ax-number-box\n              class=\"ax-sm\"\n              [minValue]=\"0\"\n              [changeOnScroll]=\"true\"\n              [ngModel]=\"value\"\n              (onValueChanged)=\"setSpacing($event.value ?? 0, type, side)\"\n              [showSpinButtons]=\"false\"\n            >\n              <ax-suffix>\n                <ax-dropdown-button [text]=\"getSpacingUnitLabel(type, side)\" [look]=\"'blank'\" [mode]=\"'dropdown'\">\n                  <ax-button-item-list>\n                    @for (u of spacingUnits; track $index) {\n                      <ax-button-item\n                        [text]=\"u.toUpperCase()\"\n                        [selected]=\"getSpacingUnit(type, side) === u\"\n                        (onClick)=\"onSpacingUnitChange(u, type, side)\"\n                      ></ax-button-item>\n                    }\n                  </ax-button-item-list>\n                </ax-dropdown-button>\n              </ax-suffix>\n            </ax-number-box>\n          </div>\n        </div>\n      </div>\n      <div class=\"axp-spacing-template-values\">\n        @for (i of FixedValues; track $index) {\n          <div\n            (click)=\"setSpacing(i.value, type, side)\"\n            class=\"hover:!ax-bg-gradient-to-b hover:!ax-from-white/20 hover:!ax-to-white/5 !ax-cursor-pointer\"\n            [class]=\"i.colspan ? 'ax-col-span-' + i.colspan : ''\"\n            [class]=\"i.rowspan ? 'ax-row-span-' + i.rowspan : ''\"\n            tabindex=\"0\"\n            style=\"\n              border-bottom-color: var(--color-border-1);\n              border-left-color: var(--color-border-1);\n              border-right-color: var(--color-border-1);\n              border-top-color: var(--color-border-1);\n              outline: 0px;\n              cursor: default;\n              user-select: none;\n              padding: 0px;\n              box-sizing: border-box;\n              font-family: inherit;\n              font-size: inherit;\n              --component-icon-color: var(--color-text-secondary);\n              position: relative;\n              display: flex;\n              align-items: center;\n              justify-content: center;\n              height: 100%;\n              border-radius: 4px;\n              color: var(--color-action-secondary-text);\n              background: var(--color-action-secondary-background);\n              border-width: 0px;\n              border-style: solid;\n              box-shadow: var(--box-shadows-action-secondary);\n              align-self: center;\n            \"\n          >\n            <div class=\"ax-truncate\">\n              {{ i.label }}\n              <span class=\"ax-text-xs ax-text-neutral-400\">\n                {{ units()[this.current().type][this.current().side] }}</span\n              >\n            </div>\n          </div>\n        }\n      </div>\n    </div>\n\n    <div class=\"ax-h-[1px] ax-mt-1 ax-mb-1 ax-bg-border-1 ax-pointer-events-none\"></div>\n\n    <div\n      [class.ax-opacity-50]=\"\n        originalValues()[this.current().type][this.current().side] ===\n        calculatedValues()[this.current().type][this.current().side]\n      \"\n      (click)=\"setSpacing(originalValues()[this.current().type][this.current().side], type, side)\"\n      tabindex=\"0\"\n      class=\"ax-outline-none ax-select-none ax-py-1 ax-px-2 ax-my-1 ax-min-h-6 ax-cursor-pointer hover:!ax-bg-[#404040]\"\n    >\n      <div class=\"ax-flex ax-flex-row ax-items-center\">\n        <div class=\"ax-min-w-6 ax-self-center ax-grow ax-basis-0\">\n          <div class=\"ax-items-center ax-box-border ax-grid ax-grid-cols-[16px_1fr_auto] ax-gap-x-2 ax-gap-y-1\">\n            <div class=\"ax-size-4\">\n              <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                <path\n                  d=\"M3.70712 5.00004L6.35357 2.35359L5.64646 1.64648L1.79291 5.50004L5.64646 9.35359L6.35357 8.64648L3.70712 6.00004H10C11.6569 6.00004 13 7.34318 13 9.00004C13 10.6569 11.6569 12 10 12H8.00001V13H10C12.2092 13 14 11.2092 14 9.00004C14 6.7909 12.2092 5.00004 10 5.00004H3.70712Z\"\n                  fill=\"currentColor\"\n                ></path>\n              </svg>\n            </div>\n            <div>Reset</div>\n          </div>\n        </div>\n        <div class=\"ax-self-center\">\n          <div\n            class=\"ax-cursor-default ax-select-none ax-text-[11.5px] ax-font-normal ax-leading-4 ax-tracking-tight ax-text-secondary ax-justify-self-end ax-ml-[1px]\"\n          >\n            <ax-kbd class=\"look-text\">\n              <ax-kbd-item [keys]=\"toggleShortcutKeys\"></ax-kbd-item>\n            </ax-kbd>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</ng-template>\n\n<ax-popover #popover [openOn]=\"'click'\" [offsetY]=\"10\" [closeOn]=\"'clickOut'\">\n  <ng-container\n    [ngTemplateOutlet]=\"template\"\n    [ngTemplateOutletContext]=\"{\n      type: this.current().type,\n      side: this.current().side,\n      value: this.calculatedValues()[this.current().type][this.current().side],\n    }\"\n  ></ng-container>\n</ax-popover>\n","import { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\nexport const AXPSpacingWidget: AXPWidgetConfig = {\n  name: 'spacing',\n  title: 'Box Spacing',\n  description: 'Editing Elements Spacing',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  icon: 'fa-light fa-box',\n  type: 'editor',\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY],\n  components: {\n    edit: {\n      component: () => import('./spacing-widget-editor.component').then((c) => c.AXPSpacingWidgetEditComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    spacing: 'spacing';\n  }\n}\n","export type AXPValidationWidgetTypes =\n  | 'requiredValidation'\n  | 'regularExpressionValidation'\n  | 'minLengthValidation'\n  | 'maxLengthValidation'\n  | 'lessThanValidation'\n  | 'greaterThanValidation'\n  | 'betweenValidation'\n  | 'equalValidation'\n  | 'callbackValidation';\n\nexport interface AXPWidgetValidation {\n  rule: string;\n  message: string;\n  title?: string;\n  options?: any;\n  placeholder: string;\n}\n\nexport const AXP_BASE_VALIDATION_INFORMATION: Record<\n  AXPValidationWidgetTypes,\n  AXPWidgetValidation\n> = {\n  requiredValidation: {\n    rule: 'required',\n    message: 'This field is required.',\n    placeholder: 'Enter error message',\n  },\n  regularExpressionValidation: {\n    rule: 'regularExpression',\n    message: 'Invalid format. Check the pattern.',\n    placeholder: 'Enter regular expression',\n    title: 'Validation Pattern:',\n    options: { pattern: '' },\n  },\n  minLengthValidation: {\n    rule: 'minLength',\n    message: 'Too short. Enter at least 1 characters.',\n    placeholder: 'Enter minimum length',\n    title: 'Minimum Length:',\n    options: { value: 1 },\n  },\n  maxLengthValidation: {\n    rule: 'maxLength',\n    message: 'Too long. Maximum 8 characters is allowed.',\n    placeholder: 'Enter maximum length',\n    title: 'Maximum Length:',\n    options: { value: 8 },\n  },\n  lessThanValidation: {\n    rule: 'lessThan',\n    message: 'Value must be less than 5.',\n    placeholder: 'Enter maximum allowed value',\n    title: 'Maximum Value:',\n    options: { value: 5 },\n  },\n  greaterThanValidation: {\n    rule: 'greaterThan',\n    message: 'Value must be greater than 3.',\n    placeholder: 'Enter minimum allowed value',\n    title: 'Minimum Value:',\n    options: { value: 3 },\n  },\n  betweenValidation: {\n    rule: 'between',\n    message: 'Value must be between 0 and 10.',\n    placeholder: 'Min, Max',\n    title: 'Value Range:',\n    options: { lowerValue: 0, upperValue: 10 },\n  },\n  equalValidation: {\n    rule: 'equal',\n    message: 'Value must be equal to 10.',\n    placeholder: 'Enter the value',\n    title: 'Value:',\n    options: { value: '10' },\n  },\n  callbackValidation: {\n    rule: 'callback',\n    message: 'Invalid value.',\n    placeholder: 'Enter A callback to check validation.',\n    title: 'Validation Callback:',\n    options: {\n      validate: `(val: any) => {\n        const isValid = val > 10;\n        return {\n          rule: 'callback',\n          result: isValid,\n          message: isValid ? '' : 'Please fill the content',\n          value: val,\n        };\n      }`,\n    },\n  },\n};\n","import { AXLabelModule } from '@acorex/components/label';\nimport { AXSwitchModule } from '@acorex/components/switch';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport {\n  afterEveryRender,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  input,\n  model,\n  viewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n  selector: 'axp-base-validation-component',\n  template: `<div>\n    <div class=\"ax-flex ax-flex-col ax-gap-2 ax-pt-1 ax-text-xs ax-tracking-wider\">\n      <ax-switch [ngModel]=\"validationStatus()\" (ngModelChange)=\"setValidationStatus($event)\"> </ax-switch>\n      @if (validationStatus()) {\n        <ng-content select=\".if-valid\"></ng-content>\n        <div>\n          <p class=\"ax-pb-1\">Validation Error Message:</p>\n          <ax-text-box\n            [placeholder]=\"validationTextPlaceholder()\"\n            [ngModel]=\"validationText()\"\n            (ngModelChange)=\"setValidationText($event)\"\n          ></ax-text-box>\n        </div>\n      }\n    </div>\n    <ng-content></ng-content>\n    <div #el class=\"ax-h-[1px]\"></div>\n  </div> `,\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule, AXLabelModule, AXSwitchModule, AXTextBoxModule, FormsModule],\n})\nexport class AXPBaseValidationComponent {\n  public validationStatus = model(false);\n  public validationText = model('');\n\n  public validationTextPlaceholder = input('Enter Error Message');\n\n  protected setValidationStatus(event: boolean) {\n    this.validationStatus.set(event);\n    this.isStatusChanged = true;\n  }\n\n  protected setValidationText(event: string) {\n    this.validationText.set(event);\n  }\n\n  private isStatusChanged = false;\n  private endOfViewEl = viewChild<ElementRef<HTMLDivElement>>('el');\n\n  #syncScroll = afterEveryRender(() => {\n    if (this.endOfViewEl()?.nativeElement && this.validationStatus() && this.isStatusChanged) {\n      const rect = this.endOfViewEl()?.nativeElement.getBoundingClientRect()!;\n      const isInViewport = rect?.top >= 0 && rect?.bottom <= window.innerHeight;\n      if (!isInViewport) {\n        this.endOfViewEl()?.nativeElement.scrollIntoView({ behavior: 'auto', block: 'center' });\n      }\n    }\n    this.isStatusChanged = false;\n  });\n}\n","import { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXNumberBoxModule } from '@acorex/components/number-box';\nimport { AXPValidationRule } from '@acorex/platform/contracts';\n\nimport { AXPWidgetCoreModule, AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, effect, linkedSignal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXP_BASE_VALIDATION_INFORMATION, AXPValidationWidgetTypes } from '../base-validation/base-validation';\nimport { AXPBaseValidationComponent } from '../base-validation/base-validation.component';\n\n@Component({\n  selector: 'axp-between-validation-widget-editor',\n  template: ` <axp-base-validation-component\n    [validationStatus]=\"validationStatus()\"\n    (validationStatusChange)=\"ToggleRule($event)\"\n    [(validationText)]=\"validationText\"\n  >\n    <div class=\"if-valid\">\n      <div>\n        <p class=\"ax-pb-1\">{{ validationInformation.title }}</p>\n        <div class=\"ax-flex ax-items-center ax-gap-4\">\n          <ax-number-box\n            [placeholder]=\"validationPlaceholder[0]\"\n            [showSpinButtons]=\"false\"\n            [ngModel]=\"validationLowerValue()\"\n            [maxValue]=\"validationUpperValue() - 1\"\n            (ngModelChange)=\"setValidation($event)\"\n          ></ax-number-box>\n          <ax-number-box\n            [placeholder]=\"validationPlaceholder[1]\"\n            [showSpinButtons]=\"false\"\n            [minValue]=\"validationLowerValue() + 1\"\n            [ngModel]=\"validationUpperValue()\"\n            (ngModelChange)=\"setValidation($event, false)\"\n          ></ax-number-box>\n          <ax-check-box [ngModel]=\"validationInclusive()\" (ngModelChange)=\"validationInclusive.set($event)\">\n            <ax-label>inclusive</ax-label>\n          </ax-check-box>\n        </div>\n      </div>\n    </div>\n  </axp-base-validation-component>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    AXPWidgetCoreModule,\n    AXPBaseValidationComponent,\n    AXCheckBoxModule,\n    AXLabelModule,\n    AXNumberBoxModule,\n    FormsModule,\n  ],\n})\nexport class AXPBetweenValidationWidgetEditComponent extends AXPValueWidgetComponent<AXPValidationRule | undefined> {\n  protected validationName = this.token.node.name as AXPValidationWidgetTypes;\n  protected validationInformation = AXP_BASE_VALIDATION_INFORMATION[this.validationName];\n\n  protected validationStatus = linkedSignal(() =>\n    this.getValue()?.rule === this.validationInformation.rule ? true : false,\n  );\n  protected validationLowerValue = linkedSignal(\n    () => this.getValue()?.options?.lowerValue ?? this.validationInformation.options?.lowerValue ?? 1,\n  );\n  protected validationUpperValue = linkedSignal(\n    () => this.getValue()?.options?.upperValue ?? this.validationInformation.options?.upperValue ?? 10,\n  );\n  protected validationInclusive = linkedSignal<boolean>(\n    () => this.getValue()?.options?.inclusive ?? this.validationInformation.options?.inclusive ?? false,\n  );\n\n  protected validationText = linkedSignal(() => this.getValue()?.message ?? this.validationInformation.message);\n  protected validationPlaceholder = this.validationInformation?.placeholder.split(',').length\n    ? ['Min', 'Max']\n    : this.validationInformation?.placeholder.split(',');\n\n  ToggleRule(event: boolean) {\n    this.validationStatus.set(event);\n  }\n\n  setValidation(event: number, isLower = true) {\n    isLower ? this.validationLowerValue.set(event) : this.validationUpperValue.set(event);\n  }\n\n  #syncChange = effect(() => {\n    if (this.validationStatus()) {\n      this.setValue({\n        rule: this.validationInformation.rule,\n        message: this.validationText(),\n        options: {\n          lowerValue: this.validationLowerValue(),\n          upperValue: this.validationUpperValue(),\n          inclusive: this.validationInclusive(),\n        },\n      });\n    } else this.setValue(undefined);\n  });\n}\n","\nimport { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\n\nexport const AXPBetweenExpressionValidationWidget: AXPWidgetConfig = {\n  name: 'between-validation',\n  title: 'Value Must Be Between Range',\n  type: 'validation',\n  icon: 'fa-light fa-random',\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n  components: {\n    edit: {\n      component: () =>\n        import('./between-validation-widget-edit.component').then((c) => c.AXPBetweenValidationWidgetEditComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    betweenValidation: 'between-validation';\n  }\n}\n","import { AXTextAreaModule } from '@acorex/components/text-area';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXPValidationRule } from '@acorex/platform/contracts';\n\nimport { AXPWidgetCoreModule, AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, effect, linkedSignal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXP_BASE_VALIDATION_INFORMATION, AXPValidationWidgetTypes } from '../base-validation/base-validation';\nimport { AXPBaseValidationComponent } from '../base-validation/base-validation.component';\n\n@Component({\n  selector: 'axp-callback-validation-widget-editor',\n  template: ` <axp-base-validation-component\n    [validationStatus]=\"validationStatus()\"\n    (validationStatusChange)=\"ToggleRule($event)\"\n    [(validationText)]=\"validationText\"\n  >\n    <div class=\"if-valid\">\n      <div>\n        <p class=\"ax-pb-1\">{{ validationInformation.title }}</p>\n        <ax-text-area\n          [placeholder]=\"validationInformation.placeholder\"\n          [ngModel]=\"validationValue()\"\n          (ngModelChange)=\"setValidation($event)\"\n        ></ax-text-area>\n        ax\n      </div>\n    </div>\n  </axp-base-validation-component>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule, AXPBaseValidationComponent, AXTextAreaModule, AXTextBoxModule, FormsModule],\n})\nexport class AXPCallbackValidationWidgetEditComponent extends AXPValueWidgetComponent<AXPValidationRule | undefined> {\n  protected validationName = this.token.node.name as AXPValidationWidgetTypes;\n  protected validationInformation = AXP_BASE_VALIDATION_INFORMATION[this.validationName];\n\n  protected validationStatus = linkedSignal(() =>\n    this.getValue()?.rule === this.validationInformation.rule ? true : false,\n  );\n  protected validationValue = linkedSignal<string>(\n    () => this.getValue()?.options?.validate ?? this.validationInformation.options?.validate ?? '',\n  );\n  protected validationText = linkedSignal(() => this.getValue()?.message ?? this.validationInformation.message);\n  protected validationPlaceholder = this.validationInformation.placeholder;\n\n  ToggleRule(event: boolean) {\n    this.validationStatus.set(event);\n  }\n\n  setValidation(event: string) {\n    this.validationValue.set(event);\n  }\n\n  #syncChange = effect(() => {\n    if (this.validationStatus()) {\n      this.setValue({\n        rule: this.validationInformation.rule,\n        message: this.validationText(),\n        options: { validate: this.validationValue() },\n      });\n    } else this.setValue(undefined);\n  });\n}\n","\nimport { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\n\nexport const AXPCallbackValidationWidget: AXPWidgetConfig = {\n  name: 'callback-validation',\n  title: 'Exact Value Requirement',\n  type: 'validation',\n  icon: 'fa-light fa-callbacks',\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n  components: {\n    edit: {\n      component: () =>\n        import('./callback-validation-widget-edit.component').then((c) => c.AXPCallbackValidationWidgetEditComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    callbackValidation: 'callback-validation';\n  }\n}\n","import { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXPValidationRule } from '@acorex/platform/contracts';\n\nimport { AXPWidgetCoreModule, AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, effect, linkedSignal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXP_BASE_VALIDATION_INFORMATION, AXPValidationWidgetTypes } from '../base-validation/base-validation';\nimport { AXPBaseValidationComponent } from '../base-validation/base-validation.component';\n\n@Component({\n  selector: 'axp-equal-validation-widget-editor',\n  template: ` <axp-base-validation-component\n    [validationStatus]=\"validationStatus()\"\n    (validationStatusChange)=\"ToggleRule($event)\"\n    [(validationText)]=\"validationText\"\n  >\n    <div class=\"if-valid\">\n      <div>\n        <p class=\"ax-pb-1\">{{ validationInformation.title }}</p>\n        <ax-text-box\n          [placeholder]=\"validationInformation.placeholder\"\n          [ngModel]=\"validationValue()\"\n          (ngModelChange)=\"setValidation($event)\"\n        ></ax-text-box>\n      </div>\n    </div>\n  </axp-base-validation-component>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule, AXPBaseValidationComponent, AXTextBoxModule, FormsModule],\n})\nexport class AXPEqualValidationWidgetEditComponent extends AXPValueWidgetComponent<AXPValidationRule | undefined> {\n  protected validationName = this.token.node.name as AXPValidationWidgetTypes;\n  protected validationInformation = AXP_BASE_VALIDATION_INFORMATION[this.validationName];\n\n  protected validationStatus = linkedSignal(() =>\n    this.getValue()?.rule === this.validationInformation.rule ? true : false,\n  );\n  protected validationValue = linkedSignal(\n    () => this.getValue()?.options?.value ?? this.validationInformation.options?.value ?? 1,\n  );\n  protected validationText = linkedSignal(() => this.getValue()?.message ?? this.validationInformation.message);\n  protected validationPlaceholder = this.validationInformation.placeholder;\n\n  ToggleRule(event: boolean) {\n    this.validationStatus.set(event);\n  }\n\n  setValidation(event: number) {\n    this.validationValue.set(event);\n  }\n\n  #syncChange = effect(() => {\n    if (this.validationStatus()) {\n      this.setValue({\n        rule: this.validationInformation.rule,\n        message: this.validationText(),\n        options: { value: this.validationValue() },\n      });\n    } else this.setValue(undefined);\n  });\n}\n","\nimport { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\n\nexport const AXPEqualValidationWidget: AXPWidgetConfig = {\n  name: 'equal-validation',\n  title: 'Exact Value Requirement',\n  type: 'validation',\n  icon: 'fa-light fa-equals',\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n  components: {\n    edit: {\n      component: () =>\n        import('./equal-validation-widget-edit.component').then((c) => c.AXPEqualValidationWidgetEditComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    equalValidation: 'equal-validation';\n  }\n}\n","import { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXNumberBoxModule } from '@acorex/components/number-box';\nimport { AXPValidationRule } from '@acorex/platform/contracts';\n\nimport { AXPWidgetCoreModule, AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, effect, linkedSignal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXP_BASE_VALIDATION_INFORMATION, AXPValidationWidgetTypes } from '../base-validation/base-validation';\nimport { AXPBaseValidationComponent } from '../base-validation/base-validation.component';\n\n@Component({\n  selector: 'axp-greater-than-validation-widget-editor',\n  template: ` <axp-base-validation-component\n    [validationStatus]=\"validationStatus()\"\n    (validationStatusChange)=\"ToggleRule($event)\"\n    [(validationText)]=\"validationText\"\n  >\n    <div class=\"if-valid\">\n      <div>\n        <p class=\"ax-pb-1\">{{ validationInformation.title }}</p>\n        <div class=\"ax-flex ax-items-center ax-gap-4\">\n          <ax-number-box\n            [placeholder]=\"validationInformation.placeholder\"\n            [ngModel]=\"validationValue()\"\n            (ngModelChange)=\"setValidation($event)\"\n          ></ax-number-box>\n          <ax-check-box [ngModel]=\"validationInclusive()\" (ngModelChange)=\"validationInclusive.set($event)\">\n            <ax-label>inclusive</ax-label>\n          </ax-check-box>\n        </div>\n      </div>\n    </div>\n  </axp-base-validation-component>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    AXPWidgetCoreModule,\n    AXPBaseValidationComponent,\n    AXLabelModule,\n    AXCheckBoxModule,\n    AXNumberBoxModule,\n    FormsModule,\n  ],\n})\nexport class AXPGreaterThanValidationWidgetEditComponent extends AXPValueWidgetComponent<\n  AXPValidationRule | undefined\n> {\n  protected validationName = this.token.node.name as AXPValidationWidgetTypes;\n  protected validationInformation = AXP_BASE_VALIDATION_INFORMATION[this.validationName];\n\n  protected validationStatus = linkedSignal(() =>\n    this.getValue()?.rule === this.validationInformation.rule ? true : false,\n  );\n  protected validationValue = linkedSignal(\n    () => this.getValue()?.options?.value ?? this.validationInformation.options?.value ?? 1,\n  );\n  protected validationInclusive = linkedSignal<boolean>(\n    () => this.getValue()?.options?.inclusive ?? this.validationInformation.options?.inclusive ?? false,\n  );\n\n  protected validationText = linkedSignal(() => this.getValue()?.message ?? this.validationInformation.message);\n  protected validationPlaceholder = this.validationInformation.placeholder;\n\n  ToggleRule(event: boolean) {\n    this.validationStatus.set(event);\n  }\n\n  setValidation(event: number) {\n    this.validationValue.set(event);\n  }\n\n  #syncChange = effect(() => {\n    if (this.validationStatus()) {\n      this.setValue({\n        rule: this.validationInformation.rule,\n        message: this.validationText(),\n        options: { value: this.validationValue(), inclusive: this.validationInclusive() },\n      });\n    } else this.setValue(undefined);\n  });\n}\n","\nimport { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\n\nexport const AXPGreaterThanExpressionValidationWidget: AXPWidgetConfig = {\n  name: 'greater-than-validation',\n  title: 'Value Must Be Greater Than',\n  type: 'validation',\n  icon: 'fa-light fa-chevron-right',\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n  components: {\n    edit: {\n      component: () =>\n        import('./greater-than-validation-widget-edit.component').then(\n          (c) => c.AXPGreaterThanValidationWidgetEditComponent\n        ),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    greaterThanValidation: 'greater-than-validation';\n  }\n}\n","import { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXNumberBoxModule } from '@acorex/components/number-box';\nimport { AXPValidationRule } from '@acorex/platform/contracts';\n\nimport { AXPWidgetCoreModule, AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, effect, linkedSignal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXP_BASE_VALIDATION_INFORMATION, AXPValidationWidgetTypes } from '../base-validation/base-validation';\nimport { AXPBaseValidationComponent } from '../base-validation/base-validation.component';\n\n@Component({\n  selector: 'axp-less-than-validation-widget-editor',\n  template: ` <axp-base-validation-component\n    [validationStatus]=\"validationStatus()\"\n    (validationStatusChange)=\"ToggleRule($event)\"\n    [(validationText)]=\"validationText\"\n  >\n    <div class=\"if-valid\">\n      <div>\n        <p class=\"ax-pb-1\">{{ validationInformation.title }}</p>\n        <div class=\"ax-flex ax-items-center ax-gap-4\">\n          <ax-number-box\n            [placeholder]=\"validationInformation.placeholder\"\n            [ngModel]=\"validationValue()\"\n            (ngModelChange)=\"setValidation($event)\"\n          ></ax-number-box>\n          <ax-check-box [ngModel]=\"validationInclusive()\" (ngModelChange)=\"validationInclusive.set($event)\">\n            <ax-label>inclusive</ax-label>\n          </ax-check-box>\n        </div>\n      </div>\n    </div>\n  </axp-base-validation-component>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    AXPWidgetCoreModule,\n    AXPBaseValidationComponent,\n    AXLabelModule,\n    AXCheckBoxModule,\n    AXNumberBoxModule,\n    FormsModule,\n  ],\n})\nexport class AXPLessThanValidationWidgetEditComponent extends AXPValueWidgetComponent<AXPValidationRule | undefined> {\n  protected validationName = this.token.node.name as AXPValidationWidgetTypes;\n  protected validationInformation = AXP_BASE_VALIDATION_INFORMATION[this.validationName];\n\n  protected validationStatus = linkedSignal(() =>\n    this.getValue()?.rule === this.validationInformation.rule ? true : false,\n  );\n  protected validationValue = linkedSignal(\n    () => this.getValue()?.options?.value ?? this.validationInformation.options?.value ?? 1,\n  );\n\n  protected validationInclusive = linkedSignal<boolean>(\n    () => this.getValue()?.options?.inclusive ?? this.validationInformation.options?.inclusive ?? false,\n  );\n\n  protected validationText = linkedSignal(() => this.getValue()?.message ?? this.validationInformation.message);\n  protected validationPlaceholder = this.validationInformation.placeholder;\n\n  ToggleRule(event: boolean) {\n    this.validationStatus.set(event);\n  }\n\n  setValidation(event: number) {\n    this.validationValue.set(event);\n  }\n\n  #syncChange = effect(() => {\n    if (this.validationStatus()) {\n      this.setValue({\n        rule: this.validationInformation.rule,\n        message: this.validationText(),\n        options: { value: this.validationValue(), inclusive: this.validationInclusive() },\n      });\n    } else this.setValue(undefined);\n  });\n}\n","\nimport { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\n\nexport const AXPLessThanExpressionValidationWidget: AXPWidgetConfig = {\n  name: 'less-than-validation',\n  title: 'Value Must Be Less Than',\n  type: 'validation',\n  icon: 'fa-light fa-less-than-equal',\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n  components: {\n    edit: {\n      component: () =>\n        import('./less-than-validation-widget-edit.component').then((c) => c.AXPLessThanValidationWidgetEditComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    lessThanValidation: 'less-than-validation';\n  }\n}\n","import { AXNumberBoxModule } from '@acorex/components/number-box';\nimport { AXPValidationRule } from '@acorex/platform/contracts';\n\nimport { AXPWidgetCoreModule, AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, effect, linkedSignal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXPValidationWidgetTypes, AXP_BASE_VALIDATION_INFORMATION } from '../base-validation/base-validation';\nimport { AXPBaseValidationComponent } from '../base-validation/base-validation.component';\n\n@Component({\n  selector: 'axp-max-length-validation-widget-editor',\n  template: ` <axp-base-validation-component\n    [validationStatus]=\"validationStatus()\"\n    (validationStatusChange)=\"ToggleRule($event)\"\n    [(validationText)]=\"validationText\"\n  >\n    <div class=\"if-valid\">\n      <div>\n        <p class=\"ax-pb-1\">{{ validationInformation.title }}</p>\n        <ax-number-box\n          [placeholder]=\"validationInformation.placeholder\"\n          [ngModel]=\"validationValue()\"\n          (ngModelChange)=\"setValidation($event)\"\n        ></ax-number-box>\n      </div>\n    </div>\n  </axp-base-validation-component>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule, AXPBaseValidationComponent, AXNumberBoxModule, FormsModule],\n})\nexport class AXPMaxLengthValidationWidgetEditComponent extends AXPValueWidgetComponent<AXPValidationRule | undefined> {\n  protected validationName = this.token.node.name as AXPValidationWidgetTypes;\n  protected validationInformation = AXP_BASE_VALIDATION_INFORMATION[this.validationName];\n\n  protected validationStatus = linkedSignal(() =>\n    this.getValue()?.rule === this.validationInformation.rule ? true : false,\n  );\n  protected validationValue = linkedSignal(\n    () => this.getValue()?.options?.value ?? this.validationInformation.options?.value ?? 2,\n  );\n  protected validationText = linkedSignal(() => this.getValue()?.message ?? this.validationInformation.message);\n  protected validationPlaceholder = this.validationInformation.placeholder;\n\n  ToggleRule(event: boolean) {\n    this.validationStatus.set(event);\n  }\n\n  setValidation(event: number) {\n    this.validationValue.set(event);\n  }\n\n  #syncChange = effect(() => {\n    if (this.validationStatus()) {\n      this.setValue({\n        rule: this.validationInformation.rule,\n        message: this.validationText(),\n        options: { value: this.validationValue() },\n      });\n    } else this.setValue(undefined);\n  });\n}\n","\nimport { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\n\nexport const AXPMaxLengthExpressionValidationWidget: AXPWidgetConfig = {\n  name: 'max-length-validation',\n  title: 'Maximum Character Limit',\n  type: 'validation',\n  icon: 'fa-light fa-text-slash',\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n  components: {\n    edit: {\n      component: () =>\n        import('./max-length-validation-widget-edit.component').then(\n          (c) => c.AXPMaxLengthValidationWidgetEditComponent\n        ),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    maxLengthValidation: 'max-length-validation';\n  }\n}\n","import { AXNumberBoxModule } from '@acorex/components/number-box';\nimport { AXPValidationRule } from '@acorex/platform/contracts';\n\nimport { AXPWidgetCoreModule, AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, effect, linkedSignal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXP_BASE_VALIDATION_INFORMATION, AXPValidationWidgetTypes } from '../base-validation/base-validation';\nimport { AXPBaseValidationComponent } from '../base-validation/base-validation.component';\n\n@Component({\n  selector: 'axp-min-length-validation-widget-editor',\n  template: ` <axp-base-validation-component\n    [validationStatus]=\"validationStatus()\"\n    (validationStatusChange)=\"ToggleRule($event)\"\n    [(validationText)]=\"validationText\"\n  >\n    <div class=\"if-valid\">\n      <div>\n        <p class=\"ax-pb-1\">{{ validationInformation.title }}</p>\n        <ax-number-box\n          [placeholder]=\"validationInformation.placeholder\"\n          [ngModel]=\"validationValue()\"\n          (ngModelChange)=\"setValidation($event)\"\n        ></ax-number-box>\n      </div>\n    </div>\n  </axp-base-validation-component>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule, AXPBaseValidationComponent, AXNumberBoxModule, FormsModule],\n})\nexport class AXPMinLengthValidationWidgetEditComponent extends AXPValueWidgetComponent<AXPValidationRule | undefined> {\n  protected validationName = this.token.node.name as AXPValidationWidgetTypes;\n  protected validationInformation = AXP_BASE_VALIDATION_INFORMATION[this.validationName];\n\n  protected validationStatus = linkedSignal(() =>\n    this.getValue()?.rule === this.validationInformation.rule ? true : false,\n  );\n  protected validationValue = linkedSignal(\n    () => this.getValue()?.options?.value ?? this.validationInformation.options?.value ?? 1,\n  );\n  protected validationText = linkedSignal(() => this.getValue()?.message ?? this.validationInformation.message);\n  protected validationPlaceholder = this.validationInformation.placeholder;\n\n  ToggleRule(event: boolean) {\n    this.validationStatus.set(event);\n  }\n\n  setValidation(event: number) {\n    this.validationValue.set(event);\n  }\n\n  #syncChange = effect(() => {\n    if (this.validationStatus()) {\n      this.setValue({\n        rule: this.validationInformation.rule,\n        message: this.validationText(),\n        options: { value: this.validationValue() },\n      });\n    } else this.setValue(undefined);\n  });\n}\n","\nimport { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\n\nexport const AXPMinLengthExpressionValidationWidget: AXPWidgetConfig = {\n  name: 'min-length-validation',\n  title: 'Minimum Character Limit',\n  type: 'validation',\n  icon: 'fa-light fa-text-width',\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n  components: {\n    edit: {\n      component: () =>\n        import('./min-length-validation-widget-edit.component').then(\n          (c) => c.AXPMinLengthValidationWidgetEditComponent\n        ),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    minLengthValidation: 'min-length-validation';\n  }\n}\n","import { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXPValidationRule } from '@acorex/platform/contracts';\n\nimport { AXPWidgetCoreModule, AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, effect, linkedSignal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXP_BASE_VALIDATION_INFORMATION, AXPValidationWidgetTypes } from '../base-validation/base-validation';\nimport { AXPBaseValidationComponent } from '../base-validation/base-validation.component';\n\n@Component({\n  selector: 'axp-regular-expression-validation-widget-editor',\n  template: ` <axp-base-validation-component\n    [validationStatus]=\"validationStatus()\"\n    (validationStatusChange)=\"ToggleRule($event)\"\n    [(validationText)]=\"validationText\"\n  >\n    <div class=\"if-valid\">\n      <div>\n        <p class=\"ax-pb-1\">{{ validationInformation.title }}</p>\n        <ax-text-box\n          [placeholder]=\"validationInformation.placeholder\"\n          [ngModel]=\"validationValue()\"\n          (ngModelChange)=\"setValidation($event)\"\n        ></ax-text-box>\n      </div>\n    </div>\n  </axp-base-validation-component>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule, AXPBaseValidationComponent, AXTextBoxModule, FormsModule],\n})\nexport class AXPRegularExpressionValidationWidgetEditComponent extends AXPValueWidgetComponent<\n  AXPValidationRule | undefined\n> {\n  protected validationName = this.token.node.name as AXPValidationWidgetTypes;\n  protected validationInformation = AXP_BASE_VALIDATION_INFORMATION[this.validationName];\n\n  protected validationStatus = linkedSignal(() =>\n    this.getValue()?.rule === this.validationInformation.rule ? true : false,\n  );\n  protected validationValue = linkedSignal(\n    () => this.getValue()?.options?.value ?? this.validationInformation.options?.pattern ?? '',\n  );\n  protected validationText = linkedSignal(() => this.getValue()?.message ?? this.validationInformation.message);\n  protected validationPlaceholder = this.validationInformation.placeholder;\n\n  protected ToggleRule(event: boolean) {\n    this.validationStatus.set(event);\n  }\n\n  protected setValidation(event: string) {\n    this.validationValue.set(event);\n  }\n\n  #syncChange = effect(() => {\n    if (this.validationStatus()) {\n      this.setValue({\n        rule: this.validationInformation.rule,\n        message: this.validationText(),\n        options: { pattern: this.validationValue() },\n      });\n    } else this.setValue(undefined);\n  });\n}\n","\nimport { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\n\nexport const AXPRegularExpressionValidationWidget: AXPWidgetConfig = {\n  name: 'regular-expression-validation',\n  title: 'Regex Pattern Matching Validation',\n  type: 'validation',\n  icon: 'fa-light fa-code',\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n  components: {\n    edit: {\n      component: () =>\n        import('./regular-expression-validation-widget-edit.component').then(\n          (c) => c.AXPRegularExpressionValidationWidgetEditComponent\n        ),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    regularExpressionValidation: 'regular-expression-validation';\n  }\n}\n","import { AXPValidationRule } from '@acorex/platform/contracts';\n\nimport { AXPWidgetCoreModule, AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, effect, linkedSignal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXP_BASE_VALIDATION_INFORMATION, AXPValidationWidgetTypes } from '../base-validation/base-validation';\nimport { AXPBaseValidationComponent } from '../base-validation/base-validation.component';\n\n@Component({\n  selector: 'axp-required-validation-widget-editor',\n  template: `<axp-base-validation-component\n    [validationStatus]=\"validationStatus()\"\n    (validationStatusChange)=\"ToggleRule($event)\"\n    [(validationText)]=\"validationText\"\n    [validationTextPlaceholder]=\"validationPlaceholder\"\n  >\n  </axp-base-validation-component>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule, AXPBaseValidationComponent, FormsModule],\n})\nexport class AXPRequiredValidationWidgetEditComponent extends AXPValueWidgetComponent<AXPValidationRule | undefined> {\n  protected validationName = this.token.node.name as AXPValidationWidgetTypes;\n  protected validationInformation = AXP_BASE_VALIDATION_INFORMATION[this.validationName];\n\n  protected validationStatus = linkedSignal(() =>\n    this.getValue()?.rule === this.validationInformation.rule ? true : false,\n  );\n  protected validationText = linkedSignal(() => this.getValue()?.message ?? this.validationInformation.message);\n  protected validationPlaceholder = this.validationInformation.placeholder;\n\n  protected ToggleRule(event: boolean) {\n    this.validationStatus.set(event);\n  }\n\n  #syncChange = effect(() => {\n    if (this.validationStatus()) {\n      this.setValue({ rule: this.validationInformation.rule, message: this.validationText() });\n    } else this.setValue(undefined);\n  });\n}\n","\nimport { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\n\nexport const AXPRequiredValidationWidget: AXPWidgetConfig = {\n  name: 'required-validation',\n  title: 'Mandatory Field Validation',\n  type: 'validation',\n  icon: 'fa-light fa-exclamation-circle',\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n  components: {\n    edit: {\n      component: () =>\n        import('./required-validation-widget-edit.component').then((c) => c.AXPRequiredValidationWidgetEditComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    requiredValidation: 'required-validation';\n  }\n}\n","import { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n@Component({\n  selector: 'axp-cron-job-widget-column',\n  template: `{{ rawValue }}`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['rawValue', 'rowData'],\n})\nexport class AXPCronJobWidgetColumnComponent extends AXPColumnWidgetComponent<any> {}\n","import { AXCronJobModule } from '@acorex/components/cron-job';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n@Component({\n  selector: 'axp-cron-job-widget-designer',\n  template: `<ax-cron-job-container [ngModel]=\"expreesion()\"> </ax-cron-job-container>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXCronJobModule, FormsModule],\n})\nexport class AXPCronJobWidgetDesignerComponent extends AXPValueWidgetComponent<any> {\n  expreesion = signal('* * * ? * * *');\n}\n","import { AXCronJobModule } from '@acorex/components/cron-job';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n  selector: 'axp-cron-job-widget-edit',\n  template: `<ax-cron-job-container [ngModel]=\"expreesion()\"> </ax-cron-job-container>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [FormsModule, AXCronJobModule],\n})\nexport class AXPCronJobWidgetEditComponent extends AXPValueWidgetComponent<any> {\n  expreesion = signal('* * * ? * * *');\n  getExpressionHandler(e: any) {\n    this.setValue(e.data);\n  }\n}\n","import { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\n@Component({\n  selector: 'axp-cron-job-widget-view',\n  template: `<p>{{ internalValue() }}</p>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPCronJobWidgetViewComponent extends AXPValueWidgetComponent<any> {\n  protected internalValue = computed(() => this.getValue());\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_ADVANCE_SUB_INPUT } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\n\nexport const AXPCronJobWidget: AXPWidgetConfig = {\n  name: 'cron-job',\n  title: '@platform-layout-widgets:widgets.cron-job.title',\n  icon: 'fa-light fa-alarm-clock',\n  categories: [AXP_WIDGETS_ADVANCE_CATEGORY],\n  subCategory: AXP_WIDGETS_ADVANCE_SUB_INPUT,\n  type: 'editor',\n  groups: [AXPWidgetGroupEnum.BaseWidget],\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n  components: {\n    view: {\n      component: () => import('./cron-job-widget-view.component').then((c) => c.AXPCronJobWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./cron-job-widget-edit.component').then((c) => c.AXPCronJobWidgetEditComponent),\n    },\n    column: {\n      component: () => import('./cron-job-widget-column.component').then((c) => c.AXPCronJobWidgetColumnComponent),\n    },\n    designer: {\n      component: () => import('./cron-job-widget-designer.component').then((c) => c.AXPCronJobWidgetDesignerComponent),\n    },\n  },\n};\n\nexport interface AXPCronJobWidgetDesignerOptions {}\n\nexport interface AXPCronJobWidgetViewOptions {}\n\nexport interface AXPCronJobWidgetEditOptions {}\n\nexport interface AXPCronJobWidgetColumnOptions {}\n\nexport interface AXPCronJobWidgetPrintOptions {}\n\nexport interface AXPCronJobWidgetOptions {\n  designer: AXPCronJobWidgetDesignerOptions;\n  view: AXPCronJobWidgetViewOptions;\n  edit: AXPCronJobWidgetEditOptions;\n  print: AXPCronJobWidgetPrintOptions;\n  column: AXPCronJobWidgetColumnOptions;\n}\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    cronJob: 'cron-job';\n  }\n}\n","import { inject, Injectable, InjectionToken } from '@angular/core';\n\nexport type AXPImageType = string;\n\nexport abstract class AXPImageDefinitionProvider {\n  name: AXPImageType;\n  title?: string;\n  icon?: string;\n  width?: string;\n  height?: string;\n  imageRendering?: string; // pixelated | auto | crisp-edges | high-quality | optimizeQuality | optimizeSpeed\n  objectFit?: string; // contain | cover | fill | none | scale-down\n  borderRadius?: string;\n  aspectRatio?: string; // e.g., '16 / 9' or 1.777...\n}\n\nexport const AXP_IMAGE_DEFINITION_PROVIDER = new InjectionToken<AXPImageDefinitionProvider[]>(\n  'AXP_IMAGE_DEFINITION_PROVIDER',\n);\n\n// Built-in default image type definitions\nexport const DEFAULT_IMAGE_DEFINITION_PROVIDERS: AXPImageDefinitionProvider[] = [\n  {\n    name: 'avatar',\n    title: 'Avatar',\n    icon: 'fa-light fa-user',\n    width: '128px',\n    height: '128px',\n    imageRendering: 'auto',\n    objectFit: 'cover',\n    borderRadius: '50%',\n    aspectRatio: '1',\n  },\n  {\n    name: 'thumbnail',\n    title: 'Thumbnail',\n    icon: 'fa-light fa-image',\n    width: '96px',\n    height: '96px',\n    imageRendering: 'auto',\n    objectFit: 'cover',\n    borderRadius: '8px',\n    aspectRatio: '1',\n  },\n  {\n    name: 'banner',\n    title: 'Banner',\n    icon: 'fa-light fa-image',\n    width: '100%',\n    height: '240px',\n    imageRendering: 'auto',\n    objectFit: 'cover',\n    borderRadius: '8px',\n    aspectRatio: '16 / 9',\n  },\n  {\n    name: 'cover',\n    title: 'Cover',\n    icon: 'fa-light fa-image',\n    width: '100%',\n    height: '320px',\n    imageRendering: 'auto',\n    objectFit: 'cover',\n    borderRadius: '0',\n    aspectRatio: '4 / 3',\n  },\n  {\n    name: 'card',\n    title: 'Card Image',\n    icon: 'fa-light fa-image',\n    width: '100%',\n    height: '180px',\n    imageRendering: 'auto',\n    objectFit: 'cover',\n    borderRadius: '8px',\n    aspectRatio: '16 / 9',\n  },\n  {\n    name: 'logo',\n    title: 'Logo',\n    icon: 'fa-light fa-badge-check',\n    height: '48px',\n    imageRendering: 'auto',\n    objectFit: 'contain',\n    borderRadius: '0',\n    aspectRatio: '1',\n  },\n  {\n    name: 'profile-photo',\n    title: 'Profile Photo',\n    icon: 'fa-light fa-user',\n    width: '250px',\n    height: '250px',\n    imageRendering: 'auto',\n    objectFit: 'cover',\n    borderRadius: '8px',\n    aspectRatio: '1',\n  },\n];\n\n@Injectable({ providedIn: 'root' })\nexport class AXPImageDefinitionService {\n  private providers = inject(AXP_IMAGE_DEFINITION_PROVIDER, { optional: true }) ?? [];\n\n  getProviders(): AXPImageDefinitionProvider[] {\n    // Injected providers come first to allow overriding the built-ins by name\n    return [...this.providers, ...DEFAULT_IMAGE_DEFINITION_PROVIDERS];\n  }\n\n  resolve(name?: string | null): AXPImageDefinitionProvider | null {\n    if (!name) return null;\n    return this.getProviders().find((p) => p.name === name) ?? null;\n  }\n}\n","//#region ---- Stored image URL resolver ----\n\nconst FILE_STORAGE_ID_PATTERN =\n  /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n\nconst FILE_STORAGE_PREFIX = 'file:';\n\n/** Strips the file-cast prefix and whitespace from a stored image reference. */\nexport function normalizeStoredImageRef(value: string | null | undefined): string | null {\n  if (!value) {\n    return null;\n  }\n  const trimmed = value.trim();\n  if (!trimmed || trimmed === 'null') {\n    return null;\n  }\n  return trimmed.startsWith(FILE_STORAGE_PREFIX) ? trimmed.slice(FILE_STORAGE_PREFIX.length) : trimmed;\n}\n\nexport function isStoredImageFileId(value: string | null | undefined): boolean {\n  const normalized = normalizeStoredImageRef(value);\n  if (!normalized) {\n    return false;\n  }\n  return FILE_STORAGE_ID_PATTERN.test(normalized);\n}\n\nexport async function resolveStoredImageDisplayUrl(\n  value: string,\n  resolveFile: (fileId: string) => Promise<{ url?: string; binary?: Blob | File }>,\n): Promise<string> {\n  const normalized = normalizeStoredImageRef(value);\n  if (!normalized) {\n    return '';\n  }\n  if (\n    normalized.startsWith('http://') ||\n    normalized.startsWith('https://') ||\n    normalized.startsWith('data:image/') ||\n    normalized.startsWith('blob:')\n  ) {\n    return normalized;\n  }\n  if (isStoredImageFileId(normalized)) {\n    const info = await resolveFile(normalized);\n    if (info.url) {\n      return info.url;\n    }\n    if (info.binary) {\n      return URL.createObjectURL(info.binary);\n    }\n    return '';\n  }\n  return normalized;\n}\n\n//#endregion\n","import { AXPopupService } from '@acorex/components/popup';\nimport { AXPFileStorageService } from '@acorex/platform/common';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, OnDestroy, signal } from '@angular/core';\nimport { AXPImageDefinitionService } from './image-definition.service';\nimport { isStoredImageFileId, resolveStoredImageDisplayUrl } from './resolve-stored-image-url';\n\n//#region ----   Component: Image Widget Column   ----\n\n@Component({\n  selector: 'axp-image-widget-column',\n  template: `\n    <div class=\"ax-flex ax-items-center ax-gap-2\">\n      @if (imageUrl()) {\n        <button\n          type=\"button\"\n          class=\"ax-inline-flex ax-shrink-0 ax-overflow-hidden ax-cursor-pointer ax-border ax-border-border-light-surface ax-bg-transparent ax-p-0\"\n          [style.width]=\"thumbnailSize()\"\n          [style.height]=\"thumbnailSize()\"\n          [style.border-radius]=\"thumbnailBorderRadius()\"\n          (click)=\"showPopup()\"\n        >\n          <img\n            [src]=\"imageUrl()!\"\n            alt=\"\"\n            class=\"ax-size-full\"\n            [style.object-fit]=\"thumbnailObjectFit()\"\n            [style.border-radius]=\"thumbnailBorderRadius()\"\n          />\n        </button>\n      } @else {\n        <span>-</span>\n      }\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['rawValue', 'rowData'],\n})\nexport class AXPImageWidgetColumnComponent\n  extends AXPColumnWidgetComponent<string | URL | Blob | ArrayBuffer | null | undefined>\n  implements OnDestroy\n{\n  //#region ----   Services & Dependencies   ----\n\n  private readonly popupService = inject(AXPopupService);\n  private readonly imageDef = inject(AXPImageDefinitionService);\n  private readonly fileStorage = inject(AXPFileStorageService, { optional: true });\n\n  //#endregion\n\n  //#region ----   Computed Properties   ----\n\n  typeName = computed(() => (this.options as { type?: string })?.type);\n  providerSettings = computed(() => this.imageDef.resolve(this.typeName() ?? null));\n  thumbnailSize = computed(() => {\n    const options = this.options as { columnWidth?: string; columnHeight?: string };\n    const optW = options?.columnWidth;\n    const optH = options?.columnHeight;\n    if (optW) {\n      return optW;\n    }\n    if (optH) {\n      return optH;\n    }\n    return '40px';\n  });\n  thumbnailObjectFit = computed(() => {\n    const options = this.options as { objectFit?: string | { id: string } };\n    const optVal = options?.objectFit;\n    const provided = this.providerSettings();\n    const normalized = typeof optVal === 'string' ? optVal : optVal?.id;\n    return normalized ?? provided?.objectFit ?? 'cover';\n  });\n  thumbnailBorderRadius = computed(() => {\n    const options = this.options as { borderRadius?: string };\n    return options?.borderRadius ?? this.providerSettings()?.borderRadius ?? '4px';\n  });\n\n  //#endregion\n\n  //#region ----   State   ----\n\n  imageUrl = signal<string | null>(null);\n  private blobObjectUrl: string | null = null;\n  private hydrateRequestId = 0;\n\n  //#endregion\n\n  //#region ----   Lifecycle   ----\n\n  constructor() {\n    super();\n    effect(() => {\n      void this.hydrateImageUrl(this.rawValue);\n    });\n  }\n\n  //#endregion\n\n  //#region ----   UI Handlers   ----\n\n  async showPopup(): Promise<void> {\n    const src = this.imageUrl();\n    if (!src) {\n      return;\n    }\n\n    const { AXPImagePreviewPopupComponent } = await import('./image-preview.popup');\n    await this.popupService.open(AXPImagePreviewPopupComponent, {\n      title: '@platform-layout-widgets:widgets.image.dialog.title',\n      size: 'lg',\n      closeButton: true,\n      closeOnBackdropClick: true,\n      data: { src },\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.revokeBlobUrl();\n  }\n\n  //#endregion\n\n  //#region ----   Utility Methods   ----\n\n  private async hydrateImageUrl(\n    value: string | URL | Blob | ArrayBuffer | null | undefined,\n  ): Promise<void> {\n    const requestId = ++this.hydrateRequestId;\n    this.revokeBlobUrl();\n\n    if (typeof value === 'string') {\n      if (this.fileStorage && isStoredImageFileId(value)) {\n        try {\n          const displayUrl = await resolveStoredImageDisplayUrl(value, (fileId) =>\n            this.fileStorage!.getInfo(fileId),\n          );\n          if (requestId !== this.hydrateRequestId) {\n            if (displayUrl.startsWith('blob:')) {\n              URL.revokeObjectURL(displayUrl);\n            }\n            return;\n          }\n          if (displayUrl.startsWith('blob:')) {\n            this.blobObjectUrl = displayUrl;\n          }\n          this.imageUrl.set(displayUrl || null);\n          return;\n        } catch {\n          if (requestId === this.hydrateRequestId) {\n            this.imageUrl.set(null);\n          }\n          return;\n        }\n      }\n\n      if (requestId === this.hydrateRequestId) {\n        this.imageUrl.set(value);\n      }\n      return;\n    }\n\n    if (requestId !== this.hydrateRequestId) {\n      return;\n    }\n\n    if (value instanceof URL) {\n      this.imageUrl.set(value.href);\n    } else if (value instanceof Blob) {\n      this.blobObjectUrl = URL.createObjectURL(value);\n      this.imageUrl.set(this.blobObjectUrl);\n    } else if (value instanceof ArrayBuffer) {\n      const blob = new Blob([value]);\n      this.blobObjectUrl = URL.createObjectURL(blob);\n      this.imageUrl.set(this.blobObjectUrl);\n    } else {\n      this.imageUrl.set(null);\n    }\n  }\n\n  private revokeBlobUrl(): void {\n    if (this.blobObjectUrl) {\n      URL.revokeObjectURL(this.blobObjectUrl);\n      this.blobObjectUrl = null;\n    }\n  }\n\n  //#endregion\n}\n\n//#endregion\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXPDeviceService } from '@acorex/platform/core';\nimport { AXPLayoutBuilderService } from '@acorex/platform/layout/builder';\nimport { AXPImageEditorService } from '@acorex/platform/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  effect,\n  ElementRef,\n  inject,\n  OnDestroy,\n  signal,\n  viewChild,\n} from '@angular/core';\nimport { AXPImageDefinitionService } from './image-definition.service';\nimport { AXPImageWidgetRule } from './image-widget.config';\n\n//#region ----   Component: Image Widget Edit   ----\n\n@Component({\n  selector: 'axp-image-widget-edit',\n  imports: [AXButtonModule, AXDecoratorModule],\n  template: `\n    <div class=\"ax-flex ax-gap-3 ax-items-center ax-justify-center ax-select-none\">\n      <div\n        class=\"ax-relative ax-rounded-md ax-overflow-hidden\"\n        [style.width]=\"width()\"\n        [style.height]=\"height()\"\n        [style.aspect-ratio]=\"aspectRatio()\"\n        [style.border-radius]=\"borderRadius()\"\n        [class.ax-border-2]=\"dragEffect()\"\n        [class.ax-border-dashed]=\"dragEffect()\"\n        [class.ax-border-success-500]=\"dragEffect()\"\n        (dragenter)=\"handleDragEnter($event)\"\n        (dragover)=\"handleDragOver($event)\"\n        (dragleave)=\"handleDragLeave($event)\"\n        (drop)=\"handleDrop($event)\"\n        (mouseenter)=\"handleMouseEnter()\"\n        (mouseleave)=\"handleMouseLeave()\"\n        (click)=\"handleSurfaceClick($event)\"\n      >\n        @if (imageUrl()) {\n          <img\n            class=\"ax-subpixel-antialiased\"\n            [style.image-rendering]=\"imageRendering()\"\n            [src]=\"imageUrl()!\"\n            [style.width]=\"width()\"\n            [style.height]=\"height()\"\n            [style.object-fit]=\"objectFit()\"\n            [style.border-radius]=\"borderRadius()\"\n            [style.aspect-ratio]=\"aspectRatio()\"\n          />\n        } @else {\n          <div class=\"ax-absolute ax-inset-0 ax-flex ax-flex-col ax-items-center ax-justify-center ax-gap-2\">\n            <i class=\"fa-light fa-image ax-text-2xl\"></i>\n            <span class=\"ax-text-sm\">Drop image or click</span>\n          </div>\n        }\n        @if (showDesktopHover()) {\n          <div\n            class=\"ax-absolute ax-inset-0 ax-flex ax-items-center ax-justify-center ax-cursor-pointer ax-bg-neutral-900/50 ax-text-neutral-100 ax-transition-opacity ax-duration-400\"\n            data-image-action=\"true\"\n            [style.opacity]=\"hovering() ? 1 : 0\"\n            (click)=\"handleOverlayClick($event)\"\n          >\n            @if (!readonly()) {\n              <ax-icon>\n                <i class=\"fa-light fa-pen\"></i>\n              </ax-icon>\n            } @else if (imageUrl()) {\n              <ax-icon>\n                <i class=\"fa-light fa-eye\"></i>\n              </ax-icon>\n            }\n          </div>\n        }\n\n        <!-- @if (showMobileActions()) {\n          <div class=\"ax-absolute ax-inset-x-0 ax-bottom-0 ax-flex ax-justify-center ax-backdrop-blur ax-py-1\">\n            <ax-button class=\"ax-sm\" color=\"secondary\" (click)=\"openPicker()\" look=\"blank\">\n              <ax-icon>\n                <i class=\"fa-light fa-image\"></i>\n              </ax-icon>\n            </ax-button>\n            <ax-button class=\"ax-sm\" color=\"danger\" (click)=\"clearImage()\" [disabled]=\"!imageUrl()\" look=\"blank\">\n              <ax-icon>\n                <i class=\"fa-light fa-trash-can\"></i>\n              </ax-icon>\n            </ax-button>\n          </div>\n        } -->\n\n        <input #fileInput type=\"file\" accept=\"image/*\" hidden (change)=\"onFileSelected($event)\" />\n      </div>\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPImageWidgetEditComponent\n  extends AXPValueWidgetComponent<string | URL | Blob | ArrayBuffer | null | undefined, AXPImageWidgetRule['edit']>\n  implements OnDestroy\n{\n  //#region ----   Options & Derived State   ----\n\n  fileInput = viewChild<ElementRef<HTMLInputElement>>('fileInput');\n  private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n  private readonly imageDef = inject(AXPImageDefinitionService);\n  private readonly deviceService = inject(AXPDeviceService);\n  private readonly popupService = inject(AXPopupService);\n  private readonly imageEditorService = inject(AXPImageEditorService);\n\n  typeName = computed(() => this.options().type);\n  providerSettings = computed(() => this.imageDef.resolve(this.typeName() ?? null));\n\n  width = computed(() => {\n    const provided = this.providerSettings();\n    const optW = this.options().width;\n    const optH = this.options().height;\n    const baseW = optW ?? provided?.width;\n    const baseH = optH ?? provided?.height;\n    if (baseW != null && baseW !== '') return baseW;\n    if ((baseW == null || baseW === '') && (baseH == null || baseH === '')) return '100%';\n    return undefined;\n  });\n  height = computed(() => {\n    const provided = this.providerSettings();\n    const optH = this.options().height;\n    const baseH = optH ?? provided?.height;\n    if (baseH != null && baseH !== '') return baseH;\n    return undefined;\n  });\n  objectFit = computed(() => {\n    const optVal = this.options().objectFit;\n    const provided = this.providerSettings();\n    const normalized = typeof optVal === 'string' ? optVal : optVal?.id;\n    return normalized ?? provided?.objectFit ?? 'contain';\n  });\n  borderRadius = computed(() => this.options().borderRadius ?? this.providerSettings()?.borderRadius ?? '0');\n  aspectRatio = computed(() => {\n    const opt = this.options().aspectRatio;\n    const def = this.providerSettings()?.aspectRatio;\n    return opt ?? def ?? undefined;\n  });\n  imageRendering = computed(() => {\n    const opt = this.options().imageRendering;\n    const def = this.providerSettings()?.imageRendering;\n    return opt ?? def ?? 'auto';\n  });\n  readonly = computed(() => this.options().readonly ?? false);\n  showEditorOnUpload = computed(() => this.options().showEditorOnUpload ?? true);\n\n  showDesktopHover = computed(() => !this.deviceService.isTouchScreen() && (!this.readonly() || !!this.imageUrl()));\n\n  imageUrl = signal<string | null>(null);\n  dragActive = signal(false);\n  dragEffect = computed(() => this.dragActive() && !this.readonly());\n  hovering = signal(false);\n  private dialogRef: { close: () => void } | null = null;\n\n  //\n  //#endregion\n\n  constructor() {\n    super();\n    effect(() => {\n      const value = this.getValue();\n      const currentUrl = this.imageUrl();\n      if (currentUrl && currentUrl.startsWith('blob:')) {\n        URL.revokeObjectURL(currentUrl);\n      }\n      if (typeof value === 'string') {\n        this.imageUrl.set(value);\n      } else if (value instanceof URL) {\n        this.imageUrl.set(value.href);\n      } else if (value instanceof Blob) {\n        this.imageUrl.set(URL.createObjectURL(value));\n      } else if (value instanceof ArrayBuffer) {\n        const blob = new Blob([value]);\n        this.imageUrl.set(URL.createObjectURL(blob));\n      } else {\n        this.imageUrl.set(null);\n      }\n    });\n  }\n\n  openPicker() {\n    const el = this.fileInput()?.nativeElement;\n    if (el) {\n      el.value = '';\n      el.click();\n    }\n  }\n\n  async onFileSelected(event: Event) {\n    const input = event.target as HTMLInputElement;\n    if (!input.files || input.files.length === 0) {\n      return;\n    }\n    const file = input.files[0];\n    await this.handleFileUpload(file);\n    // Close dialog if it was opened from dialog\n    if (this.dialogRef) {\n      this.dialogRef.close();\n      this.dialogRef = null;\n    }\n  }\n\n  clearImage() {\n    this.applyNewSource(null);\n  }\n\n  async handleSurfaceClick(event: MouseEvent | TouchEvent) {\n    const target = event.target as HTMLElement | null;\n    if (target?.closest('[data-image-action]')) {\n      return;\n    }\n    if (!this.imageUrl() && !this.readonly()) {\n      event.stopPropagation();\n      this.openPicker();\n      return;\n    }\n    if (this.readonly()) {\n      event.stopPropagation();\n      await this.openImagePreview();\n      return;\n    }\n    event.stopPropagation();\n    await this.openImageDialog();\n  }\n\n  handleOverlayClick(event: MouseEvent) {\n    event.stopPropagation();\n    if (this.readonly()) {\n      void this.openImagePreview();\n      return;\n    }\n    void this.openImageDialog();\n  }\n\n  handleMouseEnter() {\n    if (this.deviceService.isTouchScreen()) {\n      return;\n    }\n    this.hovering.set(true);\n  }\n\n  handleMouseLeave() {\n    if (this.deviceService.isTouchScreen()) {\n      return;\n    }\n    this.hovering.set(false);\n  }\n\n  handleDragEnter(event: DragEvent) {\n    if (this.readonly()) return;\n    this.dragActive.set(true);\n  }\n\n  handleDragOver(event: DragEvent) {\n    if (this.readonly()) return;\n    event.preventDefault();\n    this.dragActive.set(true);\n  }\n\n  handleDragLeave(event: DragEvent) {\n    if (this.readonly()) return;\n    this.dragActive.set(false);\n  }\n\n  async handleDrop(event: DragEvent) {\n    if (this.readonly()) return;\n    event.preventDefault();\n    this.dragActive.set(false);\n    const file = event.dataTransfer?.files?.[0];\n    if (file) {\n      await this.handleFileUpload(file);\n    }\n  }\n\n  private async openImageDialog() {\n    const ref = await this.layoutBuilder\n      .create()\n      .dialog((dialog) => {\n        dialog\n          .setTitle('Image')\n          .setSize('md')\n          .setCloseButton(true)\n          .setContext({ image: this.imageUrl() })\n          .content((content) => {\n            content.setDirection('column').setGap('24px').setAlignItems('center').customWidget('image', {\n              path: 'image',\n              type: this.typeName(),\n              readonly: true,\n              objectFit: this.objectFit(),\n              borderRadius: this.borderRadius(),\n              imageRendering: this.imageRendering(),\n            });\n          })\n          .setActions((actions) => {\n            actions.custom({\n              title: '@general:actions.delete.title',\n              icon: 'fa-light fa-trash-can',\n              color: 'danger',\n              disabled: !this.imageUrl(),\n              command: { name: 'delete-image' },\n              shortcuts: ['delete'],\n            });\n\n            actions.custom({\n              title: '@general:actions.upload.title',\n              icon: 'fa-light fa-upload',\n              color: 'primary',\n              command: { name: 'upload-image' },\n              shortcuts: ['ctrl+s', 'Enter'],\n            });\n          });\n      })\n      .show();\n\n    const action = ref.action();\n\n    if (action === 'delete-image') {\n      ref.close();\n      this.clearImage();\n      return;\n    }\n\n    if (action === 'upload-image') {\n      // Keep dialog open and close it after file is selected\n      this.dialogRef = ref;\n      const el = this.fileInput()?.nativeElement;\n      if (el) {\n        el.value = '';\n        el.click();\n      }\n    } else {\n      ref.close();\n    }\n  }\n\n  private async openImagePreview() {\n    const src = this.imageUrl();\n    if (!src) {\n      return;\n    }\n    const { AXPImagePreviewPopupComponent } = await import('./image-preview.popup');\n    await this.popupService.open(AXPImagePreviewPopupComponent, {\n      title: 'Image Preview',\n      size: 'lg',\n      closeButton: true,\n      closeOnBackdropClick: true,\n      data: { src },\n    });\n  }\n\n  private async handleFileUpload(file: File) {\n    if (this.showEditorOnUpload()) {\n      const editedBlob = await this.imageEditorService.open({\n        image: file,\n        showHistory: true,\n        look: 'blank',\n        aspectRatio: this.aspectRatio(),\n        title: 'Image Editor',\n      });\n      if (editedBlob) {\n        await this.applyNewSource(editedBlob);\n      }\n    } else {\n      await this.applyNewSource(file);\n    }\n  }\n\n  private async applyNewSource(src: string | Blob | ArrayBuffer | URL | null) {\n    const previous = this.imageUrl();\n    if (typeof src === 'string') {\n      this.imageUrl.set(src);\n      this.setValue(src);\n    } else if (src instanceof URL) {\n      this.imageUrl.set(src.href);\n      this.setValue(src.href);\n    } else if (src instanceof Blob) {\n      const previewUrl = URL.createObjectURL(src);\n      this.imageUrl.set(previewUrl);\n      const dataUrl = await this.readAsDataURL(src);\n      this.setValue(dataUrl);\n    } else if (src instanceof ArrayBuffer) {\n      const blob = new Blob([src]);\n      const previewUrl = URL.createObjectURL(blob);\n      this.imageUrl.set(previewUrl);\n      const dataUrl = await this.readAsDataURL(blob);\n      this.setValue(dataUrl);\n    } else {\n      this.imageUrl.set(null);\n      this.setValue(null);\n    }\n    if (previous && previous.startsWith('blob:')) {\n      URL.revokeObjectURL(previous);\n    }\n  }\n\n  private readAsDataURL(blob: Blob): Promise<string> {\n    return new Promise((resolve, reject) => {\n      const reader = new FileReader();\n      reader.onload = () => resolve(String(reader.result));\n      reader.onerror = (e) => reject(e);\n      reader.readAsDataURL(blob);\n    });\n  }\n\n  ngOnDestroy(): void {\n    const currentUrl = this.imageUrl();\n    if (currentUrl && currentUrl.startsWith('blob:')) {\n      URL.revokeObjectURL(currentUrl);\n    }\n  }\n}\n\n//#endregion\n","import { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, OnDestroy, signal } from '@angular/core';\nimport { AXPImageDefinitionService } from './image-definition.service';\nimport { AXPImageWidgetRule } from './image-widget.config';\n\n//#region ----   Component: Image Widget View   ----\n\n@Component({\n  selector: 'axp-image-widget-view',\n  imports: [],\n  template: `\n    @if (imageUrl()) {\n      <div\n        [style.width]=\"width()\"\n        [style.height]=\"height()\"\n        [style.aspect-ratio]=\"aspectRatio()\"\n        style=\"position: relative; display: inline-block;\"\n      >\n        <img\n          [src]=\"imageUrl()!\"\n          [attr.alt]=\"alt() || null\"\n          [attr.loading]=\"lazy() ? 'lazy' : null\"\n          [style.width]=\"width()\"\n          [style.height]=\"height()\"\n          [style.aspect-ratio]=\"aspectRatio()\"\n          [style.object-fit]=\"objectFit()\"\n          [style.border-radius]=\"borderRadius()\"\n        />\n      </div>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPImageWidgetViewComponent\n  extends AXPValueWidgetComponent<string | URL | Blob | ArrayBuffer | null | undefined, AXPImageWidgetRule['view']>\n  implements OnDestroy\n{\n  //#region ----   Options & Derived State   ----\n\n  private readonly imageDef = inject(AXPImageDefinitionService);\n  typeName = computed(() => this.options().type);\n  providerSettings = computed(() => this.imageDef.resolve(this.typeName() ?? null));\n\n  width = computed(() => {\n    const provided = this.providerSettings();\n    const optW = this.options().width;\n    const optH = this.options().height;\n    const baseW = optW ?? provided?.width;\n    const baseH = optH ?? provided?.height;\n    if (baseW != null && baseW !== '') return baseW;\n    if ((baseW == null || baseW === '') && (baseH == null || baseH === '')) return '100%';\n    return undefined;\n  });\n  height = computed(() => {\n    const provided = this.providerSettings();\n    const optH = this.options().height;\n    const baseH = optH ?? (provided?.['height'] as string | undefined);\n    if (baseH != null && baseH !== '') return baseH;\n    return undefined;\n  });\n  aspectRatio = computed(() => {\n    const opt = this.options().aspectRatio;\n    const def = this.providerSettings()?.aspectRatio as string | number | undefined;\n    return opt ?? def ?? undefined;\n  });\n  objectFit = computed(() => {\n    const optVal = this.options().objectFit as any;\n    const provided = this.providerSettings();\n    const normalized = typeof optVal === 'string' ? optVal : optVal?.id;\n    return normalized ?? provided?.objectFit ?? 'contain';\n  });\n  borderRadius = computed(() => this.options().borderRadius ?? this.providerSettings()?.borderRadius ?? '0');\n  alt = computed(() => this.options().alt ?? '');\n  lazy = computed(() => this.options().lazy ?? true);\n\n  imageUrl = signal<string | null>(null);\n\n  //#endregion\n\n  //#region ----   Effects & Lifecycle   ----\n\n  constructor() {\n    super();\n    effect(() => {\n      const value = this.getValue();\n      const currentUrl = this.imageUrl();\n      if (currentUrl && currentUrl.startsWith('blob:')) {\n        URL.revokeObjectURL(currentUrl);\n      }\n      if (typeof value === 'string') {\n        this.imageUrl.set(value);\n      } else if (value instanceof URL) {\n        this.imageUrl.set(value.href);\n      } else if (value instanceof Blob) {\n        this.imageUrl.set(URL.createObjectURL(value));\n      } else if (value instanceof ArrayBuffer) {\n        const blob = new Blob([value]);\n        this.imageUrl.set(URL.createObjectURL(blob));\n      } else {\n        this.imageUrl.set(null);\n      }\n    });\n  }\n\n  ngOnDestroy(): void {\n    const currentUrl = this.imageUrl();\n    if (currentUrl && currentUrl.startsWith('blob:')) {\n      URL.revokeObjectURL(currentUrl);\n    }\n  }\n\n  //#endregion\n}\n\n//#endregion\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, createBooleanProperty, createStringProperty } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXPWidgetsCatalog } from '@acorex/platform/contracts';\nimport { AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_ADVANCE_SUB_MEDIA } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY, AXP_READONLY_PROPERTY } from '../../../properties';\nimport { AXP_BEHAVIOR_PROPERTY_GROUP, AXP_STYLING_PROPERTY_GROUP } from '../../../properties/groups';\n\n//#region ----   Image Widget Config   ----\n\nexport const AXPImageWidget: AXPWidgetConfig = {\n  name: 'image',\n  title: '@platform-layout-widgets:widgets.image.title',\n  description: '@platform-layout-widgets:widgets.image.description',\n  icon: 'fa-light fa-image',\n  categories: [AXP_WIDGETS_ADVANCE_CATEGORY],\n  subCategory: AXP_WIDGETS_ADVANCE_SUB_MEDIA,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  type: 'editor',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    createStringProperty({\n      name: 'type',\n      title: 'Type',\n      path: 'options.type',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n    }),\n    createStringProperty({\n      name: 'src',\n      title: 'Image Source (URL/Base64)',\n      path: 'options.src',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n    }),\n    createStringProperty({\n      name: 'width',\n      title: 'Width',\n      path: 'options.width',\n      group: AXP_STYLING_PROPERTY_GROUP,\n    }),\n    createStringProperty({\n      name: 'height',\n      title: 'Height',\n      path: 'options.height',\n      group: AXP_STYLING_PROPERTY_GROUP,\n    }),\n    createStringProperty({\n      name: 'aspectRatio',\n      title: 'Aspect Ratio',\n      path: 'options.aspectRatio',\n      group: AXP_STYLING_PROPERTY_GROUP,\n    }),\n    {\n      name: 'objectFit',\n      title: 'Object Fit',\n      group: AXP_STYLING_PROPERTY_GROUP,\n      schema: {\n        dataType: 'string',\n        interface: {\n          name: 'objectFit',\n          path: 'options.objectFit',\n          type: AXPWidgetsCatalog.select,\n          options: {\n            dataSource: ['contain', 'cover', 'fill', 'none', 'scale-down'],\n          },\n        },\n      },\n      visible: true,\n    },\n    createStringProperty({\n      name: 'borderRadius',\n      title: 'Border Radius',\n      path: 'options.borderRadius',\n      group: AXP_STYLING_PROPERTY_GROUP,\n    }),\n    createStringProperty({\n      name: 'alt',\n      title: 'Alt Text',\n      path: 'options.alt',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n    }),\n    createBooleanProperty({\n      name: 'lazy',\n      title: 'Lazy Load',\n      path: 'options.lazy',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n    }),\n    AXP_READONLY_PROPERTY,\n  ],\n  components: {\n    view: {\n      component: () => import('./image-widget-view.component').then((c) => c.AXPImageWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./image-widget-edit.component').then((c) => c.AXPImageWidgetEditComponent),\n    },\n    column: {\n      component: () => import('./image-widget-column.component').then((c) => c.AXPImageWidgetColumnComponent),\n    },\n    designer: {\n      component: () => import('./image-widget-edit.component').then((c) => c.AXPImageWidgetEditComponent),\n    },\n  },\n};\n\nexport interface AXPImageWidgetDesignerOptions {\n  width?: string;\n  height?: string;\n  borderRadius?: string;\n  readonly?: boolean;\n}\n\nexport interface AXPImageWidgetViewOptions {\n  width?: string;\n  height?: string;\n  objectFit?: string;\n  borderRadius?: string;\n  imageRendering?: string;\n  alt?: string;\n  lazy?: boolean;\n  aspectRatio?: string;\n  type?: string;\n}\n\nexport interface AXPImageWidgetEditOptions {\n  width?: string;\n  height?: string;\n  objectFit?: string | { id: string; title: string };\n  borderRadius?: string;\n  readonly?: boolean;\n  showEditorOnUpload?: boolean;\n  imageRendering?: string;\n  aspectRatio?: string;\n  type?: string;\n}\n\nexport interface AXPImageWidgetColumnOptions {}\n\nexport interface AXPImageWidgetOptions {\n  designer: AXPImageWidgetDesignerOptions;\n  view: AXPImageWidgetViewOptions;\n  edit: AXPImageWidgetEditOptions;\n  column: AXPImageWidgetColumnOptions;\n}\n\nexport type AXPImageWidgetRule = {\n  designer: AXPImageWidgetDesignerOptions;\n  view: AXPImageWidgetViewOptions;\n  edit: AXPImageWidgetEditOptions;\n  column: AXPImageWidgetColumnOptions;\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    image: 'image';\n  }\n}\n\n//#endregion\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPCommonSettings, AXPSettingsService } from '@acorex/platform/common';\nimport { AXPColumnQuery, AXPFilterQuery, AXPSortQuery } from '@acorex/platform/contracts';\n\nimport {\n  AXPQueryColumnsComponent,\n  AXPQueryFiltersComponent,\n  AXPQuerySortsComponent,\n} from '@acorex/platform/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { isEqual } from 'lodash-es';\n\n@Component({\n  selector: 'axp-list-toolbar-widget-view',\n  templateUrl: './list-toolbar-widget-view.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    CommonModule,\n    AXButtonModule,\n    AXDecoratorModule,\n    AXTranslationModule,\n    AXPQueryFiltersComponent,\n    AXPopoverModule,\n    AXPQuerySortsComponent,\n    AXPQueryColumnsComponent,\n  ],\n})\nexport class AXPListToolbarWidgetViewComponent extends AXPValueWidgetComponent {\n  //#region ---- Services & Dependencies ----\n\n  private settingsService = inject(AXPSettingsService);\n\n  //#endregion\n\n  //#region ---- Options ----\n\n  protected canSort = computed(() => this.options()['canSort'] ?? true);\n  protected canFilter = computed(() => this.options()['canFilter'] ?? true);\n  protected canColumns = computed(() => this.options()['canColumns'] ?? true);\n\n  protected filterTriggerMode = signal<'auto' | 'manual'>('manual');\n\n  //#endregion\n\n  //#region ---- Filter state ----\n\n  /** Gates query-filters until value is seeded (prevents empty emit wiping hidden related filters). */\n  protected filtersReady = signal(false);\n  protected previousFilterQueries = signal<AXPFilterQuery[]>([]);\n  protected currentFilterQueries = signal<AXPFilterQuery[]>([]);\n  protected initialFilters = signal<AXPFilterQuery[]>([]);\n  protected isFiltersDirty = computed(() => !isEqual(this.currentFilterQueries(), this.previousFilterQueries()));\n\n  /** Hidden parent-scope filters captured once after defaultValue is applied. */\n  private scopedHiddenFilters: AXPFilterQuery[] = [];\n\n  //#endregion\n\n  //#region ---- Definitions ----\n\n  protected filterDefinitions = computed(() => this.options()['filterDefinitions'] || []);\n  protected columnDefinitions = computed(() => this.options()['columnDefinitions'] || []);\n  protected sortDefinitions = computed(() => this.options()['sortDefinitions'] || []);\n  protected initialColumns = computed<AXPColumnQuery[]>(() => this.getValue()?.columns ?? []);\n  protected initialSorts = computed<AXPSortQuery[]>(() => this.getValue()?.sorts ?? []);\n\n  //#endregion\n\n  //#region ---- Lifecycle ----\n\n  override ngOnInit(): void {\n    super.ngOnInit();\n    const filters = (this.getValue()?.filters ?? []) as AXPFilterQuery[];\n    this.scopedHiddenFilters = filters.filter((filter) => filter.hidden === true);\n    this.initialFilters.set(filters);\n    this.previousFilterQueries.set(filters);\n    this.currentFilterQueries.set(filters);\n    this.filtersReady.set(true);\n  }\n\n  //#endregion\n\n  //#region ---- Effects ----\n\n  #eff = effect(() => {\n    this.loadSettings();\n  });\n\n  //#endregion\n\n  //#region ---- Actions ----\n\n  protected applyFilters(): void {\n    const filters = this.mergeScopedHiddenFilters(this.currentFilterQueries());\n    this.previousFilterQueries.set(filters);\n    this.setValue({ ...this.getValue(), filters });\n  }\n\n  protected onFiltersChanged(filters: AXPFilterQuery[]): void {\n    const merged = this.mergeScopedHiddenFilters(filters);\n    if (!isEqual(this.getValue()?.filters || [], merged)) {\n      if (this.filterTriggerMode() === 'auto') {\n        this.setValue({ ...this.getValue(), filters: merged });\n      } else {\n        this.currentFilterQueries.set(merged);\n      }\n    }\n  }\n\n  protected onColumnsChanged(columns: AXPColumnQuery[]): void {\n    if (!isEqual(this.getValue()?.columns || [], columns)) {\n      this.setValue({ ...this.getValue(), columns });\n    }\n  }\n\n  protected onSortsChanged(sorts: AXPSortQuery[]): void {\n    if (!isEqual(this.getValue()?.sorts || [], sorts)) {\n      this.setValue({ ...this.getValue(), sorts });\n    }\n  }\n\n  //#endregion\n\n  //#region ---- Helpers ----\n\n  private async loadSettings(): Promise<void> {\n    const filterTriggerMode = await this.settingsService.get(AXPCommonSettings.EntityFilterApplyMode);\n    this.filterTriggerMode.set((filterTriggerMode?.value ?? 'auto') as 'auto' | 'manual');\n  }\n\n  /**\n   * Re-attaches hidden related-list filters so user-applied filters cannot drop parent scope.\n   */\n  private mergeScopedHiddenFilters(filters: AXPFilterQuery[]): AXPFilterQuery[] {\n    if (!this.scopedHiddenFilters.length) {\n      return filters;\n    }\n    const scopedFields = new Set(this.scopedHiddenFilters.map((filter) => filter.field));\n    const rest = filters.filter((filter) => !scopedFields.has(filter.field));\n    return [...this.scopedHiddenFilters, ...rest];\n  }\n\n  //#endregion\n}\n","<div class=\"ax-flex ax-items-center ax-gap-2 ax-border-b ax-border-light w-full\">\n  @if (canFilter() && filtersReady()) {\n    <axp-query-filters\n      [filtersDefinitions]=\"filterDefinitions()\"\n      [initialFilters]=\"initialFilters()\"\n      (onFiltersChanged)=\"onFiltersChanged($event)\"\n    ></axp-query-filters>\n  }\n  <div class=\"ax-flex ax-items-center ax-gap-1 md:ax-gap-2\">\n    @if (filterTriggerMode() === 'manual' && isFiltersDirty()) {\n      <ax-button\n        [title]=\"'@general:actions.apply.title'\"\n        [iconOnly]=\"true\"\n        #filterButton\n        [color]=\"'primary'\"\n        (onClick)=\"applyFilters()\"\n      >\n        <ax-prefix>\n          <i class=\"fa-light fa-search\"></i>\n        </ax-prefix>\n      </ax-button>\n    }\n    @if (canColumns()) {\n      <ax-button [iconOnly]=\"true\" #columnButton [color]=\"'default'\">\n        <i class=\"fa-light fa-table-columns\"></i>\n      </ax-button>\n      <ax-popover\n        [adaptivityEnabled]=\"true\"\n        [offsetY]=\"30\"\n        [target]=\"columnButton\"\n        [openOn]=\"'toggle'\"\n        [closeOn]=\"'clickOut'\"\n        #popover\n      >\n        <div class=\"ax-lightest-surface ax-shadow-md ax-border md:ax-w-72 ax-w-full ax-rounded-md\">\n          <ax-header class=\"ax-border-b ax-lighter-surface ax-rounded-t-md ax-p-4 ax-font-bold\">\n            {{ '@general:terms.common.columns' | translate | async }}\n          </ax-header>\n          <div class=\"ax-py-2 ax-px-4\">\n            <axp-query-columns\n              [columns]=\"columnDefinitions()\"\n              (columnsChange)=\"onColumnsChanged($event)\"\n            ></axp-query-columns>\n          </div>\n        </div>\n      </ax-popover>\n    }\n    @if (canSort()) {\n      <ax-button [iconOnly]=\"true\" [text]=\"'Sorts'\" #sortButton [color]=\"'default'\">\n        <i class=\"fa-light fa-sort-amount-up\"></i>\n      </ax-button>\n      <ax-popover\n        [adaptivityEnabled]=\"true\"\n        [offsetY]=\"10\"\n        [target]=\"sortButton\"\n        [openOn]=\"'toggle'\"\n        [closeOn]=\"'clickOut'\"\n        #popover\n      >\n        <div class=\"ax-lightest-surface ax-shadow-md ax-border md:ax-w-72 ax-w-full ax-rounded-md\">\n          <ax-header class=\"ax-border-b ax-lighter-surface ax-rounded-t-md ax-p-4 ax-font-bold\">\n            {{ '@general:terms.common.sorts' | translate | async }}\n          </ax-header>\n          <div class=\"ax-py-2 ax-px-4\">\n            <axp-query-sorts\n              [sortDefinitions]=\"sortDefinitions()\"\n              (sortQueriesChange)=\"onSortsChanged($event)\"\n              [initialSortQueries]=\"initialSorts()\"\n            ></axp-query-sorts>\n          </div>\n        </div>\n      </ax-popover>\n    }\n  </div>\n</div>\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, createBooleanProperty } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGETS_LAYOUT_SUB_LISTS } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_BEHAVIOR_PROPERTY_GROUP,\n  AXP_DATA_PATH_PROPERTY,\n  AXP_DISABLED_PROPERTY,\n  AXP_NAME_PROPERTY,\n} from '../../../properties';\n\nexport const AXPListToolbarWidget: AXPWidgetConfig = {\n  name: 'list-toolbar',\n  title: '@platform-layout-widgets:widgets.list-toolbar.title',\n  type: 'view',\n  categories: [AXP_WIDGETS_LAYOUT_CATEGORY],\n  subCategory: AXP_WIDGETS_LAYOUT_SUB_LISTS,\n  groups: [AXPWidgetGroupEnum.UtilityWidget],\n  icon: 'fa-light fa-square',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    AXP_DISABLED_PROPERTY,\n    createBooleanProperty({\n      name: 'canSort',\n      title: 'Can Sort',\n      path: 'options.canSort',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n    }),\n    createBooleanProperty({\n      name: 'canFilter',\n      title: 'Can Filter',\n      path: 'options.canFilter',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n    }),\n\n    createBooleanProperty({\n      name: 'canColumns',\n      title: 'Can Columns',\n      path: 'options.canColumns',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n    }),\n  ],\n  components: {\n    view: {\n      component: () => import('./list-toolbar-widget-view.component').then((c) => c.AXPListToolbarWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./list-toolbar-widget-view.component').then((c) => c.AXPListToolbarWidgetViewComponent),\n    },\n    designer: {\n      component: () => import('./list-toolbar-widget-view.component').then((c) => c.AXPListToolbarWidgetViewComponent),\n    },\n  },\n};\n\nexport interface AXPListToolbarWidgetViewOptions {\n  canSort?: boolean;\n  canFilter?: boolean;\n  canColumns?: boolean;\n  filterDefinitions?: any[];\n  columnDefinitions?: any[];\n  sortDefinitions?: any[];\n}\n\nexport interface AXPListToolbarWidgetDesignerOptions extends AXPListToolbarWidgetViewOptions { }\n\nexport interface AXPListToolbarWidgetOptions {\n  view: AXPListToolbarWidgetViewOptions;\n  designer: AXPListToolbarWidgetDesignerOptions;\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, createBooleanProperty, createNumberProperty } from '@acorex/platform/layout/widget-core-contracts';\nimport {\n  AXMapPolygon, AXPoiMarker } from '@acorex/components/map';\nimport { AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_ADVANCE_SUB_TOOLS } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DATA_PROPERTY_GROUP, AXP_STYLING_PROPERTY_GROUP } from '../../../properties';\nimport { AXP_NAME_PROPERTY } from '../../../properties/general.props';\n\nexport const AXPMapWidget: AXPWidgetConfig = {\n  name: 'map',\n  title: '@platform-layout-widgets:widgets.map.title',\n  description: '@platform-layout-widgets:widgets.map.description',\n  icon: 'fa-light fa-map-location',\n  categories: [AXP_WIDGETS_ADVANCE_CATEGORY],\n  subCategory: AXP_WIDGETS_ADVANCE_SUB_TOOLS,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  type: 'editor',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    createNumberProperty({\n      name: 'height',\n      title: 'Height',\n      path: 'options.height',\n      group: AXP_STYLING_PROPERTY_GROUP,\n      defaultValue: 300,\n      options: { minValue: 0, maxValue: 500 },\n    }),\n    createNumberProperty({\n      name: 'maxMarker',\n      title: 'Max Marker',\n      path: 'options.maxMarker',\n      group: AXP_DATA_PROPERTY_GROUP,\n      defaultValue: 1,\n      options: { minValue: 0, maxValue: 100 },\n    }),\n    createNumberProperty({\n      name: 'maxPolygon',\n      title: 'Max Polygon',\n      path: 'options.maxPolygon',\n      group: AXP_DATA_PROPERTY_GROUP,\n      defaultValue: 1,\n      options: { minValue: 0, maxValue: 100 },\n    }),\n    createNumberProperty({\n      name: 'maxPolyline',\n      title: 'Max Polyline',\n      path: 'options.maxPolyline',\n      group: AXP_DATA_PROPERTY_GROUP,\n      defaultValue: 1,\n      options: { minValue: 0, maxValue: 100 },\n    }),\n    createNumberProperty({\n      name: 'maxRectangle',\n      title: 'Max Rectangle',\n      path: 'options.maxRectangle',\n      group: AXP_DATA_PROPERTY_GROUP,\n      defaultValue: 1,\n      options: { minValue: 0, maxValue: 100 },\n    }),\n    createNumberProperty({\n      name: 'maxCircle',\n      title: 'Max Circle',\n      path: 'options.maxCircle',\n      group: AXP_DATA_PROPERTY_GROUP,\n      defaultValue: 1,\n      options: { minValue: 0, maxValue: 100 },\n    }),\n\n    createNumberProperty({\n      name: 'latitude',\n      title: 'Latitude',\n      path: 'options.latitude',\n      group: AXP_DATA_PROPERTY_GROUP,\n      defaultValue: 35,\n      options: { minValue: -90, maxValue: 90, decimals: 5 },\n    }),\n    createNumberProperty({\n      name: 'longitude',\n      title: 'Longitude',\n      path: 'options.longitude',\n      group: AXP_DATA_PROPERTY_GROUP,\n      defaultValue: 51,\n      options: { minValue: -180, maxValue: 180, decimals: 5 },\n    }),\n    createNumberProperty({\n      name: 'zoomLevel',\n      title: 'Zoom Level',\n      path: 'options.zoomLevel',\n      group: AXP_DATA_PROPERTY_GROUP,\n      defaultValue: 13,\n      options: { minValue: 2, maxValue: 18 },\n    }),\n    createBooleanProperty({\n      name: 'hasLocate',\n      title: 'Has Locate',\n      path: 'options.hasLocate',\n      group: AXP_DATA_PROPERTY_GROUP,\n    }),\n    createBooleanProperty({\n      name: 'hasDraw',\n      title: 'Has Draw',\n      path: 'options.hasDraw',\n      group: AXP_DATA_PROPERTY_GROUP,\n    }),\n    createBooleanProperty({\n      name: 'fitToDraw',\n      title: 'Fit To Draw',\n      path: 'options.fitToDraw',\n      group: AXP_DATA_PROPERTY_GROUP,\n    }),\n  ],\n  components: {\n    view: {\n      component: () => import('./map-widget-view.component').then((c) => c.AXPMapWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./map-widget-edit.component').then((c) => c.AXPMapWidgetEditComponent),\n    },\n    designer: {\n      component: () => import('./map-widget-edit.component').then((c) => c.AXPMapWidgetEditComponent),\n    },\n  },\n};\n\nexport interface AXPMapWidgetViewOptions {\n  height?: number;\n  zoomLevel?: number;\n  latitude?: number;\n  longitude?: number;\n  disabled?: boolean;\n  readonly?: boolean;\n}\n\nexport interface AXPMapWidgetEditOptions {\n  hasDraw?: boolean;\n  hasLocate?: boolean;\n  maxMarker?: number;\n  maxPolygon?: number;\n  maxPolyline?: number;\n  maxRectangle?: number;\n  maxCircle?: number;\n  zoomLevel?: number;\n  latitude?: number;\n  longitude?: number;\n  height?: number;\n  fitToDraw?: boolean;\n  limitDraw?: AXMapPolygon[];\n  pois?: AXPoiMarker[];\n  disabled?: boolean;\n  readonly?: boolean;\n}\n\nexport interface AXPMapWidgetPrintOptions extends AXPMapWidgetViewOptions {}\n\nexport interface AXPMapWidgetDesignerOptions extends AXPMapWidgetEditOptions {}\n\nexport interface AXPMapWidgetOptions {\n  view: AXPMapWidgetViewOptions;\n  edit: AXPMapWidgetEditOptions;\n  print: AXPMapWidgetPrintOptions;\n  designer: AXPMapWidgetDesignerOptions;\n}\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    map: 'map';\n  }\n}\n","import { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n@Component({\n  selector: 'axp-meta-data-widget-column',\n  template: `{{ rawValue }}`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['rawValue', 'rowData'],\n})\nexport class AXPMetaDataWidgetColumnComponent extends AXPColumnWidgetComponent<any> {}\n","import { AXPContextChangeEvent, AXPMetaDataDefinition, type AXPWidgetNode } from '@acorex/platform/contracts';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\n\nimport { AXPWidgetCoreModule, AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { ChangeDetectionStrategy, Component, computed, effect, signal } from '@angular/core';\nimport { isEqual } from 'lodash-es';\n\n@Component({\n  selector: 'axp-meta-data-widget-edit',\n  template: `\n    <axp-widgets-container [context]=\"getValue() ?? {}\" (onContextChanged)=\"handleContextChange($event)\">\n      <div class=\"ax-flex ax-flex-col\">\n        @for (item of items(); track $index) {\n          <ax-form-field>\n            <ax-label>{{ item.title }}</ax-label>\n            <ng-container axp-widget-renderer [node]=\"item.node\" [mode]=\"'edit'\"> </ng-container>\n          </ax-form-field>\n        }\n      </div>\n    </axp-widgets-container>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXDecoratorModule, AXPWidgetCoreModule, AXFormModule, AXLabelModule],\n})\nexport class AXPMetaDataWidgetEditComponent extends AXPValueWidgetComponent<any> {\n  protected listMeta = computed<AXPMetaDataDefinition[]>(\n    () => (this.options()['listMeta'] as AXPMetaDataDefinition[]) ?? [],\n    { equal: isEqual },\n  );\n\n  #effect = effect(async () => {\n    const data = this.listMeta().map((c) => {\n      const node = JSON.parse(c.interface as string) as AXPWidgetNode;\n      //TODO change this to get the root node\n      const root = node.children?.[0].children?.[0]!;\n      return {\n        title: c.title,\n        node: root,\n      };\n    });\n    this.items.set(data);\n  });\n\n  protected items = signal<{ title: string; node: AXPWidgetNode }[]>([]);\n\n  protected handleContextChange(e: AXPContextChangeEvent) {\n    this.setValue(e.data);\n  }\n}\n","import { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\n@Component({\n  selector: 'axp-meta-data-widget-view',\n  template: `\n    <div class=\"ax-text-muted\">\n      @if (multiple()) {\n        @for (item of internalValue(); track $index) {\n          <p>{{ item }}</p>\n        }\n      } @else {\n        <p>{{ internalValue()[0] }}</p>\n      }\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPMetaDataWidgetViewComponent extends AXPValueWidgetComponent<any> {\n  protected internalValue = computed(() => (Array.isArray(this.getValue()) ? this.getValue() : [this.getValue()]));\n\n  protected multiple = computed<boolean>(() => this.options()['multiple'] as boolean);\n}\n","import { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXPMetaDataDefinition } from '@acorex/platform/contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_COMPOSITE } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY } from '../../../properties';\nimport { AXP_NAME_PROPERTY } from '../../../properties/general.props';\n\nexport const AXPMetaDataWidget: AXPWidgetConfig = {\n  name: 'meta-data-editor',\n  title: '@platform-layout-widgets:widgets.meta-data-editor.title',\n  icon: 'fa-light fa-input-text',\n  description: '@platform-layout-widgets:widgets.meta-data-editor.description',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_COMPOSITE,\n  type: 'editor',\n  defaultFilterWidgetName: 'string-filter',\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY],\n  components: {\n    view: {\n      component: () => import('./meta-data-widget-view.component').then((c) => c.AXPMetaDataWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./meta-data-widget-edit.component').then((c) => c.AXPMetaDataWidgetEditComponent),\n    },\n    column: {\n      component: () => import('./meta-data-widget-column.component').then((c) => c.AXPMetaDataWidgetColumnComponent),\n    },\n    designer: {\n      component: () => import('./meta-data-widget-edit.component').then((c) => c.AXPMetaDataWidgetEditComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    metaData: 'meta-data-editor';\n  }\n}\n\nexport interface AXPMetaDataWidgetDesignerOptions {\n  listMeta?: AXPMetaDataDefinition[];\n}\n\nexport interface AXPMetaDataWidgetViewOptions {\n  multiple?: boolean;\n}\n\nexport interface AXPMetaDataWidgetEditOptions {\n  listMeta?: AXPMetaDataDefinition[];\n}\n\nexport interface AXPMetaDataWidgetColumnOptions {}\n\nexport interface AXPMetaDataWidgetPrintOptions {}\n\nexport interface AXPMetaDataWidgetOptions {\n  designer: AXPMetaDataWidgetDesignerOptions;\n  view: AXPMetaDataWidgetViewOptions;\n  edit: AXPMetaDataWidgetEditOptions;\n  print: AXPMetaDataWidgetPrintOptions;\n  column: AXPMetaDataWidgetColumnOptions;\n}\n","import { AXFormatService } from '@acorex/core/format';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { isNumber } from 'lodash-es';\n\n@Component({\n  selector: 'axp-number-unit-box-widget-column',\n  template: `{{ displayValue() }}`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['rawValue', 'rowData'],\n})\nexport class AXPNumberUnitBoxWidgetColumnComponent extends AXPColumnWidgetComponent<any> {\n  private formatService = inject(AXFormatService);\n\n  protected unit = computed<string>(() => this.options['unit'] as string);\n\n  displayValue = computed(() => {\n    if (!isNumber(this.rawValue)) return '---';\n    const value: number = Number(this.rawValue);\n    let formattedValue: string;\n\n    if (this.options['format'] && this.options['format']['name']) {\n      const { name, options } = this.options['format'];\n      formattedValue = this.formatService.format(value, name, options);\n    } else {\n      formattedValue = value.toString();\n    }\n\n    return this.unit() ? `${formattedValue} ${this.unit()}` : formattedValue;\n  });\n}\n","import { AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXNumberBoxModule } from '@acorex/components/number-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueUnit, AXPValueUnits } from '@acorex/platform/contracts';\n\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostBinding, computed, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n  selector: 'axp-number-unit-box-widget-edit',\n  template: `\n    <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n      <div class=\"ax-col-span-12 ax-flex ax-gap-2\">\n        <ax-number-box\n          class=\"ax-flex-1\"\n          [minValue]=\"minValue()\"\n          [maxValue]=\"maxValue()\"\n          [decimals]=\"decimals()\"\n          [thousandsSeparator]=\"separator()\"\n          [placeholder]=\"(placeholder() | translate | async) ?? ''\"\n          [ngModel]=\"internalValue()\"\n          (onValueChanged)=\"handleValueChange($event)\"\n          [disabled]=\"disabled()\"\n        >\n          @for (validation of validationRules(); track $index) {\n            <ax-validation-rule\n              [rule]=\"validation.rule\"\n              [message]=\"validation.options?.message\"\n              [options]=\"validation.options\"\n            ></ax-validation-rule>\n          }\n          @if (clearButton()) {\n            <ax-clear-button></ax-clear-button>\n          }\n          @if (selectedUnit()) {\n            <ax-suffix>\n              <ax-dropdown-button [text]=\"selectedUnit()?.title\" [look]=\"'blank'\" [mode]=\"'dropdown'\">\n                <ax-button-item-list>\n                  @for (item of unit().items; track $index) {\n                    <ax-button-item\n                      [text]=\"item.title\"\n                      [selected]=\"item.name === selectedUnit()?.name\"\n                      (onClick)=\"handleUnitClick(item)\"\n                    ></ax-button-item>\n                  }\n                </ax-button-item-list>\n              </ax-dropdown-button>\n            </ax-suffix>\n          }\n        </ax-number-box>\n      </div>\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    AXNumberBoxModule,\n    FormsModule,\n    AXDecoratorModule,\n    AXFormModule,\n    AXButtonModule,\n    AXDropdownButtonModule,\n    AXTranslationModule,\n    AsyncPipe,\n  ],\n})\nexport class AXPNumberUnitBoxWidgetEditComponent extends AXPValueWidgetComponent {\n  protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n  protected clearButton = computed<boolean>(() => (this.options()['hasClearButton'] as boolean) ?? true);\n\n  protected decimals = computed<number>(() => (this.options()['decimals'] as number) ?? 0);\n\n  protected minValue = computed<number>(() => this.options()['minValue'] as number);\n  protected maxValue = computed<number>(() => this.options()['maxValue'] as number);\n\n  protected separator = computed<string>(() => (this.options()['separator'] as string) ?? null);\n\n  protected placeholder = computed<string>(() => this.options()['placeholder'] as string);\n\n  protected selectedUnit = signal<AXPValueUnit | undefined>(undefined);\n\n  protected internalValue = signal<number>(this.getValue() ?? 0);\n\n  protected unit = computed<AXPValueUnits>(() => {\n    return {\n      name: 'byte-size',\n      title: 'Byte Size',\n      default: 'KB',\n      items: [\n        {\n          name: 'KB',\n          title: 'KB',\n          ratio: 1,\n          order: 1,\n        },\n        {\n          name: 'MB',\n          title: 'MB',\n          ratio: 1024,\n          order: 2,\n        },\n        {\n          name: 'GB',\n          title: 'GB',\n          ratio: 1048576,\n          order: 3,\n        },\n        {\n          name: 'TB',\n          title: 'TB',\n          ratio: 1073741824,\n          order: 4,\n        },\n      ],\n    };\n  });\n\n  protected override validationRules = computed(() => (this.options()['validations'] ?? []) as any[]);\n\n  override ngOnInit(): void {\n    super.ngOnInit();\n    this.internalValue.set(this.getValue());\n    this.selectedUnit.set(this.unit().items.find((c) => c.name == this.unit().default));\n    this.calculatePreferUnit();\n  }\n\n  calculatePreferUnit() {\n    const value = this.getValue();\n\n    console.log(this.unit().items.filter((unit) => value % unit.ratio === 0));\n\n    const bestUnit = this.unit()\n      .items.filter((unit) => value % unit.ratio === 0)\n      .sort((a, b) => b.order - a.order)[0];\n    if (bestUnit != undefined) {\n      this.selectedUnit.set(bestUnit);\n      this.internalValue.update((x) => {\n        return x / bestUnit.ratio;\n      });\n    }\n  }\n\n  protected handleValueChange(e: AXValueChangedEvent<number>) {\n    const inputValue = e.value ?? 0;\n    const unit = this.selectedUnit();\n    const finalValue = unit ? inputValue * unit.ratio : inputValue;\n    this.setValue(finalValue);\n  }\n\n  protected handleUnitClick(item: AXPValueUnit) {\n    this.selectedUnit.set(item);\n    this.setValue(this.internalValue() * item.ratio);\n  }\n\n  @HostBinding('class')\n  private get __class(): string {\n    const classes = {\n      'ax-block': true,\n      'ax-flex-1': true,\n    };\n    return Object.keys(classes).join(' ');\n  }\n}\n","import { AXFormatService, AXNumberFormatterOptions } from '@acorex/core/format';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { isNumber } from 'lodash-es';\n\n@Component({\n  selector: 'axp-number-unit-box-widget-view',\n  template: `\n    <div class=\"ax-text-muted\">\n      @if (multiple()) {\n        @for (item of internalValue(); track $index) {\n          <p>{{ item }}</p>\n        }\n      } @else {\n        <p>{{ internalValue()[0] }}</p>\n      }\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPNumberUnitBoxWidgetViewComponent extends AXPValueWidgetComponent<any> {\n  protected internalValue = computed(() =>\n    Array.isArray(this.formattedValue()) ? this.formattedValue() : [this.formattedValue()],\n  );\n\n  protected multiple = computed<boolean>(() => this.options()['multiple'] as boolean);\n  protected format = computed<AXNumberFormatterOptions>(() => this.options()['format'] as AXNumberFormatterOptions);\n\n  private formatService = inject(AXFormatService);\n\n  private formattedValue() {\n    if (!isNumber(this.getValue())) return '---';\n    const value: number = Number(this.getValue());\n    return this.formatService.format(value, 'number', this.format());\n  }\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, cloneProperty, createNumberProperty } from '@acorex/platform/layout/widget-core-contracts';\nimport {\n AXNumberFormatterOptions } from '@acorex/core/format';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_NUMERIC } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_ALLOW_MULTIPLE_PROPERTY,\n  AXP_BEHAVIOR_PROPERTY_GROUP,\n  AXP_DATA_PATH_PROPERTY,\n  AXP_DISABLED_PROPERTY,\n  AXP_GREATER_THAN_VALIDATION_PROPERTY,\n  AXP_HAS_CLEAR_BUTTON_PROPERTY,\n  AXP_LESS_THAN_VALIDATION_PROPERTY,\n  AXP_NAME_PROPERTY,\n  AXP_NUMBER_SEPARATOR_PROPERTY,\n  AXP_PLACEHOLDER_PROPERTY,\n  AXP_REQUIRED_VALIDATION_PROPERTY,\n  AXP_TABLE_COLUMN_WIDTH_PROPERTY,\n  numberDefaultProperty,\n  numberMaxValueProperty,\n  numberMinValueProperty,\n} from '../../../properties';\n\nexport const AXPNumberUnitBoxWidget: AXPWidgetConfig = {\n  name: 'number-unit-editor',\n  title: '@platform-layout-widgets:widgets.number-unit-editor.title',\n  description: '@platform-layout-widgets:widgets.number-unit-editor.description',\n  icon: 'fa-light fa-input-numeric',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_NUMERIC,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  type: 'editor',\n  defaultFilterWidgetName: 'number-filter',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    AXP_ALLOW_MULTIPLE_PROPERTY,\n    AXP_HAS_CLEAR_BUTTON_PROPERTY,\n    AXP_DISABLED_PROPERTY,\n    AXP_PLACEHOLDER_PROPERTY,\n    numberDefaultProperty(),\n    numberMinValueProperty(),\n    numberMaxValueProperty(),\n    createNumberProperty({\n      defaultValue: 0,\n      name: 'decimals',\n      title: 'Decimals',\n      path: 'options.decimals',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n    }),\n    AXP_NUMBER_SEPARATOR_PROPERTY,\n    cloneProperty(AXP_TABLE_COLUMN_WIDTH_PROPERTY, { schema: { defaultValue: '200px' } }),\n    //\n    AXP_REQUIRED_VALIDATION_PROPERTY,\n    AXP_LESS_THAN_VALIDATION_PROPERTY,\n    AXP_GREATER_THAN_VALIDATION_PROPERTY,\n  ],\n  components: {\n    view: {\n      component: () =>\n        import('./number-unit-box-widget-view.component').then((c) => c.AXPNumberUnitBoxWidgetViewComponent),\n    },\n    edit: {\n      component: () =>\n        import('./number-unit-box-widget-edit.component').then((c) => c.AXPNumberUnitBoxWidgetEditComponent),\n    },\n    column: {\n      component: () =>\n        import('./number-unit-box-widget-column.component').then((c) => c.AXPNumberUnitBoxWidgetColumnComponent),\n    },\n    designer: {\n      component: () =>\n        import('./number-unit-box-widget-edit.component').then((c) => c.AXPNumberUnitBoxWidgetEditComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    numberUnit: 'number-unit-editor';\n  }\n}\n\nexport interface AXPNumberUnitBoxWidgetDesignerOptions {\n  disabled?: boolean;\n  hasClearButton?: boolean;\n  decimals?: number;\n  minValue?: number;\n  maxValue?: number;\n  separator?: string;\n  placeholder?: string;\n  validations?: any[];\n}\n\nexport interface AXPNumberUnitBoxWidgetViewOptions {\n  multiple?: boolean;\n  format?: AXNumberFormatterOptions;\n}\n\nexport interface AXPNumberUnitBoxWidgetEditOptions {\n  disabled?: boolean;\n  hasClearButton?: boolean;\n  decimals?: number;\n  minValue?: number;\n  maxValue?: number;\n  separator?: string;\n  placeholder?: string;\n  validations?: any[];\n}\n\nexport interface AXPNumberUnitBoxWidgetColumnOptions {\n  unit?: string;\n  format?: any;\n}\n\nexport interface AXPNumberUnitBoxWidgetPrintOptions {}\n\nexport interface AXPNumberUnitBoxWidgetOptions {\n  designer: AXPNumberUnitBoxWidgetDesignerOptions;\n  view: AXPNumberUnitBoxWidgetViewOptions;\n  edit: AXPNumberUnitBoxWidgetEditOptions;\n  print: AXPNumberUnitBoxWidgetPrintOptions;\n  column: AXPNumberUnitBoxWidgetColumnOptions;\n}\n","import { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_COMPOSITE } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_ALLOW_MULTIPLE_PROPERTY,\n  AXP_DATA_PATH_PROPERTY,\n  AXP_DEFAULT_ROW_COUNT_PROPERTY,\n  AXP_DISABLED_PROPERTY,\n  AXP_HAS_CLEAR_BUTTON_PROPERTY,\n  AXP_PLACEHOLDER_PROPERTY,\n} from '../../../properties';\nimport { AXP_NAME_PROPERTY } from '../../../properties/general.props';\nimport { AXPTabularDataColumn } from './tabular-widget.types';\n\nexport const AXPTableEditorWidget: AXPWidgetConfig = {\n  name: 'table-editor',\n  title: '@platform-layout-widgets:widgets.table-editor.title',\n  icon: 'fa-light fa-input-text',\n  description: '@platform-layout-widgets:widgets.table-editor.description',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_COMPOSITE,\n  type: 'editor',\n  defaultFilterWidgetName: 'string-filter',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    AXP_ALLOW_MULTIPLE_PROPERTY,\n    AXP_DISABLED_PROPERTY,\n    AXP_PLACEHOLDER_PROPERTY,\n    AXP_HAS_CLEAR_BUTTON_PROPERTY,\n    AXP_DEFAULT_ROW_COUNT_PROPERTY,\n    //cloneProperty(AXP_TABLE_COLUMN_WIDTH_PROPERTY, { schema: { defaultValue: '200px' } }),\n  ],\n  components: {\n    view: {\n      component: () =>\n        import('./tabular-data-widget-view.component').then((c) => c.AXPTabularDataEditorWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./tabular-data-widget-edit.component').then((c) => c.AXPTabularDataWidgetEditComponent),\n    },\n    column: {\n      component: () => import('./tabular-data-column.component').then((c) => c.AXPTabularDataWidgetColumnComponent),\n    },\n    designer: {\n      component: () => import('./tabular-data-widget-edit.component').then((c) => c.AXPTabularDataWidgetEditComponent),\n    },\n  },\n};\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    table: 'table-editor';\n  }\n}\n\nexport interface AXPTableEditorWidgetDesignerOptions {\n  columns?: AXPTabularDataColumn[];\n  defaultRowCount?: number;\n}\n\nexport interface AXPTableEditorWidgetViewOptions {\n  columns?: AXPTabularDataColumn[];\n}\n\nexport interface AXPTableEditorWidgetEditOptions {\n  columns?: AXPTabularDataColumn[];\n  defaultRowCount?: number;\n}\n\nexport interface AXPTableEditorWidgetColumnOptions {}\n\nexport interface AXPTableEditorWidgetPrintOptions {}\n\nexport interface AXPTableEditorWidgetOptions {\n  designer: AXPTableEditorWidgetDesignerOptions;\n  view: AXPTableEditorWidgetViewOptions;\n  edit: AXPTableEditorWidgetEditOptions;\n  print: AXPTableEditorWidgetPrintOptions;\n  column: AXPTableEditorWidgetColumnOptions;\n}\n","import { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n@Component({\n  selector: 'axp-tabular-data-widget-column',\n  template: `{{ rawValue }}`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [],\n  inputs: ['rawValue', 'rowData'],\n})\nexport class AXPTabularDataWidgetColumnComponent extends AXPColumnWidgetComponent<any> {}\n","import { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n    template: ``,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [FormsModule],\n    inputs: []\n})\nexport class AXPTabulaDataWidgetFilterComponent extends AXPValueWidgetComponent<any> { }\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDataTableModule } from '@acorex/components/data-table';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPWidgetCoreModule, AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXPTabularDataColumn } from './tabular-widget.types';\n\n@Component({\n  selector: 'axp-tabular-data-widget-edit',\n  template: ` <span class=\"ax-truncate ax-underline ax-cursor-pointer\" (click)=\"openPopup()\"> Click To Edit</span> `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    AXTextBoxModule,\n    FormsModule,\n    AXFormModule,\n    AXDecoratorModule,\n    AXValidationModule,\n    AXButtonModule,\n    AXPWidgetCoreModule,\n    AXDataTableModule,\n  ],\n  inputs: [],\n})\nexport class AXPTabularDataWidgetEditComponent extends AXPValueWidgetComponent<any> {\n  protected columns = computed<AXPTabularDataColumn[]>(() => this.options()['columns']);\n  protected defaultRowCount = computed<number>(() => this.options()['defaultRowCount'] as number);\n\n  private popupService: AXPopupService = inject(AXPopupService);\n  private platform = inject(AXPlatform);\n\n  protected async openPopup() {\n    const { AXPTabularDataPopupComponent } = await import('./tabular-data-edit-popup.component');\n\n    const popupData = await this.popupService.open(AXPTabularDataPopupComponent, {\n      size: this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : this.columns().length > 3 ? 'lg' : 'md',\n      header: true,\n      closeOnBackdropClick: true,\n      closeButton: true,\n      draggable: true,\n      title: this.path ?? '',\n      data: {\n        columns: this.columns(),\n        context: this.getValue(),\n        defaultRowCount: this.defaultRowCount(),\n      },\n    });\n    this.setValue(popupData.data?.context);\n  }\n}\n","import { AXPopupService } from '@acorex/components/popup';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { AXPTabularDataColumn } from './tabular-widget.types';\n\n@Component({\n  selector: 'axp-tabular-data-widget-view',\n  template: ` <span class=\"ax-truncate ax-underline ax-cursor-pointer\" (click)=\"openPopup()\"> Click To See Grid</span>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPTabularDataEditorWidgetViewComponent extends AXPValueWidgetComponent<any> {\n  private popupService: AXPopupService = inject(AXPopupService);\n  private platform = inject(AXPlatform);\n  protected columns = this.options()['columns'] as AXPTabularDataColumn[];\n\n  protected async openPopup() {\n    const { AXPTabularDataPopupComponent } = await import('./tabular-data-view-popup.component');\n\n    this.popupService.open(AXPTabularDataPopupComponent, {\n      size: this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : 'md',\n      header: true,\n      closeOnBackdropClick: true,\n      closeButton: true,\n      draggable: true,\n      title: this.path ?? '',\n      data: {\n        items: this.getValue() ?? [],\n        columns: this.columns,\n      },\n    });\n  }\n}\n","import { AXTimeDurationUnit } from '@acorex/components/time-duration';\nimport { AXTimeDurationFormatter } from '@acorex/core/date-time';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPColumnWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';\n@Component({\n  selector: 'axp-time-duration-widget-column',\n  template: `{{ internalValue() }}`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [],\n  inputs: ['rawValue', 'rowData'],\n})\nexport class AXPTimeDurationWidgetColumnComponent extends AXPColumnWidgetComponent<any> {\n  protected translate = inject(AXTranslationService);\n\n  protected timeDurationFormatter: AXTimeDurationFormatter = inject(AXTimeDurationFormatter);\n  protected from = this.options['from'].title as AXTimeDurationUnit;\n  protected to = this.options['to'].title as AXTimeDurationUnit;\n  protected label = this.options['label'] as boolean;\n  protected maskDigits = this.options['maskDigits'] as string;\n\n  protected internalValue = signal('');\n\n  async ngAfterViewInit(): Promise<void> {\n    this.internalValue.set(\n      await this.timeDurationFormatter.millisecondsToMask(\n        this.rawValue,\n        this.from,\n        this.to,\n        this.label,\n        this.maskDigits || '00:00:00:00:00:00:00:000',\n        true,\n      ),\n    );\n  }\n}\n","import { AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXTimeDurationModule, AXTimeDurationUnit } from '@acorex/components/time-duration';\nimport { AXTimeDurationFormatter } from '@acorex/core/date-time';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPFilterOperator } from '@acorex/platform/common';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { get, isString } from 'lodash-es';\nimport { AXPFilterOperationsComponent } from '../../filters/operations/operations.component';\n\n@Component({\n  selector: 'axp-time-duration-widget-edit',\n  template: `\n    @if (filterMode()) {\n      <div class=\"ax-flex ax-items-center\" [class.ax-gap-2]=\"operationsMenuVisible()\">\n        <div class=\"ax-flex-1\">\n          <ax-time-duration\n            [ngModel]=\"filterEditorValue()\"\n            (onValueChanged)=\"handleFilterValueChange($event)\"\n            [valueStart]=\"from()\"\n            [valueEnd]=\"to()\"\n            [label]=\"label()\"\n            [minValue]=\"minValue()\"\n            [maxValue]=\"maxValue()\"\n            [disabled]=\"isFilterEditorDisabled()\"\n            [maskDigits]=\"maskDigits()\"\n          >\n            @for (validation of validationRules(); track $index) {\n              <ax-validation-rule\n                [rule]=\"validation.rule\"\n                [message]=\"validation.options?.message\"\n                [options]=\"validation.options\"\n              ></ax-validation-rule>\n            }\n          </ax-time-duration>\n        </div>\n        <axp-filter-operations\n          [type]=\"'number'\"\n          [operations]=\"operations()\"\n          [selectedOperation]=\"operation().type\"\n          (selectedOperationChange)=\"handleOperationChanged($event)\"\n        ></axp-filter-operations>\n      </div>\n    } @else {\n      <ax-time-duration\n        [ngModel]=\"getValue()\"\n        (onValueChanged)=\"handleChangeValue($event)\"\n        [valueStart]=\"from()\"\n        [valueEnd]=\"to()\"\n        [label]=\"label()\"\n        [minValue]=\"minValue()\"\n        [maxValue]=\"maxValue()\"\n        [disabled]=\"disabled()\"\n        [maskDigits]=\"maskDigits()\"\n      >\n        @for (validation of validationRules(); track $index) {\n          <ax-validation-rule\n            [rule]=\"validation.rule\"\n            [message]=\"validation.options?.message\"\n            [options]=\"validation.options\"\n          ></ax-validation-rule>\n        }\n      </ax-time-duration>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [FormsModule, AXFormModule, AXTimeDurationModule, AXValidationModule, AXPFilterOperationsComponent],\n})\nexport class AXPTimerDurationWidgetEditComponent extends AXPValueWidgetComponent<any> {\n  //#region ---- Services & Dependencies ----\n\n  private readonly timeDurationFormatter = inject(AXTimeDurationFormatter);\n\n  //#endregion\n\n  //#region ---- Computed Properties ----\n\n  protected filterMode = computed<boolean>(() => (this.options()['filterMode'] as boolean) ?? false);\n\n  protected disabled = computed<boolean>(() => (this.options()['disabled'] as boolean) ?? false);\n\n  protected from = computed<AXTimeDurationUnit>(() => this.resolveUnit(this.options()['from'], 'HOUR'));\n\n  protected to = computed<AXTimeDurationUnit>(() => this.resolveUnit(this.options()['to'], 'MINUTE'));\n\n  protected minValue = computed<number>(() => this.options()['minValue'] as number);\n\n  protected maxValue = computed<number>(() => this.options()['maxValue'] as number);\n\n  protected maskDigits = computed<string>(() => (this.options()['maskDigits'] || '00:00:00:00:00:00:00:000') as string);\n\n  protected label = computed<boolean>(() => (this.options()['label'] as boolean) ?? false);\n\n  protected operations = computed((): AXPFilterOperator[] | undefined => {\n    const raw = this.options()['operations'] as AXPFilterOperator[] | undefined;\n    return raw?.length ? raw : undefined;\n  });\n\n  /** Align with axp-filter-operations: ellipsis only when more than one operator; no extra gap beside editor otherwise. */\n  protected operationsMenuVisible = computed(() => this.operations()?.length !== 1);\n\n  protected operation = computed(() => {\n    const existing = this.getValue()?.operation;\n    if (existing?.type) {\n      return existing;\n    }\n    const ops = this.operations();\n    if (ops?.length === 1) {\n      return { type: ops[0].name };\n    }\n    return { type: 'equal' };\n  });\n\n  /** In filterMode the stored value is `{ value, operation, displayText }`; bind the unwrapped duration. */\n  protected filterEditorValue = computed(() => {\n    const raw = this.getValue();\n    if (raw && typeof raw === 'object' && 'value' in raw) {\n      return (raw as { value?: unknown }).value;\n    }\n    return raw;\n  });\n\n  protected isFilterEditorDisabled = computed(\n    () => this.operation().type === 'isEmpty' || this.operation().type === 'isNotEmpty',\n  );\n\n  //#endregion\n\n  //#region ---- Standard Mode Handlers ----\n\n  handleChangeValue(e: AXValueChangedEvent): void {\n    this.setValue(e.value);\n  }\n\n  //#endregion\n\n  //#region ---- Filter Mode Handlers ----\n\n  async handleFilterValueChange(e: AXValueChangedEvent): Promise<void> {\n    await this.commitFilterValue(e.value, this.operation().type);\n  }\n\n  async handleOperationChanged(operationType: unknown): Promise<void> {\n    await this.commitFilterValue(this.filterEditorValue(), operationType as string);\n  }\n\n  //#endregion\n\n  //#region ---- Utility Methods ----\n\n  private resolveUnit(raw: unknown, fallback: AXTimeDurationUnit): AXTimeDurationUnit {\n    const title = get(raw, 'title') as unknown;\n    const id = get(raw, 'id') as unknown;\n    if (isString(title) && title.length) {\n      return title as AXTimeDurationUnit;\n    }\n    if (isString(id) && id.length) {\n      return id as AXTimeDurationUnit;\n    }\n    if (isString(raw) && raw.length) {\n      return raw as AXTimeDurationUnit;\n    }\n    return fallback;\n  }\n\n  private async commitFilterValue(value: unknown, operationType: string): Promise<void> {\n    const displayText = await this.timeDurationFormatter.millisecondsToMask(\n      value as number,\n      this.from(),\n      this.to(),\n      false,\n      this.maskDigits(),\n      true,\n    );\n\n    this.setValue({\n      value,\n      operation: { type: operationType },\n      displayText,\n    });\n  }\n\n  //#endregion\n}\n","import { AXTimeDurationUnit } from '@acorex/components/time-duration';\nimport { AXTimeDurationFormatter } from '@acorex/core/date-time';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\n\n@Component({\n  selector: 'axp-time-duration-widget-view',\n  template: `<p class=\"ax-text-muted\">{{ internalValue() | async }}</p>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [CommonModule],\n})\nexport class AXPTimerDurationWidgetViewComponent extends AXPValueWidgetComponent<any> {\n  private timeDurationFormatter: AXTimeDurationFormatter = inject(AXTimeDurationFormatter);\n  protected translate = inject(AXTranslationService);\n\n  protected from = computed<AXTimeDurationUnit>(() => this.options()['from'].title as AXTimeDurationUnit);\n  protected to = computed<AXTimeDurationUnit>(() => this.options()['to'].title as AXTimeDurationUnit);\n  protected label = computed<boolean>(() => (this.options()['label'] as boolean) ?? false);\n  protected maskDigits = computed<string>(() => this.options()['maskDigits'] as string);\n\n  protected internalValue = computed(() =>\n    this.timeDurationFormatter.millisecondsToMask(\n      this.getValue(),\n      this.from(),\n      this.to(),\n      this.label(),\n      this.maskDigits() || '00:00:00:00:00:00:00:000',\n      true,\n    ),\n  );\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport {\n AXTimeDurationUnit } from '@acorex/components/time-duration';\nimport { AXPWidgetsCatalog } from '@acorex/platform/contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_EDITOR_SUB_DATETIME } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_APPEARANCE_PROPERTY_GROUP,\n  AXP_DATA_PATH_PROPERTY,\n  AXP_DISABLED_PROPERTY,\n  AXP_NAME_PROPERTY,\n} from '../../../properties';\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    timeDuration: 'time-duration';\n  }\n}\n\nexport interface AXPTimeDurationWidgetDesignerOptions {\n  disabled?: boolean;\n  from?: AXTimeDurationUnit;\n  to?: AXTimeDurationUnit;\n  label?: boolean;\n}\n\nexport interface AXPTimeDurationWidgetViewOptions {\n  from?: AXTimeDurationUnit;\n  to?: AXTimeDurationUnit;\n}\n\nexport interface AXPTimeDurationWidgetEditOptions {\n  disabled?: boolean;\n  from?: AXTimeDurationUnit;\n  to?: AXTimeDurationUnit;\n  label?: boolean;\n  filterMode?: boolean;\n  operations?: import('@acorex/platform/common').AXPFilterOperator[];\n}\n\nexport interface AXPTimeDurationWidgetColumnOptions {\n  from?: AXTimeDurationUnit;\n  to?: AXTimeDurationUnit;\n}\n\nexport interface AXPTimeDurationWidgetPrintOptions {}\n\nexport interface AXPTimeDurationWidgetOptions {\n  designer: AXPTimeDurationWidgetDesignerOptions;\n  view: AXPTimeDurationWidgetViewOptions;\n  edit: AXPTimeDurationWidgetEditOptions;\n  print: AXPTimeDurationWidgetPrintOptions;\n  column: AXPTimeDurationWidgetColumnOptions;\n}\n\nexport const AXPTimeDurationWidget: AXPWidgetConfig = {\n  name: 'time-duration',\n  title: '@platform-layout-widgets:widgets.time-duration.title',\n  description: '@platform-layout-widgets:widgets.time-duration.description',\n  icon: 'fa-light fa-clock',\n  categories: AXP_WIDGETS_EDITOR_CATEGORY,\n  subCategory: AXP_WIDGETS_EDITOR_SUB_DATETIME,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  defaultFilterWidgetName: 'time-duration-filter',\n  type: 'editor',\n  properties: [\n    AXP_DISABLED_PROPERTY,\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    {\n      name: 'from',\n      title: 'From',\n      group: AXP_APPEARANCE_PROPERTY_GROUP,\n      schema: {\n        dataType: 'string',\n        defaultValue: { id: 'year', title: 'year' },\n        interface: {\n          name: 'from',\n          path: 'options.from',\n          type: AXPWidgetsCatalog.select,\n          options: {\n            dataSource: [\n              { id: 'year', title: 'year' },\n              { id: 'month', title: 'month' },\n              { id: 'week', title: 'week' },\n              { id: 'day', title: 'day' },\n              { id: 'hour', title: 'hour' },\n              { id: 'minute', title: 'minute' },\n              { id: 'second', title: 'second' },\n              { id: 'millisecond', title: 'millisecond' },\n            ],\n          },\n        },\n      },\n      visible: true,\n    },\n    {\n      name: 'to',\n      title: 'To',\n      group: AXP_APPEARANCE_PROPERTY_GROUP,\n      schema: {\n        dataType: 'string',\n        defaultValue: { id: 'millisecond', title: 'millisecond' },\n        interface: {\n          name: 'to',\n          path: 'options.to',\n          type: AXPWidgetsCatalog.select,\n          options: {\n            dataSource: [\n              { id: 'year', title: 'year' },\n              { id: 'month', title: 'month' },\n              { id: 'week', title: 'week' },\n              { id: 'day', title: 'day' },\n              { id: 'hour', title: 'hour' },\n              { id: 'minute', title: 'minute' },\n              { id: 'second', title: 'second' },\n              { id: 'millisecond', title: 'millisecond' },\n            ],\n          },\n        },\n      },\n      visible: true,\n    },\n  ],\n  components: {\n    view: {\n      component: () =>\n        import('./time-duration-widget-view.component').then((c) => c.AXPTimerDurationWidgetViewComponent),\n    },\n    edit: {\n      component: () =>\n        import('./time-duration-widget-edit.component').then((c) => c.AXPTimerDurationWidgetEditComponent),\n    },\n    column: {\n      component: () =>\n        import('./time-duration-widget-column.component').then((c) => c.AXPTimeDurationWidgetColumnComponent),\n    },\n    designer: {\n      component: () =>\n        import('./time-duration-widget-edit.component').then((c) => c.AXPTimerDurationWidgetEditComponent),\n    },\n  },\n};\n","import { AXDataSource, AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXSelectBoxComponent, AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n  template: `\n    <div class=\"ax-flex ax-items-center\">\n      <ax-select-box\n        #selectBox\n        textField=\"text\"\n        valueField=\"value\"\n        [placeholder]=\"('@general:actions.select.title' | translate | async) ?? ''\"\n        [dataSource]=\"dataSource\"\n        [ngModel]=\"value()\"\n        (onValueChanged)=\"handleValueChange($event)\"\n      >\n      </ax-select-box>\n    </div>\n  `,\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [CommonModule, FormsModule, AXDecoratorModule, AXSelectBoxModule, AXTranslationModule],\n})\nexport class AXPBooleanFilterWidgetEditComponent extends AXPValueWidgetComponent<any> {\n  protected selectBox = viewChild<AXSelectBoxComponent>('selectBox');\n\n  protected operation = computed(() => this.getValue()?.operation || 'equal');\n  protected value = computed(() => this.getValue()?.value);\n  protected trulyText = computed(() => this.options()['trulyText']);\n  protected falsyText = computed(() => this.options()['falsyText']);\n  protected negative = computed(() => this.options()['negative']);\n  private readonly translateService = inject(AXTranslationService);\n\n  protected items: { text: string; value: boolean | string }[] = [];\n\n  protected handleValueChange(e: AXValueChangedEvent) {\n    if (e.isUserInteraction) {\n      this.setValue({\n        value: e.value,\n        operation: this.negative() ? { type: 'notEqual' } : { type: 'equal' },\n      });\n    }\n  }\n\n  protected dataSource: any = new AXDataSource({\n    load: () => {\n      return Promise.resolve({\n        items: this.items,\n        total: this.items.length,\n      });\n    },\n    byKey: (id: unknown) => {\n      const item = this.items.find((c) => c.value?.toString() == id);\n      return Promise.resolve(item);\n    },\n    pageSize: 10,\n    key: 'value',\n  });\n\n  #effect = effect(async () => {\n    this.items = [\n      // { text: await this.translateService.translateAsync('@general:widgets.toggle.unknown'), value: 'unknown' },\n      {\n        text: this.trulyText() || (await this.translateService.translateAsync('@general:widgets.toggle.yes')),\n        value: true,\n      },\n      {\n        text: this.falsyText() || (await this.translateService.translateAsync('@general:widgets.toggle.no')),\n        value: false,\n      },\n    ];\n  });\n\n  focus() {\n    this.selectBox()?.focus();\n  }\n}\n","\nimport { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\n\nexport const AXPBooleanFilterWidget: AXPWidgetConfig = {\n  name: 'boolean-filter',\n  title: 'Boolean Filter',\n  type: 'filter',\n  icon: 'fa-light fa-square',\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n  components: {\n    edit: {\n      component: () =>\n        import('./boolean-filter-widget-edit.component').then((c) => c.AXPBooleanFilterWidgetEditComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    booleanFilter: 'boolean-filter';\n  }\n}\n","import { AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXNumberBoxComponent, AXNumberBoxModule } from '@acorex/components/number-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPFilterOperator } from '@acorex/platform/common';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXPFilterOperationsComponent } from '../operations/operations.component';\n\n@Component({\n  template: `\n    <div class=\"ax-flex ax-items-center\">\n      @if (operation().type === 'between') {\n        <div class=\"ax-flex-1 ax-flex ax-gap-4\">\n          <ax-number-box\n            #numberBox\n            class=\"ax-w-full\"\n            [placeholder]=\"('@general:terms.common.from' | translate | async) ?? 'From'\"\n            [showSpinButtons]=\"false\"\n            [thousandsSeparator]=\"seprator()\"\n            [ngModel]=\"value()?.from\"\n            (onValueChanged)=\"handleValueChange($event, 'from')\"\n          >\n            <ax-clear-button></ax-clear-button>\n            @for (validation of validationRules(); track $index) {\n              <ax-validation-rule\n                [rule]=\"validation.rule\"\n                [message]=\"validation.options?.message\"\n                [options]=\"validation.options\"\n              ></ax-validation-rule>\n            }\n          </ax-number-box>\n          <ax-number-box\n            class=\"ax-w-full\"\n            [placeholder]=\"('@general:terms.common.to' | translate | async) ?? 'To'\"\n            [showSpinButtons]=\"false\"\n            [ngModel]=\"value()?.to\"\n            [thousandsSeparator]=\"seprator()\"\n            (onValueChanged)=\"handleValueChange($event, 'to')\"\n          >\n            <ax-clear-button></ax-clear-button>\n            @for (validation of validationRules(); track $index) {\n              <ax-validation-rule\n                [rule]=\"validation.rule\"\n                [message]=\"validation.options?.message\"\n                [options]=\"validation.options\"\n              ></ax-validation-rule>\n            }\n          </ax-number-box>\n        </div>\n      } @else {\n        <ax-number-box\n          #numberBox\n          class=\"ax-flex-1\"\n          [placeholder]=\"(placeholder() | translate | async) ?? ''\"\n          [disabled]=\"operation().type === 'isEmpty' || operation().type === 'isNotEmpty'\"\n          [showSpinButtons]=\"false\"\n          [thousandsSeparator]=\"seprator()\"\n          [ngModel]=\"value()\"\n          (onValueChanged)=\"handleValueChange($event, 'self')\"\n        >\n          <ax-clear-button></ax-clear-button>\n          @for (validation of validationRules(); track $index) {\n            <ax-validation-rule\n              [rule]=\"validation.rule\"\n              [message]=\"validation.options?.message\"\n              [options]=\"validation.options\"\n            ></ax-validation-rule>\n          }\n        </ax-number-box>\n      }\n      <axp-filter-operations\n        type=\"number\"\n        [operations]=\"operations()\"\n        [selectedOperation]=\"operation().type\"\n        (selectedOperationChange)=\"handleOperationChange($event)\"\n      ></axp-filter-operations>\n    </div>\n  `,\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    CommonModule,\n    FormsModule,\n    AXFormModule,\n    AXDecoratorModule,\n    AXNumberBoxModule,\n    AXValidationModule,\n    AXPFilterOperationsComponent,\n    AXTranslationModule,\n  ],\n})\nexport class AXPNumberFilterWidgetEditComponent extends AXPValueWidgetComponent<any> {\n  protected numberBox = viewChild<AXNumberBoxComponent>('numberBox');\n  protected value = computed(() => this.getValue()?.value);\n\n  protected operations = computed((): AXPFilterOperator[] | undefined => {\n    const raw = this.options()['operations'] as AXPFilterOperator[] | undefined;\n    return raw?.length ? raw : undefined;\n  });\n\n  /** Align with axp-filter-operations: ellipsis only when more than one operator; no extra gap beside editor otherwise. */\n  protected operationsMenuVisible = computed(() => this.operations()?.length !== 1);\n\n  protected operation = computed(() => {\n    const existing = this.getValue()?.operation;\n    if (existing?.type) {\n      return existing;\n    }\n    const ops = this.operations();\n    if (ops?.length === 1) {\n      return { type: ops[0].name };\n    }\n    return { type: 'equal' };\n  });\n\n  protected placeholder = computed(() => this.options()['placeholder']);\n  protected seprator = computed<string>(() => (this.options()['seprator'] as string) ?? null);\n\n  handleValueChange(e: AXValueChangedEvent, type: 'self' | 'from' | 'to') {\n    switch (type) {\n      case 'self':\n        this.setValue({\n          value: e.value,\n          operation: this.operation(),\n        });\n        break;\n      case 'from':\n        this.setValue({\n          value: {\n            from: e.value,\n            to: this.value()?.to,\n          },\n          operation: this.operation(),\n        });\n        break;\n      case 'to':\n        this.setValue({\n          value: {\n            from: this.value()?.from,\n            to: e.value,\n          },\n          operation: this.operation(),\n        });\n        break;\n      default:\n        break;\n    }\n  }\n\n  handleOperationChange(e: unknown) {\n    this.setValue({\n      value: this.value(),\n      operation: { type: e },\n    });\n  }\n\n  focus() {\n    this.numberBox()?.focus();\n  }\n}\n","\nimport { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\n\nexport const AXPNumberFilterWidget: AXPWidgetConfig = {\n  name: 'number-filter',\n  title: 'Number Filter',\n  type: 'filter',\n  defaultFilterWidgetName: 'number-filter',\n  icon: 'fa-light fa-square',\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n  components: {\n    edit: {\n      component: () =>\n        import('./number-filter-widget-edit.component').then((c) => c.AXPNumberFilterWidgetEditComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    numberFilter: 'number-filter';\n  }\n}\n","import { AXDataSource, AXValueChangedEvent, convertArrayToDataSource } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSelectBoxComponent, AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPStatusDefinition } from '@acorex/platform/contracts';\nimport { AXPStatusDefinitionProviderService } from '@acorex/platform/common';\nimport { AXPDataListWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, untracked, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n//#region ----   Component   ----\n\n@Component({\n    template: `\n    <div class=\"ax-flex ax-items-center\">\n      <ax-select-box\n        #selectBox\n        [placeholder]=\"(placeholder() | translate | async) ?? ''\"\n        [textField]=\"'title'\"\n        [valueField]=\"'name'\"\n        [dataSource]=\"dataSource()\"\n        [multiple]=\"multiple()\"\n        [ngModel]=\"value()\"\n        (onValueChanged)=\"handleValueChange($event)\"\n      >\n        @if (allowSearch()) {\n          <ax-search-box><ax-clear-button></ax-clear-button></ax-search-box>\n        }\n        <ax-clear-button></ax-clear-button>\n      </ax-select-box>\n    </div>\n  `,\n    standalone: true,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [CommonModule, FormsModule, AXSelectBoxModule, AXDecoratorModule, AXSearchBoxModule, AXTranslationModule],\n})\nexport class AXPStatusFilterWidgetEditComponent extends AXPDataListWidgetComponent {\n    //#region ----   Services & Dependencies   ----\n\n    private readonly statusService = inject(AXPStatusDefinitionProviderService);\n\n    //#endregion\n\n    //#region ----   View Children   ----\n\n    protected selectBox = viewChild<AXSelectBoxComponent>('selectBox');\n\n    //#endregion\n\n    //#region ----   Computed Properties   ----\n\n    protected value = computed(() => this.getValue()?.value);\n    protected multiple = computed(() => this.options()['multiple'] ?? false);\n    protected allowSearch = computed(() => this.options()['allowSearch'] ?? true);\n    protected placeholder = computed(() => this.options()['placeholder'] ?? '@general:terms.status.select');\n    protected definitionKey = computed<string | null>(() => (this.options()['definitionKey'] as string) ?? null);\n\n    //#endregion\n\n    //#region ----   Effects   ----\n\n    /**\n     * Load statuses from status provider and set dataSource\n     */\n    private loadStatusDataSource = effect(async () => {\n        const key = this.definitionKey();\n\n        if (!key) {\n            untracked(() => {\n                this.dataSource.set(convertArrayToDataSource<AXPStatusDefinition>([]));\n            });\n            return;\n        }\n\n        const provider = await this.statusService.getStatus(key);\n        untracked(() => {\n            if (!provider) {\n                console.warn(`Status provider with key \"${key}\" not found.`);\n                this.dataSource.set(convertArrayToDataSource<AXPStatusDefinition>([]));\n                return;\n            }\n\n            const statuses = provider.statuses ?? [];\n            this.dataSource.set(\n                convertArrayToDataSource<AXPStatusDefinition>(statuses, {\n                    key: 'name',\n                    pageSize: 500,\n                })\n            );\n        });\n    });\n\n    //#endregion\n\n    //#region ----   Event Handlers   ----\n\n    handleValueChange(e: AXValueChangedEvent) {\n        this.setValue({\n            operation: this.multiple() ? { type: 'in' } : { type: 'equal' },\n            value: e.value,\n        });\n    }\n\n    focus() {\n        this.selectBox()?.focus();\n    }\n\n    //#endregion\n}\n\n//#endregion\n\n","\nimport { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\n\nexport const AXPStatusFilterWidget: AXPWidgetConfig = {\n    name: 'status-filter',\n    title: 'Status Filter',\n    type: 'filter',\n    icon: 'fa-light fa-circle-check',\n    properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n    components: {\n        edit: {\n            component: () =>\n                import('./status-filter-widget-edit.component').then((c) => c.AXPStatusFilterWidgetEditComponent),\n        },\n    },\n};\n\n","import { AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXTextBoxComponent, AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPFilterOperator } from '@acorex/platform/common';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXPFilterOperationsComponent } from '../operations/operations.component';\n\n@Component({\n  template: `\n    <div class=\"ax-flex ax-items-center\" [class.ax-gap-2]=\"operationsMenuVisible()\">\n      <ax-text-box\n        #textBox\n        class=\"ax-flex-1\"\n        [autofocus]=\"true\"\n        [placeholder]=\"(placeholder() | translate | async) ?? ''\"\n        [disabled]=\"operation().type === 'isEmpty' || operation().type === 'isNotEmpty'\"\n        [ngModel]=\"value()\"\n        (onValueChanged)=\"handleValueChange($event)\"\n      >\n        @if (hasClearButton()) {\n          <ax-clear-button></ax-clear-button> \n        }\n        @for (validation of validationRules(); track $index) {\n          <ax-validation-rule\n            [rule]=\"validation.rule\"\n            [message]=\"validation.options?.message\"\n            [options]=\"validation.options\"\n          ></ax-validation-rule>\n        }\n      </ax-text-box>\n      <axp-filter-operations\n        [type]=\"'string'\"\n        [operations]=\"operations()\"\n        [selectedOperation]=\"operation().type\"\n        (selectedOperationChange)=\"handleOperationChanged($event)\"\n      ></axp-filter-operations>\n    </div>\n  `,\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    CommonModule,\n    AXTextBoxModule,\n    FormsModule,\n    AXFormModule,\n    AXDecoratorModule,\n    AXPFilterOperationsComponent,\n    AXTranslationModule,\n  ],\n})\nexport class AXPStringWidgetFilterComponent extends AXPValueWidgetComponent<any> {\n  protected textBox = viewChild<AXTextBoxComponent>('textBox');\n\n  /** Normalized: empty array from options is treated as unset (full operator list). */\n  protected operations = computed((): AXPFilterOperator[] | undefined => {\n    const raw = this.options()['operations'] as AXPFilterOperator[] | undefined;\n    return raw?.length ? raw : undefined;\n  });\n\n  /** Align with axp-filter-operations: ellipsis only when more than one operator; no extra gap beside editor otherwise. */\n  protected operationsMenuVisible = computed(() => this.operations()?.length !== 1);\n\n  protected operation = computed(() => {\n    const existing = this.getValue()?.operation;\n    if (existing?.type) {\n      return existing;\n    }\n    const ops = this.operations();\n    if (ops?.length === 1) {\n      return { type: ops[0].name };\n    }\n    return { type: 'contains' };\n  });\n\n  protected value = computed(() => this.getValue()?.value);\n  protected placeholder = computed(() => this.options()['placeholder']);\n  protected hasClearButton = computed(() => this.options()['hasClearButton']);\n\n  handleValueChange(e: AXValueChangedEvent) {\n    if (e.isUserInteraction) {\n      this.setValue({\n        value: e.value,\n        operation: this.operation(),\n      });\n    }\n  }\n\n  handleOperationChanged(e: unknown) {\n    this.setValue({\n      value: this.value(),\n      operation: { type: e },\n    });\n  }\n\n  focus() {\n    this.textBox()?.focus();\n  }\n}\n","\nimport { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\n\nexport const AXPStringFilterWidget: AXPWidgetConfig = {\n  name: 'string-filter',\n  title: 'String Filter',\n  icon: 'fa-light fa-square',\n  type: 'filter',\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n  components: {\n    edit: {\n      component: () => import('./string-filter-widget-edit.component').then((c) => c.AXPStringWidgetFilterComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    stringFilter: 'string-filter';\n  }\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport {\n objectKeyValueTransforms } from '@acorex/platform/core';\nimport { AXPWidgetsCatalog } from '@acorex/platform/contracts';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGETS_LAYOUT_SUB_SURFACES } from '@acorex/platform/layout/widget-core';\nimport { AXP_BEHAVIOR_PROPERTY_GROUP, AXP_NAME_PROPERTY } from '../../../properties';\nimport { AXP_STYLING_PROPERTY_GROUP } from '../../../properties/groups';\n\n/** Alert color / severity (maps to ax-alert color). */\nexport type AXPAlertBoxColor = 'info' | 'warning' | 'danger' | 'success' | 'neutral';\n\nexport const AXPAlertBoxWidget: AXPWidgetConfig = {\n  name: 'alert-box-layout',\n  title: '@platform-layout-widgets:widgets.alert-box-layout.title',\n  description: '@platform-layout-widgets:widgets.alert-box-layout.description',\n  icon: 'fa-light fa-circle-info',\n  categories: [AXP_WIDGETS_LAYOUT_CATEGORY],\n  subCategory: AXP_WIDGETS_LAYOUT_SUB_SURFACES,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  type: 'view',\n  properties: [\n    AXP_NAME_PROPERTY,\n    {\n      name: 'title',\n      title: 'Title',\n      group: AXP_STYLING_PROPERTY_GROUP,\n      schema: {\n        dataType: 'string',\n        defaultValue: 'Alert',\n        interface: {\n          name: 'title',\n          path: 'options.title',\n          type: AXPWidgetsCatalog.text,\n        },\n      },\n      visible: true,\n    },\n    {\n      name: 'content',\n      title: 'Content',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n      schema: {\n        dataType: 'string',\n        defaultValue: '',\n        interface: {\n          name: 'content',\n          path: 'options.content',\n          type: AXPWidgetsCatalog.richText,\n        },\n      },\n      visible: true,\n    },\n    {\n      name: 'color',\n      title: 'Color',\n      group: AXP_STYLING_PROPERTY_GROUP,\n      schema: {\n        dataType: 'string',\n        defaultValue: 'info',\n        interface: {\n          name: 'color',\n          path: 'options.color',\n          type: AXPWidgetsCatalog.select,\n          valueTransforms: objectKeyValueTransforms('id'),\n          options: {\n            dataSource: [\n              { id: 'info', title: 'Info' },\n              { id: 'warning', title: 'Warning' },\n              { id: 'danger', title: 'Danger' },\n              { id: 'success', title: 'Success' },\n              { id: 'neutral', title: 'Neutral' },\n            ],\n          },\n        },\n      },\n      visible: true,\n    },\n    {\n      name: 'icon',\n      title: 'Icon',\n      group: AXP_STYLING_PROPERTY_GROUP,\n      schema: {\n        dataType: 'string',\n        defaultValue: '',\n        interface: {\n          name: 'icon',\n          path: 'options.icon',\n          type: AXPWidgetsCatalog.text,\n        },\n      },\n      visible: true,\n    },\n  ],\n  components: {\n    view: {\n      component: () =>\n        import('./alert-box-widget-view.component').then((c) => c.AXPAlertBoxWidgetViewComponent),\n    },\n    edit: {\n      component: () =>\n        import('./alert-box-widget-view.component').then((c) => c.AXPAlertBoxWidgetViewComponent),\n    },\n    designer: {\n      component: () =>\n        import('./alert-box-widget-designer.component').then((c) => c.AXPAlertBoxWidgetDesignerComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    alertBoxLayout: 'alert-box-layout';\n  }\n}\n\nexport interface AXPAlertBoxWidgetDesignerOptions {\n  title?: string;\n  content?: string;\n  color?: AXPAlertBoxColor;\n  icon?: string;\n}\n\nexport interface AXPAlertBoxWidgetViewOptions {\n  title?: string;\n  content?: string;\n  color?: AXPAlertBoxColor;\n  icon?: string;\n}\n\nexport interface AXPAlertBoxWidgetEditOptions {\n  title?: string;\n  content?: string;\n  color?: AXPAlertBoxColor;\n  icon?: string;\n}\n\nexport interface AXPAlertBoxWidgetPrintOptions {\n  title?: string;\n  content?: string;\n  color?: AXPAlertBoxColor;\n  icon?: string;\n}\n\nexport interface AXPAlertBoxWidgetOptions {\n  designer: AXPAlertBoxWidgetDesignerOptions;\n  view: AXPAlertBoxWidgetViewOptions;\n  edit: AXPAlertBoxWidgetEditOptions;\n  print: AXPAlertBoxWidgetPrintOptions;\n}\n","import { AXAlertModule } from '@acorex/components/alert';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPLayoutBaseWidgetComponent, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport type { AXPAlertBoxColor } from './alert-box-widget.config';\n\n@Component({\n  selector: 'axp-alert-box-widget-view',\n  template: `\n    <ax-alert [color]=\"color()\">\n      @if (icon()) {\n        <ax-icon [class]=\"icon()\"></ax-icon>\n      }\n      <ax-title>{{ title() }}</ax-title>\n      <ax-content>\n        <div [innerHTML]=\"innerContent()\"></div>\n      </ax-content>\n    </ax-alert>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule, AXAlertModule, AXDecoratorModule],\n  standalone: true,\n})\nexport class AXPAlertBoxWidgetViewComponent extends AXPLayoutBaseWidgetComponent {\n  private readonly sanitizer = inject(DomSanitizer);\n\n  protected title = computed<string>(() => (this.options()['title'] as string) || 'Alert');\n  protected content = computed<string>(() => (this.options()['content'] as string) || '');\n  protected color = computed<AXPAlertBoxColor>(() => {\n    const c = this.options()['color'] as string | { id: string } | undefined;\n    const id = typeof c === 'string' ? c : c?.id;\n    if (id && ['info', 'warning', 'danger', 'success', 'neutral'].includes(id)) {\n      return id as AXPAlertBoxColor;\n    }\n    return 'info';\n  });\n  protected icon = computed<string>(() => (this.options()['icon'] as string) || '');\n\n  protected innerContent = computed(() =>\n    this.sanitizer.bypassSecurityTrustHtml(this.content() || '')\n  );\n}\n","import { AXAlertModule } from '@acorex/components/alert';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPLayoutBaseWidgetComponent, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, HostBinding, inject } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport type { AXPAlertBoxColor } from './alert-box-widget.config';\n\n@Component({\n  selector: 'axp-alert-box-widget-designer',\n  template: `\n    <ax-alert [color]=\"color()\">\n      @if (icon()) {\n        <ax-icon [class]=\"icon()\"></ax-icon>\n      }\n      <ax-title>{{ title() }}</ax-title>\n      <ax-content>\n        <div [innerHTML]=\"innerContent()\"></div>\n      </ax-content>\n    </ax-alert>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule, AXAlertModule, AXDecoratorModule],\n  standalone: true,\n})\nexport class AXPAlertBoxWidgetDesignerComponent extends AXPLayoutBaseWidgetComponent {\n  private readonly sanitizer = inject(DomSanitizer);\n\n  protected title = computed<string>(() => (this.options()['title'] as string) || 'Alert');\n  protected content = computed<string>(() => (this.options()['content'] as string) || '');\n  protected color = computed<AXPAlertBoxColor>(() => {\n    const c = this.options()['color'] as string | { id: string } | undefined;\n    const id = typeof c === 'string' ? c : c?.id;\n    if (id && ['info', 'warning', 'danger', 'success', 'neutral'].includes(id)) {\n      return id as AXPAlertBoxColor;\n    }\n    return 'info';\n  });\n  protected icon = computed<string>(() => (this.options()['icon'] as string) || '');\n\n  protected innerContent = computed(() =>\n    this.sanitizer.bypassSecurityTrustHtml(this.content() || '')\n  );\n\n  @HostBinding('class')\n  private get __class(): string {\n    return 'ax-w-full ax-block';\n  }\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { objectKeyValueTransforms } from '@acorex/platform/core';\nimport { AXPWidgetsCatalog } from '@acorex/platform/contracts';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGETS_LAYOUT_SUB_UTILITY } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\nimport { AXP_STYLING_PROPERTY_GROUP } from '../../../properties/groups';\n\n/** Badge color token (maps to ax-badge / theme palette). */\nexport type AXPBadgeLayoutColor =\n  | 'primary'\n  | 'secondary'\n  | 'success'\n  | 'warning'\n  | 'danger'\n  | 'neutral'\n  | 'ghost'\n  | 'accent1'\n  | 'accent2'\n  | 'accent3';\n\n/** Badge look (maps to ax-badge look). */\nexport type AXPBadgeLayoutLook = 'solid' | 'twotone' | 'blank' | 'outline';\n\nexport interface AXPBadgeLayoutWidgetValue {\n  text?: string;\n  color?: AXPBadgeLayoutColor | string;\n  icon?: string;\n  look?: AXPBadgeLayoutLook;\n}\n\nexport const AXPBadgeLayoutWidget: AXPWidgetConfig = {\n  name: 'badge-layout',\n  title: '@platform-layout-widgets:widgets.badge-layout.title',\n  description: '@platform-layout-widgets:widgets.badge-layout.description',\n  icon: 'fa-light fa-badge',\n  categories: [AXP_WIDGETS_LAYOUT_CATEGORY],\n  subCategory: AXP_WIDGETS_LAYOUT_SUB_UTILITY,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  type: 'view',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    {\n      name: 'text',\n      title: 'Text',\n      group: AXP_STYLING_PROPERTY_GROUP,\n      schema: {\n        dataType: 'string',\n        defaultValue: '',\n        interface: {\n          name: 'text',\n          path: 'options.text',\n          type: AXPWidgetsCatalog.text,\n        },\n      },\n      visible: true,\n    },\n    {\n      name: 'color',\n      title: 'Color',\n      group: AXP_STYLING_PROPERTY_GROUP,\n      schema: {\n        dataType: 'string',\n        defaultValue: 'primary',\n        interface: {\n          name: 'color',\n          path: 'options.color',\n          type: AXPWidgetsCatalog.select,\n          valueTransforms: objectKeyValueTransforms('id'),\n          options: {\n            dataSource: [\n              { id: 'primary', title: 'Primary' },\n              { id: 'secondary', title: 'Secondary' },\n              { id: 'success', title: 'Success' },\n              { id: 'warning', title: 'Warning' },\n              { id: 'danger', title: 'Danger' },\n              { id: 'neutral', title: 'Neutral' },\n              { id: 'ghost', title: 'Ghost' },\n              { id: 'accent1', title: 'Accent 1' },\n              { id: 'accent2', title: 'Accent 2' },\n              { id: 'accent3', title: 'Accent 3' },\n            ],\n          },\n        },\n      },\n      visible: true,\n    },\n    {\n      name: 'icon',\n      title: 'Icon',\n      group: AXP_STYLING_PROPERTY_GROUP,\n      schema: {\n        dataType: 'string',\n        defaultValue: '',\n        interface: {\n          name: 'icon',\n          path: 'options.icon',\n          type: AXPWidgetsCatalog.text,\n        },\n      },\n      visible: true,\n    },\n    {\n      name: 'look',\n      title: 'Look',\n      group: AXP_STYLING_PROPERTY_GROUP,\n      schema: {\n        dataType: 'string',\n        defaultValue: 'twotone',\n        interface: {\n          name: 'look',\n          path: 'options.look',\n          type: AXPWidgetsCatalog.select,\n          valueTransforms: objectKeyValueTransforms('id'),\n          options: {\n            dataSource: [\n              { id: 'twotone', title: 'Twotone' },\n              { id: 'solid', title: 'Solid' },\n              { id: 'outline', title: 'Outline' },\n              { id: 'blank', title: 'Blank' },\n            ],\n          },\n        },\n      },\n      visible: true,\n    },\n  ],\n  components: {\n    view: {\n      component: () => import('./badge-widget-view.component').then((c) => c.AXPBadgeLayoutWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./badge-widget-view.component').then((c) => c.AXPBadgeLayoutWidgetViewComponent),\n    },\n    designer: {\n      component: () => import('./badge-widget-view.component').then((c) => c.AXPBadgeLayoutWidgetViewComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    badgeLayout: 'badge-layout';\n  }\n}\n\nexport interface AXPBadgeLayoutWidgetDesignerOptions {\n  text?: string;\n  color?: AXPBadgeLayoutColor;\n  icon?: string;\n  look?: AXPBadgeLayoutLook;\n}\n\nexport interface AXPBadgeLayoutWidgetViewOptions {\n  text?: string;\n  color?: AXPBadgeLayoutColor;\n  icon?: string;\n  look?: AXPBadgeLayoutLook;\n}\n\nexport interface AXPBadgeLayoutWidgetEditOptions {\n  text?: string;\n  color?: AXPBadgeLayoutColor;\n  icon?: string;\n  look?: AXPBadgeLayoutLook;\n}\n\nexport interface AXPBadgeLayoutWidgetPrintOptions {\n  text?: string;\n  color?: AXPBadgeLayoutColor;\n  icon?: string;\n  look?: AXPBadgeLayoutLook;\n}\n\nexport interface AXPBadgeLayoutWidgetOptions {\n  designer: AXPBadgeLayoutWidgetDesignerOptions;\n  view: AXPBadgeLayoutWidgetViewOptions;\n  edit: AXPBadgeLayoutWidgetEditOptions;\n  print: AXPBadgeLayoutWidgetPrintOptions;\n}\n","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, ViewEncapsulation } from '@angular/core';\nimport type {\n  AXPBadgeLayoutColor,\n  AXPBadgeLayoutLook,\n  AXPBadgeLayoutWidgetValue,\n} from './badge-widget.config';\n\n@Component({\n  selector: 'axp-badge-layout-widget-view',\n  host: {\n    class: 'axp-badge-layout-widget-view',\n  },\n  template: `\n    @if (hasValue()) {\n      <ax-badge\n        class=\"__badge\"\n        [color]=\"displayColor()\"\n        [look]=\"displayLook()\"\n        [text]=\"(displayText() | translate | async)!\"\n      >\n        @if (displayIcon()) {\n          <ax-prefix class=\"__prefix\">\n            <ax-icon class=\"__icon\">\n              <i [class]=\"displayIcon()\"></i>\n            </ax-icon>\n          </ax-prefix>\n        }\n      </ax-badge>\n    } @else {\n      <span class=\"ax-text-muted\">---</span>\n    }\n  `,\n  styleUrl: './badge-widget-view.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  imports: [AXBadgeModule, AXDecoratorModule, AXTranslationModule, AsyncPipe],\n})\nexport class AXPBadgeLayoutWidgetViewComponent extends AXPValueWidgetComponent<\n  string | AXPBadgeLayoutWidgetValue | null\n> {\n  //#region ----   Computed Properties   ----\n\n  protected readonly resolvedValue = computed(() => this.normalizeValue(this.getValue()));\n\n  protected readonly displayText = computed(() => {\n    const value = this.resolvedValue();\n    if (value?.text?.trim()) {\n      return value.text.trim();\n    }\n    const optionText = this.options()['text'];\n    return typeof optionText === 'string' ? optionText.trim() : '';\n  });\n\n  protected readonly displayColor = computed<AXPBadgeLayoutColor>(() =>\n    this.resolveColor(this.resolvedValue()?.color ?? this.options()['color'], 'primary'),\n  );\n\n  protected readonly displayIcon = computed(() => {\n    const icon = this.resolvedValue()?.icon ?? this.options()['icon'];\n    return typeof icon === 'string' && icon.trim().length > 0 ? icon.trim() : '';\n  });\n\n  protected readonly displayLook = computed<AXPBadgeLayoutLook>(() =>\n    this.resolveLook(this.resolvedValue()?.look ?? this.options()['look'], 'twotone'),\n  );\n\n  protected readonly hasValue = computed(() => this.displayText().length > 0);\n\n  //#endregion\n\n  //#region ----   Utility Methods   ----\n\n  private normalizeValue(value: string | AXPBadgeLayoutWidgetValue | null): AXPBadgeLayoutWidgetValue | null {\n    if (value == null) {\n      return null;\n    }\n    if (typeof value === 'string') {\n      return { text: value.trim() };\n    }\n    if (typeof value === 'object') {\n      return value;\n    }\n    return null;\n  }\n\n  private resolveColor(raw: unknown, fallback: AXPBadgeLayoutColor): AXPBadgeLayoutColor {\n    const id = typeof raw === 'string' ? raw : (raw as { id?: string } | undefined)?.id;\n    const allowed: AXPBadgeLayoutColor[] = [\n      'primary',\n      'secondary',\n      'success',\n      'warning',\n      'danger',\n      'neutral',\n      'ghost',\n      'accent1',\n      'accent2',\n      'accent3',\n    ];\n    if (id && allowed.includes(id as AXPBadgeLayoutColor)) {\n      return id as AXPBadgeLayoutColor;\n    }\n    return fallback;\n  }\n\n  private resolveLook(raw: unknown, fallback: AXPBadgeLayoutLook): AXPBadgeLayoutLook {\n    const id = typeof raw === 'string' ? raw : (raw as { id?: string } | undefined)?.id;\n    const allowed: AXPBadgeLayoutLook[] = ['solid', 'twotone', 'blank', 'outline'];\n    if (id && allowed.includes(id as AXPBadgeLayoutLook)) {\n      return id as AXPBadgeLayoutLook;\n    }\n    return fallback;\n  }\n\n  //#endregion\n}\n","import { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGETS_LAYOUT_SUB_SHELL } from '@acorex/platform/layout/widget-core';\nexport const AXPDocumentWidget: AXPWidgetConfig = {\n  name: 'document-layout',\n  title: '@platform-layout-widgets:widgets.document-layout.title',\n  description: '@platform-layout-widgets:widgets.document-layout.description',\n  icon: 'fa-light fa-page',\n  categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n  subCategory: AXP_WIDGETS_LAYOUT_SUB_SHELL,\n  type: 'container',\n  properties: [],\n  components: {},\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    document: 'document-layout';\n  }\n}\n\nexport interface AXPDocumentWidgetOptions {\n  // This widget doesn't seem to have any options.XXX paths based on the properties list\n}\n","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXTooltipModule } from '@acorex/components/tooltip';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPMultiLanguageString } from '@acorex/platform/contracts';\nimport { AXPGridItemBaseLayoutWidgetComponent, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\n\nimport { ChangeDetectionStrategy, Component, computed, HostBinding } from '@angular/core';\n\n@Component({\n  selector: 'axp-form-field-widget-view',\n  template: `\n    <ax-form-field>\n      @if (showTopRow()) {\n        <div class=\"ax-flex ax-gap-1 ax-items-center ax-justify-between\">\n          <div class=\"ax-flex ax-min-w-0 ax-flex-wrap ax-items-center ax-gap-1 ax-leading-none\">\n            @if (showLabel()) {\n              <ax-label [required]=\"isRequired()\" class=\"ax-inline-flex ax-min-w-0 ax-items-center\">{{ label() | translate | async }}</ax-label>\n              @if (hintAsIcon()) {\n              <i\n                role=\"button\"\n                tabindex=\"0\"\n                class=\"fa-regular fa-circle-info ax-relative ax-top-px ax-inline-flex ax-h-5 ax-w-5 ax-shrink-0 ax-cursor-help ax-items-center ax-justify-center ax-rounded-full ax-text-xs ax-leading-none ax-text-neutral-500 ax-outline-none ax-transition-[color,background-color] hover:ax-bg-neutral-100 hover:ax-text-neutral-800 focus-visible:ax-outline-2 focus-visible:ax-outline-primary-500 focus-visible:ax-outline-offset-1 ax-mt-[-5px]\"\n                [axTooltip]=\"(hintText()! | translate | async) ?? ''\"\n                axTooltipPlacement=\"top\"\n                [attr.aria-label]=\"(hintText()! | translate | async) ?? ''\"\n              ></i>\n            }\n            }\n            \n          </div>\n          @if (badge()) {\n            <span class=\"ax-text ax-p-1 ax-text-xs ax-rounded-md\">{{ badge() | translate | async }}</span>\n          }\n        </div>\n      }\n      @for (node of children(); track $index) {\n        <ng-container\n          axp-widget-renderer\n          [node]=\"node\"\n          [index]=\"index\"\n          [parentNode]=\"this\"\n          [mode]=\"node.mode ?? this.mode\"\n        >\n        </ng-container>\n      }\n      @if (hintAsNote()) {\n        <p class=\"ax-text-xs ax-mt-1 ax-font-normal ax-opacity-75\">\n          {{ hintText()! | translate | async }}\n        </p>\n      }\n    </ax-form-field>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    CommonModule,\n    AXFormModule,\n    AXLabelModule,\n    AXPWidgetCoreModule,\n    AXTranslationModule,\n    AXBadgeModule,\n    AXDecoratorModule,\n    AXTooltipModule,\n  ],\n  standalone: true,\n})\nexport class AXPFormFieldWidgetViewComponent extends AXPGridItemBaseLayoutWidgetComponent {\n  protected label = computed<AXPMultiLanguageString>(() => this.options()['label'] as AXPMultiLanguageString);\n  protected showLabel = computed<boolean>(() => (this.options()['showLabel'] as boolean) ?? true);\n  protected badge = computed<AXPMultiLanguageString>(() => this.options()['badge'] as AXPMultiLanguageString);\n  protected visible = computed<boolean>(() => this.options()['visible'] as boolean);\n\n  protected hintText = computed<AXPMultiLanguageString | undefined>(\n    () => this.options()['hint'] as AXPMultiLanguageString | undefined,\n  );\n\n  protected hasHint = computed<boolean>(() => {\n    const h = this.hintText();\n    if (h == null) {\n      return false;\n    }\n    if (typeof h === 'string') {\n      return h.trim().length > 0;\n    }\n    return true;\n  });\n\n  protected hintDisplayMode = computed<'icon' | 'note'>(() =>\n    this.options()['hintDisplayMode'] === 'icon' ? 'icon' : 'note',\n  );\n\n  /** Info icon with tooltip (typically next to the label when the label is visible). */\n  protected hintAsIcon = computed(() => this.hasHint() && this.hintDisplayMode() === 'icon');\n\n  /** Visible helper copy under the field (inside `ax-form-field`). */\n  protected hintAsNote = computed(() => this.hasHint() && this.hintDisplayMode() === 'note');\n\n  /** Label row needs to show even when label is hidden (e.g. icon-only hint with badge layout). */\n  protected showTopRow = computed(() => this.showLabel() || !!this.badge() || this.hintAsIcon());\n\n  @HostBinding('class')\n  private get __class(): any {\n    return { ...this.hostClass(), 'ax-hidden': this.visible() === false ? true : false };\n  }\n\n  protected isRequired = computed<boolean>(() =>\n    this.children().some((c) => {\n      const validations = c.options?.['validations'];\n      return Array.isArray(validations) && validations.some((v: { rule?: string }) => v.rule === 'required');\n    }),\n  );\n}\n","import { AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPMultiLanguageString } from '@acorex/platform/contracts';\nimport {\n  AXPDesignerAddWidgetMiniButtonComponent,\n  AXPWidgetDesignerRendererDirective,\n} from '@acorex/platform/layout/designer';\nimport {\n  AXPGridItemBaseLayoutWidgetComponent,\n  AXPLayoutBaseWidgetComponent,\n  AXPWidgetCoreModule,\n} from '@acorex/platform/layout/widget-core';\n\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, HostBinding } from '@angular/core';\n@Component({\n  selector: 'axp-form-field-widget-designer',\n  template: `\n    <ax-form-field>\n      <div class=\"ax-flex ax-gap-1 ax-items-center\">\n        <ax-label>{{ label() | translate | async }}</ax-label>\n        @if (hintAsIcon()) {\n          <i class=\"fa-regular fa-circle-info ax-text-sm ax-opacity-75\" aria-hidden=\"true\"></i>\n        }\n      </div>\n      @for (node of children(); track $index) {\n        <ng-container\n          axp-widget-designer-renderer\n          [node]=\"node\"\n          [parentNode]=\"this\"\n          [mode]=\"this.mode\"\n          [locked]=\"this.locked\"\n        >\n        </ng-container>\n      } @empty {\n        <axp-designer-add-widget-mini-button></axp-designer-add-widget-mini-button>\n      }\n      @if (hintAsNote()) {\n        <p class=\"ax-text-xs ax-mt-1 ax-font-normal ax-opacity-75\">\n          {{ hint() | translate | async }}\n        </p>\n      }\n    </ax-form-field>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    CommonModule,\n    AXFormModule,\n    AXLabelModule,\n    AXTranslationModule,\n    AXPWidgetCoreModule,\n    AXPWidgetDesignerRendererDirective,\n    AXPDesignerAddWidgetMiniButtonComponent,\n  ],\n  providers: [\n    {\n      provide: AXPLayoutBaseWidgetComponent,\n      useExisting: AXPFormFieldWidgetDesignerComponent,\n    },\n  ],\n  standalone: true,\n})\nexport class AXPFormFieldWidgetDesignerComponent extends AXPGridItemBaseLayoutWidgetComponent {\n  protected label = computed<AXPMultiLanguageString>(() => this.options()['label'] as AXPMultiLanguageString);\n\n  protected hint = computed<AXPMultiLanguageString>(() => this.options()['hint'] as AXPMultiLanguageString);\n\n  protected hasHint = computed<boolean>(() => {\n    const h = this.hint();\n    if (h == null || h === '') {\n      return false;\n    }\n    if (typeof h === 'string') {\n      return h.trim().length > 0;\n    }\n    return true;\n  });\n\n  protected hintDisplayMode = computed<'icon' | 'note'>(() =>\n    this.options()['hintDisplayMode'] === 'icon' ? 'icon' : 'note',\n  );\n\n  protected hintAsIcon = computed(() => this.hasHint() && this.hintDisplayMode() === 'icon');\n\n  protected hintAsNote = computed(() => this.hasHint() && this.hintDisplayMode() === 'note');\n\n  @HostBinding('class')\n  private get __class(): any {\n    return this.hostClass();\n  }\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, cloneProperty, createSelectProperty, createStringProperty } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGETS_LAYOUT_SUB_UTILITY } from '@acorex/platform/layout/widget-core';\nimport { AXPMultiLanguageString } from '@acorex/platform/contracts';\nimport { AXP_LABEL_PROPERTY } from '../../../properties';\nimport { AXP_BEHAVIOR_PROPERTY_GROUP } from '../../../properties/groups';\nimport { AXP_NAME_PROPERTY } from '../../../properties/general.props';\n\nconst AXP_FORM_FIELD_HINT_PROPERTY = createStringProperty({\n  name: 'hint',\n  title: 'Hint',\n  path: 'options.hint',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n});\n\nconst AXP_FORM_FIELD_HINT_DISPLAY_MODE_PROPERTY = createSelectProperty({\n  name: 'hintDisplayMode',\n  title: 'Hint display',\n  path: 'options.hintDisplayMode',\n  group: AXP_BEHAVIOR_PROPERTY_GROUP,\n  defaultValue: 'note',\n  dataSource: [\n    { id: 'note', title: 'Note (below field)' },\n    { id: 'icon', title: 'Icon (tooltip)' },\n  ],\n});\n\nexport const AXPFormFieldWidget: AXPWidgetConfig = {\n  name: 'form-field',\n  title: '@platform-layout-widgets:widgets.form-field.title',\n  categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n  subCategory: AXP_WIDGETS_LAYOUT_SUB_UTILITY,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  type: 'container',\n  icon: 'fa-light fa-pen-field',\n  properties: [\n    AXP_NAME_PROPERTY,\n    cloneProperty(AXP_LABEL_PROPERTY, { schema: { defaultValue: 'Sample Label' } }),\n    AXP_FORM_FIELD_HINT_PROPERTY,\n    AXP_FORM_FIELD_HINT_DISPLAY_MODE_PROPERTY,\n  ],\n  components: {\n    view: {\n      component: () => import('./form-field-widget-view.component').then((c) => c.AXPFormFieldWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./form-field-widget-view.component').then((c) => c.AXPFormFieldWidgetViewComponent),\n    },\n    designer: {\n      component: () =>\n        import('./form-field-widget-designer.component').then((c) => c.AXPFormFieldWidgetDesignerComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    formField: 'form-field';\n  }\n}\n\nexport type AXPFormFieldHintDisplayMode = 'icon' | 'note';\n\nexport interface AXPFormFieldWidgetDesignerOptions {\n  label?: string;\n  hint?: AXPMultiLanguageString;\n  hintDisplayMode?: AXPFormFieldHintDisplayMode;\n}\n\nexport interface AXPFormFieldWidgetViewOptions {\n  label?: string;\n  showLabel?: boolean;\n  hint?: AXPMultiLanguageString;\n  /** When `hint` is set: `note` renders helper text under the control; `icon` shows an info icon beside the label with the hint as tooltip. */\n  hintDisplayMode?: AXPFormFieldHintDisplayMode;\n}\n\nexport interface AXPFormFieldWidgetEditOptions {\n  label?: string;\n  showLabel?: boolean;\n  hint?: AXPMultiLanguageString;\n  hintDisplayMode?: AXPFormFieldHintDisplayMode;\n}\n\nexport interface AXPFormFieldWidgetPrintOptions {\n  label?: string;\n  showLabel?: boolean;\n  hint?: AXPMultiLanguageString;\n  hintDisplayMode?: AXPFormFieldHintDisplayMode;\n}\n\nexport interface AXPFormFieldWidgetOptions {\n  designer: AXPFormFieldWidgetDesignerOptions;\n  view: AXPFormFieldWidgetViewOptions;\n  edit: AXPFormFieldWidgetEditOptions;\n  print: AXPFormFieldWidgetPrintOptions;\n}\n","import { type AXPWidgetNode, AXPWidgetsCatalog } from '@acorex/platform/contracts';\nimport { AXPGridBaseLayoutWidgetComponent, AXPGridBreakpointValues, AXPWidgetCoreModule, AXPWidgetCoreElementAPI, AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport {\n  AXPDesignerGridDrawerComponent,\n  AXPDesignerService,\n  AXPWidgetDesignerRendererDirective,\n} from '@acorex/platform/layout/designer';\n\nimport { ChangeDetectionStrategy, Component, ComponentRef, computed, HostBinding, inject } from '@angular/core';\n\n@Component({\n  selector: 'axp-grid-widget-designer',\n  template: `\n    @if (settled()) {\n      @for (child of children(); track $index) {\n        <ng-container\n          axp-widget-designer-renderer\n          [node]=\"child\"\n          [parentNode]=\"this\"\n          [parentComponent]=\"componentRef\"\n          [mode]=\"this.mode\"\n          [locked]=\"this.locked\"\n        >\n        </ng-container>\n      }\n    } @else {\n      <axp-designer-grid-drawer (onSelect)=\"handleDrawerSelect($event)\"></axp-designer-grid-drawer>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule, AXPWidgetDesignerRendererDirective, AXPDesignerGridDrawerComponent],\n  providers: [\n    {\n      provide: AXPValueWidgetComponent,\n      useExisting: AXPGridWidgetDesignerComponent,\n    },\n  ],\n})\nexport class AXPGridWidgetDesignerComponent extends AXPGridBaseLayoutWidgetComponent {\n  private designerService = inject(AXPDesignerService);\n  public componentRef = this as unknown as ComponentRef<any>;\n\n  protected cols = computed(() => (this.options()['grid'] as AXPGridBreakpointValues)?.default?.columns ?? 1);\n  protected rows = computed(() => (this.options()['grid'] as AXPGridBreakpointValues)?.default?.rows ?? 1);\n\n  protected cells = computed(\n    () =>\n      ((this.options()['grid'] as AXPGridBreakpointValues)?.default?.rows ?? 1) *\n      ((this.options()['grid'] as AXPGridBreakpointValues)?.default?.columns ?? 1),\n  );\n\n  protected settled = computed(() => this.cols() * this.rows() > 1 && this.children().length);\n\n  protected handleDrawerSelect(e: { rows: number; cols: number }) {\n    this.designerService.update({\n      values: {\n        // options: e,\n        options: {\n          grid: {\n            default: {\n              columns: e.cols,\n              rows: e.rows,\n              gap: '10px',\n            },\n          },\n        },\n      },\n      mode: 'update',\n      widget: this.node,\n    });\n\n    const list = Array.from({ length: this.cells() }).map(() => ({\n      type: AXPWidgetsCatalog.gridItem,\n    }));\n\n    list.forEach((node) => {\n      this.designerService.addWidget(this.node, node);\n    });\n  }\n\n  override api(): AXPWidgetCoreElementAPI {\n    return {\n      insertColumnLeft: (target: AXPWidgetNode) => this.#insertColumnRelativeTo(target, 'left'),\n      insertColumnRight: (target: AXPWidgetNode) => this.#insertColumnRelativeTo(target, 'right'),\n      insertRowAbove: (target: AXPWidgetNode) => this.#insertRow(target, 'above'),\n      insertRowBelow: (target: AXPWidgetNode) => this.#insertRow(target, 'below'),\n      insertCellShiftRight: (target: AXPWidgetNode) => this.#insertCellShiftRight(target),\n      insertCellShiftDown: (target: AXPWidgetNode) => this.#insertCellShiftDown(target),\n      removeColumnAtCell: (target: AXPWidgetNode) => this.#removeColumnAtCell(target),\n      removeRowAtCell: (target: AXPWidgetNode) => this.#removeRowAtCell(target),\n      mergeLeft: (target: AXPWidgetNode) => this.#merge(target, 'left'),\n      mergeRight: (target: AXPWidgetNode) => this.#merge(target, 'right'),\n      mergeTop: (target: AXPWidgetNode) => this.#merge(target, 'top'),\n      mergeBottom: (target: AXPWidgetNode) => this.#merge(target, 'bottom'),\n      canMergeLeft: (target: AXPWidgetNode) => this.#canMerge(target, 'left'),\n      canMergeRight: (target: AXPWidgetNode) => this.#canMerge(target, 'right'),\n      canMergeTop: (target: AXPWidgetNode) => this.#canMerge(target, 'top'),\n      canMergeBottom: (target: AXPWidgetNode) => this.#canMerge(target, 'bottom'),\n    } as any;\n  }\n\n  #updateGridOptions(patch: Partial<AXPGridBreakpointValues['default']>) {\n    const current = (this.options()['grid'] as AXPGridBreakpointValues) ?? { default: {} as any };\n    const next = {\n      ...current,\n      default: {\n        ...current.default,\n        ...patch,\n      },\n    } as AXPGridBreakpointValues;\n    this.designerService.update({ values: { options: { grid: next } }, mode: 'update', widget: this.node });\n  }\n\n  #getColSpan(node?: AXPWidgetNode): number {\n    if (!node) return 1;\n    const v = (node.options as any)?.colSpan as number | undefined;\n    return v ? Math.max(1, v) : 1;\n  }\n\n  #getRowSpan(node?: AXPWidgetNode): number {\n    if (!node) return 1;\n    const v = (node.options as any)?.rowSpan as number | undefined;\n    return v ? Math.max(1, v) : 1;\n  }\n\n  #computePlacements() {\n    const cols = Math.max(1, this.cols());\n    const nodes = this.children();\n    type Placement = { node: AXPWidgetNode; row: number; col: number; colSpan: number; rowSpan: number };\n    const placements: Placement[] = [];\n    const occ: boolean[][] = [];\n    const ensureRow = (ri: number) => {\n      while (occ.length <= ri) {\n        occ.push(Array.from({ length: cols }).map(() => false));\n      }\n    };\n    const canPlace = (ri: number, ci: number, w: number, h: number) => {\n      if (ci + w > cols) return false;\n      for (let r = 0; r < h; r++) {\n        ensureRow(ri + r);\n        for (let c = 0; c < w; c++) {\n          if (occ[ri + r][ci + c]) return false;\n        }\n      }\n      return true;\n    };\n    const mark = (ri: number, ci: number, w: number, h: number) => {\n      for (let r = 0; r < h; r++) for (let c = 0; c < w; c++) occ[ri + r][ci + c] = true;\n    };\n    let row = 0;\n    for (const node of nodes) {\n      const w = this.#getColSpan(node) ?? 1;\n      const h = this.#getRowSpan(node) ?? 1;\n      let placed = false;\n      while (!placed) {\n        ensureRow(row);\n        for (let col = 0; col < cols; col++) {\n          if (canPlace(row, col, w, h)) {\n            placements.push({ node, row, col, colSpan: w, rowSpan: h });\n            mark(row, col, w, h);\n            placed = true;\n            break;\n          }\n        }\n        if (!placed) row++;\n      }\n    }\n    return placements;\n  }\n\n  #findNeighborPlacement(\n    placements: { node: AXPWidgetNode; row: number; col: number; colSpan: number; rowSpan: number }[],\n    me: { row: number; col: number; colSpan: number; rowSpan: number },\n    dir: 'left' | 'right' | 'top' | 'bottom',\n  ) {\n    if (dir === 'right') return placements.find((p) => p.row === me.row && p.col === me.col + me.colSpan) || null;\n    if (dir === 'left') return placements.find((p) => p.row === me.row && p.col + p.colSpan === me.col) || null;\n    if (dir === 'bottom') return placements.find((p) => p.col === me.col && p.row === me.row + me.rowSpan) || null;\n    return placements.find((p) => p.col === me.col && p.row + p.rowSpan === me.row) || null;\n  }\n\n  #merge(target: AXPWidgetNode, dir: 'left' | 'right' | 'top' | 'bottom') {\n    const placements = this.#computePlacements();\n    const place = placements.find((p) => p.node === target);\n    if (!place) return;\n    const colsEqual = (a: number, b: number) => a === b;\n    const rowsEqual = (a: number, b: number) => a === b;\n\n    if (dir === 'right') {\n      const neighbor = this.#findNeighborPlacement(placements, place, 'right');\n      if (!neighbor || !rowsEqual(neighbor.rowSpan, place.rowSpan)) return;\n      const newSpan = (place.colSpan ?? 1) + (neighbor.colSpan ?? 1);\n      this.designerService.update({ values: { options: { colSpan: newSpan } }, mode: 'update', widget: target });\n      this.designerService.removeWidget(neighbor.node);\n      this.designerService.refresh({ widget: this.node });\n      return;\n    }\n    if (dir === 'left') {\n      const neighbor = this.#findNeighborPlacement(placements, place, 'left');\n      if (!neighbor || !rowsEqual(neighbor.rowSpan, place.rowSpan)) return;\n      const newSpan = (place.colSpan ?? 1) + (neighbor.colSpan ?? 1);\n      this.designerService.update({ values: { options: { colSpan: newSpan } }, mode: 'update', widget: target });\n      this.designerService.removeWidget(neighbor.node);\n      this.designerService.refresh({ widget: this.node });\n      return;\n    }\n    if (dir === 'bottom') {\n      const neighbor = this.#findNeighborPlacement(placements, place, 'bottom');\n      if (!neighbor || !colsEqual(neighbor.colSpan, place.colSpan)) return;\n      const newSpan = (place.rowSpan ?? 1) + (neighbor.rowSpan ?? 1);\n      this.designerService.update({ values: { options: { rowSpan: newSpan } }, mode: 'update', widget: target });\n      this.designerService.removeWidget(neighbor.node);\n      this.designerService.refresh({ widget: this.node });\n      return;\n    }\n    if (dir === 'top') {\n      const neighbor = this.#findNeighborPlacement(placements, place, 'top');\n      if (!neighbor || !colsEqual(neighbor.colSpan, place.colSpan)) return;\n      const newSpan = (place.rowSpan ?? 1) + (neighbor.rowSpan ?? 1);\n      const currentChildren = [...(((target as any)?.children ?? []) as AXPWidgetNode[])];\n      // Align with table: keep top neighbor, drop its previous children, reparent target's children\n      this.designerService.update({\n        values: {\n          options: { rowSpan: newSpan },\n          children: [...currentChildren],\n        },\n        mode: 'update',\n        widget: neighbor.node,\n      });\n      this.designerService.removeWidget(target);\n      this.designerService.refresh({ widget: this.node });\n      return;\n    }\n  }\n\n  #canMerge(target: AXPWidgetNode, dir: 'left' | 'right' | 'top' | 'bottom'): boolean {\n    const placements = this.#computePlacements();\n    const me = placements.find((p) => p.node === target);\n    if (!me) return false;\n    const neighbor = this.#findNeighborPlacement(placements, me, dir);\n    if (!neighbor) return false;\n    if (dir === 'left' || dir === 'right') return me.rowSpan === neighbor.rowSpan;\n    return me.colSpan === neighbor.colSpan;\n  }\n\n  #insertColumnRelativeTo(target: AXPWidgetNode, side: 'left' | 'right') {\n    const oldCols = Math.max(1, this.cols());\n    const childrenRef = this.node.children ?? [];\n    const rowCount = Math.ceil((childrenRef.length || 0) / oldCols);\n    const targetIndex = childrenRef.indexOf(target);\n    if (targetIndex < 0) return;\n    const targetRow = Math.floor(targetIndex / oldCols);\n    const targetCol = targetIndex % oldCols;\n    const insertCol = side === 'left' ? targetCol : targetCol + 1;\n\n    const newCols = oldCols + 1;\n    this.#updateGridOptions({ columns: newCols });\n\n    for (let r = 0; r < rowCount; r++) {\n      const added = this.designerService.addWidget(this.node, { type: AXPWidgetsCatalog.gridItem });\n      const addedIndex = childrenRef.indexOf(added);\n      if (addedIndex >= 0) childrenRef.splice(addedIndex, 1);\n      const idx = r * newCols + insertCol;\n      const bounded = Math.min(Math.max(idx, 0), childrenRef.length);\n      childrenRef.splice(bounded, 0, added);\n    }\n    this.designerService.refresh({ widget: this.node });\n  }\n\n  #insertRow(target: AXPWidgetNode, where: 'above' | 'below') {\n    const cols = Math.max(1, this.cols());\n    const childrenRef = this.node.children ?? [];\n    const targetIndex = childrenRef.indexOf(target);\n    if (targetIndex < 0) return;\n    const rowIndex = Math.floor(targetIndex / cols);\n    const insertRowIndex = where === 'above' ? rowIndex : rowIndex + 1;\n    const linearIndex = insertRowIndex * cols;\n\n    const items = Array.from({ length: cols }).map(() =>\n      this.designerService.addWidget(this.node, { type: AXPWidgetsCatalog.gridItem }),\n    );\n    for (let i = items.length - 1; i >= 0; i--) {\n      const pos = childrenRef.indexOf(items[i]);\n      if (pos >= 0) childrenRef.splice(pos, 1);\n      childrenRef.splice(Math.min(Math.max(linearIndex, 0), childrenRef.length), 0, items[i]);\n    }\n    this.#updateGridOptions({ rows: Math.ceil((childrenRef.length || 0) / cols) });\n    this.designerService.refresh({ widget: this.node });\n  }\n\n  #insertCellShiftRight(target: AXPWidgetNode) {\n    const oldCols = Math.max(1, this.cols());\n    const childrenRef = this.node.children ?? [];\n    const targetIndex = childrenRef.indexOf(target);\n    if (targetIndex < 0) return;\n    const rowIndex = Math.floor(targetIndex / oldCols);\n    const colIndex = targetIndex % oldCols;\n    const rowCount = Math.ceil((childrenRef.length || 0) / oldCols);\n\n    const newCols = oldCols + 1;\n    this.#updateGridOptions({ columns: newCols });\n\n    const insertIndex = rowIndex * oldCols + colIndex;\n    const added = this.designerService.addWidget(this.node, { type: AXPWidgetsCatalog.gridItem });\n    let addedIndex = childrenRef.indexOf(added);\n    if (addedIndex >= 0) childrenRef.splice(addedIndex, 1);\n    childrenRef.splice(Math.min(Math.max(insertIndex, 0), childrenRef.length), 0, added);\n\n    for (let r = 0; r < rowCount; r++) {\n      if (r === rowIndex) continue;\n      const extra = this.designerService.addWidget(this.node, { type: AXPWidgetsCatalog.gridItem });\n      const extraIndex = childrenRef.indexOf(extra);\n      if (extraIndex >= 0) childrenRef.splice(extraIndex, 1);\n      const endOfRowIndex = (r + 1) * newCols - 1;\n      const bounded = Math.min(Math.max(endOfRowIndex, 0), childrenRef.length);\n      childrenRef.splice(bounded, 0, extra);\n    }\n\n    this.designerService.refresh({ widget: this.node });\n  }\n\n  #insertCellShiftDown(target: AXPWidgetNode) {\n    const cols = Math.max(1, this.cols());\n    const childrenRef = this.node.children ?? [];\n    const targetIndex = childrenRef.indexOf(target);\n    if (targetIndex < 0) return;\n    const rowIndex = Math.floor(targetIndex / cols);\n    const colIndex = targetIndex % cols;\n\n    const currentRows = Math.ceil((childrenRef.length || 0) / cols);\n    const nextRows = currentRows + 1;\n    this.#updateGridOptions({ rows: nextRows });\n\n    for (let c = 0; c < cols; c++) {\n      const e = this.designerService.addWidget(this.node, { type: AXPWidgetsCatalog.gridItem });\n      const pos = childrenRef.indexOf(e);\n      if (pos >= 0) childrenRef.splice(pos, 1);\n      childrenRef.push(e);\n    }\n\n    for (let r = currentRows - 1; r >= rowIndex; r--) {\n      const fromIdx = r * cols + colIndex;\n      const toIdx = (r + 1) * cols + colIndex;\n      childrenRef[toIdx] = childrenRef[fromIdx];\n    }\n\n    const inserted = this.designerService.addWidget(this.node, { type: AXPWidgetsCatalog.gridItem });\n    const ii = childrenRef.indexOf(inserted);\n    if (ii >= 0) childrenRef.splice(ii, 1);\n    childrenRef[rowIndex * cols + colIndex] = inserted;\n\n    this.designerService.refresh({ widget: this.node });\n  }\n\n  #removeColumnAtCell(target: AXPWidgetNode) {\n    const cols = Math.max(1, this.cols());\n    if (cols <= 1) return;\n    const childrenRef = this.node.children ?? [];\n    const targetIndex = childrenRef.indexOf(target);\n    if (targetIndex < 0) return;\n    const colIndex = targetIndex % cols;\n    const rowCount = Math.ceil((childrenRef.length || 0) / cols);\n    for (let r = rowCount - 1; r >= 0; r--) {\n      const idx = r * cols + colIndex;\n      if (idx >= 0 && idx < childrenRef.length) {\n        childrenRef.splice(idx, 1);\n      }\n    }\n    this.#updateGridOptions({ columns: cols - 1 });\n    this.designerService.refresh({ widget: this.node });\n  }\n\n  #removeRowAtCell(target: AXPWidgetNode) {\n    const cols = Math.max(1, this.cols());\n    const childrenRef = this.node.children ?? [];\n    const targetIndex = childrenRef.indexOf(target);\n    if (targetIndex < 0) return;\n    const rowIndex = Math.floor(targetIndex / cols);\n    const start = rowIndex * cols;\n    for (let i = cols - 1; i >= 0; i--) {\n      const idx = start + i;\n      if (idx >= 0 && idx < childrenRef.length) {\n        childrenRef.splice(idx, 1);\n      }\n    }\n    const nextRows = Math.max(0, this.rows() - 1);\n    this.#updateGridOptions({ rows: nextRows });\n    this.designerService.refresh({ widget: this.node });\n  }\n\n  @HostBinding('class')\n  get __class(): any {\n    return this.hostClass();\n  }\n\n  @HostBinding('style')\n  get __style(): any {\n    return this.hostStyle();\n  }\n}\n","import {\n  AXPGridBaseLayoutWidgetComponent,\n  AXPGridBreakpointValues,\n  AXPWidgetCoreModule,\n} from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, HostBinding, computed } from '@angular/core';\n\n@Component({\n  selector: 'axp-grid-widget-view',\n  template: `\n    @for (node of children(); track $index) {\n      <ng-container\n        axp-widget-renderer\n        [node]=\"node\"\n        [index]=\"index\"\n        [parentNode]=\"this\"\n        [mode]=\"this.mode\"\n      ></ng-container>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule],\n})\nexport class AXPGridWidgetViewComponent extends AXPGridBaseLayoutWidgetComponent {\n  protected cols = computed(() => (this.options()['grid'] as AXPGridBreakpointValues)?.default?.columns ?? 1);\n  protected rows = computed(() => (this.options()['grid'] as AXPGridBreakpointValues)?.default?.rows ?? 1);\n\n  // private calcGridRowOrColumn(value: string) {\n  //   return AXPPropertyEditorHelper.parseGridTemplate(value);\n  // }\n  @HostBinding('class')\n  get __class(): any {\n    return this.hostClass();\n  }\n\n  @HostBinding('style')\n  get __style(): any {\n    return this.hostStyle();\n  }\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGETS_LAYOUT_SUB_GRID } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_DATA_PATH_PROPERTY,\n  AXP_LAYOUT_BORDER_PROPERTY,\n  AXP_LAYOUT_GRID_PROPERTY,\n  AXP_LAYOUT_SPACING_PROPERTY,\n} from '../../../properties';\nimport { AXP_NAME_PROPERTY } from '../../../properties/general.props';\n\nexport const AXPGridWidget: AXPWidgetConfig = {\n  name: 'grid-layout',\n  title: '@platform-layout-widgets:widgets.grid-layout.title',\n  type: 'container',\n  categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n  subCategory: AXP_WIDGETS_LAYOUT_SUB_GRID,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  description: '@platform-layout-widgets:widgets.grid-layout.description',\n  icon: 'fa-light fa-grid',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_DATA_PATH_PROPERTY,\n    //  ...AXP_LAYOUT_GRID_PROPERTIES,\n    AXP_LAYOUT_GRID_PROPERTY,\n    AXP_LAYOUT_SPACING_PROPERTY,\n    AXP_LAYOUT_BORDER_PROPERTY,\n  ],\n  components: {\n    view: {\n      component: () => import('./grid-widget-view.component').then((c) => c.AXPGridWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./grid-widget-view.component').then((c) => c.AXPGridWidgetViewComponent),\n    },\n    designer: {\n      component: () => import('./grid-widget-designer.component').then((c) => c.AXPGridWidgetDesignerComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    grid: 'grid-layout';\n  }\n}\n\nexport interface AXPGridWidgetDesignerOptions {\n  grid?: {\n    default?: {\n      columns?: number;\n      rows?: number;\n      gap?: string;\n      justifyItems?: string;\n      alignItems?: string;\n      autoFlow?: string;\n    };\n  };\n  spacing?: {\n    padding?: string;\n    margin?: string;\n  };\n  border?: {\n    radius?: string;\n    width?: string;\n    color?: string;\n    style?: string;\n  };\n  backgroundColor?: string;\n  direction?: string;\n  overflow?: string;\n  overflowX?: string;\n  overflowY?: string;\n  width?: string;\n  minWidth?: string;\n  maxWidth?: string;\n  height?: string;\n  minHeight?: string;\n  maxHeight?: string;\n}\n\nexport interface AXPGridWidgetViewOptions {\n  grid?: {\n    default?: {\n      columns?: number;\n      rows?: number;\n      gap?: string;\n      justifyItems?: string;\n      alignItems?: string;\n      autoFlow?: string;\n    };\n  };\n  spacing?: {\n    padding?: string;\n    margin?: string;\n  };\n  border?: {\n    radius?: string;\n    width?: string;\n    color?: string;\n    style?: string;\n  };\n  backgroundColor?: string;\n  direction?: string;\n  overflow?: string;\n  overflowX?: string;\n  overflowY?: string;\n  width?: string;\n  minWidth?: string;\n  maxWidth?: string;\n  height?: string;\n  minHeight?: string;\n  maxHeight?: string;\n}\n\nexport interface AXPGridWidgetEditOptions {\n  grid?: {\n    default?: {\n      columns?: number;\n      rows?: number;\n      gap?: string;\n      justifyItems?: string;\n      alignItems?: string;\n      autoFlow?: string;\n    };\n  };\n  spacing?: {\n    padding?: string;\n    margin?: string;\n  };\n  border?: {\n    radius?: string;\n    width?: string;\n    color?: string;\n    style?: string;\n  };\n  backgroundColor?: string;\n  direction?: string;\n  overflow?: string;\n  overflowX?: string;\n  overflowY?: string;\n  width?: string;\n  minWidth?: string;\n  maxWidth?: string;\n  height?: string;\n  minHeight?: string;\n  maxHeight?: string;\n}\n\nexport interface AXPGridWidgetPrintOptions {\n  grid?: {\n    default?: {\n      columns?: number;\n      rows?: number;\n      gap?: string;\n      justifyItems?: string;\n      alignItems?: string;\n      autoFlow?: string;\n    };\n  };\n  spacing?: {\n    padding?: string;\n    margin?: string;\n  };\n  border?: {\n    radius?: string;\n    width?: string;\n    color?: string;\n    style?: string;\n  };\n  backgroundColor?: string;\n  direction?: string;\n  overflow?: string;\n  overflowX?: string;\n  overflowY?: string;\n  width?: string;\n  minWidth?: string;\n  maxWidth?: string;\n  height?: string;\n  minHeight?: string;\n  maxHeight?: string;\n}\n\nexport interface AXPGridWidgetOptions {\n  designer: AXPGridWidgetDesignerOptions;\n  view: AXPGridWidgetViewOptions;\n  edit: AXPGridWidgetEditOptions;\n  print: AXPGridWidgetPrintOptions;\n}\n","import {\n  AXPGridItemBaseLayoutWidgetComponent,\n  AXPLayoutBaseWidgetComponent,\n  AXPWidgetCoreModule,\n} from '@acorex/platform/layout/widget-core';\nimport {\n  AXPDesignerAddWidgetMiniButtonComponent,\n  AXPWidgetDesignerRendererDirective,\n} from '@acorex/platform/layout/designer';\n\nimport { AXMenuItem } from '@acorex/components/menu';\nimport { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';\n\n@Component({\n  selector: 'axp-grid-item-widget-designer',\n  template: `\n    @for (child of children(); track $index) {\n      <ng-container\n        axp-widget-designer-renderer\n        [node]=\"child\"\n        [parentNode]=\"this\"\n        [mode]=\"this.mode\"\n        [locked]=\"this.locked\"\n      >\n      </ng-container>\n    } @empty {\n      <axp-designer-add-widget-mini-button></axp-designer-add-widget-mini-button>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule, AXPWidgetDesignerRendererDirective, AXPDesignerAddWidgetMiniButtonComponent],\n  providers: [\n    {\n      provide: AXPLayoutBaseWidgetComponent,\n      useExisting: AXPGridItemWidgetDesignerComponent,\n    },\n  ],\n})\nexport class AXPGridItemWidgetDesignerComponent extends AXPGridItemBaseLayoutWidgetComponent {\n  @HostBinding('class')\n  get __class(): any {\n    return this.hostClass();\n  }\n\n  @HostBinding('style')\n  get __style(): any {\n    const baseStyle = this.hostStyle();\n    // const shadowStyle = {\n    //   'box-shadow': 'inset 0 1px 0 0 #ddd, inset 1px 0 0 0 #ddd, inset 0 -1px 0 0 #ddd, inset -1px 0 0 0 #ddd',\n    // };\n\n    return {\n      ...baseStyle,\n      //  ...shadowStyle\n    };\n  }\n\n  onContextMenu(context: { items: AXMenuItem[] }): void {\n    const api = (this.parentComponent as any)?.api?.();\n    const canLeft = !!api?.canMergeLeft?.(this.node);\n    const canRight = !!api?.canMergeRight?.(this.node);\n    const canTop = !!api?.canMergeTop?.(this.node);\n    const canBottom = !!api?.canMergeBottom?.(this.node);\n    const items: AXMenuItem[] = [\n      {\n        name: 'gridItem.group.columns',\n        text: 'Column',\n        icon: 'fa-light fa-table-columns',\n        items: [\n          { name: 'gridItem.colLeft', text: 'Insert Column Left', icon: 'fa-light fa-arrow-left-to-line' },\n          { name: 'gridItem.colRight', text: 'Insert Column Right', icon: 'fa-light fa-arrow-right-to-line' },\n          { name: 'gridItem.colRemove', text: 'Remove Column', icon: 'fa-light fa-trash-can' },\n        ],\n      },\n      {\n        name: 'gridItem.group.rows',\n        text: 'Row',\n        icon: 'fa-light fa-table-rows',\n        items: [\n          { name: 'gridItem.rowAbove', text: 'Insert Row Above', icon: 'fa-light fa-arrow-up-to-line' },\n          { name: 'gridItem.rowBelow', text: 'Insert Row Below', icon: 'fa-light fa-arrow-down-to-line' },\n          { name: 'gridItem.rowRemove', text: 'Remove Row', icon: 'fa-light fa-trash-can' },\n        ],\n      },\n      {\n        name: 'gridItem.group.cells',\n        text: 'Cell',\n        icon: 'fa-light fa-table-cells',\n        items: [\n          { name: 'gridItem.cellShiftRight', text: 'Insert Cell (Shift Right)', icon: 'fa-light fa-arrow-right' },\n          { name: 'gridItem.cellShiftDown', text: 'Insert Cell (Shift Down)', icon: 'fa-light fa-arrow-down' },\n        ],\n      },\n      {\n        name: 'gridItem.group.merge',\n        text: 'Merge',\n        icon: 'fa-light fa-merge',\n        items: [\n          {\n            name: 'gridItem.mergeLeft',\n            text: 'Merge Left',\n            icon: 'fa-light fa-arrow-left-to-line',\n            disabled: !canLeft,\n          },\n          {\n            name: 'gridItem.mergeRight',\n            text: 'Merge Right',\n            icon: 'fa-light fa-arrow-right-to-line',\n            disabled: !canRight,\n          },\n          { name: 'gridItem.mergeTop', text: 'Merge Top', icon: 'fa-light fa-arrow-up-to-line', disabled: !canTop },\n          {\n            name: 'gridItem.mergeBottom',\n            text: 'Merge Bottom',\n            icon: 'fa-light fa-arrow-down-to-line',\n            disabled: !canBottom,\n          },\n        ],\n      },\n    ];\n    items[items.length - 1].break = true;\n    context.items.unshift(...items);\n  }\n\n  async executeCommand(command: { name: string; data?: any; handled: boolean }): Promise<void> {\n    const api = (this.parentComponent as any)?.api?.();\n    const handlers: Record<string, () => void> = {\n      'gridItem.colLeft': () => api?.insertColumnLeft?.(this.node),\n      'gridItem.colRight': () => api?.insertColumnRight?.(this.node),\n      'gridItem.colRemove': () => api?.removeColumnAtCell?.(this.node),\n      'gridItem.rowAbove': () => api?.insertRowAbove?.(this.node),\n      'gridItem.rowBelow': () => api?.insertRowBelow?.(this.node),\n      'gridItem.rowRemove': () => api?.removeRowAtCell?.(this.node),\n      'gridItem.cellShiftRight': () => api?.insertCellShiftRight?.(this.node),\n      'gridItem.cellShiftDown': () => api?.insertCellShiftDown?.(this.node),\n      'gridItem.mergeLeft': () => api?.mergeLeft?.(this.node),\n      'gridItem.mergeRight': () => api?.mergeRight?.(this.node),\n      'gridItem.mergeTop': () => api?.mergeTop?.(this.node),\n      'gridItem.mergeBottom': () => api?.mergeBottom?.(this.node),\n    };\n    const fn = handlers[command.name];\n    if (fn) {\n      fn();\n      command.handled = true;\n    }\n  }\n}\n","import { AXPGridItemBaseLayoutWidgetComponent, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';\n\n@Component({\n  selector: 'axp-grid-item-widget-view',\n  template: `\n    @for (child of children(); track $index) {\n      <ng-container axp-widget-renderer [node]=\"child\" [index]=\"index\" [parentNode]=\"this\" [mode]=\"this.mode\">\n      </ng-container>\n    }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule],\n})\nexport class AXPGridItemWidgetViewComponent extends AXPGridItemBaseLayoutWidgetComponent {\n  @HostBinding('class')\n  get __class(): any {\n    return this.hostClass();\n  }\n\n  @HostBinding('style')\n  get __style(): any {\n    const baseStyle = this.hostStyle();\n    // const shadowStyle = {\n    //   'box-shadow': 'inset 0 1px 0 0 #ddd, inset 1px 0 0 0 #ddd, inset 0 -1px 0 0 #ddd, inset -1px 0 0 0 #ddd',\n    // };\n\n    return {\n      ...baseStyle,\n      // ...shadowStyle\n    };\n  }\n}\n","import { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGETS_LAYOUT_SUB_GRID } from '@acorex/platform/layout/widget-core';\nimport {\n  AXP_LAYOUT_BORDER_PROPERTY,\n  AXP_LAYOUT_DIRECTION_PROPERTY,\n  AXP_LAYOUT_FLEX_PROPERTY,\n  AXP_LAYOUT_GRID_ITEM_PROPERTY,\n  AXP_LAYOUT_SPACING_PROPERTY,\n} from '../../../properties';\nimport { AXP_BG_COLOR_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties/general.props';\n\nexport const AXPGridItemWidget: AXPWidgetConfig = {\n  name: 'grid-item-layout',\n  title: '@platform-layout-widgets:widgets.grid-item-layout.title',\n  type: 'container',\n  categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n  subCategory: AXP_WIDGETS_LAYOUT_SUB_GRID,\n  // groups: [AXPWidgetGroupEnum.FormElement],\n  description: '@platform-layout-widgets:widgets.grid-item-layout.description',\n  icon: 'fa-light fa-objects-column',\n  properties: [\n    AXP_NAME_PROPERTY,\n    AXP_BG_COLOR_PROPERTY,\n    AXP_LAYOUT_GRID_ITEM_PROPERTY,\n    AXP_LAYOUT_SPACING_PROPERTY,\n    AXP_LAYOUT_BORDER_PROPERTY,\n    AXP_LAYOUT_DIRECTION_PROPERTY,\n    AXP_LAYOUT_FLEX_PROPERTY,\n  ],\n  components: {\n    view: {\n      component: () => import('./grid-item-widget-view.component').then((c) => c.AXPGridItemWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./grid-item-widget-view.component').then((c) => c.AXPGridItemWidgetViewComponent),\n    },\n    designer: {\n      component: () =>\n        import('./grid-item-widget-designer.component').then((c) => c.AXPGridItemWidgetDesignerComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    gridItem: 'grid-item-layout';\n  }\n}\n\nexport interface AXPGridItemWidgetDesignerOptions {\n  alignSelf?: string;\n  justifySelf?: string;\n  colSpan?: number;\n  colStart?: number;\n  colEnd?: number;\n  rowSpan?: number;\n  rowStart?: number;\n  rowEnd?: number;\n  flexDirection?: string;\n  flexWrap?: string;\n  justifyContent?: string;\n  alignItems?: string;\n  gap?: string;\n  spacing?: {\n    padding?: string;\n    margin?: string;\n  };\n  border?: {\n    radius?: string;\n    width?: string;\n    color?: string;\n    style?: string;\n  };\n  backgroundColor?: string;\n  direction?: string;\n  overflow?: string;\n  overflowX?: string;\n  overflowY?: string;\n  width?: string;\n  minWidth?: string;\n  maxWidth?: string;\n  height?: string;\n  minHeight?: string;\n  maxHeight?: string;\n}\n\nexport interface AXPGridItemWidgetViewOptions {\n  alignSelf?: string;\n  justifySelf?: string;\n  colSpan?: number;\n  colStart?: number;\n  colEnd?: number;\n  rowSpan?: number;\n  rowStart?: number;\n  rowEnd?: number;\n  flexDirection?: string;\n  flexWrap?: string;\n  justifyContent?: string;\n  alignItems?: string;\n  gap?: string;\n  hidden?: boolean;\n  spacing?: {\n    padding?: string;\n    margin?: string;\n  };\n  border?: {\n    radius?: string;\n    width?: string;\n    color?: string;\n    style?: string;\n  };\n  backgroundColor?: string;\n  direction?: string;\n  overflow?: string;\n  overflowX?: string;\n  overflowY?: string;\n  width?: string;\n  minWidth?: string;\n  maxWidth?: string;\n  height?: string;\n  minHeight?: string;\n  maxHeight?: string;\n}\n\nexport interface AXPGridItemWidgetEditOptions {\n  alignSelf?: string;\n  justifySelf?: string;\n  colSpan?: number;\n  colStart?: number;\n  colEnd?: number;\n  rowSpan?: number;\n  rowStart?: number;\n  rowEnd?: number;\n  flexDirection?: string;\n  flexWrap?: string;\n  justifyContent?: string;\n  alignItems?: string;\n  gap?: string;\n  spacing?: {\n    padding?: string;\n    margin?: string;\n  };\n  border?: {\n    radius?: string;\n    width?: string;\n    color?: string;\n    style?: string;\n  };\n  backgroundColor?: string;\n  direction?: string;\n  overflow?: string;\n  overflowX?: string;\n  overflowY?: string;\n  width?: string;\n  minWidth?: string;\n  maxWidth?: string;\n  height?: string;\n  minHeight?: string;\n  maxHeight?: string;\n}\n\nexport interface AXPGridItemWidgetPrintOptions {\n  alignSelf?: string;\n  justifySelf?: string;\n  colSpan?: number;\n  colStart?: number;\n  colEnd?: number;\n  rowSpan?: number;\n  rowStart?: number;\n  rowEnd?: number;\n  flexDirection?: string;\n  flexWrap?: string;\n  justifyContent?: string;\n  alignItems?: string;\n  gap?: string;\n  spacing?: {\n    padding?: string;\n    margin?: string;\n  };\n  border?: {\n    radius?: string;\n    width?: string;\n    color?: string;\n    style?: string;\n  };\n  backgroundColor?: string;\n  direction?: string;\n  overflow?: string;\n  overflowX?: string;\n  overflowY?: string;\n  width?: string;\n  minWidth?: string;\n  maxWidth?: string;\n  height?: string;\n  minHeight?: string;\n  maxHeight?: string;\n}\n\nexport interface AXPGridItemWidgetOptions {\n  designer: AXPGridItemWidgetDesignerOptions;\n  view: AXPGridItemWidgetViewOptions;\n  edit: AXPGridItemWidgetEditOptions;\n  print: AXPGridItemWidgetPrintOptions;\n}\n","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTooltipModule } from '@acorex/components/tooltip';\nimport { AXPColumnWidgetComponent, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { isNil } from 'lodash-es';\n\n//#region ----   Types   ----\n\nexport interface AXPIconWidgetValue {\n  icon: string;\n  title?: string;\n}\n\nexport type AXPIconWidgetColumnValue = string | AXPIconWidgetValue;\n\n//#endregion\n\n@Component({\n  selector: 'axp-icon-widget-view',\n  template: `\n  @if (getTooltip()) {\n    <ax-icon\n      [icon]=\"getIcon()\"\n      [axTooltip]=\"getTooltip()!\"\n      [axTooltipPlacement]=\"'top'\"\n    ></ax-icon>\n  } @else {\n    <ax-icon [icon]=\"getIcon()\"></ax-icon>\n  }\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule, AXDecoratorModule, AXTooltipModule],\n  inputs: ['rawValue', 'rowData'],\n})\nexport class AXPIconWidgetViewComponent extends AXPColumnWidgetComponent<AXPIconWidgetColumnValue> {\n  //#region ----   Methods   ----\n\n  /**\n   * Resolves the icon value from getIcon callback, raw cell value, or static options.\n   */\n  protected resolveIconValue(): AXPIconWidgetColumnValue | null {\n    const iconFn = this.options['getIcon'];\n\n    if (iconFn && typeof iconFn === 'function') {\n      const result = iconFn(this.rowData) as AXPIconWidgetColumnValue | null | undefined;\n      if (!isNil(result) && result !== '') {\n        return result;\n      }\n    }\n\n    if (!isNil(this.rawValue) && this.rawValue !== '') {\n      return this.rawValue;\n    }\n\n    const staticIcon = this.options['icon'] as AXPIconWidgetColumnValue | undefined;\n    if (!isNil(staticIcon) && staticIcon !== '') {\n      return staticIcon;\n    }\n\n    return null;\n  }\n\n  /**\n   * Returns the icon name from a string value or an object with an icon property.\n   */\n  protected getIcon(): string {\n    const value = this.resolveIconValue();\n\n    if (isNil(value) || value === '') {\n      return '';\n    }\n\n    if (typeof value === 'string') {\n      return value;\n    }\n\n    return value.icon ?? '';\n  }\n\n  /**\n   * Returns the tooltip text when the value is an object with a title property.\n   */\n  protected getTooltip(): string | null {\n    const value = this.resolveIconValue();\n\n    if (!value || typeof value !== 'object') {\n      return null;\n    }\n\n    const title = value.title?.trim();\n    return title || null;\n  }\n\n  //#endregion\n}\n","import { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGETS_LAYOUT_SUB_UTILITY } from '@acorex/platform/layout/widget-core';\nimport { AXP_NAME_PROPERTY } from '../../../properties/general.props';\n\nexport const AXPIconWidget: AXPWidgetConfig = {\n  name: 'icon',\n  title: '@platform-layout-widgets:widgets.icon.title',\n  type: 'view',\n  categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n  subCategory: AXP_WIDGETS_LAYOUT_SUB_UTILITY,\n  // groups: [AXPWidgetGroupEnum.FormElement],\n  icon: 'fa-light fa-icons',\n  properties: [AXP_NAME_PROPERTY],\n  components: {\n    column: {\n      component: () => import('./icon-widget-column.component').then((c) => c.AXPIconWidgetViewComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    icon: 'icon';\n  }\n}\n","import { AXStyleLookType } from '@acorex/cdk/common';\nimport { AXCollapseModule } from '@acorex/components/collapse';\nimport { AXPLayoutBaseWidgetComponent, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport {\n  AXPDesignerAddWidgetMiniButtonComponent,\n  AXPWidgetDesignerRendererDirective,\n} from '@acorex/platform/layout/designer';\n\nimport { ChangeDetectionStrategy, Component, computed, HostBinding } from '@angular/core';\n\n@Component({\n  selector: 'axp-panel-widget-designer',\n  template: `\n    <ax-collapse-group [look]=\"look()\">\n      <ax-collapse\n        [caption]=\"caption()\"\n        [icon]=\"icon()\"\n        [showHeader]=\"showHeader()\"\n        [isCollapsed]=\"collapsed()\"\n        (isCollapsedChange)=\"handleCollapsedChange($event)\"\n      >\n        @for (node of children(); track $index) {\n          <ng-container\n            axp-widget-designer-renderer\n            [node]=\"node\"\n            [parentNode]=\"this\"\n            [mode]=\"this.mode\"\n            [locked]=\"this.locked\"\n          ></ng-container>\n        } @empty {\n          <axp-designer-add-widget-mini-button\n            class=\"ax-flex-1 ax-self-center ax-place-self-end\"\n          ></axp-designer-add-widget-mini-button>\n        }\n      </ax-collapse>\n    </ax-collapse-group>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [\n    AXPWidgetCoreModule,\n    AXCollapseModule,\n    AXPWidgetDesignerRendererDirective,\n    AXPDesignerAddWidgetMiniButtonComponent,\n  ],\n  providers: [\n    {\n      provide: AXPLayoutBaseWidgetComponent,\n      useExisting: AXPPanelWidgetDesignerComponent,\n    },\n  ],\n  standalone: true,\n})\nexport class AXPPanelWidgetDesignerComponent extends AXPLayoutBaseWidgetComponent {\n  protected caption = computed<string>(() => (this.options()['caption'] as string) || 'Panel');\n  protected icon = computed<string>(() => (this.options()['icon'] as string) || '');\n  protected look = computed<AXStyleLookType>(() => (this.options()['look'] as AXStyleLookType) || 'solid');\n  protected disabled = computed<boolean>(() => (this.options()['disabled'] as boolean) || false);\n  protected showHeader = computed<boolean>(() => (this.options()['showHeader'] as boolean) ?? true);\n  protected collapsed = computed<boolean>(() => (this.options()['collapsed'] as boolean) || false);\n\n  protected handleCollapsedChange(value: boolean) {\n    this.setOptions({ collapsed: value });\n  }\n\n  @HostBinding('class')\n  private get __class(): string {\n    const cls: any = {};\n    //\n    cls[`ax-w-full`] = true;\n    cls[`ax-flex`] = true;\n    cls[`ax-flex-col`] = true;\n    return cls;\n  }\n}\n","import { AXStyleLookType } from '@acorex/cdk/common';\nimport { AXCollapseModule } from '@acorex/components/collapse';\nimport { AXPLayoutBaseWidgetComponent, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, HostBinding } from '@angular/core';\n\n@Component({\n  selector: 'axp-panel-widget-view',\n  template: `\n    <ax-collapse-group [look]=\"look()\">\n      <ax-collapse\n        [caption]=\"caption()\"\n        [icon]=\"icon()\"\n        [showHeader]=\"showHeader()\"\n        [isCollapsed]=\"collapsed()\"\n        (isCollapsedChange)=\"handleCollapsedChange($event)\"\n      >\n        @for (node of children(); track $index) {\n          <ng-container\n            axp-widget-renderer\n            [node]=\"node\"\n            [index]=\"index\"\n            [parentNode]=\"this\"\n            [mode]=\"this.mode\"\n          ></ng-container>\n        }\n      </ax-collapse>\n    </ax-collapse-group>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule, AXCollapseModule],\n  standalone: true,\n})\nexport class AXPPanelWidgetViewComponent extends AXPLayoutBaseWidgetComponent {\n  protected caption = computed<string>(() => (this.options()['caption'] as string) || 'Panel');\n  protected icon = computed<string>(() => (this.options()['icon'] as string) || '');\n  protected look = computed<AXStyleLookType>(() => (this.options()['look'] as AXStyleLookType) || 'solid');\n  protected disabled = computed<boolean>(() => (this.options()['disabled'] as boolean) || false);\n  protected showHeader = computed<boolean>(() => (this.options()['showHeader'] as boolean) ?? true);\n  protected collapsed = computed<boolean>(() => (this.options()['collapsed'] as boolean) || false);\n\n  protected handleCollapsedChange(value: boolean) {\n    this.setOptions({ collapsed: value });\n  }\n\n  @HostBinding('class')\n  private get __class(): string {\n    const cls: any = {};\n    //\n    cls[`ax-w-full`] = true;\n    cls[`ax-widget-outline`] = true;\n    //\n    cls[`ax-flex`] = true;\n    cls[`ax-flex-col`] = true;\n    return cls;\n  }\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport {\n objectKeyValueTransforms } from '@acorex/platform/core';\nimport { AXPWidgetsCatalog } from '@acorex/platform/contracts';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGETS_LAYOUT_SUB_SURFACES } from '@acorex/platform/layout/widget-core';\nimport { AXP_NAME_PROPERTY } from '../../../properties';\nimport { AXP_BEHAVIOR_PROPERTY_GROUP, AXP_STYLING_PROPERTY_GROUP } from '../../../properties/groups';\n\nexport const AXPPanelWidget: AXPWidgetConfig = {\n  name: 'panel-layout',\n  type: 'container',\n  title: '@platform-layout-widgets:widgets.panel-layout.title',\n  description: '@platform-layout-widgets:widgets.panel-layout.description',\n  icon: 'fa-light fa-rectangle-list',\n  categories: AXP_WIDGETS_LAYOUT_CATEGORY,\n  subCategory: AXP_WIDGETS_LAYOUT_SUB_SURFACES,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  properties: [\n    AXP_NAME_PROPERTY,\n    {\n      name: 'caption',\n      title: 'Caption',\n      group: AXP_STYLING_PROPERTY_GROUP,\n      schema: {\n        dataType: 'string',\n        defaultValue: 'Panel',\n        interface: {\n          name: 'caption',\n          path: 'options.caption',\n          type: AXPWidgetsCatalog.text,\n        },\n      },\n      visible: true,\n    },\n    {\n      name: 'icon',\n      title: 'Icon',\n      group: AXP_STYLING_PROPERTY_GROUP,\n      schema: {\n        dataType: 'string',\n        defaultValue: '',\n        interface: {\n          name: 'icon',\n          path: 'options.icon',\n          type: AXPWidgetsCatalog.text,\n        },\n      },\n      visible: true,\n    },\n    {\n      name: 'look',\n      title: 'Look',\n      group: AXP_STYLING_PROPERTY_GROUP,\n      schema: {\n        dataType: 'string',\n        defaultValue: 'solid',\n        interface: {\n          name: 'look',\n          path: 'options.look',\n          type: AXPWidgetsCatalog.select,\n          valueTransforms: objectKeyValueTransforms('id'),\n          options: {\n            dataSource: [\n              { id: 'solid', title: 'Solid' },\n              { id: 'fill', title: 'Fill' },\n              { id: 'outline', title: 'Outline' },\n              { id: 'flat', title: 'Flat' },\n              { id: 'none', title: 'None' },\n            ],\n          },\n        },\n      },\n      visible: true,\n    },\n    {\n      name: 'showHeader',\n      title: 'Show Header',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n      schema: {\n        dataType: 'boolean',\n        defaultValue: true,\n        interface: {\n          name: 'showHeader',\n          path: 'options.showHeader',\n          type: AXPWidgetsCatalog.checkbox,\n        },\n      },\n      visible: true,\n    },\n    {\n      name: 'collapsed',\n      title: 'Collapsed',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n      schema: {\n        dataType: 'boolean',\n        defaultValue: false,\n        interface: {\n          name: 'collapsed',\n          path: 'options.collapsed',\n          type: AXPWidgetsCatalog.checkbox,\n        },\n      },\n      visible: true,\n    },\n  ],\n  components: {\n    designer: {\n      component: () => import('./panel-widget-designer.component').then((c) => c.AXPPanelWidgetDesignerComponent),\n    },\n    view: {\n      component: () => import('./panel-widget-view.component').then((c) => c.AXPPanelWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./panel-widget-view.component').then((c) => c.AXPPanelWidgetViewComponent),\n    },\n  },\n};\n\nexport interface AXPPanelWidgetDesignerOptions {\n  caption?: string;\n  icon?: string;\n  look?: 'solid' | 'fill' | 'outline' | 'flat' | 'none';\n  disabled?: boolean;\n  showHeader?: boolean;\n  collapsed?: boolean;\n}\n\nexport interface AXPPanelWidgetViewOptions {\n  caption?: string;\n  icon?: string;\n  look?: 'solid' | 'fill' | 'outline' | 'flat' | 'none';\n  disabled?: boolean;\n  showHeader?: boolean;\n  collapsed?: boolean;\n}\n\nexport interface AXPPanelWidgetEditOptions {\n  caption?: string;\n  icon?: string;\n  look?: 'solid' | 'fill' | 'outline' | 'flat' | 'none';\n  disabled?: boolean;\n  showHeader?: boolean;\n  collapsed?: boolean;\n}\n\nexport interface AXPPanelWidgetPrintOptions {\n  caption?: string;\n  icon?: string;\n  look?: 'solid' | 'fill' | 'outline' | 'flat' | 'none';\n  disabled?: boolean;\n  showHeader?: boolean;\n  collapsed?: boolean;\n}\n\nexport interface AXPPanelWidgetOptions {\n  designer: AXPPanelWidgetDesignerOptions;\n  view: AXPPanelWidgetViewOptions;\n  edit: AXPPanelWidgetEditOptions;\n  print: AXPPanelWidgetPrintOptions;\n}\n\n// Register this widget type in the widget type map\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    panel: 'panel';\n  }\n}\n","import type { AXPWidgetNode } from '@acorex/platform/contracts';\nimport { AXTabsModule } from '@acorex/components/tabs';\n\nimport { AXPLayoutBaseWidgetComponent, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\n\n\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, HostBinding, linkedSignal, signal } from '@angular/core';\nimport { AXPTabSetWidgetLookType, AXPTabSetWidgetOrientation } from './tabset-widget.types';\n\n@Component({\n  selector: 'axp-tabset-widget-view',\n  template: `\n    <ax-tabs [look]=\"look()\" [fitParent]=\"false\">\n      @for (tab of tabs(); track $index) {\n        <ax-tab-item\n          [text]=\"(tab.title | translate | async)!\"\n          [disabled]=\"tab.disabled\"\n          (onClick)=\"handleTabClick($index)\"\n        >\n        </ax-tab-item>\n      }\n    </ax-tabs>\n    <div class=\"content\">\n      @for (tab of renderedTabs(); track tab.index) {\n        <div [class]=\"tab.index === activeIndex() ? '' : 'ax-hidden'\">\n          <ng-container\n            axp-widget-renderer\n            [node]=\"tab.node\"\n            [index]=\"index\"\n            [parentNode]=\"this\"\n            [mode]=\"this.mode\"\n          ></ng-container>\n        </div>\n      }\n    </div>\n  `,\n  styleUrl: './tabset-widget-view.component.scss',\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXTabsModule, AXPWidgetCoreModule, CommonModule, AXTranslationModule],\n})\nexport class AXPTabSetWidgetViewComponent extends AXPLayoutBaseWidgetComponent {\n  protected look = computed<AXPTabSetWidgetLookType>(\n    () => (this.options()['look'] as AXPTabSetWidgetLookType) || 'with-line',\n  );\n  protected orientation = computed<AXPTabSetWidgetOrientation>(\n    () => (this.options()['orientation'] as AXPTabSetWidgetOrientation) || 'horizontal',\n  );\n\n  protected activeIndex = linkedSignal(() => (this.options()['activeIndex'] as number) ?? 0);\n\n  //#region ---- Rendered Tabs Cache ----\n\n  /**\n   * Cache for rendered tabs to prevent re-rendering on tab switch\n   */\n  private renderedTabsCache = signal<Array<{ index: number; node: AXPWidgetNode }>>([]);\n\n  //#endregion\n\n  protected tabs = computed(() =>\n    this.children()\n      .filter((child) => child.options?.['visible'] != false)\n      .map((child) => {\n        return {\n          title: child.options?.['title']!,\n          icon: child.options?.['icon']!,\n          disabled: child.options?.['disabled']!,\n          visible: child.options?.['visible']!,\n        };\n      }),\n  );\n\n  protected tabContents = computed(() =>\n    this.children()\n      .filter((child) => child.options?.['visible'] != false)\n      .map((child) => {\n        return child;\n      }),\n  );\n\n  //#region ---- Rendered Tabs Management ----\n\n  /**\n   * Returns list of tabs that should be rendered\n   * Manages cache to prevent re-rendering existing tabs\n   */\n  protected renderedTabs = computed(() => {\n    const currentActiveIndex = this.activeIndex();\n    const availableTabs = this.tabContents();\n    const currentCache = this.renderedTabsCache();\n\n    // Check if current active tab is already in cache\n    const isActiveTabCached = currentCache.some((cached) => cached.index === currentActiveIndex);\n\n    if (!isActiveTabCached && availableTabs[currentActiveIndex]) {\n      // Add new tab to cache\n      const newTab = {\n        index: currentActiveIndex,\n        node: availableTabs[currentActiveIndex],\n      };\n\n      const updatedCache = [...currentCache, newTab];\n      this.renderedTabsCache.set(updatedCache);\n      return updatedCache;\n    }\n\n    return currentCache;\n  });\n\n  //#endregion\n\n  @HostBinding('class')\n  private get __class(): string {\n    const cls: any = {};\n    cls[this.orientation()] = true;\n    return cls;\n  }\n\n  //#region ---- Event Handlers ----\n\n  /**\n   * Handles tab click and ensures tab gets added to render cache\n   */\n  protected handleTabClick(index: number) {\n    this.activeIndex.set(index);\n\n    // Trigger renderedTabs computed to ensure new tab gets cached\n    this.renderedTabs();\n  }\n\n  //#endregion\n}\n","import { AXPLayoutBaseWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n@Component({\n  selector: 'axp-tabset-widget-designer',\n  template: ``,\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPTabSetWidgetDesignerComponent extends AXPLayoutBaseWidgetComponent {}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGETS_LAYOUT_SUB_TABS } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\n\nexport const AXPTabSetWidget: AXPWidgetConfig = {\n  name: 'tabset-layout',\n  title: '@platform-layout-widgets:widgets.tabset-layout.title',\n  description: '@platform-layout-widgets:widgets.tabset-layout.description',\n  type: 'view',\n  categories: [AXP_WIDGETS_LAYOUT_CATEGORY],\n  subCategory: AXP_WIDGETS_LAYOUT_SUB_TABS,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  icon: 'fa-light fa-square',\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n  components: {\n    view: {\n      component: () => import('./tabset-widget-view.component').then((c) => c.AXPTabSetWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./tabset-widget-view.component').then((c) => c.AXPTabSetWidgetViewComponent),\n    },\n    designer: {\n      component: () => import('./tabset-widget-designer.component').then((c) => c.AXPTabSetWidgetDesignerComponent),\n    },\n  },\n};\n\nexport interface AXPTabSetWidgetDesignerOptions { }\n\nexport interface AXPTabSetWidgetViewOptions {\n  look?: 'with-line' | 'with-line-color' | 'pills' | 'pills-color';\n  orientation?: 'vertical' | 'horizontal';\n  activeIndex?: number;\n}\n\nexport interface AXPTabSetWidgetEditOptions {\n  look?: 'with-line' | 'with-line-color' | 'pills' | 'pills-color';\n  orientation?: 'vertical' | 'horizontal';\n  activeIndex?: number;\n}\n\nexport interface AXPTabSetWidgetOptions {\n  designer: AXPTabSetWidgetDesignerOptions;\n  view: AXPTabSetWidgetViewOptions;\n  edit: AXPTabSetWidgetEditOptions;\n}\n","import { AXPLayoutBaseWidgetComponent, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\n\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\n\n@Component({\n  selector: 'axp-tabset-item-widget-view',\n  template: `\n    {{ children() | json }}sadfsdf\n    @for (node of children(); track $index) {\n      <ng-container\n        axp-widget-renderer\n        [node]=\"node\"\n        [index]=\"index\"\n        [parentNode]=\"this\"\n        [mode]=\"this.mode\"\n      ></ng-container>\n    }\n  `,\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [AXPWidgetCoreModule, CommonModule],\n})\nexport class AXPTabSetItemWidgetViewComponent extends AXPLayoutBaseWidgetComponent {\n  protected title = computed(() => this.options()['title'] as string);\n  protected icon = computed(() => this.options()['icon'] as string);\n  protected disabled = computed(() => this.options()['disabled'] as boolean);\n  protected visible = computed(() => this.options()['visible'] as boolean);\n}\n","import { AXPLayoutBaseWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n@Component({\n  selector: 'axp-tabset-item-widget-designer',\n  template: ``,\n  standalone: true,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [],\n})\nexport class AXPTabSetItemWidgetDesignerComponent extends AXPLayoutBaseWidgetComponent {}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGETS_LAYOUT_SUB_TABS } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\n\nexport const AXPTabSetItemWidget: AXPWidgetConfig = {\n  name: 'tabset-item',\n  title: '@platform-layout-widgets:widgets.tabset-item.title',\n  description: '@platform-layout-widgets:widgets.tabset-item.description',\n  type: 'view',\n  categories: [AXP_WIDGETS_LAYOUT_CATEGORY],\n  subCategory: AXP_WIDGETS_LAYOUT_SUB_TABS,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  icon: 'fa-light fa-square',\n  properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],\n  components: {\n    view: {\n      component: () => import('./tabset-item-widget-view.component').then((c) => c.AXPTabSetItemWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./tabset-item-widget-view.component').then((c) => c.AXPTabSetItemWidgetViewComponent),\n    },\n    designer: {\n      component: () => import('./tabset-item-widget-view.component').then((c) => c.AXPTabSetItemWidgetViewComponent),\n    },\n  },\n};\n\nexport interface AXPTabSetItemWidgetDesignerOptions {\n  title?: string;\n  icon?: string;\n  disabled?: boolean;\n  visible?: boolean;\n}\n\nexport interface AXPTabSetItemWidgetViewOptions {\n  title?: string;\n  icon?: string;\n  disabled?: boolean;\n  visible?: boolean;\n}\n\nexport interface AXPTabSetItemWidgetEditOptions {\n  title?: string;\n  icon?: string;\n  disabled?: boolean;\n  visible?: boolean;\n}\n\nexport interface AXPTabSetItemWidgetOptions {\n  designer: AXPTabSetItemWidgetDesignerOptions;\n  view: AXPTabSetItemWidgetViewOptions;\n  edit: AXPTabSetItemWidgetEditOptions;\n}\n","import { AXPLayoutBaseWidgetComponent } from '@acorex/platform/layout/widget-core';\n\nimport { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n  selector: 'axp-text-block-widget-view',\n  template: ` <div [innerHTML]=\"innerContent()\"></div> `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPTextBlockWidgetViewComponent extends AXPLayoutBaseWidgetComponent {\n  sanitizer = inject(DomSanitizer);\n\n  protected content = computed<string>(() => this.options()['content'] as string);\n\n  protected innerContent = computed(() => this.sanitizer.bypassSecurityTrustHtml(this.content()));\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXPWidgetsCatalog } from '@acorex/platform/contracts';\nimport { AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGETS_LAYOUT_SUB_SURFACES } from '@acorex/platform/layout/widget-core';\nimport { AXP_BEHAVIOR_PROPERTY_GROUP, AXP_NAME_PROPERTY } from '../../../properties';\n\nexport const AXPTextBlockWidget: AXPWidgetConfig = {\n  name: 'text-block-layout',\n  title: '@platform-layout-widgets:widgets.text-block-layout.title',\n  description: '@platform-layout-widgets:widgets.text-block-layout.description',\n  icon: 'fa-light fa-text',\n  categories: [AXP_WIDGETS_LAYOUT_CATEGORY],\n  subCategory: AXP_WIDGETS_LAYOUT_SUB_SURFACES,\n  groups: [AXPWidgetGroupEnum.FormElement],\n  type: 'view',\n  properties: [\n    AXP_NAME_PROPERTY,\n    {\n      name: 'content',\n      title: 'Content',\n      group: AXP_BEHAVIOR_PROPERTY_GROUP,\n      schema: {\n        dataType: 'string',\n        defaultValue: 'Text Block',\n        interface: {\n          name: 'content',\n          path: 'options.content',\n          type: AXPWidgetsCatalog.richText,\n        },\n      },\n      visible: true,\n    },\n  ],\n  components: {\n    view: {\n      component: () => import('./text-block-widget-view.component').then((c) => c.AXPTextBlockWidgetViewComponent),\n    },\n    edit: {\n      component: () => import('./text-block-widget-view.component').then((c) => c.AXPTextBlockWidgetViewComponent),\n    },\n    designer: {\n      component: () =>\n        import('./text-block-widget-designer.component').then((c) => c.AXPTextBlockWidgetDesignerComponent),\n    },\n  },\n};\n\ndeclare module '@acorex/platform/layout/widget-core-contracts' {\n  interface AXPWidgetTypesMap {\n    textBlockLayout: 'text-block-layout';\n  }\n}\n\nexport interface AXPTextBlockWidgetDesignerOptions {\n  content?: string;\n}\n\nexport interface AXPTextBlockWidgetViewOptions {\n  content?: string;\n}\n\nexport interface AXPTextBlockWidgetEditOptions {\n  content?: string;\n}\n\nexport interface AXPTextBlockWidgetPrintOptions {\n  content?: string;\n}\n\nexport interface AXPTextBlockWidgetOptions {\n  designer: AXPTextBlockWidgetDesignerOptions;\n  view: AXPTextBlockWidgetViewOptions;\n  edit: AXPTextBlockWidgetEditOptions;\n  print: AXPTextBlockWidgetPrintOptions;\n}\n","import { AXPWidgetConfig } from '@acorex/platform/layout/widget-core-contracts';\nimport { AXP_WIDGETS_EDITOR_CATEGORY } from '@acorex/platform/layout/widget-core';\nimport { AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY } from '../../../properties';\n\nexport const AXPTriggersWidget: AXPWidgetConfig = {\n    name: 'triggers-editor',\n    title: 'Triggers',\n    description: 'Edit widget triggers (events and actions)',\n    categories: AXP_WIDGETS_EDITOR_CATEGORY,\n    icon: 'fa-light fa-bolt',\n    type: 'editor',\n    properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY],\n    components: {\n        edit: {\n            component: () => import('./triggers-widget-editor.component').then((c) => c.AXPTriggersWidgetEditComponent),\n        },\n    },\n};\n\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPStateMessageComponent } from '@acorex/platform/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/widget-core';\nimport { AXPWidgetTrigger, AXPWidgetTriggers } from '@acorex/platform/contracts';\n\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, signal } from '@angular/core';\n\n@Component({\n  selector: 'axp-triggers-widget-editor',\n  template: `\n    <div class=\"ax-flex ax-flex-col ax-gap-2\">\n      @if (hasTriggers()) {\n        @for (trigger of triggers(); let i = $index; track i) {\n          <div\n            class=\"ax-flex ax-items-center ax-gap-2 ax-px-2 ax-py-1 ax-rounded-lg ax-border ax-shadow-sm ax-lightest-surface hover:ax-shadow-md ax-transition-shadow\"\n          >\n            <!-- Trigger Icon -->\n            <div\n              class=\"ax-flex ax-items-center ax-justify-center ax-w-8 ax-h-8 ax-rounded-md ax-bg-pink-100 ax-text-pink-600 ax-font-semibold ax-shrink-0\"\n            >\n              <ax-icon icon=\"fa-light fa-bolt\" ></ax-icon>\n            </div>\n\n            <!-- Trigger Details -->\n            <div class=\"ax-flex-1 ax-flex ax-flex-col ax-min-w-0\">\n              <!-- Event -->\n              <div class=\"ax-flex ax-items-center ax-gap-2\">\n                <span class=\"ax-text-xs ax-font-semibold ax-text-gray-500 ax-uppercase ax-tracking-wide ax-w-16\">\n                  {{ '@general:widgets.triggers.event.label' | translate | async }}\n                </span>\n                <span\n                  class=\"ax-text-sm ax-font-mono ax-text-primary ax-cursor-pointer ax-underline ax-truncate\"\n                  (click)=\"openEventEditor(i)\"\n                  [title]=\"trigger.event || ''\"\n                >\n                  @if (trigger.event) {\n                    {{ getEventPreview(trigger.event) }}\n                  } @else {\n                    <span class=\"ax-not-italic\">\n                      {{ '@general:widgets.triggers.event.placeholder' | translate | async }}\n                    </span>\n                  }\n                </span>\n              </div>\n\n              <!-- Action -->\n              <div class=\"ax-flex ax-items-center ax-gap-2\">\n                <span class=\"ax-text-xs ax-font-semibold ax-text-gray-500 ax-uppercase ax-tracking-wide ax-w-16\">\n                  {{ '@general:widgets.triggers.action.label' | translate | async }}\n                </span>\n                <span\n                  class=\"ax-text-sm ax-font-mono ax-text-success ax-cursor-pointer  ax-underline ax-truncate\"\n                  (click)=\"openActionEditor(i)\"\n                  [title]=\"getActionFullText(trigger.action)\"\n                >\n                  @if (trigger.action) {\n                    {{ getActionPreview(trigger.action) }}\n                  } @else {\n                    <span class=\"ax-not-italic\">\n                      {{ '@general:widgets.triggers.action.placeholder' | translate | async }}\n                    </span>\n                  }\n                </span>\n              </div>\n            </div>\n\n            <!-- Action Buttons -->\n            <div class=\"ax-flex ax-items-center ax-gap-2 ax-shrink-0 ax-sm\">\n              <ax-button\n                look=\"blank\"\n                color=\"danger\"\n                [disabled]=\"disabled()\"\n                (onClick)=\"handleRemoveTrigger(i)\"\n                class=\"ax-px-3\"\n              >\n                <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n              </ax-button>\n            </div>\n          </div>\n        }\n      } @else {\n        <axp-state-message\n          icon=\"fa-light fa-bolt\"\n          [description]=\"'@general:widgets.triggers.empty-state.title'\"\n        >\n          <ax-button\n            slot=\"actions\"\n            [text]=\"'@general:widgets.triggers.add-first-trigger' | translate | async\"\n            look=\"twotone\"\n            [disabled]=\"disabled()\"\n            (onClick)=\"handleAddTrigger()\"\n          >\n            <ax-prefix>\n              <ax-icon class=\"fa-solid fa-add\"></ax-icon>\n            </ax-prefix>\n          </ax-button>\n        </axp-state-message>\n      }\n\n      @if (hasTriggers()) {\n        <!-- Add Trigger Button -->\n        <div class=\"ax-flex ax-items-center ax-justify-end\">\n          <ax-button\n            [text]=\"'@general:widgets.triggers.add-trigger' | translate | async\"\n            look=\"twotone\"\n            color=\"primary\"\n            [disabled]=\"disabled()\"\n            (onClick)=\"handleAddTrigger()\"\n            class=\"ax-px-3\"\n          >\n            <ax-prefix>\n              <ax-icon class=\"fa-solid fa-add\"></ax-icon>\n            </ax-prefix>\n          </ax-button>\n        </div>\n      }\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [CommonModule, AXButtonModule, AXDecoratorModule, AXTranslationModule, AXPStateMessageComponent],\n})\nexport class AXPTriggersWidgetEditComponent extends AXPValueWidgetComponent<AXPWidgetTriggers> {\n  //#region ----   Services & Dependencies   ----\n\n  private readonly popupService = inject(AXPopupService);\n\n  //#endregion\n\n  //#region ----   Computed Properties   ----\n\n  protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n\n  protected triggers = computed<AXPWidgetTriggers>(() => {\n    const value = this.getValue();\n    return Array.isArray(value) ? value : [];\n  });\n\n  protected hasTriggers = computed<boolean>(() => {\n    return this.triggers().length > 0;\n  });\n\n  //#endregion\n\n  //#region ----   Public Methods   ----\n\n  protected getEventPreview(event: string): string {\n    const preview = event.length > 50 ? event.substring(0, 50) + '...' : event;\n    return preview;\n  }\n\n  protected getActionPreview(action: string | string[]): string {\n    const actionStr = Array.isArray(action) ? action.join(', ') : action;\n    const preview = actionStr.length > 50 ? actionStr.substring(0, 50) + '...' : actionStr;\n    return preview;\n  }\n\n  protected getActionFullText(action: string | string[]): string {\n    return Array.isArray(action) ? action.join('\\n') : action;\n  }\n\n  //#endregion\n\n  //#region ----   Event Handlers   ----\n\n  protected handleAddTrigger(): void {\n    const newTrigger: AXPWidgetTrigger = {\n      event: '',\n      action: '',\n    };\n    const currentTriggers = [...this.triggers()];\n    currentTriggers.push(newTrigger);\n    this.setValue(currentTriggers);\n  }\n\n  protected handleRemoveTrigger(index: number): void {\n    const currentTriggers = [...this.triggers()];\n    currentTriggers.splice(index, 1);\n    this.setValue(currentTriggers);\n  }\n\n  protected async openEventEditor(index: number): Promise<void> {\n    const trigger = this.triggers()[index];\n    if (!trigger) return;\n\n    const { AXPTriggerExpressionEditorPopupComponent } = await import(\n      './trigger-expression-editor-popup.component'\n    );\n\n    const result = await this.popupService.open(AXPTriggerExpressionEditorPopupComponent, {\n      title: '@general:widgets.triggers.edit-event-expression',\n      size: 'lg',\n      data: {\n        value: signal(trigger.event),\n      },\n    });\n\n    if (result?.data?.value) {\n      const updatedTriggers = [...this.triggers()];\n      updatedTriggers[index] = {\n        ...updatedTriggers[index],\n        event: result.data.value,\n      };\n      this.setValue(updatedTriggers);\n    }\n  }\n\n  protected async openActionEditor(index: number): Promise<void> {\n    const trigger = this.triggers()[index];\n    if (!trigger) return;\n\n    // Convert action to string for editing (if array, join with newlines)\n    const actionValue = Array.isArray(trigger.action)\n      ? trigger.action.join('\\n')\n      : trigger.action || '';\n\n    const { AXPTriggerExpressionEditorPopupComponent } = await import(\n      './trigger-expression-editor-popup.component'\n    );\n\n    const result = await this.popupService.open(AXPTriggerExpressionEditorPopupComponent, {\n      title: '@general:widgets.triggers.edit-action-expression',\n      size: 'lg',\n      data: {\n        value: signal(actionValue),\n      },\n    });\n\n    if (result?.data?.value !== undefined) {\n      const updatedTriggers = [...this.triggers()];\n      // Convert back to array if multiple lines, otherwise keep as string\n      const actionResult = result.data.value;\n      const action = actionResult.includes('\\n')\n        ? actionResult.split('\\n').filter((l: string) => l.trim())\n        : actionResult;\n\n      updatedTriggers[index] = {\n        ...updatedTriggers[index],\n        action: action,\n      };\n      this.setValue(updatedTriggers);\n    }\n  }\n\n  //#endregion\n}\n\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXCodeEditorModule } from '@acorex/components/code-editor';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { setupPopupFooterKeyboardShortcuts } from '@acorex/platform/core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input, linkedSignal, WritableSignal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n  selector: 'axp-trigger-expression-editor-popup',\n  template: `\n    <div class=\"ax-flex ax-flex-col ax-h-full ax-overflow-hidden\">\n      <div class=\"ax-flex-1 ax-p-4 ax-overflow-hidden\" style=\"direction: ltr;\">\n        <ax-code-editor\n          [ngModel]=\"currentValue()\"\n          (ngModelChange)=\"handleValueChange($event)\"\n          language=\"javascript\"\n          [lineNumbers]=\"true\"\n          class=\"ax-w-full ax-h-full ax-min-h-96\"\n        ></ax-code-editor>\n      </div>\n    </div>\n\n    <ax-footer>\n      <ax-suffix>\n        <ax-button\n          look=\"solid\"\n          [text]=\"'@general:actions.cancel.title' | translate | async\"\n          (onClick)=\"handleCancelClick()\"\n        ></ax-button>\n        <ax-button\n          look=\"solid\"\n          color=\"primary\"\n          [text]=\"'@general:actions.save.title' | translate | async\"\n          (onClick)=\"handleSaveClick()\"\n        ></ax-button>\n      </ax-suffix>\n    </ax-footer>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [CommonModule, FormsModule, AXButtonModule, AXCodeEditorModule, AXDecoratorModule, AXTranslationModule],\n})\nexport class AXPTriggerExpressionEditorPopupComponent extends AXBasePageComponent {\n  //#region ----   Inputs   ----\n\n  value = input.required<string | null>();\n\n  //#endregion\n\n  //#region ----   Properties   ----\n\n  protected readonly currentValue = linkedSignal(() => this.value());\n\n  constructor() {\n    super();\n    setupPopupFooterKeyboardShortcuts(\n      () => [\n        {\n          title: '@general:actions.cancel.title',\n          command: 'cancel',\n          handler: () => this.handleCancelClick(),\n        },\n        {\n          title: '@general:actions.save.title',\n          command: 'submit',\n          handler: () => this.handleSaveClick(),\n        },\n      ],\n      { id: 'trigger-expression-editor-popup' },\n    );\n  }\n\n  //#endregion\n\n  //#region ----   Event Handlers   ----\n\n  protected handleValueChange(newValue: string): void {\n    this.currentValue.set(newValue);\n  }\n\n  protected handleCancelClick(): void {\n    this.close();\n  }\n\n  protected handleSaveClick(): void {\n    this.close({\n      value: this.currentValue(),\n    });\n  }\n\n  //#endregion\n}\n\n","//#region ----   Imports   ----\n\nimport { type AXPExtendedWidget, type AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/widget-core-contracts';\n\nimport { AXP_WIDGETS_EDITOR_CATEGORY, AXPWidgetDefinitionProvider } from '@acorex/platform/layout/widget-core';\nimport { Injectable } from '@angular/core';\nimport {\n  AXPAddressWidget,\n  AXPAdvancedGridItemWidget,\n  AXPAdvancedGridOptionsWidget,\n  AXPAdvancedGridWidget,\n  AXPAvatarWidget,\n  AXPBetweenExpressionValidationWidget,\n  AXPBlockWidget,\n  AXPBorderWidget,\n  AXPButtonWidget,\n  AXPCallbackValidationWidget,\n  AXPCheckBoxWidget,\n  AXPCodeEditorWidget,\n  AXPConnectedDragDropListsWidget,\n  AXPContactWidget,\n  AXPDateTimeBoxWidget,\n  AXPDragDropListWidget,\n  AXPEditorJsWidget,\n  AXPEqualValidationWidget,\n  AXPGalleryWidget,\n  AXPGreaterThanExpressionValidationWidget,\n  AXPGridItemOptionsWidget,\n  AXPGridOptionsWidget,\n  AXPImageMarkerWidget,\n  AXPIntegrationConnectionsPanelWidget,\n  AXPItemConfiguratorWidget,\n  AXPJsonViewerWidget,\n  AXPLargeTextWidget,\n  AXPLessThanExpressionValidationWidget,\n  AXPNodeRendererWidget,\n  AXPNumberBoxWidget,\n  AXPOutcomeResultsViewerWidget,\n  AXPPageWidget,\n  AXPPasswordBoxWidget,\n  AXPRepeaterWidget,\n  AXPRequiredValidationWidget,\n  AXPRichTextWidget,\n  AXPSelectBoxWidget,\n  AXPSelectionListWidget,\n  AXPSignatureWidget,\n  AXPSpacingWidget,\n  AXPStatusWidget,\n  AXPStopwatchWidget,\n  AXPTagEditorWidget,\n  AXPTextBoxWidget,\n  AXPToggleWidget,\n  AXPWidgetFieldConfiguratorWidget,\n} from './widgets';\nimport { AXPCronJobWidget } from './widgets/advance/cron-job';\nimport { AXPDataListWidget } from './widgets/advance/data-list';\nimport { AXPImageWidget } from './widgets/advance/image';\nimport { AXPListToolbarWidget } from './widgets/advance/list-toolbar';\nimport { AXPMapWidget } from './widgets/advance/map/map-box-widget.config';\nimport { AXPQrcodeWidget } from './widgets/advance/qrcode';\nimport { AXPSchedulerPickerWidget } from './widgets/advance/scheduler-picker';\nimport { AXPColorBoxWidget } from './widgets/editors/color-box';\nimport { AXPColorPaletteWidget } from './widgets/editors/color-palette';\nimport { AXPMetaDataWidget } from './widgets/editors/meta-data';\nimport { AXPNumberUnitBoxWidget } from './widgets/editors/number-unit';\nimport { AXPProgressBarWidget } from './widgets/editors/progress-bar';\nimport { AXPRatePickerWidget } from './widgets/editors/rate-picker';\nimport { AXPTableEditorWidget } from './widgets/editors/tabular-data';\nimport { AXPTemplateBoxWidget } from './widgets/editors/template-box';\nimport { AXPTimeDurationWidget } from './widgets/editors/time-duration';\nimport { AXPConditionBuilderWidget } from './widgets/expression-builders/condition-builder';\nimport { AXPBooleanFilterWidget } from './widgets/filters/boolean-filter';\nimport { AXPNumberFilterWidget } from './widgets/filters/number-filter';\nimport { AXPStatusFilterWidget } from './widgets/filters/status-filter';\nimport { AXPStringFilterWidget } from './widgets/filters/string-filter';\nimport { AXPAlertBoxWidget } from './widgets/layout/alert-box';\nimport { AXPBadgeLayoutWidget } from './widgets/layout/badge';\nimport { AXPDocumentWidget } from './widgets/layout/document/document-widget.config';\nimport { AXPFieldsetWidget } from './widgets/layout/fieldset';\nimport { AXPFlexWidget } from './widgets/layout/flex';\nimport { AXPFlexItemWidget } from './widgets/layout/flex-item/flex-item-widget.config';\nimport { AXPFormFieldWidget } from './widgets/layout/form-field';\nimport { AXPGridWidget } from './widgets/layout/grid';\nimport { AXPGridItemWidget } from './widgets/layout/grid-item';\nimport { AXPIconWidget } from './widgets/layout/icon';\nimport { AXPPanelWidget } from './widgets/layout/panel';\nimport { AXPStepWizardWidget } from './widgets/layout/step-wizard/step-wizard-widget.config';\nimport { AXPTableWidget } from './widgets/layout/table';\nimport { AXPTableItemWidget } from './widgets/layout/table-item';\nimport { AXPTabSetWidget } from './widgets/layout/tabset';\nimport { AXPTabSetItemWidget } from './widgets/layout/tabset-item';\nimport { AXPTextBlockWidget } from './widgets/layout/text-block';\nimport { AXPDataSourceOptionsWidget } from './widgets/property-editors/data-source-options/data-source-options-widget.config';\nimport { AXPDirectionWidget } from './widgets/property-editors/direction';\nimport { AXPFlexItemOptionsWidget } from './widgets/property-editors/flex-item-options/flex-item-options-widget.config';\nimport { AXPFlexOptionsWidget } from './widgets/property-editors/flex-options/flex-options-widget.config';\nimport { AXPTriggersWidget } from './widgets/property-editors/triggers';\nimport { AXPMaxLengthExpressionValidationWidget } from './widgets/validations/max-length-validation';\nimport { AXPMinLengthExpressionValidationWidget } from './widgets/validations/min-length-validation';\nimport { AXPRegularExpressionValidationWidget } from './widgets/validations/regular-expression-validation';\n\n//#endregion\n\n//#region ----   Widget Lists (single source of truth)   ----\n\n/**\n * All widgets registered in the platform. Single source of truth for widget catalog.\n */\nconst REGISTERED_WIDGETS: AXPWidgetConfig[] = [\n  AXPDocumentWidget,\n  AXPWidgetFieldConfiguratorWidget,\n  AXPItemConfiguratorWidget,\n  //\n  AXPBlockWidget,\n  AXPFlexWidget,\n  AXPFlexItemWidget,\n  AXPTableWidget,\n  AXPTableItemWidget,\n  AXPPageWidget,\n  AXPFieldsetWidget,\n  AXPRepeaterWidget,\n  AXPTextBlockWidget,\n  AXPAlertBoxWidget,\n  AXPBadgeLayoutWidget,\n  AXPFormFieldWidget,\n  AXPGridWidget,\n  AXPAdvancedGridWidget,\n  AXPAdvancedGridItemWidget,\n  AXPGridItemWidget,\n  AXPTabSetWidget,\n  AXPTabSetItemWidget,\n  AXPTimeDurationWidget,\n  //\n  AXPDragDropListWidget,\n  AXPConnectedDragDropListsWidget,\n  AXPTableEditorWidget,\n  AXPTextBoxWidget,\n  AXPConditionBuilderWidget,\n  AXPCheckBoxWidget,\n  AXPSelectBoxWidget,\n  AXPRichTextWidget,\n  AXPEditorJsWidget,\n  AXPNumberBoxWidget,\n  AXPSignatureWidget,\n  AXPDateTimeBoxWidget,\n  AXPContactWidget,\n  AXPAddressWidget,\n  AXPSelectionListWidget,\n  AXPLargeTextWidget,\n  AXPMapWidget,\n  AXPImageWidget,\n  AXPCronJobWidget,\n  AXPQrcodeWidget,\n  AXPSchedulerPickerWidget,\n  AXPPasswordBoxWidget,\n  AXPGalleryWidget,\n  AXPCodeEditorWidget,\n  AXPJsonViewerWidget,\n  AXPOutcomeResultsViewerWidget,\n  AXPStopwatchWidget,\n  AXPIntegrationConnectionsPanelWidget,\n  AXPToggleWidget,\n  AXPRatePickerWidget,\n  AXPColorBoxWidget,\n  AXPColorPaletteWidget,\n  AXPAvatarWidget,\n  AXPTemplateBoxWidget,\n  AXPImageMarkerWidget,\n  AXPDataListWidget,\n  AXPListToolbarWidget,\n  AXPStatusWidget,\n  AXPStepWizardWidget,\n  AXPTagEditorWidget,\n  //\n  AXPButtonWidget,\n  //\n  AXPSpacingWidget,\n  AXPBorderWidget,\n  AXPDirectionWidget,\n  AXPTriggersWidget,\n  //\n  AXPIconWidget,\n  //\n  AXPStringFilterWidget,\n  AXPBooleanFilterWidget,\n  AXPNumberFilterWidget,\n  AXPStatusFilterWidget,\n  AXPDataSourceOptionsWidget,\n  AXPFlexOptionsWidget,\n  AXPFlexItemOptionsWidget,\n  AXPGridOptionsWidget,\n  AXPGridItemOptionsWidget,\n  AXPAdvancedGridOptionsWidget,\n  // validations\n  AXPRequiredValidationWidget,\n  AXPRegularExpressionValidationWidget,\n  AXPMinLengthExpressionValidationWidget,\n  AXPMaxLengthExpressionValidationWidget,\n  AXPLessThanExpressionValidationWidget,\n  AXPGreaterThanExpressionValidationWidget,\n  AXPBetweenExpressionValidationWidget,\n  AXPEqualValidationWidget,\n  AXPCallbackValidationWidget,\n  AXPMetaDataWidget,\n  AXPNodeRendererWidget,\n  // Custom Widgets\n  AXPNumberUnitBoxWidget,\n  AXPProgressBarWidget,\n  AXPPanelWidget,\n];\n\n/**\n * Extended widgets (variants of parent widgets). Merged with parent config at registration.\n */\nconst EXTENDED_WIDGETS: AXPExtendedWidget[] = [\n  {\n    parentName: AXPSelectBoxWidget.name,\n    widget: {\n      name: 'select-filter' as any,\n      title: 'Select Filter',\n      categories: AXP_WIDGETS_EDITOR_CATEGORY,\n      groups: [AXPWidgetGroupEnum.BaseWidget],\n      type: 'filter',\n      components: {},\n      options: {\n        filterMode: true,\n      },\n      icon: 'fa-light fa-square',\n    },\n  },\n  {\n    parentName: AXPDateTimeBoxWidget.name,\n    widget: {\n      name: 'datetime-filter' as any,\n      title: 'Date Time Filter',\n      categories: AXP_WIDGETS_EDITOR_CATEGORY,\n      type: 'filter',\n      components: {},\n      options: {\n        filterMode: true,\n      },\n      icon: 'fa-light fa-square',\n    },\n  },\n  {\n    parentName: AXPTimeDurationWidget.name,\n    widget: {\n      name: 'time-duration-filter' as any,\n      title: 'Time Duration Filter',\n      categories: AXP_WIDGETS_EDITOR_CATEGORY,\n      type: 'filter',\n      components: {},\n      options: {\n        filterMode: true,\n      },\n      icon: 'fa-light fa-square',\n    },\n  },\n];\n\n//#endregion\n\n//#region ----   Core Widgets Provider   ----\n\n/**\n * Provider for core platform widgets.\n * Token-based: widgets are aggregated by AXPWidgetRegistryService from AXP_WIDGET_DEFINITION_PROVIDER.\n */\n@Injectable()\nexport class AXPCoreWidgetsProvider implements AXPWidgetDefinitionProvider {\n  getWidgets() {\n    return REGISTERED_WIDGETS;\n  }\n\n  getExtendedWidgets() {\n    return EXTENDED_WIDGETS;\n  }\n}\n\n//#endregion\n","import { AXMediaViewerModule } from '@acorex/components/media-viewer';\nimport { AXP_WIDGET_DEFINITION_PROVIDER, AXPWidgetCoreModule } from '@acorex/platform/layout/widget-core';\nimport { provideQuerySetups } from '@acorex/platform/runtime';\nimport { importProvidersFrom, NgModule } from '@angular/core';\nimport { AXPCoreWidgetsProvider } from './widget-definition.provider';\nimport { DEFAULT_STRATEGY_CONFIG, STRATEGY_CONFIG_TOKEN } from './widgets.config';\n\n@NgModule({\n  imports: [AXPWidgetCoreModule],\n  providers: [\n    { provide: AXP_WIDGET_DEFINITION_PROVIDER, useClass: AXPCoreWidgetsProvider, multi: true },\n    { provide: STRATEGY_CONFIG_TOKEN, useValue: DEFAULT_STRATEGY_CONFIG },\n    importProvidersFrom(AXMediaViewerModule.forRoot()),\n    //TODO convert dialogService to layoutBuilder saeed:\n\n    provideQuerySetups([\n      {\n        key: 'Widgets:GetForAI',\n        loader: () => import('./queries/get-widgets-for-ai.query').then((c) => c.AXPGetWidgetsForAIQuery),\n      },\n    ]),\n  ],\n  exports: [],\n  declarations: [],\n})\nexport class AXPWidgetsModule {}\n","import { AXPQuery, defineWidget } from '@acorex/platform/runtime-contracts';\nimport { type AXPDefinitionCategory, type AXPMultiLanguageString, normalizeDefinitionCategories } from '@acorex/platform/contracts';\nimport { resolveMultiLanguageString } from '@acorex/core/translation';\n\nimport {\n  AXP_ENTITY_DEFINITION_CRUD_SERVICE,\n  type AXPEntityDefinitionCrudService,\n} from '@acorex/platform/domain';\n\nimport { Injectable, inject } from '@angular/core';\n\n//#region ---- Types ----\n\n/** AI agent catalog `name` values that scope {@link AXPGetWidgetsForAIQuery} list/detail rows. */\nexport const AXP_WIDGET_AI_AGENT_FORM_LAYOUT = 'widget-form-layout';\nexport const AXP_WIDGET_AI_AGENT_CHART_LAYOUT = 'widget-chart-layout';\n/** Assist/conversation chip rows — only `flex-layout` + `button-action` catalog rows. */\nexport const AXP_WIDGET_AI_AGENT_ASSIST_FOLLOW_UP_CHIPS_LAYOUT = 'follow-up-prompt-generator';\n\nexport const AXP_WIDGET_AI_AGENT_NAMES = [\n  AXP_WIDGET_AI_AGENT_FORM_LAYOUT,\n  AXP_WIDGET_AI_AGENT_CHART_LAYOUT,\n  AXP_WIDGET_AI_AGENT_ASSIST_FOLLOW_UP_CHIPS_LAYOUT,\n] as const;\n\nconst FOLLOW_UP_CHIP_WIDGET_NAMES = new Set<string>(['flex-layout', 'button-action']);\n\nexport type AXPWidgetAiAgentName = (typeof AXP_WIDGET_AI_AGENT_NAMES)[number];\n\nexport interface AXPGetWidgetsForAIQueryInput {\n  /**\n   * Calling delegated AI agent name — required. Each agent only sees catalog rows in its scope\n   * (platform form/layout widgets vs chart visualization widgets vs follow-up chip primitives).\n   */\n  agent: AXPWidgetAiAgentName | string;\n  /** When set, returns full catalog metadata for that widget when it is in scope for `agent`. */\n  name?: string;\n}\n\nexport interface AXPGetWidgetsForAIQueryListItem {\n  name: string;\n  title: string;\n  description?: string;\n  type?: string;\n  /** From catalog `ai.tags` when present — use to filter or pick widgets before a detail lookup. */\n  tags?: string[];\n  categories: Array<{ name: string; title: string; order: number }>;\n}\n\n/**\n * One catalog input row (`defineWidget` / {@link AXPCatalogSchemaPropertyDefinition}), resolved for AI locale.\n */\nexport interface AXPGetWidgetsForAIQueryInputPropertyRow {\n  name: string;\n  title: string;\n  description?: string;\n  /** Registry widget name for the property editor (e.g. `text-editor`, `toggle-editor`). */\n  interfaceWidgetName: string;\n  bindingHints?: {\n    strategies?: string[];\n    examples?: string[];\n    notes?: string;\n  };\n}\n\n/**\n * One catalog output row (bound value / payload documentation).\n */\nexport interface AXPGetWidgetsForAIQueryOutputPropertyRow {\n  name: string;\n  title: string;\n  description?: string;\n  interfaceWidgetName: string;\n}\n\n/** Resolved category row for AI consumption. */\nexport interface AXPGetWidgetsForAIQueryCategoryRow {\n  name: string;\n  title: string;\n  order: number;\n}\n\n/** Resolved `ai` block from catalog metadata (subset of widget runtime AI metadata). */\nexport interface AXPGetWidgetsForAIQueryAiBlock {\n  shortDescription?: string;\n  instruction?: string;\n  tags?: string[];\n  usage?: {\n    whenToUse?: string[];\n    avoidWhen?: string[];\n    followUpTools?: string[];\n  };\n  renderSurfaces?: Array<{ mode: string; summary: string }>;\n  relatedWidgetNames?: string[];\n  layoutExamples?: string[];\n}\n\n/**\n * Structured widget catalog metadata aligned with {@link AXPWidgetMetadataDefinition} /\n * persisted `metadataJson` — explicit fields instead of an opaque JSON blob.\n */\nexport interface AXPGetWidgetsForAIQueryWidgetStructured {\n  /** Runtime registry name (`AXPWidgetConfig.name`). */\n  name: string;\n  /** Resolved display title for the AI locale. */\n  title: string;\n  /** Resolved short description for the AI locale. */\n  description?: string;\n  icon?: string;\n  /** Same classification as widget-core (`container`, `editor`, …). */\n  type?: string;\n  capabilities?: string[];\n  categories: AXPGetWidgetsForAIQueryCategoryRow[];\n  subCategory?: AXPGetWidgetsForAIQueryCategoryRow;\n  groups?: string[];\n  defaultFilterWidgetName?: string;\n  inputs: AXPGetWidgetsForAIQueryInputPropertyRow[];\n  outputs: AXPGetWidgetsForAIQueryOutputPropertyRow[];\n  ai?: AXPGetWidgetsForAIQueryAiBlock;\n}\n\n/**\n * Widget detail loaded from persisted catalog (`metadataJson`) — not runtime widget config.\n */\nexport interface AXPGetWidgetsForAIQueryWidgetDetail {\n  /** Storage row id */\n  id: string;\n  active: boolean;\n  /** Original catalog title from storage (may be an i18n key). */\n  catalogTitle?: string;\n  /** Resolved display title for the AI locale (same as `structured.title`). */\n  title: string;\n  /** Resolved description for the AI locale (same as `structured.description`). */\n  description?: string;\n  /**\n   * Parsed catalog metadata as explicit, nested fields for agents (mirrors `defineWidget` / seed `metadataJson`).\n   */\n  structured: AXPGetWidgetsForAIQueryWidgetStructured;\n}\n\nexport interface AXPGetWidgetsForAIQueryUsage {\n  summary: string;\n  /** Input / option names from catalog metadata (`inputs[].name`) */\n  propertyPaths: string[];\n}\n\nexport type AXPGetWidgetsForAIQueryResult =\n  | {\n    success: true;\n    widgets: AXPGetWidgetsForAIQueryListItem[];\n    detail?: undefined;\n    usage?: undefined;\n  }\n  | {\n    success: true;\n    widgets?: undefined;\n    detail: AXPGetWidgetsForAIQueryWidgetDetail;\n    usage: AXPGetWidgetsForAIQueryUsage;\n  }\n  | {\n    success: false;\n    error: string;\n  };\n\n//#endregion\n\n//#region ---- Agent scope (catalog filtering) ----\n\nconst DASHBOARD_WIDGET_NAME_PREFIX = 'DashboardManagement:Widget:Dashboard:';\n\n/** Catalog `subCategory.name` values that identify chart widgets for {@link AXP_WIDGET_AI_AGENT_CHART_LAYOUT}. */\nconst CHART_WIDGET_SUBCATEGORIES = new Set<string>([\n  'dashboard-chart-cartesian',\n  'dashboard-chart-radial',\n  'dashboard-chart-specialized',\n]);\n\nfunction isValidWidgetAiAgent(agent: string): agent is AXPWidgetAiAgentName {\n  return (AXP_WIDGET_AI_AGENT_NAMES as readonly string[]).includes(agent);\n}\n\nfunction readSubCategoryNameFromMetadata(metadata: Record<string, unknown> | null): string | undefined {\n  if (metadata == null) {\n    return undefined;\n  }\n  const raw = metadata['subCategory'];\n  if (typeof raw !== 'object' || raw === null || Array.isArray(raw)) {\n    return undefined;\n  }\n  const n = (raw as Record<string, unknown>)['name'];\n  return typeof n === 'string' ? n : undefined;\n}\n\n/**\n * Returns whether a persisted catalog row is visible to the given delegated AI agent.\n */\nexport function matchesWidgetAiAgent(\n  agent: AXPWidgetAiAgentName,\n  definitionName: string,\n  metadata: Record<string, unknown> | null,\n): boolean {\n  const isDashboardTile = definitionName.startsWith(DASHBOARD_WIDGET_NAME_PREFIX);\n  const sub = readSubCategoryNameFromMetadata(metadata);\n  const isChartSpecialistSub = sub != null && CHART_WIDGET_SUBCATEGORIES.has(sub);\n\n  switch (agent) {\n    case AXP_WIDGET_AI_AGENT_FORM_LAYOUT:\n      return !isDashboardTile;\n    case AXP_WIDGET_AI_AGENT_CHART_LAYOUT:\n      return isDashboardTile && isChartSpecialistSub;\n    case AXP_WIDGET_AI_AGENT_ASSIST_FOLLOW_UP_CHIPS_LAYOUT:\n      return FOLLOW_UP_CHIP_WIDGET_NAMES.has(definitionName);\n    default:\n      return false;\n  }\n}\n\n//#endregion\n\n//#region ---- Serialization ----\n\nconst AI_WIDGET_LOCALE = 'en-US';\n\nconst CATALOG_UNAVAILABLE =\n  'Widget catalog is not available. Ensure entity definition storage provides AXP_ENTITY_DEFINITION_CRUD_SERVICE.';\n\nconst AGENT_REQUIRED_ERROR = `Parameter \"agent\" is required and must be one of: ${AXP_WIDGET_AI_AGENT_NAMES.join(', ')}.`;\n\nfunction invalidAgentErrorMessage(agent: string): string {\n  return `Invalid \"agent\" value \"${agent}\". Expected one of: ${AXP_WIDGET_AI_AGENT_NAMES.join(', ')}.`;\n}\n\nfunction resolveWidgetLabelForAi(value: AXPMultiLanguageString | undefined | null): string {\n  if (value == null || value === '') {\n    return '';\n  }\n  return resolveMultiLanguageString(value, AI_WIDGET_LOCALE);\n}\n\nfunction parseMetadataJson(metadataJson: string | undefined): Record<string, unknown> | null {\n  if (metadataJson == null || metadataJson.trim() === '') {\n    return null;\n  }\n  try {\n    const parsed: unknown = JSON.parse(metadataJson);\n    return typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed)\n      ? (parsed as Record<string, unknown>)\n      : null;\n  } catch {\n    return null;\n  }\n}\n\nfunction readAiTagsFromMetadata(metadata: Record<string, unknown> | null): string[] | undefined {\n  if (metadata == null) {\n    return undefined;\n  }\n  const ai = metadata['ai'];\n  if (typeof ai !== 'object' || ai === null) {\n    return undefined;\n  }\n  const tags = (ai as Record<string, unknown>)['tags'];\n  if (!Array.isArray(tags)) {\n    return undefined;\n  }\n  const out = tags.filter((t): t is string => typeof t === 'string');\n  return out.length > 0 ? out : undefined;\n}\n\nfunction metadataCategoriesToList(metadata: Record<string, unknown> | null): AXPGetWidgetsForAIQueryCategoryRow[] {\n  const raw = metadata?.['categories'];\n  if (raw == null) {\n    return [];\n  }\n  const list = normalizeDefinitionCategories(raw as AXPDefinitionCategory | AXPDefinitionCategory[]);\n  return list.map((c: AXPDefinitionCategory) => ({\n    name: c.name,\n    title: resolveWidgetLabelForAi(c.title) || c.name,\n    order: c.order,\n  }));\n}\n\nfunction readInterfaceName(iface: unknown): string {\n  if (typeof iface !== 'object' || iface === null) {\n    return '';\n  }\n  const n = (iface as Record<string, unknown>)['name'];\n  return typeof n === 'string' ? n : '';\n}\n\nfunction mapBindingHints(raw: unknown): AXPGetWidgetsForAIQueryInputPropertyRow['bindingHints'] {\n  if (typeof raw !== 'object' || raw === null) {\n    return undefined;\n  }\n  const b = raw as Record<string, unknown>;\n  const strategies = Array.isArray(b['strategies'])\n    ? b['strategies'].filter((x): x is string => typeof x === 'string')\n    : undefined;\n  const examples = Array.isArray(b['examples'])\n    ? b['examples'].filter((x): x is string => typeof x === 'string')\n    : undefined;\n  const notes = typeof b['notes'] === 'string' ? b['notes'] : undefined;\n  if (!(strategies?.length ?? 0) && !(examples?.length ?? 0) && notes == null) {\n    return undefined;\n  }\n  return {\n    ...(strategies?.length ? { strategies } : {}),\n    ...(examples?.length ? { examples } : {}),\n    ...(notes != null ? { notes } : {}),\n  };\n}\n\nfunction mapInputsForAi(rows: unknown): AXPGetWidgetsForAIQueryInputPropertyRow[] {\n  if (!Array.isArray(rows)) {\n    return [];\n  }\n  const out: AXPGetWidgetsForAIQueryInputPropertyRow[] = [];\n  for (const row of rows) {\n    if (typeof row !== 'object' || row === null) {\n      continue;\n    }\n    const r = row as Record<string, unknown>;\n    const name = typeof r['name'] === 'string' ? r['name'] : '';\n    if (!name) {\n      continue;\n    }\n    const titleRaw = r['title'];\n    const title =\n      typeof titleRaw === 'string' ? resolveWidgetLabelForAi(titleRaw) || titleRaw : name;\n    const descRaw = r['description'];\n    const description =\n      descRaw != null && typeof descRaw === 'string' && descRaw !== ''\n        ? resolveWidgetLabelForAi(descRaw) || descRaw\n        : undefined;\n    const interfaceWidgetName = readInterfaceName(r['interface']);\n    const bindingHints = mapBindingHints(r['bindingHints']);\n    out.push({\n      name,\n      title,\n      ...(description != null ? { description } : {}),\n      interfaceWidgetName,\n      ...(bindingHints != null ? { bindingHints } : {}),\n    });\n  }\n  return out;\n}\n\nfunction mapOutputsForAi(rows: unknown): AXPGetWidgetsForAIQueryOutputPropertyRow[] {\n  if (!Array.isArray(rows)) {\n    return [];\n  }\n  const out: AXPGetWidgetsForAIQueryOutputPropertyRow[] = [];\n  for (const row of rows) {\n    if (typeof row !== 'object' || row === null) {\n      continue;\n    }\n    const r = row as Record<string, unknown>;\n    const name = typeof r['name'] === 'string' ? r['name'] : '';\n    if (!name) {\n      continue;\n    }\n    const titleRaw = r['title'];\n    const title =\n      typeof titleRaw === 'string' ? resolveWidgetLabelForAi(titleRaw) || titleRaw : name;\n    const descRaw = r['description'];\n    const description =\n      descRaw != null && typeof descRaw === 'string' && descRaw !== ''\n        ? resolveWidgetLabelForAi(descRaw) || descRaw\n        : undefined;\n    const interfaceWidgetName = readInterfaceName(r['interface']);\n    out.push({\n      name,\n      title,\n      ...(description != null ? { description } : {}),\n      interfaceWidgetName,\n    });\n  }\n  return out;\n}\n\nfunction mapAiBlockForAi(raw: unknown): AXPGetWidgetsForAIQueryAiBlock | undefined {\n  if (typeof raw !== 'object' || raw === null) {\n    return undefined;\n  }\n  const a = raw as Record<string, unknown>;\n  const shortDescription =\n    typeof a['shortDescription'] === 'string'\n      ? resolveWidgetLabelForAi(a['shortDescription']) || a['shortDescription']\n      : undefined;\n  const instruction =\n    typeof a['instruction'] === 'string'\n      ? resolveWidgetLabelForAi(a['instruction']) || a['instruction']\n      : undefined;\n  const tags = Array.isArray(a['tags'])\n    ? a['tags'].filter((t): t is string => typeof t === 'string')\n    : undefined;\n\n  let usage: AXPGetWidgetsForAIQueryAiBlock['usage'] | undefined;\n  const usageRaw = a['usage'];\n  if (typeof usageRaw === 'object' && usageRaw !== null) {\n    const u = usageRaw as Record<string, unknown>;\n    const whenToUse = Array.isArray(u['whenToUse'])\n      ? u['whenToUse']\n        .map((x) => (typeof x === 'string' ? resolveWidgetLabelForAi(x) || x : ''))\n        .filter((s) => s !== '')\n      : undefined;\n    const avoidWhen = Array.isArray(u['avoidWhen'])\n      ? u['avoidWhen']\n        .map((x) => (typeof x === 'string' ? resolveWidgetLabelForAi(x) || x : ''))\n        .filter((s) => s !== '')\n      : undefined;\n    const followUpTools = Array.isArray(u['followUpTools'])\n      ? u['followUpTools'].filter((x): x is string => typeof x === 'string')\n      : undefined;\n    if ((whenToUse?.length ?? 0) > 0 || (avoidWhen?.length ?? 0) > 0 || (followUpTools?.length ?? 0) > 0) {\n      usage = {\n        ...(whenToUse?.length ? { whenToUse } : {}),\n        ...(avoidWhen?.length ? { avoidWhen } : {}),\n        ...(followUpTools?.length ? { followUpTools } : {}),\n      };\n    }\n  }\n\n  let renderSurfaces: Array<{ mode: string; summary: string }> | undefined;\n  const renderSurfacesRaw = a['renderSurfaces'];\n  if (Array.isArray(renderSurfacesRaw)) {\n    const mapped = renderSurfacesRaw\n      .filter((x): x is Record<string, unknown> => typeof x === 'object' && x !== null)\n      .map((x) => ({\n        mode: typeof x['mode'] === 'string' ? x['mode'] : '',\n        summary:\n          typeof x['summary'] === 'string'\n            ? resolveWidgetLabelForAi(x['summary']) || x['summary']\n            : '',\n      }))\n      .filter((x) => x.mode !== '' && x.summary !== '');\n    renderSurfaces = mapped.length > 0 ? mapped : undefined;\n  }\n\n  const relatedWidgetNames = Array.isArray(a['relatedWidgetNames'])\n    ? a['relatedWidgetNames'].filter((x): x is string => typeof x === 'string')\n    : undefined;\n  const layoutExamples = Array.isArray(a['layoutExamples'])\n    ? a['layoutExamples'].filter((x): x is string => typeof x === 'string')\n    : undefined;\n\n  if (\n    shortDescription == null &&\n    instruction == null &&\n    !(tags?.length ?? 0) &&\n    usage == null &&\n    renderSurfaces == null &&\n    !(relatedWidgetNames?.length ?? 0) &&\n    !(layoutExamples?.length ?? 0)\n  ) {\n    return undefined;\n  }\n\n  return {\n    ...(shortDescription != null ? { shortDescription } : {}),\n    ...(instruction != null ? { instruction } : {}),\n    ...(tags?.length ? { tags } : {}),\n    ...(usage != null ? { usage } : {}),\n    ...(renderSurfaces != null ? { renderSurfaces } : {}),\n    ...(relatedWidgetNames?.length ? { relatedWidgetNames } : {}),\n    ...(layoutExamples?.length ? { layoutExamples } : {}),\n  };\n}\n\nfunction subCategoryToRow(raw: unknown): AXPGetWidgetsForAIQueryCategoryRow | undefined {\n  if (typeof raw !== 'object' || raw === null) {\n    return undefined;\n  }\n  const c = raw as AXPDefinitionCategory;\n  if (typeof c.name !== 'string') {\n    return undefined;\n  }\n  return {\n    name: c.name,\n    title: resolveWidgetLabelForAi(c.title) || c.name,\n    order: c.order,\n  };\n}\n\nfunction buildStructuredWidgetForAi(\n  raw: Record<string, unknown>,\n  ctx: { fallbackName: string; resolvedTitle: string; resolvedDescription?: string },\n): AXPGetWidgetsForAIQueryWidgetStructured {\n  const name = typeof raw['name'] === 'string' ? raw['name'] : ctx.fallbackName;\n  const icon = typeof raw['icon'] === 'string' ? raw['icon'] : undefined;\n  const type = typeof raw['type'] === 'string' ? raw['type'] : undefined;\n  const capabilities = Array.isArray(raw['capabilities'])\n    ? raw['capabilities'].filter((c): c is string => typeof c === 'string')\n    : undefined;\n  const groups = Array.isArray(raw['groups'])\n    ? raw['groups'].filter((g): g is string => typeof g === 'string')\n    : undefined;\n  const defaultFilterWidgetName =\n    typeof raw['defaultFilterWidgetName'] === 'string' ? raw['defaultFilterWidgetName'] : undefined;\n\n  const categories = metadataCategoriesToList(raw);\n  const subCategory = subCategoryToRow(raw['subCategory']);\n\n  return {\n    name,\n    title: ctx.resolvedTitle,\n    ...(ctx.resolvedDescription != null ? { description: ctx.resolvedDescription } : {}),\n    ...(icon != null ? { icon } : {}),\n    ...(type != null ? { type } : {}),\n    ...(capabilities?.length ? { capabilities } : {}),\n    categories,\n    ...(subCategory != null ? { subCategory } : {}),\n    ...(groups?.length ? { groups } : {}),\n    ...(defaultFilterWidgetName != null ? { defaultFilterWidgetName } : {}),\n    inputs: mapInputsForAi(raw['inputs']),\n    outputs: mapOutputsForAi(raw['outputs']),\n    ai: mapAiBlockForAi(raw['ai']),\n  };\n}\n\nfunction buildUsageFromStructured(structured: AXPGetWidgetsForAIQueryWidgetStructured): AXPGetWidgetsForAIQueryUsage {\n  const propertyPaths = [...new Set(structured.inputs.map((i) => i.name).filter((n) => n.length > 0))];\n  const instruction = structured.ai?.instruction ?? '';\n  const summary = [structured.title, structured.description, instruction]\n    .filter((s) => s != null && s !== '')\n    .join(' — ');\n  return {\n    summary,\n    propertyPaths,\n  };\n}\n\n//#endregion\n\n//#region ---- Query ----\n\n/**\n * Read-only widget catalog for AI (`Widgets:GetForAI`). Data comes from persisted widget definitions\n * (Dexie/Firestore via {@link AXPEntityDefinitionCrudService}), not {@link AXPWidgetRegistryService}.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXPGetWidgetsForAIQuery implements AXPQuery<\n  AXPGetWidgetsForAIQueryInput | undefined,\n  AXPGetWidgetsForAIQueryResult\n> {\n  private readonly crud = inject(AXP_ENTITY_DEFINITION_CRUD_SERVICE, { optional: true }) as AXPEntityDefinitionCrudService | null;\n\n  async fetch(input?: AXPGetWidgetsForAIQueryInput): Promise<AXPGetWidgetsForAIQueryResult> {\n    if (!this.crud) {\n      return { success: false, error: CATALOG_UNAVAILABLE };\n    }\n\n    const agentRaw = typeof input?.agent === 'string' ? input.agent.trim() : '';\n    if (!agentRaw) {\n      return { success: false, error: AGENT_REQUIRED_ERROR };\n    }\n    if (!isValidWidgetAiAgent(agentRaw)) {\n      return { success: false, error: invalidAgentErrorMessage(agentRaw) };\n    }\n    const agent = agentRaw;\n\n    const name = input?.name?.trim();\n\n    try {\n      const rows = await this.crud.listWidgets();\n      const activeRows = rows.filter((r) => r.definition.active !== false);\n\n      if (!name) {\n        const scopedRows = activeRows.filter((row) => {\n          const meta = parseMetadataJson(row.definition.metadataJson);\n          return matchesWidgetAiAgent(agent, row.definition.name, meta);\n        });\n\n        const list: AXPGetWidgetsForAIQueryListItem[] = scopedRows.map((row) => {\n          const meta = parseMetadataJson(row.definition.metadataJson);\n          const titleRaw =\n            row.definition.catalogTitle ??\n            (typeof meta?.['title'] === 'string' ? (meta['title'] as string) : undefined) ??\n            row.definition.name;\n          const title = resolveWidgetLabelForAi(titleRaw) || row.definition.name;\n\n          const descRaw = row.definition.description ?? (typeof meta?.['description'] === 'string' ? (meta['description'] as string) : undefined);\n          const description =\n            descRaw != null && descRaw !== '' ? resolveWidgetLabelForAi(descRaw) || undefined : undefined;\n\n          const tags = readAiTagsFromMetadata(meta);\n\n          return {\n            name: row.definition.name,\n            title,\n            ...(description != null ? { description } : {}),\n            ...(typeof meta?.['type'] === 'string' ? { type: meta['type'] as string } : {}),\n            ...(tags != null ? { tags } : {}),\n            categories: metadataCategoriesToList(meta),\n          };\n        });\n        return { success: true, widgets: list };\n      }\n\n      const match = activeRows.find((r) => r.definition.name === name);\n      if (!match) {\n        return {\n          success: false,\n          error: `Widget \"${name}\" was not found in the catalog.`,\n        };\n      }\n\n      const meta = parseMetadataJson(match.definition.metadataJson);\n      if (!matchesWidgetAiAgent(agent, match.definition.name, meta)) {\n        return {\n          success: false,\n          error: `Widget \"${name}\" is not available for agent \"${agent}\".`,\n        };\n      }\n      const metadata = meta ?? {};\n\n      const titleRaw =\n        match.definition.catalogTitle ??\n        (typeof metadata['title'] === 'string' ? (metadata['title'] as string) : undefined) ??\n        match.definition.name;\n      const title = resolveWidgetLabelForAi(titleRaw) || match.definition.name;\n\n      const descRaw =\n        match.definition.description ??\n        (typeof metadata['description'] === 'string' ? (metadata['description'] as string) : undefined);\n      const description =\n        descRaw != null && descRaw !== '' ? resolveWidgetLabelForAi(descRaw) || undefined : undefined;\n\n      const structured = buildStructuredWidgetForAi(metadata, {\n        fallbackName: match.definition.name,\n        resolvedTitle: title,\n        resolvedDescription: description,\n      });\n\n      const detail: AXPGetWidgetsForAIQueryWidgetDetail = {\n        id: match.id,\n        active: match.definition.active,\n        title,\n        ...(description != null ? { description } : {}),\n        ...(match.definition.catalogTitle != null ? { catalogTitle: match.definition.catalogTitle } : {}),\n        structured,\n      };\n\n      return {\n        success: true,\n        detail,\n        usage: buildUsageFromStructured(structured),\n      };\n    } catch (e) {\n      const message = e instanceof Error ? e.message : 'Unknown error';\n      return {\n        success: false,\n        error: message,\n      };\n    }\n  }\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i4","i6","i7","i8","i9","i1","i2","i5","first","helpersInsertColumnRelativeTo","helpersComputePlacements","helpersInsertRow","helpersInsertCellShiftRight","helpersInsertCellShiftDown","helpersRemoveColumnAtCell","helpersRemoveRowAtCell"],"mappings":"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"}